aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2017-08-26 03:19:13 -0400
committerIngo Molnar <mingo@kernel.org>2017-08-26 03:19:13 -0400
commit413d63d71b222108d19703f3fd5cf9108652a730 (patch)
tree4680de6aebb6430dc5f3d9327f86d65149e6b5ae
parentd6c8103b0265d8db30e20e948a4f06382bbdaea7 (diff)
parent90a6cd503982bfd33ce8c70eb49bd2dd33bc6325 (diff)
Merge branch 'linus' into x86/mm to pick up fixes and to fix conflicts
Conflicts: arch/x86/kernel/head64.c arch/x86/mm/mmap.c Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r--Documentation/admin-guide/pm/cpufreq.rst8
-rw-r--r--Documentation/device-mapper/dm-raid.txt1
-rw-r--r--Documentation/devicetree/bindings/ata/sata_rcar.txt14
-rw-r--r--Documentation/devicetree/bindings/crypto/inside-secure-safexcel.txt2
-rw-r--r--Documentation/devicetree/bindings/gpio/gpio-exar.txt5
-rw-r--r--Documentation/devicetree/bindings/gpu/arm,mali-midgard.txt2
-rw-r--r--Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt1
-rw-r--r--Documentation/devicetree/bindings/mmc/img-dw-mshc.txt1
-rw-r--r--Documentation/devicetree/bindings/mmc/k3-dw-mshc.txt2
-rw-r--r--Documentation/devicetree/bindings/mmc/synopsys-dw-mshc.txt16
-rw-r--r--Documentation/devicetree/bindings/mmc/zx-dw-mshc.txt1
-rw-r--r--Documentation/devicetree/bindings/net/brcm,amac.txt1
-rw-r--r--Documentation/devicetree/bindings/net/brcm,bgmac-nsp.txt24
-rw-r--r--Documentation/devicetree/bindings/nvmem/rockchip-efuse.txt2
-rw-r--r--Documentation/devicetree/bindings/ptp/brcm,ptp-dte.txt15
-rw-r--r--Documentation/devicetree/bindings/serial/fsl-imx-uart.txt2
-rw-r--r--Documentation/fb/efifb.txt6
-rw-r--r--Documentation/gpio/gpio-legacy.txt2
-rw-r--r--Documentation/media/kapi/dtv-core.rst443
-rw-r--r--Documentation/media/typical_media_device.svg3054
-rw-r--r--Documentation/media/uapi/dvb/dvbstb.svg668
-rw-r--r--Documentation/media/uapi/v4l/bayer.svg1013
-rw-r--r--Documentation/media/uapi/v4l/constraints.svg356
-rw-r--r--Documentation/media/uapi/v4l/crop.svg253
-rw-r--r--Documentation/media/uapi/v4l/fieldseq_bt.svg170
-rw-r--r--Documentation/media/uapi/v4l/fieldseq_tb.svg175
-rw-r--r--Documentation/media/uapi/v4l/nv12mt.svg764
-rw-r--r--Documentation/media/uapi/v4l/nv12mt_example.svg2474
-rw-r--r--Documentation/media/uapi/v4l/selection.svg6957
-rw-r--r--Documentation/media/uapi/v4l/subdev-image-processing-crop.svg10
-rw-r--r--Documentation/media/uapi/v4l/subdev-image-processing-full.svg10
-rw-r--r--Documentation/media/uapi/v4l/subdev-image-processing-scaling-multi-source.svg10
-rw-r--r--Documentation/media/uapi/v4l/vbi_525.svg614
-rw-r--r--Documentation/media/uapi/v4l/vbi_625.svg388
-rw-r--r--Documentation/media/uapi/v4l/vbi_hsync.svg238
-rw-r--r--Documentation/media/uapi/v4l/vidioc-g-fmt.rst6
-rw-r--r--Documentation/media/v4l-drivers/imx.rst7
-rw-r--r--Documentation/media/v4l-drivers/index.rst1
-rw-r--r--Documentation/networking/switchdev.txt4
-rw-r--r--Documentation/power/runtime_pm.txt3
-rw-r--r--Documentation/printk-formats.txt19
-rw-r--r--Documentation/sysctl/net.txt47
-rw-r--r--MAINTAINERS4954
-rw-r--r--Makefile15
-rw-r--r--arch/alpha/include/uapi/asm/ioctls.h2
-rw-r--r--arch/arc/Kconfig1
-rw-r--r--arch/arc/Makefile2
-rw-r--r--arch/arc/boot/dts/axc001.dtsi20
-rw-r--r--arch/arc/boot/dts/axc003.dtsi21
-rw-r--r--arch/arc/boot/dts/axc003_idu.dtsi21
-rw-r--r--arch/arc/boot/dts/axs10x_mb.dtsi2
-rw-r--r--arch/arc/configs/haps_hs_defconfig1
-rw-r--r--arch/arc/configs/haps_hs_smp_defconfig1
-rw-r--r--arch/arc/configs/nps_defconfig1
-rw-r--r--arch/arc/configs/nsim_700_defconfig1
-rw-r--r--arch/arc/configs/nsim_hs_defconfig1
-rw-r--r--arch/arc/configs/nsim_hs_smp_defconfig1
-rw-r--r--arch/arc/configs/nsimosci_defconfig1
-rw-r--r--arch/arc/configs/nsimosci_hs_defconfig1
-rw-r--r--arch/arc/configs/nsimosci_hs_smp_defconfig1
-rw-r--r--arch/arc/configs/tb10x_defconfig1
-rw-r--r--arch/arc/include/asm/cache.h2
-rw-r--r--arch/arc/include/asm/mmu.h2
-rw-r--r--arch/arc/kernel/intc-arcv2.c3
-rw-r--r--arch/arc/kernel/intc-compact.c14
-rw-r--r--arch/arc/mm/cache.c50
-rw-r--r--arch/arc/mm/dma.c47
-rw-r--r--arch/arc/mm/tlb.c12
-rw-r--r--arch/arc/plat-sim/Kconfig13
-rw-r--r--arch/arc/plat-sim/platform.c5
-rw-r--r--arch/arm/Kconfig2
-rw-r--r--arch/arm/boot/dts/armada-388-gp.dts4
-rw-r--r--arch/arm/boot/dts/da850-evm.dts21
-rw-r--r--arch/arm/boot/dts/da850-lcdk.dts7
-rw-r--r--arch/arm/boot/dts/dm8168-evm.dts34
-rw-r--r--arch/arm/boot/dts/dm816x.dtsi2
-rw-r--r--arch/arm/boot/dts/dra71-evm.dts4
-rw-r--r--arch/arm/boot/dts/exynos4.dtsi3
-rw-r--r--arch/arm/boot/dts/exynos5422-odroidxu3-common.dtsi1
-rw-r--r--arch/arm/boot/dts/imx25.dtsi1
-rw-r--r--arch/arm/boot/dts/imx6qdl-nitrogen6_som2.dtsi4
-rw-r--r--arch/arm/boot/dts/imx7d-sdb.dts16
-rw-r--r--arch/arm/boot/dts/rk3288.dtsi4
-rw-r--r--arch/arm/boot/dts/sama5d2.dtsi12
-rw-r--r--arch/arm/boot/dts/sun8i-a83t.dtsi16
-rw-r--r--arch/arm/boot/dts/sunxi-h3-h5.dtsi2
-rw-r--r--arch/arm/boot/dts/tango4-vantage-1172.dts2
-rw-r--r--arch/arm/include/asm/bug.h2
-rw-r--r--arch/arm/include/asm/cacheflush.h2
-rw-r--r--arch/arm/include/asm/kexec.h5
-rw-r--r--arch/arm/include/asm/tlb.h11
-rw-r--r--arch/arm/include/asm/ucontext.h6
-rw-r--r--arch/arm/kernel/machine_kexec.c11
-rw-r--r--arch/arm/kernel/setup.c3
-rw-r--r--arch/arm/kernel/signal.c78
-rw-r--r--arch/arm/mach-at91/Kconfig2
-rw-r--r--arch/arm/mach-at91/pm.c12
-rw-r--r--arch/arm/mach-davinci/board-da850-evm.c4
-rw-r--r--arch/arm/mach-davinci/clock.c9
-rw-r--r--arch/arm/mach-ep93xx/clock.c20
-rw-r--r--arch/arm/mach-ixp4xx/include/mach/io.h34
-rw-r--r--arch/arm/mach-mmp/devices.c2
-rw-r--r--arch/arm/mach-mvebu/platsmp.c2
-rw-r--r--arch/arm/mach-omap1/board-ams-delta.c12
-rw-r--r--arch/arm/mach-omap1/board-osk.c4
-rw-r--r--arch/arm/mach-omap2/board-generic.c2
-rw-r--r--arch/arm/mach-omap2/hsmmc.c239
-rw-r--r--arch/arm/mach-omap2/hsmmc.h9
-rw-r--r--arch/arm/mach-omap2/io.c2
-rw-r--r--arch/arm/mach-omap2/pm34xx.c1
-rw-r--r--arch/arm/mach-omap2/prm3xxx.c7
-rw-r--r--arch/arm/mach-omap2/prm44xx.c55
-rw-r--r--arch/arm/mach-prima2/common.c2
-rw-r--r--arch/arm/mach-pxa/Kconfig1
-rw-r--r--arch/arm/mach-pxa/include/mach/mtd-xip.h10
-rw-r--r--arch/arm/mach-rpc/include/mach/hardware.h4
-rw-r--r--arch/arm/mach-sa1100/clock.c25
-rw-r--r--arch/arm/mach-sa1100/include/mach/mtd-xip.h4
-rw-r--r--arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c6
-rw-r--r--arch/arm/mach-ux500/cpu-db8500.c1
-rw-r--r--arch/arm/mach-w90x900/clock.c29
-rw-r--r--arch/arm/mm/dma-mapping-nommu.c45
-rw-r--r--arch/arm/mm/dma-mapping.c2
-rw-r--r--arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts1
-rw-r--r--arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts1
-rw-r--r--arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts1
-rw-r--r--arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi2
-rw-r--r--arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi3
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gx.dtsi2
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts4
-rw-r--r--arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts103
-rw-r--r--arch/arm64/boot/dts/marvell/armada-37xx.dtsi2
-rw-r--r--arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi1
-rw-r--r--arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi3
-rw-r--r--arch/arm64/boot/dts/renesas/salvator-common.dtsi4
-rw-r--r--arch/arm64/boot/dts/renesas/ulcb.dtsi2
-rw-r--r--arch/arm64/configs/defconfig1
-rw-r--r--arch/arm64/include/asm/arch_timer.h4
-rw-r--r--arch/arm64/include/asm/atomic_lse.h2
-rw-r--r--arch/arm64/include/asm/bug.h2
-rw-r--r--arch/arm64/include/asm/elf.h4
-rw-r--r--arch/arm64/include/asm/memory.h6
-rw-r--r--arch/arm64/include/asm/sysreg.h4
-rw-r--r--arch/arm64/include/asm/uaccess.h2
-rw-r--r--arch/arm64/kernel/cpu_ops.c4
-rw-r--r--arch/arm64/kernel/fpsimd.c2
-rw-r--r--arch/arm64/kernel/head.S1
-rw-r--r--arch/arm64/kernel/kaslr.c20
-rw-r--r--arch/arm64/kernel/smp.c12
-rw-r--r--arch/arm64/kernel/topology.c22
-rw-r--r--arch/arm64/kernel/traps.c10
-rw-r--r--arch/arm64/kvm/sys_regs.c2
-rw-r--r--arch/arm64/lib/copy_page.S9
-rw-r--r--arch/arm64/mm/dma-mapping.c4
-rw-r--r--arch/arm64/mm/fault.c20
-rw-r--r--arch/arm64/mm/mmu.c18
-rw-r--r--arch/arm64/mm/numa.c7
-rw-r--r--arch/blackfin/include/asm/bug.h4
-rw-r--r--arch/ia64/include/asm/tlb.h8
-rw-r--r--arch/mips/Kconfig2
-rw-r--r--arch/mips/Makefile15
-rw-r--r--arch/mips/boot/compressed/.gitignore2
-rw-r--r--arch/mips/cavium-octeon/octeon-usb.c2
-rw-r--r--arch/mips/dec/int-handler.S34
-rw-r--r--arch/mips/include/asm/cache.h2
-rw-r--r--arch/mips/include/asm/cpu-features.h3
-rw-r--r--arch/mips/include/asm/mach-ralink/ralink_regs.h2
-rw-r--r--arch/mips/include/asm/octeon/cvmx-l2c-defs.h37
-rw-r--r--arch/mips/include/asm/octeon/cvmx-l2d-defs.h60
-rw-r--r--arch/mips/include/asm/octeon/cvmx.h1
-rw-r--r--arch/mips/include/uapi/asm/ioctls.h2
-rw-r--r--arch/mips/kernel/smp.c6
-rw-r--r--arch/mips/mm/dma-default.c2
-rw-r--r--arch/mips/mm/uasm-mips.c2
-rw-r--r--arch/mips/net/ebpf_jit.c1950
-rw-r--r--arch/mips/pci/pci.c7
-rw-r--r--arch/mips/ralink/mt7620.c1
-rw-r--r--arch/mips/vdso/gettimeofday.c6
-rw-r--r--arch/mn10300/include/asm/bug.h2
-rw-r--r--arch/parisc/Kconfig3
-rw-r--r--arch/parisc/configs/712_defconfig41
-rw-r--r--arch/parisc/configs/a500_defconfig50
-rw-r--r--arch/parisc/configs/b180_defconfig17
-rw-r--r--arch/parisc/configs/c3000_defconfig38
-rw-r--r--arch/parisc/configs/c8000_defconfig17
-rw-r--r--arch/parisc/configs/default_defconfig49
-rw-r--r--arch/parisc/configs/generic-32bit_defconfig21
-rw-r--r--arch/parisc/configs/generic-64bit_defconfig48
-rw-r--r--arch/parisc/include/asm/bug.h6
-rw-r--r--arch/parisc/include/asm/pdcpat.h16
-rw-r--r--arch/parisc/include/asm/thread_info.h2
-rw-r--r--arch/parisc/include/uapi/asm/ioctls.h2
-rw-r--r--arch/parisc/kernel/cache.c39
-rw-r--r--arch/parisc/kernel/firmware.c36
-rw-r--r--arch/parisc/kernel/irq.c10
-rw-r--r--arch/parisc/kernel/pdt.c23
-rw-r--r--arch/parisc/kernel/process.c2
-rw-r--r--arch/parisc/kernel/vmlinux.lds.S2
-rw-r--r--arch/powerpc/Kconfig2
-rw-r--r--arch/powerpc/Makefile25
-rw-r--r--arch/powerpc/boot/Makefile14
-rw-r--r--arch/powerpc/configs/powernv_defconfig3
-rw-r--r--arch/powerpc/configs/ppc64_defconfig3
-rw-r--r--arch/powerpc/configs/pseries_defconfig3
-rw-r--r--arch/powerpc/include/asm/book3s/64/hash.h1
-rw-r--r--arch/powerpc/include/asm/book3s/64/mmu.h15
-rw-r--r--arch/powerpc/include/asm/book3s/64/pgtable.h11
-rw-r--r--arch/powerpc/include/asm/book3s/64/radix.h1
-rw-r--r--arch/powerpc/include/asm/bug.h8
-rw-r--r--arch/powerpc/include/asm/mmu_context.h18
-rw-r--r--arch/powerpc/include/asm/pgtable.h7
-rw-r--r--arch/powerpc/include/uapi/asm/ioctls.h2
-rw-r--r--arch/powerpc/kernel/entry_64.S60
-rw-r--r--arch/powerpc/kernel/exceptions-64s.S38
-rw-r--r--arch/powerpc/kernel/idle_book3s.S21
-rw-r--r--arch/powerpc/kernel/irq.c15
-rw-r--r--arch/powerpc/kernel/process.c9
-rw-r--r--arch/powerpc/kernel/ptrace.c13
-rw-r--r--arch/powerpc/kernel/smp.c18
-rw-r--r--arch/powerpc/kernel/watchdog.c49
-rw-r--r--arch/powerpc/kvm/book3s_64_mmu_hv.c4
-rw-r--r--arch/powerpc/kvm/book3s_hv.c2
-rw-r--r--arch/powerpc/kvm/book3s_hv_rmhandlers.S59
-rw-r--r--arch/powerpc/mm/mem.c1
-rw-r--r--arch/powerpc/mm/mmu_context_book3s64.c5
-rw-r--r--arch/powerpc/mm/pgtable-hash64.c44
-rw-r--r--arch/powerpc/mm/pgtable-radix.c62
-rw-r--r--arch/powerpc/mm/pgtable_64.c8
-rw-r--r--arch/powerpc/mm/subpage-prot.c2
-rw-r--r--arch/powerpc/mm/tlb-radix.c45
-rw-r--r--arch/powerpc/platforms/83xx/mpc832x_rdb.c2
-rw-r--r--arch/powerpc/platforms/powernv/idle.c41
-rw-r--r--arch/powerpc/platforms/powernv/opal.c2
-rw-r--r--arch/powerpc/platforms/powernv/pci-ioda.c8
-rw-r--r--arch/powerpc/platforms/pseries/reconfig.c1
-rw-r--r--arch/s390/include/asm/bug.h4
-rw-r--r--arch/s390/include/asm/tlb.h17
-rw-r--r--arch/s390/kernel/perf_cpum_sf.c2
-rw-r--r--arch/s390/kvm/kvm-s390.c8
-rw-r--r--arch/s390/mm/pgtable.c6
-rw-r--r--arch/s390/net/bpf_jit_comp.c3
-rw-r--r--arch/sh/include/asm/bug.h4
-rw-r--r--arch/sh/include/asm/tlb.h8
-rw-r--r--arch/sh/include/uapi/asm/ioctls.h2
-rw-r--r--arch/sparc/configs/sparc32_defconfig4
-rw-r--r--arch/sparc/configs/sparc64_defconfig4
-rw-r--r--arch/sparc/include/asm/mmu_context_64.h14
-rw-r--r--arch/sparc/include/asm/page_32.h2
-rw-r--r--arch/sparc/include/asm/spitfire.h16
-rw-r--r--arch/sparc/include/uapi/asm/ioctls.h2
-rw-r--r--arch/sparc/kernel/cpu.c6
-rw-r--r--arch/sparc/kernel/cpumap.c1
-rw-r--r--arch/sparc/kernel/head_64.S22
-rw-r--r--arch/sparc/kernel/pci_sun4v.c2
-rw-r--r--arch/sparc/kernel/pcic.c2
-rw-r--r--arch/sparc/kernel/setup_64.c15
-rw-r--r--arch/sparc/kernel/tsb.S12
-rw-r--r--arch/sparc/lib/U3memcpy.S4
-rw-r--r--arch/sparc/lib/multi3.S24
-rw-r--r--arch/sparc/mm/init_64.c39
-rw-r--r--arch/sparc/power/hibernate.c3
-rw-r--r--arch/um/include/asm/tlb.h13
-rw-r--r--arch/x86/Kconfig3
-rw-r--r--arch/x86/Kconfig.debug1
-rw-r--r--arch/x86/boot/Makefile5
-rw-r--r--arch/x86/boot/compressed/Makefile1
-rw-r--r--arch/x86/boot/string.c9
-rw-r--r--arch/x86/configs/i386_defconfig3
-rw-r--r--arch/x86/configs/x86_64_defconfig3
-rw-r--r--arch/x86/crypto/sha1_avx2_x86_64_asm.S67
-rw-r--r--arch/x86/crypto/sha1_ssse3_glue.c2
-rw-r--r--arch/x86/entry/entry_64.S3
-rw-r--r--arch/x86/events/core.c20
-rw-r--r--arch/x86/events/intel/bts.c2
-rw-r--r--arch/x86/events/intel/core.c164
-rw-r--r--arch/x86/events/intel/cstate.c26
-rw-r--r--arch/x86/events/intel/ds.c22
-rw-r--r--arch/x86/events/intel/lbr.c4
-rw-r--r--arch/x86/events/intel/p4.c2
-rw-r--r--arch/x86/events/intel/rapl.c2
-rw-r--r--arch/x86/events/intel/uncore.c2
-rw-r--r--arch/x86/events/intel/uncore_nhmex.c12
-rw-r--r--arch/x86/events/intel/uncore_snb.c6
-rw-r--r--arch/x86/events/intel/uncore_snbep.c93
-rw-r--r--arch/x86/events/perf_event.h2
-rw-r--r--arch/x86/include/asm/bug.h4
-rw-r--r--arch/x86/include/asm/cpufeatures.h2
-rw-r--r--arch/x86/include/asm/elf.h4
-rw-r--r--arch/x86/include/asm/entry_arch.h2
-rw-r--r--arch/x86/include/asm/hardirq.h1
-rw-r--r--arch/x86/include/asm/hw_irq.h2
-rw-r--r--arch/x86/include/asm/hypervisor.h10
-rw-r--r--arch/x86/include/asm/io.h4
-rw-r--r--arch/x86/include/asm/irq_vectors.h3
-rw-r--r--arch/x86/include/asm/kprobes.h8
-rw-r--r--arch/x86/include/asm/mmu_context.h2
-rw-r--r--arch/x86/include/asm/paravirt_types.h16
-rw-r--r--arch/x86/include/asm/processor.h2
-rw-r--r--arch/x86/kernel/acpi/boot.c8
-rw-r--r--arch/x86/kernel/apic/io_apic.c2
-rw-r--r--arch/x86/kernel/cpu/amd.c1
-rw-r--r--arch/x86/kernel/cpu/aperfmperf.c43
-rw-r--r--arch/x86/kernel/cpu/mcheck/therm_throt.c2
-rw-r--r--arch/x86/kernel/cpu/microcode/core.c4
-rw-r--r--arch/x86/kernel/cpu/mtrr/main.c18
-rw-r--r--arch/x86/kernel/devicetree.c3
-rw-r--r--arch/x86/kernel/head64.c7
-rw-r--r--arch/x86/kernel/hpet.c27
-rw-r--r--arch/x86/kernel/irq.c19
-rw-r--r--arch/x86/kernel/irqinit.c2
-rw-r--r--arch/x86/kernel/kprobes/core.c10
-rw-r--r--arch/x86/kernel/ksysfs.c4
-rw-r--r--arch/x86/kernel/kvm.c6
-rw-r--r--arch/x86/kernel/reboot.c6
-rw-r--r--arch/x86/kernel/smpboot.c30
-rw-r--r--arch/x86/kvm/Kconfig2
-rw-r--r--arch/x86/kvm/hyperv.c7
-rw-r--r--arch/x86/kvm/lapic.c17
-rw-r--r--arch/x86/kvm/svm.c12
-rw-r--r--arch/x86/kvm/vmx.c308
-rw-r--r--arch/x86/kvm/x86.c24
-rw-r--r--arch/x86/math-emu/Makefile4
-rw-r--r--arch/x86/math-emu/fpu_emu.h2
-rw-r--r--arch/x86/math-emu/reg_compare.c16
-rw-r--r--arch/x86/mm/init.c3
-rw-r--r--arch/x86/mm/mmap.c7
-rw-r--r--arch/x86/platform/intel-mid/device_libs/platform_max7315.c6
-rw-r--r--arch/x86/platform/uv/tlb_uv.c33
-rw-r--r--arch/x86/xen/enlighten_hvm.c59
-rw-r--r--arch/x86/xen/smp_pv.c3
-rw-r--r--arch/x86/xen/time.c1
-rw-r--r--arch/xtensa/include/asm/Kbuild2
-rw-r--r--arch/xtensa/include/asm/device.h15
-rw-r--r--arch/xtensa/include/asm/param.h18
-rw-r--r--arch/xtensa/include/uapi/asm/ioctls.h2
-rw-r--r--arch/xtensa/kernel/xtensa_ksyms.c2
-rw-r--r--arch/xtensa/mm/cache.c16
-rw-r--r--block/bfq-iosched.c3
-rw-r--r--block/bfq-iosched.h24
-rw-r--r--block/bfq-wf2q.c148
-rw-r--r--block/bio-integrity.c6
-rw-r--r--block/blk-core.c4
-rw-r--r--block/blk-mq-cpumap.c4
-rw-r--r--block/blk-mq-pci.c8
-rw-r--r--block/blk-mq.c16
-rw-r--r--crypto/authencesn.c5
-rw-r--r--drivers/acpi/acpi_apd.c4
-rw-r--r--drivers/acpi/acpi_lpss.c14
-rw-r--r--drivers/acpi/acpi_watchdog.c7
-rw-r--r--drivers/acpi/acpica/nsxfeval.c10
-rw-r--r--drivers/acpi/ec.c56
-rw-r--r--drivers/acpi/internal.h5
-rw-r--r--drivers/acpi/nfit/core.c10
-rw-r--r--drivers/acpi/numa.c2
-rw-r--r--drivers/acpi/property.c2
-rw-r--r--drivers/acpi/scan.c1
-rw-r--r--drivers/acpi/sleep.c6
-rw-r--r--drivers/acpi/spcr.c36
-rw-r--r--drivers/android/binder.c17
-rw-r--r--drivers/ata/Kconfig4
-rw-r--r--drivers/ata/libata-core.c6
-rw-r--r--drivers/ata/libata-eh.c7
-rw-r--r--drivers/ata/libata-scsi.c6
-rw-r--r--drivers/ata/sata_rcar.c8
-rw-r--r--drivers/atm/zatm.c2
-rw-r--r--drivers/base/dma-coherent.c164
-rw-r--r--drivers/base/dma-mapping.c2
-rw-r--r--drivers/base/firmware_class.c49
-rw-r--r--drivers/base/power/domain.c8
-rw-r--r--drivers/block/nbd.c20
-rw-r--r--drivers/block/sunvdc.c61
-rw-r--r--drivers/block/virtio_blk.c7
-rw-r--r--drivers/block/xen-blkfront.c31
-rw-r--r--drivers/block/zram/zram_drv.c4
-rw-r--r--drivers/bus/uniphier-system-bus.c14
-rw-r--r--drivers/char/random.c2
-rw-r--r--drivers/clk/clk-gemini.c14
-rw-r--r--drivers/clk/keystone/sci-clk.c66
-rw-r--r--drivers/clk/meson/clk-mpll.c7
-rw-r--r--drivers/clk/meson/clkc.h1
-rw-r--r--drivers/clk/meson/gxbb.c5
-rw-r--r--drivers/clk/meson/meson8b.c5
-rw-r--r--drivers/clk/samsung/clk-exynos5420.c16
-rw-r--r--drivers/clk/sunxi-ng/ccu-sun5i.c2
-rw-r--r--drivers/clk/x86/clk-pmc-atom.c7
-rw-r--r--drivers/clocksource/Kconfig2
-rw-r--r--drivers/clocksource/arm_arch_timer.c2
-rw-r--r--drivers/clocksource/em_sti.c11
-rw-r--r--drivers/clocksource/timer-of.c16
-rw-r--r--drivers/cpufreq/intel_pstate.c32
-rw-r--r--drivers/cpuidle/cpuidle-powernv.c10
-rw-r--r--drivers/crypto/Kconfig2
-rw-r--r--drivers/crypto/bcm/spu2.c1
-rw-r--r--drivers/crypto/cavium/nitrox/nitrox_main.c3
-rw-r--r--drivers/crypto/inside-secure/safexcel.c5
-rw-r--r--drivers/crypto/inside-secure/safexcel_hash.c8
-rw-r--r--drivers/crypto/ixp4xx_crypto.c6
-rw-r--r--drivers/dax/device-dax.h2
-rw-r--r--drivers/dax/device.c33
-rw-r--r--drivers/dax/pmem.c12
-rw-r--r--drivers/dax/super.c6
-rw-r--r--drivers/dma-buf/dma-fence.c17
-rw-r--r--drivers/dma-buf/sync_debug.c2
-rw-r--r--drivers/dma-buf/sync_file.c13
-rw-r--r--drivers/fsi/fsi-core.c7
-rw-r--r--drivers/gpio/Kconfig1
-rw-r--r--drivers/gpio/gpio-exar.c2
-rw-r--r--drivers/gpio/gpio-lp87565.c46
-rw-r--r--drivers/gpio/gpio-mvebu.c2
-rw-r--r--drivers/gpio/gpio-mxc.c3
-rw-r--r--drivers/gpio/gpio-tegra.c6
-rw-r--r--drivers/gpio/gpiolib-sysfs.c10
-rw-r--r--drivers/gpio/gpiolib.c9
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c3
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c10
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c2
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c13
-rw-r--r--drivers/gpu/drm/amd/amdgpu/clearstate_gfx9.h41
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c24
-rw-r--r--drivers/gpu/drm/amd/amdgpu/si.c2
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_device.c4
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c7
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h1
-rw-r--r--drivers/gpu/drm/amd/include/kgd_kfd_interface.h3
-rw-r--r--drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c12
-rw-r--r--drivers/gpu/drm/bridge/tc358767.c2
-rw-r--r--drivers/gpu/drm/drm_dp_helper.c5
-rw-r--r--drivers/gpu/drm/drm_dp_mst_topology.c41
-rw-r--r--drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c4
-rw-r--r--drivers/gpu/drm/exynos/Kconfig1
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_drv.c1
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_dsi.c10
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_fb.c14
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_mic.c24
-rw-r--r--drivers/gpu/drm/exynos/exynos_hdmi.c10
-rw-r--r--drivers/gpu/drm/exynos/exynos_mixer.c10
-rw-r--r--drivers/gpu/drm/i915/gvt/display.c22
-rw-r--r--drivers/gpu/drm/i915/gvt/execlist.c27
-rw-r--r--drivers/gpu/drm/i915/gvt/firmware.c11
-rw-r--r--drivers/gpu/drm/i915/gvt/gvt.h14
-rw-r--r--drivers/gpu/drm/i915/gvt/handlers.c38
-rw-r--r--drivers/gpu/drm/i915/gvt/scheduler.c3
-rw-r--r--drivers/gpu/drm/i915/gvt/vgpu.c8
-rw-r--r--drivers/gpu/drm/i915/i915_debugfs.c2
-rw-r--r--drivers/gpu/drm/i915/i915_gem_clflush.c7
-rw-r--r--drivers/gpu/drm/i915/i915_gem_clflush.h2
-rw-r--r--drivers/gpu/drm/i915/i915_gem_context.c15
-rw-r--r--drivers/gpu/drm/i915/i915_gem_execbuffer.c24
-rw-r--r--drivers/gpu/drm/i915/i915_gem_render_state.c4
-rw-r--r--drivers/gpu/drm/i915/i915_gem_shrinker.c11
-rw-r--r--drivers/gpu/drm/i915/i915_perf.c4
-rw-r--r--drivers/gpu/drm/i915/i915_vma.h2
-rw-r--r--drivers/gpu/drm/i915/intel_color.c1
-rw-r--r--drivers/gpu/drm/i915/intel_ddi.c6
-rw-r--r--drivers/gpu/drm/i915/intel_display.c93
-rw-r--r--drivers/gpu/drm/i915/intel_gvt.c2
-rw-r--r--drivers/gpu/drm/i915/intel_lrc.h1
-rw-r--r--drivers/gpu/drm/i915/intel_panel.c2
-rw-r--r--drivers/gpu/drm/i915/intel_pm.c4
-rw-r--r--drivers/gpu/drm/i915/selftests/mock_gem_device.c2
-rw-r--r--drivers/gpu/drm/imx/ipuv3-plane.c2
-rw-r--r--drivers/gpu/drm/imx/parallel-display.c2
-rw-r--r--drivers/gpu/drm/msm/Kconfig2
-rw-r--r--drivers/gpu/drm/msm/adreno/a5xx_gpu.c181
-rw-r--r--drivers/gpu/drm/msm/adreno/a5xx_gpu.h3
-rw-r--r--drivers/gpu/drm/msm/adreno/adreno_gpu.c11
-rw-r--r--drivers/gpu/drm/msm/dsi/dsi_host.c14
-rw-r--r--drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c12
-rw-r--r--drivers/gpu/drm/msm/mdp/mdp5/mdp5_encoder.c2
-rw-r--r--drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c12
-rw-r--r--drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c4
-rw-r--r--drivers/gpu/drm/msm/msm_gem.c12
-rw-r--r--drivers/gpu/drm/msm/msm_gem_submit.c6
-rw-r--r--drivers/gpu/drm/msm/msm_gem_vma.c2
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_connector.c2
-rw-r--r--drivers/gpu/drm/nouveau/nouveau_display.c5
-rw-r--r--drivers/gpu/drm/nouveau/nv50_display.c31
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/base.c2
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/nv50.h2
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/engine/disp/outp.c1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/bar/gf100.c2
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/i2c/Kbuild1
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.c4
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.h6
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxg94.c30
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgf119.c35
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgm200.c5
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/i2c/padgf119.c4
-rw-r--r--drivers/gpu/drm/radeon/radeon_kfd.c1
-rw-r--r--drivers/gpu/drm/rockchip/Kconfig19
-rw-r--r--drivers/gpu/drm/rockchip/rockchip_drm_vop.c41
-rw-r--r--drivers/gpu/drm/rockchip/rockchip_drm_vop.h3
-rw-r--r--drivers/gpu/drm/stm/Kconfig1
-rw-r--r--drivers/gpu/drm/vc4/vc4_crtc.c66
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c24
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf.c10
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf_res.c4
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_context.c6
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_cotable.c2
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_drv.c8
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c8
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_fence.c10
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c2
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_kms.c9
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_mob.c6
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_msg.c6
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_resource.c4
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_shader.c6
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c4
-rw-r--r--drivers/gpu/host1x/dev.c8
-rw-r--r--drivers/hid/hid-core.c1
-rw-r--r--drivers/hid/hid-ids.h1
-rw-r--r--drivers/hid/hid-logitech-hidpp.c3
-rw-r--r--drivers/hid/hid-multitouch.c16
-rw-r--r--drivers/hid/hid-ortek.c6
-rw-r--r--drivers/hid/usbhid/hid-core.c16
-rw-r--r--drivers/hv/channel.c2
-rw-r--r--drivers/hwmon/applesmc.c13
-rw-r--r--drivers/i2c/busses/Kconfig2
-rw-r--r--drivers/i2c/busses/i2c-designware-platdrv.c6
-rw-r--r--drivers/i2c/i2c-core-acpi.c19
-rw-r--r--drivers/i2c/i2c-core-base.c1
-rw-r--r--drivers/i2c/i2c-core.h9
-rw-r--r--drivers/i2c/muxes/Kconfig2
-rw-r--r--drivers/ide/ide-timings.c18
-rw-r--r--drivers/iio/accel/bmc150-accel-core.c9
-rw-r--r--drivers/iio/accel/st_accel_core.c32
-rw-r--r--drivers/iio/adc/aspeed_adc.c26
-rw-r--r--drivers/iio/adc/axp288_adc.c42
-rw-r--r--drivers/iio/adc/sun4i-gpadc-iio.c3
-rw-r--r--drivers/iio/adc/vf610_adc.c2
-rw-r--r--drivers/iio/common/st_sensors/st_sensors_core.c29
-rw-r--r--drivers/iio/light/tsl2563.c2
-rw-r--r--drivers/iio/pressure/st_pressure_core.c2
-rw-r--r--drivers/infiniband/core/addr.c108
-rw-r--r--drivers/infiniband/core/cma.c34
-rw-r--r--drivers/infiniband/core/device.c5
-rw-r--r--drivers/infiniband/core/roce_gid_mgmt.c11
-rw-r--r--drivers/infiniband/core/uverbs_cmd.c51
-rw-r--r--drivers/infiniband/core/uverbs_main.c5
-rw-r--r--drivers/infiniband/core/verbs.c55
-rw-r--r--drivers/infiniband/hw/bnxt_re/bnxt_re.h9
-rw-r--r--drivers/infiniband/hw/bnxt_re/ib_verbs.c119
-rw-r--r--drivers/infiniband/hw/bnxt_re/ib_verbs.h3
-rw-r--r--drivers/infiniband/hw/bnxt_re/main.c1
-rw-r--r--drivers/infiniband/hw/bnxt_re/qplib_fp.c29
-rw-r--r--drivers/infiniband/hw/bnxt_re/qplib_fp.h1
-rw-r--r--drivers/infiniband/hw/bnxt_re/qplib_sp.c16
-rw-r--r--drivers/infiniband/hw/bnxt_re/qplib_sp.h3
-rw-r--r--drivers/infiniband/hw/cxgb3/iwch_provider.c9
-rw-r--r--drivers/infiniband/hw/cxgb4/cq.c1
-rw-r--r--drivers/infiniband/hw/cxgb4/mem.c2
-rw-r--r--drivers/infiniband/hw/cxgb4/qp.c2
-rw-r--r--drivers/infiniband/hw/hfi1/chip.c7
-rw-r--r--drivers/infiniband/hw/hfi1/qp.c7
-rw-r--r--drivers/infiniband/hw/hfi1/qp.h3
-rw-r--r--drivers/infiniband/hw/hns/hns_roce_ah.c4
-rw-r--r--drivers/infiniband/hw/hns/hns_roce_hw_v1.c88
-rw-r--r--drivers/infiniband/hw/hns/hns_roce_main.c3
-rw-r--r--drivers/infiniband/hw/i40iw/i40iw.h1
-rw-r--r--drivers/infiniband/hw/i40iw/i40iw_cm.c5
-rw-r--r--drivers/infiniband/hw/i40iw/i40iw_ctrl.c125
-rw-r--r--drivers/infiniband/hw/i40iw/i40iw_d.h4
-rw-r--r--drivers/infiniband/hw/i40iw/i40iw_main.c60
-rw-r--r--drivers/infiniband/hw/i40iw/i40iw_puda.c7
-rw-r--r--drivers/infiniband/hw/i40iw/i40iw_status.h2
-rw-r--r--drivers/infiniband/hw/i40iw/i40iw_uk.c8
-rw-r--r--drivers/infiniband/hw/i40iw/i40iw_utils.c60
-rw-r--r--drivers/infiniband/hw/i40iw/i40iw_verbs.c19
-rw-r--r--drivers/infiniband/hw/i40iw/i40iw_verbs.h2
-rw-r--r--drivers/infiniband/hw/mlx4/cm.c4
-rw-r--r--drivers/infiniband/hw/mlx4/cq.c6
-rw-r--r--drivers/infiniband/hw/mlx4/main.c2
-rw-r--r--drivers/infiniband/hw/mlx4/mcg.c2
-rw-r--r--drivers/infiniband/hw/mlx4/mlx4_ib.h1
-rw-r--r--drivers/infiniband/hw/mlx4/qp.c40
-rw-r--r--drivers/infiniband/hw/mlx4/srq.c8
-rw-r--r--drivers/infiniband/hw/mlx5/main.c6
-rw-r--r--drivers/infiniband/hw/mlx5/mr.c38
-rw-r--r--drivers/infiniband/hw/mlx5/odp.c2
-rw-r--r--drivers/infiniband/hw/mlx5/qp.c1
-rw-r--r--drivers/infiniband/hw/nes/nes_hw.c4
-rw-r--r--drivers/infiniband/hw/ocrdma/ocrdma_verbs.c4
-rw-r--r--drivers/infiniband/hw/qedr/verbs.c16
-rw-r--r--drivers/infiniband/hw/qib/qib_qp.c15
-rw-r--r--drivers/infiniband/hw/qib/qib_verbs.h4
-rw-r--r--drivers/infiniband/hw/vmw_pvrdma/pvrdma_cq.c17
-rw-r--r--drivers/infiniband/sw/rdmavt/qp.c52
-rw-r--r--drivers/infiniband/sw/rxe/rxe_net.c3
-rw-r--r--drivers/infiniband/sw/rxe/rxe_resp.c3
-rw-r--r--drivers/infiniband/sw/rxe/rxe_verbs.c5
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib.h1
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_cm.c21
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_ethtool.c3
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_ib.c27
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_main.c51
-rw-r--r--drivers/infiniband/ulp/ipoib/ipoib_multicast.c33
-rw-r--r--drivers/infiniband/ulp/iser/iscsi_iser.c11
-rw-r--r--drivers/infiniband/ulp/iser/iser_initiator.c6
-rw-r--r--drivers/infiniband/ulp/iser/iser_verbs.c10
-rw-r--r--drivers/input/mouse/elan_i2c_core.c4
-rw-r--r--drivers/input/mouse/trackpoint.c4
-rw-r--r--drivers/iommu/amd_iommu.c1
-rw-r--r--drivers/iommu/amd_iommu_init.c2
-rw-r--r--drivers/iommu/arm-smmu.c23
-rw-r--r--drivers/iommu/io-pgtable-arm-v7s.c6
-rw-r--r--drivers/iommu/io-pgtable-arm.c7
-rw-r--r--drivers/iommu/io-pgtable.h9
-rw-r--r--drivers/iommu/mtk_iommu.c6
-rw-r--r--drivers/iommu/mtk_iommu.h1
-rw-r--r--drivers/irqchip/irq-atmel-aic-common.c13
-rw-r--r--drivers/irqchip/irq-atmel-aic-common.h4
-rw-r--r--drivers/irqchip/irq-atmel-aic.c14
-rw-r--r--drivers/irqchip/irq-atmel-aic5.c4
-rw-r--r--drivers/irqchip/irq-brcmstb-l2.c1
-rw-r--r--drivers/irqchip/irq-digicolor.c2
-rw-r--r--drivers/irqchip/irq-gic-realview.c2
-rw-r--r--drivers/irqchip/irq-gic-v3-its-platform-msi.c1
-rw-r--r--drivers/irqchip/irq-gic-v3-its.c40
-rw-r--r--drivers/irqchip/irq-gic-v3.c16
-rw-r--r--drivers/irqchip/irq-gic.c14
-rw-r--r--drivers/irqchip/irq-mips-cpu.c2
-rw-r--r--drivers/irqchip/irq-mips-gic.c2
-rw-r--r--drivers/isdn/divert/isdn_divert.c25
-rw-r--r--drivers/isdn/hardware/avm/c4.c2
-rw-r--r--drivers/isdn/hardware/eicon/divasmain.c2
-rw-r--r--drivers/isdn/hardware/mISDN/avmfritz.c2
-rw-r--r--drivers/isdn/hardware/mISDN/hfcmulti.c2
-rw-r--r--drivers/isdn/hardware/mISDN/hfcpci.c2
-rw-r--r--drivers/isdn/hardware/mISDN/netjet.c2
-rw-r--r--drivers/isdn/hardware/mISDN/w6692.c2
-rw-r--r--drivers/isdn/hisax/config.c2
-rw-r--r--drivers/isdn/hisax/hfc4s8s_l1.c2
-rw-r--r--drivers/isdn/hisax/hisax_fcpcipnp.c2
-rw-r--r--drivers/isdn/hysdn/hysdn_proclog.c28
-rw-r--r--drivers/isdn/i4l/isdn_common.c1
-rw-r--r--drivers/isdn/i4l/isdn_net.c5
-rw-r--r--drivers/isdn/mISDN/fsm.c5
-rw-r--r--drivers/isdn/mISDN/fsm.h2
-rw-r--r--drivers/isdn/mISDN/layer1.c3
-rw-r--r--drivers/isdn/mISDN/layer2.c15
-rw-r--r--drivers/isdn/mISDN/tei.c20
-rw-r--r--drivers/lightnvm/pblk-rb.c4
-rw-r--r--drivers/lightnvm/pblk-read.c23
-rw-r--r--drivers/lightnvm/pblk.h2
-rw-r--r--drivers/mailbox/pcc.c2
-rw-r--r--drivers/md/bitmap.c3
-rw-r--r--drivers/md/dm-bufio.c3
-rw-r--r--drivers/md/dm-integrity.c22
-rw-r--r--drivers/md/dm-raid.c29
-rw-r--r--drivers/md/dm-table.c35
-rw-r--r--drivers/md/dm-verity-fec.c21
-rw-r--r--drivers/md/dm-zoned-metadata.c12
-rw-r--r--drivers/md/dm-zoned-reclaim.c2
-rw-r--r--drivers/md/dm-zoned-target.c8
-rw-r--r--drivers/md/md.c7
-rw-r--r--drivers/md/md.h58
-rw-r--r--drivers/md/raid1-10.c81
-rw-r--r--drivers/md/raid1.c68
-rw-r--r--drivers/md/raid10.c25
-rw-r--r--drivers/md/raid5-cache.c61
-rw-r--r--drivers/md/raid5-ppl.c2
-rw-r--r--drivers/md/raid5.c15
-rw-r--r--drivers/media/cec/cec-adap.c2
-rw-r--r--drivers/media/cec/cec-notifier.c6
-rw-r--r--drivers/media/dvb-core/dvb_ca_en50221.c143
-rw-r--r--drivers/media/dvb-core/dvb_ca_en50221.h7
-rw-r--r--drivers/media/dvb-frontends/cxd2841er.c5
-rw-r--r--drivers/media/dvb-frontends/drx39xyj/drx_driver.h15
-rw-r--r--drivers/media/dvb-frontends/lnbh25.c6
-rw-r--r--drivers/media/dvb-frontends/stv0367.c210
-rw-r--r--drivers/media/i2c/et8ek8/et8ek8_driver.c1
-rw-r--r--drivers/media/i2c/tvp5150.c25
-rw-r--r--drivers/media/pci/ddbridge/ddbridge-core.c102
-rw-r--r--drivers/media/pci/ngene/ngene-core.c32
-rw-r--r--drivers/media/pci/ngene/ngene-i2c.c6
-rw-r--r--drivers/media/pci/ngene/ngene.h6
-rw-r--r--drivers/media/pci/tw5864/tw5864-video.c1
-rw-r--r--drivers/media/platform/Kconfig4
-rw-r--r--drivers/media/platform/coda/coda-bit.c8
-rw-r--r--drivers/media/platform/coda/coda-common.c4
-rw-r--r--drivers/media/platform/coda/coda.h2
-rw-r--r--drivers/media/platform/davinci/ccdc_hw_device.h10
-rw-r--r--drivers/media/platform/davinci/dm355_ccdc.c92
-rw-r--r--drivers/media/platform/davinci/dm644x_ccdc.c151
-rw-r--r--drivers/media/platform/davinci/vpfe_capture.c93
-rw-r--r--drivers/media/platform/davinci/vpif_capture.c2
-rw-r--r--drivers/media/platform/davinci/vpif_display.c2
-rw-r--r--drivers/media/platform/omap/omap_vout_vrfb.c133
-rw-r--r--drivers/media/platform/omap/omap_voutdef.h6
-rw-r--r--drivers/media/platform/qcom/venus/core.c18
-rw-r--r--drivers/media/platform/qcom/venus/core.h1
-rw-r--r--drivers/media/platform/qcom/venus/firmware.c76
-rw-r--r--drivers/media/platform/qcom/venus/firmware.h5
-rw-r--r--drivers/media/platform/qcom/venus/hfi_msgs.c11
-rw-r--r--drivers/media/platform/sti/bdisp/bdisp-debug.c14
-rw-r--r--drivers/media/platform/vimc/vimc-capture.c15
-rw-r--r--drivers/media/platform/vimc/vimc-debayer.c15
-rw-r--r--drivers/media/platform/vimc/vimc-scaler.c15
-rw-r--r--drivers/media/platform/vimc/vimc-sensor.c15
-rw-r--r--drivers/media/radio/radio-wl1273.c15
-rw-r--r--drivers/media/rc/ir-lirc-codec.c2
-rw-r--r--drivers/media/tuners/fc0011.c1
-rw-r--r--drivers/media/tuners/mxl5005s.c2
-rw-r--r--drivers/media/usb/au0828/au0828-input.c2
-rw-r--r--drivers/media/usb/dvb-usb-v2/lmedm04.c10
-rw-r--r--drivers/media/usb/dvb-usb/dib0700_core.c38
-rw-r--r--drivers/media/usb/em28xx/em28xx-cards.c18
-rw-r--r--drivers/media/usb/em28xx/em28xx-dvb.c1
-rw-r--r--drivers/media/usb/em28xx/em28xx-i2c.c2
-rw-r--r--drivers/media/usb/em28xx/em28xx-input.c2
-rw-r--r--drivers/media/usb/em28xx/em28xx.h1
-rw-r--r--drivers/media/usb/pulse8-cec/pulse8-cec.c2
-rw-r--r--drivers/media/usb/rainshadow-cec/rainshadow-cec.c18
-rw-r--r--drivers/media/usb/stkwebcam/stk-sensor.c32
-rw-r--r--drivers/media/usb/stkwebcam/stk-webcam.c70
-rw-r--r--drivers/media/usb/stkwebcam/stk-webcam.h6
-rw-r--r--drivers/media/v4l2-core/tuner-core.c2
-rw-r--r--drivers/memory/atmel-ebi.c10
-rw-r--r--drivers/mfd/atmel-smc.c2
-rw-r--r--drivers/mfd/da9062-core.c6
-rw-r--r--drivers/misc/mei/pci-me.c6
-rw-r--r--drivers/misc/mei/pci-txe.c6
-rw-r--r--drivers/mmc/core/block.c3
-rw-r--r--drivers/mmc/core/mmc.c2
-rw-r--r--drivers/mmc/host/dw_mmc.c2
-rw-r--r--drivers/mmc/host/omap_hsmmc.c13
-rw-r--r--drivers/mmc/host/sdhci-of-at91.c35
-rw-r--r--drivers/mmc/host/sunxi-mmc.c8
-rw-r--r--drivers/mtd/mtd_blkdevs.c1
-rw-r--r--drivers/mtd/nand/atmel/nand-controller.c2
-rw-r--r--drivers/mtd/nand/atmel/pmecc.c21
-rw-r--r--drivers/mtd/nand/nand_base.c13
-rw-r--r--drivers/mtd/nand/nand_timings.c6
-rw-r--r--drivers/mtd/nand/sunxi_nand.c4
-rw-r--r--drivers/mux/Kconfig19
-rw-r--r--drivers/mux/mux-core.c2
-rw-r--r--drivers/net/bonding/bond_main.c17
-rw-r--r--drivers/net/dsa/b53/b53_common.c1
-rw-r--r--drivers/net/dsa/mt7530.c38
-rw-r--r--drivers/net/dsa/mt7530.h1
-rw-r--r--drivers/net/dsa/mv88e6xxx/chip.c1
-rw-r--r--drivers/net/ethernet/apm/xgene/xgene_enet_main.c18
-rw-r--r--drivers/net/ethernet/aurora/nb8800.c9
-rw-r--r--drivers/net/ethernet/broadcom/b44.c1
-rw-r--r--drivers/net/ethernet/broadcom/bcmsysport.c4
-rw-r--r--drivers/net/ethernet/broadcom/bgmac-platform.c21
-rw-r--r--drivers/net/ethernet/broadcom/bgmac.c70
-rw-r--r--drivers/net/ethernet/broadcom/bgmac.h1
-rw-r--r--drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c7
-rw-r--r--drivers/net/ethernet/broadcom/genet/bcmgenet.c301
-rw-r--r--drivers/net/ethernet/broadcom/genet/bcmgenet.h4
-rw-r--r--drivers/net/ethernet/broadcom/genet/bcmmii.c7
-rw-r--r--drivers/net/ethernet/cavium/liquidio/lio_ethtool.c2
-rw-r--r--drivers/net/ethernet/cavium/thunder/thunder_bgx.c29
-rw-r--r--drivers/net/ethernet/cavium/thunder/thunder_bgx.h2
-rw-r--r--drivers/net/ethernet/chelsio/cxgb4/cxgb4.h1
-rw-r--r--drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c23
-rw-r--r--drivers/net/ethernet/chelsio/cxgb4/cxgb4_ptp.c3
-rw-r--r--drivers/net/ethernet/chelsio/cxgb4/sge.c5
-rw-r--r--drivers/net/ethernet/chelsio/cxgb4/t4_pci_id_tbl.h2
-rw-r--r--drivers/net/ethernet/chelsio/cxgb4vf/adapter.h1
-rw-r--r--drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c18
-rw-r--r--drivers/net/ethernet/chelsio/cxgb4vf/sge.c3
-rw-r--r--drivers/net/ethernet/faraday/ftgmac100.c7
-rw-r--r--drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c3
-rw-r--r--drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c58
-rw-r--r--drivers/net/ethernet/ibm/ibmvnic.c15
-rw-r--r--drivers/net/ethernet/intel/i40e/i40e_txrx.c2
-rw-r--r--drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c4
-rw-r--r--drivers/net/ethernet/marvell/mv643xx_eth.c2
-rw-r--r--drivers/net/ethernet/mediatek/mtk_eth_soc.c5
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/alloc.c37
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/cq.c4
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/en_ethtool.c15
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/en_rx.c36
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/en_tx.c2
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/fw.c9
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/fw.h1
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/icm.c7
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/icm.h3
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/main.c6
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/mlx4.h4
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/mr.c17
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/qp.c20
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/resource_tracker.c4
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/srq.c4
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/cmd.c25
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/en.h10
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/en_clock.c222
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c4
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/en_main.c1
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/eq.c2
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/eswitch.c3
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c16
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/lag.c25
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h5
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/sriov.c5
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c7
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c37
-rw-r--r--drivers/net/ethernet/netronome/nfp/flower/cmsg.c8
-rw-r--r--drivers/net/ethernet/netronome/nfp/nfp_net_common.c5
-rw-r--r--drivers/net/ethernet/qlogic/netxen/netxen_nic_hw.c2
-rw-r--r--drivers/net/ethernet/qlogic/qed/qed_mcp.c2
-rw-r--r--drivers/net/ethernet/qualcomm/emac/emac.c10
-rw-r--r--drivers/net/ethernet/sfc/mcdi_port.c8
-rw-r--r--drivers/net/ethernet/sgi/ioc3-eth.c14
-rw-r--r--drivers/net/ethernet/stmicro/stmmac/dwmac1000_dma.c2
-rw-r--r--drivers/net/ethernet/stmicro/stmmac/dwmac100_dma.c2
-rw-r--r--drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c2
-rw-r--r--drivers/net/ethernet/stmicro/stmmac/dwmac_dma.h3
-rw-r--r--drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c5
-rw-r--r--drivers/net/ethernet/stmicro/stmmac/stmmac_main.c9
-rw-r--r--drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c9
-rw-r--r--drivers/net/ethernet/sun/niu.c4
-rw-r--r--drivers/net/ethernet/sun/sunhme.h6
-rw-r--r--drivers/net/ethernet/tehuti/tehuti.c2
-rw-r--r--drivers/net/ethernet/ti/cpsw.c49
-rw-r--r--drivers/net/ethernet/ti/cpts.c111
-rw-r--r--drivers/net/ethernet/ti/cpts.h2
-rw-r--r--drivers/net/ethernet/toshiba/tc35815.c2
-rw-r--r--drivers/net/geneve.c2
-rw-r--r--drivers/net/gtp.c2
-rw-r--r--drivers/net/hyperv/hyperv_net.h3
-rw-r--r--drivers/net/hyperv/netvsc.c3
-rw-r--r--drivers/net/hyperv/netvsc_drv.c43
-rw-r--r--drivers/net/hyperv/rndis_filter.c14
-rw-r--r--drivers/net/ipvlan/ipvlan_main.c2
-rw-r--r--drivers/net/irda/mcs7780.c16
-rw-r--r--drivers/net/phy/Kconfig13
-rw-r--r--drivers/net/phy/mdio-mux.c4
-rw-r--r--drivers/net/phy/phy.c3
-rw-r--r--drivers/net/ppp/ppp_generic.c44
-rw-r--r--drivers/net/ppp/pptp.c2
-rw-r--r--drivers/net/team/team.c8
-rw-r--r--drivers/net/tun.c13
-rw-r--r--drivers/net/usb/asix.h1
-rw-r--r--drivers/net/usb/asix_common.c53
-rw-r--r--drivers/net/usb/asix_devices.c1
-rw-r--r--drivers/net/usb/cdc_ncm.c28
-rw-r--r--drivers/net/usb/huawei_cdc_ncm.c6
-rw-r--r--drivers/net/usb/lan78xx.c18
-rw-r--r--drivers/net/usb/qmi_wwan.c7
-rw-r--r--drivers/net/usb/smsc95xx.c1
-rw-r--r--drivers/net/virtio_net.c7
-rw-r--r--drivers/net/vmxnet3/vmxnet3_int.h2
-rw-r--r--drivers/net/vxlan.c1
-rw-r--r--drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c2
-rw-r--r--drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c6
-rw-r--r--drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c8
-rw-r--r--drivers/net/wireless/intel/iwlwifi/cfg/9000.c14
-rw-r--r--drivers/net/wireless/intel/iwlwifi/dvm/tx.c2
-rw-r--r--drivers/net/wireless/intel/iwlwifi/fw/file.h2
-rw-r--r--drivers/net/wireless/intel/iwlwifi/iwl-config.h8
-rw-r--r--drivers/net/wireless/intel/iwlwifi/iwl-devtrace.h4
-rw-r--r--drivers/net/wireless/intel/iwlwifi/iwl-drv.c5
-rw-r--r--drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c19
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/fw.c6
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c20
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/mvm.h2
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/ops.c6
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/rs.c8
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c10
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/sta.c22
-rw-r--r--drivers/net/wireless/intel/iwlwifi/mvm/tx.c12
-rw-r--r--drivers/net/wireless/intel/iwlwifi/pcie/drv.c20
-rw-r--r--drivers/net/wireless/intel/iwlwifi/pcie/trans.c3
-rw-r--r--drivers/net/wireless/intel/iwlwifi/pcie/tx.c3
-rw-r--r--drivers/net/wireless/ralink/rt2x00/rt2800lib.c2
-rw-r--r--drivers/net/wireless/realtek/rtlwifi/rtl8723be/hw.c3
-rw-r--r--drivers/net/wireless/realtek/rtlwifi/wifi.h1
-rw-r--r--drivers/nvdimm/core.c7
-rw-r--r--drivers/nvme/host/core.c41
-rw-r--r--drivers/nvme/host/fabrics.c3
-rw-r--r--drivers/nvme/host/fc.c121
-rw-r--r--drivers/nvme/host/pci.c72
-rw-r--r--drivers/nvme/target/admin-cmd.c22
-rw-r--r--drivers/nvme/target/configfs.c30
-rw-r--r--drivers/nvme/target/core.c5
-rw-r--r--drivers/nvme/target/fc.c326
-rw-r--r--drivers/nvme/target/nvmet.h2
-rw-r--r--drivers/nvmem/rockchip-efuse.c2
-rw-r--r--drivers/of/device.c8
-rw-r--r--drivers/of/irq.c2
-rw-r--r--drivers/of/property.c17
-rw-r--r--drivers/parisc/dino.c2
-rw-r--r--drivers/parisc/pdc_stable.c8
-rw-r--r--drivers/pci/pci.c37
-rw-r--r--drivers/pci/probe.c43
-rw-r--r--drivers/pci/quirks.c89
-rw-r--r--drivers/perf/arm_pmu.c41
-rw-r--r--drivers/perf/arm_pmu_platform.c9
-rw-r--r--drivers/perf/qcom_l2_pmu.c2
-rw-r--r--drivers/phy/broadcom/Kconfig2
-rw-r--r--drivers/pinctrl/intel/pinctrl-cherryview.c7
-rw-r--r--drivers/pinctrl/intel/pinctrl-merrifield.c6
-rw-r--r--drivers/pinctrl/mvebu/pinctrl-armada-37xx.c25
-rw-r--r--drivers/pinctrl/stm32/Kconfig9
-rw-r--r--drivers/pinctrl/sunxi/pinctrl-sun4i-a10.c1
-rw-r--r--drivers/pinctrl/uniphier/pinctrl-uniphier-pro4.c2
-rw-r--r--drivers/pinctrl/zte/pinctrl-zx.c11
-rw-r--r--drivers/platform/x86/Kconfig1
-rw-r--r--drivers/platform/x86/dell-wmi.c12
-rw-r--r--drivers/platform/x86/intel-vbtn.c4
-rw-r--r--drivers/platform/x86/wmi.c6
-rw-r--r--drivers/ptp/ptp_clock.c42
-rw-r--r--drivers/ptp/ptp_private.h3
-rw-r--r--drivers/rtc/rtc-ds1307.c1
-rw-r--r--drivers/s390/cio/chp.c1
-rw-r--r--drivers/s390/net/qeth_l3_main.c4
-rw-r--r--drivers/sbus/char/display7seg.c4
-rw-r--r--drivers/sbus/char/flash.c4
-rw-r--r--drivers/sbus/char/uctrl.c4
-rw-r--r--drivers/scsi/Kconfig13
-rw-r--r--drivers/scsi/aacraid/aachba.c16
-rw-r--r--drivers/scsi/aacraid/aacraid.h2
-rw-r--r--drivers/scsi/aic7xxx/Makefile12
-rw-r--r--drivers/scsi/aic7xxx/aicasm/Makefile53
-rw-r--r--drivers/scsi/bnx2fc/bnx2fc_fcoe.c68
-rw-r--r--drivers/scsi/bnx2fc/bnx2fc_hwi.c45
-rw-r--r--drivers/scsi/bnx2i/bnx2i_init.c64
-rw-r--r--drivers/scsi/csiostor/csio_hw.c4
-rw-r--r--drivers/scsi/csiostor/csio_init.c12
-rw-r--r--drivers/scsi/cxgbi/cxgb4i/cxgb4i.c3
-rw-r--r--drivers/scsi/cxgbi/libcxgbi.c7
-rw-r--r--drivers/scsi/hpsa.c2
-rw-r--r--drivers/scsi/ipr.c33
-rw-r--r--drivers/scsi/ipr.h2
-rw-r--r--drivers/scsi/lpfc/lpfc_attr.c4
-rw-r--r--drivers/scsi/lpfc/lpfc_debugfs.c5
-rw-r--r--drivers/scsi/lpfc/lpfc_nvmet.c30
-rw-r--r--drivers/scsi/lpfc/lpfc_nvmet.h1
-rw-r--r--drivers/scsi/megaraid/megaraid_sas_base.c2
-rw-r--r--drivers/scsi/megaraid/megaraid_sas_fusion.c6
-rw-r--r--drivers/scsi/qedf/qedf.h3
-rw-r--r--drivers/scsi/qedf/qedf_main.c20
-rw-r--r--drivers/scsi/qedi/Kconfig1
-rw-r--r--drivers/scsi/qedi/qedi_iscsi.c8
-rw-r--r--drivers/scsi/qla2xxx/qla_tmpl.c12
-rw-r--r--drivers/scsi/qla2xxx/tcm_qla2xxx.c30
-rw-r--r--drivers/scsi/scsi.c4
-rw-r--r--drivers/scsi/scsi_transport_fc.c6
-rw-r--r--drivers/scsi/sd.c3
-rw-r--r--drivers/scsi/sd_zbc.c9
-rw-r--r--drivers/scsi/ses.c2
-rw-r--r--drivers/scsi/sg.c28
-rw-r--r--drivers/scsi/smartpqi/smartpqi.h2
-rw-r--r--drivers/scsi/st.c4
-rw-r--r--drivers/soc/imx/gpcv2.c15
-rw-r--r--drivers/soc/ti/knav_qmss_queue.c3
-rw-r--r--drivers/soc/ti/ti_sci_pm_domains.c2
-rw-r--r--drivers/soc/zte/Kconfig1
-rw-r--r--drivers/spmi/spmi-pmic-arb.c17
-rw-r--r--drivers/spmi/spmi.c12
-rw-r--r--drivers/staging/Kconfig2
-rw-r--r--drivers/staging/Makefile1
-rw-r--r--drivers/staging/comedi/comedi_fops.c3
-rw-r--r--drivers/staging/comedi/drivers/ni_mio_common.c3
-rw-r--r--drivers/staging/iio/resolver/ad2s1210.c2
-rw-r--r--drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c19
-rw-r--r--drivers/staging/media/atomisp/i2c/ap1302.h4
-rw-r--r--drivers/staging/media/atomisp/i2c/gc0310.h2
-rw-r--r--drivers/staging/media/atomisp/i2c/gc2235.h2
-rw-r--r--drivers/staging/media/atomisp/i2c/imx/imx.h2
-rw-r--r--drivers/staging/media/atomisp/i2c/ov2680.h3
-rw-r--r--drivers/staging/media/atomisp/i2c/ov2722.h2
-rw-r--r--drivers/staging/media/atomisp/i2c/ov5693/ov5693.h2
-rw-r--r--drivers/staging/media/atomisp/i2c/ov8858.h2
-rw-r--r--drivers/staging/media/atomisp/i2c/ov8858_btns.h2
-rw-r--r--drivers/staging/media/atomisp/pci/atomisp2/Makefile10
-rw-r--r--drivers/staging/media/atomisp/pci/atomisp2/atomisp_internal.h2
-rw-r--r--drivers/staging/media/cxd2099/cxd2099.c165
-rw-r--r--drivers/staging/media/cxd2099/cxd2099.h6
-rw-r--r--drivers/staging/rtl8188eu/core/rtw_cmd.c2
-rw-r--r--drivers/staging/rtl8188eu/os_dep/usb_intf.c1
-rw-r--r--drivers/staging/sm750fb/ddk750_chip.c2
-rw-r--r--drivers/staging/sm750fb/sm750.c24
-rw-r--r--drivers/staging/speakup/main.c2
-rw-r--r--drivers/staging/speakup/spk_priv.h2
-rw-r--r--drivers/staging/speakup/spk_ttyio.c22
-rw-r--r--drivers/staging/vboxvideo/Kconfig12
-rw-r--r--drivers/staging/vboxvideo/Makefile7
-rw-r--r--drivers/staging/vboxvideo/TODO9
-rw-r--r--drivers/staging/vboxvideo/hgsmi_base.c246
-rw-r--r--drivers/staging/vboxvideo/hgsmi_ch_setup.h66
-rw-r--r--drivers/staging/vboxvideo/hgsmi_channels.h53
-rw-r--r--drivers/staging/vboxvideo/hgsmi_defs.h92
-rw-r--r--drivers/staging/vboxvideo/modesetting.c142
-rw-r--r--drivers/staging/vboxvideo/vbox_drv.c286
-rw-r--r--drivers/staging/vboxvideo/vbox_drv.h296
-rw-r--r--drivers/staging/vboxvideo/vbox_err.h50
-rw-r--r--drivers/staging/vboxvideo/vbox_fb.c412
-rw-r--r--drivers/staging/vboxvideo/vbox_hgsmi.c115
-rw-r--r--drivers/staging/vboxvideo/vbox_irq.c197
-rw-r--r--drivers/staging/vboxvideo/vbox_main.c534
-rw-r--r--drivers/staging/vboxvideo/vbox_mode.c877
-rw-r--r--drivers/staging/vboxvideo/vbox_prime.c74
-rw-r--r--drivers/staging/vboxvideo/vbox_ttm.c472
-rw-r--r--drivers/staging/vboxvideo/vboxvideo.h491
-rw-r--r--drivers/staging/vboxvideo/vboxvideo_guest.h95
-rw-r--r--drivers/staging/vboxvideo/vboxvideo_vbe.h84
-rw-r--r--drivers/staging/vboxvideo/vbva_base.c233
-rw-r--r--drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c10
-rw-r--r--drivers/target/iscsi/cxgbit/cxgbit_cm.c16
-rw-r--r--drivers/target/iscsi/cxgbit/cxgbit_target.c12
-rw-r--r--drivers/target/iscsi/iscsi_target.c6
-rw-r--r--drivers/target/iscsi/iscsi_target_login.c7
-rw-r--r--drivers/target/target_core_tpg.c4
-rw-r--r--drivers/target/target_core_transport.c4
-rw-r--r--drivers/target/target_core_user.c13
-rw-r--r--drivers/thunderbolt/eeprom.c9
-rw-r--r--drivers/thunderbolt/icm.c9
-rw-r--r--drivers/thunderbolt/switch.c11
-rw-r--r--drivers/thunderbolt/tb.h4
-rw-r--r--drivers/thunderbolt/tb_msgs.h12
-rw-r--r--drivers/tty/pty.c119
-rw-r--r--drivers/tty/serial/8250/8250_core.c23
-rw-r--r--drivers/tty/serial/8250/8250_exar.c4
-rw-r--r--drivers/tty/serial/amba-pl011.c37
-rw-r--r--drivers/tty/serial/fsl_lpuart.c24
-rw-r--r--drivers/tty/serial/imx.c27
-rw-r--r--drivers/tty/serial/sh-sci.c12
-rw-r--r--drivers/tty/serial/st-asc.c1
-rw-r--r--drivers/tty/tty_io.c3
-rw-r--r--drivers/usb/class/cdc-acm.c3
-rw-r--r--drivers/usb/core/hcd.c4
-rw-r--r--drivers/usb/core/hub.c10
-rw-r--r--drivers/usb/core/quirks.c4
-rw-r--r--drivers/usb/dwc2/gadget.c3
-rw-r--r--drivers/usb/dwc3/core.c6
-rw-r--r--drivers/usb/dwc3/dwc3-omap.c18
-rw-r--r--drivers/usb/dwc3/gadget.c41
-rw-r--r--drivers/usb/gadget/function/f_mass_storage.c2
-rw-r--r--drivers/usb/gadget/function/f_uac1.c20
-rw-r--r--drivers/usb/gadget/function/f_uac2.c25
-rw-r--r--drivers/usb/gadget/udc/Kconfig5
-rw-r--r--drivers/usb/gadget/udc/renesas_usb3.c35
-rw-r--r--drivers/usb/gadget/udc/snps_udc_plat.c6
-rw-r--r--drivers/usb/host/pci-quirks.c91
-rw-r--r--drivers/usb/host/pci-quirks.h3
-rw-r--r--drivers/usb/host/xhci-hub.c14
-rw-r--r--drivers/usb/host/xhci-pci.c13
-rw-r--r--drivers/usb/host/xhci-ring.c11
-rw-r--r--drivers/usb/host/xhci.c10
-rw-r--r--drivers/usb/host/xhci.h1
-rw-r--r--drivers/usb/musb/musb_host.c1
-rw-r--r--drivers/usb/phy/phy-msm-usb.c17
-rw-r--r--drivers/usb/renesas_usbhs/common.c4
-rw-r--r--drivers/usb/renesas_usbhs/mod_gadget.c26
-rw-r--r--drivers/usb/renesas_usbhs/rcar3.c9
-rw-r--r--drivers/usb/serial/cp210x.c1
-rw-r--r--drivers/usb/serial/option.c2
-rw-r--r--drivers/usb/serial/pl2303.c2
-rw-r--r--drivers/usb/serial/pl2303.h1
-rw-r--r--drivers/usb/storage/isd200.c5
-rw-r--r--drivers/usb/storage/unusual_uas.h4
-rw-r--r--drivers/usb/storage/usb.c18
-rw-r--r--drivers/usb/typec/ucsi/ucsi.h1
-rw-r--r--drivers/vfio/pci/vfio_pci.c9
-rw-r--r--drivers/vfio/pci/vfio_pci_config.c13
-rw-r--r--drivers/vhost/vhost.c28
-rw-r--r--drivers/vhost/vhost.h3
-rw-r--r--drivers/video/fbdev/efifb.c8
-rw-r--r--drivers/video/fbdev/imxfb.c10
-rw-r--r--drivers/video/fbdev/omap2/omapfb/dss/core.c1
-rw-r--r--drivers/virtio/virtio_balloon.c28
-rw-r--r--drivers/w1/masters/omap_hdq.c3
-rw-r--r--drivers/w1/w1.c4
-rw-r--r--drivers/xen/Makefile3
-rw-r--r--drivers/xen/balloon.c3
-rw-r--r--drivers/xen/biomerge.c3
-rw-r--r--drivers/xen/events/events_base.c15
-rw-r--r--drivers/xen/grant-table.c9
-rw-r--r--drivers/xen/xen-balloon.c22
-rw-r--r--drivers/xen/xen-selfballoon.c4
-rw-r--r--drivers/xen/xenbus/xenbus_xs.c3
-rw-r--r--drivers/xen/xenfs/super.c1
-rw-r--r--fs/binfmt_elf.c3
-rw-r--r--fs/btrfs/disk-io.c4
-rw-r--r--fs/btrfs/extent-tree.c11
-rw-r--r--fs/btrfs/inode.c70
-rw-r--r--fs/btrfs/raid56.c34
-rw-r--r--fs/btrfs/tree-log.c3
-rw-r--r--fs/btrfs/volumes.c14
-rw-r--r--fs/btrfs/volumes.h6
-rw-r--r--fs/ceph/dir.c5
-rw-r--r--fs/devpts/inode.c65
-rw-r--r--fs/ext2/acl.c43
-rw-r--r--fs/ext4/acl.c25
-rw-r--r--fs/ext4/ext4.h13
-rw-r--r--fs/ext4/ext4_jbd2.h3
-rw-r--r--fs/ext4/extents.c11
-rw-r--r--fs/ext4/file.c3
-rw-r--r--fs/ext4/inode.c198
-rw-r--r--fs/ext4/ioctl.c27
-rw-r--r--fs/ext4/mballoc.c12
-rw-r--r--fs/ext4/namei.c64
-rw-r--r--fs/ext4/resize.c3
-rw-r--r--fs/ext4/super.c2
-rw-r--r--fs/ext4/xattr.c93
-rw-r--r--fs/f2fs/acl.c2
-rw-r--r--fs/f2fs/checkpoint.c10
-rw-r--r--fs/f2fs/file.c5
-rw-r--r--fs/f2fs/sysfs.c1
-rw-r--r--fs/fuse/file.c9
-rw-r--r--fs/fuse/fuse_i.h1
-rw-r--r--fs/hfsplus/posix_acl.c30
-rw-r--r--fs/iomap.c4
-rw-r--r--fs/isofs/inode.c8
-rw-r--r--fs/jfs/acl.c24
-rw-r--r--fs/jfs/resize.c4
-rw-r--r--fs/jfs/super.c4
-rw-r--r--fs/mount.h4
-rw-r--r--fs/namei.c2
-rw-r--r--fs/nfs/Kconfig1
-rw-r--r--fs/nfs/client.c1
-rw-r--r--fs/nfs/dir.c47
-rw-r--r--fs/nfs/file.c4
-rw-r--r--fs/nfs/filelayout/filelayout.c13
-rw-r--r--fs/nfs/flexfilelayout/flexfilelayout.c4
-rw-r--r--fs/nfs/flexfilelayout/flexfilelayoutdev.c1
-rw-r--r--fs/nfs/mount_clnt.c2
-rw-r--r--fs/nfs/nfs3proc.c11
-rw-r--r--fs/nfs/nfs4client.c3
-rw-r--r--fs/nfs/nfs4proc.c44
-rw-r--r--fs/nfs/nfs4xdr.c2
-rw-r--r--fs/nfs/pnfs_nfs.c24
-rw-r--r--fs/nfsd/nfs4callback.c6
-rw-r--r--fs/ocfs2/acl.c24
-rw-r--r--fs/overlayfs/dir.c22
-rw-r--r--fs/overlayfs/inode.c32
-rw-r--r--fs/overlayfs/namei.c41
-rw-r--r--fs/overlayfs/overlayfs.h10
-rw-r--r--fs/overlayfs/readdir.c5
-rw-r--r--fs/overlayfs/super.c13
-rw-r--r--fs/overlayfs/util.c7
-rw-r--r--fs/proc/internal.h6
-rw-r--r--fs/proc/meminfo.c8
-rw-r--r--fs/proc/task_mmu.c7
-rw-r--r--fs/quota/dquot.c21
-rw-r--r--fs/reiserfs/xattr_acl.c17
-rw-r--r--fs/userfaultfd.c7
-rw-r--r--fs/xfs/libxfs/xfs_bmap.c21
-rw-r--r--fs/xfs/libxfs/xfs_btree.c6
-rw-r--r--fs/xfs/libxfs/xfs_dir2_data.c4
-rw-r--r--fs/xfs/libxfs/xfs_ialloc.c2
-rw-r--r--fs/xfs/libxfs/xfs_refcount.c4
-rw-r--r--fs/xfs/xfs_inode.c12
-rw-r--r--fs/xfs/xfs_log.c11
-rw-r--r--fs/xfs/xfs_log_cil.c1
-rw-r--r--fs/xfs/xfs_mount.c12
-rw-r--r--fs/xfs/xfs_qm.c3
-rw-r--r--fs/xfs/xfs_reflink.c4
-rw-r--r--include/acpi/acpi_numa.h1
-rw-r--r--include/asm-generic/tlb.h7
-rw-r--r--include/asm-generic/vmlinux.lds.h38
-rw-r--r--include/kvm/arm_pmu.h2
-rw-r--r--include/linux/acpi.h1
-rw-r--r--include/linux/binfmts.h4
-rw-r--r--include/linux/bpf-cgroup.h2
-rw-r--r--include/linux/bpf_verifier.h1
-rw-r--r--include/linux/cdev.h2
-rw-r--r--include/linux/ceph/ceph_features.h8
-rw-r--r--include/linux/ceph/osd_client.h1
-rw-r--r--include/linux/ceph/osdmap.h2
-rw-r--r--include/linux/ceph/rados.h4
-rw-r--r--include/linux/compiler-gcc.h13
-rw-r--r--include/linux/compiler.h5
-rw-r--r--include/linux/cpuhotplug.h2
-rw-r--r--include/linux/cpuset.h19
-rw-r--r--include/linux/cred.h4
-rw-r--r--include/linux/crush/crush.h2
-rw-r--r--include/linux/dax.h1
-rw-r--r--include/linux/dcache.h2
-rw-r--r--include/linux/device.h2
-rw-r--r--include/linux/devpts_fs.h10
-rw-r--r--include/linux/dma-fence.h2
-rw-r--r--include/linux/dma-mapping.h40
-rw-r--r--include/linux/fs.h17
-rw-r--r--include/linux/fs_struct.h2
-rw-r--r--include/linux/ftrace.h6
-rw-r--r--include/linux/i2c.h3
-rw-r--r--include/linux/iio/common/st_sensors.h7
-rw-r--r--include/linux/ipc.h2
-rw-r--r--include/linux/ipc_namespace.h2
-rw-r--r--include/linux/ipv6.h6
-rw-r--r--include/linux/irq.h7
-rw-r--r--include/linux/jhash.h29
-rw-r--r--include/linux/key-type.h4
-rw-r--r--include/linux/kmod.h2
-rw-r--r--include/linux/kobject.h2
-rw-r--r--include/linux/kthread.h2
-rw-r--r--include/linux/kvm_host.h7
-rw-r--r--include/linux/libata.h2
-rw-r--r--include/linux/llist.h21
-rw-r--r--include/linux/lsm_hooks.h4
-rw-r--r--include/linux/memblock.h6
-rw-r--r--include/linux/memcontrol.h10
-rw-r--r--include/linux/mlx4/device.h11
-rw-r--r--include/linux/mlx5/mlx5_ifc.h10
-rw-r--r--include/linux/mlx5/qp.h1
-rw-r--r--include/linux/mm_types.h70
-rw-r--r--include/linux/module.h4
-rw-r--r--include/linux/mount.h2
-rw-r--r--include/linux/msg.h2
-rw-r--r--include/linux/mtd/nand.h6
-rw-r--r--include/linux/net.h2
-rw-r--r--include/linux/netfilter.h9
-rw-r--r--include/linux/nfs_fs.h2
-rw-r--r--include/linux/nfs_xdr.h2
-rw-r--r--include/linux/nmi.h8
-rw-r--r--include/linux/nvme-fc-driver.h7
-rw-r--r--include/linux/nvme-fc.h19
-rw-r--r--include/linux/nvme.h16
-rw-r--r--include/linux/oom.h22
-rw-r--r--include/linux/pagemap.h2
-rw-r--r--include/linux/path.h2
-rw-r--r--include/linux/pci.h4
-rw-r--r--include/linux/perf/arm_pmu.h4
-rw-r--r--include/linux/perf_event.h4
-rw-r--r--include/linux/phy.h2
-rw-r--r--include/linux/pid.h4
-rw-r--r--include/linux/pid_namespace.h2
-rw-r--r--include/linux/pinctrl/pinconf-generic.h4
-rw-r--r--include/linux/platform_data/hsmmc-omap.h10
-rw-r--r--include/linux/platform_data/st_sensors_pdata.h2
-rw-r--r--include/linux/proc_ns.h2
-rw-r--r--include/linux/ptp_clock_kernel.h20
-rw-r--r--include/linux/ptr_ring.h9
-rw-r--r--include/linux/sched.h67
-rw-r--r--include/linux/sched/signal.h2
-rw-r--r--include/linux/sem.h2
-rw-r--r--include/linux/shm.h2
-rw-r--r--include/linux/skb_array.h3
-rw-r--r--include/linux/sync_file.h3
-rw-r--r--include/linux/sysctl.h2
-rw-r--r--include/linux/trace_events.h2
-rw-r--r--include/linux/tty.h2
-rw-r--r--include/linux/tty_driver.h4
-rw-r--r--include/linux/usb/audio-v2.h14
-rw-r--r--include/linux/usb/cdc_ncm.h1
-rw-r--r--include/linux/user_namespace.h2
-rw-r--r--include/linux/utsname.h2
-rw-r--r--include/linux/uuid.h14
-rw-r--r--include/linux/vfio.h4
-rw-r--r--include/linux/wait.h45
-rw-r--r--include/linux/workqueue.h4
-rw-r--r--include/media/cec-notifier.h15
-rw-r--r--include/media/davinci/dm644x_ccdc.h12
-rw-r--r--include/media/davinci/vpfe_capture.h10
-rw-r--r--include/net/addrconf.h10
-rw-r--r--include/net/af_unix.h2
-rw-r--r--include/net/bonding.h5
-rw-r--r--include/net/busy_poll.h12
-rw-r--r--include/net/ip.h4
-rw-r--r--include/net/mac80211.h15
-rw-r--r--include/net/neighbour.h2
-rw-r--r--include/net/net_namespace.h2
-rw-r--r--include/net/netlink.h4
-rw-r--r--include/net/sch_generic.h5
-rw-r--r--include/net/sctp/sctp.h4
-rw-r--r--include/net/sock.h6
-rw-r--r--include/net/tcp.h10
-rw-r--r--include/net/udp.h41
-rw-r--r--include/rdma/ib_addr.h6
-rw-r--r--include/rdma/ib_verbs.h19
-rw-r--r--include/rdma/rdma_vt.h5
-rw-r--r--include/rdma/rdmavt_qp.h14
-rw-r--r--include/scsi/scsi_cmnd.h1
-rw-r--r--include/sound/soc.h6
-rw-r--r--include/target/iscsi/iscsi_target_core.h1
-rw-r--r--include/trace/events/ext4.h35
-rw-r--r--include/uapi/asm-generic/ioctls.h2
-rw-r--r--include/uapi/drm/msm_drm.h6
-rw-r--r--include/uapi/linux/usb/audio.h6
-rw-r--r--include/xen/balloon.h8
-rw-r--r--ipc/msg.c3
-rw-r--r--ipc/sem.c3
-rw-r--r--ipc/shm.c4
-rw-r--r--kernel/audit.c1
-rw-r--r--kernel/audit_watch.c14
-rw-r--r--kernel/bpf/syscall.c4
-rw-r--r--kernel/bpf/verifier.c129
-rw-r--r--kernel/cgroup/cgroup-internal.h3
-rw-r--r--kernel/cgroup/cgroup.c66
-rw-r--r--kernel/cgroup/cpuset.c1
-rw-r--r--kernel/events/core.c80
-rw-r--r--kernel/fork.c2
-rw-r--r--kernel/futex.c9
-rw-r--r--kernel/irq/chip.c20
-rw-r--r--kernel/irq/cpuhotplug.c9
-rw-r--r--kernel/irq/internals.h10
-rw-r--r--kernel/irq/ipi.c4
-rw-r--r--kernel/irq/pm.c2
-rw-r--r--kernel/kmod.c25
-rw-r--r--kernel/locking/rtmutex.c1
-rw-r--r--kernel/pid.c14
-rw-r--r--kernel/power/snapshot.c2
-rw-r--r--kernel/sched/core.c2
-rw-r--r--kernel/sched/cputime.c6
-rw-r--r--kernel/sched/deadline.c14
-rw-r--r--kernel/signal.c17
-rw-r--r--kernel/time/timer.c2
-rw-r--r--kernel/trace/bpf_trace.c34
-rw-r--r--kernel/trace/ftrace.c45
-rw-r--r--kernel/trace/ring_buffer.c24
-rw-r--r--kernel/trace/ring_buffer_benchmark.c2
-rw-r--r--kernel/trace/trace.c20
-rw-r--r--kernel/trace/trace.h6
-rw-r--r--kernel/trace/trace_events_filter.c4
-rw-r--r--kernel/trace/tracing_map.c11
-rw-r--r--kernel/watchdog.c1
-rw-r--r--kernel/watchdog_hld.c59
-rw-r--r--kernel/workqueue.c30
-rw-r--r--lib/Kconfig.debug7
-rw-r--r--lib/fault-inject.c8
-rw-r--r--lib/test_kmod.c16
-rw-r--r--lib/test_rhashtable.c57
-rw-r--r--lib/test_uuid.c2
-rw-r--r--mm/balloon_compaction.c2
-rw-r--r--mm/cma_debug.c2
-rw-r--r--mm/debug.c6
-rw-r--r--mm/huge_memory.c37
-rw-r--r--mm/hugetlb.c11
-rw-r--r--mm/internal.h5
-rw-r--r--mm/kasan/report.c1
-rw-r--r--mm/ksm.c3
-rw-r--r--mm/madvise.c1
-rw-r--r--mm/memblock.c38
-rw-r--r--mm/memcontrol.c43
-rw-r--r--mm/memory.c79
-rw-r--r--mm/mempolicy.c5
-rw-r--r--mm/migrate.c17
-rw-r--r--mm/mprotect.c5
-rw-r--r--mm/mremap.c8
-rw-r--r--mm/nobootmem.c16
-rw-r--r--mm/page-writeback.c15
-rw-r--r--mm/page_alloc.c17
-rw-r--r--mm/page_io.c7
-rw-r--r--mm/rmap.c88
-rw-r--r--mm/shmem.c12
-rw-r--r--mm/slub.c3
-rw-r--r--mm/util.c2
-rw-r--r--mm/vmalloc.c13
-rw-r--r--mm/zsmalloc.c1
-rw-r--r--net/batman-adv/translation-table.c60
-rw-r--r--net/batman-adv/types.h2
-rw-r--r--net/bridge/br_device.c3
-rw-r--r--net/bridge/br_input.c3
-rw-r--r--net/ceph/crush/mapper.c2
-rw-r--r--net/ceph/messenger.c12
-rw-r--r--net/ceph/osd_client.c19
-rw-r--r--net/ceph/osdmap.c91
-rw-r--r--net/core/datagram.c12
-rw-r--r--net/core/dev.c2
-rw-r--r--net/core/dev_ioctl.c5
-rw-r--r--net/core/fib_rules.c3
-rw-r--r--net/core/filter.c4
-rw-r--r--net/core/netpoll.c4
-rw-r--r--net/core/rtnetlink.c4
-rw-r--r--net/dccp/feat.c7
-rw-r--r--net/dccp/input.c2
-rw-r--r--net/dccp/ipv4.c1
-rw-r--r--net/dccp/ipv6.c1
-rw-r--r--net/dccp/proto.c19
-rw-r--r--net/dsa/dsa2.c13
-rw-r--r--net/dsa/tag_ksz.c13
-rw-r--r--net/ipv4/af_inet.c7
-rw-r--r--net/ipv4/cipso_ipv4.c12
-rw-r--r--net/ipv4/fib_frontend.c9
-rw-r--r--net/ipv4/fib_semantics.c14
-rw-r--r--net/ipv4/fou.c1
-rw-r--r--net/ipv4/igmp.c16
-rw-r--r--net/ipv4/ip_output.c16
-rw-r--r--net/ipv4/netfilter/nf_tables_arp.c3
-rw-r--r--net/ipv4/route.c16
-rw-r--r--net/ipv4/syncookies.c1
-rw-r--r--net/ipv4/tcp_bbr.c49
-rw-r--r--net/ipv4/tcp_input.c37
-rw-r--r--net/ipv4/tcp_ipv4.c4
-rw-r--r--net/ipv4/tcp_output.c32
-rw-r--r--net/ipv4/tcp_timer.c3
-rw-r--r--net/ipv4/tcp_ulp.c14
-rw-r--r--net/ipv4/udp.c45
-rw-r--r--net/ipv4/udp_offload.c2
-rw-r--r--net/ipv6/exthdrs.c1
-rw-r--r--net/ipv6/ip6_fib.c28
-rw-r--r--net/ipv6/ip6_output.c11
-rw-r--r--net/ipv6/output_core.c8
-rw-r--r--net/ipv6/route.c30
-rw-r--r--net/ipv6/syncookies.c1
-rw-r--r--net/ipv6/tcp_ipv6.c4
-rw-r--r--net/ipv6/udp.c41
-rw-r--r--net/ipv6/udp_offload.c2
-rw-r--r--net/irda/af_irda.c2
-rw-r--r--net/key/af_key.c48
-rw-r--r--net/mac80211/agg-rx.c22
-rw-r--r--net/netfilter/core.c147
-rw-r--r--net/netfilter/nf_conntrack_expect.c2
-rw-r--r--net/netfilter/nf_nat_core.c17
-rw-r--r--net/netfilter/nfnetlink.c6
-rw-r--r--net/openvswitch/actions.c1
-rw-r--r--net/openvswitch/conntrack.c58
-rw-r--r--net/openvswitch/datapath.c7
-rw-r--r--net/openvswitch/datapath.h2
-rw-r--r--net/packet/af_packet.c21
-rw-r--r--net/rds/ib_recv.c5
-rw-r--r--net/rds/send.c6
-rw-r--r--net/rxrpc/call_accept.c1
-rw-r--r--net/sched/act_api.c4
-rw-r--r--net/sched/act_ipt.c24
-rw-r--r--net/sched/cls_api.c2
-rw-r--r--net/sched/sch_api.c3
-rw-r--r--net/sched/sch_atm.c4
-rw-r--r--net/sched/sch_cbq.c4
-rw-r--r--net/sched/sch_hfsc.c12
-rw-r--r--net/sched/sch_htb.c4
-rw-r--r--net/sched/sch_sfq.c5
-rw-r--r--net/sctp/ipv6.c2
-rw-r--r--net/sctp/sm_make_chunk.c4
-rw-r--r--net/socket.c5
-rw-r--r--net/sunrpc/xprtsock.c2
-rw-r--r--net/tipc/bearer.c2
-rw-r--r--net/tipc/msg.c1
-rw-r--r--net/tipc/netlink_compat.c6
-rw-r--r--net/tipc/node.c4
-rw-r--r--net/unix/af_unix.c5
-rw-r--r--samples/bpf/tcbpf2_kern.c4
-rwxr-xr-xsamples/bpf/test_tunnel_bpf.sh1
-rw-r--r--scripts/Kbuild.include7
-rw-r--r--scripts/Makefile.asm-generic4
-rw-r--r--scripts/Makefile.build8
-rw-r--r--scripts/Makefile.dtbinst4
-rw-r--r--scripts/basic/Makefile2
-rw-r--r--scripts/basic/fixdep.c6
-rwxr-xr-xscripts/dtc/dtx_diff2
-rwxr-xr-xscripts/get_maintainer.pl91
-rw-r--r--scripts/parse-maintainers.pl128
-rw-r--r--security/keys/internal.h2
-rw-r--r--sound/core/seq/Kconfig4
-rw-r--r--sound/core/seq/seq_clientmgr.c13
-rw-r--r--sound/core/seq/seq_queue.c14
-rw-r--r--sound/core/seq/seq_queue.h2
-rw-r--r--sound/pci/emu10k1/emufx.c14
-rw-r--r--sound/pci/fm801.c4
-rw-r--r--sound/pci/hda/patch_conexant.c1
-rw-r--r--sound/pci/hda/patch_hdmi.c27
-rw-r--r--sound/pci/hda/patch_realtek.c146
-rw-r--r--sound/soc/codecs/msm8916-wcd-analog.c2
-rw-r--r--sound/soc/codecs/rt5663.c18
-rw-r--r--sound/soc/codecs/rt5665.c4
-rw-r--r--sound/soc/codecs/rt5665.h4
-rw-r--r--sound/soc/codecs/sgtl5000.c4
-rw-r--r--sound/soc/fsl/imx-ssi.c4
-rw-r--r--sound/soc/generic/audio-graph-card.c10
-rw-r--r--sound/soc/generic/audio-graph-scu-card.c15
-rw-r--r--sound/soc/generic/simple-card-utils.c8
-rw-r--r--sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c17
-rw-r--r--sound/soc/intel/skylake/skl-messages.c8
-rw-r--r--sound/soc/intel/skylake/skl.c2
-rw-r--r--sound/soc/pxa/Kconfig1
-rw-r--r--sound/soc/samsung/odroid.c6
-rw-r--r--sound/soc/sh/hac.c2
-rw-r--r--sound/soc/soc-core.c27
-rw-r--r--sound/soc/soc-pcm.c36
-rw-r--r--sound/soc/ux500/mop500.c4
-rw-r--r--sound/usb/mixer.c2
-rw-r--r--sound/usb/mixer.h1
-rw-r--r--sound/usb/mixer_quirks.c6
-rw-r--r--sound/usb/quirks.c5
-rw-r--r--tools/build/feature/test-bpf.c2
-rwxr-xr-xtools/kvm/kvm_stat/kvm_stat22
-rw-r--r--tools/lib/bpf/bpf.c7
-rw-r--r--tools/lib/bpf/bpf.h2
-rw-r--r--tools/lib/bpf/libbpf.c3
-rw-r--r--tools/perf/ui/browser.c2
-rw-r--r--tools/perf/util/evsel.c8
-rw-r--r--tools/perf/util/machine.c2
-rw-r--r--tools/testing/selftests/bpf/test_align.c2
-rw-r--r--tools/testing/selftests/bpf/test_pkt_md_access.c11
-rw-r--r--tools/testing/selftests/bpf/test_progs.c8
-rw-r--r--tools/testing/selftests/bpf/test_verifier.c527
-rw-r--r--tools/testing/selftests/futex/Makefile2
-rwxr-xr-x[-rw-r--r--]tools/testing/selftests/kmod/kmod.sh4
-rwxr-xr-x[-rw-r--r--]tools/testing/selftests/sysctl/sysctl.sh0
-rw-r--r--tools/testing/selftests/timers/freq-step.c7
-rw-r--r--virt/kvm/arm/mmu.c4
-rw-r--r--virt/kvm/arm/pmu.c43
-rw-r--r--virt/kvm/arm/vgic/vgic-init.c3
-rw-r--r--virt/kvm/arm/vgic/vgic-its.c1
-rw-r--r--virt/kvm/arm/vgic/vgic-mmio-v3.c4
-rw-r--r--virt/kvm/kvm_main.c46
1493 files changed, 27215 insertions, 23546 deletions
diff --git a/Documentation/admin-guide/pm/cpufreq.rst b/Documentation/admin-guide/pm/cpufreq.rst
index 463cf7e73db8..7af83a92d2d6 100644
--- a/Documentation/admin-guide/pm/cpufreq.rst
+++ b/Documentation/admin-guide/pm/cpufreq.rst
@@ -237,6 +237,14 @@ are the following:
237 This attribute is not present if the scaling driver in use does not 237 This attribute is not present if the scaling driver in use does not
238 support it. 238 support it.
239 239
240``cpuinfo_cur_freq``
241 Current frequency of the CPUs belonging to this policy as obtained from
242 the hardware (in KHz).
243
244 This is expected to be the frequency the hardware actually runs at.
245 If that frequency cannot be determined, this attribute should not
246 be present.
247
240``cpuinfo_max_freq`` 248``cpuinfo_max_freq``
241 Maximum possible operating frequency the CPUs belonging to this policy 249 Maximum possible operating frequency the CPUs belonging to this policy
242 can run at (in kHz). 250 can run at (in kHz).
diff --git a/Documentation/device-mapper/dm-raid.txt b/Documentation/device-mapper/dm-raid.txt
index 7e06e65586d4..4a0a7469fdd7 100644
--- a/Documentation/device-mapper/dm-raid.txt
+++ b/Documentation/device-mapper/dm-raid.txt
@@ -343,3 +343,4 @@ Version History
3431.11.0 Fix table line argument order 3431.11.0 Fix table line argument order
344 (wrong raid10_copies/raid10_format sequence) 344 (wrong raid10_copies/raid10_format sequence)
3451.11.1 Add raid4/5/6 journal write-back support via journal_mode option 3451.11.1 Add raid4/5/6 journal write-back support via journal_mode option
3461.12.1 fix for MD deadlock between mddev_suspend() and md_write_start() available
diff --git a/Documentation/devicetree/bindings/ata/sata_rcar.txt b/Documentation/devicetree/bindings/ata/sata_rcar.txt
index 0764f9ab63dc..e20eac7a3087 100644
--- a/Documentation/devicetree/bindings/ata/sata_rcar.txt
+++ b/Documentation/devicetree/bindings/ata/sata_rcar.txt
@@ -1,14 +1,22 @@
1* Renesas R-Car SATA 1* Renesas R-Car SATA
2 2
3Required properties: 3Required properties:
4- compatible : should contain one of the following: 4- compatible : should contain one or more of the following:
5 - "renesas,sata-r8a7779" for R-Car H1 5 - "renesas,sata-r8a7779" for R-Car H1
6 ("renesas,rcar-sata" is deprecated)
7 - "renesas,sata-r8a7790-es1" for R-Car H2 ES1 6 - "renesas,sata-r8a7790-es1" for R-Car H2 ES1
8 - "renesas,sata-r8a7790" for R-Car H2 other than ES1 7 - "renesas,sata-r8a7790" for R-Car H2 other than ES1
9 - "renesas,sata-r8a7791" for R-Car M2-W 8 - "renesas,sata-r8a7791" for R-Car M2-W
10 - "renesas,sata-r8a7793" for R-Car M2-N 9 - "renesas,sata-r8a7793" for R-Car M2-N
11 - "renesas,sata-r8a7795" for R-Car H3 10 - "renesas,sata-r8a7795" for R-Car H3
11 - "renesas,rcar-gen2-sata" for a generic R-Car Gen2 compatible device
12 - "renesas,rcar-gen3-sata" for a generic R-Car Gen3 compatible device
13 - "renesas,rcar-sata" is deprecated
14
15 When compatible with the generic version nodes
16 must list the SoC-specific version corresponding
17 to the platform first followed by the generic
18 version.
19
12- reg : address and length of the SATA registers; 20- reg : address and length of the SATA registers;
13- interrupts : must consist of one interrupt specifier. 21- interrupts : must consist of one interrupt specifier.
14- clocks : must contain a reference to the functional clock. 22- clocks : must contain a reference to the functional clock.
@@ -16,7 +24,7 @@ Required properties:
16Example: 24Example:
17 25
18sata0: sata@ee300000 { 26sata0: sata@ee300000 {
19 compatible = "renesas,sata-r8a7791"; 27 compatible = "renesas,sata-r8a7791", "renesas,rcar-gen2-sata";
20 reg = <0 0xee300000 0 0x2000>; 28 reg = <0 0xee300000 0 0x2000>;
21 interrupt-parent = <&gic>; 29 interrupt-parent = <&gic>;
22 interrupts = <0 105 IRQ_TYPE_LEVEL_HIGH>; 30 interrupts = <0 105 IRQ_TYPE_LEVEL_HIGH>;
diff --git a/Documentation/devicetree/bindings/crypto/inside-secure-safexcel.txt b/Documentation/devicetree/bindings/crypto/inside-secure-safexcel.txt
index f69773f4252b..941bb6a6fb13 100644
--- a/Documentation/devicetree/bindings/crypto/inside-secure-safexcel.txt
+++ b/Documentation/devicetree/bindings/crypto/inside-secure-safexcel.txt
@@ -8,7 +8,6 @@ Required properties:
8 8
9Optional properties: 9Optional properties:
10- clocks: Reference to the crypto engine clock. 10- clocks: Reference to the crypto engine clock.
11- dma-mask: The address mask limitation. Defaults to 64.
12 11
13Example: 12Example:
14 13
@@ -24,6 +23,5 @@ Example:
24 interrupt-names = "mem", "ring0", "ring1", "ring2", "ring3", 23 interrupt-names = "mem", "ring0", "ring1", "ring2", "ring3",
25 "eip"; 24 "eip";
26 clocks = <&cpm_syscon0 1 26>; 25 clocks = <&cpm_syscon0 1 26>;
27 dma-mask = <0xff 0xffffffff>;
28 status = "disabled"; 26 status = "disabled";
29 }; 27 };
diff --git a/Documentation/devicetree/bindings/gpio/gpio-exar.txt b/Documentation/devicetree/bindings/gpio/gpio-exar.txt
new file mode 100644
index 000000000000..4540d61824af
--- /dev/null
+++ b/Documentation/devicetree/bindings/gpio/gpio-exar.txt
@@ -0,0 +1,5 @@
1Exportable MPIO interface of Exar UART chips
2
3Required properties of the device:
4 - exar,first-pin: first exportable pins (0..15)
5 - ngpios: number of exportable pins (1..16)
diff --git a/Documentation/devicetree/bindings/gpu/arm,mali-midgard.txt b/Documentation/devicetree/bindings/gpu/arm,mali-midgard.txt
index d3b6e1a4713a..5aa5926029ee 100644
--- a/Documentation/devicetree/bindings/gpu/arm,mali-midgard.txt
+++ b/Documentation/devicetree/bindings/gpu/arm,mali-midgard.txt
@@ -40,7 +40,7 @@ Optional properties:
40Example for a Mali-T760: 40Example for a Mali-T760:
41 41
42gpu@ffa30000 { 42gpu@ffa30000 {
43 compatible = "rockchip,rk3288-mali", "arm,mali-t760", "arm,mali-midgard"; 43 compatible = "rockchip,rk3288-mali", "arm,mali-t760";
44 reg = <0xffa30000 0x10000>; 44 reg = <0xffa30000 0x10000>;
45 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>, 45 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
46 <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, 46 <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
diff --git a/Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt b/Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt
index aad98442788b..a58c173b7ab9 100644
--- a/Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt
+++ b/Documentation/devicetree/bindings/mmc/exynos-dw-mshc.txt
@@ -78,7 +78,6 @@ Example:
78 }; 78 };
79 79
80 dwmmc0@12200000 { 80 dwmmc0@12200000 {
81 num-slots = <1>;
82 cap-mmc-highspeed; 81 cap-mmc-highspeed;
83 cap-sd-highspeed; 82 cap-sd-highspeed;
84 broken-cd; 83 broken-cd;
diff --git a/Documentation/devicetree/bindings/mmc/img-dw-mshc.txt b/Documentation/devicetree/bindings/mmc/img-dw-mshc.txt
index 85de99fcaa2f..c54e577eea07 100644
--- a/Documentation/devicetree/bindings/mmc/img-dw-mshc.txt
+++ b/Documentation/devicetree/bindings/mmc/img-dw-mshc.txt
@@ -24,6 +24,5 @@ Example:
24 24
25 fifo-depth = <0x20>; 25 fifo-depth = <0x20>;
26 bus-width = <4>; 26 bus-width = <4>;
27 num-slots = <1>;
28 disable-wp; 27 disable-wp;
29 }; 28 };
diff --git a/Documentation/devicetree/bindings/mmc/k3-dw-mshc.txt b/Documentation/devicetree/bindings/mmc/k3-dw-mshc.txt
index 8af1afcb86dc..07242d141773 100644
--- a/Documentation/devicetree/bindings/mmc/k3-dw-mshc.txt
+++ b/Documentation/devicetree/bindings/mmc/k3-dw-mshc.txt
@@ -36,7 +36,6 @@ Example:
36 36
37 /* Board portion */ 37 /* Board portion */
38 dwmmc0@fcd03000 { 38 dwmmc0@fcd03000 {
39 num-slots = <1>;
40 vmmc-supply = <&ldo12>; 39 vmmc-supply = <&ldo12>;
41 fifo-depth = <0x100>; 40 fifo-depth = <0x100>;
42 pinctrl-names = "default"; 41 pinctrl-names = "default";
@@ -52,7 +51,6 @@ Example:
52 51
53 dwmmc_1: dwmmc1@f723e000 { 52 dwmmc_1: dwmmc1@f723e000 {
54 compatible = "hisilicon,hi6220-dw-mshc"; 53 compatible = "hisilicon,hi6220-dw-mshc";
55 num-slots = <0x1>;
56 bus-width = <0x4>; 54 bus-width = <0x4>;
57 disable-wp; 55 disable-wp;
58 cap-sd-highspeed; 56 cap-sd-highspeed;
diff --git a/Documentation/devicetree/bindings/mmc/synopsys-dw-mshc.txt b/Documentation/devicetree/bindings/mmc/synopsys-dw-mshc.txt
index 9cb55ca57461..ef3e5f14067a 100644
--- a/Documentation/devicetree/bindings/mmc/synopsys-dw-mshc.txt
+++ b/Documentation/devicetree/bindings/mmc/synopsys-dw-mshc.txt
@@ -12,12 +12,12 @@ Required Properties:
12* #address-cells: should be 1. 12* #address-cells: should be 1.
13* #size-cells: should be 0. 13* #size-cells: should be 0.
14 14
15# Slots: The slot specific information are contained within child-nodes with 15# Slots (DEPRECATED): The slot specific information are contained within
16 each child-node representing a supported slot. There should be atleast one 16 child-nodes with each child-node representing a supported slot. There should
17 child node representing a card slot. The name of the child node representing 17 be atleast one child node representing a card slot. The name of the child node
18 the slot is recommended to be slot@n where n is the unique number of the slot 18 representing the slot is recommended to be slot@n where n is the unique number
19 connected to the controller. The following are optional properties which 19 of the slot connected to the controller. The following are optional properties
20 can be included in the slot child node. 20 which can be included in the slot child node.
21 21
22 * reg: specifies the physical slot number. The valid values of this 22 * reg: specifies the physical slot number. The valid values of this
23 property is 0 to (num-slots -1), where num-slots is the value 23 property is 0 to (num-slots -1), where num-slots is the value
@@ -63,7 +63,7 @@ Optional properties:
63 clock(cclk_out). If it's not specified, max is 200MHZ and min is 400KHz by default. 63 clock(cclk_out). If it's not specified, max is 200MHZ and min is 400KHz by default.
64 (Use the "max-frequency" instead of "clock-freq-min-max".) 64 (Use the "max-frequency" instead of "clock-freq-min-max".)
65 65
66* num-slots: specifies the number of slots supported by the controller. 66* num-slots (DEPRECATED): specifies the number of slots supported by the controller.
67 The number of physical slots actually used could be equal or less than the 67 The number of physical slots actually used could be equal or less than the
68 value specified by num-slots. If this property is not specified, the value 68 value specified by num-slots. If this property is not specified, the value
69 of num-slot property is assumed to be 1. 69 of num-slot property is assumed to be 1.
@@ -124,7 +124,6 @@ board specific portions as listed below.
124 dwmmc0@12200000 { 124 dwmmc0@12200000 {
125 clock-frequency = <400000000>; 125 clock-frequency = <400000000>;
126 clock-freq-min-max = <400000 200000000>; 126 clock-freq-min-max = <400000 200000000>;
127 num-slots = <1>;
128 broken-cd; 127 broken-cd;
129 fifo-depth = <0x80>; 128 fifo-depth = <0x80>;
130 card-detect-delay = <200>; 129 card-detect-delay = <200>;
@@ -139,7 +138,6 @@ board specific portions as listed below.
139 dwmmc0@12200000 { 138 dwmmc0@12200000 {
140 clock-frequency = <400000000>; 139 clock-frequency = <400000000>;
141 clock-freq-min-max = <400000 200000000>; 140 clock-freq-min-max = <400000 200000000>;
142 num-slots = <1>;
143 broken-cd; 141 broken-cd;
144 fifo-depth = <0x80>; 142 fifo-depth = <0x80>;
145 card-detect-delay = <200>; 143 card-detect-delay = <200>;
diff --git a/Documentation/devicetree/bindings/mmc/zx-dw-mshc.txt b/Documentation/devicetree/bindings/mmc/zx-dw-mshc.txt
index eaade0e5adeb..906819a90c2b 100644
--- a/Documentation/devicetree/bindings/mmc/zx-dw-mshc.txt
+++ b/Documentation/devicetree/bindings/mmc/zx-dw-mshc.txt
@@ -25,7 +25,6 @@ Example:
25 clock-frequency = <50000000>; 25 clock-frequency = <50000000>;
26 clocks = <&topcrm SD0_AHB>, <&topcrm SD0_WCLK>; 26 clocks = <&topcrm SD0_AHB>, <&topcrm SD0_WCLK>;
27 clock-names = "biu", "ciu"; 27 clock-names = "biu", "ciu";
28 num-slots = <1>;
29 max-frequency = <50000000>; 28 max-frequency = <50000000>;
30 cap-sdio-irq; 29 cap-sdio-irq;
31 cap-sd-highspeed; 30 cap-sd-highspeed;
diff --git a/Documentation/devicetree/bindings/net/brcm,amac.txt b/Documentation/devicetree/bindings/net/brcm,amac.txt
index 2fefa1a44afd..ad16c1f481f7 100644
--- a/Documentation/devicetree/bindings/net/brcm,amac.txt
+++ b/Documentation/devicetree/bindings/net/brcm,amac.txt
@@ -11,6 +11,7 @@ Required properties:
11 - reg-names: Names of the registers. 11 - reg-names: Names of the registers.
12 "amac_base": Address and length of the GMAC registers 12 "amac_base": Address and length of the GMAC registers
13 "idm_base": Address and length of the GMAC IDM registers 13 "idm_base": Address and length of the GMAC IDM registers
14 (required for NSP and Northstar2)
14 "nicpm_base": Address and length of the NIC Port Manager 15 "nicpm_base": Address and length of the NIC Port Manager
15 registers (required for Northstar2) 16 registers (required for Northstar2)
16 - interrupts: Interrupt number 17 - interrupts: Interrupt number
diff --git a/Documentation/devicetree/bindings/net/brcm,bgmac-nsp.txt b/Documentation/devicetree/bindings/net/brcm,bgmac-nsp.txt
deleted file mode 100644
index 022946caa7e2..000000000000
--- a/Documentation/devicetree/bindings/net/brcm,bgmac-nsp.txt
+++ /dev/null
@@ -1,24 +0,0 @@
1Broadcom GMAC Ethernet Controller Device Tree Bindings
2-------------------------------------------------------------
3
4Required properties:
5 - compatible: "brcm,bgmac-nsp"
6 - reg: Address and length of the GMAC registers,
7 Address and length of the GMAC IDM registers
8 - reg-names: Names of the registers. Must have both "gmac_base" and
9 "idm_base"
10 - interrupts: Interrupt number
11
12Optional properties:
13- mac-address: See ethernet.txt file in the same directory
14
15Examples:
16
17gmac0: ethernet@18022000 {
18 compatible = "brcm,bgmac-nsp";
19 reg = <0x18022000 0x1000>,
20 <0x18110000 0x1000>;
21 reg-names = "gmac_base", "idm_base";
22 interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>;
23 status = "disabled";
24};
diff --git a/Documentation/devicetree/bindings/nvmem/rockchip-efuse.txt b/Documentation/devicetree/bindings/nvmem/rockchip-efuse.txt
index 194926f77194..1ff02afdc55a 100644
--- a/Documentation/devicetree/bindings/nvmem/rockchip-efuse.txt
+++ b/Documentation/devicetree/bindings/nvmem/rockchip-efuse.txt
@@ -4,7 +4,7 @@ Required properties:
4- compatible: Should be one of the following. 4- compatible: Should be one of the following.
5 - "rockchip,rk3066a-efuse" - for RK3066a SoCs. 5 - "rockchip,rk3066a-efuse" - for RK3066a SoCs.
6 - "rockchip,rk3188-efuse" - for RK3188 SoCs. 6 - "rockchip,rk3188-efuse" - for RK3188 SoCs.
7 - "rockchip,rk322x-efuse" - for RK322x SoCs. 7 - "rockchip,rk3228-efuse" - for RK3228 SoCs.
8 - "rockchip,rk3288-efuse" - for RK3288 SoCs. 8 - "rockchip,rk3288-efuse" - for RK3288 SoCs.
9 - "rockchip,rk3399-efuse" - for RK3399 SoCs. 9 - "rockchip,rk3399-efuse" - for RK3399 SoCs.
10- reg: Should contain the registers location and exact eFuse size 10- reg: Should contain the registers location and exact eFuse size
diff --git a/Documentation/devicetree/bindings/ptp/brcm,ptp-dte.txt b/Documentation/devicetree/bindings/ptp/brcm,ptp-dte.txt
index 07590bcdad15..7c04e22a5d6a 100644
--- a/Documentation/devicetree/bindings/ptp/brcm,ptp-dte.txt
+++ b/Documentation/devicetree/bindings/ptp/brcm,ptp-dte.txt
@@ -1,13 +1,20 @@
1* Broadcom Digital Timing Engine(DTE) based PTP clock driver 1* Broadcom Digital Timing Engine(DTE) based PTP clock
2 2
3Required properties: 3Required properties:
4- compatible: should be "brcm,ptp-dte" 4- compatible: should contain the core compatibility string
5 and the SoC compatibility string. The SoC
6 compatibility string is to handle SoC specific
7 hardware differences.
8 Core compatibility string:
9 "brcm,ptp-dte"
10 SoC compatibility strings:
11 "brcm,iproc-ptp-dte" - for iproc based SoC's
5- reg: address and length of the DTE block's NCO registers 12- reg: address and length of the DTE block's NCO registers
6 13
7Example: 14Example:
8 15
9ptp_dte: ptp_dte@180af650 { 16ptp: ptp-dte@180af650 {
10 compatible = "brcm,ptp-dte"; 17 compatible = "brcm,iproc-ptp-dte", "brcm,ptp-dte";
11 reg = <0x180af650 0x10>; 18 reg = <0x180af650 0x10>;
12 status = "okay"; 19 status = "okay";
13}; 20};
diff --git a/Documentation/devicetree/bindings/serial/fsl-imx-uart.txt b/Documentation/devicetree/bindings/serial/fsl-imx-uart.txt
index e6b572409cf5..574c3a2c77d5 100644
--- a/Documentation/devicetree/bindings/serial/fsl-imx-uart.txt
+++ b/Documentation/devicetree/bindings/serial/fsl-imx-uart.txt
@@ -9,7 +9,6 @@ Optional properties:
9- fsl,irda-mode : Indicate the uart supports irda mode 9- fsl,irda-mode : Indicate the uart supports irda mode
10- fsl,dte-mode : Indicate the uart works in DTE mode. The uart works 10- fsl,dte-mode : Indicate the uart works in DTE mode. The uart works
11 in DCE mode by default. 11 in DCE mode by default.
12- fsl,dma-size : Indicate the size of the DMA buffer and its periods
13 12
14Please check Documentation/devicetree/bindings/serial/serial.txt 13Please check Documentation/devicetree/bindings/serial/serial.txt
15for the complete list of generic properties. 14for the complete list of generic properties.
@@ -29,5 +28,4 @@ uart1: serial@73fbc000 {
29 interrupts = <31>; 28 interrupts = <31>;
30 uart-has-rtscts; 29 uart-has-rtscts;
31 fsl,dte-mode; 30 fsl,dte-mode;
32 fsl,dma-size = <1024 4>;
33}; 31};
diff --git a/Documentation/fb/efifb.txt b/Documentation/fb/efifb.txt
index a59916c29b33..1a85c1bdaf38 100644
--- a/Documentation/fb/efifb.txt
+++ b/Documentation/fb/efifb.txt
@@ -27,5 +27,11 @@ You have to add the following kernel parameters in your elilo.conf:
27 Macbook Pro 17", iMac 20" : 27 Macbook Pro 17", iMac 20" :
28 video=efifb:i20 28 video=efifb:i20
29 29
30Accepted options:
31
32nowc Don't map the framebuffer write combined. This can be used
33 to workaround side-effects and slowdowns on other CPU cores
34 when large amounts of console data are written.
35
30-- 36--
31Edgar Hucek <gimli@dark-green.com> 37Edgar Hucek <gimli@dark-green.com>
diff --git a/Documentation/gpio/gpio-legacy.txt b/Documentation/gpio/gpio-legacy.txt
index b34fd94f7089..5eacc147ea87 100644
--- a/Documentation/gpio/gpio-legacy.txt
+++ b/Documentation/gpio/gpio-legacy.txt
@@ -459,7 +459,7 @@ pin controller?
459 459
460This is done by registering "ranges" of pins, which are essentially 460This is done by registering "ranges" of pins, which are essentially
461cross-reference tables. These are described in 461cross-reference tables. These are described in
462Documentation/pinctrl.txt 462Documentation/driver-api/pinctl.rst
463 463
464While the pin allocation is totally managed by the pinctrl subsystem, 464While the pin allocation is totally managed by the pinctrl subsystem,
465gpio (under gpiolib) is still maintained by gpio drivers. It may happen 465gpio (under gpiolib) is still maintained by gpio drivers. It may happen
diff --git a/Documentation/media/kapi/dtv-core.rst b/Documentation/media/kapi/dtv-core.rst
index ff86bf0abeae..de9a228aca8a 100644
--- a/Documentation/media/kapi/dtv-core.rst
+++ b/Documentation/media/kapi/dtv-core.rst
@@ -1,6 +1,31 @@
1Digital TV (DVB) devices 1Digital TV (DVB) devices
2------------------------ 2------------------------
3 3
4Digital TV devices are implemented by several different drivers:
5
6- A bridge driver that is responsible to talk with the bus where the other
7 devices are connected (PCI, USB, SPI), bind to the other drivers and
8 implement the digital demux logic (either in software or in hardware);
9
10- Frontend drivers that are usually implemented as two separate drivers:
11
12 - A tuner driver that implements the logic with commands the part of the
13 hardware with is reponsible to tune into a digital TV transponder or
14 physical channel. The output of a tuner is usually a baseband or
15 Intermediate Frequency (IF) signal;
16
17 - A demodulator driver (a.k.a "demod") that implements the logic with
18 commands the digital TV decoding hardware. The output of a demod is
19 a digital stream, with multiple audio, video and data channels typically
20 multiplexed using MPEG Transport Stream [#f1]_.
21
22On most hardware, the frontend drivers talk with the bridge driver using an
23I2C bus.
24
25.. [#f1] Some standards use TCP/IP for multiplexing data, like DVB-H (an
26 abandoned standard, not used anymore) and ATSC version 3.0 current
27 proposals. Currently, the DVB subsystem doesn't implement those standards.
28
4Digital TV Common functions 29Digital TV Common functions
5--------------------------- 30---------------------------
6 31
@@ -55,8 +80,141 @@ Digital TV Frontend
55The Digital TV Frontend kABI defines a driver-internal interface for 80The Digital TV Frontend kABI defines a driver-internal interface for
56registering low-level, hardware specific driver to a hardware independent 81registering low-level, hardware specific driver to a hardware independent
57frontend layer. It is only of interest for Digital TV device driver writers. 82frontend layer. It is only of interest for Digital TV device driver writers.
58The header file for this API is named dvb_frontend.h and located in 83The header file for this API is named ``dvb_frontend.h`` and located in
59drivers/media/dvb-core. 84``drivers/media/dvb-core``.
85
86Demodulator driver
87^^^^^^^^^^^^^^^^^^
88
89The demodulator driver is responsible to talk with the decoding part of the
90hardware. Such driver should implement :c:type:`dvb_frontend_ops`, with
91tells what type of digital TV standards are supported, and points to a
92series of functions that allow the DVB core to command the hardware via
93the code under ``drivers/media/dvb-core/dvb_frontend.c``.
94
95A typical example of such struct in a driver ``foo`` is::
96
97 static struct dvb_frontend_ops foo_ops = {
98 .delsys = { SYS_DVBT, SYS_DVBT2, SYS_DVBC_ANNEX_A },
99 .info = {
100 .name = "foo DVB-T/T2/C driver",
101 .caps = FE_CAN_FEC_1_2 |
102 FE_CAN_FEC_2_3 |
103 FE_CAN_FEC_3_4 |
104 FE_CAN_FEC_5_6 |
105 FE_CAN_FEC_7_8 |
106 FE_CAN_FEC_AUTO |
107 FE_CAN_QPSK |
108 FE_CAN_QAM_16 |
109 FE_CAN_QAM_32 |
110 FE_CAN_QAM_64 |
111 FE_CAN_QAM_128 |
112 FE_CAN_QAM_256 |
113 FE_CAN_QAM_AUTO |
114 FE_CAN_TRANSMISSION_MODE_AUTO |
115 FE_CAN_GUARD_INTERVAL_AUTO |
116 FE_CAN_HIERARCHY_AUTO |
117 FE_CAN_MUTE_TS |
118 FE_CAN_2G_MODULATION,
119 .frequency_min = 42000000, /* Hz */
120 .frequency_max = 1002000000, /* Hz */
121 .symbol_rate_min = 870000,
122 .symbol_rate_max = 11700000
123 },
124 .init = foo_init,
125 .sleep = foo_sleep,
126 .release = foo_release,
127 .set_frontend = foo_set_frontend,
128 .get_frontend = foo_get_frontend,
129 .read_status = foo_get_status_and_stats,
130 .tune = foo_tune,
131 .i2c_gate_ctrl = foo_i2c_gate_ctrl,
132 .get_frontend_algo = foo_get_algo,
133 };
134
135A typical example of such struct in a driver ``bar`` meant to be used on
136Satellite TV reception is::
137
138 static const struct dvb_frontend_ops bar_ops = {
139 .delsys = { SYS_DVBS, SYS_DVBS2 },
140 .info = {
141 .name = "Bar DVB-S/S2 demodulator",
142 .frequency_min = 500000, /* KHz */
143 .frequency_max = 2500000, /* KHz */
144 .frequency_stepsize = 0,
145 .symbol_rate_min = 1000000,
146 .symbol_rate_max = 45000000,
147 .symbol_rate_tolerance = 500,
148 .caps = FE_CAN_INVERSION_AUTO |
149 FE_CAN_FEC_AUTO |
150 FE_CAN_QPSK,
151 },
152 .init = bar_init,
153 .sleep = bar_sleep,
154 .release = bar_release,
155 .set_frontend = bar_set_frontend,
156 .get_frontend = bar_get_frontend,
157 .read_status = bar_get_status_and_stats,
158 .i2c_gate_ctrl = bar_i2c_gate_ctrl,
159 .get_frontend_algo = bar_get_algo,
160 .tune = bar_tune,
161
162 /* Satellite-specific */
163 .diseqc_send_master_cmd = bar_send_diseqc_msg,
164 .diseqc_send_burst = bar_send_burst,
165 .set_tone = bar_set_tone,
166 .set_voltage = bar_set_voltage,
167 };
168
169.. note::
170
171 #) For satellite digital TV standards (DVB-S, DVB-S2, ISDB-S), the
172 frequencies are specified in kHz, while, for terrestrial and cable
173 standards, they're specified in Hz. Due to that, if the same frontend
174 supports both types, you'll need to have two separate
175 :c:type:`dvb_frontend_ops` structures, one for each standard.
176 #) The ``.i2c_gate_ctrl`` field is present only when the hardware has
177 allows controlling an I2C gate (either directly of via some GPIO pin),
178 in order to remove the tuner from the I2C bus after a channel is
179 tuned.
180 #) All new drivers should implement the
181 :ref:`DVBv5 statistics <dvbv5_stats>` via ``.read_status``.
182 Yet, there are a number of callbacks meant to get statistics for
183 signal strength, S/N and UCB. Those are there to provide backward
184 compatibility with legacy applications that don't support the DVBv5
185 API. Implementing those callbacks are optional. Those callbacks may be
186 removed in the future, after we have all existing drivers supporting
187 DVBv5 stats.
188 #) Other callbacks are required for satellite TV standards, in order to
189 control LNBf and DiSEqC: ``.diseqc_send_master_cmd``,
190 ``.diseqc_send_burst``, ``.set_tone``, ``.set_voltage``.
191
192.. |delta| unicode:: U+00394
193
194The ``drivers/media/dvb-core/dvb_frontend.c`` has a kernel thread with is
195responsible for tuning the device. It supports multiple algoritms to
196detect a channel, as defined at enum :c:func:`dvbfe_algo`.
197
198The algorithm to be used is obtained via ``.get_frontend_algo``. If the driver
199doesn't fill its field at struct :c:type:`dvb_frontend_ops`, it will default to
200``DVBFE_ALGO_SW``, meaning that the dvb-core will do a zigzag when tuning,
201e. g. it will try first to use the specified center frequency ``f``,
202then, it will do ``f`` + |delta|, ``f`` - |delta|, ``f`` + 2 x |delta|,
203``f`` - 2 x |delta| and so on.
204
205If the hardware has internally a some sort of zigzag algorithm, you should
206define a ``.get_frontend_algo`` function that would return ``DVBFE_ALGO_HW``.
207
208.. note::
209
210 The core frontend support also supports
211 a third type (``DVBFE_ALGO_CUSTOM``), in order to allow the driver to
212 define its own hardware-assisted algorithm. Very few hardware need to
213 use it nowadays. Using ``DVBFE_ALGO_CUSTOM`` require to provide other
214 function callbacks at struct :c:type:`dvb_frontend_ops`.
215
216Attaching frontend driver to the bridge driver
217^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
60 218
61Before using the Digital TV frontend core, the bridge driver should attach 219Before using the Digital TV frontend core, the bridge driver should attach
62the frontend demod, tuner and SEC devices and call 220the frontend demod, tuner and SEC devices and call
@@ -74,6 +232,287 @@ part of their handler for :c:type:`device_driver`.\ ``resume()``.
74 232
75A few other optional functions are provided to handle some special cases. 233A few other optional functions are provided to handle some special cases.
76 234
235.. _dvbv5_stats:
236
237Digital TV Frontend statistics
238~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
239
240Introduction
241^^^^^^^^^^^^
242
243Digital TV frontends provide a range of
244:ref:`statistics <frontend-stat-properties>` meant to help tuning the device
245and measuring the quality of service.
246
247For each statistics measurement, the driver should set the type of scale used,
248or ``FE_SCALE_NOT_AVAILABLE`` if the statistics is not available on a given
249time. Drivers should also provide the number of statistics for each type.
250that's usually 1 for most video standards [#f2]_.
251
252Drivers should initialize each statistic counters with length and
253scale at its init code. For example, if the frontend provides signal
254strength, it should have, on its init code::
255
256 struct dtv_frontend_properties *c = &state->fe.dtv_property_cache;
257
258 c->strength.len = 1;
259 c->strength.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
260
261And, when the statistics got updated, set the scale::
262
263 c->strength.stat[0].scale = FE_SCALE_DECIBEL;
264 c->strength.stat[0].uvalue = strength;
265
266.. [#f2] For ISDB-T, it may provide both a global statistics and a per-layer
267 set of statistics. On such cases, len should be equal to 4. The first
268 value corresponds to the global stat; the other ones to each layer, e. g.:
269
270 - c->cnr.stat[0] for global S/N carrier ratio,
271 - c->cnr.stat[1] for Layer A S/N carrier ratio,
272 - c->cnr.stat[2] for layer B S/N carrier ratio,
273 - c->cnr.stat[3] for layer C S/N carrier ratio.
274
275.. note:: Please prefer to use ``FE_SCALE_DECIBEL`` instead of
276 ``FE_SCALE_RELATIVE`` for signal strength and CNR measurements.
277
278Groups of statistics
279^^^^^^^^^^^^^^^^^^^^
280
281There are several groups of statistics currently supported:
282
283Signal strength (:ref:`DTV-STAT-SIGNAL-STRENGTH`)
284 - Measures the signal strength level at the analog part of the tuner or
285 demod.
286
287 - Typically obtained from the gain applied to the tuner and/or frontend
288 in order to detect the carrier. When no carrier is detected, the gain is
289 at the maximum value (so, strength is on its minimal).
290
291 - As the gain is visible through the set of registers that adjust the gain,
292 typically, this statistics is always available [#f3]_.
293
294 - Drivers should try to make it available all the times, as this statistics
295 can be used when adjusting an antenna position and to check for troubles
296 at the cabling.
297
298 .. [#f3] On a few devices, the gain keeps floating if no carrier.
299 On such devices, strength report should check first if carrier is
300 detected at the tuner (``FE_HAS_CARRIER``, see :c:type:`fe_status`),
301 and otherwise return the lowest possible value.
302
303Carrier Signal to Noise ratio (:ref:`DTV-STAT-CNR`)
304 - Signal to Noise ratio for the main carrier.
305
306 - Signal to Noise measurement depends on the device. On some hardware, is
307 available when the main carrier is detected. On those hardware, CNR
308 measurement usually comes from the tuner (e. g. after ``FE_HAS_CARRIER``,
309 see :c:type:`fe_status`).
310
311 On other devices, it requires inner FEC decoding,
312 as the frontend measures it indirectly from other parameters (e. g. after
313 ``FE_HAS_VITERBI``, see :c:type:`fe_status`).
314
315 Having it available after inner FEC is more common.
316
317Bit counts post-FEC (:ref:`DTV-STAT-POST-ERROR-BIT-COUNT` and :ref:`DTV-STAT-POST-TOTAL-BIT-COUNT`)
318 - Those counters measure the number of bits and bit errors errors after
319 the forward error correction (FEC) on the inner coding block
320 (after Viterbi, LDPC or other inner code).
321
322 - Due to its nature, those statistics depend on full coding lock
323 (e. g. after ``FE_HAS_SYNC`` or after ``FE_HAS_LOCK``,
324 see :c:type:`fe_status`).
325
326Bit counts pre-FEC (:ref:`DTV-STAT-PRE-ERROR-BIT-COUNT` and :ref:`DTV-STAT-PRE-TOTAL-BIT-COUNT`)
327 - Those counters measure the number of bits and bit errors errors before
328 the forward error correction (FEC) on the inner coding block
329 (before Viterbi, LDPC or other inner code).
330
331 - Not all frontends provide this kind of statistics.
332
333 - Due to its nature, those statistics depend on inner coding lock (e. g.
334 after ``FE_HAS_VITERBI``, see :c:type:`fe_status`).
335
336Block counts (:ref:`DTV-STAT-ERROR-BLOCK-COUNT` and :ref:`DTV-STAT-TOTAL-BLOCK-COUNT`)
337 - Those counters measure the number of blocks and block errors errors after
338 the forward error correction (FEC) on the inner coding block
339 (before Viterbi, LDPC or other inner code).
340
341 - Due to its nature, those statistics depend on full coding lock
342 (e. g. after ``FE_HAS_SYNC`` or after
343 ``FE_HAS_LOCK``, see :c:type:`fe_status`).
344
345.. note:: All counters should be monotonically increased as they're
346 collected from the hardware.
347
348A typical example of the logic that handle status and statistics is::
349
350 static int foo_get_status_and_stats(struct dvb_frontend *fe)
351 {
352 struct foo_state *state = fe->demodulator_priv;
353 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
354
355 int rc;
356 enum fe_status *status;
357
358 /* Both status and strength are always available */
359 rc = foo_read_status(fe, &status);
360 if (rc < 0)
361 return rc;
362
363 rc = foo_read_strength(fe);
364 if (rc < 0)
365 return rc;
366
367 /* Check if CNR is available */
368 if (!(fe->status & FE_HAS_CARRIER))
369 return 0;
370
371 rc = foo_read_cnr(fe);
372 if (rc < 0)
373 return rc;
374
375 /* Check if pre-BER stats are available */
376 if (!(fe->status & FE_HAS_VITERBI))
377 return 0;
378
379 rc = foo_get_pre_ber(fe);
380 if (rc < 0)
381 return rc;
382
383 /* Check if post-BER stats are available */
384 if (!(fe->status & FE_HAS_SYNC))
385 return 0;
386
387 rc = foo_get_post_ber(fe);
388 if (rc < 0)
389 return rc;
390 }
391
392 static const struct dvb_frontend_ops ops = {
393 /* ... */
394 .read_status = foo_get_status_and_stats,
395 };
396
397Statistics collect
398^^^^^^^^^^^^^^^^^^
399
400On almost all frontend hardware, the bit and byte counts are stored by
401the hardware after a certain amount of time or after the total bit/block
402counter reaches a certain value (usually programable), for example, on
403every 1000 ms or after receiving 1,000,000 bits.
404
405So, if you read the registers too soon, you'll end by reading the same
406value as in the previous reading, causing the monotonic value to be
407incremented too often.
408
409Drivers should take the responsibility to avoid too often reads. That
410can be done using two approaches:
411
412if the driver have a bit that indicates when a collected data is ready
413%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
414
415Driver should check such bit before making the statistics available.
416
417An example of such behavior can be found at this code snippet (adapted
418from mb86a20s driver's logic)::
419
420 static int foo_get_pre_ber(struct dvb_frontend *fe)
421 {
422 struct foo_state *state = fe->demodulator_priv;
423 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
424 int rc, bit_error;
425
426 /* Check if the BER measures are already available */
427 rc = foo_read_u8(state, 0x54);
428 if (rc < 0)
429 return rc;
430
431 if (!rc)
432 return 0;
433
434 /* Read Bit Error Count */
435 bit_error = foo_read_u32(state, 0x55);
436 if (bit_error < 0)
437 return bit_error;
438
439 /* Read Total Bit Count */
440 rc = foo_read_u32(state, 0x51);
441 if (rc < 0)
442 return rc;
443
444 c->pre_bit_error.stat[0].scale = FE_SCALE_COUNTER;
445 c->pre_bit_error.stat[0].uvalue += bit_error;
446 c->pre_bit_count.stat[0].scale = FE_SCALE_COUNTER;
447 c->pre_bit_count.stat[0].uvalue += rc;
448
449 return 0;
450 }
451
452If the driver doesn't provide a statistics available check bit
453%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
454
455A few devices, however, may not provide a way to check if the stats are
456available (or the way to check it is unknown). They may not even provide
457a way to directly read the total number of bits or blocks.
458
459On those devices, the driver need to ensure that it won't be reading from
460the register too often and/or estimate the total number of bits/blocks.
461
462On such drivers, a typical routine to get statistics would be like
463(adapted from dib8000 driver's logic)::
464
465 struct foo_state {
466 /* ... */
467
468 unsigned long per_jiffies_stats;
469 }
470
471 static int foo_get_pre_ber(struct dvb_frontend *fe)
472 {
473 struct foo_state *state = fe->demodulator_priv;
474 struct dtv_frontend_properties *c = &fe->dtv_property_cache;
475 int rc, bit_error;
476 u64 bits;
477
478 /* Check if time for stats was elapsed */
479 if (!time_after(jiffies, state->per_jiffies_stats))
480 return 0;
481
482 /* Next stat should be collected in 1000 ms */
483 state->per_jiffies_stats = jiffies + msecs_to_jiffies(1000);
484
485 /* Read Bit Error Count */
486 bit_error = foo_read_u32(state, 0x55);
487 if (bit_error < 0)
488 return bit_error;
489
490 /*
491 * On this particular frontend, there's no register that
492 * would provide the number of bits per 1000ms sample. So,
493 * some function would calculate it based on DTV properties
494 */
495 bits = get_number_of_bits_per_1000ms(fe);
496
497 c->pre_bit_error.stat[0].scale = FE_SCALE_COUNTER;
498 c->pre_bit_error.stat[0].uvalue += bit_error;
499 c->pre_bit_count.stat[0].scale = FE_SCALE_COUNTER;
500 c->pre_bit_count.stat[0].uvalue += bits;
501
502 return 0;
503 }
504
505Please notice that, on both cases, we're getting the statistics using the
506:c:type:`dvb_frontend_ops` ``.read_status`` callback. The rationale is that
507the frontend core will automatically call this function periodically
508(usually, 3 times per second, when the frontend is locked).
509
510That warrants that we won't miss to collect a counter and increment the
511monotonic stats at the right time.
512
513Digital TV Frontend functions and types
514~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
515
77.. kernel-doc:: drivers/media/dvb-core/dvb_frontend.h 516.. kernel-doc:: drivers/media/dvb-core/dvb_frontend.h
78 517
79 518
diff --git a/Documentation/media/typical_media_device.svg b/Documentation/media/typical_media_device.svg
index 0c8abd69f39a..d6fad90ec199 100644
--- a/Documentation/media/typical_media_device.svg
+++ b/Documentation/media/typical_media_device.svg
@@ -1,2948 +1,106 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8"?>
2<svg 2<svg id="svg2" width="235mm" height="179mm" clip-path="url(#a)" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" preserveAspectRatio="xMidYMid" version="1.2" viewBox="0 0 22648.239 17899.829" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><metadata id="metadata1533"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/></cc:Work></rdf:RDF></metadata><defs id="defs4"><clipPath id="a"><rect id="rect7" width="28000" height="21000"/></clipPath></defs><path id="path11" d="m10146 2636c-518.06 0-1035.1 515-1035.1 1031v4124c0 516 517.06 1032 1035.1 1032h8572.2c518.06 0 1036.1-516 1036.1-1032v-4124c0-516-518.06-1031-1036.1-1031h-8572.2z"
3 xmlns:dc="http://purl.org/dc/elements/1.1/" 3fill="#fcf" style=""/><path id="path15" d="m1505.5 13443c-293 0-585 292-585 585v2340c0 293 292 586 585 586h3275c293 0 586-293 586-586v-2340c0-293-293-585-586-585h-3275z" fill="#ffc" style=""/><path id="path19" d="m517.15 22.013c-461 0-922 461-922 922v11169c0 461 461 923 922 923h3692c461 0 922-462 922-923v-11169c0-461-461-922-922-922h-3692z" fill="#e6e6e6" style=""/><path id="path23" d="m2371.5 6438h-2260v-1086h4520v1086h-2260z" fill="#ff8080" style=""/><path id="path25" d="m2371.5 6438h-2260v-1086h4520v1086h-2260z" fill="none" stroke="#3465af" style=""/><text id="text27" class="TextShape" x="-2089.4541" y="-2163.9871" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan29" class="TextParagraph" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan31" class="TextPosition" x="489.5459" y="6111.0132" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan33"
4 xmlns:cc="http://creativecommons.org/ns#" 4fill="#000000" font-family="Serif, serif" font-size="493.88px">Audio decoder</tspan></tspan></tspan></text>
5 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 5<path id="path37" d="m2371.5 9608h-2260v-1270h4520v1270h-2260z" fill="#ff8080" style=""/><path id="path39" d="m2371.5 9608h-2260v-1270h4520v1270h-2260z" fill="none" stroke="#3465af" style=""/><text id="text41" class="TextShape" x="-2089.4541" y="-2163.9871" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan43" class="TextParagraph" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan45" class="TextPosition" x="527.5459" y="9189.0127" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan47" fill="#000000" font-family="Serif, serif" font-size="493.88px">Video decoder</tspan></tspan></tspan></text>
6 xmlns:svg="http://www.w3.org/2000/svg" 6<path id="path51" d="m2363.5 8053h-2269v-1224h4537v1224h-2268z" fill="#ff8080" style=""/><path id="path53" d="m2363.5 8053h-2269v-1224h4537v1224h-2268z" fill="none" stroke="#3465af" style=""/><text id="text55" class="TextShape" x="-2089.4541" y="-2163.9871" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan57" class="TextParagraph" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan59" class="TextPosition" x="481.5459" y="7657.0132" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan61" fill="#000000" font-family="Serif, serif" font-size="493.88px">Audio encoder</tspan></tspan></tspan></text>
7 xmlns="http://www.w3.org/2000/svg" 7<path id="path65" d="m13622 10386h-3810v-1281h7620v1281h-3810z" fill="#cfc" style=""/><path id="path67" d="m13622 10386h-3810v-1281h7620v1281h-3810z" fill="none" stroke="#3465af" style=""/><text id="text69" class="TextShape" x="-2089.4541" y="-2446.187" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan71" class="TextParagraph" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan73" class="TextPosition" x="10287.546" y="9960.8135" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan75" fill="#000000" font-family="Serif, serif" font-size="493.88px">Button Key/IR input logic</tspan></tspan></tspan></text>
8 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 8<path id="path79" d="m12080 12182h-2268v-1412h4536v1412h-2268z" fill="#cfe7f5" style=""/><path id="path81" d="m12080 12182h-2268v-1412h4536v1412h-2268z" fill="none" stroke="#3465af" style=""/><text id="text83" class="TextShape" x="-2089.4541" y="-2389.7871" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan85" class="TextParagraph" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan87" class="TextPosition" x="10792.546" y="11692.213" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan89" fill="#000000" font-family="Serif, serif" font-size="493.88px">EEPROM</tspan></tspan></tspan></text>
9 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 9<path id="path93" d="m3050.5 15498h-1563v-1715h3126v1715h-1563z" fill="#fc9" style=""/><path id="path95" d="m3050.5 15498h-1563v-1715h3126v1715h-1563z" fill="none" stroke="#3465af" style=""/><text id="text97" class="TextShape" x="-2089.4541" y="-2163.9871" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan99" class="TextParagraph" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan101" class="TextPosition" x="2186.5459" y="14856.013" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan103" fill="#000000" font-family="Serif, serif" font-size="493.88px">Sensor</tspan></tspan></tspan></text>
10 clip-path="url(#a)" 10<path id="path107" d="m4629.5 5866 385-353v176h1167v-176l386 353-386 354v-177h-1167v177l-385-354z" fill="#729fcf" style=""/><path id="path109" d="m4629.5 5866 385-353v176h1167v-176l386 353-386 354v-177h-1167v177l-385-354z" fill="none" stroke="#3465af" style=""/><path id="path113" d="m4629.5 7448 385-353v176h1167v-176l386 353-386 354v-177h-1167v177l-385-354z" fill="#729fcf" style=""/><path id="path115" d="m4629.5 7448 385-353v176h1167v-176l386 353-386 354v-177h-1167v177l-385-354z" fill="none" stroke="#3465af" style=""/><path id="path119" d="m4631.5 8936 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z" fill="#729fcf" style=""/><path id="path121" d="m4631.5 8936 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z" fill="none" stroke="#3465af" style=""/><path id="path125" d="m7872.5 11464 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z"
11 xml:space="preserve" 11fill="#729fcf" style=""/><path id="path127" d="m7872.5 11464 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z" fill="none" stroke="#3465af" style=""/><path id="path131" d="m7872.5 9716.8 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z" fill="#729fcf" style=""/><path id="path133" d="m7872.5 9716.8 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z" fill="none" stroke="#3465af" style=""/><path id="path137" d="m7872.5 14994 670-353v176h2028v-176l671 353-671 354v-177h-2028v177l-670-354z" fill="#729fcf" style=""/><path id="path139" d="m7872.5 14994 670-353v176h2028v-176l671 353-671 354v-177h-2028v177l-670-354z" fill="none" stroke="#3465af" style=""/><path id="path143" d="m17534 14105 978.49 840.89-978.49 840.89v-420.86h-2960.5v420.86l-979.49-840.89 979.49-840.89v420.03h2960.5v-420.03z" fill="#729fcf" style=""/><path id="path145" d="m17534 14105 978.49
12 height="179mm" 12840.89-978.49 840.89v-420.86h-2960.5v420.86l-979.49-840.89 979.49-840.89v420.03h2960.5v-420.03z" fill="none" stroke="#3465af" stroke-width="25.77" style=""/><text id="text149" class="TextShape" x="-9922.1533" y="-644.58704" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan151" class="TextParagraph" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan153" class="TextPosition" transform="matrix(0,-1,1,0,8509,40173)" x="14418.847" y="15187.413" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan155" fill="#000000" font-family="Serif, serif" font-size="493.88px">System Bus</tspan></tspan></tspan></text>
13 viewBox="0 0 22648.239 17899.829" 13<path id="path159" d="m11062 7098h-1250v-875h2499v875h-1249z" fill="#cff" style=""/><path id="path161" d="m11062 7098h-1250v-875h2499v875h-1249z" fill="none" stroke="#3465af" style=""/><text id="text163" class="TextShape" x="-2089.4541" y="-2163.9871" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan165" class="TextParagraph" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan167" class="TextPosition" x="10125.546" y="6876.0132" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan169" fill="#000000" font-family="Serif, serif" font-size="493.88px">Demux</tspan></tspan></tspan></text>
14 width="235mm" 14<path id="path173" d="m7906.5 6601 373-357v178h1130v-178l374 357-374 358v-179h-1130v179l-373-358z" fill="#729fcf" style=""/><path id="path175" d="m7906.5 6601 373-357v178h1130v-178l374 357-374 358v-179h-1130v179l-373-358z" fill="none" stroke="#3465af" style=""/><path id="path179" d="m7906.5 5214 373-358v179h1130v-179l374 358-374 358v-179h-1130v179l-373-358z" fill="#729fcf" style=""/><path id="path181" d="m7906.5 5214 373-358v179h1130v-179l374 358-374 358v-179h-1130v179l-373-358z" fill="none" stroke="#3465af" style=""/><path id="path185" d="m14233 5828h-4421v-1270h8841v1270h-4420z" fill="#cff" style=""/><path id="path187" d="m14233 5828h-4421v-1270h8841v1270h-4420z" fill="none" stroke="#3465af" style=""/><text id="text189" class="TextShape" x="-2089.4541" y="-2163.9871" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan191" class="TextParagraph" font-family="Serif, serif"
15 version="1.2" 15font-size="493.88px"><tspan id="tspan193" class="TextPosition" x="10696.546" y="5409.0132" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan195" fill="#000000" font-family="Serif, serif" font-size="493.88px">Conditional Access Module</tspan></tspan></tspan></text>
16 preserveAspectRatio="xMidYMid" 16<path id="path199" d="m2355.5 11123h-2269v-1224h4537v1224h-2268z" fill="#ff8080" style=""/><path id="path201" d="m2355.5 11123h-2269v-1224h4537v1224h-2268z" fill="none" stroke="#3465af" style=""/><text id="text203" class="TextShape" x="-2089.4541" y="-2163.9871" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan205" class="TextParagraph" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan207" class="TextPosition" x="511.5459" y="10727.013" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan209" fill="#000000" font-family="Serif, serif" font-size="493.88px">Video encoder</tspan></tspan></tspan></text>
17 id="svg2" 17<path id="path213" d="m4631.5 10470 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z" fill="#729fcf" style=""/><path id="path215" d="m4631.5 10470 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z" fill="none" stroke="#3465af" style=""/><path id="path219" d="m18702 5381 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z" fill="#729fcf" style=""/><path id="path221" d="m18702 5381 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z" fill="none" stroke="#3465af" style=""/><text id="text225" class="TextShape" x="-1976.5541" y="-2163.9871" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan227" class="TextParagraph" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan229" class="TextPosition" x="13.4459" y="12314.013" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan231" fill="#000000"
18 inkscape:version="0.91 r13725" 18font-family="Serif, serif" font-size="493.88px">Radio / Analog TV</tspan></tspan></tspan></text>
19 sodipodi:docname="typical_media_device.svg" 19<text id="text235" class="TextShape" x="-2089.4541" y="-2163.9871" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan237" class="TextParagraph" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan239" class="TextPosition" x="12866.546" y="8560.0127" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan241" fill="#000000" font-family="Serif, serif" font-size="493.88px">Digital TV</tspan></tspan></tspan></text>
20 style="fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round"><metadata 20<text id="text245" class="TextShape" x="-8919.0537" y="-1373.787" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan247" class="TextParagraph" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan249" class="TextPosition" x="5804.9458" y="17793.213" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan251" fill="#000000" font-family="Serif, serif" font-size="493.88px">PS.: picture is not complete: other blocks may be present</tspan></tspan></tspan></text>
21 id="metadata1533"><rdf:RDF><cc:Work 21<text id="text255" class="TextShape" x="-2089.4541" y="-2163.9871" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan257" class="TextParagraph" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan259" class="TextPosition" x="2109.5459" y="16397.014" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan261" fill="#000000" font-family="Serif, serif" font-size="493.88px">Webcam</tspan></tspan></tspan></text>
22 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type 22<path id="path265" d="m12463 13926h-2650v-1412h5299v1412h-2649z" fill="#f90" style=""/><path id="path267" d="m12463 13926h-2650v-1412h5299v1412h-2649z" fill="none" stroke="#3465af" style=""/><text id="text269" class="TextShape" x="-2089.4541" y="-2446.187" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan271" class="TextParagraph" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan273" class="TextPosition" x="10175.546" y="13435.813" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan275" fill="#000000" font-family="Serif, serif" font-size="493.88px">Processing blocks</tspan></tspan></tspan></text>
23 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><sodipodi:namedview 23<path id="path279" d="m7872.5 13208 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z" fill="#729fcf" style=""/><path id="path281" d="m7872.5 13208 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z" fill="none" stroke="#3465af" style=""/><path id="path285" d="m4612.5 14790 397-353v176h1201v-176l398 353-398 354v-177h-1201v177l-397-354z" fill="#729fcf" style=""/><path id="path287" d="m4612.5 14790 397-353v176h1201v-176l398 353-398 354v-177h-1201v177l-397-354z" fill="none" stroke="#3465af" style=""/><text id="text291" class="TextShape" x="-2428.0542" y="-2163.9871" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan293" class="TextParagraph" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan295" class="TextPosition" x="20421.945" y="6628.0132" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan297" fill="#000000"
24 pagecolor="#ffffff" 24font-family="Serif, serif" font-size="493.88px">Smartcard</tspan></tspan></tspan></text>
25 bordercolor="#666666" 25<path id="path301" d="m623.32 436.01c-334.6 0-669.2 333-669.2 666v2668c0 333 334.6 666 669.2 666h18456c334.6 0 670.2-333 670.2-666v-2668c0-333-335.6-666-670.2-666h-18456z" fill="#fcf" style=""/><path id="path305" d="m3031.5 2991h-1614v-1816h3227v1816h-1613z" fill="#ff8080" style=""/><path id="path307" d="m3031.5 2991h-1614v-1816h3227v1816h-1613z" fill="none" stroke="#3465af" style=""/><text id="text309" class="TextShape" x="-2089.4541" y="-2163.9871" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan311" class="TextParagraph"><tspan id="tspan313" class="TextPosition" x="2284.5459" y="1947.0129" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan315" fill="#000000" font-family="Serif, serif" font-size="493.88px">Tuner</tspan></tspan></tspan><tspan id="tspan317" class="TextParagraph"><tspan id="tspan319" class="TextPosition" x="2061.5459" y="2650.0129"
26 borderopacity="1" 26font-family="Serif, serif" font-size="493.88px"><tspan id="tspan321" fill="#000000" font-family="Serif, serif" font-size="493.88px">FM/TV</tspan></tspan></tspan></text>
27 objecttolerance="10" 27<path id="path325" d="m812.55 1538c0 111 40 202 88 202h530c48 0 89-91 89-202 0-110-41-202-89-202h-530c-48 0-88 92-88 202z" fill="#ff8080" style=""/><path id="path327" d="m812.55 1538c0 111 40 202 88 202h530c48 0 89-91 89-202 0-110-41-202-89-202h-530c-48 0-88 92-88 202z" fill="none" stroke="#3465af" style=""/><path id="path329" d="m812.55 1538c0 111 40 202 88 202s88-91 88-202c0-110-40-202-88-202s-88 92-88 202z" fill="#ffb3b3" style=""/><path id="path331" d="m812.55 1538c0 111 40 202 88 202s88-91 88-202c0-110-40-202-88-202s-88 92-88 202z" fill="none" stroke="#3465af" style=""/><path id="path335" d="m813.55 2103c0 110 40 202 88 202h530c48 0 89-92 89-202s-41-203-89-203h-530c-48 0-88 93-88 203z" fill="#ff8080" style=""/><path id="path337" d="m813.55 2103c0 110 40 202 88 202h530c48 0 89-92 89-202s-41-203-89-203h-530c-48 0-88 93-88 203z" fill="none" stroke="#3465af" style=""/><path
28 gridtolerance="10" 28id="path339" d="m813.55 2103c0 110 40 202 88 202s88-92 88-202-40-203-88-203-88 93-88 203z" fill="#ffb3b3" style=""/><path id="path341" d="m813.55 2103c0 110 40 202 88 202s88-92 88-202-40-203-88-203-88 93-88 203z" fill="none" stroke="#3465af" style=""/><path id="path345" d="m4629.5 2032 385-353v176h1167v-176l386 353-386 354v-177h-1167v177l-385-354z" fill="#729fcf" style=""/><path id="path347" d="m4629.5 2032 385-353v176h1167v-176l386 353-386 354v-177h-1167v177l-385-354z" fill="none" stroke="#3465af" style=""/><path id="path351" d="m7889.5 1986 402-368v184h1217v-184l403 368-403 369v-185h-1217v185l-402-369z" fill="#729fcf" style=""/><path id="path353" d="m7889.5 1986 402-368v184h1217v-184l403 368-403 369v-185h-1217v185l-402-369z" fill="none" stroke="#3465af" style=""/><path id="path357" d="m14411 4025h-4500v-1389h9e3v1389h-4500z" fill="#cff" style=""/><path id="path359" d="m14411
29 guidetolerance="10" 294025h-4500v-1389h9e3v1389h-4500z" fill="none" stroke="#3465af" style=""/><text id="text361" class="TextShape" x="-2089.4541" y="-2163.9871" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan363" class="TextParagraph" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan365" class="TextPosition" x="9961.5459" y="3546.0129" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan367" fill="#000000" font-family="Serif, serif" font-size="493.88px">Satellite Equipment Control (SEC)</tspan></tspan></tspan></text>
30 inkscape:pageopacity="0" 30<path id="path371" d="m11311 2436h-1400v-1e3h2800v1e3h-1400z" fill="#cff" style=""/><path id="path373" d="m11311 2436h-1400v-1e3h2800v1e3h-1400z" fill="none" stroke="#3465af" style=""/><text id="text375" class="TextShape" x="-2089.4541" y="-2163.9871" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan377" class="TextParagraph" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan379" class="TextPosition" x="10375.546" y="2152.0129" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan381" fill="#000000" font-family="Serif, serif" font-size="493.88px">Demod</tspan></tspan></tspan></text>
31 inkscape:pageshadow="2" 31<path id="path385" d="m7889.5 3287 402-368v184h1217v-184l403 368-403 369v-185h-1217v185l-402-369z" fill="#729fcf" style=""/><path id="path387" d="m7889.5 3287 402-368v184h1217v-184l403 368-403 369v-185h-1217v185l-402-369z" fill="none" stroke="#3465af" style=""/><path id="path389" d="m7906.5 9121v7302h-1270v-14605h1270v7303z" fill="#ff9" style=""/><path id="path391" d="m7906.5 9121v7302h-1270v-14605h1270v7303z" fill="none" stroke="#3465af" style=""/><text id="text393" class="TextShape" transform="rotate(-90)" x="-20792.584" y="-6589.021" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan395" class="TextParagraph" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan397" class="TextPosition" transform="matrix(0,-1,1,0,-4473,23627)" x="-11215.646" y="7460.9849" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan399" fill="#000000" font-family="Serif,
32 inkscape:window-width="1920" 32serif" font-size="493.88px">I2C Bus (control bus)</tspan></tspan></tspan></text>
33 inkscape:window-height="997" 33<text id="text403" class="TextShape" x="-2145.854" y="-2163.9871" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan405" class="TextParagraph" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan407" class="TextPosition" x="7245.146" y="1114.0129" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan409" fill="#000000" font-family="Serif, serif" font-size="493.88px">Digital TV Frontend</tspan></tspan></tspan></text>
34 id="namedview1531" 34<path id="path415" d="m863.15 636.14c-18.27 0-35.525 0.99994-53.795 2.9998" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path417" d="m776.87 644.14c-17.255 2.9998-35.525 6.9996-52.78 11.999" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path419" d="m692.63 666.14c-16.24 5.9996-33.495 11.999-49.735 19.999" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path421" d="m613.46 700.14c-15.225 7.9995-31.465 16.999-46.69 26.998" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path423" d="m539.36 745.14c-14.21 9.9994-28.42 20.999-42.63 31.998" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path425" d="m471.36 798.14c-13.195 11.999-26.39 23.999-38.57 36.998" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path427" d="m410.46 859.13c-11.165 12.999-22.33
35 showgrid="false" 3526.998-33.495 40.998" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path429" d="m357.68 927.13c-10.15 13.999-19.285 28.998-28.42 44.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path431" d="m314.03 1000.1c-8.12 15.999-15.225 31.998-22.33 48.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path433" d="m280.54 1079.1c-5.075 16.999-10.15 33.998-14.21 50.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path435" d="m260.24 1162.1c-3.045 17.999-5.075 34.998-6.09 52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path437" d="m254.15 1247.1v52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path439" d="m254.15 1333.1v52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path441" d="m254.15 1418.1v52.997"
36 fit-margin-top="0" 36fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path443" d="m254.15 1504.1v52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path445" d="m254.15 1589.1v52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path447" d="m254.15 1675.1v52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path449" d="m254.15 1760.1v52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path451" d="m254.15 1845.1v53.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path453" d="m254.15 1931.1v52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path455" d="m254.15 2016.1v52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path457" d="m254.15 2102.1v52.997" fill="none" stroke="#3465af" stroke-width="28.432"
37 fit-margin-left="0" 37style=""/><path id="path459" d="m254.15 2187.1v52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path461" d="m254.15 2273v52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path463" d="m254.15 2358v52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path465" d="m254.15 2443v53.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path467" d="m254.15 2529v52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path469" d="m254.15 2614v52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path471" d="m254.15 2700v52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path473" d="m254.15 2785v52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path475" d="m254.15 2871v52.997" fill="none"
38 fit-margin-right="0" 38stroke="#3465af" stroke-width="28.432" style=""/><path id="path477" d="m254.15 2956v52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path479" d="m254.15 3041v53.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path481" d="m254.15 3127v52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path483" d="m254.15 3212v52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path485" d="m254.15 3298v52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path487" d="m254.15 3383v52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path489" d="m254.15 3469v52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path491" d="m254.15 3554v52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path493"
39 fit-margin-bottom="0" 39d="m254.15 3639c0 17.999 1.015 35.998 3.045 52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path495" d="m262.27 3724c4.06 17.999 8.12 34.998 13.195 51.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path497" d="m285.61 3807c6.09 15.999 13.195 32.998 20.3 48.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path499" d="m321.14 3885c8.12 14.999 17.255 30.998 27.405 45.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path501" d="m366.81 3957.9c10.15 13.999 21.315 27.998 32.48 41.998" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path503" d="m420.61 4023.9c12.18 12.999 25.375 25.998 38.57 37.998" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path505" d="m483.54 4083.9c13.195 10.999 27.405 22.999 41.615 32.998" fill="none"
40 inkscape:zoom="1.2707744" 40stroke="#3465af" stroke-width="28.432" style=""/><path id="path507" d="m552.56 4135.9c14.21 9.9994 29.435 18.999 45.675 26.998" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path509" d="m627.67 4178.9c15.225 6.9996 32.48 14.999 48.72 20.999" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path511" d="m707.85 4210.9c17.255 4.9997 34.51 9.9994 51.765 13.999" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path513" d="m792.1 4230.9c17.255 1.9999 35.525 3.9998 53.795 4.9997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path515" d="m878.37 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path517" d="m964.65 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path519" d="m1051.9 4235.9h53.795" fill="none" stroke="#3465af"
41 inkscape:cx="410.32614" 41stroke-width="28.432" style=""/><path id="path521" d="m1138.2 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path523" d="m1225.5 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path525" d="m1311.8 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path527" d="m1398.1 4235.9h54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path529" d="m1485.3 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path531" d="m1571.6 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path533" d="m1658.9 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path535" d="m1745.2 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path537"
42 inkscape:cy="316.736" 42d="m1832.5 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path539" d="m1918.7 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path541" d="m2005 4235.9h54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path543" d="m2092.3 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path545" d="m2178.6 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path547" d="m2265.9 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path549" d="m2352.2 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path551" d="m2439.4 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path553" d="m2525.7 4235.9h53.795" fill="none" stroke="#3465af"
43 inkscape:window-x="1920" 43stroke-width="28.432" style=""/><path id="path555" d="m2612 4235.9h54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path557" d="m2699.3 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path559" d="m2785.6 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path561" d="m2872.8 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path563" d="m2959.1 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path565" d="m3046.4 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path567" d="m3132.7 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path569" d="m3220 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path571"
44 inkscape:window-y="30" 44d="m3306.3 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path573" d="m3392.5 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path575" d="m3479.8 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path577" d="m3566.1 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path579" d="m3653.4 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path581" d="m3739.7 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path583" d="m3826.9 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path585" d="m3913.2 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path587" d="m3999.5 4235.9h53.795" fill="none"
45 inkscape:window-maximized="1" 45stroke="#3465af" stroke-width="28.432" style=""/><path id="path589" d="m4086.8 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path591" d="m4173.1 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path593" d="m4260.4 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path595" d="m4346.6 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path597" d="m4433.9 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path599" d="m4520.2 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path601" d="m4606.5 4235.9h54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path603" d="m4693.8 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432"
46 inkscape:current-layer="svg2" /><defs 46style=""/><path id="path605" d="m4780 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path607" d="m4867.3 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path609" d="m4953.6 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path611" d="m5040.9 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path613" d="m5127.2 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path615" d="m5213.4 4235.9h54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path617" d="m5300.7 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path619" d="m5387 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path621" d="m5474.3 4235.9h53.795"
47 id="defs4"><clipPath 47fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path623" d="m5560.6 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path625" d="m5647.9 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path627" d="m5734.1 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path629" d="m5820.4 4235.9h54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path631" d="m5907.7 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path633" d="m5994 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path635" d="m6081.3 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path637" d="m6167.5 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432"
48 id="a" 48style=""/><path id="path639" d="m6254.8 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path641" d="m6341.1 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path643" d="m6427.4 4235.9h54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path645" d="m6514.7 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path647" d="m6600.9 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path649" d="m6688.2 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path651" d="m6774.5 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path653" d="m6861.8 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path655" d="m6948.1
49 clipPathUnits="userSpaceOnUse"><rect 494235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path657" d="m7035.4 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path659" d="m7121.6 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path661" d="m7207.9 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path663" d="m7295.2 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path665" d="m7381.5 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path667" d="m7468.8 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path669" d="m7555 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path671" d="m7642.3 4235.9h53.795" fill="none" stroke="#3465af"
50 y="0" 50stroke-width="28.432" style=""/><path id="path673" d="m7728.6 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path675" d="m7814.9 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path677" d="m7902.2 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path679" d="m7988.4 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path681" d="m8075.7 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path683" d="m8162 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path685" d="m8249.3 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path687" d="m8335.6 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path689"
51 x="0" 51d="m8421.9 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path691" d="m8509.1 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path693" d="m8595.4 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path695" d="m8682.7 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path697" d="m8769 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path699" d="m8856.3 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path701" d="m8942.5 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path703" d="m9028.8 4235.9h54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path705" d="m9116.1 4235.9h53.795" fill="none" stroke="#3465af"
52 width="28000" 52stroke-width="28.432" style=""/><path id="path707" d="m9202.4 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path709" d="m9289.7 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path711" d="m9376 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path713" d="m9463.2 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path715" d="m9549.5 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path717" d="m9635.8 4235.9h54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path719" d="m9723.1 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path721" d="m9809.4 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path723"
53 height="21000" 53d="m9896.6 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path725" d="m9982.9 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path727" d="m10070 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path729" d="m10156 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path731" d="m10243 4235.9h54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path733" d="m10330 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path735" d="m10416 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path737" d="m10504 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path739" d="m10590 4235.9h53.795" fill="none" stroke="#3465af"
54 id="rect7" /></clipPath></defs><path 54stroke-width="28.432" style=""/><path id="path741" d="m10677 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path743" d="m10763 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path745" d="m10850 4235.9h54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path747" d="m10937 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path749" d="m11023 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path751" d="m11111 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path753" d="m11197 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path755" d="m11284 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path757" d="m11370
55 style="fill:#ffccff" 554235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path759" d="m11458 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path761" d="m11544 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path763" d="m11630 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path765" d="m11718 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path767" d="m11804 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path769" d="m11891 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path771" d="m11977 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path773" d="m12065 4235.9h53.795" fill="none" stroke="#3465af"
56 inkscape:connector-curvature="0" 56stroke-width="28.432" style=""/><path id="path775" d="m12151 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path777" d="m12237 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path779" d="m12325 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path781" d="m12411 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path783" d="m12498 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path785" d="m12584 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path787" d="m12672 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path789" d="m12758 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path791"
57 id="path11" 57d="m12844 4235.9h54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path793" d="m12931 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path795" d="m13018 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path797" d="m13105 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path799" d="m13191 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path801" d="m13279 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path803" d="m13365 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path805" d="m13451 4235.9h54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path807" d="m13538 4235.9h53.795" fill="none" stroke="#3465af"
58 d="m 10145.77,2636.013 c -518.0641,0 -1035.1241,515 -1035.1241,1031 l 0,4124 c 0,516 517.06,1032 1035.1241,1032 l 8572.152,0 c 518.064,0 1036.128,-516 1036.128,-1032 l 0,-4124 c 0,-516 -518.064,-1031 -1036.128,-1031 l -8572.152,0 z" /><path 58stroke-width="28.432" style=""/><path id="path809" d="m13625 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path811" d="m13712 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path813" d="m13798 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path815" d="m13886 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path817" d="m13972 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path819" d="m14058 4235.9h54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path821" d="m14145 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path823" d="m14232 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path825" d="m14319
59 style="fill:#ffffcc" 594235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path827" d="m14405 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path829" d="m14493 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path831" d="m14579 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path833" d="m14665 4235.9h54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path835" d="m14752 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path837" d="m14839 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path839" d="m14926 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path841" d="m15012 4235.9h53.795" fill="none" stroke="#3465af"
60 inkscape:connector-curvature="0" 60stroke-width="28.432" style=""/><path id="path843" d="m15100 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path845" d="m15186 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path847" d="m15272 4235.9h54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path849" d="m15359 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path851" d="m15446 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path853" d="m15533 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path855" d="m15619 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path857" d="m15707 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path859" d="m15793
61 id="path15" 614235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path861" d="m15880 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path863" d="m15966 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path865" d="m16053 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path867" d="m16140 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path869" d="m16226 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path871" d="m16313 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path873" d="m16400 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path875" d="m16487 4235.9h53.795" fill="none" stroke="#3465af"
62 d="m 1505.5459,13443.013 c -293,0 -585,292 -585,585 l 0,2340 c 0,293 292,586 585,586 l 3275,0 c 293,0 586,-293 586,-586 l 0,-2340 c 0,-293 -293,-585 -586,-585 l -3275,0 z" /><path 62stroke-width="28.432" style=""/><path id="path877" d="m16573 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path879" d="m16660 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path881" d="m16747 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path883" d="m16833 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path885" d="m16920 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path887" d="m17007 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path889" d="m17094 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path891" d="m17180 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path893"
63 style="fill:#e6e6e6" 63d="m17267 4235.9h54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path895" d="m17354 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path897" d="m17440 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path899" d="m17527 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path901" d="m17614 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path903" d="m17701 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path905" d="m17787 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path907" d="m17874 4235.9h54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path909" d="m17961 4235.9h53.795" fill="none" stroke="#3465af"
64 inkscape:connector-curvature="0" 64stroke-width="28.432" style=""/><path id="path911" d="m18047 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path913" d="m18134 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path915" d="m18221 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path917" d="m18308 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path919" d="m18394 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path921" d="m18481 4235.9h54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path923" d="m18568 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path925" d="m18654 4235.9h53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path927" d="m18741
65 id="path19" 654235.9c17.255-0.9999 35.525-1.9999 53.795-4.9997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path929" d="m18828 4225.9c17.255-3.9998 34.51-8.9995 51.765-13.999" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path931" d="m18911 4200.9c16.24-5.9996 32.48-12.999 48.72-20.999" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path933" d="m18989 4164.9c15.225-7.9996 31.465-16.999 45.675-26.998" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path935" d="m19062 4118.9c14.21-9.9994 28.42-20.999 42.63-31.998" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path937" d="m19129 4064.9c13.195-11.999 25.375-24.998 37.555-37.998" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path939" d="m19189 4002.9c11.165-13.999 22.33-27.998 33.495-41.998" fill="none"
66 d="m 517.1459,22.013 c -461,0 -922,461 -922,922 l 0,11169 c 0,461 461,923 922,923 l 3692,0 c 461,0 922,-462 922,-923 l 0,-11169 c 0,-461 -461,-922 -922,-922 l -3692,0 z" /><path 66stroke="#3465af" stroke-width="28.432" style=""/><path id="path941" d="m19241 3933.9c10.15-14.999 19.285-29.998 27.405-44.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path943" d="m19283 3860c7.105-15.999 14.21-32.998 20.3-48.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path945" d="m19315 3780c5.075-16.999 9.135-33.998 13.195-50.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path947" d="m19333 3697c2.03-17.999 4.06-34.998 4.06-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path949" d="m19337 3612v-53.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path951" d="m19337 3526v-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path953" d="m19337 3441v-52.997" fill="none" stroke="#3465af" stroke-width="28.432"
67 style="fill:#ff8080" 67style=""/><path id="path955" d="m19337 3355v-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path957" d="m19337 3270v-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path959" d="m19337 3184v-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path961" d="m19337 3099v-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path963" d="m19337 3014v-53.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path965" d="m19337 2928v-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path967" d="m19337 2843v-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path969" d="m19337 2757v-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path971" d="m19337 2672v-52.997" fill="none"
68 inkscape:connector-curvature="0" 68stroke="#3465af" stroke-width="28.432" style=""/><path id="path973" d="m19337 2586v-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path975" d="m19337 2501v-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path977" d="m19337 2415v-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path979" d="m19337 2330v-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path981" d="m19337 2245v-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path983" d="m19337 2159.1v-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path985" d="m19337 2074.1v-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path987" d="m19337 1988.1v-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path
69 id="path23" 69id="path989" d="m19337 1903.1v-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path991" d="m19337 1817.1v-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path993" d="m19337 1732.1v-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path995" d="m19337 1647.1v-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path997" d="m19337 1561.1v-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path999" d="m19337 1476.1v-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1001" d="m19337 1390.1v-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1003" d="m19337 1305.1v-52.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1005" d="m19337
70 d="m 2371.5459,6438.013 -2260,0 0,-1086 4520,0 0,1086 -2260,0 z" /><path 701219.1c-1.015-16.999-3.045-34.998-5.075-51.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1007" d="m19326 1135.1c-4.06-16.999-8.12-34.998-14.21-50.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1009" d="m19301 1053.1c-6.09-15.999-13.195-32.998-21.315-48.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1011" d="m19264 976.12c-9.135-15.999-18.27-30.998-28.42-45.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1013" d="m19216 904.13c-10.15-13.999-21.315-27.998-33.495-41.997" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1015" d="m19161 838.13c-12.18-12.999-24.36-24.998-37.555-36.998" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1017" d="m19098 780.14c-14.21-11.999-28.42-21.999-42.63-32.998" fill="none"
71 style="fill:none;stroke:#3465af" 71stroke="#3465af" stroke-width="28.432" style=""/><path id="path1019" d="m19028 729.14c-15.225-8.9995-30.45-17.999-46.69-26.998" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1021" d="m18951 688.14c-16.24-7.9995-32.48-13.999-49.735-19.999" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1023" d="m18870 657.14c-17.255-4.9997-34.51-8.9995-51.765-11.999" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1025" d="m18786 640.14c-18.27-2.9998-35.525-3.9998-53.795-3.9998" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1027" d="m18700 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1029" d="m18612 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1031" d="m18526 636.14h-53.795" fill="none" stroke="#3465af"
72 inkscape:connector-curvature="0" 72stroke-width="28.432" style=""/><path id="path1033" d="m18439 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1035" d="m18353 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1037" d="m18266 636.14h-54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1039" d="m18179 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1041" d="m18093 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1043" d="m18005 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1045" d="m17919 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1047" d="m17832 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path
73 id="path25" 73id="path1049" d="m17746 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1051" d="m17659 636.14h-54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1053" d="m17572 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1055" d="m17486 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1057" d="m17399 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1059" d="m17312 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1061" d="m17225 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1063" d="m17139 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1065" d="m17052 636.14h-54.81"
74 d="m 2371.5459,6438.013 -2260,0 0,-1086 4520,0 0,1086 -2260,0 z" /><text 74fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1067" d="m16965 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1069" d="m16879 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1071" d="m16792 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1073" d="m16705 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1075" d="m16618 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1077" d="m16532 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1079" d="m16445 636.14h-54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1081" d="m16358 636.14h-53.795" fill="none" stroke="#3465af"
75 id="text27" 75stroke-width="28.432" style=""/><path id="path1083" d="m16272 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1085" d="m16185 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1087" d="m16098 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1089" d="m16011 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1091" d="m15925 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1093" d="m15837 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1095" d="m15751 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1097" d="m15665 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path
76 class="TextShape" 76id="path1099" d="m15578 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1101" d="m15491 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1103" d="m15404 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1105" d="m15318 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1107" d="m15230 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1109" d="m15144 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1111" d="m15058 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1113" d="m14971 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1115" d="m14884 636.14h-53.795"
77 x="-2089.4541" 77fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1117" d="m14797 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1119" d="m14711 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1121" d="m14624 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1123" d="m14537 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1125" d="m14451 636.14h-54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1127" d="m14364 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1129" d="m14277 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1131" d="m14190 636.14h-53.795" fill="none" stroke="#3465af"
78 y="-2163.9871"><tspan 78stroke-width="28.432" style=""/><path id="path1133" d="m14104 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1135" d="m14017 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1137" d="m13930 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1139" d="m13844 636.14h-54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1141" d="m13757 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1143" d="m13670 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1145" d="m13583 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1147" d="m13497 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path
79 style="font-weight:400;font-size:635px;font-family:'Times New Roman', serif" 79id="path1149" d="m13410 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1151" d="m13323 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1153" d="m13237 636.14h-54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1155" d="m13150 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1157" d="m13063 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1159" d="m12976 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1161" d="m12890 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1163" d="m12803 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1165" d="m12716 636.14h-53.795"
80 id="tspan29" 80fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1167" d="m12630 636.14h-54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1169" d="m12543 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1171" d="m12456 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1173" d="m12369 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1175" d="m12283 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1177" d="m12196 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1179" d="m12109 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1181" d="m12022 636.14h-53.795" fill="none" stroke="#3465af"
81 class="TextParagraph" 81stroke-width="28.432" style=""/><path id="path1183" d="m11936 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1185" d="m11850 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1187" d="m11762 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1189" d="m11676 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1191" d="m11589 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1193" d="m11502 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1195" d="m11415 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1197" d="m11329 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path
82 font-weight="400" 82id="path1199" d="m11243 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1201" d="m11155 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1203" d="m11069 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1205" d="m10982 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1207" d="m10895 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1209" d="m10808 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1211" d="m10722 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1213" d="m10636 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1215" d="m10548 636.14h-53.795"
83 font-size="635px"><tspan 83fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1217" d="m10462 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1219" d="m10375 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1221" d="m10288 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1223" d="m10201 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1225" d="m10115 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1227" d="m10029 636.14h-54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1229" d="m9941.3 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1231" d="m9855 636.14h-53.795" fill="none" stroke="#3465af"
84 id="tspan31" 84stroke-width="28.432" style=""/><path id="path1233" d="m9767.7 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1235" d="m9681.5 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1237" d="m9594.2 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1239" d="m9507.9 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1241" d="m9421.6 636.14h-54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1243" d="m9334.3 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1245" d="m9248.1 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1247" d="m9160.8 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432"
85 class="TextPosition" 85style=""/><path id="path1249" d="m9074.5 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1251" d="m8987.2 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1253" d="m8900.9 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1255" d="m8814.7 636.14h-54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1257" d="m8727.4 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1259" d="m8641.1 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1261" d="m8553.8 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1263" d="m8467.5 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1265"
86 x="489.5459" 86d="m8380.2 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1267" d="m8294 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1269" d="m8207.7 636.14h-54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1271" d="m8120.4 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1273" d="m8034.1 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1275" d="m7946.8 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1277" d="m7860.6 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1279" d="m7773.3 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1281" d="m7687 636.14h-53.795" fill="none"
87 y="6111.0132"><tspan 87stroke="#3465af" stroke-width="28.432" style=""/><path id="path1283" d="m7599.7 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1285" d="m7513.4 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1287" d="m7427.2 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1289" d="m7339.9 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1291" d="m7253.6 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1293" d="m7166.3 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1295" d="m7080 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1297" d="m6992.7 636.14h-53.795" fill="none" stroke="#3465af"
88 style="fill:#000000" 88stroke-width="28.432" style=""/><path id="path1299" d="m6906.5 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1301" d="m6820.2 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1303" d="m6732.9 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1305" d="m6646.6 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1307" d="m6559.3 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1309" d="m6473.1 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1311" d="m6385.8 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1313" d="m6299.5 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432"
89 id="tspan33">Audio decoder</tspan></tspan></tspan></text> 89style=""/><path id="path1315" d="m6213.2 636.14h-54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1317" d="m6125.9 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1319" d="m6039.6 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1321" d="m5952.4 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1323" d="m5866.1 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1325" d="m5778.8 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1327" d="m5692.5 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1329" d="m5606.2 636.14h-54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1331"
90<path 90d="m5519 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1333" d="m5432.7 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1335" d="m5345.4 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1337" d="m5259.1 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1339" d="m5171.8 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1341" d="m5085.5 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1343" d="m4999.3 636.14h-54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1345" d="m4912 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1347" d="m4825.7 636.14h-53.795" fill="none"
91 style="fill:#ff8080" 91stroke="#3465af" stroke-width="28.432" style=""/><path id="path1349" d="m4738.4 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1351" d="m4652.1 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1353" d="m4564.9 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1355" d="m4478.6 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1357" d="m4392.3 636.14h-54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1359" d="m4305 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1361" d="m4218.7 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1363" d="m4131.4 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432"
92 inkscape:connector-curvature="0" 92style=""/><path id="path1365" d="m4045.2 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1367" d="m3957.9 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1369" d="m3871.6 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1371" d="m3785.3 636.14h-54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1373" d="m3698 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1375" d="m3611.8 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1377" d="m3524.5 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1379" d="m3438.2 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1381"
93 id="path37" 93d="m3350.9 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1383" d="m3264.6 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1385" d="m3177.3 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1387" d="m3091.1 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1389" d="m3004.8 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1391" d="m2917.5 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1393" d="m2831.2 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1395" d="m2743.9 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1397" d="m2657.7 636.14h-53.795"
94 d="m 2371.5459,9608.013 -2260,0 0,-1270 4520,0 0,1270 -2260,0 z" /><path 94fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1399" d="m2570.4 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1401" d="m2484.1 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1403" d="m2397.8 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1405" d="m2310.5 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1407" d="m2224.3 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1409" d="m2137 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1411" d="m2050.7 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1413" d="m1963.4 636.14h-53.795" fill="none" stroke="#3465af"
95 style="fill:none;stroke:#3465af" 95stroke-width="28.432" style=""/><path id="path1415" d="m1877.1 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1417" d="m1790.9 636.14h-54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1419" d="m1703.6 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1421" d="m1617.3 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1423" d="m1530 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1425" d="m1443.7 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1427" d="m1356.4 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1429" d="m1270.2 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path
96 inkscape:connector-curvature="0" 96id="path1431" d="m1183.9 636.14h-54.81" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1433" d="m1096.6 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1435" d="m1010.3 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><path id="path1437" d="m923.03 636.14h-53.795" fill="none" stroke="#3465af" stroke-width="28.432" style=""/><g id="g4044" style=""><rect id="rect1441" x="21109" y="4753.1" width="1213.6" height="1100.7" fill="#f3e777" style=""/><path id="path1443" d="m20656 5536.4v-405.46l150.7-169.16c82.886-93.039 170.53-186.62 194.77-207.96l44.069-38.798 783.23-0.086 783.23-0.086v1227h-1956v-405.46zm1027.7 136.98v-78.372l-169.91 4.925-169.91 4.9249-5.09 45.854c-8.249 74.303 46.711 101.04 207.69 101.04h137.21v-78.372zm235.86-262.94 4.495-341.31 207.2-8.6408 207.2-8.6408
97 id="path39" 975.144-46.443c9.596-86.615-41.863-102.05-322.02-96.607l-246.71 4.7956-4.438 419.08-4.439 419.08h149.08l4.494-341.31zm391.3 313.72c26.41-19.286 36.255-41.399 32.697-73.447l-5.09-45.854h-348.1l-5.38 48.984c-9.97 90.771 0.993 97.91 150.36 97.91 99.305 0 148.27-7.6982 175.52-27.594zm-627.16-274.84v-77.768h-348.1v66.246c0 36.436 4.973 71.431 11.051 77.768 6.078 6.3366 84.401 11.521 174.05 11.521h163v-77.768zm659.89-4.9154 5.125-74.042-179.18 4.9155-179.18 4.9155-5.38 48.984c-10.473 95.348-2.259 99.57 183.28 94.197l170.2-4.9284 5.125-74.042zm-659.89-237.63v-78.372l-169.91 4.925-169.91 4.925-5.097 73.447-5.097 73.447h350v-78.372zm659.86 4.925-5.097-73.447h-348.1l-5.38 48.984c-10.289 93.673-2.146 97.91 188.15 97.91h175.52l-5.097-73.447zm-659.86-228.98v-77.768h-137.21c-97.358 0-147.91 7.8138-174.05 26.902-34.952 25.523-49.645 92.242-25.79 117.11 6.078 6.3366 84.401 11.521 174.05
98 d="m 2371.5459,9608.013 -2260,0 0,-1270 4520,0 0,1270 -2260,0 z" /><text 9811.521h163v-77.768z" fill="#ca4677" style=""/></g><text id="text1489" class="TextShape" transform="scale(1.1036 .90616)" x="171.41566" y="9913.7109" fill-rule="evenodd" font-family="Serif, serif" font-size="493.87px" stroke-linejoin="round" stroke-width="28.222"><tspan id="tspan1491" class="TextParagraph" font-family="Serif, serif" font-size="493.87px"/></text>
99 id="text41" 99<g id="g4048" style=""><rect id="rect1447" x="18797" y="13737" width="2320.7" height="2342.4" fill="#6076b3" style=""/><rect id="rect1451" x="18532" y="13817" width="302.7" height="137.79" fill="#e0ee2c" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" style=""/><rect id="rect1453" x="18532" y="14076" width="302.7" height="137.79" fill="#e0ee2c" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" style=""/><rect id="rect1455" x="18532" y="14334" width="302.7" height="137.79" fill="#e0ee2c" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" style=""/><rect id="rect1457" x="18532" y="14593" width="302.7" height="137.79" fill="#e0ee2c" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" style=""/><rect id="rect1459" x="18532" y="14851" width="302.7" height="137.79" fill="#e0ee2c" fill-rule="evenodd" stroke-linejoin="round"
100 class="TextShape" 100stroke-width="28.222" style=""/><rect id="rect1461" x="18532" y="15110" width="302.7" height="137.79" fill="#e0ee2c" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" style=""/><rect id="rect1463" x="18532" y="15368" width="302.7" height="137.79" fill="#e0ee2c" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" style=""/><rect id="rect1465" x="18532" y="15626" width="302.7" height="137.79" fill="#e0ee2c" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" style=""/><rect id="rect1467" x="18532" y="15884" width="302.7" height="137.79" fill="#e0ee2c" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" style=""/><rect id="rect1469" x="21080" y="13783" width="302.7" height="137.79" fill="#e0ee2c" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" style=""/><rect id="rect1471" x="21080" y="14041" width="302.7"
101 x="-2089.4541" 101height="137.79" fill="#e0ee2c" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" style=""/><rect id="rect1473" x="21080" y="14299" width="302.7" height="137.79" fill="#e0ee2c" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" style=""/><rect id="rect1475" x="21080" y="14558" width="302.7" height="137.79" fill="#e0ee2c" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" style=""/><rect id="rect1477" x="21080" y="14816" width="302.7" height="137.79" fill="#e0ee2c" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" style=""/><rect id="rect1479" x="21080" y="15075" width="302.7" height="137.79" fill="#e0ee2c" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" style=""/><rect id="rect1481" x="21080" y="15333" width="302.7" height="137.79" fill="#e0ee2c" fill-rule="evenodd" stroke-linejoin="round"
102 y="-2163.9871"><tspan 102stroke-width="28.222" style=""/><rect id="rect1483" x="21080" y="15592" width="302.7" height="137.79" fill="#e0ee2c" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" style=""/><rect id="rect1485" x="21080" y="15850" width="302.7" height="137.79" fill="#e0ee2c" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" style=""/><text id="text1493" transform="scale(1.1036 .90616)" x="17205.688" y="16777.641" fill="#000000" fill-rule="evenodd" font-family="Sans" font-size="856.96px" letter-spacing="0px" stroke-linejoin="round" stroke-width="28.222" word-spacing="0px" style="line-height:125%" line-height="125%" xml:space="preserve"><tspan id="tspan1495" x="17205.688" y="16777.641" style="">CPU</tspan></text>
103 style="font-weight:400;font-size:635px;font-family:'Times New Roman', serif" 103</g><text id="text1499" class="TextShape" x="-11700.553" y="565.61298" fill-rule="evenodd" font-family="Serif, serif" font-size="493.88px" stroke-linejoin="round" stroke-width="28.222"><tspan id="tspan1501" class="TextParagraph" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan1503" class="TextPosition" transform="matrix(0,-1,1,0,8509,40173)" x="12640.447" y="16397.613" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan1505" fill="#000000" font-family="Serif, serif" font-size="493.88px">PCI, USB, SPI, I2C, ...</tspan></tspan></tspan></text>
104 id="tspan43" 104<path id="path1511" d="m12408 15562h-1115.1v-1420.3h2230.2v1420.3h-1115.1z" fill="#cfe7f5" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" style=""/><path id="path1513" d="m12408 15562h-1115.1v-1420.3h2230.2v1420.3h-1115.1z" fill="none" stroke="#3465af" stroke-linejoin="round" stroke-width="19.847" style=""/><text id="text1515" class="TextShape" x="-1394.0863" y="590.73016" fill-rule="evenodd" font-family="Serif, serif" font-size="493.88px" stroke-linejoin="round" stroke-width="28.222"><tspan id="tspan1517" class="TextParagraph" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan1519" class="TextPosition" x="11487.915" y="14672.743" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan1521" fill="#000000" font-family="Serif, serif" font-size="493.88px">Bridge</tspan></tspan></tspan></text>
105 class="TextParagraph" 105<text id="text1523" class="TextShape" x="-1450.5308" y="1324.5078" fill-rule="evenodd" font-family="Serif, serif" font-size="493.88px" stroke-linejoin="round" stroke-width="28.222"><tspan id="tspan1525" class="TextParagraph" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan1527" class="TextPosition" x="11431.471" y="15406.52" font-family="Serif, serif" font-size="493.88px"><tspan id="tspan1529" fill="#000000" font-family="Serif, serif" font-size="493.88px"> DMA</tspan></tspan></tspan></text>
106 font-weight="400" 106</svg>
107 font-size="635px"><tspan
108 id="tspan45"
109 class="TextPosition"
110 x="527.5459"
111 y="9189.0127"><tspan
112 style="fill:#000000"
113 id="tspan47">Video decoder</tspan></tspan></tspan></text>
114<path
115 style="fill:#ff8080"
116 inkscape:connector-curvature="0"
117 id="path51"
118 d="m 2363.5459,8053.013 -2269,0 0,-1224 4537,0 0,1224 -2268,0 z" /><path
119 style="fill:none;stroke:#3465af"
120 inkscape:connector-curvature="0"
121 id="path53"
122 d="m 2363.5459,8053.013 -2269,0 0,-1224 4537,0 0,1224 -2268,0 z" /><text
123 id="text55"
124 class="TextShape"
125 x="-2089.4541"
126 y="-2163.9871"><tspan
127 style="font-weight:400;font-size:635px;font-family:'Times New Roman', serif"
128 id="tspan57"
129 class="TextParagraph"
130 font-weight="400"
131 font-size="635px"><tspan
132 id="tspan59"
133 class="TextPosition"
134 x="481.5459"
135 y="7657.0132"><tspan
136 style="fill:#000000"
137 id="tspan61">Audio encoder</tspan></tspan></tspan></text>
138<path
139 style="fill:#ccffcc"
140 inkscape:connector-curvature="0"
141 id="path65"
142 d="m 13621.546,10385.813 -3810.0001,0 0,-1281 7620.0001,0 0,1281 -3810,0 z" /><path
143 style="fill:none;stroke:#3465af"
144 inkscape:connector-curvature="0"
145 id="path67"
146 d="m 13621.546,10385.813 -3810.0001,0 0,-1281 7620.0001,0 0,1281 -3810,0 z" /><text
147 id="text69"
148 class="TextShape"
149 x="-2089.4541"
150 y="-2446.187"><tspan
151 style="font-weight:400;font-size:635px;font-family:'Times New Roman', serif"
152 id="tspan71"
153 class="TextParagraph"
154 font-weight="400"
155 font-size="635px"><tspan
156 id="tspan73"
157 class="TextPosition"
158 x="10287.546"
159 y="9960.8135"><tspan
160 style="fill:#000000"
161 id="tspan75">Button Key/IR input logic</tspan></tspan></tspan></text>
162<path
163 style="fill:#cfe7f5"
164 inkscape:connector-curvature="0"
165 id="path79"
166 d="m 12079.546,12182.213 -2268.0001,0 0,-1412 4536.0001,0 0,1412 -2268,0 z" /><path
167 style="fill:none;stroke:#3465af"
168 inkscape:connector-curvature="0"
169 id="path81"
170 d="m 12079.546,12182.213 -2268.0001,0 0,-1412 4536.0001,0 0,1412 -2268,0 z" /><text
171 id="text83"
172 class="TextShape"
173 x="-2089.4541"
174 y="-2389.7871"><tspan
175 style="font-weight:400;font-size:635px;font-family:'Times New Roman', serif"
176 id="tspan85"
177 class="TextParagraph"
178 font-weight="400"
179 font-size="635px"><tspan
180 id="tspan87"
181 class="TextPosition"
182 x="10792.546"
183 y="11692.213"><tspan
184 style="fill:#000000"
185 id="tspan89">EEPROM</tspan></tspan></tspan></text>
186<path
187 style="fill:#ffcc99"
188 inkscape:connector-curvature="0"
189 id="path93"
190 d="m 3050.5459,15498.013 -1563,0 0,-1715 3126,0 0,1715 -1563,0 z" /><path
191 style="fill:none;stroke:#3465af"
192 inkscape:connector-curvature="0"
193 id="path95"
194 d="m 3050.5459,15498.013 -1563,0 0,-1715 3126,0 0,1715 -1563,0 z" /><text
195 id="text97"
196 class="TextShape"
197 x="-2089.4541"
198 y="-2163.9871"><tspan
199 style="font-weight:400;font-size:635px;font-family:'Times New Roman', serif"
200 id="tspan99"
201 class="TextParagraph"
202 font-weight="400"
203 font-size="635px"><tspan
204 id="tspan101"
205 class="TextPosition"
206 x="2186.5459"
207 y="14856.013"><tspan
208 style="fill:#000000"
209 id="tspan103">Sensor</tspan></tspan></tspan></text>
210<path
211 style="fill:#729fcf"
212 inkscape:connector-curvature="0"
213 id="path107"
214 d="m 4629.5459,5866.013 385,-353 0,176 1167,0 0,-176 386,353 -386,354 0,-177 -1167,0 0,177 -385,-354 z" /><path
215 style="fill:none;stroke:#3465af"
216 inkscape:connector-curvature="0"
217 id="path109"
218 d="m 4629.5459,5866.013 385,-353 0,176 1167,0 0,-176 386,353 -386,354 0,-177 -1167,0 0,177 -385,-354 z" /><path
219 style="fill:#729fcf"
220 inkscape:connector-curvature="0"
221 id="path113"
222 d="m 4629.5459,7448.013 385,-353 0,176 1167,0 0,-176 386,353 -386,354 0,-177 -1167,0 0,177 -385,-354 z" /><path
223 style="fill:none;stroke:#3465af"
224 inkscape:connector-curvature="0"
225 id="path115"
226 d="m 4629.5459,7448.013 385,-353 0,176 1167,0 0,-176 386,353 -386,354 0,-177 -1167,0 0,177 -385,-354 z" /><path
227 style="fill:#729fcf"
228 inkscape:connector-curvature="0"
229 id="path119"
230 d="m 4631.5459,8936.013 385,-353 0,176 1166,0 0,-176 386,353 -386,354 0,-177 -1166,0 0,177 -385,-354 z" /><path
231 style="fill:none;stroke:#3465af"
232 inkscape:connector-curvature="0"
233 id="path121"
234 d="m 4631.5459,8936.013 385,-353 0,176 1166,0 0,-176 386,353 -386,354 0,-177 -1166,0 0,177 -385,-354 z" /><path
235 style="fill:#729fcf"
236 inkscape:connector-curvature="0"
237 id="path125"
238 d="m 7872.5459,11464.213 385,-353 0,176 1166,0 0,-176 386,353 -386,354 0,-177 -1166,0 0,177 -385,-354 z" /><path
239 style="fill:none;stroke:#3465af"
240 inkscape:connector-curvature="0"
241 id="path127"
242 d="m 7872.5459,11464.213 385,-353 0,176 1166,0 0,-176 386,353 -386,354 0,-177 -1166,0 0,177 -385,-354 z" /><path
243 style="fill:#729fcf"
244 inkscape:connector-curvature="0"
245 id="path131"
246 d="m 7872.5459,9716.813 385,-353 0,176 1166,0 0,-176 386,353 -386,354 0,-177 -1166,0 0,177 -385,-354 z" /><path
247 style="fill:none;stroke:#3465af"
248 inkscape:connector-curvature="0"
249 id="path133"
250 d="m 7872.5459,9716.813 385,-353 0,176 1166,0 0,-176 386,353 -386,354 0,-177 -1166,0 0,177 -385,-354 z" /><path
251 style="fill:#729fcf"
252 inkscape:connector-curvature="0"
253 id="path137"
254 d="m 7872.5459,14994.013 670,-353 0,176 2028.0001,0 0,-176 671,353 -671,354 0,-177 -2028.0001,0 0,177 -670,-354 z" /><path
255 style="fill:none;stroke:#3465af"
256 inkscape:connector-curvature="0"
257 id="path139"
258 d="m 7872.5459,14994.013 670,-353 0,176 2028.0001,0 0,-176 671,353 -671,354 0,-177 -2028.0001,0 0,177 -670,-354 z" /><path
259 style="fill:#729fcf"
260 inkscape:connector-curvature="0"
261 id="path143"
262 d="m 17534.058,14104.529 978.488,840.891 -978.488,840.89 0,-420.862 -2960.48,0 0,420.862 -979.489,-840.89 979.489,-840.891 0,420.029 2960.48,0 0,-420.029 z" /><path
263 style="fill:none;stroke:#3465af;stroke-width:25.77035904"
264 inkscape:connector-curvature="0"
265 id="path145"
266 d="m 17534.058,14104.529 978.488,840.891 -978.488,840.89 0,-420.862 -2960.48,0 0,420.862 -979.489,-840.89 979.489,-840.891 0,420.029 2960.48,0 0,-420.029 z" /><text
267 id="text149"
268 class="TextShape"
269 x="-9922.1533"
270 y="-644.58704"><tspan
271 style="font-weight:400;font-size:706px;font-family:'Times New Roman', serif"
272 id="tspan151"
273 class="TextParagraph"
274 font-weight="400"
275 font-size="706px"><tspan
276 id="tspan153"
277 transform="matrix(0,-1,1,0,8509,40173)"
278 class="TextPosition"
279 x="14418.847"
280 y="15187.413"><tspan
281 style="fill:#000000"
282 id="tspan155">System Bus</tspan></tspan></tspan></text>
283<path
284 style="fill:#ccffff"
285 inkscape:connector-curvature="0"
286 id="path159"
287 d="m 11061.546,7098.013 -1250.0001,0 0,-875 2499.0001,0 0,875 -1249,0 z" /><path
288 style="fill:none;stroke:#3465af"
289 inkscape:connector-curvature="0"
290 id="path161"
291 d="m 11061.546,7098.013 -1250.0001,0 0,-875 2499.0001,0 0,875 -1249,0 z" /><text
292 id="text163"
293 class="TextShape"
294 x="-2089.4541"
295 y="-2163.9871"><tspan
296 style="font-weight:400;font-size:635px;font-family:'Times New Roman', serif"
297 id="tspan165"
298 class="TextParagraph"
299 font-weight="400"
300 font-size="635px"><tspan
301 id="tspan167"
302 class="TextPosition"
303 x="10125.546"
304 y="6876.0132"><tspan
305 style="fill:#000000"
306 id="tspan169">Demux</tspan></tspan></tspan></text>
307<path
308 style="fill:#729fcf"
309 inkscape:connector-curvature="0"
310 id="path173"
311 d="m 7906.5459,6601.013 373,-357 0,178 1130,0 0,-178 374,357 -374,358 0,-179 -1130,0 0,179 -373,-358 z" /><path
312 style="fill:none;stroke:#3465af"
313 inkscape:connector-curvature="0"
314 id="path175"
315 d="m 7906.5459,6601.013 373,-357 0,178 1130,0 0,-178 374,357 -374,358 0,-179 -1130,0 0,179 -373,-358 z" /><path
316 style="fill:#729fcf"
317 inkscape:connector-curvature="0"
318 id="path179"
319 d="m 7906.5459,5214.013 373,-358 0,179 1130,0 0,-179 374,358 -374,358 0,-179 -1130,0 0,179 -373,-358 z" /><path
320 style="fill:none;stroke:#3465af"
321 inkscape:connector-curvature="0"
322 id="path181"
323 d="m 7906.5459,5214.013 373,-358 0,179 1130,0 0,-179 374,358 -374,358 0,-179 -1130,0 0,179 -373,-358 z" /><path
324 style="fill:#ccffff"
325 inkscape:connector-curvature="0"
326 id="path185"
327 d="m 14232.546,5828.013 -4421.0001,0 0,-1270 8841.0001,0 0,1270 -4420,0 z" /><path
328 style="fill:none;stroke:#3465af"
329 inkscape:connector-curvature="0"
330 id="path187"
331 d="m 14232.546,5828.013 -4421.0001,0 0,-1270 8841.0001,0 0,1270 -4420,0 z" /><text
332 id="text189"
333 class="TextShape"
334 x="-2089.4541"
335 y="-2163.9871"><tspan
336 style="font-weight:400;font-size:635px;font-family:'Times New Roman', serif"
337 id="tspan191"
338 class="TextParagraph"
339 font-weight="400"
340 font-size="635px"><tspan
341 id="tspan193"
342 class="TextPosition"
343 x="10696.546"
344 y="5409.0132"><tspan
345 style="fill:#000000"
346 id="tspan195">Conditional Access Module</tspan></tspan></tspan></text>
347<path
348 style="fill:#ff8080"
349 inkscape:connector-curvature="0"
350 id="path199"
351 d="m 2355.5459,11123.013 -2269,0 0,-1224 4537,0 0,1224 -2268,0 z" /><path
352 style="fill:none;stroke:#3465af"
353 inkscape:connector-curvature="0"
354 id="path201"
355 d="m 2355.5459,11123.013 -2269,0 0,-1224 4537,0 0,1224 -2268,0 z" /><text
356 id="text203"
357 class="TextShape"
358 x="-2089.4541"
359 y="-2163.9871"><tspan
360 style="font-weight:400;font-size:635px;font-family:'Times New Roman', serif"
361 id="tspan205"
362 class="TextParagraph"
363 font-weight="400"
364 font-size="635px"><tspan
365 id="tspan207"
366 class="TextPosition"
367 x="511.5459"
368 y="10727.013"><tspan
369 style="fill:#000000"
370 id="tspan209">Video encoder</tspan></tspan></tspan></text>
371<path
372 style="fill:#729fcf"
373 inkscape:connector-curvature="0"
374 id="path213"
375 d="m 4631.5459,10470.013 385,-353 0,176 1166,0 0,-176 386,353 -386,354 0,-177 -1166,0 0,177 -385,-354 z" /><path
376 style="fill:none;stroke:#3465af"
377 inkscape:connector-curvature="0"
378 id="path215"
379 d="m 4631.5459,10470.013 385,-353 0,176 1166,0 0,-176 386,353 -386,354 0,-177 -1166,0 0,177 -385,-354 z" /><path
380 style="fill:#729fcf"
381 inkscape:connector-curvature="0"
382 id="path219"
383 d="m 18701.546,5381.013 385,-353 0,176 1166,0 0,-176 386,353 -386,354 0,-177 -1166,0 0,177 -385,-354 z" /><path
384 style="fill:none;stroke:#3465af"
385 inkscape:connector-curvature="0"
386 id="path221"
387 d="m 18701.546,5381.013 385,-353 0,176 1166,0 0,-176 386,353 -386,354 0,-177 -1166,0 0,177 -385,-354 z" /><text
388 id="text225"
389 class="TextShape"
390 x="-1976.5541"
391 y="-2163.9871"><tspan
392 style="font-weight:400;font-size:635px;font-family:'Times New Roman', serif"
393 id="tspan227"
394 class="TextParagraph"
395 font-weight="400"
396 font-size="635px"><tspan
397 id="tspan229"
398 class="TextPosition"
399 x="13.4459"
400 y="12314.013"><tspan
401 style="fill:#000000"
402 id="tspan231">Radio / Analog TV</tspan></tspan></tspan></text>
403<text
404 id="text235"
405 class="TextShape"
406 x="-2089.4541"
407 y="-2163.9871"><tspan
408 style="font-weight:700;font-size:635px;font-family:'Times New Roman', serif"
409 id="tspan237"
410 class="TextParagraph"
411 font-weight="700"
412 font-size="635px"><tspan
413 id="tspan239"
414 class="TextPosition"
415 x="12866.546"
416 y="8560.0127"><tspan
417 style="fill:#000000"
418 id="tspan241">Digital TV</tspan></tspan></tspan></text>
419<text
420 id="text245"
421 class="TextShape"
422 x="-8919.0537"
423 y="-1373.787"><tspan
424 style="font-weight:400;font-size:494px;font-family:'Times New Roman', serif"
425 id="tspan247"
426 class="TextParagraph"
427 font-weight="400"
428 font-size="494px"><tspan
429 id="tspan249"
430 class="TextPosition"
431 x="5804.9458"
432 y="17793.213"><tspan
433 style="fill:#000000"
434 id="tspan251">PS.: picture is not complete: other blocks may be present</tspan></tspan></tspan></text>
435<text
436 id="text255"
437 class="TextShape"
438 x="-2089.4541"
439 y="-2163.9871"><tspan
440 style="font-weight:400;font-size:635px;font-family:'Times New Roman', serif"
441 id="tspan257"
442 class="TextParagraph"
443 font-weight="400"
444 font-size="635px"><tspan
445 id="tspan259"
446 class="TextPosition"
447 x="2109.5459"
448 y="16397.014"><tspan
449 style="fill:#000000"
450 id="tspan261">Webcam</tspan></tspan></tspan></text>
451<path
452 style="fill:#ff9900"
453 inkscape:connector-curvature="0"
454 id="path265"
455 d="m 12462.546,13925.813 -2650.0001,0 0,-1412 5299.0001,0 0,1412 -2649,0 z" /><path
456 style="fill:none;stroke:#3465af"
457 inkscape:connector-curvature="0"
458 id="path267"
459 d="m 12462.546,13925.813 -2650.0001,0 0,-1412 5299.0001,0 0,1412 -2649,0 z" /><text
460 id="text269"
461 class="TextShape"
462 x="-2089.4541"
463 y="-2446.187"><tspan
464 style="font-weight:400;font-size:635px;font-family:'Times New Roman', serif"
465 id="tspan271"
466 class="TextParagraph"
467 font-weight="400"
468 font-size="635px"><tspan
469 id="tspan273"
470 class="TextPosition"
471 x="10175.546"
472 y="13435.813"><tspan
473 style="fill:#000000"
474 id="tspan275">Processing blocks</tspan></tspan></tspan></text>
475<path
476 style="fill:#729fcf"
477 inkscape:connector-curvature="0"
478 id="path279"
479 d="m 7872.5459,13207.813 385,-353 0,176 1166,0 0,-176 386,353 -386,354 0,-177 -1166,0 0,177 -385,-354 z" /><path
480 style="fill:none;stroke:#3465af"
481 inkscape:connector-curvature="0"
482 id="path281"
483 d="m 7872.5459,13207.813 385,-353 0,176 1166,0 0,-176 386,353 -386,354 0,-177 -1166,0 0,177 -385,-354 z" /><path
484 style="fill:#729fcf"
485 inkscape:connector-curvature="0"
486 id="path285"
487 d="m 4612.5459,14790.013 397,-353 0,176 1201,0 0,-176 398,353 -398,354 0,-177 -1201,0 0,177 -397,-354 z" /><path
488 style="fill:none;stroke:#3465af"
489 inkscape:connector-curvature="0"
490 id="path287"
491 d="m 4612.5459,14790.013 397,-353 0,176 1201,0 0,-176 398,353 -398,354 0,-177 -1201,0 0,177 -397,-354 z" /><text
492 id="text291"
493 class="TextShape"
494 x="-2428.0542"
495 y="-2163.9871"><tspan
496 style="font-weight:400;font-size:635px;font-family:'Times New Roman', serif"
497 id="tspan293"
498 class="TextParagraph"
499 font-weight="400"
500 font-size="635px"><tspan
501 id="tspan295"
502 class="TextPosition"
503 x="20421.945"
504 y="6628.0132"><tspan
505 style="fill:#000000"
506 id="tspan297">Smartcard</tspan></tspan></tspan></text>
507<path
508 style="fill:#ffccff"
509 inkscape:connector-curvature="0"
510 id="path301"
511 d="m 623.3227,436.013 c -334.5984,0 -669.1968,333 -669.1968,666 l 0,2668 c 0,333 334.5984,666 669.1968,666 l 18456.1663,0 c 334.598,0 670.202,-333 670.202,-666 l 0,-2668 c 0,-333 -335.604,-666 -670.202,-666 l -18456.1663,0 z" /><path
512 style="fill:#ff8080"
513 inkscape:connector-curvature="0"
514 id="path305"
515 d="m 3031.5459,2991.013 -1614,0 0,-1816 3227,0 0,1816 -1613,0 z" /><path
516 style="fill:none;stroke:#3465af"
517 inkscape:connector-curvature="0"
518 id="path307"
519 d="m 3031.5459,2991.013 -1614,0 0,-1816 3227,0 0,1816 -1613,0 z" /><text
520 style="font-weight:400;font-size:635px;font-family:'Times New Roman', serif"
521 id="text309"
522 class="TextShape"
523 font-weight="400"
524 font-size="635px"
525 x="-2089.4541"
526 y="-2163.9871"><tspan
527 id="tspan311"
528 class="TextParagraph"><tspan
529 id="tspan313"
530 class="TextPosition"
531 x="2284.5459"
532 y="1947.0129"><tspan
533 style="fill:#000000"
534 id="tspan315">Tuner</tspan></tspan></tspan><tspan
535 id="tspan317"
536 class="TextParagraph"><tspan
537 id="tspan319"
538 class="TextPosition"
539 x="2061.5459"
540 y="2650.0129"><tspan
541 style="fill:#000000"
542 id="tspan321">FM/TV</tspan></tspan></tspan></text>
543<path
544 style="fill:#ff8080"
545 inkscape:connector-curvature="0"
546 id="path325"
547 d="m 812.5459,1538.013 c 0,111 40,202 88,202 l 530,0 c 48,0 89,-91 89,-202 0,-110 -41,-202 -89,-202 l -530,0 c -48,0 -88,92 -88,202 z" /><path
548 style="fill:none;stroke:#3465af"
549 inkscape:connector-curvature="0"
550 id="path327"
551 d="m 812.5459,1538.013 c 0,111 40,202 88,202 l 530,0 c 48,0 89,-91 89,-202 0,-110 -41,-202 -89,-202 l -530,0 c -48,0 -88,92 -88,202 z" /><path
552 style="fill:#ffb3b3"
553 inkscape:connector-curvature="0"
554 id="path329"
555 d="m 812.5459,1538.013 c 0,111 40,202 88,202 48,0 88,-91 88,-202 0,-110 -40,-202 -88,-202 -48,0 -88,92 -88,202 z" /><path
556 style="fill:none;stroke:#3465af"
557 inkscape:connector-curvature="0"
558 id="path331"
559 d="m 812.5459,1538.013 c 0,111 40,202 88,202 48,0 88,-91 88,-202 0,-110 -40,-202 -88,-202 -48,0 -88,92 -88,202 z" /><path
560 style="fill:#ff8080"
561 inkscape:connector-curvature="0"
562 id="path335"
563 d="m 813.5459,2103.013 c 0,110 40,202 88,202 l 530,0 c 48,0 89,-92 89,-202 0,-110 -41,-203 -89,-203 l -530,0 c -48,0 -88,93 -88,203 z" /><path
564 style="fill:none;stroke:#3465af"
565 inkscape:connector-curvature="0"
566 id="path337"
567 d="m 813.5459,2103.013 c 0,110 40,202 88,202 l 530,0 c 48,0 89,-92 89,-202 0,-110 -41,-203 -89,-203 l -530,0 c -48,0 -88,93 -88,203 z" /><path
568 style="fill:#ffb3b3"
569 inkscape:connector-curvature="0"
570 id="path339"
571 d="m 813.5459,2103.013 c 0,110 40,202 88,202 48,0 88,-92 88,-202 0,-110 -40,-203 -88,-203 -48,0 -88,93 -88,203 z" /><path
572 style="fill:none;stroke:#3465af"
573 inkscape:connector-curvature="0"
574 id="path341"
575 d="m 813.5459,2103.013 c 0,110 40,202 88,202 48,0 88,-92 88,-202 0,-110 -40,-203 -88,-203 -48,0 -88,93 -88,203 z" /><path
576 style="fill:#729fcf"
577 inkscape:connector-curvature="0"
578 id="path345"
579 d="m 4629.5459,2032.013 385,-353 0,176 1167,0 0,-176 386,353 -386,354 0,-177 -1167,0 0,177 -385,-354 z" /><path
580 style="fill:none;stroke:#3465af"
581 inkscape:connector-curvature="0"
582 id="path347"
583 d="m 4629.5459,2032.013 385,-353 0,176 1167,0 0,-176 386,353 -386,354 0,-177 -1167,0 0,177 -385,-354 z" /><path
584 style="fill:#729fcf"
585 inkscape:connector-curvature="0"
586 id="path351"
587 d="m 7889.5459,1986.013 402,-368 0,184 1217,0 0,-184 403,368 -403,369 0,-185 -1217,0 0,185 -402,-369 z" /><path
588 style="fill:none;stroke:#3465af"
589 inkscape:connector-curvature="0"
590 id="path353"
591 d="m 7889.5459,1986.013 402,-368 0,184 1217,0 0,-184 403,368 -403,369 0,-185 -1217,0 0,185 -402,-369 z" /><path
592 style="fill:#ccffff"
593 inkscape:connector-curvature="0"
594 id="path357"
595 d="m 14410.546,4025.013 -4500.0001,0 0,-1389 9000.0001,0 0,1389 -4500,0 z" /><path
596 style="fill:none;stroke:#3465af"
597 inkscape:connector-curvature="0"
598 id="path359"
599 d="m 14410.546,4025.013 -4500.0001,0 0,-1389 9000.0001,0 0,1389 -4500,0 z" /><text
600 id="text361"
601 class="TextShape"
602 x="-2089.4541"
603 y="-2163.9871"><tspan
604 style="font-weight:400;font-size:635px;font-family:'Times New Roman', serif"
605 id="tspan363"
606 class="TextParagraph"
607 font-weight="400"
608 font-size="635px"><tspan
609 id="tspan365"
610 class="TextPosition"
611 x="9961.5459"
612 y="3546.0129"><tspan
613 style="fill:#000000"
614 id="tspan367">Satellite Equipment Control (SEC)</tspan></tspan></tspan></text>
615<path
616 style="fill:#ccffff"
617 inkscape:connector-curvature="0"
618 id="path371"
619 d="m 11310.546,2436.013 -1400.0001,0 0,-1000 2800.0001,0 0,1000 -1400,0 z" /><path
620 style="fill:none;stroke:#3465af"
621 inkscape:connector-curvature="0"
622 id="path373"
623 d="m 11310.546,2436.013 -1400.0001,0 0,-1000 2800.0001,0 0,1000 -1400,0 z" /><text
624 id="text375"
625 class="TextShape"
626 x="-2089.4541"
627 y="-2163.9871"><tspan
628 style="font-weight:400;font-size:635px;font-family:'Times New Roman', serif"
629 id="tspan377"
630 class="TextParagraph"
631 font-weight="400"
632 font-size="635px"><tspan
633 id="tspan379"
634 class="TextPosition"
635 x="10375.546"
636 y="2152.0129"><tspan
637 style="fill:#000000"
638 id="tspan381">Demod</tspan></tspan></tspan></text>
639<path
640 style="fill:#729fcf"
641 inkscape:connector-curvature="0"
642 id="path385"
643 d="m 7889.5459,3287.013 402,-368 0,184 1217,0 0,-184 403,368 -403,369 0,-185 -1217,0 0,185 -402,-369 z" /><path
644 style="fill:none;stroke:#3465af"
645 inkscape:connector-curvature="0"
646 id="path387"
647 d="m 7889.5459,3287.013 402,-368 0,184 1217,0 0,-184 403,368 -403,369 0,-185 -1217,0 0,185 -402,-369 z" /><path
648 d="m 7906.5459,9121.013 0,7302 -1270,0 0,-14605 1270,0 0,7303 z"
649 id="path389"
650 inkscape:connector-curvature="0"
651 style="fill:#ffff99" /><path
652 d="m 7906.5459,9121.013 0,7302 -1270,0 0,-14605 1270,0 0,7303 z"
653 id="path391"
654 inkscape:connector-curvature="0"
655 style="fill:none;stroke:#3465af" /><text
656 y="-6589.021"
657 x="-20792.584"
658 transform="matrix(0,-1,1,0,0,0)"
659 class="TextShape"
660 id="text393"><tspan
661 font-size="635px"
662 font-weight="400"
663 class="TextParagraph"
664 id="tspan395"
665 style="font-weight:400;font-size:635px;font-family:'Times New Roman', serif"><tspan
666 y="7460.9849"
667 x="-11215.646"
668 class="TextPosition"
669 transform="matrix(0,-1,1,0,-4473,23627)"
670 id="tspan397"><tspan
671 id="tspan399"
672 style="fill:#000000">I2C Bus (control bus)</tspan></tspan></tspan></text>
673<text
674 id="text403"
675 class="TextShape"
676 x="-2145.854"
677 y="-2163.9871"><tspan
678 style="font-weight:400;font-size:635px;font-family:'Times New Roman', serif"
679 id="tspan405"
680 class="TextParagraph"
681 font-weight="400"
682 font-size="635px"><tspan
683 id="tspan407"
684 class="TextPosition"
685 x="7245.146"
686 y="1114.0129"><tspan
687 style="fill:#000000"
688 id="tspan409">Digital TV Frontend</tspan></tspan></tspan></text>
689<path
690 style="fill:none;stroke:#3465af;stroke-width:28.432024"
691 d="m 863.1459,636.145 c -18.27,0 -35.525,0.99994 -53.795,2.99982"
692 id="path415"
693 inkscape:connector-curvature="0" /><path
694 style="fill:none;stroke:#3465af;stroke-width:28.432024"
695 d="m 776.8709,644.14452 c -17.255,2.99982 -35.525,6.99958 -52.78,11.99928"
696 id="path417"
697 inkscape:connector-curvature="0" /><path
698 style="fill:none;stroke:#3465af;stroke-width:28.432024"
699 d="m 692.6259,666.1432 c -16.24,5.99964 -33.495,11.99928 -49.735,19.9988"
700 id="path419"
701 inkscape:connector-curvature="0" /><path
702 style="fill:none;stroke:#3465af;stroke-width:28.432024"
703 d="m 613.4559,700.14116 c -15.225,7.99952 -31.465,16.99898 -46.69,26.99838"
704 id="path421"
705 inkscape:connector-curvature="0" /><path
706 style="fill:none;stroke:#3465af;stroke-width:28.432024"
707 d="m 539.3609,745.13846 c -14.21,9.9994 -28.42,20.99874 -42.63,31.99808"
708 id="path423"
709 inkscape:connector-curvature="0" /><path
710 style="fill:none;stroke:#3465af;stroke-width:28.432024"
711 d="m 471.3559,798.13528 c -13.195,11.99928 -26.39,23.99856 -38.57,36.99778"
712 id="path425"
713 inkscape:connector-curvature="0" /><path
714 style="fill:none;stroke:#3465af;stroke-width:28.432024"
715 d="m 410.4559,859.13162 c -11.165,12.99922 -22.33,26.99838 -33.495,40.99754"
716 id="path427"
717 inkscape:connector-curvature="0" /><path
718 style="fill:none;stroke:#3465af;stroke-width:28.432024"
719 d="m 357.6759,927.12754 c -10.15,13.99916 -19.285,28.99826 -28.42,44.9973"
720 id="path429"
721 inkscape:connector-curvature="0" /><path
722 style="fill:none;stroke:#3465af;stroke-width:28.432024"
723 d="m 314.0309,1000.1232 c -8.12,15.999 -15.225,31.998 -22.33,48.997"
724 id="path431"
725 inkscape:connector-curvature="0" /><path
726 style="fill:none;stroke:#3465af;stroke-width:28.432024"
727 d="m 280.5359,1079.1184 c -5.075,16.999 -10.15,33.998 -14.21,50.997"
728 id="path433"
729 inkscape:connector-curvature="0" /><path
730 style="fill:none;stroke:#3465af;stroke-width:28.432024"
731 d="m 260.2359,1162.1134 c -3.045,17.999 -5.075,34.9979 -6.09,52.9969"
732 id="path435"
733 inkscape:connector-curvature="0" /><path
734 style="fill:none;stroke:#3465af;stroke-width:28.432024"
735 d="m 254.1459,1247.1083 0,52.9969"
736 id="path437"
737 inkscape:connector-curvature="0" /><path
738 style="fill:none;stroke:#3465af;stroke-width:28.432024"
739 d="m 254.1459,1333.1032 0,52.9968"
740 id="path439"
741 inkscape:connector-curvature="0" /><path
742 style="fill:none;stroke:#3465af;stroke-width:28.432024"
743 d="m 254.1459,1418.0981 0,52.9968"
744 id="path441"
745 inkscape:connector-curvature="0" /><path
746 style="fill:none;stroke:#3465af;stroke-width:28.432024"
747 d="m 254.1459,1504.0929 0,52.9968"
748 id="path443"
749 inkscape:connector-curvature="0" /><path
750 style="fill:none;stroke:#3465af;stroke-width:28.432024"
751 d="m 254.1459,1589.0878 0,52.9968"
752 id="path445"
753 inkscape:connector-curvature="0" /><path
754 style="fill:none;stroke:#3465af;stroke-width:28.432024"
755 d="m 254.1459,1675.0827 0,52.9968"
756 id="path447"
757 inkscape:connector-curvature="0" /><path
758 style="fill:none;stroke:#3465af;stroke-width:28.432024"
759 d="m 254.1459,1760.0776 0,52.9968"
760 id="path449"
761 inkscape:connector-curvature="0" /><path
762 style="fill:none;stroke:#3465af;stroke-width:28.432024"
763 d="m 254.1459,1845.0725 0,53.9967"
764 id="path451"
765 inkscape:connector-curvature="0" /><path
766 style="fill:none;stroke:#3465af;stroke-width:28.432024"
767 d="m 254.1459,1931.0673 0,52.9968"
768 id="path453"
769 inkscape:connector-curvature="0" /><path
770 style="fill:none;stroke:#3465af;stroke-width:28.432024"
771 d="m 254.1459,2016.0622 0,52.9968"
772 id="path455"
773 inkscape:connector-curvature="0" /><path
774 style="fill:none;stroke:#3465af;stroke-width:28.432024"
775 d="m 254.1459,2102.057 0,52.9969"
776 id="path457"
777 inkscape:connector-curvature="0" /><path
778 style="fill:none;stroke:#3465af;stroke-width:28.432024"
779 d="m 254.1459,2187.0519 0,52.9969"
780 id="path459"
781 inkscape:connector-curvature="0" /><path
782 style="fill:none;stroke:#3465af;stroke-width:28.432024"
783 d="m 254.1459,2273.0468 0,52.9968"
784 id="path461"
785 inkscape:connector-curvature="0" /><path
786 style="fill:none;stroke:#3465af;stroke-width:28.432024"
787 d="m 254.1459,2358.0417 0,52.9968"
788 id="path463"
789 inkscape:connector-curvature="0" /><path
790 style="fill:none;stroke:#3465af;stroke-width:28.432024"
791 d="m 254.1459,2443.0366 0,53.9967"
792 id="path465"
793 inkscape:connector-curvature="0" /><path
794 style="fill:none;stroke:#3465af;stroke-width:28.432024"
795 d="m 254.1459,2529.0314 0,52.9968"
796 id="path467"
797 inkscape:connector-curvature="0" /><path
798 style="fill:none;stroke:#3465af;stroke-width:28.432024"
799 d="m 254.1459,2614.0263 0,52.9968"
800 id="path469"
801 inkscape:connector-curvature="0" /><path
802 style="fill:none;stroke:#3465af;stroke-width:28.432024"
803 d="m 254.1459,2700.0212 0,52.9968"
804 id="path471"
805 inkscape:connector-curvature="0" /><path
806 style="fill:none;stroke:#3465af;stroke-width:28.432024"
807 d="m 254.1459,2785.0161 0,52.9968"
808 id="path473"
809 inkscape:connector-curvature="0" /><path
810 style="fill:none;stroke:#3465af;stroke-width:28.432024"
811 d="m 254.1459,2871.0109 0,52.9968"
812 id="path475"
813 inkscape:connector-curvature="0" /><path
814 style="fill:none;stroke:#3465af;stroke-width:28.432024"
815 d="m 254.1459,2956.0058 0,52.9968"
816 id="path477"
817 inkscape:connector-curvature="0" /><path
818 style="fill:none;stroke:#3465af;stroke-width:28.432024"
819 d="m 254.1459,3041.0007 0,53.9968"
820 id="path479"
821 inkscape:connector-curvature="0" /><path
822 style="fill:none;stroke:#3465af;stroke-width:28.432024"
823 d="m 254.1459,3126.9955 0,52.9969"
824 id="path481"
825 inkscape:connector-curvature="0" /><path
826 style="fill:none;stroke:#3465af;stroke-width:28.432024"
827 d="m 254.1459,3211.9904 0,52.9969"
828 id="path483"
829 inkscape:connector-curvature="0" /><path
830 style="fill:none;stroke:#3465af;stroke-width:28.432024"
831 d="m 254.1459,3297.9853 0,52.9968"
832 id="path485"
833 inkscape:connector-curvature="0" /><path
834 style="fill:none;stroke:#3465af;stroke-width:28.432024"
835 d="m 254.1459,3382.9802 0,52.9968"
836 id="path487"
837 inkscape:connector-curvature="0" /><path
838 style="fill:none;stroke:#3465af;stroke-width:28.432024"
839 d="m 254.1459,3468.975 0,52.9968"
840 id="path489"
841 inkscape:connector-curvature="0" /><path
842 style="fill:none;stroke:#3465af;stroke-width:28.432024"
843 d="m 254.1459,3553.9699 0,52.9968"
844 id="path491"
845 inkscape:connector-curvature="0" /><path
846 style="fill:none;stroke:#3465af;stroke-width:28.432024"
847 d="m 254.1459,3638.9648 c 0,17.9989 1.015,35.9979 3.045,52.9968"
848 id="path493"
849 inkscape:connector-curvature="0" /><path
850 style="fill:none;stroke:#3465af;stroke-width:28.432024"
851 d="m 262.2659,3723.9597 c 4.06,17.9989 8.12,34.9979 13.195,51.9969"
852 id="path495"
853 inkscape:connector-curvature="0" /><path
854 style="fill:none;stroke:#3465af;stroke-width:28.432024"
855 d="m 285.6109,3806.9547 c 6.09,15.9991 13.195,32.9981 20.3,48.9971"
856 id="path497"
857 inkscape:connector-curvature="0" /><path
858 style="fill:none;stroke:#3465af;stroke-width:28.432024"
859 d="m 321.1359,3884.9501 c 8.12,14.9991 17.255,30.9981 27.405,45.9972"
860 id="path499"
861 inkscape:connector-curvature="0" /><path
862 style="fill:none;stroke:#3465af;stroke-width:28.432024"
863 d="m 366.8109,3957.9457 c 10.15,13.9991 21.315,27.9983 32.48,41.9975"
864 id="path501"
865 inkscape:connector-curvature="0" /><path
866 style="fill:none;stroke:#3465af;stroke-width:28.432024"
867 d="m 420.6059,4023.9417 c 12.18,12.9992 25.375,25.9985 38.57,37.9977"
868 id="path503"
869 inkscape:connector-curvature="0" /><path
870 style="fill:none;stroke:#3465af;stroke-width:28.432024"
871 d="m 483.5359,4083.9381 c 13.195,10.9994 27.405,22.9986 41.615,32.998"
872 id="path505"
873 inkscape:connector-curvature="0" /><path
874 style="fill:none;stroke:#3465af;stroke-width:28.432024"
875 d="m 552.5559,4135.935 c 14.21,9.9994 29.435,18.9989 45.675,26.9984"
876 id="path507"
877 inkscape:connector-curvature="0" /><path
878 style="fill:none;stroke:#3465af;stroke-width:28.432024"
879 d="m 627.6659,4178.9324 c 15.225,6.9996 32.48,14.9991 48.72,20.9988"
880 id="path509"
881 inkscape:connector-curvature="0" /><path
882 style="fill:none;stroke:#3465af;stroke-width:28.432024"
883 d="m 707.8509,4210.9305 c 17.255,4.9997 34.51,9.9994 51.765,13.9992"
884 id="path511"
885 inkscape:connector-curvature="0" /><path
886 style="fill:none;stroke:#3465af;stroke-width:28.432024"
887 d="m 792.0959,4230.9293 c 17.255,1.9999 35.525,3.9998 53.795,4.9997"
888 id="path513"
889 inkscape:connector-curvature="0" /><path
890 style="fill:none;stroke:#3465af;stroke-width:28.432024"
891 d="m 878.3709,4235.929 53.795,0"
892 id="path515"
893 inkscape:connector-curvature="0" /><path
894 style="fill:none;stroke:#3465af;stroke-width:28.432024"
895 d="m 964.6459,4235.929 53.795,0"
896 id="path517"
897 inkscape:connector-curvature="0" /><path
898 style="fill:none;stroke:#3465af;stroke-width:28.432024"
899 d="m 1051.9359,4235.929 53.795,0"
900 id="path519"
901 inkscape:connector-curvature="0" /><path
902 style="fill:none;stroke:#3465af;stroke-width:28.432024"
903 d="m 1138.2109,4235.929 53.795,0"
904 id="path521"
905 inkscape:connector-curvature="0" /><path
906 style="fill:none;stroke:#3465af;stroke-width:28.432024"
907 d="m 1225.5009,4235.929 53.795,0"
908 id="path523"
909 inkscape:connector-curvature="0" /><path
910 style="fill:none;stroke:#3465af;stroke-width:28.432024"
911 d="m 1311.7759,4235.929 53.795,0"
912 id="path525"
913 inkscape:connector-curvature="0" /><path
914 style="fill:none;stroke:#3465af;stroke-width:28.432024"
915 d="m 1398.0509,4235.929 54.81,0"
916 id="path527"
917 inkscape:connector-curvature="0" /><path
918 style="fill:none;stroke:#3465af;stroke-width:28.432024"
919 d="m 1485.3409,4235.929 53.795,0"
920 id="path529"
921 inkscape:connector-curvature="0" /><path
922 style="fill:none;stroke:#3465af;stroke-width:28.432024"
923 d="m 1571.6159,4235.929 53.795,0"
924 id="path531"
925 inkscape:connector-curvature="0" /><path
926 style="fill:none;stroke:#3465af;stroke-width:28.432024"
927 d="m 1658.9059,4235.929 53.795,0"
928 id="path533"
929 inkscape:connector-curvature="0" /><path
930 style="fill:none;stroke:#3465af;stroke-width:28.432024"
931 d="m 1745.1809,4235.929 53.795,0"
932 id="path535"
933 inkscape:connector-curvature="0" /><path
934 style="fill:none;stroke:#3465af;stroke-width:28.432024"
935 d="m 1832.4709,4235.929 53.795,0"
936 id="path537"
937 inkscape:connector-curvature="0" /><path
938 style="fill:none;stroke:#3465af;stroke-width:28.432024"
939 d="m 1918.7459,4235.929 53.795,0"
940 id="path539"
941 inkscape:connector-curvature="0" /><path
942 style="fill:none;stroke:#3465af;stroke-width:28.432024"
943 d="m 2005.0209,4235.929 54.81,0"
944 id="path541"
945 inkscape:connector-curvature="0" /><path
946 style="fill:none;stroke:#3465af;stroke-width:28.432024"
947 d="m 2092.3109,4235.929 53.795,0"
948 id="path543"
949 inkscape:connector-curvature="0" /><path
950 style="fill:none;stroke:#3465af;stroke-width:28.432024"
951 d="m 2178.5859,4235.929 53.795,0"
952 id="path545"
953 inkscape:connector-curvature="0" /><path
954 style="fill:none;stroke:#3465af;stroke-width:28.432024"
955 d="m 2265.8759,4235.929 53.795,0"
956 id="path547"
957 inkscape:connector-curvature="0" /><path
958 style="fill:none;stroke:#3465af;stroke-width:28.432024"
959 d="m 2352.1509,4235.929 53.795,0"
960 id="path549"
961 inkscape:connector-curvature="0" /><path
962 style="fill:none;stroke:#3465af;stroke-width:28.432024"
963 d="m 2439.4409,4235.929 53.795,0"
964 id="path551"
965 inkscape:connector-curvature="0" /><path
966 style="fill:none;stroke:#3465af;stroke-width:28.432024"
967 d="m 2525.7159,4235.929 53.795,0"
968 id="path553"
969 inkscape:connector-curvature="0" /><path
970 style="fill:none;stroke:#3465af;stroke-width:28.432024"
971 d="m 2611.9909,4235.929 54.81,0"
972 id="path555"
973 inkscape:connector-curvature="0" /><path
974 style="fill:none;stroke:#3465af;stroke-width:28.432024"
975 d="m 2699.2809,4235.929 53.795,0"
976 id="path557"
977 inkscape:connector-curvature="0" /><path
978 style="fill:none;stroke:#3465af;stroke-width:28.432024"
979 d="m 2785.5559,4235.929 53.795,0"
980 id="path559"
981 inkscape:connector-curvature="0" /><path
982 style="fill:none;stroke:#3465af;stroke-width:28.432024"
983 d="m 2872.8459,4235.929 53.795,0"
984 id="path561"
985 inkscape:connector-curvature="0" /><path
986 style="fill:none;stroke:#3465af;stroke-width:28.432024"
987 d="m 2959.1209,4235.929 53.795,0"
988 id="path563"
989 inkscape:connector-curvature="0" /><path
990 style="fill:none;stroke:#3465af;stroke-width:28.432024"
991 d="m 3046.4109,4235.929 53.795,0"
992 id="path565"
993 inkscape:connector-curvature="0" /><path
994 style="fill:none;stroke:#3465af;stroke-width:28.432024"
995 d="m 3132.6859,4235.929 53.795,0"
996 id="path567"
997 inkscape:connector-curvature="0" /><path
998 style="fill:none;stroke:#3465af;stroke-width:28.432024"
999 d="m 3219.9759,4235.929 53.795,0"
1000 id="path569"
1001 inkscape:connector-curvature="0" /><path
1002 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1003 d="m 3306.2509,4235.929 53.795,0"
1004 id="path571"
1005 inkscape:connector-curvature="0" /><path
1006 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1007 d="m 3392.5259,4235.929 53.795,0"
1008 id="path573"
1009 inkscape:connector-curvature="0" /><path
1010 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1011 d="m 3479.8159,4235.929 53.795,0"
1012 id="path575"
1013 inkscape:connector-curvature="0" /><path
1014 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1015 d="m 3566.0909,4235.929 53.795,0"
1016 id="path577"
1017 inkscape:connector-curvature="0" /><path
1018 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1019 d="m 3653.3809,4235.929 53.795,0"
1020 id="path579"
1021 inkscape:connector-curvature="0" /><path
1022 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1023 d="m 3739.6559,4235.929 53.795,0"
1024 id="path581"
1025 inkscape:connector-curvature="0" /><path
1026 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1027 d="m 3826.9459,4235.929 53.795,0"
1028 id="path583"
1029 inkscape:connector-curvature="0" /><path
1030 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1031 d="m 3913.2209,4235.929 53.795,0"
1032 id="path585"
1033 inkscape:connector-curvature="0" /><path
1034 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1035 d="m 3999.4959,4235.929 53.795,0"
1036 id="path587"
1037 inkscape:connector-curvature="0" /><path
1038 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1039 d="m 4086.7859,4235.929 53.795,0"
1040 id="path589"
1041 inkscape:connector-curvature="0" /><path
1042 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1043 d="m 4173.0609,4235.929 53.795,0"
1044 id="path591"
1045 inkscape:connector-curvature="0" /><path
1046 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1047 d="m 4260.3509,4235.929 53.795,0"
1048 id="path593"
1049 inkscape:connector-curvature="0" /><path
1050 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1051 d="m 4346.6259,4235.929 53.795,0"
1052 id="path595"
1053 inkscape:connector-curvature="0" /><path
1054 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1055 d="m 4433.9159,4235.929 53.795,0"
1056 id="path597"
1057 inkscape:connector-curvature="0" /><path
1058 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1059 d="m 4520.1909,4235.929 53.795,0"
1060 id="path599"
1061 inkscape:connector-curvature="0" /><path
1062 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1063 d="m 4606.4659,4235.929 54.81,0"
1064 id="path601"
1065 inkscape:connector-curvature="0" /><path
1066 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1067 d="m 4693.7559,4235.929 53.795,0"
1068 id="path603"
1069 inkscape:connector-curvature="0" /><path
1070 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1071 d="m 4780.0309,4235.929 53.795,0"
1072 id="path605"
1073 inkscape:connector-curvature="0" /><path
1074 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1075 d="m 4867.3209,4235.929 53.795,0"
1076 id="path607"
1077 inkscape:connector-curvature="0" /><path
1078 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1079 d="m 4953.5959,4235.929 53.795,0"
1080 id="path609"
1081 inkscape:connector-curvature="0" /><path
1082 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1083 d="m 5040.8859,4235.929 53.795,0"
1084 id="path611"
1085 inkscape:connector-curvature="0" /><path
1086 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1087 d="m 5127.1609,4235.929 53.795,0"
1088 id="path613"
1089 inkscape:connector-curvature="0" /><path
1090 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1091 d="m 5213.4359,4235.929 54.81,0"
1092 id="path615"
1093 inkscape:connector-curvature="0" /><path
1094 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1095 d="m 5300.7259,4235.929 53.795,0"
1096 id="path617"
1097 inkscape:connector-curvature="0" /><path
1098 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1099 d="m 5387.0009,4235.929 53.795,0"
1100 id="path619"
1101 inkscape:connector-curvature="0" /><path
1102 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1103 d="m 5474.2909,4235.929 53.795,0"
1104 id="path621"
1105 inkscape:connector-curvature="0" /><path
1106 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1107 d="m 5560.5659,4235.929 53.795,0"
1108 id="path623"
1109 inkscape:connector-curvature="0" /><path
1110 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1111 d="m 5647.8559,4235.929 53.795,0"
1112 id="path625"
1113 inkscape:connector-curvature="0" /><path
1114 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1115 d="m 5734.1309,4235.929 53.795,0"
1116 id="path627"
1117 inkscape:connector-curvature="0" /><path
1118 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1119 d="m 5820.4059,4235.929 54.81,0"
1120 id="path629"
1121 inkscape:connector-curvature="0" /><path
1122 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1123 d="m 5907.6959,4235.929 53.795,0"
1124 id="path631"
1125 inkscape:connector-curvature="0" /><path
1126 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1127 d="m 5993.9709,4235.929 53.795,0"
1128 id="path633"
1129 inkscape:connector-curvature="0" /><path
1130 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1131 d="m 6081.2609,4235.929 53.795,0"
1132 id="path635"
1133 inkscape:connector-curvature="0" /><path
1134 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1135 d="m 6167.5359,4235.929 53.795,0"
1136 id="path637"
1137 inkscape:connector-curvature="0" /><path
1138 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1139 d="m 6254.8259,4235.929 53.795,0"
1140 id="path639"
1141 inkscape:connector-curvature="0" /><path
1142 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1143 d="m 6341.1009,4235.929 53.795,0"
1144 id="path641"
1145 inkscape:connector-curvature="0" /><path
1146 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1147 d="m 6427.3759,4235.929 54.81,0"
1148 id="path643"
1149 inkscape:connector-curvature="0" /><path
1150 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1151 d="m 6514.6659,4235.929 53.795,0"
1152 id="path645"
1153 inkscape:connector-curvature="0" /><path
1154 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1155 d="m 6600.9409,4235.929 53.795,0"
1156 id="path647"
1157 inkscape:connector-curvature="0" /><path
1158 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1159 d="m 6688.2309,4235.929 53.795,0"
1160 id="path649"
1161 inkscape:connector-curvature="0" /><path
1162 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1163 d="m 6774.5059,4235.929 53.795,0"
1164 id="path651"
1165 inkscape:connector-curvature="0" /><path
1166 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1167 d="m 6861.7959,4235.929 53.795,0"
1168 id="path653"
1169 inkscape:connector-curvature="0" /><path
1170 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1171 d="m 6948.0709,4235.929 53.795,0"
1172 id="path655"
1173 inkscape:connector-curvature="0" /><path
1174 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1175 d="m 7035.3609,4235.929 53.795,0"
1176 id="path657"
1177 inkscape:connector-curvature="0" /><path
1178 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1179 d="m 7121.6359,4235.929 53.795,0"
1180 id="path659"
1181 inkscape:connector-curvature="0" /><path
1182 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1183 d="m 7207.9109,4235.929 53.795,0"
1184 id="path661"
1185 inkscape:connector-curvature="0" /><path
1186 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1187 d="m 7295.2009,4235.929 53.795,0"
1188 id="path663"
1189 inkscape:connector-curvature="0" /><path
1190 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1191 d="m 7381.4759,4235.929 53.795,0"
1192 id="path665"
1193 inkscape:connector-curvature="0" /><path
1194 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1195 d="m 7468.7659,4235.929 53.795,0"
1196 id="path667"
1197 inkscape:connector-curvature="0" /><path
1198 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1199 d="m 7555.0409,4235.929 53.795,0"
1200 id="path669"
1201 inkscape:connector-curvature="0" /><path
1202 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1203 d="m 7642.3309,4235.929 53.795,0"
1204 id="path671"
1205 inkscape:connector-curvature="0" /><path
1206 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1207 d="m 7728.6059,4235.929 53.795,0"
1208 id="path673"
1209 inkscape:connector-curvature="0" /><path
1210 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1211 d="m 7814.8809,4235.929 53.795,0"
1212 id="path675"
1213 inkscape:connector-curvature="0" /><path
1214 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1215 d="m 7902.1709,4235.929 53.795,0"
1216 id="path677"
1217 inkscape:connector-curvature="0" /><path
1218 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1219 d="m 7988.4459,4235.929 53.795,0"
1220 id="path679"
1221 inkscape:connector-curvature="0" /><path
1222 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1223 d="m 8075.7359,4235.929 53.795,0"
1224 id="path681"
1225 inkscape:connector-curvature="0" /><path
1226 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1227 d="m 8162.0109,4235.929 53.795,0"
1228 id="path683"
1229 inkscape:connector-curvature="0" /><path
1230 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1231 d="m 8249.3009,4235.929 53.795,0"
1232 id="path685"
1233 inkscape:connector-curvature="0" /><path
1234 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1235 d="m 8335.5759,4235.929 53.795,0"
1236 id="path687"
1237 inkscape:connector-curvature="0" /><path
1238 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1239 d="m 8421.8509,4235.929 53.795,0"
1240 id="path689"
1241 inkscape:connector-curvature="0" /><path
1242 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1243 d="m 8509.1409,4235.929 53.795,0"
1244 id="path691"
1245 inkscape:connector-curvature="0" /><path
1246 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1247 d="m 8595.4159,4235.929 53.795,0"
1248 id="path693"
1249 inkscape:connector-curvature="0" /><path
1250 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1251 d="m 8682.7059,4235.929 53.795,0"
1252 id="path695"
1253 inkscape:connector-curvature="0" /><path
1254 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1255 d="m 8768.9809,4235.929 53.795,0"
1256 id="path697"
1257 inkscape:connector-curvature="0" /><path
1258 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1259 d="m 8856.2709,4235.929 53.795,0"
1260 id="path699"
1261 inkscape:connector-curvature="0" /><path
1262 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1263 d="m 8942.5459,4235.929 53.795,0"
1264 id="path701"
1265 inkscape:connector-curvature="0" /><path
1266 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1267 d="m 9028.8209,4235.929 54.81,0"
1268 id="path703"
1269 inkscape:connector-curvature="0" /><path
1270 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1271 d="m 9116.1109,4235.929 53.795,0"
1272 id="path705"
1273 inkscape:connector-curvature="0" /><path
1274 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1275 d="m 9202.3859,4235.929 53.795,0"
1276 id="path707"
1277 inkscape:connector-curvature="0" /><path
1278 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1279 d="m 9289.6759,4235.929 53.795,0"
1280 id="path709"
1281 inkscape:connector-curvature="0" /><path
1282 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1283 d="m 9375.9509,4235.929 53.795,0"
1284 id="path711"
1285 inkscape:connector-curvature="0" /><path
1286 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1287 d="m 9463.2409,4235.929 53.795,0"
1288 id="path713"
1289 inkscape:connector-curvature="0" /><path
1290 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1291 d="m 9549.5159,4235.929 53.795,0"
1292 id="path715"
1293 inkscape:connector-curvature="0" /><path
1294 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1295 d="m 9635.7909,4235.929 54.81,0"
1296 id="path717"
1297 inkscape:connector-curvature="0" /><path
1298 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1299 d="m 9723.0809,4235.929 53.795,0"
1300 id="path719"
1301 inkscape:connector-curvature="0" /><path
1302 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1303 d="m 9809.3559,4235.929 53.795,0"
1304 id="path721"
1305 inkscape:connector-curvature="0" /><path
1306 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1307 d="m 9896.6459,4235.929 53.795,0"
1308 id="path723"
1309 inkscape:connector-curvature="0" /><path
1310 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1311 d="m 9982.9209,4235.929 53.7951,0"
1312 id="path725"
1313 inkscape:connector-curvature="0" /><path
1314 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1315 d="m 10070.211,4235.929 53.795,0"
1316 id="path727"
1317 inkscape:connector-curvature="0" /><path
1318 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1319 d="m 10156.486,4235.929 53.795,0"
1320 id="path729"
1321 inkscape:connector-curvature="0" /><path
1322 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1323 d="m 10242.761,4235.929 54.81,0"
1324 id="path731"
1325 inkscape:connector-curvature="0" /><path
1326 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1327 d="m 10330.051,4235.929 53.795,0"
1328 id="path733"
1329 inkscape:connector-curvature="0" /><path
1330 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1331 d="m 10416.326,4235.929 53.795,0"
1332 id="path735"
1333 inkscape:connector-curvature="0" /><path
1334 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1335 d="m 10503.616,4235.929 53.795,0"
1336 id="path737"
1337 inkscape:connector-curvature="0" /><path
1338 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1339 d="m 10589.891,4235.929 53.795,0"
1340 id="path739"
1341 inkscape:connector-curvature="0" /><path
1342 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1343 d="m 10677.181,4235.929 53.795,0"
1344 id="path741"
1345 inkscape:connector-curvature="0" /><path
1346 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1347 d="m 10763.456,4235.929 53.795,0"
1348 id="path743"
1349 inkscape:connector-curvature="0" /><path
1350 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1351 d="m 10849.731,4235.929 54.81,0"
1352 id="path745"
1353 inkscape:connector-curvature="0" /><path
1354 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1355 d="m 10937.021,4235.929 53.795,0"
1356 id="path747"
1357 inkscape:connector-curvature="0" /><path
1358 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1359 d="m 11023.296,4235.929 53.795,0"
1360 id="path749"
1361 inkscape:connector-curvature="0" /><path
1362 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1363 d="m 11110.586,4235.929 53.795,0"
1364 id="path751"
1365 inkscape:connector-curvature="0" /><path
1366 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1367 d="m 11196.861,4235.929 53.795,0"
1368 id="path753"
1369 inkscape:connector-curvature="0" /><path
1370 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1371 d="m 11284.151,4235.929 53.795,0"
1372 id="path755"
1373 inkscape:connector-curvature="0" /><path
1374 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1375 d="m 11370.426,4235.929 53.795,0"
1376 id="path757"
1377 inkscape:connector-curvature="0" /><path
1378 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1379 d="m 11457.716,4235.929 53.795,0"
1380 id="path759"
1381 inkscape:connector-curvature="0" /><path
1382 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1383 d="m 11543.991,4235.929 53.795,0"
1384 id="path761"
1385 inkscape:connector-curvature="0" /><path
1386 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1387 d="m 11630.266,4235.929 53.795,0"
1388 id="path763"
1389 inkscape:connector-curvature="0" /><path
1390 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1391 d="m 11717.556,4235.929 53.795,0"
1392 id="path765"
1393 inkscape:connector-curvature="0" /><path
1394 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1395 d="m 11803.831,4235.929 53.795,0"
1396 id="path767"
1397 inkscape:connector-curvature="0" /><path
1398 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1399 d="m 11891.121,4235.929 53.795,0"
1400 id="path769"
1401 inkscape:connector-curvature="0" /><path
1402 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1403 d="m 11977.396,4235.929 53.795,0"
1404 id="path771"
1405 inkscape:connector-curvature="0" /><path
1406 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1407 d="m 12064.686,4235.929 53.795,0"
1408 id="path773"
1409 inkscape:connector-curvature="0" /><path
1410 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1411 d="m 12150.961,4235.929 53.795,0"
1412 id="path775"
1413 inkscape:connector-curvature="0" /><path
1414 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1415 d="m 12237.236,4235.929 53.795,0"
1416 id="path777"
1417 inkscape:connector-curvature="0" /><path
1418 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1419 d="m 12324.526,4235.929 53.795,0"
1420 id="path779"
1421 inkscape:connector-curvature="0" /><path
1422 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1423 d="m 12410.801,4235.929 53.795,0"
1424 id="path781"
1425 inkscape:connector-curvature="0" /><path
1426 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1427 d="m 12498.091,4235.929 53.795,0"
1428 id="path783"
1429 inkscape:connector-curvature="0" /><path
1430 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1431 d="m 12584.366,4235.929 53.795,0"
1432 id="path785"
1433 inkscape:connector-curvature="0" /><path
1434 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1435 d="m 12671.656,4235.929 53.795,0"
1436 id="path787"
1437 inkscape:connector-curvature="0" /><path
1438 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1439 d="m 12757.931,4235.929 53.795,0"
1440 id="path789"
1441 inkscape:connector-curvature="0" /><path
1442 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1443 d="m 12844.206,4235.929 54.81,0"
1444 id="path791"
1445 inkscape:connector-curvature="0" /><path
1446 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1447 d="m 12931.496,4235.929 53.795,0"
1448 id="path793"
1449 inkscape:connector-curvature="0" /><path
1450 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1451 d="m 13017.771,4235.929 53.795,0"
1452 id="path795"
1453 inkscape:connector-curvature="0" /><path
1454 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1455 d="m 13105.061,4235.929 53.795,0"
1456 id="path797"
1457 inkscape:connector-curvature="0" /><path
1458 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1459 d="m 13191.336,4235.929 53.795,0"
1460 id="path799"
1461 inkscape:connector-curvature="0" /><path
1462 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1463 d="m 13278.626,4235.929 53.795,0"
1464 id="path801"
1465 inkscape:connector-curvature="0" /><path
1466 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1467 d="m 13364.901,4235.929 53.795,0"
1468 id="path803"
1469 inkscape:connector-curvature="0" /><path
1470 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1471 d="m 13451.176,4235.929 54.81,0"
1472 id="path805"
1473 inkscape:connector-curvature="0" /><path
1474 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1475 d="m 13538.466,4235.929 53.795,0"
1476 id="path807"
1477 inkscape:connector-curvature="0" /><path
1478 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1479 d="m 13624.741,4235.929 53.795,0"
1480 id="path809"
1481 inkscape:connector-curvature="0" /><path
1482 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1483 d="m 13712.031,4235.929 53.795,0"
1484 id="path811"
1485 inkscape:connector-curvature="0" /><path
1486 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1487 d="m 13798.306,4235.929 53.795,0"
1488 id="path813"
1489 inkscape:connector-curvature="0" /><path
1490 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1491 d="m 13885.596,4235.929 53.795,0"
1492 id="path815"
1493 inkscape:connector-curvature="0" /><path
1494 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1495 d="m 13971.871,4235.929 53.795,0"
1496 id="path817"
1497 inkscape:connector-curvature="0" /><path
1498 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1499 d="m 14058.146,4235.929 54.81,0"
1500 id="path819"
1501 inkscape:connector-curvature="0" /><path
1502 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1503 d="m 14145.436,4235.929 53.795,0"
1504 id="path821"
1505 inkscape:connector-curvature="0" /><path
1506 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1507 d="m 14231.711,4235.929 53.795,0"
1508 id="path823"
1509 inkscape:connector-curvature="0" /><path
1510 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1511 d="m 14319.001,4235.929 53.795,0"
1512 id="path825"
1513 inkscape:connector-curvature="0" /><path
1514 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1515 d="m 14405.276,4235.929 53.795,0"
1516 id="path827"
1517 inkscape:connector-curvature="0" /><path
1518 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1519 d="m 14492.566,4235.929 53.795,0"
1520 id="path829"
1521 inkscape:connector-curvature="0" /><path
1522 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1523 d="m 14578.841,4235.929 53.795,0"
1524 id="path831"
1525 inkscape:connector-curvature="0" /><path
1526 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1527 d="m 14665.116,4235.929 54.81,0"
1528 id="path833"
1529 inkscape:connector-curvature="0" /><path
1530 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1531 d="m 14752.406,4235.929 53.795,0"
1532 id="path835"
1533 inkscape:connector-curvature="0" /><path
1534 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1535 d="m 14838.681,4235.929 53.795,0"
1536 id="path837"
1537 inkscape:connector-curvature="0" /><path
1538 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1539 d="m 14925.971,4235.929 53.795,0"
1540 id="path839"
1541 inkscape:connector-curvature="0" /><path
1542 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1543 d="m 15012.246,4235.929 53.795,0"
1544 id="path841"
1545 inkscape:connector-curvature="0" /><path
1546 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1547 d="m 15099.536,4235.929 53.795,0"
1548 id="path843"
1549 inkscape:connector-curvature="0" /><path
1550 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1551 d="m 15185.811,4235.929 53.795,0"
1552 id="path845"
1553 inkscape:connector-curvature="0" /><path
1554 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1555 d="m 15272.086,4235.929 54.81,0"
1556 id="path847"
1557 inkscape:connector-curvature="0" /><path
1558 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1559 d="m 15359.376,4235.929 53.795,0"
1560 id="path849"
1561 inkscape:connector-curvature="0" /><path
1562 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1563 d="m 15445.651,4235.929 53.795,0"
1564 id="path851"
1565 inkscape:connector-curvature="0" /><path
1566 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1567 d="m 15532.941,4235.929 53.795,0"
1568 id="path853"
1569 inkscape:connector-curvature="0" /><path
1570 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1571 d="m 15619.216,4235.929 53.795,0"
1572 id="path855"
1573 inkscape:connector-curvature="0" /><path
1574 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1575 d="m 15706.506,4235.929 53.795,0"
1576 id="path857"
1577 inkscape:connector-curvature="0" /><path
1578 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1579 d="m 15792.781,4235.929 53.795,0"
1580 id="path859"
1581 inkscape:connector-curvature="0" /><path
1582 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1583 d="m 15880.071,4235.929 53.795,0"
1584 id="path861"
1585 inkscape:connector-curvature="0" /><path
1586 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1587 d="m 15966.346,4235.929 53.795,0"
1588 id="path863"
1589 inkscape:connector-curvature="0" /><path
1590 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1591 d="m 16052.621,4235.929 53.795,0"
1592 id="path865"
1593 inkscape:connector-curvature="0" /><path
1594 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1595 d="m 16139.911,4235.929 53.795,0"
1596 id="path867"
1597 inkscape:connector-curvature="0" /><path
1598 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1599 d="m 16226.186,4235.929 53.795,0"
1600 id="path869"
1601 inkscape:connector-curvature="0" /><path
1602 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1603 d="m 16313.476,4235.929 53.795,0"
1604 id="path871"
1605 inkscape:connector-curvature="0" /><path
1606 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1607 d="m 16399.751,4235.929 53.795,0"
1608 id="path873"
1609 inkscape:connector-curvature="0" /><path
1610 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1611 d="m 16487.041,4235.929 53.795,0"
1612 id="path875"
1613 inkscape:connector-curvature="0" /><path
1614 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1615 d="m 16573.316,4235.929 53.795,0"
1616 id="path877"
1617 inkscape:connector-curvature="0" /><path
1618 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1619 d="m 16659.591,4235.929 53.795,0"
1620 id="path879"
1621 inkscape:connector-curvature="0" /><path
1622 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1623 d="m 16746.881,4235.929 53.795,0"
1624 id="path881"
1625 inkscape:connector-curvature="0" /><path
1626 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1627 d="m 16833.156,4235.929 53.795,0"
1628 id="path883"
1629 inkscape:connector-curvature="0" /><path
1630 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1631 d="m 16920.446,4235.929 53.795,0"
1632 id="path885"
1633 inkscape:connector-curvature="0" /><path
1634 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1635 d="m 17006.721,4235.929 53.795,0"
1636 id="path887"
1637 inkscape:connector-curvature="0" /><path
1638 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1639 d="m 17094.011,4235.929 53.795,0"
1640 id="path889"
1641 inkscape:connector-curvature="0" /><path
1642 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1643 d="m 17180.286,4235.929 53.795,0"
1644 id="path891"
1645 inkscape:connector-curvature="0" /><path
1646 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1647 d="m 17266.561,4235.929 54.81,0"
1648 id="path893"
1649 inkscape:connector-curvature="0" /><path
1650 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1651 d="m 17353.851,4235.929 53.795,0"
1652 id="path895"
1653 inkscape:connector-curvature="0" /><path
1654 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1655 d="m 17440.126,4235.929 53.795,0"
1656 id="path897"
1657 inkscape:connector-curvature="0" /><path
1658 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1659 d="m 17527.416,4235.929 53.795,0"
1660 id="path899"
1661 inkscape:connector-curvature="0" /><path
1662 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1663 d="m 17613.691,4235.929 53.795,0"
1664 id="path901"
1665 inkscape:connector-curvature="0" /><path
1666 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1667 d="m 17700.981,4235.929 53.795,0"
1668 id="path903"
1669 inkscape:connector-curvature="0" /><path
1670 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1671 d="m 17787.256,4235.929 53.795,0"
1672 id="path905"
1673 inkscape:connector-curvature="0" /><path
1674 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1675 d="m 17873.531,4235.929 54.81,0"
1676 id="path907"
1677 inkscape:connector-curvature="0" /><path
1678 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1679 d="m 17960.821,4235.929 53.795,0"
1680 id="path909"
1681 inkscape:connector-curvature="0" /><path
1682 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1683 d="m 18047.096,4235.929 53.795,0"
1684 id="path911"
1685 inkscape:connector-curvature="0" /><path
1686 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1687 d="m 18134.386,4235.929 53.795,0"
1688 id="path913"
1689 inkscape:connector-curvature="0" /><path
1690 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1691 d="m 18220.661,4235.929 53.795,0"
1692 id="path915"
1693 inkscape:connector-curvature="0" /><path
1694 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1695 d="m 18307.951,4235.929 53.795,0"
1696 id="path917"
1697 inkscape:connector-curvature="0" /><path
1698 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1699 d="m 18394.226,4235.929 53.795,0"
1700 id="path919"
1701 inkscape:connector-curvature="0" /><path
1702 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1703 d="m 18480.501,4235.929 54.81,0"
1704 id="path921"
1705 inkscape:connector-curvature="0" /><path
1706 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1707 d="m 18567.791,4235.929 53.795,0"
1708 id="path923"
1709 inkscape:connector-curvature="0" /><path
1710 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1711 d="m 18654.066,4235.929 53.795,0"
1712 id="path925"
1713 inkscape:connector-curvature="0" /><path
1714 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1715 d="m 18741.356,4235.929 c 17.255,-0.9999 35.525,-1.9999 53.795,-4.9997"
1716 id="path927"
1717 inkscape:connector-curvature="0" /><path
1718 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1719 d="m 18827.631,4225.9296 c 17.255,-3.9998 34.51,-8.9995 51.765,-13.9992"
1720 id="path929"
1721 inkscape:connector-curvature="0" /><path
1722 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1723 d="m 18910.861,4200.9311 c 16.24,-5.9996 32.48,-12.9992 48.72,-20.9987"
1724 id="path931"
1725 inkscape:connector-curvature="0" /><path
1726 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1727 d="m 18989.016,4164.9333 c 15.225,-7.9996 31.465,-16.999 45.675,-26.9984"
1728 id="path933"
1729 inkscape:connector-curvature="0" /><path
1730 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1731 d="m 19062.096,4118.936 c 14.21,-9.9994 28.42,-20.9987 42.63,-31.9981"
1732 id="path935"
1733 inkscape:connector-curvature="0" /><path
1734 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1735 d="m 19129.086,4064.9393 c 13.195,-11.9993 25.375,-24.9985 37.555,-37.9978"
1736 id="path937"
1737 inkscape:connector-curvature="0" /><path
1738 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1739 d="m 19188.971,4002.943 c 11.165,-13.9992 22.33,-27.9983 33.495,-41.9975"
1740 id="path939"
1741 inkscape:connector-curvature="0" /><path
1742 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1743 d="m 19240.736,3933.9471 c 10.15,-14.9991 19.285,-29.9982 27.405,-44.9973"
1744 id="path941"
1745 inkscape:connector-curvature="0" /><path
1746 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1747 d="m 19283.366,3859.9516 c 7.105,-15.9991 14.21,-32.9981 20.3,-48.9971"
1748 id="path943"
1749 inkscape:connector-curvature="0" /><path
1750 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1751 d="m 19314.831,3779.9564 c 5.075,-16.999 9.135,-33.998 13.195,-50.997"
1752 id="path945"
1753 inkscape:connector-curvature="0" /><path
1754 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1755 d="m 19333.101,3696.9613 c 2.03,-17.9989 4.06,-34.9979 4.06,-52.9968"
1756 id="path947"
1757 inkscape:connector-curvature="0" /><path
1758 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1759 d="m 19337.161,3611.9664 0,-53.9967"
1760 id="path949"
1761 inkscape:connector-curvature="0" /><path
1762 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1763 d="m 19337.161,3525.9716 0,-52.9968"
1764 id="path951"
1765 inkscape:connector-curvature="0" /><path
1766 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1767 d="m 19337.161,3440.9767 0,-52.9968"
1768 id="path953"
1769 inkscape:connector-curvature="0" /><path
1770 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1771 d="m 19337.161,3354.9819 0,-52.9969"
1772 id="path955"
1773 inkscape:connector-curvature="0" /><path
1774 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1775 d="m 19337.161,3269.987 0,-52.9969"
1776 id="path957"
1777 inkscape:connector-curvature="0" /><path
1778 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1779 d="m 19337.161,3183.9921 0,-52.9968"
1780 id="path959"
1781 inkscape:connector-curvature="0" /><path
1782 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1783 d="m 19337.161,3098.9972 0,-52.9968"
1784 id="path961"
1785 inkscape:connector-curvature="0" /><path
1786 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1787 d="m 19337.161,3014.0023 0,-53.9967"
1788 id="path963"
1789 inkscape:connector-curvature="0" /><path
1790 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1791 d="m 19337.161,2928.0075 0,-52.9968"
1792 id="path965"
1793 inkscape:connector-curvature="0" /><path
1794 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1795 d="m 19337.161,2843.0126 0,-52.9968"
1796 id="path967"
1797 inkscape:connector-curvature="0" /><path
1798 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1799 d="m 19337.161,2757.0177 0,-52.9968"
1800 id="path969"
1801 inkscape:connector-curvature="0" /><path
1802 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1803 d="m 19337.161,2672.0228 0,-52.9968"
1804 id="path971"
1805 inkscape:connector-curvature="0" /><path
1806 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1807 d="m 19337.161,2586.028 0,-52.9968"
1808 id="path973"
1809 inkscape:connector-curvature="0" /><path
1810 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1811 d="m 19337.161,2501.0331 0,-52.9968"
1812 id="path975"
1813 inkscape:connector-curvature="0" /><path
1814 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1815 d="m 19337.161,2415.0383 0,-52.9969"
1816 id="path977"
1817 inkscape:connector-curvature="0" /><path
1818 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1819 d="m 19337.161,2330.0434 0,-52.9969"
1820 id="path979"
1821 inkscape:connector-curvature="0" /><path
1822 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1823 d="m 19337.161,2245.0485 0,-52.9969"
1824 id="path981"
1825 inkscape:connector-curvature="0" /><path
1826 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1827 d="m 19337.161,2159.0536 0,-52.9968"
1828 id="path983"
1829 inkscape:connector-curvature="0" /><path
1830 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1831 d="m 19337.161,2074.0587 0,-52.9968"
1832 id="path985"
1833 inkscape:connector-curvature="0" /><path
1834 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1835 d="m 19337.161,1988.0639 0,-52.9968"
1836 id="path987"
1837 inkscape:connector-curvature="0" /><path
1838 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1839 d="m 19337.161,1903.069 0,-52.9968"
1840 id="path989"
1841 inkscape:connector-curvature="0" /><path
1842 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1843 d="m 19337.161,1817.0741 0,-52.9968"
1844 id="path991"
1845 inkscape:connector-curvature="0" /><path
1846 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1847 d="m 19337.161,1732.0792 0,-52.9968"
1848 id="path993"
1849 inkscape:connector-curvature="0" /><path
1850 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1851 d="m 19337.161,1647.0843 0,-52.9968"
1852 id="path995"
1853 inkscape:connector-curvature="0" /><path
1854 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1855 d="m 19337.161,1561.0895 0,-52.9968"
1856 id="path997"
1857 inkscape:connector-curvature="0" /><path
1858 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1859 d="m 19337.161,1476.0946 0,-52.9968"
1860 id="path999"
1861 inkscape:connector-curvature="0" /><path
1862 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1863 d="m 19337.161,1390.0998 0,-52.9969"
1864 id="path1001"
1865 inkscape:connector-curvature="0" /><path
1866 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1867 d="m 19337.161,1305.1049 0,-52.9969"
1868 id="path1003"
1869 inkscape:connector-curvature="0" /><path
1870 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1871 d="m 19337.161,1219.11 c -1.015,-16.999 -3.045,-34.9979 -5.075,-51.9969"
1872 id="path1005"
1873 inkscape:connector-curvature="0" /><path
1874 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1875 d="m 19325.996,1135.1151 c -4.06,-16.999 -8.12,-34.9979 -14.21,-50.997"
1876 id="path1007"
1877 inkscape:connector-curvature="0" /><path
1878 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1879 d="m 19300.621,1053.12 c -6.09,-15.9991 -13.195,-32.998 -21.315,-48.9971"
1880 id="path1009"
1881 inkscape:connector-curvature="0" /><path
1882 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1883 d="m 19264.081,976.1246 c -9.135,-15.99904 -18.27,-30.99814 -28.42,-45.99724"
1884 id="path1011"
1885 inkscape:connector-curvature="0" /><path
1886 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1887 d="m 19216.376,904.12892 c -10.15,-13.99916 -21.315,-27.99832 -33.495,-41.99748"
1888 id="path1013"
1889 inkscape:connector-curvature="0" /><path
1890 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1891 d="m 19160.551,838.13288 c -12.18,-12.99922 -24.36,-24.9985 -37.555,-36.99778"
1892 id="path1015"
1893 inkscape:connector-curvature="0" /><path
1894 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1895 d="m 19097.621,780.13636 c -14.21,-11.99928 -28.42,-21.99868 -42.63,-32.99802"
1896 id="path1017"
1897 inkscape:connector-curvature="0" /><path
1898 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1899 d="m 19027.586,729.13942 c -15.225,-8.99946 -30.45,-17.99892 -46.69,-26.99838"
1900 id="path1019"
1901 inkscape:connector-curvature="0" /><path
1902 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1903 d="m 18951.461,688.14188 c -16.24,-7.99952 -32.48,-13.99916 -49.735,-19.9988"
1904 id="path1021"
1905 inkscape:connector-curvature="0" /><path
1906 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1907 d="m 18870.261,657.14374 c -17.255,-4.9997 -34.51,-8.99946 -51.765,-11.99928"
1908 id="path1023"
1909 inkscape:connector-curvature="0" /><path
1910 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1911 d="m 18786.016,640.14476 c -18.27,-2.99982 -35.525,-3.99976 -53.795,-3.99976"
1912 id="path1025"
1913 inkscape:connector-curvature="0" /><path
1914 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1915 d="m 18699.741,636.145 -53.795,0"
1916 id="path1027"
1917 inkscape:connector-curvature="0" /><path
1918 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1919 d="m 18612.451,636.145 -53.795,0"
1920 id="path1029"
1921 inkscape:connector-curvature="0" /><path
1922 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1923 d="m 18526.176,636.145 -53.795,0"
1924 id="path1031"
1925 inkscape:connector-curvature="0" /><path
1926 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1927 d="m 18438.886,636.145 -53.795,0"
1928 id="path1033"
1929 inkscape:connector-curvature="0" /><path
1930 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1931 d="m 18352.611,636.145 -53.795,0"
1932 id="path1035"
1933 inkscape:connector-curvature="0" /><path
1934 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1935 d="m 18266.336,636.145 -54.81,0"
1936 id="path1037"
1937 inkscape:connector-curvature="0" /><path
1938 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1939 d="m 18179.046,636.145 -53.795,0"
1940 id="path1039"
1941 inkscape:connector-curvature="0" /><path
1942 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1943 d="m 18092.771,636.145 -53.795,0"
1944 id="path1041"
1945 inkscape:connector-curvature="0" /><path
1946 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1947 d="m 18005.481,636.145 -53.795,0"
1948 id="path1043"
1949 inkscape:connector-curvature="0" /><path
1950 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1951 d="m 17919.206,636.145 -53.795,0"
1952 id="path1045"
1953 inkscape:connector-curvature="0" /><path
1954 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1955 d="m 17831.916,636.145 -53.795,0"
1956 id="path1047"
1957 inkscape:connector-curvature="0" /><path
1958 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1959 d="m 17745.641,636.145 -53.795,0"
1960 id="path1049"
1961 inkscape:connector-curvature="0" /><path
1962 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1963 d="m 17659.366,636.145 -54.81,0"
1964 id="path1051"
1965 inkscape:connector-curvature="0" /><path
1966 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1967 d="m 17572.076,636.145 -53.795,0"
1968 id="path1053"
1969 inkscape:connector-curvature="0" /><path
1970 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1971 d="m 17485.801,636.145 -53.795,0"
1972 id="path1055"
1973 inkscape:connector-curvature="0" /><path
1974 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1975 d="m 17398.511,636.145 -53.795,0"
1976 id="path1057"
1977 inkscape:connector-curvature="0" /><path
1978 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1979 d="m 17312.236,636.145 -53.795,0"
1980 id="path1059"
1981 inkscape:connector-curvature="0" /><path
1982 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1983 d="m 17224.946,636.145 -53.795,0"
1984 id="path1061"
1985 inkscape:connector-curvature="0" /><path
1986 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1987 d="m 17138.671,636.145 -53.795,0"
1988 id="path1063"
1989 inkscape:connector-curvature="0" /><path
1990 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1991 d="m 17052.396,636.145 -54.81,0"
1992 id="path1065"
1993 inkscape:connector-curvature="0" /><path
1994 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1995 d="m 16965.106,636.145 -53.795,0"
1996 id="path1067"
1997 inkscape:connector-curvature="0" /><path
1998 style="fill:none;stroke:#3465af;stroke-width:28.432024"
1999 d="m 16878.831,636.145 -53.795,0"
2000 id="path1069"
2001 inkscape:connector-curvature="0" /><path
2002 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2003 d="m 16791.541,636.145 -53.795,0"
2004 id="path1071"
2005 inkscape:connector-curvature="0" /><path
2006 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2007 d="m 16705.266,636.145 -53.795,0"
2008 id="path1073"
2009 inkscape:connector-curvature="0" /><path
2010 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2011 d="m 16617.976,636.145 -53.795,0"
2012 id="path1075"
2013 inkscape:connector-curvature="0" /><path
2014 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2015 d="m 16531.701,636.145 -53.795,0"
2016 id="path1077"
2017 inkscape:connector-curvature="0" /><path
2018 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2019 d="m 16445.426,636.145 -54.81,0"
2020 id="path1079"
2021 inkscape:connector-curvature="0" /><path
2022 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2023 d="m 16358.136,636.145 -53.795,0"
2024 id="path1081"
2025 inkscape:connector-curvature="0" /><path
2026 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2027 d="m 16271.861,636.145 -53.795,0"
2028 id="path1083"
2029 inkscape:connector-curvature="0" /><path
2030 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2031 d="m 16184.571,636.145 -53.795,0"
2032 id="path1085"
2033 inkscape:connector-curvature="0" /><path
2034 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2035 d="m 16098.296,636.145 -53.795,0"
2036 id="path1087"
2037 inkscape:connector-curvature="0" /><path
2038 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2039 d="m 16011.006,636.145 -53.795,0"
2040 id="path1089"
2041 inkscape:connector-curvature="0" /><path
2042 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2043 d="m 15924.731,636.145 -53.795,0"
2044 id="path1091"
2045 inkscape:connector-curvature="0" /><path
2046 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2047 d="m 15837.441,636.145 -53.795,0"
2048 id="path1093"
2049 inkscape:connector-curvature="0" /><path
2050 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2051 d="m 15751.166,636.145 -53.795,0"
2052 id="path1095"
2053 inkscape:connector-curvature="0" /><path
2054 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2055 d="m 15664.891,636.145 -53.795,0"
2056 id="path1097"
2057 inkscape:connector-curvature="0" /><path
2058 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2059 d="m 15577.601,636.145 -53.795,0"
2060 id="path1099"
2061 inkscape:connector-curvature="0" /><path
2062 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2063 d="m 15491.326,636.145 -53.795,0"
2064 id="path1101"
2065 inkscape:connector-curvature="0" /><path
2066 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2067 d="m 15404.036,636.145 -53.795,0"
2068 id="path1103"
2069 inkscape:connector-curvature="0" /><path
2070 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2071 d="m 15317.761,636.145 -53.795,0"
2072 id="path1105"
2073 inkscape:connector-curvature="0" /><path
2074 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2075 d="m 15230.471,636.145 -53.795,0"
2076 id="path1107"
2077 inkscape:connector-curvature="0" /><path
2078 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2079 d="m 15144.196,636.145 -53.795,0"
2080 id="path1109"
2081 inkscape:connector-curvature="0" /><path
2082 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2083 d="m 15057.921,636.145 -53.795,0"
2084 id="path1111"
2085 inkscape:connector-curvature="0" /><path
2086 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2087 d="m 14970.631,636.145 -53.795,0"
2088 id="path1113"
2089 inkscape:connector-curvature="0" /><path
2090 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2091 d="m 14884.356,636.145 -53.795,0"
2092 id="path1115"
2093 inkscape:connector-curvature="0" /><path
2094 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2095 d="m 14797.066,636.145 -53.795,0"
2096 id="path1117"
2097 inkscape:connector-curvature="0" /><path
2098 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2099 d="m 14710.791,636.145 -53.795,0"
2100 id="path1119"
2101 inkscape:connector-curvature="0" /><path
2102 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2103 d="m 14623.501,636.145 -53.795,0"
2104 id="path1121"
2105 inkscape:connector-curvature="0" /><path
2106 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2107 d="m 14537.226,636.145 -53.795,0"
2108 id="path1123"
2109 inkscape:connector-curvature="0" /><path
2110 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2111 d="m 14450.951,636.145 -54.81,0"
2112 id="path1125"
2113 inkscape:connector-curvature="0" /><path
2114 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2115 d="m 14363.661,636.145 -53.795,0"
2116 id="path1127"
2117 inkscape:connector-curvature="0" /><path
2118 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2119 d="m 14277.386,636.145 -53.795,0"
2120 id="path1129"
2121 inkscape:connector-curvature="0" /><path
2122 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2123 d="m 14190.096,636.145 -53.795,0"
2124 id="path1131"
2125 inkscape:connector-curvature="0" /><path
2126 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2127 d="m 14103.821,636.145 -53.795,0"
2128 id="path1133"
2129 inkscape:connector-curvature="0" /><path
2130 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2131 d="m 14016.531,636.145 -53.795,0"
2132 id="path1135"
2133 inkscape:connector-curvature="0" /><path
2134 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2135 d="m 13930.256,636.145 -53.795,0"
2136 id="path1137"
2137 inkscape:connector-curvature="0" /><path
2138 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2139 d="m 13843.981,636.145 -54.81,0"
2140 id="path1139"
2141 inkscape:connector-curvature="0" /><path
2142 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2143 d="m 13756.691,636.145 -53.795,0"
2144 id="path1141"
2145 inkscape:connector-curvature="0" /><path
2146 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2147 d="m 13670.416,636.145 -53.795,0"
2148 id="path1143"
2149 inkscape:connector-curvature="0" /><path
2150 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2151 d="m 13583.126,636.145 -53.795,0"
2152 id="path1145"
2153 inkscape:connector-curvature="0" /><path
2154 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2155 d="m 13496.851,636.145 -53.795,0"
2156 id="path1147"
2157 inkscape:connector-curvature="0" /><path
2158 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2159 d="m 13409.561,636.145 -53.795,0"
2160 id="path1149"
2161 inkscape:connector-curvature="0" /><path
2162 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2163 d="m 13323.286,636.145 -53.795,0"
2164 id="path1151"
2165 inkscape:connector-curvature="0" /><path
2166 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2167 d="m 13237.011,636.145 -54.81,0"
2168 id="path1153"
2169 inkscape:connector-curvature="0" /><path
2170 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2171 d="m 13149.721,636.145 -53.795,0"
2172 id="path1155"
2173 inkscape:connector-curvature="0" /><path
2174 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2175 d="m 13063.446,636.145 -53.795,0"
2176 id="path1157"
2177 inkscape:connector-curvature="0" /><path
2178 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2179 d="m 12976.156,636.145 -53.795,0"
2180 id="path1159"
2181 inkscape:connector-curvature="0" /><path
2182 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2183 d="m 12889.881,636.145 -53.795,0"
2184 id="path1161"
2185 inkscape:connector-curvature="0" /><path
2186 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2187 d="m 12802.591,636.145 -53.795,0"
2188 id="path1163"
2189 inkscape:connector-curvature="0" /><path
2190 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2191 d="m 12716.316,636.145 -53.795,0"
2192 id="path1165"
2193 inkscape:connector-curvature="0" /><path
2194 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2195 d="m 12630.041,636.145 -54.81,0"
2196 id="path1167"
2197 inkscape:connector-curvature="0" /><path
2198 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2199 d="m 12542.751,636.145 -53.795,0"
2200 id="path1169"
2201 inkscape:connector-curvature="0" /><path
2202 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2203 d="m 12456.476,636.145 -53.795,0"
2204 id="path1171"
2205 inkscape:connector-curvature="0" /><path
2206 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2207 d="m 12369.186,636.145 -53.795,0"
2208 id="path1173"
2209 inkscape:connector-curvature="0" /><path
2210 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2211 d="m 12282.911,636.145 -53.795,0"
2212 id="path1175"
2213 inkscape:connector-curvature="0" /><path
2214 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2215 d="m 12195.621,636.145 -53.795,0"
2216 id="path1177"
2217 inkscape:connector-curvature="0" /><path
2218 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2219 d="m 12109.346,636.145 -53.795,0"
2220 id="path1179"
2221 inkscape:connector-curvature="0" /><path
2222 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2223 d="m 12022.056,636.145 -53.795,0"
2224 id="path1181"
2225 inkscape:connector-curvature="0" /><path
2226 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2227 d="m 11935.781,636.145 -53.795,0"
2228 id="path1183"
2229 inkscape:connector-curvature="0" /><path
2230 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2231 d="m 11849.506,636.145 -53.795,0"
2232 id="path1185"
2233 inkscape:connector-curvature="0" /><path
2234 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2235 d="m 11762.216,636.145 -53.795,0"
2236 id="path1187"
2237 inkscape:connector-curvature="0" /><path
2238 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2239 d="m 11675.941,636.145 -53.795,0"
2240 id="path1189"
2241 inkscape:connector-curvature="0" /><path
2242 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2243 d="m 11588.651,636.145 -53.795,0"
2244 id="path1191"
2245 inkscape:connector-curvature="0" /><path
2246 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2247 d="m 11502.376,636.145 -53.795,0"
2248 id="path1193"
2249 inkscape:connector-curvature="0" /><path
2250 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2251 d="m 11415.086,636.145 -53.795,0"
2252 id="path1195"
2253 inkscape:connector-curvature="0" /><path
2254 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2255 d="m 11328.811,636.145 -53.795,0"
2256 id="path1197"
2257 inkscape:connector-curvature="0" /><path
2258 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2259 d="m 11242.536,636.145 -53.795,0"
2260 id="path1199"
2261 inkscape:connector-curvature="0" /><path
2262 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2263 d="m 11155.246,636.145 -53.795,0"
2264 id="path1201"
2265 inkscape:connector-curvature="0" /><path
2266 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2267 d="m 11068.971,636.145 -53.795,0"
2268 id="path1203"
2269 inkscape:connector-curvature="0" /><path
2270 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2271 d="m 10981.681,636.145 -53.795,0"
2272 id="path1205"
2273 inkscape:connector-curvature="0" /><path
2274 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2275 d="m 10895.406,636.145 -53.795,0"
2276 id="path1207"
2277 inkscape:connector-curvature="0" /><path
2278 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2279 d="m 10808.116,636.145 -53.795,0"
2280 id="path1209"
2281 inkscape:connector-curvature="0" /><path
2282 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2283 d="m 10721.841,636.145 -53.795,0"
2284 id="path1211"
2285 inkscape:connector-curvature="0" /><path
2286 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2287 d="m 10635.566,636.145 -53.795,0"
2288 id="path1213"
2289 inkscape:connector-curvature="0" /><path
2290 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2291 d="m 10548.276,636.145 -53.795,0"
2292 id="path1215"
2293 inkscape:connector-curvature="0" /><path
2294 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2295 d="m 10462.001,636.145 -53.795,0"
2296 id="path1217"
2297 inkscape:connector-curvature="0" /><path
2298 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2299 d="m 10374.711,636.145 -53.795,0"
2300 id="path1219"
2301 inkscape:connector-curvature="0" /><path
2302 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2303 d="m 10288.436,636.145 -53.795,0"
2304 id="path1221"
2305 inkscape:connector-curvature="0" /><path
2306 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2307 d="m 10201.146,636.145 -53.795,0"
2308 id="path1223"
2309 inkscape:connector-curvature="0" /><path
2310 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2311 d="m 10114.871,636.145 -53.795,0"
2312 id="path1225"
2313 inkscape:connector-curvature="0" /><path
2314 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2315 d="m 10028.596,636.145 -54.8101,0"
2316 id="path1227"
2317 inkscape:connector-curvature="0" /><path
2318 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2319 d="m 9941.3059,636.145 -53.795,0"
2320 id="path1229"
2321 inkscape:connector-curvature="0" /><path
2322 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2323 d="m 9855.0309,636.145 -53.795,0"
2324 id="path1231"
2325 inkscape:connector-curvature="0" /><path
2326 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2327 d="m 9767.7409,636.145 -53.795,0"
2328 id="path1233"
2329 inkscape:connector-curvature="0" /><path
2330 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2331 d="m 9681.4659,636.145 -53.795,0"
2332 id="path1235"
2333 inkscape:connector-curvature="0" /><path
2334 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2335 d="m 9594.1759,636.145 -53.795,0"
2336 id="path1237"
2337 inkscape:connector-curvature="0" /><path
2338 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2339 d="m 9507.9009,636.145 -53.795,0"
2340 id="path1239"
2341 inkscape:connector-curvature="0" /><path
2342 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2343 d="m 9421.6259,636.145 -54.81,0"
2344 id="path1241"
2345 inkscape:connector-curvature="0" /><path
2346 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2347 d="m 9334.3359,636.145 -53.795,0"
2348 id="path1243"
2349 inkscape:connector-curvature="0" /><path
2350 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2351 d="m 9248.0609,636.145 -53.795,0"
2352 id="path1245"
2353 inkscape:connector-curvature="0" /><path
2354 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2355 d="m 9160.7709,636.145 -53.795,0"
2356 id="path1247"
2357 inkscape:connector-curvature="0" /><path
2358 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2359 d="m 9074.4959,636.145 -53.795,0"
2360 id="path1249"
2361 inkscape:connector-curvature="0" /><path
2362 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2363 d="m 8987.2059,636.145 -53.795,0"
2364 id="path1251"
2365 inkscape:connector-curvature="0" /><path
2366 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2367 d="m 8900.9309,636.145 -53.795,0"
2368 id="path1253"
2369 inkscape:connector-curvature="0" /><path
2370 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2371 d="m 8814.6559,636.145 -54.81,0"
2372 id="path1255"
2373 inkscape:connector-curvature="0" /><path
2374 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2375 d="m 8727.3659,636.145 -53.795,0"
2376 id="path1257"
2377 inkscape:connector-curvature="0" /><path
2378 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2379 d="m 8641.0909,636.145 -53.795,0"
2380 id="path1259"
2381 inkscape:connector-curvature="0" /><path
2382 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2383 d="m 8553.8009,636.145 -53.795,0"
2384 id="path1261"
2385 inkscape:connector-curvature="0" /><path
2386 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2387 d="m 8467.5259,636.145 -53.795,0"
2388 id="path1263"
2389 inkscape:connector-curvature="0" /><path
2390 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2391 d="m 8380.2359,636.145 -53.795,0"
2392 id="path1265"
2393 inkscape:connector-curvature="0" /><path
2394 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2395 d="m 8293.9609,636.145 -53.795,0"
2396 id="path1267"
2397 inkscape:connector-curvature="0" /><path
2398 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2399 d="m 8207.6859,636.145 -54.81,0"
2400 id="path1269"
2401 inkscape:connector-curvature="0" /><path
2402 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2403 d="m 8120.3959,636.145 -53.795,0"
2404 id="path1271"
2405 inkscape:connector-curvature="0" /><path
2406 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2407 d="m 8034.1209,636.145 -53.795,0"
2408 id="path1273"
2409 inkscape:connector-curvature="0" /><path
2410 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2411 d="m 7946.8309,636.145 -53.795,0"
2412 id="path1275"
2413 inkscape:connector-curvature="0" /><path
2414 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2415 d="m 7860.5559,636.145 -53.795,0"
2416 id="path1277"
2417 inkscape:connector-curvature="0" /><path
2418 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2419 d="m 7773.2659,636.145 -53.795,0"
2420 id="path1279"
2421 inkscape:connector-curvature="0" /><path
2422 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2423 d="m 7686.9909,636.145 -53.795,0"
2424 id="path1281"
2425 inkscape:connector-curvature="0" /><path
2426 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2427 d="m 7599.7009,636.145 -53.795,0"
2428 id="path1283"
2429 inkscape:connector-curvature="0" /><path
2430 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2431 d="m 7513.4259,636.145 -53.795,0"
2432 id="path1285"
2433 inkscape:connector-curvature="0" /><path
2434 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2435 d="m 7427.1509,636.145 -53.795,0"
2436 id="path1287"
2437 inkscape:connector-curvature="0" /><path
2438 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2439 d="m 7339.8609,636.145 -53.795,0"
2440 id="path1289"
2441 inkscape:connector-curvature="0" /><path
2442 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2443 d="m 7253.5859,636.145 -53.795,0"
2444 id="path1291"
2445 inkscape:connector-curvature="0" /><path
2446 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2447 d="m 7166.2959,636.145 -53.795,0"
2448 id="path1293"
2449 inkscape:connector-curvature="0" /><path
2450 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2451 d="m 7080.0209,636.145 -53.795,0"
2452 id="path1295"
2453 inkscape:connector-curvature="0" /><path
2454 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2455 d="m 6992.7309,636.145 -53.795,0"
2456 id="path1297"
2457 inkscape:connector-curvature="0" /><path
2458 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2459 d="m 6906.4559,636.145 -53.795,0"
2460 id="path1299"
2461 inkscape:connector-curvature="0" /><path
2462 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2463 d="m 6820.1809,636.145 -53.795,0"
2464 id="path1301"
2465 inkscape:connector-curvature="0" /><path
2466 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2467 d="m 6732.8909,636.145 -53.795,0"
2468 id="path1303"
2469 inkscape:connector-curvature="0" /><path
2470 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2471 d="m 6646.6159,636.145 -53.795,0"
2472 id="path1305"
2473 inkscape:connector-curvature="0" /><path
2474 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2475 d="m 6559.3259,636.145 -53.795,0"
2476 id="path1307"
2477 inkscape:connector-curvature="0" /><path
2478 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2479 d="m 6473.0509,636.145 -53.795,0"
2480 id="path1309"
2481 inkscape:connector-curvature="0" /><path
2482 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2483 d="m 6385.7609,636.145 -53.795,0"
2484 id="path1311"
2485 inkscape:connector-curvature="0" /><path
2486 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2487 d="m 6299.4859,636.145 -53.795,0"
2488 id="path1313"
2489 inkscape:connector-curvature="0" /><path
2490 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2491 d="m 6213.2109,636.145 -54.81,0"
2492 id="path1315"
2493 inkscape:connector-curvature="0" /><path
2494 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2495 d="m 6125.9209,636.145 -53.795,0"
2496 id="path1317"
2497 inkscape:connector-curvature="0" /><path
2498 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2499 d="m 6039.6459,636.145 -53.795,0"
2500 id="path1319"
2501 inkscape:connector-curvature="0" /><path
2502 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2503 d="m 5952.3559,636.145 -53.795,0"
2504 id="path1321"
2505 inkscape:connector-curvature="0" /><path
2506 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2507 d="m 5866.0809,636.145 -53.795,0"
2508 id="path1323"
2509 inkscape:connector-curvature="0" /><path
2510 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2511 d="m 5778.7909,636.145 -53.795,0"
2512 id="path1325"
2513 inkscape:connector-curvature="0" /><path
2514 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2515 d="m 5692.5159,636.145 -53.795,0"
2516 id="path1327"
2517 inkscape:connector-curvature="0" /><path
2518 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2519 d="m 5606.2409,636.145 -54.81,0"
2520 id="path1329"
2521 inkscape:connector-curvature="0" /><path
2522 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2523 d="m 5518.9509,636.145 -53.795,0"
2524 id="path1331"
2525 inkscape:connector-curvature="0" /><path
2526 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2527 d="m 5432.6759,636.145 -53.795,0"
2528 id="path1333"
2529 inkscape:connector-curvature="0" /><path
2530 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2531 d="m 5345.3859,636.145 -53.795,0"
2532 id="path1335"
2533 inkscape:connector-curvature="0" /><path
2534 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2535 d="m 5259.1109,636.145 -53.795,0"
2536 id="path1337"
2537 inkscape:connector-curvature="0" /><path
2538 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2539 d="m 5171.8209,636.145 -53.795,0"
2540 id="path1339"
2541 inkscape:connector-curvature="0" /><path
2542 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2543 d="m 5085.5459,636.145 -53.795,0"
2544 id="path1341"
2545 inkscape:connector-curvature="0" /><path
2546 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2547 d="m 4999.2709,636.145 -54.81,0"
2548 id="path1343"
2549 inkscape:connector-curvature="0" /><path
2550 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2551 d="m 4911.9809,636.145 -53.795,0"
2552 id="path1345"
2553 inkscape:connector-curvature="0" /><path
2554 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2555 d="m 4825.7059,636.145 -53.795,0"
2556 id="path1347"
2557 inkscape:connector-curvature="0" /><path
2558 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2559 d="m 4738.4159,636.145 -53.795,0"
2560 id="path1349"
2561 inkscape:connector-curvature="0" /><path
2562 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2563 d="m 4652.1409,636.145 -53.795,0"
2564 id="path1351"
2565 inkscape:connector-curvature="0" /><path
2566 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2567 d="m 4564.8509,636.145 -53.795,0"
2568 id="path1353"
2569 inkscape:connector-curvature="0" /><path
2570 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2571 d="m 4478.5759,636.145 -53.795,0"
2572 id="path1355"
2573 inkscape:connector-curvature="0" /><path
2574 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2575 d="m 4392.3009,636.145 -54.81,0"
2576 id="path1357"
2577 inkscape:connector-curvature="0" /><path
2578 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2579 d="m 4305.0109,636.145 -53.795,0"
2580 id="path1359"
2581 inkscape:connector-curvature="0" /><path
2582 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2583 d="m 4218.7359,636.145 -53.795,0"
2584 id="path1361"
2585 inkscape:connector-curvature="0" /><path
2586 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2587 d="m 4131.4459,636.145 -53.795,0"
2588 id="path1363"
2589 inkscape:connector-curvature="0" /><path
2590 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2591 d="m 4045.1709,636.145 -53.795,0"
2592 id="path1365"
2593 inkscape:connector-curvature="0" /><path
2594 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2595 d="m 3957.8809,636.145 -53.795,0"
2596 id="path1367"
2597 inkscape:connector-curvature="0" /><path
2598 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2599 d="m 3871.6059,636.145 -53.795,0"
2600 id="path1369"
2601 inkscape:connector-curvature="0" /><path
2602 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2603 d="m 3785.3309,636.145 -54.81,0"
2604 id="path1371"
2605 inkscape:connector-curvature="0" /><path
2606 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2607 d="m 3698.0409,636.145 -53.795,0"
2608 id="path1373"
2609 inkscape:connector-curvature="0" /><path
2610 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2611 d="m 3611.7659,636.145 -53.795,0"
2612 id="path1375"
2613 inkscape:connector-curvature="0" /><path
2614 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2615 d="m 3524.4759,636.145 -53.795,0"
2616 id="path1377"
2617 inkscape:connector-curvature="0" /><path
2618 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2619 d="m 3438.2009,636.145 -53.795,0"
2620 id="path1379"
2621 inkscape:connector-curvature="0" /><path
2622 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2623 d="m 3350.9109,636.145 -53.795,0"
2624 id="path1381"
2625 inkscape:connector-curvature="0" /><path
2626 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2627 d="m 3264.6359,636.145 -53.795,0"
2628 id="path1383"
2629 inkscape:connector-curvature="0" /><path
2630 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2631 d="m 3177.3459,636.145 -53.795,0"
2632 id="path1385"
2633 inkscape:connector-curvature="0" /><path
2634 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2635 d="m 3091.0709,636.145 -53.795,0"
2636 id="path1387"
2637 inkscape:connector-curvature="0" /><path
2638 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2639 d="m 3004.7959,636.145 -53.795,0"
2640 id="path1389"
2641 inkscape:connector-curvature="0" /><path
2642 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2643 d="m 2917.5059,636.145 -53.795,0"
2644 id="path1391"
2645 inkscape:connector-curvature="0" /><path
2646 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2647 d="m 2831.2309,636.145 -53.795,0"
2648 id="path1393"
2649 inkscape:connector-curvature="0" /><path
2650 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2651 d="m 2743.9409,636.145 -53.795,0"
2652 id="path1395"
2653 inkscape:connector-curvature="0" /><path
2654 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2655 d="m 2657.6659,636.145 -53.795,0"
2656 id="path1397"
2657 inkscape:connector-curvature="0" /><path
2658 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2659 d="m 2570.3759,636.145 -53.795,0"
2660 id="path1399"
2661 inkscape:connector-curvature="0" /><path
2662 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2663 d="m 2484.1009,636.145 -53.795,0"
2664 id="path1401"
2665 inkscape:connector-curvature="0" /><path
2666 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2667 d="m 2397.8259,636.145 -53.795,0"
2668 id="path1403"
2669 inkscape:connector-curvature="0" /><path
2670 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2671 d="m 2310.5359,636.145 -53.795,0"
2672 id="path1405"
2673 inkscape:connector-curvature="0" /><path
2674 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2675 d="m 2224.2609,636.145 -53.795,0"
2676 id="path1407"
2677 inkscape:connector-curvature="0" /><path
2678 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2679 d="m 2136.9709,636.145 -53.795,0"
2680 id="path1409"
2681 inkscape:connector-curvature="0" /><path
2682 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2683 d="m 2050.6959,636.145 -53.795,0"
2684 id="path1411"
2685 inkscape:connector-curvature="0" /><path
2686 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2687 d="m 1963.4059,636.145 -53.795,0"
2688 id="path1413"
2689 inkscape:connector-curvature="0" /><path
2690 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2691 d="m 1877.1309,636.145 -53.795,0"
2692 id="path1415"
2693 inkscape:connector-curvature="0" /><path
2694 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2695 d="m 1790.8559,636.145 -54.81,0"
2696 id="path1417"
2697 inkscape:connector-curvature="0" /><path
2698 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2699 d="m 1703.5659,636.145 -53.795,0"
2700 id="path1419"
2701 inkscape:connector-curvature="0" /><path
2702 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2703 d="m 1617.2909,636.145 -53.795,0"
2704 id="path1421"
2705 inkscape:connector-curvature="0" /><path
2706 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2707 d="m 1530.0009,636.145 -53.795,0"
2708 id="path1423"
2709 inkscape:connector-curvature="0" /><path
2710 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2711 d="m 1443.7259,636.145 -53.795,0"
2712 id="path1425"
2713 inkscape:connector-curvature="0" /><path
2714 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2715 d="m 1356.4359,636.145 -53.795,0"
2716 id="path1427"
2717 inkscape:connector-curvature="0" /><path
2718 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2719 d="m 1270.1609,636.145 -53.795,0"
2720 id="path1429"
2721 inkscape:connector-curvature="0" /><path
2722 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2723 d="m 1183.8859,636.145 -54.81,0"
2724 id="path1431"
2725 inkscape:connector-curvature="0" /><path
2726 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2727 d="m 1096.5959,636.145 -53.795,0"
2728 id="path1433"
2729 inkscape:connector-curvature="0" /><path
2730 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2731 d="m 1010.3209,636.145 -53.795,0"
2732 id="path1435"
2733 inkscape:connector-curvature="0" /><path
2734 style="fill:none;stroke:#3465af;stroke-width:28.432024"
2735 d="m 923.0309,636.145 -53.795,0"
2736 id="path1437"
2737 inkscape:connector-curvature="0" /><g
2738 id="g4044"><rect
2739 height="1100.7"
2740 width="1213.6"
2741 y="4753.1133"
2742 x="21109.146"
2743 id="rect1441"
2744 style="fill:#f3e777" /><path
2745 d="m 20656.146,5536.413 0,-405.46 150.7,-169.16 c 82.886,-93.039 170.53,-186.62 194.77,-207.96 l 44.069,-38.798 783.23,-0.086 783.23,-0.086 0,613.5 0,613.5 -978,0 -978,0 0,-405.46 z m 1027.7,136.98 0,-78.372 -169.91,4.925 -169.91,4.9249 -5.09,45.854 c -8.249,74.303 46.711,101.04 207.69,101.04 l 137.21,0 0,-78.372 z m 235.86,-262.94 4.495,-341.31 207.2,-8.6408 207.2,-8.6408 5.144,-46.443 c 9.596,-86.615 -41.863,-102.05 -322.02,-96.607 l -246.71,4.7956 -4.438,419.08 -4.439,419.08 74.537,0 74.538,0 4.494,-341.31 z m 391.3,313.72 c 26.41,-19.286 36.255,-41.399 32.697,-73.447 l -5.09,-45.854 -174.05,0 -174.05,0 -5.38,48.984 c -9.97,90.771 0.993,97.91 150.36,97.91 99.305,0 148.27,-7.6982 175.52,-27.594 z m -627.16,-274.84 0,-77.768 -174.05,0 -174.05,0 0,66.246 c 0,36.436 4.973,71.431 11.051,77.768 6.078,6.3366 84.401,11.521 174.05,11.521 l 163,0 0,-77.768 z m 659.89,-4.9154 5.125,-74.042 -179.18,4.9155 -179.18,4.9155 -5.38,48.984 c -10.473,95.348 -2.259,99.57 183.28,94.197 l 170.2,-4.9284 5.125,-74.042 z m -659.89,-237.63 0,-78.372 -169.91,4.925 -169.91,4.925 -5.097,73.447 -5.097,73.447 175,0 175,0 0,-78.372 z m 659.86,4.925 -5.097,-73.447 -174.05,0 -174.05,0 -5.38,48.984 c -10.289,93.673 -2.146,97.91 188.15,97.91 l 175.52,0 -5.097,-73.447 z m -659.86,-228.98 0,-77.768 -137.21,0 c -97.358,0 -147.91,7.8138 -174.05,26.902 -34.952,25.523 -49.645,92.242 -25.79,117.11 6.078,6.3366 84.401,11.521 174.05,11.521 l 163,0 0,-77.768 z"
2746 id="path1443"
2747 inkscape:connector-curvature="0"
2748 style="fill:#ca4677" /></g><text
2749 style="font-size:9.10937119px;fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round"
2750 class="TextShape"
2751 id="text1489"
2752 transform="scale(1.1035537,0.9061634)"
2753 x="171.41566"
2754 y="9913.7109"><tspan
2755 font-size="635px"
2756 font-weight="400"
2757 class="TextParagraph"
2758 id="tspan1491"
2759 style="font-weight:400;font-size:482.03753662px;font-family:'Times New Roman', serif" /></text>
2760<g
2761 id="g4048"><rect
2762 height="2342.4341"
2763 width="2320.7097"
2764 y="13737.451"
2765 x="18796.941"
2766 id="rect1447"
2767 style="fill:#6076b3" /><rect
2768 id="rect1451"
2769 height="137.78799"
2770 x="18532.135"
2771 width="302.70312"
2772 y="13817.405"
2773 style="fill:#e0ee2c;fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round" /><rect
2774 id="rect1453"
2775 height="137.78799"
2776 x="18532.135"
2777 width="302.70312"
2778 y="14075.544"
2779 style="fill:#e0ee2c;fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round" /><rect
2780 id="rect1455"
2781 height="137.78799"
2782 x="18532.135"
2783 width="302.70312"
2784 y="14334.443"
2785 style="fill:#e0ee2c;fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round" /><rect
2786 id="rect1457"
2787 height="137.78799"
2788 x="18532.135"
2789 width="302.70312"
2790 y="14592.582"
2791 style="fill:#e0ee2c;fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round" /><rect
2792 id="rect1459"
2793 height="137.78799"
2794 x="18532.135"
2795 width="302.70312"
2796 y="14850.721"
2797 style="fill:#e0ee2c;fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round" /><rect
2798 id="rect1461"
2799 height="137.78799"
2800 x="18532.135"
2801 width="302.70312"
2802 y="15109.62"
2803 style="fill:#e0ee2c;fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round" /><rect
2804 id="rect1463"
2805 height="137.78799"
2806 x="18532.135"
2807 width="302.70312"
2808 y="15367.759"
2809 style="fill:#e0ee2c;fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round" /><rect
2810 id="rect1465"
2811 height="137.78799"
2812 x="18532.135"
2813 width="302.70312"
2814 y="15625.896"
2815 style="fill:#e0ee2c;fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round" /><rect
2816 id="rect1467"
2817 height="137.78799"
2818 x="18532.135"
2819 width="302.70312"
2820 y="15884.035"
2821 style="fill:#e0ee2c;fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round" /><rect
2822 id="rect1469"
2823 height="137.78799"
2824 x="21080.053"
2825 width="302.70312"
2826 y="13783.14"
2827 style="fill:#e0ee2c;fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round" /><rect
2828 id="rect1471"
2829 height="137.78799"
2830 x="21080.053"
2831 width="302.70312"
2832 y="14041.277"
2833 style="fill:#e0ee2c;fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round" /><rect
2834 id="rect1473"
2835 height="137.78799"
2836 x="21080.053"
2837 width="302.70312"
2838 y="14299.416"
2839 style="fill:#e0ee2c;fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round" /><rect
2840 id="rect1475"
2841 height="137.78799"
2842 x="21080.053"
2843 width="302.70312"
2844 y="14558.315"
2845 style="fill:#e0ee2c;fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round" /><rect
2846 id="rect1477"
2847 height="137.78799"
2848 x="21080.053"
2849 width="302.70312"
2850 y="14816.454"
2851 style="fill:#e0ee2c;fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round" /><rect
2852 id="rect1479"
2853 height="137.78799"
2854 x="21080.053"
2855 width="302.70312"
2856 y="15074.593"
2857 style="fill:#e0ee2c;fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round" /><rect
2858 id="rect1481"
2859 height="137.78799"
2860 x="21080.053"
2861 width="302.70312"
2862 y="15333.492"
2863 style="fill:#e0ee2c;fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round" /><rect
2864 id="rect1483"
2865 height="137.78799"
2866 x="21080.053"
2867 width="302.70312"
2868 y="15591.631"
2869 style="fill:#e0ee2c;fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round" /><rect
2870 id="rect1485"
2871 height="137.78799"
2872 x="21080.053"
2873 width="302.70312"
2874 y="15849.769"
2875 style="fill:#e0ee2c;fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round" /><text
2876 transform="scale(1.1035537,0.9061634)"
2877 sodipodi:linespacing="125%"
2878 id="text1493"
2879 line-height="125%"
2880 x="17205.688"
2881 y="16777.641"
2882 font-size="1128.9px"
2883 xml:space="preserve"
2884 style="font-size:856.96411133px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round"><tspan
2885 id="tspan1495"
2886 x="17205.688"
2887 y="16777.641">CPU</tspan></text>
2888</g><text
2889 style="fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round"
2890 id="text1499"
2891 class="TextShape"
2892 x="-11700.553"
2893 y="565.61298"><tspan
2894 style="font-weight:400;font-size:706px;font-family:'Times New Roman', serif"
2895 id="tspan1501"
2896 class="TextParagraph"
2897 font-weight="400"
2898 font-size="706px"><tspan
2899 id="tspan1503"
2900 transform="matrix(0,-1,1,0,8509,40173)"
2901 class="TextPosition"
2902 x="12640.447"
2903 y="16397.613"><tspan
2904 style="fill:#000000"
2905 id="tspan1505">PCI, USB, SPI, I2C, ...</tspan></tspan></tspan></text>
2906<path
2907 d="m 12408.066,15561.578 -1115.084,0 0,-1420.331 2230.169,0 0,1420.331 -1115.085,0 z"
2908 id="path1511"
2909 inkscape:connector-curvature="0"
2910 style="fill:#cfe7f5;fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round" /><path
2911 d="m 12408.066,15561.578 -1115.084,0 0,-1420.331 2230.169,0 0,1420.331 -1115.085,0 z"
2912 id="path1513"
2913 inkscape:connector-curvature="0"
2914 style="fill:none;fill-rule:evenodd;stroke:#3465af;stroke-width:19.84712601;stroke-linejoin:round" /><text
2915 style="fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round"
2916 id="text1515"
2917 class="TextShape"
2918 x="-1394.0863"
2919 y="590.73016"><tspan
2920 style="font-weight:400;font-size:635px;font-family:'Times New Roman', serif"
2921 id="tspan1517"
2922 class="TextParagraph"
2923 font-weight="400"
2924 font-size="635px"><tspan
2925 id="tspan1519"
2926 class="TextPosition"
2927 x="11487.915"
2928 y="14672.743"><tspan
2929 style="fill:#000000"
2930 id="tspan1521">Bridge</tspan></tspan></tspan></text>
2931<text
2932 style="fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round"
2933 id="text1523"
2934 class="TextShape"
2935 x="-1450.5308"
2936 y="1324.5078"><tspan
2937 style="font-weight:400;font-size:635px;font-family:'Times New Roman', serif"
2938 id="tspan1525"
2939 class="TextParagraph"
2940 font-weight="400"
2941 font-size="635px"><tspan
2942 id="tspan1527"
2943 class="TextPosition"
2944 x="11431.471"
2945 y="15406.52"><tspan
2946 style="fill:#000000"
2947 id="tspan1529"> DMA</tspan></tspan></tspan></text>
2948</svg> \ No newline at end of file
diff --git a/Documentation/media/uapi/dvb/dvbstb.svg b/Documentation/media/uapi/dvb/dvbstb.svg
index c4140fb518af..4effe45b448d 100644
--- a/Documentation/media/uapi/dvb/dvbstb.svg
+++ b/Documentation/media/uapi/dvb/dvbstb.svg
@@ -1,651 +1,17 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8"?>
2<svg 2<svg id="svg2" width="237.7mm" height="126.28mm" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" preserveAspectRatio="xMidYMid" version="1.2" viewBox="0 0 23770.221 12628.221" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><metadata id="metadata519"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/></cc:Work></rdf:RDF></metadata><rect id="rect197" class="BoundingBox" x="5355.1" y="13.111" width="18403" height="9603" fill="none"/><path id="path199" d="m14556 9614.1h-9200v-9600h18400v9600h-9200z" fill="#fff"/><path id="path201" d="m14556 9614.1h-9200v-9600h18400v9600h-9200z" fill="none" stroke="#000"/><rect id="rect206"
3 xmlns:dc="http://purl.org/dc/elements/1.1/" 3class="BoundingBox" x="13.111" y="4013.1" width="4544" height="2403" fill="none"/><path id="path208" d="m2285.1 6414.1h-2271v-2400h4541v2400h-2270z" fill="#fff"/><path id="path210" d="m2285.1 6414.1h-2271v-2400h4541v2400h-2270z" fill="none" stroke="#000"/><text id="text212" class="TextShape" x="-2443.8889" y="-4585.8892"><tspan id="tspan214" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan216" class="TextPosition" x="1281.111" y="5435.1108"><tspan id="tspan218" fill="#000000">Antena</tspan></tspan></tspan></text>
4 xmlns:cc="http://creativecommons.org/ns#" 4<rect id="rect223" class="BoundingBox" x="6213.1" y="1813.1" width="4544" height="2403" fill="none"/><path id="path225" d="m8485.1 4214.1h-2271v-2400h4541v2400h-2270z" fill="#fff"/><path id="path227" d="m8485.1 4214.1h-2271v-2400h4541v2400h-2270z" fill="none" stroke="#000"/><text id="text229" class="TextShape" x="-2443.8889" y="-4585.8892"><tspan id="tspan231" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan233" class="TextPosition" x="7217.1108" y="3235.1111"><tspan id="tspan235" fill="#000000">Frontend</tspan></tspan></tspan></text>
5 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 5<rect id="rect240" class="BoundingBox" x="12113" y="1813.1" width="4544" height="2403" fill="none"/><path id="path242" d="m14385 4214.1h-2271v-2400h4541v2400h-2270z" fill="#fff"/><path id="path244" d="m14385 4214.1h-2271v-2400h4541v2400h-2270z" fill="none" stroke="#000"/><text id="text246" class="TextShape" x="-2443.8889" y="-4585.8892"><tspan id="tspan248" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan250" class="TextPosition" x="13944.111" y="3235.1111"><tspan id="tspan252" fill="#000000">CA</tspan></tspan></tspan></text>
6 xmlns:svg="http://www.w3.org/2000/svg" 6<rect id="rect257" class="BoundingBox" x="18113" y="1813.1" width="4544" height="2403" fill="none"/><path id="path259" d="m20385 4214.1h-2271v-2400h4541v2400h-2270z" fill="#fff"/><path id="path261" d="m20385 4214.1h-2271v-2400h4541v2400h-2270z" fill="none" stroke="#000"/><text id="text263" class="TextShape" x="-2443.8889" y="-4585.8892"><tspan id="tspan265" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan267" class="TextPosition" x="19384.111" y="3235.1111"><tspan id="tspan269" fill="#000000">Demux</tspan></tspan></tspan></text>
7 xmlns="http://www.w3.org/2000/svg" 7<rect id="rect274" class="BoundingBox" x="6113.1" y="5813.1" width="4544" height="2403" fill="none"/><path id="path276" d="m8385.1 8214.1h-2271v-2400h4541v2400h-2270z" fill="#fff"/><path id="path278" d="m8385.1 8214.1h-2271v-2400h4541v2400h-2270z" fill="none" stroke="#000"/><text id="text280" class="TextShape" x="-2443.8889" y="-4585.8892"><tspan id="tspan282" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan284" class="TextPosition" x="7733.1108" y="7235.1108"><tspan id="tspan286" fill="#000000">SEC</tspan></tspan></tspan></text>
8 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 8<rect id="rect291" class="BoundingBox" x="12213" y="5813.1" width="4544" height="2403" fill="none"/><path id="path293" d="m14485 8214.1h-2271v-2400h4541v2400h-2270z" fill="#fff"/><path id="path295" d="m14485 8214.1h-2271v-2400h4541v2400h-2270z" fill="none" stroke="#000"/><text id="text297" class="TextShape" x="-2443.8889" y="-4585.8892"><tspan id="tspan299" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan301" class="TextPosition" x="13676.111" y="7235.1108"><tspan id="tspan303" fill="#000000">Audio</tspan></tspan></tspan></text>
9 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 9<rect id="rect308" class="BoundingBox" x="18113" y="5813.1" width="4544" height="2403" fill="none"/><path id="path310" d="m20385 8214.1h-2271v-2400h4541v2400h-2270z" fill="#fff"/><path id="path312" d="m20385 8214.1h-2271v-2400h4541v2400h-2270z" fill="none" stroke="#000"/><text id="text314" class="TextShape" x="-2443.8889" y="-4585.8892"><tspan id="tspan316" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan318" class="TextPosition" x="19583.111" y="7235.1108"><tspan id="tspan320" fill="#000000">Video</tspan></tspan></tspan></text>
10 version="1.2" 10<rect id="rect325" class="BoundingBox" x="15213" y="10213" width="4544" height="2403" fill="none"/><path id="path327" d="m17485 12614h-2271v-2400h4541v2400h-2270z" fill="#fff"/><path id="path329" d="m17485 12614h-2271v-2400h4541v2400h-2270z" fill="none" stroke="#000"/><text id="text331" class="TextShape" x="-2443.8889" y="-4585.8892"><tspan id="tspan333" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan335" class="TextPosition" x="17076.111" y="11635.111"><tspan id="tspan337" fill="#000000">TV</tspan></tspan></tspan></text>
11 width="237.70221mm" 11<rect id="rect342" class="BoundingBox" x="4555.1" y="3014.1" width="1661" height="2202" fill="none"/><path id="path344" d="m4556.1 5214.1 1400-1857" fill="none" stroke="#000"/><path id="path346" d="m6215.1 3014.1-391 269 240 181 151-450z"/><rect id="rect351" class="BoundingBox" x="4555.1" y="5213.1" width="1561" height="1802" fill="none"/><path id="path353" d="m4556.1 5214.1 1277 1475" fill="none" stroke="#000"/><path id="path355" d="m6115.1 7014.1-181-438-227 196 408 242z"/><rect id="rect360" class="BoundingBox" x="10755" y="2864.1" width="1361" height="301" fill="none"/><path id="path362" d="m10756 3014.1h929" fill="none" stroke="#000"/><path id="path364" d="m12115 3014.1-450-150v300l450-150z"/><rect id="rect369" class="BoundingBox" x="16655" y="2864.1" width="1461" height="301" fill="none"/><path id="path371" d="m16656 3014.1h1029" fill="none" stroke="#000"/><path id="path373"
12 height="126.28221mm" 12d="m18115 3014.1-450-150v300l450-150z"/><rect id="rect378" class="BoundingBox" x="20235" y="4213.1" width="301" height="1602" fill="none"/><path id="path380" d="m20385 4214.1v1170" fill="none" stroke="#000"/><path id="path382" d="m20385 5814.1 150-450h-300l150 450z"/><rect id="rect387" class="BoundingBox" x="17485" y="8213.1" width="2902" height="2002" fill="none"/><path id="path389" d="m20385 8214.1-2546 1756" fill="none" stroke="#000"/><path id="path391" d="m17485 10214 456-132-171-247-285 379z"/><rect id="rect396" class="BoundingBox" x="14484" y="8213.1" width="3002" height="2002" fill="none"/><path id="path398" d="m14485 8214.1 2642 1761" fill="none" stroke="#000"/><path id="path400" d="m17485 10214-291-374-167 249 458 125z"/><rect id="rect405" class="BoundingBox" x="14485" y="4213.1" width="5902" height="1629" fill="none"/><path id="path407" d="m20385 4214.1-51 14" fill="none"
13 viewBox="0 0 23770.221 12628.221" 13stroke="#000"/><path id="path409" d="m20283 4242.1-52 14" fill="none" stroke="#000"/><path id="path411" d="m20180 4270.1-51 13" fill="none" stroke="#000"/><path id="path413" d="m20078 4297.1-52 14" fill="none" stroke="#000"/><path id="path415" d="m19975 4325.1-51 14" fill="none" stroke="#000"/><path id="path417" d="m19873 4353.1-52 14" fill="none" stroke="#000"/><path id="path419" d="m19770 4381.1-51 14" fill="none" stroke="#000"/><path id="path421" d="m19668 4409.1-52 13" fill="none" stroke="#000"/><path id="path423" d="m19565 4436.1-51 14" fill="none" stroke="#000"/><path id="path425" d="m19463 4464.1-52 14" fill="none" stroke="#000"/><path id="path427" d="m19360 4492.1-51 14" fill="none" stroke="#000"/><path id="path429" d="m19258 4520.1-52 14" fill="none" stroke="#000"/><path id="path431" d="m19155 4547.1-51 14" fill="none" stroke="#000"/><path id="path433" d="m19053 4575.1-52 14"
14 preserveAspectRatio="xMidYMid" 14fill="none" stroke="#000"/><path id="path435" d="m18950 4603.1-51 14" fill="none" stroke="#000"/><path id="path437" d="m18848 4631.1-51 14" fill="none" stroke="#000"/><path id="path439" d="m18745 4659.1-51 14" fill="none" stroke="#000"/><path id="path441" d="m18643 4686.1-51 14" fill="none" stroke="#000"/><path id="path443" d="m18540 4714.1-51 14" fill="none" stroke="#000"/><path id="path445" d="m18438 4742.1-51 14" fill="none" stroke="#000"/><path id="path447" d="m18335 4770.1-51 14" fill="none" stroke="#000"/><path id="path449" d="m18233 4798.1-51 14" fill="none" stroke="#000"/><path id="path451" d="m18130 4825.1-51 14" fill="none" stroke="#000"/><path id="path453" d="m18028 4853.1-51 14" fill="none" stroke="#000"/><path id="path455" d="m17925 4881.1-51 14" fill="none" stroke="#000"/><path id="path457" d="m17823 4909.1-51 14" fill="none" stroke="#000"/><path id="path459" d="m17720
15 xml:space="preserve" 154937.1-51 13" fill="none" stroke="#000"/><path id="path461" d="m17618 4964.1-51 14" fill="none" stroke="#000"/><path id="path463" d="m17516 4992.1-52 14" fill="none" stroke="#000"/><path id="path465" d="m17413 5020.1-51 14" fill="none" stroke="#000"/><path id="path467" d="m17311 5048.1-52 14" fill="none" stroke="#000"/><path id="path469" d="m17208 5076.1-51 13" fill="none" stroke="#000"/><path id="path471" d="m17106 5103.1-52 14" fill="none" stroke="#000"/><path id="path473" d="m17003 5131.1-51 14" fill="none" stroke="#000"/><path id="path475" d="m16901 5159.1-52 14" fill="none" stroke="#000"/><path id="path477" d="m16798 5187.1-51 14" fill="none" stroke="#000"/><path id="path479" d="m16696 5214.1-52 14" fill="none" stroke="#000"/><path id="path481" d="m16593 5242.1-51 14" fill="none" stroke="#000"/><path id="path483" d="m16491 5270.1-52 14" fill="none" stroke="#000"/><path id="path485"
16 id="svg2" 16d="m16388 5298.1-51 14" fill="none" stroke="#000"/><path id="path487" d="m16286 5326.1-52 14" fill="none" stroke="#000"/><path id="path489" d="m16183 5353.1-51 14" fill="none" stroke="#000"/><path id="path491" d="m16081 5381.1-51 14" fill="none" stroke="#000"/><path id="path493" d="m15978 5409.1-51 14" fill="none" stroke="#000"/><path id="path495" d="m15876 5437.1-51 14" fill="none" stroke="#000"/><path id="path497" d="m15773 5465.1-51 14" fill="none" stroke="#000"/><path id="path499" d="m15671 5492.1-51 14" fill="none" stroke="#000"/><path id="path501" d="m15568 5520.1-51 14" fill="none" stroke="#000"/><path id="path503" d="m15466 5548.1-51 14" fill="none" stroke="#000"/><path id="path505" d="m15363 5576.1-51 14" fill="none" stroke="#000"/><path id="path507" d="m15261 5604.1-51 13" fill="none" stroke="#000"/><path id="path509" d="m15158 5631.1-51 14" fill="none" stroke="#000"/><path
17 inkscape:version="0.91 r13725" 17id="path511" d="m15056 5659.1-51 14" fill="none" stroke="#000"/><path id="path513" d="m14953 5687.1-51 14" fill="none" stroke="#000"/><path id="path515" d="m14485 5814.1 474 27-79-290-395 263z"/></svg>
18 sodipodi:docname="dvbstb.svg"
19 style="fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round"><metadata
20 id="metadata519"><rdf:RDF><cc:Work
21 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
22 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><sodipodi:namedview
23 pagecolor="#ffffff"
24 bordercolor="#666666"
25 borderopacity="1"
26 objecttolerance="10"
27 gridtolerance="10"
28 guidetolerance="10"
29 inkscape:pageopacity="0"
30 inkscape:pageshadow="2"
31 inkscape:window-width="1920"
32 inkscape:window-height="997"
33 id="namedview517"
34 showgrid="false"
35 inkscape:zoom="1.0818519"
36 inkscape:cx="411.31718"
37 inkscape:cy="274.87517"
38 inkscape:window-x="1920"
39 inkscape:window-y="30"
40 inkscape:window-maximized="1"
41 inkscape:current-layer="svg2"
42 fit-margin-top="0"
43 fit-margin-left="0"
44 fit-margin-right="0"
45 fit-margin-bottom="0" /><defs
46 class="ClipPathGroup"
47 id="defs4" /><defs
48 id="defs9" /><defs
49 id="defs90" /><defs
50 id="defs113" /><defs
51 class="TextShapeIndex"
52 id="defs124" /><defs
53 class="EmbeddedBulletChars"
54 id="defs128" /><defs
55 class="TextEmbeddedBitmaps"
56 id="defs157" /><rect
57 class="BoundingBox"
58 x="5355.1108"
59 y="13.111"
60 width="18403"
61 height="9603"
62 id="rect197"
63 style="fill:none;stroke:none" /><path
64 d="m 14556.111,9614.111 -9200,0 0,-9600 18400,0 0,9600 -9200,0 z"
65 id="path199"
66 inkscape:connector-curvature="0"
67 style="fill:#ffffff;stroke:none" /><path
68 d="m 14556.111,9614.111 -9200,0 0,-9600 18400,0 0,9600 -9200,0 z"
69 id="path201"
70 inkscape:connector-curvature="0"
71 style="fill:none;stroke:#000000" /><rect
72 class="BoundingBox"
73 x="13.111"
74 y="4013.1111"
75 width="4544"
76 height="2403"
77 id="rect206"
78 style="fill:none;stroke:none" /><path
79 d="m 2285.111,6414.111 -2271,0 0,-2400 4541,0 0,2400 -2270,0 z"
80 id="path208"
81 inkscape:connector-curvature="0"
82 style="fill:#ffffff;stroke:none" /><path
83 d="m 2285.111,6414.111 -2271,0 0,-2400 4541,0 0,2400 -2270,0 z"
84 id="path210"
85 inkscape:connector-curvature="0"
86 style="fill:none;stroke:#000000" /><text
87 class="TextShape"
88 id="text212"
89 y="-4585.8892"
90 x="-2443.8889"><tspan
91 class="TextParagraph"
92 font-size="635px"
93 font-weight="400"
94 id="tspan214"
95 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
96 class="TextPosition"
97 x="1281.111"
98 y="5435.1108"
99 id="tspan216"><tspan
100 id="tspan218"
101 style="fill:#000000;stroke:none">Antena</tspan></tspan></tspan></text>
102<rect
103 class="BoundingBox"
104 x="6213.1108"
105 y="1813.111"
106 width="4544"
107 height="2403"
108 id="rect223"
109 style="fill:none;stroke:none" /><path
110 d="m 8485.111,4214.111 -2271,0 0,-2400 4541,0 0,2400 -2270,0 z"
111 id="path225"
112 inkscape:connector-curvature="0"
113 style="fill:#ffffff;stroke:none" /><path
114 d="m 8485.111,4214.111 -2271,0 0,-2400 4541,0 0,2400 -2270,0 z"
115 id="path227"
116 inkscape:connector-curvature="0"
117 style="fill:none;stroke:#000000" /><text
118 class="TextShape"
119 id="text229"
120 x="-2443.8889"
121 y="-4585.8892"><tspan
122 class="TextParagraph"
123 font-size="635px"
124 font-weight="400"
125 id="tspan231"
126 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
127 class="TextPosition"
128 x="7217.1108"
129 y="3235.1111"
130 id="tspan233"><tspan
131 id="tspan235"
132 style="fill:#000000;stroke:none">Frontend</tspan></tspan></tspan></text>
133<rect
134 class="BoundingBox"
135 x="12113.111"
136 y="1813.111"
137 width="4544"
138 height="2403"
139 id="rect240"
140 style="fill:none;stroke:none" /><path
141 d="m 14385.111,4214.111 -2271,0 0,-2400 4541,0 0,2400 -2270,0 z"
142 id="path242"
143 inkscape:connector-curvature="0"
144 style="fill:#ffffff;stroke:none" /><path
145 d="m 14385.111,4214.111 -2271,0 0,-2400 4541,0 0,2400 -2270,0 z"
146 id="path244"
147 inkscape:connector-curvature="0"
148 style="fill:none;stroke:#000000" /><text
149 class="TextShape"
150 id="text246"
151 x="-2443.8889"
152 y="-4585.8892"><tspan
153 class="TextParagraph"
154 font-size="635px"
155 font-weight="400"
156 id="tspan248"
157 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
158 class="TextPosition"
159 x="13944.111"
160 y="3235.1111"
161 id="tspan250"><tspan
162 id="tspan252"
163 style="fill:#000000;stroke:none">CA</tspan></tspan></tspan></text>
164<rect
165 class="BoundingBox"
166 x="18113.111"
167 y="1813.111"
168 width="4544"
169 height="2403"
170 id="rect257"
171 style="fill:none;stroke:none" /><path
172 d="m 20385.111,4214.111 -2271,0 0,-2400 4541,0 0,2400 -2270,0 z"
173 id="path259"
174 inkscape:connector-curvature="0"
175 style="fill:#ffffff;stroke:none" /><path
176 d="m 20385.111,4214.111 -2271,0 0,-2400 4541,0 0,2400 -2270,0 z"
177 id="path261"
178 inkscape:connector-curvature="0"
179 style="fill:none;stroke:#000000" /><text
180 class="TextShape"
181 id="text263"
182 x="-2443.8889"
183 y="-4585.8892"><tspan
184 class="TextParagraph"
185 font-size="635px"
186 font-weight="400"
187 id="tspan265"
188 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
189 class="TextPosition"
190 x="19384.111"
191 y="3235.1111"
192 id="tspan267"><tspan
193 id="tspan269"
194 style="fill:#000000;stroke:none">Demux</tspan></tspan></tspan></text>
195<rect
196 class="BoundingBox"
197 x="6113.1108"
198 y="5813.1108"
199 width="4544"
200 height="2403"
201 id="rect274"
202 style="fill:none;stroke:none" /><path
203 d="m 8385.111,8214.111 -2271,0 0,-2400 4541,0 0,2400 -2270,0 z"
204 id="path276"
205 inkscape:connector-curvature="0"
206 style="fill:#ffffff;stroke:none" /><path
207 d="m 8385.111,8214.111 -2271,0 0,-2400 4541,0 0,2400 -2270,0 z"
208 id="path278"
209 inkscape:connector-curvature="0"
210 style="fill:none;stroke:#000000" /><text
211 class="TextShape"
212 id="text280"
213 x="-2443.8889"
214 y="-4585.8892"><tspan
215 class="TextParagraph"
216 font-size="635px"
217 font-weight="400"
218 id="tspan282"
219 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
220 class="TextPosition"
221 x="7733.1108"
222 y="7235.1108"
223 id="tspan284"><tspan
224 id="tspan286"
225 style="fill:#000000;stroke:none">SEC</tspan></tspan></tspan></text>
226<rect
227 class="BoundingBox"
228 x="12213.111"
229 y="5813.1108"
230 width="4544"
231 height="2403"
232 id="rect291"
233 style="fill:none;stroke:none" /><path
234 d="m 14485.111,8214.111 -2271,0 0,-2400 4541,0 0,2400 -2270,0 z"
235 id="path293"
236 inkscape:connector-curvature="0"
237 style="fill:#ffffff;stroke:none" /><path
238 d="m 14485.111,8214.111 -2271,0 0,-2400 4541,0 0,2400 -2270,0 z"
239 id="path295"
240 inkscape:connector-curvature="0"
241 style="fill:none;stroke:#000000" /><text
242 class="TextShape"
243 id="text297"
244 x="-2443.8889"
245 y="-4585.8892"><tspan
246 class="TextParagraph"
247 font-size="635px"
248 font-weight="400"
249 id="tspan299"
250 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
251 class="TextPosition"
252 x="13676.111"
253 y="7235.1108"
254 id="tspan301"><tspan
255 id="tspan303"
256 style="fill:#000000;stroke:none">Audio</tspan></tspan></tspan></text>
257<rect
258 class="BoundingBox"
259 x="18113.111"
260 y="5813.1108"
261 width="4544"
262 height="2403"
263 id="rect308"
264 style="fill:none;stroke:none" /><path
265 d="m 20385.111,8214.111 -2271,0 0,-2400 4541,0 0,2400 -2270,0 z"
266 id="path310"
267 inkscape:connector-curvature="0"
268 style="fill:#ffffff;stroke:none" /><path
269 d="m 20385.111,8214.111 -2271,0 0,-2400 4541,0 0,2400 -2270,0 z"
270 id="path312"
271 inkscape:connector-curvature="0"
272 style="fill:none;stroke:#000000" /><text
273 class="TextShape"
274 id="text314"
275 x="-2443.8889"
276 y="-4585.8892"><tspan
277 class="TextParagraph"
278 font-size="635px"
279 font-weight="400"
280 id="tspan316"
281 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
282 class="TextPosition"
283 x="19583.111"
284 y="7235.1108"
285 id="tspan318"><tspan
286 id="tspan320"
287 style="fill:#000000;stroke:none">Video</tspan></tspan></tspan></text>
288<rect
289 class="BoundingBox"
290 x="15213.111"
291 y="10213.111"
292 width="4544"
293 height="2403"
294 id="rect325"
295 style="fill:none;stroke:none" /><path
296 d="m 17485.111,12614.111 -2271,0 0,-2400 4541,0 0,2400 -2270,0 z"
297 id="path327"
298 inkscape:connector-curvature="0"
299 style="fill:#ffffff;stroke:none" /><path
300 d="m 17485.111,12614.111 -2271,0 0,-2400 4541,0 0,2400 -2270,0 z"
301 id="path329"
302 inkscape:connector-curvature="0"
303 style="fill:none;stroke:#000000" /><text
304 class="TextShape"
305 id="text331"
306 x="-2443.8889"
307 y="-4585.8892"><tspan
308 class="TextParagraph"
309 font-size="635px"
310 font-weight="400"
311 id="tspan333"
312 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
313 class="TextPosition"
314 x="17076.111"
315 y="11635.111"
316 id="tspan335"><tspan
317 id="tspan337"
318 style="fill:#000000;stroke:none">TV</tspan></tspan></tspan></text>
319<rect
320 class="BoundingBox"
321 x="4555.1108"
322 y="3014.1111"
323 width="1661"
324 height="2202"
325 id="rect342"
326 style="fill:none;stroke:none" /><path
327 d="m 4556.111,5214.111 1400,-1857"
328 id="path344"
329 inkscape:connector-curvature="0"
330 style="fill:none;stroke:#000000" /><path
331 d="m 6215.111,3014.111 -391,269 240,181 151,-450 z"
332 id="path346"
333 inkscape:connector-curvature="0"
334 style="fill:#000000;stroke:none" /><rect
335 class="BoundingBox"
336 x="4555.1108"
337 y="5213.1108"
338 width="1561"
339 height="1802"
340 id="rect351"
341 style="fill:none;stroke:none" /><path
342 d="m 4556.111,5214.111 1277,1475"
343 id="path353"
344 inkscape:connector-curvature="0"
345 style="fill:none;stroke:#000000" /><path
346 d="m 6115.111,7014.111 -181,-438 -227,196 408,242 z"
347 id="path355"
348 inkscape:connector-curvature="0"
349 style="fill:#000000;stroke:none" /><rect
350 class="BoundingBox"
351 x="10755.111"
352 y="2864.1111"
353 width="1361"
354 height="301"
355 id="rect360"
356 style="fill:none;stroke:none" /><path
357 d="m 10756.111,3014.111 929,0"
358 id="path362"
359 inkscape:connector-curvature="0"
360 style="fill:none;stroke:#000000" /><path
361 d="m 12115.111,3014.111 -450,-150 0,300 450,-150 z"
362 id="path364"
363 inkscape:connector-curvature="0"
364 style="fill:#000000;stroke:none" /><rect
365 class="BoundingBox"
366 x="16655.111"
367 y="2864.1111"
368 width="1461"
369 height="301"
370 id="rect369"
371 style="fill:none;stroke:none" /><path
372 d="m 16656.111,3014.111 1029,0"
373 id="path371"
374 inkscape:connector-curvature="0"
375 style="fill:none;stroke:#000000" /><path
376 d="m 18115.111,3014.111 -450,-150 0,300 450,-150 z"
377 id="path373"
378 inkscape:connector-curvature="0"
379 style="fill:#000000;stroke:none" /><rect
380 class="BoundingBox"
381 x="20235.111"
382 y="4213.1108"
383 width="301"
384 height="1602"
385 id="rect378"
386 style="fill:none;stroke:none" /><path
387 d="m 20385.111,4214.111 0,1170"
388 id="path380"
389 inkscape:connector-curvature="0"
390 style="fill:none;stroke:#000000" /><path
391 d="m 20385.111,5814.111 150,-450 -300,0 150,450 z"
392 id="path382"
393 inkscape:connector-curvature="0"
394 style="fill:#000000;stroke:none" /><rect
395 class="BoundingBox"
396 x="17485.111"
397 y="8213.1113"
398 width="2902"
399 height="2002"
400 id="rect387"
401 style="fill:none;stroke:none" /><path
402 d="m 20385.111,8214.111 -2546,1756"
403 id="path389"
404 inkscape:connector-curvature="0"
405 style="fill:none;stroke:#000000" /><path
406 d="m 17485.111,10214.111 456,-132 -171,-247 -285,379 z"
407 id="path391"
408 inkscape:connector-curvature="0"
409 style="fill:#000000;stroke:none" /><rect
410 class="BoundingBox"
411 x="14484.111"
412 y="8213.1113"
413 width="3002"
414 height="2002"
415 id="rect396"
416 style="fill:none;stroke:none" /><path
417 d="m 14485.111,8214.111 2642,1761"
418 id="path398"
419 inkscape:connector-curvature="0"
420 style="fill:none;stroke:#000000" /><path
421 d="m 17485.111,10214.111 -291,-374 -167,249 458,125 z"
422 id="path400"
423 inkscape:connector-curvature="0"
424 style="fill:#000000;stroke:none" /><rect
425 class="BoundingBox"
426 x="14485.111"
427 y="4213.1108"
428 width="5902"
429 height="1629"
430 id="rect405"
431 style="fill:none;stroke:none" /><path
432 d="m 20385.111,4214.111 -51,14"
433 id="path407"
434 inkscape:connector-curvature="0"
435 style="fill:none;stroke:#000000" /><path
436 d="m 20283.111,4242.111 -52,14"
437 id="path409"
438 inkscape:connector-curvature="0"
439 style="fill:none;stroke:#000000" /><path
440 d="m 20180.111,4270.111 -51,13"
441 id="path411"
442 inkscape:connector-curvature="0"
443 style="fill:none;stroke:#000000" /><path
444 d="m 20078.111,4297.111 -52,14"
445 id="path413"
446 inkscape:connector-curvature="0"
447 style="fill:none;stroke:#000000" /><path
448 d="m 19975.111,4325.111 -51,14"
449 id="path415"
450 inkscape:connector-curvature="0"
451 style="fill:none;stroke:#000000" /><path
452 d="m 19873.111,4353.111 -52,14"
453 id="path417"
454 inkscape:connector-curvature="0"
455 style="fill:none;stroke:#000000" /><path
456 d="m 19770.111,4381.111 -51,14"
457 id="path419"
458 inkscape:connector-curvature="0"
459 style="fill:none;stroke:#000000" /><path
460 d="m 19668.111,4409.111 -52,13"
461 id="path421"
462 inkscape:connector-curvature="0"
463 style="fill:none;stroke:#000000" /><path
464 d="m 19565.111,4436.111 -51,14"
465 id="path423"
466 inkscape:connector-curvature="0"
467 style="fill:none;stroke:#000000" /><path
468 d="m 19463.111,4464.111 -52,14"
469 id="path425"
470 inkscape:connector-curvature="0"
471 style="fill:none;stroke:#000000" /><path
472 d="m 19360.111,4492.111 -51,14"
473 id="path427"
474 inkscape:connector-curvature="0"
475 style="fill:none;stroke:#000000" /><path
476 d="m 19258.111,4520.111 -52,14"
477 id="path429"
478 inkscape:connector-curvature="0"
479 style="fill:none;stroke:#000000" /><path
480 d="m 19155.111,4547.111 -51,14"
481 id="path431"
482 inkscape:connector-curvature="0"
483 style="fill:none;stroke:#000000" /><path
484 d="m 19053.111,4575.111 -52,14"
485 id="path433"
486 inkscape:connector-curvature="0"
487 style="fill:none;stroke:#000000" /><path
488 d="m 18950.111,4603.111 -51,14"
489 id="path435"
490 inkscape:connector-curvature="0"
491 style="fill:none;stroke:#000000" /><path
492 d="m 18848.111,4631.111 -51,14"
493 id="path437"
494 inkscape:connector-curvature="0"
495 style="fill:none;stroke:#000000" /><path
496 d="m 18745.111,4659.111 -51,14"
497 id="path439"
498 inkscape:connector-curvature="0"
499 style="fill:none;stroke:#000000" /><path
500 d="m 18643.111,4686.111 -51,14"
501 id="path441"
502 inkscape:connector-curvature="0"
503 style="fill:none;stroke:#000000" /><path
504 d="m 18540.111,4714.111 -51,14"
505 id="path443"
506 inkscape:connector-curvature="0"
507 style="fill:none;stroke:#000000" /><path
508 d="m 18438.111,4742.111 -51,14"
509 id="path445"
510 inkscape:connector-curvature="0"
511 style="fill:none;stroke:#000000" /><path
512 d="m 18335.111,4770.111 -51,14"
513 id="path447"
514 inkscape:connector-curvature="0"
515 style="fill:none;stroke:#000000" /><path
516 d="m 18233.111,4798.111 -51,14"
517 id="path449"
518 inkscape:connector-curvature="0"
519 style="fill:none;stroke:#000000" /><path
520 d="m 18130.111,4825.111 -51,14"
521 id="path451"
522 inkscape:connector-curvature="0"
523 style="fill:none;stroke:#000000" /><path
524 d="m 18028.111,4853.111 -51,14"
525 id="path453"
526 inkscape:connector-curvature="0"
527 style="fill:none;stroke:#000000" /><path
528 d="m 17925.111,4881.111 -51,14"
529 id="path455"
530 inkscape:connector-curvature="0"
531 style="fill:none;stroke:#000000" /><path
532 d="m 17823.111,4909.111 -51,14"
533 id="path457"
534 inkscape:connector-curvature="0"
535 style="fill:none;stroke:#000000" /><path
536 d="m 17720.111,4937.111 -51,13"
537 id="path459"
538 inkscape:connector-curvature="0"
539 style="fill:none;stroke:#000000" /><path
540 d="m 17618.111,4964.111 -51,14"
541 id="path461"
542 inkscape:connector-curvature="0"
543 style="fill:none;stroke:#000000" /><path
544 d="m 17516.111,4992.111 -52,14"
545 id="path463"
546 inkscape:connector-curvature="0"
547 style="fill:none;stroke:#000000" /><path
548 d="m 17413.111,5020.111 -51,14"
549 id="path465"
550 inkscape:connector-curvature="0"
551 style="fill:none;stroke:#000000" /><path
552 d="m 17311.111,5048.111 -52,14"
553 id="path467"
554 inkscape:connector-curvature="0"
555 style="fill:none;stroke:#000000" /><path
556 d="m 17208.111,5076.111 -51,13"
557 id="path469"
558 inkscape:connector-curvature="0"
559 style="fill:none;stroke:#000000" /><path
560 d="m 17106.111,5103.111 -52,14"
561 id="path471"
562 inkscape:connector-curvature="0"
563 style="fill:none;stroke:#000000" /><path
564 d="m 17003.111,5131.111 -51,14"
565 id="path473"
566 inkscape:connector-curvature="0"
567 style="fill:none;stroke:#000000" /><path
568 d="m 16901.111,5159.111 -52,14"
569 id="path475"
570 inkscape:connector-curvature="0"
571 style="fill:none;stroke:#000000" /><path
572 d="m 16798.111,5187.111 -51,14"
573 id="path477"
574 inkscape:connector-curvature="0"
575 style="fill:none;stroke:#000000" /><path
576 d="m 16696.111,5214.111 -52,14"
577 id="path479"
578 inkscape:connector-curvature="0"
579 style="fill:none;stroke:#000000" /><path
580 d="m 16593.111,5242.111 -51,14"
581 id="path481"
582 inkscape:connector-curvature="0"
583 style="fill:none;stroke:#000000" /><path
584 d="m 16491.111,5270.111 -52,14"
585 id="path483"
586 inkscape:connector-curvature="0"
587 style="fill:none;stroke:#000000" /><path
588 d="m 16388.111,5298.111 -51,14"
589 id="path485"
590 inkscape:connector-curvature="0"
591 style="fill:none;stroke:#000000" /><path
592 d="m 16286.111,5326.111 -52,14"
593 id="path487"
594 inkscape:connector-curvature="0"
595 style="fill:none;stroke:#000000" /><path
596 d="m 16183.111,5353.111 -51,14"
597 id="path489"
598 inkscape:connector-curvature="0"
599 style="fill:none;stroke:#000000" /><path
600 d="m 16081.111,5381.111 -51,14"
601 id="path491"
602 inkscape:connector-curvature="0"
603 style="fill:none;stroke:#000000" /><path
604 d="m 15978.111,5409.111 -51,14"
605 id="path493"
606 inkscape:connector-curvature="0"
607 style="fill:none;stroke:#000000" /><path
608 d="m 15876.111,5437.111 -51,14"
609 id="path495"
610 inkscape:connector-curvature="0"
611 style="fill:none;stroke:#000000" /><path
612 d="m 15773.111,5465.111 -51,14"
613 id="path497"
614 inkscape:connector-curvature="0"
615 style="fill:none;stroke:#000000" /><path
616 d="m 15671.111,5492.111 -51,14"
617 id="path499"
618 inkscape:connector-curvature="0"
619 style="fill:none;stroke:#000000" /><path
620 d="m 15568.111,5520.111 -51,14"
621 id="path501"
622 inkscape:connector-curvature="0"
623 style="fill:none;stroke:#000000" /><path
624 d="m 15466.111,5548.111 -51,14"
625 id="path503"
626 inkscape:connector-curvature="0"
627 style="fill:none;stroke:#000000" /><path
628 d="m 15363.111,5576.111 -51,14"
629 id="path505"
630 inkscape:connector-curvature="0"
631 style="fill:none;stroke:#000000" /><path
632 d="m 15261.111,5604.111 -51,13"
633 id="path507"
634 inkscape:connector-curvature="0"
635 style="fill:none;stroke:#000000" /><path
636 d="m 15158.111,5631.111 -51,14"
637 id="path509"
638 inkscape:connector-curvature="0"
639 style="fill:none;stroke:#000000" /><path
640 d="m 15056.111,5659.111 -51,14"
641 id="path511"
642 inkscape:connector-curvature="0"
643 style="fill:none;stroke:#000000" /><path
644 d="m 14953.111,5687.111 -51,14"
645 id="path513"
646 inkscape:connector-curvature="0"
647 style="fill:none;stroke:#000000" /><path
648 d="m 14485.111,5814.111 474,27 -79,-290 -395,263 z"
649 id="path515"
650 inkscape:connector-curvature="0"
651 style="fill:#000000;stroke:none" /></svg> \ No newline at end of file
diff --git a/Documentation/media/uapi/v4l/bayer.svg b/Documentation/media/uapi/v4l/bayer.svg
index fbd4cfb5e6bf..c395113d1876 100644
--- a/Documentation/media/uapi/v4l/bayer.svg
+++ b/Documentation/media/uapi/v4l/bayer.svg
@@ -1,984 +1,29 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8"?>
2<svg 2<svg id="svg2" width="164.15mm" height="46.771mm" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" preserveAspectRatio="xMidYMid" version="1.2" viewBox="0 0 16415.333 4677.1107" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><metadata id="metadata652"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/></cc:Work></rdf:RDF></metadata><g id="g186" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id6"><rect id="rect189" class="BoundingBox" x="3299" y="3199" width="1303" height="1203" fill="none"/><path id="path191" d="m3950 4400h-650v-1200h1300v1200h-650z" fill="#00f"/><path id="path193" d="m3950
3 xmlns:dc="http://purl.org/dc/elements/1.1/" 34400h-650v-1200h1300v1200h-650z" fill="none" stroke="#3465a4"/><text id="text195" class="TextShape"><tspan id="tspan197" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan199" class="TextPosition" x="3739" y="4021"><tspan id="tspan201" fill="#ffffff">B</tspan></tspan></tspan></text>
4 xmlns:cc="http://creativecommons.org/ns#" 4</g></g><g id="g203" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id7"><rect id="rect206" class="BoundingBox" x="4599" y="3199" width="1303" height="1203" fill="none"/><path id="path208" d="m5250 4400h-650v-1200h1300v1200h-650z" fill="#0c0"/><path id="path210" d="m5250 4400h-650v-1200h1300v1200h-650z" fill="none" stroke="#3465a4"/><text id="text212" class="TextShape"><tspan id="tspan214" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan216" class="TextPosition" x="5003" y="4021"><tspan id="tspan218" fill="#ffffff">G</tspan></tspan></tspan></text>
5 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 5</g></g><g id="g220" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id8"><rect id="rect223" class="BoundingBox" x="3299" y="4399" width="1303" height="1203" fill="none"/><path id="path225" d="m3950 5600h-650v-1200h1300v1200h-650z" fill="#0c0"/><path id="path227" d="m3950 5600h-650v-1200h1300v1200h-650z" fill="none" stroke="#3465a4"/><text id="text229" class="TextShape"><tspan id="tspan231" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan233" class="TextPosition" x="3703" y="5221"><tspan id="tspan235" fill="#ffffff">G</tspan></tspan></tspan></text>
6 xmlns:svg="http://www.w3.org/2000/svg" 6</g></g><g id="g237" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id9"><rect id="rect240" class="BoundingBox" x="4599" y="4399" width="1303" height="1203" fill="none"/><path id="path242" d="m5250 5600h-650v-1200h1300v1200h-650z" fill="#f00"/><path id="path244" d="m5250 5600h-650v-1200h1300v1200h-650z" fill="none" stroke="#3465a4"/><text id="text246" class="TextShape"><tspan id="tspan248" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan250" class="TextPosition" x="5022" y="5221"><tspan id="tspan252" fill="#ffffff">R</tspan></tspan></tspan></text>
7 xmlns="http://www.w3.org/2000/svg" 7</g></g><g id="g254" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id10" fill="none"><rect id="rect257" class="BoundingBox" x="5999" y="3299" width="1003" height="1003"/><path id="path259" d="m6500 4300h-500v-1e3h1e3v1e3h-500z" stroke="#00f"/></g></g><g id="g261" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id11" fill="none"><rect id="rect264" class="BoundingBox" x="4699" y="5699" width="1003" height="1003"/><path id="path266" d="m5200 6700h-500v-1e3h1e3v1e3h-500z" stroke="#0c0"/></g></g><g id="g268" class="com.sun.star.drawing.TextShape" transform="translate(-3285.9 -3185.9)"><g id="id12"><rect id="rect271" class="BoundingBox" x="4e3" y="6900" width="2374" height="963" fill="none"/><text id="text273" class="TextShape"><tspan id="tspan275" class="TextParagraph" font-family="sans-serif" font-size="635px"
8 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 8font-weight="400"><tspan id="tspan277" class="TextPosition" x="4250" y="7601"><tspan id="tspan279" fill="#000000">BGGR</tspan></tspan></tspan></text>
9 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 9</g></g><g id="g281" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id13"><rect id="rect284" class="BoundingBox" x="8799" y="3199" width="1303" height="1203" fill="none"/><path id="path286" d="m9450 4400h-650v-1200h1300v1200h-650z" fill="#00f"/><path id="path288" d="m9450 4400h-650v-1200h1300v1200h-650z" fill="none" stroke="#3465a4"/><text id="text290" class="TextShape"><tspan id="tspan292" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan294" class="TextPosition" x="9239" y="4021"><tspan id="tspan296" fill="#ffffff">B</tspan></tspan></tspan></text>
10 version="1.2" 10</g></g><g id="g298" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id14"><rect id="rect301" class="BoundingBox" x="7499" y="3199" width="1303" height="1203" fill="none"/><path id="path303" d="m8150 4400h-650v-1200h1300v1200h-650z" fill="#0c0"/><path id="path305" d="m8150 4400h-650v-1200h1300v1200h-650z" fill="none" stroke="#3465a4"/><text id="text307" class="TextShape"><tspan id="tspan309" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan311" class="TextPosition" x="7903" y="4021"><tspan id="tspan313" fill="#ffffff">G</tspan></tspan></tspan></text>
11 width="164.15334mm" 11</g></g><g id="g315" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id15"><rect id="rect318" class="BoundingBox" x="8799" y="4399" width="1303" height="1203" fill="none"/><path id="path320" d="m9450 5600h-650v-1200h1300v1200h-650z" fill="#0c0"/><path id="path322" d="m9450 5600h-650v-1200h1300v1200h-650z" fill="none" stroke="#3465a4"/><text id="text324" class="TextShape"><tspan id="tspan326" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan328" class="TextPosition" x="9203" y="5221"><tspan id="tspan330" fill="#ffffff">G</tspan></tspan></tspan></text>
12 height="46.771107mm" 12</g></g><g id="g332" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id16"><rect id="rect335" class="BoundingBox" x="7499" y="4399" width="1303" height="1203" fill="none"/><path id="path337" d="m8150 5600h-650v-1200h1300v1200h-650z" fill="#f00"/><path id="path339" d="m8150 5600h-650v-1200h1300v1200h-650z" fill="none" stroke="#3465a4"/><text id="text341" class="TextShape"><tspan id="tspan343" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan345" class="TextPosition" x="7922" y="5221"><tspan id="tspan347" fill="#ffffff">R</tspan></tspan></tspan></text>
13 viewBox="0 0 16415.333 4677.1107" 13</g></g><g id="g349" class="com.sun.star.drawing.TextShape" transform="translate(-3285.9 -3185.9)"><g id="id17"><rect id="rect352" class="BoundingBox" x="8200" y="6900" width="2374" height="963" fill="none"/><text id="text354" class="TextShape"><tspan id="tspan356" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan358" class="TextPosition" x="8450" y="7601"><tspan id="tspan360" fill="#000000">GBRG</tspan></tspan></tspan></text>
14 preserveAspectRatio="xMidYMid" 14</g></g><g id="g362" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id18"><rect id="rect365" class="BoundingBox" x="17299" y="4399" width="1303" height="1203" fill="none"/><path id="path367" d="m17950 5600h-650v-1200h1300v1200h-650z" fill="#00f"/><path id="path369" d="m17950 5600h-650v-1200h1300v1200h-650z" fill="none" stroke="#3465a4"/><text id="text371" class="TextShape"><tspan id="tspan373" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan375" class="TextPosition" x="17739" y="5221"><tspan id="tspan377" fill="#ffffff">B</tspan></tspan></tspan></text>
15 xml:space="preserve" 15</g></g><g id="g379" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id19"><rect id="rect382" class="BoundingBox" x="17299" y="3199" width="1303" height="1203" fill="none"/><path id="path384" d="m17950 4400h-650v-1200h1300v1200h-650z" fill="#0c0"/><path id="path386" d="m17950 4400h-650v-1200h1300v1200h-650z" fill="none" stroke="#3465a4"/><text id="text388" class="TextShape"><tspan id="tspan390" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan392" class="TextPosition" x="17703" y="4021"><tspan id="tspan394" fill="#ffffff">G</tspan></tspan></tspan></text>
16 id="svg2" 16</g></g><g id="g396" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id20"><rect id="rect399" class="BoundingBox" x="15999" y="4399" width="1303" height="1203" fill="none"/><path id="path401" d="m16650 5600h-650v-1200h1300v1200h-650z" fill="#0c0"/><path id="path403" d="m16650 5600h-650v-1200h1300v1200h-650z" fill="none" stroke="#3465a4"/><text id="text405" class="TextShape"><tspan id="tspan407" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan409" class="TextPosition" x="16403" y="5221"><tspan id="tspan411" fill="#ffffff">G</tspan></tspan></tspan></text>
17 inkscape:version="0.91 r13725" 17</g></g><g id="g413" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id21"><rect id="rect416" class="BoundingBox" x="15999" y="3199" width="1303" height="1203" fill="none"/><path id="path418" d="m16650 4400h-650v-1200h1300v1200h-650z" fill="#f00"/><path id="path420" d="m16650 4400h-650v-1200h1300v1200h-650z" fill="none" stroke="#3465a4"/><text id="text422" class="TextShape"><tspan id="tspan424" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan426" class="TextPosition" x="16422" y="4021"><tspan id="tspan428" fill="#ffffff">R</tspan></tspan></tspan></text>
18 sodipodi:docname="bayer.svg" 18</g></g><g id="g430" class="com.sun.star.drawing.TextShape" transform="translate(-3285.9 -3185.9)"><g id="id22"><rect id="rect433" class="BoundingBox" x="16700" y="6900" width="2374" height="963" fill="none"/><text id="text435" class="TextShape"><tspan id="tspan437" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan439" class="TextPosition" x="16950" y="7601"><tspan id="tspan441" fill="#000000">RGGB</tspan></tspan></tspan></text>
19 style="fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round"><metadata 19</g></g><g id="g443" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id23"><rect id="rect446" class="BoundingBox" x="11699" y="4399" width="1303" height="1203" fill="none"/><path id="path448" d="m12350 5600h-650v-1200h1300v1200h-650z" fill="#00f"/><path id="path450" d="m12350 5600h-650v-1200h1300v1200h-650z" fill="none" stroke="#3465a4"/><text id="text452" class="TextShape"><tspan id="tspan454" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan456" class="TextPosition" x="12139" y="5221"><tspan id="tspan458" fill="#ffffff">B</tspan></tspan></tspan></text>
20 id="metadata652"><rdf:RDF><cc:Work 20</g></g><g id="g460" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id24"><rect id="rect463" class="BoundingBox" x="11699" y="3199" width="1303" height="1203" fill="none"/><path id="path465" d="m12350 4400h-650v-1200h1300v1200h-650z" fill="#0c0"/><path id="path467" d="m12350 4400h-650v-1200h1300v1200h-650z" fill="none" stroke="#3465a4"/><text id="text469" class="TextShape"><tspan id="tspan471" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan473" class="TextPosition" x="12103" y="4021"><tspan id="tspan475" fill="#ffffff">G</tspan></tspan></tspan></text>
21 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type 21</g></g><g id="g477" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id25"><rect id="rect480" class="BoundingBox" x="12999" y="4399" width="1303" height="1203" fill="none"/><path id="path482" d="m13650 5600h-650v-1200h1300v1200h-650z" fill="#0c0"/><path id="path484" d="m13650 5600h-650v-1200h1300v1200h-650z" fill="none" stroke="#3465a4"/><text id="text486" class="TextShape"><tspan id="tspan488" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan490" class="TextPosition" x="13403" y="5221"><tspan id="tspan492" fill="#ffffff">G</tspan></tspan></tspan></text>
22 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview 22</g></g><g id="g494" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id26"><rect id="rect497" class="BoundingBox" x="12999" y="3199" width="1303" height="1203" fill="none"/><path id="path499" d="m13650 4400h-650v-1200h1300v1200h-650z" fill="#f00"/><path id="path501" d="m13650 4400h-650v-1200h1300v1200h-650z" fill="none" stroke="#3465a4"/><text id="text503" class="TextShape"><tspan id="tspan505" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan507" class="TextPosition" x="13422" y="4021"><tspan id="tspan509" fill="#ffffff">R</tspan></tspan></tspan></text>
23 pagecolor="#ffffff" 23</g></g><g id="g511" class="com.sun.star.drawing.TextShape" transform="translate(-3285.9 -3185.9)"><g id="id27"><rect id="rect514" class="BoundingBox" x="12400" y="6900" width="2374" height="963" fill="none"/><text id="text516" class="TextShape"><tspan id="tspan518" class="TextParagraph" font-family="sans-serif" font-size="635px" font-weight="400"><tspan id="tspan520" class="TextPosition" x="12650" y="7601"><tspan id="tspan522" fill="#000000">GRBG</tspan></tspan></tspan></text>
24 bordercolor="#666666" 24</g></g><g id="g524" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id28" fill="none"><rect id="rect527" class="BoundingBox" x="5999" y="5699" width="1003" height="1003"/><path id="path529" d="m6500 6700h-500v-1e3h1e3v1e3h-500z" stroke="#00f"/></g></g><g id="g531" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id29" fill="none"><rect id="rect534" class="BoundingBox" x="3399" y="5699" width="1003" height="1003"/><path id="path536" d="m3900 6700h-500v-1e3h1e3v1e3h-500z" stroke="#00f"/></g></g><g id="g538" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id30" fill="none"><rect id="rect541" class="BoundingBox" x="5999" y="4499" width="1003" height="1003"/><path id="path543" d="m6500 5500h-500v-1e3h1e3v1e3h-500z" stroke="#0c0"/></g></g><g id="g545"
25 borderopacity="1" 25class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id31" fill="none"><rect id="rect548" class="BoundingBox" x="7599" y="5799" width="1003" height="1003"/><path id="path550" d="m8100 6800h-500v-1e3h1e3v1e3h-500z" stroke="#0c0"/></g></g><g id="g552" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id32" fill="none"><rect id="rect555" class="BoundingBox" x="10199" y="5799" width="1003" height="1003"/><path id="path557" d="m10700 6800h-500v-1e3h1e3v1e3h-500z" stroke="#0c0"/></g></g><g id="g559" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id33" fill="none"><rect id="rect562" class="BoundingBox" x="8899" y="5799" width="1003" height="1003"/><path id="path564" d="m9400 6800h-500v-1e3h1e3v1e3h-500z" stroke="#00f"/></g></g><g id="g566" class="com.sun.star.drawing.CustomShape"
26 objecttolerance="10" 26transform="translate(-3285.9 -3185.9)"><g id="id34" fill="none"><rect id="rect569" class="BoundingBox" x="10199" y="4499" width="1003" height="1003"/><path id="path571" d="m10700 5500h-500v-1e3h1e3v1e3h-500z" stroke="#f00"/></g></g><g id="g573" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id35" fill="none"><rect id="rect576" class="BoundingBox" x="10199" y="3299" width="1003" height="1003"/><path id="path578" d="m10700 4300h-500v-1e3h1e3v1e3h-500z" stroke="#0c0"/></g></g><g id="g580" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id36" fill="none"><rect id="rect583" class="BoundingBox" x="14399" y="3299" width="1003" height="1003"/><path id="path585" d="m14900 4300h-500v-1e3h1e3v1e3h-500z" stroke="#0c0"/></g></g><g id="g587" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g
27 gridtolerance="10" 27id="id37" fill="none"><rect id="rect590" class="BoundingBox" x="14399" y="5799" width="1003" height="1003"/><path id="path592" d="m14900 6800h-500v-1e3h1e3v1e3h-500z" stroke="#0c0"/></g></g><g id="g594" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id38" fill="none"><rect id="rect597" class="BoundingBox" x="11799" y="5799" width="1003" height="1003"/><path id="path599" d="m12300 6800h-500v-1e3h1e3v1e3h-500z" stroke="#0c0"/></g></g><g id="g601" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id39" fill="none"><rect id="rect604" class="BoundingBox" x="14399" y="4499" width="1003" height="1003"/><path id="path606" d="m14900 5500h-500v-1e3h1e3v1e3h-500z" stroke="#00f"/></g></g><g id="g608" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id40" fill="none"><rect id="rect611"
28 guidetolerance="10" 28class="BoundingBox" x="13099" y="5799" width="1003" height="1003"/><path id="path613" d="m13600 6800h-500v-1e3h1e3v1e3h-500z" stroke="#f00"/></g></g><g id="g615" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id41" fill="none"><rect id="rect618" class="BoundingBox" x="16099" y="5799" width="1003" height="1003"/><path id="path620" d="m16600 6800h-500v-1e3h1e3v1e3h-500z" stroke="#f00"/></g></g><g id="g622" class="com.sun.star.drawing.CustomShape" transform="translate(-3398.8 -3185.9)"><g id="id42" fill="none"><rect id="rect625" class="BoundingBox" x="18799" y="5799" width="1003" height="1003"/><path id="path627" d="m19300 6800h-500v-1e3h1e3v1e3h-500z" stroke="#f00"/></g></g><g id="g629" class="com.sun.star.drawing.CustomShape" transform="translate(-3398.8 -3185.9)"><g id="id43" fill="none"><rect id="rect632" class="BoundingBox" x="18799" y="3299"
29 inkscape:pageopacity="0" 29width="1003" height="1003"/><path id="path634" d="m19300 4300h-500v-1e3h1e3v1e3h-500z" stroke="#f00"/></g></g><g id="g636" class="com.sun.star.drawing.CustomShape" transform="translate(-3285.9 -3185.9)"><g id="id44" fill="none"><rect id="rect639" class="BoundingBox" x="17399" y="5799" width="1003" height="1003"/><path id="path641" d="m17900 6800h-500v-1e3h1e3v1e3h-500z" stroke="#0c0"/></g></g><g id="g643" class="com.sun.star.drawing.CustomShape" transform="translate(-3398.8 -3185.9)"><g id="id45" fill="none"><rect id="rect646" class="BoundingBox" x="18799" y="4499" width="1003" height="1003"/><path id="path648" d="m19300 5500h-500v-1e3h1e3v1e3h-500z" stroke="#0c0"/></g></g></svg>
30 inkscape:pageshadow="2"
31 inkscape:window-width="1920"
32 inkscape:window-height="997"
33 id="namedview650"
34 showgrid="false"
35 fit-margin-top="0"
36 fit-margin-left="0"
37 fit-margin-right="0"
38 fit-margin-bottom="0"
39 inkscape:zoom="2.4000866"
40 inkscape:cx="290.82284"
41 inkscape:cy="82.862197"
42 inkscape:window-x="1920"
43 inkscape:window-y="30"
44 inkscape:window-maximized="1"
45 inkscape:current-layer="svg2" /><defs
46 class="ClipPathGroup"
47 id="defs4" /><defs
48 id="defs9" /><defs
49 id="defs82" /><defs
50 id="defs105" /><defs
51 class="TextShapeIndex"
52 id="defs116" /><defs
53 class="EmbeddedBulletChars"
54 id="defs120" /><defs
55 class="TextEmbeddedBitmaps"
56 id="defs149" /><g
57 class="com.sun.star.drawing.CustomShape"
58 id="g186"
59 transform="translate(-3285.889,-3185.889)"><g
60 id="id6"><rect
61 class="BoundingBox"
62 x="3299"
63 y="3199"
64 width="1303"
65 height="1203"
66 id="rect189"
67 style="fill:none;stroke:none" /><path
68 d="m 3950,4400 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
69 id="path191"
70 inkscape:connector-curvature="0"
71 style="fill:#0000ff;stroke:none" /><path
72 d="m 3950,4400 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
73 id="path193"
74 inkscape:connector-curvature="0"
75 style="fill:none;stroke:#3465a4" /><text
76 class="TextShape"
77 id="text195"><tspan
78 class="TextParagraph"
79 font-size="635px"
80 font-weight="400"
81 id="tspan197"
82 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
83 class="TextPosition"
84 x="3739"
85 y="4021"
86 id="tspan199"><tspan
87 id="tspan201"
88 style="fill:#ffffff;stroke:none">B</tspan></tspan></tspan></text>
89</g></g><g
90 class="com.sun.star.drawing.CustomShape"
91 id="g203"
92 transform="translate(-3285.889,-3185.889)"><g
93 id="id7"><rect
94 class="BoundingBox"
95 x="4599"
96 y="3199"
97 width="1303"
98 height="1203"
99 id="rect206"
100 style="fill:none;stroke:none" /><path
101 d="m 5250,4400 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
102 id="path208"
103 inkscape:connector-curvature="0"
104 style="fill:#00cc00;stroke:none" /><path
105 d="m 5250,4400 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
106 id="path210"
107 inkscape:connector-curvature="0"
108 style="fill:none;stroke:#3465a4" /><text
109 class="TextShape"
110 id="text212"><tspan
111 class="TextParagraph"
112 font-size="635px"
113 font-weight="400"
114 id="tspan214"
115 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
116 class="TextPosition"
117 x="5003"
118 y="4021"
119 id="tspan216"><tspan
120 id="tspan218"
121 style="fill:#ffffff;stroke:none">G</tspan></tspan></tspan></text>
122</g></g><g
123 class="com.sun.star.drawing.CustomShape"
124 id="g220"
125 transform="translate(-3285.889,-3185.889)"><g
126 id="id8"><rect
127 class="BoundingBox"
128 x="3299"
129 y="4399"
130 width="1303"
131 height="1203"
132 id="rect223"
133 style="fill:none;stroke:none" /><path
134 d="m 3950,5600 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
135 id="path225"
136 inkscape:connector-curvature="0"
137 style="fill:#00cc00;stroke:none" /><path
138 d="m 3950,5600 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
139 id="path227"
140 inkscape:connector-curvature="0"
141 style="fill:none;stroke:#3465a4" /><text
142 class="TextShape"
143 id="text229"><tspan
144 class="TextParagraph"
145 font-size="635px"
146 font-weight="400"
147 id="tspan231"
148 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
149 class="TextPosition"
150 x="3703"
151 y="5221"
152 id="tspan233"><tspan
153 id="tspan235"
154 style="fill:#ffffff;stroke:none">G</tspan></tspan></tspan></text>
155</g></g><g
156 class="com.sun.star.drawing.CustomShape"
157 id="g237"
158 transform="translate(-3285.889,-3185.889)"><g
159 id="id9"><rect
160 class="BoundingBox"
161 x="4599"
162 y="4399"
163 width="1303"
164 height="1203"
165 id="rect240"
166 style="fill:none;stroke:none" /><path
167 d="m 5250,5600 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
168 id="path242"
169 inkscape:connector-curvature="0"
170 style="fill:#ff0000;stroke:none" /><path
171 d="m 5250,5600 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
172 id="path244"
173 inkscape:connector-curvature="0"
174 style="fill:none;stroke:#3465a4" /><text
175 class="TextShape"
176 id="text246"><tspan
177 class="TextParagraph"
178 font-size="635px"
179 font-weight="400"
180 id="tspan248"
181 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
182 class="TextPosition"
183 x="5022"
184 y="5221"
185 id="tspan250"><tspan
186 id="tspan252"
187 style="fill:#ffffff;stroke:none">R</tspan></tspan></tspan></text>
188</g></g><g
189 class="com.sun.star.drawing.CustomShape"
190 id="g254"
191 transform="translate(-3285.889,-3185.889)"><g
192 id="id10"><rect
193 class="BoundingBox"
194 x="5999"
195 y="3299"
196 width="1003"
197 height="1003"
198 id="rect257"
199 style="fill:none;stroke:none" /><path
200 d="m 6500,4300 -500,0 0,-1000 1000,0 0,1000 -500,0 z"
201 id="path259"
202 inkscape:connector-curvature="0"
203 style="fill:none;stroke:#0000ff" /></g></g><g
204 class="com.sun.star.drawing.CustomShape"
205 id="g261"
206 transform="translate(-3285.889,-3185.889)"><g
207 id="id11"><rect
208 class="BoundingBox"
209 x="4699"
210 y="5699"
211 width="1003"
212 height="1003"
213 id="rect264"
214 style="fill:none;stroke:none" /><path
215 d="m 5200,6700 -500,0 0,-1000 1000,0 0,1000 -500,0 z"
216 id="path266"
217 inkscape:connector-curvature="0"
218 style="fill:none;stroke:#00cc00" /></g></g><g
219 class="com.sun.star.drawing.TextShape"
220 id="g268"
221 transform="translate(-3285.889,-3185.889)"><g
222 id="id12"><rect
223 class="BoundingBox"
224 x="4000"
225 y="6900"
226 width="2374"
227 height="963"
228 id="rect271"
229 style="fill:none;stroke:none" /><text
230 class="TextShape"
231 id="text273"><tspan
232 class="TextParagraph"
233 font-size="635px"
234 font-weight="400"
235 id="tspan275"
236 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
237 class="TextPosition"
238 x="4250"
239 y="7601"
240 id="tspan277"><tspan
241 id="tspan279"
242 style="fill:#000000;stroke:none">BGGR</tspan></tspan></tspan></text>
243</g></g><g
244 class="com.sun.star.drawing.CustomShape"
245 id="g281"
246 transform="translate(-3285.889,-3185.889)"><g
247 id="id13"><rect
248 class="BoundingBox"
249 x="8799"
250 y="3199"
251 width="1303"
252 height="1203"
253 id="rect284"
254 style="fill:none;stroke:none" /><path
255 d="m 9450,4400 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
256 id="path286"
257 inkscape:connector-curvature="0"
258 style="fill:#0000ff;stroke:none" /><path
259 d="m 9450,4400 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
260 id="path288"
261 inkscape:connector-curvature="0"
262 style="fill:none;stroke:#3465a4" /><text
263 class="TextShape"
264 id="text290"><tspan
265 class="TextParagraph"
266 font-size="635px"
267 font-weight="400"
268 id="tspan292"
269 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
270 class="TextPosition"
271 x="9239"
272 y="4021"
273 id="tspan294"><tspan
274 id="tspan296"
275 style="fill:#ffffff;stroke:none">B</tspan></tspan></tspan></text>
276</g></g><g
277 class="com.sun.star.drawing.CustomShape"
278 id="g298"
279 transform="translate(-3285.889,-3185.889)"><g
280 id="id14"><rect
281 class="BoundingBox"
282 x="7499"
283 y="3199"
284 width="1303"
285 height="1203"
286 id="rect301"
287 style="fill:none;stroke:none" /><path
288 d="m 8150,4400 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
289 id="path303"
290 inkscape:connector-curvature="0"
291 style="fill:#00cc00;stroke:none" /><path
292 d="m 8150,4400 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
293 id="path305"
294 inkscape:connector-curvature="0"
295 style="fill:none;stroke:#3465a4" /><text
296 class="TextShape"
297 id="text307"><tspan
298 class="TextParagraph"
299 font-size="635px"
300 font-weight="400"
301 id="tspan309"
302 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
303 class="TextPosition"
304 x="7903"
305 y="4021"
306 id="tspan311"><tspan
307 id="tspan313"
308 style="fill:#ffffff;stroke:none">G</tspan></tspan></tspan></text>
309</g></g><g
310 class="com.sun.star.drawing.CustomShape"
311 id="g315"
312 transform="translate(-3285.889,-3185.889)"><g
313 id="id15"><rect
314 class="BoundingBox"
315 x="8799"
316 y="4399"
317 width="1303"
318 height="1203"
319 id="rect318"
320 style="fill:none;stroke:none" /><path
321 d="m 9450,5600 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
322 id="path320"
323 inkscape:connector-curvature="0"
324 style="fill:#00cc00;stroke:none" /><path
325 d="m 9450,5600 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
326 id="path322"
327 inkscape:connector-curvature="0"
328 style="fill:none;stroke:#3465a4" /><text
329 class="TextShape"
330 id="text324"><tspan
331 class="TextParagraph"
332 font-size="635px"
333 font-weight="400"
334 id="tspan326"
335 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
336 class="TextPosition"
337 x="9203"
338 y="5221"
339 id="tspan328"><tspan
340 id="tspan330"
341 style="fill:#ffffff;stroke:none">G</tspan></tspan></tspan></text>
342</g></g><g
343 class="com.sun.star.drawing.CustomShape"
344 id="g332"
345 transform="translate(-3285.889,-3185.889)"><g
346 id="id16"><rect
347 class="BoundingBox"
348 x="7499"
349 y="4399"
350 width="1303"
351 height="1203"
352 id="rect335"
353 style="fill:none;stroke:none" /><path
354 d="m 8150,5600 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
355 id="path337"
356 inkscape:connector-curvature="0"
357 style="fill:#ff0000;stroke:none" /><path
358 d="m 8150,5600 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
359 id="path339"
360 inkscape:connector-curvature="0"
361 style="fill:none;stroke:#3465a4" /><text
362 class="TextShape"
363 id="text341"><tspan
364 class="TextParagraph"
365 font-size="635px"
366 font-weight="400"
367 id="tspan343"
368 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
369 class="TextPosition"
370 x="7922"
371 y="5221"
372 id="tspan345"><tspan
373 id="tspan347"
374 style="fill:#ffffff;stroke:none">R</tspan></tspan></tspan></text>
375</g></g><g
376 class="com.sun.star.drawing.TextShape"
377 id="g349"
378 transform="translate(-3285.889,-3185.889)"><g
379 id="id17"><rect
380 class="BoundingBox"
381 x="8200"
382 y="6900"
383 width="2374"
384 height="963"
385 id="rect352"
386 style="fill:none;stroke:none" /><text
387 class="TextShape"
388 id="text354"><tspan
389 class="TextParagraph"
390 font-size="635px"
391 font-weight="400"
392 id="tspan356"
393 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
394 class="TextPosition"
395 x="8450"
396 y="7601"
397 id="tspan358"><tspan
398 id="tspan360"
399 style="fill:#000000;stroke:none">GBRG</tspan></tspan></tspan></text>
400</g></g><g
401 class="com.sun.star.drawing.CustomShape"
402 id="g362"
403 transform="translate(-3285.889,-3185.889)"><g
404 id="id18"><rect
405 class="BoundingBox"
406 x="17299"
407 y="4399"
408 width="1303"
409 height="1203"
410 id="rect365"
411 style="fill:none;stroke:none" /><path
412 d="m 17950,5600 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
413 id="path367"
414 inkscape:connector-curvature="0"
415 style="fill:#0000ff;stroke:none" /><path
416 d="m 17950,5600 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
417 id="path369"
418 inkscape:connector-curvature="0"
419 style="fill:none;stroke:#3465a4" /><text
420 class="TextShape"
421 id="text371"><tspan
422 class="TextParagraph"
423 font-size="635px"
424 font-weight="400"
425 id="tspan373"
426 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
427 class="TextPosition"
428 x="17739"
429 y="5221"
430 id="tspan375"><tspan
431 id="tspan377"
432 style="fill:#ffffff;stroke:none">B</tspan></tspan></tspan></text>
433</g></g><g
434 class="com.sun.star.drawing.CustomShape"
435 id="g379"
436 transform="translate(-3285.889,-3185.889)"><g
437 id="id19"><rect
438 class="BoundingBox"
439 x="17299"
440 y="3199"
441 width="1303"
442 height="1203"
443 id="rect382"
444 style="fill:none;stroke:none" /><path
445 d="m 17950,4400 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
446 id="path384"
447 inkscape:connector-curvature="0"
448 style="fill:#00cc00;stroke:none" /><path
449 d="m 17950,4400 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
450 id="path386"
451 inkscape:connector-curvature="0"
452 style="fill:none;stroke:#3465a4" /><text
453 class="TextShape"
454 id="text388"><tspan
455 class="TextParagraph"
456 font-size="635px"
457 font-weight="400"
458 id="tspan390"
459 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
460 class="TextPosition"
461 x="17703"
462 y="4021"
463 id="tspan392"><tspan
464 id="tspan394"
465 style="fill:#ffffff;stroke:none">G</tspan></tspan></tspan></text>
466</g></g><g
467 class="com.sun.star.drawing.CustomShape"
468 id="g396"
469 transform="translate(-3285.889,-3185.889)"><g
470 id="id20"><rect
471 class="BoundingBox"
472 x="15999"
473 y="4399"
474 width="1303"
475 height="1203"
476 id="rect399"
477 style="fill:none;stroke:none" /><path
478 d="m 16650,5600 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
479 id="path401"
480 inkscape:connector-curvature="0"
481 style="fill:#00cc00;stroke:none" /><path
482 d="m 16650,5600 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
483 id="path403"
484 inkscape:connector-curvature="0"
485 style="fill:none;stroke:#3465a4" /><text
486 class="TextShape"
487 id="text405"><tspan
488 class="TextParagraph"
489 font-size="635px"
490 font-weight="400"
491 id="tspan407"
492 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
493 class="TextPosition"
494 x="16403"
495 y="5221"
496 id="tspan409"><tspan
497 id="tspan411"
498 style="fill:#ffffff;stroke:none">G</tspan></tspan></tspan></text>
499</g></g><g
500 class="com.sun.star.drawing.CustomShape"
501 id="g413"
502 transform="translate(-3285.889,-3185.889)"><g
503 id="id21"><rect
504 class="BoundingBox"
505 x="15999"
506 y="3199"
507 width="1303"
508 height="1203"
509 id="rect416"
510 style="fill:none;stroke:none" /><path
511 d="m 16650,4400 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
512 id="path418"
513 inkscape:connector-curvature="0"
514 style="fill:#ff0000;stroke:none" /><path
515 d="m 16650,4400 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
516 id="path420"
517 inkscape:connector-curvature="0"
518 style="fill:none;stroke:#3465a4" /><text
519 class="TextShape"
520 id="text422"><tspan
521 class="TextParagraph"
522 font-size="635px"
523 font-weight="400"
524 id="tspan424"
525 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
526 class="TextPosition"
527 x="16422"
528 y="4021"
529 id="tspan426"><tspan
530 id="tspan428"
531 style="fill:#ffffff;stroke:none">R</tspan></tspan></tspan></text>
532</g></g><g
533 class="com.sun.star.drawing.TextShape"
534 id="g430"
535 transform="translate(-3285.889,-3185.889)"><g
536 id="id22"><rect
537 class="BoundingBox"
538 x="16700"
539 y="6900"
540 width="2374"
541 height="963"
542 id="rect433"
543 style="fill:none;stroke:none" /><text
544 class="TextShape"
545 id="text435"><tspan
546 class="TextParagraph"
547 font-size="635px"
548 font-weight="400"
549 id="tspan437"
550 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
551 class="TextPosition"
552 x="16950"
553 y="7601"
554 id="tspan439"><tspan
555 id="tspan441"
556 style="fill:#000000;stroke:none">RGGB</tspan></tspan></tspan></text>
557</g></g><g
558 class="com.sun.star.drawing.CustomShape"
559 id="g443"
560 transform="translate(-3285.889,-3185.889)"><g
561 id="id23"><rect
562 class="BoundingBox"
563 x="11699"
564 y="4399"
565 width="1303"
566 height="1203"
567 id="rect446"
568 style="fill:none;stroke:none" /><path
569 d="m 12350,5600 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
570 id="path448"
571 inkscape:connector-curvature="0"
572 style="fill:#0000ff;stroke:none" /><path
573 d="m 12350,5600 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
574 id="path450"
575 inkscape:connector-curvature="0"
576 style="fill:none;stroke:#3465a4" /><text
577 class="TextShape"
578 id="text452"><tspan
579 class="TextParagraph"
580 font-size="635px"
581 font-weight="400"
582 id="tspan454"
583 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
584 class="TextPosition"
585 x="12139"
586 y="5221"
587 id="tspan456"><tspan
588 id="tspan458"
589 style="fill:#ffffff;stroke:none">B</tspan></tspan></tspan></text>
590</g></g><g
591 class="com.sun.star.drawing.CustomShape"
592 id="g460"
593 transform="translate(-3285.889,-3185.889)"><g
594 id="id24"><rect
595 class="BoundingBox"
596 x="11699"
597 y="3199"
598 width="1303"
599 height="1203"
600 id="rect463"
601 style="fill:none;stroke:none" /><path
602 d="m 12350,4400 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
603 id="path465"
604 inkscape:connector-curvature="0"
605 style="fill:#00cc00;stroke:none" /><path
606 d="m 12350,4400 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
607 id="path467"
608 inkscape:connector-curvature="0"
609 style="fill:none;stroke:#3465a4" /><text
610 class="TextShape"
611 id="text469"><tspan
612 class="TextParagraph"
613 font-size="635px"
614 font-weight="400"
615 id="tspan471"
616 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
617 class="TextPosition"
618 x="12103"
619 y="4021"
620 id="tspan473"><tspan
621 id="tspan475"
622 style="fill:#ffffff;stroke:none">G</tspan></tspan></tspan></text>
623</g></g><g
624 class="com.sun.star.drawing.CustomShape"
625 id="g477"
626 transform="translate(-3285.889,-3185.889)"><g
627 id="id25"><rect
628 class="BoundingBox"
629 x="12999"
630 y="4399"
631 width="1303"
632 height="1203"
633 id="rect480"
634 style="fill:none;stroke:none" /><path
635 d="m 13650,5600 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
636 id="path482"
637 inkscape:connector-curvature="0"
638 style="fill:#00cc00;stroke:none" /><path
639 d="m 13650,5600 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
640 id="path484"
641 inkscape:connector-curvature="0"
642 style="fill:none;stroke:#3465a4" /><text
643 class="TextShape"
644 id="text486"><tspan
645 class="TextParagraph"
646 font-size="635px"
647 font-weight="400"
648 id="tspan488"
649 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
650 class="TextPosition"
651 x="13403"
652 y="5221"
653 id="tspan490"><tspan
654 id="tspan492"
655 style="fill:#ffffff;stroke:none">G</tspan></tspan></tspan></text>
656</g></g><g
657 class="com.sun.star.drawing.CustomShape"
658 id="g494"
659 transform="translate(-3285.889,-3185.889)"><g
660 id="id26"><rect
661 class="BoundingBox"
662 x="12999"
663 y="3199"
664 width="1303"
665 height="1203"
666 id="rect497"
667 style="fill:none;stroke:none" /><path
668 d="m 13650,4400 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
669 id="path499"
670 inkscape:connector-curvature="0"
671 style="fill:#ff0000;stroke:none" /><path
672 d="m 13650,4400 -650,0 0,-1200 1300,0 0,1200 -650,0 z"
673 id="path501"
674 inkscape:connector-curvature="0"
675 style="fill:none;stroke:#3465a4" /><text
676 class="TextShape"
677 id="text503"><tspan
678 class="TextParagraph"
679 font-size="635px"
680 font-weight="400"
681 id="tspan505"
682 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
683 class="TextPosition"
684 x="13422"
685 y="4021"
686 id="tspan507"><tspan
687 id="tspan509"
688 style="fill:#ffffff;stroke:none">R</tspan></tspan></tspan></text>
689</g></g><g
690 class="com.sun.star.drawing.TextShape"
691 id="g511"
692 transform="translate(-3285.889,-3185.889)"><g
693 id="id27"><rect
694 class="BoundingBox"
695 x="12400"
696 y="6900"
697 width="2374"
698 height="963"
699 id="rect514"
700 style="fill:none;stroke:none" /><text
701 class="TextShape"
702 id="text516"><tspan
703 class="TextParagraph"
704 font-size="635px"
705 font-weight="400"
706 id="tspan518"
707 style="font-weight:400;font-size:635px;font-family:'Liberation Sans', sans-serif"><tspan
708 class="TextPosition"
709 x="12650"
710 y="7601"
711 id="tspan520"><tspan
712 id="tspan522"
713 style="fill:#000000;stroke:none">GRBG</tspan></tspan></tspan></text>
714</g></g><g
715 class="com.sun.star.drawing.CustomShape"
716 id="g524"
717 transform="translate(-3285.889,-3185.889)"><g
718 id="id28"><rect
719 class="BoundingBox"
720 x="5999"
721 y="5699"
722 width="1003"
723 height="1003"
724 id="rect527"
725 style="fill:none;stroke:none" /><path
726 d="m 6500,6700 -500,0 0,-1000 1000,0 0,1000 -500,0 z"
727 id="path529"
728 inkscape:connector-curvature="0"
729 style="fill:none;stroke:#0000ff" /></g></g><g
730 class="com.sun.star.drawing.CustomShape"
731 id="g531"
732 transform="translate(-3285.889,-3185.889)"><g
733 id="id29"><rect
734 class="BoundingBox"
735 x="3399"
736 y="5699"
737 width="1003"
738 height="1003"
739 id="rect534"
740 style="fill:none;stroke:none" /><path
741 d="m 3900,6700 -500,0 0,-1000 1000,0 0,1000 -500,0 z"
742 id="path536"
743 inkscape:connector-curvature="0"
744 style="fill:none;stroke:#0000ff" /></g></g><g
745 class="com.sun.star.drawing.CustomShape"
746 id="g538"
747 transform="translate(-3285.889,-3185.889)"><g
748 id="id30"><rect
749 class="BoundingBox"
750 x="5999"
751 y="4499"
752 width="1003"
753 height="1003"
754 id="rect541"
755 style="fill:none;stroke:none" /><path
756 d="m 6500,5500 -500,0 0,-1000 1000,0 0,1000 -500,0 z"
757 id="path543"
758 inkscape:connector-curvature="0"
759 style="fill:none;stroke:#00cc00" /></g></g><g
760 class="com.sun.star.drawing.CustomShape"
761 id="g545"
762 transform="translate(-3285.889,-3185.889)"><g
763 id="id31"><rect
764 class="BoundingBox"
765 x="7599"
766 y="5799"
767 width="1003"
768 height="1003"
769 id="rect548"
770 style="fill:none;stroke:none" /><path
771 d="m 8100,6800 -500,0 0,-1000 1000,0 0,1000 -500,0 z"
772 id="path550"
773 inkscape:connector-curvature="0"
774 style="fill:none;stroke:#00cc00" /></g></g><g
775 class="com.sun.star.drawing.CustomShape"
776 id="g552"
777 transform="translate(-3285.889,-3185.889)"><g
778 id="id32"><rect
779 class="BoundingBox"
780 x="10199"
781 y="5799"
782 width="1003"
783 height="1003"
784 id="rect555"
785 style="fill:none;stroke:none" /><path
786 d="m 10700,6800 -500,0 0,-1000 1000,0 0,1000 -500,0 z"
787 id="path557"
788 inkscape:connector-curvature="0"
789 style="fill:none;stroke:#00cc00" /></g></g><g
790 class="com.sun.star.drawing.CustomShape"
791 id="g559"
792 transform="translate(-3285.889,-3185.889)"><g
793 id="id33"><rect
794 class="BoundingBox"
795 x="8899"
796 y="5799"
797 width="1003"
798 height="1003"
799 id="rect562"
800 style="fill:none;stroke:none" /><path
801 d="m 9400,6800 -500,0 0,-1000 1000,0 0,1000 -500,0 z"
802 id="path564"
803 inkscape:connector-curvature="0"
804 style="fill:none;stroke:#0000ff" /></g></g><g
805 class="com.sun.star.drawing.CustomShape"
806 id="g566"
807 transform="translate(-3285.889,-3185.889)"><g
808 id="id34"><rect
809 class="BoundingBox"
810 x="10199"
811 y="4499"
812 width="1003"
813 height="1003"
814 id="rect569"
815 style="fill:none;stroke:none" /><path
816 d="m 10700,5500 -500,0 0,-1000 1000,0 0,1000 -500,0 z"
817 id="path571"
818 inkscape:connector-curvature="0"
819 style="fill:none;stroke:#ff0000" /></g></g><g
820 class="com.sun.star.drawing.CustomShape"
821 id="g573"
822 transform="translate(-3285.889,-3185.889)"><g
823 id="id35"><rect
824 class="BoundingBox"
825 x="10199"
826 y="3299"
827 width="1003"
828 height="1003"
829 id="rect576"
830 style="fill:none;stroke:none" /><path
831 d="m 10700,4300 -500,0 0,-1000 1000,0 0,1000 -500,0 z"
832 id="path578"
833 inkscape:connector-curvature="0"
834 style="fill:none;stroke:#00cc00" /></g></g><g
835 class="com.sun.star.drawing.CustomShape"
836 id="g580"
837 transform="translate(-3285.889,-3185.889)"><g
838 id="id36"><rect
839 class="BoundingBox"
840 x="14399"
841 y="3299"
842 width="1003"
843 height="1003"
844 id="rect583"
845 style="fill:none;stroke:none" /><path
846 d="m 14900,4300 -500,0 0,-1000 1000,0 0,1000 -500,0 z"
847 id="path585"
848 inkscape:connector-curvature="0"
849 style="fill:none;stroke:#00cc00" /></g></g><g
850 class="com.sun.star.drawing.CustomShape"
851 id="g587"
852 transform="translate(-3285.889,-3185.889)"><g
853 id="id37"><rect
854 class="BoundingBox"
855 x="14399"
856 y="5799"
857 width="1003"
858 height="1003"
859 id="rect590"
860 style="fill:none;stroke:none" /><path
861 d="m 14900,6800 -500,0 0,-1000 1000,0 0,1000 -500,0 z"
862 id="path592"
863 inkscape:connector-curvature="0"
864 style="fill:none;stroke:#00cc00" /></g></g><g
865 class="com.sun.star.drawing.CustomShape"
866 id="g594"
867 transform="translate(-3285.889,-3185.889)"><g
868 id="id38"><rect
869 class="BoundingBox"
870 x="11799"
871 y="5799"
872 width="1003"
873 height="1003"
874 id="rect597"
875 style="fill:none;stroke:none" /><path
876 d="m 12300,6800 -500,0 0,-1000 1000,0 0,1000 -500,0 z"
877 id="path599"
878 inkscape:connector-curvature="0"
879 style="fill:none;stroke:#00cc00" /></g></g><g
880 class="com.sun.star.drawing.CustomShape"
881 id="g601"
882 transform="translate(-3285.889,-3185.889)"><g
883 id="id39"><rect
884 class="BoundingBox"
885 x="14399"
886 y="4499"
887 width="1003"
888 height="1003"
889 id="rect604"
890 style="fill:none;stroke:none" /><path
891 d="m 14900,5500 -500,0 0,-1000 1000,0 0,1000 -500,0 z"
892 id="path606"
893 inkscape:connector-curvature="0"
894 style="fill:none;stroke:#0000ff" /></g></g><g
895 class="com.sun.star.drawing.CustomShape"
896 id="g608"
897 transform="translate(-3285.889,-3185.889)"><g
898 id="id40"><rect
899 class="BoundingBox"
900 x="13099"
901 y="5799"
902 width="1003"
903 height="1003"
904 id="rect611"
905 style="fill:none;stroke:none" /><path
906 d="m 13600,6800 -500,0 0,-1000 1000,0 0,1000 -500,0 z"
907 id="path613"
908 inkscape:connector-curvature="0"
909 style="fill:none;stroke:#ff0000" /></g></g><g
910 class="com.sun.star.drawing.CustomShape"
911 id="g615"
912 transform="translate(-3285.889,-3185.889)"><g
913 id="id41"><rect
914 class="BoundingBox"
915 x="16099"
916 y="5799"
917 width="1003"
918 height="1003"
919 id="rect618"
920 style="fill:none;stroke:none" /><path
921 d="m 16600,6800 -500,0 0,-1000 1000,0 0,1000 -500,0 z"
922 id="path620"
923 inkscape:connector-curvature="0"
924 style="fill:none;stroke:#ff0000" /></g></g><g
925 class="com.sun.star.drawing.CustomShape"
926 id="g622"
927 transform="translate(-3398.7778,-3185.889)"><g
928 id="id42"><rect
929 class="BoundingBox"
930 x="18799"
931 y="5799"
932 width="1003"
933 height="1003"
934 id="rect625"
935 style="fill:none;stroke:none" /><path
936 d="m 19300,6800 -500,0 0,-1000 1000,0 0,1000 -500,0 z"
937 id="path627"
938 inkscape:connector-curvature="0"
939 style="fill:none;stroke:#ff0000" /></g></g><g
940 class="com.sun.star.drawing.CustomShape"
941 id="g629"
942 transform="translate(-3398.7778,-3185.889)"><g
943 id="id43"><rect
944 class="BoundingBox"
945 x="18799"
946 y="3299"
947 width="1003"
948 height="1003"
949 id="rect632"
950 style="fill:none;stroke:none" /><path
951 d="m 19300,4300 -500,0 0,-1000 1000,0 0,1000 -500,0 z"
952 id="path634"
953 inkscape:connector-curvature="0"
954 style="fill:none;stroke:#ff0000" /></g></g><g
955 class="com.sun.star.drawing.CustomShape"
956 id="g636"
957 transform="translate(-3285.889,-3185.889)"><g
958 id="id44"><rect
959 class="BoundingBox"
960 x="17399"
961 y="5799"
962 width="1003"
963 height="1003"
964 id="rect639"
965 style="fill:none;stroke:none" /><path
966 d="m 17900,6800 -500,0 0,-1000 1000,0 0,1000 -500,0 z"
967 id="path641"
968 inkscape:connector-curvature="0"
969 style="fill:none;stroke:#00cc00" /></g></g><g
970 class="com.sun.star.drawing.CustomShape"
971 id="g643"
972 transform="translate(-3398.7778,-3185.889)"><g
973 id="id45"><rect
974 class="BoundingBox"
975 x="18799"
976 y="4499"
977 width="1003"
978 height="1003"
979 id="rect646"
980 style="fill:none;stroke:none" /><path
981 d="m 19300,5500 -500,0 0,-1000 1000,0 0,1000 -500,0 z"
982 id="path648"
983 inkscape:connector-curvature="0"
984 style="fill:none;stroke:#00cc00" /></g></g></svg> \ No newline at end of file
diff --git a/Documentation/media/uapi/v4l/constraints.svg b/Documentation/media/uapi/v4l/constraints.svg
index f710ee46b1f8..7e5d7185ca49 100644
--- a/Documentation/media/uapi/v4l/constraints.svg
+++ b/Documentation/media/uapi/v4l/constraints.svg
@@ -1,346 +1,10 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8"?>
2<svg 2<svg id="svg2" width="249.01mm" height="143.01mm" fill-rule="evenodd" stroke-linejoin="round" stroke-width="28.222" preserveAspectRatio="xMidYMid" version="1.2" viewBox="0 0 24900.998 14300.999" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><metadata id="metadata325"><rdf:RDF><cc:Work rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/><dc:title/></cc:Work></rdf:RDF></metadata><defs id="defs4" class="ClipPathGroup"><marker id="marker6261" overflow="visible" orient="auto"><path id="path6263" transform="matrix(-.4 0 0 -.4 -4 0)" d="m0 0 5-5-17.5 5 17.5 5-5-5z" fill="#f00" fill-rule="evenodd" stroke="#f00" stroke-width="1pt"/></marker><marker id="marker6125" overflow="visible"
3 xmlns:dc="http://purl.org/dc/elements/1.1/" 3orient="auto"><path id="path6127" transform="matrix(-.4 0 0 -.4 -4 0)" d="m0 0 5-5-17.5 5 17.5 5-5-5z" fill="#f00" fill-rule="evenodd" stroke="#f00" stroke-width="1pt"/></marker><marker id="marker6001" overflow="visible" orient="auto"><path id="path6003" transform="matrix(-.4 0 0 -.4 -4 0)" d="m0 0 5-5-17.5 5 17.5 5-5-5z" fill="#f00" fill-rule="evenodd" stroke="#f00" stroke-width="1pt"/></marker><marker id="marker5693" overflow="visible" orient="auto"><path id="path5695" transform="matrix(-.4 0 0 -.4 -4 0)" d="m0 0 5-5-17.5 5 17.5 5-5-5z" fill="#f00" fill-rule="evenodd" stroke="#f00" stroke-width="1pt"/></marker><marker id="marker5575" overflow="visible" orient="auto"><path id="path5577" transform="matrix(-.4 0 0 -.4 -4 0)" d="m0 0 5-5-17.5 5 17.5 5-5-5z" fill="#000080" fill-rule="evenodd" stroke="#000080" stroke-width="1pt"/></marker><marker id="marker5469" overflow="visible"
4 xmlns:cc="http://creativecommons.org/ns#" 4orient="auto"><path id="path5471" transform="matrix(-.4 0 0 -.4 -4 0)" d="m0 0 5-5-17.5 5 17.5 5-5-5z" fill="#000080" fill-rule="evenodd" stroke="#000080" stroke-width="1pt"/></marker><marker id="marker5259" overflow="visible" orient="auto"><path id="path5261" transform="matrix(-.4 0 0 -.4 -4 0)" d="m0 0 5-5-17.5 5 17.5 5-5-5z" fill="#000080" fill-rule="evenodd" stroke="#000080" stroke-width="1pt"/></marker><marker id="Arrow2Mend" overflow="visible" orient="auto"><path id="path4241" transform="scale(-.6)" d="m8.7186 4.0337-10.926-4.0177 10.926-4.0177c-1.7455 2.3721-1.7354 5.6175-6e-7 8.0354z" fill="#000080" fill-rule="evenodd" stroke="#000080" stroke-linejoin="round" stroke-width=".625"/></marker></defs><g id="g204" class="com.sun.star.drawing.CustomShape" transform="translate(-1350,-3250)"><g id="id6"><rect id="rect207" class="BoundingBox" x="1350" y="3250" width="24901" height="14301"
5 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 5fill="none"/><path id="path209" d="m13800 17500h-12400v-14200h24800v14200h-12400z" fill="#fff"/><path id="path211" d="m13800 17500h-12400v-14200h24800v14200h-12400z" fill="none" stroke="#f00" stroke-linejoin="round" stroke-width="100"/><text id="text213" class="TextShape"><tspan id="tspan215" class="TextParagraph" font-family="sans-serif" font-size="846px" font-weight="400"><tspan id="tspan217" class="TextPosition" x="1652" y="17093" fill="#ff0000"><tspan id="tspan219"/><tspan id="tspan221">V4L2_SEL_FLAG_GE</tspan></tspan></tspan></text>
6 xmlns:svg="http://www.w3.org/2000/svg" 6</g></g><rect id="rect226" class="BoundingBox" x="3e3" y="2200" width="18101" height="10101" fill="none"/><path id="path228" d="m12050 12250h-9e3v-1e4h18000v1e4h-9e3z" fill="#fff"/><path id="path230" d="m12050 12250h-9e3v-1e4h18000v1e4h-9e3z" fill="none" stroke="#000" stroke-linejoin="round" stroke-width="100"/><text id="text232" class="TextShape" x="-1350" y="-3250"><tspan id="tspan234" class="TextParagraph" font-family="sans-serif" font-size="987px" font-weight="400"><tspan id="tspan236" class="TextPosition" x="3227" y="11503" fill="#000000"><tspan id="tspan238"/><tspan id="tspan240">ORIGINAL</tspan></tspan></tspan></text>
7 xmlns="http://www.w3.org/2000/svg" 7<g id="g242" class="com.sun.star.drawing.CustomShape" transform="translate(-1350,-3250)"><g id="id8"><rect id="rect245" class="BoundingBox" x="7050" y="7950" width="7901" height="5501" fill="none"/><path id="path247" d="m11000 13400h-3900v-5400h7800v5400h-3900z" fill="#fff"/><path id="path249" d="m11000 13400h-3900v-5400h7800v5400h-3900z" fill="none" stroke="#3465a4" stroke-linejoin="round" stroke-width="100"/><text id="text251" class="TextShape"><tspan id="tspan253" class="TextParagraph" font-family="sans-serif" font-size="776px" font-weight="400"><tspan id="tspan255" class="TextPosition" x="7228" y="10969"><tspan id="tspan257" fill="#000080">V4L2_SEL_FLAG_LE</tspan></tspan></tspan></text>
8 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 8</g></g><rect id="rect262" class="BoundingBox" x="13700" y="7100" width="7101" height="101" fill="none"/><path id="path264" d="m20750 7150h-7e3" fill="none" marker-end="url(#Arrow2Mend)" stroke="#000080" stroke-linejoin="round" stroke-width="99.991"/><rect id="rect269" class="BoundingBox" x="3400" y="7100" width="2101" height="101" fill="none"/><path id="path271" d="m3450 7150h2e3" fill="none" marker-end="url(#marker5575)" stroke="#000080" stroke-linejoin="round" stroke-width="100"/><rect id="rect276" class="BoundingBox" x="9800" y="2900" width="101" height="1501" fill="none"/><path id="path278" d="m9850 2950v1400" fill="none" marker-end="url(#marker5259)" stroke="#000080" stroke-linejoin="round" stroke-width="100"/><rect id="rect283" class="BoundingBox" x="9600" y="10600" width="101" height="1301" fill="none"/><path id="path285" d="m9650 11850v-1200" fill="none"
9 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 9marker-end="url(#marker5469)" stroke="#000080" stroke-linejoin="round" stroke-width="100"/><rect id="rect290" class="BoundingBox" x="450" y="6850" width="2051" height="601" fill="none"/><path id="path292" d="m2450 7150h-2000.9" fill="none" marker-end="url(#marker6125)" stroke="#f00" stroke-linejoin="round" stroke-width="132.48"/><rect id="rect299" class="BoundingBox" x="21600" y="6750" width="2651" height="601" fill="none"/><path id="path301" d="m21650 7050h2522.6" fill="none" marker-end="url(#marker6001)" stroke="#f00" stroke-linejoin="round" stroke-width="120.41"/><rect id="rect308" class="BoundingBox" x="9550" y="550" width="601" height="1451" fill="none"/><path id="path310" d="m9837 1950v-1453" fill="none" marker-end="url(#marker6261)" stroke="#f00" stroke-linejoin="round" stroke-width="164.04"/><rect id="rect317" class="BoundingBox" x="9350" y="12500" width="601" height="1451"
10 version="1.2" 10fill="none"/><path id="path319" d="m9650 12550v1505.2" fill="none" marker-end="url(#marker5693)" stroke="#f00" stroke-linejoin="round" stroke-width="166.96"/></svg>
11 width="249.00998mm"
12 height="143.00999mm"
13 viewBox="0 0 24900.998 14300.999"
14 preserveAspectRatio="xMidYMid"
15 xml:space="preserve"
16 id="svg2"
17 inkscape:version="0.91 r13725"
18 sodipodi:docname="constraints.svg"
19 style="fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round"><metadata
20 id="metadata325"><rdf:RDF><cc:Work
21 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
22 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><sodipodi:namedview
23 pagecolor="#ffffff"
24 bordercolor="#666666"
25 borderopacity="1"
26 objecttolerance="10"
27 gridtolerance="10"
28 guidetolerance="10"
29 inkscape:pageopacity="0"
30 inkscape:pageshadow="2"
31 inkscape:window-width="1920"
32 inkscape:window-height="997"
33 id="namedview323"
34 showgrid="false"
35 inkscape:zoom="1.0818519"
36 inkscape:cx="270.29272"
37 inkscape:cy="249.83854"
38 inkscape:window-x="1920"
39 inkscape:window-y="30"
40 inkscape:window-maximized="1"
41 inkscape:current-layer="svg2"
42 fit-margin-top="0"
43 fit-margin-left="0"
44 fit-margin-right="0"
45 fit-margin-bottom="0" /><defs
46 class="ClipPathGroup"
47 id="defs4"><marker
48 inkscape:isstock="true"
49 style="overflow:visible"
50 id="marker6261"
51 refX="0"
52 refY="0"
53 orient="auto"
54 inkscape:stockid="Arrow1Mend"><path
55 transform="matrix(-0.4,0,0,-0.4,-4,0)"
56 style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1"
57 d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
58 id="path6263"
59 inkscape:connector-curvature="0" /></marker><marker
60 inkscape:stockid="Arrow1Mend"
61 orient="auto"
62 refY="0"
63 refX="0"
64 id="marker6125"
65 style="overflow:visible"
66 inkscape:isstock="true"
67 inkscape:collect="always"><path
68 id="path6127"
69 d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
70 style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1"
71 transform="matrix(-0.4,0,0,-0.4,-4,0)"
72 inkscape:connector-curvature="0" /></marker><marker
73 inkscape:isstock="true"
74 style="overflow:visible"
75 id="marker6001"
76 refX="0"
77 refY="0"
78 orient="auto"
79 inkscape:stockid="Arrow1Mend"
80 inkscape:collect="always"><path
81 transform="matrix(-0.4,0,0,-0.4,-4,0)"
82 style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1"
83 d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
84 id="path6003"
85 inkscape:connector-curvature="0" /></marker><marker
86 inkscape:stockid="Arrow1Mend"
87 orient="auto"
88 refY="0"
89 refX="0"
90 id="marker5693"
91 style="overflow:visible"
92 inkscape:isstock="true"
93 inkscape:collect="always"><path
94 id="path5695"
95 d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
96 style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:1pt;stroke-opacity:1"
97 transform="matrix(-0.4,0,0,-0.4,-4,0)"
98 inkscape:connector-curvature="0" /></marker><marker
99 inkscape:isstock="true"
100 style="overflow:visible"
101 id="marker5575"
102 refX="0"
103 refY="0"
104 orient="auto"
105 inkscape:stockid="Arrow1Mend"
106 inkscape:collect="always"><path
107 transform="matrix(-0.4,0,0,-0.4,-4,0)"
108 style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1pt;stroke-opacity:1"
109 d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
110 id="path5577"
111 inkscape:connector-curvature="0" /></marker><marker
112 inkscape:stockid="Arrow1Mend"
113 orient="auto"
114 refY="0"
115 refX="0"
116 id="marker5469"
117 style="overflow:visible"
118 inkscape:isstock="true"
119 inkscape:collect="always"><path
120 id="path5471"
121 d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
122 style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1pt;stroke-opacity:1"
123 transform="matrix(-0.4,0,0,-0.4,-4,0)"
124 inkscape:connector-curvature="0" /></marker><marker
125 inkscape:stockid="Arrow1Mend"
126 orient="auto"
127 refY="0"
128 refX="0"
129 id="marker5259"
130 style="overflow:visible"
131 inkscape:isstock="true"><path
132 id="path5261"
133 d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
134 style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1pt;stroke-opacity:1"
135 transform="matrix(-0.4,0,0,-0.4,-4,0)"
136 inkscape:connector-curvature="0" /></marker><marker
137 inkscape:stockid="Arrow2Mend"
138 orient="auto"
139 refY="0"
140 refX="0"
141 id="Arrow2Mend"
142 style="overflow:visible"
143 inkscape:isstock="true"><path
144 id="path4241"
145 style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
146 d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
147 transform="scale(-0.6,-0.6)"
148 inkscape:connector-curvature="0" /></marker></defs><defs
149 id="defs9" /><defs
150 id="defs100" /><defs
151 id="defs123" /><defs
152 class="TextShapeIndex"
153 id="defs134" /><defs
154 class="EmbeddedBulletChars"
155 id="defs138" /><defs
156 class="TextEmbeddedBitmaps"
157 id="defs167" /><g
158 class="com.sun.star.drawing.CustomShape"
159 id="g204"
160 transform="translate(-1350,-3250)"><g
161 id="id6"><rect
162 class="BoundingBox"
163 x="1350"
164 y="3250"
165 width="24901"
166 height="14301"
167 id="rect207"
168 style="fill:none;stroke:none" /><path
169 d="m 13800,17500 -12400,0 0,-14200 24800,0 0,14200 -12400,0 z"
170 id="path209"
171 inkscape:connector-curvature="0"
172 style="fill:#ffffff;stroke:none" /><path
173 d="m 13800,17500 -12400,0 0,-14200 24800,0 0,14200 -12400,0 z"
174 id="path211"
175 inkscape:connector-curvature="0"
176 style="fill:none;stroke:#ff0000;stroke-width:100;stroke-linejoin:round" /><text
177 class="TextShape"
178 id="text213"><tspan
179 class="TextParagraph"
180 font-size="846px"
181 font-weight="400"
182 id="tspan215"
183 style="font-weight:400;font-size:846px;font-family:'Liberation Sans', sans-serif"><tspan
184 class="TextPosition"
185 x="1652"
186 y="17093"
187 id="tspan217"><tspan
188 id="tspan219"
189 style="fill:#ff0000;stroke:none" /><tspan
190 id="tspan221"
191 style="fill:#ff0000;stroke:none">V4L2_SEL_FLAG_GE</tspan></tspan></tspan></text>
192</g></g><rect
193 class="BoundingBox"
194 x="3000"
195 y="2200"
196 width="18101"
197 height="10101"
198 id="rect226"
199 style="fill:none;stroke:none" /><path
200 d="m 12050,12250 -9000,0 0,-10000 18000,0 0,10000 -9000,0 z"
201 id="path228"
202 inkscape:connector-curvature="0"
203 style="fill:#ffffff;stroke:none" /><path
204 d="m 12050,12250 -9000,0 0,-10000 18000,0 0,10000 -9000,0 z"
205 id="path230"
206 inkscape:connector-curvature="0"
207 style="fill:none;stroke:#000000;stroke-width:100;stroke-linejoin:round" /><text
208 class="TextShape"
209 id="text232"
210 x="-1350"
211 y="-3250"><tspan
212 class="TextParagraph"
213 font-size="987px"
214 font-weight="400"
215 id="tspan234"
216 style="font-weight:400;font-size:987px;font-family:'Liberation Sans', sans-serif"><tspan
217 class="TextPosition"
218 x="3227"
219 y="11503"
220 id="tspan236"><tspan
221 id="tspan238"
222 style="fill:#000000;stroke:none" /><tspan
223 id="tspan240"
224 style="fill:#000000;stroke:none">ORIGINAL</tspan></tspan></tspan></text>
225<g
226 class="com.sun.star.drawing.CustomShape"
227 id="g242"
228 transform="translate(-1350,-3250)"><g
229 id="id8"><rect
230 class="BoundingBox"
231 x="7050"
232 y="7950"
233 width="7901"
234 height="5501"
235 id="rect245"
236 style="fill:none;stroke:none" /><path
237 d="m 11000,13400 -3900,0 0,-5400 7800,0 0,5400 -3900,0 z"
238 id="path247"
239 inkscape:connector-curvature="0"
240 style="fill:#ffffff;stroke:none" /><path
241 d="m 11000,13400 -3900,0 0,-5400 7800,0 0,5400 -3900,0 z"
242 id="path249"
243 inkscape:connector-curvature="0"
244 style="fill:none;stroke:#3465a4;stroke-width:100;stroke-linejoin:round" /><text
245 class="TextShape"
246 id="text251"><tspan
247 class="TextParagraph"
248 font-size="776px"
249 font-weight="400"
250 id="tspan253"
251 style="font-weight:400;font-size:776px;font-family:'Liberation Sans', sans-serif"><tspan
252 class="TextPosition"
253 x="7228"
254 y="10969"
255 id="tspan255"><tspan
256 id="tspan257"
257 style="fill:#000080;stroke:none">V4L2_SEL_FLAG_LE</tspan></tspan></tspan></text>
258</g></g><rect
259 class="BoundingBox"
260 x="13700"
261 y="7100"
262 width="7101"
263 height="101"
264 id="rect262"
265 style="fill:none;stroke:none" /><path
266 d="m 20750,7150 -7000,0"
267 id="path264"
268 inkscape:connector-curvature="0"
269 style="fill:none;stroke:#000080;stroke-width:99.99134064;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow2Mend)" /><rect
270 class="BoundingBox"
271 x="3400"
272 y="7100"
273 width="2101"
274 height="101"
275 id="rect269"
276 style="fill:none;stroke:none" /><path
277 d="m 3450,7150 2000,0"
278 id="path271"
279 inkscape:connector-curvature="0"
280 style="fill:none;stroke:#000080;stroke-width:100;stroke-linejoin:round;marker-end:url(#marker5575)" /><rect
281 class="BoundingBox"
282 x="9800"
283 y="2900"
284 width="101"
285 height="1501"
286 id="rect276"
287 style="fill:none;stroke:none" /><path
288 d="m 9850,2950 0,1400"
289 id="path278"
290 inkscape:connector-curvature="0"
291 style="fill:none;stroke:#000080;stroke-width:100;stroke-linejoin:round;marker-end:url(#marker5259)" /><rect
292 class="BoundingBox"
293 x="9600"
294 y="10600"
295 width="101"
296 height="1301"
297 id="rect283"
298 style="fill:none;stroke:none" /><path
299 d="m 9650,11850 0,-1200"
300 id="path285"
301 inkscape:connector-curvature="0"
302 style="fill:none;stroke:#000080;stroke-width:100;stroke-linejoin:round;marker-end:url(#marker5469)" /><rect
303 class="BoundingBox"
304 x="450"
305 y="6850"
306 width="2051"
307 height="601"
308 id="rect290"
309 style="fill:none;stroke:none" /><path
310 d="m 2450,7150 -2000.8696,0"
311 id="path292"
312 inkscape:connector-curvature="0"
313 style="fill:none;stroke:#ff0000;stroke-width:132.48202515;stroke-linejoin:round;marker-end:url(#marker6125)" /><rect
314 class="BoundingBox"
315 x="21600"
316 y="6750"
317 width="2651"
318 height="601"
319 id="rect299"
320 style="fill:none;stroke:none" /><path
321 d="m 21650,7050 2522.609,0"
322 id="path301"
323 inkscape:connector-curvature="0"
324 style="fill:none;stroke:#ff0000;stroke-width:120.40660858;stroke-linejoin:round;marker-end:url(#marker6001)" /><rect
325 class="BoundingBox"
326 x="9550"
327 y="550"
328 width="601"
329 height="1451"
330 id="rect308"
331 style="fill:none;stroke:none" /><path
332 d="m 9836.957,1950 0,-1453.0435"
333 id="path310"
334 inkscape:connector-curvature="0"
335 style="fill:none;stroke:#ff0000;stroke-width:164.03721619;stroke-linejoin:round;marker-end:url(#marker6261)" /><rect
336 class="BoundingBox"
337 x="9350"
338 y="12500"
339 width="601"
340 height="1451"
341 id="rect317"
342 style="fill:none;stroke:none" /><path
343 d="m 9650,12550 0,1505.217"
344 id="path319"
345 inkscape:connector-curvature="0"
346 style="fill:none;stroke:#ff0000;stroke-width:166.95626831;stroke-linejoin:round;marker-end:url(#marker5693)" /></svg> \ No newline at end of file
diff --git a/Documentation/media/uapi/v4l/crop.svg b/Documentation/media/uapi/v4l/crop.svg
index dc9a471bae6b..3878fe4c49e9 100644
--- a/Documentation/media/uapi/v4l/crop.svg
+++ b/Documentation/media/uapi/v4l/crop.svg
@@ -18,33 +18,34 @@
18 viewBox="0 0 739.11388 339.6584" 18 viewBox="0 0 739.11388 339.6584"
19 sodipodi:docname="crop.svg"><metadata 19 sodipodi:docname="crop.svg"><metadata
20 id="metadata8"><rdf:RDF><cc:Work 20 id="metadata8"><rdf:RDF><cc:Work
21 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type 21 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
22 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs 22 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
23 id="defs6"><clipPath 23 id="defs6"><clipPath
24 clipPathUnits="userSpaceOnUse" 24 clipPathUnits="userSpaceOnUse"
25 id="clipPath44"><path 25 id="clipPath44"><path
26 d="m 0,0 0,1895 4118,0 L 4118,0 0,0 Z m 3051.62,250.48 8.19,17.01 -46.93,23.31 29.61,-25.515 -38.12,8.505 47.25,-23.31 z m -1559.25,800.73 -8.5,-17.01 46.93,-23.31 -29.29,25.2 37.8,-8.19 -46.94,23.31 z" 26 d="m 0,0 0,1895 4118,0 L 4118,0 0,0 Z m 3051.62,250.48 8.19,17.01 -46.93,23.31 29.61,-25.515 -38.12,8.505 47.25,-23.31 z m -1559.25,800.73 -8.5,-17.01 46.93,-23.31 -29.29,25.2 37.8,-8.19 -46.94,23.31 z"
27 id="path46" 27 id="path46"
28 inkscape:connector-curvature="0" 28 inkscape:connector-curvature="0"
29 style="clip-rule:evenodd" /></clipPath><clipPath 29 style="clip-rule:evenodd" /></clipPath><clipPath
30 clipPathUnits="userSpaceOnUse" 30 clipPathUnits="userSpaceOnUse"
31 id="clipPath64"><path 31 id="clipPath64"><path
32 d="m 0,0 0,1895 4118,0 0,-1626 -1,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -1,0 0,-1 1,0 0,-1 1,0 0,-1 2,0 0,-1 1,0 0,-1 1,0 0,-1 1,0 0,-1 1,0 0,-1 1,0 0,-1 2,0 0,-1 1,0 0,-1 1,0 0,-1 1,0 0,-1 1,0 0,-1 1,0 0,-1 1,0 0,-1 2,0 0,-1 1,0 0,-1 1,0 0,-1 1,0 0,-1 1,0 0,-1 1,0 0,-1 -4,0 0,1 -5,0 0,1 -4,0 0,1 -5,0 0,1 -4,0 0,1 -4,0 0,1 -4,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 1,0 0,3 1,0 0,2 1,0 0,2 1,0 L 4118,0 0,0 Z m 4074,272 0,-1 1,0 0,1 -1,0 z m -1486,743 0,-1 1,0 0,1 -1,0 z m -2,1 0,-1 1,0 0,1 -1,0 0,1 -1,0 0,1 -1,0 0,1 -1,0 0,1 -1,0 0,1 -1,0 0,1 -2,0 0,1 -1,0 0,1 -1,0 0,1 -1,0 0,1 -1,0 0,1 -1,0 0,1 -2,0 0,1 -1,0 0,1 -1,0 0,1 -1,0 0,1 -1,0 0,1 -1,0 0,1 -2,0 0,1 -1,0 0,2 2,0 0,-1 4,0 0,-1 5,0 0,-1 4,0 0,-1 5,0 0,-1 5,0 0,-1 4,0 0,-1 3,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -3,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,-2 -1,0 0,-2 -1,0 0,-2 -1,0 0,-2 -1,0 0,-2 -1,0 0,-2 -1,0 0,-2 -1,0 0,-2 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 z" 32 d="m 0,0 0,1895 4118,0 0,-1626 -1,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -1,0 0,-1 1,0 0,-1 1,0 0,-1 2,0 0,-1 1,0 0,-1 1,0 0,-1 1,0 0,-1 1,0 0,-1 1,0 0,-1 2,0 0,-1 1,0 0,-1 1,0 0,-1 1,0 0,-1 1,0 0,-1 1,0 0,-1 1,0 0,-1 2,0 0,-1 1,0 0,-1 1,0 0,-1 1,0 0,-1 1,0 0,-1 1,0 0,-1 -4,0 0,1 -5,0 0,1 -4,0 0,1 -5,0 0,1 -4,0 0,1 -4,0 0,1 -4,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 1,0 0,3 1,0 0,2 1,0 0,2 1,0 L 4118,0 0,0 Z m 4074,272 0,-1 1,0 0,1 -1,0 z m -1486,743 0,-1 1,0 0,1 -1,0 z m -2,1 0,-1 1,0 0,1 -1,0 0,1 -1,0 0,1 -1,0 0,1 -1,0 0,1 -1,0 0,1 -1,0 0,1 -2,0 0,1 -1,0 0,1 -1,0 0,1 -1,0 0,1 -1,0 0,1 -1,0 0,1 -2,0 0,1 -1,0 0,1 -1,0 0,1
33 id="path66" 33-1,0 0,1 -1,0 0,1 -1,0 0,1 -2,0 0,1 -1,0 0,2 2,0 0,-1 4,0 0,-1 5,0 0,-1 4,0 0,-1 5,0 0,-1 5,0 0,-1 4,0 0,-1 3,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -3,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,1 -2,0 0,-2 -1,0 0,-2 -1,0 0,-2 -1,0 0,-2 -1,0 0,-2 -1,0 0,-2 -1,0 0,-2 -1,0 0,-2 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 0,-1 2,0 z"
34 inkscape:connector-curvature="0" 34 id="path66"
35 style="clip-rule:evenodd" /></clipPath><clipPath 35 inkscape:connector-curvature="0"
36 style="clip-rule:evenodd" /></clipPath><clipPath
36 clipPathUnits="userSpaceOnUse" 37 clipPathUnits="userSpaceOnUse"
37 id="clipPath84"><path 38 id="clipPath84"><path
38 d="m 0,0 0,1895 4118,0 0,-136 -3,0 0,-1 -11,0 0,-1 -11,0 0,-1 -11,0 0,-1 -11,0 0,-1 5,0 0,-1 6,0 0,-1 7,0 0,-1 6,0 0,-1 6,0 0,-1 4,0 0,-1 -1,0 0,-1 -3,0 0,-1 -3,0 0,-1 -2,0 0,-1 -3,0 0,-1 -3,0 0,-1 -3,0 0,-1 -3,0 0,-1 -3,0 0,-1 -3,0 0,-1 -3,0 0,-1 7,0 0,1 11,0 0,1 11,0 0,1 11,0 0,1 3,0 L 4118,0 0,0 Z m 2552,1599 0,-1 2,0 0,1 11,0 0,1 11,0 0,1 11,0 0,1 11,0 0,1 -4,0 0,1 -7,0 0,1 -6,0 0,1 -7,0 0,1 -6,0 0,1 -3,0 0,1 2,0 0,1 2,0 0,1 3,0 0,1 3,0 0,1 3,0 0,1 3,0 0,1 3,0 0,1 2,0 0,1 3,0 0,1 3,0 0,1 3,0 0,1 -7,0 0,-1 -12,0 0,-1 -11,0 0,-1 -11,0 0,-1 -4,0 0,-1 1,0 0,-12 1,0 0,-4 z" 39 d="m 0,0 0,1895 4118,0 0,-136 -3,0 0,-1 -11,0 0,-1 -11,0 0,-1 -11,0 0,-1 -11,0 0,-1 5,0 0,-1 6,0 0,-1 7,0 0,-1 6,0 0,-1 6,0 0,-1 4,0 0,-1 -1,0 0,-1 -3,0 0,-1 -3,0 0,-1 -2,0 0,-1 -3,0 0,-1 -3,0 0,-1 -3,0 0,-1 -3,0 0,-1 -3,0 0,-1 -3,0 0,-1 -3,0 0,-1 7,0 0,1 11,0 0,1 11,0 0,1 11,0 0,1 3,0 L 4118,0 0,0 Z m 2552,1599 0,-1 2,0 0,1 11,0 0,1 11,0 0,1 11,0 0,1 11,0 0,1 -4,0 0,1 -7,0 0,1 -6,0 0,1 -7,0 0,1 -6,0 0,1 -3,0 0,1 2,0 0,1 2,0 0,1 3,0 0,1 3,0 0,1 3,0 0,1 3,0 0,1 3,0 0,1 2,0 0,1 3,0 0,1 3,0 0,1 3,0 0,1 -7,0 0,-1 -12,0 0,-1 -11,0 0,-1 -11,0 0,-1 -4,0 0,-1 1,0 0,-12 1,0 0,-4 z"
39 id="path86" 40 id="path86"
40 inkscape:connector-curvature="0" 41 inkscape:connector-curvature="0"
41 style="clip-rule:evenodd" /></clipPath><clipPath 42 style="clip-rule:evenodd" /></clipPath><clipPath
42 clipPathUnits="userSpaceOnUse" 43 clipPathUnits="userSpaceOnUse"
43 id="clipPath104"><path 44 id="clipPath104"><path
44 d="m 0,0 0,1895 4118,0 L 4118,0 0,0 Z m 3056.98,1740.43 -1.58,18.9 -52.6,-4.72 38.74,-6.3 -36.85,-12.6 52.29,4.72 z m -1570.28,-123.79 1.58,-18.9 52.6,4.72 -38.43,5.99 36.54,12.91 -52.29,-4.72 z" 45 d="m 0,0 0,1895 4118,0 L 4118,0 0,0 Z m 3056.98,1740.43 -1.58,18.9 -52.6,-4.72 38.74,-6.3 -36.85,-12.6 52.29,4.72 z m -1570.28,-123.79 1.58,-18.9 52.6,4.72 -38.43,5.99 36.54,12.91 -52.29,-4.72 z"
45 id="path106" 46 id="path106"
46 inkscape:connector-curvature="0" 47 inkscape:connector-curvature="0"
47 style="clip-rule:evenodd" /></clipPath></defs><sodipodi:namedview 48 style="clip-rule:evenodd" /></clipPath></defs><sodipodi:namedview
48 pagecolor="#ffffff" 49 pagecolor="#ffffff"
49 bordercolor="#666666" 50 bordercolor="#666666"
50 borderopacity="1" 51 borderopacity="1"
@@ -123,90 +124,90 @@
123 inkscape:connector-curvature="0" /><g 124 inkscape:connector-curvature="0" /><g
124 id="g40" 125 id="g40"
125 transform="matrix(0.14375794,0,0,0.14375794,-0.12334269,-0.08856738)"><g 126 transform="matrix(0.14375794,0,0,0.14375794,-0.12334269,-0.08856738)"><g
126 clip-path="url(#clipPath44)" 127 clip-path="url(#clipPath44)"
127 id="g42"><path 128 id="g42"><path
128 inkscape:connector-curvature="0" 129 inkscape:connector-curvature="0"
129 id="path48" 130 id="path48"
130 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 131 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
131 d="M 1492.37,1040.5 3051.62,260.875" /></g></g><g 132 d="M 1492.37,1040.5 3051.62,260.875" /></g></g><g
132 id="g50" 133 id="g50"
133 transform="matrix(0.14375794,0,0,0.14375794,-0.12334269,-0.08856738)"><path 134 transform="matrix(0.14375794,0,0,0.14375794,-0.12334269,-0.08856738)"><path
134 inkscape:connector-curvature="0" 135 inkscape:connector-curvature="0"
135 id="path52" 136 id="path52"
136 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" 137 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
137 d="m 1539.31,1027.9 -37.8,8.19 29.29,-25.2 8.51,17.01" /><path 138 d="m 1539.31,1027.9 -37.8,8.19 29.29,-25.2 8.51,17.01" /><path
138 inkscape:connector-curvature="0" 139 inkscape:connector-curvature="0"
139 id="path54" 140 id="path54"
140 style="fill:none;stroke:#000000;stroke-width:4.7249999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 141 style="fill:none;stroke:#000000;stroke-width:4.7249999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
141 d="m 1539.31,1027.9 -37.8,8.19 29.29,-25.2 8.51,17.01 z" /><path 142 d="m 1539.31,1027.9 -37.8,8.19 29.29,-25.2 8.51,17.01 z" /><path
142 inkscape:connector-curvature="0" 143 inkscape:connector-curvature="0"
143 id="path56" 144 id="path56"
144 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" 145 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
145 d="m 3004.37,273.79 38.12,-8.505 -29.61,25.515 -8.51,-17.01" /><path 146 d="m 3004.37,273.79 38.12,-8.505 -29.61,25.515 -8.51,-17.01" /><path
146 inkscape:connector-curvature="0" 147 inkscape:connector-curvature="0"
147 id="path58" 148 id="path58"
148 style="fill:none;stroke:#000000;stroke-width:4.7249999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 149 style="fill:none;stroke:#000000;stroke-width:4.7249999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
149 d="m 3004.37,273.79 38.12,-8.505 -29.61,25.515 -8.51,-17.01 z" /></g><g 150 d="m 3004.37,273.79 38.12,-8.505 -29.61,25.515 -8.51,-17.01 z" /></g><g
150 id="g60" 151 id="g60"
151 transform="matrix(0.14375794,0,0,0.14375794,-0.12334269,-0.08856738)"><g 152 transform="matrix(0.14375794,0,0,0.14375794,-0.12334269,-0.08856738)"><g
152 clip-path="url(#clipPath64)" 153 clip-path="url(#clipPath64)"
153 id="g62"><path 154 id="g62"><path
154 inkscape:connector-curvature="0" 155 inkscape:connector-curvature="0"
155 id="path68" 156 id="path68"
156 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 157 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
157 d="M 2555.5,1040.5 4114.75,260.875" /></g></g><g 158 d="M 2555.5,1040.5 4114.75,260.875" /></g></g><g
158 id="g70" 159 id="g70"
159 transform="matrix(0.14375794,0,0,0.14375794,-0.12334269,-0.08856738)"><path 160 transform="matrix(0.14375794,0,0,0.14375794,-0.12334269,-0.08856738)"><path
160 inkscape:connector-curvature="0" 161 inkscape:connector-curvature="0"
161 id="path72" 162 id="path72"
162 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" 163 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
163 d="m 2602.43,1027.9 -37.8,8.19 29.3,-25.2 8.5,17.01" /><path 164 d="m 2602.43,1027.9 -37.8,8.19 29.3,-25.2 8.5,17.01" /><path
164 inkscape:connector-curvature="0" 165 inkscape:connector-curvature="0"
165 id="path74" 166 id="path74"
166 style="fill:none;stroke:#000000;stroke-width:4.7249999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 167 style="fill:none;stroke:#000000;stroke-width:4.7249999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
167 d="m 2602.43,1027.9 -37.8,8.19 29.3,-25.2 8.5,17.01 z" /><path 168 d="m 2602.43,1027.9 -37.8,8.19 29.3,-25.2 8.5,17.01 z" /><path
168 inkscape:connector-curvature="0" 169 inkscape:connector-curvature="0"
169 id="path76" 170 id="path76"
170 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" 171 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
171 d="m 4067.5,273.79 38.11,-8.505 -29.61,25.515 -8.5,-17.01" /><path 172 d="m 4067.5,273.79 38.11,-8.505 -29.61,25.515 -8.5,-17.01" /><path
172 inkscape:connector-curvature="0" 173 inkscape:connector-curvature="0"
173 id="path78" 174 id="path78"
174 style="fill:none;stroke:#000000;stroke-width:4.7249999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 175 style="fill:none;stroke:#000000;stroke-width:4.7249999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
175 d="m 4067.5,273.79 38.11,-8.505 -29.61,25.515 -8.5,-17.01 z" /></g><g 176 d="m 4067.5,273.79 38.11,-8.505 -29.61,25.515 -8.5,-17.01 z" /></g><g
176 id="g80" 177 id="g80"
177 transform="matrix(0.14375794,0,0,0.14375794,-0.12334269,-0.08856738)"><g 178 transform="matrix(0.14375794,0,0,0.14375794,-0.12334269,-0.08856738)"><g
178 clip-path="url(#clipPath84)" 179 clip-path="url(#clipPath84)"
179 id="g82"><path 180 id="g82"><path
180 inkscape:connector-curvature="0" 181 inkscape:connector-curvature="0"
181 id="path88" 182 id="path88"
182 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 183 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
183 d="m 2555.5,1607.5 1559.25,141.75" /></g></g><g 184 d="m 2555.5,1607.5 1559.25,141.75" /></g></g><g
184 id="g90" 185 id="g90"
185 transform="matrix(0.14375794,0,0,0.14375794,-0.12334269,-0.08856738)"><path 186 transform="matrix(0.14375794,0,0,0.14375794,-0.12334269,-0.08856738)"><path
186 inkscape:connector-curvature="0" 187 inkscape:connector-curvature="0"
187 id="path92" 188 id="path92"
188 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" 189 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
189 d="m 2602.12,1621.36 -36.54,-12.91 38.43,-5.99 -1.89,18.9" /><path 190 d="m 2602.12,1621.36 -36.54,-12.91 38.43,-5.99 -1.89,18.9" /><path
190 inkscape:connector-curvature="0" 191 inkscape:connector-curvature="0"
191 id="path94" 192 id="path94"
192 style="fill:none;stroke:#000000;stroke-width:4.7249999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 193 style="fill:none;stroke:#000000;stroke-width:4.7249999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
193 d="m 2602.12,1621.36 -36.54,-12.91 38.43,-5.99 -1.89,18.9 z" /><path 194 d="m 2602.12,1621.36 -36.54,-12.91 38.43,-5.99 -1.89,18.9 z" /><path
194 inkscape:connector-curvature="0" 195 inkscape:connector-curvature="0"
195 id="path96" 196 id="path96"
196 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" 197 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
197 d="m 4067.81,1735.71 36.86,12.6 -38.75,6.3 1.89,-18.9" /><path 198 d="m 4067.81,1735.71 36.86,12.6 -38.75,6.3 1.89,-18.9" /><path
198 inkscape:connector-curvature="0" 199 inkscape:connector-curvature="0"
199 id="path98" 200 id="path98"
200 style="fill:none;stroke:#000000;stroke-width:4.7249999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 201 style="fill:none;stroke:#000000;stroke-width:4.7249999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
201 d="m 4067.81,1735.71 36.86,12.6 -38.75,6.3 1.89,-18.9 z" /></g><g 202 d="m 4067.81,1735.71 36.86,12.6 -38.75,6.3 1.89,-18.9 z" /></g><g
202 id="g100" 203 id="g100"
203 transform="matrix(0.14375794,0,0,0.14375794,-0.12334269,-0.08856738)"><g 204 transform="matrix(0.14375794,0,0,0.14375794,-0.12334269,-0.08856738)"><g
204 clip-path="url(#clipPath104)" 205 clip-path="url(#clipPath104)"
205 id="g102"><path 206 id="g102"><path
206 inkscape:connector-curvature="0" 207 inkscape:connector-curvature="0"
207 id="path108" 208 id="path108"
208 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 209 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
209 d="m 1492.37,1607.5 1559.25,141.75" /></g></g><path 210 d="m 1492.37,1607.5 1559.25,141.75" /></g></g><path
210 d="m 221.11869,232.99481 -5.25292,-1.85592 5.52462,-0.86111 -0.2717,2.71703" 211 d="m 221.11869,232.99481 -5.25292,-1.85592 5.52462,-0.86111 -0.2717,2.71703"
211 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" 212 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
212 id="path112" 213 id="path112"
@@ -225,43 +226,43 @@
225 inkscape:connector-curvature="0" /><g 226 inkscape:connector-curvature="0" /><g
226 id="g120" 227 id="g120"
227 transform="matrix(1.4375794,0,0,1.4375794,-0.12334269,-0.08856738)"><text 228 transform="matrix(1.4375794,0,0,1.4375794,-0.12334269,-0.08856738)"><text
228 transform="matrix(1,0,0,-1,204.52,9.07751)" 229 transform="matrix(1,0,0,-1,204.52,9.07751)"
229 style="font-variant:normal;font-weight:normal;font-size:6.61499977px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#d10000;fill-opacity:1;fill-rule:nonzero;stroke:none" 230 style="font-variant:normal;font-weight:normal;font-size:6.61499977px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#d10000;fill-opacity:1;fill-rule:nonzero;stroke:none"
230 id="text122"><tspan 231 id="text122"><tspan
231 x="0 3.3074999 6.9854398 8.45397 12.13191 15.80985 19.11735 21.320145 24.998085 28.676025 31.983524 35.661465 39.339405 41.178375 44.856316 48.534256 52.212196 55.890137 59.568073" 232 x="0 3.3074999 6.9854398 8.45397 12.13191 15.80985 19.11735 21.320145 24.998085 28.676025 31.983524 35.661465 39.339405 41.178375 44.856316 48.534256 52.212196 55.890137 59.568073"
232 y="0" 233 y="0"
233 sodipodi:role="line" 234 sodipodi:role="line"
234 id="tspan124">v4l2_cropcap.bounds</tspan></text> 235 id="tspan124">v4l2_cropcap.bounds</tspan></text>
235</g><g 236</g><g
236 id="g126" 237 id="g126"
237 transform="matrix(1.4375794,0,0,1.4375794,-0.12334269,-0.08856738)"><text 238 transform="matrix(1.4375794,0,0,1.4375794,-0.12334269,-0.08856738)"><text
238 transform="matrix(1,0,0,-1,58.5175,166.42)" 239 transform="matrix(1,0,0,-1,58.5175,166.42)"
239 style="font-variant:normal;font-weight:normal;font-size:6.61499977px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#0000d1;fill-opacity:1;fill-rule:nonzero;stroke:none" 240 style="font-variant:normal;font-weight:normal;font-size:6.61499977px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#0000d1;fill-opacity:1;fill-rule:nonzero;stroke:none"
240 id="text128"><tspan 241 id="text128"><tspan
241 x="0 3.3074999 6.9854398 8.45397 12.13191 15.80985 19.11735 21.320145 24.998085 28.676025 31.983524 35.661465 39.339405 41.178375 44.856316 48.534256 50.373226 52.576019 56.25396 59.561459" 242 x="0 3.3074999 6.9854398 8.45397 12.13191 15.80985 19.11735 21.320145 24.998085 28.676025 31.983524 35.661465 39.339405 41.178375 44.856316 48.534256 50.373226 52.576019 56.25396 59.561459"
242 y="0" 243 y="0"
243 sodipodi:role="line" 244 sodipodi:role="line"
244 id="tspan130">v4l2_cropcap.defrect</tspan></text> 245 id="tspan130">v4l2_cropcap.defrect</tspan></text>
245</g><g 246</g><g
246 id="g132" 247 id="g132"
247 transform="matrix(1.4375794,0,0,1.4375794,-0.12334269,-0.08856738)"><text 248 transform="matrix(1.4375794,0,0,1.4375794,-0.12334269,-0.08856738)"><text
248 transform="matrix(1,0,0,-1,153.49,152.245)" 249 transform="matrix(1,0,0,-1,153.49,152.245)"
249 style="font-variant:normal;font-weight:normal;font-size:6.61499977px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#008f00;fill-opacity:1;fill-rule:nonzero;stroke:none" 250 style="font-variant:normal;font-weight:normal;font-size:6.61499977px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#008f00;fill-opacity:1;fill-rule:nonzero;stroke:none"
250 id="text134"><tspan 251 id="text134"><tspan
251 x="0 3.3074999 6.9854398 8.45397 12.13191 15.80985 19.11735 21.320145 24.998085 28.676025 30.514996" 252 x="0 3.3074999 6.9854398 8.45397 12.13191 15.80985 19.11735 21.320145 24.998085 28.676025 30.514996"
252 y="0" 253 y="0"
253 sodipodi:role="line" 254 sodipodi:role="line"
254 id="tspan136">v4l2_crop.c</tspan></text> 255 id="tspan136">v4l2_crop.c</tspan></text>
255</g><g 256</g><g
256 id="g138" 257 id="g138"
257 transform="matrix(1.4375794,0,0,1.4375794,-0.12334269,-0.08856738)"><text 258 transform="matrix(1.4375794,0,0,1.4375794,-0.12334269,-0.08856738)"><text
258 transform="matrix(1,0,0,-1,309.415,30.34)" 259 transform="matrix(1,0,0,-1,309.415,30.34)"
259 style="font-variant:normal;font-weight:normal;font-size:6.61499977px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#b000b0;fill-opacity:1;fill-rule:nonzero;stroke:none" 260 style="font-variant:normal;font-weight:normal;font-size:6.61499977px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#b000b0;fill-opacity:1;fill-rule:nonzero;stroke:none"
260 id="text140"><tspan 261 id="text140"><tspan
261 x="0 3.3074999 6.9854398 8.45397 12.13191 15.80985 17.648821 21.326759 23.529554 29.03985 32.717789" 262 x="0 3.3074999 6.9854398 8.45397 12.13191 15.80985 17.648821 21.326759 23.529554 29.03985 32.717789"
262 y="0" 263 y="0"
263 sodipodi:role="line" 264 sodipodi:role="line"
264 id="tspan142">v4l2_format</tspan></text> 265 id="tspan142">v4l2_format</tspan></text>
265</g><text 266</g><text
266 xml:space="preserve" 267 xml:space="preserve"
267 style="font-style:normal;font-weight:normal;font-size:32px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" 268 style="font-style:normal;font-weight:normal;font-size:32px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
@@ -270,12 +271,12 @@
270 id="text3396" 271 id="text3396"
271 sodipodi:linespacing="125%" 272 sodipodi:linespacing="125%"
272 transform="scale(1,-1)"><tspan 273 transform="scale(1,-1)"><tspan
273 sodipodi:role="line" 274 sodipodi:role="line"
274 id="tspan3398" 275 id="tspan3398"
275 x="-99.291145" 276 x="-99.291145"
276 y="-239.49893"></tspan><tspan 277 y="-239.49893"></tspan><tspan
277 sodipodi:role="line" 278 sodipodi:role="line"
278 x="-99.291145" 279 x="-99.291145"
279 y="-199.49893" 280 y="-199.49893"
280 id="tspan3400" /></text> 281 id="tspan3400" /></text>
281</g></svg> 282</g></svg>
diff --git a/Documentation/media/uapi/v4l/fieldseq_bt.svg b/Documentation/media/uapi/v4l/fieldseq_bt.svg
index b195301771ce..909d758f8543 100644
--- a/Documentation/media/uapi/v4l/fieldseq_bt.svg
+++ b/Documentation/media/uapi/v4l/fieldseq_bt.svg
@@ -42,15 +42,15 @@
42 inkscape:window-maximized="1" 42 inkscape:window-maximized="1"
43 inkscape:current-layer="g3627" /><metadata 43 inkscape:current-layer="g3627" /><metadata
44 id="metadata3625"><rdf:RDF><cc:Work 44 id="metadata3625"><rdf:RDF><cc:Work
45 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type 45 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
46 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs 46 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
47 id="defs3623"><clipPath 47 id="defs3623"><clipPath
48 id="clipPath4301" 48 id="clipPath4301"
49 clipPathUnits="userSpaceOnUse"><path 49 clipPathUnits="userSpaceOnUse"><path
50 style="clip-rule:evenodd" 50 style="clip-rule:evenodd"
51 inkscape:connector-curvature="0" 51 inkscape:connector-curvature="0"
52 id="path4303" 52 id="path4303"
53 d="M 0,6040 0,0 l 5650,0 0,6040 -5650,0 z m 4786.76,-99.89 103.92,0 0,56.69 -103.92,0 0,0 85.03,-28.35 -85.03,-28.34 z" /></clipPath></defs><g 53 d="M 0,6040 0,0 l 5650,0 0,6040 -5650,0 z m 4786.76,-99.89 103.92,0 0,56.69 -103.92,0 0,0 85.03,-28.35 -85.03,-28.34 z" /></clipPath></defs><g
54 transform="matrix(1.25,0,0,-1.25,-1.0537,751.94632)" 54 transform="matrix(1.25,0,0,-1.25,-1.0537,751.94632)"
55 inkscape:label="fieldseq_bt" 55 inkscape:label="fieldseq_bt"
56 inkscape:groupmode="layer" 56 inkscape:groupmode="layer"
@@ -1390,13 +1390,13 @@
1390 transform="scale(0.1,0.1)" 1390 transform="scale(0.1,0.1)"
1391 id="g4297" 1391 id="g4297"
1392 style=""><g 1392 style=""><g
1393 id="g4299" 1393 id="g4299"
1394 clip-path="url(#clipPath4301)" 1394 clip-path="url(#clipPath4301)"
1395 style=""><path 1395 style=""><path
1396 d="m 3778.18,5968.45 1105.42,0" 1396 d="m 3778.18,5968.45 1105.42,0"
1397 style="fill:none;stroke:#000000;stroke-width:14.17199993;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 1397 style="fill:none;stroke:#000000;stroke-width:14.17199993;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
1398 id="path4305" 1398 id="path4305"
1399 inkscape:connector-curvature="0" /></g></g><path 1399 inkscape:connector-curvature="0" /></g></g><path
1400 d="m 478.676,594.011 8.503,2.834 -8.503,2.835 0,-5.669" 1400 d="m 478.676,594.011 8.503,2.834 -8.503,2.835 0,-5.669"
1401 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" 1401 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
1402 id="path4307" 1402 id="path4307"
@@ -2466,148 +2466,148 @@
2466 id="text4841" 2466 id="text4841"
2467 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2467 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2468 transform="scale(1,-1)"><tspan 2468 transform="scale(1,-1)"><tspan
2469 id="tspan4843" 2469 id="tspan4843"
2470 sodipodi:role="line" 2470 sodipodi:role="line"
2471 y="-533.07098" 2471 y="-533.07098"
2472 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 88.500237 97.835464">V4L2_FIELD_TOP</tspan><tspan 2472 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 88.500237 97.835464">V4L2_FIELD_TOP</tspan><tspan
2473 id="tspan4845" 2473 id="tspan4845"
2474 sodipodi:role="line" 2474 sodipodi:role="line"
2475 y="-465.04559" 2475 y="-465.04559"
2476 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 98.507408 105.83879 113.17018 122.5054">V4L2_FIELD_BOTTOM</tspan><tspan 2476 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 98.507408 105.83879 113.17018 122.5054">V4L2_FIELD_BOTTOM</tspan><tspan
2477 id="tspan4847" 2477 id="tspan4847"
2478 sodipodi:role="line" 2478 sodipodi:role="line"
2479 y="-397.0202" 2479 y="-397.0202"
2480 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 95.843628 103.17502 111.17835 119.84163 128.5049 136.50824 143.83963">V4L2_FIELD_ALTERNATE</tspan></text> 2480 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 95.843628 103.17502 111.17835 119.84163 128.5049 136.50824 143.83963">V4L2_FIELD_ALTERNATE</tspan></text>
2481<text 2481<text
2482 y="-316.23969" 2482 y="-316.23969"
2483 x="103.58983" 2483 x="103.58983"
2484 id="text4849" 2484 id="text4849"
2485 style="font-variant:normal;font-weight:normal;font-size:8.2495203px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2485 style="font-variant:normal;font-weight:normal;font-size:8.2495203px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2486 transform="scale(1,-1)"><tspan 2486 transform="scale(1,-1)"><tspan
2487 id="tspan4851" 2487 id="tspan4851"
2488 sodipodi:role="line" 2488 sodipodi:role="line"
2489 y="-316.23969" 2489 y="-316.23969"
2490 x="103.58983 109.09226 113.67899 118.26572 122.85246 127.43919 132.47964 134.77301 140.27545 144.86218 150.81833 155.40506 160.44553 166.86365 188.62184 194.12427 198.711 203.29774 207.88448 212.47121 217.51166 219.80502 225.30746 229.8942 235.85034 240.43707 245.9395 252.35764 257.3981 262.43854 268.85669 375.69293 381.19534 385.78207 390.3688 394.95554 399.54227 404.58273 406.8761 412.37854 416.96527 422.92142 427.50815 433.01059 439.42871 444.46918 449.50961 455.92776 1.551828 7.0542617 11.640993 16.227724 20.814463 25.401194 30.441652 32.735016 38.237442 42.824177 48.780331 53.367065 58.869492 65.287621 70.328079 75.368538 81.786659">V4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_BOTTOMV4L2_FIELD_BOTTOM</tspan><tspan 2490 x="103.58983 109.09226 113.67899 118.26572 122.85246 127.43919 132.47964 134.77301 140.27545 144.86218 150.81833 155.40506 160.44553 166.86365 188.62184 194.12427 198.711 203.29774 207.88448 212.47121 217.51166 219.80502 225.30746 229.8942 235.85034 240.43707 245.9395 252.35764 257.3981 262.43854 268.85669 375.69293 381.19534 385.78207 390.3688 394.95554 399.54227 404.58273 406.8761 412.37854 416.96527 422.92142 427.50815 433.01059 439.42871 444.46918 449.50961 455.92776 1.551828 7.0542617 11.640993 16.227724 20.814463 25.401194 30.441652 32.735016 38.237442 42.824177 48.780331 53.367065 58.869492 65.287621 70.328079 75.368538 81.786659">V4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_BOTTOMV4L2_FIELD_BOTTOM</tspan><tspan
2491 id="tspan4853" 2491 id="tspan4853"
2492 sodipodi:role="line" 2492 sodipodi:role="line"
2493 y="-328.99481" 2493 y="-328.99481"
2494 x="10.054964 14.17972 18.766451 20.597849 25.18458 29.771311 34.358047 38.944778 41.238144 43.531509 48.118244 50.865334 53.158699 55.452068 57.283459 61.870193 63.701588 68.288322">v4l2_buffer.field:</tspan></text> 2494 x="10.054964 14.17972 18.766451 20.597849 25.18458 29.771311 34.358047 38.944778 41.238144 43.531509 48.118244 50.865334 53.158699 55.452068 57.283459 61.870193 63.701588 68.288322">v4l2_buffer.field:</tspan></text>
2495<text 2495<text
2496 y="-592.59381" 2496 y="-592.59381"
2497 x="5.8034" 2497 x="5.8034"
2498 id="text4855" 2498 id="text4855"
2499 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2499 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2500 transform="scale(1,-1)"><tspan 2500 transform="scale(1,-1)"><tspan
2501 id="tspan4857" 2501 id="tspan4857"
2502 sodipodi:role="line" 2502 sodipodi:role="line"
2503 y="-592.59381" 2503 y="-592.59381"
2504 x="5.8034 13.134789 19.806232 29.801399 36.472843 43.144287 47.139954 53.811398 56.475174 59.810898 66.482346 70.478004 77.149452 83.820892 87.816566 91.152283 94.488007 101.15945 107.83089 111.16662 114.50233 121.17377 131.16895 134.50468 137.84041 140.50418 147.17563 149.8394 156.51085 159.84657 163.1823 165.84607 169.84174 175.84123 179.17696 182.51268 185.8484 189.84407 196.51552 203.18695 209.18646 219.18163 221.8454 225.18112 228.51685 235.18829 241.85973 245.19545 249.19112 255.86256 259.19827 265.86972 269.20544 272.54117 282.53635 285.87207 294.53534 301.86673 309.87006 318.53336">Temporal order, bottom field first transmitted (e.g. M/NTSC)</tspan></text> 2504 x="5.8034 13.134789 19.806232 29.801399 36.472843 43.144287 47.139954 53.811398 56.475174 59.810898 66.482346 70.478004 77.149452 83.820892 87.816566 91.152283 94.488007 101.15945 107.83089 111.16662 114.50233 121.17377 131.16895 134.50468 137.84041 140.50418 147.17563 149.8394 156.51085 159.84657 163.1823 165.84607 169.84174 175.84123 179.17696 182.51268 185.8484 189.84407 196.51552 203.18695 209.18646 219.18163 221.8454 225.18112 228.51685 235.18829 241.85973 245.19545 249.19112 255.86256 259.19827 265.86972 269.20544 272.54117 282.53635 285.87207 294.53534 301.86673 309.87006 318.53336">Temporal order, bottom field first transmitted (e.g. M/NTSC)</tspan></text>
2505<text 2505<text
2506 y="-316.23981" 2506 y="-316.23981"
2507 x="290.6604" 2507 x="290.6604"
2508 id="text4859" 2508 id="text4859"
2509 style="font-variant:normal;font-weight:normal;font-size:8.2495203px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2509 style="font-variant:normal;font-weight:normal;font-size:8.2495203px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2510 transform="scale(1,-1)"><tspan 2510 transform="scale(1,-1)"><tspan
2511 id="tspan4861" 2511 id="tspan4861"
2512 sodipodi:role="line" 2512 sodipodi:role="line"
2513 y="-316.23981" 2513 y="-316.23981"
2514 x="290.6604 296.16284 300.74957 305.3363 309.92303 314.50977 319.55023 321.8436 327.34601 331.93274 337.88889 342.47565 347.51608 353.9342 477.73062 483.23306 487.81979 492.40652 496.99326 501.57999 506.62045 508.91382 514.41626 519.00299 524.95911 529.5459 534.5863 541.00446">V4L2_FIELD_TOPV4L2_FIELD_TOP</tspan></text> 2514 x="290.6604 296.16284 300.74957 305.3363 309.92303 314.50977 319.55023 321.8436 327.34601 331.93274 337.88889 342.47565 347.51608 353.9342 477.73062 483.23306 487.81979 492.40652 496.99326 501.57999 506.62045 508.91382 514.41626 519.00299 524.95911 529.5459 534.5863 541.00446">V4L2_FIELD_TOPV4L2_FIELD_TOP</tspan></text>
2515<text 2515<text
2516 y="-299.23349" 2516 y="-299.23349"
2517 x="5.8034" 2517 x="5.8034"
2518 id="text4863" 2518 id="text4863"
2519 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2519 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2520 transform="scale(1,-1)"><tspan 2520 transform="scale(1,-1)"><tspan
2521 id="tspan4865" 2521 id="tspan4865"
2522 sodipodi:role="line" 2522 sodipodi:role="line"
2523 y="-299.23349" 2523 y="-299.23349"
2524 x="5.8034 13.806733 20.478176 27.149622 33.821064 40.492508 47.823895 51.159618 59.162952 65.834396 74.497673 81.169121 84.504837 93.168114 100.4995 108.50284 117.16611 123.83755 131.8409 140.50418 148.50751 157.17079 160.50652 163.84224 167.17796 175.18129 181.85274 188.52419 195.19562 201.86707 209.19846 212.53418 220.53751 227.20895 235.87224 242.54367 245.87939 254.54268 261.87405 269.87741 278.54068 285.21213 293.21545 301.87872 309.88205 318.54535 325.2168 333.22012">V4L2_FIELD_INTERLACED / V4L2_FIELD_INTERLACED_BT</tspan><tspan 2524 x="5.8034 13.806733 20.478176 27.149622 33.821064 40.492508 47.823895 51.159618 59.162952 65.834396 74.497673 81.169121 84.504837 93.168114 100.4995 108.50284 117.16611 123.83755 131.8409 140.50418 148.50751 157.17079 160.50652 163.84224 167.17796 175.18129 181.85274 188.52419 195.19562 201.86707 209.19846 212.53418 220.53751 227.20895 235.87224 242.54367 245.87939 254.54268 261.87405 269.87741 278.54068 285.21213 293.21545 301.87872 309.88205 318.54535 325.2168 333.22012">V4L2_FIELD_INTERLACED / V4L2_FIELD_INTERLACED_BT</tspan><tspan
2525 id="tspan4867" 2525 id="tspan4867"
2526 sodipodi:role="line" 2526 sodipodi:role="line"
2527 y="-192.9435" 2527 y="-192.9435"
2528 x="1.5518398 9.5551729 16.226616 22.898062 29.569506 36.240948 43.572334 46.908058 54.911392 61.582836 70.246117 76.917557 80.253281 88.916557 96.247948 104.25128 112.91456 119.586 127.58932 136.25262 144.25595 152.91924 159.59067 166.92206 174.9254 178.26112 182.25679 192.25195 194.91573 200.91524 207.58667 210.25046 212.91423 219.58568 226.25713 232.92856 239.60001">V4L2_FIELD_INTERLACED_TB (misaligned)</tspan><tspan 2528 x="1.5518398 9.5551729 16.226616 22.898062 29.569506 36.240948 43.572334 46.908058 54.911392 61.582836 70.246117 76.917557 80.253281 88.916557 96.247948 104.25128 112.91456 119.586 127.58932 136.25262 144.25595 152.91924 159.59067 166.92206 174.9254 178.26112 182.25679 192.25195 194.91573 200.91524 207.58667 210.25046 212.91423 219.58568 226.25713 232.92856 239.60001">V4L2_FIELD_INTERLACED_TB (misaligned)</tspan><tspan
2529 id="tspan4869" 2529 id="tspan4869"
2530 sodipodi:role="line" 2530 sodipodi:role="line"
2531 y="-86.653496" 2531 y="-86.653496"
2532 x="5.8034 13.806733 20.478176 27.149622 33.821064 40.492508 47.823895 51.159618 59.162952 65.834396 74.497673 81.169121 89.172447 97.175781 106.511 113.18245 121.18579">V4L2_FIELD_SEQ_BT</tspan></text> 2532 x="5.8034 13.806733 20.478176 27.149622 33.821064 40.492508 47.823895 51.159618 59.162952 65.834396 74.497673 81.169121 89.172447 97.175781 106.511 113.18245 121.18579">V4L2_FIELD_SEQ_BT</tspan></text>
2533<text 2533<text
2534 y="-533.07098" 2534 y="-533.07098"
2535 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 88.500237 97.835464" 2535 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 88.500237 97.835464"
2536 id="text4592" 2536 id="text4592"
2537 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2537 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2538 transform="scale(1,-1)"><tspan 2538 transform="scale(1,-1)"><tspan
2539 id="tspan4594" 2539 id="tspan4594"
2540 sodipodi:role="line" 2540 sodipodi:role="line"
2541 y="-533.07098" 2541 y="-533.07098"
2542 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 88.500237 97.835464">V4L2_FIELD_TOP</tspan></text> 2542 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 88.500237 97.835464">V4L2_FIELD_TOP</tspan></text>
2543<text 2543<text
2544 y="-465.04559" 2544 y="-465.04559"
2545 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 98.507408 105.83879 113.17018 122.5054" 2545 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 98.507408 105.83879 113.17018 122.5054"
2546 id="text4596" 2546 id="text4596"
2547 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2547 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2548 transform="scale(1,-1)"><tspan 2548 transform="scale(1,-1)"><tspan
2549 id="tspan4598" 2549 id="tspan4598"
2550 sodipodi:role="line" 2550 sodipodi:role="line"
2551 y="-465.04559" 2551 y="-465.04559"
2552 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 98.507408 105.83879 113.17018 122.5054">V4L2_FIELD_BOTTOM</tspan></text> 2552 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 98.507408 105.83879 113.17018 122.5054">V4L2_FIELD_BOTTOM</tspan></text>
2553<text 2553<text
2554 y="-397.0202" 2554 y="-397.0202"
2555 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 95.843628 103.17502 111.17835 119.84163 128.5049 136.50824 143.83963" 2555 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 95.843628 103.17502 111.17835 119.84163 128.5049 136.50824 143.83963"
2556 id="text4600" 2556 id="text4600"
2557 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2557 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2558 transform="scale(1,-1)"><tspan 2558 transform="scale(1,-1)"><tspan
2559 id="tspan4602" 2559 id="tspan4602"
2560 sodipodi:role="line" 2560 sodipodi:role="line"
2561 y="-397.0202" 2561 y="-397.0202"
2562 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 95.843628 103.17502 111.17835 119.84163 128.5049 136.50824 143.83963">V4L2_FIELD_ALTERNATE</tspan></text> 2562 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 95.843628 103.17502 111.17835 119.84163 128.5049 136.50824 143.83963">V4L2_FIELD_ALTERNATE</tspan></text>
2563<text 2563<text
2564 y="-299.23349" 2564 y="-299.23349"
2565 x="5.8034 13.806733 20.478176 27.149622 33.821064 40.492508 47.823895 51.159618 59.162952 65.834396 74.497673 81.169121 84.504837 93.168114 100.4995 108.50284 117.16611 123.83755 131.8409 140.50418 148.50751 157.17079 160.50652 163.84224 167.17796 175.18129 181.85274 188.52419 195.19562 201.86707 209.19846 212.53418 220.53751 227.20895 235.87224 242.54367 245.87939 254.54268 261.87405 269.87741 278.54068 285.21213 293.21545 301.87872 309.88205 318.54535 325.2168 333.22012" 2565 x="5.8034 13.806733 20.478176 27.149622 33.821064 40.492508 47.823895 51.159618 59.162952 65.834396 74.497673 81.169121 84.504837 93.168114 100.4995 108.50284 117.16611 123.83755 131.8409 140.50418 148.50751 157.17079 160.50652 163.84224 167.17796 175.18129 181.85274 188.52419 195.19562 201.86707 209.19846 212.53418 220.53751 227.20895 235.87224 242.54367 245.87939 254.54268 261.87405 269.87741 278.54068 285.21213 293.21545 301.87872 309.88205 318.54535 325.2168 333.22012"
2566 id="text5862" 2566 id="text5862"
2567 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2567 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2568 transform="scale(1,-1)"><tspan 2568 transform="scale(1,-1)"><tspan
2569 id="tspan5864" 2569 id="tspan5864"
2570 sodipodi:role="line" 2570 sodipodi:role="line"
2571 y="-299.23349" 2571 y="-299.23349"
2572 x="5.8034 13.806733 20.478176 27.149622 33.821064 40.492508 47.823895 51.159618 59.162952 65.834396 74.497673 81.169121 84.504837 93.168114 100.4995 108.50284 117.16611 123.83755 131.8409 140.50418 148.50751 157.17079 160.50652 163.84224 167.17796 175.18129 181.85274 188.52419 195.19562 201.86707 209.19846 212.53418 220.53751 227.20895 235.87224 242.54367 245.87939 254.54268 261.87405 269.87741 278.54068 285.21213 293.21545 301.87872 309.88205 318.54535 325.2168 333.22012">V4L2_FIELD_INTERLACED / V4L2_FIELD_INTERLACED_BT</tspan></text> 2572 x="5.8034 13.806733 20.478176 27.149622 33.821064 40.492508 47.823895 51.159618 59.162952 65.834396 74.497673 81.169121 84.504837 93.168114 100.4995 108.50284 117.16611 123.83755 131.8409 140.50418 148.50751 157.17079 160.50652 163.84224 167.17796 175.18129 181.85274 188.52419 195.19562 201.86707 209.19846 212.53418 220.53751 227.20895 235.87224 242.54367 245.87939 254.54268 261.87405 269.87741 278.54068 285.21213 293.21545 301.87872 309.88205 318.54535 325.2168 333.22012">V4L2_FIELD_INTERLACED / V4L2_FIELD_INTERLACED_BT</tspan></text>
2573<text 2573<text
2574 y="-192.9435" 2574 y="-192.9435"
2575 x="1.5518398 9.5551729 16.226616 22.898062 29.569506 36.240948 43.572334 46.908058 54.911392 61.582836 70.246117 76.917557 80.253281 88.916557 96.247948 104.25128 112.91456 119.586 127.58932 136.25262 144.25595 152.91924 159.59067 166.92206 174.9254 178.26112 182.25679 192.25195 194.91573 200.91524 207.58667 210.25046 212.91423 219.58568 226.25713 232.92856 239.60001" 2575 x="1.5518398 9.5551729 16.226616 22.898062 29.569506 36.240948 43.572334 46.908058 54.911392 61.582836 70.246117 76.917557 80.253281 88.916557 96.247948 104.25128 112.91456 119.586 127.58932 136.25262 144.25595 152.91924 159.59067 166.92206 174.9254 178.26112 182.25679 192.25195 194.91573 200.91524 207.58667 210.25046 212.91423 219.58568 226.25713 232.92856 239.60001"
2576 id="text5866" 2576 id="text5866"
2577 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2577 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2578 transform="scale(1,-1)"><tspan 2578 transform="scale(1,-1)"><tspan
2579 id="tspan5868" 2579 id="tspan5868"
2580 sodipodi:role="line" 2580 sodipodi:role="line"
2581 y="-192.9435" 2581 y="-192.9435"
2582 x="1.5518398 9.5551729 16.226616 22.898062 29.569506 36.240948 43.572334 46.908058 54.911392 61.582836 70.246117 76.917557 80.253281 88.916557 96.247948 104.25128 112.91456 119.586 127.58932 136.25262 144.25595 152.91924 159.59067 166.92206 174.9254 178.26112 182.25679 192.25195 194.91573 200.91524 207.58667 210.25046 212.91423 219.58568 226.25713 232.92856 239.60001">V4L2_FIELD_INTERLACED_TB (misaligned)</tspan></text> 2582 x="1.5518398 9.5551729 16.226616 22.898062 29.569506 36.240948 43.572334 46.908058 54.911392 61.582836 70.246117 76.917557 80.253281 88.916557 96.247948 104.25128 112.91456 119.586 127.58932 136.25262 144.25595 152.91924 159.59067 166.92206 174.9254 178.26112 182.25679 192.25195 194.91573 200.91524 207.58667 210.25046 212.91423 219.58568 226.25713 232.92856 239.60001">V4L2_FIELD_INTERLACED_TB (misaligned)</tspan></text>
2583<text 2583<text
2584 y="-86.653496" 2584 y="-86.653496"
2585 x="5.8034 13.806733 20.478176 27.149622 33.821064 40.492508 47.823895 51.159618 59.162952 65.834396 74.497673 81.169121 89.172447 97.175781 106.511 113.18245 121.18579" 2585 x="5.8034 13.806733 20.478176 27.149622 33.821064 40.492508 47.823895 51.159618 59.162952 65.834396 74.497673 81.169121 89.172447 97.175781 106.511 113.18245 121.18579"
2586 id="text5870" 2586 id="text5870"
2587 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2587 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2588 transform="scale(1,-1)"><tspan 2588 transform="scale(1,-1)"><tspan
2589 id="tspan5872" 2589 id="tspan5872"
2590 sodipodi:role="line" 2590 sodipodi:role="line"
2591 y="-86.653496" 2591 y="-86.653496"
2592 x="5.8034 13.806733 20.478176 27.149622 33.821064 40.492508 47.823895 51.159618 59.162952 65.834396 74.497673 81.169121 89.172447 97.175781 106.511 113.18245 121.18579">V4L2_FIELD_SEQ_BT</tspan></text> 2592 x="5.8034 13.806733 20.478176 27.149622 33.821064 40.492508 47.823895 51.159618 59.162952 65.834396 74.497673 81.169121 89.172447 97.175781 106.511 113.18245 121.18579">V4L2_FIELD_SEQ_BT</tspan></text>
2593<text 2593<text
2594 y="-316.23969" 2594 y="-316.23969"
2595 x="103.58983 109.09226 113.67899 118.26572 122.85246 127.43919 132.47964 134.77301 140.27545 144.86218 150.81833 155.40506 160.44553 166.86365 188.62184 194.12427 198.711 203.29774 207.88448 212.47121 217.51166 219.80502 225.30746 229.8942 235.85034 240.43707 245.9395 252.35764 257.3981 262.43854 268.85669 375.69293 381.19534 385.78207 390.3688 394.95554 399.54227 404.58273 406.8761 412.37854 416.96527 422.92142 427.50815 433.01059 439.42871 444.46918 449.50961 455.92776 1.551828 7.0542617 11.640993 16.227724 20.814463 25.401194 30.441652 32.735016 38.237442 42.824177 48.780331 53.367065 58.869492 65.287621 70.328079 75.368538 81.786659" 2595 x="103.58983 109.09226 113.67899 118.26572 122.85246 127.43919 132.47964 134.77301 140.27545 144.86218 150.81833 155.40506 160.44553 166.86365 188.62184 194.12427 198.711 203.29774 207.88448 212.47121 217.51166 219.80502 225.30746 229.8942 235.85034 240.43707 245.9395 252.35764 257.3981 262.43854 268.85669 375.69293 381.19534 385.78207 390.3688 394.95554 399.54227 404.58273 406.8761 412.37854 416.96527 422.92142 427.50815 433.01059 439.42871 444.46918 449.50961 455.92776 1.551828 7.0542617 11.640993 16.227724 20.814463 25.401194 30.441652 32.735016 38.237442 42.824177 48.780331 53.367065 58.869492 65.287621 70.328079 75.368538 81.786659"
2596 id="text7144" 2596 id="text7144"
2597 style="font-variant:normal;font-weight:normal;font-size:8.2495203px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2597 style="font-variant:normal;font-weight:normal;font-size:8.2495203px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2598 transform="scale(1,-1)"><tspan 2598 transform="scale(1,-1)"><tspan
2599 id="tspan7146" 2599 id="tspan7146"
2600 sodipodi:role="line" 2600 sodipodi:role="line"
2601 y="-316.23969" 2601 y="-316.23969"
2602 x="103.58983 109.09226 113.67899 118.26572 122.85246 127.43919 132.47964 134.77301 140.27545 144.86218 150.81833 155.40506 160.44553 166.86365 188.62184 194.12427 198.711 203.29774 207.88448 212.47121 217.51166 219.80502 225.30746 229.8942 235.85034 240.43707 245.9395 252.35764 257.3981 262.43854 268.85669 375.69293 381.19534 385.78207 390.3688 394.95554 399.54227 404.58273 406.8761 412.37854 416.96527 422.92142 427.50815 433.01059 439.42871 444.46918 449.50961 455.92776 1.551828 7.0542617 11.640993 16.227724 20.814463 25.401194 30.441652 32.735016 38.237442 42.824177 48.780331 53.367065 58.869492 65.287621 70.328079 75.368538 81.786659">V4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_BOTTOMV4L2_FIELD_BOTTOM</tspan></text> 2602 x="103.58983 109.09226 113.67899 118.26572 122.85246 127.43919 132.47964 134.77301 140.27545 144.86218 150.81833 155.40506 160.44553 166.86365 188.62184 194.12427 198.711 203.29774 207.88448 212.47121 217.51166 219.80502 225.30746 229.8942 235.85034 240.43707 245.9395 252.35764 257.3981 262.43854 268.85669 375.69293 381.19534 385.78207 390.3688 394.95554 399.54227 404.58273 406.8761 412.37854 416.96527 422.92142 427.50815 433.01059 439.42871 444.46918 449.50961 455.92776 1.551828 7.0542617 11.640993 16.227724 20.814463 25.401194 30.441652 32.735016 38.237442 42.824177 48.780331 53.367065 58.869492 65.287621 70.328079 75.368538 81.786659">V4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_BOTTOMV4L2_FIELD_BOTTOM</tspan></text>
2603<text 2603<text
2604 y="-328.99481" 2604 y="-328.99481"
2605 x="10.054964 14.17972 18.766451 20.597849 25.18458 29.771311 34.358047 38.944778 41.238144 43.531509 48.118244 50.865334 53.158699 55.452068 57.283459 61.870193 63.701588 68.288322" 2605 x="10.054964 14.17972 18.766451 20.597849 25.18458 29.771311 34.358047 38.944778 41.238144 43.531509 48.118244 50.865334 53.158699 55.452068 57.283459 61.870193 63.701588 68.288322"
2606 id="text7148" 2606 id="text7148"
2607 style="font-variant:normal;font-weight:normal;font-size:8.2495203px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2607 style="font-variant:normal;font-weight:normal;font-size:8.2495203px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2608 transform="scale(1,-1)"><tspan 2608 transform="scale(1,-1)"><tspan
2609 id="tspan7150" 2609 id="tspan7150"
2610 sodipodi:role="line" 2610 sodipodi:role="line"
2611 y="-328.99481" 2611 y="-328.99481"
2612 x="10.054964 14.17972 18.766451 20.597849 25.18458 29.771311 34.358047 38.944778 41.238144 43.531509 48.118244 50.865334 53.158699 55.452068 57.283459 61.870193 63.701588 68.288322">v4l2_buffer.field:</tspan></text> 2612 x="10.054964 14.17972 18.766451 20.597849 25.18458 29.771311 34.358047 38.944778 41.238144 43.531509 48.118244 50.865334 53.158699 55.452068 57.283459 61.870193 63.701588 68.288322">v4l2_buffer.field:</tspan></text>
2613</g></svg> \ No newline at end of file 2613</g></svg> \ No newline at end of file
diff --git a/Documentation/media/uapi/v4l/fieldseq_tb.svg b/Documentation/media/uapi/v4l/fieldseq_tb.svg
index 6a7b10ad4ab8..7c74344e770f 100644
--- a/Documentation/media/uapi/v4l/fieldseq_tb.svg
+++ b/Documentation/media/uapi/v4l/fieldseq_tb.svg
@@ -42,15 +42,15 @@
42 inkscape:window-maximized="1" 42 inkscape:window-maximized="1"
43 inkscape:current-layer="g5551" /><metadata 43 inkscape:current-layer="g5551" /><metadata
44 id="metadata5549"><rdf:RDF><cc:Work 44 id="metadata5549"><rdf:RDF><cc:Work
45 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type 45 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
46 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs 46 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
47 id="defs5547"><clipPath 47 id="defs5547"><clipPath
48 id="clipPath6753" 48 id="clipPath6753"
49 clipPathUnits="userSpaceOnUse"><path 49 clipPathUnits="userSpaceOnUse"><path
50 style="clip-rule:evenodd" 50 style="clip-rule:evenodd"
51 inkscape:connector-curvature="0" 51 inkscape:connector-curvature="0"
52 id="path6755" 52 id="path6755"
53 d="M 0,6000 0,0 l 5660,0 0,6000 -5660,0 z m 4786.76,-102.89 103.92,0 0,56.69 -103.92,0 0,0 85.03,-28.35 -85.03,-28.34 z" /></clipPath></defs><g 53 d="M 0,6000 0,0 l 5660,0 0,6000 -5660,0 z m 4786.76,-102.89 103.92,0 0,56.69 -103.92,0 0,0 85.03,-28.35 -85.03,-28.34 z" /></clipPath></defs><g
54 transform="matrix(1.25,0,0,-1.25,-1.0537,746.57119)" 54 transform="matrix(1.25,0,0,-1.25,-1.0537,746.57119)"
55 inkscape:label="fieldseq_tb" 55 inkscape:label="fieldseq_tb"
56 inkscape:groupmode="layer" 56 inkscape:groupmode="layer"
@@ -2446,13 +2446,13 @@
2446 transform="scale(0.1,0.1)" 2446 transform="scale(0.1,0.1)"
2447 id="g6749" 2447 id="g6749"
2448 style=""><g 2448 style=""><g
2449 id="g6751" 2449 id="g6751"
2450 clip-path="url(#clipPath6753)" 2450 clip-path="url(#clipPath6753)"
2451 style=""><path 2451 style=""><path
2452 d="m 3778.18,5925.45 1105.42,0" 2452 d="m 3778.18,5925.45 1105.42,0"
2453 style="fill:none;stroke:#000000;stroke-width:14.17199993;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 2453 style="fill:none;stroke:#000000;stroke-width:14.17199993;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
2454 id="path6757" 2454 id="path6757"
2455 inkscape:connector-curvature="0" /></g></g><path 2455 inkscape:connector-curvature="0" /></g></g><path
2456 d="m 478.676,589.711 8.503,2.834 -8.503,2.835 0,-5.669" 2456 d="m 478.676,589.711 8.503,2.834 -8.503,2.835 0,-5.669"
2457 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" 2457 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
2458 id="path6759" 2458 id="path6759"
@@ -2466,142 +2466,145 @@
2466 id="text6765" 2466 id="text6765"
2467 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2467 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2468 transform="scale(1,-1)"><tspan 2468 transform="scale(1,-1)"><tspan
2469 id="tspan6767" 2469 id="tspan6767"
2470 sodipodi:role="line" 2470 sodipodi:role="line"
2471 y="-528.771" 2471 y="-528.771"
2472 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 88.500237 97.835464">V4L2_FIELD_TOP</tspan><tspan 2472 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 88.500237 97.835464">V4L2_FIELD_TOP</tspan><tspan
2473 id="tspan6769" 2473 id="tspan6769"
2474 sodipodi:role="line" 2474 sodipodi:role="line"
2475 y="-460.74561" 2475 y="-460.74561"
2476 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 98.507408 105.83879 113.17018 122.5054">V4L2_FIELD_BOTTOM</tspan><tspan 2476 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 98.507408 105.83879 113.17018 122.5054">V4L2_FIELD_BOTTOM</tspan><tspan
2477 id="tspan6771" 2477 id="tspan6771"
2478 sodipodi:role="line" 2478 sodipodi:role="line"
2479 y="-392.72021" 2479 y="-392.72021"
2480 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 95.843628 103.17502 111.17835 119.84163 128.5049 136.50824 143.83963">V4L2_FIELD_ALTERNATE</tspan></text> 2480 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 95.843628 103.17502 111.17835 119.84163 128.5049 136.50824 143.83963">V4L2_FIELD_ALTERNATE</tspan></text>
2481<text 2481<text
2482 y="-324.69479" 2482 y="-324.69479"
2483 x="10.05469" 2483 x="10.05469"
2484 id="text6773" 2484 id="text6773"
2485 style="font-variant:normal;font-weight:normal;font-size:8.2495203px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2485 style="font-variant:normal;font-weight:normal;font-size:8.2495203px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2486 transform="scale(1,-1)"><tspan 2486 transform="scale(1,-1)"><tspan
2487 id="tspan6775" 2487 id="tspan6775"
2488 sodipodi:role="line" 2488 sodipodi:role="line"
2489 y="-324.69479" 2489 y="-324.69479"
2490 x="10.05469 14.17945 18.766184 20.597576 25.184309 29.771042 34.357777 38.944508 41.237877 43.531242 48.117977 50.865067 53.158432 55.451801 57.283192 61.869926 63.701321 68.288048">v4l2_buffer.field:</tspan><tspan 2490 x="10.05469 14.17945 18.766184 20.597576 25.184309 29.771042 34.357777 38.944508 41.237877 43.531242 48.117977 50.865067 53.158432 55.451801 57.283192 61.869926 63.701321 68.288048">v4l2_buffer.field:</tspan><tspan
2491 id="tspan6777" 2491 id="tspan6777"
2492 sodipodi:role="line" 2492 sodipodi:role="line"
2493 y="-311.9397" 2493 y="-311.9397"
2494 x="10.05469 15.55712 20.143852 24.730585 29.317318 33.904053 38.944508 41.237877 46.740307 51.327042 57.283192 61.869926 66.910378 73.328506 95.0867 100.58913 105.17586 109.7626 114.34933 118.93606 123.97652 126.26987 131.77232 136.35905 142.3152 146.90193 152.40436 158.82249 163.86295 168.9034 175.32153 197.12534 202.62778 207.21451 211.80124 216.38797 220.9747 226.01515 228.30853 233.81096 238.39769 244.35384 248.94058 253.98103 260.39917 282.15695 287.65936 292.24609 296.83282 301.41956 306.00629 311.04675 313.34012 318.84256 323.42929 329.38544 333.97217 339.47461 345.89273 350.9332 355.97363 362.39175 384.19559 389.698 394.28473 398.87149 403.45822 408.04495 413.08539 415.37875 420.8812 425.46793 431.42407 436.0108 441.05127 447.46939 469.2276 474.73001 479.31674 483.90347 488.49023 493.07697 498.1174 500.41077 505.91321 510.49994 516.45612 521.04285 526.54523 532.96338 538.00385 543.04431 549.4624">V4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_TOPV4L2_FIELD_BOTTOM</tspan></text> 2494 x="10.05469 15.55712 20.143852 24.730585 29.317318 33.904053 38.944508 41.237877 46.740307 51.327042 57.283192 61.869926 66.910378 73.328506 95.0867 100.58913 105.17586 109.7626 114.34933 118.93606 123.97652 126.26987 131.77232 136.35905 142.3152 146.90193 152.40436 158.82249 163.86295 168.9034 175.32153 197.12534 202.62778 207.21451 211.80124 216.38797 220.9747 226.01515 228.30853 233.81096 238.39769 244.35384 248.94058 253.98103 260.39917 282.15695 287.65936 292.24609 296.83282 301.41956 306.00629 311.04675 313.34012 318.84256 323.42929 329.38544 333.97217 339.47461 345.89273 350.9332 355.97363 362.39175 384.19559 389.698 394.28473 398.87149 403.45822 408.04495 413.08539 415.37875 420.8812 425.46793 431.42407 436.0108 441.05127 447.46939 469.2276 474.73001 479.31674 483.90347 488.49023 493.07697 498.1174 500.41077 505.91321 510.49994 516.45612 521.04285 526.54523 532.96338
2495538.00385 543.04431 549.4624">V4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_TOPV4L2_FIELD_BOTTOM</tspan></text>
2495<text 2496<text
2496 y="-588.2937" 2497 y="-588.2937"
2497 x="5.8031301" 2498 x="5.8031301"
2498 id="text6779" 2499 id="text6779"
2499 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2500 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2500 transform="scale(1,-1)"><tspan 2501 transform="scale(1,-1)"><tspan
2501 id="tspan6781" 2502 id="tspan6781"
2502 sodipodi:role="line" 2503 sodipodi:role="line"
2503 y="-588.2937" 2504 y="-588.2937"
2504 x="5.8031301 13.134519 19.805964 29.801128 36.472572 43.14402 47.139687 53.811131 56.474907 59.810631 66.482071 70.477737 77.149185 83.820625 87.816299 91.152016 94.48774 97.823463 104.4949 111.16635 114.50207 117.83779 120.50157 127.17302 129.83679 136.50824 139.84396 143.17969 145.84346 149.83913 155.83862 159.17435 162.51007 165.84579 169.84146 176.51291 183.18434 189.18385 199.17902 201.84279 205.17851 208.51424 215.18568 221.85713 225.19284 229.18851 235.85995 239.19568 245.86713 249.20285 252.53857 260.5419 269.87714 273.21286 281.21619 289.21951 295.89096">Temporal order, top field first transmitted (e.g. BG/PAL)</tspan><tspan 2505 x="5.8031301 13.134519 19.805964 29.801128 36.472572 43.14402 47.139687 53.811131 56.474907 59.810631 66.482071 70.477737 77.149185 83.820625 87.816299 91.152016 94.48774 97.823463 104.4949 111.16635 114.50207 117.83779 120.50157 127.17302 129.83679 136.50824 139.84396 143.17969 145.84346 149.83913 155.83862 159.17435 162.51007 165.84579 169.84146 176.51291 183.18434 189.18385 199.17902 201.84279 205.17851 208.51424 215.18568 221.85713 225.19284 229.18851 235.85995 239.19568 245.86713 249.20285 252.53857 260.5419 269.87714 273.21286 281.21619 289.21951 295.89096">Temporal order, top field first transmitted (e.g. BG/PAL)</tspan><tspan
2505 id="tspan6783" 2506 id="tspan6783"
2506 sodipodi:role="line" 2507 sodipodi:role="line"
2507 y="-86.604706" 2508 y="-86.604706"
2508 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 97.175514 106.51073 113.18218 120.51357">V4L2_FIELD_SEQ_TB</tspan><tspan 2509 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 97.175514 106.51073 113.18218 120.51357">V4L2_FIELD_SEQ_TB</tspan><tspan
2509 id="tspan6785" 2510 id="tspan6785"
2510 sodipodi:role="line" 2511 sodipodi:role="line"
2511 y="-192.89471" 2512 y="-192.89471"
2512 x="10.05469 18.058023 24.729465 31.400909 38.072357 44.743801 52.075188 55.410912 63.414246 70.085686 78.748962 85.42041 88.756134 97.419411 104.7508 112.75413 121.41741 128.08885 136.09219 144.75546 152.7588 161.42207 168.09352 176.09685 183.42824 186.76396 190.75963 200.75479 203.41858 209.41808 216.08952 218.7533 221.41707 228.08852 234.75996 241.43141 248.10286">V4L2_FIELD_INTERLACED_BT (misaligned)</tspan><tspan 2513 x="10.05469 18.058023 24.729465 31.400909 38.072357 44.743801 52.075188 55.410912 63.414246 70.085686 78.748962 85.42041 88.756134 97.419411 104.7508 112.75413 121.41741 128.08885 136.09219 144.75546 152.7588 161.42207 168.09352 176.09685 183.42824 186.76396 190.75963 200.75479 203.41858 209.41808 216.08952 218.7533 221.41707 228.08852 234.75996 241.43141 248.10286">V4L2_FIELD_INTERLACED_BT (misaligned)</tspan><tspan
2513 id="tspan6787" 2514 id="tspan6787"
2514 sodipodi:role="line" 2515 sodipodi:role="line"
2515 y="-294.93271" 2516 y="-294.93271"
2516 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 84.50457 93.167847 100.49924 108.50257 117.16585 123.83729 131.84062 140.50391 148.50723 157.17052 160.50624 163.84196 167.17769 175.18102 181.85246 188.52391 195.19534 201.86679 209.19818 212.53391 220.53723 227.20868 235.87196 242.5434 245.87912 254.5424 261.87378 269.87714 278.54041 285.21185 293.21518 301.87845 309.88177 318.54507 325.21652 332.54791">V4L2_FIELD_INTERLACED / V4L2_FIELD_INTERLACED_TB</tspan></text> 2517 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 84.50457 93.167847 100.49924 108.50257 117.16585 123.83729 131.84062 140.50391 148.50723 157.17052 160.50624 163.84196 167.17769 175.18102 181.85246 188.52391 195.19534 201.86679 209.19818 212.53391 220.53723 227.20868 235.87196 242.5434 245.87912 254.5424 261.87378 269.87714 278.54041 285.21185 293.21518 301.87845 309.88177 318.54507 325.21652 332.54791">V4L2_FIELD_INTERLACED / V4L2_FIELD_INTERLACED_TB</tspan></text>
2517<text 2518<text
2518 y="-528.771" 2519 y="-528.771"
2519 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 88.500237 97.835464" 2520 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 88.500237 97.835464"
2520 id="text4583" 2521 id="text4583"
2521 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2522 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2522 transform="scale(1,-1)"><tspan 2523 transform="scale(1,-1)"><tspan
2523 id="tspan4585" 2524 id="tspan4585"
2524 sodipodi:role="line" 2525 sodipodi:role="line"
2525 y="-528.771" 2526 y="-528.771"
2526 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 88.500237 97.835464">V4L2_FIELD_TOP</tspan></text> 2527 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 88.500237 97.835464">V4L2_FIELD_TOP</tspan></text>
2527<text 2528<text
2528 y="-460.74561" 2529 y="-460.74561"
2529 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 98.507408 105.83879 113.17018 122.5054" 2530 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 98.507408 105.83879 113.17018 122.5054"
2530 id="text4587" 2531 id="text4587"
2531 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2532 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2532 transform="scale(1,-1)"><tspan 2533 transform="scale(1,-1)"><tspan
2533 id="tspan4589" 2534 id="tspan4589"
2534 sodipodi:role="line" 2535 sodipodi:role="line"
2535 y="-460.74561" 2536 y="-460.74561"
2536 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 98.507408 105.83879 113.17018 122.5054">V4L2_FIELD_BOTTOM</tspan></text> 2537 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 98.507408 105.83879 113.17018 122.5054">V4L2_FIELD_BOTTOM</tspan></text>
2537<text 2538<text
2538 y="-392.72021" 2539 y="-392.72021"
2539 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 95.843628 103.17502 111.17835 119.84163 128.5049 136.50824 143.83963" 2540 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 95.843628 103.17502 111.17835 119.84163 128.5049 136.50824 143.83963"
2540 id="text4591" 2541 id="text4591"
2541 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2542 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2542 transform="scale(1,-1)"><tspan 2543 transform="scale(1,-1)"><tspan
2543 id="tspan4593" 2544 id="tspan4593"
2544 sodipodi:role="line" 2545 sodipodi:role="line"
2545 y="-392.72021" 2546 y="-392.72021"
2546 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 95.843628 103.17502 111.17835 119.84163 128.5049 136.50824 143.83963">V4L2_FIELD_ALTERNATE</tspan></text> 2547 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 95.843628 103.17502 111.17835 119.84163 128.5049 136.50824 143.83963">V4L2_FIELD_ALTERNATE</tspan></text>
2547<text 2548<text
2548 y="-588.2937" 2549 y="-588.2937"
2549 x="5.8031301 13.134519 19.805964 29.801128 36.472572 43.14402 47.139687 53.811131 56.474907 59.810631 66.482071 70.477737 77.149185 83.820625 87.816299 91.152016 94.48774 97.823463 104.4949 111.16635 114.50207 117.83779 120.50157 127.17302 129.83679 136.50824 139.84396 143.17969 145.84346 149.83913 155.83862 159.17435 162.51007 165.84579 169.84146 176.51291 183.18434 189.18385 199.17902 201.84279 205.17851 208.51424 215.18568 221.85713 225.19284 229.18851 235.85995 239.19568 245.86713 249.20285 252.53857 260.5419 269.87714 273.21286 281.21619 289.21951 295.89096" 2550 x="5.8031301 13.134519 19.805964 29.801128 36.472572 43.14402 47.139687 53.811131 56.474907 59.810631 66.482071 70.477737 77.149185 83.820625 87.816299 91.152016 94.48774 97.823463 104.4949 111.16635 114.50207 117.83779 120.50157 127.17302 129.83679 136.50824 139.84396 143.17969 145.84346 149.83913 155.83862 159.17435 162.51007 165.84579 169.84146 176.51291 183.18434 189.18385 199.17902 201.84279 205.17851 208.51424 215.18568 221.85713 225.19284 229.18851 235.85995 239.19568 245.86713 249.20285 252.53857 260.5419 269.87714 273.21286 281.21619 289.21951 295.89096"
2550 id="text5847" 2551 id="text5847"
2551 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2552 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2552 transform="scale(1,-1)"><tspan 2553 transform="scale(1,-1)"><tspan
2553 id="tspan5849" 2554 id="tspan5849"
2554 sodipodi:role="line" 2555 sodipodi:role="line"
2555 y="-588.2937" 2556 y="-588.2937"
2556 x="5.8031301 13.134519 19.805964 29.801128 36.472572 43.14402 47.139687 53.811131 56.474907 59.810631 66.482071 70.477737 77.149185 83.820625 87.816299 91.152016 94.48774 97.823463 104.4949 111.16635 114.50207 117.83779 120.50157 127.17302 129.83679 136.50824 139.84396 143.17969 145.84346 149.83913 155.83862 159.17435 162.51007 165.84579 169.84146 176.51291 183.18434 189.18385 199.17902 201.84279 205.17851 208.51424 215.18568 221.85713 225.19284 229.18851 235.85995 239.19568 245.86713 249.20285 252.53857 260.5419 269.87714 273.21286 281.21619 289.21951 295.89096">Temporal order, top field first transmitted (e.g. BG/PAL)</tspan></text> 2557 x="5.8031301 13.134519 19.805964 29.801128 36.472572 43.14402 47.139687 53.811131 56.474907 59.810631 66.482071 70.477737 77.149185 83.820625 87.816299 91.152016 94.48774 97.823463 104.4949 111.16635 114.50207 117.83779 120.50157 127.17302 129.83679 136.50824 139.84396 143.17969 145.84346 149.83913 155.83862 159.17435 162.51007 165.84579 169.84146 176.51291 183.18434 189.18385 199.17902 201.84279 205.17851 208.51424 215.18568 221.85713 225.19284 229.18851 235.85995 239.19568 245.86713 249.20285 252.53857 260.5419 269.87714 273.21286 281.21619 289.21951 295.89096">Temporal order, top field first transmitted (e.g. BG/PAL)</tspan></text>
2557<text 2558<text
2558 y="-86.604706" 2559 y="-86.604706"
2559 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 97.175514 106.51073 113.18218 120.51357" 2560 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 97.175514 106.51073 113.18218 120.51357"
2560 id="text5851" 2561 id="text5851"
2561 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2562 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2562 transform="scale(1,-1)"><tspan 2563 transform="scale(1,-1)"><tspan
2563 id="tspan5853" 2564 id="tspan5853"
2564 sodipodi:role="line" 2565 sodipodi:role="line"
2565 y="-86.604706" 2566 y="-86.604706"
2566 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 97.175514 106.51073 113.18218 120.51357">V4L2_FIELD_SEQ_TB</tspan></text> 2567 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 89.17218 97.175514 106.51073 113.18218 120.51357">V4L2_FIELD_SEQ_TB</tspan></text>
2567<text 2568<text
2568 y="-192.89471" 2569 y="-192.89471"
2569 x="10.05469 18.058023 24.729465 31.400909 38.072357 44.743801 52.075188 55.410912 63.414246 70.085686 78.748962 85.42041 88.756134 97.419411 104.7508 112.75413 121.41741 128.08885 136.09219 144.75546 152.7588 161.42207 168.09352 176.09685 183.42824 186.76396 190.75963 200.75479 203.41858 209.41808 216.08952 218.7533 221.41707 228.08852 234.75996 241.43141 248.10286" 2570 x="10.05469 18.058023 24.729465 31.400909 38.072357 44.743801 52.075188 55.410912 63.414246 70.085686 78.748962 85.42041 88.756134 97.419411 104.7508 112.75413 121.41741 128.08885 136.09219 144.75546 152.7588 161.42207 168.09352 176.09685 183.42824 186.76396 190.75963 200.75479 203.41858 209.41808 216.08952 218.7533 221.41707 228.08852 234.75996 241.43141 248.10286"
2570 id="text5855" 2571 id="text5855"
2571 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2572 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2572 transform="scale(1,-1)"><tspan 2573 transform="scale(1,-1)"><tspan
2573 id="tspan5857" 2574 id="tspan5857"
2574 sodipodi:role="line" 2575 sodipodi:role="line"
2575 y="-192.89471" 2576 y="-192.89471"
2576 x="10.05469 18.058023 24.729465 31.400909 38.072357 44.743801 52.075188 55.410912 63.414246 70.085686 78.748962 85.42041 88.756134 97.419411 104.7508 112.75413 121.41741 128.08885 136.09219 144.75546 152.7588 161.42207 168.09352 176.09685 183.42824 186.76396 190.75963 200.75479 203.41858 209.41808 216.08952 218.7533 221.41707 228.08852 234.75996 241.43141 248.10286">V4L2_FIELD_INTERLACED_BT (misaligned)</tspan></text> 2577 x="10.05469 18.058023 24.729465 31.400909 38.072357 44.743801 52.075188 55.410912 63.414246 70.085686 78.748962 85.42041 88.756134 97.419411 104.7508 112.75413 121.41741 128.08885 136.09219 144.75546 152.7588 161.42207 168.09352 176.09685 183.42824 186.76396 190.75963 200.75479 203.41858 209.41808 216.08952 218.7533 221.41707 228.08852 234.75996 241.43141 248.10286">V4L2_FIELD_INTERLACED_BT (misaligned)</tspan></text>
2577<text 2578<text
2578 y="-294.93271" 2579 y="-294.93271"
2579 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 84.50457 93.167847 100.49924 108.50257 117.16585 123.83729 131.84062 140.50391 148.50723 157.17052 160.50624 163.84196 167.17769 175.18102 181.85246 188.52391 195.19534 201.86679 209.19818 212.53391 220.53723 227.20868 235.87196 242.5434 245.87912 254.5424 261.87378 269.87714 278.54041 285.21185 293.21518 301.87845 309.88177 318.54507 325.21652 332.54791" 2580 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 84.50457 93.167847 100.49924 108.50257 117.16585 123.83729 131.84062 140.50391 148.50723 157.17052 160.50624 163.84196 167.17769 175.18102 181.85246 188.52391 195.19534 201.86679 209.19818 212.53391 220.53723 227.20868 235.87196 242.5434 245.87912 254.5424 261.87378 269.87714 278.54041 285.21185 293.21518 301.87845 309.88177 318.54507 325.21652 332.54791"
2580 id="text5859" 2581 id="text5859"
2581 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2582 style="font-variant:normal;font-weight:normal;font-size:11.9989996px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2582 transform="scale(1,-1)"><tspan 2583 transform="scale(1,-1)"><tspan
2583 id="tspan5861" 2584 id="tspan5861"
2584 sodipodi:role="line" 2585 sodipodi:role="line"
2585 y="-294.93271" 2586 y="-294.93271"
2586 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 84.50457 93.167847 100.49924 108.50257 117.16585 123.83729 131.84062 140.50391 148.50723 157.17052 160.50624 163.84196 167.17769 175.18102 181.85246 188.52391 195.19534 201.86679 209.19818 212.53391 220.53723 227.20868 235.87196 242.5434 245.87912 254.5424 261.87378 269.87714 278.54041 285.21185 293.21518 301.87845 309.88177 318.54507 325.21652 332.54791">V4L2_FIELD_INTERLACED / V4L2_FIELD_INTERLACED_TB</tspan></text> 2587 x="5.8031301 13.806463 20.477907 27.149351 33.820797 40.492241 47.823627 51.159351 59.162685 65.834129 74.497406 81.168854 84.50457 93.167847 100.49924 108.50257 117.16585 123.83729 131.84062 140.50391 148.50723 157.17052 160.50624 163.84196 167.17769 175.18102 181.85246 188.52391 195.19534 201.86679 209.19818 212.53391 220.53723 227.20868 235.87196 242.5434 245.87912 254.5424 261.87378 269.87714 278.54041 285.21185 293.21518 301.87845 309.88177 318.54507 325.21652 332.54791">V4L2_FIELD_INTERLACED / V4L2_FIELD_INTERLACED_TB</tspan></text>
2587<text 2588<text
2588 y="-324.69479" 2589 y="-324.69479"
2589 x="10.05469 14.17945 18.766184 20.597576 25.184309 29.771042 34.357777 38.944508 41.237877 43.531242 48.117977 50.865067 53.158432 55.451801 57.283192 61.869926 63.701321 68.288048" 2590 x="10.05469 14.17945 18.766184 20.597576 25.184309 29.771042 34.357777 38.944508 41.237877 43.531242 48.117977 50.865067 53.158432 55.451801 57.283192 61.869926 63.701321 68.288048"
2590 id="text7131" 2591 id="text7131"
2591 style="font-variant:normal;font-weight:normal;font-size:8.2495203px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2592 style="font-variant:normal;font-weight:normal;font-size:8.2495203px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2592 transform="scale(1,-1)"><tspan 2593 transform="scale(1,-1)"><tspan
2593 id="tspan7133" 2594 id="tspan7133"
2594 sodipodi:role="line" 2595 sodipodi:role="line"
2595 y="-324.69479" 2596 y="-324.69479"
2596 x="10.05469 14.17945 18.766184 20.597576 25.184309 29.771042 34.357777 38.944508 41.237877 43.531242 48.117977 50.865067 53.158432 55.451801 57.283192 61.869926 63.701321 68.288048">v4l2_buffer.field:</tspan></text> 2597 x="10.05469 14.17945 18.766184 20.597576 25.184309 29.771042 34.357777 38.944508 41.237877 43.531242 48.117977 50.865067 53.158432 55.451801 57.283192 61.869926 63.701321 68.288048">v4l2_buffer.field:</tspan></text>
2597<text 2598<text
2598 y="-311.9397" 2599 y="-311.9397"
2599 x="10.05469 15.55712 20.143852 24.730585 29.317318 33.904053 38.944508 41.237877 46.740307 51.327042 57.283192 61.869926 66.910378 73.328506 95.0867 100.58913 105.17586 109.7626 114.34933 118.93606 123.97652 126.26987 131.77232 136.35905 142.3152 146.90193 152.40436 158.82249 163.86295 168.9034 175.32153 197.12534 202.62778 207.21451 211.80124 216.38797 220.9747 226.01515 228.30853 233.81096 238.39769 244.35384 248.94058 253.98103 260.39917 282.15695 287.65936 292.24609 296.83282 301.41956 306.00629 311.04675 313.34012 318.84256 323.42929 329.38544 333.97217 339.47461 345.89273 350.9332 355.97363 362.39175 384.19559 389.698 394.28473 398.87149 403.45822 408.04495 413.08539 415.37875 420.8812 425.46793 431.42407 436.0108 441.05127 447.46939 469.2276 474.73001 479.31674 483.90347 488.49023 493.07697 498.1174 500.41077 505.91321 510.49994 516.45612 521.04285 526.54523 532.96338 538.00385 543.04431 549.4624" 2600 x="10.05469 15.55712 20.143852 24.730585 29.317318 33.904053 38.944508 41.237877 46.740307 51.327042 57.283192 61.869926 66.910378 73.328506 95.0867 100.58913 105.17586 109.7626 114.34933 118.93606 123.97652 126.26987 131.77232 136.35905 142.3152 146.90193 152.40436 158.82249 163.86295 168.9034 175.32153 197.12534 202.62778 207.21451 211.80124 216.38797 220.9747 226.01515 228.30853 233.81096 238.39769 244.35384 248.94058 253.98103 260.39917 282.15695 287.65936 292.24609 296.83282 301.41956 306.00629 311.04675 313.34012 318.84256 323.42929 329.38544 333.97217 339.47461 345.89273 350.9332 355.97363 362.39175 384.19559 389.698 394.28473 398.87149 403.45822 408.04495 413.08539 415.37875 420.8812 425.46793 431.42407 436.0108 441.05127 447.46939 469.2276 474.73001 479.31674 483.90347 488.49023 493.07697 498.1174 500.41077 505.91321 510.49994 516.45612 521.04285 526.54523 532.96338
2601538.00385 543.04431 549.4624"
2600 id="text7135" 2602 id="text7135"
2601 style="font-variant:normal;font-weight:normal;font-size:8.2495203px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 2603 style="font-variant:normal;font-weight:normal;font-size:8.2495203px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
2602 transform="scale(1,-1)"><tspan 2604 transform="scale(1,-1)"><tspan
2603 id="tspan7137" 2605 id="tspan7137"
2604 sodipodi:role="line" 2606 sodipodi:role="line"
2605 y="-311.9397" 2607 y="-311.9397"
2606 x="10.05469 15.55712 20.143852 24.730585 29.317318 33.904053 38.944508 41.237877 46.740307 51.327042 57.283192 61.869926 66.910378 73.328506 95.0867 100.58913 105.17586 109.7626 114.34933 118.93606 123.97652 126.26987 131.77232 136.35905 142.3152 146.90193 152.40436 158.82249 163.86295 168.9034 175.32153 197.12534 202.62778 207.21451 211.80124 216.38797 220.9747 226.01515 228.30853 233.81096 238.39769 244.35384 248.94058 253.98103 260.39917 282.15695 287.65936 292.24609 296.83282 301.41956 306.00629 311.04675 313.34012 318.84256 323.42929 329.38544 333.97217 339.47461 345.89273 350.9332 355.97363 362.39175 384.19559 389.698 394.28473 398.87149 403.45822 408.04495 413.08539 415.37875 420.8812 425.46793 431.42407 436.0108 441.05127 447.46939 469.2276 474.73001 479.31674 483.90347 488.49023 493.07697 498.1174 500.41077 505.91321 510.49994 516.45612 521.04285 526.54523 532.96338 538.00385 543.04431 549.4624">V4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_TOPV4L2_FIELD_BOTTOM</tspan></text> 2608 x="10.05469 15.55712 20.143852 24.730585 29.317318 33.904053 38.944508 41.237877 46.740307 51.327042 57.283192 61.869926 66.910378 73.328506 95.0867 100.58913 105.17586 109.7626 114.34933 118.93606 123.97652 126.26987 131.77232 136.35905 142.3152 146.90193 152.40436 158.82249 163.86295 168.9034 175.32153 197.12534 202.62778 207.21451 211.80124 216.38797 220.9747 226.01515 228.30853 233.81096 238.39769 244.35384 248.94058 253.98103 260.39917 282.15695 287.65936 292.24609 296.83282 301.41956 306.00629 311.04675 313.34012 318.84256 323.42929 329.38544 333.97217 339.47461 345.89273 350.9332 355.97363 362.39175 384.19559 389.698 394.28473 398.87149 403.45822 408.04495 413.08539 415.37875 420.8812 425.46793 431.42407 436.0108 441.05127 447.46939 469.2276 474.73001 479.31674 483.90347 488.49023 493.07697 498.1174 500.41077 505.91321 510.49994 516.45612 521.04285 526.54523 532.96338
2609538.00385 543.04431 549.4624">V4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_TOPV4L2_FIELD_BOTTOMV4L2_FIELD_TOPV4L2_FIELD_BOTTOM</tspan></text>
2607</g></svg> \ No newline at end of file 2610</g></svg> \ No newline at end of file
diff --git a/Documentation/media/uapi/v4l/nv12mt.svg b/Documentation/media/uapi/v4l/nv12mt.svg
index 21fcccda9723..65d05606c04c 100644
--- a/Documentation/media/uapi/v4l/nv12mt.svg
+++ b/Documentation/media/uapi/v4l/nv12mt.svg
@@ -18,8 +18,8 @@
18 sodipodi:docname="nv12mt.svg" 18 sodipodi:docname="nv12mt.svg"
19 style="fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round"><metadata 19 style="fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round"><metadata
20 id="metadata383"><rdf:RDF><cc:Work 20 id="metadata383"><rdf:RDF><cc:Work
21 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type 21 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
22 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview 22 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
23 pagecolor="#ffffff" 23 pagecolor="#ffffff"
24 bordercolor="#666666" 24 bordercolor="#666666"
25 borderopacity="1" 25 borderopacity="1"
@@ -47,11 +47,11 @@
47 id="defs4"><clipPath 47 id="defs4"><clipPath
48 id="presentation_clip_path" 48 id="presentation_clip_path"
49 clipPathUnits="userSpaceOnUse"><rect 49 clipPathUnits="userSpaceOnUse"><rect
50 x="0" 50 x="0"
51 y="0" 51 y="0"
52 width="28000" 52 width="28000"
53 height="21000" 53 height="21000"
54 id="rect7" /></clipPath></defs><defs 54 id="rect7" /></clipPath></defs><defs
55 id="defs9" /><defs 55 id="defs9" /><defs
56 id="defs80" /><defs 56 id="defs80" /><defs
57 id="defs103" /><defs 57 id="defs103" /><defs
@@ -65,386 +65,386 @@
65 id="g177" 65 id="g177"
66 transform="translate(-3285.889,-3185.889)"><g 66 transform="translate(-3285.889,-3185.889)"><g
67 id="g179"><g 67 id="g179"><g
68 id="id1" 68 id="id1"
69 class="Slide" 69 class="Slide"
70 clip-path="url(#presentation_clip_path)"><g 70 clip-path="url(#presentation_clip_path)"><g
71 class="Page" 71 class="Page"
72 id="g182"><g 72 id="g182"><g
73 class="com.sun.star.drawing.CustomShape" 73 class="com.sun.star.drawing.CustomShape"
74 id="g184"><g 74 id="g184"><g
75 id="id6"><rect 75 id="id6"><rect
76 class="BoundingBox" 76 class="BoundingBox"
77 x="3299" 77 x="3299"
78 y="3199" 78 y="3199"
79 width="2403" 79 width="2403"
80 height="1403" 80 height="1403"
81 id="rect187" 81 id="rect187"
82 style="fill:none;stroke:none" /><path 82 style="fill:none;stroke:none" /><path
83 d="m 4500,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 83 d="m 4500,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
84 id="path189" 84 id="path189"
85 inkscape:connector-curvature="0" 85 inkscape:connector-curvature="0"
86 style="fill:none;stroke:#3465a4" /><text 86 style="fill:none;stroke:#3465a4" /><text
87 class="TextShape" 87 class="TextShape"
88 id="text191"><tspan 88 id="text191"><tspan
89 class="TextParagraph" 89 class="TextParagraph"
90 font-size="635px" 90 font-size="635px"
91 font-weight="400" 91 font-weight="400"
92 id="tspan193" 92 id="tspan193"
93 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 93 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
94 class="TextPosition" 94 class="TextPosition"
95 x="4325" 95 x="4325"
96 y="4121" 96 y="4121"
97 id="tspan195"><tspan 97 id="tspan195"><tspan
98 id="tspan197" 98 id="tspan197"
99 style="fill:#000000;stroke:none">0</tspan></tspan></tspan></text> 99 style="fill:#000000;stroke:none">0</tspan></tspan></tspan></text>
100</g></g><g 100</g></g><g
101 class="com.sun.star.drawing.CustomShape" 101 class="com.sun.star.drawing.CustomShape"
102 id="g199"><g 102 id="g199"><g
103 id="id7"><rect 103 id="id7"><rect
104 class="BoundingBox" 104 class="BoundingBox"
105 x="5699" 105 x="5699"
106 y="3199" 106 y="3199"
107 width="2403" 107 width="2403"
108 height="1403" 108 height="1403"
109 id="rect202" 109 id="rect202"
110 style="fill:none;stroke:none" /><path 110 style="fill:none;stroke:none" /><path
111 d="m 6900,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 111 d="m 6900,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
112 id="path204" 112 id="path204"
113 inkscape:connector-curvature="0" 113 inkscape:connector-curvature="0"
114 style="fill:none;stroke:#3465a4" /></g></g><g 114 style="fill:none;stroke:#3465a4" /></g></g><g
115 class="com.sun.star.drawing.CustomShape" 115 class="com.sun.star.drawing.CustomShape"
116 id="g206"><g 116 id="g206"><g
117 id="id8"><rect 117 id="id8"><rect
118 class="BoundingBox" 118 class="BoundingBox"
119 x="8099" 119 x="8099"
120 y="3199" 120 y="3199"
121 width="2403" 121 width="2403"
122 height="1403" 122 height="1403"
123 id="rect209" 123 id="rect209"
124 style="fill:none;stroke:none" /><path 124 style="fill:none;stroke:none" /><path
125 d="m 9300,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 125 d="m 9300,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
126 id="path211" 126 id="path211"
127 inkscape:connector-curvature="0" 127 inkscape:connector-curvature="0"
128 style="fill:none;stroke:#3465a4" /><text 128 style="fill:none;stroke:#3465a4" /><text
129 class="TextShape" 129 class="TextShape"
130 id="text213"><tspan 130 id="text213"><tspan
131 class="TextParagraph" 131 class="TextParagraph"
132 font-size="635px" 132 font-size="635px"
133 font-weight="400" 133 font-weight="400"
134 id="tspan215" 134 id="tspan215"
135 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 135 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
136 class="TextPosition" 136 class="TextPosition"
137 x="9125" 137 x="9125"
138 y="4121" 138 y="4121"
139 id="tspan217"><tspan 139 id="tspan217"><tspan
140 id="tspan219" 140 id="tspan219"
141 style="fill:#000000;stroke:none">6</tspan></tspan></tspan></text> 141 style="fill:#000000;stroke:none">6</tspan></tspan></tspan></text>
142</g></g><g 142</g></g><g
143 class="com.sun.star.drawing.CustomShape" 143 class="com.sun.star.drawing.CustomShape"
144 id="g221"><g 144 id="g221"><g
145 id="id9"><rect 145 id="id9"><rect
146 class="BoundingBox" 146 class="BoundingBox"
147 x="5699" 147 x="5699"
148 y="3199" 148 y="3199"
149 width="2403" 149 width="2403"
150 height="1403" 150 height="1403"
151 id="rect224" 151 id="rect224"
152 style="fill:none;stroke:none" /><path 152 style="fill:none;stroke:none" /><path
153 d="m 6900,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 153 d="m 6900,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
154 id="path226" 154 id="path226"
155 inkscape:connector-curvature="0" 155 inkscape:connector-curvature="0"
156 style="fill:none;stroke:#3465a4" /><text 156 style="fill:none;stroke:#3465a4" /><text
157 class="TextShape" 157 class="TextShape"
158 id="text228"><tspan 158 id="text228"><tspan
159 class="TextParagraph" 159 class="TextParagraph"
160 font-size="635px" 160 font-size="635px"
161 font-weight="400" 161 font-weight="400"
162 id="tspan230" 162 id="tspan230"
163 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 163 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
164 class="TextPosition" 164 class="TextPosition"
165 x="6725" 165 x="6725"
166 y="4121" 166 y="4121"
167 id="tspan232"><tspan 167 id="tspan232"><tspan
168 id="tspan234" 168 id="tspan234"
169 style="fill:#000000;stroke:none">1</tspan></tspan></tspan></text> 169 style="fill:#000000;stroke:none">1</tspan></tspan></tspan></text>
170</g></g><g 170</g></g><g
171 class="com.sun.star.drawing.CustomShape" 171 class="com.sun.star.drawing.CustomShape"
172 id="g236"><g 172 id="g236"><g
173 id="id10"><rect 173 id="id10"><rect
174 class="BoundingBox" 174 class="BoundingBox"
175 x="10499" 175 x="10499"
176 y="3199" 176 y="3199"
177 width="2403" 177 width="2403"
178 height="1403" 178 height="1403"
179 id="rect239" 179 id="rect239"
180 style="fill:none;stroke:none" /><path 180 style="fill:none;stroke:none" /><path
181 d="m 11700,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 181 d="m 11700,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
182 id="path241" 182 id="path241"
183 inkscape:connector-curvature="0" 183 inkscape:connector-curvature="0"
184 style="fill:none;stroke:#3465a4" /><text 184 style="fill:none;stroke:#3465a4" /><text
185 class="TextShape" 185 class="TextShape"
186 id="text243"><tspan 186 id="text243"><tspan
187 class="TextParagraph" 187 class="TextParagraph"
188 font-size="635px" 188 font-size="635px"
189 font-weight="400" 189 font-weight="400"
190 id="tspan245" 190 id="tspan245"
191 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 191 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
192 class="TextPosition" 192 class="TextPosition"
193 x="11525" 193 x="11525"
194 y="4121" 194 y="4121"
195 id="tspan247"><tspan 195 id="tspan247"><tspan
196 id="tspan249" 196 id="tspan249"
197 style="fill:#000000;stroke:none">7</tspan></tspan></tspan></text> 197 style="fill:#000000;stroke:none">7</tspan></tspan></tspan></text>
198</g></g><g 198</g></g><g
199 class="com.sun.star.drawing.CustomShape" 199 class="com.sun.star.drawing.CustomShape"
200 id="g251"><g 200 id="g251"><g
201 id="id11"><rect 201 id="id11"><rect
202 class="BoundingBox" 202 class="BoundingBox"
203 x="3299" 203 x="3299"
204 y="4599" 204 y="4599"
205 width="2403" 205 width="2403"
206 height="1403" 206 height="1403"
207 id="rect254" 207 id="rect254"
208 style="fill:none;stroke:none" /><path 208 style="fill:none;stroke:none" /><path
209 d="m 4500,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 209 d="m 4500,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
210 id="path256" 210 id="path256"
211 inkscape:connector-curvature="0" 211 inkscape:connector-curvature="0"
212 style="fill:none;stroke:#3465a4" /><text 212 style="fill:none;stroke:#3465a4" /><text
213 class="TextShape" 213 class="TextShape"
214 id="text258"><tspan 214 id="text258"><tspan
215 class="TextParagraph" 215 class="TextParagraph"
216 font-size="635px" 216 font-size="635px"
217 font-weight="400" 217 font-weight="400"
218 id="tspan260" 218 id="tspan260"
219 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 219 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
220 class="TextPosition" 220 class="TextPosition"
221 x="4325" 221 x="4325"
222 y="5521" 222 y="5521"
223 id="tspan262"><tspan 223 id="tspan262"><tspan
224 id="tspan264" 224 id="tspan264"
225 style="fill:#000000;stroke:none">2</tspan></tspan></tspan></text> 225 style="fill:#000000;stroke:none">2</tspan></tspan></tspan></text>
226</g></g><g 226</g></g><g
227 class="com.sun.star.drawing.CustomShape" 227 class="com.sun.star.drawing.CustomShape"
228 id="g266"><g 228 id="g266"><g
229 id="id12"><rect 229 id="id12"><rect
230 class="BoundingBox" 230 class="BoundingBox"
231 x="5699" 231 x="5699"
232 y="4599" 232 y="4599"
233 width="2403" 233 width="2403"
234 height="1403" 234 height="1403"
235 id="rect269" 235 id="rect269"
236 style="fill:none;stroke:none" /><path 236 style="fill:none;stroke:none" /><path
237 d="m 6900,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 237 d="m 6900,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
238 id="path271" 238 id="path271"
239 inkscape:connector-curvature="0" 239 inkscape:connector-curvature="0"
240 style="fill:none;stroke:#3465a4" /></g></g><g 240 style="fill:none;stroke:#3465a4" /></g></g><g
241 class="com.sun.star.drawing.CustomShape" 241 class="com.sun.star.drawing.CustomShape"
242 id="g273"><g 242 id="g273"><g
243 id="id13"><rect 243 id="id13"><rect
244 class="BoundingBox" 244 class="BoundingBox"
245 x="8099" 245 x="8099"
246 y="4599" 246 y="4599"
247 width="2403" 247 width="2403"
248 height="1403" 248 height="1403"
249 id="rect276" 249 id="rect276"
250 style="fill:none;stroke:none" /><path 250 style="fill:none;stroke:none" /><path
251 d="m 9300,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 251 d="m 9300,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
252 id="path278" 252 id="path278"
253 inkscape:connector-curvature="0" 253 inkscape:connector-curvature="0"
254 style="fill:none;stroke:#3465a4" /><text 254 style="fill:none;stroke:#3465a4" /><text
255 class="TextShape" 255 class="TextShape"
256 id="text280"><tspan 256 id="text280"><tspan
257 class="TextParagraph" 257 class="TextParagraph"
258 font-size="635px" 258 font-size="635px"
259 font-weight="400" 259 font-weight="400"
260 id="tspan282" 260 id="tspan282"
261 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 261 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
262 class="TextPosition" 262 class="TextPosition"
263 x="9125" 263 x="9125"
264 y="5521" 264 y="5521"
265 id="tspan284"><tspan 265 id="tspan284"><tspan
266 id="tspan286" 266 id="tspan286"
267 style="fill:#000000;stroke:none">4</tspan></tspan></tspan></text> 267 style="fill:#000000;stroke:none">4</tspan></tspan></tspan></text>
268</g></g><g 268</g></g><g
269 class="com.sun.star.drawing.CustomShape" 269 class="com.sun.star.drawing.CustomShape"
270 id="g288"><g 270 id="g288"><g
271 id="id14"><rect 271 id="id14"><rect
272 class="BoundingBox" 272 class="BoundingBox"
273 x="5699" 273 x="5699"
274 y="4599" 274 y="4599"
275 width="2403" 275 width="2403"
276 height="1403" 276 height="1403"
277 id="rect291" 277 id="rect291"
278 style="fill:none;stroke:none" /><path 278 style="fill:none;stroke:none" /><path
279 d="m 6900,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 279 d="m 6900,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
280 id="path293" 280 id="path293"
281 inkscape:connector-curvature="0" 281 inkscape:connector-curvature="0"
282 style="fill:none;stroke:#3465a4" /><text 282 style="fill:none;stroke:#3465a4" /><text
283 class="TextShape" 283 class="TextShape"
284 id="text295"><tspan 284 id="text295"><tspan
285 class="TextParagraph" 285 class="TextParagraph"
286 font-size="635px" 286 font-size="635px"
287 font-weight="400" 287 font-weight="400"
288 id="tspan297" 288 id="tspan297"
289 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 289 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
290 class="TextPosition" 290 class="TextPosition"
291 x="6725" 291 x="6725"
292 y="5521" 292 y="5521"
293 id="tspan299"><tspan 293 id="tspan299"><tspan
294 id="tspan301" 294 id="tspan301"
295 style="fill:#000000;stroke:none">3</tspan></tspan></tspan></text> 295 style="fill:#000000;stroke:none">3</tspan></tspan></tspan></text>
296</g></g><g 296</g></g><g
297 class="com.sun.star.drawing.CustomShape" 297 class="com.sun.star.drawing.CustomShape"
298 id="g303"><g 298 id="g303"><g
299 id="id15"><rect 299 id="id15"><rect
300 class="BoundingBox" 300 class="BoundingBox"
301 x="10499" 301 x="10499"
302 y="4599" 302 y="4599"
303 width="2403" 303 width="2403"
304 height="1403" 304 height="1403"
305 id="rect306" 305 id="rect306"
306 style="fill:none;stroke:none" /><path 306 style="fill:none;stroke:none" /><path
307 d="m 11700,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 307 d="m 11700,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
308 id="path308" 308 id="path308"
309 inkscape:connector-curvature="0" 309 inkscape:connector-curvature="0"
310 style="fill:none;stroke:#3465a4" /><text 310 style="fill:none;stroke:#3465a4" /><text
311 class="TextShape" 311 class="TextShape"
312 id="text310"><tspan 312 id="text310"><tspan
313 class="TextParagraph" 313 class="TextParagraph"
314 font-size="635px" 314 font-size="635px"
315 font-weight="400" 315 font-weight="400"
316 id="tspan312" 316 id="tspan312"
317 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 317 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
318 class="TextPosition" 318 class="TextPosition"
319 x="11525" 319 x="11525"
320 y="5521" 320 y="5521"
321 id="tspan314"><tspan 321 id="tspan314"><tspan
322 id="tspan316" 322 id="tspan316"
323 style="fill:#000000;stroke:none">5</tspan></tspan></tspan></text> 323 style="fill:#000000;stroke:none">5</tspan></tspan></tspan></text>
324</g></g><g 324</g></g><g
325 class="com.sun.star.drawing.LineShape" 325 class="com.sun.star.drawing.LineShape"
326 id="g318"><g 326 id="g318"><g
327 id="id16"><rect 327 id="id16"><rect
328 class="BoundingBox" 328 class="BoundingBox"
329 x="5199" 329 x="5199"
330 y="3850" 330 y="3850"
331 width="1402" 331 width="1402"
332 height="301" 332 height="301"
333 id="rect321" 333 id="rect321"
334 style="fill:none;stroke:none" /><path 334 style="fill:none;stroke:none" /><path
335 d="m 5200,4000 970,0" 335 d="m 5200,4000 970,0"
336 id="path323" 336 id="path323"
337 inkscape:connector-curvature="0" 337 inkscape:connector-curvature="0"
338 style="fill:none;stroke:#ff3333" /><path 338 style="fill:none;stroke:#ff3333" /><path
339 d="m 6600,4000 -450,-150 0,300 450,-150 z" 339 d="m 6600,4000 -450,-150 0,300 450,-150 z"
340 id="path325" 340 id="path325"
341 inkscape:connector-curvature="0" 341 inkscape:connector-curvature="0"
342 style="fill:#ff3333;stroke:none" /></g></g><g 342 style="fill:#ff3333;stroke:none" /></g></g><g
343 class="com.sun.star.drawing.LineShape" 343 class="com.sun.star.drawing.LineShape"
344 id="g327"><g 344 id="g327"><g
345 id="id17"><rect 345 id="id17"><rect
346 class="BoundingBox" 346 class="BoundingBox"
347 x="5000" 347 x="5000"
348 y="4299" 348 y="4299"
349 width="1202" 349 width="1202"
350 height="802" 350 height="802"
351 id="rect330" 351 id="rect330"
352 style="fill:none;stroke:none" /><path 352 style="fill:none;stroke:none" /><path
353 d="m 6200,4300 -842,561" 353 d="m 6200,4300 -842,561"
354 id="path332" 354 id="path332"
355 inkscape:connector-curvature="0" 355 inkscape:connector-curvature="0"
356 style="fill:none;stroke:#ff3333" /><path 356 style="fill:none;stroke:#ff3333" /><path
357 d="m 5000,5100 458,-125 -167,-249 -291,374 z" 357 d="m 5000,5100 458,-125 -167,-249 -291,374 z"
358 id="path334" 358 id="path334"
359 inkscape:connector-curvature="0" 359 inkscape:connector-curvature="0"
360 style="fill:#ff3333;stroke:none" /></g></g><g 360 style="fill:#ff3333;stroke:none" /></g></g><g
361 class="com.sun.star.drawing.LineShape" 361 class="com.sun.star.drawing.LineShape"
362 id="g336"><g 362 id="g336"><g
363 id="id18"><rect 363 id="id18"><rect
364 class="BoundingBox" 364 class="BoundingBox"
365 x="5399" 365 x="5399"
366 y="5250" 366 y="5250"
367 width="1202" 367 width="1202"
368 height="301" 368 height="301"
369 id="rect339" 369 id="rect339"
370 style="fill:none;stroke:none" /><path 370 style="fill:none;stroke:none" /><path
371 d="m 5400,5400 770,0" 371 d="m 5400,5400 770,0"
372 id="path341" 372 id="path341"
373 inkscape:connector-curvature="0" 373 inkscape:connector-curvature="0"
374 style="fill:none;stroke:#ff3333" /><path 374 style="fill:none;stroke:#ff3333" /><path
375 d="m 6600,5400 -450,-150 0,300 450,-150 z" 375 d="m 6600,5400 -450,-150 0,300 450,-150 z"
376 id="path343" 376 id="path343"
377 inkscape:connector-curvature="0" 377 inkscape:connector-curvature="0"
378 style="fill:#ff3333;stroke:none" /></g></g><g 378 style="fill:#ff3333;stroke:none" /></g></g><g
379 class="com.sun.star.drawing.LineShape" 379 class="com.sun.star.drawing.LineShape"
380 id="g345"><g 380 id="g345"><g
381 id="id19"><rect 381 id="id19"><rect
382 class="BoundingBox" 382 class="BoundingBox"
383 x="7599" 383 x="7599"
384 y="5250" 384 y="5250"
385 width="1202" 385 width="1202"
386 height="301" 386 height="301"
387 id="rect348" 387 id="rect348"
388 style="fill:none;stroke:none" /><path 388 style="fill:none;stroke:none" /><path
389 d="m 7600,5400 770,0" 389 d="m 7600,5400 770,0"
390 id="path350" 390 id="path350"
391 inkscape:connector-curvature="0" 391 inkscape:connector-curvature="0"
392 style="fill:none;stroke:#ff3333" /><path 392 style="fill:none;stroke:#ff3333" /><path
393 d="m 8800,5400 -450,-150 0,300 450,-150 z" 393 d="m 8800,5400 -450,-150 0,300 450,-150 z"
394 id="path352" 394 id="path352"
395 inkscape:connector-curvature="0" 395 inkscape:connector-curvature="0"
396 style="fill:#ff3333;stroke:none" /></g></g><g 396 style="fill:#ff3333;stroke:none" /></g></g><g
397 class="com.sun.star.drawing.LineShape" 397 class="com.sun.star.drawing.LineShape"
398 id="g354"><g 398 id="g354"><g
399 id="id20"><rect 399 id="id20"><rect
400 class="BoundingBox" 400 class="BoundingBox"
401 x="9799" 401 x="9799"
402 y="5250" 402 y="5250"
403 width="1402" 403 width="1402"
404 height="301" 404 height="301"
405 id="rect357" 405 id="rect357"
406 style="fill:none;stroke:none" /><path 406 style="fill:none;stroke:none" /><path
407 d="m 9800,5400 970,0" 407 d="m 9800,5400 970,0"
408 id="path359" 408 id="path359"
409 inkscape:connector-curvature="0" 409 inkscape:connector-curvature="0"
410 style="fill:none;stroke:#ff3333" /><path 410 style="fill:none;stroke:#ff3333" /><path
411 d="m 11200,5400 -450,-150 0,300 450,-150 z" 411 d="m 11200,5400 -450,-150 0,300 450,-150 z"
412 id="path361" 412 id="path361"
413 inkscape:connector-curvature="0" 413 inkscape:connector-curvature="0"
414 style="fill:#ff3333;stroke:none" /></g></g><g 414 style="fill:#ff3333;stroke:none" /></g></g><g
415 class="com.sun.star.drawing.LineShape" 415 class="com.sun.star.drawing.LineShape"
416 id="g363"><g 416 id="g363"><g
417 id="id21"><rect 417 id="id21"><rect
418 class="BoundingBox" 418 class="BoundingBox"
419 x="9900" 419 x="9900"
420 y="4200" 420 y="4200"
421 width="1202" 421 width="1202"
422 height="802" 422 height="802"
423 id="rect366" 423 id="rect366"
424 style="fill:none;stroke:none" /><path 424 style="fill:none;stroke:none" /><path
425 d="m 11100,5000 -842,-561" 425 d="m 11100,5000 -842,-561"
426 id="path368" 426 id="path368"
427 inkscape:connector-curvature="0" 427 inkscape:connector-curvature="0"
428 style="fill:none;stroke:#ff3333" /><path 428 style="fill:none;stroke:#ff3333" /><path
429 d="m 9900,4200 291,374 167,-249 -458,-125 z" 429 d="m 9900,4200 291,374 167,-249 -458,-125 z"
430 id="path370" 430 id="path370"
431 inkscape:connector-curvature="0" 431 inkscape:connector-curvature="0"
432 style="fill:#ff3333;stroke:none" /></g></g><g 432 style="fill:#ff3333;stroke:none" /></g></g><g
433 class="com.sun.star.drawing.LineShape" 433 class="com.sun.star.drawing.LineShape"
434 id="g372"><g 434 id="g372"><g
435 id="id22"><rect 435 id="id22"><rect
436 class="BoundingBox" 436 class="BoundingBox"
437 x="9999" 437 x="9999"
438 y="3850" 438 y="3850"
439 width="1402" 439 width="1402"
440 height="301" 440 height="301"
441 id="rect375" 441 id="rect375"
442 style="fill:none;stroke:none" /><path 442 style="fill:none;stroke:none" /><path
443 d="m 10000,4000 970,0" 443 d="m 10000,4000 970,0"
444 id="path377" 444 id="path377"
445 inkscape:connector-curvature="0" 445 inkscape:connector-curvature="0"
446 style="fill:none;stroke:#ff3333" /><path 446 style="fill:none;stroke:#ff3333" /><path
447 d="m 11400,4000 -450,-150 0,300 450,-150 z" 447 d="m 11400,4000 -450,-150 0,300 450,-150 z"
448 id="path379" 448 id="path379"
449 inkscape:connector-curvature="0" 449 inkscape:connector-curvature="0"
450 style="fill:#ff3333;stroke:none" /></g></g></g></g></g></g></svg> 450 style="fill:#ff3333;stroke:none" /></g></g></g></g></g></g></svg>
diff --git a/Documentation/media/uapi/v4l/nv12mt_example.svg b/Documentation/media/uapi/v4l/nv12mt_example.svg
index d65d989ee73b..fc51fe8fda8b 100644
--- a/Documentation/media/uapi/v4l/nv12mt_example.svg
+++ b/Documentation/media/uapi/v4l/nv12mt_example.svg
@@ -18,8 +18,8 @@
18 sodipodi:docname="nv12mt_example.svg" 18 sodipodi:docname="nv12mt_example.svg"
19 style="fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round"><metadata 19 style="fill-rule:evenodd;stroke-width:28.22200012;stroke-linejoin:round"><metadata
20 id="metadata953"><rdf:RDF><cc:Work 20 id="metadata953"><rdf:RDF><cc:Work
21 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type 21 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
22 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview 22 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><sodipodi:namedview
23 pagecolor="#ffffff" 23 pagecolor="#ffffff"
24 bordercolor="#666666" 24 bordercolor="#666666"
25 borderopacity="1" 25 borderopacity="1"
@@ -58,1532 +58,1532 @@
58 id="g188" 58 id="g188"
59 transform="translate(-3285.889,-3185.889)"><g 59 transform="translate(-3285.889,-3185.889)"><g
60 id="id6"><rect 60 id="id6"><rect
61 class="BoundingBox" 61 class="BoundingBox"
62 x="3299" 62 x="3299"
63 y="3199" 63 y="3199"
64 width="2403" 64 width="2403"
65 height="1403" 65 height="1403"
66 id="rect191" 66 id="rect191"
67 style="fill:none;stroke:none" /><path 67 style="fill:none;stroke:none" /><path
68 d="m 4500,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 68 d="m 4500,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
69 id="path193" 69 id="path193"
70 inkscape:connector-curvature="0" 70 inkscape:connector-curvature="0"
71 style="fill:none;stroke:#3465a4" /><text 71 style="fill:none;stroke:#3465a4" /><text
72 class="TextShape" 72 class="TextShape"
73 id="text195"><tspan 73 id="text195"><tspan
74 class="TextParagraph" 74 class="TextParagraph"
75 font-size="635px" 75 font-size="635px"
76 font-weight="400" 76 font-weight="400"
77 id="tspan197" 77 id="tspan197"
78 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 78 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
79 class="TextPosition" 79 class="TextPosition"
80 x="4325" 80 x="4325"
81 y="4121" 81 y="4121"
82 id="tspan199"><tspan 82 id="tspan199"><tspan
83 id="tspan201" 83 id="tspan201"
84 style="fill:#000000;stroke:none">0</tspan></tspan></tspan></text> 84 style="fill:#000000;stroke:none">0</tspan></tspan></tspan></text>
85</g></g><g 85</g></g><g
86 class="com.sun.star.drawing.CustomShape" 86 class="com.sun.star.drawing.CustomShape"
87 id="g203" 87 id="g203"
88 transform="translate(-3285.889,-3185.889)"><g 88 transform="translate(-3285.889,-3185.889)"><g
89 id="id7"><rect 89 id="id7"><rect
90 class="BoundingBox" 90 class="BoundingBox"
91 x="5699" 91 x="5699"
92 y="3199" 92 y="3199"
93 width="2403" 93 width="2403"
94 height="1403" 94 height="1403"
95 id="rect206" 95 id="rect206"
96 style="fill:none;stroke:none" /><path 96 style="fill:none;stroke:none" /><path
97 d="m 6900,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 97 d="m 6900,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
98 id="path208" 98 id="path208"
99 inkscape:connector-curvature="0" 99 inkscape:connector-curvature="0"
100 style="fill:none;stroke:#3465a4" /></g></g><g 100 style="fill:none;stroke:#3465a4" /></g></g><g
101 class="com.sun.star.drawing.CustomShape" 101 class="com.sun.star.drawing.CustomShape"
102 id="g210" 102 id="g210"
103 transform="translate(-3285.889,-3185.889)"><g 103 transform="translate(-3285.889,-3185.889)"><g
104 id="id8"><rect 104 id="id8"><rect
105 class="BoundingBox" 105 class="BoundingBox"
106 x="8099" 106 x="8099"
107 y="3199" 107 y="3199"
108 width="2403" 108 width="2403"
109 height="1403" 109 height="1403"
110 id="rect213" 110 id="rect213"
111 style="fill:none;stroke:none" /><path 111 style="fill:none;stroke:none" /><path
112 d="m 9300,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 112 d="m 9300,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
113 id="path215" 113 id="path215"
114 inkscape:connector-curvature="0" 114 inkscape:connector-curvature="0"
115 style="fill:none;stroke:#3465a4" /><text 115 style="fill:none;stroke:#3465a4" /><text
116 class="TextShape" 116 class="TextShape"
117 id="text217"><tspan 117 id="text217"><tspan
118 class="TextParagraph" 118 class="TextParagraph"
119 font-size="635px" 119 font-size="635px"
120 font-weight="400" 120 font-weight="400"
121 id="tspan219" 121 id="tspan219"
122 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 122 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
123 class="TextPosition" 123 class="TextPosition"
124 x="9125" 124 x="9125"
125 y="4121" 125 y="4121"
126 id="tspan221"><tspan 126 id="tspan221"><tspan
127 id="tspan223" 127 id="tspan223"
128 style="fill:#000000;stroke:none">6</tspan></tspan></tspan></text> 128 style="fill:#000000;stroke:none">6</tspan></tspan></tspan></text>
129</g></g><g 129</g></g><g
130 class="com.sun.star.drawing.CustomShape" 130 class="com.sun.star.drawing.CustomShape"
131 id="g225" 131 id="g225"
132 transform="translate(-3285.889,-3185.889)"><g 132 transform="translate(-3285.889,-3185.889)"><g
133 id="id9"><rect 133 id="id9"><rect
134 class="BoundingBox" 134 class="BoundingBox"
135 x="5699" 135 x="5699"
136 y="3199" 136 y="3199"
137 width="2403" 137 width="2403"
138 height="1403" 138 height="1403"
139 id="rect228" 139 id="rect228"
140 style="fill:none;stroke:none" /><path 140 style="fill:none;stroke:none" /><path
141 d="m 6900,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 141 d="m 6900,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
142 id="path230" 142 id="path230"
143 inkscape:connector-curvature="0" 143 inkscape:connector-curvature="0"
144 style="fill:none;stroke:#3465a4" /><text 144 style="fill:none;stroke:#3465a4" /><text
145 class="TextShape" 145 class="TextShape"
146 id="text232"><tspan 146 id="text232"><tspan
147 class="TextParagraph" 147 class="TextParagraph"
148 font-size="635px" 148 font-size="635px"
149 font-weight="400" 149 font-weight="400"
150 id="tspan234" 150 id="tspan234"
151 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 151 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
152 class="TextPosition" 152 class="TextPosition"
153 x="6725" 153 x="6725"
154 y="4121" 154 y="4121"
155 id="tspan236"><tspan 155 id="tspan236"><tspan
156 id="tspan238" 156 id="tspan238"
157 style="fill:#000000;stroke:none">1</tspan></tspan></tspan></text> 157 style="fill:#000000;stroke:none">1</tspan></tspan></tspan></text>
158</g></g><g 158</g></g><g
159 class="com.sun.star.drawing.CustomShape" 159 class="com.sun.star.drawing.CustomShape"
160 id="g240" 160 id="g240"
161 transform="translate(-3285.889,-3185.889)"><g 161 transform="translate(-3285.889,-3185.889)"><g
162 id="id10"><rect 162 id="id10"><rect
163 class="BoundingBox" 163 class="BoundingBox"
164 x="10499" 164 x="10499"
165 y="3199" 165 y="3199"
166 width="2403" 166 width="2403"
167 height="1403" 167 height="1403"
168 id="rect243" 168 id="rect243"
169 style="fill:none;stroke:none" /><path 169 style="fill:none;stroke:none" /><path
170 d="m 11700,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 170 d="m 11700,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
171 id="path245" 171 id="path245"
172 inkscape:connector-curvature="0" 172 inkscape:connector-curvature="0"
173 style="fill:none;stroke:#3465a4" /><text 173 style="fill:none;stroke:#3465a4" /><text
174 class="TextShape" 174 class="TextShape"
175 id="text247"><tspan 175 id="text247"><tspan
176 class="TextParagraph" 176 class="TextParagraph"
177 font-size="635px" 177 font-size="635px"
178 font-weight="400" 178 font-weight="400"
179 id="tspan249" 179 id="tspan249"
180 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 180 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
181 class="TextPosition" 181 class="TextPosition"
182 x="11525" 182 x="11525"
183 y="4121" 183 y="4121"
184 id="tspan251"><tspan 184 id="tspan251"><tspan
185 id="tspan253" 185 id="tspan253"
186 style="fill:#000000;stroke:none">7</tspan></tspan></tspan></text> 186 style="fill:#000000;stroke:none">7</tspan></tspan></tspan></text>
187</g></g><g 187</g></g><g
188 class="com.sun.star.drawing.CustomShape" 188 class="com.sun.star.drawing.CustomShape"
189 id="g255" 189 id="g255"
190 transform="translate(-3285.889,-3185.889)"><g 190 transform="translate(-3285.889,-3185.889)"><g
191 id="id11"><rect 191 id="id11"><rect
192 class="BoundingBox" 192 class="BoundingBox"
193 x="12899" 193 x="12899"
194 y="3199" 194 y="3199"
195 width="2403" 195 width="2403"
196 height="1403" 196 height="1403"
197 id="rect258" 197 id="rect258"
198 style="fill:none;stroke:none" /><path 198 style="fill:none;stroke:none" /><path
199 d="m 14100,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 199 d="m 14100,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
200 id="path260" 200 id="path260"
201 inkscape:connector-curvature="0" 201 inkscape:connector-curvature="0"
202 style="fill:none;stroke:#3465a4" /></g></g><g 202 style="fill:none;stroke:#3465a4" /></g></g><g
203 class="com.sun.star.drawing.CustomShape" 203 class="com.sun.star.drawing.CustomShape"
204 id="g262" 204 id="g262"
205 transform="translate(-3285.889,-3185.889)"><g 205 transform="translate(-3285.889,-3185.889)"><g
206 id="id12"><rect 206 id="id12"><rect
207 class="BoundingBox" 207 class="BoundingBox"
208 x="15299" 208 x="15299"
209 y="3199" 209 y="3199"
210 width="2403" 210 width="2403"
211 height="1403" 211 height="1403"
212 id="rect265" 212 id="rect265"
213 style="fill:none;stroke:none" /><path 213 style="fill:none;stroke:none" /><path
214 d="m 16500,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 214 d="m 16500,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
215 id="path267" 215 id="path267"
216 inkscape:connector-curvature="0" 216 inkscape:connector-curvature="0"
217 style="fill:none;stroke:#3465a4" /><text 217 style="fill:none;stroke:#3465a4" /><text
218 class="TextShape" 218 class="TextShape"
219 id="text269"><tspan 219 id="text269"><tspan
220 class="TextParagraph" 220 class="TextParagraph"
221 font-size="635px" 221 font-size="635px"
222 font-weight="400" 222 font-weight="400"
223 id="tspan271" 223 id="tspan271"
224 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 224 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
225 class="TextPosition" 225 class="TextPosition"
226 x="16325" 226 x="16325"
227 y="4121" 227 y="4121"
228 id="tspan273"><tspan 228 id="tspan273"><tspan
229 id="tspan275" 229 id="tspan275"
230 style="fill:#000000;stroke:none">9</tspan></tspan></tspan></text> 230 style="fill:#000000;stroke:none">9</tspan></tspan></tspan></text>
231</g></g><g 231</g></g><g
232 class="com.sun.star.drawing.CustomShape" 232 class="com.sun.star.drawing.CustomShape"
233 id="g277" 233 id="g277"
234 transform="translate(-3285.889,-3185.889)"><g 234 transform="translate(-3285.889,-3185.889)"><g
235 id="id13"><rect 235 id="id13"><rect
236 class="BoundingBox" 236 class="BoundingBox"
237 x="12899" 237 x="12899"
238 y="3199" 238 y="3199"
239 width="2403" 239 width="2403"
240 height="1403" 240 height="1403"
241 id="rect280" 241 id="rect280"
242 style="fill:none;stroke:none" /><path 242 style="fill:none;stroke:none" /><path
243 d="m 14100,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 243 d="m 14100,4600 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
244 id="path282" 244 id="path282"
245 inkscape:connector-curvature="0" 245 inkscape:connector-curvature="0"
246 style="fill:none;stroke:#3465a4" /><text 246 style="fill:none;stroke:#3465a4" /><text
247 class="TextShape" 247 class="TextShape"
248 id="text284"><tspan 248 id="text284"><tspan
249 class="TextParagraph" 249 class="TextParagraph"
250 font-size="635px" 250 font-size="635px"
251 font-weight="400" 251 font-weight="400"
252 id="tspan286" 252 id="tspan286"
253 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 253 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
254 class="TextPosition" 254 class="TextPosition"
255 x="13925" 255 x="13925"
256 y="4121" 256 y="4121"
257 id="tspan288"><tspan 257 id="tspan288"><tspan
258 id="tspan290" 258 id="tspan290"
259 style="fill:#000000;stroke:none">8</tspan></tspan></tspan></text> 259 style="fill:#000000;stroke:none">8</tspan></tspan></tspan></text>
260</g></g><g 260</g></g><g
261 class="com.sun.star.drawing.CustomShape" 261 class="com.sun.star.drawing.CustomShape"
262 id="g292" 262 id="g292"
263 transform="translate(-3285.889,-3185.889)"><g 263 transform="translate(-3285.889,-3185.889)"><g
264 id="id14"><rect 264 id="id14"><rect
265 class="BoundingBox" 265 class="BoundingBox"
266 x="3299" 266 x="3299"
267 y="4599" 267 y="4599"
268 width="2403" 268 width="2403"
269 height="1403" 269 height="1403"
270 id="rect295" 270 id="rect295"
271 style="fill:none;stroke:none" /><path 271 style="fill:none;stroke:none" /><path
272 d="m 4500,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 272 d="m 4500,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
273 id="path297" 273 id="path297"
274 inkscape:connector-curvature="0" 274 inkscape:connector-curvature="0"
275 style="fill:none;stroke:#3465a4" /><text 275 style="fill:none;stroke:#3465a4" /><text
276 class="TextShape" 276 class="TextShape"
277 id="text299"><tspan 277 id="text299"><tspan
278 class="TextParagraph" 278 class="TextParagraph"
279 font-size="635px" 279 font-size="635px"
280 font-weight="400" 280 font-weight="400"
281 id="tspan301" 281 id="tspan301"
282 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 282 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
283 class="TextPosition" 283 class="TextPosition"
284 x="4325" 284 x="4325"
285 y="5521" 285 y="5521"
286 id="tspan303"><tspan 286 id="tspan303"><tspan
287 id="tspan305" 287 id="tspan305"
288 style="fill:#000000;stroke:none">2</tspan></tspan></tspan></text> 288 style="fill:#000000;stroke:none">2</tspan></tspan></tspan></text>
289</g></g><g 289</g></g><g
290 class="com.sun.star.drawing.CustomShape" 290 class="com.sun.star.drawing.CustomShape"
291 id="g307" 291 id="g307"
292 transform="translate(-3285.889,-3185.889)"><g 292 transform="translate(-3285.889,-3185.889)"><g
293 id="id15"><rect 293 id="id15"><rect
294 class="BoundingBox" 294 class="BoundingBox"
295 x="5699" 295 x="5699"
296 y="4599" 296 y="4599"
297 width="2403" 297 width="2403"
298 height="1403" 298 height="1403"
299 id="rect310" 299 id="rect310"
300 style="fill:none;stroke:none" /><path 300 style="fill:none;stroke:none" /><path
301 d="m 6900,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 301 d="m 6900,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
302 id="path312" 302 id="path312"
303 inkscape:connector-curvature="0" 303 inkscape:connector-curvature="0"
304 style="fill:none;stroke:#3465a4" /></g></g><g 304 style="fill:none;stroke:#3465a4" /></g></g><g
305 class="com.sun.star.drawing.CustomShape" 305 class="com.sun.star.drawing.CustomShape"
306 id="g314" 306 id="g314"
307 transform="translate(-3285.889,-3185.889)"><g 307 transform="translate(-3285.889,-3185.889)"><g
308 id="id16"><rect 308 id="id16"><rect
309 class="BoundingBox" 309 class="BoundingBox"
310 x="8099" 310 x="8099"
311 y="4599" 311 y="4599"
312 width="2403" 312 width="2403"
313 height="1403" 313 height="1403"
314 id="rect317" 314 id="rect317"
315 style="fill:none;stroke:none" /><path 315 style="fill:none;stroke:none" /><path
316 d="m 9300,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 316 d="m 9300,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
317 id="path319" 317 id="path319"
318 inkscape:connector-curvature="0" 318 inkscape:connector-curvature="0"
319 style="fill:none;stroke:#3465a4" /><text 319 style="fill:none;stroke:#3465a4" /><text
320 class="TextShape" 320 class="TextShape"
321 id="text321"><tspan 321 id="text321"><tspan
322 class="TextParagraph" 322 class="TextParagraph"
323 font-size="635px" 323 font-size="635px"
324 font-weight="400" 324 font-weight="400"
325 id="tspan323" 325 id="tspan323"
326 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 326 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
327 class="TextPosition" 327 class="TextPosition"
328 x="9125" 328 x="9125"
329 y="5521" 329 y="5521"
330 id="tspan325"><tspan 330 id="tspan325"><tspan
331 id="tspan327" 331 id="tspan327"
332 style="fill:#000000;stroke:none">4</tspan></tspan></tspan></text> 332 style="fill:#000000;stroke:none">4</tspan></tspan></tspan></text>
333</g></g><g 333</g></g><g
334 class="com.sun.star.drawing.CustomShape" 334 class="com.sun.star.drawing.CustomShape"
335 id="g329" 335 id="g329"
336 transform="translate(-3285.889,-3185.889)"><g 336 transform="translate(-3285.889,-3185.889)"><g
337 id="id17"><rect 337 id="id17"><rect
338 class="BoundingBox" 338 class="BoundingBox"
339 x="5699" 339 x="5699"
340 y="4599" 340 y="4599"
341 width="2403" 341 width="2403"
342 height="1403" 342 height="1403"
343 id="rect332" 343 id="rect332"
344 style="fill:none;stroke:none" /><path 344 style="fill:none;stroke:none" /><path
345 d="m 6900,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 345 d="m 6900,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
346 id="path334" 346 id="path334"
347 inkscape:connector-curvature="0" 347 inkscape:connector-curvature="0"
348 style="fill:none;stroke:#3465a4" /><text 348 style="fill:none;stroke:#3465a4" /><text
349 class="TextShape" 349 class="TextShape"
350 id="text336"><tspan 350 id="text336"><tspan
351 class="TextParagraph" 351 class="TextParagraph"
352 font-size="635px" 352 font-size="635px"
353 font-weight="400" 353 font-weight="400"
354 id="tspan338" 354 id="tspan338"
355 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 355 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
356 class="TextPosition" 356 class="TextPosition"
357 x="6725" 357 x="6725"
358 y="5521" 358 y="5521"
359 id="tspan340"><tspan 359 id="tspan340"><tspan
360 id="tspan342" 360 id="tspan342"
361 style="fill:#000000;stroke:none">3</tspan></tspan></tspan></text> 361 style="fill:#000000;stroke:none">3</tspan></tspan></tspan></text>
362</g></g><g 362</g></g><g
363 class="com.sun.star.drawing.CustomShape" 363 class="com.sun.star.drawing.CustomShape"
364 id="g344" 364 id="g344"
365 transform="translate(-3285.889,-3185.889)"><g 365 transform="translate(-3285.889,-3185.889)"><g
366 id="id18"><rect 366 id="id18"><rect
367 class="BoundingBox" 367 class="BoundingBox"
368 x="10499" 368 x="10499"
369 y="4599" 369 y="4599"
370 width="2403" 370 width="2403"
371 height="1403" 371 height="1403"
372 id="rect347" 372 id="rect347"
373 style="fill:none;stroke:none" /><path 373 style="fill:none;stroke:none" /><path
374 d="m 11700,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 374 d="m 11700,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
375 id="path349" 375 id="path349"
376 inkscape:connector-curvature="0" 376 inkscape:connector-curvature="0"
377 style="fill:none;stroke:#3465a4" /><text 377 style="fill:none;stroke:#3465a4" /><text
378 class="TextShape" 378 class="TextShape"
379 id="text351"><tspan 379 id="text351"><tspan
380 class="TextParagraph" 380 class="TextParagraph"
381 font-size="635px" 381 font-size="635px"
382 font-weight="400" 382 font-weight="400"
383 id="tspan353" 383 id="tspan353"
384 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 384 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
385 class="TextPosition" 385 class="TextPosition"
386 x="11525" 386 x="11525"
387 y="5521" 387 y="5521"
388 id="tspan355"><tspan 388 id="tspan355"><tspan
389 id="tspan357" 389 id="tspan357"
390 style="fill:#000000;stroke:none">5</tspan></tspan></tspan></text> 390 style="fill:#000000;stroke:none">5</tspan></tspan></tspan></text>
391</g></g><g 391</g></g><g
392 class="com.sun.star.drawing.CustomShape" 392 class="com.sun.star.drawing.CustomShape"
393 id="g359" 393 id="g359"
394 transform="translate(-3285.889,-3185.889)"><g 394 transform="translate(-3285.889,-3185.889)"><g
395 id="id19"><rect 395 id="id19"><rect
396 class="BoundingBox" 396 class="BoundingBox"
397 x="12899" 397 x="12899"
398 y="4599" 398 y="4599"
399 width="2403" 399 width="2403"
400 height="1403" 400 height="1403"
401 id="rect362" 401 id="rect362"
402 style="fill:none;stroke:none" /><path 402 style="fill:none;stroke:none" /><path
403 d="m 14100,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 403 d="m 14100,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
404 id="path364" 404 id="path364"
405 inkscape:connector-curvature="0" 405 inkscape:connector-curvature="0"
406 style="fill:none;stroke:#3465a4" /></g></g><g 406 style="fill:none;stroke:#3465a4" /></g></g><g
407 class="com.sun.star.drawing.CustomShape" 407 class="com.sun.star.drawing.CustomShape"
408 id="g366" 408 id="g366"
409 transform="translate(-3285.889,-3185.889)"><g 409 transform="translate(-3285.889,-3185.889)"><g
410 id="id20"><rect 410 id="id20"><rect
411 class="BoundingBox" 411 class="BoundingBox"
412 x="15299" 412 x="15299"
413 y="4599" 413 y="4599"
414 width="2403" 414 width="2403"
415 height="1403" 415 height="1403"
416 id="rect369" 416 id="rect369"
417 style="fill:none;stroke:none" /><path 417 style="fill:none;stroke:none" /><path
418 d="m 16500,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 418 d="m 16500,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
419 id="path371" 419 id="path371"
420 inkscape:connector-curvature="0" 420 inkscape:connector-curvature="0"
421 style="fill:none;stroke:#3465a4" /><text 421 style="fill:none;stroke:#3465a4" /><text
422 class="TextShape" 422 class="TextShape"
423 id="text373"><tspan 423 id="text373"><tspan
424 class="TextParagraph" 424 class="TextParagraph"
425 font-size="635px" 425 font-size="635px"
426 font-weight="400" 426 font-weight="400"
427 id="tspan375" 427 id="tspan375"
428 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 428 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
429 class="TextPosition" 429 class="TextPosition"
430 x="16149" 430 x="16149"
431 y="5521" 431 y="5521"
432 id="tspan377"><tspan 432 id="tspan377"><tspan
433 id="tspan379" 433 id="tspan379"
434 style="fill:#000000;stroke:none">11</tspan></tspan></tspan></text> 434 style="fill:#000000;stroke:none">11</tspan></tspan></tspan></text>
435</g></g><g 435</g></g><g
436 class="com.sun.star.drawing.CustomShape" 436 class="com.sun.star.drawing.CustomShape"
437 id="g381" 437 id="g381"
438 transform="translate(-3285.889,-3185.889)"><g 438 transform="translate(-3285.889,-3185.889)"><g
439 id="id21"><rect 439 id="id21"><rect
440 class="BoundingBox" 440 class="BoundingBox"
441 x="12899" 441 x="12899"
442 y="4599" 442 y="4599"
443 width="2403" 443 width="2403"
444 height="1403" 444 height="1403"
445 id="rect384" 445 id="rect384"
446 style="fill:none;stroke:none" /><path 446 style="fill:none;stroke:none" /><path
447 d="m 14100,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 447 d="m 14100,6000 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
448 id="path386" 448 id="path386"
449 inkscape:connector-curvature="0" 449 inkscape:connector-curvature="0"
450 style="fill:none;stroke:#3465a4" /><text 450 style="fill:none;stroke:#3465a4" /><text
451 class="TextShape" 451 class="TextShape"
452 id="text388"><tspan 452 id="text388"><tspan
453 class="TextParagraph" 453 class="TextParagraph"
454 font-size="635px" 454 font-size="635px"
455 font-weight="400" 455 font-weight="400"
456 id="tspan390" 456 id="tspan390"
457 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 457 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
458 class="TextPosition" 458 class="TextPosition"
459 x="13749" 459 x="13749"
460 y="5521" 460 y="5521"
461 id="tspan392"><tspan 461 id="tspan392"><tspan
462 id="tspan394" 462 id="tspan394"
463 style="fill:#000000;stroke:none">10</tspan></tspan></tspan></text> 463 style="fill:#000000;stroke:none">10</tspan></tspan></tspan></text>
464</g></g><g 464</g></g><g
465 class="com.sun.star.drawing.CustomShape" 465 class="com.sun.star.drawing.CustomShape"
466 id="g396" 466 id="g396"
467 transform="translate(-3285.889,-3185.889)"><g 467 transform="translate(-3285.889,-3185.889)"><g
468 id="id22"><rect 468 id="id22"><rect
469 class="BoundingBox" 469 class="BoundingBox"
470 x="3299" 470 x="3299"
471 y="5999" 471 y="5999"
472 width="2403" 472 width="2403"
473 height="1403" 473 height="1403"
474 id="rect399" 474 id="rect399"
475 style="fill:none;stroke:none" /><path 475 style="fill:none;stroke:none" /><path
476 d="m 4500,7400 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 476 d="m 4500,7400 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
477 id="path401" 477 id="path401"
478 inkscape:connector-curvature="0" 478 inkscape:connector-curvature="0"
479 style="fill:none;stroke:#3465a4" /><text 479 style="fill:none;stroke:#3465a4" /><text
480 class="TextShape" 480 class="TextShape"
481 id="text403"><tspan 481 id="text403"><tspan
482 class="TextParagraph" 482 class="TextParagraph"
483 font-size="635px" 483 font-size="635px"
484 font-weight="400" 484 font-weight="400"
485 id="tspan405" 485 id="tspan405"
486 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 486 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
487 class="TextPosition" 487 class="TextPosition"
488 x="4149" 488 x="4149"
489 y="6921" 489 y="6921"
490 id="tspan407"><tspan 490 id="tspan407"><tspan
491 id="tspan409" 491 id="tspan409"
492 style="fill:#000000;stroke:none">12</tspan></tspan></tspan></text> 492 style="fill:#000000;stroke:none">12</tspan></tspan></tspan></text>
493</g></g><g 493</g></g><g
494 class="com.sun.star.drawing.CustomShape" 494 class="com.sun.star.drawing.CustomShape"
495 id="g411" 495 id="g411"
496 transform="translate(-3285.889,-3185.889)"><g 496 transform="translate(-3285.889,-3185.889)"><g
497 id="id23"><rect 497 id="id23"><rect
498 class="BoundingBox" 498 class="BoundingBox"
499 x="5699" 499 x="5699"
500 y="5999" 500 y="5999"
501 width="2403" 501 width="2403"
502 height="1403" 502 height="1403"
503 id="rect414" 503 id="rect414"
504 style="fill:none;stroke:none" /><path 504 style="fill:none;stroke:none" /><path
505 d="m 6900,7400 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 505 d="m 6900,7400 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
506 id="path416" 506 id="path416"
507 inkscape:connector-curvature="0" 507 inkscape:connector-curvature="0"
508 style="fill:none;stroke:#3465a4" /></g></g><g 508 style="fill:none;stroke:#3465a4" /></g></g><g
509 class="com.sun.star.drawing.CustomShape" 509 class="com.sun.star.drawing.CustomShape"
510 id="g418" 510 id="g418"
511 transform="translate(-3285.889,-3185.889)"><g 511 transform="translate(-3285.889,-3185.889)"><g
512 id="id24"><rect 512 id="id24"><rect
513 class="BoundingBox" 513 class="BoundingBox"
514 x="8099" 514 x="8099"
515 y="5999" 515 y="5999"
516 width="2403" 516 width="2403"
517 height="1403" 517 height="1403"
518 id="rect421" 518 id="rect421"
519 style="fill:none;stroke:none" /><path 519 style="fill:none;stroke:none" /><path
520 d="m 9300,7400 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 520 d="m 9300,7400 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
521 id="path423" 521 id="path423"
522 inkscape:connector-curvature="0" 522 inkscape:connector-curvature="0"
523 style="fill:none;stroke:#3465a4" /><text 523 style="fill:none;stroke:#3465a4" /><text
524 class="TextShape" 524 class="TextShape"
525 id="text425"><tspan 525 id="text425"><tspan
526 class="TextParagraph" 526 class="TextParagraph"
527 font-size="635px" 527 font-size="635px"
528 font-weight="400" 528 font-weight="400"
529 id="tspan427" 529 id="tspan427"
530 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 530 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
531 class="TextPosition" 531 class="TextPosition"
532 x="8949" 532 x="8949"
533 y="6921" 533 y="6921"
534 id="tspan429"><tspan 534 id="tspan429"><tspan
535 id="tspan431" 535 id="tspan431"
536 style="fill:#000000;stroke:none">18</tspan></tspan></tspan></text> 536 style="fill:#000000;stroke:none">18</tspan></tspan></tspan></text>
537</g></g><g 537</g></g><g
538 class="com.sun.star.drawing.CustomShape" 538 class="com.sun.star.drawing.CustomShape"
539 id="g433" 539 id="g433"
540 transform="translate(-3285.889,-3185.889)"><g 540 transform="translate(-3285.889,-3185.889)"><g
541 id="id25"><rect 541 id="id25"><rect
542 class="BoundingBox" 542 class="BoundingBox"
543 x="5699" 543 x="5699"
544 y="5999" 544 y="5999"
545 width="2403" 545 width="2403"
546 height="1403" 546 height="1403"
547 id="rect436" 547 id="rect436"
548 style="fill:none;stroke:none" /><path 548 style="fill:none;stroke:none" /><path
549 d="m 6900,7400 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 549 d="m 6900,7400 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
550 id="path438" 550 id="path438"
551 inkscape:connector-curvature="0" 551 inkscape:connector-curvature="0"
552 style="fill:none;stroke:#3465a4" /><text 552 style="fill:none;stroke:#3465a4" /><text
553 class="TextShape" 553 class="TextShape"
554 id="text440"><tspan 554 id="text440"><tspan
555 class="TextParagraph" 555 class="TextParagraph"
556 font-size="635px" 556 font-size="635px"
557 font-weight="400" 557 font-weight="400"
558 id="tspan442" 558 id="tspan442"
559 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 559 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
560 class="TextPosition" 560 class="TextPosition"
561 x="6549" 561 x="6549"
562 y="6921" 562 y="6921"
563 id="tspan444"><tspan 563 id="tspan444"><tspan
564 id="tspan446" 564 id="tspan446"
565 style="fill:#000000;stroke:none">13</tspan></tspan></tspan></text> 565 style="fill:#000000;stroke:none">13</tspan></tspan></tspan></text>
566</g></g><g 566</g></g><g
567 class="com.sun.star.drawing.CustomShape" 567 class="com.sun.star.drawing.CustomShape"
568 id="g448" 568 id="g448"
569 transform="translate(-3285.889,-3185.889)"><g 569 transform="translate(-3285.889,-3185.889)"><g
570 id="id26"><rect 570 id="id26"><rect
571 class="BoundingBox" 571 class="BoundingBox"
572 x="10499" 572 x="10499"
573 y="5999" 573 y="5999"
574 width="2403" 574 width="2403"
575 height="1403" 575 height="1403"
576 id="rect451" 576 id="rect451"
577 style="fill:none;stroke:none" /><path 577 style="fill:none;stroke:none" /><path
578 d="m 11700,7400 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 578 d="m 11700,7400 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
579 id="path453" 579 id="path453"
580 inkscape:connector-curvature="0" 580 inkscape:connector-curvature="0"
581 style="fill:none;stroke:#3465a4" /><text 581 style="fill:none;stroke:#3465a4" /><text
582 class="TextShape" 582 class="TextShape"
583 id="text455"><tspan 583 id="text455"><tspan
584 class="TextParagraph" 584 class="TextParagraph"
585 font-size="635px" 585 font-size="635px"
586 font-weight="400" 586 font-weight="400"
587 id="tspan457" 587 id="tspan457"
588 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 588 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
589 class="TextPosition" 589 class="TextPosition"
590 x="11349" 590 x="11349"
591 y="6921" 591 y="6921"
592 id="tspan459"><tspan 592 id="tspan459"><tspan
593 id="tspan461" 593 id="tspan461"
594 style="fill:#000000;stroke:none">19</tspan></tspan></tspan></text> 594 style="fill:#000000;stroke:none">19</tspan></tspan></tspan></text>
595</g></g><g 595</g></g><g
596 class="com.sun.star.drawing.CustomShape" 596 class="com.sun.star.drawing.CustomShape"
597 id="g463" 597 id="g463"
598 transform="translate(-3285.889,-3185.889)"><g 598 transform="translate(-3285.889,-3185.889)"><g
599 id="id27"><rect 599 id="id27"><rect
600 class="BoundingBox" 600 class="BoundingBox"
601 x="12899" 601 x="12899"
602 y="5999" 602 y="5999"
603 width="2403" 603 width="2403"
604 height="1403" 604 height="1403"
605 id="rect466" 605 id="rect466"
606 style="fill:none;stroke:none" /><path 606 style="fill:none;stroke:none" /><path
607 d="m 14100,7400 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 607 d="m 14100,7400 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
608 id="path468" 608 id="path468"
609 inkscape:connector-curvature="0" 609 inkscape:connector-curvature="0"
610 style="fill:none;stroke:#3465a4" /></g></g><g 610 style="fill:none;stroke:#3465a4" /></g></g><g
611 class="com.sun.star.drawing.CustomShape" 611 class="com.sun.star.drawing.CustomShape"
612 id="g470" 612 id="g470"
613 transform="translate(-3285.889,-3185.889)"><g 613 transform="translate(-3285.889,-3185.889)"><g
614 id="id28"><rect 614 id="id28"><rect
615 class="BoundingBox" 615 class="BoundingBox"
616 x="15299" 616 x="15299"
617 y="5999" 617 y="5999"
618 width="2403" 618 width="2403"
619 height="1403" 619 height="1403"
620 id="rect473" 620 id="rect473"
621 style="fill:none;stroke:none" /><path 621 style="fill:none;stroke:none" /><path
622 d="m 16500,7400 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 622 d="m 16500,7400 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
623 id="path475" 623 id="path475"
624 inkscape:connector-curvature="0" 624 inkscape:connector-curvature="0"
625 style="fill:none;stroke:#3465a4" /><text 625 style="fill:none;stroke:#3465a4" /><text
626 class="TextShape" 626 class="TextShape"
627 id="text477"><tspan 627 id="text477"><tspan
628 class="TextParagraph" 628 class="TextParagraph"
629 font-size="635px" 629 font-size="635px"
630 font-weight="400" 630 font-weight="400"
631 id="tspan479" 631 id="tspan479"
632 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 632 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
633 class="TextPosition" 633 class="TextPosition"
634 x="16149" 634 x="16149"
635 y="6921" 635 y="6921"
636 id="tspan481"><tspan 636 id="tspan481"><tspan
637 id="tspan483" 637 id="tspan483"
638 style="fill:#000000;stroke:none">21</tspan></tspan></tspan></text> 638 style="fill:#000000;stroke:none">21</tspan></tspan></tspan></text>
639</g></g><g 639</g></g><g
640 class="com.sun.star.drawing.CustomShape" 640 class="com.sun.star.drawing.CustomShape"
641 id="g485" 641 id="g485"
642 transform="translate(-3285.889,-3185.889)"><g 642 transform="translate(-3285.889,-3185.889)"><g
643 id="id29"><rect 643 id="id29"><rect
644 class="BoundingBox" 644 class="BoundingBox"
645 x="12899" 645 x="12899"
646 y="5999" 646 y="5999"
647 width="2403" 647 width="2403"
648 height="1403" 648 height="1403"
649 id="rect488" 649 id="rect488"
650 style="fill:none;stroke:none" /><path 650 style="fill:none;stroke:none" /><path
651 d="m 14100,7400 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 651 d="m 14100,7400 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
652 id="path490" 652 id="path490"
653 inkscape:connector-curvature="0" 653 inkscape:connector-curvature="0"
654 style="fill:none;stroke:#3465a4" /><text 654 style="fill:none;stroke:#3465a4" /><text
655 class="TextShape" 655 class="TextShape"
656 id="text492"><tspan 656 id="text492"><tspan
657 class="TextParagraph" 657 class="TextParagraph"
658 font-size="635px" 658 font-size="635px"
659 font-weight="400" 659 font-weight="400"
660 id="tspan494" 660 id="tspan494"
661 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 661 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
662 class="TextPosition" 662 class="TextPosition"
663 x="13749" 663 x="13749"
664 y="6921" 664 y="6921"
665 id="tspan496"><tspan 665 id="tspan496"><tspan
666 id="tspan498" 666 id="tspan498"
667 style="fill:#000000;stroke:none">20</tspan></tspan></tspan></text> 667 style="fill:#000000;stroke:none">20</tspan></tspan></tspan></text>
668</g></g><g 668</g></g><g
669 class="com.sun.star.drawing.CustomShape" 669 class="com.sun.star.drawing.CustomShape"
670 id="g500" 670 id="g500"
671 transform="translate(-3285.889,-3185.889)"><g 671 transform="translate(-3285.889,-3185.889)"><g
672 id="id30"><rect 672 id="id30"><rect
673 class="BoundingBox" 673 class="BoundingBox"
674 x="3299" 674 x="3299"
675 y="7399" 675 y="7399"
676 width="2403" 676 width="2403"
677 height="1403" 677 height="1403"
678 id="rect503" 678 id="rect503"
679 style="fill:none;stroke:none" /><path 679 style="fill:none;stroke:none" /><path
680 d="m 4500,8800 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 680 d="m 4500,8800 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
681 id="path505" 681 id="path505"
682 inkscape:connector-curvature="0" 682 inkscape:connector-curvature="0"
683 style="fill:none;stroke:#3465a4" /><text 683 style="fill:none;stroke:#3465a4" /><text
684 class="TextShape" 684 class="TextShape"
685 id="text507"><tspan 685 id="text507"><tspan
686 class="TextParagraph" 686 class="TextParagraph"
687 font-size="635px" 687 font-size="635px"
688 font-weight="400" 688 font-weight="400"
689 id="tspan509" 689 id="tspan509"
690 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 690 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
691 class="TextPosition" 691 class="TextPosition"
692 x="4149" 692 x="4149"
693 y="8321" 693 y="8321"
694 id="tspan511"><tspan 694 id="tspan511"><tspan
695 id="tspan513" 695 id="tspan513"
696 style="fill:#000000;stroke:none">14</tspan></tspan></tspan></text> 696 style="fill:#000000;stroke:none">14</tspan></tspan></tspan></text>
697</g></g><g 697</g></g><g
698 class="com.sun.star.drawing.CustomShape" 698 class="com.sun.star.drawing.CustomShape"
699 id="g515" 699 id="g515"
700 transform="translate(-3285.889,-3185.889)"><g 700 transform="translate(-3285.889,-3185.889)"><g
701 id="id31"><rect 701 id="id31"><rect
702 class="BoundingBox" 702 class="BoundingBox"
703 x="5699" 703 x="5699"
704 y="7399" 704 y="7399"
705 width="2403" 705 width="2403"
706 height="1403" 706 height="1403"
707 id="rect518" 707 id="rect518"
708 style="fill:none;stroke:none" /><path 708 style="fill:none;stroke:none" /><path
709 d="m 6900,8800 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 709 d="m 6900,8800 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
710 id="path520" 710 id="path520"
711 inkscape:connector-curvature="0" 711 inkscape:connector-curvature="0"
712 style="fill:none;stroke:#3465a4" /></g></g><g 712 style="fill:none;stroke:#3465a4" /></g></g><g
713 class="com.sun.star.drawing.CustomShape" 713 class="com.sun.star.drawing.CustomShape"
714 id="g522" 714 id="g522"
715 transform="translate(-3285.889,-3185.889)"><g 715 transform="translate(-3285.889,-3185.889)"><g
716 id="id32"><rect 716 id="id32"><rect
717 class="BoundingBox" 717 class="BoundingBox"
718 x="8099" 718 x="8099"
719 y="7399" 719 y="7399"
720 width="2403" 720 width="2403"
721 height="1403" 721 height="1403"
722 id="rect525" 722 id="rect525"
723 style="fill:none;stroke:none" /><path 723 style="fill:none;stroke:none" /><path
724 d="m 9300,8800 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 724 d="m 9300,8800 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
725 id="path527" 725 id="path527"
726 inkscape:connector-curvature="0" 726 inkscape:connector-curvature="0"
727 style="fill:none;stroke:#3465a4" /><text 727 style="fill:none;stroke:#3465a4" /><text
728 class="TextShape" 728 class="TextShape"
729 id="text529"><tspan 729 id="text529"><tspan
730 class="TextParagraph" 730 class="TextParagraph"
731 font-size="635px" 731 font-size="635px"
732 font-weight="400" 732 font-weight="400"
733 id="tspan531" 733 id="tspan531"
734 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 734 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
735 class="TextPosition" 735 class="TextPosition"
736 x="8949" 736 x="8949"
737 y="8321" 737 y="8321"
738 id="tspan533"><tspan 738 id="tspan533"><tspan
739 id="tspan535" 739 id="tspan535"
740 style="fill:#000000;stroke:none">16</tspan></tspan></tspan></text> 740 style="fill:#000000;stroke:none">16</tspan></tspan></tspan></text>
741</g></g><g 741</g></g><g
742 class="com.sun.star.drawing.CustomShape" 742 class="com.sun.star.drawing.CustomShape"
743 id="g537" 743 id="g537"
744 transform="translate(-3285.889,-3185.889)"><g 744 transform="translate(-3285.889,-3185.889)"><g
745 id="id33"><rect 745 id="id33"><rect
746 class="BoundingBox" 746 class="BoundingBox"
747 x="5699" 747 x="5699"
748 y="7399" 748 y="7399"
749 width="2403" 749 width="2403"
750 height="1403" 750 height="1403"
751 id="rect540" 751 id="rect540"
752 style="fill:none;stroke:none" /><path 752 style="fill:none;stroke:none" /><path
753 d="m 6900,8800 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 753 d="m 6900,8800 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
754 id="path542" 754 id="path542"
755 inkscape:connector-curvature="0" 755 inkscape:connector-curvature="0"
756 style="fill:none;stroke:#3465a4" /><text 756 style="fill:none;stroke:#3465a4" /><text
757 class="TextShape" 757 class="TextShape"
758 id="text544"><tspan 758 id="text544"><tspan
759 class="TextParagraph" 759 class="TextParagraph"
760 font-size="635px" 760 font-size="635px"
761 font-weight="400" 761 font-weight="400"
762 id="tspan546" 762 id="tspan546"
763 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 763 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
764 class="TextPosition" 764 class="TextPosition"
765 x="6549" 765 x="6549"
766 y="8321" 766 y="8321"
767 id="tspan548"><tspan 767 id="tspan548"><tspan
768 id="tspan550" 768 id="tspan550"
769 style="fill:#000000;stroke:none">15</tspan></tspan></tspan></text> 769 style="fill:#000000;stroke:none">15</tspan></tspan></tspan></text>
770</g></g><g 770</g></g><g
771 class="com.sun.star.drawing.CustomShape" 771 class="com.sun.star.drawing.CustomShape"
772 id="g552" 772 id="g552"
773 transform="translate(-3285.889,-3185.889)"><g 773 transform="translate(-3285.889,-3185.889)"><g
774 id="id34"><rect 774 id="id34"><rect
775 class="BoundingBox" 775 class="BoundingBox"
776 x="10499" 776 x="10499"
777 y="7399" 777 y="7399"
778 width="2403" 778 width="2403"
779 height="1403" 779 height="1403"
780 id="rect555" 780 id="rect555"
781 style="fill:none;stroke:none" /><path 781 style="fill:none;stroke:none" /><path
782 d="m 11700,8800 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 782 d="m 11700,8800 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
783 id="path557" 783 id="path557"
784 inkscape:connector-curvature="0" 784 inkscape:connector-curvature="0"
785 style="fill:none;stroke:#3465a4" /><text 785 style="fill:none;stroke:#3465a4" /><text
786 class="TextShape" 786 class="TextShape"
787 id="text559"><tspan 787 id="text559"><tspan
788 class="TextParagraph" 788 class="TextParagraph"
789 font-size="635px" 789 font-size="635px"
790 font-weight="400" 790 font-weight="400"
791 id="tspan561" 791 id="tspan561"
792 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 792 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
793 class="TextPosition" 793 class="TextPosition"
794 x="11349" 794 x="11349"
795 y="8321" 795 y="8321"
796 id="tspan563"><tspan 796 id="tspan563"><tspan
797 id="tspan565" 797 id="tspan565"
798 style="fill:#000000;stroke:none">17</tspan></tspan></tspan></text> 798 style="fill:#000000;stroke:none">17</tspan></tspan></tspan></text>
799</g></g><g 799</g></g><g
800 class="com.sun.star.drawing.CustomShape" 800 class="com.sun.star.drawing.CustomShape"
801 id="g567" 801 id="g567"
802 transform="translate(-3285.889,-3185.889)"><g 802 transform="translate(-3285.889,-3185.889)"><g
803 id="id35"><rect 803 id="id35"><rect
804 class="BoundingBox" 804 class="BoundingBox"
805 x="12899" 805 x="12899"
806 y="7399" 806 y="7399"
807 width="2403" 807 width="2403"
808 height="1403" 808 height="1403"
809 id="rect570" 809 id="rect570"
810 style="fill:none;stroke:none" /><path 810 style="fill:none;stroke:none" /><path
811 d="m 14100,8800 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 811 d="m 14100,8800 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
812 id="path572" 812 id="path572"
813 inkscape:connector-curvature="0" 813 inkscape:connector-curvature="0"
814 style="fill:none;stroke:#3465a4" /></g></g><g 814 style="fill:none;stroke:#3465a4" /></g></g><g
815 class="com.sun.star.drawing.CustomShape" 815 class="com.sun.star.drawing.CustomShape"
816 id="g574" 816 id="g574"
817 transform="translate(-3285.889,-3185.889)"><g 817 transform="translate(-3285.889,-3185.889)"><g
818 id="id36"><rect 818 id="id36"><rect
819 class="BoundingBox" 819 class="BoundingBox"
820 x="15299" 820 x="15299"
821 y="7399" 821 y="7399"
822 width="2403" 822 width="2403"
823 height="1403" 823 height="1403"
824 id="rect577" 824 id="rect577"
825 style="fill:none;stroke:none" /><path 825 style="fill:none;stroke:none" /><path
826 d="m 16500,8800 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 826 d="m 16500,8800 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
827 id="path579" 827 id="path579"
828 inkscape:connector-curvature="0" 828 inkscape:connector-curvature="0"
829 style="fill:none;stroke:#3465a4" /><text 829 style="fill:none;stroke:#3465a4" /><text
830 class="TextShape" 830 class="TextShape"
831 id="text581"><tspan 831 id="text581"><tspan
832 class="TextParagraph" 832 class="TextParagraph"
833 font-size="635px" 833 font-size="635px"
834 font-weight="400" 834 font-weight="400"
835 id="tspan583" 835 id="tspan583"
836 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 836 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
837 class="TextPosition" 837 class="TextPosition"
838 x="16149" 838 x="16149"
839 y="8321" 839 y="8321"
840 id="tspan585"><tspan 840 id="tspan585"><tspan
841 id="tspan587" 841 id="tspan587"
842 style="fill:#000000;stroke:none">23</tspan></tspan></tspan></text> 842 style="fill:#000000;stroke:none">23</tspan></tspan></tspan></text>
843</g></g><g 843</g></g><g
844 class="com.sun.star.drawing.CustomShape" 844 class="com.sun.star.drawing.CustomShape"
845 id="g589" 845 id="g589"
846 transform="translate(-3285.889,-3185.889)"><g 846 transform="translate(-3285.889,-3185.889)"><g
847 id="id37"><rect 847 id="id37"><rect
848 class="BoundingBox" 848 class="BoundingBox"
849 x="12899" 849 x="12899"
850 y="7399" 850 y="7399"
851 width="2403" 851 width="2403"
852 height="1403" 852 height="1403"
853 id="rect592" 853 id="rect592"
854 style="fill:none;stroke:none" /><path 854 style="fill:none;stroke:none" /><path
855 d="m 14100,8800 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 855 d="m 14100,8800 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
856 id="path594" 856 id="path594"
857 inkscape:connector-curvature="0" 857 inkscape:connector-curvature="0"
858 style="fill:none;stroke:#3465a4" /><text 858 style="fill:none;stroke:#3465a4" /><text
859 class="TextShape" 859 class="TextShape"
860 id="text596"><tspan 860 id="text596"><tspan
861 class="TextParagraph" 861 class="TextParagraph"
862 font-size="635px" 862 font-size="635px"
863 font-weight="400" 863 font-weight="400"
864 id="tspan598" 864 id="tspan598"
865 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 865 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
866 class="TextPosition" 866 class="TextPosition"
867 x="13749" 867 x="13749"
868 y="8321" 868 y="8321"
869 id="tspan600"><tspan 869 id="tspan600"><tspan
870 id="tspan602" 870 id="tspan602"
871 style="fill:#000000;stroke:none">22</tspan></tspan></tspan></text> 871 style="fill:#000000;stroke:none">22</tspan></tspan></tspan></text>
872</g></g><g 872</g></g><g
873 class="com.sun.star.drawing.CustomShape" 873 class="com.sun.star.drawing.CustomShape"
874 id="g604" 874 id="g604"
875 transform="translate(-3285.889,-3185.889)"><g 875 transform="translate(-3285.889,-3185.889)"><g
876 id="id38"><rect 876 id="id38"><rect
877 class="BoundingBox" 877 class="BoundingBox"
878 x="3299" 878 x="3299"
879 y="8799" 879 y="8799"
880 width="2403" 880 width="2403"
881 height="1403" 881 height="1403"
882 id="rect607" 882 id="rect607"
883 style="fill:none;stroke:none" /><path 883 style="fill:none;stroke:none" /><path
884 d="m 4500,10200 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 884 d="m 4500,10200 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
885 id="path609" 885 id="path609"
886 inkscape:connector-curvature="0" 886 inkscape:connector-curvature="0"
887 style="fill:none;stroke:#3465a4" /><text 887 style="fill:none;stroke:#3465a4" /><text
888 class="TextShape" 888 class="TextShape"
889 id="text611"><tspan 889 id="text611"><tspan
890 class="TextParagraph" 890 class="TextParagraph"
891 font-size="635px" 891 font-size="635px"
892 font-weight="400" 892 font-weight="400"
893 id="tspan613" 893 id="tspan613"
894 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 894 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
895 class="TextPosition" 895 class="TextPosition"
896 x="4149" 896 x="4149"
897 y="9721" 897 y="9721"
898 id="tspan615"><tspan 898 id="tspan615"><tspan
899 id="tspan617" 899 id="tspan617"
900 style="fill:#000000;stroke:none">24</tspan></tspan></tspan></text> 900 style="fill:#000000;stroke:none">24</tspan></tspan></tspan></text>
901</g></g><g 901</g></g><g
902 class="com.sun.star.drawing.CustomShape" 902 class="com.sun.star.drawing.CustomShape"
903 id="g619" 903 id="g619"
904 transform="translate(-3285.889,-3185.889)"><g 904 transform="translate(-3285.889,-3185.889)"><g
905 id="id39"><rect 905 id="id39"><rect
906 class="BoundingBox" 906 class="BoundingBox"
907 x="5699" 907 x="5699"
908 y="8799" 908 y="8799"
909 width="2403" 909 width="2403"
910 height="1403" 910 height="1403"
911 id="rect622" 911 id="rect622"
912 style="fill:none;stroke:none" /><path 912 style="fill:none;stroke:none" /><path
913 d="m 6900,10200 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 913 d="m 6900,10200 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
914 id="path624" 914 id="path624"
915 inkscape:connector-curvature="0" 915 inkscape:connector-curvature="0"
916 style="fill:none;stroke:#3465a4" /></g></g><g 916 style="fill:none;stroke:#3465a4" /></g></g><g
917 class="com.sun.star.drawing.CustomShape" 917 class="com.sun.star.drawing.CustomShape"
918 id="g626" 918 id="g626"
919 transform="translate(-3285.889,-3185.889)"><g 919 transform="translate(-3285.889,-3185.889)"><g
920 id="id40"><rect 920 id="id40"><rect
921 class="BoundingBox" 921 class="BoundingBox"
922 x="8099" 922 x="8099"
923 y="8799" 923 y="8799"
924 width="2403" 924 width="2403"
925 height="1403" 925 height="1403"
926 id="rect629" 926 id="rect629"
927 style="fill:none;stroke:none" /><path 927 style="fill:none;stroke:none" /><path
928 d="m 9300,10200 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 928 d="m 9300,10200 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
929 id="path631" 929 id="path631"
930 inkscape:connector-curvature="0" 930 inkscape:connector-curvature="0"
931 style="fill:none;stroke:#3465a4" /><text 931 style="fill:none;stroke:#3465a4" /><text
932 class="TextShape" 932 class="TextShape"
933 id="text633"><tspan 933 id="text633"><tspan
934 class="TextParagraph" 934 class="TextParagraph"
935 font-size="635px" 935 font-size="635px"
936 font-weight="400" 936 font-weight="400"
937 id="tspan635" 937 id="tspan635"
938 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 938 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
939 class="TextPosition" 939 class="TextPosition"
940 x="8949" 940 x="8949"
941 y="9721" 941 y="9721"
942 id="tspan637"><tspan 942 id="tspan637"><tspan
943 id="tspan639" 943 id="tspan639"
944 style="fill:#000000;stroke:none">26</tspan></tspan></tspan></text> 944 style="fill:#000000;stroke:none">26</tspan></tspan></tspan></text>
945</g></g><g 945</g></g><g
946 class="com.sun.star.drawing.CustomShape" 946 class="com.sun.star.drawing.CustomShape"
947 id="g641" 947 id="g641"
948 transform="translate(-3285.889,-3185.889)"><g 948 transform="translate(-3285.889,-3185.889)"><g
949 id="id41"><rect 949 id="id41"><rect
950 class="BoundingBox" 950 class="BoundingBox"
951 x="5699" 951 x="5699"
952 y="8799" 952 y="8799"
953 width="2403" 953 width="2403"
954 height="1403" 954 height="1403"
955 id="rect644" 955 id="rect644"
956 style="fill:none;stroke:none" /><path 956 style="fill:none;stroke:none" /><path
957 d="m 6900,10200 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 957 d="m 6900,10200 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
958 id="path646" 958 id="path646"
959 inkscape:connector-curvature="0" 959 inkscape:connector-curvature="0"
960 style="fill:none;stroke:#3465a4" /><text 960 style="fill:none;stroke:#3465a4" /><text
961 class="TextShape" 961 class="TextShape"
962 id="text648"><tspan 962 id="text648"><tspan
963 class="TextParagraph" 963 class="TextParagraph"
964 font-size="635px" 964 font-size="635px"
965 font-weight="400" 965 font-weight="400"
966 id="tspan650" 966 id="tspan650"
967 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 967 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
968 class="TextPosition" 968 class="TextPosition"
969 x="6549" 969 x="6549"
970 y="9721" 970 y="9721"
971 id="tspan652"><tspan 971 id="tspan652"><tspan
972 id="tspan654" 972 id="tspan654"
973 style="fill:#000000;stroke:none">25</tspan></tspan></tspan></text> 973 style="fill:#000000;stroke:none">25</tspan></tspan></tspan></text>
974</g></g><g 974</g></g><g
975 class="com.sun.star.drawing.CustomShape" 975 class="com.sun.star.drawing.CustomShape"
976 id="g656" 976 id="g656"
977 transform="translate(-3285.889,-3185.889)"><g 977 transform="translate(-3285.889,-3185.889)"><g
978 id="id42"><rect 978 id="id42"><rect
979 class="BoundingBox" 979 class="BoundingBox"
980 x="10499" 980 x="10499"
981 y="8799" 981 y="8799"
982 width="2403" 982 width="2403"
983 height="1403" 983 height="1403"
984 id="rect659" 984 id="rect659"
985 style="fill:none;stroke:none" /><path 985 style="fill:none;stroke:none" /><path
986 d="m 11700,10200 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 986 d="m 11700,10200 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
987 id="path661" 987 id="path661"
988 inkscape:connector-curvature="0" 988 inkscape:connector-curvature="0"
989 style="fill:none;stroke:#3465a4" /><text 989 style="fill:none;stroke:#3465a4" /><text
990 class="TextShape" 990 class="TextShape"
991 id="text663"><tspan 991 id="text663"><tspan
992 class="TextParagraph" 992 class="TextParagraph"
993 font-size="635px" 993 font-size="635px"
994 font-weight="400" 994 font-weight="400"
995 id="tspan665" 995 id="tspan665"
996 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 996 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
997 class="TextPosition" 997 class="TextPosition"
998 x="11349" 998 x="11349"
999 y="9721" 999 y="9721"
1000 id="tspan667"><tspan 1000 id="tspan667"><tspan
1001 id="tspan669" 1001 id="tspan669"
1002 style="fill:#000000;stroke:none">27</tspan></tspan></tspan></text> 1002 style="fill:#000000;stroke:none">27</tspan></tspan></tspan></text>
1003</g></g><g 1003</g></g><g
1004 class="com.sun.star.drawing.CustomShape" 1004 class="com.sun.star.drawing.CustomShape"
1005 id="g671" 1005 id="g671"
1006 transform="translate(-3285.889,-3185.889)"><g 1006 transform="translate(-3285.889,-3185.889)"><g
1007 id="id43"><rect 1007 id="id43"><rect
1008 class="BoundingBox" 1008 class="BoundingBox"
1009 x="12899" 1009 x="12899"
1010 y="8799" 1010 y="8799"
1011 width="2403" 1011 width="2403"
1012 height="1403" 1012 height="1403"
1013 id="rect674" 1013 id="rect674"
1014 style="fill:none;stroke:none" /><path 1014 style="fill:none;stroke:none" /><path
1015 d="m 14100,10200 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 1015 d="m 14100,10200 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
1016 id="path676" 1016 id="path676"
1017 inkscape:connector-curvature="0" 1017 inkscape:connector-curvature="0"
1018 style="fill:none;stroke:#3465a4" /></g></g><g 1018 style="fill:none;stroke:#3465a4" /></g></g><g
1019 class="com.sun.star.drawing.CustomShape" 1019 class="com.sun.star.drawing.CustomShape"
1020 id="g678" 1020 id="g678"
1021 transform="translate(-3285.889,-3185.889)"><g 1021 transform="translate(-3285.889,-3185.889)"><g
1022 id="id44"><rect 1022 id="id44"><rect
1023 class="BoundingBox" 1023 class="BoundingBox"
1024 x="15299" 1024 x="15299"
1025 y="8799" 1025 y="8799"
1026 width="2403" 1026 width="2403"
1027 height="1403" 1027 height="1403"
1028 id="rect681" 1028 id="rect681"
1029 style="fill:none;stroke:none" /><path 1029 style="fill:none;stroke:none" /><path
1030 d="m 16500,10200 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 1030 d="m 16500,10200 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
1031 id="path683" 1031 id="path683"
1032 inkscape:connector-curvature="0" 1032 inkscape:connector-curvature="0"
1033 style="fill:none;stroke:#3465a4" /><text 1033 style="fill:none;stroke:#3465a4" /><text
1034 class="TextShape" 1034 class="TextShape"
1035 id="text685"><tspan 1035 id="text685"><tspan
1036 class="TextParagraph" 1036 class="TextParagraph"
1037 font-size="635px" 1037 font-size="635px"
1038 font-weight="400" 1038 font-weight="400"
1039 id="tspan687" 1039 id="tspan687"
1040 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 1040 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
1041 class="TextPosition" 1041 class="TextPosition"
1042 x="16149" 1042 x="16149"
1043 y="9721" 1043 y="9721"
1044 id="tspan689"><tspan 1044 id="tspan689"><tspan
1045 id="tspan691" 1045 id="tspan691"
1046 style="fill:#000000;stroke:none">29</tspan></tspan></tspan></text> 1046 style="fill:#000000;stroke:none">29</tspan></tspan></tspan></text>
1047</g></g><g 1047</g></g><g
1048 class="com.sun.star.drawing.CustomShape" 1048 class="com.sun.star.drawing.CustomShape"
1049 id="g693" 1049 id="g693"
1050 transform="translate(-3285.889,-3185.889)"><g 1050 transform="translate(-3285.889,-3185.889)"><g
1051 id="id45"><rect 1051 id="id45"><rect
1052 class="BoundingBox" 1052 class="BoundingBox"
1053 x="12899" 1053 x="12899"
1054 y="8799" 1054 y="8799"
1055 width="2403" 1055 width="2403"
1056 height="1403" 1056 height="1403"
1057 id="rect696" 1057 id="rect696"
1058 style="fill:none;stroke:none" /><path 1058 style="fill:none;stroke:none" /><path
1059 d="m 14100,10200 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z" 1059 d="m 14100,10200 -1200,0 0,-1400 2400,0 0,1400 -1200,0 z"
1060 id="path698" 1060 id="path698"
1061 inkscape:connector-curvature="0" 1061 inkscape:connector-curvature="0"
1062 style="fill:none;stroke:#3465a4" /><text 1062 style="fill:none;stroke:#3465a4" /><text
1063 class="TextShape" 1063 class="TextShape"
1064 id="text700"><tspan 1064 id="text700"><tspan
1065 class="TextParagraph" 1065 class="TextParagraph"
1066 font-size="635px" 1066 font-size="635px"
1067 font-weight="400" 1067 font-weight="400"
1068 id="tspan702" 1068 id="tspan702"
1069 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan 1069 style="font-weight:400;font-size:635px;font-family:sans-serif"><tspan
1070 class="TextPosition" 1070 class="TextPosition"
1071 x="13749" 1071 x="13749"
1072 y="9721" 1072 y="9721"
1073 id="tspan704"><tspan 1073 id="tspan704"><tspan
1074 id="tspan706" 1074 id="tspan706"
1075 style="fill:#000000;stroke:none">28</tspan></tspan></tspan></text> 1075 style="fill:#000000;stroke:none">28</tspan></tspan></tspan></text>
1076</g></g><g 1076</g></g><g
1077 class="com.sun.star.drawing.LineShape" 1077 class="com.sun.star.drawing.LineShape"
1078 id="g708" 1078 id="g708"
1079 transform="translate(-3285.889,-3185.889)"><g 1079 transform="translate(-3285.889,-3185.889)"><g
1080 id="id46"><rect 1080 id="id46"><rect
1081 class="BoundingBox" 1081 class="BoundingBox"
1082 x="5199" 1082 x="5199"
1083 y="3850" 1083 y="3850"
1084 width="1402" 1084 width="1402"
1085 height="301" 1085 height="301"
1086 id="rect711" 1086 id="rect711"
1087 style="fill:none;stroke:none" /><path 1087 style="fill:none;stroke:none" /><path
1088 d="m 5200,4000 970,0" 1088 d="m 5200,4000 970,0"
1089 id="path713" 1089 id="path713"
1090 inkscape:connector-curvature="0" 1090 inkscape:connector-curvature="0"
1091 style="fill:none;stroke:#ff3333" /><path 1091 style="fill:none;stroke:#ff3333" /><path
1092 d="m 6600,4000 -450,-150 0,300 450,-150 z" 1092 d="m 6600,4000 -450,-150 0,300 450,-150 z"
1093 id="path715" 1093 id="path715"
1094 inkscape:connector-curvature="0" 1094 inkscape:connector-curvature="0"
1095 style="fill:#ff3333;stroke:none" /></g></g><g 1095 style="fill:#ff3333;stroke:none" /></g></g><g
1096 class="com.sun.star.drawing.LineShape" 1096 class="com.sun.star.drawing.LineShape"
1097 id="g717" 1097 id="g717"
1098 transform="translate(-3285.889,-3185.889)"><g 1098 transform="translate(-3285.889,-3185.889)"><g
1099 id="id47"><rect 1099 id="id47"><rect
1100 class="BoundingBox" 1100 class="BoundingBox"
1101 x="5000" 1101 x="5000"
1102 y="4299" 1102 y="4299"
1103 width="1202" 1103 width="1202"
1104 height="802" 1104 height="802"
1105 id="rect720" 1105 id="rect720"
1106 style="fill:none;stroke:none" /><path 1106 style="fill:none;stroke:none" /><path
1107 d="m 6200,4300 -842,561" 1107 d="m 6200,4300 -842,561"
1108 id="path722" 1108 id="path722"
1109 inkscape:connector-curvature="0" 1109 inkscape:connector-curvature="0"
1110 style="fill:none;stroke:#ff3333" /><path 1110 style="fill:none;stroke:#ff3333" /><path
1111 d="m 5000,5100 458,-125 -167,-249 -291,374 z" 1111 d="m 5000,5100 458,-125 -167,-249 -291,374 z"
1112 id="path724" 1112 id="path724"
1113 inkscape:connector-curvature="0" 1113 inkscape:connector-curvature="0"
1114 style="fill:#ff3333;stroke:none" /></g></g><g 1114 style="fill:#ff3333;stroke:none" /></g></g><g
1115 class="com.sun.star.drawing.LineShape" 1115 class="com.sun.star.drawing.LineShape"
1116 id="g726" 1116 id="g726"
1117 transform="translate(-3285.889,-3185.889)"><g 1117 transform="translate(-3285.889,-3185.889)"><g
1118 id="id48"><rect 1118 id="id48"><rect
1119 class="BoundingBox" 1119 class="BoundingBox"
1120 x="5399" 1120 x="5399"
1121 y="5250" 1121 y="5250"
1122 width="1202" 1122 width="1202"
1123 height="301" 1123 height="301"
1124 id="rect729" 1124 id="rect729"
1125 style="fill:none;stroke:none" /><path 1125 style="fill:none;stroke:none" /><path
1126 d="m 5400,5400 770,0" 1126 d="m 5400,5400 770,0"
1127 id="path731" 1127 id="path731"
1128 inkscape:connector-curvature="0" 1128 inkscape:connector-curvature="0"
1129 style="fill:none;stroke:#ff3333" /><path 1129 style="fill:none;stroke:#ff3333" /><path
1130 d="m 6600,5400 -450,-150 0,300 450,-150 z" 1130 d="m 6600,5400 -450,-150 0,300 450,-150 z"
1131 id="path733" 1131 id="path733"
1132 inkscape:connector-curvature="0" 1132 inkscape:connector-curvature="0"
1133 style="fill:#ff3333;stroke:none" /></g></g><g 1133 style="fill:#ff3333;stroke:none" /></g></g><g
1134 class="com.sun.star.drawing.LineShape" 1134 class="com.sun.star.drawing.LineShape"
1135 id="g735" 1135 id="g735"
1136 transform="translate(-3285.889,-3185.889)"><g 1136 transform="translate(-3285.889,-3185.889)"><g
1137 id="id49"><rect 1137 id="id49"><rect
1138 class="BoundingBox" 1138 class="BoundingBox"
1139 x="7599" 1139 x="7599"
1140 y="5250" 1140 y="5250"
1141 width="1202" 1141 width="1202"
1142 height="301" 1142 height="301"
1143 id="rect738" 1143 id="rect738"
1144 style="fill:none;stroke:none" /><path 1144 style="fill:none;stroke:none" /><path
1145 d="m 7600,5400 770,0" 1145 d="m 7600,5400 770,0"
1146 id="path740" 1146 id="path740"
1147 inkscape:connector-curvature="0" 1147 inkscape:connector-curvature="0"
1148 style="fill:none;stroke:#ff3333" /><path 1148 style="fill:none;stroke:#ff3333" /><path
1149 d="m 8800,5400 -450,-150 0,300 450,-150 z" 1149 d="m 8800,5400 -450,-150 0,300 450,-150 z"
1150 id="path742" 1150 id="path742"
1151 inkscape:connector-curvature="0" 1151 inkscape:connector-curvature="0"
1152 style="fill:#ff3333;stroke:none" /></g></g><g 1152 style="fill:#ff3333;stroke:none" /></g></g><g
1153 class="com.sun.star.drawing.LineShape" 1153 class="com.sun.star.drawing.LineShape"
1154 id="g744" 1154 id="g744"
1155 transform="translate(-3285.889,-3185.889)"><g 1155 transform="translate(-3285.889,-3185.889)"><g
1156 id="id50"><rect 1156 id="id50"><rect
1157 class="BoundingBox" 1157 class="BoundingBox"
1158 x="9799" 1158 x="9799"
1159 y="5250" 1159 y="5250"
1160 width="1402" 1160 width="1402"
1161 height="301" 1161 height="301"
1162 id="rect747" 1162 id="rect747"
1163 style="fill:none;stroke:none" /><path 1163 style="fill:none;stroke:none" /><path
1164 d="m 9800,5400 970,0" 1164 d="m 9800,5400 970,0"
1165 id="path749" 1165 id="path749"
1166 inkscape:connector-curvature="0" 1166 inkscape:connector-curvature="0"
1167 style="fill:none;stroke:#ff3333" /><path 1167 style="fill:none;stroke:#ff3333" /><path
1168 d="m 11200,5400 -450,-150 0,300 450,-150 z" 1168 d="m 11200,5400 -450,-150 0,300 450,-150 z"
1169 id="path751" 1169 id="path751"
1170 inkscape:connector-curvature="0" 1170 inkscape:connector-curvature="0"
1171 style="fill:#ff3333;stroke:none" /></g></g><g 1171 style="fill:#ff3333;stroke:none" /></g></g><g
1172 class="com.sun.star.drawing.LineShape" 1172 class="com.sun.star.drawing.LineShape"
1173 id="g753" 1173 id="g753"
1174 transform="translate(-3285.889,-3185.889)"><g 1174 transform="translate(-3285.889,-3185.889)"><g
1175 id="id51"><rect 1175 id="id51"><rect
1176 class="BoundingBox" 1176 class="BoundingBox"
1177 x="9900" 1177 x="9900"
1178 y="4200" 1178 y="4200"
1179 width="1202" 1179 width="1202"
1180 height="802" 1180 height="802"
1181 id="rect756" 1181 id="rect756"
1182 style="fill:none;stroke:none" /><path 1182 style="fill:none;stroke:none" /><path
1183 d="m 11100,5000 -842,-561" 1183 d="m 11100,5000 -842,-561"
1184 id="path758" 1184 id="path758"
1185 inkscape:connector-curvature="0" 1185 inkscape:connector-curvature="0"
1186 style="fill:none;stroke:#ff3333" /><path 1186 style="fill:none;stroke:#ff3333" /><path
1187 d="m 9900,4200 291,374 167,-249 -458,-125 z" 1187 d="m 9900,4200 291,374 167,-249 -458,-125 z"
1188 id="path760" 1188 id="path760"
1189 inkscape:connector-curvature="0" 1189 inkscape:connector-curvature="0"
1190 style="fill:#ff3333;stroke:none" /></g></g><g 1190 style="fill:#ff3333;stroke:none" /></g></g><g
1191 class="com.sun.star.drawing.LineShape" 1191 class="com.sun.star.drawing.LineShape"
1192 id="g762" 1192 id="g762"
1193 transform="translate(-3285.889,-3185.889)"><g 1193 transform="translate(-3285.889,-3185.889)"><g
1194 id="id52"><rect 1194 id="id52"><rect
1195 class="BoundingBox" 1195 class="BoundingBox"
1196 x="9999" 1196 x="9999"
1197 y="3850" 1197 y="3850"
1198 width="1402" 1198 width="1402"
1199 height="301" 1199 height="301"
1200 id="rect765" 1200 id="rect765"
1201 style="fill:none;stroke:none" /><path 1201 style="fill:none;stroke:none" /><path
1202 d="m 10000,4000 970,0" 1202 d="m 10000,4000 970,0"
1203 id="path767" 1203 id="path767"
1204 inkscape:connector-curvature="0" 1204 inkscape:connector-curvature="0"
1205 style="fill:none;stroke:#ff3333" /><path 1205 style="fill:none;stroke:#ff3333" /><path
1206 d="m 11400,4000 -450,-150 0,300 450,-150 z" 1206 d="m 11400,4000 -450,-150 0,300 450,-150 z"
1207 id="path769" 1207 id="path769"
1208 inkscape:connector-curvature="0" 1208 inkscape:connector-curvature="0"
1209 style="fill:#ff3333;stroke:none" /></g></g><g 1209 style="fill:#ff3333;stroke:none" /></g></g><g
1210 class="com.sun.star.drawing.LineShape" 1210 class="com.sun.star.drawing.LineShape"
1211 id="g771" 1211 id="g771"
1212 transform="translate(-3285.889,-3185.889)"><g 1212 transform="translate(-3285.889,-3185.889)"><g
1213 id="id53"><rect 1213 id="id53"><rect
1214 class="BoundingBox" 1214 class="BoundingBox"
1215 x="12399" 1215 x="12399"
1216 y="3850" 1216 y="3850"
1217 width="1202" 1217 width="1202"
1218 height="301" 1218 height="301"
1219 id="rect774" 1219 id="rect774"
1220 style="fill:none;stroke:none" /><path 1220 style="fill:none;stroke:none" /><path
1221 d="m 12400,4000 770,0" 1221 d="m 12400,4000 770,0"
1222 id="path776" 1222 id="path776"
1223 inkscape:connector-curvature="0" 1223 inkscape:connector-curvature="0"
1224 style="fill:none;stroke:#ff3333" /><path 1224 style="fill:none;stroke:#ff3333" /><path
1225 d="m 13600,4000 -450,-150 0,300 450,-150 z" 1225 d="m 13600,4000 -450,-150 0,300 450,-150 z"
1226 id="path778" 1226 id="path778"
1227 inkscape:connector-curvature="0" 1227 inkscape:connector-curvature="0"
1228 style="fill:#ff3333;stroke:none" /></g></g><g 1228 style="fill:#ff3333;stroke:none" /></g></g><g
1229 class="com.sun.star.drawing.LineShape" 1229 class="com.sun.star.drawing.LineShape"
1230 id="g780" 1230 id="g780"
1231 transform="translate(-3285.889,-3185.889)"><g 1231 transform="translate(-3285.889,-3185.889)"><g
1232 id="id54"><rect 1232 id="id54"><rect
1233 class="BoundingBox" 1233 class="BoundingBox"
1234 x="14799" 1234 x="14799"
1235 y="3850" 1235 y="3850"
1236 width="1202" 1236 width="1202"
1237 height="301" 1237 height="301"
1238 id="rect783" 1238 id="rect783"
1239 style="fill:none;stroke:none" /><path 1239 style="fill:none;stroke:none" /><path
1240 d="m 14800,4000 770,0" 1240 d="m 14800,4000 770,0"
1241 id="path785" 1241 id="path785"
1242 inkscape:connector-curvature="0" 1242 inkscape:connector-curvature="0"
1243 style="fill:none;stroke:#ff3333" /><path 1243 style="fill:none;stroke:#ff3333" /><path
1244 d="m 16000,4000 -450,-150 0,300 450,-150 z" 1244 d="m 16000,4000 -450,-150 0,300 450,-150 z"
1245 id="path787" 1245 id="path787"
1246 inkscape:connector-curvature="0" 1246 inkscape:connector-curvature="0"
1247 style="fill:#ff3333;stroke:none" /></g></g><g 1247 style="fill:#ff3333;stroke:none" /></g></g><g
1248 class="com.sun.star.drawing.LineShape" 1248 class="com.sun.star.drawing.LineShape"
1249 id="g789" 1249 id="g789"
1250 transform="translate(-3285.889,-3185.889)"><g 1250 transform="translate(-3285.889,-3185.889)"><g
1251 id="id55"><rect 1251 id="id55"><rect
1252 class="BoundingBox" 1252 class="BoundingBox"
1253 x="14400" 1253 x="14400"
1254 y="4399" 1254 y="4399"
1255 width="1402" 1255 width="1402"
1256 height="602" 1256 height="602"
1257 id="rect792" 1257 id="rect792"
1258 style="fill:none;stroke:none" /><path 1258 style="fill:none;stroke:none" /><path
1259 d="m 15800,4400 -1005,431" 1259 d="m 15800,4400 -1005,431"
1260 id="path794" 1260 id="path794"
1261 inkscape:connector-curvature="0" 1261 inkscape:connector-curvature="0"
1262 style="fill:none;stroke:#ff3333" /><path 1262 style="fill:none;stroke:#ff3333" /><path
1263 d="m 14400,5000 473,-39 -118,-276 -355,315 z" 1263 d="m 14400,5000 473,-39 -118,-276 -355,315 z"
1264 id="path796" 1264 id="path796"
1265 inkscape:connector-curvature="0" 1265 inkscape:connector-curvature="0"
1266 style="fill:#ff3333;stroke:none" /></g></g><g 1266 style="fill:#ff3333;stroke:none" /></g></g><g
1267 class="com.sun.star.drawing.LineShape" 1267 class="com.sun.star.drawing.LineShape"
1268 id="g798" 1268 id="g798"
1269 transform="translate(-3285.889,-3185.889)"><g 1269 transform="translate(-3285.889,-3185.889)"><g
1270 id="id56"><rect 1270 id="id56"><rect
1271 class="BoundingBox" 1271 class="BoundingBox"
1272 x="14599" 1272 x="14599"
1273 y="5250" 1273 y="5250"
1274 width="1402" 1274 width="1402"
1275 height="301" 1275 height="301"
1276 id="rect801" 1276 id="rect801"
1277 style="fill:none;stroke:none" /><path 1277 style="fill:none;stroke:none" /><path
1278 d="m 14600,5400 970,0" 1278 d="m 14600,5400 970,0"
1279 id="path803" 1279 id="path803"
1280 inkscape:connector-curvature="0" 1280 inkscape:connector-curvature="0"
1281 style="fill:none;stroke:#ff3333" /><path 1281 style="fill:none;stroke:#ff3333" /><path
1282 d="m 16000,5400 -450,-150 0,300 450,-150 z" 1282 d="m 16000,5400 -450,-150 0,300 450,-150 z"
1283 id="path805" 1283 id="path805"
1284 inkscape:connector-curvature="0" 1284 inkscape:connector-curvature="0"
1285 style="fill:#ff3333;stroke:none" /></g></g><g 1285 style="fill:#ff3333;stroke:none" /></g></g><g
1286 class="com.sun.star.drawing.LineShape" 1286 class="com.sun.star.drawing.LineShape"
1287 id="g807" 1287 id="g807"
1288 transform="translate(-3285.889,-3185.889)"><g 1288 transform="translate(-3285.889,-3185.889)"><g
1289 id="id57"><rect 1289 id="id57"><rect
1290 class="BoundingBox" 1290 class="BoundingBox"
1291 x="5199" 1291 x="5199"
1292 y="6550" 1292 y="6550"
1293 width="1402" 1293 width="1402"
1294 height="301" 1294 height="301"
1295 id="rect810" 1295 id="rect810"
1296 style="fill:none;stroke:none" /><path 1296 style="fill:none;stroke:none" /><path
1297 d="m 5200,6700 970,0" 1297 d="m 5200,6700 970,0"
1298 id="path812" 1298 id="path812"
1299 inkscape:connector-curvature="0" 1299 inkscape:connector-curvature="0"
1300 style="fill:none;stroke:#ff3333" /><path 1300 style="fill:none;stroke:#ff3333" /><path
1301 d="m 6600,6700 -450,-150 0,300 450,-150 z" 1301 d="m 6600,6700 -450,-150 0,300 450,-150 z"
1302 id="path814" 1302 id="path814"
1303 inkscape:connector-curvature="0" 1303 inkscape:connector-curvature="0"
1304 style="fill:#ff3333;stroke:none" /></g></g><g 1304 style="fill:#ff3333;stroke:none" /></g></g><g
1305 class="com.sun.star.drawing.LineShape" 1305 class="com.sun.star.drawing.LineShape"
1306 id="g816" 1306 id="g816"
1307 transform="translate(-3285.889,-3129.4446)"><g 1307 transform="translate(-3285.889,-3129.4446)"><g
1308 id="id58"><rect 1308 id="id58"><rect
1309 class="BoundingBox" 1309 class="BoundingBox"
1310 x="5000" 1310 x="5000"
1311 y="6999" 1311 y="6999"
1312 width="1202" 1312 width="1202"
1313 height="802" 1313 height="802"
1314 id="rect819" 1314 id="rect819"
1315 style="fill:none;stroke:none" /><path 1315 style="fill:none;stroke:none" /><path
1316 d="m 6200,7000 -842,561" 1316 d="m 6200,7000 -842,561"
1317 id="path821" 1317 id="path821"
1318 inkscape:connector-curvature="0" 1318 inkscape:connector-curvature="0"
1319 style="fill:none;stroke:#ff3333" /><path 1319 style="fill:none;stroke:#ff3333" /><path
1320 d="m 5000,7800 458,-125 -167,-249 -291,374 z" 1320 d="m 5000,7800 458,-125 -167,-249 -291,374 z"
1321 id="path823" 1321 id="path823"
1322 inkscape:connector-curvature="0" 1322 inkscape:connector-curvature="0"
1323 style="fill:#ff3333;stroke:none" /></g></g><g 1323 style="fill:#ff3333;stroke:none" /></g></g><g
1324 class="com.sun.star.drawing.LineShape" 1324 class="com.sun.star.drawing.LineShape"
1325 id="g825" 1325 id="g825"
1326 transform="translate(-3285.889,-3185.889)"><g 1326 transform="translate(-3285.889,-3185.889)"><g
1327 id="id59"><rect 1327 id="id59"><rect
1328 class="BoundingBox" 1328 class="BoundingBox"
1329 x="5399" 1329 x="5399"
1330 y="7950" 1330 y="7950"
1331 width="1202" 1331 width="1202"
1332 height="301" 1332 height="301"
1333 id="rect828" 1333 id="rect828"
1334 style="fill:none;stroke:none" /><path 1334 style="fill:none;stroke:none" /><path
1335 d="m 5400,8100 770,0" 1335 d="m 5400,8100 770,0"
1336 id="path830" 1336 id="path830"
1337 inkscape:connector-curvature="0" 1337 inkscape:connector-curvature="0"
1338 style="fill:none;stroke:#ff3333" /><path 1338 style="fill:none;stroke:#ff3333" /><path
1339 d="m 6600,8100 -450,-150 0,300 450,-150 z" 1339 d="m 6600,8100 -450,-150 0,300 450,-150 z"
1340 id="path832" 1340 id="path832"
1341 inkscape:connector-curvature="0" 1341 inkscape:connector-curvature="0"
1342 style="fill:#ff3333;stroke:none" /></g></g><g 1342 style="fill:#ff3333;stroke:none" /></g></g><g
1343 class="com.sun.star.drawing.LineShape" 1343 class="com.sun.star.drawing.LineShape"
1344 id="g834" 1344 id="g834"
1345 transform="translate(-3285.889,-3185.889)"><g 1345 transform="translate(-3285.889,-3185.889)"><g
1346 id="id60"><rect 1346 id="id60"><rect
1347 class="BoundingBox" 1347 class="BoundingBox"
1348 x="7599" 1348 x="7599"
1349 y="7950" 1349 y="7950"
1350 width="1202" 1350 width="1202"
1351 height="301" 1351 height="301"
1352 id="rect837" 1352 id="rect837"
1353 style="fill:none;stroke:none" /><path 1353 style="fill:none;stroke:none" /><path
1354 d="m 7600,8100 770,0" 1354 d="m 7600,8100 770,0"
1355 id="path839" 1355 id="path839"
1356 inkscape:connector-curvature="0" 1356 inkscape:connector-curvature="0"
1357 style="fill:none;stroke:#ff3333" /><path 1357 style="fill:none;stroke:#ff3333" /><path
1358 d="m 8800,8100 -450,-150 0,300 450,-150 z" 1358 d="m 8800,8100 -450,-150 0,300 450,-150 z"
1359 id="path841" 1359 id="path841"
1360 inkscape:connector-curvature="0" 1360 inkscape:connector-curvature="0"
1361 style="fill:#ff3333;stroke:none" /></g></g><g 1361 style="fill:#ff3333;stroke:none" /></g></g><g
1362 class="com.sun.star.drawing.LineShape" 1362 class="com.sun.star.drawing.LineShape"
1363 id="g843" 1363 id="g843"
1364 transform="translate(-3285.889,-3185.889)"><g 1364 transform="translate(-3285.889,-3185.889)"><g
1365 id="id61"><rect 1365 id="id61"><rect
1366 class="BoundingBox" 1366 class="BoundingBox"
1367 x="9799" 1367 x="9799"
1368 y="7950" 1368 y="7950"
1369 width="1402" 1369 width="1402"
1370 height="301" 1370 height="301"
1371 id="rect846" 1371 id="rect846"
1372 style="fill:none;stroke:none" /><path 1372 style="fill:none;stroke:none" /><path
1373 d="m 9800,8100 970,0" 1373 d="m 9800,8100 970,0"
1374 id="path848" 1374 id="path848"
1375 inkscape:connector-curvature="0" 1375 inkscape:connector-curvature="0"
1376 style="fill:none;stroke:#ff3333" /><path 1376 style="fill:none;stroke:#ff3333" /><path
1377 d="m 11200,8100 -450,-150 0,300 450,-150 z" 1377 d="m 11200,8100 -450,-150 0,300 450,-150 z"
1378 id="path850" 1378 id="path850"
1379 inkscape:connector-curvature="0" 1379 inkscape:connector-curvature="0"
1380 style="fill:#ff3333;stroke:none" /></g></g><g 1380 style="fill:#ff3333;stroke:none" /></g></g><g
1381 class="com.sun.star.drawing.LineShape" 1381 class="com.sun.star.drawing.LineShape"
1382 id="g852" 1382 id="g852"
1383 transform="translate(-3285.889,-3129.4446)"><g 1383 transform="translate(-3285.889,-3129.4446)"><g
1384 id="id62"><rect 1384 id="id62"><rect
1385 class="BoundingBox" 1385 class="BoundingBox"
1386 x="9900" 1386 x="9900"
1387 y="6900" 1387 y="6900"
1388 width="1202" 1388 width="1202"
1389 height="802" 1389 height="802"
1390 id="rect855" 1390 id="rect855"
1391 style="fill:none;stroke:none" /><path 1391 style="fill:none;stroke:none" /><path
1392 d="m 11100,7700 -842,-561" 1392 d="m 11100,7700 -842,-561"
1393 id="path857" 1393 id="path857"
1394 inkscape:connector-curvature="0" 1394 inkscape:connector-curvature="0"
1395 style="fill:none;stroke:#ff3333" /><path 1395 style="fill:none;stroke:#ff3333" /><path
1396 d="m 9900,6900 291,374 167,-249 -458,-125 z" 1396 d="m 9900,6900 291,374 167,-249 -458,-125 z"
1397 id="path859" 1397 id="path859"
1398 inkscape:connector-curvature="0" 1398 inkscape:connector-curvature="0"
1399 style="fill:#ff3333;stroke:none" /></g></g><g 1399 style="fill:#ff3333;stroke:none" /></g></g><g
1400 class="com.sun.star.drawing.LineShape" 1400 class="com.sun.star.drawing.LineShape"
1401 id="g861" 1401 id="g861"
1402 transform="translate(-3285.889,-3185.889)"><g 1402 transform="translate(-3285.889,-3185.889)"><g
1403 id="id63"><rect 1403 id="id63"><rect
1404 class="BoundingBox" 1404 class="BoundingBox"
1405 x="9999" 1405 x="9999"
1406 y="6550" 1406 y="6550"
1407 width="1402" 1407 width="1402"
1408 height="301" 1408 height="301"
1409 id="rect864" 1409 id="rect864"
1410 style="fill:none;stroke:none" /><path 1410 style="fill:none;stroke:none" /><path
1411 d="m 10000,6700 970,0" 1411 d="m 10000,6700 970,0"
1412 id="path866" 1412 id="path866"
1413 inkscape:connector-curvature="0" 1413 inkscape:connector-curvature="0"
1414 style="fill:none;stroke:#ff3333" /><path 1414 style="fill:none;stroke:#ff3333" /><path
1415 d="m 11400,6700 -450,-150 0,300 450,-150 z" 1415 d="m 11400,6700 -450,-150 0,300 450,-150 z"
1416 id="path868" 1416 id="path868"
1417 inkscape:connector-curvature="0" 1417 inkscape:connector-curvature="0"
1418 style="fill:#ff3333;stroke:none" /></g></g><g 1418 style="fill:#ff3333;stroke:none" /></g></g><g
1419 class="com.sun.star.drawing.LineShape" 1419 class="com.sun.star.drawing.LineShape"
1420 id="g870" 1420 id="g870"
1421 transform="translate(-3285.889,-3185.889)"><g 1421 transform="translate(-3285.889,-3185.889)"><g
1422 id="id64"><rect 1422 id="id64"><rect
1423 class="BoundingBox" 1423 class="BoundingBox"
1424 x="12399" 1424 x="12399"
1425 y="6550" 1425 y="6550"
1426 width="1202" 1426 width="1202"
1427 height="301" 1427 height="301"
1428 id="rect873" 1428 id="rect873"
1429 style="fill:none;stroke:none" /><path 1429 style="fill:none;stroke:none" /><path
1430 d="m 12400,6700 770,0" 1430 d="m 12400,6700 770,0"
1431 id="path875" 1431 id="path875"
1432 inkscape:connector-curvature="0" 1432 inkscape:connector-curvature="0"
1433 style="fill:none;stroke:#ff3333" /><path 1433 style="fill:none;stroke:#ff3333" /><path
1434 d="m 13600,6700 -450,-150 0,300 450,-150 z" 1434 d="m 13600,6700 -450,-150 0,300 450,-150 z"
1435 id="path877" 1435 id="path877"
1436 inkscape:connector-curvature="0" 1436 inkscape:connector-curvature="0"
1437 style="fill:#ff3333;stroke:none" /></g></g><g 1437 style="fill:#ff3333;stroke:none" /></g></g><g
1438 class="com.sun.star.drawing.LineShape" 1438 class="com.sun.star.drawing.LineShape"
1439 id="g879" 1439 id="g879"
1440 transform="translate(-3285.889,-3185.889)"><g 1440 transform="translate(-3285.889,-3185.889)"><g
1441 id="id65"><rect 1441 id="id65"><rect
1442 class="BoundingBox" 1442 class="BoundingBox"
1443 x="14799" 1443 x="14799"
1444 y="6550" 1444 y="6550"
1445 width="1202" 1445 width="1202"
1446 height="301" 1446 height="301"
1447 id="rect882" 1447 id="rect882"
1448 style="fill:none;stroke:none" /><path 1448 style="fill:none;stroke:none" /><path
1449 d="m 14800,6700 770,0" 1449 d="m 14800,6700 770,0"
1450 id="path884" 1450 id="path884"
1451 inkscape:connector-curvature="0" 1451 inkscape:connector-curvature="0"
1452 style="fill:none;stroke:#ff3333" /><path 1452 style="fill:none;stroke:#ff3333" /><path
1453 d="m 16000,6700 -450,-150 0,300 450,-150 z" 1453 d="m 16000,6700 -450,-150 0,300 450,-150 z"
1454 id="path886" 1454 id="path886"
1455 inkscape:connector-curvature="0" 1455 inkscape:connector-curvature="0"
1456 style="fill:#ff3333;stroke:none" /></g></g><g 1456 style="fill:#ff3333;stroke:none" /></g></g><g
1457 class="com.sun.star.drawing.LineShape" 1457 class="com.sun.star.drawing.LineShape"
1458 id="g888" 1458 id="g888"
1459 transform="translate(-3285.889,-3129.4446)"><g 1459 transform="translate(-3285.889,-3129.4446)"><g
1460 id="id66"><rect 1460 id="id66"><rect
1461 class="BoundingBox" 1461 class="BoundingBox"
1462 x="14400" 1462 x="14400"
1463 y="7099" 1463 y="7099"
1464 width="1402" 1464 width="1402"
1465 height="602" 1465 height="602"
1466 id="rect891" 1466 id="rect891"
1467 style="fill:none;stroke:none" /><path 1467 style="fill:none;stroke:none" /><path
1468 d="m 15800,7100 -1005,431" 1468 d="m 15800,7100 -1005,431"
1469 id="path893" 1469 id="path893"
1470 inkscape:connector-curvature="0" 1470 inkscape:connector-curvature="0"
1471 style="fill:none;stroke:#ff3333" /><path 1471 style="fill:none;stroke:#ff3333" /><path
1472 d="m 14400,7700 473,-39 -118,-276 -355,315 z" 1472 d="m 14400,7700 473,-39 -118,-276 -355,315 z"
1473 id="path895" 1473 id="path895"
1474 inkscape:connector-curvature="0" 1474 inkscape:connector-curvature="0"
1475 style="fill:#ff3333;stroke:none" /></g></g><g 1475 style="fill:#ff3333;stroke:none" /></g></g><g
1476 class="com.sun.star.drawing.LineShape" 1476 class="com.sun.star.drawing.LineShape"
1477 id="g897" 1477 id="g897"
1478 transform="translate(-3285.889,-3185.889)"><g 1478 transform="translate(-3285.889,-3185.889)"><g
1479 id="id67"><rect 1479 id="id67"><rect
1480 class="BoundingBox" 1480 class="BoundingBox"
1481 x="14599" 1481 x="14599"
1482 y="7950" 1482 y="7950"
1483 width="1402" 1483 width="1402"
1484 height="301" 1484 height="301"
1485 id="rect900" 1485 id="rect900"
1486 style="fill:none;stroke:none" /><path 1486 style="fill:none;stroke:none" /><path
1487 d="m 14600,8100 970,0" 1487 d="m 14600,8100 970,0"
1488 id="path902" 1488 id="path902"
1489 inkscape:connector-curvature="0" 1489 inkscape:connector-curvature="0"
1490 style="fill:none;stroke:#ff3333" /><path 1490 style="fill:none;stroke:#ff3333" /><path
1491 d="m 16000,8100 -450,-150 0,300 450,-150 z" 1491 d="m 16000,8100 -450,-150 0,300 450,-150 z"
1492 id="path904" 1492 id="path904"
1493 inkscape:connector-curvature="0" 1493 inkscape:connector-curvature="0"
1494 style="fill:#ff3333;stroke:none" /></g></g><g 1494 style="fill:#ff3333;stroke:none" /></g></g><g
1495 class="com.sun.star.drawing.LineShape" 1495 class="com.sun.star.drawing.LineShape"
1496 id="g906" 1496 id="g906"
1497 transform="translate(-3285.889,-3185.889)"><g 1497 transform="translate(-3285.889,-3185.889)"><g
1498 id="id68"><rect 1498 id="id68"><rect
1499 class="BoundingBox" 1499 class="BoundingBox"
1500 x="5399" 1500 x="5399"
1501 y="9450" 1501 y="9450"
1502 width="1202" 1502 width="1202"
1503 height="301" 1503 height="301"
1504 id="rect909" 1504 id="rect909"
1505 style="fill:none;stroke:none" /><path 1505 style="fill:none;stroke:none" /><path
1506 d="m 5400,9600 770,0" 1506 d="m 5400,9600 770,0"
1507 id="path911" 1507 id="path911"
1508 inkscape:connector-curvature="0" 1508 inkscape:connector-curvature="0"
1509 style="fill:none;stroke:#ff3333" /><path 1509 style="fill:none;stroke:#ff3333" /><path
1510 d="m 6600,9600 -450,-150 0,300 450,-150 z" 1510 d="m 6600,9600 -450,-150 0,300 450,-150 z"
1511 id="path913" 1511 id="path913"
1512 inkscape:connector-curvature="0" 1512 inkscape:connector-curvature="0"
1513 style="fill:#ff3333;stroke:none" /></g></g><g 1513 style="fill:#ff3333;stroke:none" /></g></g><g
1514 class="com.sun.star.drawing.LineShape" 1514 class="com.sun.star.drawing.LineShape"
1515 id="g915" 1515 id="g915"
1516 transform="translate(-3285.889,-3185.889)"><g 1516 transform="translate(-3285.889,-3185.889)"><g
1517 id="id69"><rect 1517 id="id69"><rect
1518 class="BoundingBox" 1518 class="BoundingBox"
1519 x="7599" 1519 x="7599"
1520 y="9450" 1520 y="9450"
1521 width="1202" 1521 width="1202"
1522 height="301" 1522 height="301"
1523 id="rect918" 1523 id="rect918"
1524 style="fill:none;stroke:none" /><path 1524 style="fill:none;stroke:none" /><path
1525 d="m 7600,9600 770,0" 1525 d="m 7600,9600 770,0"
1526 id="path920" 1526 id="path920"
1527 inkscape:connector-curvature="0" 1527 inkscape:connector-curvature="0"
1528 style="fill:none;stroke:#ff3333" /><path 1528 style="fill:none;stroke:#ff3333" /><path
1529 d="m 8800,9600 -450,-150 0,300 450,-150 z" 1529 d="m 8800,9600 -450,-150 0,300 450,-150 z"
1530 id="path922" 1530 id="path922"
1531 inkscape:connector-curvature="0" 1531 inkscape:connector-curvature="0"
1532 style="fill:#ff3333;stroke:none" /></g></g><g 1532 style="fill:#ff3333;stroke:none" /></g></g><g
1533 class="com.sun.star.drawing.LineShape" 1533 class="com.sun.star.drawing.LineShape"
1534 id="g924" 1534 id="g924"
1535 transform="translate(-3285.889,-3185.889)"><g 1535 transform="translate(-3285.889,-3185.889)"><g
1536 id="id70"><rect 1536 id="id70"><rect
1537 class="BoundingBox" 1537 class="BoundingBox"
1538 x="9999" 1538 x="9999"
1539 y="9450" 1539 y="9450"
1540 width="1202" 1540 width="1202"
1541 height="301" 1541 height="301"
1542 id="rect927" 1542 id="rect927"
1543 style="fill:none;stroke:none" /><path 1543 style="fill:none;stroke:none" /><path
1544 d="m 10000,9600 770,0" 1544 d="m 10000,9600 770,0"
1545 id="path929" 1545 id="path929"
1546 inkscape:connector-curvature="0" 1546 inkscape:connector-curvature="0"
1547 style="fill:none;stroke:#ff3333" /><path 1547 style="fill:none;stroke:#ff3333" /><path
1548 d="m 11200,9600 -450,-150 0,300 450,-150 z" 1548 d="m 11200,9600 -450,-150 0,300 450,-150 z"
1549 id="path931" 1549 id="path931"
1550 inkscape:connector-curvature="0" 1550 inkscape:connector-curvature="0"
1551 style="fill:#ff3333;stroke:none" /></g></g><g 1551 style="fill:#ff3333;stroke:none" /></g></g><g
1552 class="com.sun.star.drawing.LineShape" 1552 class="com.sun.star.drawing.LineShape"
1553 id="g933" 1553 id="g933"
1554 transform="translate(-3285.889,-3185.889)"><g 1554 transform="translate(-3285.889,-3185.889)"><g
1555 id="id71"><rect 1555 id="id71"><rect
1556 class="BoundingBox" 1556 class="BoundingBox"
1557 x="12399" 1557 x="12399"
1558 y="9450" 1558 y="9450"
1559 width="1202" 1559 width="1202"
1560 height="301" 1560 height="301"
1561 id="rect936" 1561 id="rect936"
1562 style="fill:none;stroke:none" /><path 1562 style="fill:none;stroke:none" /><path
1563 d="m 12400,9600 770,0" 1563 d="m 12400,9600 770,0"
1564 id="path938" 1564 id="path938"
1565 inkscape:connector-curvature="0" 1565 inkscape:connector-curvature="0"
1566 style="fill:none;stroke:#ff3333" /><path 1566 style="fill:none;stroke:#ff3333" /><path
1567 d="m 13600,9600 -450,-150 0,300 450,-150 z" 1567 d="m 13600,9600 -450,-150 0,300 450,-150 z"
1568 id="path940" 1568 id="path940"
1569 inkscape:connector-curvature="0" 1569 inkscape:connector-curvature="0"
1570 style="fill:#ff3333;stroke:none" /></g></g><g 1570 style="fill:#ff3333;stroke:none" /></g></g><g
1571 class="com.sun.star.drawing.LineShape" 1571 class="com.sun.star.drawing.LineShape"
1572 id="g942" 1572 id="g942"
1573 transform="translate(-3285.889,-3185.889)"><g 1573 transform="translate(-3285.889,-3185.889)"><g
1574 id="id72"><rect 1574 id="id72"><rect
1575 class="BoundingBox" 1575 class="BoundingBox"
1576 x="14799" 1576 x="14799"
1577 y="9450" 1577 y="9450"
1578 width="1202" 1578 width="1202"
1579 height="301" 1579 height="301"
1580 id="rect945" 1580 id="rect945"
1581 style="fill:none;stroke:none" /><path 1581 style="fill:none;stroke:none" /><path
1582 d="m 14800,9600 770,0" 1582 d="m 14800,9600 770,0"
1583 id="path947" 1583 id="path947"
1584 inkscape:connector-curvature="0" 1584 inkscape:connector-curvature="0"
1585 style="fill:none;stroke:#ff3333" /><path 1585 style="fill:none;stroke:#ff3333" /><path
1586 d="m 16000,9600 -450,-150 0,300 450,-150 z" 1586 d="m 16000,9600 -450,-150 0,300 450,-150 z"
1587 id="path949" 1587 id="path949"
1588 inkscape:connector-curvature="0" 1588 inkscape:connector-curvature="0"
1589 style="fill:#ff3333;stroke:none" /></g></g></svg> 1589 style="fill:#ff3333;stroke:none" /></g></g></svg>
diff --git a/Documentation/media/uapi/v4l/selection.svg b/Documentation/media/uapi/v4l/selection.svg
index d309187af967..a93e3b59786d 100644
--- a/Documentation/media/uapi/v4l/selection.svg
+++ b/Documentation/media/uapi/v4l/selection.svg
@@ -1,5812 +1,1151 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?> 1<?xml version="1.0" encoding="UTF-8"?>
2<!-- Created with Inkscape (http://www.inkscape.org/) --> 2<svg enable-background="new" version="1" viewBox="0 0 4226.3 1686.8" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3 3 <defs>
4<svg 4 <pattern id="ig" xlink:href="#ka" patternTransform="matrix(5.4432 0 0 10.1 1722.4 161.06)"/>
5 xmlns:osb="http://www.openswatchbook.org/uri/2009/osb" 5 <marker id="er" overflow="visible" orient="auto">
6 xmlns:dc="http://purl.org/dc/elements/1.1/" 6 <path d="m-1.2 0l-1 1 3.5-1-3.5-1 1 1z" fill="#f8d615" fill-rule="evenodd" stroke="#f8d615" stroke-width=".2pt"/>
7 xmlns:cc="http://creativecommons.org/ns#" 7 </marker>
8 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 8 <pattern id="ka" width="2" height="1" patternTransform="scale(10)" patternUnits="userSpaceOnUse">
9 xmlns:svg="http://www.w3.org/2000/svg" 9 <path d="M0-.5h1v2H0z" fill="#f815bb"/>
10 xmlns="http://www.w3.org/2000/svg" 10 </pattern>
11 xmlns:xlink="http://www.w3.org/1999/xlink" 11 <filter id="ep" x="-.085" y="-.366" width="1.169" height="1.732">
12 xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" 12 <feGaussianBlur stdDeviation="4.574"/>
13 xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" 13 </filter>
14 width="4226.3345" 14 <linearGradient id="n">
15 height="1686.8481" 15 <stop stop-color="#fff" offset="0"/>
16 id="svg2" 16 <stop stop-color="#fff" stop-opacity="0" offset="1"/>
17 sodipodi:version="0.32" 17 </linearGradient>
18 inkscape:version="0.91 r13725" 18 <linearGradient id="j">
19 sodipodi:docname="selection.svg" 19 <stop stop-color="#f9eed3" offset="0"/>
20 inkscape:output_extension="org.inkscape.output.svg.inkscape" 20 <stop stop-opacity="0" offset="1"/>
21 version="1.0" 21 </linearGradient>
22 style="display:inline;enable-background:new" 22 <linearGradient id="s">
23 inkscape:export-filename="/home/cheeseness/Documents/LCA09/mascot/tuz_final.png" 23 <stop stop-color="#283131" stop-opacity="0" offset="0"/>
24 inkscape:export-xdpi="100.03588" 24 <stop stop-color="#1e2424" offset=".5"/>
25 inkscape:export-ydpi="100.03588"> 25 <stop offset="1"/>
26 <sodipodi:namedview 26 </linearGradient>
27 id="base" 27 <linearGradient id="u">
28 pagecolor="#ffffff" 28 <stop stop-color="#cfc690" offset="0"/>
29 bordercolor="#666666" 29 <stop stop-color="#afa775" offset=".212"/>
30 borderopacity="1.0" 30 <stop stop-color="#615c3a" offset=".534"/>
31 gridtolerance="10000" 31 <stop offset=".765"/>
32 guidetolerance="10" 32 <stop stop-color="#403518" offset="1"/>
33 objecttolerance="10" 33 </linearGradient>
34 inkscape:pageopacity="0.0" 34 <radialGradient id="jd" cx="418.3" cy="342.48" r="131.45" gradientTransform="matrix(1.3957 .62111 -.42441 .95372 -15.062 -227.97)" gradientUnits="userSpaceOnUse">
35 inkscape:pageshadow="2" 35 <stop stop-color="#283131" offset="0"/>
36 inkscape:zoom="0.32297491" 36 <stop stop-color="#1e2424" offset=".5"/>
37 inkscape:cx="2113.1672" 37 <stop offset="1"/>
38 inkscape:cy="843.42407" 38 </radialGradient>
39 inkscape:document-units="px" 39 <filter id="iz" x="-.3" y="-.3" width="1.6" height="1.6">
40 inkscape:current-layer="layer16" 40 <feGaussianBlur stdDeviation="2"/>
41 showgrid="false" 41 </filter>
42 inkscape:window-width="1920" 42 <clipPath id="ea">
43 inkscape:window-height="997" 43 <path d="M179.64 267.36c-22.41 39.703-60.616 115.78-69.286 149.64-8.647 33.775-8.772 66.417-.357 86.429 8.36 19.882 26.164 35.633 40.714 41.429-.597-14.376 14.373-43.286 72.857-72.5 58.626-29.285 78.382-27.131 103.57-47.143 25.63-20.362 12.61-67.045 3.214-93.929-9.434-26.993-34.967-59.124-66.429-69.643-31.033-10.375-65.018-4.848-84.286 5.714z" fill="#f5ff04" fill-rule="evenodd"/>
44 inkscape:window-x="1920" 44 </clipPath>
45 inkscape:window-y="30" 45 <radialGradient id="iy" cx="275.44" cy="335.35" r="36.75" gradientTransform="matrix(.05911 2.687 -.72343 .01591 408.73 -424.56)" gradientUnits="userSpaceOnUse">
46 showguides="false" 46 <stop stop-color="#fff" offset="0"/>
47 inkscape:guide-bbox="true" 47 <stop stop-color="#fff" stop-opacity="0" offset="1"/>
48 units="mm" 48 </radialGradient>
49 inkscape:window-maximized="1" 49 <clipPath id="kb">
50 fit-margin-top="0" 50 <path d="m265.94 126.68l-18.767 168.86 174.11-73.121 61.954 88.659 57.884-31.99-37.534-180.06-237.64 27.649z" fill-rule="evenodd" stroke="#000" stroke-width=".9"/>
51 fit-margin-left="0" 51 </clipPath>
52 fit-margin-right="0" 52 <clipPath id="jz">
53 fit-margin-bottom="0" /> 53 <path d="M352.25 211.99c-3.804-25.264-16.81-50.638-17.157-75.525-.186-13.356 3.273-26.571 13.756-39.554 36.347-65.296 116.94-84.695 185.93-91.465 86.922-11.017 184.91 17.94 233.37 95.401 54.124 75.733 56.675 172.54 80.612 259.53 29.438 127.13 54.779 256.21 60.392 386.85-3.063 78.182-8.426 165.18-60.503 228.13-48.027 50.357-122.79 50.053-187.07 59.002-90.555 4.655-184.35-16.146-261.78-64.198-64.776-37.94-95.73-113.48-97.279-186.02-8.39-79.875 26.392-153.81 51.62-227.16 7.47-82.761 9.413-166.25 9.653-249.38-.837-32.195-7.09-63.817-11.546-95.609z" enable-background="accumulate" fill="#262f2f" fill-rule="evenodd" stroke="#000"/>
54 <defs 54 </clipPath>
55 id="defs4"> 55 <clipPath id="kd">
56 <pattern 56 <path d="M352.25 211.99c-3.804-25.264-16.81-50.638-17.157-75.525-.186-13.356 3.273-26.571 13.756-39.554 36.347-65.296 116.94-84.695 185.93-91.465 86.922-11.017 184.91 17.94 233.37 95.401 54.124 75.733 56.675 172.54 80.612 259.53 29.438 127.13 54.779 256.21 60.392 386.85-3.063 78.182-8.426 165.18-60.503 228.13-48.027 50.357-122.79 50.053-187.07 59.002-90.555 4.655-184.35-16.146-261.78-64.198-64.776-37.94-95.73-113.48-97.279-186.02-8.39-79.875 26.392-153.81 51.62-227.16 7.47-82.761 9.413-166.25 9.653-249.38-.837-32.195-7.09-63.817-11.546-95.609z" enable-background="accumulate" fill="#262f2f" fill-rule="evenodd" stroke="#000"/>
57 inkscape:collect="always" 57 </clipPath>
58 xlink:href="#Strips1_1" 58 <clipPath id="jx">
59 id="pattern5557" 59 <path d="M352.25 211.99c-3.804-25.264-16.81-50.638-17.157-75.525-.186-13.356 3.273-26.571 13.756-39.554 36.347-65.296 116.94-84.695 185.93-91.465 86.922-11.017 184.91 17.94 233.37 95.401 54.124 75.733 56.675 172.54 80.612 259.53 29.438 127.13 54.779 256.21 60.392 386.85-3.063 78.182-8.426 165.18-60.503 228.13-48.027 50.357-122.79 50.053-187.07 59.002-90.555 4.655-184.35-16.146-261.78-64.198-64.776-37.94-95.73-113.48-97.279-186.02-8.39-79.875 26.392-153.81 51.62-227.16 7.47-82.761 9.413-166.25 9.653-249.38-.837-32.195-7.09-63.817-11.546-95.609z" enable-background="accumulate" fill="#262f2f" fill-rule="evenodd" stroke="#000"/>
60 patternTransform="matrix(5.4431804,0,0,10.10048,1808.3554,-48.222348)" /> 60 </clipPath>
61 <marker 61 <clipPath id="en">
62 inkscape:stockid="Arrow1Send" 62 <path d="M352.25 211.99c-3.804-25.264-16.81-50.638-17.157-75.525-.186-13.356 3.273-26.571 13.756-39.554 36.347-65.296 116.94-84.695 185.93-91.465 86.922-11.017 184.91 17.94 233.37 95.401 54.124 75.733 56.675 172.54 80.612 259.53 29.438 127.13 54.779 256.21 60.392 386.85-3.063 78.182-8.426 165.18-60.503 228.13-48.027 50.357-122.79 50.053-187.07 59.002-90.555 4.655-184.35-16.146-261.78-64.198-64.776-37.94-95.73-113.48-97.279-186.02-8.39-79.875 26.392-153.81 51.62-227.16 7.47-82.761 9.413-166.25 9.653-249.38-.837-32.195-7.09-63.817-11.546-95.609z" enable-background="accumulate" fill="#262f2f" fill-rule="evenodd" stroke="#000"/>
63 orient="auto" 63 </clipPath>
64 refY="0" 64 <clipPath id="jw">
65 refX="0" 65 <path d="M821.64 477.89s22.619-6.507 35.743-5.873c13.123.634 30.642 1.939 43.709 12.186 13.067 10.248 25.068 27.14 34.112 58.37s1.698 99.252-6.176 143.35-28.265 106.11-45 140-49.798 77.495-60.569 89.876c-11.364 13.062-56.206 36.426-79.431 42.267 5.303-10.607 48.9-50.589 35-60.714-14.019-10.212-45.76 45.982-84.293 29.033 21.382-13.132 41.779-51.186 34.041-66.594-7.84-15.61-30.705 48.758-93.536 37.013 30.052-27.527 55.407-70.904 41.263-82.98-14.415-12.307-60.462 54.293-60.462 54.293s-2.822-41.7 13.773-68.607c16.639-26.978 79.653-81.615 99.553-111.7 19.9-30.088 33.613-66.009 42.135-92.518s15.801-77.1 15.801-77.1" enable-background="new" fill="#202020" fill-rule="evenodd" stroke="#000"/>
66 id="Arrow1Send" 66 </clipPath>
67 style="overflow:visible" 67 <clipPath id="kp">
68 inkscape:isstock="true"> 68 <path d="m366.89 504.13s-29.554 40.573-47.857 74.286-58.621 126.36-70.357 171.07c-11.759 44.803-62.5 123.57-62.5 123.57l76.071 18.214s11.807-12.823 31.071-46.071 60.357-138.57 60.357-138.57l13.214-202.5z" enable-background="accumulate" fill="#0f0f0f" fill-rule="evenodd" stroke="#000"/>
69 <path 69 </clipPath>
70 id="path7188" 70 <clipPath id="eo">
71 d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" 71 <path d="M569.03 1018.8c-4.286.714-27.628 3.618-57.857 10s-99.775 25.962-142.86 35.714-117.26 34.816-156.91 27.265c-39.648-7.55-89.516-64.408-89.516-64.408l4.286-94.286s85.886-16.201 112.14-33.571c26.257-17.37 45.582-49.666 59.286-71.429s32.857-71.429 32.857-71.429l238.57 262.14z" enable-background="accumulate" fill="#0b0b0b" fill-rule="evenodd" stroke="#000"/>
72 style="fill:#f8d615;fill-opacity:1;fill-rule:evenodd;stroke:#f8d615;stroke-width:1pt;stroke-opacity:1" 72 </clipPath>
73 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" 73 <filter id="kc" x="-.353" y="-.182" width="1.706" height="1.363">
74 inkscape:connector-curvature="0" /> 74 <feGaussianBlur stdDeviation="48.038"/>
75 </marker> 75 </filter>
76 <pattern 76 <filter id="jb" x="-.611" y="-.149" width="2.223" height="1.299">
77 inkscape:isstock="true" 77 <feGaussianBlur stdDeviation="37.83"/>
78 inkscape:stockid="Stripes 1:1" 78 </filter>
79 id="Strips1_1" 79 <filter id="eg" x="-.235" y="-.245" width="1.47" height="1.49">
80 patternTransform="translate(0,0) scale(10,10)" 80 <feGaussianBlur stdDeviation="58.328"/>
81 height="1" 81 </filter>
82 width="2" 82 <filter id="jy" x="-.205" y="-.29" width="1.409" height="1.58">
83 patternUnits="userSpaceOnUse" 83 <feGaussianBlur stdDeviation="22.3"/>
84 inkscape:collect="always"> 84 </filter>
85 <rect 85 <filter id="jv" x="-.344" y="-.184" width="1.688" height="1.369">
86 id="rect5945" 86 <feGaussianBlur stdDeviation="34.542"/>
87 height="2" 87 </filter>
88 width="1" 88 <filter id="kf" x="-.274" y="-.213" width="1.549" height="1.427">
89 y="-0.5" 89 <feGaussianBlur stdDeviation="11.314"/>
90 x="0" 90 </filter>
91 style="fill:#f815bb;stroke:none" /> 91 <filter id="ja" x="-.259" y="-.224" width="1.518" height="1.447">
92 </pattern> 92 <feGaussianBlur stdDeviation="19.632"/>
93 <linearGradient 93 </filter>
94 id="linearGradient10954" 94 <filter id="kq" x="-.325" y="-.19" width="1.651" height="1.38">
95 osb:paint="solid"> 95 <feGaussianBlur stdDeviation="28.713"/>
96 <stop 96 </filter>
97 style="stop-color:#d9f90b;stop-opacity:1;" 97 <filter id="ko" x="-.381" y="-.175" width="1.762" height="1.35">
98 offset="0" 98 <feGaussianBlur stdDeviation="19.304"/>
99 id="stop10956" /> 99 </filter>
100 </linearGradient> 100 <filter id="kv" x="-.211" y="-.168" width="1.422" height="1.336">
101 <linearGradient 101 <feGaussianBlur stdDeviation="8.369"/>
102 id="linearGradient9165" 102 </filter>
103 osb:paint="solid"> 103 <filter id="ks" x="-.187" y="-.236" width="1.374" height="1.473">
104 <stop 104 <feGaussianBlur stdDeviation="31.212"/>
105 style="stop-color:#000000;stop-opacity:0.31330472;" 105 </filter>
106 offset="0" 106 <clipPath id="ju">
107 id="stop9167" /> 107 <path d="M352.25 211.99c-3.804-25.264-16.81-50.638-17.157-75.525-.186-13.356 3.273-26.571 13.756-39.554 36.347-65.296 116.94-84.695 185.93-91.465 86.922-11.017 184.91 17.94 233.37 95.401 54.124 75.733 56.675 172.54 80.612 259.53 29.438 127.13 54.779 256.21 60.392 386.85-3.063 78.182-8.426 165.18-60.503 228.13-48.027 50.357-122.79 50.053-187.07 59.002-90.555 4.655-184.35-16.146-261.78-64.198-64.776-37.94-95.73-113.48-97.279-186.02-8.39-79.875 26.392-153.81 51.62-227.16 7.47-82.761 9.413-166.25 9.653-249.38-.837-32.195-7.09-63.817-11.546-95.609z" enable-background="accumulate" fill="#262f2f" fill-rule="evenodd" stroke="#000"/>
108 </linearGradient> 108 </clipPath>
109 <filter 109 <filter id="ki" x="-.252" y="-.053" width="1.503" height="1.106">
110 inkscape:collect="always" 110 <feGaussianBlur stdDeviation="13.025"/>
111 x="-0.084654994" 111 </filter>
112 width="1.16931" 112 <linearGradient id="t" x1="603.84" x2="616.24" y1="627.85" y2="585.43" gradientTransform="translate(450.03 73.844)" gradientUnits="userSpaceOnUse">
113 y="-0.36592469" 113 <stop stop-color="#1a1a1a" offset="0"/>
114 height="1.7318494" 114 <stop stop-color="#1a1a1a" stop-opacity="0" offset="1"/>
115 id="filter11361"> 115 </linearGradient>
116 <feGaussianBlur 116 <filter id="dq" x="-.329" y="-.182" width="1.657" height="1.364">
117 inkscape:collect="always" 117 <feGaussianBlur stdDeviation="20.913"/>
118 stdDeviation="4.5740586" 118 </filter>
119 id="feGaussianBlur11363" /> 119 <filter id="dr" x="-.555" y="-.514" width="2.109" height="2.029">
120 </filter> 120 <feGaussianBlur stdDeviation="20.913"/>
121 <linearGradient 121 </filter>
122 id="linearGradient7622"> 122 <filter id="cy" x="-.326" y="-.845" width="1.653" height="2.691">
123 <stop 123 <feGaussianBlur stdDeviation="21.92"/>
124 style="stop-color:#ffffff;stop-opacity:1;" 124 </filter>
125 offset="0" 125 <filter id="he" x="-.409" y="-.715" width="1.818" height="2.431">
126 id="stop7624" /> 126 <feGaussianBlur stdDeviation="21.92"/>
127 <stop 127 </filter>
128 style="stop-color:#ffffff;stop-opacity:0;" 128 <filter id="o">
129 offset="1" 129 <feGaussianBlur stdDeviation="8.881"/>
130 id="stop7626" /> 130 </filter>
131 </linearGradient> 131 <clipPath id="jt">
132 <linearGradient 132 <path d="M647.61 540.05s22.619-6.507 35.743-5.873c13.123.634 30.642 1.939 43.709 12.186 13.067 10.248 25.068 27.14 34.112 58.37s1.698 99.252-6.176 143.35-28.265 106.11-45 140-49.798 77.495-60.569 89.876c-11.364 13.062-56.206 36.426-79.431 42.267 5.303-10.607 48.9-50.589 35-60.714-14.019-10.212-45.76 45.982-84.293 29.033 21.382-13.132 41.779-51.186 34.041-66.594-7.84-15.61-30.705 48.758-93.536 37.013 30.052-27.527 55.407-70.904 41.263-82.98-14.415-12.307-60.462 54.293-60.462 54.293s-2.822-41.7 13.773-68.607c16.639-26.978 79.653-81.615 99.553-111.7 19.9-30.088 33.613-66.009 42.135-92.518s15.801-77.1 15.801-77.1" enable-background="new" fill="#202020" fill-rule="evenodd"/>
133 id="linearGradient4113"> 133 </clipPath>
134 <stop 134 <filter id="je" x="-.277" y="-.325" width="1.554" height="1.65">
135 style="stop-color:#000000;stop-opacity:0;" 135 <feGaussianBlur stdDeviation="19.956"/>
136 offset="0" 136 </filter>
137 id="stop4115" /> 137 <clipPath id="e">
138 <stop 138 <path d="M760.16 935.83c6.794 18.903 10.494 33.3 11.89 51.212 1.397 17.912-3.783 51.801-2.9 70.656.881 18.845 8.133 40.099 27.345 48.969 19.419 8.966 49.319 10.211 74.12-3.146 24.8-13.357 57.4-70.326 70.974-97.309 13.624-27.084 38.76-114.5 44.66-149.77 5.9-35.27 2.551-41.3-4.617-49.055 2.64-27.84-1.5-54.935 13.11-87.186-30.249 11.826-37.382 40.161-48.319 65.505-8-50.933.21-71.273 3.319-101.22-29.065 14.778-42.862 47.114-45 92.857-10.924-1.304-21.391-4.434-33.571-.714-.264-46.023-1.464-76.889 8.91-114.21-53.254 21.027-62.946 106.59-56.052 112.78-10.883.535-21.371-1.297-32.857 2.857.638-42.57-.261-84.909-30-122.86 0 0-30.958 80.922-31.43 103.57s9.452 40.166 9.452 40.166-8.568 36.741-6.298 58.232c2.295 21.741 20.443 59.676 27.265 78.658z" enable-background="new" fill="#ada469" fill-rule="evenodd"/>
139 style="stop-color:#000000;stop-opacity:1;" 139 </clipPath>
140 offset="1" 140 <clipPath id="kr">
141 id="stop4117" /> 141 <path d="m366.89 504.13s-29.554 40.573-47.857 74.286-58.621 126.36-70.357 171.07c-11.759 44.803-62.5 123.57-62.5 123.57l76.071 18.214s11.807-12.823 31.071-46.071 60.357-138.57 60.357-138.57l13.214-202.5z" enable-background="accumulate" fill="#0f0f0f" fill-rule="evenodd"/>
142 </linearGradient> 142 </clipPath>
143 <linearGradient 143 <clipPath id="am">
144 inkscape:collect="always" 144 <path d="M586.13 997.99c6.794 18.903 10.494 33.3 11.89 51.212 1.397 17.912-3.783 51.801-2.9 70.656.881 18.845 8.133 40.099 27.345 48.969 19.419 8.966 49.319 10.211 74.12-3.146 24.8-13.357 57.4-70.326 70.974-97.309 13.624-27.084 38.76-114.5 44.66-149.77 5.9-35.27 2.551-41.3-4.617-49.055 2.64-27.84-1.5-54.935 13.11-87.186-30.249 11.826-37.382 40.161-48.319 65.505-8-50.933.21-71.273 3.319-101.22-29.065 14.778-42.862 47.114-45 92.857-10.924-1.304-21.391-4.434-33.571-.714-.264-46.023-1.464-76.889 8.91-114.21-53.254 21.027-62.946 106.59-56.052 112.78-10.883.535-21.371-1.297-32.857 2.857.638-42.57-.261-84.909-30-122.86 0 0-30.958 80.922-31.43 103.57s9.452 40.166 9.452 40.166-8.568 36.741-6.298 58.232c2.295 21.741 20.443 59.676 27.265 78.658z" enable-background="new" fill="#ada469" fill-rule="evenodd"/>
145 id="linearGradient3660"> 145 </clipPath>
146 <stop 146 <filter id="ds">
147 style="stop-color:#ffffff;stop-opacity:1;" 147 <feGaussianBlur stdDeviation="10.893"/>
148 offset="0" 148 </filter>
149 id="stop3662" /> 149 <filter id="bz" x="-.495" y="-.267" width="1.99" height="1.534">
150 <stop 150 <feGaussianBlur stdDeviation="10.731"/>
151 style="stop-color:#ffffff;stop-opacity:0;" 151 </filter>
152 offset="1" 152 <filter id="by" x="-.406" y="-.303" width="1.812" height="1.605">
153 id="stop3664" /> 153 <feGaussianBlur stdDeviation="9.859"/>
154 </linearGradient> 154 </filter>
155 <linearGradient 155 <clipPath id="cj">
156 id="linearGradient3627"> 156 <path d="M586.13 997.99c6.794 18.903 10.494 33.3 11.89 51.212 1.397 17.912-3.783 51.801-2.9 70.656.881 18.845 8.133 40.099 27.345 48.969 19.419 8.966 49.319 10.211 74.12-3.146 24.8-13.357 57.4-70.326 70.974-97.309 13.624-27.084 38.76-114.5 44.66-149.77 5.9-35.27 2.551-41.3-4.617-49.055 2.64-27.84-1.5-54.935 13.11-87.186-30.249 11.826-37.382 40.161-48.319 65.505-8-50.933.21-71.273 3.319-101.22-29.065 14.778-42.862 47.114-45 92.857-10.924-1.304-21.391-4.434-33.571-.714-.264-46.023-1.464-76.889 8.91-114.21-53.254 21.027-62.946 106.59-56.052 112.78-10.883.535-21.371-1.297-32.857 2.857.638-42.57-.261-84.909-30-122.86 0 0-30.958 80.922-31.43 103.57s9.452 40.166 9.452 40.166-8.568 36.741-6.298 58.232c2.295 21.741 20.443 59.676 27.265 78.658z" enable-background="new" fill="#ada469" fill-rule="evenodd"/>
157 <stop 157 </clipPath>
158 style="stop-color:#ffffff;stop-opacity:1;" 158 <filter id="il">
159 offset="0" 159 <feGaussianBlur stdDeviation="3.616"/>
160 id="stop3629" /> 160 </filter>
161 <stop 161 <filter id="ir">
162 style="stop-color:#000000;stop-opacity:1;" 162 <feGaussianBlur stdDeviation="3.864"/>
163 offset="1" 163 </filter>
164 id="stop3631" /> 164 <clipPath id="ku">
165 </linearGradient> 165 <path d="M569.03 1018.8c-4.286.714-27.628 3.618-57.857 10s-57.314 4.966-135.79 17.33c-79.852 12.581-94.064 42.542-108.12 47.064-14.7 4.729-145.38-65.822-145.38-65.822l4.286-94.286s85.886-16.201 112.14-33.571c26.257-17.37 45.582-49.666 59.286-71.429s32.857-71.429 32.857-71.429l238.57 262.14z" enable-background="accumulate" fill="#292929" fill-rule="evenodd" stroke="#000"/>
166 <linearGradient 166 </clipPath>
167 id="linearGradient2843"> 167 <linearGradient id="dt" x1="699.33" x2="698.98" y1="269.77" y2="346.14" gradientUnits="userSpaceOnUse">
168 <stop 168 <stop stop-color="#fff" offset="0"/>
169 id="stop2845" 169 <stop offset="1"/>
170 offset="0" 170 </linearGradient>
171 style="stop-color:#000000;stop-opacity:1;" /> 171 <mask id="jc" maskUnits="userSpaceOnUse">
172 <stop 172 <ellipse transform="translate(-174.03 62.156)" cx="579.47" cy="260.58" rx="192.69" ry="164.05" enable-background="accumulate" fill="url(#dt)"/>
173 style="stop-color:#000000;stop-opacity:1;" 173 </mask>
174 offset="0.02188784" 174 <clipPath id="is">
175 id="stop2847" /> 175 <path d="m266.27 924.57c-1.407 18.801-1.145 32.751 2.082 49.303s16.406 45.907 20.334 63.184c3.926 17.267 2.694 38.31-12.46 51.148-15.317 12.977-42.05 21.599-67.831 15.734s-69.55-49.223-88.59-70.228c-19.112-21.083-63.761-93.851-77.94-124.28-14.177-30.425-12.66-36.719-8.119-45.53-9.367-24.52-12.414-50.067-33.712-75.577 30.325 3.114 43.88 26.956 60.126 47.14-5.53-48.076-18.055-64.416-28.374-90.724 29.994 6.082 50.579 31.872 63.98 72.712 9.554-3.918 18.238-9.373 30.187-9.061-11.298-41.696-17.949-69.916-36.687-101.07 53.442 5.67 83.657 80.639 78.971 87.96 9.978-2.243 19.006-6.53 30.437-5.65-11.249-38.348-21.048-76.869-3.66-118.65 0 0 48.287 65.436 54.39 85.805 6.103 20.37 1.52 38.701 1.52 38.701s16.96 31.085 20.293 51.094c3.373 20.241-3.533 59.103-4.946 77.983z" enable-background="new" fill="#ada469" fill-rule="evenodd"/>
176 <stop 176 </clipPath>
177 style="stop-color:#000000;stop-opacity:1;" 177 <clipPath id="im">
178 offset="0.75866222" 178 <path d="M760.16 935.83c6.794 18.903 10.494 33.3 11.89 51.212 1.397 17.912-3.783 51.801-2.9 70.656.881 18.845 8.133 40.099 27.345 48.969 19.419 8.966 49.319 10.211 74.12-3.146 24.8-13.357 57.4-70.326 70.974-97.309 13.624-27.084 38.76-114.5 44.66-149.77 5.9-35.27 2.551-41.3-4.617-49.055 2.64-27.84-1.5-54.935 13.11-87.186-30.249 11.826-37.382 40.161-48.319 65.505-8-50.933.21-71.273 3.319-101.22-29.065 14.778-42.862 47.114-45 92.857-10.924-1.304-21.391-4.434-33.571-.714-.264-46.023-1.464-76.889 8.91-114.21-53.254 21.027-62.946 106.59-56.052 112.78-10.883.535-21.371-1.297-32.857 2.857.638-42.57-.261-84.909-30-122.86 0 0-30.958 80.922-31.43 103.57s9.452 40.166 9.452 40.166-8.568 36.741-6.298 58.232c2.295 21.741 20.443 59.676 27.265 78.658z" enable-background="new" fill="#ada469" fill-rule="evenodd" stroke="#000"/>
179 id="stop2849" /> 179 </clipPath>
180 <stop 180 <filter id="jq" x="-.088" y="-.177" width="1.176" height="1.355">
181 id="stop2851" 181 <feGaussianBlur stdDeviation="16.34"/>
182 offset="0.88508981" 182 </filter>
183 style="stop-color:#232323;stop-opacity:1;" /> 183 <filter id="i">
184 <stop 184 <feTurbulence baseFrequency=".24" numOctaves="10" result="result0" seed="655" type="fractalNoise"/>
185 id="stop2853" 185 <feDisplacementMap in="SourceGraphic" in2="result0" scale="62" xChannelSelector="B" yChannelSelector="G"/>
186 offset="1" 186 </filter>
187 style="stop-color:#595959;stop-opacity:1;" /> 187 <filter id="em">
188 </linearGradient> 188 <feGaussianBlur stdDeviation="2.04"/>
189 <linearGradient 189 </filter>
190 inkscape:collect="always" 190 <clipPath id="jo">
191 id="linearGradient8964"> 191 <path d="m709.29 844.51c54.286-1.429 126.04-15.052 170-26.786 44.053-11.757 125.89-36.347 175.36-57.857 49.339-21.453 113.6-59.282 154.29-92.143 40.508-32.721 52.39-55.82 60.714-33.571 8.37 22.368-16.407 56.326-37.857 81.071-21.604 24.923-52.731 52.705-98.929 89.286s-156.08 101.58-212.86 128.57c-57.066 27.125-128.2 58.238-172.14 72.5s-131.43 31.071-131.43 31.071l92.857-192.14z" enable-background="accumulate" fill="#121212" fill-rule="evenodd"/>
192 <stop 192 </clipPath>
193 style="stop-color:#1a1a1a;stop-opacity:1;" 193 <clipPath id="jp">
194 offset="0" 194 <path d="m709.29 844.51c54.286-1.429 126.04-15.052 170-26.786 44.053-11.757 125.89-36.347 175.36-57.857 49.339-21.453 113.6-59.282 154.29-92.143 40.508-32.721 52.39-55.82 60.714-33.571 8.37 22.368-16.407 56.326-37.857 81.071-21.604 24.923-52.731 52.705-98.929 89.286s-156.08 101.58-212.86 128.57c-57.066 27.125-128.2 58.238-172.14 72.5s-131.43 31.071-131.43 31.071l92.857-192.14z" enable-background="accumulate" fill="#121212" fill-rule="evenodd"/>
195 id="stop8966" /> 195 </clipPath>
196 <stop 196 <clipPath id="js">
197 style="stop-color:#1a1a1a;stop-opacity:0;" 197 <path d="m709.29 844.51c54.286-1.429 126.04-15.052 170-26.786 44.053-11.757 125.89-36.347 175.36-57.857 49.339-21.453 113.6-59.282 154.29-92.143 40.508-32.721 52.39-55.82 60.714-33.571 8.37 22.368-16.407 56.326-37.857 81.071-21.604 24.923-52.731 52.705-98.929 89.286s-156.08 101.58-212.86 128.57c-57.066 27.125-128.2 58.238-172.14 72.5s-131.43 31.071-131.43 31.071l92.857-192.14z" enable-background="accumulate" fill="#121212" fill-rule="evenodd"/>
198 offset="1" 198 </clipPath>
199 id="stop8968" /> 199 <clipPath id="ke">
200 </linearGradient> 200 <path d="M178.21 274.15c-3.804-25.264-16.81-50.638-17.157-75.525-.186-13.356 3.273-26.571 13.756-39.554 36.347-65.296 116.94-84.695 185.93-91.465 86.922-11.017 184.91 17.94 233.37 95.401 54.124 75.733 56.675 172.54 80.612 259.53 29.438 127.13 54.779 256.21 60.392 386.85-3.063 78.182-8.426 165.18-60.503 228.13-48.027 50.357-122.79 50.053-187.07 59.002-90.555 4.655-184.35-16.146-261.78-64.198-64.776-37.94-95.73-113.48-97.279-186.02-8.39-79.875 26.392-153.81 51.62-227.16 7.47-82.761 9.413-166.25 9.653-249.38-.837-32.195-7.09-63.817-11.546-95.609z" enable-background="accumulate" fill="#262f2f" fill-rule="evenodd"/>
201 <linearGradient 201 </clipPath>
202 id="linearGradient8952"> 202 <filter id="iv" x="-.243" y="-.391" width="1.487" height="1.782">
203 <stop 203 <feGaussianBlur stdDeviation="14.59"/>
204 style="stop-color:#0a0c0c;stop-opacity:1;" 204 </filter>
205 offset="0" 205 <filter id="iu" x="-.146" y="-.235" width="1.292" height="1.47">
206 id="stop8954" /> 206 <feGaussianBlur stdDeviation="4.444"/>
207 <stop 207 </filter>
208 style="stop-color:#1f2727;stop-opacity:0;" 208 <filter id="it">
209 offset="1" 209 <feGaussianBlur stdDeviation=".606"/>
210 id="stop8956" /> 210 </filter>
211 </linearGradient> 211 <filter id="ix">
212 <linearGradient 212 <feGaussianBlur stdDeviation="6.589"/>
213 id="linearGradient8430"> 213 </filter>
214 <stop 214 <filter id="iw">
215 style="stop-color:#1e2323;stop-opacity:1;" 215 <feGaussianBlur stdDeviation="1.505"/>
216 offset="0" 216 </filter>
217 id="stop8432" /> 217 <filter id="jj" x="-.103" y="-.342" width="1.206" height="1.685">
218 <stop 218 <feGaussianBlur stdDeviation="1.168"/>
219 id="stop8438" 219 </filter>
220 offset="0.55992389" 220 <filter id="jf" x="-.098" y="-.198" width="1.197" height="1.395">
221 style="stop-color:#181d1d;stop-opacity:1;" /> 221 <feGaussianBlur stdDeviation="1.168"/>
222 <stop 222 </filter>
223 style="stop-color:#000000;stop-opacity:1;" 223 <filter id="jh" x="-.098" y="-.198" width="1.196" height="1.397">
224 offset="1" 224 <feGaussianBlur stdDeviation="1.168"/>
225 id="stop8434" /> 225 </filter>
226 </linearGradient> 226 <filter id="ji" x="-.099" y="-.226" width="1.198" height="1.453">
227 <linearGradient 227 <feGaussianBlur stdDeviation="1.168"/>
228 id="linearGradient8398"> 228 </filter>
229 <stop 229 <filter id="hy" x="-.099" y="-.225" width="1.198" height="1.451">
230 style="stop-color:#283131;stop-opacity:0;" 230 <feGaussianBlur stdDeviation="1.168"/>
231 offset="0" 231 </filter>
232 id="stop8400" /> 232 <filter id="hu" x="-.105" y="-.405" width="1.209" height="1.809">
233 <stop 233 <feGaussianBlur stdDeviation="1.168"/>
234 id="stop8402" 234 </filter>
235 offset="0.5125587" 235 <filter id="hv" x="-.103" y="-.364" width="1.207" height="1.729">
236 style="stop-color:#1e2424;stop-opacity:0;" /> 236 <feGaussianBlur stdDeviation="1.168"/>
237 <stop 237 </filter>
238 style="stop-color:#000000;stop-opacity:1;" 238 <filter id="hw" x="-.102" y="-.324" width="1.204" height="1.647">
239 offset="1" 239 <feGaussianBlur stdDeviation="1.168"/>
240 id="stop8404" /> 240 </filter>
241 </linearGradient> 241 <filter id="hx" x="-.101" y="-.274" width="1.201" height="1.548">
242 <linearGradient 242 <feGaussianBlur stdDeviation="1.168"/>
243 inkscape:collect="always" 243 </filter>
244 id="linearGradient4870"> 244 <filter id="hz" x="-.098" y="-.209" width="1.197" height="1.417">
245 <stop 245 <feGaussianBlur stdDeviation="1.168"/>
246 style="stop-color:#c7bd80;stop-opacity:1;" 246 </filter>
247 offset="0" 247 <filter id="ia" x="-.098" y="-.203" width="1.197" height="1.406">
248 id="stop4872" /> 248 <feGaussianBlur stdDeviation="1.168"/>
249 <stop 249 </filter>
250 style="stop-color:#c7bd80;stop-opacity:0;" 250 <filter id="ib" x="-.098" y="-.198" width="1.196" height="1.397">
251 offset="1" 251 <feGaussianBlur stdDeviation="1.168"/>
252 id="stop4874" /> 252 </filter>
253 </linearGradient> 253 <filter id="jg">
254 <linearGradient 254 <feGaussianBlur stdDeviation="1.168"/>
255 inkscape:collect="always" 255 </filter>
256 id="linearGradient4862"> 256 <filter id="jk">
257 <stop 257 <feGaussianBlur stdDeviation="1.168"/>
258 style="stop-color:#e2e2e2;stop-opacity:1;" 258 </filter>
259 offset="0" 259 <filter id="hr" x="-.031" y="-.103" width="1.062" height="1.205">
260 id="stop4864" /> 260 <feGaussianBlur stdDeviation=".35"/>
261 <stop 261 </filter>
262 style="stop-color:#e2e2e2;stop-opacity:0;" 262 <filter id="hq">
263 offset="1" 263 <feGaussianBlur stdDeviation=".35"/>
264 id="stop4866" /> 264 </filter>
265 </linearGradient> 265 <filter id="hp">
266 <linearGradient 266 <feGaussianBlur stdDeviation=".35"/>
267 id="linearGradient4478"> 267 </filter>
268 <stop 268 <filter id="hn">
269 style="stop-color:#f9eed3;stop-opacity:1;" 269 <feGaussianBlur stdDeviation=".35"/>
270 offset="0" 270 </filter>
271 id="stop4480" /> 271 <filter id="hm">
272 <stop 272 <feGaussianBlur stdDeviation=".35"/>
273 style="stop-color:#000000;stop-opacity:0;" 273 </filter>
274 offset="1" 274 <filter id="hl">
275 id="stop4482" /> 275 <feGaussianBlur stdDeviation=".35"/>
276 </linearGradient> 276 </filter>
277 <linearGradient 277 <filter id="hk">
278 id="linearGradient4106"> 278 <feGaussianBlur stdDeviation=".35"/>
279 <stop 279 </filter>
280 style="stop-color:#d9e002;stop-opacity:1;" 280 <filter id="hj">
281 offset="0" 281 <feGaussianBlur stdDeviation=".35"/>
282 id="stop4108" /> 282 </filter>
283 <stop 283 <filter id="hi">
284 id="stop4114" 284 <feGaussianBlur stdDeviation=".35"/>
285 offset="0.5" 285 </filter>
286 style="stop-color:#a9ae01;stop-opacity:1;" /> 286 <filter id="hh">
287 <stop 287 <feGaussianBlur stdDeviation=".35"/>
288 style="stop-color:#717501;stop-opacity:1;" 288 </filter>
289 offset="1" 289 <filter id="hf" x="-.031" y="-.121" width="1.063" height="1.243">
290 id="stop4110" /> 290 <feGaussianBlur stdDeviation=".35"/>
291 </linearGradient> 291 </filter>
292 <linearGradient 292 <filter id="hg" x="-.031" y="-.109" width="1.062" height="1.219">
293 id="linearGradient4084"> 293 <feGaussianBlur stdDeviation=".35"/>
294 <stop 294 </filter>
295 style="stop-color:#7d7d00;stop-opacity:1;" 295 <filter id="hs">
296 offset="0" 296 <feGaussianBlur stdDeviation=".35"/>
297 id="stop4086" /> 297 </filter>
298 <stop 298 <filter id="ho">
299 id="stop4088" 299 <feGaussianBlur stdDeviation=".35"/>
300 offset="0.3636601" 300 </filter>
301 style="stop-color:#c6c700;stop-opacity:1;" /> 301 <filter id="ht">
302 <stop 302 <feGaussianBlur stdDeviation="1.723"/>
303 style="stop-color:#f6f800;stop-opacity:1;" 303 </filter>
304 offset="1" 304 <clipPath id="jl">
305 id="stop4090" /> 305 <path transform="translate(.08 -.031)" d="M1111.4-285.94l-3.937 1.875c-.041.01-.1.02-.125.031-.42.213-.165.1-.657.313-.486.21-1.737.584-4.093 1.469-3.332 1.25-5.805 2.15-7 3.062-1.537.021-3.72.233-5.657.719a227.677 227.677 0 0 1-6.75 1.594c-1.895.42-1.675.642-2.875.875-1.296.251-1.721-.01-5.437.78-3.49.743-8.895 1.932-10.156 2.688-1.584-.18-3.868-.321-5.844-.03-3.04.446-4.916.672-6.844.905-.655.08-1.04.201-1.344.282-.426.131-.685.26-1.375.343-1.311.16-1.762-.156-5.53.282-3.555.413-9.006 1.272-10.25 1.937-1.6-.297-3.859-.534-5.845-.344-3.058.294-4.972.484-6.906.657-1.934.172-1.688.422-2.906.53-1.316.119-1.76-.163-5.531.25-3.542.39-9.008 1.21-10.281 1.876-1.6-.295-3.887-.507-5.875-.313-3.059.3-4.941.48-6.875.657-.658.06-1.04.178-1.344.25-.428.119-.683.218-1.375.28-1.316.121-1.76-.194-5.531.22-3.556.39-9.006 1.239-10.25
306 </linearGradient> 3061.906-1.599-.294-3.86-.524-5.844-.313-3.056.326-4.974.527-6.906.719s-1.69.44-2.906.563c-1.315.131-1.763-.165-5.532.28-3.539.42-8.977 1.293-10.25 1.97-1.597-.281-3.86-.42-5.843-.188-3.052.358-4.945.568-6.875.781-.657.073-1.041.173-1.344.25-.427.128-.685.268-1.375.344-1.314.146-1.768-.174-5.531.313-3.55.458-8.979 1.419-10.22 2.125-1.593-.245-3.833-.382-5.812-.125-3.048.394-4.95.648-6.875.906-1.924.258-1.726.493-2.937.656-1.31.176-1.748-.104-5.5.469-3.525.538-8.924 1.699-10.188 2.437-1.588-.203-3.846-.254-5.813.094-3.026.536-4.899.862-6.812 1.188-.651.11-1.014.27-1.313.375-.42.164-.663.33-1.344.468-1.294.262-1.727-.006-5.437.813-3.499.772-8.846 2.383-10.062 3.219-1.563-.078-3.758.085-5.688.593-2.972.783-4.817 1.232-6.687 1.75s-1.667.768-2.844 1.094c-1.273.353-1.697.107-5.344 1.188-3.425 1.014-8.65 2.933-9.875 3.843-1.539.013-3.72.273-5.625.875-2.93.928-4.75 1.459-6.594
307 <linearGradient 3072.063-.626.205-.991.393-1.28.531-.408.214-.654.409-1.313.625-1.255.412-1.687.19-5.282 1.438-3.39 1.177-8.595 3.213-9.78 4.156-1.525.06-3.65.395-5.532 1.062-2.897 1.029-4.699 1.676-6.531 2.313-1.832.637-1.628.848-2.781 1.25-1.247.434-1.664.2-5.22 1.562-3.338 1.28-8.486 3.483-9.687 4.47-1.507.107-3.635.498-5.5 1.218a1047.26 1047.26 0 0 1-6.437 2.469c-.617.233-.997.442-1.281.594v.03l-8 3.188 1.812 14.72c-.258-.062 6.188 3.312 6.188 3.312.226-.145.449-.273.718-.375 1.08-.41 2.172-.216 6-1.688 3.829-1.471 5.224-2.005 5.907-2.406.68-.4 1.611-.88 2.218-1.531 1.827-.138 3.571-.493 4.938-1 2.968-1.1 4.875-1.806 6.781-2.469 1.906-.662 2.354-1.415 3.406-1.781 1.092-.38 2.195-.166 6.063-1.531 3.867-1.366 5.283-1.827 5.969-2.22.7-.4 1.7-.932 2.312-1.593 1.97-.055 3.817-.385 5.281-.875 3.002-1.005 4.927-1.622 6.844-2.25 1.539-.504 2.174-1.047 2.906-1.437.23-.135.476-.254.75-.344 1.099-.36 2.182-.082
308 id="linearGradient4041"> 3086.094-1.313 3.912-1.23 5.366-1.673 6.063-2.03.694-.358 1.63-.794 2.25-1.407 1.865-.023 3.635-.267 5.03-.688 3.031-.913 4.993-1.43 6.938-1.968 1.945-.539 2.427-1.265 3.5-1.563 1.114-.31 2.22.007 6.188-1.031 3.967-1.039 5.417-1.433 6.125-1.75.735-.33 1.814-.754 2.437-1.375 1.998.116 3.858-.02 5.344-.375 3.078-.735 5.084-1.101 7.063-1.5 1.588-.32 2.244-.79 3-1.094a3.4 3.4 0 0 1 .75-.25c1.133-.23 2.304.209 6.343-.5 4.04-.709 5.5-.927 6.22-1.187.715-.26 1.704-.568 2.343-1.094 1.924.24 3.748.224 5.188 0 3.126-.488 5.154-.7 7.156-.969 2.001-.268 2.489-.945 3.594-1.094 1.146-.154 2.275.302 6.343-.219 4.068-.52 5.56-.695 6.282-.937.737-.247 1.798-.586 2.437-1.125 2.05.336 3.974.398 5.5.219 3.142-.37 5.18-.56 7.188-.782 1.61-.178 2.264-.608 3.03-.843.242-.086.495-.156.782-.188 1.15-.127 2.301.347 6.375-.125s5.559-.61 6.281-.844c.72-.232 1.7-.473 2.344-.968 1.936.333 3.77.404 5.219.25 3.146-.335
309 <stop 3095.177-.519 7.187-.719 2.01-.2 2.484-.826 3.594-.938 1.151-.115 2.297.366 6.375-.062s5.589-.562 6.313-.781c.739-.224 1.795-.514 2.437-1.031 2.057.398 4.002.493 5.531.343 3.149-.308 5.176-.473 7.188-.656 1.614-.147 2.263-.56 3.031-.781.241-.081.494-.13.781-.156 1.152-.106 2.293.392 6.375 0s5.59-.531 6.313-.75c.72-.219 1.7-.448 2.343-.938 1.939.35 3.77.454 5.22.313 3.148-.309 5.175-.474 7.187-.657 2.011-.183 2.514-.838 3.625-.937 1.152-.103 2.292.385 6.375 0s5.588-.501 6.312-.719c.74-.222 1.796-.514 2.438-1.031 2.057.402 4.003.503 5.531.344 3.147-.329 5.177-.523 7.187-.72 1.613-.156 2.266-.63 3.032-.874.24-.088.463-.122.75-.156 1.148-.14 2.316.34 6.375-.25 4.058-.59 5.562-.778 6.281-1.032.717-.253 1.675-.558 2.312-1.093 1.92.212 3.72.151 5.157-.094 3.119-.533 5.111-.929 7.093-1.313 1.983-.383 2.475-1.04 3.563-1.28 1.129-.251 2.27.115 6.25-.876s5.43-1.42 6.125-1.781c.722-.376 1.762-.87
310 id="stop4043" 3102.375-1.531 1.963-.012 3.794-.291 5.219-.844 2.95-1.145 4.873-1.87 6.687-2.75 1.456-.706 2.32-1.702 2.531-2 .213-.298.1-.729.125-.75.043-.035.34-.094.5-.437.86-1.848 2.324-5.628 2.438-6.313.114-.682.168-1.353.219-1.75.029-.23-.147-.879-.125-.937.03-.082.288-.251.343-.5.267-1.199.09-2.208-.125-3.625-.213-1.418-.971-4.615-1.625-5.47-.658-.861-1.224-1.01-1.75-1z" enable-background="new" fill="#bcb786" fill-rule="evenodd"/>
311 offset="0" 311 </clipPath>
312 style="stop-color:#ffff00;stop-opacity:1;" /> 312 <filter id="kk" x="-.082" y="-.227" width="1.163" height="1.453">
313 <stop 313 <feGaussianBlur stdDeviation="2.437"/>
314 id="stop4045" 314 </filter>
315 offset="1" 315 <filter id="kj" x="-.041" y="-.113" width="1.082" height="1.227">
316 style="stop-color:#ffff00;stop-opacity:0;" /> 316 <feGaussianBlur stdDeviation="1.219"/>
317 </linearGradient> 317 </filter>
318 <linearGradient 318 <clipPath id="kl">
319 id="linearGradient4025"> 319 <path d="M1049.2-282.27l-.09.008c-1.387.884-6.603 1.607-6.629 9.523-.024 7.426 15.013 17.091 17.156 18.094 1.73.81 3.592 1.41 5.406 1.72l1.438.218c1.92.212 3.72.151 5.156-.094 3.12-.532 5.112-.928 7.094-1.312 1.982-.384 2.474-1.04 3.562-1.281 1.129-.251 2.27.116 6.25-.875 3.98-.992 5.43-1.42 6.125-1.782.723-.376 1.762-.87 2.375-1.53 1.963-.013 3.794-.292 5.219-.845 2.951-1.144 4.873-1.869 6.688-2.75 1.455-.706 2.319-1.702 2.53-2 .213-.298.1-.728.126-.75.043-.035.34-.094.5-.437.859-1.847 2.323-5.628 2.437-6.313.114-.682.168-1.352.219-1.75.029-.23-.147-.879-.125-.937.031-.082.288-.25.344-.5.266-1.198.089-2.208-.125-3.625-.214-1.418-.972-4.615-1.625-5.469-.42-.548-.8-.792-1.157-.906-.067-.017-.123-.047-.187-.063-.021-.004-.042.003-.062 0-.312-.075-.609-.158-1.156-.218-.986-.109-2.425-.26-3.969-.25-.515.003-1.037.047-1.563.093-3.558.313-9.01.991-10.218
320 <stop 3201.625-1.634-.334-3.949-.612-5.938-.468-3.064.22-4.968.342-6.906.468-1.939.127-1.686.389-2.906.469-1.32.087-1.787-.223-5.563.094-3.546.297-8.98.993-10.22 1.625-1.632-.335-3.945-.613-5.937-.469-3.064.221-4.967.373-6.906.5-.659.043-1.042.124-1.344.187z" enable-background="new" fill="#bcb786" fill-rule="evenodd" opacity=".824"/>
321 style="stop-color:#ffffff;stop-opacity:1;" 321 </clipPath>
322 offset="0" 322 <filter id="km" x="-.022" width="1.044">
323 id="stop4027" /> 323 <feGaussianBlur stdDeviation=".575"/>
324 <stop 324 </filter>
325 style="stop-color:#ffffff;stop-opacity:0;" 325 <clipPath id="kn">
326 offset="1" 326 <path d="M205.47-408.97l-.09.002c-1.446.786-6.7 1.143-7.276 9.039-.542 7.405 13.786 18.096 15.854 19.245 1.67.927 3.484 1.655 5.273 2.09l1.419.32c1.9.344 3.7.41 5.15.265 3.149-.314 5.164-.57 7.168-.815 2.004-.245 2.54-.865 3.643-1.03 1.144-.172 2.257.274 6.296-.438s5.515-1.038 6.234-1.35c.747-.325 1.818-.746 2.476-1.362 1.96.124 3.805-.026 5.265-.479 3.024-.936 4.991-1.525 6.863-2.277 1.501-.603 2.432-1.536 2.664-1.819.233-.282.15-.72.177-.74.045-.032.346-.07.53-.4.985-1.784 2.709-5.453 2.87-6.128.162-.673.263-1.338.34-1.73.046-.228-.085-.888-.059-.945.037-.08.305-.23.378-.475.35-1.177.243-2.195.128-3.625-.115-1.429-.648-4.67-1.24-5.568-.38-.577-.742-.846-1.09-.985-.066-.022-.12-.055-.183-.075-.02-.005-.042 0-.063-.004-.305-.097-.596-.2-1.138-.299-.975-.176-2.4-.428-3.942-.526a19.346 19.346 0 0
327 id="stop4031" /> 3270-1.565-.015c-3.572.064-9.057.361-10.307.91-1.606-.448-3.896-.886-5.89-.882-3.072.007-4.98-.005-6.922-.013-1.943-.01-1.71.27-2.932.265-1.322-.005-1.767-.347-5.556-.294-3.558.05-9.028.365-10.307.91-1.606-.448-3.893-.887-5.89-.882-3.072.007-4.982.027-6.924.018-.661-.003-1.049.05-1.354.093z" enable-background="new" fill="#bcb786" fill-rule="evenodd" opacity=".824"/>
328 </linearGradient> 328 </clipPath>
329 <linearGradient 329 <linearGradient id="w" x1="774.98" x2="755.12" y1="-211.87" y2="-202.68" gradientTransform="translate(-19.092 4.243)" gradientUnits="userSpaceOnUse" xlink:href="#n"/>
330 id="linearGradient4013"> 330 <mask id="jm" maskUnits="userSpaceOnUse">
331 <stop 331 <path d="m718.41-224.31l33.25 56 276-24 159.5-48.25-66.5-82.75-402.25 99z" fill="url(#w)" fill-rule="evenodd"/>
332 style="stop-color:#ffff00;stop-opacity:1;" 332 </mask>
333 offset="0" 333 <clipPath id="kg">
334 id="stop4015" /> 334 <path d="M734.03 519.49s16.755 37.018 28.701 53.954 52.727 56.046 52.727 56.046l.597-138.59" enable-background="accumulate" fill="#1a1a1a" fill-rule="evenodd" stroke="#000"/>
335 <stop 335 </clipPath>
336 style="stop-color:#b2b200;stop-opacity:1;" 336 <filter id="jn">
337 offset="1" 337 <feGaussianBlur stdDeviation="10.662"/>
338 id="stop4017" /> 338 </filter>
339 </linearGradient> 339 <filter id="ip">
340 <linearGradient 340 <feGaussianBlur stdDeviation="7.18"/>
341 id="linearGradient3985"> 341 </filter>
342 <stop 342 <clipPath id="iq">
343 style="stop-color:#000000;stop-opacity:1;" 343 <path d="m266.27 924.57c-1.407 18.801-1.145 32.751 2.082 49.303 3.226 16.552 16.406 45.907 20.334 63.184 3.926 17.267 2.694 38.31-12.46 51.148-15.317 12.978-42.05 21.599-67.831 15.734s-69.55-49.223-88.59-70.228c-19.112-21.083-63.761-93.851-77.94-124.28-14.177-30.425-12.66-36.719-8.119-45.53-9.367-24.52-12.414-50.067-33.712-75.577 30.325 3.114 43.88 26.956 60.126 47.14-5.53-48.076-18.055-64.417-28.374-90.724 29.994 6.082 50.579 31.872 63.98 72.712 9.554-3.918 18.238-9.373 30.187-9.061-11.298-41.696-17.949-69.916-36.687-101.07 53.442 5.67 83.657 80.639 78.971 87.96 9.978-2.243 19.006-6.53 30.437-5.65-11.249-38.348-21.048-76.869-3.66-118.65 0 0 48.287 65.436 54.39 85.805 6.103 20.37 1.52 38.701 1.52 38.701s16.96 31.085 20.293 51.094c3.373 20.241-3.533 59.103-4.946 77.983z" enable-background="new" fill="#ada469" fill-rule="evenodd"/>
344 offset="0" 344 </clipPath>
345 id="stop3987" /> 345 <filter id="in">
346 <stop 346 <feGaussianBlur stdDeviation="6.82"/>
347 style="stop-color:#1d1d1d;stop-opacity:1;" 347 </filter>
348 offset="1" 348 <clipPath id="io">
349 id="stop3989" /> 349 <path d="m266.27 924.57c-1.407 18.801-1.145 32.751 2.082 49.303 3.226 16.552 16.406 45.907 20.334 63.184 3.926 17.267 2.694 38.31-12.46 51.148-15.317 12.978-42.05 21.599-67.831 15.734s-69.55-49.223-88.59-70.228c-19.112-21.083-63.761-93.851-77.94-124.28-14.177-30.425-12.66-36.719-8.119-45.53-9.367-24.52-12.414-50.067-33.712-75.577 30.325 3.114 43.88 26.956 60.126 47.14-5.53-48.076-18.055-64.417-28.374-90.724 29.994 6.082 50.579 31.872 63.98 72.712 9.554-3.918 18.238-9.373 30.187-9.061-11.298-41.696-17.949-69.916-36.687-101.07 53.442 5.67 83.657 80.639 78.971 87.96 9.978-2.243 19.006-6.53 30.437-5.65-11.249-38.348-21.048-76.869-3.66-118.65 0 0 48.287 65.436 54.39 85.805 6.103 20.37 1.52 38.701 1.52 38.701s16.96 31.085 20.293 51.094c3.373 20.241-3.533 59.103-4.946 77.983z" enable-background="new" fill="#ada469" fill-rule="evenodd"/>
350 </linearGradient> 350 </clipPath>
351 <linearGradient 351 <filter id="ij" x="-.144" y="-.103" width="1.288" height="1.206">
352 id="linearGradient3961"> 352 <feGaussianBlur stdDeviation="7.389"/>
353 <stop 353 </filter>
354 style="stop-color:#283131;stop-opacity:0;" 354 <clipPath id="ik">
355 offset="0" 355 <path d="M760.16 935.83c6.794 18.903 10.494 33.3 11.89 51.212 1.397 17.912-3.783 51.801-2.9 70.656.881 18.845 8.133 40.099 27.345 48.969 19.419 8.966 49.319 10.211 74.12-3.146 24.8-13.357 57.4-70.326 70.974-97.309 13.624-27.084 38.76-114.5 44.66-149.77 5.9-35.27 2.551-41.3-4.617-49.055 2.64-27.84-1.5-54.935 13.11-87.186-30.249 11.826-37.382 40.161-48.319 65.505-8-50.933.21-71.273 3.319-101.22-29.065 14.778-42.862 47.114-45 92.857-10.924-1.304-21.391-4.434-33.571-.714-.264-46.023-1.464-76.889 8.91-114.21-53.254 21.027-62.946 106.59-56.052 112.78-10.883.535-21.371-1.297-32.857 2.857.638-42.57-.261-84.909-30-122.86 0 0-30.958 80.922-31.43 103.57s9.452 40.166 9.452 40.166-8.568 36.741-6.298 58.232c2.295 21.741 20.443 59.676 27.265 78.658z" enable-background="new" fill="#ada469" fill-rule="evenodd"/>
356 id="stop3963" /> 356 </clipPath>
357 <stop 357 <filter id="ih" x="-.09" y="-.103" width="1.181" height="1.205">
358 id="stop3965" 358 <feGaussianBlur stdDeviation="5.346"/>
359 offset="0.5" 359 </filter>
360 style="stop-color:#1e2424;stop-opacity:1;" /> 360 <clipPath id="ii">
361 <stop 361 <path d="M760.16 935.83c6.794 18.903 10.494 33.3 11.89 51.212 1.397 17.912-3.783 51.801-2.9 70.656.881 18.845 8.133 40.099 27.345 48.969 19.419 8.966 49.319 10.211 74.12-3.146 24.8-13.357 57.4-70.326 70.974-97.309 13.624-27.084 38.76-114.5 44.66-149.77 5.9-35.27 2.551-41.3-4.617-49.055 2.64-27.84-1.5-54.935 13.11-87.186-30.249 11.826-37.382 40.161-48.319 65.505-8-50.933.21-71.273 3.319-101.22-29.065 14.778-42.862 47.114-45 92.857-10.924-1.304-21.391-4.434-33.571-.714-.264-46.023-1.464-76.889 8.91-114.21-53.254 21.027-62.946 106.59-56.052 112.78-10.883.535-21.371-1.297-32.857 2.857.638-42.57-.261-84.909-30-122.86 0 0-30.958 80.922-31.43 103.57s9.452 40.166 9.452 40.166-8.568 36.741-6.298 58.232c2.295 21.741 20.443 59.676 27.265 78.658z" enable-background="new" fill="#ada469" fill-rule="evenodd"/>
362 style="stop-color:#000000;stop-opacity:1;" 362 </clipPath>
363 offset="1" 363 <clipPath id="gc">
364 id="stop3967" /> 364 <path d="M569.03 1018.8c-4.286.714-27.628 3.618-57.857 10s-99.775 25.962-142.86 35.714-117.26 34.816-156.91 27.265c-39.648-7.55-89.516-64.408-89.516-64.408l4.286-94.286s85.886-16.201 112.14-33.571c26.257-17.37 45.582-49.666 59.286-71.429s32.857-71.429 32.857-71.429l238.57 262.14z" enable-background="accumulate" fill="#0b0b0b" fill-rule="evenodd" stroke="#000"/>
365 </linearGradient> 365 </clipPath>
366 <linearGradient 366 <filter id="gb" x="-.211" y="-.168" width="1.422" height="1.336">
367 id="linearGradient3951"> 367 <feGaussianBlur stdDeviation="8.369"/>
368 <stop 368 </filter>
369 id="stop3953" 369 <clipPath id="fz">
370 offset="0" 370 <path d="M205.47-408.97l-.09.002c-1.446.786-6.7 1.143-7.276 9.039-.542 7.405 13.786 18.096 15.854 19.245 1.67.927 3.484 1.655 5.273 2.09l1.419.32c1.9.344 3.7.41 5.15.265 3.149-.314 5.164-.57 7.168-.815 2.004-.245 2.54-.865 3.643-1.03 1.144-.172 2.257.274 6.296-.438s5.515-1.038 6.234-1.35c.747-.325 1.818-.746 2.476-1.362 1.96.124 3.805-.026 5.265-.479 3.024-.936 4.991-1.525 6.863-2.277 1.501-.603 2.432-1.536 2.664-1.819.233-.282.15-.72.177-.74.045-.032.346-.07.53-.4.985-1.784 2.709-5.453 2.87-6.128.162-.673.263-1.338.34-1.73.046-.228-.085-.888-.059-.945.037-.08.305-.23.378-.475.35-1.177.243-2.195.128-3.625-.115-1.429-.648-4.67-1.24-5.568-.38-.577-.742-.846-1.09-.985-.066-.022-.12-.055-.183-.075-.02-.005-.042 0-.063-.004-.305-.097-.596-.2-1.138-.299-.975-.176-2.4-.428-3.942-.526a19.346 19.346 0 0
371 style="stop-color:#344040;stop-opacity:1;" /> 3710-1.565-.015c-3.572.064-9.057.361-10.307.91-1.606-.448-3.896-.886-5.89-.882-3.072.007-4.98-.005-6.922-.013-1.943-.01-1.71.27-2.932.265-1.322-.005-1.767-.347-5.556-.294-3.558.05-9.028.365-10.307.91-1.606-.448-3.893-.887-5.89-.882-3.072.007-4.982.027-6.924.018-.661-.003-1.049.05-1.354.093z" enable-background="new" fill="#bcb786" fill-rule="evenodd" opacity=".824"/>
372 <stop 372 </clipPath>
373 style="stop-color:#222929;stop-opacity:1;" 373 <filter id="fy" x="-.022" width="1.044">
374 offset="0.5" 374 <feGaussianBlur stdDeviation=".575"/>
375 id="stop3955" /> 375 </filter>
376 <stop 376 <clipPath id="fx">
377 id="stop3957" 377 <path d="M1049.2-282.27l-.09.008c-1.387.884-6.603 1.607-6.629 9.523-.024 7.426 15.013 17.091 17.156 18.094 1.73.81 3.592 1.41 5.406 1.72l1.438.218c1.92.212 3.72.151 5.156-.094 3.12-.532 5.112-.928 7.094-1.312 1.982-.384 2.474-1.04 3.562-1.281 1.129-.251 2.27.116 6.25-.875 3.98-.992 5.43-1.42 6.125-1.782.723-.376 1.762-.87 2.375-1.53 1.963-.013 3.794-.292 5.219-.845 2.951-1.144 4.873-1.869 6.688-2.75 1.455-.706 2.319-1.702 2.53-2 .213-.298.1-.728.126-.75.043-.035.34-.094.5-.437.859-1.847 2.323-5.628 2.437-6.313.114-.682.168-1.352.219-1.75.029-.23-.147-.879-.125-.937.031-.082.288-.25.344-.5.266-1.198.089-2.208-.125-3.625-.214-1.418-.972-4.615-1.625-5.469-.42-.548-.8-.792-1.157-.906-.067-.017-.123-.047-.187-.063-.021-.004-.042.003-.062 0-.312-.075-.609-.158-1.156-.218-.986-.109-2.425-.26-3.969-.25-.515.003-1.037.047-1.563.093-3.558.313-9.01.991-10.218
378 offset="1" 3781.625-1.634-.334-3.949-.612-5.938-.468-3.064.22-4.968.342-6.906.468-1.939.127-1.686.389-2.906.469-1.32.087-1.787-.223-5.563.094-3.546.297-8.98.993-10.22 1.625-1.632-.335-3.945-.613-5.937-.469-3.064.221-4.967.373-6.906.5-.659.043-1.042.124-1.344.187z" enable-background="new" fill="#bcb786" fill-rule="evenodd" opacity=".824"/>
379 style="stop-color:#000000;stop-opacity:1;" /> 379 </clipPath>
380 </linearGradient> 380 <filter id="fw" x="-.082" y="-.227" width="1.163" height="1.453">
381 <linearGradient 381 <feGaussianBlur stdDeviation="2.437"/>
382 id="linearGradient3909"> 382 </filter>
383 <stop 383 <filter id="fv" x="-.041" y="-.113" width="1.082" height="1.227">
384 style="stop-color:#283131;stop-opacity:1;" 384 <feGaussianBlur stdDeviation="1.219"/>
385 offset="0" 385 </filter>
386 id="stop3911" /> 386 <clipPath id="y">
387 <stop 387 <path d="M352.25 211.99c-3.804-25.264-16.81-50.638-17.157-75.525-.186-13.356 3.273-26.571 13.756-39.554 36.347-65.296 116.94-84.695 185.93-91.465 86.922-11.017 184.91 17.94 233.37 95.401 54.124 75.733 56.675 172.54 80.612 259.53 29.438 127.13 54.779 256.21 60.392 386.85-3.063 78.182-8.426 165.18-60.503 228.13-48.027 50.357-122.79 50.053-187.07 59.002-90.555 4.655-184.35-16.146-261.78-64.198-64.776-37.94-95.73-113.48-97.279-186.02-8.39-79.875 26.392-153.81 51.62-227.16 7.47-82.761 9.413-166.25 9.653-249.38-.837-32.195-7.09-63.817-11.546-95.609z" enable-background="accumulate" fill="#262f2f" fill-rule="evenodd" stroke="#000"/>
388 id="stop3917" 388 </clipPath>
389 offset="0.5" 389 <filter id="fu" x="-.252" y="-.053" width="1.503" height="1.106">
390 style="stop-color:#1e2424;stop-opacity:1;" /> 390 <feGaussianBlur stdDeviation="13.025"/>
391 <stop 391 </filter>
392 style="stop-color:#000000;stop-opacity:1;" 392 <clipPath id="fs">
393 offset="1" 393 <path d="M734.03 519.49s16.755 37.018 28.701 53.954 52.727 56.046 52.727 56.046l.597-138.59" enable-background="accumulate" fill="#1a1a1a" fill-rule="evenodd" stroke="#000"/>
394 id="stop3913" /> 394 </clipPath>
395 </linearGradient> 395 <filter id="fr" x="-.274" y="-.213" width="1.549" height="1.427">
396 <linearGradient 396 <feGaussianBlur stdDeviation="11.314"/>
397 id="linearGradient3537"> 397 </filter>
398 <stop 398 <clipPath id="fq">
399 style="stop-color:#ada469;stop-opacity:1;" 399 <path d="M178.21 274.15c-3.804-25.264-16.81-50.638-17.157-75.525-.186-13.356 3.273-26.571 13.756-39.554 36.347-65.296 116.94-84.695 185.93-91.465 86.922-11.017 184.91 17.94 233.37 95.401 54.124 75.733 56.675 172.54 80.612 259.53 29.438 127.13 54.779 256.21 60.392 386.85-3.063 78.182-8.426 165.18-60.503 228.13-48.027 50.357-122.79 50.053-187.07 59.002-90.555 4.655-184.35-16.146-261.78-64.198-64.776-37.94-95.73-113.48-97.279-186.02-8.39-79.875 26.392-153.81 51.62-227.16 7.47-82.761 9.413-166.25 9.653-249.38-.837-32.195-7.09-63.817-11.546-95.609z" enable-background="accumulate" fill="#262f2f" fill-rule="evenodd"/>
400 offset="0" 400 </clipPath>
401 id="stop3539" /> 401 <filter id="aq">
402 <stop 402 <feGaussianBlur stdDeviation="2.04"/>
403 id="stop3545" 403 </filter>
404 offset="0.81132078" 404 <filter id="g">
405 style="stop-color:#ada469;stop-opacity:1;" /> 405 <feTurbulence baseFrequency=".24" numOctaves="10" result="result0" seed="655" type="fractalNoise"/>
406 <stop 406 <feDisplacementMap in="SourceGraphic" in2="result0" scale="62" xChannelSelector="B" yChannelSelector="G"/>
407 style="stop-color:#ffffff;stop-opacity:1;" 407 </filter>
408 offset="1" 408 <clipPath id="fp">
409 id="stop3541" /> 409 <path d="M352.25 211.99c-3.804-25.264-16.81-50.638-17.157-75.525-.186-13.356 3.273-26.571 13.756-39.554 36.347-65.296 116.94-84.695 185.93-91.465 86.922-11.017 184.91 17.94 233.37 95.401 54.124 75.733 56.675 172.54 80.612 259.53 29.438 127.13 54.779 256.21 60.392 386.85-3.063 78.182-8.426 165.18-60.503 228.13-48.027 50.357-122.79 50.053-187.07 59.002-90.555 4.655-184.35-16.146-261.78-64.198-64.776-37.94-95.73-113.48-97.279-186.02-8.39-79.875 26.392-153.81 51.62-227.16 7.47-82.761 9.413-166.25 9.653-249.38-.837-32.195-7.09-63.817-11.546-95.609z" enable-background="accumulate" fill="#262f2f" fill-rule="evenodd" stroke="#000"/>
410 </linearGradient> 410 </clipPath>
411 <linearGradient 411 <filter id="fo" x="-.353" y="-.182" width="1.706" height="1.363">
412 id="linearGradient3317"> 412 <feGaussianBlur stdDeviation="48.038"/>
413 <stop 413 </filter>
414 style="stop-color:#cfc690;stop-opacity:1" 414 <clipPath id="fn">
415 offset="0" 415 <path d="m265.94 126.68l-18.767 168.86 174.11-73.121 61.954 88.659 57.884-31.99-37.534-180.06-237.64 27.649z" fill-rule="evenodd" stroke="#000" stroke-width=".9"/>
416 id="stop3319" /> 416 </clipPath>
417 <stop 417 <filter id="fm" x="-.277" y="-.325" width="1.554" height="1.65">
418 id="stop3321" 418 <feGaussianBlur stdDeviation="19.956"/>
419 offset="0.21161865" 419 </filter>
420 style="stop-color:#afa775;stop-opacity:1;" /> 420 <mask id="fk" maskUnits="userSpaceOnUse">
421 <stop 421 <ellipse transform="translate(-174.03 62.156)" cx="579.47" cy="260.58" rx="192.69" ry="164.05" enable-background="accumulate" fill="url(#dt)"/>
422 id="stop3323" 422 </mask>
423 offset="0.53408515" 423 <filter id="fj" x="-.611" y="-.149" width="2.223" height="1.299">
424 style="stop-color:#615c3a;stop-opacity:1;" /> 424 <feGaussianBlur stdDeviation="37.83"/>
425 <stop 425 </filter>
426 style="stop-color:#000000;stop-opacity:1;" 426 <filter id="fi" x="-.259" y="-.224" width="1.518" height="1.447">
427 offset="0.76504093" 427 <feGaussianBlur stdDeviation="19.632"/>
428 id="stop3325" /> 428 </filter>
429 <stop 429 <filter id="fh" x="-.3" y="-.3" width="1.6" height="1.6">
430 id="stop3327" 430 <feGaussianBlur stdDeviation="2"/>
431 offset="1" 431 </filter>
432 style="stop-color:#403518;stop-opacity:1;" /> 432 <clipPath id="x">
433 </linearGradient> 433 <path d="M179.64 267.36c-22.41 39.703-60.616 115.78-69.286 149.64-8.647 33.775-8.772 66.417-.357 86.429 8.36 19.882 26.164 35.633 40.714 41.429-.597-14.376 14.373-43.286 72.857-72.5 58.626-29.285 78.382-27.131 103.57-47.143 25.63-20.362 12.61-67.045 3.214-93.929-9.434-26.993-34.967-59.124-66.429-69.643-31.033-10.375-65.018-4.848-84.286 5.714z" fill="#f5ff04" fill-rule="evenodd"/>
434 <radialGradient 434 </clipPath>
435 inkscape:collect="always" 435 <filter id="hd">
436 xlink:href="#linearGradient3317" 436 <feGaussianBlur stdDeviation="6.589"/>
437 id="radialGradient3315" 437 </filter>
438 cx="543.6698" 438 <filter id="hc">
439 cy="147.3131" 439 <feGaussianBlur stdDeviation="1.505"/>
440 fx="543.6698" 440 </filter>
441 fy="147.3131" 441 <filter id="hb" x="-.243" y="-.391" width="1.487" height="1.782">
442 r="47.863216" 442 <feGaussianBlur stdDeviation="14.59"/>
443 gradientTransform="matrix(2.1382256,0,0,2.3382884,-77.03847,-101.68704)" 443 </filter>
444 gradientUnits="userSpaceOnUse" /> 444 <filter id="ha" x="-.146" y="-.235" width="1.292" height="1.47">
445 <radialGradient 445 <feGaussianBlur stdDeviation="4.444"/>
446 inkscape:collect="always" 446 </filter>
447 xlink:href="#linearGradient3537" 447 <filter id="gz">
448 id="radialGradient3543" 448 <feGaussianBlur stdDeviation=".606"/>
449 cx="385" 449 </filter>
450 cy="237.00504" 450 <clipPath id="if">
451 fx="385" 451 <path d="m709.29 844.51c54.286-1.429 126.04-15.052 170-26.786 44.053-11.757 125.89-36.347 175.36-57.857 49.339-21.453 113.6-59.282 154.29-92.143 40.508-32.721 52.39-55.82 60.714-33.571 8.37 22.368-16.407 56.326-37.857 81.071-21.604 24.923-52.731 52.705-98.929 89.286s-156.08 101.58-212.86 128.57c-57.066 27.125-128.2 58.238-172.14 72.5s-131.43 31.071-131.43 31.071l92.857-192.14z" enable-background="accumulate" fill="#121212" fill-rule="evenodd"/>
452 fy="237.00504" 452 </clipPath>
453 r="86.928574" 453 <mask id="gy" maskUnits="userSpaceOnUse">
454 gradientTransform="matrix(1,0,0,0.8562038,0,34.080427)" 454 <path d="m718.41-224.31l33.25 56 276-24 159.5-48.25-66.5-82.75-402.25 99z" fill="url(#w)" fill-rule="evenodd"/>
455 gradientUnits="userSpaceOnUse" /> 455 </mask>
456 <radialGradient 456 <clipPath id="gx">
457 inkscape:collect="always" 457 <path transform="translate(.08 -.031)" d="M1111.4-285.94l-3.937 1.875c-.041.01-.1.02-.125.031-.42.213-.165.1-.657.313-.486.21-1.737.584-4.093 1.469-3.332 1.25-5.805 2.15-7 3.062-1.537.021-3.72.233-5.657.719a227.677 227.677 0 0 1-6.75 1.594c-1.895.42-1.675.642-2.875.875-1.296.251-1.721-.01-5.437.78-3.49.743-8.895 1.932-10.156 2.688-1.584-.18-3.868-.321-5.844-.03-3.04.446-4.916.672-6.844.905-.655.08-1.04.201-1.344.282-.426.131-.685.26-1.375.343-1.311.16-1.762-.156-5.53.282-3.555.413-9.006 1.272-10.25 1.937-1.6-.297-3.859-.534-5.845-.344-3.058.294-4.972.484-6.906.657-1.934.172-1.688.422-2.906.53-1.316.119-1.76-.163-5.531.25-3.542.39-9.008 1.21-10.281 1.876-1.6-.295-3.887-.507-5.875-.313-3.059.3-4.941.48-6.875.657-.658.06-1.04.178-1.344.25-.428.119-.683.218-1.375.28-1.316.121-1.76-.194-5.531.22-3.556.39-9.006 1.239-10.25
458 xlink:href="#linearGradient3909" 4581.906-1.599-.294-3.86-.524-5.844-.313-3.056.326-4.974.527-6.906.719s-1.69.44-2.906.563c-1.315.131-1.763-.165-5.532.28-3.539.42-8.977 1.293-10.25 1.97-1.597-.281-3.86-.42-5.843-.188-3.052.358-4.945.568-6.875.781-.657.073-1.041.173-1.344.25-.427.128-.685.268-1.375.344-1.314.146-1.768-.174-5.531.313-3.55.458-8.979 1.419-10.22 2.125-1.593-.245-3.833-.382-5.812-.125-3.048.394-4.95.648-6.875.906-1.924.258-1.726.493-2.937.656-1.31.176-1.748-.104-5.5.469-3.525.538-8.924 1.699-10.188 2.437-1.588-.203-3.846-.254-5.813.094-3.026.536-4.899.862-6.812 1.188-.651.11-1.014.27-1.313.375-.42.164-.663.33-1.344.468-1.294.262-1.727-.006-5.437.813-3.499.772-8.846 2.383-10.062 3.219-1.563-.078-3.758.085-5.688.593-2.972.783-4.817 1.232-6.687 1.75s-1.667.768-2.844 1.094c-1.273.353-1.697.107-5.344 1.188-3.425 1.014-8.65 2.933-9.875 3.843-1.539.013-3.72.273-5.625.875-2.93.928-4.75 1.459-6.594
459 id="radialGradient3915" 4592.063-.626.205-.991.393-1.28.531-.408.214-.654.409-1.313.625-1.255.412-1.687.19-5.282 1.438-3.39 1.177-8.595 3.213-9.78 4.156-1.525.06-3.65.395-5.532 1.062-2.897 1.029-4.699 1.676-6.531 2.313-1.832.637-1.628.848-2.781 1.25-1.247.434-1.664.2-5.22 1.562-3.338 1.28-8.486 3.483-9.687 4.47-1.507.107-3.635.498-5.5 1.218a1047.26 1047.26 0 0 1-6.437 2.469c-.617.233-.997.442-1.281.594v.03l-8 3.188 1.812 14.72c-.258-.062 6.188 3.312 6.188 3.312.226-.145.449-.273.718-.375 1.08-.41 2.172-.216 6-1.688 3.829-1.471 5.224-2.005 5.907-2.406.68-.4 1.611-.88 2.218-1.531 1.827-.138 3.571-.493 4.938-1 2.968-1.1 4.875-1.806 6.781-2.469 1.906-.662 2.354-1.415 3.406-1.781 1.092-.38 2.195-.166 6.063-1.531 3.867-1.366 5.283-1.827 5.969-2.22.7-.4 1.7-.932 2.312-1.593 1.97-.055 3.817-.385 5.281-.875 3.002-1.005 4.927-1.622 6.844-2.25 1.539-.504 2.174-1.047 2.906-1.437.23-.135.476-.254.75-.344 1.099-.36 2.182-.082
460 cx="418.30365" 4606.094-1.313 3.912-1.23 5.366-1.673 6.063-2.03.694-.358 1.63-.794 2.25-1.407 1.865-.023 3.635-.267 5.03-.688 3.031-.913 4.993-1.43 6.938-1.968 1.945-.539 2.427-1.265 3.5-1.563 1.114-.31 2.22.007 6.188-1.031 3.967-1.039 5.417-1.433 6.125-1.75.735-.33 1.814-.754 2.437-1.375 1.998.116 3.858-.02 5.344-.375 3.078-.735 5.084-1.101 7.063-1.5 1.588-.32 2.244-.79 3-1.094a3.4 3.4 0 0 1 .75-.25c1.133-.23 2.304.209 6.343-.5 4.04-.709 5.5-.927 6.22-1.187.715-.26 1.704-.568 2.343-1.094 1.924.24 3.748.224 5.188 0 3.126-.488 5.154-.7 7.156-.969 2.001-.268 2.489-.945 3.594-1.094 1.146-.154 2.275.302 6.343-.219 4.068-.52 5.56-.695 6.282-.937.737-.247 1.798-.586 2.437-1.125 2.05.336 3.974.398 5.5.219 3.142-.37 5.18-.56 7.188-.782 1.61-.178 2.264-.608 3.03-.843.242-.086.495-.156.782-.188 1.15-.127 2.301.347 6.375-.125s5.559-.61 6.281-.844c.72-.232 1.7-.473 2.344-.968 1.936.333 3.77.404 5.219.25 3.146-.335
461 cy="342.47794" 4615.177-.519 7.187-.719 2.01-.2 2.484-.826 3.594-.938 1.151-.115 2.297.366 6.375-.062s5.589-.562 6.313-.781c.739-.224 1.795-.514 2.437-1.031 2.057.398 4.002.493 5.531.343 3.149-.308 5.176-.473 7.188-.656 1.614-.147 2.263-.56 3.031-.781.241-.081.494-.13.781-.156 1.152-.106 2.293.392 6.375 0s5.59-.531 6.313-.75c.72-.219 1.7-.448 2.343-.938 1.939.35 3.77.454 5.22.313 3.148-.309 5.175-.474 7.187-.657 2.011-.183 2.514-.838 3.625-.937 1.152-.103 2.292.385 6.375 0s5.588-.501 6.312-.719c.74-.222 1.796-.514 2.438-1.031 2.057.402 4.003.503 5.531.344 3.147-.329 5.177-.523 7.187-.72 1.613-.156 2.266-.63 3.032-.874.24-.088.463-.122.75-.156 1.148-.14 2.316.34 6.375-.25 4.058-.59 5.562-.778 6.281-1.032.717-.253 1.675-.558 2.312-1.093 1.92.212 3.72.151 5.157-.094 3.119-.533 5.111-.929 7.093-1.313 1.983-.383 2.475-1.04 3.563-1.28 1.129-.251 2.27.115 6.25-.876s5.43-1.42 6.125-1.781c.722-.376 1.762-.87
462 fx="418.30365" 4622.375-1.531 1.963-.012 3.794-.291 5.219-.844 2.95-1.145 4.873-1.87 6.687-2.75 1.456-.706 2.32-1.702 2.531-2 .213-.298.1-.729.125-.75.043-.035.34-.094.5-.437.86-1.848 2.324-5.628 2.438-6.313.114-.682.168-1.353.219-1.75.029-.23-.147-.879-.125-.937.03-.082.288-.251.343-.5.267-1.199.09-2.208-.125-3.625-.213-1.418-.971-4.615-1.625-5.47-.658-.861-1.224-1.01-1.75-1z" enable-background="new" fill="#bcb786" fill-rule="evenodd"/>
463 fy="342.47794" 463 </clipPath>
464 r="131.4509" 464 <filter id="gw">
465 gradientTransform="matrix(1.3957347,0.6211056,-0.4244067,0.9537174,-15.061913,-227.96711)" 465 <feGaussianBlur stdDeviation="1.168"/>
466 gradientUnits="userSpaceOnUse" /> 466 </filter>
467 <radialGradient 467 <filter id="gv" x="-.103" y="-.342" width="1.206" height="1.685">
468 inkscape:collect="always" 468 <feGaussianBlur stdDeviation="1.168"/>
469 xlink:href="#linearGradient3951" 469 </filter>
470 id="radialGradient3933" 470 <filter id="gu" x="-.099" y="-.226" width="1.198" height="1.453">
471 cx="397.16388" 471 <feGaussianBlur stdDeviation="1.168"/>
472 cy="336.95245" 472 </filter>
473 fx="397.16388" 473 <filter id="gt" x="-.098" y="-.198" width="1.196" height="1.397">
474 fy="336.95245" 474 <feGaussianBlur stdDeviation="1.168"/>
475 r="36.75" 475 </filter>
476 gradientUnits="userSpaceOnUse" 476 <filter id="gs">
477 gradientTransform="matrix(1.9449972,2.4894837e-7,-2.4894833e-7,1.9449969,-375.31868,-318.41912)" /> 477 <feGaussianBlur stdDeviation="1.168"/>
478 <linearGradient 478 </filter>
479 inkscape:collect="always" 479 <filter id="gr" x="-.098" y="-.198" width="1.197" height="1.395">
480 xlink:href="#linearGradient3961" 480 <feGaussianBlur stdDeviation="1.168"/>
481 id="linearGradient3959" 481 </filter>
482 x1="398.21429" 482 <filter id="gq" x="-.098" y="-.198" width="1.196" height="1.397">
483 y1="343.52289" 483 <feGaussianBlur stdDeviation="1.168"/>
484 x2="379.28571" 484 </filter>
485 y2="265.30862" 485 <filter id="gp" x="-.098" y="-.203" width="1.197" height="1.406">
486 gradientUnits="userSpaceOnUse" 486 <feGaussianBlur stdDeviation="1.168"/>
487 gradientTransform="translate(450.03125,73.843964)" /> 487 </filter>
488 <filter 488 <filter id="go" x="-.098" y="-.209" width="1.197" height="1.417">
489 inkscape:collect="always" 489 <feGaussianBlur stdDeviation="1.168"/>
490 id="filter3981" 490 </filter>
491 x="-0.30000001" 491 <filter id="gn" x="-.099" y="-.225" width="1.198" height="1.451">
492 width="1.6" 492 <feGaussianBlur stdDeviation="1.168"/>
493 y="-0.30000001" 493 </filter>
494 height="1.6"> 494 <filter id="gm" x="-.101" y="-.274" width="1.201" height="1.548">
495 <feGaussianBlur 495 <feGaussianBlur stdDeviation="1.168"/>
496 inkscape:collect="always" 496 </filter>
497 stdDeviation="2" 497 <filter id="gl" x="-.102" y="-.324" width="1.204" height="1.647">
498 id="feGaussianBlur3983" /> 498 <feGaussianBlur stdDeviation="1.168"/>
499 </filter> 499 </filter>
500 <radialGradient 500 <filter id="gk" x="-.103" y="-.364" width="1.207" height="1.729">
501 inkscape:collect="always" 501 <feGaussianBlur stdDeviation="1.168"/>
502 xlink:href="#linearGradient3985" 502 </filter>
503 id="radialGradient3991" 503 <filter id="gj" x="-.105" y="-.405" width="1.209" height="1.809">
504 cx="402.48898" 504 <feGaussianBlur stdDeviation="1.168"/>
505 cy="317.23578" 505 </filter>
506 fx="402.48898" 506 <filter id="gi">
507 fy="317.23578" 507 <feGaussianBlur stdDeviation="1.723"/>
508 r="23.714285" 508 </filter>
509 gradientUnits="userSpaceOnUse" 509 <filter id="gh">
510 gradientTransform="matrix(4.3776616,0,0,4.3776616,-1358.3025,-1070.7357)" /> 510 <feGaussianBlur stdDeviation=".35"/>
511 <clipPath 511 </filter>
512 clipPathUnits="userSpaceOnUse" 512 <filter id="gg" x="-.031" y="-.103" width="1.062" height="1.205">
513 id="clipPath3999"> 513 <feGaussianBlur stdDeviation=".35"/>
514 <path 514 </filter>
515 style="display:inline;opacity:1;fill:#f5ff04;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" 515 <filter id="gf">
516 d="m 179.64286,267.36218 c -22.41044,39.70292 -60.6161,115.78029 -69.28571,149.64286 -8.64721,33.7751 -8.77199,66.41654 -0.35715,86.42858 8.3602,19.88213 26.16398,35.6328 40.71428,41.42856 -0.59638,-14.37587 14.37295,-43.28583 72.85715,-72.5 58.62627,-29.28514 78.38163,-27.13086 103.57142,-47.14286 25.63006,-20.36176 12.61031,-67.04463 3.21429,-93.92857 -9.43424,-26.99328 -34.96741,-59.12448 -66.42857,-69.64285 -31.03327,-10.37532 -65.01776,-4.84837 -84.28571,5.71428 z" 516 <feGaussianBlur stdDeviation=".35"/>
517 id="path4001" 517 </filter>
518 sodipodi:nodetypes="czzczzzzc" 518 <filter id="ge">
519 inkscape:connector-curvature="0" /> 519 <feGaussianBlur stdDeviation=".35"/>
520 </clipPath> 520 </filter>
521 <radialGradient 521 <filter id="ff">
522 inkscape:collect="always" 522 <feGaussianBlur stdDeviation=".35"/>
523 xlink:href="#linearGradient4013" 523 </filter>
524 id="radialGradient4056" 524 <filter id="fe">
525 gradientUnits="userSpaceOnUse" 525 <feGaussianBlur stdDeviation=".35"/>
526 gradientTransform="matrix(1.1323239,0.7659488,-1.4550286,2.1510098,588.75376,-711.79716)" 526 </filter>
527 cx="228.81355" 527 <filter id="fd">
528 cy="440.26971" 528 <feGaussianBlur stdDeviation=".35"/>
529 fx="228.81355" 529 </filter>
530 fy="440.26971" 530 <filter id="fc">
531 r="119.17509" /> 531 <feGaussianBlur stdDeviation=".35"/>
532 <radialGradient 532 </filter>
533 inkscape:collect="always" 533 <filter id="fb">
534 xlink:href="#linearGradient4041" 534 <feGaussianBlur stdDeviation=".35"/>
535 id="radialGradient4060" 535 </filter>
536 gradientUnits="userSpaceOnUse" 536 <filter id="fa">
537 gradientTransform="matrix(0.05911206,2.6869855,-0.7234268,0.01591495,408.72779,-424.56452)" 537 <feGaussianBlur stdDeviation=".35"/>
538 cx="275.4422" 538 </filter>
539 cy="335.34866" 539 <filter id="ez">
540 fx="275.4422" 540 <feGaussianBlur stdDeviation=".35"/>
541 fy="335.34866" 541 </filter>
542 r="36.75" /> 542 <filter id="ey">
543 <radialGradient 543 <feGaussianBlur stdDeviation=".35"/>
544 inkscape:collect="always" 544 </filter>
545 xlink:href="#linearGradient4025" 545 <filter id="ex" x="-.031" y="-.109" width="1.062" height="1.219">
546 id="radialGradient4062" 546 <feGaussianBlur stdDeviation=".35"/>
547 gradientUnits="userSpaceOnUse" 547 </filter>
548 gradientTransform="matrix(0.05911206,2.6869855,-0.7234268,0.01591495,408.72779,-424.56452)" 548 <filter id="ew" x="-.031" y="-.121" width="1.063" height="1.243">
549 cx="275.4422" 549 <feGaussianBlur stdDeviation=".35"/>
550 cy="335.34866" 550 </filter>
551 fx="275.4422" 551 <clipPath id="ie">
552 fy="335.34866" 552 <path d="m266.27 924.57c-1.407 18.801-1.145 32.751 2.082 49.303 3.226 16.552 16.406 45.907 20.334 63.184 3.926 17.267 2.694 38.31-12.46 51.148-15.317 12.978-42.05 21.599-67.831 15.734s-69.55-49.223-88.59-70.228c-19.112-21.083-63.761-93.851-77.94-124.28-14.177-30.425-12.66-36.719-8.119-45.53-9.367-24.52-12.414-50.067-33.712-75.577 30.325 3.114 43.88 26.956 60.126 47.14-5.53-48.076-18.055-64.417-28.374-90.724 29.994 6.082 50.579 31.872 63.98 72.712 9.554-3.918 18.238-9.373 30.187-9.061-11.298-41.696-17.949-69.916-36.687-101.07 53.442 5.67 83.657 80.639 78.971 87.96 9.978-2.243 19.006-6.53 30.437-5.65-11.249-38.348-21.048-76.869-3.66-118.65 0 0 48.287 65.436 54.39 85.805 6.103 20.37 1.52 38.701 1.52 38.701s16.96 31.085 20.293 51.094c3.373 20.241-3.533 59.103-4.946 77.983z" enable-background="new" fill="#ada469" fill-rule="evenodd"/>
553 r="36.75" /> 553 </clipPath>
554 <linearGradient 554 <filter id="id">
555 inkscape:collect="always" 555 <feGaussianBlur stdDeviation="7.18"/>
556 xlink:href="#linearGradient4084" 556 </filter>
557 id="linearGradient4082" 557 <clipPath id="ic">
558 gradientUnits="userSpaceOnUse" 558 <path d="m266.27 924.57c-1.407 18.801-1.145 32.751 2.082 49.303 3.226 16.552 16.406 45.907 20.334 63.184 3.926 17.267 2.694 38.31-12.46 51.148-15.317 12.978-42.05 21.599-67.831 15.734s-69.55-49.223-88.59-70.228c-19.112-21.083-63.761-93.851-77.94-124.28-14.177-30.425-12.66-36.719-8.119-45.53-9.367-24.52-12.414-50.067-33.712-75.577 30.325 3.114 43.88 26.956 60.126 47.14-5.53-48.076-18.055-64.417-28.374-90.724 29.994 6.082 50.579 31.872 63.98 72.712 9.554-3.918 18.238-9.373 30.187-9.061-11.298-41.696-17.949-69.916-36.687-101.07 53.442 5.67 83.657 80.639 78.971 87.96 9.978-2.243 19.006-6.53 30.437-5.65-11.249-38.348-21.048-76.869-3.66-118.65 0 0 48.287 65.436 54.39 85.805 6.103 20.37 1.52 38.701 1.52 38.701s16.96 31.085 20.293 51.094c3.373 20.241-3.533 59.103-4.946 77.983z" enable-background="new" fill="#ada469" fill-rule="evenodd"/>
559 x1="182.35046" 559 </clipPath>
560 y1="256.11136" 560 <filter id="gd">
561 x2="145.53348" 561 <feGaussianBlur stdDeviation="6.82"/>
562 y2="542.20502" /> 562 </filter>
563 <clipPath 563 <clipPath id="ev">
564 clipPathUnits="userSpaceOnUse" 564 <path d="M760.16 935.83c6.794 18.903 10.494 33.3 11.89 51.212 1.397 17.912-3.783 51.801-2.9 70.656.881 18.845 8.133 40.099 27.345 48.969 19.419 8.966 49.319 10.211 74.12-3.146 24.8-13.357 57.4-70.326 70.974-97.309 13.624-27.084 38.76-114.5 44.66-149.77 5.9-35.27 2.551-41.3-4.617-49.055 2.64-27.84-1.5-54.935 13.11-87.186-30.249 11.826-37.382 40.161-48.319 65.505-8-50.933.21-71.273 3.319-101.22-29.065 14.778-42.862 47.114-45 92.857-10.924-1.304-21.391-4.434-33.571-.714-.264-46.023-1.464-76.889 8.91-114.21-53.254 21.027-62.946 106.59-56.052 112.78-10.883.535-21.371-1.297-32.857 2.857.638-42.57-.261-84.909-30-122.86 0 0-30.958 80.922-31.43 103.57s9.452 40.166 9.452 40.166-8.568 36.741-6.298 58.232c2.295 21.741 20.443 59.676 27.265 78.658z" enable-background="new" fill="#ada469" fill-rule="evenodd"/>
565 id="clipPath4100"> 565 </clipPath>
566 <path 566 <filter id="eu" x="-.144" y="-.103" width="1.288" height="1.206">
567 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.9000755px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" 567 <feGaussianBlur stdDeviation="7.389"/>
568 d="m 265.93541,126.68393 -18.76721,168.86308 174.10543,-73.12068 61.9544,88.65883 57.8844,-31.9903 -37.53442,-180.059677 -237.6426,27.648747 z" 568 </filter>
569 id="path4102" 569 <clipPath id="et">
570 sodipodi:nodetypes="ccccccc" 570 <path d="M760.16 935.83c6.794 18.903 10.494 33.3 11.89 51.212 1.397 17.912-3.783 51.801-2.9 70.656.881 18.845 8.133 40.099 27.345 48.969 19.419 8.966 49.319 10.211 74.12-3.146 24.8-13.357 57.4-70.326 70.974-97.309 13.624-27.084 38.76-114.5 44.66-149.77 5.9-35.27 2.551-41.3-4.617-49.055 2.64-27.84-1.5-54.935 13.11-87.186-30.249 11.826-37.382 40.161-48.319 65.505-8-50.933.21-71.273 3.319-101.22-29.065 14.778-42.862 47.114-45 92.857-10.924-1.304-21.391-4.434-33.571-.714-.264-46.023-1.464-76.889 8.91-114.21-53.254 21.027-62.946 106.59-56.052 112.78-10.883.535-21.371-1.297-32.857 2.857.638-42.57-.261-84.909-30-122.86 0 0-30.958 80.922-31.43 103.57s9.452 40.166 9.452 40.166-8.568 36.741-6.298 58.232c2.295 21.741 20.443 59.676 27.265 78.658z" enable-background="new" fill="#ada469" fill-rule="evenodd"/>
571 inkscape:connector-curvature="0" /> 571 </clipPath>
572 </clipPath> 572 <filter id="es" x="-.09" y="-.103" width="1.181" height="1.205">
573 <radialGradient 573 <feGaussianBlur stdDeviation="5.346"/>
574 inkscape:collect="always" 574 </filter>
575 xlink:href="#linearGradient4106" 575 <marker id="eq" overflow="visible" orient="auto">
576 id="radialGradient4112" 576 <path d="m-1.2 0l-1 1 3.5-1-3.5-1 1 1z" fill="#f8d615" fill-rule="evenodd" stroke="#f8d615" stroke-width=".2pt"/>
577 cx="250.22678" 577 </marker>
578 cy="475.09763" 578 <radialGradient id="r" cx="142.96" cy="107.09" r="66.982" gradientTransform="matrix(-.33248 .90223 -.95824 -.35312 305.29 19.909)" gradientUnits="userSpaceOnUse">
579 fx="250.22678" 579 <stop stop-color="#1e2323" offset="0"/>
580 fy="475.09763" 580 <stop stop-color="#181d1d" offset=".56"/>
581 r="95.98877" 581 <stop offset="1"/>
582 gradientTransform="matrix(1.2259004,-0.7077739,0.1413989,0.2449102,322.22326,608.91815)" 582 </radialGradient>
583 gradientUnits="userSpaceOnUse" /> 583 <radialGradient id="q" cx="317.79" cy="129.65" r="47.863" gradientTransform="matrix(1.0036 0 0 1.6613 -160.53 -96.205)" gradientUnits="userSpaceOnUse" xlink:href="#u"/>
584 <linearGradient 584 <radialGradient id="p" cx="325.31" cy="80.91" r="26.938" gradientTransform="matrix(2.0748 -.1578 .23824 3.1325 -550.77 -65.729)" gradientUnits="userSpaceOnUse">
585 inkscape:collect="always" 585 <stop stop-color="#283131" stop-opacity="0" offset="0"/>
586 xlink:href="#linearGradient4478" 586 <stop stop-color="#1e2424" stop-opacity="0" offset=".513"/>
587 id="linearGradient4484" 587 <stop offset="1"/>
588 x1="412.08926" 588 </radialGradient>
589 y1="404.91574" 589 <linearGradient id="kt" x1="347.9" x2="275.58" y1="1070.2" y2="867.98" gradientUnits="userSpaceOnUse">
590 x2="417.375" 590 <stop offset="0"/>
591 y2="401.82648" 591 <stop offset=".022"/>
592 gradientUnits="userSpaceOnUse" /> 592 <stop offset=".759"/>
593 <linearGradient 593 <stop stop-color="#232323" offset=".885"/>
594 inkscape:collect="always" 594 <stop stop-color="#595959" offset="1"/>
595 xlink:href="#linearGradient4478" 595 </linearGradient>
596 id="linearGradient4486" 596 <linearGradient id="kh" x1="603.84" x2="616.24" y1="627.85" y2="585.43" gradientTransform="translate(450.03 73.844)" gradientUnits="userSpaceOnUse" xlink:href="#t"/>
597 x1="411.91071" 597 <linearGradient id="el" x1="609.31" x2="560.83" y1="239.47" y2="262.86" gradientTransform="translate(450.03 73.844)" gradientUnits="userSpaceOnUse">
598 y1="404.91577" 598 <stop stop-color="#0a0c0c" offset="0"/>
599 x2="417.375" 599 <stop stop-color="#1f2727" stop-opacity="0" offset="1"/>
600 y2="401.82648" 600 </linearGradient>
601 gradientUnits="userSpaceOnUse" /> 601 <radialGradient id="ek" cx="543.67" cy="147.31" r="47.863" gradientTransform="matrix(2.1382 0 0 2.3383 -77.038 -101.69)" gradientUnits="userSpaceOnUse" xlink:href="#u"/>
602 <linearGradient 602 <radialGradient id="ef" cx="385" cy="237.01" r="86.929" gradientTransform="matrix(1 0 0 .8562 0 34.08)" gradientUnits="userSpaceOnUse">
603 inkscape:collect="always" 603 <stop stop-color="#ada469" offset="0"/>
604 xlink:href="#linearGradient4478" 604 <stop stop-color="#ada469" offset=".811"/>
605 id="linearGradient4488" 605 <stop stop-color="#fff" offset="1"/>
606 x1="411.91071" 606 </radialGradient>
607 y1="405.54077" 607 <linearGradient id="ee" x1="398.21" x2="379.29" y1="343.52" y2="265.31" gradientTransform="translate(450.03 73.844)" gradientUnits="userSpaceOnUse" xlink:href="#s"/>
608 x2="417.375" 608 <radialGradient id="ed" cx="397.16" cy="336.95" r="36.75" gradientTransform="translate(-375.32 -318.42) scale(1.945)" gradientUnits="userSpaceOnUse">
609 y2="401.82648" 609 <stop stop-color="#344040" offset="0"/>
610 gradientUnits="userSpaceOnUse" /> 610 <stop stop-color="#222929" offset=".5"/>
611 <linearGradient 611 <stop offset="1"/>
612 inkscape:collect="always" 612 </radialGradient>
613 xlink:href="#linearGradient4478" 613 <radialGradient id="ec" cx="402.49" cy="317.24" r="23.714" gradientTransform="translate(-1358.3 -1070.7) scale(4.3777)" gradientUnits="userSpaceOnUse">
614 id="linearGradient4490" 614 <stop offset="0"/>
615 x1="412.08926" 615 <stop stop-color="#1d1d1d" offset="1"/>
616 y1="405.54077" 616 </radialGradient>
617 x2="417.375" 617 <radialGradient id="eb" cx="250.23" cy="475.1" r="95.989" gradientTransform="matrix(1.2259 -.70777 .1414 .24491 322.22 608.92)" gradientUnits="userSpaceOnUse">
618 y2="401.82648" 618 <stop stop-color="#d9e002" offset="0"/>
619 gradientUnits="userSpaceOnUse" /> 619 <stop stop-color="#a9ae01" offset=".5"/>
620 <linearGradient 620 <stop stop-color="#717501" offset="1"/>
621 inkscape:collect="always" 621 </radialGradient>
622 xlink:href="#linearGradient4478" 622 <radialGradient id="m" cx="228.81" cy="440.27" r="119.18" gradientTransform="matrix(1.1323 .76595 -1.455 2.151 588.75 -711.8)" gradientUnits="userSpaceOnUse">
623 id="linearGradient4492" 623 <stop stop-color="#ff0" offset="0"/>
624 x1="411.73212" 624 <stop stop-color="#b2b200" offset="1"/>
625 y1="405.54077" 625 </radialGradient>
626 x2="417.375" 626 <radialGradient id="dz" cx="275.44" cy="335.35" r="36.75" gradientTransform="matrix(.05911 2.687 -.72343 .01591 408.73 -424.56)" gradientUnits="userSpaceOnUse">
627 y2="401.82648" 627 <stop stop-color="#ff0" offset="0"/>
628 gradientUnits="userSpaceOnUse" /> 628 <stop stop-color="#ff0" stop-opacity="0" offset="1"/>
629 <radialGradient 629 </radialGradient>
630 inkscape:collect="always" 630 <linearGradient id="l" x1="182.35" x2="145.53" y1="256.11" y2="542.21" gradientUnits="userSpaceOnUse">
631 xlink:href="#linearGradient4862" 631 <stop stop-color="#7d7d00" offset="0"/>
632 id="radialGradient4868" 632 <stop stop-color="#c6c700" offset=".364"/>
633 cx="429.56738" 633 <stop stop-color="#f6f800" offset="1"/>
634 cy="377.42877" 634 </linearGradient>
635 fx="429.56738" 635 <radialGradient id="dy" cx="296.34" cy="427.18" r="19.704" gradientTransform="translate(-599.29 -827.09) scale(2.9797)" gradientUnits="userSpaceOnUse">
636 fy="377.42877" 636 <stop stop-opacity="0" offset="0"/>
637 r="72.079735" 637 <stop offset="1"/>
638 gradientTransform="matrix(1,0,0,0.618034,0,144.16496)" 638 </radialGradient>
639 gradientUnits="userSpaceOnUse" /> 639 <radialGradient id="dx" cx="429.57" cy="377.43" r="72.08" gradientTransform="matrix(1 0 0 .61803 0 144.16)" gradientUnits="userSpaceOnUse">
640 <radialGradient 640 <stop stop-color="#e2e2e2" offset="0"/>
641 inkscape:collect="always" 641 <stop stop-color="#e2e2e2" stop-opacity="0" offset="1"/>
642 xlink:href="#linearGradient4870" 642 </radialGradient>
643 id="radialGradient4876" 643 <radialGradient id="dw" cx="437.7" cy="391.22" r="36.612" gradientTransform="matrix(1 0 0 .61803 0 149.43)" gradientUnits="userSpaceOnUse">
644 cx="437.6991" 644 <stop stop-color="#c7bd80" offset="0"/>
645 cy="391.21735" 645 <stop stop-color="#c7bd80" stop-opacity="0" offset="1"/>
646 fx="437.6991" 646 </radialGradient>
647 fy="391.21735" 647 <linearGradient id="dv" x1="412.09" x2="417.38" y1="404.92" y2="401.83" gradientUnits="userSpaceOnUse" xlink:href="#j"/>
648 r="36.611931" 648 <linearGradient id="du" x1="411.91" x2="417.38" y1="404.92" y2="401.83" gradientUnits="userSpaceOnUse" xlink:href="#j"/>
649 gradientTransform="matrix(1,0,0,0.618034,0,149.43174)" 649 <linearGradient id="ej" x1="411.91" x2="417.38" y1="405.54" y2="401.83" gradientUnits="userSpaceOnUse" xlink:href="#j"/>
650 gradientUnits="userSpaceOnUse" /> 650 <linearGradient id="ei" x1="412.09" x2="417.38" y1="405.54" y2="401.83" gradientUnits="userSpaceOnUse" xlink:href="#j"/>
651 <radialGradient 651 <linearGradient id="eh" x1="411.73" x2="417.38" y1="405.54" y2="401.83" gradientUnits="userSpaceOnUse" xlink:href="#j"/>
652 inkscape:collect="always" 652 <linearGradient id="jr" x1="1255.7" x2="893.7" y1="667.09" y2="858.01" gradientUnits="userSpaceOnUse" xlink:href="#n"/>
653 xlink:href="#linearGradient4013" 653 <linearGradient id="ft" x1="603.84" x2="616.24" y1="627.85" y2="585.43" gradientTransform="matrix(1.0057 0 0 2.3995 3424.4 -24.137)" gradientUnits="userSpaceOnUse" xlink:href="#t"/>
654 id="radialGradient3585" 654 <radialGradient id="fl" cx="418.3" cy="342.48" r="131.45" gradientTransform="matrix(1.3957 .62111 -.42441 .95372 -15.062 -227.97)" gradientUnits="userSpaceOnUse" xlink:href="#s"/>
655 gradientUnits="userSpaceOnUse" 655 <radialGradient id="fg" cx="275.44" cy="335.35" r="36.75" gradientTransform="matrix(.05911 2.687 -.72343 .01591 408.73 -424.56)" gradientUnits="userSpaceOnUse" xlink:href="#n"/>
656 gradientTransform="matrix(1.1323239,0.7659488,-1.4550286,2.1510098,588.75376,-711.79716)" 656 <clipPath id="ga">
657 cx="228.81355" 657 <path d="M3492.3 296.46H3930v902.66h-437.7z" fill="#fff"/>
658 cy="440.26971" 658 </clipPath>
659 fx="228.81355" 659 </defs>
660 fy="440.26971" 660 <g stroke-miterlimit="1">
661 r="119.17509" /> 661 <path d="M10.45 109.38h1876.7v1563H10.45z" enable-background="new" fill="#a8a8a8" stroke="#000" stroke-width="20.9"/>
662 <linearGradient 662 <path d="M2337.1 111.42h1878.8v1565H2337.1z" enable-background="new" fill="none" stroke="#000" stroke-width="20.925"/>
663 inkscape:collect="always" 663 <path d="M2358.4 132.96h1833.4v1522.9H2358.4z" enable-background="new" fill="#a8a8a8" stroke="#f83615" stroke-width="20.391"/>
664 xlink:href="#linearGradient4084" 664 </g>
665 id="linearGradient3587" 665 <g fill-rule="evenodd">
666 gradientUnits="userSpaceOnUse" 666 <path transform="translate(-2833.5 -4370) scale(10.727)" d="M304.64 526.65c-10 .357-18.214 2.857-18.214 2.857l7.5 6.071 10.357 3.572 16.071.357 22.5-5.357 7.857 1.071 20.357-2.143-10.357 6.786c5.46-1.023 17.393 3.57 9.643 5.357-1.74.402 13.929-4.643 13.929-4.643l2.5-4.642 3.571-9.286h11.43l18.213-4.643 3.572-5-16.071 1.071-12.143 2.143-14.643-5-70.692 16.708-5.38-5.279z" enable-background="new" filter="url(#ep)" opacity=".5"/>
667 x1="182.35046" 667 <g enable-background="new">
668 y1="256.11136" 668 <path transform="matrix(.71084 -.19374 .26296 .96481 552.25 332.01)" d="m245.12 100.05s-47.128-31.647-67.215-35.801c-20.038-4.144-38.473-3.318-51.934 13.607s-12.077 61.265-13.536 86.97 2.55 70.177 17.605 88.666c15.055 18.488 45.886 13.585 49.927 21.414 2.213 4.287 65.152-174.86 65.152-174.86z" enable-background="accumulate" fill="url(#r)"/>
669 x2="145.53348" 669 <path transform="matrix(.71084 -.19374 .26296 .96481 552.25 332.01)" d="M135.38 82.018s26.344 1.939 37.633 13.903c11.415 12.097 13.735 21.332 15.296 37.735 1.563 16.425-.85 28.418-7.814 36.037s-1.004 19.583-25.916 12.071-27.032-27.783-26.515-46.305c.517-18.529 7.316-53.441 7.316-53.441z" enable-background="accumulate" fill="url(#q)"/>
670 y2="542.20502" /> 670 <path transform="matrix(.71084 -.19374 .26296 .96481 552.25 332.01)" d="M135.65 81.927s-4.645 16.365.588 28.563c5.488 12.793 27.224 44.26 27.224 54.656l22.656-5c2.542-6.966 3.21-15.752 2.188-26.5-1.562-16.403-3.867-25.621-15.281-37.719-9.655-10.232-31.593-13.375-37.375-14z" enable-background="new" fill="url(#p)"/>
671 <clipPath 671 </g>
672 clipPathUnits="userSpaceOnUse" 672 <path d="m893.6 1350.3c-4.286 0.714-27.628 3.618-57.857 10s-57.314 4.966-135.79 17.33c-79.852 12.581-94.064 42.542-108.12 47.064-14.7 4.729-145.38-65.822-145.38-65.822l4.286-94.286s85.886-16.201 112.14-33.571c26.257-17.37 45.582-49.666 59.286-71.429s32.857-71.429 32.857-71.429l238.57 262.14z" enable-background="accumulate" stroke="#000"/>
673 id="clipPath8514"> 673 <path transform="translate(324.57 331.53)" d="m332.34 898.39l-32.732-61.3-37.617 45.106c2.177 1.317 5.774-20.856 45.6-64.417l24.749 80.61z" clip-path="url(#eo)" enable-background="accumulate" fill="#fff" filter="url(#kv)" opacity=".5"/>
674 <path 674 <path transform="translate(324.57 331.53)" d="m200.82 863.03l146.37-51.619 243.95 226.27-241.83 140.01-181.02-87.681 32.527-226.98z" clip-path="url(#ku)" enable-background="accumulate" fill="url(#kt)" filter="url(#ks)"/>
675 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#262f2f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" 675 <path d="m691.46 835.66s-29.554 40.573-47.857 74.286-58.621 126.36-70.357 171.07c-11.759 44.803-62.5 123.57-62.5 123.57l76.071 18.214s11.807-12.823 31.071-46.071 60.357-138.57 60.357-138.57l13.214-202.5z" enable-background="accumulate" fill="#0f0f0f"/>
676 d="m 352.24553,211.99185 c -3.80443,-25.26423 -16.80972,-50.63802 -17.1568,-75.52523 -0.18626,-13.35552 3.27285,-26.57091 13.75553,-39.554046 36.34702,-65.295835 116.94091,-84.694685 185.93466,-91.465427 86.92239,-11.016801 184.91267,17.940072 233.37134,95.401283 54.12402,75.7333 56.67476,172.53912 80.61204,259.52795 29.43779,127.1276 54.77914,256.21414 60.39224,386.85035 -3.06348,78.18185 -8.42634,165.18415 -60.50321,228.13413 -48.02654,50.35744 -122.78647,50.05304 -187.06988,59.00234 -90.55539,4.655 -184.35153,-16.1458 -261.7839,-64.19824 -64.77564,-37.94001 -95.73019,-113.47863 -97.2794,-186.01958 -8.38917,-79.87516 26.39152,-153.80851 51.6204,-227.15961 7.47061,-82.76107 9.41286,-166.24775 9.65334,-249.38484 -0.83682,-32.19544 -7.08953,-63.81733 -11.54636,-95.60908 z" 676 <path transform="translate(324.57 331.53)" d="m430.28 381.94c-7.071 2.828-236.18 32.152-236.18 32.152l-39.64 359.83 90.198 92.64 52.326-114.55 100.47-186.39 32.828-183.68z" clip-path="url(#kr)" enable-background="accumulate" fill="#fff" filter="url(#kq)" opacity=".4"/>
677 id="path8516" 677 <path d="m1018.2 1359.5s23.256 11.394 36.068 20.476c12.697 9.001 29.472 24.649 41.692 37.36 12.306 12.8 20.113 22.599 41.533 24.161 21.432 1.563 53.282-8.788 73.296-24.664 20.014-15.877 45.647-69.233 45.647-69.233l-127.16-143.07" enable-background="accumulate" stroke="#000"/>
678 sodipodi:nodetypes="cscccccccccccc" 678 <path transform="translate(324.57 331.53)" d="M331.34 641.5L216.17 835.36l44.042 90.598 97.581-193.75-26.456-90.711z" clip-path="url(#kp)" enable-background="accumulate" filter="url(#ko)" opacity=".75"/>
679 inkscape:connector-curvature="0" /> 679 <g enable-background="new">
680 </clipPath> 680 <path d="M1113.913 623.101l-.09-.002c-1.48.72-6.744.842-7.674 8.704-.872 7.373 12.962 18.694 14.976 19.936 1.626 1.001 3.407 1.81 5.174 2.325l1.403.382c1.883.43 3.679.575 5.134.496 3.16-.173 5.184-.339 7.197-.493 2.013-.155 2.577-.75 3.686-.866 1.15-.12 2.242.375 6.309-.155 4.066-.53 5.556-.79 6.288-1.07.76-.29 1.85-.663 2.534-1.25 1.952.213 3.803.145 5.281-.241 3.063-.8 5.055-1.3 6.958-1.968 1.527-.536 2.499-1.426 2.744-1.698.245-.271.181-.712.21-.73.046-.03.348-.055.546-.378 1.065-1.737 2.951-5.325 3.143-5.993.191-.664.322-1.324.417-1.713.056-.225-.045-.89-.017-.946.04-.078.315-.216.399-.457.402-1.16.34-2.183.29-3.616-.05-1.433-.438-4.695-.99-5.618-.353-.593-.703-.88-1.044-1.033-.065-.025-.118-.06-.18-.083-.02-.007-.042-.002-.061-.007-.301-.111-.586-.228-1.124-.35-.966-.22-2.379-.535-3.914-.702a19.278 19.278 0 0
681 <clipPath 6810-1.563-.085c-3.571-.097-9.064-.045-10.338.446-1.584-.518-3.852-1.06-5.845-1.144-3.069-.13-4.974-.228-6.914-.324-1.94-.095-1.72.194-2.941.134-1.32-.065-1.75-.426-5.537-.543-3.556-.11-9.035-.04-10.338.447-1.584-.52-3.85-1.06-5.845-1.144-3.07-.131-4.978-.197-6.918-.293-.66-.032-1.05.004-1.356.033z" enable-background="new" fill="#bcb786"/>
682 clipPathUnits="userSpaceOnUse" 682 <g transform="rotate(2.568 -22364 20373)" clip-path="url(#kn)" enable-background="new" filter="url(#km)">
683 id="clipPath8604"> 683 <path d="M229.94-409.12c-3.558.05-9.024.36-10.303.904-1.606-.447-3.903-.881-5.9-.877a979.03 979.03 0 0 1-6.907 0c-.66-.003-1.048.068-1.353.11v1.096c.12-.18.393-.69.95-.767.747-.103 5.17-.151 7.31-.11 1.775.035 4.455.274 6.39.96.32.113.618.273.891.41 1.964.987 7.944 4.302 7.944 4.302s-6.633-3.948-7.483-4.439c-.203-.117-.575-.258-1.036-.41 1.22-.449 5.076-.62 7.828-.713 3.024-.102 3.348-.09 5.41.192 2.13.29 3.34.602 3.34.602s-.08-.64 1.035-.794c.748-.103 5.17-.152 7.31-.11 2.07.04 5.366.407 7.282 1.37 1.003.504 3.035 1.569 4.795 2.536l.096-.02s-3.58-2.162-4.43-2.653c-.204-.117-.575-.258-1.037-.411 1.22-.448 5.047-.62 7.8-.712 3.024-.102 3.347-.09 5.41.191 1.954.267 3.013.53 3.195.576l-.027-.312a8.503 8.503 0 0 0-1.4-.357c-1.301-.235-3.4-.602-5.51-.564-3.571.064-9.052.356-10.302.904-1.606-.447-3.877-.881-5.871-.877-3.072.007-4.994.01-6.936
684 <path 6840-1.943-.009-1.713.28-2.936.274-1.322-.005-1.766-.354-5.555-.301M206.2-407.48c1.92.817 4.577 2.193 6.159 3.397s2.908 1.774 5.555 3.918c.885.718 1.748 1.35 2.591 1.922l.541-.19a57.511 57.511 0 0 1-2.269-1.622c-2.822-2.12-3.627-2.81-6.015-4.274s-4.1-2.366-6.562-3.15" enable-background="new"/>
685 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#262f2f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" 685 <path d="M237.8-407.48c1.92.817 4.606 2.193 6.188 3.397.813.62 1.558 1.07 2.45 1.654l.65-.116a40.414 40.414 0 0 0-2.697-1.784c-2.389-1.465-4.128-2.366-6.59-3.151" enable-background="new"/>
686 d="m 352.24553,211.99185 c -3.80443,-25.26423 -16.80972,-50.63802 -17.1568,-75.52523 -0.18626,-13.35552 3.27285,-26.57091 13.75553,-39.554046 36.34702,-65.295835 116.94091,-84.694685 185.93466,-91.465427 86.92239,-11.016801 184.91267,17.940072 233.37134,95.401283 54.12402,75.7333 56.67476,172.53912 80.61204,259.52795 29.43779,127.1276 54.77914,256.21414 60.39224,386.85035 -3.06348,78.18185 -8.42634,165.18415 -60.50321,228.13413 -48.02654,50.35744 -122.78647,50.05304 -187.06988,59.00234 -90.55539,4.655 -184.35153,-16.1458 -261.7839,-64.19824 -64.77564,-37.94001 -95.73019,-113.47863 -97.2794,-186.01958 -8.38917,-79.87516 26.39152,-153.80851 51.6204,-227.15961 7.47061,-82.76107 9.41286,-166.24775 9.65334,-249.38484 -0.83682,-32.19544 -7.08953,-63.81733 -11.54636,-95.60908 z" 686 </g>
687 id="path8606" 687 <g transform="rotate(6.561 -6814.9 734.73)" clip-path="url(#kl)">
688 sodipodi:nodetypes="cscccccccccccc" 688 <path d="M1056.2-278.8c4.145-1.479 10 3.125 10 3.125.899.28 2.725-.894 2.624-1.686 0 0-1.55-1.86-.374-2.939s5.296 1.507 7.5 1.625 5.562-.23 7-.75 1.113-1.425 2.625-1.75 5.119 1.038 7.06 1.169 4.649.334 5.815-.169.178-1.16 1.875-1.875 7.76-.957 9.625-.125 1.81.52 2.625 3 7.44 5.163-1.125 13.375-59.378 13.786-65.625 2.75 6.23-14.271 10.375-15.75z" enable-background="new" filter="url(#kk)" opacity=".75"/>
689 inkscape:connector-curvature="0" /> 689 <path d="M1058.5-275.43c4.145-1.479 10 3.125 10 3.125.899.28 2.725-.894 2.624-1.686 0 0-1.55-1.86-.374-2.939s5.296 1.507 7.5 1.625 5.562-.23 7-.75 1.113-1.425 2.625-1.75 5.119 1.038 7.06 1.169 4.649.334 5.815-.169.178-1.16 1.875-1.875 7.76-.957 9.625-.125 1.81.52 2.625 3 7.44 5.163-1.125 13.375-59.378 13.786-65.625 2.75 6.23-14.271 10.375-15.75z" enable-background="new" filter="url(#kj)" opacity=".75"/>
690 </clipPath> 690 </g>
691 <clipPath 691 </g>
692 clipPathUnits="userSpaceOnUse" 692 <path d="M676.821 543.52c-3.804-25.264-16.81-50.638-17.157-75.525-.186-13.356 3.273-26.571 13.756-39.554 36.347-65.296 116.94-84.695 185.93-91.465 86.922-11.017 184.91 17.94 233.37 95.401 54.124 75.733 56.675 172.54 80.612 259.53 29.438 127.13 54.779 256.21 60.392 386.85-3.063 78.182-8.426 165.18-60.503 228.13-48.026 50.357-122.79 50.053-187.07 59.002-90.555 4.655-184.35-16.146-261.78-64.198-64.776-37.94-95.73-113.48-97.279-186.02-8.39-79.875 26.392-153.81 51.62-227.16 7.47-82.761 9.413-166.25 9.653-249.38-.837-32.195-7.09-63.817-11.546-95.609z" enable-background="accumulate" fill="#101414"/>
693 id="clipPath8610"> 693 <path transform="translate(324.57 331.53)" d="M311.83 415.43l9.9 121.62-60.105 136.47 15.556 174.66c15.613 61.879 32.185 98.669 74.376 117.05 4.32-36.24-38.612-142.96-39.243-189.12-.631-46.184 10.83-108.61 30.678-158.3 20.048-50.192 36.897-44.846 42.125-92.593s-17.426-149.39-17.426-149.39l-55.86 39.598z" clip-path="url(#en)" enable-background="accumulate" fill="#fff" filter="url(#ki)" opacity=".25"/>
694 <path 694 <path transform="translate(48.571 195.53)" d="m1010 655.49s16.755 37.018 28.702 53.954c11.946 16.936 52.727 56.046 52.727 56.046l52.597-127.59" enable-background="accumulate" fill="url(#kh)"/>
695 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#262f2f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" 695 <path transform="translate(324.57 331.53)" d="m730.32 536.57c0 8.485 42.548 58.468 42.548 58.468l12.607-28.77-55.154-29.698z" clip-path="url(#kg)" enable-background="accumulate" fill="#fff" filter="url(#kf)" opacity=".08"/>
696 d="m 352.24553,211.99185 c -3.80443,-25.26423 -16.80972,-50.63802 -17.1568,-75.52523 -0.18626,-13.35552 3.27285,-26.57091 13.75553,-39.554046 36.34702,-65.295835 116.94091,-84.694685 185.93466,-91.465427 86.92239,-11.016801 184.91267,17.940072 233.37134,95.401283 54.12402,75.7333 56.67476,172.53912 80.61204,259.52795 29.43779,127.1276 54.77914,256.21414 60.39224,386.85035 -3.06348,78.18185 -8.42634,165.18415 -60.50321,228.13413 -48.02654,50.35744 -122.78647,50.05304 -187.06988,59.00234 -90.55539,4.655 -184.35153,-16.1458 -261.7839,-64.19824 -64.77564,-37.94001 -95.73019,-113.47863 -97.2794,-186.01958 -8.38917,-79.87516 26.39152,-153.80851 51.6204,-227.15961 7.47061,-82.76107 9.41286,-166.24775 9.65334,-249.38484 -0.83682,-32.19544 -7.08953,-63.81733 -11.54636,-95.60908 z" 696 </g>
697 id="path8612" 697 <g transform="translate(498.6 269.37)" clip-path="url(#ke)" enable-background="new">
698 sodipodi:nodetypes="cscccccccccccc" 698 <g transform="translate(-174.03 62.156)" filter="url(#em)">
699 inkscape:connector-curvature="0" /> 699 <g filter="url(#i)">
700 </clipPath> 700 <path d="M425.88 476.99c10.805-1.479 24.744 3.354 44.643 3.214s57.453-16.91 82.143-17.143 62.752 12.284 79.286 15 22.848-.158 27.5 7.857 1.927 10.747-10.357 20.714-40.79 12.636-66.071 12.857c-25.282.221-70.381 7.079-95.357 3.93s-56.938-7.824-68.929-17.858-19.851-16.732-17.5-23.929 13.837-3.164 24.643-4.643z" enable-background="new" fill="#fff" fill-rule="evenodd"/>
701 <clipPath 701 <path d="M343.65 412.6h381.84v181.02H343.65z" enable-background="accumulate" fill="none"/>
702 clipPathUnits="userSpaceOnUse" 702 </g>
703 id="clipPath8616"> 703 <g filter="url(#i)">
704 <path 704 <path d="m861.17 390.2c-10.462 9.714-86.98 19.005-100.71 29.286s-14.753 12.888-12.143 20 6.545 9.406 25.714 8.571 98.571-27.622 98.571-21.429l-11.429-36.429z" enable-background="new" fill="#fff" fill-rule="evenodd"/>
705 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#262f2f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" 705 <path d="M702.86 344.82h207.89v162.63H702.86z" enable-background="accumulate" fill="none"/>
706 d="m 352.24553,211.99185 c -3.80443,-25.26423 -16.80972,-50.63802 -17.1568,-75.52523 -0.18626,-13.35552 3.27285,-26.57091 13.75553,-39.554046 36.34702,-65.295835 116.94091,-84.694685 185.93466,-91.465427 86.92239,-11.016801 184.91267,17.940072 233.37134,95.401283 54.12402,75.7333 56.67476,172.53912 80.61204,259.52795 29.43779,127.1276 54.77914,256.21414 60.39224,386.85035 -3.06348,78.18185 -8.42634,165.18415 -60.50321,228.13413 -48.02654,50.35744 -122.78647,50.05304 -187.06988,59.00234 -90.55539,4.655 -184.35153,-16.1458 -261.7839,-64.19824 -64.77564,-37.94001 -95.73019,-113.47863 -97.2794,-186.01958 -8.38917,-79.87516 26.39152,-153.80851 51.6204,-227.15961 7.47061,-82.76107 9.41286,-166.24775 9.65334,-249.38484 -0.83682,-32.19544 -7.08953,-63.81733 -11.54636,-95.60908 z" 706 </g>
707 id="path8618" 707 </g>
708 sodipodi:nodetypes="cscccccccccccc" 708 <g enable-background="new" opacity=".18">
709 inkscape:connector-curvature="0" /> 709 <g transform="translate(-174.03 62.156)" filter="url(#i)">
710 </clipPath> 710 <path d="M425.88 476.99c10.805-1.479 24.744 3.354 44.643 3.214s57.453-16.91 82.143-17.143 62.752 12.284 79.286 15 22.848-.158 27.5 7.857 1.927 10.747-10.357 20.714-40.79 12.636-66.071 12.857c-25.282.221-70.381 7.079-95.357 3.93s-56.938-7.824-68.929-17.858-19.851-16.732-17.5-23.929 13.837-3.164 24.643-4.643z" enable-background="new" fill="#fff" fill-rule="evenodd"/>
711 <clipPath 711 <path d="M343.65 412.6h381.84v181.02H343.65z" enable-background="accumulate" fill="none"/>
712 clipPathUnits="userSpaceOnUse" 712 </g>
713 id="clipPath8622"> 713 <g transform="translate(-174.03 62.156)" filter="url(#i)">
714 <path 714 <path d="m861.17 390.2c-10.462 9.714-86.98 19.005-100.71 29.286s-14.753 12.888-12.143 20 6.545 9.406 25.714 8.571 98.571-27.622 98.571-21.429l-11.429-36.429z" enable-background="new" fill="#fff" fill-rule="evenodd"/>
715 style="display:inline;opacity:1;fill:#202020;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" 715 <path d="M702.86 344.82h207.89v162.63H702.86z" enable-background="accumulate" fill="none"/>
716 d="m 821.64329,477.88997 c 0,0 22.61947,-6.50681 35.74275,-5.87273 13.12328,0.63409 30.64158,1.93862 43.70885,12.18619 13.06727,10.24756 25.06774,27.14007 34.11239,58.36965 9.04465,31.22958 1.69832,99.25201 -6.17603,143.34735 -7.87435,44.09534 -28.2651,106.11298 -45,140 -16.7349,33.88702 -49.79771,77.4952 -60.56943,89.87616 -11.36422,13.06197 -56.20589,36.42617 -79.43057,42.26667 5.3033,-10.6066 48.89976,-50.58884 35,-60.71426 -14.01897,-10.21226 -45.76009,45.98236 -84.29315,29.03317 21.38231,-13.13212 41.7794,-51.18606 34.04061,-66.59445 -7.84025,-15.61039 -30.70493,48.75757 -93.53554,37.01288 30.05204,-27.52666 55.40706,-70.90401 41.2627,-82.9797 -14.41516,-12.30687 -60.46175,54.29315 -60.46175,54.29315 0,0 -2.8219,-41.70118 13.7732,-68.60732 16.63935,-26.97787 79.65297,-81.61527 99.55313,-111.70342 19.90015,-30.08814 33.61256,-66.00902 42.13542,-92.51794 8.52286,-26.50892 15.80094,-77.09954 15.80094,-77.09954" 716 </g>
717 id="path8624" 717 </g>
718 sodipodi:nodetypes="czzzzzzczczczczzzc" 718 </g>
719 inkscape:connector-curvature="0" /> 719 <g transform="translate(48.571 195.53)" fill-rule="evenodd">
720 </clipPath> 720 <path transform="translate(276 136)" d="m582.66-7.418l113.14 86.267 108.89 258.8 38.184 207.89 120.21 91.924s-12.728-287.09-19.799-313.96-149.91-393.15-149.91-393.15l-210.72 62.225z" clip-path="url(#kd)" enable-background="accumulate" filter="url(#kc)" opacity=".75"/>
721 <clipPath 721 <path d="m964.14 239.6s8.677 10.897 24.107 11.964c15.43 1.068 49.722-39.953 70.179-52.143 20.479-12.204 47.046-26.602 63.929-20.357 16.882 6.245 22.158 26.436 27.857 48.036 5.7 21.6 6.719 61.814-2.679 92.857-9.397 31.043-50.502 73.104-65.356 103.39s-11.607 39.821-11.607 39.821" enable-background="accumulate" fill="url(#el)"/>
722 clipPathUnits="userSpaceOnUse" 722 <path d="m1124.5 207.63c-15.893-0.893-49.719 12.106-66.071 24.286-16.439 12.244-29.221 24.114-29.286 52.143-0.065 28.206 13.119 39.076 29.107 46.964s33.686 7.12 51.964-11.786c18.278-18.905 14.286-111.61 14.286-111.61z" enable-background="new" fill="url(#ek)"/>
723 id="clipPath8642"> 723 <ellipse transform="matrix(.94347 -.12399 .14401 1.0958 451.95 134.6)" cx="385" cy="237.01" rx="86.429" ry="73.929" clip-path="url(#kb)" enable-background="accumulate" fill="url(#ef)" filter="url(#je)" opacity=".75"/>
724 <path 724 <path transform="translate(450.03 73.844)" d="m527.61 407.45s-122.04 38.403-187.51 9.632c-65.473-28.772-74.377-124.72-74.377-124.72s73.382-80.504 129.92-83.615c55.827-3.072 90.574 20.143 114.87 65.852 24.352 45.813 17.101 132.85 17.101 132.85z" enable-background="accumulate" fill="url(#jd)" mask="url(#jc)"/>
725 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#0f0f0f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" 725 <path d="m772.17 393.35s36.218-27.382 51.607-35.893c15.177-8.393 25.714-11.607 35.893-11.607l-15.536 66.964" enable-background="accumulate" fill="url(#ee)"/>
726 d="m 366.88839,504.13471 c 0,0 -29.55406,40.57305 -47.85714,74.28571 -18.30309,33.71267 -58.62109,126.35694 -70.35714,171.07143 -11.7594,44.80344 -62.5,123.57144 -62.5,123.57144 l 76.07143,18.21428 c 0,0 11.80712,-12.82335 31.07142,-46.07143 19.2643,-33.24808 60.35715,-138.57143 60.35715,-138.57143 l 13.21428,-202.5 z" 726 <circle transform="translate(449.5 74.915)" cx="409.29" cy="306.65" r="36.25" enable-background="accumulate" fill="url(#ed)"/>
727 id="path8644" 727 <path transform="translate(276 136)" d="m311.83 415.43l9.9 121.62-60.105 136.47 15.556 174.66c15.613 61.879 32.185 98.669 74.376 117.05 4.32-36.24 8.682-72.368-31.243-223.12l17.678-69.296 72.125-138.59-42.426-158.39-55.86 39.598z" clip-path="url(#en)" enable-background="accumulate" fill="#fff" filter="url(#jb)" opacity=".3"/>
728 sodipodi:nodetypes="czzcczcc" 728 <path d="m635.21 581.13c-14.142 12.728 39.233 34.58 76.368 24.042s104.64-35.564 103.24-79.196c-1.407-43.632-76.368-128.69-76.368-128.69l-103.24 183.85z" enable-background="accumulate" filter="url(#ja)" opacity=".5"/>
729 inkscape:connector-curvature="0" /> 729 <circle transform="translate(449.67 74.915)" cx="410" cy="306.65" r="23.214" enable-background="accumulate" fill="url(#ec)"/>
730 </clipPath> 730 <circle transform="translate(452 73.487)" cx="414.29" cy="303.08" r="7.5" enable-background="accumulate" fill="#fff" filter="url(#iz)" stroke="#000" stroke-linejoin="bevel"/>
731 <clipPath 731 <path d="m789.32 478.35s7.023 19.569-1.071 35-42.323 38.988-67.5 50c-25.31 11.07-85.473 32.964-101.79 41.964-16.461 9.082-18.214 12.679-18.214 12.679s-7.147-19.064 28.75-51.786c36.172-32.972 142.03-48.05 159.82-87.857z" enable-background="accumulate" fill="url(#eb)"/>
732 clipPathUnits="userSpaceOnUse" 732 </g>
733 id="clipPath8658"> 733 <g enable-background="new">
734 <path 734 <g transform="translate(829.32 270.09)" fill-rule="evenodd">
735 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#0b0b0b;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" 735 <path transform="translate(-329.81)" d="M179.64 267.36c-22.41 39.703-60.616 115.78-69.286 149.64-8.647 33.775-8.772 66.417-.357 86.429 8.36 19.882 26.164 35.633 40.714 41.429-.597-14.376 14.373-43.286 72.857-72.5 58.626-29.285 78.382-27.131 103.57-47.143 25.63-20.362 8.206-79.647 3.214-93.929s-1.236-3.38-1.946-5.093c-10.689-25.816-34.214-54.43-64.483-64.55s-65.018-4.848-84.286 5.714z" clip-path="url(#ea)" fill="url(#m)"/>
736 d="m 569.03125,1018.7776 c -4.28571,0.7143 -27.62815,3.6181 -57.85714,10 -30.22899,6.3819 -99.77493,25.9619 -142.85715,35.7143 -43.08222,9.7524 -117.26443,34.816 -156.91262,27.2654 -39.64818,-7.5506 -89.51595,-64.4083 -89.51595,-64.4083 l 4.28572,-94.28571 c 0,0 85.88551,-16.20094 112.14285,-33.57143 26.25735,-17.37049 45.58238,-49.66598 59.28572,-71.42857 13.70334,-21.76259 32.85714,-71.42858 32.85714,-71.42858 l 238.57143,262.14289 z" 736 <ellipse transform="rotate(28.068 -88.085 -332.1)" cx="183.57" cy="338.08" rx="64.716" ry="134.01" enable-background="accumulate" fill="url(#dz)"/>
737 id="path8660" 737 <ellipse transform="rotate(28.068 -43.578 -333.81)" cx="183.57" cy="338.08" rx="64.716" ry="134.01" enable-background="accumulate" fill="url(#iy)"/>
738 sodipodi:nodetypes="czzzcczzcc" 738 </g>
739 inkscape:connector-curvature="0" /> 739 <path transform="translate(499.51 270.09)" d="M179.64 267.36c-22.41 39.703-60.616 115.78-69.286 149.64-8.647 33.775-8.772 66.417-.357 86.429 8.36 19.882 26.164 35.633 40.714 41.429-.597-14.376 14.373-43.286 72.857-72.5 58.626-29.285 78.382-27.131 103.57-47.143 25.63-20.362 8.206-79.647 3.214-93.929s-1.236-3.38-1.946-5.093c-10.689-25.816-34.214-54.43-64.483-64.55s-65.018-4.848-84.286 5.714z" clip-path="url(#ea)" enable-background="new" fill="none" filter="url(#ix)" stroke="url(#l)" stroke-width="20.8"/>
740 </clipPath> 740 </g>
741 <filter 741 <g transform="translate(48.571 195.53)" fill-rule="evenodd">
742 inkscape:collect="always" 742 <circle transform="translate(452.56 72.581)" cx="310.71" cy="398.08" r="19.704" enable-background="accumulate" stroke="#000" stroke-linejoin="bevel"/>
743 id="filter8802" 743 <circle transform="translate(450.56 72.581)" cx="310.71" cy="398.08" r="19.704" enable-background="accumulate" fill="url(#m)" filter="url(#iw)" stroke="url(#l)" stroke-width="20.8"/>
744 x="-0.35311759" 744 <circle transform="translate(450.56 72.581)" cx="310.71" cy="398.08" r="19.704" enable-background="accumulate" fill="url(#dy)"/>
745 width="1.7062352" 745 <ellipse transform="rotate(-4.471 1823.1 -5529.2)" cx="429.57" cy="377.43" rx="72.08" ry="44.548" enable-background="accumulate" fill="url(#dx)" filter="url(#iv)"/>
746 y="-0.1817714" 746 <ellipse transform="matrix(1.4358 -.07 .07 1.4358 235.18 -63.865)" cx="437.7" cy="391.22" rx="36.612" ry="22.627" enable-background="accumulate" fill="url(#dw)" filter="url(#iu)"/>
747 height="1.3635428"> 747 <g transform="translate(450.03 73.844)" enable-background="new" filter="url(#it)">
748 <feGaussianBlur 748 <circle cx="413.66" cy="401.83" r="3.214" enable-background="accumulate" stroke="url(#dv)"/>
749 inkscape:collect="always" 749 <circle transform="translate(13.125 8.125)" cx="413.66" cy="401.83" r="3.214" enable-background="accumulate" stroke="url(#du)"/>
750 stdDeviation="48.038491" 750 <circle transform="translate(32.946 7.5)" cx="413.66" cy="401.83" r="3.214" enable-background="accumulate" stroke="url(#ej)"/>
751 id="feGaussianBlur8804" /> 751 <circle transform="translate(24.911 -10.268)" cx="413.66" cy="401.83" r="3.214" enable-background="accumulate" stroke="url(#ei)"/>
752 </filter> 752 <circle transform="translate(47.589 -.625)" cx="413.66" cy="401.83" r="3.214" enable-background="accumulate" stroke="url(#eh)"/>
753 <filter 753 </g>
754 inkscape:collect="always" 754 </g>
755 id="filter8806" 755 <g fill="none" stroke="#000">
756 x="-0.61142862" 756 <path d="M944.771 678.46c.985 4.35 4.537 6.18 7.387 7.892 4.46 2.513 6.52 1.522 9.154-.758 1.602-1.921 10.683-4.698 15.594-7.07 4.33-1.46 8.904-5.36 13.385-8.335 3.395-1.627 5.347.355 7.829 1.01 2.944.717 4.411 2.172 6.06 3.536 2.397 1.175-.927 3.143 3.284 4.293 1.19.218 2.417.577 3.283-.505" enable-background="new"/>
757 width="2.2228572" 757 <path d="M959.421 670.88c2.315-.032 3.178.643 5.493-.82 3.455-3.082 5.402-3.146 7.955-4.42 3.026-1.315 6.535 8.152 10.102 9.849 2.395-.822 1.289 1.794 1.452 2.651.057 2.647 2.807 3.679 4.356 5.43 3.316 2.256 7.375 6.296 11.112 5.303 6.445-2.93 10.28-1.281 16.29-7.386.703-1.182-.585-6.895 3.093-7.198 2.524.254 4.166.05 6.06.569 5.442 2.117 7.738 6.45 14.71 7.955 6.184.966 7.613 3.794 13.89 5.05M925.551 679.05c2.399-.794 6.106 4.192 8.173 7.046.593 2.68 1.154 5.486.758 12.122.785 2.417 2.68 3.03 4.798 3.283 3.117-.537 5.877-1.325 7.324-3.03 1.871-1.943 5.312 2.393 8.08 4.04 3.61 1.912 7.775 1.979 11.87 2.273 1.703-.231 2.37 4.515 3.283 8.08.384 4.379-.886 6.896-1.768 9.85-.294 2.496 2.988 3.53 6.313 4.545 3.183.742 6.545 1.662 9.092 1.768 5.142.875 8.088 2.69 12.122 4.04 2.239.817 3.26 2.243 4.545 3.536" enable-background="new"/>
758 y="-0.14930232" 758 </g>
759 height="1.2986046"> 759 <g fill-rule="evenodd">
760 <feGaussianBlur 760 <path transform="translate(324.57 331.53)" d="m332 187.7s57.5-25.5 57.5-28 5.5-52 5.5-52 91-48.5 91.5-50.5 86-62 86-62l-186 22-75.5 106z" clip-path="url(#jz)" enable-background="new" fill="#fff" filter="url(#jy)" opacity=".25"/>
761 inkscape:collect="always" 761 <path d="m1745.9 918.08s-115.97 73.539-123.04 77.782c-7.071 4.243-230.52 137.18-230.52 137.18l4.243 39.598 216.37-100.41 117.38-101.82 15.556-52.326z" enable-background="accumulate" fill="#fff" opacity=".25"/>
762 stdDeviation="37.830213" 762 <path transform="translate(324.57 331.53)" d="m528.92 556.85c-5.657-1.414-181.02 74.953-181.02 74.953l-33.941 181.02 51.095 193.95 257.2 67.681s206.48 152.74 212.13 148.49c5.657-4.243 168.29-193.75 168.29-193.75l-159.81-183.85-46.669-178.19-267.29-110.31z" clip-path="url(#jx)" enable-background="accumulate" filter="url(#eg)" opacity=".5"/>
763 id="feGaussianBlur8808" /> 763 <path d="m1146.2 809.42s22.62-6.507 35.743-5.873 30.642 1.939 43.709 12.186c13.067 10.248 25.068 27.14 34.112 58.37 9.045 31.23 1.698 99.252-6.176 143.35-7.874 44.095-28.265 106.11-45 140-16.735 33.887-49.798 77.495-60.57 89.876-11.363 13.062-56.205 36.426-79.43 42.267 5.303-10.607 48.9-50.589 35-60.714-14.02-10.212-45.76 45.982-84.293 29.033 21.382-13.132 41.779-51.186 34.04-66.594-7.84-15.61-30.704 48.758-93.535 37.013 30.052-27.527 55.407-70.904 41.263-82.98-14.415-12.307-60.462 54.293-60.462 54.293s-2.822-41.7 13.773-68.607c16.639-26.978 79.653-81.615 99.553-111.7 19.9-30.088 33.613-66.009 42.136-92.518s15.8-77.1 15.8-77.1" enable-background="new" fill="#0c0c0c"/>
764 </filter> 764 <path transform="translate(324.57 331.53)" d="m770.75 609.18l-50.912 97.581-79.903 111.02 34.648 71.418 42.426 79.196 72.125-45.255 14.142-192.33 21.213-138.59-14.142-90.156-39.598 107.13z" clip-path="url(#jw)" enable-background="accumulate" fill="#fff" filter="url(#jv)" opacity=".25"/>
765 <filter 765 <path transform="translate(324.57 331.53)" d="m295 846.2l6.645-68.923s90.32 89.005 162.36 122.92 308 62 308 62l154-26-36 162-286 26-298-89-11-189z" clip-path="url(#ju)" enable-background="accumulate" filter="url(#eg)"/>
766 inkscape:collect="always" 766 <path transform="translate(498.6 269.37)" d="m405.8 845.99l74.953 65.054 2.5 16.88 19.403 10.159 6.492 23.051 31.709-8.371 14.849 48.083c12.257 12.728 89.793-113.11 55.86 38.184l-60.81 16.264-89.203-94.693-62.825-53.8 7.07-60.811z" clip-path="url(#jt)" enable-background="new" fill="#fff" filter="url(#o)"/>
767 id="filter8810" 767 <path d="m1207.9 1113.9c54.286-1.429 126.04-15.052 170-26.786 44.053-11.757 125.89-36.347 175.36-57.857 49.339-21.453 113.6-59.282 154.29-92.143 40.508-32.721 52.39-55.82 60.714-33.571 8.37 22.368-16.407 56.326-37.857 81.071-21.604 24.923-52.731 52.705-98.929 89.286s-156.08 101.58-212.86 128.57c-57.066 27.125-128.2 58.238-172.14 72.5s-131.43 31.071-131.43 31.071l92.857-192.14z" enable-background="accumulate" fill="#121212"/>
768 x="-0.23519406" 768 <path transform="translate(498.6 269.37)" d="m1241.6 652.95s-64.722 54.337-145.66 98.995c-82.024 45.255-284.26 93.338-284.26 93.338s-15.101 21.052 45.255 28.284 224.08-53.301 278.6-96.167 120.21-111.72 120.21-111.72l-14.142-12.728z" clip-path="url(#js)" enable-background="accumulate" fill="url(#jr)" filter="url(#jq)" opacity=".5"/>
769 width="1.4703881" 769 </g>
770 y="-0.24500646" 770 <g transform="translate(498.6 269.37)" clip-path="url(#jp)" enable-background="new">
771 height="1.4900129"> 771 <g filter="url(#em)">
772 <feGaussianBlur 772 <g transform="translate(-174.03 62.156)" filter="url(#i)">
773 inkscape:collect="always" 773 <path d="m1268.3 663.77s-0.296 26.161 4.643 37.857 20.038 26.487 28.572 31.429 18.929 8.571 18.929 8.571l117.86-115 17.857-75.714-96.43 38.571-91.428 74.286z" enable-background="new" fill="#fff" fill-rule="evenodd"/>
774 stdDeviation="58.328041" 774 <path d="M1197.8 486.14h333.75v309.71H1197.8z" enable-background="accumulate" fill="none"/>
775 id="feGaussianBlur8812" /> 775 </g>
776 </filter> 776 </g>
777 <filter 777 <g transform="translate(-174.03 62.156)" enable-background="new" filter="url(#i)" opacity=".18">
778 inkscape:collect="always" 778 <path d="m1268.3 663.77s-0.296 26.161 4.643 37.857 20.038 26.487 28.572 31.429 18.929 8.571 18.929 8.571l117.86-115 17.857-75.714-96.43 38.571-91.428 74.286z" enable-background="new" fill="#fff" fill-rule="evenodd"/>
779 id="filter8814" 779 <path d="M1197.8 486.14h333.75v309.71H1197.8z" enable-background="accumulate" fill="none"/>
780 x="-0.20466694" 780 </g>
781 width="1.4093339" 781 </g>
782 y="-0.29007819" 782 <path transform="translate(498.6 269.37)" d="M1264.2 605c-4.491.733-8.157 3.455-11.938 6.406-10.081 7.87-28.17 34.425-48.031 50.47-39.867 32.202-104 69.976-152.56 91.093-48.614 21.137-130.54 45.818-174.31 57.5-43.398 11.582-115.04 25.131-168.25 26.531l-4.562.125-2 4.125-92.844 192.12-6.5 13.47 14.656-2.845s87.27-16.65 132.34-31.28c44.725-14.518 115.79-45.668 173.03-72.876 57.603-27.38 166.94-91.98 214.28-129.47 46.36-36.71 77.805-64.717 99.938-90.25 10.9-12.576 22.745-27.53 31.03-42.75 8.287-15.219 19.16-44.218 13.688-58.844-1.218-3.254-2.552-6.06-4.594-8.5s-8.475-1.572-8.563-5.03c-.21-8.266-3.315-.245-4.812 0zm2.156 15.219c.415.586 1.031 1.558 1.782 3.563 2.896 7.742-1.441 31.899-8.813 45.438s-22.638 28.924-33.188 41.094c-21.075 24.314-51.904 51.862-97.938 88.312-45.05 35.672-155.46 101.09-211.41 127.69-56.892 27.042-128.1 58.118-171.25 72.125-36.365 11.803-95.845 23.834-115.72
783 height="1.5801564"> 78327.78l84.281-174.47c54.707-2.049 123.79-15.215 167.12-26.78 44.334-11.832 126.08-36.336 176.41-58.22 50.112-21.788 112.53-61.167 154.03-94.687 20.646-16.677 41.745-42.546 49.813-48.844 2.437-1.903 4.08-2.636 4.875-3z" clip-path="url(#jo)" enable-background="accumulate" fill="#050505" fill-rule="evenodd" filter="url(#jn)" opacity=".833"/>
784 <feGaussianBlur 784 <g transform="rotate(6.561 -6814.9 734.74)" enable-background="new" fill-rule="evenodd" mask="url(#jm)">
785 inkscape:collect="always" 785 <path d="M1111.48-285.971l-3.937 1.875c-.041.01-.1.02-.125.031-.42.213-.165.1-.657.312-.486.21-1.737.585-4.093 1.47-3.332 1.25-5.805 2.15-7 3.062-1.537.021-3.72.233-5.657.719a227.677 227.677 0 0 1-6.75 1.593c-1.894.42-1.675.642-2.875.875-1.296.252-1.721-.009-5.437.782-3.49.742-8.895 1.93-10.156 2.687-1.584-.18-3.868-.322-5.844-.031-3.04.447-4.916.673-6.844.906-.655.08-1.04.2-1.343.281-.427.132-.686.26-1.375.344-1.312.16-1.763-.157-5.532.281-3.554.413-9.005 1.273-10.25 1.938-1.599-.297-3.857-.534-5.843-.344-3.06.293-4.972.484-6.907.656-1.934.173-1.688.423-2.906.532-1.316.117-1.76-.164-5.531.25-3.542.388-9.008 1.209-10.281 1.875-1.6-.295-3.887-.507-5.875-.313-3.058.3-4.941.48-6.875.656-.658.06-1.04.179-1.344.25-.428.12-.683.218-1.375.282-1.316.12-1.76-.195-5.531.218-3.556.39-9.006 1.24-10.25
786 stdDeviation="22.300169" 7861.907-1.599-.295-3.86-.524-5.844-.313-3.056.325-4.974.526-6.906.719s-1.69.44-2.906.562c-1.315.132-1.763-.164-5.532.282-3.538.418-8.977 1.292-10.25 1.968-1.597-.28-3.86-.42-5.843-.187-3.052.358-4.945.568-6.875.781-.657.073-1.041.173-1.344.25-.427.127-.685.267-1.375.344-1.314.146-1.768-.174-5.531.312-3.55.46-8.979 1.42-10.22 2.125-1.592-.244-3.833-.381-5.812-.125-3.047.395-4.95.649-6.875.907-1.924.257-1.726.493-2.937.656-1.31.176-1.748-.105-5.5.469-3.525.538-8.924 1.699-10.188 2.437-1.588-.203-3.846-.255-5.813.094-3.026.536-4.899.861-6.812 1.187-.65.111-1.014.271-1.313.375-.42.165-.663.332-1.344.469-1.294.262-1.727-.006-5.437.813-3.499.771-8.846 2.382-10.062 3.218-1.563-.077-3.758.086-5.688.594-2.972.783-4.817 1.232-6.687 1.75s-1.667.767-2.844 1.094c-1.272.353-1.697.107-5.344 1.187-3.424 1.015-8.65 2.934-9.875 3.844-1.539.013-3.72.272-5.625.875-2.93.928-4.75 1.459-6.594
787 id="feGaussianBlur8816" /> 7872.063-.626.205-.991.392-1.28.53-.408.215-.654.41-1.313.626-1.255.411-1.686.189-5.281 1.437-3.39 1.178-8.595 3.214-9.782 4.157-1.524.06-3.65.395-5.53 1.062-2.898 1.028-4.7 1.676-6.532 2.313-1.832.637-1.628.848-2.781 1.25-1.247.434-1.664.2-5.22 1.562-3.338 1.28-8.486 3.483-9.687 4.469-1.507.108-3.635.499-5.5 1.219a1047.26 1047.26 0 0 1-6.437 2.469c-.617.233-.997.442-1.281.593v.031l-8 3.188-12.476 3.492 7.93 19.278c-.592 1.973 12.545-4.739 12.545-4.739.227-.144.45-.272.72-.375 1.08-.41 2.17-.215 6-1.687 3.828-1.472 5.223-2.005 5.905-2.406.68-.4 1.612-.88 2.22-1.531 1.826-.138 3.57-.494 4.937-1 2.968-1.1 4.875-1.807 6.78-2.47 1.907-.662 2.355-1.414 3.407-1.78 1.092-.38 2.195-.166 6.063-1.532 3.867-1.366 5.283-1.827 5.968-2.218.702-.4 1.701-.933 2.313-1.594 1.97-.055 3.817-.385 5.281-.875 3.002-1.005 4.926-1.622 6.844-2.25 1.538-.504 2.174-1.047 2.906-1.438.23-.134.476-.253.75-.343 1.098-.36
788 </filter> 7882.181-.082 6.094-1.313 3.912-1.231 5.366-1.673 6.062-2.031.694-.357 1.63-.793 2.25-1.406 1.866-.023 3.636-.267 5.032-.688 3.03-.913 4.992-1.43 6.937-1.969 1.945-.538 2.426-1.264 3.5-1.562 1.114-.31 2.22.007 6.188-1.031 3.967-1.039 5.417-1.433 6.125-1.75.734-.33 1.813-.754 2.437-1.375 1.998.116 3.857-.02 5.344-.375 3.078-.735 5.083-1.101 7.062-1.5 1.588-.32 2.245-.79 3-1.094a3.4 3.4 0 0 1 .75-.25c1.134-.23 2.305.209 6.344-.5 4.04-.71 5.5-.927 6.219-1.188.716-.26 1.704-.567 2.344-1.093 1.924.239 3.748.224 5.187 0 3.127-.488 5.155-.701 7.156-.97 2.002-.267 2.49-.944 3.594-1.093 1.147-.154 2.276.302 6.344-.219 4.068-.52 5.56-.695 6.281-.937.737-.247 1.798-.586 2.438-1.125 2.05.335 3.973.398 5.5.218 3.142-.368 5.18-.559 7.187-.78 1.611-.179 2.265-.609 3.031-.845.241-.085.495-.155.782-.187 1.15-.128 2.301.347 6.375-.125s5.559-.61 6.28-.844c.72-.232 1.701-.473 2.345-.969 1.936.334 3.77.405
789 <filter 7895.219.25 3.146-.334 5.177-.518 7.187-.718 2.01-.2 2.484-.827 3.594-.938 1.15-.115 2.296.365 6.375-.062s5.589-.562 6.312-.782c.74-.223 1.796-.513 2.438-1.03 2.057.398 4.002.493 5.531.343 3.149-.308 5.176-.473 7.188-.656 1.614-.147 2.263-.56 3.03-.781.242-.081.494-.13.782-.157 1.152-.105 2.293.393 6.375 0s5.589-.53 6.312-.75c.721-.218 1.7-.447 2.344-.937 1.938.35 3.769.454 5.219.312 3.149-.308 5.176-.473 7.187-.656 2.012-.183 2.515-.838 3.625-.937 1.153-.104 2.293.384 6.375 0 4.083-.385 5.59-.501 6.313-.72.74-.222 1.796-.514 2.437-1.03 2.058.401 4.003.503 5.532.343 3.146-.328 5.177-.522 7.187-.718 1.613-.158 2.266-.632 3.031-.875.241-.088.464-.122.75-.157 1.149-.14 2.317.34 6.375-.25 4.059-.59 5.562-.777 6.282-1.03.716-.254 1.674-.559 2.312-1.095 1.92.212 3.72.152 5.156-.093 3.12-.533 5.112-.929 7.094-1.313 1.982-.384 2.474-1.04 3.563-1.281 1.128-.25 2.27.116 6.25-.875s5.43-1.42
790 inkscape:collect="always" 7906.125-1.781c.722-.376 1.761-.87 2.375-1.531 1.963-.012 3.793-.292 5.218-.844 2.952-1.145 4.874-1.87 6.688-2.75 1.456-.707 2.32-1.702 2.531-2 .212-.298.1-.729.125-.75.043-.035.34-.094.5-.438.86-1.847 2.323-5.627 2.438-6.312.113-.682.168-1.353.218-1.75.03-.23-.147-.88-.125-.938.031-.082.289-.25.344-.5.266-1.198.09-2.207-.125-3.625-.214-1.417-.972-4.614-1.625-5.469-.659-.861-1.225-1.01-1.75-1z" enable-background="new" fill="#bcb786"/>
791 id="filter8818" 791 <g clip-path="url(#jl)">
792 x="-0.34381232" 792 <path d="M1107.4-284.05c-.419.213-.156.094-.647.306-.486.21-1.724.574-4.08 1.459-3.33 1.25-5.83 2.153-7.026 3.066-1.536.021-3.72.233-5.656.719a227.709 227.709 0 0 1-6.75 1.593c-1.895.42-1.676.643-2.875.875-1.297.252-1.721-.009-5.438.782-3.49.742-8.894 1.93-10.156 2.687-1.583-.18-3.867-.322-5.843-.031-3.04.447-4.917.673-6.844.906-.655.08-1.041.201-1.344.282-.426.131-.686.26-1.375.343-1.311.16-1.762-.157-5.531.282-3.554.413-9.005 1.272-10.25 1.937-1.599-.297-3.858-.534-5.844-.344-3.059.294-4.972.484-6.906.657-1.934.172-1.689.422-2.906.53-1.317.118-1.76-.163-5.532.25-3.541.39-9.007 1.21-10.28 1.876-1.6-.295-3.888-.507-5.876-.313-3.058.3-4.94.48-6.875.657-.657.06-1.04.178-1.343.25-.428.118-.684.218-1.375.28-1.316.121-1.76-.194-5.532.22-3.556.39-9.005 1.239-10.25
793 width="1.6876246" 7931.906-1.598-.294-3.86-.524-5.843-.313-3.056.326-4.974.526-6.907.719-1.932.192-1.69.44-2.906.562-1.315.132-1.763-.164-5.53.282-3.54.418-8.979 1.292-10.25 1.969-1.599-.282-3.86-.42-5.845-.188-3.052.358-4.945.568-6.875.781-.656.073-1.04.173-1.344.25-.426.127-.684.267-1.375.344-1.313.146-1.767-.174-5.53.313-3.55.458-8.98 1.419-10.22 2.125-1.593-.245-3.834-.382-5.812-.125-3.048.394-4.95.648-6.875.906-1.925.258-1.726.493-2.938.656-1.31.176-1.747-.104-5.5.469-3.524.538-8.923 1.699-10.188 2.437-1.587-.203-3.845-.254-5.812.094-3.026.536-4.9.862-6.813 1.187-.65.111-1.013.271-1.312.375-.42.165-.664.332-1.344.47-1.295.26-1.727-.007-5.438.812-3.498.772-8.846 2.383-10.062 3.219-1.562-.078-3.757.085-5.687.593-2.972.783-4.818 1.232-6.688 1.75s-1.666.768-2.843 1.094c-1.273.353-1.697.107-5.344 1.188-3.425 1.014-8.65 2.933-9.875 3.843-1.539.013-3.72.273-5.625.875-2.931.928-4.75 1.459-6.594
794 y="-0.18433961" 7942.063-.627.205-.992.392-1.281.531-.408.214-.653.409-1.313.625-1.254.412-1.686.19-5.28 1.438-3.39 1.177-8.596 3.213-9.782 4.156-1.524.06-3.65.395-5.531 1.062-2.898 1.029-4.7 1.676-6.531 2.313-1.833.637-1.628.848-2.782 1.25-1.246.434-1.663.2-5.218 1.562-3.34 1.28-8.488 3.483-9.688 4.47-1.507.107-3.636.498-5.5 1.218a1044.752 1044.752 0 0 1-6.437 2.469c-.617.233-.997.442-1.282.593v1.094c.112-.222.386-.817.907-1.094.698-.37 4.813-1.993 6.812-2.718 1.657-.602 4.154-1.329 5.969-1.313.302.003.588.051.844.094 1.842.308 7.468 1.562 7.468 1.562s-6.233-1.646-7.03-1.843c-.191-.048-.536-.07-.97-.063 1.146-.87 4.762-2.393 7.344-3.437 2.839-1.148 3.117-1.252 5.063-1.657 2.008-.417 3.156-.5 3.156-.5s-.082-.6.969-1.125c.705-.351 4.887-1.892 6.906-2.562 1.952-.648 5.057-1.359 6.875-1 1.863.367 7.531 1.812 7.531 1.812s-6.287-1.87-7.094-2.093c-.193-.054-.53-.086-.968-.094 1.158-.833 4.794-2.195 7.406-3.156
795 height="1.3686792"> 7952.87-1.056 3.167-1.162 5.125-1.532 1.853-.35 2.859-.425 3.031-.437.114-.217.377-.81.906-1.063.71-.338 4.926-1.712 6.97-2.312 1.692-.497 4.24-1.037 6.093-.906.308.021.613.097.875.156 1.881.424 7.594 2.031 7.594 2.031s-6.342-2.065-7.157-2.312c-.194-.06-.557-.104-1-.125 1.17-.798 4.863-2.057 7.5-2.938 2.898-.968 3.233-1.003 5.22-1.281 2.049-.287 3.187-.313 3.187-.313s-.073-.607 1-1.062c.72-.306 4.99-1.5 7.062-2 2.003-.483 5.199-.928 7.063-.406 1.91.535 7.719 2.5 7.719 2.5s-6.423-2.424-7.25-2.72c-.198-.07-.583-.14-1.032-.187 1.188-.728 4.916-1.774 7.594-2.5 2.944-.797 3.292-.77 5.313-.906 1.913-.128 2.947-.07 3.125-.062.117-.204.391-.78.937-.97.732-.253 5.079-1.047 7.188-1.374 1.748-.271 4.4-.485 6.312-.094.318.065.605.186.875.281 1.94.69 7.844 3.094 7.844 3.094s-6.535-2.95-7.375-3.312c-.201-.087-.575-.167-1.031-.25 1.206-.633 5.03-1.396 7.75-1.906 2.99-.562 3.3-.53 5.344-.532 2.109-.002
796 <feGaussianBlur 7963.312.125 3.312.125s-.073-.63 1.031-.937c.74-.206 5.126-.834 7.25-1.063 2.053-.22 5.319-.252 7.22.47 1.947.738 7.843 3.374 7.843 3.374s-6.563-3.179-7.406-3.562c-.202-.092-.543-.187-1-.282 1.21-.602 4.984-1.248 7.718-1.656 3.005-.448 3.326-.452 5.375-.406 1.94.043 3.007.194 3.188.219.119-.194.384-.766.937-.907.743-.188 5.155-.734 7.282-.937 1.763-.169 4.42-.234 6.343.25.32.08.604.203.875.312 1.953.784 7.907 3.47 7.907 3.47s-6.592-3.254-7.438-3.657c-.202-.096-.572-.207-1.031-.313 1.214-.574 5.044-1.122 7.781-1.5 3.009-.415 3.323-.442 5.375-.375 2.118.07 3.313.25 3.313.25s-.078-.637 1.03-.906c.745-.18 5.153-.663 7.282-.844 2.059-.174 5.343-.124 7.25.657 1.955.8 7.875 3.53 7.875 3.53s-6.56-3.308-7.406-3.718c-.202-.098-.572-.203-1.031-.312 1.215-.564 5.01-1.115 7.75-1.47 3.01-.389 3.321-.397 5.375-.312 1.944.08 3.006.254 3.187.282.12-.191.383-.746.938-.875.744-.174 5.15-.65 7.28-.813
797 inkscape:collect="always" 7971.767-.134 4.45-.126 6.376.375.32.083.603.201.875.313 1.954.8 7.906 3.562 7.906 3.562s-6.591-3.34-7.437-3.75c-.203-.098-.572-.203-1.032-.312 1.215-.564 5.042-1.084 7.782-1.438 3.01-.39 3.352-.429 5.406-.344 2.12.088 3.312.313 3.312.313s-.078-.65 1.032-.906c.744-.173 5.15-.624 7.28-.782 2.061-.152 5.344-.096 7.25.688 1.956.804 7.876 3.5 7.876 3.5s-6.56-3.276-7.406-3.688c-.203-.098-.572-.202-1.032-.312 1.216-.562 5.012-1.128 7.75-1.5 3.01-.41 3.323-.416 5.375-.344 1.943.068 3.008.165 3.188.188.119-.195.384-.73.937-.875.742-.197 5.131-.83 7.25-1.094 1.757-.22 4.406-.333 6.313.031.317.06.606.19.875.281 1.936.661 7.844 2.938 7.844 2.938s-6.537-2.807-7.375-3.156c-.2-.084-.577-.174-1.032-.25 1.204-.651 5.02-1.372 7.72-2 2.966-.69 3.288-.756 5.312-.875 2.088-.124 3.28-.032 3.28-.032s-.086-.632 1-1.03c.73-.269 5.048-1.339 7.126-1.813 2.008-.46 5.168-1.03 7-.625 1.878.414 13.578 3.015 13.578
798 stdDeviation="34.542167" 7983.015s-12.328-3.022-13.141-3.265c-.195-.058-.559-.107-1-.125 1.167-.804 3.514-1.688 6.11-2.703 1.68-.659.923-.377 2.775-1.004 1.754-.594 2.486-1.01 2.63-1.113.347-.207-.355-.122-.544-.042z" enable-background="new" filter="url(#jk)"/>
799 id="feGaussianBlur8820" /> 799 <path d="m1082.6-275.12c1.873 0.393 4.496 1.146 6.031 1.969s2.822 1.056 5.375 2.5c2.527 1.43 4.796 2.007 6.969 2.531 2.348 0.566 5.435 0.715 8.844 1.188-1.09-0.84-6.608-1.173-8.406-1.563-1.8-0.39-3.895-1.016-6.594-2.313-2.7-1.296-3.495-1.799-5.813-2.687-2.318-0.889-4.004-1.383-6.406-1.625z" enable-background="new" filter="url(#jj)"/>
800 </filter> 800 <path d="M1051.5-270c1.905.578 4.528 1.616 6.094 2.594 1.565.978 2.88 1.36 5.5 3.125 2.593 1.747 4.986 2.71 7.25 3.594 2.446.955 5.682 1.657 9.406 3.062-1.19-1.138-7.063-2.687-8.938-3.375-1.874-.688-4.081-1.566-6.874-3.281-2.794-1.715-3.574-2.284-5.938-3.406-2.364-1.123-4.057-1.835-6.5-2.313z" enable-background="new" filter="url(#ji)"/>
801 <filter 801 <path d="m1020.2-266.84c1.912 0.638 4.581 1.755 6.156 2.813 1.575 1.057 2.896 1.508 5.531 3.406 2.61 1.878 5.029 3.03 7.313 4.062 2.468 1.116 5.764 2.174 9.531 3.844-1.203-1.222-7.203-3.314-9.094-4.125-1.89-0.81-4.064-1.894-6.874-3.75s-3.622-2.477-6-3.719c-2.379-1.242-4.111-1.975-6.563-2.531z" enable-background="new" filter="url(#jh)"/>
802 inkscape:collect="always" 802 <path d="M1110.2-266.89c.15.049.688.631.11 1.484-.81 1.195-5.705 3.325-8.563 4.125-2.845.798-6.29.978-10.562-.375-4.302-1.362-5.47-2.468-10.656-4.312 4.664 2.115 6.195 3.952 10.125 5.344 1.62.574 3.367.94 5.062 1.03-.445.327-1.53.984-3.562 1.595-2.796.84-6.65 1.534-8.25 1.625-1.515.086-3.142-.513-3.438-.625.167.103.374.377-.25 1.03-.899.945-6.147 1.924-9.125 2.25-2.964.326-6.521-.015-10.906-1.905-3.978-1.715-5.339-2.916-9.406-4.75v.156c3.643 2.095 5.284 3.883 8.875 5.562 1.73.81 3.592 1.41 5.406 1.72-.534.286-1.557.71-3.437 1.03-2.87.488-6.81.817-8.438.75-.85-.034-1.728-.184-2.406-.406-.685-.215-1.19-.444-1.312-.5.169.107.43.403-.22 1.031-.909.88-6.245 1.337-9.25 1.47-2.99.131-6.588-.451-11-2.563-4.44-2.127-5.64-3.402-10.905-5.782 4.734 2.597 6.286 4.63 10.344 6.72 1.673.861 3.485 1.493 5.25 1.937-.463.233-1.59.688-3.688.937-2.886.343-6.834.493-8.468.375-1.547-.111-3.232-.857-3.532-1
803 id="filter8822" 803.17.12.414.41-.218 1-.913.851-6.244 1.262-9.25 1.375-2.993.113-6.59-.49-11-2.594-4.002-1.908-5.388-3.137-9.47-5.093v.156c3.656 2.204 5.295 4.053 8.907 5.906 1.74.893 3.637 1.528 5.469 1.969-.54.248-1.578.615-3.469.844-2.886.348-6.866.52-8.5.406a9.446 9.446 0 0 1-2.406-.5 12.532 12.532 0 0 1-1.313-.531c.17.112.465.422-.187 1.03-.913.853-6.275 1.294-9.281 1.407-2.993.112-6.594-.528-11-2.594-4.437-2.08-5.647-3.331-10.906-5.656 4.729 2.548 6.29 4.578 10.344 6.625 1.671.844 3.485 1.467 5.25 1.906-.464.235-1.59.684-3.688.938-2.886.348-6.836.57-8.469.469-1.544-.096-3.2-.83-3.5-.97.17.12.382.405-.25 1-.912.861-6.246 1.331-9.25 1.47-2.99.138-6.567-.451-10.969-2.47-3.993-1.83-5.365-3.028-9.437-4.905v.156c3.647 2.133 5.27 3.935 8.875 5.719 1.737.86 3.607 1.45 5.437 1.875-.54.253-1.55.64-3.437.906-2.88.404-6.838.646-8.469.562a9.36 9.36 0 0 1-2.406-.437 12.971 12.971 0 0
804 x="-0.2742857" 8041-1.313-.5c.17.109.432.41-.218 1.031-.911.87-6.25 1.392-9.25 1.563-2.987.17-6.574-.316-10.97-2.282-4.424-1.978-5.605-3.228-10.843-5.375 4.71 2.388 6.27 4.39 10.312 6.344a23.73 23.73 0 0 0 5.218 1.781c-.461.25-1.597.713-3.687 1.032-2.876.438-6.78.733-8.406.687-1.539-.043-3.233-.745-3.532-.875.169.113.411.414-.218 1.031-.908.891-6.203 1.529-9.188 1.813-2.971.283-6.573-.176-10.938-1.938-3.96-1.598-5.329-2.795-9.344-4.312v.156c3.596 1.811 5.239 3.582 8.813 5.156 1.722.759 3.587 1.29 5.406 1.625-.536.28-1.566.688-3.437 1.063-2.856.572-6.79 1.02-8.407 1.031-.844.006-1.706-.08-2.375-.25-.676-.162-1.16-.33-1.28-.375.166.094.422.383-.22 1.062-.897.951-6.186 1.918-9.125 2.438-2.925.518-6.432.374-10.719-1.031-4.315-1.415-5.472-2.53-10.562-3.969 4.577 1.751 6.09 3.56 10.031 5 1.627.594 3.37.956 5.094 1.156-.453.297-1.555.884-3.594 1.469-2.804.805-6.638 1.576-8.218
805 width="1.5485713" 8051.75-1.495.165-3.117-.317-3.407-.406.164.09.393.36-.218 1.062-.883 1.014-6.045 2.372-8.938 3.063-2.88.687-6.335.76-10.562-.438-3.835-1.086-5.172-2.072-9.062-3.125v.156c3.484 1.395 5.07 2.92 8.53 4.032 1.669.535 3.457.786 5.22.875-.52.352-1.5.914-3.313 1.53-2.765.942-6.59 1.936-8.156 2.157-.818.115-1.633.123-2.281.031-.655-.083-1.133-.218-1.25-.25.162.075.434.34-.188 1.094-.87 1.055-6.01 2.66-8.875 3.438-2.852.774-6.259.958-10.438-.094-4.206-1.06-5.356-2.042-10.344-3.156 4.485 1.46 5.97 3.135 9.813 4.25 1.585.46 3.287.638 4.969.687-.442.337-1.513 1.028-3.5 1.781-2.734 1.037-6.452 2.163-8 2.438-1.465.26-3.06-.117-3.344-.188.16.08.38.321-.219 1.063-.865 1.07-5.916 2.818-8.75 3.687-2.82.866-6.207 1.157-10.344.22-3.753-.852-5.048-1.717-8.875-2.595v.157c3.428 1.237 4.987 2.632 8.375 3.53 1.632.434 3.367.584 5.094.563-.51.384-1.477 1.022-3.25 1.75-2.706 1.112-6.436 2.308-7.969
806 y="-0.21333334" 8062.625-.8.166-1.612.219-2.25.157v1.406c.227-.145.449-.273.719-.375 1.08-.41 2.171-.216 6-1.688 3.828-1.471 5.224-2.005 5.906-2.406.68-.4 1.612-.88 2.219-1.531 1.827-.138 3.57-.493 4.937-1 2.968-1.1 4.876-1.806 6.782-2.469 1.905-.663 2.354-1.415 3.406-1.781 1.091-.38 2.195-.166 6.062-1.531 3.868-1.366 5.283-1.827 5.969-2.22.701-.4 1.7-.932 2.313-1.593 1.97-.055 3.816-.385 5.28-.875 3.002-1.005 4.927-1.622 6.845-2.25 1.538-.504 2.174-1.047 2.906-1.437.23-.135.475-.254.75-.344 1.098-.36 2.181-.082 6.094-1.313 3.912-1.23 5.366-1.673 6.062-2.03.694-.358 1.63-.794 2.25-1.407 1.865-.023 3.636-.267 5.031-.688 3.03-.913 4.993-1.43 6.938-1.968 1.945-.54 2.426-1.265 3.5-1.563 1.114-.31 2.22.007 6.187-1.031 3.968-1.039 5.418-1.433 6.125-1.75.735-.33 1.814-.754 2.438-1.375 1.997.116 3.857-.02 5.344-.375 3.078-.735 5.083-1.101 7.062-1.5 1.588-.32 2.244-.79 3-1.094.238-.107.467-.193.75-.25 1.134-.23
807 height="1.4266667"> 8072.305.209 6.344-.5s5.5-.927 6.219-1.187c.715-.26 1.704-.568 2.343-1.094 1.925.24 3.748.224 5.188 0 3.126-.488 5.155-.7 7.156-.969 2.002-.268 2.489-.945 3.594-1.094 1.146-.154 2.276.302 6.344-.219 4.068-.52 5.56-.695 6.28-.937.738-.247 1.799-.586 2.438-1.125 2.05.335 3.974.398 5.5.219 3.143-.37 5.18-.56 7.188-.782 1.61-.178 2.265-.608 3.031-.843a3.43 3.43 0 0 1 .781-.188c1.15-.128 2.302.347 6.375-.125s5.56-.61 6.282-.844c.719-.232 1.7-.473 2.343-.968 1.937.333 3.77.404 5.22.25 3.145-.335 5.177-.519 7.187-.719 2.01-.2 2.484-.826 3.593-.938 1.152-.115 2.297.366 6.375-.062s5.59-.562 6.313-.781c.74-.224 1.796-.514 2.437-1.031 2.058.398 4.002.493 5.532.343 3.148-.308 5.175-.473 7.187-.656 1.614-.147 2.263-.56 3.031-.781.242-.081.494-.13.782-.156 1.152-.106 2.293.392 6.375 0 4.082-.393 5.589-.531 6.312-.75.721-.219 1.7-.448 2.344-.938 1.938.35 3.769.454 5.219.313 3.148-.309 5.175-.474
808 <feGaussianBlur 8087.187-.657 2.012-.183 2.514-.838 3.625-.937 1.152-.103 2.292.385 6.375 0s5.589-.501 6.313-.719c.739-.222 1.795-.514 2.437-1.031 2.057.402 4.003.503 5.531.344 3.147-.329 5.178-.523 7.188-.72 1.613-.156 2.266-.63 3.031-.874.24-.088.463-.122.75-.156 1.148-.14 2.317.34 6.375-.25 4.058-.59 5.562-.778 6.281-1.032.717-.253 1.675-.558 2.313-1.093 1.92.211 3.72.151 5.156-.094 3.12-.533 5.112-.929 7.094-1.313 1.982-.384 2.474-1.04 3.562-1.28 1.13-.252 2.27.115 6.25-.876s5.43-1.42 6.125-1.781c.723-.376 1.762-.87 2.375-1.531 1.963-.012 3.794-.291 5.22-.844 2.95-1.145 4.872-1.87 6.687-2.75 1.455-.707 2.334-1.686 2.547-1.984.212-.298.111-.746.137-.767.043-.035.32-.085.48-.429.858-1.847 2.32-5.644
809 inkscape:collect="always" 8092.435-6.329.113-.682.163-1.348.214-1.745.03-.23-.147-.865-.125-.924.031-.082.305-.265.36-.515.267-1.198.09-2.191-.125-3.609-.214-1.417-.983-4.622-1.637-5.476-.659-.862-1.223-1.011-1.748-1-.208.27.137.262.163.312.68.05.934.369 1.42.897s1.442 3.94 1.579 5.39.19 2.86-.088 3.468c-.278.609-.944.429-1.237.495.531.186.89.213.953 1.057.058.814-.134 1.64-.52 2.806-.391 1.18-1.845 4.35-2.286 4.599-.452.255-.952.182-1.288.05z" enable-background="new" filter="url(#jg)"/>
810 stdDeviation="11.313708" 810 <path d="m988.75-263.84c1.912 0.634 4.55 1.758 6.125 2.813 1.575 1.054 2.896 1.482 5.531 3.375 2.609 1.873 5.027 3.015 7.313 4.062 2.47 1.132 5.752 2.155 9.531 3.938-1.207-1.259-7.139-3.365-9.031-4.188s-4.128-1.93-6.938-3.781-3.622-2.482-6-3.719c-2.377-1.237-4.08-1.95-6.53-2.5z" enable-background="new" filter="url(#jf)"/>
811 id="feGaussianBlur8824" /> 811 <path d="M957.5-260.78c1.91.618 4.583 1.71 6.156 2.75 1.574 1.04 2.896 1.482 5.531 3.375 2.609 1.873 5.027 3.015 7.313 4.063 2.47 1.131 5.752 2.154 9.531 3.937-1.207-1.258-7.201-3.396-9.094-4.219-1.892-.823-4.096-1.93-6.906-3.781-2.81-1.85-3.593-2.44-5.969-3.656s-4.113-1.939-6.562-2.469z" enable-background="new" filter="url(#ib)"/>
812 </filter> 812 <path d="M926.09-257.38c1.908.597 4.553 1.664 6.125 2.688 1.571 1.023 2.87 1.44 5.5 3.28 2.603 1.823 5.029 2.973 7.313 4 2.467 1.111 5.755 2.094 9.53 3.845-1.205-1.249-7.171-3.319-9.062-4.125s-4.102-1.891-6.906-3.688c-2.804-1.796-3.627-2.402-6-3.594-2.373-1.191-4.054-1.903-6.5-2.406z" enable-background="new" filter="url(#ia)"/>
813 <filter 813 <path d="M894.91-253.56c1.902.554 4.587 1.589 6.156 2.594s2.874 1.408 5.5 3.219c2.6 1.791 5 2.871 7.281 3.875 2.465 1.083 5.76 2.04 9.532 3.75-1.205-1.236-7.175-3.245-9.063-4.032-1.888-.786-4.075-1.83-6.875-3.593s-3.6-2.369-5.969-3.532c-2.37-1.163-4.123-1.834-6.562-2.28z" enable-background="new" filter="url(#hz)"/>
814 inkscape:collect="always" 814 <path d="M863.72-248.66c1.88.43 4.504 1.38 6.063 2.313 1.558.932 2.852 1.257 5.468 3 2.59 1.724 4.981 2.708 7.25 3.625 2.452.99 5.74 1.877 9.5 3.5-1.201-1.208-7.152-3.067-9.03-3.782-1.88-.715-4.086-1.684-6.876-3.375s-3.585-2.228-5.937-3.28-4.026-1.713-6.438-2z" enable-background="new" filter="url(#hy)"/>
815 id="filter8826" 815 <path d="m833.16-241.38c1.848 0.296 4.47 0.976 6 1.781s2.814 1.056 5.375 2.531c2.535 1.46 4.89 2.326 7.125 3.063 2.414 0.797 5.657 1.467 9.375 2.844-1.188-1.129-7.088-2.59-8.938-3.156-1.85-0.567-4.003-1.374-6.75-2.844-2.746-1.47-3.5-1.92-5.812-2.781-2.311-0.861-4.005-1.32-6.375-1.438z" enable-background="new" filter="url(#hx)"/>
816 x="-0.25894088" 816 <path d="m802.91-232.31c1.822 0.211 4.366 0.8 5.875 1.531 1.51 0.73 2.756 0.93 5.281 2.281 2.5 1.338 4.832 2.049 7.031 2.657 2.377 0.656 5.565 1.073 9.22 2.187-1.168-1.045-6.93-2.103-8.75-2.562-1.822-0.46-3.953-1.127-6.657-2.438s-3.471-1.72-5.75-2.469-3.913-1.179-6.25-1.187z" enable-background="new" filter="url(#hw)"/>
817 width="1.5178818" 817 <path d="M773.19-222.19c1.811.179 4.32.665 5.813 1.344 1.491.678 2.753.798 5.25 2.062 2.47 1.252 4.79 1.896 6.968 2.438 2.354.585 5.492.897 9.094 1.844-1.15-.992-6.852-1.784-8.656-2.188s-3.916-1.021-6.594-2.25c-2.678-1.229-3.403-1.61-5.656-2.281-2.253-.67-3.896-1.002-6.219-.969z" enable-background="new" filter="url(#hv)"/>
818 y="-0.2236412" 818 <path d="M743.56-211.19c1.793.13 4.273.55 5.75 1.188s2.716.741 5.188 1.937c2.446 1.184 4.72 1.747 6.874 2.219 2.328.51 5.42.68 9 1.562-1.143-.97-6.747-1.59-8.53-1.937-1.784-.347-3.884-.888-6.532-2.031-2.648-1.144-3.395-1.517-5.625-2.125-2.23-.61-3.826-.91-6.125-.813z" enable-background="new" filter="url(#hu)"/>
819 height="1.4472824"> 819 <g fill="#fff" filter="url(#ht)">
820 <feGaussianBlur 820 <path d="M744.94-212.12s7.222-3.223 9.063-3.5 3.352-.003 6 .563c2.647.565 8.735 2.215 11.188 3.374s5.312 3.563 5.312 3.563-7.146-2.78-10.188-3.563-7.645-2.083-10.375-2.312-11 1.875-11 1.875z"/>
821 inkscape:collect="always" 821 <path d="m735.47-206.95s3.66-2.223 5.5-2.5 3.665 0.247 6.313 0.813 8.735 2.215 11.188 3.375 6.562 2.125 6.562 2.125-8.396-1.343-11.438-2.125-7.957-2.334-10.688-2.563-7.438 0.875-7.438 0.875zm24.38-10.66s8.544-3.299 10.398-3.458c1.854-0.16 3.642 0.48 6.248 1.212s8.577 2.766 10.95 4.08 6.414 2.537 6.414 2.537-8.294-1.873-11.279-2.848c-2.985-0.974-7.792-2.834-10.503-3.236s-12.228 1.713-12.228 1.713zm15.35-5.62s7.771-2.782 9.628-2.904c1.857-0.12 3.631 0.555 6.222 1.341 2.59 0.787 8.519 2.942 10.864 4.304 2.346 1.362 6.36 2.67 6.36 2.67s-8.253-2.045-11.217-3.08c-2.965-1.035-7.733-2.995-10.434-3.452-2.702-0.458-11.422 1.121-11.422 1.121zm14.44-4.72s8.683-3.52 10.542-3.605 3.62 0.624 6.195 1.46c2.575 0.837 8.46 3.107 10.779 4.514 2.318 1.408 6.307 2.793 6.307 2.793s-8.212-2.204-11.156-3.297-7.673-3.144-10.365-3.654-12.3 1.789-12.3 1.789zm14.86-5.38s7.808-2.583 9.666-2.668c1.86-0.085 3.62
822 stdDeviation="19.631544" 8220.625 6.195 1.461 2.575 0.837 8.46 3.107 10.78 4.514 2.318 1.407 6.307 2.792 6.307 2.792s-8.213-2.204-11.156-3.296-7.673-3.144-10.365-3.654-11.426 0.85-11.426 0.85zm15.06-4.25s8.558-2.583 10.417-2.668 3.62 0.625 6.195 1.461c2.575 0.837 8.46 3.107 10.779 4.514 2.318 1.407 6.307 2.792 6.307 2.792s-8.212-2.204-11.156-3.296-7.673-3.144-10.365-3.654-12.176 0.85-12.176 0.85zm16.67-5.02s6.967-1.987 8.828-1.968c1.86 0.02 3.579 0.827 6.102 1.807 2.524 0.98 8.272 3.578 10.508 5.113 2.236 1.536 6.14 3.143 6.14 3.143s-8.075-2.662-10.952-3.919c-2.878-1.256-7.484-3.57-10.143-4.231-2.66-0.66-10.482 0.055-10.482 0.055zm14.5-3.4s7.688-2.028 9.548-1.968 3.56 0.902 6.063 1.936c2.502 1.033 8.194 3.752 10.397 5.335 2.203 1.582 6.072 3.272 6.072 3.272s-8.017-2.833-10.868-4.15c-2.85-1.318-7.407-3.73-10.05-4.446s-11.162 0.021-11.162 0.021zm14.09-3.21s8.17-1.97 10.027-1.854c1.857 0.115 3.532 1.01 6.002
823 id="feGaussianBlur8828" /> 8232.118s8.077 3.997 10.23 5.645 5.972 3.454 5.972 3.454-7.928-3.074-10.738-4.476-7.291-3.95-9.913-4.746c-2.621-0.796-11.58-0.141-11.58-0.141zm16.56-2.39s8.085-1.908 9.938-1.737c1.853 0.172 3.5 1.117 5.935 2.3 2.436 1.182 7.952 4.24 10.055 5.953s5.864 3.633 5.864 3.633-7.832-3.312-10.597-4.8-7.168-4.169-9.764-5.044c-2.597-0.876-11.431-0.305-11.431-0.305zm15.2-2.75s7.642-1.428 9.495-1.265c1.854 0.162 3.505 1.1 5.946 2.27s7.973 4.203 10.084 5.905c2.112 1.703 5.881 3.605 5.881 3.605s-7.847-3.274-10.62-4.748c-2.772-1.474-7.187-4.135-9.788-4.998-2.6-0.863-10.998-0.77-10.998-0.77zm14.87-1.64s8.642-1.553 10.495-1.39c1.854 0.162 3.505 1.1 5.946 2.27s7.972 4.203 10.084 5.905c2.111 1.703 5.88 3.605 5.88 3.605s-7.846-3.274-10.62-4.748c-2.772-1.474-7.187-4.135-9.787-4.998-2.601-0.863-11.998-0.644-11.998-0.644zm16.25-2.31s7.642-0.865 9.495-0.703c1.854 0.163 3.505 1.1 5.946 2.27s7.973 4.203 10.084
824 </filter> 8245.906c2.112 1.702 5.881 3.605 5.881 3.605s-7.847-3.275-10.62-4.749c-2.772-1.474-7.187-4.135-9.788-4.998-2.6-0.862-10.998-1.331-10.998-1.331zm15.13-1.19s8.58-1.49 10.433-1.328c1.854 0.163 3.505 1.1 5.946 2.27s7.972 4.203 10.084 5.906c2.111 1.702 5.88 3.605 5.88 3.605s-7.846-3.275-10.62-4.749c-2.772-1.474-7.187-4.135-9.787-4.998-2.601-0.862-11.935-0.706-11.935-0.706zm16.25-2.06s7.83-0.803 9.683-0.64c1.854 0.162 3.505 1.1 5.946 2.27s7.972 4.203 10.084 5.905c2.111 1.703 5.88 3.605 5.88 3.605s-7.846-3.274-10.62-4.748c-2.772-1.474-7.187-4.135-9.787-4.998-2.601-0.863-11.185-1.394-11.185-1.394zm15.37-1.25s8.392-1.178 10.245-1.015c1.854 0.162 3.505 1.1 5.946 2.27s7.972 4.203 10.084 5.905c2.111 1.703 5.88 3.605 5.88 3.605s-7.847-3.274-10.62-4.748c-2.772-1.474-7.187-4.135-9.788-4.998-2.6-0.863-11.748-1.02-11.748-1.02zm16.19-2.06s6.892-0.99 8.745-0.828c1.854 0.163 3.505 1.1 5.946 2.27s7.973 4.203
825 <filter 82510.084 5.906c2.112 1.702 5.881 3.605 5.881 3.605s-7.847-3.275-10.62-4.749-7.188-4.135-9.788-4.998c-2.6-0.862-10.248-1.206-10.248-1.206zm17.16-0.94s6.83-1.178 8.683-1.015c1.854 0.162 3.505 1.1 5.946 2.27 2.44 1.171 7.972 4.203 10.084 5.905 2.111 1.703 5.88 3.605 5.88 3.605s-7.847-3.274-10.62-4.748c-2.772-1.474-7.187-4.135-9.788-4.998-2.6-0.863-10.185-1.02-10.185-1.02zm16.1-2s6.08-0.428 7.933-0.265c1.854 0.162 3.505 1.1 5.946 2.27 2.44 1.171 7.972 4.203 10.084 5.905 2.111 1.703 5.88 3.605 5.88 3.605s-7.847-3.274-10.62-4.748c-2.772-1.474-7.187-4.135-9.788-4.998-2.6-0.863-9.435-1.77-9.435-1.77zm15.8-1.37s6.454-0.678 8.308-0.515c1.854 0.162 3.505 1.1 5.946 2.27 2.44 1.171 7.972 4.203 10.084 5.905 2.111 1.703 5.88 3.605 5.88 3.605s-7.847-3.274-10.62-4.748c-2.772-1.474-7.187-4.135-9.788-4.998-2.6-0.863-9.81-1.52-9.81-1.52zm15.6-1.86s5.498-0.91 7.358-0.853c1.86 0.056 3.562 0.896 6.066 1.925
826 inkscape:collect="always" 8262.504 1.03 8.2 3.739 10.406 5.318 2.205 1.578 6.078 3.261 6.078 3.261s-8.022-2.819-10.875-4.131c-2.853-1.313-7.413-3.716-10.06-4.429-2.645-0.712-8.973-1.091-8.973-1.091zm17.4-2.46s4.547-1.156 6.408-1.186c1.86-0.03 3.6 0.73 6.149 1.642 2.55 0.912 8.365 3.354 10.64 4.829 2.277 1.474 6.224 2.976 6.224 2.976s-8.145-2.444-11.055-3.623c-2.91-1.178-7.578-3.368-10.253-3.957-2.676-0.588-8.113-0.68-8.113-0.68zm14.5-3.03s5.96-1.774 7.82-1.83c1.86-0.057 3.61 0.68 6.172 1.555 2.562 0.876 2.522 0.857 5.333 1.49 2.797 0.63 7.077 1.513 7.077 1.513s-3.616-0.016-6.792-0.466c-3.116-0.441-7.375-1.698-10.058-2.249-2.684-0.55-9.552-0.013-9.552-0.013z" enable-background="new"/>
827 id="filter8856" 827 <path d="M1099.2-279.93c.161.269 11.208-4.6 12.188-4.688.98-.087 2 3.125 2 3.125s-.775-1.504-2.875-1.062-11.301 2.671-11.312 2.625z"/>
828 x="-0.3253231" 828 </g>
829 width="1.6506462" 829 <path d="M1107.5-284.09c-.419.213-.156.094-.647.306-.486.21-1.724.574-4.08 1.459-3.33 1.25-5.83 2.153-7.026 3.066-1.536.021-3.72.233-5.656.719a227.709 227.709 0 0 1-6.75 1.593c-1.895.42-1.676.643-2.875.875-1.297.252-1.721-.009-5.438.782-3.49.742-8.894 1.93-10.156 2.687-1.583-.18-3.867-.322-5.843-.031-3.04.447-4.917.673-6.844.906-.655.08-1.041.201-1.344.282-.426.131-.686.26-1.375.343-1.311.16-1.762-.157-5.531.282-3.554.413-9.005 1.272-10.25 1.937-1.599-.297-3.858-.534-5.844-.344-3.059.294-4.972.484-6.906.657-1.934.172-1.689.422-2.906.53-1.317.118-1.76-.163-5.532.25-3.541.39-9.007 1.21-10.28 1.876-1.6-.295-3.888-.507-5.876-.313-3.058.3-4.94.48-6.875.657-.657.06-1.04.178-1.343.25-.428.118-.684.218-1.375.28-1.316.121-1.76-.194-5.532.22-3.556.39-9.005 1.239-10.25
830 y="-0.19013336" 8301.906-1.598-.294-3.86-.524-5.843-.313-3.056.326-4.974.526-6.907.719-1.932.192-1.69.44-2.906.562-1.315.132-1.763-.164-5.53.282-3.54.418-8.979 1.292-10.25 1.969-1.599-.282-3.86-.42-5.845-.188-3.052.358-4.945.568-6.875.781-.656.073-1.04.173-1.344.25-.426.127-.684.267-1.375.344-1.313.146-1.767-.174-5.53.313-3.55.458-8.98 1.419-10.22 2.125-1.593-.245-3.834-.382-5.812-.125-3.048.394-4.95.648-6.875.906-1.925.258-1.726.493-2.938.656-1.31.176-1.747-.104-5.5.469-3.524.538-8.923 1.699-10.188 2.437-1.587-.203-3.845-.254-5.812.094-3.026.536-4.9.862-6.813 1.187-.65.111-1.013.271-1.312.375-.42.165-.664.332-1.344.47-1.295.26-1.727-.007-5.438.812-3.498.772-8.846 2.383-10.062 3.219-1.562-.078-3.757.085-5.687.593-2.972.783-4.818 1.232-6.688 1.75s-1.666.768-2.843 1.094c-1.273.353-1.697.107-5.344 1.188-3.425 1.014-8.65 2.933-9.875 3.843-1.539.013-3.72.273-5.625.875-2.931.928-4.75 1.459-6.594
831 height="1.3802667"> 8312.063-.627.205-.992.392-1.281.531-.408.214-.653.409-1.313.625-1.254.412-1.686.19-5.28 1.438-3.39 1.177-8.596 3.213-9.782 4.156-1.524.06-3.65.395-5.531 1.062-2.898 1.029-4.7 1.676-6.531 2.313-1.833.637-1.628.848-2.782 1.25-1.246.434-1.663.2-5.218 1.562-3.34 1.28-8.488 3.483-9.688 4.47-1.507.107-3.636.498-5.5 1.218a1044.752 1044.752 0 0 1-6.437 2.469c-.617.233-.997.442-1.282.593v1.094c.112-.222.386-.817.907-1.094.698-.37 4.813-1.993 6.812-2.718 1.657-.602 4.154-1.329 5.969-1.313.302.003.588.051.844.094 1.842.308 7.468 1.562 7.468 1.562s-6.233-1.646-7.03-1.843c-.191-.048-.536-.07-.97-.063 1.146-.87 4.762-2.393 7.344-3.437 2.839-1.148 3.117-1.252 5.063-1.657 2.008-.417 3.156-.5 3.156-.5s-.082-.6.969-1.125c.705-.351 4.887-1.892 6.906-2.562 1.952-.648 5.057-1.359 6.875-1 1.863.367 7.531 1.812 7.531 1.812s-6.287-1.87-7.094-2.093c-.193-.054-.53-.086-.968-.094 1.158-.833 4.794-2.195 7.406-3.156
832 <feGaussianBlur 8322.87-1.056 3.167-1.162 5.125-1.532 1.853-.35 2.859-.425 3.031-.437.114-.217.377-.81.906-1.063.71-.338 4.926-1.712 6.97-2.312 1.692-.497 4.24-1.037 6.093-.906.308.021.613.097.875.156 1.881.424 7.594 2.031 7.594 2.031s-6.342-2.065-7.157-2.312c-.194-.06-.557-.104-1-.125 1.17-.798 4.863-2.057 7.5-2.938 2.898-.968 3.233-1.003 5.22-1.281 2.049-.287 3.187-.313 3.187-.313s-.073-.607 1-1.062c.72-.306 4.99-1.5 7.062-2 2.003-.483 5.199-.928 7.063-.406 1.91.535 7.719 2.5 7.719 2.5s-6.423-2.424-7.25-2.72c-.198-.07-.583-.14-1.032-.187 1.188-.728 4.916-1.774 7.594-2.5 2.944-.797 3.292-.77 5.313-.906 1.913-.128 2.947-.07 3.125-.062.117-.204.391-.78.937-.97.732-.253 5.079-1.047 7.188-1.374 1.748-.271 4.4-.485 6.312-.094.318.065.605.186.875.281 1.94.69 7.844 3.094 7.844 3.094s-6.535-2.95-7.375-3.312c-.201-.087-.575-.167-1.031-.25 1.206-.633 5.03-1.396 7.75-1.906 2.99-.562 3.3-.53 5.344-.532 2.109-.002
833 inkscape:collect="always" 8333.312.125 3.312.125s-.073-.63 1.031-.937c.74-.206 5.126-.834 7.25-1.063 2.053-.22 5.319-.252 7.22.47 1.947.738 7.843 3.374 7.843 3.374s-6.563-3.179-7.406-3.562c-.202-.092-.543-.187-1-.282 1.21-.602 4.984-1.248 7.718-1.656 3.005-.448 3.326-.452 5.375-.406 1.94.043 3.007.194 3.188.219.119-.194.384-.766.937-.907.743-.188 5.155-.734 7.282-.937 1.763-.169 4.42-.234 6.343.25.32.08.604.203.875.312 1.953.784 7.907 3.47 7.907 3.47s-6.592-3.254-7.438-3.657c-.202-.096-.572-.207-1.031-.313 1.214-.574 5.044-1.122 7.781-1.5 3.009-.415 3.323-.442 5.375-.375 2.118.07 3.313.25 3.313.25s-.078-.637 1.03-.906c.745-.18 5.153-.663 7.282-.844 2.059-.174 5.343-.124 7.25.657 1.955.8 7.875 3.53 7.875 3.53s-6.56-3.308-7.406-3.718c-.202-.098-.572-.203-1.031-.312 1.215-.564 5.01-1.115 7.75-1.47 3.01-.389 3.321-.397 5.375-.312 1.944.08 3.006.254 3.187.282.12-.191.383-.746.938-.875.744-.174 5.15-.65 7.28-.813
834 stdDeviation="28.712591" 8341.767-.134 4.45-.126 6.376.375.32.083.603.201.875.313 1.954.8 7.906 3.562 7.906 3.562s-6.591-3.34-7.437-3.75c-.203-.098-.572-.203-1.032-.312 1.215-.564 5.042-1.084 7.782-1.438 3.01-.39 3.352-.429 5.406-.344 2.12.088 3.312.313 3.312.313s-.078-.65 1.032-.906c.744-.173 5.15-.624 7.28-.782 2.061-.152 5.344-.096 7.25.688 1.956.804 7.876 3.5 7.876 3.5s-6.56-3.276-7.406-3.688c-.203-.098-.572-.202-1.032-.312 1.216-.562 5.012-1.128 7.75-1.5 3.01-.41 3.323-.416 5.375-.344 1.943.068 3.008.165 3.188.188.119-.195.384-.73.937-.875.742-.197 5.131-.83 7.25-1.094 1.757-.22 4.406-.333 6.313.031.317.06.606.19.875.281 1.936.661 7.844 2.938 7.844 2.938s-6.537-2.807-7.375-3.156c-.2-.084-.577-.174-1.032-.25 1.204-.651 5.02-1.372 7.72-2 2.966-.69 3.288-.756 5.312-.875 2.088-.124 3.28-.032 3.28-.032s-.086-.632 1-1.03c.73-.269 5.048-1.339 7.126-1.813 2.008-.46 5.168-1.03 7-.625 1.878.414 13.578 3.015 13.578
835 id="feGaussianBlur8858" /> 8353.015s-12.328-3.022-13.141-3.265c-.195-.058-.559-.107-1-.125 1.167-.804 3.514-1.688 6.11-2.703 1.68-.659.923-.377 2.775-1.004 1.754-.594 2.486-1.01 2.63-1.113.347-.207-.355-.122-.544-.042z" enable-background="new" filter="url(#hs)" opacity=".25"/>
836 </filter> 836 <path d="m1082.6-275.12c1.873 0.393 4.496 1.146 6.031 1.969s2.822 1.056 5.375 2.5c2.527 1.43 4.796 2.007 6.969 2.531 2.348 0.566 5.435 0.715 8.844 1.188-1.09-0.84-6.608-1.173-8.406-1.563-1.8-0.39-3.895-1.016-6.594-2.313-2.7-1.296-3.495-1.799-5.813-2.687-2.318-0.889-4.004-1.383-6.406-1.625z" enable-background="new" filter="url(#hr)" opacity=".25"/>
837 <filter 837 <path d="M1051.5-270c1.905.578 4.528 1.616 6.094 2.594 1.565.978 2.88 1.36 5.5 3.125 2.593 1.747 4.986 2.71 7.25 3.594 2.446.955 5.682 1.657 9.406 3.062-1.19-1.138-7.063-2.687-8.938-3.375-1.874-.688-4.081-1.566-6.874-3.281-2.794-1.715-3.574-2.284-5.938-3.406-2.364-1.123-4.057-1.835-6.5-2.313z" enable-background="new" filter="url(#hq)" opacity=".25"/>
838 inkscape:collect="always" 838 <path d="m1020.2-266.84c1.912 0.638 4.581 1.755 6.156 2.813 1.575 1.057 2.896 1.508 5.531 3.406 2.61 1.878 5.029 3.03 7.313 4.062 2.468 1.116 5.764 2.174 9.531 3.844-1.203-1.222-7.203-3.314-9.094-4.125-1.89-0.81-4.064-1.894-6.874-3.75s-3.622-2.477-6-3.719c-2.379-1.242-4.111-1.975-6.563-2.531z" enable-background="new" filter="url(#hp)" opacity=".25"/>
839 id="filter8860" 839 <path d="M1110.2-266.89c.15.049.688.631.11 1.484-.81 1.195-5.705 3.325-8.563 4.125-2.845.798-6.29.978-10.562-.375-4.302-1.362-5.47-2.468-10.656-4.312 4.664 2.115 6.195 3.952 10.125 5.344 1.62.574 3.367.94 5.062 1.03-.445.327-1.53.984-3.562 1.595-2.796.84-6.65 1.534-8.25 1.625-1.515.086-3.142-.513-3.438-.625.167.103.374.377-.25 1.03-.899.945-6.147 1.924-9.125 2.25-2.964.326-6.521-.015-10.906-1.905-3.978-1.715-5.339-2.916-9.406-4.75v.156c3.643 2.095 5.284 3.883 8.875 5.562 1.73.81 3.592 1.41 5.406 1.72-.534.286-1.557.71-3.437 1.03-2.87.488-6.81.817-8.438.75-.85-.034-1.728-.184-2.406-.406-.685-.215-1.19-.444-1.312-.5.169.107.43.403-.22 1.031-.909.88-6.245 1.337-9.25 1.47-2.99.131-6.588-.451-11-2.563-4.44-2.127-5.64-3.402-10.905-5.782 4.734 2.597 6.286 4.63 10.344 6.72 1.673.861 3.485 1.493 5.25 1.937-.463.233-1.59.688-3.688.937-2.886.343-6.834.493-8.468.375-1.547-.111-3.232-.857-3.532-1
840 x="-0.38093024" 840.17.12.414.41-.218 1-.913.851-6.244 1.262-9.25 1.375-2.993.113-6.59-.49-11-2.594-4.002-1.908-5.388-3.137-9.47-5.093v.156c3.656 2.204 5.295 4.053 8.907 5.906 1.74.893 3.637 1.528 5.469 1.969-.54.248-1.578.615-3.469.844-2.886.348-6.866.52-8.5.406a9.446 9.446 0 0 1-2.406-.5 12.532 12.532 0 0 1-1.313-.531c.17.112.465.422-.187 1.03-.913.853-6.275 1.294-9.281 1.407-2.993.112-6.594-.528-11-2.594-4.437-2.08-5.647-3.331-10.906-5.656 4.729 2.548 6.29 4.578 10.344 6.625 1.671.844 3.485 1.467 5.25 1.906-.464.235-1.59.684-3.688.938-2.886.348-6.836.57-8.469.469-1.544-.096-3.2-.83-3.5-.97.17.12.382.405-.25 1-.912.861-6.246 1.331-9.25 1.47-2.99.138-6.567-.451-10.969-2.47-3.993-1.83-5.365-3.028-9.437-4.905v.156c3.647 2.133 5.27 3.935 8.875 5.719 1.737.86 3.607 1.45 5.437 1.875-.54.253-1.55.64-3.437.906-2.88.404-6.838.646-8.469.562a9.36 9.36 0 0 1-2.406-.437 12.971 12.971 0 0
841 width="1.7618605" 8411-1.313-.5c.17.109.432.41-.218 1.031-.911.87-6.25 1.392-9.25 1.563-2.987.17-6.574-.316-10.97-2.282-4.424-1.978-5.605-3.228-10.843-5.375 4.71 2.388 6.27 4.39 10.312 6.344a23.73 23.73 0 0 0 5.218 1.781c-.461.25-1.597.713-3.687 1.032-2.876.438-6.78.733-8.406.687-1.539-.043-3.233-.745-3.532-.875.169.113.411.414-.218 1.031-.908.891-6.203 1.529-9.188 1.813-2.971.283-6.573-.176-10.938-1.938-3.96-1.598-5.329-2.795-9.344-4.312v.156c3.596 1.811 5.239 3.582 8.813 5.156 1.722.759 3.587 1.29 5.406 1.625-.536.28-1.566.688-3.437 1.063-2.856.572-6.79 1.02-8.407 1.031-.844.006-1.706-.08-2.375-.25-.676-.162-1.16-.33-1.28-.375.166.094.422.383-.22 1.062-.897.951-6.186 1.918-9.125 2.438-2.925.518-6.432.374-10.719-1.031-4.315-1.415-5.472-2.53-10.562-3.969 4.577 1.751 6.09 3.56 10.031 5 1.627.594 3.37.956 5.094 1.156-.453.297-1.555.884-3.594 1.469-2.804.805-6.638 1.576-8.218
842 y="-0.17518716" 8421.75-1.495.165-3.117-.317-3.407-.406.164.09.393.36-.218 1.062-.883 1.014-6.045 2.372-8.938 3.063-2.88.687-6.335.76-10.562-.438-3.835-1.086-5.172-2.072-9.062-3.125v.156c3.484 1.395 5.07 2.92 8.53 4.032 1.669.535 3.457.786 5.22.875-.52.352-1.5.914-3.313 1.53-2.765.942-6.59 1.936-8.156 2.157-.818.115-1.633.123-2.281.031-.655-.083-1.133-.218-1.25-.25.162.075.434.34-.188 1.094-.87 1.055-6.01 2.66-8.875 3.438-2.852.774-6.259.958-10.438-.094-4.206-1.06-5.356-2.042-10.344-3.156 4.485 1.46 5.97 3.135 9.813 4.25 1.585.46 3.287.638 4.969.687-.442.337-1.513 1.028-3.5 1.781-2.734 1.037-6.452 2.163-8 2.438-1.465.26-3.06-.117-3.344-.188.16.08.38.321-.219 1.063-.865 1.07-5.916 2.818-8.75 3.687-2.82.866-6.207 1.157-10.344.22-3.753-.852-5.048-1.717-8.875-2.595v.157c3.428 1.237 4.987 2.632 8.375 3.53 1.632.434 3.367.584 5.094.563-.51.384-1.477 1.022-3.25 1.75-2.706 1.112-6.436 2.308-7.969
843 height="1.3503743"> 8432.625-.8.166-1.612.219-2.25.157v1.406c.227-.145.449-.273.719-.375 1.08-.41 2.171-.216 6-1.688 3.828-1.471 5.224-2.005 5.906-2.406.68-.4 1.612-.88 2.219-1.531 1.827-.138 3.57-.493 4.937-1 2.968-1.1 4.876-1.806 6.782-2.469 1.905-.663 2.354-1.415 3.406-1.781 1.091-.38 2.195-.166 6.062-1.531 3.868-1.366 5.283-1.827 5.969-2.22.701-.4 1.7-.932 2.313-1.593 1.97-.055 3.816-.385 5.28-.875 3.002-1.005 4.927-1.622 6.845-2.25 1.538-.504 2.174-1.047 2.906-1.437.23-.135.475-.254.75-.344 1.098-.36 2.181-.082 6.094-1.313 3.912-1.23 5.366-1.673 6.062-2.03.694-.358 1.63-.794 2.25-1.407 1.865-.023 3.636-.267 5.031-.688 3.03-.913 4.993-1.43 6.938-1.968 1.945-.54 2.426-1.265 3.5-1.563 1.114-.31 2.22.007 6.187-1.031 3.968-1.039 5.418-1.433 6.125-1.75.735-.33 1.814-.754 2.438-1.375 1.997.116 3.857-.02 5.344-.375 3.078-.735 5.083-1.101 7.062-1.5 1.588-.32 2.244-.79 3-1.094.238-.107.467-.193.75-.25 1.134-.23
844 <feGaussianBlur 8442.305.209 6.344-.5s5.5-.927 6.219-1.187c.715-.26 1.704-.568 2.343-1.094 1.925.24 3.748.224 5.188 0 3.126-.488 5.155-.7 7.156-.969 2.002-.268 2.489-.945 3.594-1.094 1.146-.154 2.276.302 6.344-.219 4.068-.52 5.56-.695 6.28-.937.738-.247 1.799-.586 2.438-1.125 2.05.335 3.974.398 5.5.219 3.143-.37 5.18-.56 7.188-.782 1.61-.178 2.265-.608 3.031-.843a3.43 3.43 0 0 1 .781-.188c1.15-.128 2.302.347 6.375-.125s5.56-.61 6.282-.844c.719-.232 1.7-.473 2.343-.968 1.937.333 3.77.404 5.22.25 3.145-.335 5.177-.519 7.187-.719 2.01-.2 2.484-.826 3.593-.938 1.152-.115 2.297.366 6.375-.062s5.59-.562 6.313-.781c.74-.224 1.796-.514 2.437-1.031 2.058.398 4.002.493 5.532.343 3.148-.308 5.175-.473 7.187-.656 1.614-.147 2.263-.56 3.031-.781.242-.081.494-.13.782-.156 1.152-.106 2.293.392 6.375 0 4.082-.393 5.589-.531 6.312-.75.721-.219 1.7-.448 2.344-.938 1.938.35 3.769.454 5.219.313 3.148-.309 5.175-.474
845 inkscape:collect="always" 8457.187-.657 2.012-.183 2.514-.838 3.625-.937 1.152-.103 2.292.385 6.375 0s5.589-.501 6.313-.719c.739-.222 1.795-.514 2.437-1.031 2.057.402 4.003.503 5.531.344 3.147-.329 5.178-.523 7.188-.72 1.613-.156 2.266-.63 3.031-.874.24-.088.463-.122.75-.156 1.148-.14 2.317.34 6.375-.25 4.058-.59 5.562-.778 6.281-1.032.717-.253 1.675-.558 2.313-1.093 1.92.211 3.72.151 5.156-.094 3.12-.533 5.112-.929 7.094-1.313 1.982-.384 2.474-1.04 3.562-1.28 1.13-.252 2.27.115 6.25-.876s5.43-1.42 6.125-1.781c.723-.376 1.762-.87 2.375-1.531 1.963-.012 3.794-.291 5.22-.844 2.95-1.145 4.872-1.87 6.687-2.75 1.455-.707 2.334-1.686 2.547-1.984.212-.298.111-.746.137-.767.043-.035.32-.085.48-.429.858-1.847 2.32-5.644
846 stdDeviation="19.304015" 8462.435-6.329.113-.682.163-1.348.214-1.745.03-.23-.147-.865-.125-.924.031-.082.305-.265.36-.515.267-1.198.09-2.191-.125-3.609-.214-1.417-.983-4.622-1.637-5.476-.659-.862-1.223-1.011-1.748-1-.208.27.137.262.163.312.68.05.934.369 1.42.897s1.221 3.85 1.358 5.301.19 2.86-.088 3.469c-.278.608-.723.517-1.016.583.531.186.67.125.732.969.058.813-.134 1.64-.52 2.806-.392 1.18-1.846 4.35-2.286 4.598-.452.256-.731.27-1.067.14z" enable-background="new" filter="url(#ho)" opacity=".25"/>
847 id="feGaussianBlur8862" /> 847 <path d="m988.75-263.84c1.912 0.634 4.55 1.758 6.125 2.813 1.575 1.054 2.896 1.482 5.531 3.375 2.609 1.873 5.027 3.015 7.313 4.062 2.47 1.132 5.752 2.155 9.531 3.938-1.207-1.259-7.139-3.365-9.031-4.188s-4.128-1.93-6.938-3.781-3.622-2.482-6-3.719c-2.377-1.237-4.08-1.95-6.53-2.5z" enable-background="new" filter="url(#hn)" opacity=".25"/>
848 </filter> 848 <path d="M957.5-260.78c1.91.618 4.583 1.71 6.156 2.75 1.574 1.04 2.896 1.482 5.531 3.375 2.609 1.873 5.027 3.015 7.313 4.063 2.47 1.131 5.752 2.154 9.531 3.937-1.207-1.258-7.201-3.396-9.094-4.219-1.892-.823-4.096-1.93-6.906-3.781-2.81-1.85-3.593-2.44-5.969-3.656s-4.113-1.939-6.562-2.469z" enable-background="new" filter="url(#hm)" opacity=".25"/>
849 <filter 849 <path d="M926.09-257.38c1.908.597 4.553 1.664 6.125 2.688 1.571 1.023 2.87 1.44 5.5 3.28 2.603 1.823 5.029 2.973 7.313 4 2.467 1.111 5.755 2.094 9.53 3.845-1.205-1.249-7.171-3.319-9.062-4.125s-4.102-1.891-6.906-3.688c-2.804-1.796-3.627-2.402-6-3.594-2.373-1.191-4.054-1.903-6.5-2.406z" enable-background="new" filter="url(#hl)" opacity=".25"/>
850 inkscape:collect="always" 850 <path d="M894.91-253.56c1.902.554 4.587 1.589 6.156 2.594s2.874 1.408 5.5 3.219c2.6 1.791 5 2.871 7.281 3.875 2.465 1.083 5.76 2.04 9.532 3.75-1.205-1.236-7.175-3.245-9.063-4.032-1.888-.786-4.075-1.83-6.875-3.593s-3.6-2.369-5.969-3.532c-2.37-1.163-4.123-1.834-6.562-2.28z" enable-background="new" filter="url(#hk)" opacity=".25"/>
851 id="filter8888" 851 <path d="M863.72-248.66c1.88.43 4.504 1.38 6.063 2.313 1.558.932 2.852 1.257 5.468 3 2.59 1.724 4.981 2.708 7.25 3.625 2.452.99 5.74 1.877 9.5 3.5-1.201-1.208-7.152-3.067-9.03-3.782-1.88-.715-4.086-1.684-6.876-3.375s-3.585-2.228-5.937-3.28-4.026-1.713-6.438-2z" enable-background="new" filter="url(#hj)" opacity=".25"/>
852 x="-0.2112188" 852 <path d="m833.16-241.38c1.848 0.296 4.47 0.976 6 1.781s2.814 1.056 5.375 2.531c2.535 1.46 4.89 2.326 7.125 3.063 2.414 0.797 5.657 1.467 9.375 2.844-1.188-1.129-7.088-2.59-8.938-3.156-1.85-0.567-4.003-1.374-6.75-2.844-2.746-1.47-3.5-1.92-5.812-2.781-2.311-0.861-4.005-1.32-6.375-1.438z" enable-background="new" filter="url(#hi)" opacity=".25"/>
853 width="1.4224375" 853 <path d="m802.91-232.31c1.822 0.211 4.366 0.8 5.875 1.531 1.51 0.73 2.756 0.93 5.281 2.281 2.5 1.338 4.832 2.049 7.031 2.657 2.377 0.656 5.565 1.073 9.22 2.187-1.168-1.045-6.93-2.103-8.75-2.562-1.822-0.46-3.953-1.127-6.657-2.438s-3.471-1.72-5.75-2.469-3.913-1.179-6.25-1.187z" enable-background="new" filter="url(#hh)" opacity=".25"/>
854 y="-0.16808605" 854 <path d="M773.19-222.19c1.811.179 4.32.665 5.813 1.344 1.491.678 2.753.798 5.25 2.062 2.47 1.252 4.79 1.896 6.968 2.438 2.354.585 5.492.897 9.094 1.844-1.15-.992-6.852-1.784-8.656-2.188s-3.916-1.021-6.594-2.25c-2.678-1.229-3.403-1.61-5.656-2.281-2.253-.67-3.896-1.002-6.219-.969z" enable-background="new" filter="url(#hg)" opacity=".25"/>
855 height="1.3361721"> 855 <path d="M743.56-211.19c1.793.13 4.273.55 5.75 1.188s2.716.741 5.188 1.937c2.446 1.184 4.72 1.747 6.874 2.219 2.328.51 5.42.68 9 1.562-1.143-.97-6.747-1.59-8.53-1.937-1.784-.347-3.884-.888-6.532-2.031-2.648-1.144-3.395-1.517-5.625-2.125-2.23-.61-3.826-.91-6.125-.813z" enable-background="new" filter="url(#hf)" opacity=".25"/>
856 <feGaussianBlur 856 </g>
857 inkscape:collect="always" 857 </g>
858 stdDeviation="8.3693583" 858 <path d="M912.45 671.2c1.642-3.218 3.518-5.735 4.861-9.849.8-3.658 3.312-2.03 7.26-8.397 1.403-2.24 5.477.391 8.966-2.399 1.27-.803 2.885-.404 4.483-.063 3.765 1.319 5.825 3.704 8.333 5.808 6.14 5.97 20.534 7.944 23.486 6.314 1.434-2.905 7.882-5.41 12.374-11.112.749-1.123 11.73-8.745 14.647-6.566" enable-background="new" fill="none" stroke="#000"/>
859 id="feGaussianBlur8890" /> 859 <path d="M937.07 660.78c7.363-3.233 13.811-8.908 20.708-13.385 3.31-1.97 6.87 3.216 10.796 3.599 2.298-.218 3.713 1.202 5.682 1.641 5.157 1.318 2.398 3.865 9.975 6.44 6.156 1.72 8.908-6.799 14.9-7.324 4.878-.503 8.1-.316 11.617-.252 3.927.139 4.079-3.498 6.061-5.304 2.98-2.805 7.156-1.85 10.145-4.74 1.018-1.385 1.955-3.011 2.735-5.109.882-2 3.04.306 4.798 1.263" enable-background="new" fill="none" stroke="#000"/>
860 </filter> 860 <g fill-rule="evenodd">
861 <filter 861 <path transform="translate(48.571 195.53)" d="m403.28 1056.3l56.569-42.426 72.125 14.142-46.669 52.326-53.74 7.071-28.284-31.113z" enable-background="accumulate" filter="url(#he)" opacity=".25"/>
862 inkscape:collect="always" 862 <path d="m590.84 1256.1c-1.407 18.801-1.145 32.751 2.082 49.303 3.226 16.552 16.406 45.907 20.334 63.184 3.926 17.267 2.694 38.31-12.46 51.148-15.317 12.977-42.05 21.599-67.831 15.734s-69.55-49.223-88.59-70.228c-19.112-21.083-63.761-93.851-77.94-124.28-14.177-30.425-12.66-36.719-8.119-45.53-9.367-24.52-12.414-50.067-33.712-75.577 30.325 3.114 43.88 26.956 60.126 47.14-5.53-48.076-18.055-64.416-28.374-90.724 29.994 6.082 50.579 31.872 63.98 72.712 9.554-3.918 18.238-9.373 30.187-9.061-11.298-41.696-17.949-69.916-36.687-101.07 53.442 5.67 83.657 80.639 78.971 87.96 9.978-2.243 19.006-6.53 30.437-5.65-11.249-38.348-21.048-76.869-3.66-118.65 0 0 48.287 65.436 54.39 85.805 6.103 20.37 1.52 38.701 1.52 38.701s16.96 31.085 20.293 51.094c3.373 20.241-3.533 59.103-4.946 77.983z" enable-background="new" fill="#ada469"/>
863 id="filter8892" 863 <path transform="matrix(-.90453 .25066 .25066 .90453 1043.9 219.06)" d="M719.5 738.7l18.312 15.432 44.411-15.388L805.5 713.2l11.464 19.221 30.672 12.784 25.097 5.728L892 723.2l16.023 23.826L947 752.2l10.245-6.198L964 754.7l25.5 11 2-40.5-35.551-14.538-32.493-21.527-40.452-11.466-21.307-15.533L840 685.2l-84.971-46.583-33.03 38.083-2.5 62z" clip-path="url(#e)" enable-background="accumulate" fill="#fff" filter="url(#o)"/>
864 x="-0.18692794" 864 <path transform="matrix(-.90453 .25066 .25066 .90453 870.86 206.47)" d="M584 696.5l-6.563 17.156s-7.811 20.365-15.688 43.656c-3.938 11.646-7.883 24.041-10.938 35.125s-5.335 20.38-5.5 28.281c-.398 19.162 5.747 34.888 8.938 41.75-.772 3.555-1.991 9.454-3.344 18.094-1.92 12.268-3.718 27.154-2.375 39.875 1.382 13.088 6.812 28.188 12.594 43.031s12.054 29.227 15.22 38.031c6.631 18.452 9.992 31.576 11.311 48.5.582 7.456-.242 20.336-1.25 33.375s-2.186 26.301-1.687 36.969c.989 21.14 9.328 46.835 33.375 57.937 22.775 10.515 55.327 11.702 83.438-3.437 16.16-8.704 30.076-27.098 43.375-46.906s24.969-41.053 31.938-54.906c15.353-30.521 39.394-115.46 45.625-152.72 3.018-18.047 3.921-29.066 2.625-38.031-.979-6.766-3.828-12.147-6.875-16.22 2.042-27.507-.732-51.368 11.969-79.405l10.562-23.281-23.812 9.312c-17.49 6.838-28.902 19.045-36.594 32.062-.323.546-.563 1.108-.875 1.656.222-22.515 4.408-37.638
865 width="1.3738559" 8656.594-58.688l1.968-19-17.03 8.656c-30.595 15.556-45.696 48.193-49.72 90.22-4.245-.626-8.831-1.02-13.812-.844-.291-39.18-.396-67.037 8.594-99.375l5.594-20.125-19.438 7.656c-30.91 12.204-47.86 41.931-56.625 68.375-4.383 13.222-6.746 25.801-7.594 35.938a92.19 92.19 0 0 0-.312 7.719c-3.242-.037-6.42.136-10.062.5.041-39.005-3.485-79.754-32.281-116.5L584 696.498zm5.813 43.812c16.807 30.644 17.475 63.967 16.938 99.75l-.22 15.062 12.036-6.54c8.662-3.132 19.56-.227 31.934-.835l14.675 9.357-6.331-25.794c-.09-.23-.22-.417-.25-.72-.2-2.039-.222-5.472.125-9.624.694-8.304 2.79-19.585 6.625-31.156 5.155-15.553 13.488-31.192 25.125-42.531-4.684 28.638-3.216 60.259-3.012 95.805l-2.766 13.262 15.496-7.598c9.03-2.758 17.19-.35 29.281 1.094l13.246 9.444L741.094 840c1.448-30.972 8.222-53.678 20.719-68.875-2.987 19.779-5.43 41.785.313 78.344l1.065 6.373-2.938 11.517 10.617-8.168 9.19 10.222-1.549-10.464
866 y="-0.23646873" 8663.427-6.95c5.7-13.21 10.173-26.212 16.344-36.655.96-1.624 2.031-3.065 3.062-4.563-3.68 21.155-2.427 40.208-4.093 57.781l-4.68 7.807 7.398.225c3.22 3.483 3.868 3.85 4.563 8.656s.318 14.4-2.563 31.625c-5.568 33.288-31.846 77.84-43.74 101.49-6.605 13.13-18.528 57.486-31.123 76.246s-28.53 39.767-37.172 44.42c-21.49 11.575-44.556 25.507-60.619 18.09-14.375-6.636-23.04-21.192-23.814-37.742-.383-8.188.613-21.31 1.625-34.406 1.013-13.097 11.29-22.571 15.423-36.563 5.373-18.181-1.447-36.594-12.5-53.937-6.486-10.178-23.977-24.258-29.548-38.562s-10.368-29.003-11.28-37.656c-.927-8.771.422-23.025 2.218-34.5 1.796-11.475 3.844-20.281 3.844-20.281l9.423-3.615-10.485-3.885s-8.5-15.31-8.094-34.812c.071-3.423 1.836-12.728 4.719-23.188s6.764-22.553 10.625-33.97c3.044-9.002 5.78-16.602 8.344-23.687z" clip-path="url(#am)" enable-background="new" filter="url(#ds)" opacity=".588"/>
867 height="1.4729375"> 867 <g transform="translate(324.57 331.53)" clip-path="url(#is)" enable-background="new" fill="#fff">
868 <feGaussianBlur 868 <path transform="matrix(-.90453 .25066 .25066 .90453 -52.2 74.097)" d="m-15.668 843.49l-49.497-15.556-26.87 52.326 41.012 45.255 49.497-38.184z" enable-background="accumulate" filter="url(#dr)"/>
869 inkscape:collect="always" 869 <path transform="matrix(-.90453 .25066 .25066 .90453 -46.928 75.511)" d="m118.71 859.93l-55.154-46.669-43.841 36.77 33.941 53.74-13.597 85.462-39.445 28.292-41.012 11.314-2.828 46.669 56.569 25.456 18.944-69.65 23.457-58.857 46.348-72.615 16.62-39.912z" enable-background="accumulate" filter="url(#dq)"/>
870 stdDeviation="31.21228" 870 </g>
871 id="feGaussianBlur8894" /> 871 <path transform="matrix(-.90453 .25066 .25066 .90453 277.64 407.04)" d="m-70.822 932.58l60.811-26.87 100.41 31.113-63.64 31.113-82.024-16.971-15.556-18.385z" enable-background="accumulate" filter="url(#cy)" opacity=".25"/>
872 </filter> 872 <path transform="matrix(-.90453 .25066 .25066 .90453 870.86 206.47)" d="M583.06 715.75c-12.106 34.45-26.714 68.533-31.75 104.84-.832 14.929 4.59 29.159 8.844 43.062-5.916 27.201-10.137 56.9 1.156 83.125 13.517 38.161 35.001 75.682 32.423 117.47-.948 29.294-9.014 60.994 5.39 88.282 10.199 19.335 33.14 27.312 53.968 27.668 27.862 1.174 56.463-11.622 72-35.261 22.596-29.372 41.802-61.497 55.24-96.06 16.89-45.506 29.672-92.561 37.934-140.4 1.824-12.941 3.1-27.47-4.58-38.823-3.43-7.336.043-15.56-.684-23.31.674-24.995 4.013-50.664 16.653-72.596-17.733 6.445-35.073 16.56-44.003 33.864-3.935 6.71-7.605 13.574-11.372 20.386-3.55-30.014 3.72-59.648 6.781-89.281-20.166 9.055-36.877 25.655-44.175 46.682-6.304 15.58-8.802 32.317-10.263 49.037-8.253-1.52-16.684-2.102-25.062-1.5-.963-38.698-.467-79.407 10.97-115.91-18.682 6.218-35.167 18.736-45.629 35.387-13.853 20.88-21.26 45.754-23.059 70.613.586
873 <clipPath 8734.325-.06 11.84-6.343 9.875-5.332.018-10.63.679-15.938 1.094 1.147-39.381-3.342-81.628-27.062-114.22-3.061-3.637-5.637-7.685-8.625-11.344l-2.813 7.312zm7.75 13.844c18.565 29.296 22.482 64.82 22.125 98.875.204 5.175-.517 11.829.125 16.062 12.319-6.103 26.739-2.44 39.781-2.187 2.317 1.223 3.192 1.652 1.906-1.407-4.164-13.953-1.848-28.613 1.805-42.408 6.367-26.29 20.628-51.088 42.82-67.03-8.617 37.237-5.716 76.562-6.094 113.97 12.253-6.91 27.28-3.446 40.031-.25 3.393 3.535 2.29-.73 2.188-3.812-.483-21.371 4.131-43.07 13.688-62.156 5.963-10.687 14.243-19.804 22.438-28.875-7.872 33.838-9.203 69.336-2.719 103.5 1.725-1.411 4.607-.454 5.656-.375 9.684-21.237 16.351-45.381 34.89-60.742 1.874-.371-1.448 8.525-1.484 11.898-3.535 21.846-7.175 44.142-8.784 66.219-8.784 2.342 2.849 2.323 3.469 4.062 7.923 10.566 4.663 24.405 3.632 36.353-7.064 45.034-22.142 87.362-35.954 130.68-12.075 32.95-27.374
874 clipPathUnits="userSpaceOnUse" 87458.852-47.888 87.202-10.953 13.551-23.245 27.851-40.844 32.5-20.156 6.242-44.207 10.877-62.6.046-17.29-12.34-21.024-35.709-19.262-55.686.048-15.826 4.938-28.512 4.41-43.492-.538-15.263-2.291-30.565-6.542-46.866-4.252-16.302-9.044-24.918-16.12-41.573-7.24-17.045-15.07-36.749-18.204-56.288-1.75-18.627 2.891-37.123 5.78-55.25 3.297-2.837-1.597-5.196-2.312-8.187-7.6-17.015-8.407-36.775-2.742-54.56 7.13-25.072 15.761-49.632 24.68-74.128l2.125 3.906z" clip-path="url(#cj)" enable-background="new" filter="url(#ir)" opacity=".588"/>
875 id="clipPath8906"> 875 <path transform="matrix(-.90453 .25066 .25066 .90453 1043.9 219.06)" d="m735.06 733.04l2.755 21.089 44.411-15.388 4.851-22.39-3.936-22.052-22.452-36.593-8.28 30.305-17.35 45.029z" clip-path="url(#e)" enable-background="accumulate" fill="#fff" filter="url(#bz)"/>
876 <path 876 <path transform="matrix(-.90453 .25066 .25066 .90453 1043.9 219.06)" d="m831.81 730.29l15.822 14.905 20.855 2.9-1.59-39.926 8.325-30.508-7.165-6.341-21.697 20.942-14.55 38.028z" clip-path="url(#e)" enable-background="accumulate" fill="#fff" filter="url(#by)"/>
877 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#262f2f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" 877 </g>
878 d="m 352.24553,211.99185 c -3.80443,-25.26423 -16.80972,-50.63802 -17.1568,-75.52523 -0.18626,-13.35552 3.27285,-26.57091 13.75553,-39.554046 36.34702,-65.295835 116.94091,-84.694685 185.93466,-91.465427 86.92239,-11.016801 184.91267,17.940072 233.37134,95.401283 54.12402,75.7333 56.67476,172.53912 80.61204,259.52795 29.43779,127.1276 54.77914,256.21414 60.39224,386.85035 -3.06348,78.18185 -8.42634,165.18415 -60.50321,228.13413 -48.02654,50.35744 -122.78647,50.05304 -187.06988,59.00234 -90.55539,4.655 -184.35153,-16.1458 -261.7839,-64.19824 -64.77564,-37.94001 -95.73019,-113.47863 -97.2794,-186.01958 -8.38917,-79.87516 26.39152,-153.80851 51.6204,-227.15961 7.47061,-82.76107 9.41286,-166.24775 9.65334,-249.38484 -0.83682,-32.19544 -7.08953,-63.81733 -11.54636,-95.60908 z" 878 <g transform="translate(324.57 331.53)" clip-path="url(#iq)" enable-background="new" filter="url(#ip)">
879 id="path8908" 879 <path d="M36.494 811.806l-14.799 11.372-17.47-31.162 14.663.65 17.606 19.14z" enable-background="accumulate" fill="#fff" fill-rule="evenodd"/>
880 sodipodi:nodetypes="cscccccccccccc" 880 <path d="M-55 757.2h182v177H-55z" enable-background="accumulate" fill="none"/>
881 inkscape:connector-curvature="0" /> 881 </g>
882 </clipPath> 882 <g transform="translate(324.57 331.53)" clip-path="url(#io)" enable-background="new" filter="url(#in)">
883 <filter 883 <path d="m83.111 790.72l-28.201 12.855-5.658-21.687-13.943-25.046 6.325-6.88 26.384 18.51 15.094 22.249z" enable-background="accumulate" fill="#fff" fill-rule="evenodd"/>
884 inkscape:collect="always" 884 <path d="M-22 696.2h165v176H-22z" enable-background="accumulate" fill="none"/>
885 id="filter8940" 885 </g>
886 x="-0.25152978" 886 <g fill-rule="evenodd">
887 width="1.5030596" 887 <path d="m1084.8 1267.3c6.794 18.903 10.494 33.3 11.89 51.212 1.397 17.912-3.783 51.801-2.9 70.656 0.881 18.845 8.133 40.099 27.345 48.969 19.419 8.966 49.319 10.211 74.12-3.146 24.8-13.357 57.4-70.326 70.973-97.309 13.624-27.084 38.761-114.5 44.661-149.77s2.551-41.3-4.617-49.055c2.64-27.84-1.5-54.935 13.11-87.186-30.249 11.826-37.382 40.161-48.319 65.505-8-50.933 0.21-71.273 3.319-101.22-29.065 14.778-42.862 47.114-45 92.857-10.924-1.304-21.391-4.434-33.571-0.714-0.264-46.023-1.464-76.889 8.91-114.21-53.254 21.027-62.946 106.59-56.053 112.78-10.883 0.535-21.371-1.297-32.857 2.857 0.638-42.57-0.26-84.909-30-122.86 0 0-30.958 80.922-31.43 103.57-0.47 22.65 9.452 40.166 9.452 40.166s-8.568 36.741-6.298 58.232c2.295 21.741 20.443 59.676 27.266 78.658z" enable-background="new" fill="#ada469"/>
888 y="-0.053035267" 888 <path transform="translate(324.57 331.53)" d="M719.5 738.7l18.312 15.432 44.411-15.388L805.5 713.2l11.464 19.221 30.672 12.784 25.097 5.728L892 723.2l16.023 23.826L947 752.2l10.245-6.198L964 754.7l25.5 11 2-40.5-35.551-14.538-32.493-21.527-40.452-11.466-21.307-15.533L840 685.2l-84.971-46.583-33.03 38.083-2.5 62z" clip-path="url(#e)" enable-background="accumulate" fill="#fff" filter="url(#o)"/>
889 height="1.1060705"> 889 <path transform="translate(498.6 269.37)" d="M584 696.5l-6.563 17.156s-7.811 20.365-15.688 43.656c-3.938 11.646-7.883 24.041-10.938 35.125s-5.335 20.38-5.5 28.281c-.398 19.162 5.747 34.888 8.938 41.75-.772 3.555-1.991 9.454-3.344 18.094-1.92 12.268-3.718 27.154-2.375 39.875 1.382 13.088 6.812 28.188 12.594 43.031s12.054 29.227 15.22 38.031c6.631 18.452 9.992 31.576 11.311 48.5.582 7.456-.242 20.336-1.25 33.375s-2.186 26.301-1.687 36.969c.989 21.14 9.328 46.835 33.375 57.937 22.775 10.515 55.327 11.702 83.438-3.437 16.16-8.704 30.076-27.098 43.375-46.906s24.969-41.053 31.938-54.906c15.353-30.521 39.394-115.46 45.625-152.72 3.018-18.047 3.921-29.066 2.625-38.031-.979-6.766-3.828-12.147-6.875-16.22 2.042-27.507-.732-51.368 11.969-79.405l10.562-23.281-23.812 9.312c-17.49 6.838-28.902 19.045-36.594 32.062-.323.546-.563 1.108-.875 1.656.222-22.515 4.408-37.638 6.594-58.688l1.968-19-17.03
890 <feGaussianBlur 8908.656c-30.595 15.556-45.696 48.193-49.72 90.22-4.245-.626-8.831-1.02-13.812-.844-.291-39.18-.396-67.037 8.594-99.375l5.594-20.125-19.438 7.656c-30.91 12.204-47.86 41.931-56.625 68.375-4.383 13.222-6.746 25.801-7.594 35.938a92.19 92.19 0 0 0-.312 7.719c-3.242-.037-6.42.136-10.062.5.041-39.005-3.485-79.754-32.281-116.5L584 696.498zm5.813 43.812c16.807 30.644 17.475 63.967 16.938 99.75l-.22 15.062 12.036-6.54c8.662-3.132 19.56-.227 31.934-.835l14.675 9.357-6.331-25.794c-.09-.23-.22-.417-.25-.72-.2-2.039-.222-5.472.125-9.624.694-8.304 2.79-19.585 6.625-31.156 5.155-15.553 13.488-31.192 25.125-42.531-4.684 28.638-3.216 60.259-3.012 95.805l-2.766 13.262 15.496-7.598c9.03-2.758 17.19-.35 29.281 1.094l13.246 9.444L741.094 840c1.448-30.972 8.222-53.678 20.719-68.875-2.987 19.779-5.43 41.785.313 78.344l1.065 6.373-2.938 11.517 10.617-8.168 9.19 10.222-1.549-10.464 3.427-6.95c5.7-13.21
891 inkscape:collect="always" 89110.173-26.212 16.344-36.655.96-1.624 2.031-3.065 3.062-4.563-3.68 21.155-2.427 40.208-4.093 57.781l-4.68 7.807 7.398.225c3.22 3.483 3.868 3.85 4.563 8.656s.318 14.4-2.563 31.625c-5.568 33.288-31.793 123.17-43.688 146.81-6.605 13.13-18.03 33.896-30.625 52.656s-27.359 35.534-36 40.187c-21.49 11.574-48.78 10.26-64.844 2.844-14.375-6.637-20.538-23.45-21.312-40-.383-8.188.613-21.31 1.625-34.406 1.013-13.097 11.29-22.571 15.423-36.563 5.373-18.181-1.447-36.594-12.5-53.937-6.486-10.178-23.977-24.258-29.548-38.562s-10.368-29.003-11.28-37.656c-.927-8.771.422-23.025 2.218-34.5 1.796-11.475 3.844-20.281 3.844-20.281l9.423-3.616-10.485-3.884s-8.5-15.31-8.094-34.812c.071-3.424 1.836-12.728 4.719-23.188s6.764-22.553 10.625-33.97c3.044-9.002 5.78-16.602 8.344-23.687z" clip-path="url(#am)" enable-background="new" filter="url(#ds)" opacity=".588"/>
892 stdDeviation="13.024603" 892 <g transform="translate(324.57 331.53)" clip-path="url(#im)" fill="#fff">
893 id="feGaussianBlur8942" /> 893 <path d="m824.49 818.48l-49.497-15.556-26.87 52.326 41.012 45.255 49.497-38.184z" enable-background="accumulate" filter="url(#dr)"/>
894 </filter> 894 <path d="m964.49 855.25l-55.154-46.669-43.841 36.77 33.941 53.74 7.071 66.468-50.912 35.355-41.012 11.314-2.828 46.669 56.569 25.456 63.64-76.368 24.042-94.752 8.485-57.983z" enable-background="accumulate" filter="url(#dq)"/>
895 <linearGradient 895 </g>
896 inkscape:collect="always" 896 <path transform="translate(48.571 195.53)" d="m1045.3 1043.6l60.811-26.87 100.41 31.113-63.64 31.113-82.024-16.971-15.556-18.385z" enable-background="accumulate" filter="url(#cy)" opacity=".25"/>
897 xlink:href="#linearGradient8952" 897 <path transform="translate(498.6 269.37)" d="M583.06 715.75c-12.106 34.45-26.714 68.533-31.75 104.84-.832 14.929 4.59 29.159 8.844 43.062-5.916 27.201-10.137 56.9 1.156 83.125 13.517 38.161 35.001 75.682 32.423 117.47-.948 29.294-9.014 60.994 5.39 88.282 10.199 19.335 33.14 27.312 53.968 27.668 27.862 1.174 56.463-11.622 72-35.261 22.596-29.372 41.802-61.497 55.24-96.06 16.89-45.506 29.672-92.561 37.934-140.4 1.824-12.941 3.1-27.47-4.58-38.823-3.43-7.336.043-15.56-.684-23.31.674-24.995 4.013-50.664 16.653-72.596-17.733 6.445-35.073 16.56-44.003 33.864-3.935 6.71-7.605 13.574-11.372 20.386-3.55-30.014 3.72-59.648 6.781-89.281-20.166 9.055-36.877 25.655-44.175 46.682-6.304 15.58-8.802 32.317-10.263 49.037-8.253-1.52-16.684-2.102-25.062-1.5-.963-38.698-.467-79.407 10.97-115.91-18.682 6.218-35.167 18.736-45.629 35.387-13.853 20.88-21.26 45.754-23.059 70.613.586 4.325-.06 11.84-6.343
898 id="linearGradient8958" 8989.875-5.332.018-10.63.679-15.938 1.094 1.147-39.381-3.342-81.628-27.062-114.22-3.061-3.637-5.637-7.685-8.625-11.344l-2.813 7.312zm7.75 13.844c18.565 29.296 22.482 64.82 22.125 98.875.204 5.175-.517 11.829.125 16.062 12.319-6.103 26.739-2.44 39.781-2.187 2.317 1.223 3.192 1.652 1.906-1.407-4.164-13.953-1.848-28.613 1.805-42.408 6.367-26.29 20.628-51.088 42.82-67.03-8.617 37.237-5.716 76.562-6.094 113.97 12.253-6.91 27.28-3.446 40.031-.25 3.393 3.535 2.29-.73 2.188-3.812-.483-21.371 4.131-43.07 13.688-62.156 5.963-10.687 14.243-19.804 22.438-28.875-7.872 33.838-9.203 69.336-2.719 103.5 1.725-1.411 4.607-.454 5.656-.375 9.684-21.237 16.351-45.381 34.89-60.742 1.874-.371-1.448 8.525-1.484 11.898-3.535 21.846-3.297 44.173-4.906 66.25-1.312 1.377 2.849 2.323 3.469 4.062 7.923 10.566 3.123 24.831 2.092 36.78-7.064 45.034-21.766 88.38-35.577 131.7-12.075 32.95-30.72 63.08-51.234 91.43-10.953
899 x1="609.31244" 89913.55-23.245 27.85-40.844 32.5-20.156 6.24-43.576 5.174-61.97-5.657-17.29-12.34-21.023-35.709-19.261-55.686.048-15.826 2.372-27.8 7.917-42.805s2.471-31.332-1.78-47.633-12.18-26.26-21.822-42.204-17.637-36.037-20.772-55.577c-1.75-18.627 2.892-37.123 5.781-55.25 3.296-2.837-1.598-5.196-2.312-8.187-7.602-17.015-8.408-36.775-2.743-54.56 7.13-25.072 15.761-49.632 24.68-74.128l2.125 3.906z" clip-path="url(#cj)" enable-background="new" filter="url(#il)" opacity=".588"/>
900 y1="239.46866" 900 <path transform="translate(324.57 331.53)" d="m735.06 733.04l2.755 21.089 44.411-15.388 4.851-22.39-3.936-22.052-22.452-36.593-8.28 30.305-17.35 45.029z" clip-path="url(#e)" enable-background="accumulate" fill="#fff" filter="url(#bz)"/>
901 x2="560.83142" 901 <path transform="translate(324.57 331.53)" d="m831.81 730.29l15.822 14.905 20.855 2.9-1.59-39.926 8.325-30.508-7.165-6.341-21.697 20.942-14.55 38.028z" clip-path="url(#e)" enable-background="accumulate" fill="#fff" filter="url(#by)"/>
902 y2="262.86206" 902 </g>
903 gradientUnits="userSpaceOnUse" 903 <g transform="translate(324.57 331.53)" clip-path="url(#ik)" filter="url(#ij)">
904 gradientTransform="translate(450.03125,73.843964)" /> 904 <path d="M910.14 746.31l32.613 5.174-.361-23.876 7.188-29.682-8.45-5.264-21.823 26.511-9.167 27.137z" enable-background="accumulate" fill="#fff" fill-rule="evenodd"/>
905 <linearGradient 905 <path d="M877.52 650.19h123.04v172.53H877.52z" enable-background="accumulate" fill="none"/>
906 inkscape:collect="always" 906 </g>
907 xlink:href="#linearGradient8964" 907 <g transform="translate(324.57 331.53)" clip-path="url(#ii)" filter="url(#ih)">
908 id="linearGradient8970" 908 <path d="M964 754.69l18.429 7.465 9.071-36.964-14.87 4.839L964 754.69z" enable-background="accumulate" fill="#fff" fill-rule="evenodd"/>
909 x1="603.84064" 909 <path d="M924.9 677.06h142.13v125.16H924.9z" enable-background="accumulate" fill="none"/>
910 y1="627.85303" 910 </g>
911 x2="616.24396" 911 <g stroke-miterlimit="1">
912 y2="585.42664" 912 <path d="m596.57 400.85h440v376h-440z" fill="none" stroke="#f8d615" stroke-width="18"/>
913 gradientUnits="userSpaceOnUse" 913 <path d="m104.57 248.85h1684v1292h-1684z" fill="none" stroke="#f83615" stroke-width="18"/>
914 gradientTransform="translate(450.03125,73.843964)" /> 914 <path d="M3407.4 296.46h522.57v1182.5H3407.4z" fill="url(#ig)" stroke="#f815bb" stroke-width="13.347"/>
915 <filter 915 </g>
916 inkscape:collect="always" 916 <g transform="matrix(1.0057 0 0 2.3995 3452.3 -18.515)" clip-path="url(#if)" enable-background="new">
917 id="filter9020" 917 <g filter="url(#aq)">
918 x="-0.32861114" 918 <g transform="translate(-174.03 62.156)" filter="url(#g)">
919 width="1.6572223" 919 <path d="m1268.3 663.77s-0.296 26.161 4.643 37.857 20.038 26.487 28.572 31.429 18.929 8.571 18.929 8.571l117.86-115 17.857-75.714-96.43 38.571-91.428 74.286z" enable-background="new" fill="#fff" fill-rule="evenodd"/>
920 y="-0.182" 920 <path d="M1197.8 486.14h333.75v309.71H1197.8z" enable-background="accumulate" fill="none"/>
921 height="1.364"> 921 </g>
922 <feGaussianBlur 922 </g>
923 inkscape:collect="always" 923 <g transform="translate(-174.03 62.156)" enable-background="new" filter="url(#g)" opacity=".18">
924 stdDeviation="20.912684" 924 <path d="m1268.3 663.77s-0.296 26.161 4.643 37.857 20.038 26.487 28.572 31.429 18.929 8.571 18.929 8.571l117.86-115 17.857-75.714-96.43 38.571-91.428 74.286z" enable-background="new" fill="#fff" fill-rule="evenodd"/>
925 id="feGaussianBlur9022" /> 925 <path d="M1197.8 486.14h333.75v309.71H1197.8z" enable-background="accumulate" fill="none"/>
926 </filter> 926 </g>
927 <filter 927 </g>
928 inkscape:collect="always" 928 <path d="M3492.3 296.46H3930v902.66h-437.7z" fill="#fff" stroke="#f8d615" stroke-miterlimit="1" stroke-width="18"/>
929 id="filter9024" 929 <g transform="matrix(1.0057 0 0 2.3995 3249.4 125.01)" clip-path="url(#ie)" enable-background="new" filter="url(#id)">
930 x="-0.55453134" 930 <path d="M36.494 811.806l-14.799 11.372-17.47-31.162 14.663.65 17.606 19.14z" enable-background="accumulate" fill="#fff" fill-rule="evenodd"/>
931 width="2.1090627" 931 <path d="M-55 757.2h182v177H-55z" enable-background="accumulate" fill="none"/>
932 y="-0.51434779" 932 </g>
933 height="2.0286956"> 933 <g transform="matrix(1.0057 0 0 2.3995 3249.4 125.01)" clip-path="url(#ic)" enable-background="new" filter="url(#gd)">
934 <feGaussianBlur 934 <path d="m83.111 790.72l-28.201 12.855-5.658-21.687-13.943-25.046 6.325-6.88 26.384 18.51 15.094 22.249z" enable-background="accumulate" fill="#fff" fill-rule="evenodd"/>
935 inkscape:collect="always" 935 <path d="M-22 696.2h165v176H-22z" enable-background="accumulate" fill="none"/>
936 stdDeviation="20.912684" 936 </g>
937 id="feGaussianBlur9026" /> 937 <path transform="matrix(1.0057 0 0 2.3995 3249.4 125.01)" d="m332.34 898.39l-32.732-61.3-37.617 45.106c2.177 1.317 5.774-20.856 45.6-64.417l24.749 80.61z" clip-path="url(#gc)" enable-background="accumulate" fill="#fff" fill-rule="evenodd" filter="url(#gb)" opacity=".5"/>
938 </filter> 938 <g clip-path="url(#ga)">
939 <filter 939 <g fill-rule="evenodd">
940 inkscape:collect="always" 940 <g enable-background="new">
941 id="filter9044" 941 <path transform="matrix(.71488 -.46488 .26446 2.3151 3478.4 126.16)" d="m245.12 100.05s-47.128-31.647-67.215-35.801c-20.038-4.144-38.473-3.318-51.934 13.607s-12.077 61.265-13.536 86.97 2.55 70.177 17.605 88.666c15.055 18.488 45.886 13.585 49.927 21.414 2.213 4.287 65.152-174.86 65.152-174.86z" enable-background="accumulate" fill="url(#r)"/>
942 x="-0.32631579" 942 <path transform="matrix(.71488 -.46488 .26446 2.3151 3478.4 126.16)" d="M135.38 82.018s26.344 1.939 37.633 13.903c11.415 12.097 13.735 21.332 15.296 37.735 1.563 16.425-.85 28.418-7.814 36.037s-1.004 19.583-25.916 12.071-27.032-27.783-26.515-46.305c.517-18.529 7.316-53.441 7.316-53.441z" enable-background="accumulate" fill="url(#q)"/>
943 width="1.6526316" 943 <path transform="matrix(.71488 -.46488 .26446 2.3151 3478.4 126.16)" d="M135.65 81.927s-4.645 16.365.588 28.563c5.488 12.793 27.224 44.26 27.224 54.656l22.656-5c2.542-6.966 3.21-15.752 2.188-26.5-1.562-16.403-3.867-25.621-15.281-37.719-9.655-10.232-31.593-13.375-37.375-14z" enable-background="new" fill="url(#p)"/>
944 y="-0.84545463" 944 </g>
945 height="2.6909094"> 945 <g enable-background="new">
946 <feGaussianBlur 946 <path d="M4043.297 824.626l-.09-.006c-1.489 1.728-6.783 2.02-7.718 20.884-.878 17.694 13.035 44.859 15.06 47.837 1.636 2.403 3.427 4.343 5.205 5.58l1.41.916c1.894 1.031 3.7 1.38 5.163 1.19 3.177-.414 5.214-.812 7.238-1.183 2.025-.372 2.592-1.8 3.707-2.078 1.156-.288 2.255.9 6.345-.372 4.09-1.271 5.587-1.894 6.324-2.566.765-.698 1.86-1.592 2.549-2.999 1.962.51 3.823.346 5.31-.58 3.08-1.92 5.084-3.12 6.998-4.722 1.536-1.285 2.513-3.421 2.759-4.073.246-.653.183-1.71.211-1.754.047-.072.351-.13.55-.906 1.07-4.167 2.968-12.778
947 inkscape:collect="always" 9473.16-14.38.193-1.594.324-3.178.42-4.11.056-.54-.046-2.136-.017-2.27.04-.187.317-.518.401-1.098.404-2.783.343-5.237.292-8.675-.05-3.438-.44-11.267-.995-13.482-.356-1.423-.708-2.109-1.051-2.478-.065-.06-.119-.145-.18-.2-.02-.015-.043-.004-.062-.017-.303-.265-.59-.545-1.13-.839-.972-.527-2.393-1.283-3.937-1.684-.514-.134-1.041-.17-1.572-.205-3.591-.231-9.115-.108-10.396 1.072-1.593-1.244-3.874-2.542-5.879-2.746-3.086-.313-5.002-.546-6.953-.776-1.952-.23-1.73.464-2.958.32-1.328-.155-1.76-1.022-5.568-1.302-3.577-.262-9.087-.095-10.397 1.072-1.593-1.245-3.872-2.542-5.878-2.746-3.087-.313-5.006-.472-6.958-.702-.663-.078-1.055.01-1.364.079z" enable-background="new" fill="#bcb786"/>
948 stdDeviation="21.92031" 948 <g transform="matrix(1.0047 .1075 -.04506 2.3971 3818.4 1782.9)" clip-path="url(#fz)" enable-background="new" filter="url(#fy)">
949 id="feGaussianBlur9046" /> 949 <path d="M229.94-409.12c-3.558.05-9.024.36-10.303.904-1.606-.447-3.903-.881-5.9-.877a979.03 979.03 0 0 1-6.907 0c-.66-.003-1.048.068-1.353.11v1.096c.12-.18.393-.69.95-.767.747-.103 5.17-.151 7.31-.11 1.775.035 4.455.274 6.39.96.32.113.618.273.891.41 1.964.987 7.944 4.302 7.944 4.302s-6.633-3.948-7.483-4.439c-.203-.117-.575-.258-1.036-.41 1.22-.449 5.076-.62 7.828-.713 3.024-.102 3.348-.09 5.41.192 2.13.29 3.34.602 3.34.602s-.08-.64 1.035-.794c.748-.103 5.17-.152 7.31-.11 2.07.04 5.366.407 7.282 1.37 1.003.504 3.035 1.569 4.795 2.536l.096-.02s-3.58-2.162-4.43-2.653c-.204-.117-.575-.258-1.037-.411 1.22-.448 5.047-.62 7.8-.712 3.024-.102 3.347-.09 5.41.191 1.954.267 3.013.53 3.195.576l-.027-.312a8.503 8.503 0 0 0-1.4-.357c-1.301-.235-3.4-.602-5.51-.564-3.571.064-9.052.356-10.302.904-1.606-.447-3.877-.881-5.871-.877-3.072.007-4.994.01-6.936
950 </filter> 9500-1.943-.009-1.713.28-2.936.274-1.322-.005-1.766-.354-5.555-.301M206.2-407.48c1.92.817 4.577 2.193 6.159 3.397s2.908 1.774 5.555 3.918c.885.718 1.748 1.35 2.591 1.922l.541-.19a57.511 57.511 0 0 1-2.269-1.622c-2.822-2.12-3.627-2.81-6.015-4.274s-4.1-2.366-6.562-3.15" enable-background="new"/>
951 <filter 951 <path d="M237.8-407.48c1.92.817 4.606 2.193 6.188 3.397.813.62 1.558 1.07 2.45 1.654l.65-.116a40.414 40.414 0 0 0-2.697-1.784c-2.389-1.465-4.128-2.366-6.59-3.151" enable-background="new"/>
952 inkscape:collect="always"
953 id="filter9048"
954 x="-0.40879121"
955 width="1.8175824"
956 y="-0.71538466"
957 height="2.4307692">
958 <feGaussianBlur
959 inkscape:collect="always"
960 stdDeviation="21.92031"
961 id="feGaussianBlur9050" />
962 </filter>
963 <filter
964 inkscape:collect="always"
965 id="filter3587"
966 x="-0.1">
967 <feGaussianBlur
968 inkscape:collect="always"
969 stdDeviation="8.881432"
970 id="feGaussianBlur3589" />
971 </filter>
972 <clipPath
973 clipPathUnits="userSpaceOnUse"
974 id="clipPath3602">
975 <path
976 sodipodi:nodetypes="czzzzzzczczczczzzc"
977 id="path3604"
978 d="m 647.61204,540.04601 c 0,0 22.61947,-6.50681 35.74275,-5.87273 13.12328,0.63409 30.64158,1.93862 43.70885,12.18619 13.06727,10.24756 25.06774,27.14007 34.11239,58.36965 9.04465,31.22958 1.69832,99.25201 -6.17603,143.34735 -7.87435,44.09534 -28.2651,106.11298 -45,140 -16.7349,33.88702 -49.79771,77.4952 -60.56943,89.87616 -11.36422,13.06197 -56.20589,36.42617 -79.43057,42.26667 5.3033,-10.6066 48.89976,-50.58884 35,-60.71426 -14.01897,-10.21226 -45.76009,45.98236 -84.29315,29.03317 21.38231,-13.13212 41.7794,-51.18606 34.04061,-66.59445 -7.84025,-15.61039 -30.70493,48.75757 -93.53554,37.01288 30.05204,-27.52666 55.40706,-70.90401 41.2627,-82.9797 -14.41516,-12.30687 -60.46175,54.29315 -60.46175,54.29315 0,0 -2.8219,-41.70118 13.7732,-68.60732 16.63935,-26.97787 79.65297,-81.61527 99.55313,-111.70342 19.90015,-30.08814 33.61256,-66.00902 42.13542,-92.51794 8.52286,-26.50892 15.80094,-77.09954 15.80094,-77.09954"
979 style="display:inline;opacity:1;fill:#202020;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
980 inkscape:connector-curvature="0" />
981 </clipPath>
982 <filter
983 inkscape:collect="always"
984 id="filter4120"
985 x="-0.2770822"
986 width="1.5541644"
987 y="-0.32482043"
988 height="1.6496409">
989 <feGaussianBlur
990 inkscape:collect="always"
991 stdDeviation="19.956289"
992 id="feGaussianBlur4122" />
993 </filter>
994 <clipPath
995 clipPathUnits="userSpaceOnUse"
996 id="clipPath3631">
997 <path
998 style="display:inline;opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
999 d="m 760.16396,935.83377 c 6.7941,18.90279 10.49369,33.29969 11.8903,51.21189 1.39662,17.91234 -3.78268,51.80084 -2.90046,70.65614 0.88175,18.8452 8.13369,40.099 27.34463,48.9689 19.41887,8.9658 49.31924,10.2113 74.11984,-3.1456 24.8006,-13.357 57.40102,-70.3255 70.97426,-97.3087 13.62385,-27.08394 38.76107,-114.49737 44.6608,-149.76859 5.89973,-35.27121 2.55054,-41.30077 -4.61748,-49.05549 2.6403,-27.84015 -1.49972,-54.93543 13.10969,-87.18618 -30.24901,11.8257 -37.38229,40.1607 -48.31889,65.50508 -8.00091,-50.93293 0.20916,-71.27319 3.31889,-101.21936 -29.06476,14.77791 -42.86151,47.11402 -45,92.85714 -10.92395,-1.3042 -21.39144,-4.43423 -33.57143,-0.71429 -0.26404,-46.02334 -1.46356,-76.88941 8.91063,-114.20649 -53.25547,21.02686 -62.94728,106.5941 -56.05349,112.77792 -10.88282,0.535 -21.37108,-1.2973 -32.85714,2.85715 0.63892,-42.57135 -0.26046,-84.90861 -30,-122.85715 0,0 -30.95806,80.92234 -31.42857,103.57143 -0.47051,22.64909 9.45159,40.16588 9.45159,40.16588 0,0 -8.56807,36.74051 -6.29859,58.23223 2.29585,21.74146 20.4429,59.67617 27.26542,78.65809 z"
1000 id="path3633"
1001 sodipodi:nodetypes="czzzzzzcccccccccczczz"
1002 inkscape:connector-curvature="0" />
1003 </clipPath>
1004 <clipPath
1005 clipPathUnits="userSpaceOnUse"
1006 id="clipPath3665">
1007 <path
1008 sodipodi:nodetypes="czzcczcc"
1009 id="path3667"
1010 d="m 366.88839,504.13471 c 0,0 -29.55406,40.57305 -47.85714,74.28571 -18.30309,33.71267 -58.62109,126.35694 -70.35714,171.07143 -11.7594,44.80344 -62.5,123.57144 -62.5,123.57144 l 76.07143,18.21428 c 0,0 11.80712,-12.82335 31.07142,-46.07143 19.2643,-33.24808 60.35715,-138.57143 60.35715,-138.57143 l 13.21428,-202.5 z"
1011 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#0f0f0f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
1012 inkscape:connector-curvature="0" />
1013 </clipPath>
1014 <clipPath
1015 clipPathUnits="userSpaceOnUse"
1016 id="clipPath3677">
1017 <path
1018 style="display:inline;opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
1019 d="m 586.13271,997.98981 c 6.7941,18.90279 10.49369,33.29969 11.8903,51.21189 1.39662,17.9123 -3.78268,51.8008 -2.90046,70.6561 0.88175,18.8452 8.13369,40.099 27.34463,48.9689 19.41887,8.9658 49.31924,10.2113 74.11984,-3.1456 24.8006,-13.357 57.40102,-70.3255 70.97426,-97.3087 13.62385,-27.0839 38.76107,-114.49733 44.6608,-149.76855 5.89973,-35.27121 2.55054,-41.30077 -4.61748,-49.05549 2.6403,-27.84015 -1.49972,-54.93543 13.10969,-87.18618 -30.24901,11.8257 -37.38229,40.1607 -48.31889,65.50508 -8.00091,-50.93293 0.20916,-71.27319 3.31889,-101.21936 -29.06476,14.77791 -42.86151,47.11402 -45,92.85714 -10.92395,-1.3042 -21.39144,-4.43423 -33.57143,-0.71429 -0.26404,-46.02334 -1.46356,-76.88941 8.91063,-114.20649 -53.25547,21.02686 -62.94728,106.5941 -56.05349,112.77792 -10.88282,0.535 -21.37108,-1.2973 -32.85714,2.85715 0.63892,-42.57135 -0.26046,-84.90861 -30,-122.85715 0,0 -30.95806,80.92234 -31.42857,103.57143 -0.47051,22.64909 9.45159,40.16588 9.45159,40.16588 0,0 -8.56807,36.74051 -6.29859,58.23223 2.29585,21.74146 20.4429,59.67617 27.26542,78.65809 z"
1020 id="path3679"
1021 sodipodi:nodetypes="czzzzzzcccccccccczczz"
1022 inkscape:connector-curvature="0" />
1023 </clipPath>
1024 <filter
1025 inkscape:collect="always"
1026 id="filter3898">
1027 <feGaussianBlur
1028 inkscape:collect="always"
1029 stdDeviation="10.892985"
1030 id="feGaussianBlur3900" />
1031 </filter>
1032 <filter
1033 inkscape:collect="always"
1034 id="filter4130"
1035 x="-0.49509686"
1036 width="1.9901937"
1037 y="-0.26708817"
1038 height="1.5341763">
1039 <feGaussianBlur
1040 inkscape:collect="always"
1041 stdDeviation="10.730622"
1042 id="feGaussianBlur4132" />
1043 </filter>
1044 <filter
1045 inkscape:collect="always"
1046 id="filter4141"
1047 x="-0.40611032"
1048 width="1.8122206"
1049 y="-0.30260596"
1050 height="1.6052119">
1051 <feGaussianBlur
1052 inkscape:collect="always"
1053 stdDeviation="9.8586086"
1054 id="feGaussianBlur4143" />
1055 </filter>
1056 <clipPath
1057 clipPathUnits="userSpaceOnUse"
1058 id="clipPath4177">
1059 <path
1060 sodipodi:nodetypes="czzzzzzcccccccccczczz"
1061 id="path4179"
1062 d="m 586.13271,997.98981 c 6.7941,18.90279 10.49369,33.29969 11.8903,51.21189 1.39662,17.9123 -3.78268,51.8008 -2.90046,70.6561 0.88175,18.8452 8.13369,40.099 27.34463,48.9689 19.41887,8.9658 49.31924,10.2113 74.11984,-3.1456 24.8006,-13.357 57.40102,-70.3255 70.97426,-97.3087 13.62385,-27.0839 38.76107,-114.49733 44.6608,-149.76855 5.89973,-35.27121 2.55054,-41.30077 -4.61748,-49.05549 2.6403,-27.84015 -1.49972,-54.93543 13.10969,-87.18618 -30.24901,11.8257 -37.38229,40.1607 -48.31889,65.50508 -8.00091,-50.93293 0.20916,-71.27319 3.31889,-101.21936 -29.06476,14.77791 -42.86151,47.11402 -45,92.85714 -10.92395,-1.3042 -21.39144,-4.43423 -33.57143,-0.71429 -0.26404,-46.02334 -1.46356,-76.88941 8.91063,-114.20649 -53.25547,21.02686 -62.94728,106.5941 -56.05349,112.77792 -10.88282,0.535 -21.37108,-1.2973 -32.85714,2.85715 0.63892,-42.57135 -0.26046,-84.90861 -30,-122.85715 0,0 -30.95806,80.92234 -31.42857,103.57143 -0.47051,22.64909 9.45159,40.16588 9.45159,40.16588 0,0 -8.56807,36.74051 -6.29859,58.23223 2.29585,21.74146 20.4429,59.67617 27.26542,78.65809 z"
1063 style="display:inline;opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
1064 inkscape:connector-curvature="0" />
1065 </clipPath>
1066 <filter
1067 inkscape:collect="always"
1068 id="filter4185">
1069 <feGaussianBlur
1070 inkscape:collect="always"
1071 stdDeviation="3.6164709"
1072 id="feGaussianBlur4187" />
1073 </filter>
1074 <filter
1075 inkscape:collect="always"
1076 id="filter4105">
1077 <feGaussianBlur
1078 inkscape:collect="always"
1079 stdDeviation="3.8640966"
1080 id="feGaussianBlur4107" />
1081 </filter>
1082 <clipPath
1083 clipPathUnits="userSpaceOnUse"
1084 id="clipPath2833">
1085 <path
1086 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#292929;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
1087 d="m 569.03125,1018.7776 c -4.28571,0.7143 -27.62815,3.6181 -57.85714,10 -30.22899,6.3819 -57.31395,4.9661 -135.78608,17.3296 -79.85178,12.5808 -94.06436,42.5423 -108.12225,47.0643 -14.70014,4.7286 -145.37739,-65.8225 -145.37739,-65.8225 l 4.28572,-94.28571 c 0,0 85.88551,-16.20094 112.14285,-33.57143 26.25735,-17.37049 45.58238,-49.66598 59.28572,-71.42857 13.70334,-21.76259 32.85714,-71.42858 32.85714,-71.42858 l 238.57143,262.14289 z"
1088 id="path2835"
1089 sodipodi:nodetypes="czzzcczzcc"
1090 inkscape:connector-curvature="0" />
1091 </clipPath>
1092 <linearGradient
1093 inkscape:collect="always"
1094 xlink:href="#linearGradient2843"
1095 id="linearGradient2841"
1096 gradientUnits="userSpaceOnUse"
1097 x1="347.89655"
1098 y1="1070.2124"
1099 x2="275.58191"
1100 y2="867.97992" />
1101 <linearGradient
1102 inkscape:collect="always"
1103 xlink:href="#linearGradient3627"
1104 id="linearGradient3688"
1105 gradientUnits="userSpaceOnUse"
1106 x1="699.32867"
1107 y1="269.76755"
1108 x2="698.97504"
1109 y2="346.1351" />
1110 <mask
1111 maskUnits="userSpaceOnUse"
1112 id="mask3684">
1113 <ellipse
1114 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#linearGradient3688);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.43724918px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
1115 id="path3686"
1116 transform="translate(-174.03125,62.156036)"
1117 cx="579.474"
1118 cy="260.57516"
1119 rx="192.6866"
1120 ry="164.04877" />
1121 </mask>
1122 <clipPath
1123 clipPathUnits="userSpaceOnUse"
1124 id="clipPath3622">
1125 <path
1126 style="display:inline;opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
1127 d="m 266.27183,924.57186 c -1.40727,18.80121 -1.1449,32.75103 2.08174,49.30328 3.22665,16.55234 16.40608,45.90736 20.3344,63.18376 3.92622,17.2671 2.69413,38.3096 -12.45944,51.1482 -15.31761,12.9774 -42.05127,21.5989 -67.8323,15.7338 -25.78106,-5.8653 -69.54907,-49.2234 -88.59019,-70.2283 C 100.6939,1012.6293 56.045183,939.86194 41.867508,909.43681 27.689836,879.01169 29.207903,872.71824 33.747793,863.90708 24.381071,839.38658 21.334081,813.84027 0.03533552,788.33044 30.360815,791.44488 43.915625,815.28677 60.161025,835.47019 54.631129,787.39416 42.10631,771.05369 31.787073,744.74589 c 29.994295,6.08166 50.57936,31.8724 63.979783,72.7125 9.554154,-3.91791 18.237764,-9.37294 30.187414,-9.0612 -11.2975,-41.6958 -17.94946,-69.91584 -36.687255,-101.06994 53.441965,5.67033 83.657025,80.63932 78.971425,87.9608 9.97797,-2.24399 19.00565,-6.53038 30.43653,-5.65167 -11.24896,-38.34702 -21.04781,-76.8679 -3.65971,-118.64818 0,0 48.28678,65.43687 54.38966,85.80577 6.10287,20.36891 1.51881,38.70052 1.51881,38.70052 0,0 16.95957,31.08529 20.29392,51.09413 3.3731,20.24135 -3.53269,59.10332 -4.94582,77.98324 z"
1128 id="path3624"
1129 sodipodi:nodetypes="czzzzzzcccccccccczczz"
1130 inkscape:connector-curvature="0" />
1131 </clipPath>
1132 <clipPath
1133 clipPathUnits="userSpaceOnUse"
1134 id="clipPath3636">
1135 <path
1136 style="display:inline;opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
1137 d="m 760.16396,935.83377 c 6.7941,18.90279 10.49369,33.29969 11.8903,51.21189 1.39662,17.91234 -3.78268,51.80084 -2.90046,70.65614 0.88175,18.8452 8.13369,40.099 27.34463,48.9689 19.41887,8.9658 49.31924,10.2113 74.11984,-3.1456 24.8006,-13.357 57.40102,-70.3255 70.97426,-97.3087 13.62385,-27.08394 38.76107,-114.49737 44.6608,-149.76859 5.89973,-35.27121 2.55054,-41.30077 -4.61748,-49.05549 2.6403,-27.84015 -1.49972,-54.93543 13.10969,-87.18618 -30.24901,11.8257 -37.38229,40.1607 -48.31889,65.50508 -8.00091,-50.93293 0.20916,-71.27319 3.31889,-101.21936 -29.06476,14.77791 -42.86151,47.11402 -45,92.85714 -10.92395,-1.3042 -21.39144,-4.43423 -33.57143,-0.71429 -0.26404,-46.02334 -1.46356,-76.88941 8.91063,-114.20649 -53.25547,21.02686 -62.94728,106.5941 -56.05349,112.77792 -10.88282,0.535 -21.37108,-1.2973 -32.85714,2.85715 0.63892,-42.57135 -0.26046,-84.90861 -30,-122.85715 0,0 -30.95806,80.92234 -31.42857,103.57143 -0.47051,22.64909 9.45159,40.16588 9.45159,40.16588 0,0 -8.56807,36.74051 -6.29859,58.23223 2.29585,21.74146 20.4429,59.67617 27.26542,78.65809 z"
1138 id="path3638"
1139 sodipodi:nodetypes="czzzzzzcccccccccczczz"
1140 inkscape:connector-curvature="0" />
1141 </clipPath>
1142 <linearGradient
1143 inkscape:collect="always"
1144 xlink:href="#linearGradient3660"
1145 id="linearGradient3666"
1146 x1="1255.7386"
1147 y1="667.09216"
1148 x2="893.69995"
1149 y2="858.01099"
1150 gradientUnits="userSpaceOnUse" />
1151 <filter
1152 inkscape:collect="always"
1153 id="filter3779"
1154 x="-0.087980822"
1155 width="1.1759616"
1156 y="-0.17728332"
1157 height="1.3545666">
1158 <feGaussianBlur
1159 inkscape:collect="always"
1160 stdDeviation="16.340344"
1161 id="feGaussianBlur3781" />
1162 </filter>
1163 <filter
1164 id="filter3785"
1165 inkscape:label="White Fur">
1166 <feTurbulence
1167 id="feTurbulence3787"
1168 type="fractalNoise"
1169 baseFrequency="0.24044943820224721"
1170 numOctaves="10"
1171 seed="655"
1172 result="result0" />
1173 <feDisplacementMap
1174 id="feDisplacementMap3789"
1175 in="SourceGraphic"
1176 in2="result0"
1177 scale="62"
1178 xChannelSelector="B"
1179 yChannelSelector="G" />
1180 </filter>
1181 <filter
1182 inkscape:collect="always"
1183 id="filter3677">
1184 <feGaussianBlur
1185 inkscape:collect="always"
1186 stdDeviation="2.0397518"
1187 id="feGaussianBlur3679" />
1188 </filter>
1189 <clipPath
1190 clipPathUnits="userSpaceOnUse"
1191 id="clipPath3722">
1192 <path
1193 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#121212;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
1194 d="m 709.28572,844.50504 c 54.28571,-1.42857 126.035,-15.05199 170,-26.78572 44.05271,-11.75714 125.88628,-36.34724 175.35708,-57.85714 49.3393,-21.45272 113.6037,-59.2816 154.2858,-92.14285 40.5081,-32.72069 52.3899,-55.81981 60.7143,-33.57143 8.3691,22.36779 -16.407,56.32562 -37.8572,81.07143 -21.6041,24.9234 -52.7313,52.70533 -98.9286,89.28571 C 1086.6598,841.08542 976.77458,906.08967 920,933.07647 c -57.06606,27.12536 -128.20334,58.23842 -172.14286,72.50003 -43.93952,14.2616 -131.42857,31.0714 -131.42857,31.0714 l 92.85715,-192.14286 z"
1195 id="path3724"
1196 sodipodi:nodetypes="czzzzzzzzcc"
1197 inkscape:connector-curvature="0" />
1198 </clipPath>
1199 <clipPath
1200 clipPathUnits="userSpaceOnUse"
1201 id="clipPath3986">
1202 <path
1203 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#121212;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
1204 d="m 709.28572,844.50504 c 54.28571,-1.42857 126.035,-15.05199 170,-26.78572 44.05271,-11.75714 125.88628,-36.34724 175.35708,-57.85714 49.3393,-21.45272 113.6037,-59.2816 154.2858,-92.14285 40.5081,-32.72069 52.3899,-55.81981 60.7143,-33.57143 8.3691,22.36779 -16.407,56.32562 -37.8572,81.07143 -21.6041,24.9234 -52.7313,52.70533 -98.9286,89.28571 C 1086.6598,841.08542 976.77458,906.08967 920,933.07647 c -57.06606,27.12536 -128.20334,58.23842 -172.14286,72.50003 -43.93952,14.2616 -131.42857,31.0714 -131.42857,31.0714 l 92.85715,-192.14286 z"
1205 id="path3988"
1206 sodipodi:nodetypes="czzzzzzzzcc"
1207 inkscape:connector-curvature="0" />
1208 </clipPath>
1209 <clipPath
1210 clipPathUnits="userSpaceOnUse"
1211 id="clipPath3992">
1212 <path
1213 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#121212;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
1214 d="m 709.28572,844.50504 c 54.28571,-1.42857 126.035,-15.05199 170,-26.78572 44.05271,-11.75714 125.88628,-36.34724 175.35708,-57.85714 49.3393,-21.45272 113.6037,-59.2816 154.2858,-92.14285 40.5081,-32.72069 52.3899,-55.81981 60.7143,-33.57143 8.3691,22.36779 -16.407,56.32562 -37.8572,81.07143 -21.6041,24.9234 -52.7313,52.70533 -98.9286,89.28571 C 1086.6598,841.08542 976.77458,906.08967 920,933.07647 c -57.06606,27.12536 -128.20334,58.23842 -172.14286,72.50003 -43.93952,14.2616 -131.42857,31.0714 -131.42857,31.0714 l 92.85715,-192.14286 z"
1215 id="path3994"
1216 sodipodi:nodetypes="czzzzzzzzcc"
1217 inkscape:connector-curvature="0" />
1218 </clipPath>
1219 <clipPath
1220 clipPathUnits="userSpaceOnUse"
1221 id="clipPath3998">
1222 <path
1223 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#262f2f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
1224 d="m 178.21428,274.14789 c -3.80443,-25.26423 -16.80972,-50.63802 -17.1568,-75.52523 -0.18626,-13.35552 3.27285,-26.57091 13.75553,-39.55405 36.34702,-65.295835 116.94091,-84.694685 185.93466,-91.465427 86.92239,-11.016801 184.91267,17.940072 233.37134,95.401287 54.12402,75.7333 56.67476,172.53912 80.61204,259.52795 29.43779,127.1276 54.77914,256.21414 60.39224,386.85035 -3.06348,78.18185 -8.42634,165.18415 -60.50321,228.13413 -48.02654,50.3574 -122.78647,50.053 -187.06988,59.0023 -90.55539,4.655 -184.35153,-16.1458 -261.7839,-64.1982 -64.77564,-37.94001 -95.73019,-113.47863 -97.2794,-186.01958 -8.38917,-79.87516 26.39152,-153.80851 51.6204,-227.15961 7.47061,-82.76107 9.41286,-166.24775 9.65334,-249.38484 -0.83682,-32.19544 -7.08953,-63.81733 -11.54636,-95.60908 z"
1225 id="path4000"
1226 sodipodi:nodetypes="cscccccccccccc"
1227 inkscape:connector-curvature="0" />
1228 </clipPath>
1229 <filter
1230 inkscape:collect="always"
1231 id="filter4002"
1232 x="-0.24334238"
1233 width="1.4866848"
1234 y="-0.39104807"
1235 height="1.7820961">
1236 <feGaussianBlur
1237 inkscape:collect="always"
1238 stdDeviation="14.589518"
1239 id="feGaussianBlur4004" />
1240 </filter>
1241 <filter
1242 inkscape:collect="always"
1243 id="filter4010"
1244 x="-0.14577261"
1245 width="1.2915452"
1246 y="-0.23523259"
1247 height="1.4704652">
1248 <feGaussianBlur
1249 inkscape:collect="always"
1250 stdDeviation="4.4442907"
1251 id="feGaussianBlur4012" />
1252 </filter>
1253 <filter
1254 inkscape:collect="always"
1255 id="filter4053">
1256 <feGaussianBlur
1257 inkscape:collect="always"
1258 stdDeviation="0.6062947"
1259 id="feGaussianBlur4055" />
1260 </filter>
1261 <filter
1262 inkscape:collect="always"
1263 id="filter4079">
1264 <feGaussianBlur
1265 inkscape:collect="always"
1266 stdDeviation="6.5887624"
1267 id="feGaussianBlur4081" />
1268 </filter>
1269 <filter
1270 inkscape:collect="always"
1271 id="filter4083">
1272 <feGaussianBlur
1273 inkscape:collect="always"
1274 stdDeviation="1.5052066"
1275 id="feGaussianBlur4085" />
1276 </filter>
1277 <radialGradient
1278 inkscape:collect="always"
1279 xlink:href="#linearGradient4113"
1280 id="radialGradient4119"
1281 cx="296.33783"
1282 cy="427.17749"
1283 fx="296.33783"
1284 fy="427.17749"
1285 r="19.704132"
1286 gradientUnits="userSpaceOnUse"
1287 gradientTransform="matrix(2.9797125,0,0,2.9797125,-599.28727,-827.0855)" />
1288 <filter
1289 inkscape:collect="always"
1290 id="filter6949"
1291 x="-0.10294895"
1292 width="1.2058979"
1293 y="-0.34224695"
1294 height="1.6844939">
1295 <feGaussianBlur
1296 inkscape:collect="always"
1297 stdDeviation="1.1675612"
1298 id="feGaussianBlur6951" />
1299 </filter>
1300 <filter
1301 inkscape:collect="always"
1302 id="filter6953"
1303 x="-0.098320946"
1304 width="1.1966419"
1305 y="-0.19750816"
1306 height="1.3950163">
1307 <feGaussianBlur
1308 inkscape:collect="always"
1309 stdDeviation="1.1675612"
1310 id="feGaussianBlur6955" />
1311 </filter>
1312 <filter
1313 inkscape:collect="always"
1314 id="filter6957"
1315 x="-0.098213427"
1316 width="1.1964267"
1317 y="-0.19838208"
1318 height="1.3967642">
1319 <feGaussianBlur
1320 inkscape:collect="always"
1321 stdDeviation="1.1675612"
1322 id="feGaussianBlur6959" />
1323 </filter>
1324 <filter
1325 inkscape:collect="always"
1326 id="filter6961"
1327 x="-0.09919104"
1328 width="1.1983821"
1329 y="-0.22643611"
1330 height="1.4528722">
1331 <feGaussianBlur
1332 inkscape:collect="always"
1333 stdDeviation="1.1675612"
1334 id="feGaussianBlur6963" />
1335 </filter>
1336 <filter
1337 inkscape:collect="always"
1338 id="filter6965"
1339 x="-0.099081434"
1340 width="1.1981629"
1341 y="-0.22529824"
1342 height="1.4505965">
1343 <feGaussianBlur
1344 inkscape:collect="always"
1345 stdDeviation="1.1675612"
1346 id="feGaussianBlur6967" />
1347 </filter>
1348 <filter
1349 inkscape:collect="always"
1350 id="filter6969"
1351 x="-0.10450897"
1352 width="1.2090179"
1353 y="-0.40468886"
1354 height="1.8093777">
1355 <feGaussianBlur
1356 inkscape:collect="always"
1357 stdDeviation="1.1675612"
1358 id="feGaussianBlur6971" />
1359 </filter>
1360 <filter
1361 inkscape:collect="always"
1362 id="filter6973"
1363 x="-0.10330495"
1364 width="1.2066098"
1365 y="-0.36439717"
1366 height="1.7287945">
1367 <feGaussianBlur
1368 inkscape:collect="always"
1369 stdDeviation="1.1675612"
1370 id="feGaussianBlur6975" />
1371 </filter>
1372 <filter
1373 inkscape:collect="always"
1374 id="filter6977"
1375 x="-0.10224481"
1376 width="1.2044896"
1377 y="-0.32371372"
1378 height="1.6474274">
1379 <feGaussianBlur
1380 inkscape:collect="always"
1381 stdDeviation="1.1675612"
1382 id="feGaussianBlur6979" />
1383 </filter>
1384 <filter
1385 inkscape:collect="always"
1386 id="filter6981"
1387 x="-0.10052545"
1388 width="1.2010509"
1389 y="-0.2742162"
1390 height="1.5484324">
1391 <feGaussianBlur
1392 inkscape:collect="always"
1393 stdDeviation="1.1675612"
1394 id="feGaussianBlur6983" />
1395 </filter>
1396 <filter
1397 inkscape:collect="always"
1398 id="filter6985"
1399 x="-0.098428868"
1400 width="1.1968577"
1401 y="-0.20853186"
1402 height="1.4170637">
1403 <feGaussianBlur
1404 inkscape:collect="always"
1405 stdDeviation="1.1675612"
1406 id="feGaussianBlur6987" />
1407 </filter>
1408 <filter
1409 inkscape:collect="always"
1410 id="filter6989"
1411 x="-0.098428868"
1412 width="1.1968577"
1413 y="-0.20287035"
1414 height="1.4057407">
1415 <feGaussianBlur
1416 inkscape:collect="always"
1417 stdDeviation="1.1675612"
1418 id="feGaussianBlur6991" />
1419 </filter>
1420 <filter
1421 inkscape:collect="always"
1422 id="filter6993"
1423 x="-0.098213255"
1424 width="1.1964265"
1425 y="-0.19838208"
1426 height="1.3967642">
1427 <feGaussianBlur
1428 inkscape:collect="always"
1429 stdDeviation="1.1675612"
1430 id="feGaussianBlur6995" />
1431 </filter>
1432 <filter
1433 inkscape:collect="always"
1434 id="filter6997">
1435 <feGaussianBlur
1436 inkscape:collect="always"
1437 stdDeviation="1.1675612"
1438 id="feGaussianBlur6999" />
1439 </filter>
1440 <filter
1441 inkscape:collect="always"
1442 id="filter7001">
1443 <feGaussianBlur
1444 inkscape:collect="always"
1445 stdDeviation="1.1675612"
1446 id="feGaussianBlur7003" />
1447 </filter>
1448 <filter
1449 inkscape:collect="always"
1450 id="filter7285"
1451 x="-0.030884685"
1452 width="1.0617694"
1453 y="-0.10267408"
1454 height="1.2053483">
1455 <feGaussianBlur
1456 inkscape:collect="always"
1457 stdDeviation="0.35026836"
1458 id="feGaussianBlur7287" />
1459 </filter>
1460 <filter
1461 inkscape:collect="always"
1462 id="filter7289">
1463 <feGaussianBlur
1464 inkscape:collect="always"
1465 stdDeviation="0.35026836"
1466 id="feGaussianBlur7291" />
1467 </filter>
1468 <filter
1469 inkscape:collect="always"
1470 id="filter7293">
1471 <feGaussianBlur
1472 inkscape:collect="always"
1473 stdDeviation="0.35026836"
1474 id="feGaussianBlur7295" />
1475 </filter>
1476 <filter
1477 inkscape:collect="always"
1478 id="filter7297">
1479 <feGaussianBlur
1480 inkscape:collect="always"
1481 stdDeviation="0.35026836"
1482 id="feGaussianBlur7299" />
1483 </filter>
1484 <filter
1485 inkscape:collect="always"
1486 id="filter7301">
1487 <feGaussianBlur
1488 inkscape:collect="always"
1489 stdDeviation="0.35026836"
1490 id="feGaussianBlur7303" />
1491 </filter>
1492 <filter
1493 inkscape:collect="always"
1494 id="filter7305">
1495 <feGaussianBlur
1496 inkscape:collect="always"
1497 stdDeviation="0.35026836"
1498 id="feGaussianBlur7307" />
1499 </filter>
1500 <filter
1501 inkscape:collect="always"
1502 id="filter7309">
1503 <feGaussianBlur
1504 inkscape:collect="always"
1505 stdDeviation="0.35026836"
1506 id="feGaussianBlur7311" />
1507 </filter>
1508 <filter
1509 inkscape:collect="always"
1510 id="filter7313">
1511 <feGaussianBlur
1512 inkscape:collect="always"
1513 stdDeviation="0.35026836"
1514 id="feGaussianBlur7315" />
1515 </filter>
1516 <filter
1517 inkscape:collect="always"
1518 id="filter7317">
1519 <feGaussianBlur
1520 inkscape:collect="always"
1521 stdDeviation="0.35026836"
1522 id="feGaussianBlur7319" />
1523 </filter>
1524 <filter
1525 inkscape:collect="always"
1526 id="filter7321">
1527 <feGaussianBlur
1528 inkscape:collect="always"
1529 stdDeviation="0.35026836"
1530 id="feGaussianBlur7323" />
1531 </filter>
1532 <filter
1533 inkscape:collect="always"
1534 id="filter7325"
1535 x="-0.031352691"
1536 width="1.0627054"
1537 y="-0.12140666"
1538 height="1.2428133">
1539 <feGaussianBlur
1540 inkscape:collect="always"
1541 stdDeviation="0.35026836"
1542 id="feGaussianBlur7327" />
1543 </filter>
1544 <filter
1545 inkscape:collect="always"
1546 id="filter7329"
1547 x="-0.030991485"
1548 width="1.061983"
1549 y="-0.10931916"
1550 height="1.2186383">
1551 <feGaussianBlur
1552 inkscape:collect="always"
1553 stdDeviation="0.35026836"
1554 id="feGaussianBlur7331" />
1555 </filter>
1556 <filter
1557 inkscape:collect="always"
1558 id="filter7333">
1559 <feGaussianBlur
1560 inkscape:collect="always"
1561 stdDeviation="0.35026836"
1562 id="feGaussianBlur7335" />
1563 </filter>
1564 <filter
1565 inkscape:collect="always"
1566 id="filter7337">
1567 <feGaussianBlur
1568 inkscape:collect="always"
1569 stdDeviation="0.35026836"
1570 id="feGaussianBlur7339" />
1571 </filter>
1572 <filter
1573 inkscape:collect="always"
1574 id="filter7345">
1575 <feGaussianBlur
1576 inkscape:collect="always"
1577 stdDeviation="1.7233839"
1578 id="feGaussianBlur7347" />
1579 </filter>
1580 <clipPath
1581 clipPathUnits="userSpaceOnUse"
1582 id="clipPath7421">
1583 <path
1584 sodipodi:type="inkscape:offset"
1585 inkscape:radius="0"
1586 inkscape:original="M 1111.4062 -285.9375 L 1107.4688 -284.0625 C 1107.4283 -284.05228 1107.3692 -284.04201 1107.3438 -284.03125 C 1106.925 -283.8184 1107.1791 -283.93067 1106.6875 -283.71875 C 1106.2014 -283.50919 1104.9499 -283.13456 1102.5938 -282.25 C 1099.2626 -280.99942 1096.7895 -280.10016 1095.5938 -279.1875 C 1094.0576 -279.16623 1091.8733 -278.95419 1089.9375 -278.46875 C 1086.956 -277.72108 1085.0823 -277.29474 1083.1875 -276.875 C 1081.2927 -276.45527 1081.512 -276.23281 1080.3125 -276 C 1079.0159 -275.74833 1078.5911 -276.00899 1074.875 -275.21875 C 1071.3851 -274.4766 1065.9802 -273.28768 1064.7188 -272.53125 C 1063.1348 -272.71203 1060.8513 -272.85303 1058.875 -272.5625 C 1055.8346 -272.11554 1053.9588 -271.88974 1052.0312 -271.65625 C 1051.3758 -271.57687 1050.9902 -271.45547 1050.6875 -271.375 C 1050.2613 -271.24334 1050.0017 -271.11498 1049.3125 -271.03125 C 1048.0009 -270.87188 1047.5503 -271.18808 1043.7812 -270.75 C 1040.2273 -270.33691 1034.7758 -269.47718 1033.5312 -268.8125 C 1031.9322 -269.10979 1029.6735 -269.34669 1027.6875 -269.15625 C 1024.6287 -268.86293 1022.7155 -268.67226 1020.7812 -268.5 C 1018.847 -268.32773 1019.0926 -268.07763 1017.875 -267.96875 C 1016.5588 -267.85105 1016.1152 -268.13238 1012.3438 -267.71875 C 1008.8017 -267.3303 1003.3359 -266.50948 1002.0625 -265.84375 C 1000.4636 -266.13844 998.1753 -266.35076 996.1875 -266.15625 C 993.12921 -265.857 991.2463 -265.67601 989.3125 -265.5 C 988.65501 -265.44015 988.27245 -265.32144 987.96875 -265.25 C 987.54105 -265.13104 987.28525 -265.03193 986.59375 -264.96875 C 985.27775 -264.84849 984.834 -265.16363 981.0625 -264.75 C 977.50631 -264.35998 972.0569 -263.51084 970.8125 -262.84375 C 969.21381 -263.13793 966.95265 -263.36747 964.96875 -263.15625 C 961.91305 -262.83092 959.9947 -262.63001 958.0625 -262.4375 C 956.13031 -262.24499 956.37275 -261.99662 955.15625 -261.875 C 953.84137 -261.74353 953.3932 -262.03954 949.625 -261.59375 C 946.08611 -261.17509 940.6473 -260.30158 939.375 -259.625 C 937.77741 -259.90604 935.51505 -260.04543 933.53125 -259.8125 C 930.47927 -259.45413 928.58625 -259.24464 926.65625 -259.03125 C 926.00007 -258.95869 925.6156 -258.85856 925.3125 -258.78125 C 924.88571 -258.65402 924.6276 -258.51405 923.9375 -258.4375 C 922.62411 -258.29181 922.17015 -258.61152 918.40625 -258.125 C 914.85737 -257.66624 909.4276 -256.70598 908.1875 -256 C 906.59441 -256.24424 904.3537 -256.38135 902.375 -256.125 C 899.32741 -255.73018 897.4243 -255.47655 895.5 -255.21875 C 893.57571 -254.96096 893.7739 -254.72522 892.5625 -254.5625 C 891.25301 -254.3866 890.8153 -254.66688 887.0625 -254.09375 C 883.53821 -253.55551 878.1393 -252.39458 876.875 -251.65625 C 875.28751 -251.85979 873.0295 -251.91098 871.0625 -251.5625 C 868.03631 -251.02638 866.1636 -250.70081 864.25 -250.375 C 863.59941 -250.26423 863.2363 -250.10406 862.9375 -250 C 862.51681 -249.83512 862.27405 -249.6687 861.59375 -249.53125 C 860.29905 -249.26966 859.86665 -249.53745 856.15625 -248.71875 C 852.65777 -247.9468 847.31035 -246.33582 846.09375 -245.5 C 844.53085 -245.57745 842.33625 -245.41472 840.40625 -244.90625 C 837.43387 -244.12312 835.58855 -243.67416 833.71875 -243.15625 C 831.84875 -242.63835 832.0521 -242.38897 830.875 -242.0625 C 829.60251 -241.7096 829.17795 -241.95541 825.53125 -240.875 C 822.10657 -239.86037 816.88185 -237.94183 815.65625 -237.03125 C 814.11747 -237.01851 811.93645 -236.75903 810.03125 -236.15625 C 807.10027 -235.22891 805.2809 -234.69783 803.4375 -234.09375 C 802.81071 -233.88837 802.44585 -233.70117 802.15625 -233.5625 C 801.74867 -233.34889 801.50295 -233.15375 800.84375 -232.9375 C 799.58925 -232.52596 799.1576 -232.74846 795.5625 -231.5 C 792.17261 -230.32283 786.96755 -228.2863 785.78125 -227.34375 C 784.25737 -227.28408 782.1312 -226.94888 780.25 -226.28125 C 777.35261 -225.25296 775.55095 -224.60577 773.71875 -223.96875 C 771.88655 -223.33174 772.0909 -223.12021 770.9375 -222.71875 C 769.69071 -222.28479 769.27395 -222.51903 765.71875 -221.15625 C 762.38005 -219.87645 757.23165 -217.6737 756.03125 -216.6875 C 754.52407 -216.57981 752.39555 -216.1887 750.53125 -215.46875 C 747.66307 -214.36115 745.90735 -213.68719 744.09375 -213 C 743.47705 -212.76637 743.0973 -212.55797 742.8125 -212.40625 C 742.81251 -212.40625 742.8125 -212.37673 742.8125 -212.375 L 734.8125 -209.1875 L 736.625 -194.46875 C 736.36701 -194.52956 742.8125 -191.15625 742.8125 -191.15625 C 743.03891 -191.30093 743.26145 -191.42886 743.53125 -191.53125 C 744.61177 -191.94123 745.70285 -191.74702 749.53125 -193.21875 C 753.35977 -194.69049 754.7553 -195.22373 755.4375 -195.625 C 756.11711 -196.02478 757.04925 -196.50437 757.65625 -197.15625 C 759.48317 -197.294 761.22705 -197.64948 762.59375 -198.15625 C 765.56175 -199.25677 767.4691 -199.96244 769.375 -200.625 C 771.28081 -201.28754 771.72915 -202.03987 772.78125 -202.40625 C 773.87287 -202.78636 774.97635 -202.57163 778.84375 -203.9375 C 782.71115 -205.30336 784.1269 -205.76458 784.8125 -206.15625 C 785.51361 -206.55677 786.5133 -207.08923 787.125 -207.75 C 789.09581 -207.80466 790.94195 -208.13463 792.40625 -208.625 C 795.40777 -209.63008 797.3324 -210.24671 799.25 -210.875 C 800.78861 -211.3791 801.42415 -211.92177 802.15625 -212.3125 C 802.38647 -212.44681 802.63215 -212.56623 802.90625 -212.65625 C 804.00457 -213.01673 805.0877 -212.73762 809 -213.96875 C 812.91231 -215.19988 814.366 -215.6417 815.0625 -216 C 815.75641 -216.35697 816.6926 -216.79261 817.3125 -217.40625 C 819.17771 -217.42891 820.94835 -217.67308 822.34375 -218.09375 C 825.37415 -219.00729 827.33615 -219.52385 829.28125 -220.0625 C 831.22637 -220.60114 831.70745 -221.32702 832.78125 -221.625 C 833.89527 -221.93415 835.00125 -221.61761 838.96875 -222.65625 C 842.93625 -223.69488 844.38625 -224.08898 845.09375 -224.40625 C 845.82855 -224.73584 846.90765 -225.15997 847.53125 -225.78125 C 849.52907 -225.66525 851.3887 -225.80134 852.875 -226.15625 C 855.95311 -226.89125 857.9584 -227.25719 859.9375 -227.65625 C 861.52541 -227.97643 862.1818 -228.4468 862.9375 -228.75 C 863.17501 -228.8568 863.4044 -228.94276 863.6875 -229 C 864.82091 -229.22919 865.99215 -228.79107 870.03125 -229.5 C 874.07067 -230.20893 875.5315 -230.42709 876.25 -230.6875 C 876.96581 -230.94694 877.95435 -231.25474 878.59375 -231.78125 C 880.51795 -231.54176 882.34165 -231.55672 883.78125 -231.78125 C 886.90767 -232.26887 888.9358 -232.48192 890.9375 -232.75 C 892.93921 -233.01807 893.42625 -233.69514 894.53125 -233.84375 C 895.67767 -233.99793 896.8071 -233.54218 900.875 -234.0625 C 904.94281 -234.58282 906.43525 -234.75823 907.15625 -235 C 907.89337 -235.24714 908.95435 -235.58623 909.59375 -236.125 C 911.64375 -235.78947 913.56745 -235.72704 915.09375 -235.90625 C 918.23595 -236.27521 920.27375 -236.46561 922.28125 -236.6875 C 923.89207 -236.86552 924.5459 -237.2957 925.3125 -237.53125 C 925.55341 -237.61677 925.80655 -237.68685 926.09375 -237.71875 C 927.24345 -237.84647 928.39505 -237.3721 932.46875 -237.84375 C 936.54245 -238.3154 938.0278 -238.45435 938.75 -238.6875 C 939.46941 -238.91977 940.45025 -239.16096 941.09375 -239.65625 C 943.03005 -239.32279 944.8638 -239.25201 946.3125 -239.40625 C 949.45851 -239.7412 951.49 -239.92484 953.5 -240.125 C 955.50991 -240.32514 955.98415 -240.95139 957.09375 -241.0625 C 958.24485 -241.17778 959.39025 -240.69744 963.46875 -241.125 C 967.54725 -241.55256 969.05765 -241.68709 969.78125 -241.90625 C 970.52047 -242.13011 971.57685 -242.4195 972.21875 -242.9375 C 974.27575 -242.53883 976.2206 -242.4441 977.75 -242.59375 C 980.89871 -242.90185 982.9258 -243.067 984.9375 -243.25 C 986.55151 -243.39682 987.20055 -243.81055 987.96875 -244.03125 C 988.21005 -244.11211 988.4623 -244.16116 988.75 -244.1875 C 989.90211 -244.29295 991.0429 -243.79475 995.125 -244.1875 C 999.20711 -244.58025 1000.7139 -244.71834 1001.4375 -244.9375 C 1002.1584 -245.15583 1003.1371 -245.3852 1003.7812 -245.875 C 1005.7193 -245.52501 1007.5501 -245.42062 1009 -245.5625 C 1012.1487 -245.8706 1014.1758 -246.03575 1016.1875 -246.21875 C 1018.1991 -246.40174 1018.7017 -247.05677 1019.8125 -247.15625 C 1020.9648 -247.25948 1022.1047 -246.77142 1026.1875 -247.15625 C 1030.2704 -247.54107 1031.7762 -247.65725 1032.5 -247.875 C 1033.2393 -248.09743 1034.2956 -248.38949 1034.9375 -248.90625 C 1036.9949 -248.50448 1038.9404 -248.40292 1040.4688 -248.5625 C 1043.6153 -248.89102 1045.6458 -249.0852 1047.6562 -249.28125 C 1049.2692 -249.43854 1049.9219 -249.91273 1050.6875 -250.15625 C 1050.9282 -250.24429 1051.1507 -250.27762 1051.4375 -250.3125 C 1052.5858 -250.4522 1053.7542 -249.97259 1057.8125 -250.5625 C 1061.8708 -251.15242 1063.3743 -251.33964 1064.0938 -251.59375 C 1064.8104 -251.84691 1065.7684 -252.15182 1066.4062 -252.6875 C 1068.3259 -252.47556 1070.1262 -252.53609 1071.5625 -252.78125 C 1074.6816 -253.31365 1076.6741 -253.70986 1078.6562 -254.09375 C 1080.6383 -254.47762 1081.1305 -255.1334 1082.2188 -255.375 C 1083.3475 -255.62566 1084.489 -255.25871 1088.4688 -256.25 C 1092.4483 -257.24127 1093.8983 -257.6693 1094.5938 -258.03125 C 1095.316 -258.40725 1096.3555 -258.90183 1096.9688 -259.5625 C 1098.9317 -259.57454 1100.7625 -259.85355 1102.1875 -260.40625 C 1105.1387 -261.55085 1107.0607 -262.27567 1108.875 -263.15625 C 1110.3307 -263.86277 1111.1941 -264.85828 1111.4062 -265.15625 C 1111.6185 -265.4542 1111.5051 -265.8848 1111.5312 -265.90625 C 1111.5742 -265.94148 1111.8716 -266.00028 1112.0312 -266.34375 C 1112.8902 -268.19082 1114.3544 -271.97139 1114.4688 -272.65625 C 1114.5825 -273.33839 1114.6368 -274.00902 1114.6875 -274.40625 C 1114.7169 -274.63575 1114.5404 -275.28515 1114.5625 -275.34375 C 1114.5934 -275.42579 1114.8508 -275.59432 1114.9062 -275.84375 C 1115.1725 -277.04206 1114.9953 -278.05111 1114.7812 -279.46875 C 1114.5673 -280.88638 1113.8096 -284.08338 1113.1562 -284.9375 C 1112.4973 -285.79922 1111.9314 -285.94801 1111.4062 -285.9375 z "
1587 style="display:inline;fill:#bcb786;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
1588 id="path7423"
1589 d="m 1111.4062,-285.9375 -3.9374,1.875 c -0.041,0.0102 -0.1,0.0205 -0.125,0.0312 -0.4188,0.21285 -0.1647,0.10058 -0.6563,0.3125 -0.4861,0.20956 -1.7376,0.58419 -4.0937,1.46875 -3.3312,1.25058 -5.8043,2.14984 -7,3.0625 -1.5362,0.0213 -3.7205,0.23331 -5.6563,0.71875 -2.9815,0.74767 -4.8552,1.17401 -6.75,1.59375 -1.8948,0.41973 -1.6755,0.64219 -2.875,0.875 -1.2966,0.25167 -1.7214,-0.009 -5.4375,0.78125 -3.4899,0.74215 -8.8948,1.93107 -10.1562,2.6875 -1.584,-0.18078 -3.8675,-0.32178 -5.8438,-0.0312 -3.0404,0.44696 -4.9162,0.67276 -6.8438,0.90625 -0.6554,0.0794 -1.041,0.20078 -1.3437,0.28125 -0.4262,0.13166 -0.6858,0.26002 -1.375,0.34375 -1.3116,0.15937 -1.7622,-0.15683 -5.5313,0.28125 -3.5539,0.41309 -9.0054,1.27282 -10.25,1.9375 -1.599,-0.29729 -3.8577,-0.53419 -5.8437,-0.34375 -3.0588,0.29332 -4.972,0.48399 -6.9063,0.65625 -1.9342,0.17227 -1.6886,0.42237 -2.9062,0.53125 -1.3162,0.1177 -1.7598,-0.16363 -5.5312,0.25 -3.5421,0.38845 -9.0079,1.20927 -10.2813,1.875 -1.5989,-0.29469 -3.8872,-0.50701 -5.875,-0.3125 -3.05829,0.29925 -4.9412,0.48024 -6.875,0.65625 -0.65749,0.0598 -1.04005,0.17856 -1.34375,0.25 -0.4277,0.11896 -0.6835,0.21807 -1.375,0.28125 -1.316,0.12026 -1.75975,-0.19488 -5.53125,0.21875 -3.55619,0.39002 -9.0056,1.23916 -10.25,1.90625 -1.59869,-0.29418 -3.85985,-0.52372 -5.84375,-0.3125 -3.0557,0.32533 -4.97405,0.52624 -6.90625,0.71875 -1.93219,0.19251 -1.68975,0.44088 -2.90625,0.5625 -1.31488,0.13147 -1.76305,-0.16454 -5.53125,0.28125 -3.53889,0.41866 -8.9777,1.29217 -10.25,1.96875 -1.59759,-0.28104 -3.85995,-0.42043 -5.84375,-0.1875 -3.05198,0.35837 -4.945,0.56786 -6.875,0.78125 -0.65618,0.0726 -1.04065,0.17269 -1.34375,0.25 -0.42679,0.12723 -0.6849,0.2672 -1.375,0.34375 -1.31339,0.14569 -1.76735,-0.17402 -5.53125,0.3125 -3.54888,0.45876 -8.97865,1.41902 -10.21875,2.125 -1.59309,-0.24424 -3.8338,-0.38135 -5.8125,-0.125 -3.04759,0.39482 -4.9507,0.64845 -6.875,0.90625 -1.92429,0.25779 -1.7261,0.49353 -2.9375,0.65625 -1.30949,0.1759 -1.7472,-0.10438 -5.5,0.46875 -3.52429,0.53824 -8.9232,1.69917 -10.1875,2.4375 -1.58749,-0.20354 -3.8455,-0.25473 -5.8125,0.0937 -3.02619,0.53612 -4.8989,0.86169 -6.8125,1.1875 -0.65059,0.11077 -1.0137,0.27094 -1.3125,0.375 -0.42069,0.16488 -0.66345,0.3313 -1.34375,0.46875 -1.2947,0.26159 -1.7271,-0.006 -5.4375,0.8125 -3.49848,0.77195 -8.8459,2.38293 -10.0625,3.21875 -1.5629,-0.0774 -3.7575,0.0853 -5.6875,0.59375 -2.97238,0.78313 -4.8177,1.23209 -6.6875,1.75 -1.87,0.5179 -1.66665,0.76728 -2.84375,1.09375 -1.27249,0.3529 -1.69705,0.10709 -5.34375,1.1875 -3.42468,1.01463 -8.6494,2.93317 -9.875,3.84375 -1.53878,0.0127 -3.7198,0.27222 -5.625,0.875 -2.93098,0.92734 -4.75035,1.45842 -6.59375,2.0625 -0.62679,0.20538 -0.99165,0.39258 -1.28125,0.53125 -0.40758,0.21361 -0.6533,0.40875 -1.3125,0.625 -1.2545,0.41154 -1.68615,0.18904 -5.28125,1.4375 -3.38989,1.17717 -8.59495,3.2137 -9.78125,4.15625 -1.52388,0.0597 -3.65005,0.39487 -5.53125,1.0625 -2.89739,1.02829 -4.69905,1.67548 -6.53125,2.3125 -1.8322,0.63701 -1.62785,0.84854 -2.78125,1.25 -1.24679,0.43396 -1.66355,0.19972 -5.21875,1.5625 -3.3387,1.2798 -8.4871,3.48255 -9.6875,4.46875 -1.50718,0.10769 -3.6357,0.4988 -5.5,1.21875 -2.86818,1.1076 -4.6239,1.78156 -6.4375,2.46875 -0.6167,0.23363 -0.99645,0.44203 -1.28125,0.59375 10e-6,0 0,0.0295 0,0.0312 l -8,3.1875 1.8125,14.71875 c -0.25799,-0.0608 6.1875,3.3125 6.1875,3.3125 0.22641,-0.14468 0.44895,-0.27261 0.71875,-0.375 1.08052,-0.40998 2.1716,-0.21577 6,-1.6875 3.82852,-1.47174 5.22405,-2.00498 5.90625,-2.40625 0.67961,-0.39978 1.61175,-0.87937 2.21875,-1.53125 1.82692,-0.13775 3.5708,-0.49323 4.9375,-1 2.968,-1.10052 4.87535,-1.80619 6.78125,-2.46875 1.90581,-0.66254 2.35415,-1.41487 3.40625,-1.78125 1.09162,-0.38011 2.1951,-0.16538 6.0625,-1.53125 3.8674,-1.36586 5.28315,-1.82708 5.96875,-2.21875 0.70111,-0.40052 1.7008,-0.93298 2.3125,-1.59375 1.97081,-0.0547 3.81695,-0.38463 5.28125,-0.875 3.00152,-1.00508 4.92615,-1.62171 6.84375,-2.25 1.53861,-0.5041 2.17415,-1.04677 2.90625,-1.4375 0.23022,-0.13431 0.4759,-0.25373 0.75,-0.34375 1.09832,-0.36048 2.18145,-0.0814 6.09375,-1.3125 3.91231,-1.23113 5.366,-1.67295 6.0625,-2.03125 0.69391,-0.35697 1.6301,-0.79261 2.25,-1.40625 1.86521,-0.0227 3.63585,-0.26683 5.03125,-0.6875 3.0304,-0.91354 4.9924,-1.4301 6.9375,-1.96875 1.94512,-0.53864 2.4262,-1.26452 3.5,-1.5625 1.11402,-0.30915 2.22,0.007 6.1875,-1.03125 3.9675,-1.03863 5.4175,-1.43273 6.125,-1.75 0.7348,-0.32959 1.8139,-0.75372 2.4375,-1.375 1.99782,0.116 3.85745,-0.0201 5.34375,-0.375 3.07811,-0.735 5.0834,-1.10094 7.0625,-1.5 1.58791,-0.32018 2.2443,-0.79055 3,-1.09375 0.23751,-0.1068 0.4669,-0.19276 0.75,-0.25 1.13341,-0.22919 2.30465,0.20893 6.34375,-0.5 4.03942,-0.70893 5.50025,-0.92709 6.21875,-1.1875 0.71581,-0.25944 1.70435,-0.56724 2.34375,-1.09375 1.9242,0.23949 3.7479,0.22453 5.1875,0 3.12642,-0.48762 5.15455,-0.70067 7.15625,-0.96875 2.00171,-0.26807 2.48875,-0.94514 3.59375,-1.09375 1.14642,-0.15418 2.27585,0.30157 6.34375,-0.21875 4.06781,-0.52032 5.56025,-0.69573 6.28125,-0.9375 0.73712,-0.24714 1.7981,-0.58623 2.4375,-1.125 2.05,0.33553 3.9737,0.39796 5.5,0.21875 3.1422,-0.36896 5.18,-0.55936 7.1875,-0.78125 1.61082,-0.17802 2.26465,-0.6082 3.03125,-0.84375 0.24091,-0.0855 0.49405,-0.1556 0.78125,-0.1875 1.1497,-0.12772 2.3013,0.34665 6.375,-0.125 4.0737,-0.47165 5.55905,-0.6106 6.28125,-0.84375 0.71941,-0.23227 1.70025,-0.47346 2.34375,-0.96875 1.9363,0.33346 3.77005,0.40424 5.21875,0.25 3.14601,-0.33495 5.1775,-0.51859 7.1875,-0.71875 2.00991,-0.20014 2.48415,-0.82639 3.59375,-0.9375 1.1511,-0.11528 2.2965,0.36506 6.375,-0.0625 4.0785,-0.42756 5.5889,-0.56209 6.3125,-0.78125 0.73922,-0.22386 1.7956,-0.51325 2.4375,-1.03125 2.057,0.39867 4.00185,0.4934 5.53125,0.34375 3.14871,-0.3081 5.1758,-0.47325 7.1875,-0.65625 1.61401,-0.14682 2.26305,-0.56055 3.03125,-0.78125 0.2413,-0.0809 0.49355,-0.12991 0.78125,-0.15625 1.15211,-0.10545 2.2929,0.39275 6.375,0 4.08211,-0.39275 5.5889,-0.53084 6.3125,-0.75 0.7209,-0.21833 1.6996,-0.4477 2.3437,-0.9375 1.9381,0.34999 3.7689,0.45438 5.2188,0.3125 3.1487,-0.3081 5.1758,-0.47325 7.1875,-0.65625 2.0116,-0.18299 2.5142,-0.83802 3.625,-0.9375 1.1523,-0.10323 2.2922,0.38483 6.375,0 4.0829,-0.38482 5.5887,-0.501 6.3125,-0.71875 0.7393,-0.22243 1.7956,-0.51449 2.4375,-1.03125 2.0574,0.40177 4.0029,0.50333 5.5313,0.34375 3.1465,-0.32852 5.177,-0.5227 7.1874,-0.71875 1.613,-0.15729 2.2657,-0.63148 3.0313,-0.875 0.2407,-0.088 0.4632,-0.12137 0.75,-0.15625 1.1483,-0.1397 2.3167,0.33991 6.375,-0.25 4.0583,-0.58992 5.5618,-0.77714 6.2813,-1.03125 0.7166,-0.25316 1.6746,-0.55807 2.3124,-1.09375 1.9197,0.21194 3.72,0.15141 5.1563,-0.0937 3.1191,-0.5324 5.1116,-0.92861 7.0937,-1.3125 1.9821,-0.38387 2.4743,-1.03965 3.5626,-1.28125 1.1287,-0.25066 2.2702,0.11629 6.25,-0.875 3.9795,-0.99127 5.4295,-1.4193 6.125,-1.78125 0.7222,-0.376 1.7617,-0.87058 2.375,-1.53125 1.9629,-0.012 3.7937,-0.29105 5.2187,-0.84375 2.9512,-1.1446 4.8732,-1.86942 6.6875,-2.75 1.4557,-0.70652 2.3191,-1.70203 2.5312,-2 0.2123,-0.29795 0.099,-0.72855 0.125,-0.75 0.043,-0.0352 0.3404,-0.094 0.5,-0.4375 0.859,-1.84707 2.3232,-5.62764 2.4376,-6.3125 0.1137,-0.68214 0.168,-1.35277 0.2187,-1.75 0.029,-0.2295 -0.1471,-0.8789 -0.125,-0.9375 0.031,-0.082 0.2883,-0.25057 0.3437,-0.5 0.2663,-1.19831 0.089,-2.20736 -0.125,-3.625 -0.2139,-1.41763 -0.9716,-4.61463 -1.625,-5.46875 -0.6589,-0.86172 -1.2248,-1.01051 -1.75,-1 z"
1590 transform="translate(0.08004571,-0.03125)" />
1591 </clipPath>
1592 <filter
1593 inkscape:collect="always"
1594 id="filter7578"
1595 x="-0.08160872"
1596 width="1.1632174"
1597 y="-0.22659944"
1598 height="1.4531989">
1599 <feGaussianBlur
1600 inkscape:collect="always"
1601 stdDeviation="2.437399"
1602 id="feGaussianBlur7580" />
1603 </filter>
1604 <filter
1605 inkscape:collect="always"
1606 id="filter7594"
1607 x="-0.040804356"
1608 width="1.0816087"
1609 y="-0.11329972"
1610 height="1.2265995">
1611 <feGaussianBlur
1612 inkscape:collect="always"
1613 stdDeviation="1.2186995"
1614 id="feGaussianBlur7596" />
1615 </filter>
1616 <clipPath
1617 clipPathUnits="userSpaceOnUse"
1618 id="clipPath7606">
1619 <path
1620 id="path7608"
1621 d="m 1049.205,-282.26672 -0.09,0.008 c -1.3874,0.88445 -6.6033,1.6072 -6.629,9.52344 -0.024,7.42525 15.0129,17.09146 17.1563,18.09375 1.7302,0.80909 3.5916,1.40876 5.4063,1.71875 l 1.4374,0.21875 c 1.9197,0.21194 3.72,0.15141 5.1563,-0.0937 3.1191,-0.5324 5.1116,-0.92861 7.0937,-1.3125 1.9821,-0.38387 2.4743,-1.03965 3.5626,-1.28125 1.1287,-0.25066 2.2702,0.11629 6.25,-0.875 3.9795,-0.99128 5.4294,-1.4193 6.125,-1.78125 0.7222,-0.37601 1.7617,-0.87058 2.375,-1.53125 1.9629,-0.012 3.7937,-0.29105 5.2187,-0.84375 2.9512,-1.14461 4.8732,-1.86942 6.6875,-2.75 1.4557,-0.70653 2.3191,-1.70203 2.5312,-2 0.2123,-0.29796 0.099,-0.72855 0.125,-0.75 0.043,-0.0352 0.3405,-0.094 0.5,-0.4375 0.859,-1.84708 2.3232,-5.62764 2.4376,-6.3125 0.1137,-0.68215 0.168,-1.35277 0.2187,-1.75 0.029,-0.22951 -0.1471,-0.8789 -0.125,-0.9375 0.031,-0.082 0.2883,-0.25057 0.3437,-0.5 0.2663,-1.19832 0.089,-2.20736 -0.125,-3.625 -0.2139,-1.41764 -0.9716,-4.61463 -1.625,-5.46875 -0.4194,-0.54857 -0.7993,-0.7925 -1.1562,-0.90625 -0.067,-0.0173 -0.1239,-0.0467 -0.1875,-0.0625 -0.021,-0.004 -0.042,0.003 -0.062,0 -0.3116,-0.0755 -0.6085,-0.15867 -1.1562,-0.21875 -0.9855,-0.10812 -2.4247,-0.2594 -3.9688,-0.25 -0.5147,0.003 -1.0371,0.0476 -1.5625,0.0937 -3.5589,0.31228 -9.0098,0.99108 -10.2187,1.625 -1.6331,-0.33402 -3.9482,-0.61223 -5.9376,-0.46875 -3.064,0.22097 -4.9677,0.34219 -6.9062,0.46875 -1.9384,0.12655 -1.6861,0.38864 -2.9062,0.46875 -1.3191,0.0866 -1.7869,-0.22325 -5.5626,0.0937 -3.5457,0.29772 -8.9806,0.99317 -10.2187,1.625 -1.6334,-0.33451 -3.9459,-0.61239 -5.9375,-0.46875 -3.0642,0.22098 -4.9678,0.37344 -6.9062,0.5 -0.6592,0.043 -1.0424,0.12393 -1.3438,0.1875 z"
1622 style="display:inline;opacity:0.82448976;fill:#bcb786;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
1623 inkscape:connector-curvature="0" />
1624 </clipPath>
1625 <filter
1626 inkscape:collect="always"
1627 id="filter7610"
1628 x="-0.021942979"
1629 width="1.0438859"
1630 y="-0.10017137"
1631 height="1.2003427">
1632 <feGaussianBlur
1633 inkscape:collect="always"
1634 stdDeviation="0.57530213"
1635 id="feGaussianBlur7612" />
1636 </filter>
1637 <clipPath
1638 clipPathUnits="userSpaceOnUse"
1639 id="clipPath7616">
1640 <path
1641 id="path7618"
1642 d="m 205.47016,-408.97318 -0.0901,0.002 c -1.44563,0.78566 -6.69921,1.14335 -7.27625,9.03857 -0.54134,7.40553 13.78595,18.09566 15.85433,19.24481 1.66964,0.92764 3.48475,1.65551 5.27345,2.09115 l 1.41867,0.31834 c 1.90027,0.34514 3.70042,0.41015 5.15031,0.26563 3.1486,-0.31384 5.16386,-0.57031 7.16789,-0.8152 2.00402,-0.24488 2.5407,-0.86478 3.64319,-1.02999 1.14342,-0.17143 2.25659,0.27414 6.29577,-0.43753 4.03888,-0.71169 5.51507,-1.03768 6.23419,-1.3503 0.74664,-0.32479 1.81806,-0.74575 2.47589,-1.3621 1.95897,0.12471 3.80476,-0.0261 5.2648,-0.47819 3.02376,-0.93627 4.99157,-1.52544 6.8628,-2.27751 1.50138,-0.60342 2.43202,-1.53636 2.66436,-1.81883 0.23254,-0.28245 0.14951,-0.71989 0.17694,-0.73948 0.0453,-0.0322 0.34622,-0.0701 0.52926,-0.40161 0.98557,-1.78276 2.70955,-5.45215 2.87137,-6.12738 0.16094,-0.67257 0.26182,-1.33778 0.34007,-1.73051 0.0453,-0.22691 -0.0855,-0.88701 -0.0594,-0.94393 0.0365,-0.0797 0.30505,-0.22988 0.37769,-0.47485 0.34913,-1.17686 0.24274,-2.19578 0.1278,-3.6249 -0.11463,-1.42909 -0.64781,-4.6711 -1.24013,-5.56865 -0.38017,-0.57646 -0.74215,-0.84625 -1.09026,-0.98459 -0.0657,-0.0219 -0.12035,-0.0553 -0.1827,-0.0754 -0.0207,-0.005 -0.0418,2.3e-4 -0.0623,-0.004 -0.30559,-0.097 -0.59597,-0.20067 -1.13816,-0.29875 -0.97557,-0.1765 -2.40074,-0.42766 -3.94175,-0.52584 -0.51366,-0.0327 -1.0379,-0.0247 -1.56523,-0.0153 -3.57201,0.0636 -9.05695,0.3611 -10.30707,0.90928 -1.60587,-0.44697 -3.89597,-0.88576 -5.89053,-0.8812 -3.07195,0.007 -4.97947,-0.005 -6.92207,-0.0134 -1.94251,-0.009 -1.70908,0.27025 -2.9318,0.26518 -1.32192,-0.005 -1.76701,-0.34717 -5.55562,-0.29393 -3.55782,0.05 -9.02796,0.36522 -10.30706,0.90927 -1.60614,-0.44747 -3.89367,-0.88575 -5.89043,-0.88118 -3.07215,0.007 -4.98175,0.0265 -6.92426,0.0177 -0.66059,-0.003 -1.0485,0.051 -1.35359,0.0934 z"
1643 style="display:inline;opacity:0.82448976;fill:#bcb786;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
1644 inkscape:connector-curvature="0" />
1645 </clipPath>
1646 <linearGradient
1647 inkscape:collect="always"
1648 xlink:href="#linearGradient7622"
1649 id="linearGradient7708"
1650 gradientUnits="userSpaceOnUse"
1651 gradientTransform="translate(-19.091883,4.2426407)"
1652 x1="774.97668"
1653 y1="-211.87105"
1654 x2="755.11584"
1655 y2="-202.67865" />
1656 <mask
1657 maskUnits="userSpaceOnUse"
1658 id="mask7704">
1659 <path
1660 style="fill:url(#linearGradient7708);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
1661 d="m 718.40812,-224.31217 33.25,56 275.99998,-24 159.5,-48.25 -66.5,-82.75 -402.24998,99 z"
1662 id="path7706"
1663 inkscape:connector-curvature="0" />
1664 </mask>
1665 <radialGradient
1666 inkscape:collect="always"
1667 xlink:href="#linearGradient8430"
1668 id="radialGradient7904"
1669 gradientUnits="userSpaceOnUse"
1670 gradientTransform="matrix(-0.3324832,0.9022288,-0.9582407,-0.3531242,305.29227,19.909497)"
1671 cx="142.95833"
1672 cy="107.09234"
1673 fx="142.95833"
1674 fy="107.09234"
1675 r="66.981766" />
1676 <radialGradient
1677 inkscape:collect="always"
1678 xlink:href="#linearGradient3317"
1679 id="radialGradient7906"
1680 gradientUnits="userSpaceOnUse"
1681 gradientTransform="matrix(1.0036478,-1.0345492e-7,1.7124628e-7,1.6613125,-160.53487,-96.205369)"
1682 cx="317.78754"
1683 cy="129.65378"
1684 fx="317.78754"
1685 fy="129.65378"
1686 r="47.863216" />
1687 <radialGradient
1688 inkscape:collect="always"
1689 xlink:href="#linearGradient8398"
1690 id="radialGradient7908"
1691 gradientUnits="userSpaceOnUse"
1692 gradientTransform="matrix(2.0747661,-0.1577957,0.2382425,3.1325183,-550.77432,-65.728909)"
1693 cx="325.30847"
1694 cy="80.909554"
1695 fx="325.30847"
1696 fy="80.909554"
1697 r="26.937988" />
1698 <clipPath
1699 clipPathUnits="userSpaceOnUse"
1700 id="clipPath8209">
1701 <path
1702 sodipodi:nodetypes="czcc"
1703 id="path8211"
1704 d="m 734.03125,519.49186 c 0,0 16.75513,37.01806 28.70141,53.95395 11.94629,16.93589 52.72716,56.04605 52.72716,56.04605 l 0.59717,-138.58975"
1705 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#1a1a1a;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
1706 inkscape:connector-curvature="0" />
1707 </clipPath>
1708 <filter
1709 inkscape:collect="always"
1710 id="filter8225">
1711 <feGaussianBlur
1712 inkscape:collect="always"
1713 stdDeviation="10.661912"
1714 id="feGaussianBlur8227" />
1715 </filter>
1716 <filter
1717 inkscape:collect="always"
1718 id="filter8333">
1719 <feGaussianBlur
1720 inkscape:collect="always"
1721 stdDeviation="7.18"
1722 id="feGaussianBlur8335" />
1723 </filter>
1724 <clipPath
1725 clipPathUnits="userSpaceOnUse"
1726 id="clipPath8338">
1727 <path
1728 sodipodi:nodetypes="czzzzzzcccccccccczczz"
1729 id="path8340"
1730 d="m 266.27183,924.57185 c -1.40727,18.80122 -1.1449,32.75104 2.08174,49.30328 3.22666,16.55238 16.40609,45.90737 20.33441,63.18377 3.92621,17.2671 2.69413,38.3097 -12.45944,51.1482 -15.31761,12.9775 -42.05127,21.599 -67.8323,15.7338 -25.78106,-5.8653 -69.54908,-49.2234 -88.59019,-70.2283 C 100.6939,1012.6293 56.045182,939.86193 41.867507,909.4368 27.689835,879.01168 29.207902,872.71823 33.747792,863.90708 24.38107,839.38658 21.33408,813.84026 0.03533448,788.33044 30.360814,791.44487 43.915624,815.28676 60.161024,835.47019 54.631128,787.39416 42.106309,771.05368 31.787072,744.74589 c 29.994295,6.08165 50.57936,31.87239 63.979783,72.7125 9.554155,-3.91792 18.237765,-9.37294 30.187415,-9.0612 -11.2975,-41.6958 -17.94947,-69.91585 -36.687256,-101.06994 53.441966,5.67032 83.657026,80.63932 78.971426,87.9608 9.97797,-2.24399 19.00565,-6.53038 30.43653,-5.65167 -11.24897,-38.34703 -21.04782,-76.8679 -3.65971,-118.64819 0,0 48.28678,65.43688 54.38965,85.80578 6.10288,20.3689 1.51882,38.70051 1.51882,38.70051 0,0 16.95957,31.0853 20.29392,51.09414 3.3731,20.24134 -3.53269,59.10331 -4.94582,77.98323 z"
1731 style="display:inline;opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
1732 inkscape:connector-curvature="0" />
1733 </clipPath>
1734 <filter
1735 inkscape:collect="always"
1736 id="filter8354">
1737 <feGaussianBlur
1738 inkscape:collect="always"
1739 stdDeviation="6.82"
1740 id="feGaussianBlur8356" />
1741 </filter>
1742 <clipPath
1743 clipPathUnits="userSpaceOnUse"
1744 id="clipPath8359">
1745 <path
1746 sodipodi:nodetypes="czzzzzzcccccccccczczz"
1747 id="path8361"
1748 d="m 266.27183,924.57185 c -1.40727,18.80122 -1.1449,32.75104 2.08174,49.30328 3.22666,16.55238 16.40609,45.90737 20.33441,63.18377 3.92621,17.2671 2.69413,38.3097 -12.45944,51.1482 -15.31761,12.9775 -42.05127,21.599 -67.8323,15.7338 -25.78106,-5.8653 -69.54908,-49.2234 -88.59019,-70.2283 C 100.6939,1012.6293 56.045182,939.86193 41.867507,909.4368 27.689835,879.01168 29.207902,872.71823 33.747792,863.90708 24.38107,839.38658 21.33408,813.84026 0.03533448,788.33044 30.360814,791.44487 43.915624,815.28676 60.161024,835.47019 54.631128,787.39416 42.106309,771.05368 31.787072,744.74589 c 29.994295,6.08165 50.57936,31.87239 63.979783,72.7125 9.554155,-3.91792 18.237765,-9.37294 30.187415,-9.0612 -11.2975,-41.6958 -17.94947,-69.91585 -36.687256,-101.06994 53.441966,5.67032 83.657026,80.63932 78.971426,87.9608 9.97797,-2.24399 19.00565,-6.53038 30.43653,-5.65167 -11.24897,-38.34703 -21.04782,-76.8679 -3.65971,-118.64819 0,0 48.28678,65.43688 54.38965,85.80578 6.10288,20.3689 1.51882,38.70051 1.51882,38.70051 0,0 16.95957,31.0853 20.29392,51.09414 3.3731,20.24134 -3.53269,59.10331 -4.94582,77.98323 z"
1749 style="display:inline;opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
1750 inkscape:connector-curvature="0" />
1751 </clipPath>
1752 <filter
1753 inkscape:collect="always"
1754 id="filter8379"
1755 x="-0.14413793"
1756 width="1.288276"
1757 y="-0.10278689"
1758 height="1.2055738">
1759 <feGaussianBlur
1760 inkscape:collect="always"
1761 stdDeviation="7.389266"
1762 id="feGaussianBlur8381" />
1763 </filter>
1764 <clipPath
1765 clipPathUnits="userSpaceOnUse"
1766 id="clipPath8392">
1767 <path
1768 sodipodi:nodetypes="czzzzzzcccccccccczczz"
1769 id="path8394"
1770 d="m 760.16396,935.83377 c 6.7941,18.90279 10.49369,33.29969 11.8903,51.21189 1.39662,17.91234 -3.78268,51.80084 -2.90046,70.65614 0.88175,18.8452 8.13369,40.099 27.34463,48.9689 19.41887,8.9658 49.31924,10.2113 74.11984,-3.1456 24.8006,-13.357 57.40102,-70.3255 70.97426,-97.3087 13.62385,-27.08394 38.76107,-114.49737 44.6608,-149.76859 5.89973,-35.27121 2.55054,-41.30077 -4.61748,-49.05549 2.6403,-27.84015 -1.49972,-54.93543 13.10969,-87.18618 -30.24901,11.8257 -37.38229,40.1607 -48.31889,65.50508 -8.00091,-50.93293 0.20916,-71.27319 3.31889,-101.21936 -29.06476,14.77791 -42.86151,47.11402 -45,92.85714 -10.92395,-1.3042 -21.39144,-4.43423 -33.57143,-0.71429 -0.26404,-46.02334 -1.46356,-76.88941 8.91063,-114.20649 -53.25547,21.02686 -62.94728,106.5941 -56.05349,112.77792 -10.88282,0.535 -21.37108,-1.2973 -32.85714,2.85715 0.63892,-42.57135 -0.26046,-84.90861 -30,-122.85715 0,0 -30.95806,80.92234 -31.42857,103.57143 -0.47051,22.64909 9.45159,40.16588 9.45159,40.16588 0,0 -8.56807,36.74051 -6.29859,58.23223 2.29585,21.74146 20.4429,59.67617 27.26542,78.65809 z"
1771 style="display:inline;opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
1772 inkscape:connector-curvature="0" />
1773 </clipPath>
1774 <filter
1775 inkscape:collect="always"
1776 id="filter8404"
1777 x="-0.090268657"
1778 width="1.1805373"
1779 y="-0.10250848"
1780 height="1.205017">
1781 <feGaussianBlur
1782 inkscape:collect="always"
1783 stdDeviation="5.3457272"
1784 id="feGaussianBlur8406" />
1785 </filter>
1786 <clipPath
1787 clipPathUnits="userSpaceOnUse"
1788 id="clipPath8417">
1789 <path
1790 sodipodi:nodetypes="czzzzzzcccccccccczczz"
1791 id="path8419"
1792 d="m 760.16396,935.83377 c 6.7941,18.90279 10.49369,33.29969 11.8903,51.21189 1.39662,17.91234 -3.78268,51.80084 -2.90046,70.65614 0.88175,18.8452 8.13369,40.099 27.34463,48.9689 19.41887,8.9658 49.31924,10.2113 74.11984,-3.1456 24.8006,-13.357 57.40102,-70.3255 70.97426,-97.3087 13.62385,-27.08394 38.76107,-114.49737 44.6608,-149.76859 5.89973,-35.27121 2.55054,-41.30077 -4.61748,-49.05549 2.6403,-27.84015 -1.49972,-54.93543 13.10969,-87.18618 -30.24901,11.8257 -37.38229,40.1607 -48.31889,65.50508 -8.00091,-50.93293 0.20916,-71.27319 3.31889,-101.21936 -29.06476,14.77791 -42.86151,47.11402 -45,92.85714 -10.92395,-1.3042 -21.39144,-4.43423 -33.57143,-0.71429 -0.26404,-46.02334 -1.46356,-76.88941 8.91063,-114.20649 -53.25547,21.02686 -62.94728,106.5941 -56.05349,112.77792 -10.88282,0.535 -21.37108,-1.2973 -32.85714,2.85715 0.63892,-42.57135 -0.26046,-84.90861 -30,-122.85715 0,0 -30.95806,80.92234 -31.42857,103.57143 -0.47051,22.64909 9.45159,40.16588 9.45159,40.16588 0,0 -8.56807,36.74051 -6.29859,58.23223 2.29585,21.74146 20.4429,59.67617 27.26542,78.65809 z"
1793 style="display:inline;opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
1794 inkscape:connector-curvature="0" />
1795 </clipPath>
1796 <filter
1797 inkscape:collect="always"
1798 x="-0.084654994"
1799 width="1.16931"
1800 y="-0.36592469"
1801 height="1.7318494"
1802 id="filter11361-3">
1803 <feGaussianBlur
1804 inkscape:collect="always"
1805 stdDeviation="4.5740586"
1806 id="feGaussianBlur11363-6" />
1807 </filter>
1808 <radialGradient
1809 inkscape:collect="always"
1810 xlink:href="#linearGradient8430"
1811 id="radialGradient7904-7"
1812 gradientUnits="userSpaceOnUse"
1813 gradientTransform="matrix(-0.3324832,0.9022288,-0.9582407,-0.3531242,305.29227,19.909497)"
1814 cx="142.95833"
1815 cy="107.09234"
1816 fx="142.95833"
1817 fy="107.09234"
1818 r="66.981766" />
1819 <radialGradient
1820 inkscape:collect="always"
1821 xlink:href="#linearGradient3317"
1822 id="radialGradient7906-6"
1823 gradientUnits="userSpaceOnUse"
1824 gradientTransform="matrix(1.0036478,-1.0345492e-7,1.7124628e-7,1.6613125,-160.53487,-96.205369)"
1825 cx="317.78754"
1826 cy="129.65378"
1827 fx="317.78754"
1828 fy="129.65378"
1829 r="47.863216" />
1830 <radialGradient
1831 inkscape:collect="always"
1832 xlink:href="#linearGradient8398"
1833 id="radialGradient7908-0"
1834 gradientUnits="userSpaceOnUse"
1835 gradientTransform="matrix(2.0747661,-0.1577957,0.2382425,3.1325183,-550.77432,-65.728909)"
1836 cx="325.30847"
1837 cy="80.909554"
1838 fx="325.30847"
1839 fy="80.909554"
1840 r="26.937988" />
1841 <clipPath
1842 clipPathUnits="userSpaceOnUse"
1843 id="clipPath8658-06">
1844 <path
1845 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#0b0b0b;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
1846 d="m 569.03125,1018.7776 c -4.28571,0.7143 -27.62815,3.6181 -57.85714,10 -30.22899,6.3819 -99.77493,25.9619 -142.85715,35.7143 -43.08222,9.7524 -117.26443,34.816 -156.91262,27.2654 -39.64818,-7.5506 -89.51595,-64.4083 -89.51595,-64.4083 l 4.28572,-94.28571 c 0,0 85.88551,-16.20094 112.14285,-33.57143 26.25735,-17.37049 45.58238,-49.66598 59.28572,-71.42857 13.70334,-21.76259 32.85714,-71.42858 32.85714,-71.42858 l 238.57143,262.14289 z"
1847 id="path8660-2"
1848 sodipodi:nodetypes="czzzcczzcc"
1849 inkscape:connector-curvature="0" />
1850 </clipPath>
1851 <filter
1852 inkscape:collect="always"
1853 id="filter8888-6"
1854 x="-0.2112188"
1855 width="1.4224375"
1856 y="-0.16808605"
1857 height="1.3361721">
1858 <feGaussianBlur
1859 inkscape:collect="always"
1860 stdDeviation="8.3693583"
1861 id="feGaussianBlur8890-1" />
1862 </filter>
1863 <clipPath
1864 clipPathUnits="userSpaceOnUse"
1865 id="clipPath2833-2">
1866 <path
1867 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#292929;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
1868 d="m 569.03125,1018.7776 c -4.28571,0.7143 -27.62815,3.6181 -57.85714,10 -30.22899,6.3819 -57.31395,4.9661 -135.78608,17.3296 -79.85178,12.5808 -94.06436,42.5423 -108.12225,47.0643 -14.70014,4.7286 -145.37739,-65.8225 -145.37739,-65.8225 l 4.28572,-94.28571 c 0,0 85.88551,-16.20094 112.14285,-33.57143 26.25735,-17.37049 45.58238,-49.66598 59.28572,-71.42857 13.70334,-21.76259 32.85714,-71.42858 32.85714,-71.42858 l 238.57143,262.14289 z"
1869 id="path2835-3"
1870 sodipodi:nodetypes="czzzcczzcc"
1871 inkscape:connector-curvature="0" />
1872 </clipPath>
1873 <filter
1874 inkscape:collect="always"
1875 id="filter8892-7"
1876 x="-0.18692794"
1877 width="1.3738559"
1878 y="-0.23646873"
1879 height="1.4729375">
1880 <feGaussianBlur
1881 inkscape:collect="always"
1882 stdDeviation="31.21228"
1883 id="feGaussianBlur8894-5" />
1884 </filter>
1885 <clipPath
1886 clipPathUnits="userSpaceOnUse"
1887 id="clipPath3665-9">
1888 <path
1889 sodipodi:nodetypes="czzcczcc"
1890 id="path3667-2"
1891 d="m 366.88839,504.13471 c 0,0 -29.55406,40.57305 -47.85714,74.28571 -18.30309,33.71267 -58.62109,126.35694 -70.35714,171.07143 -11.7594,44.80344 -62.5,123.57144 -62.5,123.57144 l 76.07143,18.21428 c 0,0 11.80712,-12.82335 31.07142,-46.07143 19.2643,-33.24808 60.35715,-138.57143 60.35715,-138.57143 l 13.21428,-202.5 z"
1892 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#0f0f0f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
1893 inkscape:connector-curvature="0" />
1894 </clipPath>
1895 <filter
1896 inkscape:collect="always"
1897 id="filter8856-2"
1898 x="-0.3253231"
1899 width="1.6506462"
1900 y="-0.19013336"
1901 height="1.3802667">
1902 <feGaussianBlur
1903 inkscape:collect="always"
1904 stdDeviation="28.712591"
1905 id="feGaussianBlur8858-8" />
1906 </filter>
1907 <clipPath
1908 clipPathUnits="userSpaceOnUse"
1909 id="clipPath8642-9">
1910 <path
1911 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#0f0f0f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
1912 d="m 366.88839,504.13471 c 0,0 -29.55406,40.57305 -47.85714,74.28571 -18.30309,33.71267 -58.62109,126.35694 -70.35714,171.07143 -11.7594,44.80344 -62.5,123.57144 -62.5,123.57144 l 76.07143,18.21428 c 0,0 11.80712,-12.82335 31.07142,-46.07143 19.2643,-33.24808 60.35715,-138.57143 60.35715,-138.57143 l 13.21428,-202.5 z"
1913 id="path8644-7"
1914 sodipodi:nodetypes="czzcczcc"
1915 inkscape:connector-curvature="0" />
1916 </clipPath>
1917 <filter
1918 inkscape:collect="always"
1919 id="filter8860-3"
1920 x="-0.38093024"
1921 width="1.7618605"
1922 y="-0.17518716"
1923 height="1.3503743">
1924 <feGaussianBlur
1925 inkscape:collect="always"
1926 stdDeviation="19.304015"
1927 id="feGaussianBlur8862-6" />
1928 </filter>
1929 <clipPath
1930 clipPathUnits="userSpaceOnUse"
1931 id="clipPath7616-1">
1932 <path
1933 id="path7618-2"
1934 d="m 205.47016,-408.97318 -0.0901,0.002 c -1.44563,0.78566 -6.69921,1.14335 -7.27625,9.03857 -0.54134,7.40553 13.78595,18.09566 15.85433,19.24481 1.66964,0.92764 3.48475,1.65551 5.27345,2.09115 l 1.41867,0.31834 c 1.90027,0.34514 3.70042,0.41015 5.15031,0.26563 3.1486,-0.31384 5.16386,-0.57031 7.16789,-0.8152 2.00402,-0.24488 2.5407,-0.86478 3.64319,-1.02999 1.14342,-0.17143 2.25659,0.27414 6.29577,-0.43753 4.03888,-0.71169 5.51507,-1.03768 6.23419,-1.3503 0.74664,-0.32479 1.81806,-0.74575 2.47589,-1.3621 1.95897,0.12471 3.80476,-0.0261 5.2648,-0.47819 3.02376,-0.93627 4.99157,-1.52544 6.8628,-2.27751 1.50138,-0.60342 2.43202,-1.53636 2.66436,-1.81883 0.23254,-0.28245 0.14951,-0.71989 0.17694,-0.73948 0.0453,-0.0322 0.34622,-0.0701 0.52926,-0.40161 0.98557,-1.78276 2.70955,-5.45215 2.87137,-6.12738 0.16094,-0.67257 0.26182,-1.33778 0.34007,-1.73051 0.0453,-0.22691 -0.0855,-0.88701 -0.0594,-0.94393 0.0365,-0.0797 0.30505,-0.22988 0.37769,-0.47485 0.34913,-1.17686 0.24274,-2.19578 0.1278,-3.6249 -0.11463,-1.42909 -0.64781,-4.6711 -1.24013,-5.56865 -0.38017,-0.57646 -0.74215,-0.84625 -1.09026,-0.98459 -0.0657,-0.0219 -0.12035,-0.0553 -0.1827,-0.0754 -0.0207,-0.005 -0.0418,2.3e-4 -0.0623,-0.004 -0.30559,-0.097 -0.59597,-0.20067 -1.13816,-0.29875 -0.97557,-0.1765 -2.40074,-0.42766 -3.94175,-0.52584 -0.51366,-0.0327 -1.0379,-0.0247 -1.56523,-0.0153 -3.57201,0.0636 -9.05695,0.3611 -10.30707,0.90928 -1.60587,-0.44697 -3.89597,-0.88576 -5.89053,-0.8812 -3.07195,0.007 -4.97947,-0.005 -6.92207,-0.0134 -1.94251,-0.009 -1.70908,0.27025 -2.9318,0.26518 -1.32192,-0.005 -1.76701,-0.34717 -5.55562,-0.29393 -3.55782,0.05 -9.02796,0.36522 -10.30706,0.90927 -1.60614,-0.44747 -3.89367,-0.88575 -5.89043,-0.88118 -3.07215,0.007 -4.98175,0.0265 -6.92426,0.0177 -0.66059,-0.003 -1.0485,0.051 -1.35359,0.0934 z"
1935 style="display:inline;opacity:0.82448976;fill:#bcb786;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
1936 inkscape:connector-curvature="0" />
1937 </clipPath>
1938 <filter
1939 inkscape:collect="always"
1940 id="filter7610-9"
1941 x="-0.021942979"
1942 width="1.0438859"
1943 y="-0.10017137"
1944 height="1.2003427">
1945 <feGaussianBlur
1946 inkscape:collect="always"
1947 stdDeviation="0.57530213"
1948 id="feGaussianBlur7612-3" />
1949 </filter>
1950 <clipPath
1951 clipPathUnits="userSpaceOnUse"
1952 id="clipPath7606-1">
1953 <path
1954 id="path7608-9"
1955 d="m 1049.205,-282.26672 -0.09,0.008 c -1.3874,0.88445 -6.6033,1.6072 -6.629,9.52344 -0.024,7.42525 15.0129,17.09146 17.1563,18.09375 1.7302,0.80909 3.5916,1.40876 5.4063,1.71875 l 1.4374,0.21875 c 1.9197,0.21194 3.72,0.15141 5.1563,-0.0937 3.1191,-0.5324 5.1116,-0.92861 7.0937,-1.3125 1.9821,-0.38387 2.4743,-1.03965 3.5626,-1.28125 1.1287,-0.25066 2.2702,0.11629 6.25,-0.875 3.9795,-0.99128 5.4294,-1.4193 6.125,-1.78125 0.7222,-0.37601 1.7617,-0.87058 2.375,-1.53125 1.9629,-0.012 3.7937,-0.29105 5.2187,-0.84375 2.9512,-1.14461 4.8732,-1.86942 6.6875,-2.75 1.4557,-0.70653 2.3191,-1.70203 2.5312,-2 0.2123,-0.29796 0.099,-0.72855 0.125,-0.75 0.043,-0.0352 0.3405,-0.094 0.5,-0.4375 0.859,-1.84708 2.3232,-5.62764 2.4376,-6.3125 0.1137,-0.68215 0.168,-1.35277 0.2187,-1.75 0.029,-0.22951 -0.1471,-0.8789 -0.125,-0.9375 0.031,-0.082 0.2883,-0.25057 0.3437,-0.5 0.2663,-1.19832 0.089,-2.20736 -0.125,-3.625 -0.2139,-1.41764 -0.9716,-4.61463 -1.625,-5.46875 -0.4194,-0.54857 -0.7993,-0.7925 -1.1562,-0.90625 -0.067,-0.0173 -0.1239,-0.0467 -0.1875,-0.0625 -0.021,-0.004 -0.042,0.003 -0.062,0 -0.3116,-0.0755 -0.6085,-0.15867 -1.1562,-0.21875 -0.9855,-0.10812 -2.4247,-0.2594 -3.9688,-0.25 -0.5147,0.003 -1.0371,0.0476 -1.5625,0.0937 -3.5589,0.31228 -9.0098,0.99108 -10.2187,1.625 -1.6331,-0.33402 -3.9482,-0.61223 -5.9376,-0.46875 -3.064,0.22097 -4.9677,0.34219 -6.9062,0.46875 -1.9384,0.12655 -1.6861,0.38864 -2.9062,0.46875 -1.3191,0.0866 -1.7869,-0.22325 -5.5626,0.0937 -3.5457,0.29772 -8.9806,0.99317 -10.2187,1.625 -1.6334,-0.33451 -3.9459,-0.61239 -5.9375,-0.46875 -3.0642,0.22098 -4.9678,0.37344 -6.9062,0.5 -0.6592,0.043 -1.0424,0.12393 -1.3438,0.1875 z"
1956 style="display:inline;opacity:0.82448976;fill:#bcb786;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
1957 inkscape:connector-curvature="0" />
1958 </clipPath>
1959 <filter
1960 inkscape:collect="always"
1961 id="filter7578-4"
1962 x="-0.08160872"
1963 width="1.1632174"
1964 y="-0.22659944"
1965 height="1.4531989">
1966 <feGaussianBlur
1967 inkscape:collect="always"
1968 stdDeviation="2.437399"
1969 id="feGaussianBlur7580-7" />
1970 </filter>
1971 <filter
1972 inkscape:collect="always"
1973 id="filter7594-8"
1974 x="-0.040804356"
1975 width="1.0816087"
1976 y="-0.11329972"
1977 height="1.2265995">
1978 <feGaussianBlur
1979 inkscape:collect="always"
1980 stdDeviation="1.2186995"
1981 id="feGaussianBlur7596-4" />
1982 </filter>
1983 <clipPath
1984 clipPathUnits="userSpaceOnUse"
1985 id="clipPath8616-5">
1986 <path
1987 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#262f2f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
1988 d="m 352.24553,211.99185 c -3.80443,-25.26423 -16.80972,-50.63802 -17.1568,-75.52523 -0.18626,-13.35552 3.27285,-26.57091 13.75553,-39.554046 36.34702,-65.295835 116.94091,-84.694685 185.93466,-91.465427 86.92239,-11.016801 184.91267,17.940072 233.37134,95.401283 54.12402,75.7333 56.67476,172.53912 80.61204,259.52795 29.43779,127.1276 54.77914,256.21414 60.39224,386.85035 -3.06348,78.18185 -8.42634,165.18415 -60.50321,228.13413 -48.02654,50.35744 -122.78647,50.05304 -187.06988,59.00234 -90.55539,4.655 -184.35153,-16.1458 -261.7839,-64.19824 -64.77564,-37.94001 -95.73019,-113.47863 -97.2794,-186.01958 -8.38917,-79.87516 26.39152,-153.80851 51.6204,-227.15961 7.47061,-82.76107 9.41286,-166.24775 9.65334,-249.38484 -0.83682,-32.19544 -7.08953,-63.81733 -11.54636,-95.60908 z"
1989 id="path8618-0"
1990 sodipodi:nodetypes="cscccccccccccc"
1991 inkscape:connector-curvature="0" />
1992 </clipPath>
1993 <filter
1994 inkscape:collect="always"
1995 id="filter8940-3"
1996 x="-0.25152978"
1997 width="1.5030596"
1998 y="-0.053035267"
1999 height="1.1060705">
2000 <feGaussianBlur
2001 inkscape:collect="always"
2002 stdDeviation="13.024603"
2003 id="feGaussianBlur8942-6" />
2004 </filter>
2005 <clipPath
2006 clipPathUnits="userSpaceOnUse"
2007 id="clipPath8209-6">
2008 <path
2009 sodipodi:nodetypes="czcc"
2010 id="path8211-3"
2011 d="m 734.03125,519.49186 c 0,0 16.75513,37.01806 28.70141,53.95395 11.94629,16.93589 52.72716,56.04605 52.72716,56.04605 l 0.59717,-138.58975"
2012 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#1a1a1a;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
2013 inkscape:connector-curvature="0" />
2014 </clipPath>
2015 <filter
2016 inkscape:collect="always"
2017 id="filter8822-2"
2018 x="-0.2742857"
2019 width="1.5485713"
2020 y="-0.21333334"
2021 height="1.4266667">
2022 <feGaussianBlur
2023 inkscape:collect="always"
2024 stdDeviation="11.313708"
2025 id="feGaussianBlur8824-0" />
2026 </filter>
2027 <clipPath
2028 clipPathUnits="userSpaceOnUse"
2029 id="clipPath3998-6">
2030 <path
2031 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#262f2f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
2032 d="m 178.21428,274.14789 c -3.80443,-25.26423 -16.80972,-50.63802 -17.1568,-75.52523 -0.18626,-13.35552 3.27285,-26.57091 13.75553,-39.55405 36.34702,-65.295835 116.94091,-84.694685 185.93466,-91.465427 86.92239,-11.016801 184.91267,17.940072 233.37134,95.401287 54.12402,75.7333 56.67476,172.53912 80.61204,259.52795 29.43779,127.1276 54.77914,256.21414 60.39224,386.85035 -3.06348,78.18185 -8.42634,165.18415 -60.50321,228.13413 -48.02654,50.3574 -122.78647,50.053 -187.06988,59.0023 -90.55539,4.655 -184.35153,-16.1458 -261.7839,-64.1982 -64.77564,-37.94001 -95.73019,-113.47863 -97.2794,-186.01958 -8.38917,-79.87516 26.39152,-153.80851 51.6204,-227.15961 7.47061,-82.76107 9.41286,-166.24775 9.65334,-249.38484 -0.83682,-32.19544 -7.08953,-63.81733 -11.54636,-95.60908 z"
2033 id="path4000-1"
2034 sodipodi:nodetypes="cscccccccccccc"
2035 inkscape:connector-curvature="0" />
2036 </clipPath>
2037 <filter
2038 inkscape:collect="always"
2039 id="filter3677-5">
2040 <feGaussianBlur
2041 inkscape:collect="always"
2042 stdDeviation="2.0397518"
2043 id="feGaussianBlur3679-5" />
2044 </filter>
2045 <filter
2046 id="filter3785-4"
2047 inkscape:label="White Fur">
2048 <feTurbulence
2049 id="feTurbulence3787-7"
2050 type="fractalNoise"
2051 baseFrequency="0.24044943820224721"
2052 numOctaves="10"
2053 seed="655"
2054 result="result0" />
2055 <feDisplacementMap
2056 id="feDisplacementMap3789-65"
2057 in="SourceGraphic"
2058 in2="result0"
2059 scale="62"
2060 xChannelSelector="B"
2061 yChannelSelector="G" />
2062 </filter>
2063 <clipPath
2064 clipPathUnits="userSpaceOnUse"
2065 id="clipPath8604-69">
2066 <path
2067 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#262f2f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
2068 d="m 352.24553,211.99185 c -3.80443,-25.26423 -16.80972,-50.63802 -17.1568,-75.52523 -0.18626,-13.35552 3.27285,-26.57091 13.75553,-39.554046 36.34702,-65.295835 116.94091,-84.694685 185.93466,-91.465427 86.92239,-11.016801 184.91267,17.940072 233.37134,95.401283 54.12402,75.7333 56.67476,172.53912 80.61204,259.52795 29.43779,127.1276 54.77914,256.21414 60.39224,386.85035 -3.06348,78.18185 -8.42634,165.18415 -60.50321,228.13413 -48.02654,50.35744 -122.78647,50.05304 -187.06988,59.00234 -90.55539,4.655 -184.35153,-16.1458 -261.7839,-64.19824 -64.77564,-37.94001 -95.73019,-113.47863 -97.2794,-186.01958 -8.38917,-79.87516 26.39152,-153.80851 51.6204,-227.15961 7.47061,-82.76107 9.41286,-166.24775 9.65334,-249.38484 -0.83682,-32.19544 -7.08953,-63.81733 -11.54636,-95.60908 z"
2069 id="path8606-3"
2070 sodipodi:nodetypes="cscccccccccccc"
2071 inkscape:connector-curvature="0" />
2072 </clipPath>
2073 <filter
2074 inkscape:collect="always"
2075 id="filter8802-7"
2076 x="-0.35311759"
2077 width="1.7062352"
2078 y="-0.1817714"
2079 height="1.3635428">
2080 <feGaussianBlur
2081 inkscape:collect="always"
2082 stdDeviation="48.038491"
2083 id="feGaussianBlur8804-4" />
2084 </filter>
2085 <radialGradient
2086 inkscape:collect="always"
2087 xlink:href="#linearGradient3317"
2088 id="radialGradient3315-5"
2089 cx="543.6698"
2090 cy="147.3131"
2091 fx="543.6698"
2092 fy="147.3131"
2093 r="47.863216"
2094 gradientTransform="matrix(2.1382256,0,0,2.3382884,-77.03847,-101.68704)"
2095 gradientUnits="userSpaceOnUse" />
2096 <radialGradient
2097 inkscape:collect="always"
2098 xlink:href="#linearGradient3537"
2099 id="radialGradient3543-4"
2100 cx="385"
2101 cy="237.00504"
2102 fx="385"
2103 fy="237.00504"
2104 r="86.928574"
2105 gradientTransform="matrix(1,0,0,0.8562038,0,34.080427)"
2106 gradientUnits="userSpaceOnUse" />
2107 <clipPath
2108 clipPathUnits="userSpaceOnUse"
2109 id="clipPath4100-3">
2110 <path
2111 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.9000755px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
2112 d="m 265.93541,126.68393 -18.76721,168.86308 174.10543,-73.12068 61.9544,88.65883 57.8844,-31.9903 -37.53442,-180.059677 -237.6426,27.648747 z"
2113 id="path4102-0"
2114 sodipodi:nodetypes="ccccccc"
2115 inkscape:connector-curvature="0" />
2116 </clipPath>
2117 <filter
2118 inkscape:collect="always"
2119 id="filter4120-7"
2120 x="-0.2770822"
2121 width="1.5541644"
2122 y="-0.32482043"
2123 height="1.6496409">
2124 <feGaussianBlur
2125 inkscape:collect="always"
2126 stdDeviation="19.956289"
2127 id="feGaussianBlur4122-8" />
2128 </filter>
2129 <radialGradient
2130 inkscape:collect="always"
2131 xlink:href="#linearGradient3961"
2132 id="radialGradient3915-6"
2133 cx="418.30365"
2134 cy="342.47794"
2135 fx="418.30365"
2136 fy="342.47794"
2137 r="131.4509"
2138 gradientTransform="matrix(1.3957347,0.6211056,-0.4244067,0.9537174,-15.061913,-227.96711)"
2139 gradientUnits="userSpaceOnUse" />
2140 <mask
2141 maskUnits="userSpaceOnUse"
2142 id="mask3684-3">
2143 <ellipse
2144 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#linearGradient3688);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.43724918px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
2145 id="path3686-1"
2146 transform="translate(-174.03125,62.156036)"
2147 cx="579.474"
2148 cy="260.57516"
2149 rx="192.6866"
2150 ry="164.04877" />
2151 </mask>
2152 <radialGradient
2153 inkscape:collect="always"
2154 xlink:href="#linearGradient3951"
2155 id="radialGradient3933-8"
2156 cx="397.16388"
2157 cy="336.95245"
2158 fx="397.16388"
2159 fy="336.95245"
2160 r="36.75"
2161 gradientUnits="userSpaceOnUse"
2162 gradientTransform="matrix(1.9449972,2.4894837e-7,-2.4894833e-7,1.9449969,-375.31868,-318.41912)" />
2163 <filter
2164 inkscape:collect="always"
2165 id="filter8806-6"
2166 x="-0.61142862"
2167 width="2.2228572"
2168 y="-0.14930232"
2169 height="1.2986046">
2170 <feGaussianBlur
2171 inkscape:collect="always"
2172 stdDeviation="37.830213"
2173 id="feGaussianBlur8808-4" />
2174 </filter>
2175 <filter
2176 inkscape:collect="always"
2177 id="filter8826-9"
2178 x="-0.25894088"
2179 width="1.5178818"
2180 y="-0.2236412"
2181 height="1.4472824">
2182 <feGaussianBlur
2183 inkscape:collect="always"
2184 stdDeviation="19.631544"
2185 id="feGaussianBlur8828-5" />
2186 </filter>
2187 <radialGradient
2188 inkscape:collect="always"
2189 xlink:href="#linearGradient3985"
2190 id="radialGradient3991-0"
2191 cx="402.48898"
2192 cy="317.23578"
2193 fx="402.48898"
2194 fy="317.23578"
2195 r="23.714285"
2196 gradientUnits="userSpaceOnUse"
2197 gradientTransform="matrix(4.3776616,0,0,4.3776616,-1358.3025,-1070.7357)" />
2198 <filter
2199 inkscape:collect="always"
2200 id="filter3981-7"
2201 x="-0.30000001"
2202 width="1.6"
2203 y="-0.30000001"
2204 height="1.6">
2205 <feGaussianBlur
2206 inkscape:collect="always"
2207 stdDeviation="2"
2208 id="feGaussianBlur3983-1" />
2209 </filter>
2210 <radialGradient
2211 inkscape:collect="always"
2212 xlink:href="#linearGradient4106"
2213 id="radialGradient4112-7"
2214 cx="250.22678"
2215 cy="475.09763"
2216 fx="250.22678"
2217 fy="475.09763"
2218 r="95.98877"
2219 gradientTransform="matrix(1.2259004,-0.7077739,0.1413989,0.2449102,322.22326,608.91815)"
2220 gradientUnits="userSpaceOnUse" />
2221 <radialGradient
2222 inkscape:collect="always"
2223 xlink:href="#linearGradient4013"
2224 id="radialGradient3585-2"
2225 gradientUnits="userSpaceOnUse"
2226 gradientTransform="matrix(1.1323239,0.7659488,-1.4550286,2.1510098,588.75376,-711.79716)"
2227 cx="228.81355"
2228 cy="440.26971"
2229 fx="228.81355"
2230 fy="440.26971"
2231 r="119.17509" />
2232 <clipPath
2233 clipPathUnits="userSpaceOnUse"
2234 id="clipPath3999-0">
2235 <path
2236 style="display:inline;opacity:1;fill:#f5ff04;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
2237 d="m 179.64286,267.36218 c -22.41044,39.70292 -60.6161,115.78029 -69.28571,149.64286 -8.64721,33.7751 -8.77199,66.41654 -0.35715,86.42858 8.3602,19.88213 26.16398,35.6328 40.71428,41.42856 -0.59638,-14.37587 14.37295,-43.28583 72.85715,-72.5 58.62627,-29.28514 78.38163,-27.13086 103.57142,-47.14286 25.63006,-20.36176 12.61031,-67.04463 3.21429,-93.92857 -9.43424,-26.99328 -34.96741,-59.12448 -66.42857,-69.64285 -31.03327,-10.37532 -65.01776,-4.84837 -84.28571,5.71428 z"
2238 id="path4001-61"
2239 sodipodi:nodetypes="czzczzzzc"
2240 inkscape:connector-curvature="0" />
2241 </clipPath>
2242 <radialGradient
2243 inkscape:collect="always"
2244 xlink:href="#linearGradient4041"
2245 id="radialGradient4060-5"
2246 gradientUnits="userSpaceOnUse"
2247 gradientTransform="matrix(0.05911206,2.6869855,-0.7234268,0.01591495,408.72779,-424.56452)"
2248 cx="275.4422"
2249 cy="335.34866"
2250 fx="275.4422"
2251 fy="335.34866"
2252 r="36.75" />
2253 <radialGradient
2254 inkscape:collect="always"
2255 xlink:href="#linearGradient7622"
2256 id="radialGradient4062-9"
2257 gradientUnits="userSpaceOnUse"
2258 gradientTransform="matrix(0.05911206,2.6869855,-0.7234268,0.01591495,408.72779,-424.56452)"
2259 cx="275.4422"
2260 cy="335.34866"
2261 fx="275.4422"
2262 fy="335.34866"
2263 r="36.75" />
2264 <filter
2265 inkscape:collect="always"
2266 id="filter4079-1">
2267 <feGaussianBlur
2268 inkscape:collect="always"
2269 stdDeviation="6.5887624"
2270 id="feGaussianBlur4081-1" />
2271 </filter>
2272 <radialGradient
2273 inkscape:collect="always"
2274 xlink:href="#linearGradient4013"
2275 id="radialGradient4056-5"
2276 gradientUnits="userSpaceOnUse"
2277 gradientTransform="matrix(1.1323239,0.7659488,-1.4550286,2.1510098,588.75376,-711.79716)"
2278 cx="228.81355"
2279 cy="440.26971"
2280 fx="228.81355"
2281 fy="440.26971"
2282 r="119.17509" />
2283 <filter
2284 inkscape:collect="always"
2285 id="filter4083-9">
2286 <feGaussianBlur
2287 inkscape:collect="always"
2288 stdDeviation="1.5052066"
2289 id="feGaussianBlur4085-7" />
2290 </filter>
2291 <radialGradient
2292 inkscape:collect="always"
2293 xlink:href="#linearGradient4113"
2294 id="radialGradient4119-7"
2295 cx="296.33783"
2296 cy="427.17749"
2297 fx="296.33783"
2298 fy="427.17749"
2299 r="19.704132"
2300 gradientUnits="userSpaceOnUse"
2301 gradientTransform="matrix(2.9797125,0,0,2.9797125,-599.28727,-827.0855)" />
2302 <radialGradient
2303 inkscape:collect="always"
2304 xlink:href="#linearGradient4862"
2305 id="radialGradient4868-3"
2306 cx="429.56738"
2307 cy="377.42877"
2308 fx="429.56738"
2309 fy="377.42877"
2310 r="72.079735"
2311 gradientTransform="matrix(1,0,0,0.618034,0,144.16496)"
2312 gradientUnits="userSpaceOnUse" />
2313 <filter
2314 inkscape:collect="always"
2315 id="filter4002-6"
2316 x="-0.24334238"
2317 width="1.4866848"
2318 y="-0.39104807"
2319 height="1.7820961">
2320 <feGaussianBlur
2321 inkscape:collect="always"
2322 stdDeviation="14.589518"
2323 id="feGaussianBlur4004-3" />
2324 </filter>
2325 <radialGradient
2326 inkscape:collect="always"
2327 xlink:href="#linearGradient4870"
2328 id="radialGradient4876-9"
2329 cx="437.6991"
2330 cy="391.21735"
2331 fx="437.6991"
2332 fy="391.21735"
2333 r="36.611931"
2334 gradientTransform="matrix(1,0,0,0.618034,0,149.43174)"
2335 gradientUnits="userSpaceOnUse" />
2336 <filter
2337 inkscape:collect="always"
2338 id="filter4010-1"
2339 x="-0.14577261"
2340 width="1.2915452"
2341 y="-0.23523259"
2342 height="1.4704652">
2343 <feGaussianBlur
2344 inkscape:collect="always"
2345 stdDeviation="4.4442907"
2346 id="feGaussianBlur4012-2" />
2347 </filter>
2348 <filter
2349 inkscape:collect="always"
2350 id="filter4053-9">
2351 <feGaussianBlur
2352 inkscape:collect="always"
2353 stdDeviation="0.6062947"
2354 id="feGaussianBlur4055-3" />
2355 </filter>
2356 <clipPath
2357 clipPathUnits="userSpaceOnUse"
2358 id="clipPath8514-8">
2359 <path
2360 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#262f2f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
2361 d="m 352.24553,211.99185 c -3.80443,-25.26423 -16.80972,-50.63802 -17.1568,-75.52523 -0.18626,-13.35552 3.27285,-26.57091 13.75553,-39.554046 36.34702,-65.295835 116.94091,-84.694685 185.93466,-91.465427 86.92239,-11.016801 184.91267,17.940072 233.37134,95.401283 54.12402,75.7333 56.67476,172.53912 80.61204,259.52795 29.43779,127.1276 54.77914,256.21414 60.39224,386.85035 -3.06348,78.18185 -8.42634,165.18415 -60.50321,228.13413 -48.02654,50.35744 -122.78647,50.05304 -187.06988,59.00234 -90.55539,4.655 -184.35153,-16.1458 -261.7839,-64.19824 -64.77564,-37.94001 -95.73019,-113.47863 -97.2794,-186.01958 -8.38917,-79.87516 26.39152,-153.80851 51.6204,-227.15961 7.47061,-82.76107 9.41286,-166.24775 9.65334,-249.38484 -0.83682,-32.19544 -7.08953,-63.81733 -11.54636,-95.60908 z"
2362 id="path8516-8"
2363 sodipodi:nodetypes="cscccccccccccc"
2364 inkscape:connector-curvature="0" />
2365 </clipPath>
2366 <filter
2367 inkscape:collect="always"
2368 id="filter8814-5"
2369 x="-0.20466694"
2370 width="1.4093339"
2371 y="-0.29007819"
2372 height="1.5801564">
2373 <feGaussianBlur
2374 inkscape:collect="always"
2375 stdDeviation="22.300169"
2376 id="feGaussianBlur8816-0" />
2377 </filter>
2378 <clipPath
2379 clipPathUnits="userSpaceOnUse"
2380 id="clipPath8610-9">
2381 <path
2382 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#262f2f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
2383 d="m 352.24553,211.99185 c -3.80443,-25.26423 -16.80972,-50.63802 -17.1568,-75.52523 -0.18626,-13.35552 3.27285,-26.57091 13.75553,-39.554046 36.34702,-65.295835 116.94091,-84.694685 185.93466,-91.465427 86.92239,-11.016801 184.91267,17.940072 233.37134,95.401283 54.12402,75.7333 56.67476,172.53912 80.61204,259.52795 29.43779,127.1276 54.77914,256.21414 60.39224,386.85035 -3.06348,78.18185 -8.42634,165.18415 -60.50321,228.13413 -48.02654,50.35744 -122.78647,50.05304 -187.06988,59.00234 -90.55539,4.655 -184.35153,-16.1458 -261.7839,-64.19824 -64.77564,-37.94001 -95.73019,-113.47863 -97.2794,-186.01958 -8.38917,-79.87516 26.39152,-153.80851 51.6204,-227.15961 7.47061,-82.76107 9.41286,-166.24775 9.65334,-249.38484 -0.83682,-32.19544 -7.08953,-63.81733 -11.54636,-95.60908 z"
2384 id="path8612-6"
2385 sodipodi:nodetypes="cscccccccccccc"
2386 inkscape:connector-curvature="0" />
2387 </clipPath>
2388 <filter
2389 inkscape:collect="always"
2390 id="filter8810-3"
2391 x="-0.23519406"
2392 width="1.4703881"
2393 y="-0.24500646"
2394 height="1.4900129">
2395 <feGaussianBlur
2396 inkscape:collect="always"
2397 stdDeviation="58.328041"
2398 id="feGaussianBlur8812-8" />
2399 </filter>
2400 <clipPath
2401 clipPathUnits="userSpaceOnUse"
2402 id="clipPath8622-5">
2403 <path
2404 style="display:inline;opacity:1;fill:#202020;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
2405 d="m 821.64329,477.88997 c 0,0 22.61947,-6.50681 35.74275,-5.87273 13.12328,0.63409 30.64158,1.93862 43.70885,12.18619 13.06727,10.24756 25.06774,27.14007 34.11239,58.36965 9.04465,31.22958 1.69832,99.25201 -6.17603,143.34735 -7.87435,44.09534 -28.2651,106.11298 -45,140 -16.7349,33.88702 -49.79771,77.4952 -60.56943,89.87616 -11.36422,13.06197 -56.20589,36.42617 -79.43057,42.26667 5.3033,-10.6066 48.89976,-50.58884 35,-60.71426 -14.01897,-10.21226 -45.76009,45.98236 -84.29315,29.03317 21.38231,-13.13212 41.7794,-51.18606 34.04061,-66.59445 -7.84025,-15.61039 -30.70493,48.75757 -93.53554,37.01288 30.05204,-27.52666 55.40706,-70.90401 41.2627,-82.9797 -14.41516,-12.30687 -60.46175,54.29315 -60.46175,54.29315 0,0 -2.8219,-41.70118 13.7732,-68.60732 16.63935,-26.97787 79.65297,-81.61527 99.55313,-111.70342 19.90015,-30.08814 33.61256,-66.00902 42.13542,-92.51794 8.52286,-26.50892 15.80094,-77.09954 15.80094,-77.09954"
2406 id="path8624-61"
2407 sodipodi:nodetypes="czzzzzzczczczczzzc"
2408 inkscape:connector-curvature="0" />
2409 </clipPath>
2410 <filter
2411 inkscape:collect="always"
2412 id="filter8818-1"
2413 x="-0.34381232"
2414 width="1.6876246"
2415 y="-0.18433961"
2416 height="1.3686792">
2417 <feGaussianBlur
2418 inkscape:collect="always"
2419 stdDeviation="34.542167"
2420 id="feGaussianBlur8820-5" />
2421 </filter>
2422 <clipPath
2423 clipPathUnits="userSpaceOnUse"
2424 id="clipPath8906-9">
2425 <path
2426 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#262f2f;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
2427 d="m 352.24553,211.99185 c -3.80443,-25.26423 -16.80972,-50.63802 -17.1568,-75.52523 -0.18626,-13.35552 3.27285,-26.57091 13.75553,-39.554046 36.34702,-65.295835 116.94091,-84.694685 185.93466,-91.465427 86.92239,-11.016801 184.91267,17.940072 233.37134,95.401283 54.12402,75.7333 56.67476,172.53912 80.61204,259.52795 29.43779,127.1276 54.77914,256.21414 60.39224,386.85035 -3.06348,78.18185 -8.42634,165.18415 -60.50321,228.13413 -48.02654,50.35744 -122.78647,50.05304 -187.06988,59.00234 -90.55539,4.655 -184.35153,-16.1458 -261.7839,-64.19824 -64.77564,-37.94001 -95.73019,-113.47863 -97.2794,-186.01958 -8.38917,-79.87516 26.39152,-153.80851 51.6204,-227.15961 7.47061,-82.76107 9.41286,-166.24775 9.65334,-249.38484 -0.83682,-32.19544 -7.08953,-63.81733 -11.54636,-95.60908 z"
2428 id="path8908-8"
2429 sodipodi:nodetypes="cscccccccccccc"
2430 inkscape:connector-curvature="0" />
2431 </clipPath>
2432 <clipPath
2433 clipPathUnits="userSpaceOnUse"
2434 id="clipPath3602-4">
2435 <path
2436 sodipodi:nodetypes="czzzzzzczczczczzzc"
2437 id="path3604-8"
2438 d="m 647.61204,540.04601 c 0,0 22.61947,-6.50681 35.74275,-5.87273 13.12328,0.63409 30.64158,1.93862 43.70885,12.18619 13.06727,10.24756 25.06774,27.14007 34.11239,58.36965 9.04465,31.22958 1.69832,99.25201 -6.17603,143.34735 -7.87435,44.09534 -28.2651,106.11298 -45,140 -16.7349,33.88702 -49.79771,77.4952 -60.56943,89.87616 -11.36422,13.06197 -56.20589,36.42617 -79.43057,42.26667 5.3033,-10.6066 48.89976,-50.58884 35,-60.71426 -14.01897,-10.21226 -45.76009,45.98236 -84.29315,29.03317 21.38231,-13.13212 41.7794,-51.18606 34.04061,-66.59445 -7.84025,-15.61039 -30.70493,48.75757 -93.53554,37.01288 30.05204,-27.52666 55.40706,-70.90401 41.2627,-82.9797 -14.41516,-12.30687 -60.46175,54.29315 -60.46175,54.29315 0,0 -2.8219,-41.70118 13.7732,-68.60732 16.63935,-26.97787 79.65297,-81.61527 99.55313,-111.70342 19.90015,-30.08814 33.61256,-66.00902 42.13542,-92.51794 8.52286,-26.50892 15.80094,-77.09954 15.80094,-77.09954"
2439 style="display:inline;opacity:1;fill:#202020;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
2440 inkscape:connector-curvature="0" />
2441 </clipPath>
2442 <filter
2443 inkscape:collect="always"
2444 id="filter3587-1"
2445 x="-0.1">
2446 <feGaussianBlur
2447 inkscape:collect="always"
2448 stdDeviation="8.881432"
2449 id="feGaussianBlur3589-0" />
2450 </filter>
2451 <clipPath
2452 clipPathUnits="userSpaceOnUse"
2453 id="clipPath3992-4">
2454 <path
2455 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#121212;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
2456 d="m 709.28572,844.50504 c 54.28571,-1.42857 126.035,-15.05199 170,-26.78572 44.05271,-11.75714 125.88628,-36.34724 175.35708,-57.85714 49.3393,-21.45272 113.6037,-59.2816 154.2858,-92.14285 40.5081,-32.72069 52.3899,-55.81981 60.7143,-33.57143 8.3691,22.36779 -16.407,56.32562 -37.8572,81.07143 -21.6041,24.9234 -52.7313,52.70533 -98.9286,89.28571 C 1086.6598,841.08542 976.77458,906.08967 920,933.07647 c -57.06606,27.12536 -128.20334,58.23842 -172.14286,72.50003 -43.93952,14.2616 -131.42857,31.0714 -131.42857,31.0714 l 92.85715,-192.14286 z"
2457 id="path3994-4"
2458 sodipodi:nodetypes="czzzzzzzzcc"
2459 inkscape:connector-curvature="0" />
2460 </clipPath>
2461 <filter
2462 inkscape:collect="always"
2463 id="filter3779-4"
2464 x="-0.087980822"
2465 width="1.1759616"
2466 y="-0.17728332"
2467 height="1.3545666">
2468 <feGaussianBlur
2469 inkscape:collect="always"
2470 stdDeviation="16.340344"
2471 id="feGaussianBlur3781-4" />
2472 </filter>
2473 <clipPath
2474 clipPathUnits="userSpaceOnUse"
2475 id="clipPath3986-7">
2476 <path
2477 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#121212;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
2478 d="m 709.28572,844.50504 c 54.28571,-1.42857 126.035,-15.05199 170,-26.78572 44.05271,-11.75714 125.88628,-36.34724 175.35708,-57.85714 49.3393,-21.45272 113.6037,-59.2816 154.2858,-92.14285 40.5081,-32.72069 52.3899,-55.81981 60.7143,-33.57143 8.3691,22.36779 -16.407,56.32562 -37.8572,81.07143 -21.6041,24.9234 -52.7313,52.70533 -98.9286,89.28571 C 1086.6598,841.08542 976.77458,906.08967 920,933.07647 c -57.06606,27.12536 -128.20334,58.23842 -172.14286,72.50003 -43.93952,14.2616 -131.42857,31.0714 -131.42857,31.0714 l 92.85715,-192.14286 z"
2479 id="path3988-6"
2480 sodipodi:nodetypes="czzzzzzzzcc"
2481 inkscape:connector-curvature="0" />
2482 </clipPath>
2483 <clipPath
2484 clipPathUnits="userSpaceOnUse"
2485 id="clipPath3722-3">
2486 <path
2487 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#121212;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
2488 d="m 709.28572,844.50504 c 54.28571,-1.42857 126.035,-15.05199 170,-26.78572 44.05271,-11.75714 125.88628,-36.34724 175.35708,-57.85714 49.3393,-21.45272 113.6037,-59.2816 154.2858,-92.14285 40.5081,-32.72069 52.3899,-55.81981 60.7143,-33.57143 8.3691,22.36779 -16.407,56.32562 -37.8572,81.07143 -21.6041,24.9234 -52.7313,52.70533 -98.9286,89.28571 C 1086.6598,841.08542 976.77458,906.08967 920,933.07647 c -57.06606,27.12536 -128.20334,58.23842 -172.14286,72.50003 -43.93952,14.2616 -131.42857,31.0714 -131.42857,31.0714 l 92.85715,-192.14286 z"
2489 id="path3724-1"
2490 sodipodi:nodetypes="czzzzzzzzcc"
2491 inkscape:connector-curvature="0" />
2492 </clipPath>
2493 <filter
2494 inkscape:collect="always"
2495 id="filter8225-7">
2496 <feGaussianBlur
2497 inkscape:collect="always"
2498 stdDeviation="10.661912"
2499 id="feGaussianBlur8227-5" />
2500 </filter>
2501 <mask
2502 maskUnits="userSpaceOnUse"
2503 id="mask7704-9">
2504 <path
2505 style="fill:url(#linearGradient7708);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
2506 d="m 718.40812,-224.31217 33.25,56 275.99998,-24 159.5,-48.25 -66.5,-82.75 -402.24998,99 z"
2507 id="path7706-6"
2508 inkscape:connector-curvature="0" />
2509 </mask>
2510 <clipPath
2511 clipPathUnits="userSpaceOnUse"
2512 id="clipPath7421-7">
2513 <path
2514 sodipodi:type="inkscape:offset"
2515 inkscape:radius="0"
2516 inkscape:original="M 1111.4062 -285.9375 L 1107.4688 -284.0625 C 1107.4283 -284.05228 1107.3692 -284.04201 1107.3438 -284.03125 C 1106.925 -283.8184 1107.1791 -283.93067 1106.6875 -283.71875 C 1106.2014 -283.50919 1104.9499 -283.13456 1102.5938 -282.25 C 1099.2626 -280.99942 1096.7895 -280.10016 1095.5938 -279.1875 C 1094.0576 -279.16623 1091.8733 -278.95419 1089.9375 -278.46875 C 1086.956 -277.72108 1085.0823 -277.29474 1083.1875 -276.875 C 1081.2927 -276.45527 1081.512 -276.23281 1080.3125 -276 C 1079.0159 -275.74833 1078.5911 -276.00899 1074.875 -275.21875 C 1071.3851 -274.4766 1065.9802 -273.28768 1064.7188 -272.53125 C 1063.1348 -272.71203 1060.8513 -272.85303 1058.875 -272.5625 C 1055.8346 -272.11554 1053.9588 -271.88974 1052.0312 -271.65625 C 1051.3758 -271.57687 1050.9902 -271.45547 1050.6875 -271.375 C 1050.2613 -271.24334 1050.0017 -271.11498 1049.3125 -271.03125 C 1048.0009 -270.87188 1047.5503 -271.18808 1043.7812 -270.75 C 1040.2273 -270.33691 1034.7758 -269.47718 1033.5312 -268.8125 C 1031.9322 -269.10979 1029.6735 -269.34669 1027.6875 -269.15625 C 1024.6287 -268.86293 1022.7155 -268.67226 1020.7812 -268.5 C 1018.847 -268.32773 1019.0926 -268.07763 1017.875 -267.96875 C 1016.5588 -267.85105 1016.1152 -268.13238 1012.3438 -267.71875 C 1008.8017 -267.3303 1003.3359 -266.50948 1002.0625 -265.84375 C 1000.4636 -266.13844 998.1753 -266.35076 996.1875 -266.15625 C 993.12921 -265.857 991.2463 -265.67601 989.3125 -265.5 C 988.65501 -265.44015 988.27245 -265.32144 987.96875 -265.25 C 987.54105 -265.13104 987.28525 -265.03193 986.59375 -264.96875 C 985.27775 -264.84849 984.834 -265.16363 981.0625 -264.75 C 977.50631 -264.35998 972.0569 -263.51084 970.8125 -262.84375 C 969.21381 -263.13793 966.95265 -263.36747 964.96875 -263.15625 C 961.91305 -262.83092 959.9947 -262.63001 958.0625 -262.4375 C 956.13031 -262.24499 956.37275 -261.99662 955.15625 -261.875 C 953.84137 -261.74353 953.3932 -262.03954 949.625 -261.59375 C 946.08611 -261.17509 940.6473 -260.30158 939.375 -259.625 C 937.77741 -259.90604 935.51505 -260.04543 933.53125 -259.8125 C 930.47927 -259.45413 928.58625 -259.24464 926.65625 -259.03125 C 926.00007 -258.95869 925.6156 -258.85856 925.3125 -258.78125 C 924.88571 -258.65402 924.6276 -258.51405 923.9375 -258.4375 C 922.62411 -258.29181 922.17015 -258.61152 918.40625 -258.125 C 914.85737 -257.66624 909.4276 -256.70598 908.1875 -256 C 906.59441 -256.24424 904.3537 -256.38135 902.375 -256.125 C 899.32741 -255.73018 897.4243 -255.47655 895.5 -255.21875 C 893.57571 -254.96096 893.7739 -254.72522 892.5625 -254.5625 C 891.25301 -254.3866 890.8153 -254.66688 887.0625 -254.09375 C 883.53821 -253.55551 878.1393 -252.39458 876.875 -251.65625 C 875.28751 -251.85979 873.0295 -251.91098 871.0625 -251.5625 C 868.03631 -251.02638 866.1636 -250.70081 864.25 -250.375 C 863.59941 -250.26423 863.2363 -250.10406 862.9375 -250 C 862.51681 -249.83512 862.27405 -249.6687 861.59375 -249.53125 C 860.29905 -249.26966 859.86665 -249.53745 856.15625 -248.71875 C 852.65777 -247.9468 847.31035 -246.33582 846.09375 -245.5 C 844.53085 -245.57745 842.33625 -245.41472 840.40625 -244.90625 C 837.43387 -244.12312 835.58855 -243.67416 833.71875 -243.15625 C 831.84875 -242.63835 832.0521 -242.38897 830.875 -242.0625 C 829.60251 -241.7096 829.17795 -241.95541 825.53125 -240.875 C 822.10657 -239.86037 816.88185 -237.94183 815.65625 -237.03125 C 814.11747 -237.01851 811.93645 -236.75903 810.03125 -236.15625 C 807.10027 -235.22891 805.2809 -234.69783 803.4375 -234.09375 C 802.81071 -233.88837 802.44585 -233.70117 802.15625 -233.5625 C 801.74867 -233.34889 801.50295 -233.15375 800.84375 -232.9375 C 799.58925 -232.52596 799.1576 -232.74846 795.5625 -231.5 C 792.17261 -230.32283 786.96755 -228.2863 785.78125 -227.34375 C 784.25737 -227.28408 782.1312 -226.94888 780.25 -226.28125 C 777.35261 -225.25296 775.55095 -224.60577 773.71875 -223.96875 C 771.88655 -223.33174 772.0909 -223.12021 770.9375 -222.71875 C 769.69071 -222.28479 769.27395 -222.51903 765.71875 -221.15625 C 762.38005 -219.87645 757.23165 -217.6737 756.03125 -216.6875 C 754.52407 -216.57981 752.39555 -216.1887 750.53125 -215.46875 C 747.66307 -214.36115 745.90735 -213.68719 744.09375 -213 C 743.47705 -212.76637 743.0973 -212.55797 742.8125 -212.40625 C 742.81251 -212.40625 742.8125 -212.37673 742.8125 -212.375 L 734.8125 -209.1875 L 736.625 -194.46875 C 736.36701 -194.52956 742.8125 -191.15625 742.8125 -191.15625 C 743.03891 -191.30093 743.26145 -191.42886 743.53125 -191.53125 C 744.61177 -191.94123 745.70285 -191.74702 749.53125 -193.21875 C 753.35977 -194.69049 754.7553 -195.22373 755.4375 -195.625 C 756.11711 -196.02478 757.04925 -196.50437 757.65625 -197.15625 C 759.48317 -197.294 761.22705 -197.64948 762.59375 -198.15625 C 765.56175 -199.25677 767.4691 -199.96244 769.375 -200.625 C 771.28081 -201.28754 771.72915 -202.03987 772.78125 -202.40625 C 773.87287 -202.78636 774.97635 -202.57163 778.84375 -203.9375 C 782.71115 -205.30336 784.1269 -205.76458 784.8125 -206.15625 C 785.51361 -206.55677 786.5133 -207.08923 787.125 -207.75 C 789.09581 -207.80466 790.94195 -208.13463 792.40625 -208.625 C 795.40777 -209.63008 797.3324 -210.24671 799.25 -210.875 C 800.78861 -211.3791 801.42415 -211.92177 802.15625 -212.3125 C 802.38647 -212.44681 802.63215 -212.56623 802.90625 -212.65625 C 804.00457 -213.01673 805.0877 -212.73762 809 -213.96875 C 812.91231 -215.19988 814.366 -215.6417 815.0625 -216 C 815.75641 -216.35697 816.6926 -216.79261 817.3125 -217.40625 C 819.17771 -217.42891 820.94835 -217.67308 822.34375 -218.09375 C 825.37415 -219.00729 827.33615 -219.52385 829.28125 -220.0625 C 831.22637 -220.60114 831.70745 -221.32702 832.78125 -221.625 C 833.89527 -221.93415 835.00125 -221.61761 838.96875 -222.65625 C 842.93625 -223.69488 844.38625 -224.08898 845.09375 -224.40625 C 845.82855 -224.73584 846.90765 -225.15997 847.53125 -225.78125 C 849.52907 -225.66525 851.3887 -225.80134 852.875 -226.15625 C 855.95311 -226.89125 857.9584 -227.25719 859.9375 -227.65625 C 861.52541 -227.97643 862.1818 -228.4468 862.9375 -228.75 C 863.17501 -228.8568 863.4044 -228.94276 863.6875 -229 C 864.82091 -229.22919 865.99215 -228.79107 870.03125 -229.5 C 874.07067 -230.20893 875.5315 -230.42709 876.25 -230.6875 C 876.96581 -230.94694 877.95435 -231.25474 878.59375 -231.78125 C 880.51795 -231.54176 882.34165 -231.55672 883.78125 -231.78125 C 886.90767 -232.26887 888.9358 -232.48192 890.9375 -232.75 C 892.93921 -233.01807 893.42625 -233.69514 894.53125 -233.84375 C 895.67767 -233.99793 896.8071 -233.54218 900.875 -234.0625 C 904.94281 -234.58282 906.43525 -234.75823 907.15625 -235 C 907.89337 -235.24714 908.95435 -235.58623 909.59375 -236.125 C 911.64375 -235.78947 913.56745 -235.72704 915.09375 -235.90625 C 918.23595 -236.27521 920.27375 -236.46561 922.28125 -236.6875 C 923.89207 -236.86552 924.5459 -237.2957 925.3125 -237.53125 C 925.55341 -237.61677 925.80655 -237.68685 926.09375 -237.71875 C 927.24345 -237.84647 928.39505 -237.3721 932.46875 -237.84375 C 936.54245 -238.3154 938.0278 -238.45435 938.75 -238.6875 C 939.46941 -238.91977 940.45025 -239.16096 941.09375 -239.65625 C 943.03005 -239.32279 944.8638 -239.25201 946.3125 -239.40625 C 949.45851 -239.7412 951.49 -239.92484 953.5 -240.125 C 955.50991 -240.32514 955.98415 -240.95139 957.09375 -241.0625 C 958.24485 -241.17778 959.39025 -240.69744 963.46875 -241.125 C 967.54725 -241.55256 969.05765 -241.68709 969.78125 -241.90625 C 970.52047 -242.13011 971.57685 -242.4195 972.21875 -242.9375 C 974.27575 -242.53883 976.2206 -242.4441 977.75 -242.59375 C 980.89871 -242.90185 982.9258 -243.067 984.9375 -243.25 C 986.55151 -243.39682 987.20055 -243.81055 987.96875 -244.03125 C 988.21005 -244.11211 988.4623 -244.16116 988.75 -244.1875 C 989.90211 -244.29295 991.0429 -243.79475 995.125 -244.1875 C 999.20711 -244.58025 1000.7139 -244.71834 1001.4375 -244.9375 C 1002.1584 -245.15583 1003.1371 -245.3852 1003.7812 -245.875 C 1005.7193 -245.52501 1007.5501 -245.42062 1009 -245.5625 C 1012.1487 -245.8706 1014.1758 -246.03575 1016.1875 -246.21875 C 1018.1991 -246.40174 1018.7017 -247.05677 1019.8125 -247.15625 C 1020.9648 -247.25948 1022.1047 -246.77142 1026.1875 -247.15625 C 1030.2704 -247.54107 1031.7762 -247.65725 1032.5 -247.875 C 1033.2393 -248.09743 1034.2956 -248.38949 1034.9375 -248.90625 C 1036.9949 -248.50448 1038.9404 -248.40292 1040.4688 -248.5625 C 1043.6153 -248.89102 1045.6458 -249.0852 1047.6562 -249.28125 C 1049.2692 -249.43854 1049.9219 -249.91273 1050.6875 -250.15625 C 1050.9282 -250.24429 1051.1507 -250.27762 1051.4375 -250.3125 C 1052.5858 -250.4522 1053.7542 -249.97259 1057.8125 -250.5625 C 1061.8708 -251.15242 1063.3743 -251.33964 1064.0938 -251.59375 C 1064.8104 -251.84691 1065.7684 -252.15182 1066.4062 -252.6875 C 1068.3259 -252.47556 1070.1262 -252.53609 1071.5625 -252.78125 C 1074.6816 -253.31365 1076.6741 -253.70986 1078.6562 -254.09375 C 1080.6383 -254.47762 1081.1305 -255.1334 1082.2188 -255.375 C 1083.3475 -255.62566 1084.489 -255.25871 1088.4688 -256.25 C 1092.4483 -257.24127 1093.8983 -257.6693 1094.5938 -258.03125 C 1095.316 -258.40725 1096.3555 -258.90183 1096.9688 -259.5625 C 1098.9317 -259.57454 1100.7625 -259.85355 1102.1875 -260.40625 C 1105.1387 -261.55085 1107.0607 -262.27567 1108.875 -263.15625 C 1110.3307 -263.86277 1111.1941 -264.85828 1111.4062 -265.15625 C 1111.6185 -265.4542 1111.5051 -265.8848 1111.5312 -265.90625 C 1111.5742 -265.94148 1111.8716 -266.00028 1112.0312 -266.34375 C 1112.8902 -268.19082 1114.3544 -271.97139 1114.4688 -272.65625 C 1114.5825 -273.33839 1114.6368 -274.00902 1114.6875 -274.40625 C 1114.7169 -274.63575 1114.5404 -275.28515 1114.5625 -275.34375 C 1114.5934 -275.42579 1114.8508 -275.59432 1114.9062 -275.84375 C 1115.1725 -277.04206 1114.9953 -278.05111 1114.7812 -279.46875 C 1114.5673 -280.88638 1113.8096 -284.08338 1113.1562 -284.9375 C 1112.4973 -285.79922 1111.9314 -285.94801 1111.4062 -285.9375 z "
2517 style="display:inline;fill:#bcb786;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
2518 id="path7423-8"
2519 d="m 1111.4062,-285.9375 -3.9374,1.875 c -0.041,0.0102 -0.1,0.0205 -0.125,0.0312 -0.4188,0.21285 -0.1647,0.10058 -0.6563,0.3125 -0.4861,0.20956 -1.7376,0.58419 -4.0937,1.46875 -3.3312,1.25058 -5.8043,2.14984 -7,3.0625 -1.5362,0.0213 -3.7205,0.23331 -5.6563,0.71875 -2.9815,0.74767 -4.8552,1.17401 -6.75,1.59375 -1.8948,0.41973 -1.6755,0.64219 -2.875,0.875 -1.2966,0.25167 -1.7214,-0.009 -5.4375,0.78125 -3.4899,0.74215 -8.8948,1.93107 -10.1562,2.6875 -1.584,-0.18078 -3.8675,-0.32178 -5.8438,-0.0312 -3.0404,0.44696 -4.9162,0.67276 -6.8438,0.90625 -0.6554,0.0794 -1.041,0.20078 -1.3437,0.28125 -0.4262,0.13166 -0.6858,0.26002 -1.375,0.34375 -1.3116,0.15937 -1.7622,-0.15683 -5.5313,0.28125 -3.5539,0.41309 -9.0054,1.27282 -10.25,1.9375 -1.599,-0.29729 -3.8577,-0.53419 -5.8437,-0.34375 -3.0588,0.29332 -4.972,0.48399 -6.9063,0.65625 -1.9342,0.17227 -1.6886,0.42237 -2.9062,0.53125 -1.3162,0.1177 -1.7598,-0.16363 -5.5312,0.25 -3.5421,0.38845 -9.0079,1.20927 -10.2813,1.875 -1.5989,-0.29469 -3.8872,-0.50701 -5.875,-0.3125 -3.05829,0.29925 -4.9412,0.48024 -6.875,0.65625 -0.65749,0.0598 -1.04005,0.17856 -1.34375,0.25 -0.4277,0.11896 -0.6835,0.21807 -1.375,0.28125 -1.316,0.12026 -1.75975,-0.19488 -5.53125,0.21875 -3.55619,0.39002 -9.0056,1.23916 -10.25,1.90625 -1.59869,-0.29418 -3.85985,-0.52372 -5.84375,-0.3125 -3.0557,0.32533 -4.97405,0.52624 -6.90625,0.71875 -1.93219,0.19251 -1.68975,0.44088 -2.90625,0.5625 -1.31488,0.13147 -1.76305,-0.16454 -5.53125,0.28125 -3.53889,0.41866 -8.9777,1.29217 -10.25,1.96875 -1.59759,-0.28104 -3.85995,-0.42043 -5.84375,-0.1875 -3.05198,0.35837 -4.945,0.56786 -6.875,0.78125 -0.65618,0.0726 -1.04065,0.17269 -1.34375,0.25 -0.42679,0.12723 -0.6849,0.2672 -1.375,0.34375 -1.31339,0.14569 -1.76735,-0.17402 -5.53125,0.3125 -3.54888,0.45876 -8.97865,1.41902 -10.21875,2.125 -1.59309,-0.24424 -3.8338,-0.38135 -5.8125,-0.125 -3.04759,0.39482 -4.9507,0.64845 -6.875,0.90625 -1.92429,0.25779 -1.7261,0.49353 -2.9375,0.65625 -1.30949,0.1759 -1.7472,-0.10438 -5.5,0.46875 -3.52429,0.53824 -8.9232,1.69917 -10.1875,2.4375 -1.58749,-0.20354 -3.8455,-0.25473 -5.8125,0.0937 -3.02619,0.53612 -4.8989,0.86169 -6.8125,1.1875 -0.65059,0.11077 -1.0137,0.27094 -1.3125,0.375 -0.42069,0.16488 -0.66345,0.3313 -1.34375,0.46875 -1.2947,0.26159 -1.7271,-0.006 -5.4375,0.8125 -3.49848,0.77195 -8.8459,2.38293 -10.0625,3.21875 -1.5629,-0.0774 -3.7575,0.0853 -5.6875,0.59375 -2.97238,0.78313 -4.8177,1.23209 -6.6875,1.75 -1.87,0.5179 -1.66665,0.76728 -2.84375,1.09375 -1.27249,0.3529 -1.69705,0.10709 -5.34375,1.1875 -3.42468,1.01463 -8.6494,2.93317 -9.875,3.84375 -1.53878,0.0127 -3.7198,0.27222 -5.625,0.875 -2.93098,0.92734 -4.75035,1.45842 -6.59375,2.0625 -0.62679,0.20538 -0.99165,0.39258 -1.28125,0.53125 -0.40758,0.21361 -0.6533,0.40875 -1.3125,0.625 -1.2545,0.41154 -1.68615,0.18904 -5.28125,1.4375 -3.38989,1.17717 -8.59495,3.2137 -9.78125,4.15625 -1.52388,0.0597 -3.65005,0.39487 -5.53125,1.0625 -2.89739,1.02829 -4.69905,1.67548 -6.53125,2.3125 -1.8322,0.63701 -1.62785,0.84854 -2.78125,1.25 -1.24679,0.43396 -1.66355,0.19972 -5.21875,1.5625 -3.3387,1.2798 -8.4871,3.48255 -9.6875,4.46875 -1.50718,0.10769 -3.6357,0.4988 -5.5,1.21875 -2.86818,1.1076 -4.6239,1.78156 -6.4375,2.46875 -0.6167,0.23363 -0.99645,0.44203 -1.28125,0.59375 10e-6,0 0,0.0295 0,0.0312 l -8,3.1875 1.8125,14.71875 c -0.25799,-0.0608 6.1875,3.3125 6.1875,3.3125 0.22641,-0.14468 0.44895,-0.27261 0.71875,-0.375 1.08052,-0.40998 2.1716,-0.21577 6,-1.6875 3.82852,-1.47174 5.22405,-2.00498 5.90625,-2.40625 0.67961,-0.39978 1.61175,-0.87937 2.21875,-1.53125 1.82692,-0.13775 3.5708,-0.49323 4.9375,-1 2.968,-1.10052 4.87535,-1.80619 6.78125,-2.46875 1.90581,-0.66254 2.35415,-1.41487 3.40625,-1.78125 1.09162,-0.38011 2.1951,-0.16538 6.0625,-1.53125 3.8674,-1.36586 5.28315,-1.82708 5.96875,-2.21875 0.70111,-0.40052 1.7008,-0.93298 2.3125,-1.59375 1.97081,-0.0547 3.81695,-0.38463 5.28125,-0.875 3.00152,-1.00508 4.92615,-1.62171 6.84375,-2.25 1.53861,-0.5041 2.17415,-1.04677 2.90625,-1.4375 0.23022,-0.13431 0.4759,-0.25373 0.75,-0.34375 1.09832,-0.36048 2.18145,-0.0814 6.09375,-1.3125 3.91231,-1.23113 5.366,-1.67295 6.0625,-2.03125 0.69391,-0.35697 1.6301,-0.79261 2.25,-1.40625 1.86521,-0.0227 3.63585,-0.26683 5.03125,-0.6875 3.0304,-0.91354 4.9924,-1.4301 6.9375,-1.96875 1.94512,-0.53864 2.4262,-1.26452 3.5,-1.5625 1.11402,-0.30915 2.22,0.007 6.1875,-1.03125 3.9675,-1.03863 5.4175,-1.43273 6.125,-1.75 0.7348,-0.32959 1.8139,-0.75372 2.4375,-1.375 1.99782,0.116 3.85745,-0.0201 5.34375,-0.375 3.07811,-0.735 5.0834,-1.10094 7.0625,-1.5 1.58791,-0.32018 2.2443,-0.79055 3,-1.09375 0.23751,-0.1068 0.4669,-0.19276 0.75,-0.25 1.13341,-0.22919 2.30465,0.20893 6.34375,-0.5 4.03942,-0.70893 5.50025,-0.92709 6.21875,-1.1875 0.71581,-0.25944 1.70435,-0.56724 2.34375,-1.09375 1.9242,0.23949 3.7479,0.22453 5.1875,0 3.12642,-0.48762 5.15455,-0.70067 7.15625,-0.96875 2.00171,-0.26807 2.48875,-0.94514 3.59375,-1.09375 1.14642,-0.15418 2.27585,0.30157 6.34375,-0.21875 4.06781,-0.52032 5.56025,-0.69573 6.28125,-0.9375 0.73712,-0.24714 1.7981,-0.58623 2.4375,-1.125 2.05,0.33553 3.9737,0.39796 5.5,0.21875 3.1422,-0.36896 5.18,-0.55936 7.1875,-0.78125 1.61082,-0.17802 2.26465,-0.6082 3.03125,-0.84375 0.24091,-0.0855 0.49405,-0.1556 0.78125,-0.1875 1.1497,-0.12772 2.3013,0.34665 6.375,-0.125 4.0737,-0.47165 5.55905,-0.6106 6.28125,-0.84375 0.71941,-0.23227 1.70025,-0.47346 2.34375,-0.96875 1.9363,0.33346 3.77005,0.40424 5.21875,0.25 3.14601,-0.33495 5.1775,-0.51859 7.1875,-0.71875 2.00991,-0.20014 2.48415,-0.82639 3.59375,-0.9375 1.1511,-0.11528 2.2965,0.36506 6.375,-0.0625 4.0785,-0.42756 5.5889,-0.56209 6.3125,-0.78125 0.73922,-0.22386 1.7956,-0.51325 2.4375,-1.03125 2.057,0.39867 4.00185,0.4934 5.53125,0.34375 3.14871,-0.3081 5.1758,-0.47325 7.1875,-0.65625 1.61401,-0.14682 2.26305,-0.56055 3.03125,-0.78125 0.2413,-0.0809 0.49355,-0.12991 0.78125,-0.15625 1.15211,-0.10545 2.2929,0.39275 6.375,0 4.08211,-0.39275 5.5889,-0.53084 6.3125,-0.75 0.7209,-0.21833 1.6996,-0.4477 2.3437,-0.9375 1.9381,0.34999 3.7689,0.45438 5.2188,0.3125 3.1487,-0.3081 5.1758,-0.47325 7.1875,-0.65625 2.0116,-0.18299 2.5142,-0.83802 3.625,-0.9375 1.1523,-0.10323 2.2922,0.38483 6.375,0 4.0829,-0.38482 5.5887,-0.501 6.3125,-0.71875 0.7393,-0.22243 1.7956,-0.51449 2.4375,-1.03125 2.0574,0.40177 4.0029,0.50333 5.5313,0.34375 3.1465,-0.32852 5.177,-0.5227 7.1874,-0.71875 1.613,-0.15729 2.2657,-0.63148 3.0313,-0.875 0.2407,-0.088 0.4632,-0.12137 0.75,-0.15625 1.1483,-0.1397 2.3167,0.33991 6.375,-0.25 4.0583,-0.58992 5.5618,-0.77714 6.2813,-1.03125 0.7166,-0.25316 1.6746,-0.55807 2.3124,-1.09375 1.9197,0.21194 3.72,0.15141 5.1563,-0.0937 3.1191,-0.5324 5.1116,-0.92861 7.0937,-1.3125 1.9821,-0.38387 2.4743,-1.03965 3.5626,-1.28125 1.1287,-0.25066 2.2702,0.11629 6.25,-0.875 3.9795,-0.99127 5.4295,-1.4193 6.125,-1.78125 0.7222,-0.376 1.7617,-0.87058 2.375,-1.53125 1.9629,-0.012 3.7937,-0.29105 5.2187,-0.84375 2.9512,-1.1446 4.8732,-1.86942 6.6875,-2.75 1.4557,-0.70652 2.3191,-1.70203 2.5312,-2 0.2123,-0.29795 0.099,-0.72855 0.125,-0.75 0.043,-0.0352 0.3404,-0.094 0.5,-0.4375 0.859,-1.84707 2.3232,-5.62764 2.4376,-6.3125 0.1137,-0.68214 0.168,-1.35277 0.2187,-1.75 0.029,-0.2295 -0.1471,-0.8789 -0.125,-0.9375 0.031,-0.082 0.2883,-0.25057 0.3437,-0.5 0.2663,-1.19831 0.089,-2.20736 -0.125,-3.625 -0.2139,-1.41763 -0.9716,-4.61463 -1.625,-5.46875 -0.6589,-0.86172 -1.2248,-1.01051 -1.75,-1 z"
2520 transform="translate(0.08004571,-0.03125)" />
2521 </clipPath>
2522 <filter
2523 inkscape:collect="always"
2524 id="filter7001-5">
2525 <feGaussianBlur
2526 inkscape:collect="always"
2527 stdDeviation="1.1675612"
2528 id="feGaussianBlur7003-7" />
2529 </filter>
2530 <filter
2531 inkscape:collect="always"
2532 id="filter6949-4"
2533 x="-0.10294895"
2534 width="1.2058979"
2535 y="-0.34224695"
2536 height="1.6844939">
2537 <feGaussianBlur
2538 inkscape:collect="always"
2539 stdDeviation="1.1675612"
2540 id="feGaussianBlur6951-1" />
2541 </filter>
2542 <filter
2543 inkscape:collect="always"
2544 id="filter6961-8"
2545 x="-0.09919104"
2546 width="1.1983821"
2547 y="-0.22643611"
2548 height="1.4528722">
2549 <feGaussianBlur
2550 inkscape:collect="always"
2551 stdDeviation="1.1675612"
2552 id="feGaussianBlur6963-5" />
2553 </filter>
2554 <filter
2555 inkscape:collect="always"
2556 id="filter6957-9"
2557 x="-0.098213427"
2558 width="1.1964267"
2559 y="-0.19838208"
2560 height="1.3967642">
2561 <feGaussianBlur
2562 inkscape:collect="always"
2563 stdDeviation="1.1675612"
2564 id="feGaussianBlur6959-7" />
2565 </filter>
2566 <filter
2567 inkscape:collect="always"
2568 id="filter6997-5">
2569 <feGaussianBlur
2570 inkscape:collect="always"
2571 stdDeviation="1.1675612"
2572 id="feGaussianBlur6999-3" />
2573 </filter>
2574 <filter
2575 inkscape:collect="always"
2576 id="filter6953-8"
2577 x="-0.098320946"
2578 width="1.1966419"
2579 y="-0.19750816"
2580 height="1.3950163">
2581 <feGaussianBlur
2582 inkscape:collect="always"
2583 stdDeviation="1.1675612"
2584 id="feGaussianBlur6955-8" />
2585 </filter>
2586 <filter
2587 inkscape:collect="always"
2588 id="filter6993-3"
2589 x="-0.098213255"
2590 width="1.1964265"
2591 y="-0.19838208"
2592 height="1.3967642">
2593 <feGaussianBlur
2594 inkscape:collect="always"
2595 stdDeviation="1.1675612"
2596 id="feGaussianBlur6995-1" />
2597 </filter>
2598 <filter
2599 inkscape:collect="always"
2600 id="filter6989-8"
2601 x="-0.098428868"
2602 width="1.1968577"
2603 y="-0.20287035"
2604 height="1.4057407">
2605 <feGaussianBlur
2606 inkscape:collect="always"
2607 stdDeviation="1.1675612"
2608 id="feGaussianBlur6991-9" />
2609 </filter>
2610 <filter
2611 inkscape:collect="always"
2612 id="filter6985-6"
2613 x="-0.098428868"
2614 width="1.1968577"
2615 y="-0.20853186"
2616 height="1.4170637">
2617 <feGaussianBlur
2618 inkscape:collect="always"
2619 stdDeviation="1.1675612"
2620 id="feGaussianBlur6987-4" />
2621 </filter>
2622 <filter
2623 inkscape:collect="always"
2624 id="filter6965-3"
2625 x="-0.099081434"
2626 width="1.1981629"
2627 y="-0.22529824"
2628 height="1.4505965">
2629 <feGaussianBlur
2630 inkscape:collect="always"
2631 stdDeviation="1.1675612"
2632 id="feGaussianBlur6967-3" />
2633 </filter>
2634 <filter
2635 inkscape:collect="always"
2636 id="filter6981-3"
2637 x="-0.10052545"
2638 width="1.2010509"
2639 y="-0.2742162"
2640 height="1.5484324">
2641 <feGaussianBlur
2642 inkscape:collect="always"
2643 stdDeviation="1.1675612"
2644 id="feGaussianBlur6983-8" />
2645 </filter>
2646 <filter
2647 inkscape:collect="always"
2648 id="filter6977-6"
2649 x="-0.10224481"
2650 width="1.2044896"
2651 y="-0.32371372"
2652 height="1.6474274">
2653 <feGaussianBlur
2654 inkscape:collect="always"
2655 stdDeviation="1.1675612"
2656 id="feGaussianBlur6979-0" />
2657 </filter>
2658 <filter
2659 inkscape:collect="always"
2660 id="filter6973-4"
2661 x="-0.10330495"
2662 width="1.2066098"
2663 y="-0.36439717"
2664 height="1.7287945">
2665 <feGaussianBlur
2666 inkscape:collect="always"
2667 stdDeviation="1.1675612"
2668 id="feGaussianBlur6975-8" />
2669 </filter>
2670 <filter
2671 inkscape:collect="always"
2672 id="filter6969-8"
2673 x="-0.10450897"
2674 width="1.2090179"
2675 y="-0.40468886"
2676 height="1.8093777">
2677 <feGaussianBlur
2678 inkscape:collect="always"
2679 stdDeviation="1.1675612"
2680 id="feGaussianBlur6971-8" />
2681 </filter>
2682 <filter
2683 inkscape:collect="always"
2684 id="filter7345-9">
2685 <feGaussianBlur
2686 inkscape:collect="always"
2687 stdDeviation="1.7233839"
2688 id="feGaussianBlur7347-7" />
2689 </filter>
2690 <filter
2691 inkscape:collect="always"
2692 id="filter7333-7">
2693 <feGaussianBlur
2694 inkscape:collect="always"
2695 stdDeviation="0.35026836"
2696 id="feGaussianBlur7335-6" />
2697 </filter>
2698 <filter
2699 inkscape:collect="always"
2700 id="filter7285-4"
2701 x="-0.030884685"
2702 width="1.0617694"
2703 y="-0.10267408"
2704 height="1.2053483">
2705 <feGaussianBlur
2706 inkscape:collect="always"
2707 stdDeviation="0.35026836"
2708 id="feGaussianBlur7287-3" />
2709 </filter>
2710 <filter
2711 inkscape:collect="always"
2712 id="filter7289-0">
2713 <feGaussianBlur
2714 inkscape:collect="always"
2715 stdDeviation="0.35026836"
2716 id="feGaussianBlur7291-3" />
2717 </filter>
2718 <filter
2719 inkscape:collect="always"
2720 id="filter7293-0">
2721 <feGaussianBlur
2722 inkscape:collect="always"
2723 stdDeviation="0.35026836"
2724 id="feGaussianBlur7295-9" />
2725 </filter>
2726 <filter
2727 inkscape:collect="always"
2728 id="filter7337-2">
2729 <feGaussianBlur
2730 inkscape:collect="always"
2731 stdDeviation="0.35026836"
2732 id="feGaussianBlur7339-5" />
2733 </filter>
2734 <filter
2735 inkscape:collect="always"
2736 id="filter7297-4">
2737 <feGaussianBlur
2738 inkscape:collect="always"
2739 stdDeviation="0.35026836"
2740 id="feGaussianBlur7299-0" />
2741 </filter>
2742 <filter
2743 inkscape:collect="always"
2744 id="filter7301-5">
2745 <feGaussianBlur
2746 inkscape:collect="always"
2747 stdDeviation="0.35026836"
2748 id="feGaussianBlur7303-9" />
2749 </filter>
2750 <filter
2751 inkscape:collect="always"
2752 id="filter7305-4">
2753 <feGaussianBlur
2754 inkscape:collect="always"
2755 stdDeviation="0.35026836"
2756 id="feGaussianBlur7307-6" />
2757 </filter>
2758 <filter
2759 inkscape:collect="always"
2760 id="filter7309-9">
2761 <feGaussianBlur
2762 inkscape:collect="always"
2763 stdDeviation="0.35026836"
2764 id="feGaussianBlur7311-2" />
2765 </filter>
2766 <filter
2767 inkscape:collect="always"
2768 id="filter7313-2">
2769 <feGaussianBlur
2770 inkscape:collect="always"
2771 stdDeviation="0.35026836"
2772 id="feGaussianBlur7315-4" />
2773 </filter>
2774 <filter
2775 inkscape:collect="always"
2776 id="filter7317-7">
2777 <feGaussianBlur
2778 inkscape:collect="always"
2779 stdDeviation="0.35026836"
2780 id="feGaussianBlur7319-7" />
2781 </filter>
2782 <filter
2783 inkscape:collect="always"
2784 id="filter7321-5">
2785 <feGaussianBlur
2786 inkscape:collect="always"
2787 stdDeviation="0.35026836"
2788 id="feGaussianBlur7323-4" />
2789 </filter>
2790 <filter
2791 inkscape:collect="always"
2792 id="filter7329-8"
2793 x="-0.030991485"
2794 width="1.061983"
2795 y="-0.10931916"
2796 height="1.2186383">
2797 <feGaussianBlur
2798 inkscape:collect="always"
2799 stdDeviation="0.35026836"
2800 id="feGaussianBlur7331-1" />
2801 </filter>
2802 <filter
2803 inkscape:collect="always"
2804 id="filter7325-2"
2805 x="-0.031352691"
2806 width="1.0627054"
2807 y="-0.12140666"
2808 height="1.2428133">
2809 <feGaussianBlur
2810 inkscape:collect="always"
2811 stdDeviation="0.35026836"
2812 id="feGaussianBlur7327-8" />
2813 </filter>
2814 <filter
2815 inkscape:collect="always"
2816 id="filter9048-9"
2817 x="-0.40879121"
2818 width="1.8175824"
2819 y="-0.71538466"
2820 height="2.4307692">
2821 <feGaussianBlur
2822 inkscape:collect="always"
2823 stdDeviation="21.92031"
2824 id="feGaussianBlur9050-3" />
2825 </filter>
2826 <clipPath
2827 clipPathUnits="userSpaceOnUse"
2828 id="clipPath3631-6">
2829 <path
2830 style="display:inline;opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
2831 d="m 760.16396,935.83377 c 6.7941,18.90279 10.49369,33.29969 11.8903,51.21189 1.39662,17.91234 -3.78268,51.80084 -2.90046,70.65614 0.88175,18.8452 8.13369,40.099 27.34463,48.9689 19.41887,8.9658 49.31924,10.2113 74.11984,-3.1456 24.8006,-13.357 57.40102,-70.3255 70.97426,-97.3087 13.62385,-27.08394 38.76107,-114.49737 44.6608,-149.76859 5.89973,-35.27121 2.55054,-41.30077 -4.61748,-49.05549 2.6403,-27.84015 -1.49972,-54.93543 13.10969,-87.18618 -30.24901,11.8257 -37.38229,40.1607 -48.31889,65.50508 -8.00091,-50.93293 0.20916,-71.27319 3.31889,-101.21936 -29.06476,14.77791 -42.86151,47.11402 -45,92.85714 -10.92395,-1.3042 -21.39144,-4.43423 -33.57143,-0.71429 -0.26404,-46.02334 -1.46356,-76.88941 8.91063,-114.20649 -53.25547,21.02686 -62.94728,106.5941 -56.05349,112.77792 -10.88282,0.535 -21.37108,-1.2973 -32.85714,2.85715 0.63892,-42.57135 -0.26046,-84.90861 -30,-122.85715 0,0 -30.95806,80.92234 -31.42857,103.57143 -0.47051,22.64909 9.45159,40.16588 9.45159,40.16588 0,0 -8.56807,36.74051 -6.29859,58.23223 2.29585,21.74146 20.4429,59.67617 27.26542,78.65809 z"
2832 id="path3633-8"
2833 sodipodi:nodetypes="czzzzzzcccccccccczczz"
2834 inkscape:connector-curvature="0" />
2835 </clipPath>
2836 <clipPath
2837 clipPathUnits="userSpaceOnUse"
2838 id="clipPath3677-0">
2839 <path
2840 style="display:inline;opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
2841 d="m 586.13271,997.98981 c 6.7941,18.90279 10.49369,33.29969 11.8903,51.21189 1.39662,17.9123 -3.78268,51.8008 -2.90046,70.6561 0.88175,18.8452 8.13369,40.099 27.34463,48.9689 19.41887,8.9658 49.31924,10.2113 74.11984,-3.1456 24.8006,-13.357 57.40102,-70.3255 70.97426,-97.3087 13.62385,-27.0839 38.76107,-114.49733 44.6608,-149.76855 5.89973,-35.27121 2.55054,-41.30077 -4.61748,-49.05549 2.6403,-27.84015 -1.49972,-54.93543 13.10969,-87.18618 -30.24901,11.8257 -37.38229,40.1607 -48.31889,65.50508 -8.00091,-50.93293 0.20916,-71.27319 3.31889,-101.21936 -29.06476,14.77791 -42.86151,47.11402 -45,92.85714 -10.92395,-1.3042 -21.39144,-4.43423 -33.57143,-0.71429 -0.26404,-46.02334 -1.46356,-76.88941 8.91063,-114.20649 -53.25547,21.02686 -62.94728,106.5941 -56.05349,112.77792 -10.88282,0.535 -21.37108,-1.2973 -32.85714,2.85715 0.63892,-42.57135 -0.26046,-84.90861 -30,-122.85715 0,0 -30.95806,80.92234 -31.42857,103.57143 -0.47051,22.64909 9.45159,40.16588 9.45159,40.16588 0,0 -8.56807,36.74051 -6.29859,58.23223 2.29585,21.74146 20.4429,59.67617 27.26542,78.65809 z"
2842 id="path3679-2"
2843 sodipodi:nodetypes="czzzzzzcccccccccczczz"
2844 inkscape:connector-curvature="0" />
2845 </clipPath>
2846 <filter
2847 inkscape:collect="always"
2848 id="filter3898-1">
2849 <feGaussianBlur
2850 inkscape:collect="always"
2851 stdDeviation="10.892985"
2852 id="feGaussianBlur3900-0" />
2853 </filter>
2854 <clipPath
2855 clipPathUnits="userSpaceOnUse"
2856 id="clipPath3622-5">
2857 <path
2858 style="display:inline;opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
2859 d="m 266.27183,924.57186 c -1.40727,18.80121 -1.1449,32.75103 2.08174,49.30328 3.22665,16.55234 16.40608,45.90736 20.3344,63.18376 3.92622,17.2671 2.69413,38.3096 -12.45944,51.1482 -15.31761,12.9774 -42.05127,21.5989 -67.8323,15.7338 -25.78106,-5.8653 -69.54907,-49.2234 -88.59019,-70.2283 C 100.6939,1012.6293 56.045183,939.86194 41.867508,909.43681 27.689836,879.01169 29.207903,872.71824 33.747793,863.90708 24.381071,839.38658 21.334081,813.84027 0.03533552,788.33044 30.360815,791.44488 43.915625,815.28677 60.161025,835.47019 54.631129,787.39416 42.10631,771.05369 31.787073,744.74589 c 29.994295,6.08166 50.57936,31.8724 63.979783,72.7125 9.554154,-3.91791 18.237764,-9.37294 30.187414,-9.0612 -11.2975,-41.6958 -17.94946,-69.91584 -36.687255,-101.06994 53.441965,5.67033 83.657025,80.63932 78.971425,87.9608 9.97797,-2.24399 19.00565,-6.53038 30.43653,-5.65167 -11.24896,-38.34702 -21.04781,-76.8679 -3.65971,-118.64818 0,0 48.28678,65.43687 54.38966,85.80577 6.10287,20.36891 1.51881,38.70052 1.51881,38.70052 0,0 16.95957,31.08529 20.29392,51.09413 3.3731,20.24135 -3.53269,59.10332 -4.94582,77.98324 z"
2860 id="path3624-1"
2861 sodipodi:nodetypes="czzzzzzcccccccccczczz"
2862 inkscape:connector-curvature="0" />
2863 </clipPath>
2864 <filter
2865 inkscape:collect="always"
2866 id="filter9024-1"
2867 x="-0.55453134"
2868 width="2.1090627"
2869 y="-0.51434779"
2870 height="2.0286956">
2871 <feGaussianBlur
2872 inkscape:collect="always"
2873 stdDeviation="20.912684"
2874 id="feGaussianBlur9026-0" />
2875 </filter>
2876 <filter
2877 inkscape:collect="always"
2878 id="filter9020-8"
2879 x="-0.32861114"
2880 width="1.6572223"
2881 y="-0.182"
2882 height="1.364">
2883 <feGaussianBlur
2884 inkscape:collect="always"
2885 stdDeviation="20.912684"
2886 id="feGaussianBlur9022-5" />
2887 </filter>
2888 <filter
2889 inkscape:collect="always"
2890 id="filter9044-0"
2891 x="-0.32631579"
2892 width="1.6526316"
2893 y="-0.84545463"
2894 height="2.6909094">
2895 <feGaussianBlur
2896 inkscape:collect="always"
2897 stdDeviation="21.92031"
2898 id="feGaussianBlur9046-6" />
2899 </filter>
2900 <clipPath
2901 clipPathUnits="userSpaceOnUse"
2902 id="clipPath4177-4">
2903 <path
2904 sodipodi:nodetypes="czzzzzzcccccccccczczz"
2905 id="path4179-6"
2906 d="m 586.13271,997.98981 c 6.7941,18.90279 10.49369,33.29969 11.8903,51.21189 1.39662,17.9123 -3.78268,51.8008 -2.90046,70.6561 0.88175,18.8452 8.13369,40.099 27.34463,48.9689 19.41887,8.9658 49.31924,10.2113 74.11984,-3.1456 24.8006,-13.357 57.40102,-70.3255 70.97426,-97.3087 13.62385,-27.0839 38.76107,-114.49733 44.6608,-149.76855 5.89973,-35.27121 2.55054,-41.30077 -4.61748,-49.05549 2.6403,-27.84015 -1.49972,-54.93543 13.10969,-87.18618 -30.24901,11.8257 -37.38229,40.1607 -48.31889,65.50508 -8.00091,-50.93293 0.20916,-71.27319 3.31889,-101.21936 -29.06476,14.77791 -42.86151,47.11402 -45,92.85714 -10.92395,-1.3042 -21.39144,-4.43423 -33.57143,-0.71429 -0.26404,-46.02334 -1.46356,-76.88941 8.91063,-114.20649 -53.25547,21.02686 -62.94728,106.5941 -56.05349,112.77792 -10.88282,0.535 -21.37108,-1.2973 -32.85714,2.85715 0.63892,-42.57135 -0.26046,-84.90861 -30,-122.85715 0,0 -30.95806,80.92234 -31.42857,103.57143 -0.47051,22.64909 9.45159,40.16588 9.45159,40.16588 0,0 -8.56807,36.74051 -6.29859,58.23223 2.29585,21.74146 20.4429,59.67617 27.26542,78.65809 z"
2907 style="display:inline;opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
2908 inkscape:connector-curvature="0" />
2909 </clipPath>
2910 <filter
2911 inkscape:collect="always"
2912 id="filter4105-2">
2913 <feGaussianBlur
2914 inkscape:collect="always"
2915 stdDeviation="3.8640966"
2916 id="feGaussianBlur4107-5" />
2917 </filter>
2918 <filter
2919 inkscape:collect="always"
2920 id="filter4130-8"
2921 x="-0.49509686"
2922 width="1.9901937"
2923 y="-0.26708817"
2924 height="1.5341763">
2925 <feGaussianBlur
2926 inkscape:collect="always"
2927 stdDeviation="10.730622"
2928 id="feGaussianBlur4132-6" />
2929 </filter>
2930 <filter
2931 inkscape:collect="always"
2932 id="filter4141-2"
2933 x="-0.40611032"
2934 width="1.8122206"
2935 y="-0.30260596"
2936 height="1.6052119">
2937 <feGaussianBlur
2938 inkscape:collect="always"
2939 stdDeviation="9.8586086"
2940 id="feGaussianBlur4143-8" />
2941 </filter>
2942 <clipPath
2943 clipPathUnits="userSpaceOnUse"
2944 id="clipPath8338-4">
2945 <path
2946 sodipodi:nodetypes="czzzzzzcccccccccczczz"
2947 id="path8340-7"
2948 d="m 266.27183,924.57185 c -1.40727,18.80122 -1.1449,32.75104 2.08174,49.30328 3.22666,16.55238 16.40609,45.90737 20.33441,63.18377 3.92621,17.2671 2.69413,38.3097 -12.45944,51.1482 -15.31761,12.9775 -42.05127,21.599 -67.8323,15.7338 -25.78106,-5.8653 -69.54908,-49.2234 -88.59019,-70.2283 C 100.6939,1012.6293 56.045182,939.86193 41.867507,909.4368 27.689835,879.01168 29.207902,872.71823 33.747792,863.90708 24.38107,839.38658 21.33408,813.84026 0.03533448,788.33044 30.360814,791.44487 43.915624,815.28676 60.161024,835.47019 54.631128,787.39416 42.106309,771.05368 31.787072,744.74589 c 29.994295,6.08165 50.57936,31.87239 63.979783,72.7125 9.554155,-3.91792 18.237765,-9.37294 30.187415,-9.0612 -11.2975,-41.6958 -17.94947,-69.91585 -36.687256,-101.06994 53.441966,5.67032 83.657026,80.63932 78.971426,87.9608 9.97797,-2.24399 19.00565,-6.53038 30.43653,-5.65167 -11.24897,-38.34703 -21.04782,-76.8679 -3.65971,-118.64819 0,0 48.28678,65.43688 54.38965,85.80578 6.10288,20.3689 1.51882,38.70051 1.51882,38.70051 0,0 16.95957,31.0853 20.29392,51.09414 3.3731,20.24134 -3.53269,59.10331 -4.94582,77.98323 z"
2949 style="display:inline;opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
2950 inkscape:connector-curvature="0" />
2951 </clipPath>
2952 <filter
2953 inkscape:collect="always"
2954 id="filter8333-2">
2955 <feGaussianBlur
2956 inkscape:collect="always"
2957 stdDeviation="7.18"
2958 id="feGaussianBlur8335-4" />
2959 </filter>
2960 <clipPath
2961 clipPathUnits="userSpaceOnUse"
2962 id="clipPath8359-0">
2963 <path
2964 sodipodi:nodetypes="czzzzzzcccccccccczczz"
2965 id="path8361-6"
2966 d="m 266.27183,924.57185 c -1.40727,18.80122 -1.1449,32.75104 2.08174,49.30328 3.22666,16.55238 16.40609,45.90737 20.33441,63.18377 3.92621,17.2671 2.69413,38.3097 -12.45944,51.1482 -15.31761,12.9775 -42.05127,21.599 -67.8323,15.7338 -25.78106,-5.8653 -69.54908,-49.2234 -88.59019,-70.2283 C 100.6939,1012.6293 56.045182,939.86193 41.867507,909.4368 27.689835,879.01168 29.207902,872.71823 33.747792,863.90708 24.38107,839.38658 21.33408,813.84026 0.03533448,788.33044 30.360814,791.44487 43.915624,815.28676 60.161024,835.47019 54.631128,787.39416 42.106309,771.05368 31.787072,744.74589 c 29.994295,6.08165 50.57936,31.87239 63.979783,72.7125 9.554155,-3.91792 18.237765,-9.37294 30.187415,-9.0612 -11.2975,-41.6958 -17.94947,-69.91585 -36.687256,-101.06994 53.441966,5.67032 83.657026,80.63932 78.971426,87.9608 9.97797,-2.24399 19.00565,-6.53038 30.43653,-5.65167 -11.24897,-38.34703 -21.04782,-76.8679 -3.65971,-118.64819 0,0 48.28678,65.43688 54.38965,85.80578 6.10288,20.3689 1.51882,38.70051 1.51882,38.70051 0,0 16.95957,31.0853 20.29392,51.09414 3.3731,20.24134 -3.53269,59.10331 -4.94582,77.98323 z"
2967 style="display:inline;opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
2968 inkscape:connector-curvature="0" />
2969 </clipPath>
2970 <filter
2971 inkscape:collect="always"
2972 id="filter8354-2">
2973 <feGaussianBlur
2974 inkscape:collect="always"
2975 stdDeviation="6.82"
2976 id="feGaussianBlur8356-9" />
2977 </filter>
2978 <clipPath
2979 clipPathUnits="userSpaceOnUse"
2980 id="clipPath3636-90">
2981 <path
2982 style="display:inline;opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
2983 d="m 760.16396,935.83377 c 6.7941,18.90279 10.49369,33.29969 11.8903,51.21189 1.39662,17.91234 -3.78268,51.80084 -2.90046,70.65614 0.88175,18.8452 8.13369,40.099 27.34463,48.9689 19.41887,8.9658 49.31924,10.2113 74.11984,-3.1456 24.8006,-13.357 57.40102,-70.3255 70.97426,-97.3087 13.62385,-27.08394 38.76107,-114.49737 44.6608,-149.76859 5.89973,-35.27121 2.55054,-41.30077 -4.61748,-49.05549 2.6403,-27.84015 -1.49972,-54.93543 13.10969,-87.18618 -30.24901,11.8257 -37.38229,40.1607 -48.31889,65.50508 -8.00091,-50.93293 0.20916,-71.27319 3.31889,-101.21936 -29.06476,14.77791 -42.86151,47.11402 -45,92.85714 -10.92395,-1.3042 -21.39144,-4.43423 -33.57143,-0.71429 -0.26404,-46.02334 -1.46356,-76.88941 8.91063,-114.20649 -53.25547,21.02686 -62.94728,106.5941 -56.05349,112.77792 -10.88282,0.535 -21.37108,-1.2973 -32.85714,2.85715 0.63892,-42.57135 -0.26046,-84.90861 -30,-122.85715 0,0 -30.95806,80.92234 -31.42857,103.57143 -0.47051,22.64909 9.45159,40.16588 9.45159,40.16588 0,0 -8.56807,36.74051 -6.29859,58.23223 2.29585,21.74146 20.4429,59.67617 27.26542,78.65809 z"
2984 id="path3638-8"
2985 sodipodi:nodetypes="czzzzzzcccccccccczczz"
2986 inkscape:connector-curvature="0" />
2987 </clipPath>
2988 <filter
2989 inkscape:collect="always"
2990 id="filter4185-1">
2991 <feGaussianBlur
2992 inkscape:collect="always"
2993 stdDeviation="3.6164709"
2994 id="feGaussianBlur4187-3" />
2995 </filter>
2996 <clipPath
2997 clipPathUnits="userSpaceOnUse"
2998 id="clipPath8392-1">
2999 <path
3000 sodipodi:nodetypes="czzzzzzcccccccccczczz"
3001 id="path8394-1"
3002 d="m 760.16396,935.83377 c 6.7941,18.90279 10.49369,33.29969 11.8903,51.21189 1.39662,17.91234 -3.78268,51.80084 -2.90046,70.65614 0.88175,18.8452 8.13369,40.099 27.34463,48.9689 19.41887,8.9658 49.31924,10.2113 74.11984,-3.1456 24.8006,-13.357 57.40102,-70.3255 70.97426,-97.3087 13.62385,-27.08394 38.76107,-114.49737 44.6608,-149.76859 5.89973,-35.27121 2.55054,-41.30077 -4.61748,-49.05549 2.6403,-27.84015 -1.49972,-54.93543 13.10969,-87.18618 -30.24901,11.8257 -37.38229,40.1607 -48.31889,65.50508 -8.00091,-50.93293 0.20916,-71.27319 3.31889,-101.21936 -29.06476,14.77791 -42.86151,47.11402 -45,92.85714 -10.92395,-1.3042 -21.39144,-4.43423 -33.57143,-0.71429 -0.26404,-46.02334 -1.46356,-76.88941 8.91063,-114.20649 -53.25547,21.02686 -62.94728,106.5941 -56.05349,112.77792 -10.88282,0.535 -21.37108,-1.2973 -32.85714,2.85715 0.63892,-42.57135 -0.26046,-84.90861 -30,-122.85715 0,0 -30.95806,80.92234 -31.42857,103.57143 -0.47051,22.64909 9.45159,40.16588 9.45159,40.16588 0,0 -8.56807,36.74051 -6.29859,58.23223 2.29585,21.74146 20.4429,59.67617 27.26542,78.65809 z"
3003 style="display:inline;opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3004 inkscape:connector-curvature="0" />
3005 </clipPath>
3006 <filter
3007 inkscape:collect="always"
3008 id="filter8379-0"
3009 x="-0.14413793"
3010 width="1.288276"
3011 y="-0.10278689"
3012 height="1.2055738">
3013 <feGaussianBlur
3014 inkscape:collect="always"
3015 stdDeviation="7.389266"
3016 id="feGaussianBlur8381-3" />
3017 </filter>
3018 <clipPath
3019 clipPathUnits="userSpaceOnUse"
3020 id="clipPath8417-4">
3021 <path
3022 sodipodi:nodetypes="czzzzzzcccccccccczczz"
3023 id="path8419-03"
3024 d="m 760.16396,935.83377 c 6.7941,18.90279 10.49369,33.29969 11.8903,51.21189 1.39662,17.91234 -3.78268,51.80084 -2.90046,70.65614 0.88175,18.8452 8.13369,40.099 27.34463,48.9689 19.41887,8.9658 49.31924,10.2113 74.11984,-3.1456 24.8006,-13.357 57.40102,-70.3255 70.97426,-97.3087 13.62385,-27.08394 38.76107,-114.49737 44.6608,-149.76859 5.89973,-35.27121 2.55054,-41.30077 -4.61748,-49.05549 2.6403,-27.84015 -1.49972,-54.93543 13.10969,-87.18618 -30.24901,11.8257 -37.38229,40.1607 -48.31889,65.50508 -8.00091,-50.93293 0.20916,-71.27319 3.31889,-101.21936 -29.06476,14.77791 -42.86151,47.11402 -45,92.85714 -10.92395,-1.3042 -21.39144,-4.43423 -33.57143,-0.71429 -0.26404,-46.02334 -1.46356,-76.88941 8.91063,-114.20649 -53.25547,21.02686 -62.94728,106.5941 -56.05349,112.77792 -10.88282,0.535 -21.37108,-1.2973 -32.85714,2.85715 0.63892,-42.57135 -0.26046,-84.90861 -30,-122.85715 0,0 -30.95806,80.92234 -31.42857,103.57143 -0.47051,22.64909 9.45159,40.16588 9.45159,40.16588 0,0 -8.56807,36.74051 -6.29859,58.23223 2.29585,21.74146 20.4429,59.67617 27.26542,78.65809 z"
3025 style="display:inline;opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3026 inkscape:connector-curvature="0" />
3027 </clipPath>
3028 <filter
3029 inkscape:collect="always"
3030 id="filter8404-9"
3031 x="-0.090268657"
3032 width="1.1805373"
3033 y="-0.10250848"
3034 height="1.205017">
3035 <feGaussianBlur
3036 inkscape:collect="always"
3037 stdDeviation="5.3457272"
3038 id="feGaussianBlur8406-1" />
3039 </filter>
3040 <linearGradient
3041 inkscape:collect="always"
3042 xlink:href="#linearGradient2843"
3043 id="linearGradient6951"
3044 gradientUnits="userSpaceOnUse"
3045 x1="347.89655"
3046 y1="1070.2124"
3047 x2="275.58191"
3048 y2="867.97992" />
3049 <linearGradient
3050 inkscape:collect="always"
3051 xlink:href="#linearGradient8964"
3052 id="linearGradient6953"
3053 gradientUnits="userSpaceOnUse"
3054 gradientTransform="translate(450.03125,73.843964)"
3055 x1="603.84064"
3056 y1="627.85303"
3057 x2="616.24396"
3058 y2="585.42664" />
3059 <linearGradient
3060 inkscape:collect="always"
3061 xlink:href="#linearGradient8952"
3062 id="linearGradient6955"
3063 gradientUnits="userSpaceOnUse"
3064 gradientTransform="translate(450.03125,73.843964)"
3065 x1="609.31244"
3066 y1="239.46866"
3067 x2="560.83142"
3068 y2="262.86206" />
3069 <linearGradient
3070 inkscape:collect="always"
3071 xlink:href="#linearGradient3961"
3072 id="linearGradient6957"
3073 gradientUnits="userSpaceOnUse"
3074 gradientTransform="translate(450.03125,73.843964)"
3075 x1="398.21429"
3076 y1="343.52289"
3077 x2="379.28571"
3078 y2="265.30862" />
3079 <linearGradient
3080 inkscape:collect="always"
3081 xlink:href="#linearGradient4084"
3082 id="linearGradient6959"
3083 gradientUnits="userSpaceOnUse"
3084 x1="182.35046"
3085 y1="256.11136"
3086 x2="145.53348"
3087 y2="542.20502" />
3088 <linearGradient
3089 inkscape:collect="always"
3090 xlink:href="#linearGradient4084"
3091 id="linearGradient6961"
3092 gradientUnits="userSpaceOnUse"
3093 x1="182.35046"
3094 y1="256.11136"
3095 x2="145.53348"
3096 y2="542.20502" />
3097 <linearGradient
3098 inkscape:collect="always"
3099 xlink:href="#linearGradient4478"
3100 id="linearGradient6963"
3101 gradientUnits="userSpaceOnUse"
3102 x1="412.08926"
3103 y1="404.91574"
3104 x2="417.375"
3105 y2="401.82648" />
3106 <linearGradient
3107 inkscape:collect="always"
3108 xlink:href="#linearGradient4478"
3109 id="linearGradient6965"
3110 gradientUnits="userSpaceOnUse"
3111 x1="411.91071"
3112 y1="404.91577"
3113 x2="417.375"
3114 y2="401.82648" />
3115 <linearGradient
3116 inkscape:collect="always"
3117 xlink:href="#linearGradient4478"
3118 id="linearGradient6967"
3119 gradientUnits="userSpaceOnUse"
3120 x1="411.91071"
3121 y1="405.54077"
3122 x2="417.375"
3123 y2="401.82648" />
3124 <linearGradient
3125 inkscape:collect="always"
3126 xlink:href="#linearGradient4478"
3127 id="linearGradient6969"
3128 gradientUnits="userSpaceOnUse"
3129 x1="412.08926"
3130 y1="405.54077"
3131 x2="417.375"
3132 y2="401.82648" />
3133 <linearGradient
3134 inkscape:collect="always"
3135 xlink:href="#linearGradient4478"
3136 id="linearGradient6971"
3137 gradientUnits="userSpaceOnUse"
3138 x1="411.73212"
3139 y1="405.54077"
3140 x2="417.375"
3141 y2="401.82648" />
3142 <linearGradient
3143 inkscape:collect="always"
3144 xlink:href="#linearGradient3660"
3145 id="linearGradient6973"
3146 gradientUnits="userSpaceOnUse"
3147 x1="1255.7386"
3148 y1="667.09216"
3149 x2="893.69995"
3150 y2="858.01099" />
3151 <clipPath
3152 clipPathUnits="userSpaceOnUse"
3153 id="clipPath6975">
3154 <rect
3155 id="rect6977"
3156 width="440"
3157 height="376"
3158 x="547.99994"
3159 y="205.32277"
3160 style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#f8d615;stroke-width:18;stroke-linejoin:miter;stroke-miterlimit:1;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new" />
3161 </clipPath>
3162 <marker
3163 inkscape:stockid="Arrow1Send"
3164 orient="auto"
3165 refY="0"
3166 refX="0"
3167 id="Arrow1Send-4"
3168 style="overflow:visible"
3169 inkscape:isstock="true">
3170 <path
3171 inkscape:connector-curvature="0"
3172 id="path7188-9"
3173 d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
3174 style="fill:#f8d615;fill-opacity:1;fill-rule:evenodd;stroke:#f8d615;stroke-width:1pt;stroke-opacity:1"
3175 transform="matrix(-0.2,0,0,-0.2,-1.2,0)" />
3176 </marker>
3177 </defs>
3178 <metadata
3179 id="metadata7">
3180 <rdf:RDF>
3181 <cc:Work
3182 rdf:about="">
3183 <dc:format>image/svg+xml</dc:format>
3184 <dc:type
3185 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
3186 <dc:title></dc:title>
3187 </cc:Work>
3188 </rdf:RDF>
3189 </metadata>
3190 <g
3191 inkscape:groupmode="layer"
3192 id="layer1"
3193 inkscape:label="Shadow"
3194 transform="translate(48.571445,195.53053)" />
3195 <g
3196 inkscape:groupmode="layer"
3197 id="layer20"
3198 inkscape:label="New Ear"
3199 transform="translate(48.571445,195.53053)" />
3200 <g
3201 inkscape:groupmode="layer"
3202 id="layer21"
3203 inkscape:label="Rendered2"
3204 style="display:inline"
3205 transform="translate(48.571445,195.53053)" />
3206 <g
3207 inkscape:groupmode="layer"
3208 id="layer15"
3209 inkscape:label="Feet"
3210 style="display:inline"
3211 transform="translate(48.571445,195.53053)" />
3212 <g
3213 inkscape:groupmode="layer"
3214 id="layer16"
3215 inkscape:label="Left Foot"
3216 style="display:inline"
3217 transform="translate(48.571445,195.53053)">
3218 <rect
3219 style="display:inline;opacity:1;fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:20.89992332;stroke-linejoin:miter;stroke-miterlimit:1;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
3220 id="rect6676-3-7-5"
3221 width="1876.7191"
3222 height="1562.9667"
3223 x="-38.121483"
3224 y="-86.153076" />
3225 <rect
3226 style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:20.92477036;stroke-linejoin:miter;stroke-miterlimit:1;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
3227 id="rect6676-3-7"
3228 width="1878.7875"
3229 height="1564.9603"
3230 x="2288.5129"
3231 y="-84.10511" />
3232 <rect
3233 style="display:inline;opacity:1;fill:#a8a8a8;fill-opacity:1;stroke:#f83615;stroke-width:20.39127541;stroke-linejoin:miter;stroke-miterlimit:1;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new"
3234 id="rect6676-3"
3235 width="1833.4282"
3236 height="1522.9458"
3237 x="2309.7717"
3238 y="-62.567806" />
3239 <g
3240 id="g4303">
3241 <path
3242 inkscape:export-ydpi="142.10527"
3243 inkscape:export-xdpi="142.10527"
3244 inkscape:export-filename="/home/cheeseness/Documents/LCA09/mascot/tuz_new.png"
3245 transform="matrix(10.726753,0,0,10.726753,-2882.1235,-4565.4583)"
3246 sodipodi:nodetypes="cccccccccsccccccccccc"
3247 id="path10326"
3248 d="m 304.64285,526.6479 c -10,0.35715 -18.21428,2.85714 -18.21428,2.85714 l 7.5,6.07143 10.35714,3.57143 16.07143,0.35714 22.5,-5.35714 7.85714,1.07143 20.35715,-2.14286 -10.35715,6.78572 c 5.45923,-1.02361 17.39329,3.56911 9.64286,5.35714 -1.74,0.40142 13.92857,-4.64285 13.92857,-4.64285 l 2.5,-4.64287 3.57143,-9.28571 11.42857,0 18.21428,-4.64286 3.57144,-4.99999 -16.07144,1.07142 -12.14285,2.14286 -14.64286,-5 -70.6921,16.70774 -5.37933,-5.27917 z"
3249 style="display:inline;opacity:0.5;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter11361);enable-background:new"
3250 inkscape:connector-curvature="0" />
3251 <g
3252 transform="matrix(0.71084,-0.1937433,0.262963,0.9648058,503.68027,136.48399)"
3253 id="g7882"
3254 style="display:inline;opacity:1;enable-background:new">
3255 <path
3256 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient7904);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3257 d="m 245.12255,100.05344 c 0,0 -47.12811,-31.646921 -67.21465,-35.800939 -20.03792,-4.143963 -38.4729,-3.317578 -51.93364,13.607323 -13.46074,16.924901 -12.07739,61.265196 -13.53554,86.969546 -1.45815,25.70435 2.54945,70.17701 17.6046,88.66552 15.05516,18.4885 45.88634,13.58502 49.92695,21.4137 2.21283,4.28736 65.15228,-174.85515 65.15228,-174.85515 z"
3258 id="path7876"
3259 sodipodi:nodetypes="czzzzcc"
3260 inkscape:connector-curvature="0" />
3261 <path
3262 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient7906);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3263 d="m 135.37935,82.017807 c 0,0 26.34355,1.938783 37.63307,13.903188 11.41494,12.097335 13.73457,21.331515 15.29586,37.734585 1.56337,16.42499 -0.84957,28.41812 -7.81382,36.03734 -6.96425,7.61922 -1.00429,19.58332 -25.91605,12.07107 -24.91176,-7.51225 -27.03224,-27.78298 -26.51523,-46.30475 0.51721,-18.52898 7.31617,-53.441433 7.31617,-53.441433 z"
3264 id="path7878"
3265 sodipodi:nodetypes="czzzzzc"
3266 inkscape:connector-curvature="0" />
3267 <path
3268 style="display:inline;opacity:1;fill:url(#radialGradient7908);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3269 d="m 135.648,81.927211 c 0,0 -4.64465,16.365075 0.58825,28.563099 5.48794,12.79254 27.22425,44.26007 27.22425,54.65565 l 22.65625,-5 c 2.54218,-6.96644 3.21052,-15.75206 2.1875,-26.5 -1.56129,-16.40307 -3.8663,-25.62141 -15.28125,-37.718749 -9.65488,-10.232047 -31.59311,-13.374857 -37.375,-14 z"
3270 id="path7880"
3271 sodipodi:nodetypes="czccssc"
3272 inkscape:connector-curvature="0" />
3273 </g>
3274 <path
3275 sodipodi:nodetypes="czzzcczzcc"
3276 id="path7917"
3277 d="m 845.03125,1154.7776 c -4.28571,0.7143 -27.62815,3.6181 -57.85714,10 -30.22899,6.3819 -57.31395,4.9661 -135.78608,17.3296 -79.85178,12.5808 -94.06436,42.5423 -108.12225,47.0643 -14.70014,4.7286 -145.37739,-65.8225 -145.37739,-65.8225 l 4.28572,-94.2857 c 0,0 85.88551,-16.2009 112.14285,-33.5714 26.25735,-17.3705 45.58238,-49.66602 59.28572,-71.42861 13.70334,-21.76259 32.85714,-71.42858 32.85714,-71.42858 l 238.57143,262.14289 z"
3278 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3279 inkscape:connector-curvature="0" />
3280 <path
3281 transform="translate(276,136)"
3282 sodipodi:nodetypes="ccccc"
3283 clip-path="url(#clipPath8658)"
3284 id="path7919"
3285 d="m 332.34019,898.38549 -32.73181,-61.29956 -37.61734,45.10646 c 2.17675,1.31711 5.77425,-20.85603 45.6004,-64.41708 l 24.74875,80.61018 z"
3286 style="display:inline;overflow:visible;visibility:visible;opacity:0.5;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter8888);enable-background:accumulate"
3287 inkscape:connector-curvature="0" />
3288 <path
3289 transform="translate(276,136)"
3290 sodipodi:nodetypes="cccccc"
3291 clip-path="url(#clipPath2833)"
3292 id="path7923"
3293 d="m 200.81833,863.03015 146.3711,-51.61879 243.95184,226.27414 -241.83052,140.0072 -181.01934,-87.6813 32.52692,-226.98125 z"
3294 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#linearGradient2841);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter8892);enable-background:accumulate"
3295 inkscape:connector-curvature="0" />
3296 <path
3297 sodipodi:nodetypes="czzcczcc"
3298 id="path7921"
3299 d="m 642.88839,640.13471 c 0,0 -29.55406,40.57305 -47.85714,74.28571 -18.30309,33.71267 -58.62109,126.35694 -70.35714,171.07143 -11.7594,44.80344 -62.5,123.57145 -62.5,123.57145 l 76.07143,18.2143 c 0,0 11.80712,-12.8234 31.07142,-46.07146 19.2643,-33.24808 60.35715,-138.57143 60.35715,-138.57143 l 13.21428,-202.5 z"
3300 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#0f0f0f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3301 inkscape:connector-curvature="0" />
3302 <path
3303 transform="translate(276,136)"
3304 clip-path="url(#clipPath3665)"
3305 sodipodi:nodetypes="ccccccc"
3306 id="path7925"
3307 d="m 430.28131,381.94122 c -7.07106,2.82843 -236.18124,32.15181 -236.18124,32.15181 l -39.63961,359.83304 90.19849,92.63961 52.3259,-114.5513 100.46804,-186.39192 32.82842,-183.68124 z"
3308 style="display:inline;overflow:visible;visibility:visible;opacity:0.4;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter8856);enable-background:accumulate"
3309 inkscape:connector-curvature="0" />
3310 <path
3311 sodipodi:nodetypes="czzzzcc"
3312 id="path7927"
3313 d="m 969.67051,1164.0346 c 0,0 23.25628,11.3937 36.06779,20.4761 12.6974,9.0015 29.4724,24.6491 41.6924,37.3605 12.3055,12.8002 20.1127,22.5987 41.5327,24.1608 21.4322,1.5629 53.2824,-8.7876 73.296,-24.6642 20.0135,-15.8766 45.6469,-69.2328 45.6469,-69.2328 l -127.1608,-143.0717"
3314 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3315 inkscape:connector-curvature="0" />
3316 <path
3317 transform="translate(276,136)"
3318 sodipodi:nodetypes="ccccc"
3319 clip-path="url(#clipPath8642)"
3320 id="path7929"
3321 d="M 331.34019,641.50471 216.17367,835.36467 260.2153,925.96265 357.79603,732.21539 331.34019,641.50471 Z"
3322 style="display:inline;overflow:visible;visibility:visible;opacity:0.75;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter8860);enable-background:accumulate"
3323 inkscape:connector-curvature="0" />
3324 <g
3325 inkscape:transform-center-y="-28.255779"
3326 inkscape:transform-center-x="-347.89063"
3327 transform="matrix(0.9934486,0.1142802,-0.1142802,0.9934486,-9.24324,588.09054)"
3328 id="g7931"
3329 style="display:inline;opacity:1;enable-background:new">
3330 <path
3331 id="path7933"
3332 d="m 1049.205,-282.26672 -0.09,0.008 c -1.3874,0.88445 -6.6033,1.6072 -6.629,9.52344 -0.024,7.42525 15.0129,17.09146 17.1563,18.09375 1.7302,0.80909 3.5916,1.40876 5.4063,1.71875 l 1.4374,0.21875 c 1.9197,0.21194 3.72,0.15141 5.1563,-0.0937 3.1191,-0.5324 5.1116,-0.92861 7.0937,-1.3125 1.9821,-0.38387 2.4743,-1.03965 3.5626,-1.28125 1.1287,-0.25066 2.2702,0.11629 6.25,-0.875 3.9795,-0.99128 5.4294,-1.4193 6.125,-1.78125 0.7222,-0.37601 1.7617,-0.87058 2.375,-1.53125 1.9629,-0.012 3.7937,-0.29105 5.2187,-0.84375 2.9512,-1.14461 4.8732,-1.86942 6.6875,-2.75 1.4557,-0.70653 2.3191,-1.70203 2.5312,-2 0.2123,-0.29796 0.099,-0.72855 0.125,-0.75 0.043,-0.0352 0.3405,-0.094 0.5,-0.4375 0.859,-1.84708 2.3232,-5.62764 2.4376,-6.3125 0.1137,-0.68215 0.168,-1.35277 0.2187,-1.75 0.029,-0.22951 -0.1471,-0.8789 -0.125,-0.9375 0.031,-0.082 0.2883,-0.25057 0.3437,-0.5 0.2663,-1.19832 0.089,-2.20736 -0.125,-3.625 -0.2139,-1.41764 -0.9716,-4.61463 -1.625,-5.46875 -0.4194,-0.54857 -0.7993,-0.7925 -1.1562,-0.90625 -0.067,-0.0173 -0.1239,-0.0467 -0.1875,-0.0625 -0.021,-0.004 -0.042,0.003 -0.062,0 -0.3116,-0.0755 -0.6085,-0.15867 -1.1562,-0.21875 -0.9855,-0.10812 -2.4247,-0.2594 -3.9688,-0.25 -0.5147,0.003 -1.0371,0.0476 -1.5625,0.0937 -3.5589,0.31228 -9.0098,0.99108 -10.2187,1.625 -1.6331,-0.33402 -3.9482,-0.61223 -5.9376,-0.46875 -3.064,0.22097 -4.9677,0.34219 -6.9062,0.46875 -1.9384,0.12655 -1.6861,0.38864 -2.9062,0.46875 -1.3191,0.0866 -1.7869,-0.22325 -5.5626,0.0937 -3.5457,0.29772 -8.9806,0.99317 -10.2187,1.625 -1.6334,-0.33451 -3.9459,-0.61239 -5.9375,-0.46875 -3.0642,0.22098 -4.9678,0.37344 -6.9062,0.5 -0.6592,0.043 -1.0424,0.12393 -1.3438,0.1875 z"
3333 style="display:inline;opacity:1;fill:#bcb786;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3334 inkscape:connector-curvature="0" />
3335 <g
3336 transform="matrix(0.9975712,-0.06965428,0.06965428,0.9975712,872.72062,140.02502)"
3337 id="g7935"
3338 style="display:inline;filter:url(#filter7610);enable-background:new"
3339 clip-path="url(#clipPath7616)">
3340 <path
3341 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3342 d="m 229.94262,-409.12268 c -3.55781,0.05 -9.0242,0.36009 -10.30334,0.90414 -1.60609,-0.44747 -3.90316,-0.88131 -5.89995,-0.87674 -3.07199,0.007 -4.96469,0.009 -6.90727,0 -0.66047,-0.003 -1.04759,0.0672 -1.35267,0.10959 0,0 0,1.09593 0,1.09593 0.11972,-0.17947 0.39252,-0.69046 0.94975,-0.76715 0.74758,-0.10289 5.16928,-0.15123 7.31019,-0.1096 1.7746,0.0345 4.45523,0.27427 6.38921,0.95895 0.3214,0.11378 0.61925,0.27378 0.89219,0.41097 1.96342,0.98693 7.94336,4.30154 7.94336,4.30154 0,0 -6.63275,-3.94768 -7.48287,-4.43853 -0.20331,-0.11739 -0.57464,-0.25769 -1.03609,-0.41098 1.22063,-0.44779 5.07597,-0.61971 7.82823,-0.71235 3.0245,-0.10182 3.34776,-0.0896 5.41069,0.19179 2.12931,0.29043 3.33851,0.60276 3.33851,0.60276 -1e-5,0 -0.0784,-0.64118 1.03609,-0.79455 0.74757,-0.10289 5.16929,-0.15123 7.31019,-0.1096 2.0695,0.0403 5.36605,0.40716 7.2814,1.36992 1.00332,0.50433 3.03564,1.56863 4.79535,2.53571 l 0.0956,-0.0194 c 0,0 -3.58034,-2.16242 -4.43047,-2.65327 -0.20331,-0.11739 -0.57463,-0.25769 -1.03609,-0.41098 1.22062,-0.44779 5.04719,-0.61971 7.79945,-0.71235 3.0245,-0.10182 3.34775,-0.0896 5.41069,0.19179 1.95316,0.2664 3.01292,0.53006 3.19461,0.57536 0,0 -0.0271,-0.31146 -0.0271,-0.31146 -0.40903,-0.13645 -0.71424,-0.23335 -1.40038,-0.35748 -1.30081,-0.23533 -3.39912,-0.60156 -5.50857,-0.56398 -3.57195,0.0636 -9.05328,0.35596 -10.30334,0.90414 -1.60583,-0.44695 -3.87662,-0.8813 -5.87117,-0.87674 -3.07199,0.007 -4.99348,0.009 -6.93605,0 -1.94256,-0.009 -1.71268,0.27907 -2.93558,0.27398 -1.32191,-0.005 -1.76612,-0.35463 -5.55459,-0.30138 0,0 0,0 0,0"
3343 id="path7937"
3344 sodipodi:nodetypes="ccssscsssscscsscsssccscssccsscssscc"
3345 inkscape:connector-curvature="0" />
3346 <path
3347 sodipodi:nodetypes="cssccsscc"
3348 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3349 d="m 206.1989,-407.47878 c 1.92021,0.81706 4.57715,2.19283 6.15897,3.39739 1.58184,1.20456 2.90757,1.77368 5.55459,3.91795 0.88557,0.71738 1.74865,1.34985 2.59193,1.92174 l 0.54057,-0.19011 c -0.71323,-0.48339 -1.46776,-1.02031 -2.26909,-1.62203 -2.82223,-2.11921 -3.62655,-2.80973 -6.01507,-4.27414 -2.38854,-1.4644 -4.09948,-2.36576 -6.5619,-3.1508 0,0 0,0 0,0"
3350 id="path7939"
3351 inkscape:connector-curvature="0" />
3352 <path
3353 sodipodi:nodetypes="csccscc"
3354 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3355 d="m 237.79963,-407.47878 c 1.92021,0.81706 4.60594,2.19283 6.18775,3.39739 0.81307,0.61916 1.55849,1.07042 2.45046,1.65401 l 0.649,-0.11666 c -0.79831,-0.57637 -1.57177,-1.09435 -2.69653,-1.78394 -2.38854,-1.4644 -4.12826,-2.36576 -6.59068,-3.1508 0,0 0,0 0,0"
3356 id="path7941"
3357 inkscape:connector-curvature="0" />
3358 </g>
3359 <g
3360 id="g7943"
3361 clip-path="url(#clipPath7606)">
3362 <path
3363 sodipodi:nodetypes="czzzzzzzzzzzzzz"
3364 id="path7945"
3365 d="m 1056.25,-278.80481 c 4.1446,-1.47877 10,3.125 10,3.125 0.899,0.28092 2.7251,-0.89447 2.6243,-1.68614 0,0 -1.5503,-1.86062 -0.3743,-2.93886 1.176,-1.07824 5.296,1.50738 7.5,1.625 2.204,0.11762 5.5621,-0.22941 7,-0.75 1.4379,-0.52059 1.1129,-1.42459 2.625,-1.75 1.5121,-0.32541 5.1189,1.03754 7.0605,1.16883 1.9416,0.13129 4.6481,0.33427 5.8145,-0.16883 1.1664,-0.5031 0.1782,-1.15921 1.875,-1.875 1.6968,-0.71579 7.7602,-0.95662 9.625,-0.125 1.8648,0.83162 1.8099,0.5192 2.625,3 0.8151,2.4808 7.4398,5.16285 -1.125,13.375 -8.5648,8.21215 -59.3779,13.78594 -65.625,2.75 -6.2471,-11.03594 6.2304,-14.27123 10.375,-15.75 z"
3366 style="display:inline;opacity:0.75;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7578);enable-background:new"
3367 inkscape:connector-curvature="0" />
3368 <path
3369 sodipodi:nodetypes="czzzzzzzzzzzzzz"
3370 id="path7947"
3371 d="m 1058.5,-275.42981 c 4.1446,-1.47877 10,3.125 10,3.125 0.899,0.28092 2.7251,-0.89447 2.6243,-1.68614 0,0 -1.5503,-1.86062 -0.3743,-2.93886 1.176,-1.07824 5.296,1.50738 7.5,1.625 2.204,0.11762 5.5621,-0.22941 7,-0.75 1.4379,-0.52059 1.1129,-1.42459 2.625,-1.75 1.5121,-0.32541 5.1189,1.03754 7.0605,1.16883 1.9416,0.13129 4.6481,0.33427 5.8145,-0.16883 1.1664,-0.5031 0.1782,-1.15921 1.875,-1.875 1.6968,-0.71579 7.7602,-0.95662 9.625,-0.125 1.8648,0.83162 1.8099,0.5192 2.625,3 0.8151,2.4808 7.4398,5.16285 -1.125,13.375 -8.5648,8.21215 -59.3779,13.78594 -65.625,2.75 -6.2471,-11.03594 6.2304,-14.27123 10.375,-15.75 z"
3372 style="display:inline;opacity:0.75;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7594);enable-background:new"
3373 inkscape:connector-curvature="0" />
3374 </g>
3375 </g>
3376 <path
3377 sodipodi:nodetypes="cscccccccccccc"
3378 id="path7949"
3379 d="m 628.24553,347.99185 c -3.80443,-25.26423 -16.80972,-50.63802 -17.1568,-75.52523 -0.18626,-13.35552 3.27285,-26.57091 13.75553,-39.55405 36.34702,-65.29583 116.94091,-84.69468 185.93466,-91.46542 86.92239,-11.0168 184.91267,17.94007 233.37138,95.40128 54.124,75.7333 56.6747,172.53912 80.612,259.52795 29.4378,127.1276 54.7791,256.21414 60.3922,386.85035 -3.0634,78.18185 -8.4263,165.18417 -60.5032,228.13417 -48.0265,50.3574 -122.7864,50.053 -187.06985,59.0023 -90.55539,4.655 -184.35153,-16.1458 -261.7839,-64.1982 -64.77564,-37.94 -95.73019,-113.47867 -97.2794,-186.01962 -8.38917,-79.87516 26.39152,-153.80851 51.6204,-227.15961 7.47061,-82.76107 9.41286,-166.24775 9.65334,-249.38484 -0.83682,-32.19544 -7.08953,-63.81733 -11.54636,-95.60908 z"
3380 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#101414;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3381 inkscape:connector-curvature="0" />
3382 <path
3383 transform="translate(276,136)"
3384 clip-path="url(#clipPath8616)"
3385 sodipodi:nodetypes="ccccczzzcc"
3386 id="path7951"
3387 d="m 311.83409,415.43155 9.8995,121.62237 -60.10408,136.47161 15.55635,174.65537 c 15.61326,61.8792 32.18545,98.66905 74.37615,117.05383 4.31911,-36.23998 -38.61152,-142.95988 -39.24264,-189.11984 -0.63145,-46.18445 10.83034,-108.60786 30.67767,-158.29647 20.04835,-50.19188 36.89674,-44.84642 42.12489,-92.59293 5.22815,-47.74651 -17.4264,-149.39192 -17.4264,-149.39192 l -55.86144,39.59798 z"
3388 style="display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter8940);enable-background:accumulate"
3389 inkscape:connector-curvature="0" />
3390 <path
3391 sodipodi:nodetypes="czcc"
3392 id="path7953"
3393 d="m 1010.0312,655.49186 c 0,0 16.7552,37.01806 28.7015,53.95395 11.9462,16.93589 52.7271,56.04605 52.7271,56.04605 l 52.5972,-127.58975"
3394 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#linearGradient8970);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3395 inkscape:connector-curvature="0" />
3396 <path
3397 transform="translate(276,136)"
3398 clip-path="url(#clipPath8209)"
3399 sodipodi:nodetypes="cccc"
3400 id="path7955"
3401 d="m 730.31998,536.56864 c 0,8.48528 42.54774,58.46803 42.54774,58.46803 l 12.60659,-28.76954 -55.15433,-29.69849 z"
3402 style="display:inline;overflow:visible;visibility:visible;opacity:0.07999998;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter8822);enable-background:accumulate"
3403 inkscape:connector-curvature="0" />
3404 <g
3405 clip-path="url(#clipPath3998)"
3406 id="g7957"
3407 style="display:inline;opacity:1;enable-background:new"
3408 transform="translate(450.03125,73.843964)">
3409 <g
3410 id="g7959"
3411 style="filter:url(#filter3677)"
3412 transform="translate(-174.03125,62.156036)">
3413 <g
3414 style="filter:url(#filter3785)"
3415 id="g7961">
3416 <path
3417 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3418 d="m 425.88244,476.99186 c 10.80543,-1.47866 24.74401,3.35451 44.64286,3.21428 19.89885,-0.14023 57.45322,-16.91122 82.14285,-17.14286 24.68963,-0.23164 62.7517,12.28406 79.28572,15 16.53402,2.71594 22.84832,-0.15852 27.49999,7.85715 4.65167,8.01567 1.92671,10.74724 -10.35714,20.71429 -12.28385,9.96705 -40.78968,12.63632 -66.07143,12.85714 -25.28234,0.22082 -70.38129,7.07852 -95.35714,3.92856 -24.97585,-3.14996 -56.93756,-7.82267 -68.92857,-17.85714 -11.99101,-10.03447 -19.85084,-16.73182 -17.5,-23.92857 2.35084,-7.19675 13.83743,-3.16419 24.64286,-4.64285 z"
3419 id="path7963"
3420 sodipodi:nodetypes="czzzzzzzzzz"
3421 inkscape:connector-curvature="0" />
3422 <rect
3423 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3424 id="rect7965"
3425 width="381.83765"
3426 height="181.01935"
3427 x="343.6539"
3428 y="412.60312" />
3429 </g>
3430 <g
3431 style="filter:url(#filter3785)"
3432 id="g7967">
3433 <path
3434 transform="translate(174.03125,-62.156036)"
3435 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3436 d="m 687.14286,452.36218 c -10.46169,9.71443 -86.9796,19.00514 -100.71429,29.28572 -13.73469,10.28058 -14.75252,12.88826 -12.14286,20 2.60966,7.11174 6.54527,9.40572 25.71429,8.57142 19.16902,-0.8343 98.57143,-27.62172 98.57143,-21.42857 l -11.42857,-36.42857 z"
3437 id="path7969"
3438 sodipodi:nodetypes="czzzcc"
3439 inkscape:connector-curvature="0" />
3440 <rect
3441 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3442 id="rect7971"
3443 width="207.8894"
3444 height="162.63455"
3445 x="702.86414"
3446 y="344.82138" />
3447 </g>
3448 </g>
3449 <g
3450 id="g7973"
3451 style="display:inline;opacity:0.18000004;enable-background:new"
3452 transform="translate(-174.03125,62.156036)">
3453 <g
3454 style="filter:url(#filter3785)"
3455 id="g7975">
3456 <path
3457 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3458 d="m 425.88244,476.99186 c 10.80543,-1.47866 24.74401,3.35451 44.64286,3.21428 19.89885,-0.14023 57.45322,-16.91122 82.14285,-17.14286 24.68963,-0.23164 62.7517,12.28406 79.28572,15 16.53402,2.71594 22.84832,-0.15852 27.49999,7.85715 4.65167,8.01567 1.92671,10.74724 -10.35714,20.71429 -12.28385,9.96705 -40.78968,12.63632 -66.07143,12.85714 -25.28234,0.22082 -70.38129,7.07852 -95.35714,3.92856 -24.97585,-3.14996 -56.93756,-7.82267 -68.92857,-17.85714 -11.99101,-10.03447 -19.85084,-16.73182 -17.5,-23.92857 2.35084,-7.19675 13.83743,-3.16419 24.64286,-4.64285 z"
3459 id="path7977"
3460 sodipodi:nodetypes="czzzzzzzzzz"
3461 inkscape:connector-curvature="0" />
3462 <rect
3463 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3464 id="rect7979"
3465 width="381.83765"
3466 height="181.01935"
3467 x="343.6539"
3468 y="412.60312" />
3469 </g>
3470 <g
3471 style="filter:url(#filter3785)"
3472 id="g7981">
3473 <path
3474 transform="translate(174.03125,-62.156036)"
3475 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3476 d="m 687.14286,452.36218 c -10.46169,9.71443 -86.9796,19.00514 -100.71429,29.28572 -13.73469,10.28058 -14.75252,12.88826 -12.14286,20 2.60966,7.11174 6.54527,9.40572 25.71429,8.57142 19.16902,-0.8343 98.57143,-27.62172 98.57143,-21.42857 l -11.42857,-36.42857 z"
3477 id="path7983"
3478 sodipodi:nodetypes="czzzcc"
3479 inkscape:connector-curvature="0" />
3480 <rect
3481 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3482 id="rect7985"
3483 width="207.8894"
3484 height="162.63455"
3485 x="702.86414"
3486 y="344.82138" />
3487 </g>
3488 </g>
3489 </g>
3490 <path
3491 transform="translate(276,136)"
3492 sodipodi:nodetypes="cccccscc"
3493 clip-path="url(#clipPath8604)"
3494 id="path7987"
3495 d="M 582.65599,-7.4183011 695.79307,78.848726 804.68752,337.64981 842.87128,545.5392 963.07944,637.46308 c 0,0 -12.72793,-287.08535 -19.799,-313.95541 C 936.20938,296.63761 793.37381,-69.643698 793.37381,-69.643698 L 582.65599,-7.4183011 Z"
3496 style="display:inline;overflow:visible;visibility:visible;opacity:0.75;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter8802);enable-background:accumulate"
3497 inkscape:connector-curvature="0" />
3498 <path
3499 sodipodi:nodetypes="czzzzzzc"
3500 id="path7989"
3501 d="m 964.13839,239.599 c 0,0 8.67732,10.89662 24.10715,11.96428 15.42986,1.06766 49.72166,-39.95267 70.17856,-52.14285 20.4793,-12.20353 47.0464,-26.60225 63.9286,-20.35714 16.8821,6.2451 22.1578,26.43609 27.8571,48.03571 5.6994,21.59961 6.7186,61.81389 -2.6785,92.85715 -9.3972,31.04325 -50.5033,73.10375 -65.3572,103.39285 -14.8539,30.2891 -11.6071,39.82143 -11.6071,39.82143"
3502 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#linearGradient8958);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3503 inkscape:connector-curvature="0" />
3504 <path
3505 sodipodi:nodetypes="czzzzc"
3506 id="path7991"
3507 d="m 1124.4955,207.63471 c -15.8928,-0.89286 -49.7188,12.10583 -66.0714,24.28572 -16.4386,12.2439 -29.2209,24.1144 -29.2857,52.14285 -0.065,28.20604 13.1191,39.07641 29.1071,46.96429 15.988,7.88789 33.6862,7.11928 51.9643,-11.78571 18.2782,-18.905 14.2857,-111.60715 14.2857,-111.60715 z"
3508 style="display:inline;opacity:1;fill:url(#radialGradient3315);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3509 inkscape:connector-curvature="0" />
3510 <ellipse
3511 clip-path="url(#clipPath4100)"
3512 transform="matrix(0.9434749,-0.1239943,0.1440089,1.0957669,451.94827,134.5988)"
3513 id="path7993"
3514 style="display:inline;overflow:visible;visibility:visible;opacity:0.75;fill:url(#radialGradient3543);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter4120);enable-background:accumulate"
3515 cx="385"
3516 cy="237.00504"
3517 rx="86.428574"
3518 ry="73.928574" />
3519 <path
3520 mask="url(#mask3684)"
3521 sodipodi:nodetypes="csczzc"
3522 id="path7995"
3523 d="m 527.60588,407.44884 c 0,0 -122.04144,38.40348 -187.51434,9.63181 -65.47289,-28.77166 -74.37725,-124.71847 -74.37725,-124.71847 0,0 73.38158,-80.50393 129.92078,-83.61476 55.82705,-3.07164 90.57386,20.14332 114.87001,65.85171 24.352,45.81348 17.1008,132.84971 17.1008,132.84971 z"
3524 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient3915);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3525 transform="translate(450.03125,73.843964)"
3526 inkscape:connector-curvature="0" />
3527 <path
3528 sodipodi:nodetypes="czcc"
3529 id="path7997"
3530 d="m 772.17411,393.349 c 0,0 36.21754,-27.38247 51.60714,-35.89286 15.17734,-8.39301 25.71428,-11.60714 35.89285,-11.60714 l -15.53571,66.96428"
3531 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#linearGradient3959);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3532 inkscape:connector-curvature="0" />
3533 <circle
3534 transform="translate(449.49554,74.915393)"
3535 id="path7999"
3536 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient3933);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3537 cx="409.28571"
3538 cy="306.64789"
3539 r="36.25" />
3540 <path
3541 transform="translate(276,136)"
3542 clip-path="url(#clipPath8616)"
3543 sodipodi:nodetypes="cccccccccc"
3544 id="path8001"
3545 d="m 311.83409,415.43155 9.8995,121.62237 -60.10408,136.47161 15.55635,174.65537 c 15.61326,61.8792 32.18545,98.66905 74.37615,117.05383 4.31911,-36.23998 8.68161,-72.36764 -31.24264,-223.11984 l 17.67767,-69.29647 72.12489,-138.59293 -42.4264,-158.39192 -55.86144,39.59798 z"
3546 style="display:inline;overflow:visible;visibility:visible;opacity:0.3;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter8806);enable-background:accumulate"
3547 inkscape:connector-curvature="0" />
3548 <path
3549 sodipodi:nodetypes="czzcc"
3550 id="path8003"
3551 d="m 635.21025,581.13004 c -14.14214,12.72792 39.23347,34.58015 76.36753,24.04163 37.13406,-10.53852 104.64487,-35.56437 103.23759,-79.19596 -1.40728,-43.63158 -76.36753,-128.69343 -76.36753,-128.69343 L 635.21025,581.13004 Z"
3552 style="display:inline;overflow:visible;visibility:visible;opacity:0.5;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter8826);enable-background:accumulate"
3553 inkscape:connector-curvature="0" />
3554 <circle
3555 transform="translate(449.67411,74.915393)"
3556 id="path8005"
3557 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient3991);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3558 cx="410"
3559 cy="306.64789"
3560 r="23.214285" />
3561 <circle
3562 transform="translate(451.99554,73.486821)"
3563 id="path8007"
3564 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter3981);enable-background:accumulate"
3565 cx="414.28571"
3566 cy="303.07648"
3567 r="7.5" />
3568 <path
3569 sodipodi:nodetypes="czzzczc"
3570 id="path8009"
3571 d="m 789.31696,478.349 c 0,0 7.02281,19.56859 -1.07143,35 -8.09424,15.43141 -42.32317,38.98822 -67.49999,50 -25.30972,11.06991 -85.473,32.96393 -101.78572,41.96428 -16.46148,9.08243 -18.21428,12.67857 -18.21428,12.67857 0,0 -7.14693,-19.06441 28.74999,-51.7857 36.17211,-32.97214 142.02712,-48.0495 159.82143,-87.85715 z"
3572 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient4112);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3573 inkscape:connector-curvature="0" />
3574 <g
3575 transform="translate(780.74553,74.55825)"
3576 id="g8011"
3577 style="display:inline;opacity:1;enable-background:new">
3578 <path
3579 style="display:inline;opacity:1;fill:url(#radialGradient3585);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
3580 d="m 179.64286,267.36218 c -22.41044,39.70292 -60.6161,115.78029 -69.28571,149.64286 -8.64721,33.7751 -8.77199,66.41654 -0.35715,86.42858 8.3602,19.88213 26.16398,35.6328 40.71428,41.42856 -0.59638,-14.37587 14.37295,-43.28583 72.85715,-72.5 58.62627,-29.28514 78.38163,-27.13086 103.57142,-47.14286 25.63006,-20.36176 8.20587,-79.64664 3.21429,-93.92857 -4.99158,-14.28193 -1.23663,-3.37974 -1.94602,-5.09301 -10.68928,-25.81592 -34.21432,-54.4303 -64.48255,-64.54984 -30.26823,-10.11954 -65.01776,-4.84837 -84.28571,5.71428 z"
3581 id="path8013"
3582 sodipodi:nodetypes="czzczzzszc"
3583 clip-path="url(#clipPath3999)"
3584 transform="translate(-329.81481,0)"
3585 inkscape:connector-curvature="0" />
3586 <ellipse
3587 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient4060);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3588 id="path8015"
3589 transform="matrix(0.8823874,0.4705236,-0.4705236,0.8823874,-166.62245,2.387362)"
3590 cx="183.57143"
3591 cy="338.07648"
3592 rx="64.715881"
3593 ry="134.00607" />
3594 <ellipse
3595 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient4062);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3596 id="path8017"
3597 transform="matrix(0.8823874,0.4705236,-0.4705236,0.8823874,-162.19388,-18.755495)"
3598 cx="183.57143"
3599 cy="338.07648"
3600 rx="64.715881"
3601 ry="134.00607" />
3602 <path
3603 style="display:inline;opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3587);stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4079);enable-background:new"
3604 d="m 179.64286,267.36218 c -22.41044,39.70292 -60.6161,115.78029 -69.28571,149.64286 -8.64721,33.7751 -8.77199,66.41654 -0.35715,86.42858 8.3602,19.88213 26.16398,35.6328 40.71428,41.42856 -0.59638,-14.37587 14.37295,-43.28583 72.85715,-72.5 58.62627,-29.28514 78.38163,-27.13086 103.57142,-47.14286 25.63006,-20.36176 8.20587,-79.64664 3.21429,-93.92857 -4.99158,-14.28193 -1.23663,-3.37974 -1.94602,-5.09301 -10.68928,-25.81592 -34.21432,-54.4303 -64.48255,-64.54984 -30.26823,-10.11954 -65.01776,-4.84837 -84.28571,5.71428 z"
3605 id="path8019"
3606 sodipodi:nodetypes="czzczzzszc"
3607 clip-path="url(#clipPath3999)"
3608 transform="translate(-329.81481,3e-7)"
3609 inkscape:connector-curvature="0" />
3610 </g>
3611 <circle
3612 transform="translate(452.55663,72.581273)"
3613 id="path8021"
3614 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3615 cx="310.71429"
3616 cy="398.07648"
3617 r="19.704132" />
3618 <circle
3619 transform="translate(450.55663,72.581273)"
3620 id="path8023"
3621 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient4056);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4082);stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter4083);enable-background:accumulate"
3622 cx="310.71429"
3623 cy="398.07648"
3624 r="19.704132" />
3625 <circle
3626 transform="translate(450.55663,72.581273)"
3627 id="path8025"
3628 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient4119);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3629 cx="310.71429"
3630 cy="398.07648"
3631 r="19.704132" />
3632 <ellipse
3633 inkscape:transform-center-y="-3.6935079"
3634 inkscape:transform-center-x="-47.231976"
3635 transform="matrix(0.9969564,-0.07796167,0.07796167,0.9969564,436.61877,125.29509)"
3636 id="path8027"
3637 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient4868);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter4002);enable-background:accumulate"
3638 cx="429.56738"
3639 cy="377.42877"
3640 rx="72.079735"
3641 ry="44.547726" />
3642 <ellipse
3643 inkscape:transform-center-y="-13.056625"
3644 inkscape:transform-center-x="-20.955902"
3645 transform="matrix(1.4357951,-0.06999104,0.06999104,1.4357951,235.18065,-63.86546)"
3646 id="path8029"
3647 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient4876);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter4010);enable-background:accumulate"
3648 cx="437.6991"
3649 cy="391.21735"
3650 rx="36.611931"
3651 ry="22.627417" />
3652 <g
3653 style="display:inline;opacity:1;filter:url(#filter4053);enable-background:new"
3654 id="g8031"
3655 transform="translate(450.03125,73.843964)">
3656 <circle
3657 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4484);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3658 id="path8033"
3659 cx="413.66071"
3660 cy="401.82648"
3661 r="3.2142856" />
3662 <circle
3663 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4486);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3664 id="path8035"
3665 transform="translate(13.125009,8.1249913)"
3666 cx="413.66071"
3667 cy="401.82648"
3668 r="3.2142856" />
3669 <circle
3670 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4488);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3671 id="path8037"
3672 transform="translate(32.946437,7.4999913)"
3673 cx="413.66071"
3674 cy="401.82648"
3675 r="3.2142856" />
3676 <circle
3677 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4490);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3678 id="path8039"
3679 transform="translate(24.910723,-10.267866)"
3680 cx="413.66071"
3681 cy="401.82648"
3682 r="3.2142856" />
3683 <circle
3684 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient4492);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3685 id="path8041"
3686 transform="translate(47.589294,-0.6250087)"
3687 cx="413.66071"
3688 cy="401.82648"
3689 r="3.2142856" />
3690 </g>
3691 <path
3692 sodipodi:nodetypes="ccccccccc"
3693 id="path8043"
3694 d="m 896.20301,482.92837 c 0.98509,4.35008 4.53707,6.17948 7.38673,7.89182 4.46068,2.51292 6.52016,1.52211 9.15451,-0.75761 1.60195,-1.92117 10.68311,-4.69865 15.59423,-7.07107 4.32961,-1.45891 8.9033,-5.35873 13.38452,-8.33376 3.39514,-1.62724 5.34664,0.35464 7.82868,1.01015 2.94412,0.71661 4.41117,2.17175 6.06092,3.53554 2.39616,1.17519 -0.9279,3.14313 3.283,4.29314 1.19091,0.21794 2.41695,0.57645 3.28299,-0.50507"
3695 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3696 inkscape:connector-curvature="0" />
3697 <path
3698 sodipodi:nodetypes="cccccccccccc"
3699 id="path8045"
3700 d="m 910.85021,475.35223 c 2.31494,-0.032 3.17778,0.64253 5.49271,-0.82075 3.45564,-3.08113 5.40254,-3.14477 7.95495,-4.41942 3.02657,-1.31523 6.5357,8.15169 10.10153,9.84899 2.39509,-0.82142 1.28914,1.79379 1.45209,2.65165 0.0571,2.64684 2.80694,3.67806 4.35628,5.42957 3.31604,2.25549 7.37523,6.29546 11.11168,5.3033 6.44525,-2.93107 10.27922,-1.28146 16.28871,-7.38674 0.70405,-1.18134 -0.58425,-6.8946 3.09359,-7.19734 2.52399,0.25338 4.16667,0.0502 6.06092,0.56822 5.441,2.11719 7.73778,6.45 14.71034,7.95495 6.1829,0.96639 7.61264,3.79426 13.88959,5.05076"
3701 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3702 inkscape:connector-curvature="0" />
3703 <path
3704 sodipodi:nodetypes="ccccccccccccc"
3705 id="path8047"
3706 d="m 876.98133,483.52197 c 2.39858,-0.7938 6.10613,4.1921 8.17313,7.04568 0.59281,2.67952 1.15377,5.48645 0.75761,12.12183 0.78513,2.41754 2.68049,3.03095 4.79823,3.283 3.11745,-0.53678 5.87669,-1.3243 7.3236,-3.03046 1.8716,-1.94167 5.31253,2.39394 8.08122,4.04061 3.61009,1.91209 7.77378,1.97886 11.8693,2.27284 1.70358,-0.23064 2.3704,4.51515 3.28299,8.08123 0.38414,4.37806 -0.88544,6.89569 -1.76776,9.84898 -0.2943,2.49655 2.9885,3.52974 6.31345,4.54569 3.18244,0.74124 6.54424,1.66184 9.09137,1.76777 5.14186,0.87491 8.08874,2.69052 12.12183,4.04061 2.23914,0.81655 3.26019,2.24216 4.54569,3.53553"
3707 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3708 inkscape:connector-curvature="0" />
3709 <path
3710 transform="translate(276,136)"
3711 clip-path="url(#clipPath8514)"
3712 id="path8049"
3713 d="m 332,187.69519 c 0,0 57.5,-25.5 57.5,-28 0,-2.5 5.5,-52 5.5,-52 0,0 91,-48.500001 91.5,-50.500001 0.5,-2 86,-62.0000004 86,-62.0000004 L 386.5,17.195189 311,123.19519 l 21,64.5 z"
3714 style="display:inline;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter8814);enable-background:new"
3715 inkscape:connector-curvature="0" />
3716 <path
3717 id="path8051"
3718 d="m 1697.2846,722.5514 c 0,0 -115.9655,73.5391 -123.0365,77.78174 -7.0711,4.24264 -230.5169,137.17872 -230.5169,137.17872 l 4.2427,39.59798 216.3747,-100.40917 117.3797,-101.82337 15.5563,-52.3259 z"
3719 style="display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3720 inkscape:connector-curvature="0" />
3721 <path
3722 transform="translate(276,136)"
3723 sodipodi:nodetypes="cccccscccc"
3724 clip-path="url(#clipPath8610)"
3725 id="path8053"
3726 d="m 528.91587,556.85291 c -5.65685,-1.41421 -181.01933,74.95332 -181.01933,74.95332 l -33.94113,181.01934 51.09546,193.94823 257.2031,67.6813 c 0,0 206.47518,152.735 212.13203,148.4924 5.65686,-4.2426 168.2914,-193.7473 168.2914,-193.7473 L 842.87128,845.35248 796.20224,667.16157 528.91587,556.85291 Z"
3727 style="display:inline;overflow:visible;visibility:visible;opacity:0.5;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter8810);enable-background:accumulate"
3728 inkscape:connector-curvature="0" />
3729 <path
3730 sodipodi:nodetypes="czzzzzzczczczczzzc"
3731 id="path8055"
3732 d="m 1097.6433,613.88997 c 0,0 22.6195,-6.50681 35.7427,-5.87273 13.1233,0.63409 30.6416,1.93862 43.7089,12.18619 13.0673,10.24756 25.0677,27.14007 34.1124,58.36965 9.0446,31.22958 1.6983,99.25201 -6.1761,143.34735 -7.8743,44.09534 -28.2651,106.11298 -45,140 -16.7348,33.88702 -49.7977,77.49517 -60.5694,89.87617 -11.3642,13.062 -56.2059,36.4262 -79.4306,42.2667 5.3034,-10.6066 48.8998,-50.5889 35,-60.7143 -14.0189,-10.2123 -45.76,45.9824 -84.2931,29.0332 21.38231,-13.1321 41.7794,-51.1861 34.0406,-66.59448 -7.84024,-15.61039 -30.70492,48.75758 -93.53553,37.01288 30.05204,-27.5267 55.40706,-70.90401 41.2627,-82.9797 -14.41516,-12.30687 -60.46175,54.2932 -60.46175,54.2932 0,0 -2.8219,-41.70123 13.7732,-68.60737 16.63935,-26.97787 79.65297,-81.61527 99.55308,-111.70342 19.9002,-30.08814 33.6126,-66.00902 42.1355,-92.51794 8.5228,-26.50892 15.8009,-77.09954 15.8009,-77.09954"
3733 style="display:inline;opacity:1;fill:#0c0c0c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3734 inkscape:connector-curvature="0" />
3735 <path
3736 transform="translate(276,136)"
3737 sodipodi:nodetypes="cccccccccc"
3738 clip-path="url(#clipPath8622)"
3739 id="path8057"
3740 d="m 770.74639,609.17881 -50.91169,97.58074 -79.90307,111.01576 34.64824,71.41778 42.42641,79.19597 72.12489,-45.25484 14.14214,-192.33305 21.2132,-138.59292 -14.14214,-90.15612 -39.59798,107.12668 z"
3741 style="display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter8818);enable-background:accumulate"
3742 inkscape:connector-curvature="0" />
3743 <path
3744 transform="translate(276,136)"
3745 sodipodi:nodetypes="cczcccccc"
3746 clip-path="url(#clipPath8906)"
3747 id="path8059"
3748 d="m 295,846.19519 6.64488,-68.92285 c 0,0 90.31951,89.00457 162.35512,122.92285 72.03561,33.91828 308,62 308,62 l 154,-26 -36,162.00001 -286,26 -298,-89 -11,-189.00001 z"
3749 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter8810);enable-background:accumulate"
3750 inkscape:connector-curvature="0" />
3751 <path
3752 clip-path="url(#clipPath3602)"
3753 sodipodi:nodetypes="cccccccccccc"
3754 id="path8061"
3755 d="m 405.79629,845.99023 74.95332,65.05383 2.49963,16.8804 19.40336,10.15891 6.49204,23.05109 31.70905,-8.3711 14.84924,48.08324 c 12.25652,12.7279 89.79344,-113.1097 55.86143,38.1838 l -60.81118,16.2635 -89.20292,-94.69286 -62.82503,-53.79963 7.07106,-60.81118 z"
3756 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3587);enable-background:new"
3757 transform="translate(450.03125,73.843964)"
3758 inkscape:connector-curvature="0" />
3759 <path
3760 sodipodi:nodetypes="czzzzzzzzcc"
3761 id="path8063"
3762 d="m 1159.317,918.349 c 54.2857,-1.42857 126.035,-15.05199 170,-26.78572 44.0527,-11.75714 125.8863,-36.34724 175.357,-57.85714 49.3393,-21.45272 113.6038,-59.2816 154.2859,-92.14285 40.5081,-32.72069 52.3899,-55.81981 60.7142,-33.57143 8.3691,22.36779 -16.4069,56.32562 -37.8571,81.07143 -21.6042,24.9234 -52.7314,52.70533 -98.9287,89.28571 -46.1973,36.58038 -156.0825,101.58463 -212.8571,128.5714 -57.066,27.1254 -128.2033,58.2385 -172.1428,72.5001 -43.9395,14.2616 -131.4286,31.0714 -131.4286,31.0714 L 1159.317,918.349 Z"
3763 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#121212;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3764 inkscape:connector-curvature="0" />
3765 <path
3766 clip-path="url(#clipPath3992)"
3767 sodipodi:nodetypes="czczzcc"
3768 id="path8065"
3769 d="m 1241.5965,652.95007 c 0,0 -64.7215,54.33706 -145.6639,98.99494 -82.0244,45.25484 -284.25704,93.3381 -284.25704,93.3381 0,0 -15.10137,21.05196 45.25489,28.28428 60.35626,7.23232 224.08195,-53.30069 278.60015,-96.16654 54.5182,-42.86585 120.2081,-111.72286 120.2081,-111.72286 l -14.1422,-12.72792 z"
3770 style="display:inline;overflow:visible;visibility:visible;opacity:0.5;fill:url(#linearGradient3666);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter3779);enable-background:accumulate"
3771 transform="translate(450.03125,73.843964)"
3772 inkscape:connector-curvature="0" />
3773 <g
3774 clip-path="url(#clipPath3986)"
3775 id="g8067"
3776 style="display:inline;opacity:1;enable-background:new"
3777 transform="translate(450.03125,73.843964)">
3778 <g
3779 id="g8069"
3780 style="filter:url(#filter3677)"
3781 transform="translate(-174.03125,62.156036)">
3782 <g
3783 id="g8071"
3784 style="filter:url(#filter3785)">
3785 <path
3786 transform="translate(174.03125,-62.156036)"
3787 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3788 d="m 1094.2857,725.93361 c 0,0 -0.2961,26.16091 4.6428,37.85715 4.9389,11.69624 20.0381,26.48665 28.5715,31.42857 8.5334,4.94192 18.9286,8.57142 18.9286,8.57142 l 117.8571,-115 17.8572,-75.71428 -96.4286,38.57143 -91.4286,74.28571 z"
3789 id="path8073"
3790 sodipodi:nodetypes="czzccccc"
3791 inkscape:connector-curvature="0" />
3792 <rect
3793 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3794 id="rect8075"
3795 width="333.75412"
3796 height="309.71277"
3797 x="1197.8389"
3798 y="486.14224" />
3799 </g>
3800 </g>
3801 <g
3802 id="g8077"
3803 style="display:inline;opacity:0.18000004;enable-background:new"
3804 transform="translate(-174.03125,62.156036)">
3805 <g
3806 id="g8079"
3807 style="filter:url(#filter3785)">
3808 <path
3809 transform="translate(174.03125,-62.156036)"
3810 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3811 d="m 1094.2857,725.93361 c 0,0 -0.2961,26.16091 4.6428,37.85715 4.9389,11.69624 20.0381,26.48665 28.5715,31.42857 8.5334,4.94192 18.9286,8.57142 18.9286,8.57142 l 117.8571,-115 17.8572,-75.71428 -96.4286,38.57143 -91.4286,74.28571 z"
3812 id="path8081"
3813 sodipodi:nodetypes="czzccccc"
3814 inkscape:connector-curvature="0" />
3815 <rect
3816 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
3817 id="rect8083"
3818 width="333.75412"
3819 height="309.71277"
3820 x="1197.8389"
3821 y="486.14224" />
3822 </g>
3823 </g>
3824 </g>
3825 <path
3826 sodipodi:nodetypes="cssssccccccssssssssccssssssccssssc"
3827 clip-path="url(#clipPath3722)"
3828 id="path8085"
3829 d="m 1264.1875,605 c -4.4911,0.73268 -8.157,3.45509 -11.9375,6.40625 -10.0813,7.86976 -28.1695,34.42524 -48.0312,50.46875 -39.8674,32.20316 -103.996,69.97701 -152.5626,91.09375 -48.614,21.13738 -130.54122,45.81801 -174.31245,57.5 -43.39821,11.58246 -115.04403,25.13107 -168.25,26.53125 l -4.5625,0.125 -2,4.125 -92.84375,192.125 -6.5,13.4688 14.65625,-2.8438 c 0,0 87.26968,-16.6514 132.34375,-31.2812 44.7252,-14.51667 115.79086,-45.66683 173.03125,-72.87505 C 980.82199,912.46306 1090.1551,847.86412 1137.5,810.375 c 46.3608,-36.70982 77.8049,-64.71682 99.9375,-90.25 10.9011,-12.576 22.7448,-27.53144 31.0313,-42.75 8.2864,-15.21856 19.1597,-44.21808 13.6874,-58.84375 -1.2177,-3.25474 -2.5514,-6.0613 -4.5937,-8.5 -2.0423,-2.4387 -8.4747,-1.57199 -8.5625,-5.03125 -0.2098,-8.26482 -3.3155,-0.24423 -4.8125,0 z m 2.1563,15.21875 c 0.4148,0.58574 1.0311,1.55766 1.7812,3.5625 2.8968,7.74213 -1.4407,31.89875 -8.8125,45.4375 -7.3718,13.53875 -22.6384,28.92394 -33.1875,41.09375 -21.0754,24.31356 -51.9037,51.86156 -97.9375,88.3125 -45.0496,35.67159 -155.46033,101.09459 -211.40625,127.6875 -56.89173,27.04249 -128.09616,58.1184 -171.25,72.125 -36.36491,11.8031 -95.84471,23.8338 -115.71875,27.7813 L 714.09375,851.75 c 54.70691,-2.0493 123.79259,-15.21635 167.125,-26.78125 44.33422,-11.83225 126.07865,-36.33633 176.40625,-58.21875 50.112,-21.78871 112.5344,-61.16816 154.0312,-94.6875 20.6464,-16.67721 41.7449,-42.54588 49.8126,-48.84375 2.437,-1.90242 4.0806,-2.6358 4.875,-3 z"
3830 style="display:inline;overflow:visible;visibility:visible;opacity:0.83300003;fill:#050505;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;filter:url(#filter8225);enable-background:accumulate"
3831 transform="translate(450.03125,73.843964)"
3832 inkscape:connector-curvature="0" />
3833 <g
3834 inkscape:transform-center-y="-12.859654"
3835 inkscape:transform-center-x="-185.09603"
3836 transform="matrix(0.9934486,0.1142802,-0.1142802,0.9934486,-9.24324,588.09054)"
3837 mask="url(#mask7704)"
3838 id="g8087"
3839 style="display:inline;opacity:1;enable-background:new">
3840 <path
3841 sodipodi:nodetypes="ccssscsssscssssscsssscssssscsssscssssscsssscssssscsssscssssscsssscssscccccssscssssscsssssscssssscsssssscssssscsssssscssssscsssssscssssscsssssscssssscsssssssssssc"
3842 id="path8089"
3843 d="m 1111.4062,-285.9375 -3.9374,1.875 c -0.041,0.0102 -0.1,0.0205 -0.125,0.0312 -0.4188,0.21285 -0.1647,0.10058 -0.6563,0.3125 -0.4861,0.20956 -1.7376,0.58419 -4.0937,1.46875 -3.3312,1.25058 -5.8043,2.14984 -7,3.0625 -1.5362,0.0213 -3.7205,0.23331 -5.6563,0.71875 -2.9815,0.74767 -4.8552,1.17401 -6.75,1.59375 -1.8948,0.41973 -1.6755,0.64219 -2.875,0.875 -1.2966,0.25167 -1.7214,-0.009 -5.4375,0.78125 -3.4899,0.74215 -8.8948,1.93107 -10.1562,2.6875 -1.584,-0.18078 -3.8675,-0.32178 -5.8438,-0.0312 -3.0404,0.44696 -4.9162,0.67276 -6.8438,0.90625 -0.6554,0.0794 -1.041,0.20078 -1.3437,0.28125 -0.4262,0.13166 -0.6858,0.26002 -1.375,0.34375 -1.3116,0.15937 -1.7622,-0.15683 -5.5313,0.28125 -3.5539,0.41309 -9.0054,1.27282 -10.25,1.9375 -1.599,-0.29729 -3.8577,-0.53419 -5.8437,-0.34375 -3.0588,0.29332 -4.972,0.48399 -6.9063,0.65625 -1.9342,0.17227 -1.6886,0.42237 -2.9062,0.53125 -1.3162,0.1177 -1.7598,-0.16363 -5.5312,0.25 -3.5421,0.38845 -9.0079,1.20927 -10.2813,1.875 -1.5989,-0.29469 -3.8872,-0.50701 -5.875,-0.3125 -3.05829,0.29925 -4.9412,0.48024 -6.875,0.65625 -0.65749,0.0598 -1.04005,0.17856 -1.34375,0.25 -0.4277,0.11896 -0.6835,0.21807 -1.375,0.28125 -1.316,0.12026 -1.75975,-0.19488 -5.53125,0.21875 -3.55619,0.39002 -9.0056,1.23916 -10.25,1.90625 -1.59869,-0.29418 -3.85985,-0.52372 -5.84375,-0.3125 -3.0557,0.32533 -4.97405,0.52624 -6.90625,0.71875 -1.93219,0.19251 -1.68975,0.44088 -2.90625,0.5625 -1.31488,0.13147 -1.76305,-0.16454 -5.53125,0.28125 -3.53889,0.41866 -8.9777,1.29217 -10.25,1.96875 -1.59759,-0.28104 -3.85995,-0.42043 -5.84375,-0.1875 -3.05198,0.35837 -4.945,0.56786 -6.875,0.78125 -0.65618,0.0726 -1.04065,0.17269 -1.34375,0.25 -0.42679,0.12723 -0.6849,0.2672 -1.375,0.34375 -1.31339,0.14569 -1.76735,-0.17402 -5.53125,0.3125 -3.54888,0.45876 -8.97865,1.41902 -10.21875,2.125 -1.59309,-0.24424 -3.8338,-0.38135 -5.8125,-0.125 -3.04759,0.39482 -4.9507,0.64845 -6.875,0.90625 -1.92429,0.25779 -1.7261,0.49353 -2.9375,0.65625 -1.30949,0.1759 -1.7472,-0.10438 -5.5,0.46875 -3.52429,0.53824 -8.9232,1.69917 -10.1875,2.4375 -1.58749,-0.20354 -3.8455,-0.25473 -5.8125,0.0937 -3.02619,0.53612 -4.8989,0.86169 -6.8125,1.1875 -0.65059,0.11077 -1.0137,0.27094 -1.3125,0.375 -0.42069,0.16488 -0.66345,0.3313 -1.34375,0.46875 -1.2947,0.26159 -1.7271,-0.006 -5.4375,0.8125 -3.49848,0.77195 -8.8459,2.38293 -10.0625,3.21875 -1.5629,-0.0774 -3.7575,0.0853 -5.6875,0.59375 -2.97238,0.78313 -4.8177,1.23209 -6.6875,1.75 -1.87,0.5179 -1.66665,0.76728 -2.84375,1.09375 -1.27249,0.3529 -1.69705,0.10709 -5.34375,1.1875 -3.42468,1.01463 -8.6494,2.93317 -9.875,3.84375 -1.53878,0.0127 -3.7198,0.27222 -5.625,0.875 -2.93098,0.92734 -4.75035,1.45842 -6.59375,2.0625 -0.62679,0.20538 -0.99165,0.39258 -1.28125,0.53125 -0.40758,0.21361 -0.6533,0.40875 -1.3125,0.625 -1.2545,0.41154 -1.68615,0.18904 -5.28125,1.4375 -3.38989,1.17717 -8.59495,3.2137 -9.78125,4.15625 -1.52388,0.0597 -3.65005,0.39487 -5.53125,1.0625 -2.89739,1.02829 -4.69905,1.67548 -6.53125,2.3125 -1.8322,0.63701 -1.62785,0.84854 -2.78125,1.25 -1.24679,0.43396 -1.66355,0.19972 -5.21875,1.5625 -3.3387,1.2798 -8.4871,3.48255 -9.6875,4.46875 -1.50718,0.10769 -3.6357,0.4988 -5.5,1.21875 -2.86818,1.1076 -4.6239,1.78156 -6.4375,2.46875 -0.6167,0.23363 -0.99645,0.44203 -1.28125,0.59375 10e-6,0 0,0.0295 0,0.0312 l -8,3.1875 -12.4759,3.49189 7.92966,19.27772 c -0.59163,1.97357 12.54624,-4.73836 12.54624,-4.73836 0.22641,-0.14468 0.44895,-0.27261 0.71875,-0.375 1.08052,-0.40998 2.1716,-0.21577 6,-1.6875 3.82852,-1.47174 5.22405,-2.00498 5.90625,-2.40625 0.67961,-0.39978 1.61175,-0.87937 2.21875,-1.53125 1.82692,-0.13775 3.5708,-0.49323 4.9375,-1 2.968,-1.10052 4.87535,-1.80619 6.78125,-2.46875 1.90581,-0.66254 2.35415,-1.41487 3.40625,-1.78125 1.09162,-0.38011 2.1951,-0.16538 6.0625,-1.53125 3.8674,-1.36586 5.28315,-1.82708 5.96875,-2.21875 0.70111,-0.40052 1.7008,-0.93298 2.3125,-1.59375 1.97081,-0.0547 3.81695,-0.38463 5.28125,-0.875 3.00152,-1.00508 4.92615,-1.62171 6.84375,-2.25 1.53861,-0.5041 2.17415,-1.04677 2.90625,-1.4375 0.23022,-0.13431 0.4759,-0.25373 0.75,-0.34375 1.09832,-0.36048 2.18145,-0.0814 6.09375,-1.3125 3.91231,-1.23113 5.366,-1.67295 6.0625,-2.03125 0.69391,-0.35697 1.6301,-0.79261 2.25,-1.40625 1.86521,-0.0227 3.63585,-0.26683 5.03125,-0.6875 3.0304,-0.91354 4.9924,-1.4301 6.9375,-1.96875 1.94512,-0.53864 2.4262,-1.26452 3.5,-1.5625 1.11402,-0.30915 2.22,0.007 6.1875,-1.03125 3.9675,-1.03863 5.4175,-1.43273 6.125,-1.75 0.7348,-0.32959 1.8139,-0.75372 2.4375,-1.375 1.99782,0.116 3.85745,-0.0201 5.34375,-0.375 3.07811,-0.735 5.0834,-1.10094 7.0625,-1.5 1.58791,-0.32018 2.2443,-0.79055 3,-1.09375 0.23751,-0.1068 0.4669,-0.19276 0.75,-0.25 1.13341,-0.22919 2.30465,0.20893 6.34375,-0.5 4.03942,-0.70893 5.50025,-0.92709 6.21875,-1.1875 0.71581,-0.25944 1.70435,-0.56724 2.34375,-1.09375 1.9242,0.23949 3.7479,0.22453 5.1875,0 3.12642,-0.48762 5.15455,-0.70067 7.15625,-0.96875 2.00171,-0.26807 2.48875,-0.94514 3.59375,-1.09375 1.14642,-0.15418 2.27585,0.30157 6.34375,-0.21875 4.06781,-0.52032 5.56025,-0.69573 6.28125,-0.9375 0.73712,-0.24714 1.7981,-0.58623 2.4375,-1.125 2.05,0.33553 3.9737,0.39796 5.5,0.21875 3.1422,-0.36896 5.18,-0.55936 7.1875,-0.78125 1.61082,-0.17802 2.26465,-0.6082 3.03125,-0.84375 0.24091,-0.0855 0.49405,-0.1556 0.78125,-0.1875 1.1497,-0.12772 2.3013,0.34665 6.375,-0.125 4.0737,-0.47165 5.55905,-0.6106 6.28125,-0.84375 0.71941,-0.23227 1.70025,-0.47346 2.34375,-0.96875 1.9363,0.33346 3.77005,0.40424 5.21875,0.25 3.14601,-0.33495 5.1775,-0.51859 7.1875,-0.71875 2.00991,-0.20014 2.48415,-0.82639 3.59375,-0.9375 1.1511,-0.11528 2.2965,0.36506 6.375,-0.0625 4.0785,-0.42756 5.5889,-0.56209 6.3125,-0.78125 0.73922,-0.22386 1.7956,-0.51325 2.4375,-1.03125 2.057,0.39867 4.00185,0.4934 5.53125,0.34375 3.14871,-0.3081 5.1758,-0.47325 7.1875,-0.65625 1.61401,-0.14682 2.26305,-0.56055 3.03125,-0.78125 0.2413,-0.0809 0.49355,-0.12991 0.78125,-0.15625 1.15211,-0.10545 2.2929,0.39275 6.375,0 4.08211,-0.39275 5.5889,-0.53084 6.3125,-0.75 0.7209,-0.21833 1.6996,-0.4477 2.3437,-0.9375 1.9381,0.34999 3.7689,0.45438 5.2188,0.3125 3.1487,-0.3081 5.1758,-0.47325 7.1875,-0.65625 2.0116,-0.18299 2.5142,-0.83802 3.625,-0.9375 1.1523,-0.10323 2.2922,0.38483 6.375,0 4.0829,-0.38482 5.5887,-0.501 6.3125,-0.71875 0.7393,-0.22243 1.7956,-0.51449 2.4375,-1.03125 2.0574,0.40177 4.0029,0.50333 5.5313,0.34375 3.1465,-0.32852 5.177,-0.5227 7.1874,-0.71875 1.613,-0.15729 2.2657,-0.63148 3.0313,-0.875 0.2407,-0.088 0.4632,-0.12137 0.75,-0.15625 1.1483,-0.1397 2.3167,0.33991 6.375,-0.25 4.0583,-0.58992 5.5618,-0.77714 6.2813,-1.03125 0.7166,-0.25316 1.6746,-0.55807 2.3124,-1.09375 1.9197,0.21194 3.72,0.15141 5.1563,-0.0937 3.1191,-0.5324 5.1116,-0.92861 7.0937,-1.3125 1.9821,-0.38387 2.4743,-1.03965 3.5626,-1.28125 1.1287,-0.25066 2.2702,0.11629 6.25,-0.875 3.9795,-0.99127 5.4295,-1.4193 6.125,-1.78125 0.7222,-0.376 1.7617,-0.87058 2.375,-1.53125 1.9629,-0.012 3.7937,-0.29105 5.2187,-0.84375 2.9512,-1.1446 4.8732,-1.86942 6.6875,-2.75 1.4557,-0.70652 2.3191,-1.70203 2.5312,-2 0.2123,-0.29795 0.099,-0.72855 0.125,-0.75 0.043,-0.0352 0.3404,-0.094 0.5,-0.4375 0.859,-1.84707 2.3232,-5.62764 2.4376,-6.3125 0.1137,-0.68214 0.168,-1.35277 0.2187,-1.75 0.029,-0.2295 -0.1471,-0.8789 -0.125,-0.9375 0.031,-0.082 0.2883,-0.25057 0.3437,-0.5 0.2663,-1.19831 0.089,-2.20736 -0.125,-3.625 -0.2139,-1.41763 -0.9716,-4.61463 -1.625,-5.46875 -0.6589,-0.86172 -1.2248,-1.01051 -1.75,-1 z"
3844 style="display:inline;fill:#bcb786;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3845 transform="translate(0.08004571,-0.03125)"
3846 inkscape:connector-curvature="0" />
3847 <g
3848 id="g8091"
3849 clip-path="url(#clipPath7421)">
3850 <path
3851 sodipodi:nodetypes="czscsssscssssscsssscssssscsssscssssscsssscssssscsssscssssscsssscssccsssscscsscssscscsscsssscscsscssscscsscsssscscsscssscscsscsssscscsscssscscsscsssscscsscssscscsscsssscscsscssscscsscc"
3852 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7001);enable-background:new"
3853 d="m 1107.409,-284.04961 c -0.4187,0.21283 -0.1556,0.0939 -0.6472,0.30581 -0.4861,0.20954 -1.7234,0.57439 -4.0796,1.45895 -3.3311,1.25057 -5.8302,2.15344 -7.0259,3.0661 -1.5361,0.0213 -3.7205,0.23331 -5.6563,0.71875 -2.9815,0.74766 -4.8552,1.17401 -6.75,1.59375 -1.8948,0.41972 -1.6755,0.64219 -2.875,0.875 -1.2966,0.25166 -1.7214,-0.009 -5.4375,0.78125 -3.4899,0.74214 -8.8948,1.93107 -10.1562,2.6875 -1.5839,-0.18079 -3.8675,-0.32178 -5.8438,-0.0312 -3.0404,0.44695 -4.9162,0.67276 -6.8437,0.90625 -0.6554,0.0794 -1.0411,0.20078 -1.3438,0.28125 -0.4262,0.13165 -0.6858,0.26002 -1.375,0.34375 -1.3116,0.15936 -1.7622,-0.15683 -5.5312,0.28125 -3.5539,0.41308 -9.0054,1.27282 -10.25,1.9375 -1.599,-0.2973 -3.8578,-0.53419 -5.8438,-0.34375 -3.0588,0.29331 -4.972,0.48399 -6.9062,0.65625 -1.9343,0.17226 -1.6887,0.42237 -2.9063,0.53125 -1.3162,0.11769 -1.7598,-0.16363 -5.5312,0.25 -3.5419,0.38844 -9.0079,1.20927 -10.2813,1.875 -1.5989,-0.2947 -3.88717,-0.50701 -5.875,-0.3125 -3.05824,0.29924 -4.94113,0.48024 -6.875,0.65625 -0.65749,0.0598 -1.04004,0.17856 -1.34375,0.25 -0.42765,0.11895 -0.68351,0.21807 -1.375,0.28125 -1.31596,0.12025 -1.75976,-0.19488 -5.53125,0.21875 -3.55614,0.39001 -9.00554,1.23916 -10.25,1.90625 -1.59863,-0.29419 -3.85984,-0.52372 -5.84375,-0.3125 -3.0556,0.32532 -4.97404,0.52624 -6.90625,0.71875 -1.93221,0.1925 -1.68987,0.44088 -2.90625,0.5625 -1.31488,0.13146 -1.76298,-0.16454 -5.53125,0.28125 -3.53887,0.41865 -8.97768,1.29217 -10.25,1.96875 -1.59755,-0.28105 -3.85996,-0.42043 -5.84375,-0.1875 -3.05198,0.35836 -4.94508,0.56786 -6.875,0.78125 -0.6562,0.0725 -1.04066,0.17269 -1.34375,0.25 -0.42677,0.12722 -0.68491,0.2672 -1.375,0.34375 -1.31333,0.14568 -1.76746,-0.17402 -5.53125,0.3125 -3.54889,0.45875 -8.97863,1.41902 -10.21875,2.125 -1.59305,-0.24424 -3.83381,-0.38135 -5.8125,-0.125 -3.04759,0.39481 -4.95071,0.64845 -6.875,0.90625 -1.92428,0.25779 -1.72611,0.49353 -2.9375,0.65625 -1.30946,0.1759 -1.74719,-0.10438 -5.5,0.46875 -3.52429,0.53824 -8.92315,1.69917 -10.1875,2.4375 -1.5875,-0.20354 -3.8455,-0.25473 -5.8125,0.0937 -3.02617,0.53612 -4.89889,0.86169 -6.8125,1.1875 -0.65061,0.11077 -1.01371,0.27094 -1.3125,0.375 -0.42067,0.16488 -0.66345,0.3313 -1.34375,0.46875 -1.29465,0.26159 -1.72712,-0.006 -5.4375,0.8125 -3.49853,0.77195 -8.84595,2.38293 -10.0625,3.21875 -1.56278,-0.0774 -3.75758,0.0853 -5.6875,0.59375 -2.97244,0.78313 -4.81761,1.23209 -6.6875,1.75 -1.86988,0.5179 -1.6666,0.76728 -2.84375,1.09375 -1.27246,0.3529 -1.69703,0.10709 -5.34375,1.1875 -3.4247,1.01463 -8.64944,2.93317 -9.875,3.84375 -1.53883,0.0127 -3.71983,0.27222 -5.625,0.875 -2.93106,0.92734 -4.75031,1.45842 -6.59375,2.0625 -0.62676,0.20538 -0.99173,0.39258 -1.28125,0.53125 -0.40763,0.21361 -0.65334,0.40875 -1.3125,0.625 -1.25446,0.41154 -1.68611,0.18904 -5.28125,1.4375 -3.38985,1.17717 -8.59498,3.2137 -9.78125,4.15625 -1.52389,0.0597 -3.65005,0.39487 -5.53125,1.0625 -2.89739,1.02829 -4.69908,1.67548 -6.53125,2.3125 -1.83217,0.63701 -1.62785,0.84854 -2.78125,1.25 -1.24678,0.43396 -1.66361,0.19972 -5.21875,1.5625 -3.33867,1.2798 -8.48715,3.48255 -9.6875,4.46875 -1.50718,0.10769 -3.63569,0.4988 -5.5,1.21875 -2.86818,1.1076 -4.6238,1.78156 -6.4375,2.46875 -0.61666,0.23363 -0.99641,0.44203 -1.28125,0.59375 0,0 0,1.09375 0,1.09375 0.11178,-0.22236 0.38599,-0.81743 0.90625,-1.09375 0.69797,-0.37072 4.81363,-1.99337 6.8125,-2.71875 1.65686,-0.60125 4.15389,-1.32868 5.96875,-1.3125 0.30162,0.003 0.58762,0.0509 0.84375,0.0937 1.84249,0.30825 7.46875,1.5625 7.46875,1.5625 -10e-6,0 -6.23349,-1.64675 -7.03125,-1.84375 -0.19079,-0.0471 -0.53572,-0.0687 -0.96875,-0.0625 1.14546,-0.86971 4.761,-2.39351 7.34375,-3.4375 2.83822,-1.14727 3.11681,-1.25182 5.0625,-1.65625 2.0083,-0.41744 3.15625,-0.5 3.15625,-0.5 0,10e-6 -0.0824,-0.60114 0.96875,-1.125 0.7051,-0.35141 4.88702,-1.8924 6.90625,-2.5625 1.9519,-0.64773 5.0574,-1.3585 6.875,-1 1.86323,0.3675 7.53125,1.8125 7.53125,1.8125 10e-6,0 -6.287,-1.87111 -7.09375,-2.09375 -0.19292,-0.0532 -0.53084,-0.086 -0.96875,-0.0937 1.15834,-0.83288 4.79444,-2.19532 7.40625,-3.15625 2.87016,-1.05601 3.16734,-1.1618 5.125,-1.53125 1.85349,-0.34979 2.85884,-0.42548 3.03125,-0.4375 0.1136,-0.21724 0.37745,-0.81002 0.90625,-1.0625 0.70944,-0.33874 4.92607,-1.71275 6.96875,-2.3125 1.69317,-0.49711 4.24077,-1.03677 6.09375,-0.90625 0.30795,0.0217 0.61349,0.0973 0.875,0.15625 1.88118,0.42432 7.59375,2.03125 7.59375,2.03125 10e-6,0 -6.34174,-2.06525 -7.15625,-2.3125 -0.19479,-0.0591 -0.55788,-0.10394 -1,-0.125 1.16949,-0.79755 4.86302,-2.05622 7.5,-2.9375 2.89781,-0.96847 3.23301,-1.00332 5.21875,-1.28125 2.04965,-0.28689 3.1875,-0.3125 3.1875,-0.3125 -2e-5,0 -0.0728,-0.60697 1,-1.0625 0.7196,-0.30557 4.99098,-1.50075 7.0625,-2 2.00244,-0.48258 5.19849,-0.92829 7.0625,-0.40625 1.91078,0.53515 7.71875,2.5 7.71875,2.5 0,0 -6.42266,-2.42351 -7.25,-2.71875 -0.19784,-0.0706 -0.58216,-0.14039 -1.03125,-0.1875 1.1879,-0.72865 4.91527,-1.77408 7.59375,-2.5 2.94342,-0.79775 3.29208,-0.77083 5.3125,-0.90625 1.91289,-0.12823 2.94705,-0.0711 3.125,-0.0625 0.11728,-0.20366 0.39176,-0.77948 0.9375,-0.96875 0.73219,-0.25394 5.07852,-1.04789 7.1875,-1.375 1.74813,-0.27111 4.40088,-0.4847 6.3125,-0.0937 0.31766,0.065 0.60522,0.18551 0.875,0.28125 1.94074,0.68873 7.84375,3.09375 7.84375,3.09375 10e-6,0 -6.53471,-2.95077 -7.375,-3.3125 -0.20097,-0.0865 -0.57513,-0.16679 -1.03125,-0.25 1.2065,-0.63318 5.02956,-1.3956 7.75,-1.90625 2.98953,-0.56119 3.30023,-0.52954 5.34375,-0.53125 2.10926,-0.002 3.3125,0.125 3.3125,0.125 0,1e-5 -0.0727,-0.63119 1.03125,-0.9375 0.74052,-0.20547 5.12612,-0.83387 7.25,-1.0625 2.05302,-0.22099 5.31863,-0.25222 7.21875,0.46875 1.94779,0.73907 7.84375,3.375 7.84375,3.375 2e-5,0 -6.56288,-3.17897 -7.40625,-3.5625 -0.20168,-0.0917 -0.54221,-0.18621 -1,-0.28125 1.21092,-0.60188 4.98442,-1.24884 7.71875,-1.65625 3.0048,-0.44772 3.32551,-0.4517 5.375,-0.40625 1.94045,0.043 3.00699,0.19423 3.1875,0.21875 0.11892,-0.19316 0.3839,-0.76583 0.9375,-0.90625 0.74271,-0.18838 5.15429,-0.73428 7.28125,-0.9375 1.76303,-0.16842 4.42009,-0.23429 6.34375,0.25 0.31968,0.0805 0.60351,0.20359 0.875,0.3125 1.95293,0.78349 7.90625,3.46875 7.90625,3.46875 -2e-5,0 -6.59191,-3.25348 -7.4375,-3.65625 -0.20222,-0.0963 -0.57226,-0.20703 -1.03125,-0.3125 1.21414,-0.57427 5.04366,-1.12219 7.78125,-1.5 3.00838,-0.4152 3.32307,-0.44263 5.375,-0.375 2.11798,0.0698 3.3125,0.25 3.3125,0.25 -2e-5,0 -0.0773,-0.63741 1.03125,-0.90625 0.74362,-0.18035 5.15176,-0.66355 7.28125,-0.84375 2.05847,-0.17417 5.34324,-0.12432 7.25,0.65625 1.95459,0.80016 7.875,3.53125 7.875,3.53125 -2e-5,0 -6.55993,-3.30876 -7.40625,-3.71875 -0.20237,-0.0981 -0.57186,-0.2031 -1.03125,-0.3125 1.21517,-0.5639 5.01008,-1.1143 7.75,-1.46875 3.01091,-0.38952 3.32131,-0.39765 5.375,-0.3125 1.94439,0.0806 3.00663,0.25324 3.1875,0.28125 0.11916,-0.19086 0.38277,-0.74531 0.9375,-0.875 0.74426,-0.174 5.14993,-0.65047 7.28125,-0.8125 1.76662,-0.13427 4.4497,-0.12571 6.375,0.375 0.32,0.0832 0.6033,0.20127 0.875,0.3125 1.9546,0.80016 7.9063,3.5625 7.9063,3.5625 -10e-5,0 -6.5912,-3.34001 -7.4375,-3.75 -0.2024,-0.0981 -0.5719,-0.20311 -1.0313,-0.3125 1.2151,-0.5639 5.0413,-1.08306 7.7813,-1.4375 3.0109,-0.38953 3.3525,-0.4289 5.4062,-0.34375 2.1197,0.0879 3.3125,0.3125 3.3125,0.3125 0,0 -0.078,-0.64902 1.0313,-0.90625 0.7443,-0.17256 5.1495,-0.62336 7.2812,-0.78125 2.0606,-0.1526 5.3429,-0.0968 7.25,0.6875 1.955,0.80395 7.875,3.5 7.875,3.5 0,0 -6.5598,-3.27587 -7.4062,-3.6875 -0.2025,-0.0984 -0.5718,-0.20222 -1.0313,-0.3125 1.2154,-0.56154 5.0119,-1.12778 7.75,-1.5 3.009,-0.40905 3.3227,-0.41558 5.375,-0.34375 1.9431,0.068 3.0072,0.16485 3.1875,0.1875 0.1188,-0.1944 0.3846,-0.72881 0.9375,-0.875 0.7418,-0.19612 5.1311,-0.82878 7.25,-1.09375 1.7564,-0.21961 4.4053,-0.33231 6.3125,0.0312 0.3169,0.0604 0.6058,0.18938 0.875,0.28125 1.9362,0.66092 7.8438,2.9375 7.8438,2.9375 -1e-4,0 -6.5367,-2.80655 -7.375,-3.15625 -0.2005,-0.0836 -0.5762,-0.17333 -1.0313,-0.25 1.2037,-0.65046 5.0191,-1.37195 7.7188,-2 2.9667,-0.6902 3.2889,-0.75507 5.3125,-0.875 2.0886,-0.1238 3.2812,-0.0312 3.2812,-0.0312 0,1e-5 -0.087,-0.63205 1,-1.03125 0.7292,-0.2678 5.0472,-1.33797 7.125,-1.8125 2.0085,-0.45869 5.1679,-1.0293 7,-0.625 1.8781,0.41446 13.5782,3.01563 13.5782,3.01563 0,0 -12.3275,-3.02266 -13.1407,-3.26563 -0.1945,-0.0581 -0.5586,-0.10626 -1,-0.125 1.1676,-0.80369 3.5142,-1.6873 6.1094,-2.70312 1.6814,-0.65818 0.9237,-0.37659 2.7759,-1.0036 1.7536,-0.59366 2.4854,-1.01071 2.6304,-1.11299 0.3461,-0.20651 -0.356,-0.12188 -0.5442,-0.0424 z"
3854 id="path8093"
3855 inkscape:connector-curvature="0" />
3856 <path
3857 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6949);enable-background:new"
3858 d="m 1082.625,-275.125 c 1.873,0.39348 4.4961,1.14555 6.0313,1.96875 1.5352,0.82319 2.8222,1.056 5.375,2.5 2.5266,1.42926 4.7958,2.00696 6.9687,2.53125 2.3476,0.56642 5.4354,0.71523 8.8438,1.1875 -1.0889,-0.83975 -6.6074,-1.17245 -8.4063,-1.5625 -1.7989,-0.39006 -3.8941,-1.01616 -6.5937,-2.3125 -2.6997,-1.29634 -3.4944,-1.79896 -5.8125,-2.6875 -2.3182,-0.88854 -4.0044,-1.38314 -6.4063,-1.625 z"
3859 id="path8095"
3860 inkscape:connector-curvature="0" />
3861 <path
3862 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6961);enable-background:new"
3863 d="m 1051.4688,-270 c 1.9053,0.57759 4.5281,1.61572 6.0937,2.59375 1.5656,0.97802 2.8802,1.35981 5.5,3.125 2.593,1.74716 4.9859,2.70927 7.25,3.59375 2.4461,0.95557 5.6826,1.65713 9.4063,3.0625 -1.1896,-1.13784 -7.0631,-2.68675 -8.9375,-3.375 -1.8745,-0.68825 -4.0818,-1.5662 -6.875,-3.28125 -2.7933,-1.71504 -3.5736,-2.2839 -5.9375,-3.40625 -2.3641,-1.12234 -4.0567,-1.83455 -6.5,-2.3125 z"
3864 id="path8097"
3865 inkscape:connector-curvature="0" />
3866 <path
3867 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6957);enable-background:new"
3868 d="m 1020.2188,-266.84375 c 1.9119,0.63811 4.5812,1.75536 6.1562,2.8125 1.5751,1.05715 2.8956,1.50867 5.5313,3.40625 2.6086,1.87821 5.0284,3.03003 7.3125,4.0625 2.4677,1.11545 5.7645,2.1733 9.5312,3.84375 -1.2033,-1.22253 -7.2028,-3.31423 -9.0937,-4.125 -1.891,-0.81077 -4.0649,-1.89379 -6.875,-3.75 -2.8102,-1.8562 -3.6218,-2.47693 -6,-3.71875 -2.3783,-1.2418 -4.1107,-1.97569 -6.5625,-2.53125 z"
3869 id="path8099"
3870 inkscape:connector-curvature="0" />
3871 <path
3872 sodipodi:nodetypes="cssscscsscsssccscssssssscscsscsssscscssssssscscsscsssscscssssssscscsscsssscscssssssscscsscsssscscssssssscscsscsssccscsscscssscssssscsssssscssssscsssssscssssscsssssscssssscsssssscssssscsssssscssssscsszsszssszzcczzzczzzc"
3873 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6997);enable-background:new"
3874 d="m 1110.1719,-266.89063 c 0.1508,0.0486 0.688,0.631 0.1094,1.48438 -0.8101,1.19459 -5.7049,3.32429 -8.5625,4.125 -2.8449,0.79712 -6.2901,0.97774 -10.5625,-0.375 -4.3016,-1.36195 -5.4697,-2.46872 -10.6563,-4.3125 4.664,2.11517 6.1953,3.95233 10.125,5.34375 1.6207,0.57387 3.3671,0.9396 5.0625,1.03125 -0.4451,0.32563 -1.5303,0.9833 -3.5625,1.59375 -2.7955,0.83969 -6.6491,1.53378 -8.25,1.625 -1.5146,0.0863 -3.142,-0.51249 -3.4375,-0.625 0.1667,0.10308 0.3732,0.37734 -0.25,1.03125 -0.8993,0.94363 -6.1474,1.923 -9.125,2.25 -2.9643,0.32555 -6.5216,-0.016 -10.9062,-1.90625 -3.978,-1.71497 -5.339,-2.91536 -9.4063,-4.75 0,0 0,0.15625 0,0.15625 3.6431,2.09529 5.284,3.88327 8.875,5.5625 1.7302,0.80909 3.5917,1.40876 5.4063,1.71875 -0.5349,0.28676 -1.5578,0.71151 -3.4375,1.03125 -2.869,0.48796 -6.809,0.81614 -8.4375,0.75 -0.8507,-0.0345 -1.7286,-0.18437 -2.4063,-0.40625 -0.6848,-0.21488 -1.1897,-0.44467 -1.3125,-0.5 0.1694,0.10721 0.4311,0.40288 -0.2187,1.03125 -0.9097,0.87962 -6.2461,1.33638 -9.25,1.46875 -2.9905,0.13179 -6.5889,-0.45063 -11,-2.5625 -4.4412,-2.12626 -5.6415,-3.4016 -10.9063,-5.78125 4.7343,2.59704 6.2865,4.6291 10.3438,6.71875 1.6733,0.86185 3.4852,1.49425 5.25,1.9375 -0.4633,0.23332 -1.5894,0.68814 -3.6875,0.9375 -2.8863,0.34298 -6.8346,0.49288 -8.4688,0.375 -1.5462,-0.1115 -3.2312,-0.85696 -3.5312,-1 0.1691,0.12029 0.4138,0.41048 -0.2188,1 -0.9128,0.85073 -6.2441,1.26212 -9.25,1.375 -2.9925,0.11237 -6.5897,-0.49043 -11,-2.59375 -4.00125,-1.90823 -5.38803,-3.13783 -9.46875,-5.09375 -3e-5,0 0,0.15625 0,0.15625 3.65506,2.20392 5.29421,4.05255 8.90625,5.90625 1.74029,0.89315 3.637,1.52827 5.4688,1.96875 -0.54,0.2483 -1.5781,0.61533 -3.4688,0.84375 -2.88568,0.34858 -6.86605,0.52095 -8.5,0.40625 -0.85345,-0.0599 -1.72631,-0.25791 -2.40625,-0.5 -0.6871,-0.2353 -1.18935,-0.47226 -1.3125,-0.53125 0.16998,0.11227 0.46448,0.42225 -0.1875,1.03125 -0.91265,0.8525 -6.27533,1.29337 -9.28125,1.40625 -2.99246,0.11237 -6.59346,-0.52805 -11,-2.59375 -4.43653,-2.07978 -5.64688,-3.33171 -10.90625,-5.65625 4.72938,2.54749 6.29074,4.5778 10.34375,6.625 1.67155,0.84433 3.48554,1.46643 5.25,1.90625 -0.46323,0.23422 -1.5897,0.68407 -3.6875,0.9375 -2.88569,0.34858 -6.8362,0.56952 -8.46875,0.46875 -1.54456,-0.0953 -3.20031,-0.82885 -3.5,-0.96875 0.16899,0.11853 0.38192,0.40385 -0.25,1 -0.91186,0.86028 -6.24665,1.33025 -9.25,1.46875 -2.98995,0.1379 -6.56745,-0.45068 -10.96875,-2.46875 -3.99308,-1.83089 -5.36511,-3.0292 -9.4375,-4.90625 -2e-5,0 0,0.15625 0,0.15625 3.64761,2.13327 5.27033,3.93487 8.875,5.71875 1.73675,0.85951 3.60727,1.45014 5.4375,1.875 -0.53947,0.2529 -1.55063,0.64129 -3.4375,0.90625 -2.87978,0.40436 -6.83813,0.64562 -8.46875,0.5625 -0.85172,-0.0434 -1.7277,-0.20855 -2.40625,-0.4375 -0.68569,-0.22201 -1.1896,-0.44339 -1.3125,-0.5 0.16959,0.10899 0.4319,0.40965 -0.21875,1.03125 -0.91079,0.87014 -6.25021,1.39152 -9.25,1.5625 -2.98633,0.17021 -6.57381,-0.31577 -10.96875,-2.28125 -4.42489,-1.97888 -5.60596,-3.22819 -10.84375,-5.375 4.70997,2.38767 6.27017,4.38873 10.3125,6.34375 1.66715,0.80631 3.46043,1.39658 5.21875,1.78125 -0.46163,0.2487 -1.597,0.71225 -3.6875,1.03125 -2.8756,0.43876 -6.7804,0.7331 -8.40625,0.6875 -1.53823,-0.0431 -3.2328,-0.74522 -3.53125,-0.875 0.16833,0.11282 0.41057,0.41375 -0.21875,1.03125 -0.90812,0.8911 -6.20295,1.52825 -9.1875,1.8125 -2.97118,0.28298 -6.57342,-0.1758 -10.9375,-1.9375 -3.95934,-1.59831 -5.32915,-2.79487 -9.34375,-4.3125 3e-5,0 0,0.15625 0,0.15625 3.5959,1.81135 5.23831,3.58233 8.8125,5.15625 1.72207,0.75835 3.58748,1.28895 5.40625,1.625 -0.53609,0.27908 -1.56658,0.68763 -3.4375,1.0625 -2.85539,0.5721 -6.78942,1.01939 -8.40625,1.03125 -0.84451,0.006 -1.70608,-0.0809 -2.375,-0.25 -0.67591,-0.16151 -1.16009,-0.32923 -1.28125,-0.375 0.16722,0.094 0.42267,0.38348 -0.21875,1.0625 -0.89787,0.95052 -6.18648,1.91708 -9.125,2.4375 -2.92534,0.51809 -6.43215,0.37424 -10.71875,-1.03125 -4.3158,-1.41507 -5.47277,-2.52994 -10.5625,-3.96875 4.57685,1.75101 6.08855,3.56006 10.03125,5 1.62608,0.59389 3.36885,0.95565 5.09375,1.15625 -0.45285,0.29702 -1.55478,0.88339 -3.59375,1.46875 -2.80472,0.80517 -6.63886,1.57583 -8.21875,1.75 -1.49475,0.1648 -3.11623,-0.31681 -3.40625,-0.40625 0.16356,0.0901 0.39278,0.35993 -0.21875,1.0625 -0.88247,1.01385 -6.04452,2.37165 -8.9375,3.0625 -2.88002,0.68778 -6.3356,0.76002 -10.5625,-0.4375 -3.83485,-1.08645 -5.17258,-2.07237 -9.0625,-3.125 -10e-6,0 0,0.15625 0,0.15625 3.48418,1.39485 5.06941,2.9194 8.53125,4.03125 1.66793,0.53572 3.45578,0.78674 5.21875,0.875 -0.51964,0.35212 -1.50039,0.91452 -3.3125,1.53125 -2.76566,0.94125 -6.59024,1.93537 -8.15625,2.15625 -0.81794,0.11539 -1.6331,0.12283 -2.28125,0.0312 -0.65496,-0.0832 -1.1326,-0.21827 -1.25,-0.25 0.16204,0.0746 0.43399,0.34044 -0.1875,1.09375 -0.87,1.05453 -6.00963,2.65925 -8.875,3.4375 -2.85253,0.77476 -6.25912,0.9582 -10.4375,-0.0937 -4.20683,-1.05913 -5.35669,-2.04166 -10.34375,-3.15625 4.48454,1.45946 5.96935,3.13523 9.8125,4.25 1.58504,0.45977 3.28679,0.63825 4.96875,0.6875 -0.44157,0.33676 -1.51251,1.02773 -3.5,1.78125 -2.73393,1.03649 -6.45198,2.16269 -8,2.4375 -1.46462,0.26002 -3.05958,-0.11654 -3.34375,-0.1875 0.16025,0.0796 0.38044,0.32098 -0.21875,1.0625 -0.86466,1.07006 -5.91652,2.81815 -8.75,3.6875 -2.8208,0.86547 -6.2075,1.15631 -10.34375,0.21875 -3.75259,-0.85061 -5.04785,-1.71647 -8.875,-2.59375 0,0 0,0.15625 0,0.15625 3.42796,1.23779 4.98741,2.6323 8.375,3.53125 1.63216,0.43314 3.36704,0.58301 5.09375,0.5625 -0.50893,0.38417 -1.47675,1.02182 -3.25,1.75 -2.70634,1.11134 -6.43633,2.30781 -7.96875,2.625 -0.8004,0.16569 -1.61231,0.21862 -2.25,0.15625 0,0 0,0.51552 0,0.92229 0,0.26507 0,0.48396 0,0.48396 0.22645,-0.14468 0.44891,-0.27261 0.71875,-0.375 1.08052,-0.40998 2.17161,-0.21577 6,-1.6875 3.82843,-1.47174 5.22412,-2.00498 5.90625,-2.40625 0.6796,-0.39978 1.61165,-0.87937 2.21875,-1.53125 1.82685,-0.13775 3.57075,-0.49323 4.9375,-1 2.96812,-1.10052 4.87537,-1.80619 6.78125,-2.46875 1.90586,-0.66254 2.35409,-1.41487 3.40625,-1.78125 1.09155,-0.38011 2.19511,-0.16538 6.0625,-1.53125 3.86745,-1.36586 5.28316,-1.82708 5.96875,-2.21875 0.70109,-0.40052 1.70081,-0.93298 2.3125,-1.59375 1.9708,-0.0547 3.81685,-0.38463 5.28125,-0.875 3.00148,-1.00508 4.92615,-1.62171 6.84375,-2.25 1.5386,-0.5041 2.17402,-1.04677 2.90625,-1.4375 0.23016,-0.13431 0.47574,-0.25373 0.75,-0.34375 1.09823,-0.36048 2.18145,-0.0814 6.09375,-1.3125 3.91233,-1.23113 5.36605,-1.67295 6.0625,-2.03125 0.69388,-0.35697 1.63015,-0.79261 2.25,-1.40625 1.86521,-0.0227 3.63581,-0.26683 5.03125,-0.6875 3.03043,-0.91354 4.99238,-1.4301 6.9375,-1.96875 1.94511,-0.53864 2.42618,-1.26452 3.5,-1.5625 1.11401,-0.30915 2.21994,0.007 6.1875,-1.03125 3.96761,-1.03863 5.41758,-1.43273 6.125,-1.75 0.73487,-0.32959 1.81383,-0.75372 2.4375,-1.375 1.99774,0.116 3.85743,-0.0201 5.34375,-0.375 3.07811,-0.735 5.08344,-1.10094 7.0625,-1.5 1.58792,-0.32018 2.24429,-0.79055 3,-1.09375 0.23757,-0.1068 0.46695,-0.19276 0.75,-0.25 1.13347,-0.22919 2.30448,0.20893 6.34375,-0.5 4.03933,-0.70893 5.50025,-0.92709 6.21875,-1.1875 0.71586,-0.25944 1.70428,-0.56724 2.34375,-1.09375 1.92427,0.23949 3.74788,0.22453 5.1875,0 3.12633,-0.48762 5.15455,-0.70067 7.15625,-0.96875 2.00171,-0.26807 2.48869,-0.94514 3.59375,-1.09375 1.14639,-0.15418 2.27592,0.30157 6.34375,-0.21875 4.06784,-0.52032 5.56013,-0.69573 6.28125,-0.9375 0.7371,-0.24714 1.79809,-0.58623 2.4375,-1.125 2.05007,0.33553 3.97378,0.39796 5.5,0.21875 3.14231,-0.36896 5.17994,-0.55936 7.1875,-0.78125 1.61076,-0.17802 2.26467,-0.6082 3.03125,-0.84375 0.24094,-0.0855 0.49412,-0.1556 0.78125,-0.1875 1.14978,-0.12772 2.30129,0.34665 6.375,-0.125 4.07374,-0.47165 5.55909,-0.6106 6.28125,-0.84375 0.71946,-0.23227 1.70024,-0.47346 2.34375,-0.96875 1.93637,0.33346 3.77006,0.40424 5.21875,0.25 3.14602,-0.33495 5.17756,-0.51859 7.1875,-0.71875 2.00996,-0.20014 2.48414,-0.82639 3.59375,-0.9375 1.15114,-0.11528 2.29643,0.36506 6.375,-0.0625 4.07861,-0.42756 5.58886,-0.56209 6.3125,-0.78125 0.73915,-0.22386 1.79572,-0.51325 2.4375,-1.03125 2.0571,0.39867 4.00187,0.4934 5.53125,0.34375 3.14873,-0.3081 5.17584,-0.47325 7.1875,-0.65625 1.61407,-0.14682 2.2631,-0.56055 3.03125,-0.78125 0.24142,-0.0809 0.49353,-0.12991 0.78125,-0.15625 1.15211,-0.10545 2.29296,0.39275 6.375,0 4.08208,-0.39275 5.5889,-0.53084 6.3125,-0.75 0.7209,-0.21833 1.6997,-0.4477 2.3438,-0.9375 1.938,0.34999 3.7688,0.45438 5.2187,0.3125 3.1487,-0.3081 5.1758,-0.47325 7.1875,-0.65625 2.0116,-0.18299 2.5142,-0.83802 3.625,-0.9375 1.1523,-0.10323 2.2922,0.38483 6.375,0 4.0829,-0.38482 5.5887,-0.501 6.3125,-0.71875 0.7393,-0.22243 1.7956,-0.51449 2.4375,-1.03125 2.0574,0.40177 4.0029,0.50333 5.5313,0.34375 3.1466,-0.32852 5.1771,-0.5227 7.1875,-0.71875 1.613,-0.15729 2.2656,-0.63148 3.0312,-0.875 0.2407,-0.088 0.4632,-0.12137 0.75,-0.15625 1.1483,-0.1397 2.3167,0.33991 6.375,-0.25 4.0583,-0.58992 5.5618,-0.77714 6.2813,-1.03125 0.7167,-0.25316 1.6745,-0.55807 2.3125,-1.09375 1.9197,0.21194 3.7199,0.15141 5.1562,-0.0937 3.1191,-0.5324 5.1116,-0.92861 7.0938,-1.3125 1.9821,-0.38387 2.4743,-1.03965 3.5625,-1.28125 1.1288,-0.25066 2.2703,0.11629 6.25,-0.875 3.9796,-0.99128 5.4296,-1.4193 6.125,-1.78125 0.7223,-0.37601 1.7619,-0.87058 2.375,-1.53125 1.963,-0.012 3.7937,-0.29105 5.2187,-0.84375 2.9512,-1.14461 4.8732,-1.86942 6.6875,-2.75 1.4557,-0.70653 2.3348,-1.68641 2.5469,-1.98438 0.2122,-0.29796 0.1118,-0.7453 0.1379,-0.76675 0.043,-0.0352 0.3193,-0.085 0.479,-0.42844 0.8589,-1.84708 2.321,-5.64459 2.4352,-6.32945 0.1137,-0.68216 0.1638,-1.34774 0.2145,-1.74497 0.029,-0.22952 -0.1467,-0.86544 -0.1246,-0.92404 0.031,-0.0821 0.3045,-0.26528 0.3599,-0.51471 0.2663,-1.19833 0.089,-2.19129 -0.1251,-3.60893 -0.214,-1.41764 -0.9837,-4.62214 -1.6369,-5.47626 -0.6589,-0.86172 -1.2229,-1.01117 -1.7479,-1.00066 -0.2086,0.26976 0.1368,0.26309 0.1626,0.31261 0.6806,0.0508 0.934,0.36864 1.4192,0.89662 0.4852,0.52798 1.4428,3.93956 1.5794,5.38995 0.1366,1.45039 0.19,2.8602 -0.088,3.46864 -0.2781,0.60845 -0.9442,0.42864 -1.2366,0.49452 0.531,0.18589 0.8908,0.21322 0.9524,1.05768 0.059,0.81338 -0.1332,1.63969 -0.5198,2.80562 -0.3912,1.18001 -1.8452,4.34998 -2.2857,4.59877 -0.4523,0.25551 -0.9524,0.18199 -1.288,0.0511 z"
3875 id="path8101"
3876 inkscape:connector-curvature="0" />
3877 <path
3878 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6953);enable-background:new"
3879 d="m 988.75,-263.84375 c 1.91161,0.6344 4.55027,1.75841 6.125,2.8125 1.57477,1.05409 2.8961,1.48252 5.5313,3.375 2.6082,1.87314 5.0269,3.01522 7.3125,4.0625 2.4693,1.13147 5.7521,2.15474 9.5312,3.9375 -1.2072,-1.2584 -7.139,-3.36445 -9.0312,-4.1875 -1.8922,-0.82304 -4.128,-1.93049 -6.9375,-3.78125 -2.80961,-1.85075 -3.62224,-2.48154 -6.00005,-3.71875 -2.37782,-1.23719 -4.07988,-1.9492 -6.53125,-2.5 z"
3880 id="path8103"
3881 inkscape:connector-curvature="0" />
3882 <path
3883 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6993);enable-background:new"
3884 d="m 957.5,-260.78125 c 1.91,0.6181 4.58288,1.70934 6.15625,2.75 1.57339,1.04066 2.89608,1.48252 5.53125,3.375 2.60823,1.87315 5.02692,3.01521 7.3125,4.0625 2.46931,1.13147 5.75213,2.15475 9.53125,3.9375 -1.20728,-1.2584 -7.20154,-3.3957 -9.09375,-4.21875 -1.89217,-0.82304 -4.09666,-1.9305 -6.90625,-3.78125 -2.80958,-1.85075 -3.59295,-2.43932 -5.96875,-3.65625 -2.37578,-1.21691 -4.11321,-1.93885 -6.5625,-2.46875 z"
3885 id="path8105"
3886 inkscape:connector-curvature="0" />
3887 <path
3888 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6989);enable-background:new"
3889 d="m 926.09375,-257.375 c 1.90772,0.59745 4.55348,1.66384 6.125,2.6875 1.5715,1.02365 2.87022,1.43971 5.5,3.28125 2.60291,1.82273 5.02887,2.9722 7.3125,4 2.4672,1.11041 5.75535,2.09323 9.53125,3.84375 -1.20623,-1.2481 -7.1719,-3.31809 -9.0625,-4.125 -1.89058,-0.8069 -4.10242,-1.89104 -6.90625,-3.6875 -2.80385,-1.79644 -3.62704,-2.40251 -6,-3.59375 -2.37297,-1.19124 -4.05362,-1.90283 -6.5,-2.40625 z"
3890 id="path8107"
3891 inkscape:connector-curvature="0" />
3892 <path
3893 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6985);enable-background:new"
3894 d="m 894.90625,-253.5625 c 1.90213,0.55355 4.58701,1.58887 6.15625,2.59375 1.56923,1.00487 2.87401,1.40864 5.5,3.21875 2.59912,1.79164 5.00034,2.87189 7.28125,3.875 2.46428,1.08374 5.75984,2.04029 9.53125,3.75 -1.2048,-1.23507 -7.17416,-3.24478 -9.0625,-4.03125 -1.88832,-0.78647 -4.0752,-1.8308 -6.875,-3.59375 -2.79977,-1.76294 -3.59919,-2.36836 -5.96875,-3.53125 -2.36957,-1.16288 -4.12325,-1.83412 -6.5625,-2.28125 z"
3895 id="path8109"
3896 inkscape:connector-curvature="0" />
3897 <path
3898 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6965);enable-background:new"
3899 d="m 863.71875,-248.65625 c 1.88062,0.42909 4.50427,1.38038 6.0625,2.3125 1.55823,0.93211 2.85233,1.25776 5.46875,3 2.58971,1.72444 4.98067,2.70802 7.25,3.625 2.45176,0.99069 5.73959,1.87707 9.5,3.5 -1.20131,-1.20734 -7.15249,-3.06609 -9.03125,-3.78125 -1.87875,-0.71517 -4.0854,-1.68442 -6.875,-3.375 -2.78963,-1.69057 -3.58461,-2.22822 -5.9375,-3.28125 -2.35292,-1.05301 -4.02584,-1.71248 -6.4375,-2 z"
3900 id="path8111"
3901 inkscape:connector-curvature="0" />
3902 <path
3903 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6981);enable-background:new"
3904 d="m 833.15625,-241.375 c 1.84836,0.29644 4.46945,0.97632 6,1.78125 1.53058,0.80493 2.81374,1.05573 5.375,2.53125 2.53504,1.46046 4.89068,2.32509 7.125,3.0625 2.41399,0.79668 5.65711,1.46689 9.375,2.84375 -1.18771,-1.12873 -7.08772,-2.58975 -8.9375,-3.15625 -1.84977,-0.5665 -4.00342,-1.37392 -6.75,-2.84375 -2.74657,-1.46983 -3.50136,-1.92028 -5.8125,-2.78125 -2.31115,-0.86095 -4.00471,-1.32009 -6.375,-1.4375 z"
3905 id="path8113"
3906 inkscape:connector-curvature="0" />
3907 <path
3908 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6977);enable-background:new"
3909 d="m 802.90625,-232.3125 c 1.8222,0.21127 4.36576,0.80057 5.875,1.53125 1.50925,0.73066 2.75568,0.92998 5.28125,2.28125 2.49976,1.33746 4.83154,2.04843 7.03125,2.65625 2.37653,0.65667 5.56464,1.07288 9.21875,2.1875 -1.16735,-1.04496 -6.92888,-2.10329 -8.75,-2.5625 -1.82111,-0.45921 -3.95225,-1.12696 -6.65625,-2.4375 -2.70403,-1.31052 -3.47106,-1.7199 -5.75,-2.46875 -2.27895,-0.74883 -3.91325,-1.17931 -6.25,-1.1875 z"
3910 id="path8115"
3911 inkscape:connector-curvature="0" />
3912 <path
3913 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6973);enable-background:new"
3914 d="m 773.1875,-222.1875 c 1.81109,0.1787 4.32059,0.66506 5.8125,1.34375 1.49194,0.67869 2.7534,0.79822 5.25,2.0625 2.47107,1.25138 4.79005,1.89614 6.96875,2.4375 2.35387,0.58488 5.49134,0.89752 9.09375,1.84375 -1.15084,-0.99116 -6.85251,-1.7833 -8.65625,-2.1875 -1.80372,-0.4042 -3.91553,-1.02116 -6.59375,-2.25 -2.67818,-1.22884 -3.40345,-1.61089 -5.65625,-2.28125 -2.25279,-0.67034 -3.89627,-1.00232 -6.21875,-0.96875 z"
3915 id="path8117"
3916 inkscape:connector-curvature="0" />
3917 <path
3918 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6969);enable-background:new"
3919 d="m 743.5625,-211.1875 c 1.79281,0.12911 4.27313,0.54965 5.75,1.1875 1.4769,0.63785 2.7161,0.74156 5.1875,1.9375 2.44618,1.18372 4.72054,1.74666 6.875,2.21875 2.32767,0.51003 5.4196,0.68064 9,1.5625 -1.14379,-0.9706 -6.74759,-1.59065 -8.53125,-1.9375 -1.78367,-0.34684 -3.88285,-0.88756 -6.53125,-2.03125 -2.64841,-1.14368 -3.39495,-1.51631 -5.625,-2.125 -2.23008,-0.60868 -3.82594,-0.90966 -6.125,-0.8125 z"
3920 id="path8119"
3921 inkscape:connector-curvature="0" />
3922 <g
3923 style="fill:#ffffff;fill-opacity:1;filter:url(#filter7345)"
3924 id="g8121">
3925 <path
3926 style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
3927 d="m 744.9375,-212.11731 c 0,0 7.22229,-3.22318 9.0625,-3.5 1.84021,-0.27682 3.35225,-0.003 6,0.5625 2.64775,0.56573 8.7357,2.21518 11.1875,3.375 2.4518,1.15982 5.3125,3.5625 5.3125,3.5625 0,0 -7.14644,-2.78019 -10.1875,-3.5625 -3.04106,-0.78231 -7.64461,-2.08374 -10.375,-2.3125 -2.73039,-0.22876 -11,1.875 -11,1.875 z"
3928 id="path8123"
3929 sodipodi:nodetypes="czzzczzc"
3930 inkscape:connector-curvature="0" />
3931 <path
3932 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3933 d="m 735.46875,-206.95416 c 0,0 3.65979,-2.22318 5.5,-2.5 1.84021,-0.27682 3.66475,0.24677 6.3125,0.8125 2.64775,0.56573 8.7357,2.21518 11.1875,3.375 2.4518,1.15982 6.5625,2.125 6.5625,2.125 0,0 -8.39644,-1.34269 -11.4375,-2.125 -3.04106,-0.78231 -7.95711,-2.33374 -10.6875,-2.5625 -2.73039,-0.22876 -7.4375,0.875 -7.4375,0.875 z"
3934 id="path8125"
3935 sodipodi:nodetypes="czzzczzc"
3936 inkscape:connector-curvature="0" />
3937 <path
3938 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3939 d="m 759.85042,-217.61116 c 0,0 8.5437,-3.29857 10.39778,-3.45786 1.85409,-0.1593 3.64166,0.4792 6.2481,1.21208 2.60644,0.73288 8.57724,2.76594 10.95036,4.07925 2.37312,1.31331 6.41417,2.53782 6.41417,2.53782 0,0 -8.29413,-1.87365 -11.27931,-2.84767 -2.98519,-0.97402 -7.79269,-2.83478 -10.50302,-3.23662 -2.71033,-0.40184 -12.22808,1.713 -12.22808,1.713 z"
3940 id="path8127"
3941 sodipodi:nodetypes="czzzczzc"
3942 inkscape:connector-curvature="0" />
3943 <path
3944 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3945 d="m 775.19813,-223.2266 c 0,0 7.77133,-2.78244 9.62831,-2.90349 1.85697,-0.12104 3.631,0.55417 6.22178,1.34062 2.59077,0.78645 8.5184,2.94217 10.86394,4.30412 2.34555,1.36195 6.36049,2.6695 6.36049,2.6695 0,0 -8.25373,-2.04423 -11.21821,-3.07958 -2.96447,-1.03535 -7.73259,-2.99481 -10.43406,-3.45243 -2.70147,-0.45763 -11.42225,1.12126 -11.42225,1.12126 z"
3946 id="path8129"
3947 sodipodi:nodetypes="czzzczzc"
3948 inkscape:connector-curvature="0" />
3949 <path
3950 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3951 d="m 789.64298,-227.95417 c 0,0 8.68256,-3.52031 10.54154,-3.60535 1.85897,-0.085 3.61958,0.62442 6.19463,1.46093 2.57505,0.83649 8.45979,3.10666 10.77851,4.5138 2.31872,1.40715 6.30757,2.79224 6.30757,2.79224 0,0 -8.21257,-2.20377 -11.15643,-3.29636 -2.94386,-1.09259 -7.67312,-3.14408 -10.36522,-3.65397 -2.69209,-0.50988 -12.3006,1.78871 -12.3006,1.78871 z"
3952 id="path8131"
3953 sodipodi:nodetypes="czzzczzc"
3954 inkscape:transform-center-x="13.852145"
3955 inkscape:transform-center-y="-4.3190906"
3956 inkscape:connector-curvature="0" />
3957 <path
3958 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3959 d="m 804.49513,-233.32948 c 0,0 7.80756,-2.58281 9.66654,-2.66785 1.85897,-0.085 3.61958,0.62442 6.19463,1.46093 2.57505,0.83649 8.45979,3.10666 10.77851,4.5138 2.31872,1.40715 6.30757,2.79224 6.30757,2.79224 0,0 -8.21257,-2.20377 -11.15643,-3.29636 -2.94386,-1.09259 -7.67312,-3.14408 -10.36522,-3.65397 -2.69209,-0.50988 -11.4256,0.85121 -11.4256,0.85121 z"
3960 id="path8133"
3961 sodipodi:nodetypes="czzzczzc"
3962 inkscape:transform-center-x="13.852145"
3963 inkscape:transform-center-y="-4.3190906"
3964 inkscape:connector-curvature="0" />
3965 <path
3966 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3967 d="m 819.55763,-237.57948 c 0,0 8.55756,-2.58281 10.41654,-2.66785 1.85897,-0.085 3.61958,0.62442 6.19463,1.46093 2.57505,0.83649 8.45979,3.10666 10.77851,4.5138 2.31872,1.40715 6.30757,2.79224 6.30757,2.79224 0,0 -8.21257,-2.20377 -11.15643,-3.29636 -2.94386,-1.09259 -7.67312,-3.14408 -10.36522,-3.65397 -2.69209,-0.50988 -12.1756,0.85121 -12.1756,0.85121 z"
3968 id="path8135"
3969 sodipodi:nodetypes="czzzczzc"
3970 inkscape:transform-center-x="13.852145"
3971 inkscape:transform-center-y="-4.3190906"
3972 inkscape:connector-curvature="0" />
3973 <path
3974 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3975 d="m 836.23395,-242.60125 c 0,0 6.96702,-1.98723 8.82784,-1.96757 1.86081,0.0197 3.57873,0.82702 6.10265,1.80705 2.52393,0.98 8.27166,3.57758 10.50756,5.11291 2.2359,1.53535 6.14053,3.14261 6.14053,3.14261 0,0 -8.07561,-2.66222 -10.95336,-3.91866 -2.87774,-1.25645 -7.48412,-3.5707 -10.14328,-4.23121 -2.65915,-0.66049 -10.48194,0.0549 -10.48194,0.0549 z"
3976 id="path8137"
3977 sodipodi:nodetypes="czzzczzc"
3978 inkscape:transform-center-x="13.64141"
3979 inkscape:transform-center-y="-4.9269042"
3980 inkscape:connector-curvature="0" />
3981 <path
3982 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3983 d="m 850.73028,-246.00461 c 0,0 7.68784,-2.02768 9.54782,-1.96854 1.85997,0.0592 3.56038,0.90279 6.06293,1.93616 2.50255,1.03334 8.19387,3.75232 10.39668,5.33475 2.20282,1.58245 6.07245,3.2722 6.07245,3.2722 0,0 -8.01729,-2.83298 -10.86772,-4.15022 -2.85043,-1.31723 -7.40666,-3.72872 -10.0512,-4.4455 -2.64454,-0.71678 -11.16096,0.0211 -11.16096,0.0211 z"
3984 id="path8139"
3985 sodipodi:nodetypes="czzzczzc"
3986 inkscape:transform-center-x="13.55068"
3987 inkscape:transform-center-y="-5.1542119"
3988 inkscape:connector-curvature="0" />
3989 <path
3990 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3991 d="m 864.82496,-249.21081 c 0,0 8.16952,-1.96906 10.02688,-1.85396 1.85735,0.11512 3.53158,1.00956 6.0019,2.11779 2.47031,1.10821 8.0772,3.99727 10.23138,5.64531 2.15418,1.64804 5.9712,3.45352 5.9712,3.45352 0,0 -7.92839,-3.07306 -10.73787,-4.4755 -2.80949,-1.40244 -7.29106,-3.94999 -9.91283,-4.74606 -2.62176,-0.79606 -11.58066,-0.1411 -11.58066,-0.1411 z"
3992 id="path8141"
3993 sodipodi:nodetypes="czzzczzc"
3994 inkscape:transform-center-x="13.41151"
3995 inkscape:transform-center-y="-5.4740887"
3996 inkscape:connector-curvature="0" />
3997 <path
3998 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
3999 d="m 881.38485,-251.60282 c 0,0 8.08536,-1.90809 9.93837,-1.73664 1.853,0.17147 3.4993,1.11633 5.93482,2.29908 2.43553,1.18271 7.95209,4.2407 10.05523,5.95339 2.10314,1.7127 5.86357,3.63326 5.86357,3.63326 0,0 -7.8314,-3.3124 -10.597,-4.7995 -2.76561,-1.48712 -7.16775,-4.16959 -9.76414,-5.04491 -2.59637,-0.87531 -11.43085,-0.30468 -11.43085,-0.30468 z"
4000 id="path8143"
4001 sodipodi:nodetypes="czzzczzc"
4002 inkscape:transform-center-x="13.258805"
4003 inkscape:transform-center-y="-5.79376"
4004 inkscape:connector-curvature="0" />
4005 <path
4006 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4007 d="m 896.58415,-254.34724 c 0,0 7.64166,-1.4277 9.49547,-1.26515 1.8538,0.16256 3.50462,1.0995 5.94579,2.27053 2.44118,1.171 7.97238,4.20246 10.08372,5.90502 2.11134,1.70258 5.88096,3.60505 5.88096,3.60505 0,0 -7.84723,-3.27474 -10.61995,-4.74855 -2.77271,-1.4738 -7.18769,-4.13509 -9.78825,-4.99793 -2.60055,-0.86282 -10.99774,-0.76897 -10.99774,-0.76897 z"
4008 id="path8145"
4009 sodipodi:nodetypes="czzzczzc"
4010 inkscape:transform-center-x="13.28378"
4011 inkscape:transform-center-y="-5.7433893"
4012 inkscape:connector-curvature="0" />
4013 <path
4014 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4015 d="m 911.45328,-255.98544 c 0,0 8.64166,-1.5527 10.49547,-1.39015 1.8538,0.16256 3.50462,1.0995 5.94579,2.27053 2.44118,1.171 7.97238,4.20246 10.08372,5.90502 2.11134,1.70258 5.88096,3.60505 5.88096,3.60505 0,0 -7.84723,-3.27474 -10.61995,-4.74855 -2.77271,-1.4738 -7.18769,-4.13509 -9.78825,-4.99793 -2.60055,-0.86282 -11.99774,-0.64397 -11.99774,-0.64397 z"
4016 id="path8147"
4017 sodipodi:nodetypes="czzzczzc"
4018 inkscape:transform-center-x="13.28378"
4019 inkscape:transform-center-y="-5.7433893"
4020 inkscape:connector-curvature="0" />
4021 <path
4022 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4023 d="m 927.70328,-258.29794 c 0,0 7.64166,-0.8652 9.49547,-0.70265 1.8538,0.16256 3.50462,1.0995 5.94579,2.27053 2.44118,1.171 7.97238,4.20246 10.08372,5.90502 2.11134,1.70258 5.88096,3.60505 5.88096,3.60505 0,0 -7.84723,-3.27474 -10.61995,-4.74855 -2.77271,-1.4738 -7.18769,-4.13509 -9.78825,-4.99793 -2.60055,-0.86282 -10.99774,-1.33147 -10.99774,-1.33147 z"
4024 id="path8149"
4025 sodipodi:nodetypes="czzzczzc"
4026 inkscape:transform-center-x="13.28378"
4027 inkscape:transform-center-y="-5.7433893"
4028 inkscape:connector-curvature="0" />
4029 <path
4030 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4031 d="m 942.82828,-259.48544 c 0,0 8.57916,-1.4902 10.43297,-1.32765 1.8538,0.16256 3.50462,1.0995 5.94579,2.27053 2.44118,1.171 7.97238,4.20246 10.08372,5.90502 2.11134,1.70258 5.88096,3.60505 5.88096,3.60505 0,0 -7.84723,-3.27474 -10.61995,-4.74855 -2.77271,-1.4738 -7.18769,-4.13509 -9.78825,-4.99793 -2.60055,-0.86282 -11.93524,-0.70647 -11.93524,-0.70647 z"
4032 id="path8151"
4033 sodipodi:nodetypes="czzzczzc"
4034 inkscape:transform-center-x="13.28378"
4035 inkscape:transform-center-y="-5.7433893"
4036 inkscape:connector-curvature="0" />
4037 <path
4038 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4039 d="m 959.07828,-261.54794 c 0,0 7.82916,-0.8027 9.68297,-0.64015 1.8538,0.16256 3.50462,1.0995 5.94579,2.27053 2.44118,1.171 7.97238,4.20246 10.08372,5.90502 2.11134,1.70258 5.88096,3.60505 5.88096,3.60505 0,0 -7.84723,-3.27474 -10.61995,-4.74855 -2.77271,-1.4738 -7.18769,-4.13509 -9.78825,-4.99793 -2.60055,-0.86282 -11.18524,-1.39397 -11.18524,-1.39397 z"
4040 id="path8153"
4041 sodipodi:nodetypes="czzzczzc"
4042 inkscape:transform-center-x="13.28378"
4043 inkscape:transform-center-y="-5.7433893"
4044 inkscape:connector-curvature="0" />
4045 <path
4046 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4047 d="m 974.45328,-262.79794 c 0,0 8.39166,-1.1777 10.24547,-1.01515 1.8538,0.16256 3.50462,1.0995 5.94579,2.27053 2.44118,1.171 7.97238,4.20246 10.08376,5.90502 2.1113,1.70258 5.8809,3.60505 5.8809,3.60505 0,0 -7.84721,-3.27474 -10.61993,-4.74855 -2.77271,-1.4738 -7.18769,-4.13509 -9.78825,-4.99793 -2.60055,-0.86282 -11.74774,-1.01897 -11.74774,-1.01897 z"
4048 id="path8155"
4049 sodipodi:nodetypes="czzzczzc"
4050 inkscape:transform-center-x="13.28378"
4051 inkscape:transform-center-y="-5.7433893"
4052 inkscape:connector-curvature="0" />
4053 <path
4054 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4055 d="m 990.64078,-264.86044 c 0,0 6.89166,-0.9902 8.74547,-0.82765 1.85385,0.16256 3.50465,1.0995 5.94575,2.27053 2.4412,1.171 7.9724,4.20246 10.0838,5.90502 2.1113,1.70258 5.8809,3.60505 5.8809,3.60505 0,0 -7.8472,-3.27474 -10.6199,-4.74855 -2.7727,-1.4738 -7.1877,-4.13509 -9.7883,-4.99793 -2.60053,-0.86282 -10.24772,-1.20647 -10.24772,-1.20647 z"
4056 id="path8157"
4057 sodipodi:nodetypes="czzzczzc"
4058 inkscape:transform-center-x="13.28378"
4059 inkscape:transform-center-y="-5.7433893"
4060 inkscape:connector-curvature="0" />
4061 <path
4062 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4063 d="m 1007.7658,-265.79794 c 0,0 6.8291,-1.1777 8.683,-1.01515 1.8538,0.16256 3.5046,1.0995 5.9457,2.27053 2.4412,1.171 7.9724,4.20246 10.0838,5.90502 2.1113,1.70258 5.8809,3.60505 5.8809,3.60505 0,0 -7.8472,-3.27474 -10.6199,-4.74855 -2.7727,-1.4738 -7.1877,-4.13509 -9.7883,-4.99793 -2.6005,-0.86282 -10.1852,-1.01897 -10.1852,-1.01897 z"
4064 id="path8159"
4065 sodipodi:nodetypes="czzzczzc"
4066 inkscape:transform-center-x="13.28378"
4067 inkscape:transform-center-y="-5.7433893"
4068 inkscape:connector-curvature="0" />
4069 <path
4070 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4071 d="m 1023.8908,-267.79794 c 0,0 6.0791,-0.4277 7.933,-0.26515 1.8538,0.16256 3.5046,1.0995 5.9457,2.27053 2.4412,1.171 7.9724,4.20246 10.0838,5.90502 2.1113,1.70258 5.8809,3.60505 5.8809,3.60505 0,0 -7.8472,-3.27474 -10.6199,-4.74855 -2.7727,-1.4738 -7.1877,-4.13509 -9.7883,-4.99793 -2.6005,-0.86282 -9.4352,-1.76897 -9.4352,-1.76897 z"
4072 id="path8161"
4073 sodipodi:nodetypes="czzzczzc"
4074 inkscape:transform-center-x="13.28378"
4075 inkscape:transform-center-y="-5.7433893"
4076 inkscape:connector-curvature="0" />
4077 <path
4078 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4079 d="m 1039.7033,-269.17294 c 0,0 6.4541,-0.6777 8.308,-0.51515 1.8538,0.16256 3.5046,1.0995 5.9457,2.27053 2.4412,1.171 7.9724,4.20246 10.0838,5.90502 2.1113,1.70258 5.8809,3.60505 5.8809,3.60505 0,0 -7.8472,-3.27474 -10.6199,-4.74855 -2.7727,-1.4738 -7.1877,-4.13509 -9.7883,-4.99793 -2.6005,-0.86282 -9.8102,-1.51897 -9.8102,-1.51897 z"
4080 id="path8163"
4081 sodipodi:nodetypes="czzzczzc"
4082 inkscape:transform-center-x="13.28378"
4083 inkscape:transform-center-y="-5.7433893"
4084 inkscape:connector-curvature="0" />
4085 <path
4086 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4087 d="m 1055.2718,-271.03319 c 0,0 5.4976,-0.90945 7.3578,-0.85348 1.8601,0.056 3.5619,0.89674 6.0661,1.92586 2.5044,1.0291 8.2003,3.7384 10.4058,5.31709 2.2055,1.57871 6.078,3.2619 6.078,3.2619 0,0 -8.022,-2.81939 -10.8748,-4.13178 -2.8526,-1.31238 -7.4129,-3.71613 -10.0587,-4.42843 -2.6457,-0.71228 -8.9742,-1.09116 -8.9742,-1.09116 z"
4088 id="path8165"
4089 sodipodi:nodetypes="czzzczzc"
4090 inkscape:transform-center-x="13.55813"
4091 inkscape:transform-center-y="-5.1360724"
4092 inkscape:connector-curvature="0" />
4093 <path
4094 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4095 d="m 1072.7007,-273.48537 c 0,0 4.5472,-1.15581 6.408,-1.18621 1.8607,-0.0304 3.5996,0.73049 6.1489,1.64231 2.5494,0.91177 8.3649,3.35386 10.6414,4.8285 2.2763,1.47468 6.2227,2.97636 6.2227,2.97636 0,0 -8.1442,-2.44411 -11.0547,-3.62272 -2.9105,-1.1786 -7.5774,-3.36815 -10.2534,-3.95691 -2.6759,-0.58875 -8.1129,-0.68133 -8.1129,-0.68133 z"
4096 id="path8167"
4097 sodipodi:nodetypes="czzzczzc"
4098 inkscape:transform-center-x="13.74758"
4099 inkscape:transform-center-y="-4.6370147"
4100 inkscape:connector-curvature="0" />
4101 <path
4102 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4103 d="m 1087.1585,-276.5244 c 0,0 5.96,-1.77355 7.8202,-1.83024 1.86,-0.0567 3.6096,0.67955 6.1715,1.55525 2.562,0.87566 2.5226,0.85713 5.3335,1.49015 2.7969,0.62986 7.0767,1.51313 7.0767,1.51313 0,0 -3.6155,-0.0163 -6.7923,-0.46614 -3.1155,-0.44119 -7.3743,-1.69825 -10.0584,-2.24913 -2.6839,-0.55088 -9.5512,-0.013 -9.5512,-0.013 z"
4104 id="path8169"
4105 sodipodi:nodetypes="czzzczzc"
4106 inkscape:transform-center-x="13.79933"
4107 inkscape:transform-center-y="-4.4842392"
4108 inkscape:connector-curvature="0" />
4109 <path
4110 style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
4111 d="m 1099.25,-279.92981 c 0.1612,0.26862 11.2081,-4.60046 12.1875,-4.6875 0.9794,-0.087 2,3.125 2,3.125 0,0 -0.7751,-1.50434 -2.875,-1.0625 -2.0999,0.44184 -11.3009,2.67141 -11.3125,2.625 z"
4112 id="path8171"
4113 sodipodi:nodetypes="czczc"
4114 inkscape:connector-curvature="0" />
4115 </g>
4116 <path
4117 sodipodi:nodetypes="czscsssscssssscsssscssssscsssscssssscsssscssssscsssscssssscsssscssccsssscscsscssscscsscsssscscsscssscscsscsssscscsscssscscsscsssscscsscssscscsscsssscscsscssscscsscsssscscsscssscscsscc"
4118 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7333);enable-background:new"
4119 d="m 1107.4532,-284.0938 c -0.4187,0.21283 -0.1556,0.0939 -0.6472,0.30581 -0.4861,0.20954 -1.7234,0.57439 -4.0796,1.45895 -3.3311,1.25057 -5.8302,2.15344 -7.0259,3.0661 -1.5361,0.0213 -3.7205,0.23331 -5.6563,0.71875 -2.9815,0.74766 -4.8552,1.17401 -6.75,1.59375 -1.8948,0.41972 -1.6755,0.64219 -2.875,0.875 -1.2966,0.25166 -1.7214,-0.009 -5.4375,0.78125 -3.4899,0.74214 -8.8948,1.93107 -10.1562,2.6875 -1.5839,-0.18079 -3.8675,-0.32178 -5.8438,-0.0312 -3.0404,0.44695 -4.9162,0.67276 -6.8437,0.90625 -0.6554,0.0794 -1.0411,0.20078 -1.3438,0.28125 -0.4262,0.13165 -0.6858,0.26002 -1.375,0.34375 -1.3116,0.15936 -1.7622,-0.15683 -5.5312,0.28125 -3.5539,0.41308 -9.0054,1.27282 -10.25,1.9375 -1.599,-0.2973 -3.8578,-0.53419 -5.8438,-0.34375 -3.0588,0.29331 -4.972,0.48399 -6.9062,0.65625 -1.9343,0.17226 -1.6887,0.42237 -2.9063,0.53125 -1.3162,0.11769 -1.7598,-0.16363 -5.5312,0.25 -3.5419,0.38844 -9.0079,1.20927 -10.2813,1.875 -1.5989,-0.2947 -3.88718,-0.50701 -5.87501,-0.3125 -3.05824,0.29924 -4.94113,0.48024 -6.875,0.65625 -0.65749,0.0598 -1.04004,0.17856 -1.34375,0.25 -0.42765,0.11895 -0.68351,0.21807 -1.375,0.28125 -1.31596,0.12025 -1.75976,-0.19488 -5.53125,0.21875 -3.55614,0.39001 -9.00554,1.23916 -10.25,1.90625 -1.59863,-0.29419 -3.85984,-0.52372 -5.84375,-0.3125 -3.0556,0.32532 -4.97404,0.52624 -6.90625,0.71875 -1.93221,0.1925 -1.68987,0.44088 -2.90625,0.5625 -1.31488,0.13146 -1.76298,-0.16454 -5.53125,0.28125 -3.53887,0.41865 -8.97768,1.29217 -10.25,1.96875 -1.59755,-0.28105 -3.85996,-0.42043 -5.84375,-0.1875 -3.05198,0.35836 -4.94508,0.56786 -6.875,0.78125 -0.6562,0.0726 -1.04066,0.17269 -1.34375,0.25 -0.42677,0.12722 -0.68491,0.2672 -1.375,0.34375 -1.31333,0.14568 -1.76746,-0.17402 -5.53125,0.3125 -3.54889,0.45875 -8.97863,1.41902 -10.21875,2.125 -1.59305,-0.24424 -3.83381,-0.38135 -5.8125,-0.125 -3.04759,0.39481 -4.95071,0.64845 -6.875,0.90625 -1.92428,0.25779 -1.72611,0.49353 -2.9375,0.65625 -1.30946,0.1759 -1.74719,-0.10438 -5.5,0.46875 -3.52429,0.53824 -8.92315,1.69917 -10.1875,2.4375 -1.5875,-0.20354 -3.8455,-0.25473 -5.8125,0.0937 -3.02617,0.53612 -4.89889,0.86169 -6.8125,1.1875 -0.65061,0.11077 -1.01371,0.27094 -1.3125,0.375 -0.42067,0.16488 -0.66345,0.3313 -1.34375,0.46875 -1.29465,0.26159 -1.72712,-0.006 -5.4375,0.8125 -3.49853,0.77195 -8.84595,2.38293 -10.0625,3.21875 -1.56278,-0.0775 -3.75758,0.0853 -5.6875,0.59375 -2.97244,0.78313 -4.81761,1.23209 -6.6875,1.75 -1.86988,0.5179 -1.6666,0.76728 -2.84375,1.09375 -1.27246,0.3529 -1.69703,0.10709 -5.34375,1.1875 -3.4247,1.01463 -8.64944,2.93317 -9.875,3.84375 -1.53883,0.0127 -3.71983,0.27222 -5.625,0.875 -2.93106,0.92734 -4.75031,1.45842 -6.59375,2.0625 -0.62676,0.20538 -0.99173,0.39258 -1.28125,0.53125 -0.40763,0.21361 -0.65334,0.40875 -1.3125,0.625 -1.25446,0.41154 -1.68611,0.18904 -5.28125,1.4375 -3.38985,1.17717 -8.59498,3.2137 -9.78125,4.15625 -1.52389,0.0597 -3.65005,0.39487 -5.53125,1.0625 -2.89739,1.02829 -4.69908,1.67548 -6.53125,2.3125 -1.83217,0.63701 -1.62785,0.84854 -2.78125,1.25 -1.24678,0.43396 -1.66361,0.19972 -5.21875,1.5625 -3.33867,1.2798 -8.48715,3.48255 -9.6875,4.46875 -1.50718,0.10769 -3.63569,0.4988 -5.5,1.21875 -2.86818,1.1076 -4.6238,1.78156 -6.4375,2.46875 -0.61666,0.23363 -0.99641,0.44203 -1.28125,0.59375 0,0 0,1.09375 0,1.09375 0.11178,-0.22236 0.38599,-0.81743 0.90625,-1.09375 0.69797,-0.37072 4.81363,-1.99337 6.8125,-2.71875 1.65686,-0.60125 4.15389,-1.32868 5.96875,-1.3125 0.30162,0.003 0.58762,0.0509 0.84375,0.0937 1.84249,0.30825 7.46875,1.5625 7.46875,1.5625 -10e-6,0 -6.23349,-1.64675 -7.03125,-1.84375 -0.19079,-0.0471 -0.53572,-0.0687 -0.96875,-0.0625 1.14546,-0.86971 4.761,-2.39351 7.34375,-3.4375 2.83822,-1.14727 3.11681,-1.25182 5.0625,-1.65625 2.0083,-0.41744 3.15625,-0.5 3.15625,-0.5 0,1e-5 -0.0824,-0.60114 0.96875,-1.125 0.7051,-0.35141 4.88702,-1.8924 6.90625,-2.5625 1.9519,-0.64773 5.0574,-1.3585 6.875,-1 1.86323,0.3675 7.53125,1.8125 7.53125,1.8125 1e-5,0 -6.287,-1.87111 -7.09375,-2.09375 -0.19292,-0.0533 -0.53084,-0.086 -0.96875,-0.0937 1.15834,-0.83288 4.79444,-2.19532 7.40625,-3.15625 2.87016,-1.05601 3.16734,-1.1618 5.125,-1.53125 1.85349,-0.34979 2.85884,-0.42548 3.03125,-0.4375 0.1136,-0.21724 0.37745,-0.81002 0.90625,-1.0625 0.70944,-0.33874 4.92607,-1.71275 6.96875,-2.3125 1.69317,-0.49711 4.24077,-1.03677 6.09375,-0.90625 0.30795,0.0217 0.61349,0.0973 0.875,0.15625 1.88118,0.42432 7.59375,2.03125 7.59375,2.03125 1e-5,0 -6.34174,-2.06525 -7.15625,-2.3125 -0.19479,-0.0591 -0.55788,-0.10394 -1,-0.125 1.16949,-0.79755 4.86302,-2.05622 7.5,-2.9375 2.89781,-0.96847 3.23301,-1.00332 5.21875,-1.28125 2.04965,-0.28689 3.1875,-0.3125 3.1875,-0.3125 -2e-5,0 -0.0727,-0.60697 1,-1.0625 0.7196,-0.30557 4.99098,-1.50075 7.0625,-2 2.00244,-0.48258 5.19849,-0.92829 7.0625,-0.40625 1.91078,0.53515 7.71875,2.5 7.71875,2.5 0,0 -6.42266,-2.42351 -7.25,-2.71875 -0.19784,-0.0706 -0.58216,-0.14039 -1.03125,-0.1875 1.1879,-0.72865 4.91527,-1.77408 7.59375,-2.5 2.94342,-0.79775 3.29208,-0.77083 5.3125,-0.90625 1.91289,-0.12823 2.94705,-0.0711 3.125,-0.0625 0.11728,-0.20366 0.39176,-0.77948 0.9375,-0.96875 0.73219,-0.25394 5.07852,-1.04789 7.1875,-1.375 1.74813,-0.27111 4.40088,-0.4847 6.3125,-0.0937 0.31766,0.065 0.60522,0.18551 0.875,0.28125 1.94074,0.68873 7.84375,3.09375 7.84375,3.09375 1e-5,0 -6.53471,-2.95077 -7.375,-3.3125 -0.20097,-0.0865 -0.57513,-0.16679 -1.03125,-0.25 1.2065,-0.63318 5.02956,-1.3956 7.75,-1.90625 2.98953,-0.56119 3.30023,-0.52954 5.34375,-0.53125 2.10926,-0.002 3.3125,0.125 3.3125,0.125 0,1e-5 -0.0727,-0.63119 1.03125,-0.9375 0.74052,-0.20547 5.12612,-0.83387 7.25,-1.0625 2.05302,-0.22099 5.31863,-0.25222 7.21875,0.46875 1.94779,0.73907 7.84375,3.375 7.84375,3.375 2e-5,0 -6.56288,-3.17897 -7.40625,-3.5625 -0.20168,-0.0917 -0.54221,-0.18621 -1,-0.28125 1.21092,-0.60188 4.98442,-1.24884 7.71875,-1.65625 3.0048,-0.44772 3.32551,-0.4517 5.375,-0.40625 1.94045,0.043 3.00699,0.19423 3.1875,0.21875 0.11892,-0.19316 0.3839,-0.76583 0.9375,-0.90625 0.74271,-0.18838 5.15429,-0.73428 7.28125,-0.9375 1.76303,-0.16842 4.42009,-0.23429 6.34375,0.25 0.31968,0.0805 0.60351,0.20359 0.875,0.3125 1.95293,0.78349 7.90625,3.46875 7.90625,3.46875 -2e-5,0 -6.59191,-3.25348 -7.4375,-3.65625 -0.20222,-0.0963 -0.57226,-0.20703 -1.03125,-0.3125 1.21414,-0.57427 5.04366,-1.12219 7.78125,-1.5 3.00838,-0.4152 3.32307,-0.44263 5.375,-0.375 2.11798,0.0698 3.3125,0.25 3.3125,0.25 -2e-5,0 -0.0772,-0.63741 1.03125,-0.90625 0.74362,-0.18035 5.15176,-0.66355 7.28125,-0.84375 2.05847,-0.17417 5.34324,-0.12432 7.25,0.65625 1.95459,0.80016 7.875,3.53125 7.875,3.53125 -2e-5,0 -6.55993,-3.30876 -7.40625,-3.71875 -0.20237,-0.0981 -0.57186,-0.2031 -1.03125,-0.3125 1.21517,-0.5639 5.01008,-1.1143 7.75,-1.46875 3.01091,-0.38952 3.32131,-0.39765 5.375,-0.3125 1.94439,0.0806 3.00663,0.25324 3.1875,0.28125 0.11916,-0.19086 0.38277,-0.74531 0.9375,-0.875 0.74426,-0.174 5.14993,-0.65047 7.28125,-0.8125 1.76662,-0.13427 4.44971,-0.12571 6.37501,0.375 0.32,0.0832 0.6033,0.20127 0.875,0.3125 1.9546,0.80016 7.9063,3.5625 7.9063,3.5625 -1e-4,0 -6.5912,-3.34001 -7.4375,-3.75 -0.2024,-0.0981 -0.5719,-0.20311 -1.0313,-0.3125 1.2151,-0.5639 5.0413,-1.08306 7.7813,-1.4375 3.0109,-0.38953 3.3525,-0.4289 5.4062,-0.34375 2.1197,0.0879 3.3125,0.3125 3.3125,0.3125 0,0 -0.078,-0.64902 1.0313,-0.90625 0.7443,-0.17256 5.1495,-0.62336 7.2812,-0.78125 2.0606,-0.1526 5.3429,-0.0968 7.25,0.6875 1.955,0.80395 7.875,3.5 7.875,3.5 0,0 -6.5598,-3.27587 -7.4062,-3.6875 -0.2025,-0.0984 -0.5718,-0.20222 -1.0313,-0.3125 1.2154,-0.56154 5.0119,-1.12778 7.75,-1.5 3.009,-0.40905 3.3227,-0.41558 5.375,-0.34375 1.9431,0.068 3.0072,0.16485 3.1875,0.1875 0.1188,-0.1944 0.3846,-0.72881 0.9375,-0.875 0.7418,-0.19612 5.1311,-0.82878 7.25,-1.09375 1.7564,-0.21961 4.4053,-0.33231 6.3125,0.0312 0.3169,0.0604 0.6058,0.18938 0.875,0.28125 1.9362,0.66092 7.8438,2.9375 7.8438,2.9375 -10e-5,0 -6.5367,-2.80655 -7.375,-3.15625 -0.2005,-0.0836 -0.5762,-0.17333 -1.0313,-0.25 1.2037,-0.65046 5.0191,-1.37195 7.7188,-2 2.9667,-0.6902 3.2889,-0.75507 5.3125,-0.875 2.0886,-0.1238 3.2812,-0.0312 3.2812,-0.0312 0,1e-5 -0.087,-0.63205 1,-1.03125 0.7292,-0.2678 5.0472,-1.33797 7.125,-1.8125 2.0085,-0.45869 5.1679,-1.0293 7,-0.625 1.8781,0.41446 13.5782,3.01563 13.5782,3.01563 0,0 -12.3275,-3.02266 -13.1407,-3.26563 -0.1945,-0.0581 -0.5586,-0.10626 -1,-0.125 1.1676,-0.80369 3.5142,-1.6873 6.1094,-2.70312 1.6814,-0.65818 0.9237,-0.37659 2.7759,-1.0036 1.7536,-0.59366 2.4854,-1.01071 2.6304,-1.11299 0.3461,-0.20651 -0.356,-0.12188 -0.5442,-0.0424 z"
4120 id="path8173"
4121 inkscape:connector-curvature="0" />
4122 <path
4123 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7285);enable-background:new"
4124 d="m 1082.625,-275.125 c 1.873,0.39348 4.4961,1.14555 6.0313,1.96875 1.5352,0.82319 2.8222,1.056 5.375,2.5 2.5266,1.42926 4.7958,2.00696 6.9687,2.53125 2.3476,0.56642 5.4354,0.71523 8.8438,1.1875 -1.0889,-0.83975 -6.6074,-1.17245 -8.4063,-1.5625 -1.7989,-0.39006 -3.8941,-1.01616 -6.5937,-2.3125 -2.6997,-1.29634 -3.4944,-1.79896 -5.8125,-2.6875 -2.3182,-0.88854 -4.0044,-1.38314 -6.4063,-1.625 z"
4125 id="path8175"
4126 inkscape:connector-curvature="0" />
4127 <path
4128 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7289);enable-background:new"
4129 d="m 1051.4688,-270 c 1.9053,0.57759 4.5281,1.61572 6.0937,2.59375 1.5656,0.97802 2.8802,1.35981 5.5,3.125 2.593,1.74716 4.9859,2.70927 7.25,3.59375 2.4461,0.95557 5.6826,1.65713 9.4063,3.0625 -1.1896,-1.13784 -7.0631,-2.68675 -8.9375,-3.375 -1.8745,-0.68825 -4.0818,-1.5662 -6.875,-3.28125 -2.7933,-1.71504 -3.5736,-2.2839 -5.9375,-3.40625 -2.3641,-1.12234 -4.0567,-1.83455 -6.5,-2.3125 z"
4130 id="path8177"
4131 inkscape:connector-curvature="0" />
4132 <path
4133 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7293);enable-background:new"
4134 d="m 1020.2188,-266.84375 c 1.9119,0.63811 4.5812,1.75536 6.1562,2.8125 1.5751,1.05715 2.8956,1.50867 5.5313,3.40625 2.6086,1.87821 5.0284,3.03003 7.3125,4.0625 2.4677,1.11545 5.7645,2.1733 9.5312,3.84375 -1.2033,-1.22253 -7.2028,-3.31423 -9.0937,-4.125 -1.891,-0.81077 -4.0649,-1.89379 -6.875,-3.75 -2.8102,-1.8562 -3.6218,-2.47693 -6,-3.71875 -2.3783,-1.2418 -4.1107,-1.97569 -6.5625,-2.53125 z"
4135 id="path8179"
4136 inkscape:connector-curvature="0" />
4137 <path
4138 sodipodi:nodetypes="cssscscsscsssccscssssssscscsscsssscscssssssscscsscsssscscssssssscscsscsssscscssssssscscsscsssscscssssssscscsscsssccscsscscssscssssscsssssscssssscsssssscssssscsssssscssssscsssssscssssscsssssscssssscsszsszssszzcczzzczzzc"
4139 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7337);enable-background:new"
4140 d="m 1110.1719,-266.89063 c 0.1508,0.0486 0.688,0.631 0.1094,1.48438 -0.8101,1.19459 -5.7049,3.32429 -8.5625,4.125 -2.8449,0.79712 -6.2901,0.97774 -10.5625,-0.375 -4.3016,-1.36195 -5.4697,-2.46872 -10.6563,-4.3125 4.664,2.11517 6.1953,3.95233 10.125,5.34375 1.6207,0.57387 3.3671,0.9396 5.0625,1.03125 -0.4451,0.32563 -1.5303,0.9833 -3.5625,1.59375 -2.7955,0.83969 -6.6491,1.53378 -8.25,1.625 -1.5146,0.0863 -3.142,-0.51249 -3.4375,-0.625 0.1667,0.10308 0.3732,0.37734 -0.25,1.03125 -0.8993,0.94363 -6.1474,1.923 -9.125,2.25 -2.9643,0.32555 -6.5216,-0.016 -10.9062,-1.90625 -3.978,-1.71497 -5.339,-2.91536 -9.4063,-4.75 0,0 0,0.15625 0,0.15625 3.6431,2.09529 5.284,3.88327 8.875,5.5625 1.7302,0.80909 3.5917,1.40876 5.4063,1.71875 -0.5349,0.28676 -1.5578,0.71151 -3.4375,1.03125 -2.869,0.48796 -6.809,0.81614 -8.4375,0.75 -0.8507,-0.0345 -1.7286,-0.18437 -2.4063,-0.40625 -0.6848,-0.21488 -1.1897,-0.44467 -1.3125,-0.5 0.1694,0.10721 0.4311,0.40288 -0.2187,1.03125 -0.9097,0.87962 -6.2461,1.33638 -9.25,1.46875 -2.9905,0.13179 -6.5889,-0.45063 -11,-2.5625 -4.4412,-2.12626 -5.6415,-3.4016 -10.9063,-5.78125 4.7343,2.59704 6.2865,4.6291 10.3438,6.71875 1.6733,0.86185 3.4852,1.49425 5.25,1.9375 -0.4633,0.23332 -1.5894,0.68814 -3.6875,0.9375 -2.8863,0.34298 -6.8346,0.49288 -8.4688,0.375 -1.5462,-0.1115 -3.2312,-0.85696 -3.5312,-1 0.1691,0.12029 0.4138,0.41048 -0.2188,1 -0.9128,0.85073 -6.2441,1.26212 -9.25,1.375 -2.9925,0.11237 -6.5897,-0.49043 -11,-2.59375 -4.00125,-1.90823 -5.38803,-3.13783 -9.46875,-5.09375 -3e-5,0 0,0.15625 0,0.15625 3.65506,2.20392 5.29421,4.05255 8.90625,5.90625 1.74029,0.89315 3.637,1.52827 5.4688,1.96875 -0.54,0.2483 -1.5781,0.61533 -3.4688,0.84375 -2.88568,0.34858 -6.86605,0.52095 -8.5,0.40625 -0.85345,-0.0599 -1.72631,-0.25791 -2.40625,-0.5 -0.6871,-0.2353 -1.18935,-0.47226 -1.3125,-0.53125 0.16998,0.11227 0.46448,0.42225 -0.1875,1.03125 -0.91265,0.8525 -6.27533,1.29337 -9.28125,1.40625 -2.99246,0.11237 -6.59346,-0.52805 -11,-2.59375 -4.43653,-2.07978 -5.64688,-3.33171 -10.90625,-5.65625 4.72938,2.54749 6.29074,4.5778 10.34375,6.625 1.67155,0.84433 3.48554,1.46643 5.25,1.90625 -0.46323,0.23422 -1.5897,0.68407 -3.6875,0.9375 -2.88569,0.34858 -6.8362,0.56952 -8.46875,0.46875 -1.54456,-0.0953 -3.20031,-0.82885 -3.5,-0.96875 0.16899,0.11853 0.38192,0.40385 -0.25,1 -0.91186,0.86028 -6.24665,1.33025 -9.25,1.46875 -2.98995,0.1379 -6.56745,-0.45068 -10.96875,-2.46875 -3.99308,-1.83089 -5.36511,-3.0292 -9.4375,-4.90625 -2e-5,0 0,0.15625 0,0.15625 3.64761,2.13327 5.27033,3.93487 8.875,5.71875 1.73675,0.85951 3.60727,1.45014 5.4375,1.875 -0.53947,0.2529 -1.55063,0.64129 -3.4375,0.90625 -2.87978,0.40436 -6.83813,0.64562 -8.46875,0.5625 -0.85172,-0.0434 -1.7277,-0.20855 -2.40625,-0.4375 -0.68569,-0.22201 -1.1896,-0.44339 -1.3125,-0.5 0.16959,0.10899 0.4319,0.40965 -0.21875,1.03125 -0.91079,0.87014 -6.25021,1.39152 -9.25,1.5625 -2.98633,0.17021 -6.57381,-0.31577 -10.96875,-2.28125 -4.42489,-1.97888 -5.60596,-3.22819 -10.84375,-5.375 4.70997,2.38767 6.27017,4.38873 10.3125,6.34375 1.66715,0.80631 3.46043,1.39658 5.21875,1.78125 -0.46163,0.2487 -1.597,0.71225 -3.6875,1.03125 -2.8756,0.43876 -6.7804,0.7331 -8.40625,0.6875 -1.53823,-0.0431 -3.2328,-0.74522 -3.53125,-0.875 0.16833,0.11282 0.41057,0.41375 -0.21875,1.03125 -0.90812,0.8911 -6.20295,1.52825 -9.1875,1.8125 -2.97118,0.28298 -6.57342,-0.1758 -10.9375,-1.9375 -3.95934,-1.59831 -5.32915,-2.79487 -9.34375,-4.3125 3e-5,0 0,0.15625 0,0.15625 3.5959,1.81135 5.23831,3.58233 8.8125,5.15625 1.72207,0.75835 3.58748,1.28895 5.40625,1.625 -0.53609,0.27908 -1.56658,0.68763 -3.4375,1.0625 -2.85539,0.5721 -6.78942,1.01939 -8.40625,1.03125 -0.84451,0.006 -1.70608,-0.0809 -2.375,-0.25 -0.67591,-0.16151 -1.16009,-0.32923 -1.28125,-0.375 0.16722,0.094 0.42267,0.38348 -0.21875,1.0625 -0.89787,0.95052 -6.18648,1.91708 -9.125,2.4375 -2.92534,0.51809 -6.43215,0.37424 -10.71875,-1.03125 -4.3158,-1.41507 -5.47277,-2.52994 -10.5625,-3.96875 4.57685,1.75101 6.08855,3.56006 10.03125,5 1.62608,0.59389 3.36885,0.95565 5.09375,1.15625 -0.45285,0.29702 -1.55478,0.88339 -3.59375,1.46875 -2.80472,0.80517 -6.63886,1.57583 -8.21875,1.75 -1.49475,0.1648 -3.11623,-0.31681 -3.40625,-0.40625 0.16356,0.0901 0.39278,0.35993 -0.21875,1.0625 -0.88247,1.01385 -6.04452,2.37165 -8.9375,3.0625 -2.88002,0.68778 -6.3356,0.76002 -10.5625,-0.4375 -3.83485,-1.08645 -5.17258,-2.07237 -9.0625,-3.125 -10e-6,0 0,0.15625 0,0.15625 3.48418,1.39485 5.06941,2.9194 8.53125,4.03125 1.66793,0.53572 3.45578,0.78674 5.21875,0.875 -0.51964,0.35212 -1.50039,0.91452 -3.3125,1.53125 -2.76566,0.94125 -6.59024,1.93537 -8.15625,2.15625 -0.81794,0.11539 -1.6331,0.12283 -2.28125,0.0312 -0.65496,-0.0832 -1.1326,-0.21827 -1.25,-0.25 0.16204,0.0746 0.43399,0.34044 -0.1875,1.09375 -0.87,1.05453 -6.00963,2.65925 -8.875,3.4375 -2.85253,0.77476 -6.25912,0.9582 -10.4375,-0.0937 -4.20683,-1.05913 -5.35669,-2.04166 -10.34375,-3.15625 4.48454,1.45946 5.96935,3.13523 9.8125,4.25 1.58504,0.45977 3.28679,0.63825 4.96875,0.6875 -0.44157,0.33676 -1.51251,1.02773 -3.5,1.78125 -2.73393,1.03649 -6.45198,2.16269 -8,2.4375 -1.46462,0.26002 -3.05958,-0.11654 -3.34375,-0.1875 0.16025,0.0796 0.38044,0.32098 -0.21875,1.0625 -0.86466,1.07006 -5.91652,2.81815 -8.75,3.6875 -2.8208,0.86547 -6.2075,1.15631 -10.34375,0.21875 -3.75259,-0.85061 -5.04785,-1.71647 -8.875,-2.59375 0,0 0,0.15625 0,0.15625 3.42796,1.23779 4.98741,2.6323 8.375,3.53125 1.63216,0.43314 3.36704,0.58301 5.09375,0.5625 -0.50893,0.38417 -1.47675,1.02182 -3.25,1.75 -2.70634,1.11134 -6.43633,2.30781 -7.96875,2.625 -0.8004,0.16569 -1.61231,0.21862 -2.25,0.15625 0,0 0,0.51552 0,0.92229 0,0.26507 0,0.48396 0,0.48396 0.22645,-0.14468 0.44891,-0.27261 0.71875,-0.375 1.08052,-0.40998 2.17161,-0.21577 6,-1.6875 3.82843,-1.47174 5.22412,-2.00498 5.90625,-2.40625 0.6796,-0.39978 1.61165,-0.87937 2.21875,-1.53125 1.82685,-0.13775 3.57075,-0.49323 4.9375,-1 2.96812,-1.10052 4.87537,-1.80619 6.78125,-2.46875 1.90586,-0.66254 2.35409,-1.41487 3.40625,-1.78125 1.09155,-0.38011 2.19511,-0.16538 6.0625,-1.53125 3.86745,-1.36586 5.28316,-1.82708 5.96875,-2.21875 0.70109,-0.40052 1.70081,-0.93298 2.3125,-1.59375 1.9708,-0.0547 3.81685,-0.38463 5.28125,-0.875 3.00148,-1.00508 4.92615,-1.62171 6.84375,-2.25 1.5386,-0.5041 2.17402,-1.04677 2.90625,-1.4375 0.23016,-0.13431 0.47574,-0.25373 0.75,-0.34375 1.09823,-0.36048 2.18145,-0.0814 6.09375,-1.3125 3.91233,-1.23113 5.36605,-1.67295 6.0625,-2.03125 0.69388,-0.35697 1.63015,-0.79261 2.25,-1.40625 1.86521,-0.0227 3.63581,-0.26683 5.03125,-0.6875 3.03043,-0.91354 4.99238,-1.4301 6.9375,-1.96875 1.94511,-0.53864 2.42618,-1.26452 3.5,-1.5625 1.11401,-0.30915 2.21994,0.007 6.1875,-1.03125 3.96761,-1.03863 5.41758,-1.43273 6.125,-1.75 0.73487,-0.32959 1.81383,-0.75372 2.4375,-1.375 1.99774,0.116 3.85743,-0.0201 5.34375,-0.375 3.07811,-0.735 5.08344,-1.10094 7.0625,-1.5 1.58792,-0.32018 2.24429,-0.79055 3,-1.09375 0.23757,-0.1068 0.46695,-0.19276 0.75,-0.25 1.13347,-0.22919 2.30448,0.20893 6.34375,-0.5 4.03933,-0.70893 5.50025,-0.92709 6.21875,-1.1875 0.71586,-0.25944 1.70428,-0.56724 2.34375,-1.09375 1.92427,0.23949 3.74788,0.22453 5.1875,0 3.12633,-0.48762 5.15455,-0.70067 7.15625,-0.96875 2.00171,-0.26807 2.48869,-0.94514 3.59375,-1.09375 1.14639,-0.15418 2.27592,0.30157 6.34375,-0.21875 4.06784,-0.52032 5.56013,-0.69573 6.28125,-0.9375 0.7371,-0.24714 1.79809,-0.58623 2.4375,-1.125 2.05007,0.33553 3.97378,0.39796 5.5,0.21875 3.14231,-0.36896 5.17994,-0.55936 7.1875,-0.78125 1.61076,-0.17802 2.26467,-0.6082 3.03125,-0.84375 0.24094,-0.0855 0.49412,-0.1556 0.78125,-0.1875 1.14978,-0.12772 2.30129,0.34665 6.375,-0.125 4.07374,-0.47165 5.55909,-0.6106 6.28125,-0.84375 0.71946,-0.23227 1.70024,-0.47346 2.34375,-0.96875 1.93637,0.33346 3.77006,0.40424 5.21875,0.25 3.14602,-0.33495 5.17756,-0.51859 7.1875,-0.71875 2.00996,-0.20014 2.48414,-0.82639 3.59375,-0.9375 1.15114,-0.11528 2.29643,0.36506 6.375,-0.0625 4.07861,-0.42756 5.58886,-0.56209 6.3125,-0.78125 0.73915,-0.22386 1.79572,-0.51325 2.4375,-1.03125 2.0571,0.39867 4.00187,0.4934 5.53125,0.34375 3.14873,-0.3081 5.17584,-0.47325 7.1875,-0.65625 1.61407,-0.14682 2.2631,-0.56055 3.03125,-0.78125 0.24142,-0.0809 0.49353,-0.12991 0.78125,-0.15625 1.15211,-0.10545 2.29296,0.39275 6.375,0 4.08208,-0.39275 5.5889,-0.53084 6.3125,-0.75 0.7209,-0.21833 1.6997,-0.4477 2.3438,-0.9375 1.938,0.34999 3.7688,0.45438 5.2187,0.3125 3.1487,-0.3081 5.1758,-0.47325 7.1875,-0.65625 2.0116,-0.18299 2.5142,-0.83802 3.625,-0.9375 1.1523,-0.10323 2.2922,0.38483 6.375,0 4.0829,-0.38482 5.5887,-0.501 6.3125,-0.71875 0.7393,-0.22243 1.7956,-0.51449 2.4375,-1.03125 2.0574,0.40177 4.0029,0.50333 5.5313,0.34375 3.1466,-0.32852 5.1771,-0.5227 7.1875,-0.71875 1.613,-0.15729 2.2656,-0.63148 3.0312,-0.875 0.2407,-0.088 0.4632,-0.12137 0.75,-0.15625 1.1483,-0.1397 2.3167,0.33991 6.375,-0.25 4.0583,-0.58992 5.5618,-0.77714 6.2813,-1.03125 0.7167,-0.25316 1.6745,-0.55807 2.3125,-1.09375 1.9197,0.21194 3.7199,0.15141 5.1562,-0.0937 3.1191,-0.5324 5.1116,-0.92861 7.0938,-1.3125 1.9821,-0.38387 2.4743,-1.03965 3.5625,-1.28125 1.1288,-0.25066 2.2703,0.11629 6.25,-0.875 3.9796,-0.99128 5.4296,-1.4193 6.125,-1.78125 0.7223,-0.37601 1.7619,-0.87058 2.375,-1.53125 1.963,-0.012 3.7937,-0.29105 5.2187,-0.84375 2.9512,-1.14461 4.8732,-1.86942 6.6875,-2.75 1.4557,-0.70653 2.3348,-1.68641 2.5469,-1.98438 0.2122,-0.29796 0.1118,-0.7453 0.1379,-0.76675 0.043,-0.0352 0.3193,-0.085 0.479,-0.42844 0.8589,-1.84708 2.321,-5.64459 2.4352,-6.32945 0.1137,-0.68216 0.1638,-1.34774 0.2145,-1.74497 0.029,-0.22952 -0.1467,-0.86544 -0.1246,-0.92404 0.031,-0.0821 0.3045,-0.26528 0.3599,-0.51471 0.2663,-1.19833 0.089,-2.19129 -0.1251,-3.60893 -0.214,-1.41764 -0.9837,-4.62214 -1.6369,-5.47626 -0.6589,-0.86172 -1.2229,-1.01117 -1.7479,-1.00066 -0.2086,0.26976 0.1368,0.26309 0.1626,0.31261 0.6806,0.0508 0.934,0.36864 1.4192,0.89662 0.4852,0.52798 1.2218,3.85117 1.3584,5.30156 0.1366,1.45039 0.19,2.8602 -0.088,3.46864 -0.2781,0.60845 -0.7232,0.51703 -1.0156,0.58291 0.531,0.18589 0.6698,0.12483 0.7314,0.96929 0.059,0.81338 -0.1332,1.63969 -0.5198,2.80562 -0.3912,1.18001 -1.8452,4.34998 -2.2857,4.59877 -0.4523,0.25551 -0.7314,0.27038 -1.067,0.13944 z"
4141 id="path8181"
4142 inkscape:connector-curvature="0" />
4143 <path
4144 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7297);enable-background:new"
4145 d="m 988.75,-263.84375 c 1.91161,0.6344 4.55027,1.75841 6.125,2.8125 1.57477,1.05409 2.8961,1.48252 5.5313,3.375 2.6082,1.87314 5.0269,3.01522 7.3125,4.0625 2.4693,1.13147 5.7521,2.15474 9.5312,3.9375 -1.2072,-1.2584 -7.139,-3.36445 -9.0312,-4.1875 -1.8922,-0.82304 -4.128,-1.93049 -6.9375,-3.78125 -2.80961,-1.85075 -3.62224,-2.48154 -6.00005,-3.71875 -2.37782,-1.23719 -4.07988,-1.9492 -6.53125,-2.5 z"
4146 id="path8183"
4147 inkscape:connector-curvature="0" />
4148 <path
4149 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7301);enable-background:new"
4150 d="m 957.5,-260.78125 c 1.91,0.6181 4.58288,1.70934 6.15625,2.75 1.57339,1.04066 2.89608,1.48252 5.53125,3.375 2.60823,1.87315 5.02692,3.01521 7.3125,4.0625 2.46931,1.13147 5.75213,2.15475 9.53125,3.9375 -1.20728,-1.2584 -7.20154,-3.3957 -9.09375,-4.21875 -1.89217,-0.82304 -4.09666,-1.9305 -6.90625,-3.78125 -2.80958,-1.85075 -3.59295,-2.43932 -5.96875,-3.65625 -2.37578,-1.21691 -4.11321,-1.93885 -6.5625,-2.46875 z"
4151 id="path8185"
4152 inkscape:connector-curvature="0" />
4153 <path
4154 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7305);enable-background:new"
4155 d="m 926.09375,-257.375 c 1.90772,0.59745 4.55348,1.66384 6.125,2.6875 1.5715,1.02365 2.87022,1.43971 5.5,3.28125 2.60291,1.82273 5.02887,2.9722 7.3125,4 2.4672,1.11041 5.75535,2.09323 9.53125,3.84375 -1.20623,-1.2481 -7.1719,-3.31809 -9.0625,-4.125 -1.89058,-0.8069 -4.10242,-1.89104 -6.90625,-3.6875 -2.80385,-1.79644 -3.62704,-2.40251 -6,-3.59375 -2.37297,-1.19124 -4.05362,-1.90283 -6.5,-2.40625 z"
4156 id="path8187"
4157 inkscape:connector-curvature="0" />
4158 <path
4159 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7309);enable-background:new"
4160 d="m 894.90625,-253.5625 c 1.90213,0.55355 4.58701,1.58887 6.15625,2.59375 1.56923,1.00487 2.87401,1.40864 5.5,3.21875 2.59912,1.79164 5.00034,2.87189 7.28125,3.875 2.46428,1.08374 5.75984,2.04029 9.53125,3.75 -1.2048,-1.23507 -7.17416,-3.24478 -9.0625,-4.03125 -1.88832,-0.78647 -4.0752,-1.8308 -6.875,-3.59375 -2.79977,-1.76294 -3.59919,-2.36836 -5.96875,-3.53125 -2.36957,-1.16288 -4.12325,-1.83412 -6.5625,-2.28125 z"
4161 id="path8189"
4162 inkscape:connector-curvature="0" />
4163 <path
4164 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7313);enable-background:new"
4165 d="m 863.71875,-248.65625 c 1.88062,0.42909 4.50427,1.38038 6.0625,2.3125 1.55823,0.93211 2.85233,1.25776 5.46875,3 2.58971,1.72444 4.98067,2.70802 7.25,3.625 2.45176,0.99069 5.73959,1.87707 9.5,3.5 -1.20131,-1.20734 -7.15249,-3.06609 -9.03125,-3.78125 -1.87875,-0.71517 -4.0854,-1.68442 -6.875,-3.375 -2.78963,-1.69057 -3.58461,-2.22822 -5.9375,-3.28125 -2.35292,-1.05301 -4.02584,-1.71248 -6.4375,-2 z"
4166 id="path8191"
4167 inkscape:connector-curvature="0" />
4168 <path
4169 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7317);enable-background:new"
4170 d="m 833.15625,-241.375 c 1.84836,0.29644 4.46945,0.97632 6,1.78125 1.53058,0.80493 2.81374,1.05573 5.375,2.53125 2.53504,1.46046 4.89068,2.32509 7.125,3.0625 2.41399,0.79668 5.65711,1.46689 9.375,2.84375 -1.18771,-1.12873 -7.08772,-2.58975 -8.9375,-3.15625 -1.84977,-0.5665 -4.00342,-1.37392 -6.75,-2.84375 -2.74657,-1.46983 -3.50136,-1.92028 -5.8125,-2.78125 -2.31115,-0.86095 -4.00471,-1.32009 -6.375,-1.4375 z"
4171 id="path8193"
4172 inkscape:connector-curvature="0" />
4173 <path
4174 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7321);enable-background:new"
4175 d="m 802.90625,-232.3125 c 1.8222,0.21127 4.36576,0.80057 5.875,1.53125 1.50925,0.73066 2.75568,0.92998 5.28125,2.28125 2.49976,1.33746 4.83154,2.04843 7.03125,2.65625 2.37653,0.65667 5.56464,1.07288 9.21875,2.1875 -1.16735,-1.04496 -6.92888,-2.10329 -8.75,-2.5625 -1.82111,-0.45921 -3.95225,-1.12696 -6.65625,-2.4375 -2.70403,-1.31052 -3.47106,-1.7199 -5.75,-2.46875 -2.27895,-0.74883 -3.91325,-1.17931 -6.25,-1.1875 z"
4176 id="path8195"
4177 inkscape:connector-curvature="0" />
4178 <path
4179 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7329);enable-background:new"
4180 d="m 773.1875,-222.1875 c 1.81109,0.1787 4.32059,0.66506 5.8125,1.34375 1.49194,0.67869 2.7534,0.79822 5.25,2.0625 2.47107,1.25138 4.79005,1.89614 6.96875,2.4375 2.35387,0.58488 5.49134,0.89752 9.09375,1.84375 -1.15084,-0.99116 -6.85251,-1.7833 -8.65625,-2.1875 -1.80372,-0.4042 -3.91553,-1.02116 -6.59375,-2.25 -2.67818,-1.22884 -3.40345,-1.61089 -5.65625,-2.28125 -2.25279,-0.67034 -3.89627,-1.00232 -6.21875,-0.96875 z"
4181 id="path8197"
4182 inkscape:connector-curvature="0" />
4183 <path
4184 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7325);enable-background:new"
4185 d="m 743.5625,-211.1875 c 1.79281,0.12911 4.27313,0.54965 5.75,1.1875 1.4769,0.63785 2.7161,0.74156 5.1875,1.9375 2.44618,1.18372 4.72054,1.74666 6.875,2.21875 2.32767,0.51003 5.4196,0.68064 9,1.5625 -1.14379,-0.9706 -6.74759,-1.59065 -8.53125,-1.9375 -1.78367,-0.34684 -3.88285,-0.88756 -6.53125,-2.03125 -2.64841,-1.14368 -3.39495,-1.51631 -5.625,-2.125 -2.23008,-0.60868 -3.82594,-0.90966 -6.125,-0.8125 z"
4186 id="path8199"
4187 inkscape:connector-curvature="0" />
4188 </g>
4189 </g>
4190 <path
4191 sodipodi:nodetypes="ccccccccc"
4192 id="path8201"
4193 d="m 863.87812,475.6679 c 1.64212,-3.218 3.51781,-5.73529 4.86136,-9.84898 0.79872,-3.65789 3.31204,-2.03073 7.26047,-8.3969 1.40193,-2.2395 5.47653,0.39136 8.9651,-2.39911 1.27072,-0.80319 2.88488,-0.40431 4.48256,-0.0631 3.76539,1.31896 5.82576,3.70355 8.33376,5.80837 6.13906,5.97023 20.53414,7.94327 23.48604,6.31346 1.43405,-2.90474 7.88128,-5.40888 12.37437,-11.11168 0.74811,-1.12267 11.72936,-8.74446 14.64721,-6.56599"
4194 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4195 inkscape:connector-curvature="0" />
4196 <path
4197 sodipodi:nodetypes="ccccccccccc"
4198 id="path8203"
4199 d="m 888.50059,465.25071 c 7.36341,-3.23297 13.8109,-8.9084 20.70813,-13.38452 3.31057,-1.96954 6.86983,3.21601 10.796,3.59866 2.29773,-0.21813 3.7129,1.20259 5.68211,1.6415 5.15636,1.31779 2.39793,3.86488 9.97526,6.43972 6.15561,1.7204 8.9074,-6.79847 14.89975,-7.3236 4.87739,-0.50299 8.09892,-0.31603 11.61675,-0.25254 3.92696,0.13889 4.07855,-3.4976 6.06092,-5.3033 2.98056,-2.80522 7.15561,-1.84972 10.14485,-4.7409 1.01754,-1.38468 1.95458,-3.01085 2.73459,-5.10809 0.88201,-2.00034 3.04006,0.30598 4.79823,1.26269"
4200 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4201 inkscape:connector-curvature="0" />
4202 <path
4203 id="path8994"
4204 d="m 403.27922,1056.3058 56.56854,-42.4264 72.12489,14.1421 -46.66904,52.3259 -53.74012,7.0711 -28.28427,-31.1127 z"
4205 style="display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter9048);enable-background:accumulate"
4206 inkscape:connector-curvature="0" />
4207 <path
4208 sodipodi:nodetypes="czzzzzzcccccccccczczz"
4209 id="path4189"
4210 d="m 542.27183,1060.5719 c -1.40727,18.8012 -1.1449,32.751 2.08174,49.3033 3.22666,16.5523 16.40609,45.9073 20.33441,63.1837 3.92621,17.2671 2.69413,38.3097 -12.45944,51.1483 -15.31761,12.9774 -42.05128,21.5989 -67.83231,15.7337 -25.78105,-5.8652 -69.54907,-49.2234 -88.59019,-70.2283 -19.11214,-21.0833 -63.76086,-93.8506 -77.93853,-124.2758 -14.17767,-30.4251 -12.65961,-36.7186 -8.11972,-45.52972 -9.36672,-24.5205 -12.41371,-50.06681 -33.71245,-75.57664 30.32547,3.11444 43.88028,26.95633 60.12568,47.13975 -5.52989,-48.07603 -18.05471,-64.4165 -28.37395,-90.7243 29.9943,6.08165 50.57936,31.87239 63.97979,72.7125 9.55415,-3.91791 18.23776,-9.37294 30.18741,-9.0612 -11.2975,-41.6958 -17.94946,-69.91584 -36.68725,-101.06994 53.44196,5.67033 83.65702,80.63932 78.97142,87.9608 9.97797,-2.24399 19.00565,-6.53038 30.43653,-5.65167 -11.24897,-38.34702 -21.04781,-76.8679 -3.65971,-118.64819 0,0 48.28678,65.43688 54.38966,85.80578 6.10287,20.3689 1.51881,38.70051 1.51881,38.70051 0,0 16.95957,31.0853 20.29392,51.09414 3.3731,20.24138 -3.53269,59.10328 -4.94582,77.98328 z"
4211 style="display:inline;opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4212 inkscape:connector-curvature="0" />
4213 <path
4214 transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,995.28646,23.53493)"
4215 clip-path="url(#clipPath3631)"
4216 sodipodi:nodetypes="cccccccccccccccccccccc"
4217 id="path4191"
4218 d="m 719.5,738.69519 18.31177,15.43196 44.41103,-15.38821 23.2772,-25.54375 11.46397,19.22065 30.67161,12.78354 25.09737,5.72837 L 892,723.19519 908.02309,747.02126 947,752.19519 l 10.24541,-6.19852 6.75471,8.6982 25.49988,11.00032 2,-40.5 L 955.94866,710.6576 923.45591,689.1305 883.0038,677.66492 861.69668,662.13148 840,685.19519 755.02878,638.61208 722,676.69519 l -2.5,62 z"
4219 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter3587);enable-background:accumulate"
4220 inkscape:connector-curvature="0" />
4221 <path
4222 transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,822.28931,10.93589)"
4223 sodipodi:nodetypes="ccssscsssssssssssssccccscccccccccsscccccccccccssscccccccccccccccsccccssssssssssssscccsssc"
4224 clip-path="url(#clipPath3677)"
4225 id="path4193"
4226 d="m 584,696.5 -6.5625,17.15625 c 0,0 -7.81152,20.36488 -15.6875,43.65625 -3.93799,11.64568 -7.88302,24.04145 -10.9375,35.125 -3.05448,11.08355 -5.33586,20.37986 -5.5,28.28125 -0.39807,19.16196 5.74653,34.8883 8.9375,41.75 -0.77153,3.55523 -1.99137,9.45432 -3.34375,18.09375 -1.92042,12.26821 -3.71827,27.15441 -2.375,39.875 1.38209,13.08835 6.81222,28.18765 12.59375,43.03125 5.78153,14.8436 12.05435,29.22711 15.21875,38.03125 6.63206,18.4519 9.99296,31.5763 11.3125,48.5 0.58135,7.4561 -0.24227,20.336 -1.25,33.375 -1.00773,13.039 -2.18661,26.3014 -1.6875,36.9688 0.98911,21.1398 9.32798,46.8347 33.375,57.9374 22.77483,10.5154 55.32682,11.7022 83.4375,-3.4374 16.15992,-8.7034 30.07634,-27.0976 43.375,-46.9063 13.29866,-19.8087 24.96917,-41.0534 31.9375,-54.9063 15.35292,-30.5212 39.39353,-115.46418 45.625,-152.7187 3.01859,-18.04653 3.92166,-29.06555 2.625,-38.03125 -0.97853,-6.76604 -3.82819,-12.1474 -6.875,-16.21875 2.04274,-27.50791 -0.73207,-51.36878 11.96875,-79.40625 L 840.75,763.375 l -23.8125,9.3125 c -17.48975,6.83753 -28.90164,19.04536 -36.59375,32.0625 -0.32251,0.54577 -0.56314,1.10776 -0.875,1.65625 0.22203,-22.51521 4.40784,-37.63759 6.59375,-58.6875 l 1.96875,-19 L 771,737.375 c -30.59449,15.55571 -45.69489,48.19321 -49.71875,90.21875 -4.24532,-0.62547 -8.8314,-1.01965 -13.8125,-0.84375 -0.29149,-39.18036 -0.39629,-67.03685 8.59375,-99.375 l 5.59375,-20.125 -19.4375,7.65625 c -30.90937,12.20394 -47.85954,41.93073 -56.625,68.375 -4.38273,13.22214 -6.74582,25.80121 -7.59375,35.9375 -0.23203,2.77373 -0.31106,5.31132 -0.3125,7.71875 -3.24187,-0.0364 -6.42052,0.13589 -10.0625,0.5 0.0416,-39.00473 -3.48424,-79.75415 -32.28125,-116.5 L 584,696.5 Z m 5.8125,43.8125 c 16.80691,30.64383 17.47451,63.96728 16.9375,99.75 l -0.21875,15.0625 12.03493,-6.53921 c 8.66205,-3.13302 19.56058,-0.22752 31.93382,-0.83579 l 14.67465,9.3566 -6.3309,-25.7941 c -0.0897,-0.22997 -0.22046,-0.41669 -0.25,-0.71875 -0.19951,-2.03986 -0.22232,-5.47307 0.125,-9.625 0.69464,-8.30386 2.78957,-19.58524 6.625,-31.15625 5.15532,-15.55294 13.48801,-31.19248 25.125,-42.53125 -4.68381,28.63798 -3.21559,60.25934 -3.01164,95.80514 l -2.76593,13.26164 15.49632,-7.59803 c 9.0294,-2.75771 17.18897,-0.34996 29.28125,1.09375 l 13.24632,9.44423 L 741.09375,840 c 1.44793,-30.97177 8.22149,-53.67808 20.71875,-68.875 -2.98688,19.77884 -5.43043,41.7848 0.3125,78.34375 l 1.06552,6.37318 -2.93815,11.51685 10.61711,-8.16818 9.18973,10.22198 -1.54828,-10.4636 L 781.9375,852 c 5.70102,-13.21149 10.17282,-26.21337 16.34375,-36.65625 0.95986,-1.62434 2.03153,-3.06436 3.0625,-4.5625 -3.68066,21.15535 -2.42716,40.20815 -4.09375,57.78125 l -4.68014,7.80698 7.39889,0.22427 c 3.22005,3.48361 3.8675,3.85068 4.5625,8.65625 0.695,4.80557 0.31862,14.40035 -2.5625,31.625 -5.56799,33.28792 -31.84562,77.83981 -43.7404,101.4864 -6.60491,13.1304 -18.52833,57.4859 -31.12335,76.2465 -12.59502,18.7605 -28.53137,39.7673 -37.17204,44.4209 -21.49052,11.5742 -44.55594,25.5059 -60.61889,18.0895 -14.37486,-6.637 -23.03969,-21.1927 -23.81407,-37.7433 -0.38311,-8.188 0.61279,-21.3092 1.625,-34.4062 1.01221,-13.0971 11.28891,-22.5708 15.42339,-36.5626 5.37229,-18.1808 -1.44687,-36.5944 -12.5,-53.93745 -6.48655,-10.17778 -23.9768,-24.2579 -29.54839,-38.5625 -5.57159,-14.3046 -10.36751,-29.00315 -11.28125,-37.65625 -0.92621,-8.77113 0.4225,-23.02502 2.21875,-34.5 1.79625,-11.47497 3.84375,-20.28125 3.84375,-20.28125 l 9.42278,-3.6152 -10.48528,-3.8848 c 0,0 -8.49889,-15.3101 -8.09375,-34.8125 0.0711,-3.42316 1.83626,-12.72805 4.71875,-23.1875 2.88249,-10.45945 6.76466,-22.55271 10.625,-33.96875 3.04439,-9.00308 5.78063,-16.60345 8.34375,-23.6875 z"
4227 style="display:inline;opacity:0.58775509;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3898);enable-background:new"
4228 inkscape:connector-curvature="0" />
4229 <g
4230 transform="translate(276,136)"
4231 clip-path="url(#clipPath3622)"
4232 id="g3617"
4233 style="display:inline;enable-background:new">
4234 <path
4235 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter9024);enable-background:accumulate"
4236 d="m -15.66751,843.48852 -49.49748,-15.55635 -26.87005,52.3259 41.01219,45.25484 49.49747,-38.18377 -14.14213,-43.84062 z"
4237 id="path4195"
4238 transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,-52.200498,74.09707)"
4239 inkscape:connector-curvature="0" />
4240 <path
4241 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter9020);enable-background:accumulate"
4242 d="m 118.70648,859.93048 -55.154328,-46.66904 -43.84062,36.76955 33.94113,53.74011 -13.596814,85.46203 -39.44536579,28.29217 -41.01220021,11.3137 -2.82842,46.669 56.56854,25.4559 18.943987,-69.65 23.45655,-58.85663 46.347541,-72.61491 16.62,-39.91188 z"
4243 id="path4197"
4244 transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,-46.92842,75.511284)"
4245 sodipodi:nodetypes="ccccccccccccc"
4246 inkscape:connector-curvature="0" />
4247 </g>
4248 <path
4249 transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,229.07158,211.51128)"
4250 id="path4199"
4251 d="m -70.82184,932.58397 60.81118,-26.87005 100.40916,31.1127 -63.63961,31.11269 -82.02438,-16.97056 -15.55635,-18.38478 z"
4252 style="display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter9044);enable-background:accumulate"
4253 inkscape:connector-curvature="0" />
4254 <path
4255 transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,822.28931,10.93589)"
4256 clip-path="url(#clipPath4177)"
4257 sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccczzzcccccc"
4258 id="path4201"
4259 d="m 583.0625,715.75 c -12.10609,34.44974 -26.7145,68.53333 -31.75,104.84375 -0.83208,14.92867 4.58915,29.15943 8.84375,43.0625 -5.91624,27.20126 -10.13681,56.89995 1.15625,83.125 13.51717,38.16085 35.00147,75.68215 32.42279,117.46825 -0.9483,29.2942 -9.01444,60.9941 5.38971,88.2817 10.19864,19.3348 33.13956,27.3117 53.96785,27.6676 27.86219,1.1741 56.46261,-11.6216 72.0009,-35.2613 22.59549,-29.3717 41.80051,-61.4973 55.23865,-96.0598 16.89053,-45.506 29.6718,-92.56072 37.93402,-140.3989 1.8244,-12.94106 3.10108,-27.46985 -4.57892,-38.82255 -3.43115,-7.33632 0.0421,-15.56014 -0.68457,-23.30977 0.674,-24.99466 4.01232,-50.66376 16.65332,-72.59648 -17.73313,6.4446 -35.07268,16.55971 -44.00307,33.86425 -3.93508,6.70955 -7.60482,13.57413 -11.37193,20.38575 -3.54999,-30.01408 3.71963,-59.64828 6.78125,-89.28125 -20.16604,9.05463 -36.87672,25.65522 -44.17495,46.682 -6.30463,15.58003 -8.80222,32.31718 -10.26255,49.03675 -8.25334,-1.51925 -16.68447,-2.10155 -25.0625,-1.5 -0.96308,-38.69787 -0.46696,-79.40715 10.96875,-115.90625 -18.68113,6.21776 -35.16621,18.73551 -45.62803,35.38723 -13.85254,20.87979 -21.2614,45.75395 -23.05947,70.61277 0.58534,4.32454 -0.0613,11.84009 -6.34375,9.875 -5.33118,0.0176 -10.62908,0.67883 -15.9375,1.09375 1.14784,-39.38148 -3.34144,-81.6282 -27.0625,-114.21875 -3.06071,-3.63717 -5.63685,-7.68438 -8.625,-11.34375 -0.9375,2.4375 -1.875,4.875 -2.8125,7.3125 z m 7.75,13.84375 c 18.56527,29.29629 22.4825,64.82012 22.125,98.875 0.20409,5.17526 -0.51656,11.8292 0.125,16.0625 12.31856,-6.10275 26.73912,-2.4399 39.78125,-2.1875 2.31712,1.22325 3.1921,1.65243 1.90625,-1.40625 -4.16455,-13.95285 -1.84828,-28.613 1.80504,-42.40764 6.36687,-26.29064 20.62828,-51.08798 42.81996,-67.02986 -8.61709,37.23706 -5.71658,76.56161 -6.09375,113.96875 12.25344,-6.9099 27.27879,-3.44613 40.03125,-0.25 3.39222,3.5348 2.28935,-0.72948 2.1875,-3.8125 -0.48309,-21.37058 4.13133,-43.06963 13.6875,-62.15625 5.96266,-10.68727 14.24338,-19.80379 22.4375,-28.875 -7.87156,33.8381 -9.2029,69.33593 -2.71875,103.5 1.72485,-1.41118 4.60681,-0.45414 5.65625,-0.375 9.68369,-21.23682 16.35112,-45.38062 34.89016,-60.74185 1.87329,-0.37122 -1.44818,8.52495 -1.48391,11.8981 -3.53488,21.84581 -7.17516,44.14234 -8.78421,66.21911 -8.78379,2.34171 2.84835,2.32354 3.46875,4.0625 7.92311,10.5658 4.66299,24.40472 3.63165,36.35334 -7.06405,45.03355 -22.14231,87.36194 -35.95355,130.6798 -12.07476,32.9493 -27.3742,58.8525 -47.88808,87.2015 -10.95257,13.5514 -23.24472,27.8513 -40.84375,32.5 -20.15601,6.2413 -44.20676,10.8769 -62.59956,0.046 -17.28966,-12.3414 -21.02393,-35.7089 -19.26226,-55.6864 0.0488,-15.8262 4.93886,-28.5121 4.4106,-43.4918 -0.53824,-15.2629 -2.29135,-30.5647 -6.54261,-46.8663 -4.25126,-16.30162 -9.04325,-24.91794 -16.11906,-41.57338 -7.24111,-17.04456 -15.07015,-36.74863 -18.20542,-56.28842 -1.74948,-18.62714 2.89171,-37.12262 5.78125,-55.25 3.29623,-2.83696 -1.59799,-5.19659 -2.3125,-8.1875 -7.60113,-17.01508 -8.40747,-36.7749 -2.74234,-54.55998 7.1302,-25.0723 15.76087,-49.63241 24.67984,-74.12752 0.70833,1.30208 1.41667,2.60417 2.125,3.90625 z"
4260 style="display:inline;opacity:0.58775509;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4105);enable-background:new"
4261 inkscape:connector-curvature="0" />
4262 <path
4263 transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,995.28646,23.53493)"
4264 clip-path="url(#clipPath3631)"
4265 sodipodi:nodetypes="cccccccc"
4266 id="path4203"
4267 d="m 735.05635,733.03834 2.75542,21.08881 44.41103,-15.38821 4.85063,-22.38975 -3.93617,-22.05222 -22.45163,-36.59301 -8.28004,30.30494 -17.34924,45.02944 z"
4268 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter4130);enable-background:accumulate"
4269 inkscape:connector-curvature="0" />
4270 <path
4271 transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,995.28646,23.53493)"
4272 clip-path="url(#clipPath3631)"
4273 sodipodi:nodetypes="cccccccc"
4274 id="path4205"
4275 d="m 831.81321,730.29452 15.82237,14.90486 20.85473,2.89994 -1.59029,-39.92598 8.32561,-30.50842 -7.16499,-6.34106 -21.69669,20.9424 -14.55074,38.02826 z"
4276 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter4141);enable-background:accumulate"
4277 inkscape:connector-curvature="0" />
4278 <g
4279 transform="translate(276,136)"
4280 clip-path="url(#clipPath8338)"
4281 style="display:inline;filter:url(#filter8333);enable-background:new"
4282 id="g8317">
4283 <path
4284 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
4285 d="m 964.00012,754.69487 18.42881,7.46479 9.07107,-36.96447 -14.87031,4.83886 -12.62957,24.66082 z"
4286 id="path4209"
4287 sodipodi:nodetypes="ccccc"
4288 clip-path="none"
4289 transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,719.28646,-112.46507)"
4290 inkscape:connector-curvature="0" />
4291 <rect
4292 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
4293 id="rect8315"
4294 width="182"
4295 height="177"
4296 x="-55"
4297 y="757.19519" />
4298 </g>
4299 <g
4300 transform="translate(276,136)"
4301 clip-path="url(#clipPath8359)"
4302 style="display:inline;filter:url(#filter8354);enable-background:new"
4303 id="g8346">
4304 <path
4305 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
4306 d="m 910.14441,746.31415 32.61295,5.17393 -0.36119,-23.87619 7.18853,-29.68221 -8.45112,-5.26365 -21.82194,26.51077 -9.16723,27.13735 z"
4307 id="path4207"
4308 sodipodi:nodetypes="ccccccc"
4309 clip-path="none"
4310 transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,719.28646,-112.46507)"
4311 inkscape:connector-curvature="0" />
4312 <rect
4313 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
4314 id="rect8344"
4315 width="165"
4316 height="176"
4317 x="-22"
4318 y="696.19519" />
4319 </g>
4320 <path
4321 sodipodi:nodetypes="czzzzzzcccccccccczczz"
4322 id="path8848"
4323 d="m 1036.164,1071.8338 c 6.7941,18.9028 10.4937,33.2997 11.8903,51.2119 1.3966,17.9123 -3.7827,51.8008 -2.9005,70.6561 0.8818,18.8452 8.1337,40.099 27.3446,48.9689 19.4189,8.9658 49.3193,10.2113 74.1199,-3.1456 24.8006,-13.357 57.401,-70.3255 70.9742,-97.3087 13.6239,-27.0839 38.7611,-114.4974 44.6608,-149.76859 5.8998,-35.27121 2.5506,-41.30077 -4.6174,-49.05549 2.6403,-27.84015 -1.4998,-54.93543 13.1096,-87.18618 -30.249,11.8257 -37.3823,40.1607 -48.3189,65.50508 -8.0009,-50.93293 0.2092,-71.27319 3.3189,-101.21936 -29.0647,14.77791 -42.8615,47.11402 -45,92.85714 -10.9239,-1.3042 -21.3914,-4.43423 -33.5714,-0.71429 -0.264,-46.02334 -1.4635,-76.88941 8.9106,-114.20649 -53.2554,21.02686 -62.9472,106.5941 -56.0535,112.77792 -10.8828,0.535 -21.371,-1.2973 -32.8571,2.85715 0.6389,-42.57135 -0.2605,-84.90861 -30,-122.85715 0,0 -30.958,80.92234 -31.4286,103.57143 -0.4705,22.64909 9.4516,40.16588 9.4516,40.16588 0,0 -8.568,36.74051 -6.2986,58.23223 2.2959,21.74142 20.4429,59.67622 27.2655,78.65812 z"
4324 style="display:inline;opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4325 inkscape:connector-curvature="0" />
4326 <path
4327 transform="translate(276,136)"
4328 clip-path="url(#clipPath3631)"
4329 sodipodi:nodetypes="cccccccccccccccccccccc"
4330 id="path3635"
4331 d="m 719.5,738.69519 18.31177,15.43196 44.41103,-15.38821 23.2772,-25.54375 11.46397,19.22065 30.67161,12.78354 25.09737,5.72837 L 892,723.19519 908.02309,747.02126 947,752.19519 l 10.24541,-6.19852 6.75471,8.6982 25.49988,11.00032 2,-40.5 L 955.94866,710.6576 923.45591,689.1305 883.0038,677.66492 861.69668,662.13148 840,685.19519 755.02878,638.61208 722,676.69519 l -2.5,62 z"
4332 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter3587);enable-background:accumulate"
4333 inkscape:connector-curvature="0" />
4334 <path
4335 sodipodi:nodetypes="ccssscsssssssssssssccccscccccccccsscccccccccccssscccccccccccccccsccccssssssssssssscccsssc"
4336 clip-path="url(#clipPath3677)"
4337 id="path3669"
4338 d="m 584,696.5 -6.5625,17.15625 c 0,0 -7.81152,20.36488 -15.6875,43.65625 -3.93799,11.64568 -7.88302,24.04145 -10.9375,35.125 -3.05448,11.08355 -5.33586,20.37986 -5.5,28.28125 -0.39807,19.16196 5.74653,34.8883 8.9375,41.75 -0.77153,3.55523 -1.99137,9.45432 -3.34375,18.09375 -1.92042,12.26821 -3.71827,27.15441 -2.375,39.875 1.38209,13.08835 6.81222,28.18765 12.59375,43.03125 5.78153,14.8436 12.05435,29.22711 15.21875,38.03125 6.63206,18.4519 9.99296,31.5763 11.3125,48.5 0.58135,7.4561 -0.24227,20.336 -1.25,33.375 -1.00773,13.039 -2.18661,26.3014 -1.6875,36.9688 0.98911,21.1398 9.32798,46.8347 33.375,57.9374 22.77483,10.5154 55.32682,11.7022 83.4375,-3.4374 16.15992,-8.7034 30.07634,-27.0976 43.375,-46.9063 13.29866,-19.8087 24.96917,-41.0534 31.9375,-54.9063 15.35292,-30.5212 39.39353,-115.46418 45.625,-152.7187 3.01859,-18.04653 3.92166,-29.06555 2.625,-38.03125 -0.97853,-6.76604 -3.82819,-12.1474 -6.875,-16.21875 2.04274,-27.50791 -0.73207,-51.36878 11.96875,-79.40625 L 840.75,763.375 l -23.8125,9.3125 c -17.48975,6.83753 -28.90164,19.04536 -36.59375,32.0625 -0.32251,0.54577 -0.56314,1.10776 -0.875,1.65625 0.22203,-22.51521 4.40784,-37.63759 6.59375,-58.6875 l 1.96875,-19 L 771,737.375 c -30.59449,15.55571 -45.69489,48.19321 -49.71875,90.21875 -4.24532,-0.62547 -8.8314,-1.01965 -13.8125,-0.84375 -0.29149,-39.18036 -0.39629,-67.03685 8.59375,-99.375 l 5.59375,-20.125 -19.4375,7.65625 c -30.90937,12.20394 -47.85954,41.93073 -56.625,68.375 -4.38273,13.22214 -6.74582,25.80121 -7.59375,35.9375 -0.23203,2.77373 -0.31106,5.31132 -0.3125,7.71875 -3.24187,-0.0364 -6.42052,0.13589 -10.0625,0.5 0.0416,-39.00473 -3.48424,-79.75415 -32.28125,-116.5 L 584,696.5 Z m 5.8125,43.8125 c 16.80691,30.64383 17.47451,63.96728 16.9375,99.75 l -0.21875,15.0625 12.03493,-6.53921 c 8.66205,-3.13302 19.56058,-0.22752 31.93382,-0.83579 l 14.67465,9.3566 -6.3309,-25.7941 c -0.0897,-0.22997 -0.22046,-0.41669 -0.25,-0.71875 -0.19951,-2.03986 -0.22232,-5.47307 0.125,-9.625 0.69464,-8.30386 2.78957,-19.58524 6.625,-31.15625 5.15532,-15.55294 13.48801,-31.19248 25.125,-42.53125 -4.68381,28.63798 -3.21559,60.25934 -3.01164,95.80514 l -2.76593,13.26164 15.49632,-7.59803 c 9.0294,-2.75771 17.18897,-0.34996 29.28125,1.09375 l 13.24632,9.44423 L 741.09375,840 c 1.44793,-30.97177 8.22149,-53.67808 20.71875,-68.875 -2.98688,19.77884 -5.43043,41.7848 0.3125,78.34375 l 1.06552,6.37318 -2.93815,11.51685 10.61711,-8.16818 9.18973,10.22198 -1.54828,-10.4636 L 781.9375,852 c 5.70102,-13.21149 10.17282,-26.21337 16.34375,-36.65625 0.95986,-1.62434 2.03153,-3.06436 3.0625,-4.5625 -3.68066,21.15535 -2.42716,40.20815 -4.09375,57.78125 l -4.68014,7.80698 7.39889,0.22427 c 3.22005,3.48361 3.8675,3.85068 4.5625,8.65625 0.695,4.80557 0.31862,14.40035 -2.5625,31.625 -5.56799,33.28792 -31.79272,123.1659 -43.6875,146.8125 -6.60491,13.1304 -18.02998,33.8957 -30.625,52.6563 -12.59502,18.7605 -27.35933,35.5338 -36,40.1874 -21.49052,11.5742 -48.7808,10.2602 -64.84375,2.8438 -14.37486,-6.637 -20.53812,-23.4494 -21.3125,-40 -0.38311,-8.188 0.61279,-21.3092 1.625,-34.4062 1.01221,-13.0971 11.28891,-22.5708 15.42339,-36.5626 5.37229,-18.1808 -1.44687,-36.5944 -12.5,-53.93745 -6.48655,-10.17778 -23.9768,-24.2579 -29.54839,-38.5625 -5.57159,-14.3046 -10.36751,-29.00315 -11.28125,-37.65625 -0.92621,-8.77113 0.4225,-23.02502 2.21875,-34.5 1.79625,-11.47497 3.84375,-20.28125 3.84375,-20.28125 l 9.42278,-3.6152 -10.48528,-3.8848 c 0,0 -8.49889,-15.3101 -8.09375,-34.8125 0.0711,-3.42316 1.83626,-12.72805 4.71875,-23.1875 2.88249,-10.45945 6.76466,-22.55271 10.625,-33.96875 3.04439,-9.00308 5.78063,-16.60345 8.34375,-23.6875 z"
4339 style="display:inline;opacity:0.58775509;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3898);enable-background:new"
4340 transform="translate(450.03125,73.843964)"
4341 inkscape:connector-curvature="0" />
4342 <g
4343 transform="translate(276,136)"
4344 clip-path="url(#clipPath3636)"
4345 id="g3628">
4346 <path
4347 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter9024);enable-background:accumulate"
4348 d="m 824.48651,818.48242 -49.49748,-15.55635 -26.87005,52.3259 41.01219,45.25484 49.49747,-38.18377 -14.14213,-43.84062 z"
4349 id="path8988"
4350 inkscape:connector-curvature="0" />
4351 <path
4352 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter9020);enable-background:accumulate"
4353 d="m 964.49365,855.25197 -55.15433,-46.66904 -43.84062,36.76955 33.94113,53.74011 7.07106,66.46804 -50.91168,35.35537 -41.0122,11.3137 -2.82842,46.669 56.56854,25.4559 63.63961,-76.3676 24.04163,-94.75227 8.48528,-57.98276 z"
4354 id="path8990"
4355 inkscape:connector-curvature="0" />
4356 </g>
4357 <path
4358 id="path8992"
4359 d="m 1045.3322,1043.5779 60.8112,-26.8701 100.4091,31.1127 -63.6396,31.1127 -82.0244,-16.9706 -15.5563,-18.3847 z"
4360 style="display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter9044);enable-background:accumulate"
4361 inkscape:connector-curvature="0" />
4362 <path
4363 clip-path="url(#clipPath4177)"
4364 sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccczzzcccccc"
4365 id="path4149"
4366 d="m 583.0625,715.75 c -12.10609,34.44974 -26.7145,68.53333 -31.75,104.84375 -0.83208,14.92867 4.58915,29.15943 8.84375,43.0625 -5.91624,27.20126 -10.13681,56.89995 1.15625,83.125 13.51717,38.16085 35.00147,75.68215 32.42279,117.46825 -0.9483,29.2942 -9.01444,60.9941 5.38971,88.2817 10.19864,19.3348 33.13956,27.3117 53.96785,27.6676 27.86219,1.1741 56.46261,-11.6216 72.0009,-35.2613 22.59549,-29.3717 41.80051,-61.4973 55.23865,-96.0598 16.89053,-45.506 29.6718,-92.56072 37.93402,-140.3989 1.8244,-12.94106 3.10108,-27.46985 -4.57892,-38.82255 -3.43115,-7.33632 0.0421,-15.56014 -0.68457,-23.30977 0.674,-24.99466 4.01232,-50.66376 16.65332,-72.59648 -17.73313,6.4446 -35.07268,16.55971 -44.00307,33.86425 -3.93508,6.70955 -7.60482,13.57413 -11.37193,20.38575 -3.54999,-30.01408 3.71963,-59.64828 6.78125,-89.28125 -20.16604,9.05463 -36.87672,25.65522 -44.17495,46.682 -6.30463,15.58003 -8.80222,32.31718 -10.26255,49.03675 -8.25334,-1.51925 -16.68447,-2.10155 -25.0625,-1.5 -0.96308,-38.69787 -0.46696,-79.40715 10.96875,-115.90625 -18.68113,6.21776 -35.16621,18.73551 -45.62803,35.38723 -13.85254,20.87979 -21.2614,45.75395 -23.05947,70.61277 0.58534,4.32454 -0.0613,11.84009 -6.34375,9.875 -5.33118,0.0176 -10.62908,0.67883 -15.9375,1.09375 1.14784,-39.38148 -3.34144,-81.6282 -27.0625,-114.21875 -3.06071,-3.63717 -5.63685,-7.68438 -8.625,-11.34375 -0.9375,2.4375 -1.875,4.875 -2.8125,7.3125 z m 7.75,13.84375 c 18.56527,29.29629 22.4825,64.82012 22.125,98.875 0.20409,5.17526 -0.51656,11.8292 0.125,16.0625 12.31856,-6.10275 26.73912,-2.4399 39.78125,-2.1875 2.31712,1.22325 3.1921,1.65243 1.90625,-1.40625 -4.16455,-13.95285 -1.84828,-28.613 1.80504,-42.40764 6.36687,-26.29064 20.62828,-51.08798 42.81996,-67.02986 -8.61709,37.23706 -5.71658,76.56161 -6.09375,113.96875 12.25344,-6.9099 27.27879,-3.44613 40.03125,-0.25 3.39222,3.5348 2.28935,-0.72948 2.1875,-3.8125 -0.48309,-21.37058 4.13133,-43.06963 13.6875,-62.15625 5.96266,-10.68727 14.24338,-19.80379 22.4375,-28.875 -7.87156,33.8381 -9.2029,69.33593 -2.71875,103.5 1.72485,-1.41118 4.60681,-0.45414 5.65625,-0.375 9.68369,-21.23682 16.35112,-45.38062 34.89016,-60.74185 1.87329,-0.37122 -1.44818,8.52495 -1.48391,11.8981 -3.53488,21.84581 -3.2972,44.17323 -4.90625,66.25 -1.31238,1.37679 2.84835,2.32354 3.46875,4.0625 7.92311,10.5658 3.12294,24.83149 2.0916,36.78011 -7.06405,45.03355 -21.76553,88.37934 -35.57677,131.69714 -12.07476,32.9493 -30.7197,63.08 -51.23358,91.429 -10.95257,13.5514 -23.24472,27.8513 -40.84375,32.5 -20.15601,6.2413 -43.57595,5.1744 -61.96875,-5.6562 -17.28966,-12.3414 -21.02393,-35.7089 -19.26226,-55.6864 0.0488,-15.8262 2.37211,-27.8008 7.91747,-42.8053 5.54535,-15.0045 2.47105,-31.3317 -1.78021,-47.6333 -4.25126,-16.3016 -12.17903,-26.26002 -21.82158,-42.20417 -9.64255,-15.94415 -17.6369,-36.03734 -20.77217,-55.57713 -1.74948,-18.62714 2.89171,-37.12262 5.78125,-55.25 3.29623,-2.83696 -1.59799,-5.19659 -2.3125,-8.1875 -7.60113,-17.01508 -8.40747,-36.7749 -2.74234,-54.55998 7.1302,-25.0723 15.76087,-49.63241 24.67984,-74.12752 0.70833,1.30208 1.41667,2.60417 2.125,3.90625 z"
4367 style="display:inline;opacity:0.58775509;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4185);enable-background:new"
4368 transform="translate(450.03125,73.843964)"
4369 inkscape:connector-curvature="0" />
4370 <path
4371 transform="translate(276,136)"
4372 clip-path="url(#clipPath3631)"
4373 sodipodi:nodetypes="cccccccc"
4374 id="path3902"
4375 d="m 735.05635,733.03834 2.75542,21.08881 44.41103,-15.38821 4.85063,-22.38975 -3.93617,-22.05222 -22.45163,-36.59301 -8.28004,30.30494 -17.34924,45.02944 z"
4376 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter4130);enable-background:accumulate"
4377 inkscape:connector-curvature="0" />
4378 <path
4379 transform="translate(276,136)"
4380 clip-path="url(#clipPath3631)"
4381 sodipodi:nodetypes="cccccccc"
4382 id="path4135"
4383 d="m 831.81321,730.29452 15.82237,14.90486 20.85473,2.89994 -1.59029,-39.92598 8.32561,-30.50842 -7.16499,-6.34106 -21.69669,20.9424 -14.55074,38.02826 z"
4384 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter4141);enable-background:accumulate"
4385 inkscape:connector-curvature="0" />
4386 <g
4387 transform="translate(276,136)"
4388 clip-path="url(#clipPath8392)"
4389 style="filter:url(#filter8379)"
4390 id="g8367">
4391 <path
4392 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
4393 d="m 910.14441,746.31415 32.61295,5.17393 -0.36119,-23.87619 7.18853,-29.68221 -8.45112,-5.26365 -21.82194,26.51077 -9.16723,27.13735 z"
4394 id="path4145"
4395 sodipodi:nodetypes="ccccccc"
4396 clip-path="none"
4397 inkscape:connector-curvature="0" />
4398 <rect
4399 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
4400 id="rect8365"
4401 width="123.03658"
4402 height="172.53406"
4403 x="877.51953"
4404 y="650.19098" />
4405 </g>
4406 <g
4407 transform="translate(276,136)"
4408 clip-path="url(#clipPath8417)"
4409 style="filter:url(#filter8404)"
4410 id="g8400">
4411 <path
4412 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
4413 d="m 964.00012,754.69487 18.42881,7.46479 9.07107,-36.96447 -14.87031,4.83886 -12.62957,24.66082 z"
4414 id="path4147"
4415 sodipodi:nodetypes="ccccc"
4416 clip-path="none"
4417 inkscape:connector-curvature="0" />
4418 <rect
4419 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
4420 id="rect8398"
4421 width="142.12846"
4422 height="125.1579"
4423 x="924.89569"
4424 y="677.06104" />
4425 </g>
4426 </g> 952 </g>
4427 <rect 953 <g transform="matrix(.9991 .27421 -.11493 2.3838 2962.6 1209.8)" clip-path="url(#fx)">
4428 id="rect6247" 954 <path d="M1056.2-278.8c4.145-1.479 10 3.125 10 3.125.899.28 2.725-.894 2.624-1.686 0 0-1.55-1.86-.374-2.939s5.296 1.507 7.5 1.625 5.562-.23 7-.75 1.113-1.425 2.625-1.75 5.119 1.038 7.06 1.169 4.649.334 5.815-.169.178-1.16 1.875-1.875 7.76-.957 9.625-.125 1.81.52 2.625 3 7.44 5.163-1.125 13.375-59.378 13.786-65.625 2.75 6.23-14.271 10.375-15.75z" enable-background="new" filter="url(#fw)" opacity=".75"/>
4429 width="440" 955 <path d="M1058.5-275.43c4.145-1.479 10 3.125 10 3.125.899.28 2.725-.894 2.624-1.686 0 0-1.55-1.86-.374-2.939s5.296 1.507 7.5 1.625 5.562-.23 7-.75 1.113-1.425 2.625-1.75 5.119 1.038 7.06 1.169 4.649.334 5.815-.169.178-1.16 1.875-1.875 7.76-.957 9.625-.125 1.81.52 2.625 3 7.44 5.163-1.125 13.375-59.378 13.786-65.625 2.75 6.23-14.271 10.375-15.75z" enable-background="new" filter="url(#fv)" opacity=".75"/>
4430 height="376"
4431 x="548"
4432 y="205.32275"
4433 style="opacity:1;fill:none;fill-opacity:1;stroke:#f8d615;stroke-width:18;stroke-linejoin:miter;stroke-miterlimit:1;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
4434 <rect
4435 style="opacity:1;fill:none;fill-opacity:1;stroke:#f83615;stroke-width:18;stroke-linejoin:miter;stroke-miterlimit:1;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
4436 id="rect6676"
4437 width="1684"
4438 height="1292"
4439 x="56"
4440 y="53.322754" />
4441 <rect
4442 style="opacity:1;fill:url(#pattern5557);fill-opacity:1;stroke:#f815bb;stroke-width:13.34657478;stroke-linejoin:miter;stroke-miterlimit:1;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
4443 id="rect6731"
4444 width="522.56604"
4445 height="1182.4679"
4446 x="3493.3721"
4447 y="87.178711" />
4448 <g
4449 id="g7477"
4450 transform="matrix(0.53474256,0,0,1,1882.7509,3.0962157)">
4451 <rect
4452 y="99.705269"
4453 x="3039.4895"
4454 height="902.66437"
4455 width="818.51605"
4456 id="rect6979"
4457 style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#f8d615;stroke-width:18;stroke-linejoin:miter;stroke-miterlimit:1;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
4458 <g
4459 clip-path="url(#clipPath6975)"
4460 id="g4303-9"
4461 style="display:inline;enable-background:new"
4462 transform="matrix(1.8806916,0,0,2.3994874,1997.8763,-394.32602)">
4463 <path
4464 inkscape:connector-curvature="0"
4465 style="display:inline;opacity:0.5;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter11361-3);enable-background:new"
4466 d="m 304.64285,526.6479 c -10,0.35715 -18.21428,2.85714 -18.21428,2.85714 l 7.5,6.07143 10.35714,3.57143 16.07143,0.35714 22.5,-5.35714 7.85714,1.07143 20.35715,-2.14286 -10.35715,6.78572 c 5.45923,-1.02361 17.39329,3.56911 9.64286,5.35714 -1.74,0.40142 13.92857,-4.64285 13.92857,-4.64285 l 2.5,-4.64287 3.57143,-9.28571 11.42857,0 18.21428,-4.64286 3.57144,-4.99999 -16.07144,1.07142 -12.14285,2.14286 -14.64286,-5 -70.6921,16.70774 -5.37933,-5.27917 z"
4467 id="path10326-6"
4468 sodipodi:nodetypes="cccccccccsccccccccccc"
4469 transform="matrix(10.726753,0,0,10.726753,-2882.1235,-4565.4583)"
4470 inkscape:export-filename="/home/cheeseness/Documents/LCA09/mascot/tuz_new.png"
4471 inkscape:export-xdpi="142.10527"
4472 inkscape:export-ydpi="142.10527" />
4473 <g
4474 style="display:inline;opacity:1;enable-background:new"
4475 id="g7882-9"
4476 transform="matrix(0.71084,-0.1937433,0.262963,0.9648058,503.68027,136.48399)">
4477 <path
4478 inkscape:connector-curvature="0"
4479 sodipodi:nodetypes="czzzzcc"
4480 id="path7876-3"
4481 d="m 245.12255,100.05344 c 0,0 -47.12811,-31.646921 -67.21465,-35.800939 -20.03792,-4.143963 -38.4729,-3.317578 -51.93364,13.607323 -13.46074,16.924901 -12.07739,61.265196 -13.53554,86.969546 -1.45815,25.70435 2.54945,70.17701 17.6046,88.66552 15.05516,18.4885 45.88634,13.58502 49.92695,21.4137 2.21283,4.28736 65.15228,-174.85515 65.15228,-174.85515 z"
4482 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient7904-7);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
4483 <path
4484 inkscape:connector-curvature="0"
4485 sodipodi:nodetypes="czzzzzc"
4486 id="path7878-3"
4487 d="m 135.37935,82.017807 c 0,0 26.34355,1.938783 37.63307,13.903188 11.41494,12.097335 13.73457,21.331515 15.29586,37.734585 1.56337,16.42499 -0.84957,28.41812 -7.81382,36.03734 -6.96425,7.61922 -1.00429,19.58332 -25.91605,12.07107 -24.91176,-7.51225 -27.03224,-27.78298 -26.51523,-46.30475 0.51721,-18.52898 7.31617,-53.441433 7.31617,-53.441433 z"
4488 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient7906-6);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
4489 <path
4490 inkscape:connector-curvature="0"
4491 sodipodi:nodetypes="czccssc"
4492 id="path7880-8"
4493 d="m 135.648,81.927211 c 0,0 -4.64465,16.365075 0.58825,28.563099 5.48794,12.79254 27.22425,44.26007 27.22425,54.65565 l 22.65625,-5 c 2.54218,-6.96644 3.21052,-15.75206 2.1875,-26.5 -1.56129,-16.40307 -3.8663,-25.62141 -15.28125,-37.718749 -9.65488,-10.232047 -31.59311,-13.374857 -37.375,-14 z"
4494 style="display:inline;opacity:1;fill:url(#radialGradient7908-0);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
4495 </g>
4496 <path
4497 inkscape:connector-curvature="0"
4498 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
4499 d="m 845.03125,1154.7776 c -4.28571,0.7143 -27.62815,3.6181 -57.85714,10 -30.22899,6.3819 -57.31395,4.9661 -135.78608,17.3296 -79.85178,12.5808 -94.06436,42.5423 -108.12225,47.0643 -14.70014,4.7286 -145.37739,-65.8225 -145.37739,-65.8225 l 4.28572,-94.2857 c 0,0 85.88551,-16.2009 112.14285,-33.5714 26.25735,-17.3705 45.58238,-49.66602 59.28572,-71.42861 13.70334,-21.76259 32.85714,-71.42858 32.85714,-71.42858 l 238.57143,262.14289 z"
4500 id="path7917-0"
4501 sodipodi:nodetypes="czzzcczzcc" />
4502 <path
4503 inkscape:connector-curvature="0"
4504 style="display:inline;overflow:visible;visibility:visible;opacity:0.5;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter8888-6);enable-background:accumulate"
4505 d="m 332.34019,898.38549 -32.73181,-61.29956 -37.61734,45.10646 c 2.17675,1.31711 5.77425,-20.85603 45.6004,-64.41708 l 24.74875,80.61018 z"
4506 id="path7919-5"
4507 clip-path="url(#clipPath8658-06)"
4508 sodipodi:nodetypes="ccccc"
4509 transform="translate(276,136)" />
4510 <path
4511 inkscape:connector-curvature="0"
4512 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#linearGradient6951);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter8892-7);enable-background:accumulate"
4513 d="m 200.81833,863.03015 146.3711,-51.61879 243.95184,226.27414 -241.83052,140.0072 -181.01934,-87.6813 32.52692,-226.98125 z"
4514 id="path7923-6"
4515 clip-path="url(#clipPath2833-2)"
4516 sodipodi:nodetypes="cccccc"
4517 transform="translate(276,136)" />
4518 <path
4519 inkscape:connector-curvature="0"
4520 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#0f0f0f;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
4521 d="m 642.88839,640.13471 c 0,0 -29.55406,40.57305 -47.85714,74.28571 -18.30309,33.71267 -58.62109,126.35694 -70.35714,171.07143 -11.7594,44.80344 -62.5,123.57145 -62.5,123.57145 l 76.07143,18.2143 c 0,0 11.80712,-12.8234 31.07142,-46.07146 19.2643,-33.24808 60.35715,-138.57143 60.35715,-138.57143 l 13.21428,-202.5 z"
4522 id="path7921-6"
4523 sodipodi:nodetypes="czzcczcc" />
4524 <path
4525 inkscape:connector-curvature="0"
4526 style="display:inline;overflow:visible;visibility:visible;opacity:0.4;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter8856-2);enable-background:accumulate"
4527 d="m 430.28131,381.94122 c -7.07106,2.82843 -236.18124,32.15181 -236.18124,32.15181 l -39.63961,359.83304 90.19849,92.63961 52.3259,-114.5513 100.46804,-186.39192 32.82842,-183.68124 z"
4528 id="path7925-4"
4529 sodipodi:nodetypes="ccccccc"
4530 clip-path="url(#clipPath3665-9)"
4531 transform="translate(276,136)" />
4532 <path
4533 inkscape:connector-curvature="0"
4534 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
4535 d="m 969.67051,1164.0346 c 0,0 23.25628,11.3937 36.06779,20.4761 12.6974,9.0015 29.4724,24.6491 41.6924,37.3605 12.3055,12.8002 20.1127,22.5987 41.5327,24.1608 21.4322,1.5629 53.2824,-8.7876 73.296,-24.6642 20.0135,-15.8766 45.6469,-69.2328 45.6469,-69.2328 l -127.1608,-143.0717"
4536 id="path7927-0"
4537 sodipodi:nodetypes="czzzzcc" />
4538 <path
4539 inkscape:connector-curvature="0"
4540 style="display:inline;overflow:visible;visibility:visible;opacity:0.75;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter8860-3);enable-background:accumulate"
4541 d="M 331.34019,641.50471 216.17367,835.36467 260.2153,925.96265 357.79603,732.21539 331.34019,641.50471 Z"
4542 id="path7929-0"
4543 clip-path="url(#clipPath8642-9)"
4544 sodipodi:nodetypes="ccccc"
4545 transform="translate(276,136)" />
4546 <g
4547 style="display:inline;opacity:1;enable-background:new"
4548 id="g7931-4"
4549 transform="matrix(0.9934486,0.1142802,-0.1142802,0.9934486,-9.24324,588.09054)"
4550 inkscape:transform-center-x="-347.89063"
4551 inkscape:transform-center-y="-28.255779">
4552 <path
4553 inkscape:connector-curvature="0"
4554 style="display:inline;opacity:1;fill:#bcb786;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4555 d="m 1049.205,-282.26672 -0.09,0.008 c -1.3874,0.88445 -6.6033,1.6072 -6.629,9.52344 -0.024,7.42525 15.0129,17.09146 17.1563,18.09375 1.7302,0.80909 3.5916,1.40876 5.4063,1.71875 l 1.4374,0.21875 c 1.9197,0.21194 3.72,0.15141 5.1563,-0.0937 3.1191,-0.5324 5.1116,-0.92861 7.0937,-1.3125 1.9821,-0.38387 2.4743,-1.03965 3.5626,-1.28125 1.1287,-0.25066 2.2702,0.11629 6.25,-0.875 3.9795,-0.99128 5.4294,-1.4193 6.125,-1.78125 0.7222,-0.37601 1.7617,-0.87058 2.375,-1.53125 1.9629,-0.012 3.7937,-0.29105 5.2187,-0.84375 2.9512,-1.14461 4.8732,-1.86942 6.6875,-2.75 1.4557,-0.70653 2.3191,-1.70203 2.5312,-2 0.2123,-0.29796 0.099,-0.72855 0.125,-0.75 0.043,-0.0352 0.3405,-0.094 0.5,-0.4375 0.859,-1.84708 2.3232,-5.62764 2.4376,-6.3125 0.1137,-0.68215 0.168,-1.35277 0.2187,-1.75 0.029,-0.22951 -0.1471,-0.8789 -0.125,-0.9375 0.031,-0.082 0.2883,-0.25057 0.3437,-0.5 0.2663,-1.19832 0.089,-2.20736 -0.125,-3.625 -0.2139,-1.41764 -0.9716,-4.61463 -1.625,-5.46875 -0.4194,-0.54857 -0.7993,-0.7925 -1.1562,-0.90625 -0.067,-0.0173 -0.1239,-0.0467 -0.1875,-0.0625 -0.021,-0.004 -0.042,0.003 -0.062,0 -0.3116,-0.0755 -0.6085,-0.15867 -1.1562,-0.21875 -0.9855,-0.10812 -2.4247,-0.2594 -3.9688,-0.25 -0.5147,0.003 -1.0371,0.0476 -1.5625,0.0937 -3.5589,0.31228 -9.0098,0.99108 -10.2187,1.625 -1.6331,-0.33402 -3.9482,-0.61223 -5.9376,-0.46875 -3.064,0.22097 -4.9677,0.34219 -6.9062,0.46875 -1.9384,0.12655 -1.6861,0.38864 -2.9062,0.46875 -1.3191,0.0866 -1.7869,-0.22325 -5.5626,0.0937 -3.5457,0.29772 -8.9806,0.99317 -10.2187,1.625 -1.6334,-0.33451 -3.9459,-0.61239 -5.9375,-0.46875 -3.0642,0.22098 -4.9678,0.37344 -6.9062,0.5 -0.6592,0.043 -1.0424,0.12393 -1.3438,0.1875 z"
4556 id="path7933-6" />
4557 <g
4558 clip-path="url(#clipPath7616-1)"
4559 style="display:inline;filter:url(#filter7610-9);enable-background:new"
4560 id="g7935-2"
4561 transform="matrix(0.9975712,-0.06965428,0.06965428,0.9975712,872.72062,140.02502)">
4562 <path
4563 inkscape:connector-curvature="0"
4564 sodipodi:nodetypes="ccssscsssscscsscsssccscssccsscssscc"
4565 id="path7937-6"
4566 d="m 229.94262,-409.12268 c -3.55781,0.05 -9.0242,0.36009 -10.30334,0.90414 -1.60609,-0.44747 -3.90316,-0.88131 -5.89995,-0.87674 -3.07199,0.007 -4.96469,0.009 -6.90727,0 -0.66047,-0.003 -1.04759,0.0672 -1.35267,0.10959 0,0 0,1.09593 0,1.09593 0.11972,-0.17947 0.39252,-0.69046 0.94975,-0.76715 0.74758,-0.10289 5.16928,-0.15123 7.31019,-0.1096 1.7746,0.0345 4.45523,0.27427 6.38921,0.95895 0.3214,0.11378 0.61925,0.27378 0.89219,0.41097 1.96342,0.98693 7.94336,4.30154 7.94336,4.30154 0,0 -6.63275,-3.94768 -7.48287,-4.43853 -0.20331,-0.11739 -0.57464,-0.25769 -1.03609,-0.41098 1.22063,-0.44779 5.07597,-0.61971 7.82823,-0.71235 3.0245,-0.10182 3.34776,-0.0896 5.41069,0.19179 2.12931,0.29043 3.33851,0.60276 3.33851,0.60276 -1e-5,0 -0.0784,-0.64118 1.03609,-0.79455 0.74757,-0.10289 5.16929,-0.15123 7.31019,-0.1096 2.0695,0.0403 5.36605,0.40716 7.2814,1.36992 1.00332,0.50433 3.03564,1.56863 4.79535,2.53571 l 0.0956,-0.0194 c 0,0 -3.58034,-2.16242 -4.43047,-2.65327 -0.20331,-0.11739 -0.57463,-0.25769 -1.03609,-0.41098 1.22062,-0.44779 5.04719,-0.61971 7.79945,-0.71235 3.0245,-0.10182 3.34775,-0.0896 5.41069,0.19179 1.95316,0.2664 3.01292,0.53006 3.19461,0.57536 0,0 -0.0271,-0.31146 -0.0271,-0.31146 -0.40903,-0.13645 -0.71424,-0.23335 -1.40038,-0.35748 -1.30081,-0.23533 -3.39912,-0.60156 -5.50857,-0.56398 -3.57195,0.0636 -9.05328,0.35596 -10.30334,0.90414 -1.60583,-0.44695 -3.87662,-0.8813 -5.87117,-0.87674 -3.07199,0.007 -4.99348,0.009 -6.93605,0 -1.94256,-0.009 -1.71268,0.27907 -2.93558,0.27398 -1.32191,-0.005 -1.76612,-0.35463 -5.55459,-0.30138 0,0 0,0 0,0"
4567 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
4568 <path
4569 inkscape:connector-curvature="0"
4570 id="path7939-7"
4571 d="m 206.1989,-407.47878 c 1.92021,0.81706 4.57715,2.19283 6.15897,3.39739 1.58184,1.20456 2.90757,1.77368 5.55459,3.91795 0.88557,0.71738 1.74865,1.34985 2.59193,1.92174 l 0.54057,-0.19011 c -0.71323,-0.48339 -1.46776,-1.02031 -2.26909,-1.62203 -2.82223,-2.11921 -3.62655,-2.80973 -6.01507,-4.27414 -2.38854,-1.4644 -4.09948,-2.36576 -6.5619,-3.1508 0,0 0,0 0,0"
4572 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4573 sodipodi:nodetypes="cssccsscc" />
4574 <path
4575 inkscape:connector-curvature="0"
4576 id="path7941-5"
4577 d="m 237.79963,-407.47878 c 1.92021,0.81706 4.60594,2.19283 6.18775,3.39739 0.81307,0.61916 1.55849,1.07042 2.45046,1.65401 l 0.649,-0.11666 c -0.79831,-0.57637 -1.57177,-1.09435 -2.69653,-1.78394 -2.38854,-1.4644 -4.12826,-2.36576 -6.59068,-3.1508 0,0 0,0 0,0"
4578 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4579 sodipodi:nodetypes="csccscc" />
4580 </g>
4581 <g
4582 clip-path="url(#clipPath7606-1)"
4583 id="g7943-6">
4584 <path
4585 inkscape:connector-curvature="0"
4586 style="display:inline;opacity:0.75;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7578-4);enable-background:new"
4587 d="m 1056.25,-278.80481 c 4.1446,-1.47877 10,3.125 10,3.125 0.899,0.28092 2.7251,-0.89447 2.6243,-1.68614 0,0 -1.5503,-1.86062 -0.3743,-2.93886 1.176,-1.07824 5.296,1.50738 7.5,1.625 2.204,0.11762 5.5621,-0.22941 7,-0.75 1.4379,-0.52059 1.1129,-1.42459 2.625,-1.75 1.5121,-0.32541 5.1189,1.03754 7.0605,1.16883 1.9416,0.13129 4.6481,0.33427 5.8145,-0.16883 1.1664,-0.5031 0.1782,-1.15921 1.875,-1.875 1.6968,-0.71579 7.7602,-0.95662 9.625,-0.125 1.8648,0.83162 1.8099,0.5192 2.625,3 0.8151,2.4808 7.4398,5.16285 -1.125,13.375 -8.5648,8.21215 -59.3779,13.78594 -65.625,2.75 -6.2471,-11.03594 6.2304,-14.27123 10.375,-15.75 z"
4588 id="path7945-9"
4589 sodipodi:nodetypes="czzzzzzzzzzzzzz" />
4590 <path
4591 inkscape:connector-curvature="0"
4592 style="display:inline;opacity:0.75;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7594-8);enable-background:new"
4593 d="m 1058.5,-275.42981 c 4.1446,-1.47877 10,3.125 10,3.125 0.899,0.28092 2.7251,-0.89447 2.6243,-1.68614 0,0 -1.5503,-1.86062 -0.3743,-2.93886 1.176,-1.07824 5.296,1.50738 7.5,1.625 2.204,0.11762 5.5621,-0.22941 7,-0.75 1.4379,-0.52059 1.1129,-1.42459 2.625,-1.75 1.5121,-0.32541 5.1189,1.03754 7.0605,1.16883 1.9416,0.13129 4.6481,0.33427 5.8145,-0.16883 1.1664,-0.5031 0.1782,-1.15921 1.875,-1.875 1.6968,-0.71579 7.7602,-0.95662 9.625,-0.125 1.8648,0.83162 1.8099,0.5192 2.625,3 0.8151,2.4808 7.4398,5.16285 -1.125,13.375 -8.5648,8.21215 -59.3779,13.78594 -65.625,2.75 -6.2471,-11.03594 6.2304,-14.27123 10.375,-15.75 z"
4594 id="path7947-8"
4595 sodipodi:nodetypes="czzzzzzzzzzzzzz" />
4596 </g>
4597 </g>
4598 <path
4599 inkscape:connector-curvature="0"
4600 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#101414;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
4601 d="m 628.24553,347.99185 c -3.80443,-25.26423 -16.80972,-50.63802 -17.1568,-75.52523 -0.18626,-13.35552 3.27285,-26.57091 13.75553,-39.55405 36.34702,-65.29583 116.94091,-84.69468 185.93466,-91.46542 86.92239,-11.0168 184.91267,17.94007 233.37138,95.40128 54.124,75.7333 56.6747,172.53912 80.612,259.52795 29.4378,127.1276 54.7791,256.21414 60.3922,386.85035 -3.0634,78.18185 -8.4263,165.18417 -60.5032,228.13417 -48.0265,50.3574 -122.7864,50.053 -187.06985,59.0023 -90.55539,4.655 -184.35153,-16.1458 -261.7839,-64.1982 -64.77564,-37.94 -95.73019,-113.47867 -97.2794,-186.01962 -8.38917,-79.87516 26.39152,-153.80851 51.6204,-227.15961 7.47061,-82.76107 9.41286,-166.24775 9.65334,-249.38484 -0.83682,-32.19544 -7.08953,-63.81733 -11.54636,-95.60908 z"
4602 id="path7949-7"
4603 sodipodi:nodetypes="cscccccccccccc" />
4604 <path
4605 inkscape:connector-curvature="0"
4606 style="display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter8940-3);enable-background:accumulate"
4607 d="m 311.83409,415.43155 9.8995,121.62237 -60.10408,136.47161 15.55635,174.65537 c 15.61326,61.8792 32.18545,98.66905 74.37615,117.05383 4.31911,-36.23998 -38.61152,-142.95988 -39.24264,-189.11984 -0.63145,-46.18445 10.83034,-108.60786 30.67767,-158.29647 20.04835,-50.19188 36.89674,-44.84642 42.12489,-92.59293 5.22815,-47.74651 -17.4264,-149.39192 -17.4264,-149.39192 l -55.86144,39.59798 z"
4608 id="path7951-2"
4609 sodipodi:nodetypes="ccccczzzcc"
4610 clip-path="url(#clipPath8616-5)"
4611 transform="translate(276,136)" />
4612 <path
4613 inkscape:connector-curvature="0"
4614 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#linearGradient6953);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
4615 d="m 1010.0312,655.49186 c 0,0 16.7552,37.01806 28.7015,53.95395 11.9462,16.93589 52.7271,56.04605 52.7271,56.04605 l 52.5972,-127.58975"
4616 id="path7953-8"
4617 sodipodi:nodetypes="czcc" />
4618 <path
4619 inkscape:connector-curvature="0"
4620 style="display:inline;overflow:visible;visibility:visible;opacity:0.07999998;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter8822-2);enable-background:accumulate"
4621 d="m 730.31998,536.56864 c 0,8.48528 42.54774,58.46803 42.54774,58.46803 l 12.60659,-28.76954 -55.15433,-29.69849 z"
4622 id="path7955-2"
4623 sodipodi:nodetypes="cccc"
4624 clip-path="url(#clipPath8209-6)"
4625 transform="translate(276,136)" />
4626 <g
4627 transform="translate(450.03125,73.843964)"
4628 style="display:inline;opacity:1;enable-background:new"
4629 id="g7957-9"
4630 clip-path="url(#clipPath3998-6)">
4631 <g
4632 transform="translate(-174.03125,62.156036)"
4633 style="filter:url(#filter3677-5)"
4634 id="g7959-9">
4635 <g
4636 id="g7961-6"
4637 style="filter:url(#filter3785-4)">
4638 <path
4639 inkscape:connector-curvature="0"
4640 sodipodi:nodetypes="czzzzzzzzzz"
4641 id="path7963-0"
4642 d="m 425.88244,476.99186 c 10.80543,-1.47866 24.74401,3.35451 44.64286,3.21428 19.89885,-0.14023 57.45322,-16.91122 82.14285,-17.14286 24.68963,-0.23164 62.7517,12.28406 79.28572,15 16.53402,2.71594 22.84832,-0.15852 27.49999,7.85715 4.65167,8.01567 1.92671,10.74724 -10.35714,20.71429 -12.28385,9.96705 -40.78968,12.63632 -66.07143,12.85714 -25.28234,0.22082 -70.38129,7.07852 -95.35714,3.92856 -24.97585,-3.14996 -56.93756,-7.82267 -68.92857,-17.85714 -11.99101,-10.03447 -19.85084,-16.73182 -17.5,-23.92857 2.35084,-7.19675 13.83743,-3.16419 24.64286,-4.64285 z"
4643 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
4644 <rect
4645 y="412.60312"
4646 x="343.6539"
4647 height="181.01935"
4648 width="381.83765"
4649 id="rect7965-2"
4650 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
4651 </g>
4652 <g
4653 id="g7967-7"
4654 style="filter:url(#filter3785-4)">
4655 <path
4656 inkscape:connector-curvature="0"
4657 sodipodi:nodetypes="czzzcc"
4658 id="path7969-6"
4659 d="m 687.14286,452.36218 c -10.46169,9.71443 -86.9796,19.00514 -100.71429,29.28572 -13.73469,10.28058 -14.75252,12.88826 -12.14286,20 2.60966,7.11174 6.54527,9.40572 25.71429,8.57142 19.16902,-0.8343 98.57143,-27.62172 98.57143,-21.42857 l -11.42857,-36.42857 z"
4660 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4661 transform="translate(174.03125,-62.156036)" />
4662 <rect
4663 y="344.82138"
4664 x="702.86414"
4665 height="162.63455"
4666 width="207.8894"
4667 id="rect7971-1"
4668 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
4669 </g>
4670 </g>
4671 <g
4672 transform="translate(-174.03125,62.156036)"
4673 style="display:inline;opacity:0.18000004;enable-background:new"
4674 id="g7973-3">
4675 <g
4676 id="g7975-2"
4677 style="filter:url(#filter3785-4)">
4678 <path
4679 inkscape:connector-curvature="0"
4680 sodipodi:nodetypes="czzzzzzzzzz"
4681 id="path7977-1"
4682 d="m 425.88244,476.99186 c 10.80543,-1.47866 24.74401,3.35451 44.64286,3.21428 19.89885,-0.14023 57.45322,-16.91122 82.14285,-17.14286 24.68963,-0.23164 62.7517,12.28406 79.28572,15 16.53402,2.71594 22.84832,-0.15852 27.49999,7.85715 4.65167,8.01567 1.92671,10.74724 -10.35714,20.71429 -12.28385,9.96705 -40.78968,12.63632 -66.07143,12.85714 -25.28234,0.22082 -70.38129,7.07852 -95.35714,3.92856 -24.97585,-3.14996 -56.93756,-7.82267 -68.92857,-17.85714 -11.99101,-10.03447 -19.85084,-16.73182 -17.5,-23.92857 2.35084,-7.19675 13.83743,-3.16419 24.64286,-4.64285 z"
4683 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
4684 <rect
4685 y="412.60312"
4686 x="343.6539"
4687 height="181.01935"
4688 width="381.83765"
4689 id="rect7979-5"
4690 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
4691 </g>
4692 <g
4693 id="g7981-9"
4694 style="filter:url(#filter3785-4)">
4695 <path
4696 inkscape:connector-curvature="0"
4697 sodipodi:nodetypes="czzzcc"
4698 id="path7983-9"
4699 d="m 687.14286,452.36218 c -10.46169,9.71443 -86.9796,19.00514 -100.71429,29.28572 -13.73469,10.28058 -14.75252,12.88826 -12.14286,20 2.60966,7.11174 6.54527,9.40572 25.71429,8.57142 19.16902,-0.8343 98.57143,-27.62172 98.57143,-21.42857 l -11.42857,-36.42857 z"
4700 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4701 transform="translate(174.03125,-62.156036)" />
4702 <rect
4703 y="344.82138"
4704 x="702.86414"
4705 height="162.63455"
4706 width="207.8894"
4707 id="rect7985-1"
4708 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
4709 </g>
4710 </g>
4711 </g>
4712 <path
4713 inkscape:connector-curvature="0"
4714 style="display:inline;overflow:visible;visibility:visible;opacity:0.75;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter8802-7);enable-background:accumulate"
4715 d="M 582.65599,-7.4183011 695.79307,78.848726 804.68752,337.64981 842.87128,545.5392 963.07944,637.46308 c 0,0 -12.72793,-287.08535 -19.799,-313.95541 C 936.20938,296.63761 793.37381,-69.643698 793.37381,-69.643698 L 582.65599,-7.4183011 Z"
4716 id="path7987-4"
4717 clip-path="url(#clipPath8604-69)"
4718 sodipodi:nodetypes="cccccscc"
4719 transform="translate(276,136)" />
4720 <path
4721 inkscape:connector-curvature="0"
4722 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#linearGradient6955);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
4723 d="m 964.13839,239.599 c 0,0 8.67732,10.89662 24.10715,11.96428 15.42986,1.06766 49.72166,-39.95267 70.17856,-52.14285 20.4793,-12.20353 47.0464,-26.60225 63.9286,-20.35714 16.8821,6.2451 22.1578,26.43609 27.8571,48.03571 5.6994,21.59961 6.7186,61.81389 -2.6785,92.85715 -9.3972,31.04325 -50.5033,73.10375 -65.3572,103.39285 -14.8539,30.2891 -11.6071,39.82143 -11.6071,39.82143"
4724 id="path7989-9"
4725 sodipodi:nodetypes="czzzzzzc" />
4726 <path
4727 inkscape:connector-curvature="0"
4728 style="display:inline;opacity:1;fill:url(#radialGradient3315-5);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4729 d="m 1124.4955,207.63471 c -15.8928,-0.89286 -49.7188,12.10583 -66.0714,24.28572 -16.4386,12.2439 -29.2209,24.1144 -29.2857,52.14285 -0.065,28.20604 13.1191,39.07641 29.1071,46.96429 15.988,7.88789 33.6862,7.11928 51.9643,-11.78571 18.2782,-18.905 14.2857,-111.60715 14.2857,-111.60715 z"
4730 id="path7991-1"
4731 sodipodi:nodetypes="czzzzc" />
4732 <ellipse
4733 ry="73.928574"
4734 rx="86.428574"
4735 cy="237.00504"
4736 cx="385"
4737 style="display:inline;overflow:visible;visibility:visible;opacity:0.75;fill:url(#radialGradient3543-4);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter4120-7);enable-background:accumulate"
4738 id="path7993-0"
4739 transform="matrix(0.9434749,-0.1239943,0.1440089,1.0957669,451.94827,134.5988)"
4740 clip-path="url(#clipPath4100-3)" />
4741 <path
4742 inkscape:connector-curvature="0"
4743 transform="translate(450.03125,73.843964)"
4744 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient3915-6);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
4745 d="m 527.60588,407.44884 c 0,0 -122.04144,38.40348 -187.51434,9.63181 -65.47289,-28.77166 -74.37725,-124.71847 -74.37725,-124.71847 0,0 73.38158,-80.50393 129.92078,-83.61476 55.82705,-3.07164 90.57386,20.14332 114.87001,65.85171 24.352,45.81348 17.1008,132.84971 17.1008,132.84971 z"
4746 id="path7995-7"
4747 sodipodi:nodetypes="csczzc"
4748 mask="url(#mask3684-3)" />
4749 <path
4750 inkscape:connector-curvature="0"
4751 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#linearGradient6957);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
4752 d="m 772.17411,393.349 c 0,0 36.21754,-27.38247 51.60714,-35.89286 15.17734,-8.39301 25.71428,-11.60714 35.89285,-11.60714 l -15.53571,66.96428"
4753 id="path7997-5"
4754 sodipodi:nodetypes="czcc" />
4755 <circle
4756 r="36.25"
4757 cy="306.64789"
4758 cx="409.28571"
4759 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient3933-8);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
4760 id="path7999-8"
4761 transform="translate(449.49554,74.915393)" />
4762 <path
4763 inkscape:connector-curvature="0"
4764 style="display:inline;overflow:visible;visibility:visible;opacity:0.3;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter8806-6);enable-background:accumulate"
4765 d="m 311.83409,415.43155 9.8995,121.62237 -60.10408,136.47161 15.55635,174.65537 c 15.61326,61.8792 32.18545,98.66905 74.37615,117.05383 4.31911,-36.23998 8.68161,-72.36764 -31.24264,-223.11984 l 17.67767,-69.29647 72.12489,-138.59293 -42.4264,-158.39192 -55.86144,39.59798 z"
4766 id="path8001-7"
4767 sodipodi:nodetypes="cccccccccc"
4768 clip-path="url(#clipPath8616-5)"
4769 transform="translate(276,136)" />
4770 <path
4771 inkscape:connector-curvature="0"
4772 style="display:inline;overflow:visible;visibility:visible;opacity:0.5;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter8826-9);enable-background:accumulate"
4773 d="m 635.21025,581.13004 c -14.14214,12.72792 39.23347,34.58015 76.36753,24.04163 37.13406,-10.53852 104.64487,-35.56437 103.23759,-79.19596 -1.40728,-43.63158 -76.36753,-128.69343 -76.36753,-128.69343 L 635.21025,581.13004 Z"
4774 id="path8003-0"
4775 sodipodi:nodetypes="czzcc" />
4776 <circle
4777 r="23.214285"
4778 cy="306.64789"
4779 cx="410"
4780 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient3991-0);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
4781 id="path8005-4"
4782 transform="translate(449.67411,74.915393)" />
4783 <circle
4784 r="7.5"
4785 cy="303.07648"
4786 cx="414.28571"
4787 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter3981-7);enable-background:accumulate"
4788 id="path8007-8"
4789 transform="translate(451.99554,73.486821)" />
4790 <path
4791 inkscape:connector-curvature="0"
4792 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient4112-7);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
4793 d="m 789.31696,478.349 c 0,0 7.02281,19.56859 -1.07143,35 -8.09424,15.43141 -42.32317,38.98822 -67.49999,50 -25.30972,11.06991 -85.473,32.96393 -101.78572,41.96428 -16.46148,9.08243 -18.21428,12.67857 -18.21428,12.67857 0,0 -7.14693,-19.06441 28.74999,-51.7857 36.17211,-32.97214 142.02712,-48.0495 159.82143,-87.85715 z"
4794 id="path8009-0"
4795 sodipodi:nodetypes="czzzczc" />
4796 <g
4797 style="display:inline;opacity:1;enable-background:new"
4798 id="g8011-4"
4799 transform="translate(780.74553,74.55825)">
4800 <path
4801 inkscape:connector-curvature="0"
4802 transform="translate(-329.81481,0)"
4803 clip-path="url(#clipPath3999-0)"
4804 sodipodi:nodetypes="czzczzzszc"
4805 id="path8013-2"
4806 d="m 179.64286,267.36218 c -22.41044,39.70292 -60.6161,115.78029 -69.28571,149.64286 -8.64721,33.7751 -8.77199,66.41654 -0.35715,86.42858 8.3602,19.88213 26.16398,35.6328 40.71428,41.42856 -0.59638,-14.37587 14.37295,-43.28583 72.85715,-72.5 58.62627,-29.28514 78.38163,-27.13086 103.57142,-47.14286 25.63006,-20.36176 8.20587,-79.64664 3.21429,-93.92857 -4.99158,-14.28193 -1.23663,-3.37974 -1.94602,-5.09301 -10.68928,-25.81592 -34.21432,-54.4303 -64.48255,-64.54984 -30.26823,-10.11954 -65.01776,-4.84837 -84.28571,5.71428 z"
4807 style="display:inline;opacity:1;fill:url(#radialGradient3585-2);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
4808 <ellipse
4809 ry="134.00607"
4810 rx="64.715881"
4811 cy="338.07648"
4812 cx="183.57143"
4813 transform="matrix(0.8823874,0.4705236,-0.4705236,0.8823874,-166.62245,2.387362)"
4814 id="path8015-9"
4815 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient4060-5);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
4816 <ellipse
4817 ry="134.00607"
4818 rx="64.715881"
4819 cy="338.07648"
4820 cx="183.57143"
4821 transform="matrix(0.8823874,0.4705236,-0.4705236,0.8823874,-162.19388,-18.755495)"
4822 id="path8017-6"
4823 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient4062-9);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
4824 <path
4825 inkscape:connector-curvature="0"
4826 transform="translate(-329.81481,3e-7)"
4827 clip-path="url(#clipPath3999-0)"
4828 sodipodi:nodetypes="czzczzzszc"
4829 id="path8019-1"
4830 d="m 179.64286,267.36218 c -22.41044,39.70292 -60.6161,115.78029 -69.28571,149.64286 -8.64721,33.7751 -8.77199,66.41654 -0.35715,86.42858 8.3602,19.88213 26.16398,35.6328 40.71428,41.42856 -0.59638,-14.37587 14.37295,-43.28583 72.85715,-72.5 58.62627,-29.28514 78.38163,-27.13086 103.57142,-47.14286 25.63006,-20.36176 8.20587,-79.64664 3.21429,-93.92857 -4.99158,-14.28193 -1.23663,-3.37974 -1.94602,-5.09301 -10.68928,-25.81592 -34.21432,-54.4303 -64.48255,-64.54984 -30.26823,-10.11954 -65.01776,-4.84837 -84.28571,5.71428 z"
4831 style="display:inline;opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient6959);stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4079-1);enable-background:new" />
4832 </g>
4833 <circle
4834 r="19.704132"
4835 cy="398.07648"
4836 cx="310.71429"
4837 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
4838 id="path8021-0"
4839 transform="translate(452.55663,72.581273)" />
4840 <circle
4841 r="19.704132"
4842 cy="398.07648"
4843 cx="310.71429"
4844 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient4056-5);fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient6961);stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter4083-9);enable-background:accumulate"
4845 id="path8023-4"
4846 transform="translate(450.55663,72.581273)" />
4847 <circle
4848 r="19.704132"
4849 cy="398.07648"
4850 cx="310.71429"
4851 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient4119-7);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
4852 id="path8025-2"
4853 transform="translate(450.55663,72.581273)" />
4854 <ellipse
4855 ry="44.547726"
4856 rx="72.079735"
4857 cy="377.42877"
4858 cx="429.56738"
4859 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient4868-3);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter4002-6);enable-background:accumulate"
4860 id="path8027-2"
4861 transform="matrix(0.9969564,-0.07796167,0.07796167,0.9969564,436.61877,125.29509)"
4862 inkscape:transform-center-x="-47.231976"
4863 inkscape:transform-center-y="-3.6935079" />
4864 <ellipse
4865 ry="22.627417"
4866 rx="36.611931"
4867 cy="391.21735"
4868 cx="437.6991"
4869 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#radialGradient4876-9);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter4010-1);enable-background:accumulate"
4870 id="path8029-2"
4871 transform="matrix(1.4357951,-0.06999104,0.06999104,1.4357951,235.18065,-63.86546)"
4872 inkscape:transform-center-x="-20.955902"
4873 inkscape:transform-center-y="-13.056625" />
4874 <g
4875 transform="translate(450.03125,73.843964)"
4876 id="g8031-0"
4877 style="display:inline;opacity:1;filter:url(#filter4053-9);enable-background:new">
4878 <circle
4879 r="3.2142856"
4880 cy="401.82648"
4881 cx="413.66071"
4882 id="path8033-5"
4883 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient6963);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
4884 <circle
4885 r="3.2142856"
4886 cy="401.82648"
4887 cx="413.66071"
4888 transform="translate(13.125009,8.1249913)"
4889 id="path8035-5"
4890 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient6965);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
4891 <circle
4892 r="3.2142856"
4893 cy="401.82648"
4894 cx="413.66071"
4895 transform="translate(32.946437,7.4999913)"
4896 id="path8037-2"
4897 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient6967);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
4898 <circle
4899 r="3.2142856"
4900 cy="401.82648"
4901 cx="413.66071"
4902 transform="translate(24.910723,-10.267866)"
4903 id="path8039-9"
4904 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient6969);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
4905 <circle
4906 r="3.2142856"
4907 cy="401.82648"
4908 cx="413.66071"
4909 transform="translate(47.589294,-0.6250087)"
4910 id="path8041-0"
4911 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient6971);stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
4912 </g>
4913 <path
4914 inkscape:connector-curvature="0"
4915 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4916 d="m 896.20301,482.92837 c 0.98509,4.35008 4.53707,6.17948 7.38673,7.89182 4.46068,2.51292 6.52016,1.52211 9.15451,-0.75761 1.60195,-1.92117 10.68311,-4.69865 15.59423,-7.07107 4.32961,-1.45891 8.9033,-5.35873 13.38452,-8.33376 3.39514,-1.62724 5.34664,0.35464 7.82868,1.01015 2.94412,0.71661 4.41117,2.17175 6.06092,3.53554 2.39616,1.17519 -0.9279,3.14313 3.283,4.29314 1.19091,0.21794 2.41695,0.57645 3.28299,-0.50507"
4917 id="path8043-2"
4918 sodipodi:nodetypes="ccccccccc" />
4919 <path
4920 inkscape:connector-curvature="0"
4921 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4922 d="m 910.85021,475.35223 c 2.31494,-0.032 3.17778,0.64253 5.49271,-0.82075 3.45564,-3.08113 5.40254,-3.14477 7.95495,-4.41942 3.02657,-1.31523 6.5357,8.15169 10.10153,9.84899 2.39509,-0.82142 1.28914,1.79379 1.45209,2.65165 0.0571,2.64684 2.80694,3.67806 4.35628,5.42957 3.31604,2.25549 7.37523,6.29546 11.11168,5.3033 6.44525,-2.93107 10.27922,-1.28146 16.28871,-7.38674 0.70405,-1.18134 -0.58425,-6.8946 3.09359,-7.19734 2.52399,0.25338 4.16667,0.0502 6.06092,0.56822 5.441,2.11719 7.73778,6.45 14.71034,7.95495 6.1829,0.96639 7.61264,3.79426 13.88959,5.05076"
4923 id="path8045-8"
4924 sodipodi:nodetypes="cccccccccccc" />
4925 <path
4926 inkscape:connector-curvature="0"
4927 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4928 d="m 876.98133,483.52197 c 2.39858,-0.7938 6.10613,4.1921 8.17313,7.04568 0.59281,2.67952 1.15377,5.48645 0.75761,12.12183 0.78513,2.41754 2.68049,3.03095 4.79823,3.283 3.11745,-0.53678 5.87669,-1.3243 7.3236,-3.03046 1.8716,-1.94167 5.31253,2.39394 8.08122,4.04061 3.61009,1.91209 7.77378,1.97886 11.8693,2.27284 1.70358,-0.23064 2.3704,4.51515 3.28299,8.08123 0.38414,4.37806 -0.88544,6.89569 -1.76776,9.84898 -0.2943,2.49655 2.9885,3.52974 6.31345,4.54569 3.18244,0.74124 6.54424,1.66184 9.09137,1.76777 5.14186,0.87491 8.08874,2.69052 12.12183,4.04061 2.23914,0.81655 3.26019,2.24216 4.54569,3.53553"
4929 id="path8047-3"
4930 sodipodi:nodetypes="ccccccccccccc" />
4931 <path
4932 inkscape:connector-curvature="0"
4933 style="display:inline;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter8814-5);enable-background:new"
4934 d="m 332,187.69519 c 0,0 57.5,-25.5 57.5,-28 0,-2.5 5.5,-52 5.5,-52 0,0 91,-48.500001 91.5,-50.500001 0.5,-2 86,-62.0000004 86,-62.0000004 L 386.5,17.195189 311,123.19519 l 21,64.5 z"
4935 id="path8049-8"
4936 clip-path="url(#clipPath8514-8)"
4937 transform="translate(276,136)" />
4938 <path
4939 inkscape:connector-curvature="0"
4940 style="display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
4941 d="m 1697.2846,722.5514 c 0,0 -115.9655,73.5391 -123.0365,77.78174 -7.0711,4.24264 -230.5169,137.17872 -230.5169,137.17872 l 4.2427,39.59798 216.3747,-100.40917 117.3797,-101.82337 15.5563,-52.3259 z"
4942 id="path8051-0" />
4943 <path
4944 inkscape:connector-curvature="0"
4945 style="display:inline;overflow:visible;visibility:visible;opacity:0.5;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter8810-3);enable-background:accumulate"
4946 d="m 528.91587,556.85291 c -5.65685,-1.41421 -181.01933,74.95332 -181.01933,74.95332 l -33.94113,181.01934 51.09546,193.94823 257.2031,67.6813 c 0,0 206.47518,152.735 212.13203,148.4924 5.65686,-4.2426 168.2914,-193.7473 168.2914,-193.7473 L 842.87128,845.35248 796.20224,667.16157 528.91587,556.85291 Z"
4947 id="path8053-4"
4948 clip-path="url(#clipPath8610-9)"
4949 sodipodi:nodetypes="cccccscccc"
4950 transform="translate(276,136)" />
4951 <path
4952 inkscape:connector-curvature="0"
4953 style="display:inline;opacity:1;fill:#0c0c0c;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
4954 d="m 1097.6433,613.88997 c 0,0 22.6195,-6.50681 35.7427,-5.87273 13.1233,0.63409 30.6416,1.93862 43.7089,12.18619 13.0673,10.24756 25.0677,27.14007 34.1124,58.36965 9.0446,31.22958 1.6983,99.25201 -6.1761,143.34735 -7.8743,44.09534 -28.2651,106.11298 -45,140 -16.7348,33.88702 -49.7977,77.49517 -60.5694,89.87617 -11.3642,13.062 -56.2059,36.4262 -79.4306,42.2667 5.3034,-10.6066 48.8998,-50.5889 35,-60.7143 -14.0189,-10.2123 -45.76,45.9824 -84.2931,29.0332 21.38231,-13.1321 41.7794,-51.1861 34.0406,-66.59448 -7.84024,-15.61039 -30.70492,48.75758 -93.53553,37.01288 30.05204,-27.5267 55.40706,-70.90401 41.2627,-82.9797 -14.41516,-12.30687 -60.46175,54.2932 -60.46175,54.2932 0,0 -2.8219,-41.70123 13.7732,-68.60737 16.63935,-26.97787 79.65297,-81.61527 99.55308,-111.70342 19.9002,-30.08814 33.6126,-66.00902 42.1355,-92.51794 8.5228,-26.50892 15.8009,-77.09954 15.8009,-77.09954"
4955 id="path8055-0"
4956 sodipodi:nodetypes="czzzzzzczczczczzzc" />
4957 <path
4958 inkscape:connector-curvature="0"
4959 style="display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter8818-1);enable-background:accumulate"
4960 d="m 770.74639,609.17881 -50.91169,97.58074 -79.90307,111.01576 34.64824,71.41778 42.42641,79.19597 72.12489,-45.25484 14.14214,-192.33305 21.2132,-138.59292 -14.14214,-90.15612 -39.59798,107.12668 z"
4961 id="path8057-9"
4962 clip-path="url(#clipPath8622-5)"
4963 sodipodi:nodetypes="cccccccccc"
4964 transform="translate(276,136)" />
4965 <path
4966 inkscape:connector-curvature="0"
4967 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter8810-3);enable-background:accumulate"
4968 d="m 295,846.19519 6.64488,-68.92285 c 0,0 90.31951,89.00457 162.35512,122.92285 72.03561,33.91828 308,62 308,62 l 154,-26 -36,162.00001 -286,26 -298,-89 -11,-189.00001 z"
4969 id="path8059-1"
4970 clip-path="url(#clipPath8906-9)"
4971 sodipodi:nodetypes="cczcccccc"
4972 transform="translate(276,136)" />
4973 <path
4974 inkscape:connector-curvature="0"
4975 transform="translate(450.03125,73.843964)"
4976 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter3587-1);enable-background:new"
4977 d="m 405.79629,845.99023 74.95332,65.05383 2.49963,16.8804 19.40336,10.15891 6.49204,23.05109 31.70905,-8.3711 14.84924,48.08324 c 12.25652,12.7279 89.79344,-113.1097 55.86143,38.1838 l -60.81118,16.2635 -89.20292,-94.69286 -62.82503,-53.79963 7.07106,-60.81118 z"
4978 id="path8061-9"
4979 sodipodi:nodetypes="cccccccccccc"
4980 clip-path="url(#clipPath3602-4)" />
4981 <path
4982 inkscape:connector-curvature="0"
4983 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#121212;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate"
4984 d="m 1159.317,918.349 c 54.2857,-1.42857 126.035,-15.05199 170,-26.78572 44.0527,-11.75714 125.8863,-36.34724 175.357,-57.85714 49.3393,-21.45272 113.6038,-59.2816 154.2859,-92.14285 40.5081,-32.72069 52.3899,-55.81981 60.7142,-33.57143 8.3691,22.36779 -16.4069,56.32562 -37.8571,81.07143 -21.6042,24.9234 -52.7314,52.70533 -98.9287,89.28571 -46.1973,36.58038 -156.0825,101.58463 -212.8571,128.5714 -57.066,27.1254 -128.2033,58.2385 -172.1428,72.5001 -43.9395,14.2616 -131.4286,31.0714 -131.4286,31.0714 L 1159.317,918.349 Z"
4985 id="path8063-6"
4986 sodipodi:nodetypes="czzzzzzzzcc" />
4987 <path
4988 inkscape:connector-curvature="0"
4989 transform="translate(450.03125,73.843964)"
4990 style="display:inline;overflow:visible;visibility:visible;opacity:0.5;fill:url(#linearGradient6973);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter3779-4);enable-background:accumulate"
4991 d="m 1241.5965,652.95007 c 0,0 -64.7215,54.33706 -145.6639,98.99494 -82.0244,45.25484 -284.25704,93.3381 -284.25704,93.3381 0,0 -15.10137,21.05196 45.25489,28.28428 60.35626,7.23232 224.08195,-53.30069 278.60015,-96.16654 54.5182,-42.86585 120.2081,-111.72286 120.2081,-111.72286 l -14.1422,-12.72792 z"
4992 id="path8065-2"
4993 sodipodi:nodetypes="czczzcc"
4994 clip-path="url(#clipPath3992-4)" />
4995 <g
4996 transform="translate(450.03125,73.843964)"
4997 style="display:inline;opacity:1;enable-background:new"
4998 id="g8067-5"
4999 clip-path="url(#clipPath3986-7)">
5000 <g
5001 transform="translate(-174.03125,62.156036)"
5002 style="filter:url(#filter3677-5)"
5003 id="g8069-4">
5004 <g
5005 style="filter:url(#filter3785-4)"
5006 id="g8071-4">
5007 <path
5008 inkscape:connector-curvature="0"
5009 sodipodi:nodetypes="czzccccc"
5010 id="path8073-9"
5011 d="m 1094.2857,725.93361 c 0,0 -0.2961,26.16091 4.6428,37.85715 4.9389,11.69624 20.0381,26.48665 28.5715,31.42857 8.5334,4.94192 18.9286,8.57142 18.9286,8.57142 l 117.8571,-115 17.8572,-75.71428 -96.4286,38.57143 -91.4286,74.28571 z"
5012 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
5013 transform="translate(174.03125,-62.156036)" />
5014 <rect
5015 y="486.14224"
5016 x="1197.8389"
5017 height="309.71277"
5018 width="333.75412"
5019 id="rect8075-9"
5020 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
5021 </g>
5022 </g>
5023 <g
5024 transform="translate(-174.03125,62.156036)"
5025 style="display:inline;opacity:0.18000004;enable-background:new"
5026 id="g8077-3">
5027 <g
5028 style="filter:url(#filter3785-4)"
5029 id="g8079-6">
5030 <path
5031 inkscape:connector-curvature="0"
5032 sodipodi:nodetypes="czzccccc"
5033 id="path8081-0"
5034 d="m 1094.2857,725.93361 c 0,0 -0.2961,26.16091 4.6428,37.85715 4.9389,11.69624 20.0381,26.48665 28.5715,31.42857 8.5334,4.94192 18.9286,8.57142 18.9286,8.57142 l 117.8571,-115 17.8572,-75.71428 -96.4286,38.57143 -91.4286,74.28571 z"
5035 style="display:inline;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
5036 transform="translate(174.03125,-62.156036)" />
5037 <rect
5038 y="486.14224"
5039 x="1197.8389"
5040 height="309.71277"
5041 width="333.75412"
5042 id="rect8083-5"
5043 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
5044 </g>
5045 </g>
5046 </g>
5047 <path
5048 inkscape:connector-curvature="0"
5049 transform="translate(450.03125,73.843964)"
5050 style="display:inline;overflow:visible;visibility:visible;opacity:0.83300003;fill:#050505;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:15;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;filter:url(#filter8225-7);enable-background:accumulate"
5051 d="m 1264.1875,605 c -4.4911,0.73268 -8.157,3.45509 -11.9375,6.40625 -10.0813,7.86976 -28.1695,34.42524 -48.0312,50.46875 -39.8674,32.20316 -103.996,69.97701 -152.5626,91.09375 -48.614,21.13738 -130.54122,45.81801 -174.31245,57.5 -43.39821,11.58246 -115.04403,25.13107 -168.25,26.53125 l -4.5625,0.125 -2,4.125 -92.84375,192.125 -6.5,13.4688 14.65625,-2.8438 c 0,0 87.26968,-16.6514 132.34375,-31.2812 44.7252,-14.51667 115.79086,-45.66683 173.03125,-72.87505 C 980.82199,912.46306 1090.1551,847.86412 1137.5,810.375 c 46.3608,-36.70982 77.8049,-64.71682 99.9375,-90.25 10.9011,-12.576 22.7448,-27.53144 31.0313,-42.75 8.2864,-15.21856 19.1597,-44.21808 13.6874,-58.84375 -1.2177,-3.25474 -2.5514,-6.0613 -4.5937,-8.5 -2.0423,-2.4387 -8.4747,-1.57199 -8.5625,-5.03125 -0.2098,-8.26482 -3.3155,-0.24423 -4.8125,0 z m 2.1563,15.21875 c 0.4148,0.58574 1.0311,1.55766 1.7812,3.5625 2.8968,7.74213 -1.4407,31.89875 -8.8125,45.4375 -7.3718,13.53875 -22.6384,28.92394 -33.1875,41.09375 -21.0754,24.31356 -51.9037,51.86156 -97.9375,88.3125 -45.0496,35.67159 -155.46033,101.09459 -211.40625,127.6875 -56.89173,27.04249 -128.09616,58.1184 -171.25,72.125 -36.36491,11.8031 -95.84471,23.8338 -115.71875,27.7813 L 714.09375,851.75 c 54.70691,-2.0493 123.79259,-15.21635 167.125,-26.78125 44.33422,-11.83225 126.07865,-36.33633 176.40625,-58.21875 50.112,-21.78871 112.5344,-61.16816 154.0312,-94.6875 20.6464,-16.67721 41.7449,-42.54588 49.8126,-48.84375 2.437,-1.90242 4.0806,-2.6358 4.875,-3 z"
5052 id="path8085-0"
5053 clip-path="url(#clipPath3722-3)"
5054 sodipodi:nodetypes="cssssccccccssssssssccssssssccssssc" />
5055 <g
5056 style="display:inline;opacity:1;enable-background:new"
5057 id="g8087-2"
5058 mask="url(#mask7704-9)"
5059 transform="matrix(0.9934486,0.1142802,-0.1142802,0.9934486,-9.24324,588.09054)"
5060 inkscape:transform-center-x="-185.09603"
5061 inkscape:transform-center-y="-12.859654">
5062 <path
5063 inkscape:connector-curvature="0"
5064 transform="translate(0.08004571,-0.03125)"
5065 style="display:inline;fill:#bcb786;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
5066 d="m 1111.4062,-285.9375 -3.9374,1.875 c -0.041,0.0102 -0.1,0.0205 -0.125,0.0312 -0.4188,0.21285 -0.1647,0.10058 -0.6563,0.3125 -0.4861,0.20956 -1.7376,0.58419 -4.0937,1.46875 -3.3312,1.25058 -5.8043,2.14984 -7,3.0625 -1.5362,0.0213 -3.7205,0.23331 -5.6563,0.71875 -2.9815,0.74767 -4.8552,1.17401 -6.75,1.59375 -1.8948,0.41973 -1.6755,0.64219 -2.875,0.875 -1.2966,0.25167 -1.7214,-0.009 -5.4375,0.78125 -3.4899,0.74215 -8.8948,1.93107 -10.1562,2.6875 -1.584,-0.18078 -3.8675,-0.32178 -5.8438,-0.0312 -3.0404,0.44696 -4.9162,0.67276 -6.8438,0.90625 -0.6554,0.0794 -1.041,0.20078 -1.3437,0.28125 -0.4262,0.13166 -0.6858,0.26002 -1.375,0.34375 -1.3116,0.15937 -1.7622,-0.15683 -5.5313,0.28125 -3.5539,0.41309 -9.0054,1.27282 -10.25,1.9375 -1.599,-0.29729 -3.8577,-0.53419 -5.8437,-0.34375 -3.0588,0.29332 -4.972,0.48399 -6.9063,0.65625 -1.9342,0.17227 -1.6886,0.42237 -2.9062,0.53125 -1.3162,0.1177 -1.7598,-0.16363 -5.5312,0.25 -3.5421,0.38845 -9.0079,1.20927 -10.2813,1.875 -1.5989,-0.29469 -3.8872,-0.50701 -5.875,-0.3125 -3.05829,0.29925 -4.9412,0.48024 -6.875,0.65625 -0.65749,0.0598 -1.04005,0.17856 -1.34375,0.25 -0.4277,0.11896 -0.6835,0.21807 -1.375,0.28125 -1.316,0.12026 -1.75975,-0.19488 -5.53125,0.21875 -3.55619,0.39002 -9.0056,1.23916 -10.25,1.90625 -1.59869,-0.29418 -3.85985,-0.52372 -5.84375,-0.3125 -3.0557,0.32533 -4.97405,0.52624 -6.90625,0.71875 -1.93219,0.19251 -1.68975,0.44088 -2.90625,0.5625 -1.31488,0.13147 -1.76305,-0.16454 -5.53125,0.28125 -3.53889,0.41866 -8.9777,1.29217 -10.25,1.96875 -1.59759,-0.28104 -3.85995,-0.42043 -5.84375,-0.1875 -3.05198,0.35837 -4.945,0.56786 -6.875,0.78125 -0.65618,0.0726 -1.04065,0.17269 -1.34375,0.25 -0.42679,0.12723 -0.6849,0.2672 -1.375,0.34375 -1.31339,0.14569 -1.76735,-0.17402 -5.53125,0.3125 -3.54888,0.45876 -8.97865,1.41902 -10.21875,2.125 -1.59309,-0.24424 -3.8338,-0.38135 -5.8125,-0.125 -3.04759,0.39482 -4.9507,0.64845 -6.875,0.90625 -1.92429,0.25779 -1.7261,0.49353 -2.9375,0.65625 -1.30949,0.1759 -1.7472,-0.10438 -5.5,0.46875 -3.52429,0.53824 -8.9232,1.69917 -10.1875,2.4375 -1.58749,-0.20354 -3.8455,-0.25473 -5.8125,0.0937 -3.02619,0.53612 -4.8989,0.86169 -6.8125,1.1875 -0.65059,0.11077 -1.0137,0.27094 -1.3125,0.375 -0.42069,0.16488 -0.66345,0.3313 -1.34375,0.46875 -1.2947,0.26159 -1.7271,-0.006 -5.4375,0.8125 -3.49848,0.77195 -8.8459,2.38293 -10.0625,3.21875 -1.5629,-0.0774 -3.7575,0.0853 -5.6875,0.59375 -2.97238,0.78313 -4.8177,1.23209 -6.6875,1.75 -1.87,0.5179 -1.66665,0.76728 -2.84375,1.09375 -1.27249,0.3529 -1.69705,0.10709 -5.34375,1.1875 -3.42468,1.01463 -8.6494,2.93317 -9.875,3.84375 -1.53878,0.0127 -3.7198,0.27222 -5.625,0.875 -2.93098,0.92734 -4.75035,1.45842 -6.59375,2.0625 -0.62679,0.20538 -0.99165,0.39258 -1.28125,0.53125 -0.40758,0.21361 -0.6533,0.40875 -1.3125,0.625 -1.2545,0.41154 -1.68615,0.18904 -5.28125,1.4375 -3.38989,1.17717 -8.59495,3.2137 -9.78125,4.15625 -1.52388,0.0597 -3.65005,0.39487 -5.53125,1.0625 -2.89739,1.02829 -4.69905,1.67548 -6.53125,2.3125 -1.8322,0.63701 -1.62785,0.84854 -2.78125,1.25 -1.24679,0.43396 -1.66355,0.19972 -5.21875,1.5625 -3.3387,1.2798 -8.4871,3.48255 -9.6875,4.46875 -1.50718,0.10769 -3.6357,0.4988 -5.5,1.21875 -2.86818,1.1076 -4.6239,1.78156 -6.4375,2.46875 -0.6167,0.23363 -0.99645,0.44203 -1.28125,0.59375 10e-6,0 0,0.0295 0,0.0312 l -8,3.1875 -12.4759,3.49189 7.92966,19.27772 c -0.59163,1.97357 12.54624,-4.73836 12.54624,-4.73836 0.22641,-0.14468 0.44895,-0.27261 0.71875,-0.375 1.08052,-0.40998 2.1716,-0.21577 6,-1.6875 3.82852,-1.47174 5.22405,-2.00498 5.90625,-2.40625 0.67961,-0.39978 1.61175,-0.87937 2.21875,-1.53125 1.82692,-0.13775 3.5708,-0.49323 4.9375,-1 2.968,-1.10052 4.87535,-1.80619 6.78125,-2.46875 1.90581,-0.66254 2.35415,-1.41487 3.40625,-1.78125 1.09162,-0.38011 2.1951,-0.16538 6.0625,-1.53125 3.8674,-1.36586 5.28315,-1.82708 5.96875,-2.21875 0.70111,-0.40052 1.7008,-0.93298 2.3125,-1.59375 1.97081,-0.0547 3.81695,-0.38463 5.28125,-0.875 3.00152,-1.00508 4.92615,-1.62171 6.84375,-2.25 1.53861,-0.5041 2.17415,-1.04677 2.90625,-1.4375 0.23022,-0.13431 0.4759,-0.25373 0.75,-0.34375 1.09832,-0.36048 2.18145,-0.0814 6.09375,-1.3125 3.91231,-1.23113 5.366,-1.67295 6.0625,-2.03125 0.69391,-0.35697 1.6301,-0.79261 2.25,-1.40625 1.86521,-0.0227 3.63585,-0.26683 5.03125,-0.6875 3.0304,-0.91354 4.9924,-1.4301 6.9375,-1.96875 1.94512,-0.53864 2.4262,-1.26452 3.5,-1.5625 1.11402,-0.30915 2.22,0.007 6.1875,-1.03125 3.9675,-1.03863 5.4175,-1.43273 6.125,-1.75 0.7348,-0.32959 1.8139,-0.75372 2.4375,-1.375 1.99782,0.116 3.85745,-0.0201 5.34375,-0.375 3.07811,-0.735 5.0834,-1.10094 7.0625,-1.5 1.58791,-0.32018 2.2443,-0.79055 3,-1.09375 0.23751,-0.1068 0.4669,-0.19276 0.75,-0.25 1.13341,-0.22919 2.30465,0.20893 6.34375,-0.5 4.03942,-0.70893 5.50025,-0.92709 6.21875,-1.1875 0.71581,-0.25944 1.70435,-0.56724 2.34375,-1.09375 1.9242,0.23949 3.7479,0.22453 5.1875,0 3.12642,-0.48762 5.15455,-0.70067 7.15625,-0.96875 2.00171,-0.26807 2.48875,-0.94514 3.59375,-1.09375 1.14642,-0.15418 2.27585,0.30157 6.34375,-0.21875 4.06781,-0.52032 5.56025,-0.69573 6.28125,-0.9375 0.73712,-0.24714 1.7981,-0.58623 2.4375,-1.125 2.05,0.33553 3.9737,0.39796 5.5,0.21875 3.1422,-0.36896 5.18,-0.55936 7.1875,-0.78125 1.61082,-0.17802 2.26465,-0.6082 3.03125,-0.84375 0.24091,-0.0855 0.49405,-0.1556 0.78125,-0.1875 1.1497,-0.12772 2.3013,0.34665 6.375,-0.125 4.0737,-0.47165 5.55905,-0.6106 6.28125,-0.84375 0.71941,-0.23227 1.70025,-0.47346 2.34375,-0.96875 1.9363,0.33346 3.77005,0.40424 5.21875,0.25 3.14601,-0.33495 5.1775,-0.51859 7.1875,-0.71875 2.00991,-0.20014 2.48415,-0.82639 3.59375,-0.9375 1.1511,-0.11528 2.2965,0.36506 6.375,-0.0625 4.0785,-0.42756 5.5889,-0.56209 6.3125,-0.78125 0.73922,-0.22386 1.7956,-0.51325 2.4375,-1.03125 2.057,0.39867 4.00185,0.4934 5.53125,0.34375 3.14871,-0.3081 5.1758,-0.47325 7.1875,-0.65625 1.61401,-0.14682 2.26305,-0.56055 3.03125,-0.78125 0.2413,-0.0809 0.49355,-0.12991 0.78125,-0.15625 1.15211,-0.10545 2.2929,0.39275 6.375,0 4.08211,-0.39275 5.5889,-0.53084 6.3125,-0.75 0.7209,-0.21833 1.6996,-0.4477 2.3437,-0.9375 1.9381,0.34999 3.7689,0.45438 5.2188,0.3125 3.1487,-0.3081 5.1758,-0.47325 7.1875,-0.65625 2.0116,-0.18299 2.5142,-0.83802 3.625,-0.9375 1.1523,-0.10323 2.2922,0.38483 6.375,0 4.0829,-0.38482 5.5887,-0.501 6.3125,-0.71875 0.7393,-0.22243 1.7956,-0.51449 2.4375,-1.03125 2.0574,0.40177 4.0029,0.50333 5.5313,0.34375 3.1465,-0.32852 5.177,-0.5227 7.1874,-0.71875 1.613,-0.15729 2.2657,-0.63148 3.0313,-0.875 0.2407,-0.088 0.4632,-0.12137 0.75,-0.15625 1.1483,-0.1397 2.3167,0.33991 6.375,-0.25 4.0583,-0.58992 5.5618,-0.77714 6.2813,-1.03125 0.7166,-0.25316 1.6746,-0.55807 2.3124,-1.09375 1.9197,0.21194 3.72,0.15141 5.1563,-0.0937 3.1191,-0.5324 5.1116,-0.92861 7.0937,-1.3125 1.9821,-0.38387 2.4743,-1.03965 3.5626,-1.28125 1.1287,-0.25066 2.2702,0.11629 6.25,-0.875 3.9795,-0.99127 5.4295,-1.4193 6.125,-1.78125 0.7222,-0.376 1.7617,-0.87058 2.375,-1.53125 1.9629,-0.012 3.7937,-0.29105 5.2187,-0.84375 2.9512,-1.1446 4.8732,-1.86942 6.6875,-2.75 1.4557,-0.70652 2.3191,-1.70203 2.5312,-2 0.2123,-0.29795 0.099,-0.72855 0.125,-0.75 0.043,-0.0352 0.3404,-0.094 0.5,-0.4375 0.859,-1.84707 2.3232,-5.62764 2.4376,-6.3125 0.1137,-0.68214 0.168,-1.35277 0.2187,-1.75 0.029,-0.2295 -0.1471,-0.8789 -0.125,-0.9375 0.031,-0.082 0.2883,-0.25057 0.3437,-0.5 0.2663,-1.19831 0.089,-2.20736 -0.125,-3.625 -0.2139,-1.41763 -0.9716,-4.61463 -1.625,-5.46875 -0.6589,-0.86172 -1.2248,-1.01051 -1.75,-1 z"
5067 id="path8089-9"
5068 sodipodi:nodetypes="ccssscsssscssssscsssscssssscsssscssssscsssscssssscsssscssssscsssscssscccccssscssssscsssssscssssscsssssscssssscsssssscssssscsssssscssssscsssssscssssscsssssssssssc" />
5069 <g
5070 clip-path="url(#clipPath7421-7)"
5071 id="g8091-4">
5072 <path
5073 inkscape:connector-curvature="0"
5074 id="path8093-3"
5075 d="m 1107.409,-284.04961 c -0.4187,0.21283 -0.1556,0.0939 -0.6472,0.30581 -0.4861,0.20954 -1.7234,0.57439 -4.0796,1.45895 -3.3311,1.25057 -5.8302,2.15344 -7.0259,3.0661 -1.5361,0.0213 -3.7205,0.23331 -5.6563,0.71875 -2.9815,0.74766 -4.8552,1.17401 -6.75,1.59375 -1.8948,0.41972 -1.6755,0.64219 -2.875,0.875 -1.2966,0.25166 -1.7214,-0.009 -5.4375,0.78125 -3.4899,0.74214 -8.8948,1.93107 -10.1562,2.6875 -1.5839,-0.18079 -3.8675,-0.32178 -5.8438,-0.0312 -3.0404,0.44695 -4.9162,0.67276 -6.8437,0.90625 -0.6554,0.0794 -1.0411,0.20078 -1.3438,0.28125 -0.4262,0.13165 -0.6858,0.26002 -1.375,0.34375 -1.3116,0.15936 -1.7622,-0.15683 -5.5312,0.28125 -3.5539,0.41308 -9.0054,1.27282 -10.25,1.9375 -1.599,-0.2973 -3.8578,-0.53419 -5.8438,-0.34375 -3.0588,0.29331 -4.972,0.48399 -6.9062,0.65625 -1.9343,0.17226 -1.6887,0.42237 -2.9063,0.53125 -1.3162,0.11769 -1.7598,-0.16363 -5.5312,0.25 -3.5419,0.38844 -9.0079,1.20927 -10.2813,1.875 -1.5989,-0.2947 -3.88717,-0.50701 -5.875,-0.3125 -3.05824,0.29924 -4.94113,0.48024 -6.875,0.65625 -0.65749,0.0598 -1.04004,0.17856 -1.34375,0.25 -0.42765,0.11895 -0.68351,0.21807 -1.375,0.28125 -1.31596,0.12025 -1.75976,-0.19488 -5.53125,0.21875 -3.55614,0.39001 -9.00554,1.23916 -10.25,1.90625 -1.59863,-0.29419 -3.85984,-0.52372 -5.84375,-0.3125 -3.0556,0.32532 -4.97404,0.52624 -6.90625,0.71875 -1.93221,0.1925 -1.68987,0.44088 -2.90625,0.5625 -1.31488,0.13146 -1.76298,-0.16454 -5.53125,0.28125 -3.53887,0.41865 -8.97768,1.29217 -10.25,1.96875 -1.59755,-0.28105 -3.85996,-0.42043 -5.84375,-0.1875 -3.05198,0.35836 -4.94508,0.56786 -6.875,0.78125 -0.6562,0.0725 -1.04066,0.17269 -1.34375,0.25 -0.42677,0.12722 -0.68491,0.2672 -1.375,0.34375 -1.31333,0.14568 -1.76746,-0.17402 -5.53125,0.3125 -3.54889,0.45875 -8.97863,1.41902 -10.21875,2.125 -1.59305,-0.24424 -3.83381,-0.38135 -5.8125,-0.125 -3.04759,0.39481 -4.95071,0.64845 -6.875,0.90625 -1.92428,0.25779 -1.72611,0.49353 -2.9375,0.65625 -1.30946,0.1759 -1.74719,-0.10438 -5.5,0.46875 -3.52429,0.53824 -8.92315,1.69917 -10.1875,2.4375 -1.5875,-0.20354 -3.8455,-0.25473 -5.8125,0.0937 -3.02617,0.53612 -4.89889,0.86169 -6.8125,1.1875 -0.65061,0.11077 -1.01371,0.27094 -1.3125,0.375 -0.42067,0.16488 -0.66345,0.3313 -1.34375,0.46875 -1.29465,0.26159 -1.72712,-0.006 -5.4375,0.8125 -3.49853,0.77195 -8.84595,2.38293 -10.0625,3.21875 -1.56278,-0.0774 -3.75758,0.0853 -5.6875,0.59375 -2.97244,0.78313 -4.81761,1.23209 -6.6875,1.75 -1.86988,0.5179 -1.6666,0.76728 -2.84375,1.09375 -1.27246,0.3529 -1.69703,0.10709 -5.34375,1.1875 -3.4247,1.01463 -8.64944,2.93317 -9.875,3.84375 -1.53883,0.0127 -3.71983,0.27222 -5.625,0.875 -2.93106,0.92734 -4.75031,1.45842 -6.59375,2.0625 -0.62676,0.20538 -0.99173,0.39258 -1.28125,0.53125 -0.40763,0.21361 -0.65334,0.40875 -1.3125,0.625 -1.25446,0.41154 -1.68611,0.18904 -5.28125,1.4375 -3.38985,1.17717 -8.59498,3.2137 -9.78125,4.15625 -1.52389,0.0597 -3.65005,0.39487 -5.53125,1.0625 -2.89739,1.02829 -4.69908,1.67548 -6.53125,2.3125 -1.83217,0.63701 -1.62785,0.84854 -2.78125,1.25 -1.24678,0.43396 -1.66361,0.19972 -5.21875,1.5625 -3.33867,1.2798 -8.48715,3.48255 -9.6875,4.46875 -1.50718,0.10769 -3.63569,0.4988 -5.5,1.21875 -2.86818,1.1076 -4.6238,1.78156 -6.4375,2.46875 -0.61666,0.23363 -0.99641,0.44203 -1.28125,0.59375 0,0 0,1.09375 0,1.09375 0.11178,-0.22236 0.38599,-0.81743 0.90625,-1.09375 0.69797,-0.37072 4.81363,-1.99337 6.8125,-2.71875 1.65686,-0.60125 4.15389,-1.32868 5.96875,-1.3125 0.30162,0.003 0.58762,0.0509 0.84375,0.0937 1.84249,0.30825 7.46875,1.5625 7.46875,1.5625 -10e-6,0 -6.23349,-1.64675 -7.03125,-1.84375 -0.19079,-0.0471 -0.53572,-0.0687 -0.96875,-0.0625 1.14546,-0.86971 4.761,-2.39351 7.34375,-3.4375 2.83822,-1.14727 3.11681,-1.25182 5.0625,-1.65625 2.0083,-0.41744 3.15625,-0.5 3.15625,-0.5 0,10e-6 -0.0824,-0.60114 0.96875,-1.125 0.7051,-0.35141 4.88702,-1.8924 6.90625,-2.5625 1.9519,-0.64773 5.0574,-1.3585 6.875,-1 1.86323,0.3675 7.53125,1.8125 7.53125,1.8125 10e-6,0 -6.287,-1.87111 -7.09375,-2.09375 -0.19292,-0.0532 -0.53084,-0.086 -0.96875,-0.0937 1.15834,-0.83288 4.79444,-2.19532 7.40625,-3.15625 2.87016,-1.05601 3.16734,-1.1618 5.125,-1.53125 1.85349,-0.34979 2.85884,-0.42548 3.03125,-0.4375 0.1136,-0.21724 0.37745,-0.81002 0.90625,-1.0625 0.70944,-0.33874 4.92607,-1.71275 6.96875,-2.3125 1.69317,-0.49711 4.24077,-1.03677 6.09375,-0.90625 0.30795,0.0217 0.61349,0.0973 0.875,0.15625 1.88118,0.42432 7.59375,2.03125 7.59375,2.03125 10e-6,0 -6.34174,-2.06525 -7.15625,-2.3125 -0.19479,-0.0591 -0.55788,-0.10394 -1,-0.125 1.16949,-0.79755 4.86302,-2.05622 7.5,-2.9375 2.89781,-0.96847 3.23301,-1.00332 5.21875,-1.28125 2.04965,-0.28689 3.1875,-0.3125 3.1875,-0.3125 -2e-5,0 -0.0728,-0.60697 1,-1.0625 0.7196,-0.30557 4.99098,-1.50075 7.0625,-2 2.00244,-0.48258 5.19849,-0.92829 7.0625,-0.40625 1.91078,0.53515 7.71875,2.5 7.71875,2.5 0,0 -6.42266,-2.42351 -7.25,-2.71875 -0.19784,-0.0706 -0.58216,-0.14039 -1.03125,-0.1875 1.1879,-0.72865 4.91527,-1.77408 7.59375,-2.5 2.94342,-0.79775 3.29208,-0.77083 5.3125,-0.90625 1.91289,-0.12823 2.94705,-0.0711 3.125,-0.0625 0.11728,-0.20366 0.39176,-0.77948 0.9375,-0.96875 0.73219,-0.25394 5.07852,-1.04789 7.1875,-1.375 1.74813,-0.27111 4.40088,-0.4847 6.3125,-0.0937 0.31766,0.065 0.60522,0.18551 0.875,0.28125 1.94074,0.68873 7.84375,3.09375 7.84375,3.09375 10e-6,0 -6.53471,-2.95077 -7.375,-3.3125 -0.20097,-0.0865 -0.57513,-0.16679 -1.03125,-0.25 1.2065,-0.63318 5.02956,-1.3956 7.75,-1.90625 2.98953,-0.56119 3.30023,-0.52954 5.34375,-0.53125 2.10926,-0.002 3.3125,0.125 3.3125,0.125 0,1e-5 -0.0727,-0.63119 1.03125,-0.9375 0.74052,-0.20547 5.12612,-0.83387 7.25,-1.0625 2.05302,-0.22099 5.31863,-0.25222 7.21875,0.46875 1.94779,0.73907 7.84375,3.375 7.84375,3.375 2e-5,0 -6.56288,-3.17897 -7.40625,-3.5625 -0.20168,-0.0917 -0.54221,-0.18621 -1,-0.28125 1.21092,-0.60188 4.98442,-1.24884 7.71875,-1.65625 3.0048,-0.44772 3.32551,-0.4517 5.375,-0.40625 1.94045,0.043 3.00699,0.19423 3.1875,0.21875 0.11892,-0.19316 0.3839,-0.76583 0.9375,-0.90625 0.74271,-0.18838 5.15429,-0.73428 7.28125,-0.9375 1.76303,-0.16842 4.42009,-0.23429 6.34375,0.25 0.31968,0.0805 0.60351,0.20359 0.875,0.3125 1.95293,0.78349 7.90625,3.46875 7.90625,3.46875 -2e-5,0 -6.59191,-3.25348 -7.4375,-3.65625 -0.20222,-0.0963 -0.57226,-0.20703 -1.03125,-0.3125 1.21414,-0.57427 5.04366,-1.12219 7.78125,-1.5 3.00838,-0.4152 3.32307,-0.44263 5.375,-0.375 2.11798,0.0698 3.3125,0.25 3.3125,0.25 -2e-5,0 -0.0773,-0.63741 1.03125,-0.90625 0.74362,-0.18035 5.15176,-0.66355 7.28125,-0.84375 2.05847,-0.17417 5.34324,-0.12432 7.25,0.65625 1.95459,0.80016 7.875,3.53125 7.875,3.53125 -2e-5,0 -6.55993,-3.30876 -7.40625,-3.71875 -0.20237,-0.0981 -0.57186,-0.2031 -1.03125,-0.3125 1.21517,-0.5639 5.01008,-1.1143 7.75,-1.46875 3.01091,-0.38952 3.32131,-0.39765 5.375,-0.3125 1.94439,0.0806 3.00663,0.25324 3.1875,0.28125 0.11916,-0.19086 0.38277,-0.74531 0.9375,-0.875 0.74426,-0.174 5.14993,-0.65047 7.28125,-0.8125 1.76662,-0.13427 4.4497,-0.12571 6.375,0.375 0.32,0.0832 0.6033,0.20127 0.875,0.3125 1.9546,0.80016 7.9063,3.5625 7.9063,3.5625 -10e-5,0 -6.5912,-3.34001 -7.4375,-3.75 -0.2024,-0.0981 -0.5719,-0.20311 -1.0313,-0.3125 1.2151,-0.5639 5.0413,-1.08306 7.7813,-1.4375 3.0109,-0.38953 3.3525,-0.4289 5.4062,-0.34375 2.1197,0.0879 3.3125,0.3125 3.3125,0.3125 0,0 -0.078,-0.64902 1.0313,-0.90625 0.7443,-0.17256 5.1495,-0.62336 7.2812,-0.78125 2.0606,-0.1526 5.3429,-0.0968 7.25,0.6875 1.955,0.80395 7.875,3.5 7.875,3.5 0,0 -6.5598,-3.27587 -7.4062,-3.6875 -0.2025,-0.0984 -0.5718,-0.20222 -1.0313,-0.3125 1.2154,-0.56154 5.0119,-1.12778 7.75,-1.5 3.009,-0.40905 3.3227,-0.41558 5.375,-0.34375 1.9431,0.068 3.0072,0.16485 3.1875,0.1875 0.1188,-0.1944 0.3846,-0.72881 0.9375,-0.875 0.7418,-0.19612 5.1311,-0.82878 7.25,-1.09375 1.7564,-0.21961 4.4053,-0.33231 6.3125,0.0312 0.3169,0.0604 0.6058,0.18938 0.875,0.28125 1.9362,0.66092 7.8438,2.9375 7.8438,2.9375 -1e-4,0 -6.5367,-2.80655 -7.375,-3.15625 -0.2005,-0.0836 -0.5762,-0.17333 -1.0313,-0.25 1.2037,-0.65046 5.0191,-1.37195 7.7188,-2 2.9667,-0.6902 3.2889,-0.75507 5.3125,-0.875 2.0886,-0.1238 3.2812,-0.0312 3.2812,-0.0312 0,1e-5 -0.087,-0.63205 1,-1.03125 0.7292,-0.2678 5.0472,-1.33797 7.125,-1.8125 2.0085,-0.45869 5.1679,-1.0293 7,-0.625 1.8781,0.41446 13.5782,3.01563 13.5782,3.01563 0,0 -12.3275,-3.02266 -13.1407,-3.26563 -0.1945,-0.0581 -0.5586,-0.10626 -1,-0.125 1.1676,-0.80369 3.5142,-1.6873 6.1094,-2.70312 1.6814,-0.65818 0.9237,-0.37659 2.7759,-1.0036 1.7536,-0.59366 2.4854,-1.01071 2.6304,-1.11299 0.3461,-0.20651 -0.356,-0.12188 -0.5442,-0.0424 z"
5076 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7001-5);enable-background:new"
5077 sodipodi:nodetypes="czscsssscssssscsssscssssscsssscssssscsssscssssscsssscssssscsssscssccsssscscsscssscscsscsssscscsscssscscsscsssscscsscssscscsscsssscscsscssscscsscsssscscsscssscscsscsssscscsscssscscsscc" />
5078 <path
5079 inkscape:connector-curvature="0"
5080 id="path8095-5"
5081 d="m 1082.625,-275.125 c 1.873,0.39348 4.4961,1.14555 6.0313,1.96875 1.5352,0.82319 2.8222,1.056 5.375,2.5 2.5266,1.42926 4.7958,2.00696 6.9687,2.53125 2.3476,0.56642 5.4354,0.71523 8.8438,1.1875 -1.0889,-0.83975 -6.6074,-1.17245 -8.4063,-1.5625 -1.7989,-0.39006 -3.8941,-1.01616 -6.5937,-2.3125 -2.6997,-1.29634 -3.4944,-1.79896 -5.8125,-2.6875 -2.3182,-0.88854 -4.0044,-1.38314 -6.4063,-1.625 z"
5082 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6949-4);enable-background:new" />
5083 <path
5084 inkscape:connector-curvature="0"
5085 id="path8097-1"
5086 d="m 1051.4688,-270 c 1.9053,0.57759 4.5281,1.61572 6.0937,2.59375 1.5656,0.97802 2.8802,1.35981 5.5,3.125 2.593,1.74716 4.9859,2.70927 7.25,3.59375 2.4461,0.95557 5.6826,1.65713 9.4063,3.0625 -1.1896,-1.13784 -7.0631,-2.68675 -8.9375,-3.375 -1.8745,-0.68825 -4.0818,-1.5662 -6.875,-3.28125 -2.7933,-1.71504 -3.5736,-2.2839 -5.9375,-3.40625 -2.3641,-1.12234 -4.0567,-1.83455 -6.5,-2.3125 z"
5087 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6961-8);enable-background:new" />
5088 <path
5089 inkscape:connector-curvature="0"
5090 id="path8099-7"
5091 d="m 1020.2188,-266.84375 c 1.9119,0.63811 4.5812,1.75536 6.1562,2.8125 1.5751,1.05715 2.8956,1.50867 5.5313,3.40625 2.6086,1.87821 5.0284,3.03003 7.3125,4.0625 2.4677,1.11545 5.7645,2.1733 9.5312,3.84375 -1.2033,-1.22253 -7.2028,-3.31423 -9.0937,-4.125 -1.891,-0.81077 -4.0649,-1.89379 -6.875,-3.75 -2.8102,-1.8562 -3.6218,-2.47693 -6,-3.71875 -2.3783,-1.2418 -4.1107,-1.97569 -6.5625,-2.53125 z"
5092 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6957-9);enable-background:new" />
5093 <path
5094 inkscape:connector-curvature="0"
5095 id="path8101-4"
5096 d="m 1110.1719,-266.89063 c 0.1508,0.0486 0.688,0.631 0.1094,1.48438 -0.8101,1.19459 -5.7049,3.32429 -8.5625,4.125 -2.8449,0.79712 -6.2901,0.97774 -10.5625,-0.375 -4.3016,-1.36195 -5.4697,-2.46872 -10.6563,-4.3125 4.664,2.11517 6.1953,3.95233 10.125,5.34375 1.6207,0.57387 3.3671,0.9396 5.0625,1.03125 -0.4451,0.32563 -1.5303,0.9833 -3.5625,1.59375 -2.7955,0.83969 -6.6491,1.53378 -8.25,1.625 -1.5146,0.0863 -3.142,-0.51249 -3.4375,-0.625 0.1667,0.10308 0.3732,0.37734 -0.25,1.03125 -0.8993,0.94363 -6.1474,1.923 -9.125,2.25 -2.9643,0.32555 -6.5216,-0.016 -10.9062,-1.90625 -3.978,-1.71497 -5.339,-2.91536 -9.4063,-4.75 0,0 0,0.15625 0,0.15625 3.6431,2.09529 5.284,3.88327 8.875,5.5625 1.7302,0.80909 3.5917,1.40876 5.4063,1.71875 -0.5349,0.28676 -1.5578,0.71151 -3.4375,1.03125 -2.869,0.48796 -6.809,0.81614 -8.4375,0.75 -0.8507,-0.0345 -1.7286,-0.18437 -2.4063,-0.40625 -0.6848,-0.21488 -1.1897,-0.44467 -1.3125,-0.5 0.1694,0.10721 0.4311,0.40288 -0.2187,1.03125 -0.9097,0.87962 -6.2461,1.33638 -9.25,1.46875 -2.9905,0.13179 -6.5889,-0.45063 -11,-2.5625 -4.4412,-2.12626 -5.6415,-3.4016 -10.9063,-5.78125 4.7343,2.59704 6.2865,4.6291 10.3438,6.71875 1.6733,0.86185 3.4852,1.49425 5.25,1.9375 -0.4633,0.23332 -1.5894,0.68814 -3.6875,0.9375 -2.8863,0.34298 -6.8346,0.49288 -8.4688,0.375 -1.5462,-0.1115 -3.2312,-0.85696 -3.5312,-1 0.1691,0.12029 0.4138,0.41048 -0.2188,1 -0.9128,0.85073 -6.2441,1.26212 -9.25,1.375 -2.9925,0.11237 -6.5897,-0.49043 -11,-2.59375 -4.00125,-1.90823 -5.38803,-3.13783 -9.46875,-5.09375 -3e-5,0 0,0.15625 0,0.15625 3.65506,2.20392 5.29421,4.05255 8.90625,5.90625 1.74029,0.89315 3.637,1.52827 5.4688,1.96875 -0.54,0.2483 -1.5781,0.61533 -3.4688,0.84375 -2.88568,0.34858 -6.86605,0.52095 -8.5,0.40625 -0.85345,-0.0599 -1.72631,-0.25791 -2.40625,-0.5 -0.6871,-0.2353 -1.18935,-0.47226 -1.3125,-0.53125 0.16998,0.11227 0.46448,0.42225 -0.1875,1.03125 -0.91265,0.8525 -6.27533,1.29337 -9.28125,1.40625 -2.99246,0.11237 -6.59346,-0.52805 -11,-2.59375 -4.43653,-2.07978 -5.64688,-3.33171 -10.90625,-5.65625 4.72938,2.54749 6.29074,4.5778 10.34375,6.625 1.67155,0.84433 3.48554,1.46643 5.25,1.90625 -0.46323,0.23422 -1.5897,0.68407 -3.6875,0.9375 -2.88569,0.34858 -6.8362,0.56952 -8.46875,0.46875 -1.54456,-0.0953 -3.20031,-0.82885 -3.5,-0.96875 0.16899,0.11853 0.38192,0.40385 -0.25,1 -0.91186,0.86028 -6.24665,1.33025 -9.25,1.46875 -2.98995,0.1379 -6.56745,-0.45068 -10.96875,-2.46875 -3.99308,-1.83089 -5.36511,-3.0292 -9.4375,-4.90625 -2e-5,0 0,0.15625 0,0.15625 3.64761,2.13327 5.27033,3.93487 8.875,5.71875 1.73675,0.85951 3.60727,1.45014 5.4375,1.875 -0.53947,0.2529 -1.55063,0.64129 -3.4375,0.90625 -2.87978,0.40436 -6.83813,0.64562 -8.46875,0.5625 -0.85172,-0.0434 -1.7277,-0.20855 -2.40625,-0.4375 -0.68569,-0.22201 -1.1896,-0.44339 -1.3125,-0.5 0.16959,0.10899 0.4319,0.40965 -0.21875,1.03125 -0.91079,0.87014 -6.25021,1.39152 -9.25,1.5625 -2.98633,0.17021 -6.57381,-0.31577 -10.96875,-2.28125 -4.42489,-1.97888 -5.60596,-3.22819 -10.84375,-5.375 4.70997,2.38767 6.27017,4.38873 10.3125,6.34375 1.66715,0.80631 3.46043,1.39658 5.21875,1.78125 -0.46163,0.2487 -1.597,0.71225 -3.6875,1.03125 -2.8756,0.43876 -6.7804,0.7331 -8.40625,0.6875 -1.53823,-0.0431 -3.2328,-0.74522 -3.53125,-0.875 0.16833,0.11282 0.41057,0.41375 -0.21875,1.03125 -0.90812,0.8911 -6.20295,1.52825 -9.1875,1.8125 -2.97118,0.28298 -6.57342,-0.1758 -10.9375,-1.9375 -3.95934,-1.59831 -5.32915,-2.79487 -9.34375,-4.3125 3e-5,0 0,0.15625 0,0.15625 3.5959,1.81135 5.23831,3.58233 8.8125,5.15625 1.72207,0.75835 3.58748,1.28895 5.40625,1.625 -0.53609,0.27908 -1.56658,0.68763 -3.4375,1.0625 -2.85539,0.5721 -6.78942,1.01939 -8.40625,1.03125 -0.84451,0.006 -1.70608,-0.0809 -2.375,-0.25 -0.67591,-0.16151 -1.16009,-0.32923 -1.28125,-0.375 0.16722,0.094 0.42267,0.38348 -0.21875,1.0625 -0.89787,0.95052 -6.18648,1.91708 -9.125,2.4375 -2.92534,0.51809 -6.43215,0.37424 -10.71875,-1.03125 -4.3158,-1.41507 -5.47277,-2.52994 -10.5625,-3.96875 4.57685,1.75101 6.08855,3.56006 10.03125,5 1.62608,0.59389 3.36885,0.95565 5.09375,1.15625 -0.45285,0.29702 -1.55478,0.88339 -3.59375,1.46875 -2.80472,0.80517 -6.63886,1.57583 -8.21875,1.75 -1.49475,0.1648 -3.11623,-0.31681 -3.40625,-0.40625 0.16356,0.0901 0.39278,0.35993 -0.21875,1.0625 -0.88247,1.01385 -6.04452,2.37165 -8.9375,3.0625 -2.88002,0.68778 -6.3356,0.76002 -10.5625,-0.4375 -3.83485,-1.08645 -5.17258,-2.07237 -9.0625,-3.125 -10e-6,0 0,0.15625 0,0.15625 3.48418,1.39485 5.06941,2.9194 8.53125,4.03125 1.66793,0.53572 3.45578,0.78674 5.21875,0.875 -0.51964,0.35212 -1.50039,0.91452 -3.3125,1.53125 -2.76566,0.94125 -6.59024,1.93537 -8.15625,2.15625 -0.81794,0.11539 -1.6331,0.12283 -2.28125,0.0312 -0.65496,-0.0832 -1.1326,-0.21827 -1.25,-0.25 0.16204,0.0746 0.43399,0.34044 -0.1875,1.09375 -0.87,1.05453 -6.00963,2.65925 -8.875,3.4375 -2.85253,0.77476 -6.25912,0.9582 -10.4375,-0.0937 -4.20683,-1.05913 -5.35669,-2.04166 -10.34375,-3.15625 4.48454,1.45946 5.96935,3.13523 9.8125,4.25 1.58504,0.45977 3.28679,0.63825 4.96875,0.6875 -0.44157,0.33676 -1.51251,1.02773 -3.5,1.78125 -2.73393,1.03649 -6.45198,2.16269 -8,2.4375 -1.46462,0.26002 -3.05958,-0.11654 -3.34375,-0.1875 0.16025,0.0796 0.38044,0.32098 -0.21875,1.0625 -0.86466,1.07006 -5.91652,2.81815 -8.75,3.6875 -2.8208,0.86547 -6.2075,1.15631 -10.34375,0.21875 -3.75259,-0.85061 -5.04785,-1.71647 -8.875,-2.59375 0,0 0,0.15625 0,0.15625 3.42796,1.23779 4.98741,2.6323 8.375,3.53125 1.63216,0.43314 3.36704,0.58301 5.09375,0.5625 -0.50893,0.38417 -1.47675,1.02182 -3.25,1.75 -2.70634,1.11134 -6.43633,2.30781 -7.96875,2.625 -0.8004,0.16569 -1.61231,0.21862 -2.25,0.15625 0,0 0,0.51552 0,0.92229 0,0.26507 0,0.48396 0,0.48396 0.22645,-0.14468 0.44891,-0.27261 0.71875,-0.375 1.08052,-0.40998 2.17161,-0.21577 6,-1.6875 3.82843,-1.47174 5.22412,-2.00498 5.90625,-2.40625 0.6796,-0.39978 1.61165,-0.87937 2.21875,-1.53125 1.82685,-0.13775 3.57075,-0.49323 4.9375,-1 2.96812,-1.10052 4.87537,-1.80619 6.78125,-2.46875 1.90586,-0.66254 2.35409,-1.41487 3.40625,-1.78125 1.09155,-0.38011 2.19511,-0.16538 6.0625,-1.53125 3.86745,-1.36586 5.28316,-1.82708 5.96875,-2.21875 0.70109,-0.40052 1.70081,-0.93298 2.3125,-1.59375 1.9708,-0.0547 3.81685,-0.38463 5.28125,-0.875 3.00148,-1.00508 4.92615,-1.62171 6.84375,-2.25 1.5386,-0.5041 2.17402,-1.04677 2.90625,-1.4375 0.23016,-0.13431 0.47574,-0.25373 0.75,-0.34375 1.09823,-0.36048 2.18145,-0.0814 6.09375,-1.3125 3.91233,-1.23113 5.36605,-1.67295 6.0625,-2.03125 0.69388,-0.35697 1.63015,-0.79261 2.25,-1.40625 1.86521,-0.0227 3.63581,-0.26683 5.03125,-0.6875 3.03043,-0.91354 4.99238,-1.4301 6.9375,-1.96875 1.94511,-0.53864 2.42618,-1.26452 3.5,-1.5625 1.11401,-0.30915 2.21994,0.007 6.1875,-1.03125 3.96761,-1.03863 5.41758,-1.43273 6.125,-1.75 0.73487,-0.32959 1.81383,-0.75372 2.4375,-1.375 1.99774,0.116 3.85743,-0.0201 5.34375,-0.375 3.07811,-0.735 5.08344,-1.10094 7.0625,-1.5 1.58792,-0.32018 2.24429,-0.79055 3,-1.09375 0.23757,-0.1068 0.46695,-0.19276 0.75,-0.25 1.13347,-0.22919 2.30448,0.20893 6.34375,-0.5 4.03933,-0.70893 5.50025,-0.92709 6.21875,-1.1875 0.71586,-0.25944 1.70428,-0.56724 2.34375,-1.09375 1.92427,0.23949 3.74788,0.22453 5.1875,0 3.12633,-0.48762 5.15455,-0.70067 7.15625,-0.96875 2.00171,-0.26807 2.48869,-0.94514 3.59375,-1.09375 1.14639,-0.15418 2.27592,0.30157 6.34375,-0.21875 4.06784,-0.52032 5.56013,-0.69573 6.28125,-0.9375 0.7371,-0.24714 1.79809,-0.58623 2.4375,-1.125 2.05007,0.33553 3.97378,0.39796 5.5,0.21875 3.14231,-0.36896 5.17994,-0.55936 7.1875,-0.78125 1.61076,-0.17802 2.26467,-0.6082 3.03125,-0.84375 0.24094,-0.0855 0.49412,-0.1556 0.78125,-0.1875 1.14978,-0.12772 2.30129,0.34665 6.375,-0.125 4.07374,-0.47165 5.55909,-0.6106 6.28125,-0.84375 0.71946,-0.23227 1.70024,-0.47346 2.34375,-0.96875 1.93637,0.33346 3.77006,0.40424 5.21875,0.25 3.14602,-0.33495 5.17756,-0.51859 7.1875,-0.71875 2.00996,-0.20014 2.48414,-0.82639 3.59375,-0.9375 1.15114,-0.11528 2.29643,0.36506 6.375,-0.0625 4.07861,-0.42756 5.58886,-0.56209 6.3125,-0.78125 0.73915,-0.22386 1.79572,-0.51325 2.4375,-1.03125 2.0571,0.39867 4.00187,0.4934 5.53125,0.34375 3.14873,-0.3081 5.17584,-0.47325 7.1875,-0.65625 1.61407,-0.14682 2.2631,-0.56055 3.03125,-0.78125 0.24142,-0.0809 0.49353,-0.12991 0.78125,-0.15625 1.15211,-0.10545 2.29296,0.39275 6.375,0 4.08208,-0.39275 5.5889,-0.53084 6.3125,-0.75 0.7209,-0.21833 1.6997,-0.4477 2.3438,-0.9375 1.938,0.34999 3.7688,0.45438 5.2187,0.3125 3.1487,-0.3081 5.1758,-0.47325 7.1875,-0.65625 2.0116,-0.18299 2.5142,-0.83802 3.625,-0.9375 1.1523,-0.10323 2.2922,0.38483 6.375,0 4.0829,-0.38482 5.5887,-0.501 6.3125,-0.71875 0.7393,-0.22243 1.7956,-0.51449 2.4375,-1.03125 2.0574,0.40177 4.0029,0.50333 5.5313,0.34375 3.1466,-0.32852 5.1771,-0.5227 7.1875,-0.71875 1.613,-0.15729 2.2656,-0.63148 3.0312,-0.875 0.2407,-0.088 0.4632,-0.12137 0.75,-0.15625 1.1483,-0.1397 2.3167,0.33991 6.375,-0.25 4.0583,-0.58992 5.5618,-0.77714 6.2813,-1.03125 0.7167,-0.25316 1.6745,-0.55807 2.3125,-1.09375 1.9197,0.21194 3.7199,0.15141 5.1562,-0.0937 3.1191,-0.5324 5.1116,-0.92861 7.0938,-1.3125 1.9821,-0.38387 2.4743,-1.03965 3.5625,-1.28125 1.1288,-0.25066 2.2703,0.11629 6.25,-0.875 3.9796,-0.99128 5.4296,-1.4193 6.125,-1.78125 0.7223,-0.37601 1.7619,-0.87058 2.375,-1.53125 1.963,-0.012 3.7937,-0.29105 5.2187,-0.84375 2.9512,-1.14461 4.8732,-1.86942 6.6875,-2.75 1.4557,-0.70653 2.3348,-1.68641 2.5469,-1.98438 0.2122,-0.29796 0.1118,-0.7453 0.1379,-0.76675 0.043,-0.0352 0.3193,-0.085 0.479,-0.42844 0.8589,-1.84708 2.321,-5.64459 2.4352,-6.32945 0.1137,-0.68216 0.1638,-1.34774 0.2145,-1.74497 0.029,-0.22952 -0.1467,-0.86544 -0.1246,-0.92404 0.031,-0.0821 0.3045,-0.26528 0.3599,-0.51471 0.2663,-1.19833 0.089,-2.19129 -0.1251,-3.60893 -0.214,-1.41764 -0.9837,-4.62214 -1.6369,-5.47626 -0.6589,-0.86172 -1.2229,-1.01117 -1.7479,-1.00066 -0.2086,0.26976 0.1368,0.26309 0.1626,0.31261 0.6806,0.0508 0.934,0.36864 1.4192,0.89662 0.4852,0.52798 1.4428,3.93956 1.5794,5.38995 0.1366,1.45039 0.19,2.8602 -0.088,3.46864 -0.2781,0.60845 -0.9442,0.42864 -1.2366,0.49452 0.531,0.18589 0.8908,0.21322 0.9524,1.05768 0.059,0.81338 -0.1332,1.63969 -0.5198,2.80562 -0.3912,1.18001 -1.8452,4.34998 -2.2857,4.59877 -0.4523,0.25551 -0.9524,0.18199 -1.288,0.0511 z"
5097 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6997-5);enable-background:new"
5098 sodipodi:nodetypes="cssscscsscsssccscssssssscscsscsssscscssssssscscsscsssscscssssssscscsscsssscscssssssscscsscsssscscssssssscscsscsssccscsscscssscssssscsssssscssssscsssssscssssscsssssscssssscsssssscssssscsssssscssssscsszsszssszzcczzzczzzc" />
5099 <path
5100 inkscape:connector-curvature="0"
5101 id="path8103-3"
5102 d="m 988.75,-263.84375 c 1.91161,0.6344 4.55027,1.75841 6.125,2.8125 1.57477,1.05409 2.8961,1.48252 5.5313,3.375 2.6082,1.87314 5.0269,3.01522 7.3125,4.0625 2.4693,1.13147 5.7521,2.15474 9.5312,3.9375 -1.2072,-1.2584 -7.139,-3.36445 -9.0312,-4.1875 -1.8922,-0.82304 -4.128,-1.93049 -6.9375,-3.78125 -2.80961,-1.85075 -3.62224,-2.48154 -6.00005,-3.71875 -2.37782,-1.23719 -4.07988,-1.9492 -6.53125,-2.5 z"
5103 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6953-8);enable-background:new" />
5104 <path
5105 inkscape:connector-curvature="0"
5106 id="path8105-1"
5107 d="m 957.5,-260.78125 c 1.91,0.6181 4.58288,1.70934 6.15625,2.75 1.57339,1.04066 2.89608,1.48252 5.53125,3.375 2.60823,1.87315 5.02692,3.01521 7.3125,4.0625 2.46931,1.13147 5.75213,2.15475 9.53125,3.9375 -1.20728,-1.2584 -7.20154,-3.3957 -9.09375,-4.21875 -1.89217,-0.82304 -4.09666,-1.9305 -6.90625,-3.78125 -2.80958,-1.85075 -3.59295,-2.43932 -5.96875,-3.65625 -2.37578,-1.21691 -4.11321,-1.93885 -6.5625,-2.46875 z"
5108 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6993-3);enable-background:new" />
5109 <path
5110 inkscape:connector-curvature="0"
5111 id="path8107-4"
5112 d="m 926.09375,-257.375 c 1.90772,0.59745 4.55348,1.66384 6.125,2.6875 1.5715,1.02365 2.87022,1.43971 5.5,3.28125 2.60291,1.82273 5.02887,2.9722 7.3125,4 2.4672,1.11041 5.75535,2.09323 9.53125,3.84375 -1.20623,-1.2481 -7.1719,-3.31809 -9.0625,-4.125 -1.89058,-0.8069 -4.10242,-1.89104 -6.90625,-3.6875 -2.80385,-1.79644 -3.62704,-2.40251 -6,-3.59375 -2.37297,-1.19124 -4.05362,-1.90283 -6.5,-2.40625 z"
5113 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6989-8);enable-background:new" />
5114 <path
5115 inkscape:connector-curvature="0"
5116 id="path8109-6"
5117 d="m 894.90625,-253.5625 c 1.90213,0.55355 4.58701,1.58887 6.15625,2.59375 1.56923,1.00487 2.87401,1.40864 5.5,3.21875 2.59912,1.79164 5.00034,2.87189 7.28125,3.875 2.46428,1.08374 5.75984,2.04029 9.53125,3.75 -1.2048,-1.23507 -7.17416,-3.24478 -9.0625,-4.03125 -1.88832,-0.78647 -4.0752,-1.8308 -6.875,-3.59375 -2.79977,-1.76294 -3.59919,-2.36836 -5.96875,-3.53125 -2.36957,-1.16288 -4.12325,-1.83412 -6.5625,-2.28125 z"
5118 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6985-6);enable-background:new" />
5119 <path
5120 inkscape:connector-curvature="0"
5121 id="path8111-9"
5122 d="m 863.71875,-248.65625 c 1.88062,0.42909 4.50427,1.38038 6.0625,2.3125 1.55823,0.93211 2.85233,1.25776 5.46875,3 2.58971,1.72444 4.98067,2.70802 7.25,3.625 2.45176,0.99069 5.73959,1.87707 9.5,3.5 -1.20131,-1.20734 -7.15249,-3.06609 -9.03125,-3.78125 -1.87875,-0.71517 -4.0854,-1.68442 -6.875,-3.375 -2.78963,-1.69057 -3.58461,-2.22822 -5.9375,-3.28125 -2.35292,-1.05301 -4.02584,-1.71248 -6.4375,-2 z"
5123 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6965-3);enable-background:new" />
5124 <path
5125 inkscape:connector-curvature="0"
5126 id="path8113-4"
5127 d="m 833.15625,-241.375 c 1.84836,0.29644 4.46945,0.97632 6,1.78125 1.53058,0.80493 2.81374,1.05573 5.375,2.53125 2.53504,1.46046 4.89068,2.32509 7.125,3.0625 2.41399,0.79668 5.65711,1.46689 9.375,2.84375 -1.18771,-1.12873 -7.08772,-2.58975 -8.9375,-3.15625 -1.84977,-0.5665 -4.00342,-1.37392 -6.75,-2.84375 -2.74657,-1.46983 -3.50136,-1.92028 -5.8125,-2.78125 -2.31115,-0.86095 -4.00471,-1.32009 -6.375,-1.4375 z"
5128 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6981-3);enable-background:new" />
5129 <path
5130 inkscape:connector-curvature="0"
5131 id="path8115-2"
5132 d="m 802.90625,-232.3125 c 1.8222,0.21127 4.36576,0.80057 5.875,1.53125 1.50925,0.73066 2.75568,0.92998 5.28125,2.28125 2.49976,1.33746 4.83154,2.04843 7.03125,2.65625 2.37653,0.65667 5.56464,1.07288 9.21875,2.1875 -1.16735,-1.04496 -6.92888,-2.10329 -8.75,-2.5625 -1.82111,-0.45921 -3.95225,-1.12696 -6.65625,-2.4375 -2.70403,-1.31052 -3.47106,-1.7199 -5.75,-2.46875 -2.27895,-0.74883 -3.91325,-1.17931 -6.25,-1.1875 z"
5133 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6977-6);enable-background:new" />
5134 <path
5135 inkscape:connector-curvature="0"
5136 id="path8117-2"
5137 d="m 773.1875,-222.1875 c 1.81109,0.1787 4.32059,0.66506 5.8125,1.34375 1.49194,0.67869 2.7534,0.79822 5.25,2.0625 2.47107,1.25138 4.79005,1.89614 6.96875,2.4375 2.35387,0.58488 5.49134,0.89752 9.09375,1.84375 -1.15084,-0.99116 -6.85251,-1.7833 -8.65625,-2.1875 -1.80372,-0.4042 -3.91553,-1.02116 -6.59375,-2.25 -2.67818,-1.22884 -3.40345,-1.61089 -5.65625,-2.28125 -2.25279,-0.67034 -3.89627,-1.00232 -6.21875,-0.96875 z"
5138 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6973-4);enable-background:new" />
5139 <path
5140 inkscape:connector-curvature="0"
5141 id="path8119-6"
5142 d="m 743.5625,-211.1875 c 1.79281,0.12911 4.27313,0.54965 5.75,1.1875 1.4769,0.63785 2.7161,0.74156 5.1875,1.9375 2.44618,1.18372 4.72054,1.74666 6.875,2.21875 2.32767,0.51003 5.4196,0.68064 9,1.5625 -1.14379,-0.9706 -6.74759,-1.59065 -8.53125,-1.9375 -1.78367,-0.34684 -3.88285,-0.88756 -6.53125,-2.03125 -2.64841,-1.14368 -3.39495,-1.51631 -5.625,-2.125 -2.23008,-0.60868 -3.82594,-0.90966 -6.125,-0.8125 z"
5143 style="display:inline;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter6969-8);enable-background:new" />
5144 <g
5145 id="g8121-4"
5146 style="fill:#ffffff;fill-opacity:1;filter:url(#filter7345-9)">
5147 <path
5148 inkscape:connector-curvature="0"
5149 sodipodi:nodetypes="czzzczzc"
5150 id="path8123-1"
5151 d="m 744.9375,-212.11731 c 0,0 7.22229,-3.22318 9.0625,-3.5 1.84021,-0.27682 3.35225,-0.003 6,0.5625 2.64775,0.56573 8.7357,2.21518 11.1875,3.375 2.4518,1.15982 5.3125,3.5625 5.3125,3.5625 0,0 -7.14644,-2.78019 -10.1875,-3.5625 -3.04106,-0.78231 -7.64461,-2.08374 -10.375,-2.3125 -2.73039,-0.22876 -11,1.875 -11,1.875 z"
5152 style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
5153 <path
5154 inkscape:connector-curvature="0"
5155 sodipodi:nodetypes="czzzczzc"
5156 id="path8125-2"
5157 d="m 735.46875,-206.95416 c 0,0 3.65979,-2.22318 5.5,-2.5 1.84021,-0.27682 3.66475,0.24677 6.3125,0.8125 2.64775,0.56573 8.7357,2.21518 11.1875,3.375 2.4518,1.15982 6.5625,2.125 6.5625,2.125 0,0 -8.39644,-1.34269 -11.4375,-2.125 -3.04106,-0.78231 -7.95711,-2.33374 -10.6875,-2.5625 -2.73039,-0.22876 -7.4375,0.875 -7.4375,0.875 z"
5158 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
5159 <path
5160 inkscape:connector-curvature="0"
5161 sodipodi:nodetypes="czzzczzc"
5162 id="path8127-8"
5163 d="m 759.85042,-217.61116 c 0,0 8.5437,-3.29857 10.39778,-3.45786 1.85409,-0.1593 3.64166,0.4792 6.2481,1.21208 2.60644,0.73288 8.57724,2.76594 10.95036,4.07925 2.37312,1.31331 6.41417,2.53782 6.41417,2.53782 0,0 -8.29413,-1.87365 -11.27931,-2.84767 -2.98519,-0.97402 -7.79269,-2.83478 -10.50302,-3.23662 -2.71033,-0.40184 -12.22808,1.713 -12.22808,1.713 z"
5164 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
5165 <path
5166 inkscape:connector-curvature="0"
5167 sodipodi:nodetypes="czzzczzc"
5168 id="path8129-8"
5169 d="m 775.19813,-223.2266 c 0,0 7.77133,-2.78244 9.62831,-2.90349 1.85697,-0.12104 3.631,0.55417 6.22178,1.34062 2.59077,0.78645 8.5184,2.94217 10.86394,4.30412 2.34555,1.36195 6.36049,2.6695 6.36049,2.6695 0,0 -8.25373,-2.04423 -11.21821,-3.07958 -2.96447,-1.03535 -7.73259,-2.99481 -10.43406,-3.45243 -2.70147,-0.45763 -11.42225,1.12126 -11.42225,1.12126 z"
5170 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
5171 <path
5172 inkscape:connector-curvature="0"
5173 inkscape:transform-center-y="-4.3190906"
5174 inkscape:transform-center-x="13.852145"
5175 sodipodi:nodetypes="czzzczzc"
5176 id="path8131-9"
5177 d="m 789.64298,-227.95417 c 0,0 8.68256,-3.52031 10.54154,-3.60535 1.85897,-0.085 3.61958,0.62442 6.19463,1.46093 2.57505,0.83649 8.45979,3.10666 10.77851,4.5138 2.31872,1.40715 6.30757,2.79224 6.30757,2.79224 0,0 -8.21257,-2.20377 -11.15643,-3.29636 -2.94386,-1.09259 -7.67312,-3.14408 -10.36522,-3.65397 -2.69209,-0.50988 -12.3006,1.78871 -12.3006,1.78871 z"
5178 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
5179 <path
5180 inkscape:connector-curvature="0"
5181 inkscape:transform-center-y="-4.3190906"
5182 inkscape:transform-center-x="13.852145"
5183 sodipodi:nodetypes="czzzczzc"
5184 id="path8133-2"
5185 d="m 804.49513,-233.32948 c 0,0 7.80756,-2.58281 9.66654,-2.66785 1.85897,-0.085 3.61958,0.62442 6.19463,1.46093 2.57505,0.83649 8.45979,3.10666 10.77851,4.5138 2.31872,1.40715 6.30757,2.79224 6.30757,2.79224 0,0 -8.21257,-2.20377 -11.15643,-3.29636 -2.94386,-1.09259 -7.67312,-3.14408 -10.36522,-3.65397 -2.69209,-0.50988 -11.4256,0.85121 -11.4256,0.85121 z"
5186 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
5187 <path
5188 inkscape:connector-curvature="0"
5189 inkscape:transform-center-y="-4.3190906"
5190 inkscape:transform-center-x="13.852145"
5191 sodipodi:nodetypes="czzzczzc"
5192 id="path8135-8"
5193 d="m 819.55763,-237.57948 c 0,0 8.55756,-2.58281 10.41654,-2.66785 1.85897,-0.085 3.61958,0.62442 6.19463,1.46093 2.57505,0.83649 8.45979,3.10666 10.77851,4.5138 2.31872,1.40715 6.30757,2.79224 6.30757,2.79224 0,0 -8.21257,-2.20377 -11.15643,-3.29636 -2.94386,-1.09259 -7.67312,-3.14408 -10.36522,-3.65397 -2.69209,-0.50988 -12.1756,0.85121 -12.1756,0.85121 z"
5194 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
5195 <path
5196 inkscape:connector-curvature="0"
5197 inkscape:transform-center-y="-4.9269042"
5198 inkscape:transform-center-x="13.64141"
5199 sodipodi:nodetypes="czzzczzc"
5200 id="path8137-8"
5201 d="m 836.23395,-242.60125 c 0,0 6.96702,-1.98723 8.82784,-1.96757 1.86081,0.0197 3.57873,0.82702 6.10265,1.80705 2.52393,0.98 8.27166,3.57758 10.50756,5.11291 2.2359,1.53535 6.14053,3.14261 6.14053,3.14261 0,0 -8.07561,-2.66222 -10.95336,-3.91866 -2.87774,-1.25645 -7.48412,-3.5707 -10.14328,-4.23121 -2.65915,-0.66049 -10.48194,0.0549 -10.48194,0.0549 z"
5202 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
5203 <path
5204 inkscape:connector-curvature="0"
5205 inkscape:transform-center-y="-5.1542119"
5206 inkscape:transform-center-x="13.55068"
5207 sodipodi:nodetypes="czzzczzc"
5208 id="path8139-8"
5209 d="m 850.73028,-246.00461 c 0,0 7.68784,-2.02768 9.54782,-1.96854 1.85997,0.0592 3.56038,0.90279 6.06293,1.93616 2.50255,1.03334 8.19387,3.75232 10.39668,5.33475 2.20282,1.58245 6.07245,3.2722 6.07245,3.2722 0,0 -8.01729,-2.83298 -10.86772,-4.15022 -2.85043,-1.31723 -7.40666,-3.72872 -10.0512,-4.4455 -2.64454,-0.71678 -11.16096,0.0211 -11.16096,0.0211 z"
5210 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
5211 <path
5212 inkscape:connector-curvature="0"
5213 inkscape:transform-center-y="-5.4740887"
5214 inkscape:transform-center-x="13.41151"
5215 sodipodi:nodetypes="czzzczzc"
5216 id="path8141-6"
5217 d="m 864.82496,-249.21081 c 0,0 8.16952,-1.96906 10.02688,-1.85396 1.85735,0.11512 3.53158,1.00956 6.0019,2.11779 2.47031,1.10821 8.0772,3.99727 10.23138,5.64531 2.15418,1.64804 5.9712,3.45352 5.9712,3.45352 0,0 -7.92839,-3.07306 -10.73787,-4.4755 -2.80949,-1.40244 -7.29106,-3.94999 -9.91283,-4.74606 -2.62176,-0.79606 -11.58066,-0.1411 -11.58066,-0.1411 z"
5218 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
5219 <path
5220 inkscape:connector-curvature="0"
5221 inkscape:transform-center-y="-5.79376"
5222 inkscape:transform-center-x="13.258805"
5223 sodipodi:nodetypes="czzzczzc"
5224 id="path8143-8"
5225 d="m 881.38485,-251.60282 c 0,0 8.08536,-1.90809 9.93837,-1.73664 1.853,0.17147 3.4993,1.11633 5.93482,2.29908 2.43553,1.18271 7.95209,4.2407 10.05523,5.95339 2.10314,1.7127 5.86357,3.63326 5.86357,3.63326 0,0 -7.8314,-3.3124 -10.597,-4.7995 -2.76561,-1.48712 -7.16775,-4.16959 -9.76414,-5.04491 -2.59637,-0.87531 -11.43085,-0.30468 -11.43085,-0.30468 z"
5226 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
5227 <path
5228 inkscape:connector-curvature="0"
5229 inkscape:transform-center-y="-5.7433893"
5230 inkscape:transform-center-x="13.28378"
5231 sodipodi:nodetypes="czzzczzc"
5232 id="path8145-3"
5233 d="m 896.58415,-254.34724 c 0,0 7.64166,-1.4277 9.49547,-1.26515 1.8538,0.16256 3.50462,1.0995 5.94579,2.27053 2.44118,1.171 7.97238,4.20246 10.08372,5.90502 2.11134,1.70258 5.88096,3.60505 5.88096,3.60505 0,0 -7.84723,-3.27474 -10.61995,-4.74855 -2.77271,-1.4738 -7.18769,-4.13509 -9.78825,-4.99793 -2.60055,-0.86282 -10.99774,-0.76897 -10.99774,-0.76897 z"
5234 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
5235 <path
5236 inkscape:connector-curvature="0"
5237 inkscape:transform-center-y="-5.7433893"
5238 inkscape:transform-center-x="13.28378"
5239 sodipodi:nodetypes="czzzczzc"
5240 id="path8147-8"
5241 d="m 911.45328,-255.98544 c 0,0 8.64166,-1.5527 10.49547,-1.39015 1.8538,0.16256 3.50462,1.0995 5.94579,2.27053 2.44118,1.171 7.97238,4.20246 10.08372,5.90502 2.11134,1.70258 5.88096,3.60505 5.88096,3.60505 0,0 -7.84723,-3.27474 -10.61995,-4.74855 -2.77271,-1.4738 -7.18769,-4.13509 -9.78825,-4.99793 -2.60055,-0.86282 -11.99774,-0.64397 -11.99774,-0.64397 z"
5242 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
5243 <path
5244 inkscape:connector-curvature="0"
5245 inkscape:transform-center-y="-5.7433893"
5246 inkscape:transform-center-x="13.28378"
5247 sodipodi:nodetypes="czzzczzc"
5248 id="path8149-3"
5249 d="m 927.70328,-258.29794 c 0,0 7.64166,-0.8652 9.49547,-0.70265 1.8538,0.16256 3.50462,1.0995 5.94579,2.27053 2.44118,1.171 7.97238,4.20246 10.08372,5.90502 2.11134,1.70258 5.88096,3.60505 5.88096,3.60505 0,0 -7.84723,-3.27474 -10.61995,-4.74855 -2.77271,-1.4738 -7.18769,-4.13509 -9.78825,-4.99793 -2.60055,-0.86282 -10.99774,-1.33147 -10.99774,-1.33147 z"
5250 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
5251 <path
5252 inkscape:connector-curvature="0"
5253 inkscape:transform-center-y="-5.7433893"
5254 inkscape:transform-center-x="13.28378"
5255 sodipodi:nodetypes="czzzczzc"
5256 id="path8151-3"
5257 d="m 942.82828,-259.48544 c 0,0 8.57916,-1.4902 10.43297,-1.32765 1.8538,0.16256 3.50462,1.0995 5.94579,2.27053 2.44118,1.171 7.97238,4.20246 10.08372,5.90502 2.11134,1.70258 5.88096,3.60505 5.88096,3.60505 0,0 -7.84723,-3.27474 -10.61995,-4.74855 -2.77271,-1.4738 -7.18769,-4.13509 -9.78825,-4.99793 -2.60055,-0.86282 -11.93524,-0.70647 -11.93524,-0.70647 z"
5258 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
5259 <path
5260 inkscape:connector-curvature="0"
5261 inkscape:transform-center-y="-5.7433893"
5262 inkscape:transform-center-x="13.28378"
5263 sodipodi:nodetypes="czzzczzc"
5264 id="path8153-3"
5265 d="m 959.07828,-261.54794 c 0,0 7.82916,-0.8027 9.68297,-0.64015 1.8538,0.16256 3.50462,1.0995 5.94579,2.27053 2.44118,1.171 7.97238,4.20246 10.08372,5.90502 2.11134,1.70258 5.88096,3.60505 5.88096,3.60505 0,0 -7.84723,-3.27474 -10.61995,-4.74855 -2.77271,-1.4738 -7.18769,-4.13509 -9.78825,-4.99793 -2.60055,-0.86282 -11.18524,-1.39397 -11.18524,-1.39397 z"
5266 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
5267 <path
5268 inkscape:connector-curvature="0"
5269 inkscape:transform-center-y="-5.7433893"
5270 inkscape:transform-center-x="13.28378"
5271 sodipodi:nodetypes="czzzczzc"
5272 id="path8155-8"
5273 d="m 974.45328,-262.79794 c 0,0 8.39166,-1.1777 10.24547,-1.01515 1.8538,0.16256 3.50462,1.0995 5.94579,2.27053 2.44118,1.171 7.97238,4.20246 10.08376,5.90502 2.1113,1.70258 5.8809,3.60505 5.8809,3.60505 0,0 -7.84721,-3.27474 -10.61993,-4.74855 -2.77271,-1.4738 -7.18769,-4.13509 -9.78825,-4.99793 -2.60055,-0.86282 -11.74774,-1.01897 -11.74774,-1.01897 z"
5274 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
5275 <path
5276 inkscape:connector-curvature="0"
5277 inkscape:transform-center-y="-5.7433893"
5278 inkscape:transform-center-x="13.28378"
5279 sodipodi:nodetypes="czzzczzc"
5280 id="path8157-0"
5281 d="m 990.64078,-264.86044 c 0,0 6.89166,-0.9902 8.74547,-0.82765 1.85385,0.16256 3.50465,1.0995 5.94575,2.27053 2.4412,1.171 7.9724,4.20246 10.0838,5.90502 2.1113,1.70258 5.8809,3.60505 5.8809,3.60505 0,0 -7.8472,-3.27474 -10.6199,-4.74855 -2.7727,-1.4738 -7.1877,-4.13509 -9.7883,-4.99793 -2.60053,-0.86282 -10.24772,-1.20647 -10.24772,-1.20647 z"
5282 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
5283 <path
5284 inkscape:connector-curvature="0"
5285 inkscape:transform-center-y="-5.7433893"
5286 inkscape:transform-center-x="13.28378"
5287 sodipodi:nodetypes="czzzczzc"
5288 id="path8159-4"
5289 d="m 1007.7658,-265.79794 c 0,0 6.8291,-1.1777 8.683,-1.01515 1.8538,0.16256 3.5046,1.0995 5.9457,2.27053 2.4412,1.171 7.9724,4.20246 10.0838,5.90502 2.1113,1.70258 5.8809,3.60505 5.8809,3.60505 0,0 -7.8472,-3.27474 -10.6199,-4.74855 -2.7727,-1.4738 -7.1877,-4.13509 -9.7883,-4.99793 -2.6005,-0.86282 -10.1852,-1.01897 -10.1852,-1.01897 z"
5290 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
5291 <path
5292 inkscape:connector-curvature="0"
5293 inkscape:transform-center-y="-5.7433893"
5294 inkscape:transform-center-x="13.28378"
5295 sodipodi:nodetypes="czzzczzc"
5296 id="path8161-7"
5297 d="m 1023.8908,-267.79794 c 0,0 6.0791,-0.4277 7.933,-0.26515 1.8538,0.16256 3.5046,1.0995 5.9457,2.27053 2.4412,1.171 7.9724,4.20246 10.0838,5.90502 2.1113,1.70258 5.8809,3.60505 5.8809,3.60505 0,0 -7.8472,-3.27474 -10.6199,-4.74855 -2.7727,-1.4738 -7.1877,-4.13509 -9.7883,-4.99793 -2.6005,-0.86282 -9.4352,-1.76897 -9.4352,-1.76897 z"
5298 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
5299 <path
5300 inkscape:connector-curvature="0"
5301 inkscape:transform-center-y="-5.7433893"
5302 inkscape:transform-center-x="13.28378"
5303 sodipodi:nodetypes="czzzczzc"
5304 id="path8163-6"
5305 d="m 1039.7033,-269.17294 c 0,0 6.4541,-0.6777 8.308,-0.51515 1.8538,0.16256 3.5046,1.0995 5.9457,2.27053 2.4412,1.171 7.9724,4.20246 10.0838,5.90502 2.1113,1.70258 5.8809,3.60505 5.8809,3.60505 0,0 -7.8472,-3.27474 -10.6199,-4.74855 -2.7727,-1.4738 -7.1877,-4.13509 -9.7883,-4.99793 -2.6005,-0.86282 -9.8102,-1.51897 -9.8102,-1.51897 z"
5306 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
5307 <path
5308 inkscape:connector-curvature="0"
5309 inkscape:transform-center-y="-5.1360724"
5310 inkscape:transform-center-x="13.55813"
5311 sodipodi:nodetypes="czzzczzc"
5312 id="path8165-8"
5313 d="m 1055.2718,-271.03319 c 0,0 5.4976,-0.90945 7.3578,-0.85348 1.8601,0.056 3.5619,0.89674 6.0661,1.92586 2.5044,1.0291 8.2003,3.7384 10.4058,5.31709 2.2055,1.57871 6.078,3.2619 6.078,3.2619 0,0 -8.022,-2.81939 -10.8748,-4.13178 -2.8526,-1.31238 -7.4129,-3.71613 -10.0587,-4.42843 -2.6457,-0.71228 -8.9742,-1.09116 -8.9742,-1.09116 z"
5314 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
5315 <path
5316 inkscape:connector-curvature="0"
5317 inkscape:transform-center-y="-4.6370147"
5318 inkscape:transform-center-x="13.74758"
5319 sodipodi:nodetypes="czzzczzc"
5320 id="path8167-9"
5321 d="m 1072.7007,-273.48537 c 0,0 4.5472,-1.15581 6.408,-1.18621 1.8607,-0.0304 3.5996,0.73049 6.1489,1.64231 2.5494,0.91177 8.3649,3.35386 10.6414,4.8285 2.2763,1.47468 6.2227,2.97636 6.2227,2.97636 0,0 -8.1442,-2.44411 -11.0547,-3.62272 -2.9105,-1.1786 -7.5774,-3.36815 -10.2534,-3.95691 -2.6759,-0.58875 -8.1129,-0.68133 -8.1129,-0.68133 z"
5322 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
5323 <path
5324 inkscape:connector-curvature="0"
5325 inkscape:transform-center-y="-4.4842392"
5326 inkscape:transform-center-x="13.79933"
5327 sodipodi:nodetypes="czzzczzc"
5328 id="path8169-0"
5329 d="m 1087.1585,-276.5244 c 0,0 5.96,-1.77355 7.8202,-1.83024 1.86,-0.0567 3.6096,0.67955 6.1715,1.55525 2.562,0.87566 2.5226,0.85713 5.3335,1.49015 2.7969,0.62986 7.0767,1.51313 7.0767,1.51313 0,0 -3.6155,-0.0163 -6.7923,-0.46614 -3.1155,-0.44119 -7.3743,-1.69825 -10.0584,-2.24913 -2.6839,-0.55088 -9.5512,-0.013 -9.5512,-0.013 z"
5330 style="display:inline;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" />
5331 <path
5332 inkscape:connector-curvature="0"
5333 sodipodi:nodetypes="czczc"
5334 id="path8171-6"
5335 d="m 1099.25,-279.92981 c 0.1612,0.26862 11.2081,-4.60046 12.1875,-4.6875 0.9794,-0.087 2,3.125 2,3.125 0,0 -0.7751,-1.50434 -2.875,-1.0625 -2.0999,0.44184 -11.3009,2.67141 -11.3125,2.625 z"
5336 style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
5337 </g>
5338 <path
5339 inkscape:connector-curvature="0"
5340 id="path8173-8"
5341 d="m 1107.4532,-284.0938 c -0.4187,0.21283 -0.1556,0.0939 -0.6472,0.30581 -0.4861,0.20954 -1.7234,0.57439 -4.0796,1.45895 -3.3311,1.25057 -5.8302,2.15344 -7.0259,3.0661 -1.5361,0.0213 -3.7205,0.23331 -5.6563,0.71875 -2.9815,0.74766 -4.8552,1.17401 -6.75,1.59375 -1.8948,0.41972 -1.6755,0.64219 -2.875,0.875 -1.2966,0.25166 -1.7214,-0.009 -5.4375,0.78125 -3.4899,0.74214 -8.8948,1.93107 -10.1562,2.6875 -1.5839,-0.18079 -3.8675,-0.32178 -5.8438,-0.0312 -3.0404,0.44695 -4.9162,0.67276 -6.8437,0.90625 -0.6554,0.0794 -1.0411,0.20078 -1.3438,0.28125 -0.4262,0.13165 -0.6858,0.26002 -1.375,0.34375 -1.3116,0.15936 -1.7622,-0.15683 -5.5312,0.28125 -3.5539,0.41308 -9.0054,1.27282 -10.25,1.9375 -1.599,-0.2973 -3.8578,-0.53419 -5.8438,-0.34375 -3.0588,0.29331 -4.972,0.48399 -6.9062,0.65625 -1.9343,0.17226 -1.6887,0.42237 -2.9063,0.53125 -1.3162,0.11769 -1.7598,-0.16363 -5.5312,0.25 -3.5419,0.38844 -9.0079,1.20927 -10.2813,1.875 -1.5989,-0.2947 -3.88718,-0.50701 -5.87501,-0.3125 -3.05824,0.29924 -4.94113,0.48024 -6.875,0.65625 -0.65749,0.0598 -1.04004,0.17856 -1.34375,0.25 -0.42765,0.11895 -0.68351,0.21807 -1.375,0.28125 -1.31596,0.12025 -1.75976,-0.19488 -5.53125,0.21875 -3.55614,0.39001 -9.00554,1.23916 -10.25,1.90625 -1.59863,-0.29419 -3.85984,-0.52372 -5.84375,-0.3125 -3.0556,0.32532 -4.97404,0.52624 -6.90625,0.71875 -1.93221,0.1925 -1.68987,0.44088 -2.90625,0.5625 -1.31488,0.13146 -1.76298,-0.16454 -5.53125,0.28125 -3.53887,0.41865 -8.97768,1.29217 -10.25,1.96875 -1.59755,-0.28105 -3.85996,-0.42043 -5.84375,-0.1875 -3.05198,0.35836 -4.94508,0.56786 -6.875,0.78125 -0.6562,0.0726 -1.04066,0.17269 -1.34375,0.25 -0.42677,0.12722 -0.68491,0.2672 -1.375,0.34375 -1.31333,0.14568 -1.76746,-0.17402 -5.53125,0.3125 -3.54889,0.45875 -8.97863,1.41902 -10.21875,2.125 -1.59305,-0.24424 -3.83381,-0.38135 -5.8125,-0.125 -3.04759,0.39481 -4.95071,0.64845 -6.875,0.90625 -1.92428,0.25779 -1.72611,0.49353 -2.9375,0.65625 -1.30946,0.1759 -1.74719,-0.10438 -5.5,0.46875 -3.52429,0.53824 -8.92315,1.69917 -10.1875,2.4375 -1.5875,-0.20354 -3.8455,-0.25473 -5.8125,0.0937 -3.02617,0.53612 -4.89889,0.86169 -6.8125,1.1875 -0.65061,0.11077 -1.01371,0.27094 -1.3125,0.375 -0.42067,0.16488 -0.66345,0.3313 -1.34375,0.46875 -1.29465,0.26159 -1.72712,-0.006 -5.4375,0.8125 -3.49853,0.77195 -8.84595,2.38293 -10.0625,3.21875 -1.56278,-0.0775 -3.75758,0.0853 -5.6875,0.59375 -2.97244,0.78313 -4.81761,1.23209 -6.6875,1.75 -1.86988,0.5179 -1.6666,0.76728 -2.84375,1.09375 -1.27246,0.3529 -1.69703,0.10709 -5.34375,1.1875 -3.4247,1.01463 -8.64944,2.93317 -9.875,3.84375 -1.53883,0.0127 -3.71983,0.27222 -5.625,0.875 -2.93106,0.92734 -4.75031,1.45842 -6.59375,2.0625 -0.62676,0.20538 -0.99173,0.39258 -1.28125,0.53125 -0.40763,0.21361 -0.65334,0.40875 -1.3125,0.625 -1.25446,0.41154 -1.68611,0.18904 -5.28125,1.4375 -3.38985,1.17717 -8.59498,3.2137 -9.78125,4.15625 -1.52389,0.0597 -3.65005,0.39487 -5.53125,1.0625 -2.89739,1.02829 -4.69908,1.67548 -6.53125,2.3125 -1.83217,0.63701 -1.62785,0.84854 -2.78125,1.25 -1.24678,0.43396 -1.66361,0.19972 -5.21875,1.5625 -3.33867,1.2798 -8.48715,3.48255 -9.6875,4.46875 -1.50718,0.10769 -3.63569,0.4988 -5.5,1.21875 -2.86818,1.1076 -4.6238,1.78156 -6.4375,2.46875 -0.61666,0.23363 -0.99641,0.44203 -1.28125,0.59375 0,0 0,1.09375 0,1.09375 0.11178,-0.22236 0.38599,-0.81743 0.90625,-1.09375 0.69797,-0.37072 4.81363,-1.99337 6.8125,-2.71875 1.65686,-0.60125 4.15389,-1.32868 5.96875,-1.3125 0.30162,0.003 0.58762,0.0509 0.84375,0.0937 1.84249,0.30825 7.46875,1.5625 7.46875,1.5625 -10e-6,0 -6.23349,-1.64675 -7.03125,-1.84375 -0.19079,-0.0471 -0.53572,-0.0687 -0.96875,-0.0625 1.14546,-0.86971 4.761,-2.39351 7.34375,-3.4375 2.83822,-1.14727 3.11681,-1.25182 5.0625,-1.65625 2.0083,-0.41744 3.15625,-0.5 3.15625,-0.5 0,1e-5 -0.0824,-0.60114 0.96875,-1.125 0.7051,-0.35141 4.88702,-1.8924 6.90625,-2.5625 1.9519,-0.64773 5.0574,-1.3585 6.875,-1 1.86323,0.3675 7.53125,1.8125 7.53125,1.8125 1e-5,0 -6.287,-1.87111 -7.09375,-2.09375 -0.19292,-0.0533 -0.53084,-0.086 -0.96875,-0.0937 1.15834,-0.83288 4.79444,-2.19532 7.40625,-3.15625 2.87016,-1.05601 3.16734,-1.1618 5.125,-1.53125 1.85349,-0.34979 2.85884,-0.42548 3.03125,-0.4375 0.1136,-0.21724 0.37745,-0.81002 0.90625,-1.0625 0.70944,-0.33874 4.92607,-1.71275 6.96875,-2.3125 1.69317,-0.49711 4.24077,-1.03677 6.09375,-0.90625 0.30795,0.0217 0.61349,0.0973 0.875,0.15625 1.88118,0.42432 7.59375,2.03125 7.59375,2.03125 1e-5,0 -6.34174,-2.06525 -7.15625,-2.3125 -0.19479,-0.0591 -0.55788,-0.10394 -1,-0.125 1.16949,-0.79755 4.86302,-2.05622 7.5,-2.9375 2.89781,-0.96847 3.23301,-1.00332 5.21875,-1.28125 2.04965,-0.28689 3.1875,-0.3125 3.1875,-0.3125 -2e-5,0 -0.0727,-0.60697 1,-1.0625 0.7196,-0.30557 4.99098,-1.50075 7.0625,-2 2.00244,-0.48258 5.19849,-0.92829 7.0625,-0.40625 1.91078,0.53515 7.71875,2.5 7.71875,2.5 0,0 -6.42266,-2.42351 -7.25,-2.71875 -0.19784,-0.0706 -0.58216,-0.14039 -1.03125,-0.1875 1.1879,-0.72865 4.91527,-1.77408 7.59375,-2.5 2.94342,-0.79775 3.29208,-0.77083 5.3125,-0.90625 1.91289,-0.12823 2.94705,-0.0711 3.125,-0.0625 0.11728,-0.20366 0.39176,-0.77948 0.9375,-0.96875 0.73219,-0.25394 5.07852,-1.04789 7.1875,-1.375 1.74813,-0.27111 4.40088,-0.4847 6.3125,-0.0937 0.31766,0.065 0.60522,0.18551 0.875,0.28125 1.94074,0.68873 7.84375,3.09375 7.84375,3.09375 1e-5,0 -6.53471,-2.95077 -7.375,-3.3125 -0.20097,-0.0865 -0.57513,-0.16679 -1.03125,-0.25 1.2065,-0.63318 5.02956,-1.3956 7.75,-1.90625 2.98953,-0.56119 3.30023,-0.52954 5.34375,-0.53125 2.10926,-0.002 3.3125,0.125 3.3125,0.125 0,1e-5 -0.0727,-0.63119 1.03125,-0.9375 0.74052,-0.20547 5.12612,-0.83387 7.25,-1.0625 2.05302,-0.22099 5.31863,-0.25222 7.21875,0.46875 1.94779,0.73907 7.84375,3.375 7.84375,3.375 2e-5,0 -6.56288,-3.17897 -7.40625,-3.5625 -0.20168,-0.0917 -0.54221,-0.18621 -1,-0.28125 1.21092,-0.60188 4.98442,-1.24884 7.71875,-1.65625 3.0048,-0.44772 3.32551,-0.4517 5.375,-0.40625 1.94045,0.043 3.00699,0.19423 3.1875,0.21875 0.11892,-0.19316 0.3839,-0.76583 0.9375,-0.90625 0.74271,-0.18838 5.15429,-0.73428 7.28125,-0.9375 1.76303,-0.16842 4.42009,-0.23429 6.34375,0.25 0.31968,0.0805 0.60351,0.20359 0.875,0.3125 1.95293,0.78349 7.90625,3.46875 7.90625,3.46875 -2e-5,0 -6.59191,-3.25348 -7.4375,-3.65625 -0.20222,-0.0963 -0.57226,-0.20703 -1.03125,-0.3125 1.21414,-0.57427 5.04366,-1.12219 7.78125,-1.5 3.00838,-0.4152 3.32307,-0.44263 5.375,-0.375 2.11798,0.0698 3.3125,0.25 3.3125,0.25 -2e-5,0 -0.0772,-0.63741 1.03125,-0.90625 0.74362,-0.18035 5.15176,-0.66355 7.28125,-0.84375 2.05847,-0.17417 5.34324,-0.12432 7.25,0.65625 1.95459,0.80016 7.875,3.53125 7.875,3.53125 -2e-5,0 -6.55993,-3.30876 -7.40625,-3.71875 -0.20237,-0.0981 -0.57186,-0.2031 -1.03125,-0.3125 1.21517,-0.5639 5.01008,-1.1143 7.75,-1.46875 3.01091,-0.38952 3.32131,-0.39765 5.375,-0.3125 1.94439,0.0806 3.00663,0.25324 3.1875,0.28125 0.11916,-0.19086 0.38277,-0.74531 0.9375,-0.875 0.74426,-0.174 5.14993,-0.65047 7.28125,-0.8125 1.76662,-0.13427 4.44971,-0.12571 6.37501,0.375 0.32,0.0832 0.6033,0.20127 0.875,0.3125 1.9546,0.80016 7.9063,3.5625 7.9063,3.5625 -1e-4,0 -6.5912,-3.34001 -7.4375,-3.75 -0.2024,-0.0981 -0.5719,-0.20311 -1.0313,-0.3125 1.2151,-0.5639 5.0413,-1.08306 7.7813,-1.4375 3.0109,-0.38953 3.3525,-0.4289 5.4062,-0.34375 2.1197,0.0879 3.3125,0.3125 3.3125,0.3125 0,0 -0.078,-0.64902 1.0313,-0.90625 0.7443,-0.17256 5.1495,-0.62336 7.2812,-0.78125 2.0606,-0.1526 5.3429,-0.0968 7.25,0.6875 1.955,0.80395 7.875,3.5 7.875,3.5 0,0 -6.5598,-3.27587 -7.4062,-3.6875 -0.2025,-0.0984 -0.5718,-0.20222 -1.0313,-0.3125 1.2154,-0.56154 5.0119,-1.12778 7.75,-1.5 3.009,-0.40905 3.3227,-0.41558 5.375,-0.34375 1.9431,0.068 3.0072,0.16485 3.1875,0.1875 0.1188,-0.1944 0.3846,-0.72881 0.9375,-0.875 0.7418,-0.19612 5.1311,-0.82878 7.25,-1.09375 1.7564,-0.21961 4.4053,-0.33231 6.3125,0.0312 0.3169,0.0604 0.6058,0.18938 0.875,0.28125 1.9362,0.66092 7.8438,2.9375 7.8438,2.9375 -10e-5,0 -6.5367,-2.80655 -7.375,-3.15625 -0.2005,-0.0836 -0.5762,-0.17333 -1.0313,-0.25 1.2037,-0.65046 5.0191,-1.37195 7.7188,-2 2.9667,-0.6902 3.2889,-0.75507 5.3125,-0.875 2.0886,-0.1238 3.2812,-0.0312 3.2812,-0.0312 0,1e-5 -0.087,-0.63205 1,-1.03125 0.7292,-0.2678 5.0472,-1.33797 7.125,-1.8125 2.0085,-0.45869 5.1679,-1.0293 7,-0.625 1.8781,0.41446 13.5782,3.01563 13.5782,3.01563 0,0 -12.3275,-3.02266 -13.1407,-3.26563 -0.1945,-0.0581 -0.5586,-0.10626 -1,-0.125 1.1676,-0.80369 3.5142,-1.6873 6.1094,-2.70312 1.6814,-0.65818 0.9237,-0.37659 2.7759,-1.0036 1.7536,-0.59366 2.4854,-1.01071 2.6304,-1.11299 0.3461,-0.20651 -0.356,-0.12188 -0.5442,-0.0424 z"
5342 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7333-7);enable-background:new"
5343 sodipodi:nodetypes="czscsssscssssscsssscssssscsssscssssscsssscssssscsssscssssscsssscssccsssscscsscssscscsscsssscscsscssscscsscsssscscsscssscscsscsssscscsscssscscsscsssscscsscssscscsscsssscscsscssscscsscc" />
5344 <path
5345 inkscape:connector-curvature="0"
5346 id="path8175-7"
5347 d="m 1082.625,-275.125 c 1.873,0.39348 4.4961,1.14555 6.0313,1.96875 1.5352,0.82319 2.8222,1.056 5.375,2.5 2.5266,1.42926 4.7958,2.00696 6.9687,2.53125 2.3476,0.56642 5.4354,0.71523 8.8438,1.1875 -1.0889,-0.83975 -6.6074,-1.17245 -8.4063,-1.5625 -1.7989,-0.39006 -3.8941,-1.01616 -6.5937,-2.3125 -2.6997,-1.29634 -3.4944,-1.79896 -5.8125,-2.6875 -2.3182,-0.88854 -4.0044,-1.38314 -6.4063,-1.625 z"
5348 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7285-4);enable-background:new" />
5349 <path
5350 inkscape:connector-curvature="0"
5351 id="path8177-9"
5352 d="m 1051.4688,-270 c 1.9053,0.57759 4.5281,1.61572 6.0937,2.59375 1.5656,0.97802 2.8802,1.35981 5.5,3.125 2.593,1.74716 4.9859,2.70927 7.25,3.59375 2.4461,0.95557 5.6826,1.65713 9.4063,3.0625 -1.1896,-1.13784 -7.0631,-2.68675 -8.9375,-3.375 -1.8745,-0.68825 -4.0818,-1.5662 -6.875,-3.28125 -2.7933,-1.71504 -3.5736,-2.2839 -5.9375,-3.40625 -2.3641,-1.12234 -4.0567,-1.83455 -6.5,-2.3125 z"
5353 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7289-0);enable-background:new" />
5354 <path
5355 inkscape:connector-curvature="0"
5356 id="path8179-0"
5357 d="m 1020.2188,-266.84375 c 1.9119,0.63811 4.5812,1.75536 6.1562,2.8125 1.5751,1.05715 2.8956,1.50867 5.5313,3.40625 2.6086,1.87821 5.0284,3.03003 7.3125,4.0625 2.4677,1.11545 5.7645,2.1733 9.5312,3.84375 -1.2033,-1.22253 -7.2028,-3.31423 -9.0937,-4.125 -1.891,-0.81077 -4.0649,-1.89379 -6.875,-3.75 -2.8102,-1.8562 -3.6218,-2.47693 -6,-3.71875 -2.3783,-1.2418 -4.1107,-1.97569 -6.5625,-2.53125 z"
5358 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7293-0);enable-background:new" />
5359 <path
5360 inkscape:connector-curvature="0"
5361 id="path8181-3"
5362 d="m 1110.1719,-266.89063 c 0.1508,0.0486 0.688,0.631 0.1094,1.48438 -0.8101,1.19459 -5.7049,3.32429 -8.5625,4.125 -2.8449,0.79712 -6.2901,0.97774 -10.5625,-0.375 -4.3016,-1.36195 -5.4697,-2.46872 -10.6563,-4.3125 4.664,2.11517 6.1953,3.95233 10.125,5.34375 1.6207,0.57387 3.3671,0.9396 5.0625,1.03125 -0.4451,0.32563 -1.5303,0.9833 -3.5625,1.59375 -2.7955,0.83969 -6.6491,1.53378 -8.25,1.625 -1.5146,0.0863 -3.142,-0.51249 -3.4375,-0.625 0.1667,0.10308 0.3732,0.37734 -0.25,1.03125 -0.8993,0.94363 -6.1474,1.923 -9.125,2.25 -2.9643,0.32555 -6.5216,-0.016 -10.9062,-1.90625 -3.978,-1.71497 -5.339,-2.91536 -9.4063,-4.75 0,0 0,0.15625 0,0.15625 3.6431,2.09529 5.284,3.88327 8.875,5.5625 1.7302,0.80909 3.5917,1.40876 5.4063,1.71875 -0.5349,0.28676 -1.5578,0.71151 -3.4375,1.03125 -2.869,0.48796 -6.809,0.81614 -8.4375,0.75 -0.8507,-0.0345 -1.7286,-0.18437 -2.4063,-0.40625 -0.6848,-0.21488 -1.1897,-0.44467 -1.3125,-0.5 0.1694,0.10721 0.4311,0.40288 -0.2187,1.03125 -0.9097,0.87962 -6.2461,1.33638 -9.25,1.46875 -2.9905,0.13179 -6.5889,-0.45063 -11,-2.5625 -4.4412,-2.12626 -5.6415,-3.4016 -10.9063,-5.78125 4.7343,2.59704 6.2865,4.6291 10.3438,6.71875 1.6733,0.86185 3.4852,1.49425 5.25,1.9375 -0.4633,0.23332 -1.5894,0.68814 -3.6875,0.9375 -2.8863,0.34298 -6.8346,0.49288 -8.4688,0.375 -1.5462,-0.1115 -3.2312,-0.85696 -3.5312,-1 0.1691,0.12029 0.4138,0.41048 -0.2188,1 -0.9128,0.85073 -6.2441,1.26212 -9.25,1.375 -2.9925,0.11237 -6.5897,-0.49043 -11,-2.59375 -4.00125,-1.90823 -5.38803,-3.13783 -9.46875,-5.09375 -3e-5,0 0,0.15625 0,0.15625 3.65506,2.20392 5.29421,4.05255 8.90625,5.90625 1.74029,0.89315 3.637,1.52827 5.4688,1.96875 -0.54,0.2483 -1.5781,0.61533 -3.4688,0.84375 -2.88568,0.34858 -6.86605,0.52095 -8.5,0.40625 -0.85345,-0.0599 -1.72631,-0.25791 -2.40625,-0.5 -0.6871,-0.2353 -1.18935,-0.47226 -1.3125,-0.53125 0.16998,0.11227 0.46448,0.42225 -0.1875,1.03125 -0.91265,0.8525 -6.27533,1.29337 -9.28125,1.40625 -2.99246,0.11237 -6.59346,-0.52805 -11,-2.59375 -4.43653,-2.07978 -5.64688,-3.33171 -10.90625,-5.65625 4.72938,2.54749 6.29074,4.5778 10.34375,6.625 1.67155,0.84433 3.48554,1.46643 5.25,1.90625 -0.46323,0.23422 -1.5897,0.68407 -3.6875,0.9375 -2.88569,0.34858 -6.8362,0.56952 -8.46875,0.46875 -1.54456,-0.0953 -3.20031,-0.82885 -3.5,-0.96875 0.16899,0.11853 0.38192,0.40385 -0.25,1 -0.91186,0.86028 -6.24665,1.33025 -9.25,1.46875 -2.98995,0.1379 -6.56745,-0.45068 -10.96875,-2.46875 -3.99308,-1.83089 -5.36511,-3.0292 -9.4375,-4.90625 -2e-5,0 0,0.15625 0,0.15625 3.64761,2.13327 5.27033,3.93487 8.875,5.71875 1.73675,0.85951 3.60727,1.45014 5.4375,1.875 -0.53947,0.2529 -1.55063,0.64129 -3.4375,0.90625 -2.87978,0.40436 -6.83813,0.64562 -8.46875,0.5625 -0.85172,-0.0434 -1.7277,-0.20855 -2.40625,-0.4375 -0.68569,-0.22201 -1.1896,-0.44339 -1.3125,-0.5 0.16959,0.10899 0.4319,0.40965 -0.21875,1.03125 -0.91079,0.87014 -6.25021,1.39152 -9.25,1.5625 -2.98633,0.17021 -6.57381,-0.31577 -10.96875,-2.28125 -4.42489,-1.97888 -5.60596,-3.22819 -10.84375,-5.375 4.70997,2.38767 6.27017,4.38873 10.3125,6.34375 1.66715,0.80631 3.46043,1.39658 5.21875,1.78125 -0.46163,0.2487 -1.597,0.71225 -3.6875,1.03125 -2.8756,0.43876 -6.7804,0.7331 -8.40625,0.6875 -1.53823,-0.0431 -3.2328,-0.74522 -3.53125,-0.875 0.16833,0.11282 0.41057,0.41375 -0.21875,1.03125 -0.90812,0.8911 -6.20295,1.52825 -9.1875,1.8125 -2.97118,0.28298 -6.57342,-0.1758 -10.9375,-1.9375 -3.95934,-1.59831 -5.32915,-2.79487 -9.34375,-4.3125 3e-5,0 0,0.15625 0,0.15625 3.5959,1.81135 5.23831,3.58233 8.8125,5.15625 1.72207,0.75835 3.58748,1.28895 5.40625,1.625 -0.53609,0.27908 -1.56658,0.68763 -3.4375,1.0625 -2.85539,0.5721 -6.78942,1.01939 -8.40625,1.03125 -0.84451,0.006 -1.70608,-0.0809 -2.375,-0.25 -0.67591,-0.16151 -1.16009,-0.32923 -1.28125,-0.375 0.16722,0.094 0.42267,0.38348 -0.21875,1.0625 -0.89787,0.95052 -6.18648,1.91708 -9.125,2.4375 -2.92534,0.51809 -6.43215,0.37424 -10.71875,-1.03125 -4.3158,-1.41507 -5.47277,-2.52994 -10.5625,-3.96875 4.57685,1.75101 6.08855,3.56006 10.03125,5 1.62608,0.59389 3.36885,0.95565 5.09375,1.15625 -0.45285,0.29702 -1.55478,0.88339 -3.59375,1.46875 -2.80472,0.80517 -6.63886,1.57583 -8.21875,1.75 -1.49475,0.1648 -3.11623,-0.31681 -3.40625,-0.40625 0.16356,0.0901 0.39278,0.35993 -0.21875,1.0625 -0.88247,1.01385 -6.04452,2.37165 -8.9375,3.0625 -2.88002,0.68778 -6.3356,0.76002 -10.5625,-0.4375 -3.83485,-1.08645 -5.17258,-2.07237 -9.0625,-3.125 -10e-6,0 0,0.15625 0,0.15625 3.48418,1.39485 5.06941,2.9194 8.53125,4.03125 1.66793,0.53572 3.45578,0.78674 5.21875,0.875 -0.51964,0.35212 -1.50039,0.91452 -3.3125,1.53125 -2.76566,0.94125 -6.59024,1.93537 -8.15625,2.15625 -0.81794,0.11539 -1.6331,0.12283 -2.28125,0.0312 -0.65496,-0.0832 -1.1326,-0.21827 -1.25,-0.25 0.16204,0.0746 0.43399,0.34044 -0.1875,1.09375 -0.87,1.05453 -6.00963,2.65925 -8.875,3.4375 -2.85253,0.77476 -6.25912,0.9582 -10.4375,-0.0937 -4.20683,-1.05913 -5.35669,-2.04166 -10.34375,-3.15625 4.48454,1.45946 5.96935,3.13523 9.8125,4.25 1.58504,0.45977 3.28679,0.63825 4.96875,0.6875 -0.44157,0.33676 -1.51251,1.02773 -3.5,1.78125 -2.73393,1.03649 -6.45198,2.16269 -8,2.4375 -1.46462,0.26002 -3.05958,-0.11654 -3.34375,-0.1875 0.16025,0.0796 0.38044,0.32098 -0.21875,1.0625 -0.86466,1.07006 -5.91652,2.81815 -8.75,3.6875 -2.8208,0.86547 -6.2075,1.15631 -10.34375,0.21875 -3.75259,-0.85061 -5.04785,-1.71647 -8.875,-2.59375 0,0 0,0.15625 0,0.15625 3.42796,1.23779 4.98741,2.6323 8.375,3.53125 1.63216,0.43314 3.36704,0.58301 5.09375,0.5625 -0.50893,0.38417 -1.47675,1.02182 -3.25,1.75 -2.70634,1.11134 -6.43633,2.30781 -7.96875,2.625 -0.8004,0.16569 -1.61231,0.21862 -2.25,0.15625 0,0 0,0.51552 0,0.92229 0,0.26507 0,0.48396 0,0.48396 0.22645,-0.14468 0.44891,-0.27261 0.71875,-0.375 1.08052,-0.40998 2.17161,-0.21577 6,-1.6875 3.82843,-1.47174 5.22412,-2.00498 5.90625,-2.40625 0.6796,-0.39978 1.61165,-0.87937 2.21875,-1.53125 1.82685,-0.13775 3.57075,-0.49323 4.9375,-1 2.96812,-1.10052 4.87537,-1.80619 6.78125,-2.46875 1.90586,-0.66254 2.35409,-1.41487 3.40625,-1.78125 1.09155,-0.38011 2.19511,-0.16538 6.0625,-1.53125 3.86745,-1.36586 5.28316,-1.82708 5.96875,-2.21875 0.70109,-0.40052 1.70081,-0.93298 2.3125,-1.59375 1.9708,-0.0547 3.81685,-0.38463 5.28125,-0.875 3.00148,-1.00508 4.92615,-1.62171 6.84375,-2.25 1.5386,-0.5041 2.17402,-1.04677 2.90625,-1.4375 0.23016,-0.13431 0.47574,-0.25373 0.75,-0.34375 1.09823,-0.36048 2.18145,-0.0814 6.09375,-1.3125 3.91233,-1.23113 5.36605,-1.67295 6.0625,-2.03125 0.69388,-0.35697 1.63015,-0.79261 2.25,-1.40625 1.86521,-0.0227 3.63581,-0.26683 5.03125,-0.6875 3.03043,-0.91354 4.99238,-1.4301 6.9375,-1.96875 1.94511,-0.53864 2.42618,-1.26452 3.5,-1.5625 1.11401,-0.30915 2.21994,0.007 6.1875,-1.03125 3.96761,-1.03863 5.41758,-1.43273 6.125,-1.75 0.73487,-0.32959 1.81383,-0.75372 2.4375,-1.375 1.99774,0.116 3.85743,-0.0201 5.34375,-0.375 3.07811,-0.735 5.08344,-1.10094 7.0625,-1.5 1.58792,-0.32018 2.24429,-0.79055 3,-1.09375 0.23757,-0.1068 0.46695,-0.19276 0.75,-0.25 1.13347,-0.22919 2.30448,0.20893 6.34375,-0.5 4.03933,-0.70893 5.50025,-0.92709 6.21875,-1.1875 0.71586,-0.25944 1.70428,-0.56724 2.34375,-1.09375 1.92427,0.23949 3.74788,0.22453 5.1875,0 3.12633,-0.48762 5.15455,-0.70067 7.15625,-0.96875 2.00171,-0.26807 2.48869,-0.94514 3.59375,-1.09375 1.14639,-0.15418 2.27592,0.30157 6.34375,-0.21875 4.06784,-0.52032 5.56013,-0.69573 6.28125,-0.9375 0.7371,-0.24714 1.79809,-0.58623 2.4375,-1.125 2.05007,0.33553 3.97378,0.39796 5.5,0.21875 3.14231,-0.36896 5.17994,-0.55936 7.1875,-0.78125 1.61076,-0.17802 2.26467,-0.6082 3.03125,-0.84375 0.24094,-0.0855 0.49412,-0.1556 0.78125,-0.1875 1.14978,-0.12772 2.30129,0.34665 6.375,-0.125 4.07374,-0.47165 5.55909,-0.6106 6.28125,-0.84375 0.71946,-0.23227 1.70024,-0.47346 2.34375,-0.96875 1.93637,0.33346 3.77006,0.40424 5.21875,0.25 3.14602,-0.33495 5.17756,-0.51859 7.1875,-0.71875 2.00996,-0.20014 2.48414,-0.82639 3.59375,-0.9375 1.15114,-0.11528 2.29643,0.36506 6.375,-0.0625 4.07861,-0.42756 5.58886,-0.56209 6.3125,-0.78125 0.73915,-0.22386 1.79572,-0.51325 2.4375,-1.03125 2.0571,0.39867 4.00187,0.4934 5.53125,0.34375 3.14873,-0.3081 5.17584,-0.47325 7.1875,-0.65625 1.61407,-0.14682 2.2631,-0.56055 3.03125,-0.78125 0.24142,-0.0809 0.49353,-0.12991 0.78125,-0.15625 1.15211,-0.10545 2.29296,0.39275 6.375,0 4.08208,-0.39275 5.5889,-0.53084 6.3125,-0.75 0.7209,-0.21833 1.6997,-0.4477 2.3438,-0.9375 1.938,0.34999 3.7688,0.45438 5.2187,0.3125 3.1487,-0.3081 5.1758,-0.47325 7.1875,-0.65625 2.0116,-0.18299 2.5142,-0.83802 3.625,-0.9375 1.1523,-0.10323 2.2922,0.38483 6.375,0 4.0829,-0.38482 5.5887,-0.501 6.3125,-0.71875 0.7393,-0.22243 1.7956,-0.51449 2.4375,-1.03125 2.0574,0.40177 4.0029,0.50333 5.5313,0.34375 3.1466,-0.32852 5.1771,-0.5227 7.1875,-0.71875 1.613,-0.15729 2.2656,-0.63148 3.0312,-0.875 0.2407,-0.088 0.4632,-0.12137 0.75,-0.15625 1.1483,-0.1397 2.3167,0.33991 6.375,-0.25 4.0583,-0.58992 5.5618,-0.77714 6.2813,-1.03125 0.7167,-0.25316 1.6745,-0.55807 2.3125,-1.09375 1.9197,0.21194 3.7199,0.15141 5.1562,-0.0937 3.1191,-0.5324 5.1116,-0.92861 7.0938,-1.3125 1.9821,-0.38387 2.4743,-1.03965 3.5625,-1.28125 1.1288,-0.25066 2.2703,0.11629 6.25,-0.875 3.9796,-0.99128 5.4296,-1.4193 6.125,-1.78125 0.7223,-0.37601 1.7619,-0.87058 2.375,-1.53125 1.963,-0.012 3.7937,-0.29105 5.2187,-0.84375 2.9512,-1.14461 4.8732,-1.86942 6.6875,-2.75 1.4557,-0.70653 2.3348,-1.68641 2.5469,-1.98438 0.2122,-0.29796 0.1118,-0.7453 0.1379,-0.76675 0.043,-0.0352 0.3193,-0.085 0.479,-0.42844 0.8589,-1.84708 2.321,-5.64459 2.4352,-6.32945 0.1137,-0.68216 0.1638,-1.34774 0.2145,-1.74497 0.029,-0.22952 -0.1467,-0.86544 -0.1246,-0.92404 0.031,-0.0821 0.3045,-0.26528 0.3599,-0.51471 0.2663,-1.19833 0.089,-2.19129 -0.1251,-3.60893 -0.214,-1.41764 -0.9837,-4.62214 -1.6369,-5.47626 -0.6589,-0.86172 -1.2229,-1.01117 -1.7479,-1.00066 -0.2086,0.26976 0.1368,0.26309 0.1626,0.31261 0.6806,0.0508 0.934,0.36864 1.4192,0.89662 0.4852,0.52798 1.2218,3.85117 1.3584,5.30156 0.1366,1.45039 0.19,2.8602 -0.088,3.46864 -0.2781,0.60845 -0.7232,0.51703 -1.0156,0.58291 0.531,0.18589 0.6698,0.12483 0.7314,0.96929 0.059,0.81338 -0.1332,1.63969 -0.5198,2.80562 -0.3912,1.18001 -1.8452,4.34998 -2.2857,4.59877 -0.4523,0.25551 -0.7314,0.27038 -1.067,0.13944 z"
5363 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7337-2);enable-background:new"
5364 sodipodi:nodetypes="cssscscsscsssccscssssssscscsscsssscscssssssscscsscsssscscssssssscscsscsssscscssssssscscsscsssscscssssssscscsscsssccscsscscssscssssscsssssscssssscsssssscssssscsssssscssssscsssssscssssscsssssscssssscsszsszssszzcczzzczzzc" />
5365 <path
5366 inkscape:connector-curvature="0"
5367 id="path8183-3"
5368 d="m 988.75,-263.84375 c 1.91161,0.6344 4.55027,1.75841 6.125,2.8125 1.57477,1.05409 2.8961,1.48252 5.5313,3.375 2.6082,1.87314 5.0269,3.01522 7.3125,4.0625 2.4693,1.13147 5.7521,2.15474 9.5312,3.9375 -1.2072,-1.2584 -7.139,-3.36445 -9.0312,-4.1875 -1.8922,-0.82304 -4.128,-1.93049 -6.9375,-3.78125 -2.80961,-1.85075 -3.62224,-2.48154 -6.00005,-3.71875 -2.37782,-1.23719 -4.07988,-1.9492 -6.53125,-2.5 z"
5369 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7297-4);enable-background:new" />
5370 <path
5371 inkscape:connector-curvature="0"
5372 id="path8185-3"
5373 d="m 957.5,-260.78125 c 1.91,0.6181 4.58288,1.70934 6.15625,2.75 1.57339,1.04066 2.89608,1.48252 5.53125,3.375 2.60823,1.87315 5.02692,3.01521 7.3125,4.0625 2.46931,1.13147 5.75213,2.15475 9.53125,3.9375 -1.20728,-1.2584 -7.20154,-3.3957 -9.09375,-4.21875 -1.89217,-0.82304 -4.09666,-1.9305 -6.90625,-3.78125 -2.80958,-1.85075 -3.59295,-2.43932 -5.96875,-3.65625 -2.37578,-1.21691 -4.11321,-1.93885 -6.5625,-2.46875 z"
5374 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7301-5);enable-background:new" />
5375 <path
5376 inkscape:connector-curvature="0"
5377 id="path8187-7"
5378 d="m 926.09375,-257.375 c 1.90772,0.59745 4.55348,1.66384 6.125,2.6875 1.5715,1.02365 2.87022,1.43971 5.5,3.28125 2.60291,1.82273 5.02887,2.9722 7.3125,4 2.4672,1.11041 5.75535,2.09323 9.53125,3.84375 -1.20623,-1.2481 -7.1719,-3.31809 -9.0625,-4.125 -1.89058,-0.8069 -4.10242,-1.89104 -6.90625,-3.6875 -2.80385,-1.79644 -3.62704,-2.40251 -6,-3.59375 -2.37297,-1.19124 -4.05362,-1.90283 -6.5,-2.40625 z"
5379 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7305-4);enable-background:new" />
5380 <path
5381 inkscape:connector-curvature="0"
5382 id="path8189-3"
5383 d="m 894.90625,-253.5625 c 1.90213,0.55355 4.58701,1.58887 6.15625,2.59375 1.56923,1.00487 2.87401,1.40864 5.5,3.21875 2.59912,1.79164 5.00034,2.87189 7.28125,3.875 2.46428,1.08374 5.75984,2.04029 9.53125,3.75 -1.2048,-1.23507 -7.17416,-3.24478 -9.0625,-4.03125 -1.88832,-0.78647 -4.0752,-1.8308 -6.875,-3.59375 -2.79977,-1.76294 -3.59919,-2.36836 -5.96875,-3.53125 -2.36957,-1.16288 -4.12325,-1.83412 -6.5625,-2.28125 z"
5384 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7309-9);enable-background:new" />
5385 <path
5386 inkscape:connector-curvature="0"
5387 id="path8191-2"
5388 d="m 863.71875,-248.65625 c 1.88062,0.42909 4.50427,1.38038 6.0625,2.3125 1.55823,0.93211 2.85233,1.25776 5.46875,3 2.58971,1.72444 4.98067,2.70802 7.25,3.625 2.45176,0.99069 5.73959,1.87707 9.5,3.5 -1.20131,-1.20734 -7.15249,-3.06609 -9.03125,-3.78125 -1.87875,-0.71517 -4.0854,-1.68442 -6.875,-3.375 -2.78963,-1.69057 -3.58461,-2.22822 -5.9375,-3.28125 -2.35292,-1.05301 -4.02584,-1.71248 -6.4375,-2 z"
5389 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7313-2);enable-background:new" />
5390 <path
5391 inkscape:connector-curvature="0"
5392 id="path8193-6"
5393 d="m 833.15625,-241.375 c 1.84836,0.29644 4.46945,0.97632 6,1.78125 1.53058,0.80493 2.81374,1.05573 5.375,2.53125 2.53504,1.46046 4.89068,2.32509 7.125,3.0625 2.41399,0.79668 5.65711,1.46689 9.375,2.84375 -1.18771,-1.12873 -7.08772,-2.58975 -8.9375,-3.15625 -1.84977,-0.5665 -4.00342,-1.37392 -6.75,-2.84375 -2.74657,-1.46983 -3.50136,-1.92028 -5.8125,-2.78125 -2.31115,-0.86095 -4.00471,-1.32009 -6.375,-1.4375 z"
5394 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7317-7);enable-background:new" />
5395 <path
5396 inkscape:connector-curvature="0"
5397 id="path8195-5"
5398 d="m 802.90625,-232.3125 c 1.8222,0.21127 4.36576,0.80057 5.875,1.53125 1.50925,0.73066 2.75568,0.92998 5.28125,2.28125 2.49976,1.33746 4.83154,2.04843 7.03125,2.65625 2.37653,0.65667 5.56464,1.07288 9.21875,2.1875 -1.16735,-1.04496 -6.92888,-2.10329 -8.75,-2.5625 -1.82111,-0.45921 -3.95225,-1.12696 -6.65625,-2.4375 -2.70403,-1.31052 -3.47106,-1.7199 -5.75,-2.46875 -2.27895,-0.74883 -3.91325,-1.17931 -6.25,-1.1875 z"
5399 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7321-5);enable-background:new" />
5400 <path
5401 inkscape:connector-curvature="0"
5402 id="path8197-2"
5403 d="m 773.1875,-222.1875 c 1.81109,0.1787 4.32059,0.66506 5.8125,1.34375 1.49194,0.67869 2.7534,0.79822 5.25,2.0625 2.47107,1.25138 4.79005,1.89614 6.96875,2.4375 2.35387,0.58488 5.49134,0.89752 9.09375,1.84375 -1.15084,-0.99116 -6.85251,-1.7833 -8.65625,-2.1875 -1.80372,-0.4042 -3.91553,-1.02116 -6.59375,-2.25 -2.67818,-1.22884 -3.40345,-1.61089 -5.65625,-2.28125 -2.25279,-0.67034 -3.89627,-1.00232 -6.21875,-0.96875 z"
5404 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7329-8);enable-background:new" />
5405 <path
5406 inkscape:connector-curvature="0"
5407 id="path8199-6"
5408 d="m 743.5625,-211.1875 c 1.79281,0.12911 4.27313,0.54965 5.75,1.1875 1.4769,0.63785 2.7161,0.74156 5.1875,1.9375 2.44618,1.18372 4.72054,1.74666 6.875,2.21875 2.32767,0.51003 5.4196,0.68064 9,1.5625 -1.14379,-0.9706 -6.74759,-1.59065 -8.53125,-1.9375 -1.78367,-0.34684 -3.88285,-0.88756 -6.53125,-2.03125 -2.64841,-1.14368 -3.39495,-1.51631 -5.625,-2.125 -2.23008,-0.60868 -3.82594,-0.90966 -6.125,-0.8125 z"
5409 style="display:inline;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter7325-2);enable-background:new" />
5410 </g>
5411 </g>
5412 <path
5413 inkscape:connector-curvature="0"
5414 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
5415 d="m 863.87812,475.6679 c 1.64212,-3.218 3.51781,-5.73529 4.86136,-9.84898 0.79872,-3.65789 3.31204,-2.03073 7.26047,-8.3969 1.40193,-2.2395 5.47653,0.39136 8.9651,-2.39911 1.27072,-0.80319 2.88488,-0.40431 4.48256,-0.0631 3.76539,1.31896 5.82576,3.70355 8.33376,5.80837 6.13906,5.97023 20.53414,7.94327 23.48604,6.31346 1.43405,-2.90474 7.88128,-5.40888 12.37437,-11.11168 0.74811,-1.12267 11.72936,-8.74446 14.64721,-6.56599"
5416 id="path8201-5"
5417 sodipodi:nodetypes="ccccccccc" />
5418 <path
5419 inkscape:connector-curvature="0"
5420 style="display:inline;opacity:1;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
5421 d="m 888.50059,465.25071 c 7.36341,-3.23297 13.8109,-8.9084 20.70813,-13.38452 3.31057,-1.96954 6.86983,3.21601 10.796,3.59866 2.29773,-0.21813 3.7129,1.20259 5.68211,1.6415 5.15636,1.31779 2.39793,3.86488 9.97526,6.43972 6.15561,1.7204 8.9074,-6.79847 14.89975,-7.3236 4.87739,-0.50299 8.09892,-0.31603 11.61675,-0.25254 3.92696,0.13889 4.07855,-3.4976 6.06092,-5.3033 2.98056,-2.80522 7.15561,-1.84972 10.14485,-4.7409 1.01754,-1.38468 1.95458,-3.01085 2.73459,-5.10809 0.88201,-2.00034 3.04006,0.30598 4.79823,1.26269"
5422 id="path8203-8"
5423 sodipodi:nodetypes="ccccccccccc" />
5424 <path
5425 inkscape:connector-curvature="0"
5426 style="display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter9048-9);enable-background:accumulate"
5427 d="m 403.27922,1056.3058 56.56854,-42.4264 72.12489,14.1421 -46.66904,52.3259 -53.74012,7.0711 -28.28427,-31.1127 z"
5428 id="path8994-7" />
5429 <path
5430 inkscape:connector-curvature="0"
5431 style="display:inline;opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
5432 d="m 542.27183,1060.5719 c -1.40727,18.8012 -1.1449,32.751 2.08174,49.3033 3.22666,16.5523 16.40609,45.9073 20.33441,63.1837 3.92621,17.2671 2.69413,38.3097 -12.45944,51.1483 -15.31761,12.9774 -42.05128,21.5989 -67.83231,15.7337 -25.78105,-5.8652 -69.54907,-49.2234 -88.59019,-70.2283 -19.11214,-21.0833 -63.76086,-93.8506 -77.93853,-124.2758 -14.17767,-30.4251 -12.65961,-36.7186 -8.11972,-45.52972 -9.36672,-24.5205 -12.41371,-50.06681 -33.71245,-75.57664 30.32547,3.11444 43.88028,26.95633 60.12568,47.13975 -5.52989,-48.07603 -18.05471,-64.4165 -28.37395,-90.7243 29.9943,6.08165 50.57936,31.87239 63.97979,72.7125 9.55415,-3.91791 18.23776,-9.37294 30.18741,-9.0612 -11.2975,-41.6958 -17.94946,-69.91584 -36.68725,-101.06994 53.44196,5.67033 83.65702,80.63932 78.97142,87.9608 9.97797,-2.24399 19.00565,-6.53038 30.43653,-5.65167 -11.24897,-38.34702 -21.04781,-76.8679 -3.65971,-118.64819 0,0 48.28678,65.43688 54.38966,85.80578 6.10287,20.3689 1.51881,38.70051 1.51881,38.70051 0,0 16.95957,31.0853 20.29392,51.09414 3.3731,20.24138 -3.53269,59.10328 -4.94582,77.98328 z"
5433 id="path4189-9"
5434 sodipodi:nodetypes="czzzzzzcccccccccczczz" />
5435 <path
5436 inkscape:connector-curvature="0"
5437 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter3587-1);enable-background:accumulate"
5438 d="m 719.5,738.69519 18.31177,15.43196 44.41103,-15.38821 23.2772,-25.54375 11.46397,19.22065 30.67161,12.78354 25.09737,5.72837 L 892,723.19519 908.02309,747.02126 947,752.19519 l 10.24541,-6.19852 6.75471,8.6982 25.49988,11.00032 2,-40.5 L 955.94866,710.6576 923.45591,689.1305 883.0038,677.66492 861.69668,662.13148 840,685.19519 755.02878,638.61208 722,676.69519 l -2.5,62 z"
5439 id="path4191-6"
5440 sodipodi:nodetypes="cccccccccccccccccccccc"
5441 clip-path="url(#clipPath3631-6)"
5442 transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,995.28646,23.53493)" />
5443 <path
5444 inkscape:connector-curvature="0"
5445 style="display:inline;opacity:0.58775509;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3898-1);enable-background:new"
5446 d="m 584,696.5 -6.5625,17.15625 c 0,0 -7.81152,20.36488 -15.6875,43.65625 -3.93799,11.64568 -7.88302,24.04145 -10.9375,35.125 -3.05448,11.08355 -5.33586,20.37986 -5.5,28.28125 -0.39807,19.16196 5.74653,34.8883 8.9375,41.75 -0.77153,3.55523 -1.99137,9.45432 -3.34375,18.09375 -1.92042,12.26821 -3.71827,27.15441 -2.375,39.875 1.38209,13.08835 6.81222,28.18765 12.59375,43.03125 5.78153,14.8436 12.05435,29.22711 15.21875,38.03125 6.63206,18.4519 9.99296,31.5763 11.3125,48.5 0.58135,7.4561 -0.24227,20.336 -1.25,33.375 -1.00773,13.039 -2.18661,26.3014 -1.6875,36.9688 0.98911,21.1398 9.32798,46.8347 33.375,57.9374 22.77483,10.5154 55.32682,11.7022 83.4375,-3.4374 16.15992,-8.7034 30.07634,-27.0976 43.375,-46.9063 13.29866,-19.8087 24.96917,-41.0534 31.9375,-54.9063 15.35292,-30.5212 39.39353,-115.46418 45.625,-152.7187 3.01859,-18.04653 3.92166,-29.06555 2.625,-38.03125 -0.97853,-6.76604 -3.82819,-12.1474 -6.875,-16.21875 2.04274,-27.50791 -0.73207,-51.36878 11.96875,-79.40625 L 840.75,763.375 l -23.8125,9.3125 c -17.48975,6.83753 -28.90164,19.04536 -36.59375,32.0625 -0.32251,0.54577 -0.56314,1.10776 -0.875,1.65625 0.22203,-22.51521 4.40784,-37.63759 6.59375,-58.6875 l 1.96875,-19 L 771,737.375 c -30.59449,15.55571 -45.69489,48.19321 -49.71875,90.21875 -4.24532,-0.62547 -8.8314,-1.01965 -13.8125,-0.84375 -0.29149,-39.18036 -0.39629,-67.03685 8.59375,-99.375 l 5.59375,-20.125 -19.4375,7.65625 c -30.90937,12.20394 -47.85954,41.93073 -56.625,68.375 -4.38273,13.22214 -6.74582,25.80121 -7.59375,35.9375 -0.23203,2.77373 -0.31106,5.31132 -0.3125,7.71875 -3.24187,-0.0364 -6.42052,0.13589 -10.0625,0.5 0.0416,-39.00473 -3.48424,-79.75415 -32.28125,-116.5 L 584,696.5 Z m 5.8125,43.8125 c 16.80691,30.64383 17.47451,63.96728 16.9375,99.75 l -0.21875,15.0625 12.03493,-6.53921 c 8.66205,-3.13302 19.56058,-0.22752 31.93382,-0.83579 l 14.67465,9.3566 -6.3309,-25.7941 c -0.0897,-0.22997 -0.22046,-0.41669 -0.25,-0.71875 -0.19951,-2.03986 -0.22232,-5.47307 0.125,-9.625 0.69464,-8.30386 2.78957,-19.58524 6.625,-31.15625 5.15532,-15.55294 13.48801,-31.19248 25.125,-42.53125 -4.68381,28.63798 -3.21559,60.25934 -3.01164,95.80514 l -2.76593,13.26164 15.49632,-7.59803 c 9.0294,-2.75771 17.18897,-0.34996 29.28125,1.09375 l 13.24632,9.44423 L 741.09375,840 c 1.44793,-30.97177 8.22149,-53.67808 20.71875,-68.875 -2.98688,19.77884 -5.43043,41.7848 0.3125,78.34375 l 1.06552,6.37318 -2.93815,11.51685 10.61711,-8.16818 9.18973,10.22198 -1.54828,-10.4636 L 781.9375,852 c 5.70102,-13.21149 10.17282,-26.21337 16.34375,-36.65625 0.95986,-1.62434 2.03153,-3.06436 3.0625,-4.5625 -3.68066,21.15535 -2.42716,40.20815 -4.09375,57.78125 l -4.68014,7.80698 7.39889,0.22427 c 3.22005,3.48361 3.8675,3.85068 4.5625,8.65625 0.695,4.80557 0.31862,14.40035 -2.5625,31.625 -5.56799,33.28792 -31.84562,77.83981 -43.7404,101.4864 -6.60491,13.1304 -18.52833,57.4859 -31.12335,76.2465 -12.59502,18.7605 -28.53137,39.7673 -37.17204,44.4209 -21.49052,11.5742 -44.55594,25.5059 -60.61889,18.0895 -14.37486,-6.637 -23.03969,-21.1927 -23.81407,-37.7433 -0.38311,-8.188 0.61279,-21.3092 1.625,-34.4062 1.01221,-13.0971 11.28891,-22.5708 15.42339,-36.5626 5.37229,-18.1808 -1.44687,-36.5944 -12.5,-53.93745 -6.48655,-10.17778 -23.9768,-24.2579 -29.54839,-38.5625 -5.57159,-14.3046 -10.36751,-29.00315 -11.28125,-37.65625 -0.92621,-8.77113 0.4225,-23.02502 2.21875,-34.5 1.79625,-11.47497 3.84375,-20.28125 3.84375,-20.28125 l 9.42278,-3.6152 -10.48528,-3.8848 c 0,0 -8.49889,-15.3101 -8.09375,-34.8125 0.0711,-3.42316 1.83626,-12.72805 4.71875,-23.1875 2.88249,-10.45945 6.76466,-22.55271 10.625,-33.96875 3.04439,-9.00308 5.78063,-16.60345 8.34375,-23.6875 z"
5447 id="path4193-0"
5448 clip-path="url(#clipPath3677-0)"
5449 sodipodi:nodetypes="ccssscsssssssssssssccccscccccccccsscccccccccccssscccccccccccccccsccccssssssssssssscccsssc"
5450 transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,822.28931,10.93589)" />
5451 <g
5452 style="display:inline;enable-background:new"
5453 id="g3617-4"
5454 clip-path="url(#clipPath3622-5)"
5455 transform="translate(276,136)">
5456 <path
5457 inkscape:connector-curvature="0"
5458 transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,-52.200498,74.09707)"
5459 id="path4195-1"
5460 d="m -15.66751,843.48852 -49.49748,-15.55635 -26.87005,52.3259 41.01219,45.25484 49.49747,-38.18377 -14.14213,-43.84062 z"
5461 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter9024-1);enable-background:accumulate" />
5462 <path
5463 inkscape:connector-curvature="0"
5464 sodipodi:nodetypes="ccccccccccccc"
5465 transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,-46.92842,75.511284)"
5466 id="path4197-0"
5467 d="m 118.70648,859.93048 -55.154328,-46.66904 -43.84062,36.76955 33.94113,53.74011 -13.596814,85.46203 -39.44536579,28.29217 -41.01220021,11.3137 -2.82842,46.669 56.56854,25.4559 18.943987,-69.65 23.45655,-58.85663 46.347541,-72.61491 16.62,-39.91188 z"
5468 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter9020-8);enable-background:accumulate" />
5469 </g>
5470 <path
5471 inkscape:connector-curvature="0"
5472 style="display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter9044-0);enable-background:accumulate"
5473 d="m -70.82184,932.58397 60.81118,-26.87005 100.40916,31.1127 -63.63961,31.11269 -82.02438,-16.97056 -15.55635,-18.38478 z"
5474 id="path4199-4"
5475 transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,229.07158,211.51128)" />
5476 <path
5477 inkscape:connector-curvature="0"
5478 style="display:inline;opacity:0.58775509;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4105-2);enable-background:new"
5479 d="m 583.0625,715.75 c -12.10609,34.44974 -26.7145,68.53333 -31.75,104.84375 -0.83208,14.92867 4.58915,29.15943 8.84375,43.0625 -5.91624,27.20126 -10.13681,56.89995 1.15625,83.125 13.51717,38.16085 35.00147,75.68215 32.42279,117.46825 -0.9483,29.2942 -9.01444,60.9941 5.38971,88.2817 10.19864,19.3348 33.13956,27.3117 53.96785,27.6676 27.86219,1.1741 56.46261,-11.6216 72.0009,-35.2613 22.59549,-29.3717 41.80051,-61.4973 55.23865,-96.0598 16.89053,-45.506 29.6718,-92.56072 37.93402,-140.3989 1.8244,-12.94106 3.10108,-27.46985 -4.57892,-38.82255 -3.43115,-7.33632 0.0421,-15.56014 -0.68457,-23.30977 0.674,-24.99466 4.01232,-50.66376 16.65332,-72.59648 -17.73313,6.4446 -35.07268,16.55971 -44.00307,33.86425 -3.93508,6.70955 -7.60482,13.57413 -11.37193,20.38575 -3.54999,-30.01408 3.71963,-59.64828 6.78125,-89.28125 -20.16604,9.05463 -36.87672,25.65522 -44.17495,46.682 -6.30463,15.58003 -8.80222,32.31718 -10.26255,49.03675 -8.25334,-1.51925 -16.68447,-2.10155 -25.0625,-1.5 -0.96308,-38.69787 -0.46696,-79.40715 10.96875,-115.90625 -18.68113,6.21776 -35.16621,18.73551 -45.62803,35.38723 -13.85254,20.87979 -21.2614,45.75395 -23.05947,70.61277 0.58534,4.32454 -0.0613,11.84009 -6.34375,9.875 -5.33118,0.0176 -10.62908,0.67883 -15.9375,1.09375 1.14784,-39.38148 -3.34144,-81.6282 -27.0625,-114.21875 -3.06071,-3.63717 -5.63685,-7.68438 -8.625,-11.34375 -0.9375,2.4375 -1.875,4.875 -2.8125,7.3125 z m 7.75,13.84375 c 18.56527,29.29629 22.4825,64.82012 22.125,98.875 0.20409,5.17526 -0.51656,11.8292 0.125,16.0625 12.31856,-6.10275 26.73912,-2.4399 39.78125,-2.1875 2.31712,1.22325 3.1921,1.65243 1.90625,-1.40625 -4.16455,-13.95285 -1.84828,-28.613 1.80504,-42.40764 6.36687,-26.29064 20.62828,-51.08798 42.81996,-67.02986 -8.61709,37.23706 -5.71658,76.56161 -6.09375,113.96875 12.25344,-6.9099 27.27879,-3.44613 40.03125,-0.25 3.39222,3.5348 2.28935,-0.72948 2.1875,-3.8125 -0.48309,-21.37058 4.13133,-43.06963 13.6875,-62.15625 5.96266,-10.68727 14.24338,-19.80379 22.4375,-28.875 -7.87156,33.8381 -9.2029,69.33593 -2.71875,103.5 1.72485,-1.41118 4.60681,-0.45414 5.65625,-0.375 9.68369,-21.23682 16.35112,-45.38062 34.89016,-60.74185 1.87329,-0.37122 -1.44818,8.52495 -1.48391,11.8981 -3.53488,21.84581 -7.17516,44.14234 -8.78421,66.21911 -8.78379,2.34171 2.84835,2.32354 3.46875,4.0625 7.92311,10.5658 4.66299,24.40472 3.63165,36.35334 -7.06405,45.03355 -22.14231,87.36194 -35.95355,130.6798 -12.07476,32.9493 -27.3742,58.8525 -47.88808,87.2015 -10.95257,13.5514 -23.24472,27.8513 -40.84375,32.5 -20.15601,6.2413 -44.20676,10.8769 -62.59956,0.046 -17.28966,-12.3414 -21.02393,-35.7089 -19.26226,-55.6864 0.0488,-15.8262 4.93886,-28.5121 4.4106,-43.4918 -0.53824,-15.2629 -2.29135,-30.5647 -6.54261,-46.8663 -4.25126,-16.30162 -9.04325,-24.91794 -16.11906,-41.57338 -7.24111,-17.04456 -15.07015,-36.74863 -18.20542,-56.28842 -1.74948,-18.62714 2.89171,-37.12262 5.78125,-55.25 3.29623,-2.83696 -1.59799,-5.19659 -2.3125,-8.1875 -7.60113,-17.01508 -8.40747,-36.7749 -2.74234,-54.55998 7.1302,-25.0723 15.76087,-49.63241 24.67984,-74.12752 0.70833,1.30208 1.41667,2.60417 2.125,3.90625 z"
5480 id="path4201-8"
5481 sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccczzzcccccc"
5482 clip-path="url(#clipPath4177-4)"
5483 transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,822.28931,10.93589)" />
5484 <path
5485 inkscape:connector-curvature="0"
5486 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter4130-8);enable-background:accumulate"
5487 d="m 735.05635,733.03834 2.75542,21.08881 44.41103,-15.38821 4.85063,-22.38975 -3.93617,-22.05222 -22.45163,-36.59301 -8.28004,30.30494 -17.34924,45.02944 z"
5488 id="path4203-7"
5489 sodipodi:nodetypes="cccccccc"
5490 clip-path="url(#clipPath3631-6)"
5491 transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,995.28646,23.53493)" />
5492 <path
5493 inkscape:connector-curvature="0"
5494 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter4141-2);enable-background:accumulate"
5495 d="m 831.81321,730.29452 15.82237,14.90486 20.85473,2.89994 -1.59029,-39.92598 8.32561,-30.50842 -7.16499,-6.34106 -21.69669,20.9424 -14.55074,38.02826 z"
5496 id="path4205-0"
5497 sodipodi:nodetypes="cccccccc"
5498 clip-path="url(#clipPath3631-6)"
5499 transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,995.28646,23.53493)" />
5500 <g
5501 id="g8317-8"
5502 style="display:inline;filter:url(#filter8333-2);enable-background:new"
5503 clip-path="url(#clipPath8338-4)"
5504 transform="translate(276,136)">
5505 <path
5506 inkscape:connector-curvature="0"
5507 transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,719.28646,-112.46507)"
5508 clip-path="none"
5509 sodipodi:nodetypes="ccccc"
5510 id="path4209-6"
5511 d="m 964.00012,754.69487 18.42881,7.46479 9.07107,-36.96447 -14.87031,4.83886 -12.62957,24.66082 z"
5512 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
5513 <rect
5514 y="757.19519"
5515 x="-55"
5516 height="177"
5517 width="182"
5518 id="rect8315-2"
5519 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
5520 </g>
5521 <g
5522 id="g8346-4"
5523 style="display:inline;filter:url(#filter8354-2);enable-background:new"
5524 clip-path="url(#clipPath8359-0)"
5525 transform="translate(276,136)">
5526 <path
5527 inkscape:connector-curvature="0"
5528 transform="matrix(-0.9045327,0.2506626,0.2506626,0.9045327,719.28646,-112.46507)"
5529 clip-path="none"
5530 sodipodi:nodetypes="ccccccc"
5531 id="path4207-7"
5532 d="m 910.14441,746.31415 32.61295,5.17393 -0.36119,-23.87619 7.18853,-29.68221 -8.45112,-5.26365 -21.82194,26.51077 -9.16723,27.13735 z"
5533 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
5534 <rect
5535 y="696.19519"
5536 x="-22"
5537 height="176"
5538 width="165"
5539 id="rect8344-9"
5540 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
5541 </g>
5542 <path
5543 inkscape:connector-curvature="0"
5544 style="display:inline;opacity:1;fill:#ada469;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new"
5545 d="m 1036.164,1071.8338 c 6.7941,18.9028 10.4937,33.2997 11.8903,51.2119 1.3966,17.9123 -3.7827,51.8008 -2.9005,70.6561 0.8818,18.8452 8.1337,40.099 27.3446,48.9689 19.4189,8.9658 49.3193,10.2113 74.1199,-3.1456 24.8006,-13.357 57.401,-70.3255 70.9742,-97.3087 13.6239,-27.0839 38.7611,-114.4974 44.6608,-149.76859 5.8998,-35.27121 2.5506,-41.30077 -4.6174,-49.05549 2.6403,-27.84015 -1.4998,-54.93543 13.1096,-87.18618 -30.249,11.8257 -37.3823,40.1607 -48.3189,65.50508 -8.0009,-50.93293 0.2092,-71.27319 3.3189,-101.21936 -29.0647,14.77791 -42.8615,47.11402 -45,92.85714 -10.9239,-1.3042 -21.3914,-4.43423 -33.5714,-0.71429 -0.264,-46.02334 -1.4635,-76.88941 8.9106,-114.20649 -53.2554,21.02686 -62.9472,106.5941 -56.0535,112.77792 -10.8828,0.535 -21.371,-1.2973 -32.8571,2.85715 0.6389,-42.57135 -0.2605,-84.90861 -30,-122.85715 0,0 -30.958,80.92234 -31.4286,103.57143 -0.4705,22.64909 9.4516,40.16588 9.4516,40.16588 0,0 -8.568,36.74051 -6.2986,58.23223 2.2959,21.74142 20.4429,59.67622 27.2655,78.65812 z"
5546 id="path8848-3"
5547 sodipodi:nodetypes="czzzzzzcccccccccczczz" />
5548 <path
5549 inkscape:connector-curvature="0"
5550 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter3587-1);enable-background:accumulate"
5551 d="m 719.5,738.69519 18.31177,15.43196 44.41103,-15.38821 23.2772,-25.54375 11.46397,19.22065 30.67161,12.78354 25.09737,5.72837 L 892,723.19519 908.02309,747.02126 947,752.19519 l 10.24541,-6.19852 6.75471,8.6982 25.49988,11.00032 2,-40.5 L 955.94866,710.6576 923.45591,689.1305 883.0038,677.66492 861.69668,662.13148 840,685.19519 755.02878,638.61208 722,676.69519 l -2.5,62 z"
5552 id="path3635-9"
5553 sodipodi:nodetypes="cccccccccccccccccccccc"
5554 clip-path="url(#clipPath3631-6)"
5555 transform="translate(276,136)" />
5556 <path
5557 inkscape:connector-curvature="0"
5558 transform="translate(450.03125,73.843964)"
5559 style="display:inline;opacity:0.58775509;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter3898-1);enable-background:new"
5560 d="m 584,696.5 -6.5625,17.15625 c 0,0 -7.81152,20.36488 -15.6875,43.65625 -3.93799,11.64568 -7.88302,24.04145 -10.9375,35.125 -3.05448,11.08355 -5.33586,20.37986 -5.5,28.28125 -0.39807,19.16196 5.74653,34.8883 8.9375,41.75 -0.77153,3.55523 -1.99137,9.45432 -3.34375,18.09375 -1.92042,12.26821 -3.71827,27.15441 -2.375,39.875 1.38209,13.08835 6.81222,28.18765 12.59375,43.03125 5.78153,14.8436 12.05435,29.22711 15.21875,38.03125 6.63206,18.4519 9.99296,31.5763 11.3125,48.5 0.58135,7.4561 -0.24227,20.336 -1.25,33.375 -1.00773,13.039 -2.18661,26.3014 -1.6875,36.9688 0.98911,21.1398 9.32798,46.8347 33.375,57.9374 22.77483,10.5154 55.32682,11.7022 83.4375,-3.4374 16.15992,-8.7034 30.07634,-27.0976 43.375,-46.9063 13.29866,-19.8087 24.96917,-41.0534 31.9375,-54.9063 15.35292,-30.5212 39.39353,-115.46418 45.625,-152.7187 3.01859,-18.04653 3.92166,-29.06555 2.625,-38.03125 -0.97853,-6.76604 -3.82819,-12.1474 -6.875,-16.21875 2.04274,-27.50791 -0.73207,-51.36878 11.96875,-79.40625 L 840.75,763.375 l -23.8125,9.3125 c -17.48975,6.83753 -28.90164,19.04536 -36.59375,32.0625 -0.32251,0.54577 -0.56314,1.10776 -0.875,1.65625 0.22203,-22.51521 4.40784,-37.63759 6.59375,-58.6875 l 1.96875,-19 L 771,737.375 c -30.59449,15.55571 -45.69489,48.19321 -49.71875,90.21875 -4.24532,-0.62547 -8.8314,-1.01965 -13.8125,-0.84375 -0.29149,-39.18036 -0.39629,-67.03685 8.59375,-99.375 l 5.59375,-20.125 -19.4375,7.65625 c -30.90937,12.20394 -47.85954,41.93073 -56.625,68.375 -4.38273,13.22214 -6.74582,25.80121 -7.59375,35.9375 -0.23203,2.77373 -0.31106,5.31132 -0.3125,7.71875 -3.24187,-0.0364 -6.42052,0.13589 -10.0625,0.5 0.0416,-39.00473 -3.48424,-79.75415 -32.28125,-116.5 L 584,696.5 Z m 5.8125,43.8125 c 16.80691,30.64383 17.47451,63.96728 16.9375,99.75 l -0.21875,15.0625 12.03493,-6.53921 c 8.66205,-3.13302 19.56058,-0.22752 31.93382,-0.83579 l 14.67465,9.3566 -6.3309,-25.7941 c -0.0897,-0.22997 -0.22046,-0.41669 -0.25,-0.71875 -0.19951,-2.03986 -0.22232,-5.47307 0.125,-9.625 0.69464,-8.30386 2.78957,-19.58524 6.625,-31.15625 5.15532,-15.55294 13.48801,-31.19248 25.125,-42.53125 -4.68381,28.63798 -3.21559,60.25934 -3.01164,95.80514 l -2.76593,13.26164 15.49632,-7.59803 c 9.0294,-2.75771 17.18897,-0.34996 29.28125,1.09375 l 13.24632,9.44423 L 741.09375,840 c 1.44793,-30.97177 8.22149,-53.67808 20.71875,-68.875 -2.98688,19.77884 -5.43043,41.7848 0.3125,78.34375 l 1.06552,6.37318 -2.93815,11.51685 10.61711,-8.16818 9.18973,10.22198 -1.54828,-10.4636 L 781.9375,852 c 5.70102,-13.21149 10.17282,-26.21337 16.34375,-36.65625 0.95986,-1.62434 2.03153,-3.06436 3.0625,-4.5625 -3.68066,21.15535 -2.42716,40.20815 -4.09375,57.78125 l -4.68014,7.80698 7.39889,0.22427 c 3.22005,3.48361 3.8675,3.85068 4.5625,8.65625 0.695,4.80557 0.31862,14.40035 -2.5625,31.625 -5.56799,33.28792 -31.79272,123.1659 -43.6875,146.8125 -6.60491,13.1304 -18.02998,33.8957 -30.625,52.6563 -12.59502,18.7605 -27.35933,35.5338 -36,40.1874 -21.49052,11.5742 -48.7808,10.2602 -64.84375,2.8438 -14.37486,-6.637 -20.53812,-23.4494 -21.3125,-40 -0.38311,-8.188 0.61279,-21.3092 1.625,-34.4062 1.01221,-13.0971 11.28891,-22.5708 15.42339,-36.5626 5.37229,-18.1808 -1.44687,-36.5944 -12.5,-53.93745 -6.48655,-10.17778 -23.9768,-24.2579 -29.54839,-38.5625 -5.57159,-14.3046 -10.36751,-29.00315 -11.28125,-37.65625 -0.92621,-8.77113 0.4225,-23.02502 2.21875,-34.5 1.79625,-11.47497 3.84375,-20.28125 3.84375,-20.28125 l 9.42278,-3.6152 -10.48528,-3.8848 c 0,0 -8.49889,-15.3101 -8.09375,-34.8125 0.0711,-3.42316 1.83626,-12.72805 4.71875,-23.1875 2.88249,-10.45945 6.76466,-22.55271 10.625,-33.96875 3.04439,-9.00308 5.78063,-16.60345 8.34375,-23.6875 z"
5561 id="path3669-2"
5562 clip-path="url(#clipPath3677-0)"
5563 sodipodi:nodetypes="ccssscsssssssssssssccccscccccccccsscccccccccccssscccccccccccccccsccccssssssssssssscccsssc" />
5564 <g
5565 id="g3628-8"
5566 clip-path="url(#clipPath3636-90)"
5567 transform="translate(276,136)">
5568 <path
5569 inkscape:connector-curvature="0"
5570 id="path8988-3"
5571 d="m 824.48651,818.48242 -49.49748,-15.55635 -26.87005,52.3259 41.01219,45.25484 49.49747,-38.18377 -14.14213,-43.84062 z"
5572 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter9024-1);enable-background:accumulate" />
5573 <path
5574 inkscape:connector-curvature="0"
5575 id="path8990-0"
5576 d="m 964.49365,855.25197 -55.15433,-46.66904 -43.84062,36.76955 33.94113,53.74011 7.07106,66.46804 -50.91168,35.35537 -41.0122,11.3137 -2.82842,46.669 56.56854,25.4559 63.63961,-76.3676 24.04163,-94.75227 8.48528,-57.98276 z"
5577 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter9020-8);enable-background:accumulate" />
5578 </g>
5579 <path
5580 inkscape:connector-curvature="0"
5581 style="display:inline;overflow:visible;visibility:visible;opacity:0.25;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter9044-0);enable-background:accumulate"
5582 d="m 1045.3322,1043.5779 60.8112,-26.8701 100.4091,31.1127 -63.6396,31.1127 -82.0244,-16.9706 -15.5563,-18.3847 z"
5583 id="path8992-1" />
5584 <path
5585 inkscape:connector-curvature="0"
5586 transform="translate(450.03125,73.843964)"
5587 style="display:inline;opacity:0.58775509;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:20.79999924;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4185-1);enable-background:new"
5588 d="m 583.0625,715.75 c -12.10609,34.44974 -26.7145,68.53333 -31.75,104.84375 -0.83208,14.92867 4.58915,29.15943 8.84375,43.0625 -5.91624,27.20126 -10.13681,56.89995 1.15625,83.125 13.51717,38.16085 35.00147,75.68215 32.42279,117.46825 -0.9483,29.2942 -9.01444,60.9941 5.38971,88.2817 10.19864,19.3348 33.13956,27.3117 53.96785,27.6676 27.86219,1.1741 56.46261,-11.6216 72.0009,-35.2613 22.59549,-29.3717 41.80051,-61.4973 55.23865,-96.0598 16.89053,-45.506 29.6718,-92.56072 37.93402,-140.3989 1.8244,-12.94106 3.10108,-27.46985 -4.57892,-38.82255 -3.43115,-7.33632 0.0421,-15.56014 -0.68457,-23.30977 0.674,-24.99466 4.01232,-50.66376 16.65332,-72.59648 -17.73313,6.4446 -35.07268,16.55971 -44.00307,33.86425 -3.93508,6.70955 -7.60482,13.57413 -11.37193,20.38575 -3.54999,-30.01408 3.71963,-59.64828 6.78125,-89.28125 -20.16604,9.05463 -36.87672,25.65522 -44.17495,46.682 -6.30463,15.58003 -8.80222,32.31718 -10.26255,49.03675 -8.25334,-1.51925 -16.68447,-2.10155 -25.0625,-1.5 -0.96308,-38.69787 -0.46696,-79.40715 10.96875,-115.90625 -18.68113,6.21776 -35.16621,18.73551 -45.62803,35.38723 -13.85254,20.87979 -21.2614,45.75395 -23.05947,70.61277 0.58534,4.32454 -0.0613,11.84009 -6.34375,9.875 -5.33118,0.0176 -10.62908,0.67883 -15.9375,1.09375 1.14784,-39.38148 -3.34144,-81.6282 -27.0625,-114.21875 -3.06071,-3.63717 -5.63685,-7.68438 -8.625,-11.34375 -0.9375,2.4375 -1.875,4.875 -2.8125,7.3125 z m 7.75,13.84375 c 18.56527,29.29629 22.4825,64.82012 22.125,98.875 0.20409,5.17526 -0.51656,11.8292 0.125,16.0625 12.31856,-6.10275 26.73912,-2.4399 39.78125,-2.1875 2.31712,1.22325 3.1921,1.65243 1.90625,-1.40625 -4.16455,-13.95285 -1.84828,-28.613 1.80504,-42.40764 6.36687,-26.29064 20.62828,-51.08798 42.81996,-67.02986 -8.61709,37.23706 -5.71658,76.56161 -6.09375,113.96875 12.25344,-6.9099 27.27879,-3.44613 40.03125,-0.25 3.39222,3.5348 2.28935,-0.72948 2.1875,-3.8125 -0.48309,-21.37058 4.13133,-43.06963 13.6875,-62.15625 5.96266,-10.68727 14.24338,-19.80379 22.4375,-28.875 -7.87156,33.8381 -9.2029,69.33593 -2.71875,103.5 1.72485,-1.41118 4.60681,-0.45414 5.65625,-0.375 9.68369,-21.23682 16.35112,-45.38062 34.89016,-60.74185 1.87329,-0.37122 -1.44818,8.52495 -1.48391,11.8981 -3.53488,21.84581 -3.2972,44.17323 -4.90625,66.25 -1.31238,1.37679 2.84835,2.32354 3.46875,4.0625 7.92311,10.5658 3.12294,24.83149 2.0916,36.78011 -7.06405,45.03355 -21.76553,88.37934 -35.57677,131.69714 -12.07476,32.9493 -30.7197,63.08 -51.23358,91.429 -10.95257,13.5514 -23.24472,27.8513 -40.84375,32.5 -20.15601,6.2413 -43.57595,5.1744 -61.96875,-5.6562 -17.28966,-12.3414 -21.02393,-35.7089 -19.26226,-55.6864 0.0488,-15.8262 2.37211,-27.8008 7.91747,-42.8053 5.54535,-15.0045 2.47105,-31.3317 -1.78021,-47.6333 -4.25126,-16.3016 -12.17903,-26.26002 -21.82158,-42.20417 -9.64255,-15.94415 -17.6369,-36.03734 -20.77217,-55.57713 -1.74948,-18.62714 2.89171,-37.12262 5.78125,-55.25 3.29623,-2.83696 -1.59799,-5.19659 -2.3125,-8.1875 -7.60113,-17.01508 -8.40747,-36.7749 -2.74234,-54.55998 7.1302,-25.0723 15.76087,-49.63241 24.67984,-74.12752 0.70833,1.30208 1.41667,2.60417 2.125,3.90625 z"
5589 id="path4149-7"
5590 sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccczzzcccccc"
5591 clip-path="url(#clipPath4177-4)" />
5592 <path
5593 inkscape:connector-curvature="0"
5594 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter4130-8);enable-background:accumulate"
5595 d="m 735.05635,733.03834 2.75542,21.08881 44.41103,-15.38821 4.85063,-22.38975 -3.93617,-22.05222 -22.45163,-36.59301 -8.28004,30.30494 -17.34924,45.02944 z"
5596 id="path3902-8"
5597 sodipodi:nodetypes="cccccccc"
5598 clip-path="url(#clipPath3631-6)"
5599 transform="translate(276,136)" />
5600 <path
5601 inkscape:connector-curvature="0"
5602 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;filter:url(#filter4141-2);enable-background:accumulate"
5603 d="m 831.81321,730.29452 15.82237,14.90486 20.85473,2.89994 -1.59029,-39.92598 8.32561,-30.50842 -7.16499,-6.34106 -21.69669,20.9424 -14.55074,38.02826 z"
5604 id="path4135-9"
5605 sodipodi:nodetypes="cccccccc"
5606 clip-path="url(#clipPath3631-6)"
5607 transform="translate(276,136)" />
5608 <g
5609 id="g8367-1"
5610 style="filter:url(#filter8379-0)"
5611 clip-path="url(#clipPath8392-1)"
5612 transform="translate(276,136)">
5613 <path
5614 inkscape:connector-curvature="0"
5615 clip-path="none"
5616 sodipodi:nodetypes="ccccccc"
5617 id="path4145-5"
5618 d="m 910.14441,746.31415 32.61295,5.17393 -0.36119,-23.87619 7.18853,-29.68221 -8.45112,-5.26365 -21.82194,26.51077 -9.16723,27.13735 z"
5619 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
5620 <rect
5621 y="650.19098"
5622 x="877.51953"
5623 height="172.53406"
5624 width="123.03658"
5625 id="rect8365-4"
5626 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
5627 </g>
5628 <g
5629 id="g8400-9"
5630 style="filter:url(#filter8404-9)"
5631 clip-path="url(#clipPath8417-4)"
5632 transform="translate(276,136)">
5633 <path
5634 inkscape:connector-curvature="0"
5635 clip-path="none"
5636 sodipodi:nodetypes="ccccc"
5637 id="path4147-2"
5638 d="m 964.00012,754.69487 18.42881,7.46479 9.07107,-36.96447 -14.87031,4.83886 -12.62957,24.66082 z"
5639 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
5640 <rect
5641 y="677.06104"
5642 x="924.89569"
5643 height="125.1579"
5644 width="142.12846"
5645 id="rect8398-5"
5646 style="display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;enable-background:accumulate" />
5647 </g>
5648 </g>
5649 </g> 956 </g>
5650 <path 957 </g>
5651 style="fill:#f8d615;fill-opacity:1;fill-rule:evenodd;stroke:#f8d615;stroke-width:17.84425545;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Send)" 958 <path d="M3603.7 633.68c-3.826-60.621-16.906-121.51-17.254-181.22-.187-32.048 3.291-63.757 13.834-94.91 36.554-156.68 117.6-203.23 186.99-219.47 87.416-26.435 185.96 43.047 234.7 228.91 54.432 181.72 56.997 414.01 81.07 622.74 29.605 305.05 55.09 614.78 60.735 928.25-3.08 187.6-8.474 396.35-60.847 547.4-48.299 120.83-123.49 120.1-188.13 141.58-91.07 11.17-185.4-38.742-263.27-154.04-65.144-91.037-96.274-272.3-97.832-446.36-8.437-191.66 26.542-369.07 51.914-545.07 7.513-198.58 9.466-398.92 9.708-598.39-.841-77.252-7.13-153.13-11.612-229.41z" enable-background="accumulate" fill="#101414"/>
5652 d="M 544.23337,203.09259 3443.746,100.92806" 959 <path transform="matrix(1.0057 0 0 2.3995 3249.4 125.01)" d="M311.83 415.43l9.9 121.62-60.105 136.47 15.556 174.66c15.613 61.879 32.185 98.669 74.376 117.05 4.32-36.24-38.612-142.96-39.243-189.12-.631-46.184 10.83-108.61 30.678-158.3 20.048-50.192 36.897-44.846 42.125-92.593s-17.426-149.39-17.426-149.39l-55.86 39.598z" clip-path="url(#y)" enable-background="accumulate" fill="#fff" filter="url(#fu)" opacity=".25"/>
5653 id="path7167" 960 <path d="m3987.6 1371.5s16.85 88.825 28.865 129.46c12.014 40.638 53.027 134.48 53.027 134.48l52.896-306.15" enable-background="accumulate" fill="url(#ft)"/>
5654 inkscape:connector-curvature="0" 961 <path transform="matrix(1.0057 0 0 2.3995 3249.4 125.01)" d="m730.32 536.57c0 8.485 42.548 58.468 42.548 58.468l12.607-28.77-55.154-29.698z" clip-path="url(#fs)" enable-background="accumulate" fill="#fff" filter="url(#fr)" opacity=".08"/>
5655 sodipodi:nodetypes="cc" /> 962 </g>
5656 <path 963 <g transform="matrix(1.0057 0 0 2.3995 3424.4 -24.137)" clip-path="url(#fq)" enable-background="new">
5657 style="display:inline;fill:#f8d615;fill-opacity:1;fill-rule:evenodd;stroke:#f8d615;stroke-width:18;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow1Send-4);enable-background:new" 964 <g transform="translate(-174.03 62.156)" filter="url(#aq)">
5658 d="M 527.91203,584.39421 3442.4188,1000.8355" 965 <g filter="url(#g)">
5659 id="path7167-9" 966 <path d="M425.88 476.99c10.805-1.479 24.744 3.354 44.643 3.214s57.453-16.91 82.143-17.143 62.752 12.284 79.286 15 22.848-.158 27.5 7.857 1.927 10.747-10.357 20.714-40.79 12.636-66.071 12.857c-25.282.221-70.381 7.079-95.357 3.93s-56.938-7.824-68.929-17.858-19.851-16.732-17.5-23.929 13.837-3.164 24.643-4.643z" enable-background="new" fill="#fff" fill-rule="evenodd"/>
5660 inkscape:connector-curvature="0" 967 <path d="M343.65 412.6h381.84v181.02H343.65z" enable-background="accumulate" fill="none"/>
5661 sodipodi:nodetypes="cc" /> 968 </g>
5662 <text 969 <g filter="url(#g)">
5663 xml:space="preserve" 970 <path d="m861.17 390.2c-10.462 9.714-86.98 19.005-100.71 29.286s-14.753 12.888-12.143 20 6.545 9.406 25.714 8.571 98.571-27.622 98.571-21.429l-11.429-36.429z" enable-background="new" fill="#fff" fill-rule="evenodd"/>
5664 style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#f83615;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" 971 <path d="M702.86 344.82h207.89v162.63H702.86z" enable-background="accumulate" fill="none"/>
5665 x="80.219048" 972 </g>
5666 y="107.38741" 973 </g>
5667 id="text8200" 974 <g enable-background="new" opacity=".18">
5668 sodipodi:linespacing="125%"><tspan 975 <g transform="translate(-174.03 62.156)" filter="url(#g)">
5669 sodipodi:role="line" 976 <path d="M425.88 476.99c10.805-1.479 24.744 3.354 44.643 3.214s57.453-16.91 82.143-17.143 62.752 12.284 79.286 15 22.848-.158 27.5 7.857 1.927 10.747-10.357 20.714-40.79 12.636-66.071 12.857c-25.282.221-70.381 7.079-95.357 3.93s-56.938-7.824-68.929-17.858-19.851-16.732-17.5-23.929 13.837-3.164 24.643-4.643z" enable-background="new" fill="#fff" fill-rule="evenodd"/>
5670 id="tspan8202" 977 <path d="M343.65 412.6h381.84v181.02H343.65z" enable-background="accumulate" fill="none"/>
5671 x="80.219048" 978 </g>
5672 y="107.38741" 979 <g transform="translate(-174.03 62.156)" filter="url(#g)">
5673 style="font-size:50px;fill:#f83615;fill-opacity:1">CROP_DEFAULT</tspan></text> 980 <path d="m861.17 390.2c-10.462 9.714-86.98 19.005-100.71 29.286s-14.753 12.888-12.143 20 6.545 9.406 25.714 8.571 98.571-27.622 98.571-21.429l-11.429-36.429z" enable-background="new" fill="#fff" fill-rule="evenodd"/>
5674 <text 981 <path d="M702.86 344.82h207.89v162.63H702.86z" enable-background="accumulate" fill="none"/>
5675 xml:space="preserve" 982 </g>
5676 style="font-style:normal;font-weight:normal;font-size:45.31394196px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#f80000;fill-opacity:0;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" 983 </g>
5677 x="3861.3669" 984 </g>
5678 y="1281.7198" 985 <g transform="matrix(1.0057 0 0 2.3995 2971.9 -201.33)" fill-rule="evenodd">
5679 id="text8200-4" 986 <path transform="translate(276 136)" d="m582.66-7.418l113.14 86.267 108.89 258.8 38.184 207.89 120.21 91.924s-12.728-287.09-19.799-313.96-149.91-393.15-149.91-393.15l-210.72 62.225z" clip-path="url(#fp)" enable-background="accumulate" filter="url(#fo)" opacity=".75"/>
5680 sodipodi:linespacing="125%" 987 <path d="m964.14 239.6s8.677 10.897 24.107 11.964c15.43 1.068 49.722-39.953 70.179-52.143 20.479-12.204 47.046-26.602 63.929-20.357 16.882 6.245 22.158 26.436 27.857 48.036 5.7 21.6 6.719 61.814-2.679 92.857-9.397 31.043-50.502 73.104-65.356 103.39s-11.607 39.821-11.607 39.821" enable-background="accumulate" fill="url(#el)"/>
5681 transform="scale(0.96105877,1.0405191)"><tspan 988 <path d="m1124.5 207.63c-15.893-0.893-49.719 12.106-66.071 24.286-16.439 12.244-29.221 24.114-29.286 52.143-0.065 28.206 13.119 39.076 29.107 46.964s33.686 7.12 51.964-11.786c18.278-18.905 14.286-111.61 14.286-111.61z" enable-background="new" fill="url(#ek)"/>
5682 sodipodi:role="line" 989 <ellipse transform="matrix(.94347 -.12399 .14401 1.0958 451.95 134.6)" cx="385" cy="237.01" rx="86.429" ry="73.929" clip-path="url(#fn)" enable-background="accumulate" fill="url(#ef)" filter="url(#fm)" opacity=".75"/>
5683 id="tspan8202-5" 990 <path transform="translate(450.03 73.844)" d="m527.61 407.45s-122.04 38.403-187.51 9.632c-65.473-28.772-74.377-124.72-74.377-124.72s73.382-80.504 129.92-83.615c55.827-3.072 90.574 20.143 114.87 65.852 24.352 45.813 17.101 132.85 17.101 132.85z" enable-background="accumulate" fill="url(#fl)" mask="url(#fk)"/>
5684 x="3861.3669" 991 <path d="m772.17 393.35s36.218-27.382 51.607-35.893c15.177-8.393 25.714-11.607 35.893-11.607l-15.536 66.964" enable-background="accumulate" fill="url(#ee)"/>
5685 y="1281.7198" 992 <circle transform="translate(449.5 74.915)" cx="409.29" cy="306.65" r="36.25" enable-background="accumulate" fill="url(#ed)"/>
5686 style="font-size:56.64243317px;fill:#f80000;fill-opacity:0">COMPOSE_PADDED</tspan></text> 993 <path transform="translate(276 136)" d="m311.83 415.43l9.9 121.62-60.105 136.47 15.556 174.66c15.613 61.879 32.185 98.669 74.376 117.05 4.32-36.24 8.682-72.368-31.243-223.12l17.678-69.296 72.125-138.59-42.426-158.39-55.86 39.598z" clip-path="url(#y)" enable-background="accumulate" fill="#fff" filter="url(#fj)" opacity=".3"/>
5687 <text 994 <path d="m635.21 581.13c-14.142 12.728 39.233 34.58 76.368 24.042s104.64-35.564 103.24-79.196c-1.407-43.632-76.368-128.69-76.368-128.69l-103.24 183.85z" enable-background="accumulate" filter="url(#fi)" opacity=".5"/>
5688 xml:space="preserve" 995 <circle transform="translate(449.67 74.915)" cx="410" cy="306.65" r="23.214" enable-background="accumulate" fill="url(#ec)"/>
5689 style="font-style:normal;font-weight:normal;font-size:45.31394196px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#f8d615;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" 996 <circle transform="translate(452 73.487)" cx="414.29" cy="303.08" r="7.5" enable-background="accumulate" fill="#fff" filter="url(#fh)" stroke="#000" stroke-linejoin="bevel"/>
5690 x="3615.1545" 997 <path d="m789.32 478.35s7.023 19.569-1.071 35-42.323 38.988-67.5 50c-25.31 11.07-85.473 32.964-101.79 41.964-16.461 9.082-18.214 12.679-18.214 12.679s-7.147-19.064 28.75-51.786c36.172-32.972 142.03-48.05 159.82-87.857z" enable-background="accumulate" fill="url(#eb)"/>
5691 y="49.156631" 998 </g>
5692 id="text8200-4-9" 999 <g enable-background="new">
5693 sodipodi:linespacing="125%" 1000 <g transform="matrix(1.0057 0 0 2.3995 3757 -22.424)" fill-rule="evenodd">
5694 transform="scale(0.96105877,1.0405191)"><tspan 1001 <path transform="translate(-329.81)" d="M179.64 267.36c-22.41 39.703-60.616 115.78-69.286 149.64-8.647 33.775-8.772 66.417-.357 86.429 8.36 19.882 26.164 35.633 40.714 41.429-.597-14.376 14.373-43.286 72.857-72.5 58.626-29.285 78.382-27.131 103.57-47.143 25.63-20.362 8.206-79.647 3.214-93.929s-1.236-3.38-1.946-5.093c-10.689-25.816-34.214-54.43-64.483-64.55s-65.018-4.848-84.286 5.714z" clip-path="url(#x)" fill="url(#m)"/>
5695 sodipodi:role="line" 1002 <ellipse transform="rotate(28.068 -88.085 -332.1)" cx="183.57" cy="338.08" rx="64.716" ry="134.01" enable-background="accumulate" fill="url(#dz)"/>
5696 id="tspan8202-5-3" 1003 <ellipse transform="rotate(28.068 -43.578 -333.81)" cx="183.57" cy="338.08" rx="64.716" ry="134.01" enable-background="accumulate" fill="url(#fg)"/>
5697 x="3615.1545" 1004 </g>
5698 y="49.156631" 1005 <path transform="matrix(1.0057 0 0 2.3995 3425.3 -22.424)" d="M179.64 267.36c-22.41 39.703-60.616 115.78-69.286 149.64-8.647 33.775-8.772 66.417-.357 86.429 8.36 19.882 26.164 35.633 40.714 41.429-.597-14.376 14.373-43.286 72.857-72.5 58.626-29.285 78.382-27.131 103.57-47.143 25.63-20.362 8.206-79.647 3.214-93.929s-1.236-3.38-1.946-5.093c-10.689-25.816-34.214-54.43-64.483-64.55s-65.018-4.848-84.286 5.714z" clip-path="url(#x)" enable-background="new" fill="none" filter="url(#hd)" stroke="url(#l)" stroke-width="20.8"/>
5699 style="font-size:50px;fill:#f8d615;fill-opacity:1">COMPOSE_ACTIVE</tspan></text> 1006 </g>
5700 <text 1007 <g transform="matrix(1.0057 0 0 2.3995 2971.9 -201.33)" fill-rule="evenodd">
5701 xml:space="preserve" 1008 <circle transform="translate(452.56 72.581)" cx="310.71" cy="398.08" r="19.704" enable-background="accumulate" stroke="#000" stroke-linejoin="bevel"/>
5702 style="font-style:normal;font-weight:normal;font-size:45.31394196px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#f83615;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" 1009 <circle transform="translate(450.56 72.581)" cx="310.71" cy="398.08" r="19.704" enable-background="accumulate" fill="url(#m)" filter="url(#hc)" stroke="url(#l)" stroke-width="20.8"/>
5703 x="2429.1526" 1010 <circle transform="translate(450.56 72.581)" cx="310.71" cy="398.08" r="19.704" enable-background="accumulate" fill="url(#dy)"/>
5704 y="-3.1657715" 1011 <ellipse transform="rotate(-4.471 1823.1 -5529.2)" cx="429.57" cy="377.43" rx="72.08" ry="44.548" enable-background="accumulate" fill="url(#dx)" filter="url(#hb)"/>
5705 id="text8200-4-5" 1012 <ellipse transform="matrix(1.4358 -.07 .07 1.4358 235.18 -63.865)" cx="437.7" cy="391.22" rx="36.612" ry="22.627" enable-background="accumulate" fill="url(#dw)" filter="url(#ha)"/>
5706 sodipodi:linespacing="125%" 1013 <g transform="translate(450.03 73.844)" enable-background="new" filter="url(#gz)">
5707 transform="scale(0.96105878,1.0405191)"><tspan 1014 <circle cx="413.66" cy="401.83" r="3.214" enable-background="accumulate" stroke="url(#dv)"/>
5708 sodipodi:role="line" 1015 <circle transform="translate(13.125 8.125)" cx="413.66" cy="401.83" r="3.214" enable-background="accumulate" stroke="url(#du)"/>
5709 id="tspan8202-5-7" 1016 <circle transform="translate(32.946 7.5)" cx="413.66" cy="401.83" r="3.214" enable-background="accumulate" stroke="url(#ej)"/>
5710 x="2429.1526" 1017 <circle transform="translate(24.911 -10.268)" cx="413.66" cy="401.83" r="3.214" enable-background="accumulate" stroke="url(#ei)"/>
5711 y="-3.1657715" 1018 <circle transform="translate(47.589 -.625)" cx="413.66" cy="401.83" r="3.214" enable-background="accumulate" stroke="url(#eh)"/>
5712 style="font-size:49.99999958px;fill:#f83615;fill-opacity:1">COMPOSE_DEFAULT</tspan></text> 1019 </g>
5713 <text 1020 </g>
5714 xml:space="preserve" 1021 <g fill="none" stroke="#000">
5715 style="font-style:normal;font-weight:normal;font-size:45.31394196px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#f815bb;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" 1022 <path transform="matrix(1.0057 0 0 2.3995 2971.9 -201.33)" d="M896.2 482.93c.985 4.35 4.537 6.18 7.387 7.892 4.46 2.513 6.52 1.522 9.154-.758 1.602-1.921 10.683-4.698 15.594-7.07 4.33-1.46 8.904-5.36 13.385-8.335 3.395-1.627 5.347.355 7.829 1.01 2.944.717 4.411 2.172 6.06 3.536 2.397 1.175-.927 3.143 3.284 4.293 1.19.218 2.417.577 3.283-.505" enable-background="new"/>
5716 x="3681.5449" 1023 <path transform="matrix(1.0057 0 0 2.3995 2971.9 -201.33)" d="M910.85 475.35c2.315-.032 3.178.643 5.493-.82 3.455-3.082 5.402-3.146 7.955-4.42 3.026-1.315 6.535 8.152 10.102 9.849 2.395-.822 1.289 1.794 1.452 2.651.057 2.647 2.807 3.679 4.356 5.43 3.316 2.256 7.375 6.296 11.112 5.303 6.445-2.93 10.28-1.281 16.29-7.386.703-1.182-.585-6.895 3.093-7.198 2.524.254 4.166.05 6.06.569 5.442 2.117 7.738 6.45 14.71 7.955 6.184.966 7.613 3.794 13.89 5.05M876.98 483.52c2.399-.794 6.106 4.192 8.173 7.046.593 2.68 1.154 5.486.758 12.122.785 2.417 2.68 3.03 4.798 3.283 3.117-.537 5.877-1.325 7.324-3.03 1.871-1.942 5.312 2.393 8.08 4.04 3.61 1.912 7.775 1.979 11.87 2.273 1.703-.231 2.37 4.515 3.283 8.08.384 4.379-.886 6.897-1.768 9.85-.294 2.496 2.988 3.53 6.313 4.546 3.183.74 6.545 1.661 9.092 1.767 5.142.875 8.088 2.69 12.122 4.04 2.239.817 3.26 2.243 4.545 3.536" enable-background="new"/>
5717 y="1289.9539" 1024 </g>
5718 id="text8200-4-9-3" 1025 <g transform="matrix(.9991 .27421 -.11493 2.3838 2962.6 1209.8)" enable-background="new" fill-rule="evenodd" mask="url(#gy)">
5719 sodipodi:linespacing="125%" 1026 <path d="M1111.48-285.971l-3.937 1.875c-.041.01-.1.02-.125.031-.42.213-.165.1-.657.312-.486.21-1.737.585-4.093 1.47-3.332 1.25-5.805 2.15-7 3.062-1.537.021-3.72.233-5.657.719a227.677 227.677 0 0 1-6.75 1.593c-1.894.42-1.675.642-2.875.875-1.296.252-1.721-.009-5.437.782-3.49.742-8.895 1.93-10.156 2.687-1.584-.18-3.868-.322-5.844-.031-3.04.447-4.916.673-6.844.906-.655.08-1.04.2-1.343.281-.427.132-.686.26-1.375.344-1.312.16-1.763-.157-5.532.281-3.554.413-9.005 1.273-10.25 1.938-1.599-.297-3.857-.534-5.843-.344-3.06.293-4.972.484-6.907.656-1.934.173-1.688.423-2.906.532-1.316.117-1.76-.164-5.531.25-3.542.388-9.008 1.209-10.281 1.875-1.6-.295-3.887-.507-5.875-.313-3.058.3-4.941.48-6.875.656-.658.06-1.04.179-1.344.25-.428.12-.683.218-1.375.282-1.316.12-1.76-.195-5.531.218-3.556.39-9.006 1.24-10.25
5720 transform="scale(0.96105877,1.0405191)"><tspan 10271.907-1.599-.295-3.86-.524-5.844-.313-3.056.325-4.974.526-6.906.719s-1.69.44-2.906.562c-1.315.132-1.763-.164-5.532.282-3.538.418-8.977 1.292-10.25 1.968-1.597-.28-3.86-.42-5.843-.187-3.052.358-4.945.568-6.875.781-.657.073-1.041.173-1.344.25-.427.127-.685.267-1.375.344-1.314.146-1.768-.174-5.531.312-3.55.46-8.979 1.42-10.22 2.125-1.592-.244-3.833-.381-5.812-.125-3.047.395-4.95.649-6.875.907-1.924.257-1.726.493-2.937.656-1.31.176-1.748-.105-5.5.469-3.525.538-8.924 1.699-10.188 2.437-1.588-.203-3.846-.255-5.813.094-3.026.536-4.899.861-6.812 1.187-.65.111-1.014.271-1.313.375-.42.165-.663.332-1.344.469-1.294.262-1.727-.006-5.437.813-3.499.771-8.846 2.382-10.062 3.218-1.563-.077-3.758.086-5.688.594-2.972.783-4.817 1.232-6.687 1.75s-1.667.767-2.844 1.094c-1.272.353-1.697.107-5.344 1.187-3.424 1.015-8.65 2.934-9.875 3.844-1.539.013-3.72.272-5.625.875-2.93.928-4.75 1.459-6.594
5721 sodipodi:role="line" 10282.063-.626.205-.991.392-1.28.53-.408.215-.654.41-1.313.626-1.255.411-1.686.189-5.281 1.437-3.39 1.178-8.595 3.214-9.782 4.157-1.524.06-3.65.395-5.53 1.062-2.898 1.028-4.7 1.676-6.532 2.313-1.832.637-1.628.848-2.781 1.25-1.247.434-1.664.2-5.22 1.562-3.338 1.28-8.486 3.483-9.687 4.469-1.507.108-3.635.499-5.5 1.219a1047.26 1047.26 0 0 1-6.437 2.469c-.617.233-.997.442-1.281.593v.031l-8 3.188-12.476 3.492 7.93 19.278c-.592 1.973 12.545-4.739 12.545-4.739.227-.144.45-.272.72-.375 1.08-.41 2.17-.215 6-1.687 3.828-1.472 5.223-2.005 5.905-2.406.68-.4 1.612-.88 2.22-1.531 1.826-.138 3.57-.494 4.937-1 2.968-1.1 4.875-1.807 6.78-2.47 1.907-.662 2.355-1.414 3.407-1.78 1.092-.38 2.195-.166 6.063-1.532 3.867-1.366 5.283-1.827 5.968-2.218.702-.4 1.701-.933 2.313-1.594 1.97-.055 3.817-.385 5.281-.875 3.002-1.005 4.926-1.622 6.844-2.25 1.538-.504 2.174-1.047 2.906-1.438.23-.134.476-.253.75-.343 1.098-.36
5722 id="tspan8202-5-3-6" 10292.181-.082 6.094-1.313 3.912-1.231 5.366-1.673 6.062-2.031.694-.357 1.63-.793 2.25-1.406 1.866-.023 3.636-.267 5.032-.688 3.03-.913 4.992-1.43 6.937-1.969 1.945-.538 2.426-1.264 3.5-1.562 1.114-.31 2.22.007 6.188-1.031 3.967-1.039 5.417-1.433 6.125-1.75.734-.33 1.813-.754 2.437-1.375 1.998.116 3.857-.02 5.344-.375 3.078-.735 5.083-1.101 7.062-1.5 1.588-.32 2.245-.79 3-1.094a3.4 3.4 0 0 1 .75-.25c1.134-.23 2.305.209 6.344-.5 4.04-.71 5.5-.927 6.219-1.188.716-.26 1.704-.567 2.344-1.093 1.924.239 3.748.224 5.187 0 3.127-.488 5.155-.701 7.156-.97 2.002-.267 2.49-.944 3.594-1.093 1.147-.154 2.276.302 6.344-.219 4.068-.52 5.56-.695 6.281-.937.737-.247 1.798-.586 2.438-1.125 2.05.335 3.973.398 5.5.218 3.142-.368 5.18-.559 7.187-.78 1.611-.179 2.265-.609 3.031-.845.241-.085.495-.155.782-.187 1.15-.128 2.301.347 6.375-.125s5.559-.61 6.28-.844c.72-.232 1.701-.473 2.345-.969 1.936.334 3.77.405
5723 x="3681.5449" 10305.219.25 3.146-.334 5.177-.518 7.187-.718 2.01-.2 2.484-.827 3.594-.938 1.15-.115 2.296.365 6.375-.062s5.589-.562 6.312-.782c.74-.223 1.796-.513 2.438-1.03 2.057.398 4.002.493 5.531.343 3.149-.308 5.176-.473 7.188-.656 1.614-.147 2.263-.56 3.03-.781.242-.081.494-.13.782-.157 1.152-.105 2.293.393 6.375 0s5.589-.53 6.312-.75c.721-.218 1.7-.447 2.344-.937 1.938.35 3.769.454 5.219.312 3.149-.308 5.176-.473 7.187-.656 2.012-.183 2.515-.838 3.625-.937 1.153-.104 2.293.384 6.375 0 4.083-.385 5.59-.501 6.313-.72.74-.222 1.796-.514 2.437-1.03 2.058.401 4.003.503 5.532.343 3.146-.328 5.177-.522 7.187-.718 1.613-.158 2.266-.632 3.031-.875.241-.088.464-.122.75-.157 1.149-.14 2.317.34 6.375-.25 4.059-.59 5.562-.777 6.282-1.03.716-.254 1.674-.559 2.312-1.095 1.92.212 3.72.152 5.156-.093 3.12-.533 5.112-.929 7.094-1.313 1.982-.384 2.474-1.04 3.563-1.281 1.128-.25 2.27.116 6.25-.875s5.43-1.42
5724 y="1289.9539" 10316.125-1.781c.722-.376 1.761-.87 2.375-1.531 1.963-.012 3.793-.292 5.218-.844 2.952-1.145 4.874-1.87 6.688-2.75 1.456-.707 2.32-1.702 2.531-2 .212-.298.1-.729.125-.75.043-.035.34-.094.5-.438.86-1.847 2.323-5.627 2.438-6.312.113-.682.168-1.353.218-1.75.03-.23-.147-.88-.125-.938.031-.082.289-.25.344-.5.266-1.198.09-2.207-.125-3.625-.214-1.417-.972-4.614-1.625-5.469-.659-.861-1.225-1.01-1.75-1z" enable-background="new" fill="#bcb786"/>
5725 style="font-size:50px;fill:#f815bb;fill-opacity:1">COMPOSE_PADDED</tspan></text> 1032 <g clip-path="url(#gx)">
5726 <text 1033 <path d="M1107.4-284.05c-.419.213-.156.094-.647.306-.486.21-1.724.574-4.08 1.459-3.33 1.25-5.83 2.153-7.026 3.066-1.536.021-3.72.233-5.656.719a227.709 227.709 0 0 1-6.75 1.593c-1.895.42-1.676.643-2.875.875-1.297.252-1.721-.009-5.438.782-3.49.742-8.894 1.93-10.156 2.687-1.583-.18-3.867-.322-5.843-.031-3.04.447-4.917.673-6.844.906-.655.08-1.041.201-1.344.282-.426.131-.686.26-1.375.343-1.311.16-1.762-.157-5.531.282-3.554.413-9.005 1.272-10.25 1.937-1.599-.297-3.858-.534-5.844-.344-3.059.294-4.972.484-6.906.657-1.934.172-1.689.422-2.906.53-1.317.118-1.76-.163-5.532.25-3.541.39-9.007 1.21-10.28 1.876-1.6-.295-3.888-.507-5.876-.313-3.058.3-4.94.48-6.875.657-.657.06-1.04.178-1.343.25-.428.118-.684.218-1.375.28-1.316.121-1.76-.194-5.532.22-3.556.39-9.005 1.239-10.25
5727 xml:space="preserve" 10341.906-1.598-.294-3.86-.524-5.843-.313-3.056.326-4.974.526-6.907.719-1.932.192-1.69.44-2.906.562-1.315.132-1.763-.164-5.53.282-3.54.418-8.979 1.292-10.25 1.969-1.599-.282-3.86-.42-5.845-.188-3.052.358-4.945.568-6.875.781-.656.073-1.04.173-1.344.25-.426.127-.684.267-1.375.344-1.313.146-1.767-.174-5.53.313-3.55.458-8.98 1.419-10.22 2.125-1.593-.245-3.834-.382-5.812-.125-3.048.394-4.95.648-6.875.906-1.925.258-1.726.493-2.938.656-1.31.176-1.747-.104-5.5.469-3.524.538-8.923 1.699-10.188 2.437-1.587-.203-3.845-.254-5.812.094-3.026.536-4.9.862-6.813 1.187-.65.111-1.013.271-1.312.375-.42.165-.664.332-1.344.47-1.295.26-1.727-.007-5.438.812-3.498.772-8.846 2.383-10.062 3.219-1.562-.078-3.757.085-5.687.593-2.972.783-4.818 1.232-6.688 1.75s-1.666.768-2.843 1.094c-1.273.353-1.697.107-5.344 1.188-3.425 1.014-8.65 2.933-9.875 3.843-1.539.013-3.72.273-5.625.875-2.931.928-4.75 1.459-6.594
5728 style="font-style:normal;font-weight:normal;font-size:50px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new;" 10352.063-.627.205-.992.392-1.281.531-.408.214-.653.409-1.313.625-1.254.412-1.686.19-5.28 1.438-3.39 1.177-8.596 3.213-9.782 4.156-1.524.06-3.65.395-5.531 1.062-2.898 1.029-4.7 1.676-6.531 2.313-1.833.637-1.628.848-2.782 1.25-1.246.434-1.663.2-5.218 1.562-3.34 1.28-8.488 3.483-9.688 4.47-1.507.107-3.636.498-5.5 1.218a1044.752 1044.752 0 0 1-6.437 2.469c-.617.233-.997.442-1.282.593v1.094c.112-.222.386-.817.907-1.094.698-.37 4.813-1.993 6.812-2.718 1.657-.602 4.154-1.329 5.969-1.313.302.003.588.051.844.094 1.842.308 7.468 1.562 7.468 1.562s-6.233-1.646-7.03-1.843c-.191-.048-.536-.07-.97-.063 1.146-.87 4.762-2.393 7.344-3.437 2.839-1.148 3.117-1.252 5.063-1.657 2.008-.417 3.156-.5 3.156-.5s-.082-.6.969-1.125c.705-.351 4.887-1.892 6.906-2.562 1.952-.648 5.057-1.359 6.875-1 1.863.367 7.531 1.812 7.531 1.812s-6.287-1.87-7.094-2.093c-.193-.054-.53-.086-.968-.094 1.158-.833 4.794-2.195 7.406-3.156
5729 x="2438.0618" 10362.87-1.056 3.167-1.162 5.125-1.532 1.853-.35 2.859-.425 3.031-.437.114-.217.377-.81.906-1.063.71-.338 4.926-1.712 6.97-2.312 1.692-.497 4.24-1.037 6.093-.906.308.021.613.097.875.156 1.881.424 7.594 2.031 7.594 2.031s-6.342-2.065-7.157-2.312c-.194-.06-.557-.104-1-.125 1.17-.798 4.863-2.057 7.5-2.938 2.898-.968 3.233-1.003 5.22-1.281 2.049-.287 3.187-.313 3.187-.313s-.073-.607 1-1.062c.72-.306 4.99-1.5 7.062-2 2.003-.483 5.199-.928 7.063-.406 1.91.535 7.719 2.5 7.719 2.5s-6.423-2.424-7.25-2.72c-.198-.07-.583-.14-1.032-.187 1.188-.728 4.916-1.774 7.594-2.5 2.944-.797 3.292-.77 5.313-.906 1.913-.128 2.947-.07 3.125-.062.117-.204.391-.78.937-.97.732-.253 5.079-1.047 7.188-1.374 1.748-.271 4.4-.485 6.312-.094.318.065.605.186.875.281 1.94.69 7.844 3.094 7.844 3.094s-6.535-2.95-7.375-3.312c-.201-.087-.575-.167-1.031-.25 1.206-.633 5.03-1.396 7.75-1.906 2.99-.562 3.3-.53 5.344-.532 2.109-.002
5730 y="1368.4291" 10373.312.125 3.312.125s-.073-.63 1.031-.937c.74-.206 5.126-.834 7.25-1.063 2.053-.22 5.319-.252 7.22.47 1.947.738 7.843 3.374 7.843 3.374s-6.563-3.179-7.406-3.562c-.202-.092-.543-.187-1-.282 1.21-.602 4.984-1.248 7.718-1.656 3.005-.448 3.326-.452 5.375-.406 1.94.043 3.007.194 3.188.219.119-.194.384-.766.937-.907.743-.188 5.155-.734 7.282-.937 1.763-.169 4.42-.234 6.343.25.32.08.604.203.875.312 1.953.784 7.907 3.47 7.907 3.47s-6.592-3.254-7.438-3.657c-.202-.096-.572-.207-1.031-.313 1.214-.574 5.044-1.122 7.781-1.5 3.009-.415 3.323-.442 5.375-.375 2.118.07 3.313.25 3.313.25s-.078-.637 1.03-.906c.745-.18 5.153-.663 7.282-.844 2.059-.174 5.343-.124 7.25.657 1.955.8 7.875 3.53 7.875 3.53s-6.56-3.308-7.406-3.718c-.202-.098-.572-.203-1.031-.312 1.215-.564 5.01-1.115 7.75-1.47 3.01-.389 3.321-.397 5.375-.312 1.944.08 3.006.254 3.187.282.12-.191.383-.746.938-.875.744-.174 5.15-.65 7.28-.813
5731 id="text8200-4-9-3-5" 10381.767-.134 4.45-.126 6.376.375.32.083.603.201.875.313 1.954.8 7.906 3.562 7.906 3.562s-6.591-3.34-7.437-3.75c-.203-.098-.572-.203-1.032-.312 1.215-.564 5.042-1.084 7.782-1.438 3.01-.39 3.352-.429 5.406-.344 2.12.088 3.312.313 3.312.313s-.078-.65 1.032-.906c.744-.173 5.15-.624 7.28-.782 2.061-.152 5.344-.096 7.25.688 1.956.804 7.876 3.5 7.876 3.5s-6.56-3.276-7.406-3.688c-.203-.098-.572-.202-1.032-.312 1.216-.562 5.012-1.128 7.75-1.5 3.01-.41 3.323-.416 5.375-.344 1.943.068 3.008.165 3.188.188.119-.195.384-.73.937-.875.742-.197 5.131-.83 7.25-1.094 1.757-.22 4.406-.333 6.313.031.317.06.606.19.875.281 1.936.661 7.844 2.938 7.844 2.938s-6.537-2.807-7.375-3.156c-.2-.084-.577-.174-1.032-.25 1.204-.651 5.02-1.372 7.72-2 2.966-.69 3.288-.756 5.312-.875 2.088-.124 3.28-.032 3.28-.032s-.086-.632 1-1.03c.73-.269 5.048-1.339 7.126-1.813 2.008-.46 5.168-1.03 7-.625 1.878.414 13.578 3.015 13.578
5732 sodipodi:linespacing="125%" 10393.015s-12.328-3.022-13.141-3.265c-.195-.058-.559-.107-1-.125 1.167-.804 3.514-1.688 6.11-2.703 1.68-.659.923-.377 2.775-1.004 1.754-.594 2.486-1.01 2.63-1.113.347-.207-.355-.122-.544-.042z" enable-background="new" filter="url(#gw)"/>
5733 transform="scale(0.96105877,1.0405191)"><tspan 1040 <path d="m1082.6-275.12c1.873 0.393 4.496 1.146 6.031 1.969s2.822 1.056 5.375 2.5c2.527 1.43 4.796 2.007 6.969 2.531 2.348 0.566 5.435 0.715 8.844 1.188-1.09-0.84-6.608-1.173-8.406-1.563-1.8-0.39-3.895-1.016-6.594-2.313-2.7-1.296-3.495-1.799-5.813-2.687-2.318-0.889-4.004-1.383-6.406-1.625z" enable-background="new" filter="url(#gv)"/>
5734 sodipodi:role="line" 1041 <path d="M1051.5-270c1.905.578 4.528 1.616 6.094 2.594 1.565.978 2.88 1.36 5.5 3.125 2.593 1.747 4.986 2.71 7.25 3.594 2.446.955 5.682 1.657 9.406 3.062-1.19-1.138-7.063-2.687-8.938-3.375-1.874-.688-4.081-1.566-6.874-3.281-2.794-1.715-3.574-2.284-5.938-3.406-2.364-1.123-4.057-1.835-6.5-2.313z" enable-background="new" filter="url(#gu)"/>
5735 id="tspan8202-5-3-6-3" 1042 <path d="m1020.2-266.84c1.912 0.638 4.581 1.755 6.156 2.813 1.575 1.057 2.896 1.508 5.531 3.406 2.61 1.878 5.029 3.03 7.313 4.062 2.468 1.116 5.764 2.174 9.531 3.844-1.203-1.222-7.203-3.314-9.094-4.125-1.89-0.81-4.064-1.894-6.874-3.75s-3.622-2.477-6-3.719c-2.379-1.242-4.111-1.975-6.563-2.531z" enable-background="new" filter="url(#gt)"/>
5736 x="2438.0618" 1043 <path d="M1110.2-266.89c.15.049.688.631.11 1.484-.81 1.195-5.705 3.325-8.563 4.125-2.845.798-6.29.978-10.562-.375-4.302-1.362-5.47-2.468-10.656-4.312 4.664 2.115 6.195 3.952 10.125 5.344 1.62.574 3.367.94 5.062 1.03-.445.327-1.53.984-3.562 1.595-2.796.84-6.65 1.534-8.25 1.625-1.515.086-3.142-.513-3.438-.625.167.103.374.377-.25 1.03-.899.945-6.147 1.924-9.125 2.25-2.964.326-6.521-.015-10.906-1.905-3.978-1.715-5.339-2.916-9.406-4.75v.156c3.643 2.095 5.284 3.883 8.875 5.562 1.73.81 3.592 1.41 5.406 1.72-.534.286-1.557.71-3.437 1.03-2.87.488-6.81.817-8.438.75-.85-.034-1.728-.184-2.406-.406-.685-.215-1.19-.444-1.312-.5.169.107.43.403-.22 1.031-.909.88-6.245 1.337-9.25 1.47-2.99.131-6.588-.451-11-2.563-4.44-2.127-5.64-3.402-10.905-5.782 4.734 2.597 6.286 4.63 10.344 6.72 1.673.861 3.485 1.493 5.25
5737 y="1368.4291" 10441.937-.463.233-1.59.688-3.688.937-2.886.343-6.834.493-8.468.375-1.547-.111-3.232-.857-3.532-1 .17.12.414.41-.218 1-.913.851-6.244 1.262-9.25 1.375-2.993.113-6.59-.49-11-2.594-4.002-1.908-5.388-3.137-9.47-5.093v.156c3.656 2.204 5.295 4.053 8.907 5.906 1.74.893 3.637 1.528 5.469 1.969-.54.248-1.578.615-3.469.844-2.886.348-6.866.52-8.5.406a9.446 9.446 0 0 1-2.406-.5 12.532 12.532 0 0 1-1.313-.531c.17.112.465.422-.187 1.03-.913.853-6.275 1.294-9.281 1.407-2.993.112-6.594-.528-11-2.594-4.437-2.08-5.647-3.331-10.906-5.656 4.729 2.548 6.29 4.578 10.344 6.625 1.671.844 3.485 1.467 5.25 1.906-.464.235-1.59.684-3.688.938-2.886.348-6.836.57-8.469.469-1.544-.096-3.2-.83-3.5-.97.17.12.382.405-.25 1-.912.861-6.246 1.331-9.25 1.47-2.99.138-6.567-.451-10.969-2.47-3.993-1.83-5.365-3.028-9.437-4.905v.156c3.647 2.133 5.27 3.935 8.875 5.719 1.737.86 3.607 1.45 5.437
5738 style="font-size:50px;fill:#000000;fill-opacity:1;">COMPOSE_BONDS</tspan></text> 10451.875-.54.253-1.55.64-3.437.906-2.88.404-6.838.646-8.469.562a9.36 9.36 0 0 1-2.406-.437 12.971 12.971 0 0 1-1.313-.5c.17.109.432.41-.218 1.031-.911.87-6.25 1.392-9.25 1.563-2.987.17-6.574-.316-10.97-2.282-4.424-1.978-5.605-3.228-10.843-5.375 4.71 2.388 6.27 4.39 10.312 6.344a23.73 23.73 0 0 0 5.218 1.781c-.461.25-1.597.713-3.687 1.032-2.876.438-6.78.733-8.406.687-1.539-.043-3.233-.745-3.532-.875.169.113.411.414-.218 1.031-.908.891-6.203 1.529-9.188 1.813-2.971.283-6.573-.176-10.938-1.938-3.96-1.598-5.329-2.795-9.344-4.312v.156c3.596 1.811 5.239 3.582 8.813 5.156 1.722.759 3.587 1.29 5.406 1.625-.536.28-1.566.688-3.437 1.063-2.856.572-6.79 1.02-8.407 1.031-.844.006-1.706-.08-2.375-.25-.676-.162-1.16-.33-1.28-.375.166.094.422.383-.22 1.062-.897.951-6.186 1.918-9.125 2.438-2.925.518-6.432.374-10.719-1.031-4.315-1.415-5.472-2.53-10.562-3.969 4.577 1.751 6.09 3.56 10.031 5 1.627.594 3.37.956
5739 <text 10465.094 1.156-.453.297-1.555.884-3.594 1.469-2.804.805-6.638 1.576-8.218 1.75-1.495.165-3.117-.317-3.407-.406.164.09.393.36-.218 1.062-.883 1.014-6.045 2.372-8.938 3.063-2.88.687-6.335.76-10.562-.438-3.835-1.086-5.172-2.072-9.062-3.125v.156c3.484 1.395 5.07 2.92 8.53 4.032 1.669.535 3.457.786 5.22.875-.52.352-1.5.914-3.313 1.53-2.765.942-6.59 1.936-8.156 2.157-.818.115-1.633.123-2.281.031-.655-.083-1.133-.218-1.25-.25.162.075.434.34-.188 1.094-.87 1.055-6.01 2.66-8.875 3.438-2.852.774-6.259.958-10.438-.094-4.206-1.06-5.356-2.042-10.344-3.156 4.485 1.46 5.97 3.135 9.813 4.25 1.585.46 3.287.638 4.969.687-.442.337-1.513 1.028-3.5 1.781-2.734 1.037-6.452 2.163-8 2.438-1.465.26-3.06-.117-3.344-.188.16.08.38.321-.219 1.063-.865 1.07-5.916 2.818-8.75 3.687-2.82.866-6.207 1.157-10.344.22-3.753-.852-5.048-1.717-8.875-2.595v.157c3.428 1.237 4.987 2.632 8.375 3.53 1.632.434 3.367.584
5740 xml:space="preserve" 10475.094.563-.51.384-1.477 1.022-3.25 1.75-2.706 1.112-6.436 2.308-7.969 2.625-.8.166-1.612.219-2.25.157v1.406c.227-.145.449-.273.719-.375 1.08-.41 2.171-.216 6-1.688 3.828-1.471 5.224-2.005 5.906-2.406.68-.4 1.612-.88 2.219-1.531 1.827-.138 3.57-.493 4.937-1 2.968-1.1 4.876-1.806 6.782-2.469 1.905-.663 2.354-1.415 3.406-1.781 1.091-.38 2.195-.166 6.062-1.531 3.868-1.366 5.283-1.827 5.969-2.22.701-.4 1.7-.932 2.313-1.593 1.97-.055 3.816-.385 5.28-.875 3.002-1.005 4.927-1.622 6.845-2.25 1.538-.504 2.174-1.047 2.906-1.437.23-.135.475-.254.75-.344 1.098-.36 2.181-.082 6.094-1.313 3.912-1.23 5.366-1.673 6.062-2.03.694-.358 1.63-.794 2.25-1.407 1.865-.023 3.636-.267 5.031-.688 3.03-.913 4.993-1.43 6.938-1.968 1.945-.54 2.426-1.265 3.5-1.563 1.114-.31 2.22.007 6.187-1.031 3.968-1.039 5.418-1.433 6.125-1.75.735-.33 1.814-.754 2.438-1.375 1.997.116 3.857-.02 5.344-.375 3.078-.735 5.083-1.101
5741 style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" 10487.062-1.5 1.588-.32 2.244-.79 3-1.094.238-.107.467-.193.75-.25 1.134-.23 2.305.209 6.344-.5s5.5-.927 6.219-1.187c.715-.26 1.704-.568 2.343-1.094 1.925.24 3.748.224 5.188 0 3.126-.488 5.155-.7 7.156-.969 2.002-.268 2.489-.945 3.594-1.094 1.146-.154 2.276.302 6.344-.219 4.068-.52 5.56-.695 6.28-.937.738-.247 1.799-.586 2.438-1.125 2.05.335 3.974.398 5.5.219 3.143-.37 5.18-.56 7.188-.782 1.61-.178 2.265-.608 3.031-.843a3.43 3.43 0 0 1 .781-.188c1.15-.128 2.302.347 6.375-.125s5.56-.61 6.282-.844c.719-.232 1.7-.473 2.343-.968 1.937.333 3.77.404 5.22.25 3.145-.335 5.177-.519 7.187-.719 2.01-.2 2.484-.826 3.593-.938 1.152-.115 2.297.366 6.375-.062s5.59-.562 6.313-.781c.74-.224 1.796-.514 2.437-1.031 2.058.398 4.002.493 5.532.343 3.148-.308 5.175-.473 7.187-.656 1.614-.147 2.263-.56 3.031-.781.242-.081.494-.13.782-.156 1.152-.106 2.293.392 6.375 0 4.082-.393 5.589-.531 6.312-.75.721-.219
5742 x="8.0815096" 10491.7-.448 2.344-.938 1.938.35 3.769.454 5.219.313 3.148-.309 5.175-.474 7.187-.657 2.012-.183 2.514-.838 3.625-.937 1.152-.103 2.292.385 6.375 0s5.589-.501 6.313-.719c.739-.222 1.795-.514 2.437-1.031 2.057.402 4.003.503 5.531.344 3.147-.329 5.178-.523 7.188-.72 1.613-.156 2.266-.63 3.031-.874.24-.088.463-.122.75-.156 1.148-.14 2.317.34 6.375-.25 4.058-.59 5.562-.778 6.281-1.032.717-.253 1.675-.558 2.313-1.093 1.92.211 3.72.151 5.156-.094 3.12-.533 5.112-.929 7.094-1.313 1.982-.384 2.474-1.04 3.562-1.28 1.13-.252 2.27.115 6.25-.876s5.43-1.42 6.125-1.781c.723-.376 1.762-.87 2.375-1.531 1.963-.012 3.794-.291 5.22-.844 2.95-1.145 4.872-1.87 6.687-2.75 1.455-.707 2.334-1.686 2.547-1.984.212-.298.111-.746.137-.767.043-.035.32-.085.48-.429.858-1.847 2.32-5.644
5743 y="1438.8961" 10502.435-6.329.113-.682.163-1.348.214-1.745.03-.23-.147-.865-.125-.924.031-.082.305-.265.36-.515.267-1.198.09-2.191-.125-3.609-.214-1.417-.983-4.622-1.637-5.476-.659-.862-1.223-1.011-1.748-1-.208.27.137.262.163.312.68.05.934.369 1.42.897s1.442 3.94 1.579 5.39.19 2.86-.088 3.468c-.278.609-.944.429-1.237.495.531.186.89.213.953 1.057.058.814-.134 1.64-.52 2.806-.391 1.18-1.845 4.35-2.286 4.599-.452.255-.952.182-1.288.05z" enable-background="new" filter="url(#gs)"/>
5744 id="text8200-4-9-3-5-6" 1051 <path d="m988.75-263.84c1.912 0.634 4.55 1.758 6.125 2.813 1.575 1.054 2.896 1.482 5.531 3.375 2.609 1.873 5.027 3.015 7.313 4.062 2.47 1.132 5.752 2.155 9.531 3.938-1.207-1.259-7.139-3.365-9.031-4.188s-4.128-1.93-6.938-3.781-3.622-2.482-6-3.719c-2.377-1.237-4.08-1.95-6.53-2.5z" enable-background="new" filter="url(#gr)"/>
5745 sodipodi:linespacing="125%"><tspan 1052 <path d="M957.5-260.78c1.91.618 4.583 1.71 6.156 2.75 1.574 1.04 2.896 1.482 5.531 3.375 2.609 1.873 5.027 3.015 7.313 4.063 2.47 1.131 5.752 2.154 9.531 3.937-1.207-1.258-7.201-3.396-9.094-4.219-1.892-.823-4.096-1.93-6.906-3.781-2.81-1.85-3.593-2.44-5.969-3.656s-4.113-1.939-6.562-2.469z" enable-background="new" filter="url(#gq)"/>
5746 sodipodi:role="line" 1053 <path d="M926.09-257.38c1.908.597 4.553 1.664 6.125 2.688 1.571 1.023 2.87 1.44 5.5 3.28 2.603 1.823 5.029 2.973 7.313 4 2.467 1.111 5.755 2.094 9.53 3.845-1.205-1.249-7.171-3.319-9.062-4.125s-4.102-1.891-6.906-3.688c-2.804-1.796-3.627-2.402-6-3.594-2.373-1.191-4.054-1.903-6.5-2.406z" enable-background="new" filter="url(#gp)"/>
5747 id="tspan8202-5-3-6-3-2" 1054 <path d="M894.91-253.56c1.902.554 4.587 1.589 6.156 2.594s2.874 1.408 5.5 3.219c2.6 1.791 5 2.871 7.281 3.875 2.465 1.083 5.76 2.04 9.532 3.75-1.205-1.236-7.175-3.245-9.063-4.032-1.888-.786-4.075-1.83-6.875-3.593s-3.6-2.369-5.969-3.532c-2.37-1.163-4.123-1.834-6.562-2.28z" enable-background="new" filter="url(#go)"/>
5748 x="8.0815096" 1055 <path d="M863.72-248.66c1.88.43 4.504 1.38 6.063 2.313 1.558.932 2.852 1.257 5.468 3 2.59 1.724 4.981 2.708 7.25 3.625 2.452.99 5.74 1.877 9.5 3.5-1.201-1.208-7.152-3.067-9.03-3.782-1.88-.715-4.086-1.684-6.876-3.375s-3.585-2.228-5.937-3.28-4.026-1.713-6.438-2z" enable-background="new" filter="url(#gn)"/>
5749 y="1438.8961" 1056 <path d="m833.16-241.38c1.848 0.296 4.47 0.976 6 1.781s2.814 1.056 5.375 2.531c2.535 1.46 4.89 2.326 7.125 3.063 2.414 0.797 5.657 1.467 9.375 2.844-1.188-1.129-7.088-2.59-8.938-3.156-1.85-0.567-4.003-1.374-6.75-2.844-2.746-1.47-3.5-1.92-5.812-2.781-2.311-0.861-4.005-1.32-6.375-1.438z" enable-background="new" filter="url(#gm)"/>
5750 style="font-size:50px;fill:#000000;fill-opacity:1">CROP_BONDS</tspan></text> 1057 <path d="m802.91-232.31c1.822 0.211 4.366 0.8 5.875 1.531 1.51 0.73 2.756 0.93 5.281 2.281 2.5 1.338 4.832 2.049 7.031 2.657 2.377 0.656 5.565 1.073 9.22 2.187-1.168-1.045-6.93-2.103-8.75-2.562-1.822-0.46-3.953-1.127-6.657-2.438s-3.471-1.72-5.75-2.469-3.913-1.179-6.25-1.187z" enable-background="new" filter="url(#gl)"/>
5751 <text 1058 <path d="M773.19-222.19c1.811.179 4.32.665 5.813 1.344 1.491.678 2.753.798 5.25 2.062 2.47 1.252 4.79 1.896 6.968 2.438 2.354.585 5.492.897 9.094 1.844-1.15-.992-6.852-1.784-8.656-2.188s-3.916-1.021-6.594-2.25c-2.678-1.229-3.403-1.61-5.656-2.281-2.253-.67-3.896-1.002-6.219-.969z" enable-background="new" filter="url(#gk)"/>
5752 xml:space="preserve" 1059 <path d="M743.56-211.19c1.793.13 4.273.55 5.75 1.188s2.716.741 5.188 1.937c2.446 1.184 4.72 1.747 6.874 2.219 2.328.51 5.42.68 9 1.562-1.143-.97-6.747-1.59-8.53-1.937-1.784-.347-3.884-.888-6.532-2.031-2.648-1.144-3.395-1.517-5.625-2.125-2.23-.61-3.826-.91-6.125-.813z" enable-background="new" filter="url(#gj)"/>
5753 style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" 1060 <g fill="#fff" filter="url(#gi)">
5754 x="1455.4426" 1061 <path d="M744.94-212.12s7.222-3.223 9.063-3.5 3.352-.003 6 .563c2.647.565 8.735 2.215 11.188 3.374s5.312 3.563 5.312 3.563-7.146-2.78-10.188-3.563-7.645-2.083-10.375-2.312-11 1.875-11 1.875z"/>
5755 y="-26.808125" 1062 <path d="m735.47-206.95s3.66-2.223 5.5-2.5 3.665 0.247 6.313 0.813 8.735 2.215 11.188 3.375 6.562 2.125 6.562 2.125-8.396-1.343-11.438-2.125-7.957-2.334-10.688-2.563-7.438 0.875-7.438 0.875zm24.38-10.66s8.544-3.299 10.398-3.458c1.854-0.16 3.642 0.48 6.248 1.212s8.577 2.766 10.95 4.08 6.414 2.537 6.414 2.537-8.294-1.873-11.279-2.848c-2.985-0.974-7.792-2.834-10.503-3.236s-12.228 1.713-12.228 1.713zm15.35-5.62s7.771-2.782 9.628-2.904c1.857-0.12 3.631 0.555 6.222 1.341 2.59 0.787 8.519 2.942 10.864 4.304 2.346 1.362 6.36 2.67 6.36 2.67s-8.253-2.045-11.217-3.08c-2.965-1.035-7.733-2.995-10.434-3.452-2.702-0.458-11.422 1.121-11.422 1.121zm14.44-4.72s8.683-3.52 10.542-3.605 3.62 0.624 6.195 1.46c2.575 0.837 8.46 3.107 10.779 4.514 2.318 1.408 6.307 2.793 6.307 2.793s-8.212-2.204-11.156-3.297-7.673-3.144-10.365-3.654-12.3 1.789-12.3 1.789zm14.86-5.38s7.808-2.583 9.666-2.668c1.86-0.085 3.62
5756 id="text8200-4-9-3-5-6-9" 10630.625 6.195 1.461 2.575 0.837 8.46 3.107 10.78 4.514 2.318 1.407 6.307 2.792 6.307 2.792s-8.213-2.204-11.156-3.296-7.673-3.144-10.365-3.654-11.426 0.85-11.426 0.85zm15.06-4.25s8.558-2.583 10.417-2.668 3.62 0.625 6.195 1.461c2.575 0.837 8.46 3.107 10.779 4.514 2.318 1.407 6.307 2.792 6.307 2.792s-8.212-2.204-11.156-3.296-7.673-3.144-10.365-3.654-12.176 0.85-12.176 0.85zm16.67-5.02s6.967-1.987 8.828-1.968c1.86 0.02 3.579 0.827 6.102 1.807 2.524 0.98 8.272 3.578 10.508 5.113 2.236 1.536 6.14 3.143 6.14 3.143s-8.075-2.662-10.952-3.919c-2.878-1.256-7.484-3.57-10.143-4.231-2.66-0.66-10.482 0.055-10.482 0.055zm14.5-3.4s7.688-2.028 9.548-1.968 3.56 0.902 6.063 1.936c2.502 1.033 8.194 3.752 10.397 5.335 2.203 1.582 6.072 3.272 6.072 3.272s-8.017-2.833-10.868-4.15c-2.85-1.318-7.407-3.73-10.05-4.446s-11.162 0.021-11.162 0.021zm14.09-3.21s8.17-1.97 10.027-1.854c1.857 0.115 3.532 1.01 6.002
5757 sodipodi:linespacing="125%"><tspan 10642.118s8.077 3.997 10.23 5.645 5.972 3.454 5.972 3.454-7.928-3.074-10.738-4.476-7.291-3.95-9.913-4.746c-2.621-0.796-11.58-0.141-11.58-0.141zm16.56-2.39s8.085-1.908 9.938-1.737c1.853 0.172 3.5 1.117 5.935 2.3 2.436 1.182 7.952 4.24 10.055 5.953s5.864 3.633 5.864 3.633-7.832-3.312-10.597-4.8-7.168-4.169-9.764-5.044c-2.597-0.876-11.431-0.305-11.431-0.305zm15.2-2.75s7.642-1.428 9.495-1.265c1.854 0.162 3.505 1.1 5.946 2.27s7.973 4.203 10.084 5.905c2.112 1.703 5.881 3.605 5.881 3.605s-7.847-3.274-10.62-4.748c-2.772-1.474-7.187-4.135-9.788-4.998-2.6-0.863-10.998-0.77-10.998-0.77zm14.87-1.64s8.642-1.553 10.495-1.39c1.854 0.162 3.505 1.1 5.946 2.27s7.972 4.203 10.084 5.905c2.111 1.703 5.88 3.605 5.88 3.605s-7.846-3.274-10.62-4.748c-2.772-1.474-7.187-4.135-9.787-4.998-2.601-0.863-11.998-0.644-11.998-0.644zm16.25-2.31s7.642-0.865 9.495-0.703c1.854 0.163 3.505 1.1 5.946 2.27s7.973 4.203 10.084
5758 sodipodi:role="line" 10655.906c2.112 1.702 5.881 3.605 5.881 3.605s-7.847-3.275-10.62-4.749c-2.772-1.474-7.187-4.135-9.788-4.998-2.6-0.862-10.998-1.331-10.998-1.331zm15.13-1.19s8.58-1.49 10.433-1.328c1.854 0.163 3.505 1.1 5.946 2.27s7.972 4.203 10.084 5.906c2.111 1.702 5.88 3.605 5.88 3.605s-7.846-3.275-10.62-4.749c-2.772-1.474-7.187-4.135-9.787-4.998-2.601-0.862-11.935-0.706-11.935-0.706zm16.25-2.06s7.83-0.803 9.683-0.64c1.854 0.162 3.505 1.1 5.946 2.27s7.972 4.203 10.084 5.905c2.111 1.703 5.88 3.605 5.88 3.605s-7.846-3.274-10.62-4.748c-2.772-1.474-7.187-4.135-9.787-4.998-2.601-0.863-11.185-1.394-11.185-1.394zm15.37-1.25s8.392-1.178 10.245-1.015c1.854 0.162 3.505 1.1 5.946 2.27s7.972 4.203 10.084 5.905c2.111 1.703 5.88 3.605 5.88 3.605s-7.847-3.274-10.62-4.748c-2.772-1.474-7.187-4.135-9.788-4.998-2.6-0.863-11.748-1.02-11.748-1.02zm16.19-2.06s6.892-0.99 8.745-0.828c1.854 0.163 3.505 1.1 5.946 2.27s7.973 4.203
5759 id="tspan8202-5-3-6-3-2-1" 106610.084 5.906c2.112 1.702 5.881 3.605 5.881 3.605s-7.847-3.275-10.62-4.749-7.188-4.135-9.788-4.998c-2.6-0.862-10.248-1.206-10.248-1.206zm17.16-0.94s6.83-1.178 8.683-1.015c1.854 0.162 3.505 1.1 5.946 2.27 2.44 1.171 7.972 4.203 10.084 5.905 2.111 1.703 5.88 3.605 5.88 3.605s-7.847-3.274-10.62-4.748c-2.772-1.474-7.187-4.135-9.788-4.998-2.6-0.863-10.185-1.02-10.185-1.02zm16.1-2s6.08-0.428 7.933-0.265c1.854 0.162 3.505 1.1 5.946 2.27 2.44 1.171 7.972 4.203 10.084 5.905 2.111 1.703 5.88 3.605 5.88 3.605s-7.847-3.274-10.62-4.748c-2.772-1.474-7.187-4.135-9.788-4.998-2.6-0.863-9.435-1.77-9.435-1.77zm15.8-1.37s6.454-0.678 8.308-0.515c1.854 0.162 3.505 1.1 5.946 2.27 2.44 1.171 7.972 4.203 10.084 5.905 2.111 1.703 5.88 3.605 5.88 3.605s-7.847-3.274-10.62-4.748c-2.772-1.474-7.187-4.135-9.788-4.998-2.6-0.863-9.81-1.52-9.81-1.52zm15.6-1.86s5.498-0.91 7.358-0.853c1.86 0.056 3.562 0.896 6.066 1.925
5760 x="1455.4426" 10672.504 1.03 8.2 3.739 10.406 5.318 2.205 1.578 6.078 3.261 6.078 3.261s-8.022-2.819-10.875-4.131c-2.853-1.313-7.413-3.716-10.06-4.429-2.645-0.712-8.973-1.091-8.973-1.091zm17.4-2.46s4.547-1.156 6.408-1.186c1.86-0.03 3.6 0.73 6.149 1.642 2.55 0.912 8.365 3.354 10.64 4.829 2.277 1.474 6.224 2.976 6.224 2.976s-8.145-2.444-11.055-3.623c-2.91-1.178-7.578-3.368-10.253-3.957-2.676-0.588-8.113-0.68-8.113-0.68zm14.5-3.03s5.96-1.774 7.82-1.83c1.86-0.057 3.61 0.68 6.172 1.555 2.562 0.876 2.522 0.857 5.333 1.49 2.797 0.63 7.077 1.513 7.077 1.513s-3.616-0.016-6.792-0.466c-3.116-0.441-7.375-1.698-10.058-2.249-2.684-0.55-9.552-0.013-9.552-0.013z" enable-background="new"/>
5761 y="-26.808125" 1068 <path d="M1099.2-279.93c.161.269 11.208-4.6 12.188-4.688.98-.087 2 3.125 2 3.125s-.775-1.504-2.875-1.062-11.301 2.671-11.312 2.625z"/>
5762 style="font-size:50px;fill:#000000;fill-opacity:1">overscan area</tspan></text> 1069 </g>
5763 <text 1070 <path d="M1107.5-284.09c-.419.213-.156.094-.647.306-.486.21-1.724.574-4.08 1.459-3.33 1.25-5.83 2.153-7.026 3.066-1.536.021-3.72.233-5.656.719a227.709 227.709 0 0 1-6.75 1.593c-1.895.42-1.676.643-2.875.875-1.297.252-1.721-.009-5.438.782-3.49.742-8.894 1.93-10.156 2.687-1.583-.18-3.867-.322-5.843-.031-3.04.447-4.917.673-6.844.906-.655.08-1.041.201-1.344.282-.426.131-.686.26-1.375.343-1.311.16-1.762-.157-5.531.282-3.554.413-9.005 1.272-10.25 1.937-1.599-.297-3.858-.534-5.844-.344-3.059.294-4.972.484-6.906.657-1.934.172-1.689.422-2.906.53-1.317.118-1.76-.163-5.532.25-3.541.39-9.007 1.21-10.28 1.876-1.6-.295-3.888-.507-5.876-.313-3.058.3-4.94.48-6.875.657-.657.06-1.04.178-1.343.25-.428.118-.684.218-1.375.28-1.316.121-1.76-.194-5.532.22-3.556.39-9.005 1.239-10.25
5764 xml:space="preserve" 10711.906-1.598-.294-3.86-.524-5.843-.313-3.056.326-4.974.526-6.907.719-1.932.192-1.69.44-2.906.562-1.315.132-1.763-.164-5.53.282-3.54.418-8.979 1.292-10.25 1.969-1.599-.282-3.86-.42-5.845-.188-3.052.358-4.945.568-6.875.781-.656.073-1.04.173-1.344.25-.426.127-.684.267-1.375.344-1.313.146-1.767-.174-5.53.313-3.55.458-8.98 1.419-10.22 2.125-1.593-.245-3.834-.382-5.812-.125-3.048.394-4.95.648-6.875.906-1.925.258-1.726.493-2.938.656-1.31.176-1.747-.104-5.5.469-3.524.538-8.923 1.699-10.188 2.437-1.587-.203-3.845-.254-5.812.094-3.026.536-4.9.862-6.813 1.187-.65.111-1.013.271-1.312.375-.42.165-.664.332-1.344.47-1.295.26-1.727-.007-5.438.812-3.498.772-8.846 2.383-10.062 3.219-1.562-.078-3.757.085-5.687.593-2.972.783-4.818 1.232-6.688 1.75s-1.666.768-2.843 1.094c-1.273.353-1.697.107-5.344 1.188-3.425 1.014-8.65 2.933-9.875 3.843-1.539.013-3.72.273-5.625.875-2.931.928-4.75 1.459-6.594
5765 style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#f8d615;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" 10722.063-.627.205-.992.392-1.281.531-.408.214-.653.409-1.313.625-1.254.412-1.686.19-5.28 1.438-3.39 1.177-8.596 3.213-9.782 4.156-1.524.06-3.65.395-5.531 1.062-2.898 1.029-4.7 1.676-6.531 2.313-1.833.637-1.628.848-2.782 1.25-1.246.434-1.663.2-5.218 1.562-3.34 1.28-8.488 3.483-9.688 4.47-1.507.107-3.636.498-5.5 1.218a1044.752 1044.752 0 0 1-6.437 2.469c-.617.233-.997.442-1.282.593v1.094c.112-.222.386-.817.907-1.094.698-.37 4.813-1.993 6.812-2.718 1.657-.602 4.154-1.329 5.969-1.313.302.003.588.051.844.094 1.842.308 7.468 1.562 7.468 1.562s-6.233-1.646-7.03-1.843c-.191-.048-.536-.07-.97-.063 1.146-.87 4.762-2.393 7.344-3.437 2.839-1.148 3.117-1.252 5.063-1.657 2.008-.417 3.156-.5 3.156-.5s-.082-.6.969-1.125c.705-.351 4.887-1.892 6.906-2.562 1.952-.648 5.057-1.359 6.875-1 1.863.367 7.531 1.812 7.531 1.812s-6.287-1.87-7.094-2.093c-.193-.054-.53-.086-.968-.094 1.158-.833 4.794-2.195 7.406-3.156
5766 x="179.63055" 10732.87-1.056 3.167-1.162 5.125-1.532 1.853-.35 2.859-.425 3.031-.437.114-.217.377-.81.906-1.063.71-.338 4.926-1.712 6.97-2.312 1.692-.497 4.24-1.037 6.093-.906.308.021.613.097.875.156 1.881.424 7.594 2.031 7.594 2.031s-6.342-2.065-7.157-2.312c-.194-.06-.557-.104-1-.125 1.17-.798 4.863-2.057 7.5-2.938 2.898-.968 3.233-1.003 5.22-1.281 2.049-.287 3.187-.313 3.187-.313s-.073-.607 1-1.062c.72-.306 4.99-1.5 7.062-2 2.003-.483 5.199-.928 7.063-.406 1.91.535 7.719 2.5 7.719 2.5s-6.423-2.424-7.25-2.72c-.198-.07-.583-.14-1.032-.187 1.188-.728 4.916-1.774 7.594-2.5 2.944-.797 3.292-.77 5.313-.906 1.913-.128 2.947-.07 3.125-.062.117-.204.391-.78.937-.97.732-.253 5.079-1.047 7.188-1.374 1.748-.271 4.4-.485 6.312-.094.318.065.605.186.875.281 1.94.69 7.844 3.094 7.844 3.094s-6.535-2.95-7.375-3.312c-.201-.087-.575-.167-1.031-.25 1.206-.633 5.03-1.396 7.75-1.906 2.99-.562 3.3-.53 5.344-.532 2.109-.002
5767 y="385.38785" 10743.312.125 3.312.125s-.073-.63 1.031-.937c.74-.206 5.126-.834 7.25-1.063 2.053-.22 5.319-.252 7.22.47 1.947.738 7.843 3.374 7.843 3.374s-6.563-3.179-7.406-3.562c-.202-.092-.543-.187-1-.282 1.21-.602 4.984-1.248 7.718-1.656 3.005-.448 3.326-.452 5.375-.406 1.94.043 3.007.194 3.188.219.119-.194.384-.766.937-.907.743-.188 5.155-.734 7.282-.937 1.763-.169 4.42-.234 6.343.25.32.08.604.203.875.312 1.953.784 7.907 3.47 7.907 3.47s-6.592-3.254-7.438-3.657c-.202-.096-.572-.207-1.031-.313 1.214-.574 5.044-1.122 7.781-1.5 3.009-.415 3.323-.442 5.375-.375 2.118.07 3.313.25 3.313.25s-.078-.637 1.03-.906c.745-.18 5.153-.663 7.282-.844 2.059-.174 5.343-.124 7.25.657 1.955.8 7.875 3.53 7.875 3.53s-6.56-3.308-7.406-3.718c-.202-.098-.572-.203-1.031-.312 1.215-.564 5.01-1.115 7.75-1.47 3.01-.389 3.321-.397 5.375-.312 1.944.08 3.006.254 3.187.282.12-.191.383-.746.938-.875.744-.174 5.15-.65 7.28-.813
5768 id="text8200-4-9-2" 10751.767-.134 4.45-.126 6.376.375.32.083.603.201.875.313 1.954.8 7.906 3.562 7.906 3.562s-6.591-3.34-7.437-3.75c-.203-.098-.572-.203-1.032-.312 1.215-.564 5.042-1.084 7.782-1.438 3.01-.39 3.352-.429 5.406-.344 2.12.088 3.312.313 3.312.313s-.078-.65 1.032-.906c.744-.173 5.15-.624 7.28-.782 2.061-.152 5.344-.096 7.25.688 1.956.804 7.876 3.5 7.876 3.5s-6.56-3.276-7.406-3.688c-.203-.098-.572-.202-1.032-.312 1.216-.562 5.012-1.128 7.75-1.5 3.01-.41 3.323-.416 5.375-.344 1.943.068 3.008.165 3.188.188.119-.195.384-.73.937-.875.742-.197 5.131-.83 7.25-1.094 1.757-.22 4.406-.333 6.313.031.317.06.606.19.875.281 1.936.661 7.844 2.938 7.844 2.938s-6.537-2.807-7.375-3.156c-.2-.084-.577-.174-1.032-.25 1.204-.651 5.02-1.372 7.72-2 2.966-.69 3.288-.756 5.312-.875 2.088-.124 3.28-.032 3.28-.032s-.086-.632 1-1.03c.73-.269 5.048-1.339 7.126-1.813 2.008-.46 5.168-1.03 7-.625 1.878.414 13.578 3.015 13.578
5769 sodipodi:linespacing="125%"><tspan 10763.015s-12.328-3.022-13.141-3.265c-.195-.058-.559-.107-1-.125 1.167-.804 3.514-1.688 6.11-2.703 1.68-.659.923-.377 2.775-1.004 1.754-.594 2.486-1.01 2.63-1.113.347-.207-.355-.122-.544-.042z" enable-background="new" filter="url(#gh)" opacity=".25"/>
5770 sodipodi:role="line" 1077 <path d="m1082.6-275.12c1.873 0.393 4.496 1.146 6.031 1.969s2.822 1.056 5.375 2.5c2.527 1.43 4.796 2.007 6.969 2.531 2.348 0.566 5.435 0.715 8.844 1.188-1.09-0.84-6.608-1.173-8.406-1.563-1.8-0.39-3.895-1.016-6.594-2.313-2.7-1.296-3.495-1.799-5.813-2.687-2.318-0.889-4.004-1.383-6.406-1.625z" enable-background="new" filter="url(#gg)" opacity=".25"/>
5771 id="tspan8202-5-3-7" 1078 <path d="M1051.5-270c1.905.578 4.528 1.616 6.094 2.594 1.565.978 2.88 1.36 5.5 3.125 2.593 1.747 4.986 2.71 7.25 3.594 2.446.955 5.682 1.657 9.406 3.062-1.19-1.138-7.063-2.687-8.938-3.375-1.874-.688-4.081-1.566-6.874-3.281-2.794-1.715-3.574-2.284-5.938-3.406-2.364-1.123-4.057-1.835-6.5-2.313z" enable-background="new" filter="url(#gf)" opacity=".25"/>
5772 x="179.63055" 1079 <path d="m1020.2-266.84c1.912 0.638 4.581 1.755 6.156 2.813 1.575 1.057 2.896 1.508 5.531 3.406 2.61 1.878 5.029 3.03 7.313 4.062 2.468 1.116 5.764 2.174 9.531 3.844-1.203-1.222-7.203-3.314-9.094-4.125-1.89-0.81-4.064-1.894-6.874-3.75s-3.622-2.477-6-3.719c-2.379-1.242-4.111-1.975-6.563-2.531z" enable-background="new" filter="url(#ge)" opacity=".25"/>
5773 y="385.38785" 1080 <path d="M1110.2-266.89c.15.049.688.631.11 1.484-.81 1.195-5.705 3.325-8.563 4.125-2.845.798-6.29.978-10.562-.375-4.302-1.362-5.47-2.468-10.656-4.312 4.664 2.115 6.195 3.952 10.125 5.344 1.62.574 3.367.94 5.062 1.03-.445.327-1.53.984-3.562 1.595-2.796.84-6.65 1.534-8.25 1.625-1.515.086-3.142-.513-3.438-.625.167.103.374.377-.25 1.03-.899.945-6.147 1.924-9.125 2.25-2.964.326-6.521-.015-10.906-1.905-3.978-1.715-5.339-2.916-9.406-4.75v.156c3.643 2.095 5.284 3.883 8.875 5.562 1.73.81 3.592 1.41 5.406 1.72-.534.286-1.557.71-3.437 1.03-2.87.488-6.81.817-8.438.75-.85-.034-1.728-.184-2.406-.406-.685-.215-1.19-.444-1.312-.5.169.107.43.403-.22 1.031-.909.88-6.245 1.337-9.25 1.47-2.99.131-6.588-.451-11-2.563-4.44-2.127-5.64-3.402-10.905-5.782 4.734 2.597 6.286 4.63 10.344 6.72 1.673.861 3.485 1.493 5.25
5774 style="font-size:50px;fill:#f8d615;fill-opacity:1">CROP_ACTIVE</tspan></text> 10811.937-.463.233-1.59.688-3.688.937-2.886.343-6.834.493-8.468.375-1.547-.111-3.232-.857-3.532-1 .17.12.414.41-.218 1-.913.851-6.244 1.262-9.25 1.375-2.993.113-6.59-.49-11-2.594-4.002-1.908-5.388-3.137-9.47-5.093v.156c3.656 2.204 5.295 4.053 8.907 5.906 1.74.893 3.637 1.528 5.469 1.969-.54.248-1.578.615-3.469.844-2.886.348-6.866.52-8.5.406a9.446 9.446 0 0 1-2.406-.5 12.532 12.532 0 0 1-1.313-.531c.17.112.465.422-.187 1.03-.913.853-6.275 1.294-9.281 1.407-2.993.112-6.594-.528-11-2.594-4.437-2.08-5.647-3.331-10.906-5.656 4.729 2.548 6.29 4.578 10.344 6.625 1.671.844 3.485 1.467 5.25 1.906-.464.235-1.59.684-3.688.938-2.886.348-6.836.57-8.469.469-1.544-.096-3.2-.83-3.5-.97.17.12.382.405-.25 1-.912.861-6.246 1.331-9.25 1.47-2.99.138-6.567-.451-10.969-2.47-3.993-1.83-5.365-3.028-9.437-4.905v.156c3.647 2.133 5.27 3.935 8.875 5.719 1.737.86 3.607 1.45 5.437
5775 <text 10821.875-.54.253-1.55.64-3.437.906-2.88.404-6.838.646-8.469.562a9.36 9.36 0 0 1-2.406-.437 12.971 12.971 0 0 1-1.313-.5c.17.109.432.41-.218 1.031-.911.87-6.25 1.392-9.25 1.563-2.987.17-6.574-.316-10.97-2.282-4.424-1.978-5.605-3.228-10.843-5.375 4.71 2.388 6.27 4.39 10.312 6.344a23.73 23.73 0 0 0 5.218 1.781c-.461.25-1.597.713-3.687 1.032-2.876.438-6.78.733-8.406.687-1.539-.043-3.233-.745-3.532-.875.169.113.411.414-.218 1.031-.908.891-6.203 1.529-9.188 1.813-2.971.283-6.573-.176-10.938-1.938-3.96-1.598-5.329-2.795-9.344-4.312v.156c3.596 1.811 5.239 3.582 8.813 5.156 1.722.759 3.587 1.29 5.406 1.625-.536.28-1.566.688-3.437 1.063-2.856.572-6.79 1.02-8.407 1.031-.844.006-1.706-.08-2.375-.25-.676-.162-1.16-.33-1.28-.375.166.094.422.383-.22 1.062-.897.951-6.186 1.918-9.125 2.438-2.925.518-6.432.374-10.719-1.031-4.315-1.415-5.472-2.53-10.562-3.969 4.577 1.751 6.09 3.56 10.031 5 1.627.594 3.37.956
5776 xml:space="preserve" 10835.094 1.156-.453.297-1.555.884-3.594 1.469-2.804.805-6.638 1.576-8.218 1.75-1.495.165-3.117-.317-3.407-.406.164.09.393.36-.218 1.062-.883 1.014-6.045 2.372-8.938 3.063-2.88.687-6.335.76-10.562-.438-3.835-1.086-5.172-2.072-9.062-3.125v.156c3.484 1.395 5.07 2.92 8.53 4.032 1.669.535 3.457.786 5.22.875-.52.352-1.5.914-3.313 1.53-2.765.942-6.59 1.936-8.156 2.157-.818.115-1.633.123-2.281.031-.655-.083-1.133-.218-1.25-.25.162.075.434.34-.188 1.094-.87 1.055-6.01 2.66-8.875 3.438-2.852.774-6.259.958-10.438-.094-4.206-1.06-5.356-2.042-10.344-3.156 4.485 1.46 5.97 3.135 9.813 4.25 1.585.46 3.287.638 4.969.687-.442.337-1.513 1.028-3.5 1.781-2.734 1.037-6.452 2.163-8 2.438-1.465.26-3.06-.117-3.344-.188.16.08.38.321-.219 1.063-.865 1.07-5.916 2.818-8.75 3.687-2.82.866-6.207 1.157-10.344.22-3.753-.852-5.048-1.717-8.875-2.595v.157c3.428 1.237 4.987 2.632 8.375 3.53 1.632.434 3.367.584
5777 style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" 10845.094.563-.51.384-1.477 1.022-3.25 1.75-2.706 1.112-6.436 2.308-7.969 2.625-.8.166-1.612.219-2.25.157v1.406c.227-.145.449-.273.719-.375 1.08-.41 2.171-.216 6-1.688 3.828-1.471 5.224-2.005 5.906-2.406.68-.4 1.612-.88 2.219-1.531 1.827-.138 3.57-.493 4.937-1 2.968-1.1 4.876-1.806 6.782-2.469 1.905-.663 2.354-1.415 3.406-1.781 1.091-.38 2.195-.166 6.062-1.531 3.868-1.366 5.283-1.827 5.969-2.22.701-.4 1.7-.932 2.313-1.593 1.97-.055 3.816-.385 5.28-.875 3.002-1.005 4.927-1.622 6.845-2.25 1.538-.504 2.174-1.047 2.906-1.437.23-.135.475-.254.75-.344 1.098-.36 2.181-.082 6.094-1.313 3.912-1.23 5.366-1.673 6.062-2.03.694-.358 1.63-.794 2.25-1.407 1.865-.023 3.636-.267 5.031-.688 3.03-.913 4.993-1.43 6.938-1.968 1.945-.54 2.426-1.265 3.5-1.563 1.114-.31 2.22.007 6.187-1.031 3.968-1.039 5.418-1.433 6.125-1.75.735-.33 1.814-.754 2.438-1.375 1.997.116 3.857-.02 5.344-.375 3.078-.735 5.083-1.101
5778 x="636.67419" 10857.062-1.5 1.588-.32 2.244-.79 3-1.094.238-.107.467-.193.75-.25 1.134-.23 2.305.209 6.344-.5s5.5-.927 6.219-1.187c.715-.26 1.704-.568 2.343-1.094 1.925.24 3.748.224 5.188 0 3.126-.488 5.155-.7 7.156-.969 2.002-.268 2.489-.945 3.594-1.094 1.146-.154 2.276.302 6.344-.219 4.068-.52 5.56-.695 6.28-.937.738-.247 1.799-.586 2.438-1.125 2.05.335 3.974.398 5.5.219 3.143-.37 5.18-.56 7.188-.782 1.61-.178 2.265-.608 3.031-.843a3.43 3.43 0 0 1 .781-.188c1.15-.128 2.302.347 6.375-.125s5.56-.61 6.282-.844c.719-.232 1.7-.473 2.343-.968 1.937.333 3.77.404 5.22.25 3.145-.335 5.177-.519 7.187-.719 2.01-.2 2.484-.826 3.593-.938 1.152-.115 2.297.366 6.375-.062s5.59-.562 6.313-.781c.74-.224 1.796-.514 2.437-1.031 2.058.398 4.002.493 5.532.343 3.148-.308 5.175-.473 7.187-.656 1.614-.147 2.263-.56 3.031-.781.242-.081.494-.13.782-.156 1.152-.106 2.293.392 6.375 0 4.082-.393 5.589-.531 6.312-.75.721-.219
5779 y="-138.84549" 10861.7-.448 2.344-.938 1.938.35 3.769.454 5.219.313 3.148-.309 5.175-.474 7.187-.657 2.012-.183 2.514-.838 3.625-.937 1.152-.103 2.292.385 6.375 0s5.589-.501 6.313-.719c.739-.222 1.795-.514 2.437-1.031 2.057.402 4.003.503 5.531.344 3.147-.329 5.178-.523 7.188-.72 1.613-.156 2.266-.63 3.031-.874.24-.088.463-.122.75-.156 1.148-.14 2.317.34 6.375-.25 4.058-.59 5.562-.778 6.281-1.032.717-.253 1.675-.558 2.313-1.093 1.92.211 3.72.151 5.156-.094 3.12-.533 5.112-.929 7.094-1.313 1.982-.384 2.474-1.04 3.562-1.28 1.13-.252 2.27.115 6.25-.876s5.43-1.42 6.125-1.781c.723-.376 1.762-.87 2.375-1.531 1.963-.012 3.794-.291 5.22-.844 2.95-1.145 4.872-1.87 6.687-2.75 1.455-.707 2.334-1.686 2.547-1.984.212-.298.111-.746.137-.767.043-.035.32-.085.48-.429.858-1.847 2.32-5.644
5780 id="text8200-4-9-3-5-6-0" 10872.435-6.329.113-.682.163-1.348.214-1.745.03-.23-.147-.865-.125-.924.031-.082.305-.265.36-.515.267-1.198.09-2.191-.125-3.609-.214-1.417-.983-4.622-1.637-5.476-.659-.862-1.223-1.011-1.748-1-.208.27.137.262.163.312.68.05.934.369 1.42.897s1.221 3.85 1.358 5.301.19 2.86-.088 3.469c-.278.608-.723.517-1.016.583.531.186.67.125.732.969.058.813-.134 1.64-.52 2.806-.392 1.18-1.846 4.35-2.286 4.598-.452.256-.731.27-1.067.14z" enable-background="new" filter="url(#ff)" opacity=".25"/>
5781 sodipodi:linespacing="125%"><tspan 1088 <path d="m988.75-263.84c1.912 0.634 4.55 1.758 6.125 2.813 1.575 1.054 2.896 1.482 5.531 3.375 2.609 1.873 5.027 3.015 7.313 4.062 2.47 1.132 5.752 2.155 9.531 3.938-1.207-1.259-7.139-3.365-9.031-4.188s-4.128-1.93-6.938-3.781-3.622-2.482-6-3.719c-2.377-1.237-4.08-1.95-6.53-2.5z" enable-background="new" filter="url(#fe)" opacity=".25"/>
5782 sodipodi:role="line" 1089 <path d="M957.5-260.78c1.91.618 4.583 1.71 6.156 2.75 1.574 1.04 2.896 1.482 5.531 3.375 2.609 1.873 5.027 3.015 7.313 4.063 2.47 1.131 5.752 2.154 9.531 3.937-1.207-1.258-7.201-3.396-9.094-4.219-1.892-.823-4.096-1.93-6.906-3.781-2.81-1.85-3.593-2.44-5.969-3.656s-4.113-1.939-6.562-2.469z" enable-background="new" filter="url(#fd)" opacity=".25"/>
5783 id="tspan8202-5-3-6-3-2-9" 1090 <path d="M926.09-257.38c1.908.597 4.553 1.664 6.125 2.688 1.571 1.023 2.87 1.44 5.5 3.28 2.603 1.823 5.029 2.973 7.313 4 2.467 1.111 5.755 2.094 9.53 3.845-1.205-1.249-7.171-3.319-9.062-4.125s-4.102-1.891-6.906-3.688c-2.804-1.796-3.627-2.402-6-3.594-2.373-1.191-4.054-1.903-6.5-2.406z" enable-background="new" filter="url(#fc)" opacity=".25"/>
5784 x="636.67419" 1091 <path d="M894.91-253.56c1.902.554 4.587 1.589 6.156 2.594s2.874 1.408 5.5 3.219c2.6 1.791 5 2.871 7.281 3.875 2.465 1.083 5.76 2.04 9.532 3.75-1.205-1.236-7.175-3.245-9.063-4.032-1.888-.786-4.075-1.83-6.875-3.593s-3.6-2.369-5.969-3.532c-2.37-1.163-4.123-1.834-6.562-2.28z" enable-background="new" filter="url(#fb)" opacity=".25"/>
5785 y="-138.84549" 1092 <path d="M863.72-248.66c1.88.43 4.504 1.38 6.063 2.313 1.558.932 2.852 1.257 5.468 3 2.59 1.724 4.981 2.708 7.25 3.625 2.452.99 5.74 1.877 9.5 3.5-1.201-1.208-7.152-3.067-9.03-3.782-1.88-.715-4.086-1.684-6.876-3.375s-3.585-2.228-5.937-3.28-4.026-1.713-6.438-2z" enable-background="new" filter="url(#fa)" opacity=".25"/>
5786 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:70px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#000000;fill-opacity:1">DATA SOURCE</tspan></text> 1093 <path d="m833.16-241.38c1.848 0.296 4.47 0.976 6 1.781s2.814 1.056 5.375 2.531c2.535 1.46 4.89 2.326 7.125 3.063 2.414 0.797 5.657 1.467 9.375 2.844-1.188-1.129-7.088-2.59-8.938-3.156-1.85-0.567-4.003-1.374-6.75-2.844-2.746-1.47-3.5-1.92-5.812-2.781-2.311-0.861-4.005-1.32-6.375-1.438z" enable-background="new" filter="url(#ez)" opacity=".25"/>
5787 <text 1094 <path d="m802.91-232.31c1.822 0.211 4.366 0.8 5.875 1.531 1.51 0.73 2.756 0.93 5.281 2.281 2.5 1.338 4.832 2.049 7.031 2.657 2.377 0.656 5.565 1.073 9.22 2.187-1.168-1.045-6.93-2.103-8.75-2.562-1.822-0.46-3.953-1.127-6.657-2.438s-3.471-1.72-5.75-2.469-3.913-1.179-6.25-1.187z" enable-background="new" filter="url(#ey)" opacity=".25"/>
5788 xml:space="preserve" 1095 <path d="M773.19-222.19c1.811.179 4.32.665 5.813 1.344 1.491.678 2.753.798 5.25 2.062 2.47 1.252 4.79 1.896 6.968 2.438 2.354.585 5.492.897 9.094 1.844-1.15-.992-6.852-1.784-8.656-2.188s-3.916-1.021-6.594-2.25c-2.678-1.229-3.403-1.61-5.656-2.281-2.253-.67-3.896-1.002-6.219-.969z" enable-background="new" filter="url(#ex)" opacity=".25"/>
5789 style="font-style:normal;font-weight:normal;font-size:45.31394196px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;enable-background:new" 1096 <path d="M743.56-211.19c1.793.13 4.273.55 5.75 1.188s2.716.741 5.188 1.937c2.446 1.184 4.72 1.747 6.874 2.219 2.328.51 5.42.68 9 1.562-1.143-.97-6.747-1.59-8.53-1.937-1.784-.347-3.884-.888-6.532-2.031-2.648-1.144-3.395-1.517-5.625-2.125-2.23-.61-3.826-.91-6.125-.813z" enable-background="new" filter="url(#ew)" opacity=".25"/>
5790 x="3178.7151" 1097 </g>
5791 y="-129.06131" 1098 </g>
5792 id="text8200-4-9-3-5-6-0-3" 1099 <path d="M3840.7 940.04c1.651-7.722 3.538-13.762 4.889-23.633.803-8.777 3.33-4.873 7.302-20.148 1.41-5.374 5.507.94 9.016-5.757 1.278-1.927 2.901-.97 4.508-.151 3.787 3.165 5.859 8.887 8.381 13.937 6.174 14.326 20.651 19.06 23.62 15.149 1.442-6.97 7.926-12.979 12.444-26.663.752-2.694 11.796-20.982 14.73-15.755" enable-background="new" fill="none" stroke="#000"/>
5793 sodipodi:linespacing="125%" 1100 <path d="M3865.4 915.04c7.405-7.758 13.89-21.376 20.826-32.117 3.33-4.726 6.909 7.717 10.857 8.635 2.31-.523 3.734 2.886 5.714 3.939 5.186 3.162 2.412 9.274 10.032 15.452 6.191 4.128 8.958-16.313 14.985-17.573 4.906-1.207 8.145-.758 11.683-.606 3.95.333 4.102-8.393 6.096-12.725 2.997-6.731 7.196-4.438 10.203-11.376 1.023-3.323 1.965-7.224 2.75-12.257.887-4.8 3.057.734 4.825 3.03" enable-background="new" fill="none" stroke="#000"/>
5794 transform="scale(0.96105877,1.0405191)"><tspan 1101 <g transform="matrix(1.0057 0 0 2.3995 3249.4 125.01)" clip-path="url(#ev)" filter="url(#eu)">
5795 sodipodi:role="line" 1102 <path d="M910.14 746.31l32.613 5.174-.361-23.876 7.188-29.682-8.45-5.264-21.823 26.511-9.167 27.137z" enable-background="accumulate" fill="#fff" fill-rule="evenodd"/>
5796 id="tspan8202-5-3-6-3-2-9-6" 1103 <path d="M877.52 650.19h123.04v172.53H877.52z" enable-background="accumulate" fill="none"/>
5797 x="3178.7151" 1104 </g>
5798 y="-129.06131" 1105 <g transform="matrix(1.0057 0 0 2.3995 3249.4 125.01)" clip-path="url(#et)" filter="url(#es)">
5799 style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:69.99999978px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#000000;fill-opacity:1">DATA SINK</tspan></text> 1106 <path d="M964 754.69l18.429 7.465 9.071-36.964-14.87 4.839L964 754.69z" enable-background="accumulate" fill="#fff" fill-rule="evenodd"/>
5800 <flowRoot 1107 <path d="M924.9 677.06h142.13v125.16H924.9z" enable-background="accumulate" fill="none"/>
5801 xml:space="preserve" 1108 </g>
5802 id="flowRoot7469" 1109 </g>
5803 style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:sans-serif;font-style:normal;font-weight:normal;font-size:57.5px;line-height:125%;letter-spacing:0px;word-spacing:0px;"><flowRegion 1110 <path d="m592.8 398.62l2899.5-102.16" fill="#f8d615" fill-rule="evenodd" marker-end="url(#er)" stroke="#f8d615" stroke-width="17.844"/>
5804 id="flowRegion7471"><rect 1111 <path d="m576.48 779.92l2914.5 416.44" enable-background="new" fill="#f8d615" fill-rule="evenodd" marker-end="url(#eq)" stroke="#f8d615" stroke-width="18"/>
5805 id="rect7473" 1112 <g font-family="sans-serif" letter-spacing="0" word-spacing="0">
5806 width="4297.5474" 1113 <text transform="translate(48.571 195.53)" x="80.219" y="107.387" fill="#f83615" font-size="40" style="line-height:125%">
5807 height="1851.537" 1114 <tspan x="80.219" y="107.387" font-size="50">CROP_DEFAULT</tspan>
5808 x="-52.635666" 1115 </text>
5809 y="70.623535" 1116 <g font-size="45.314">
5810 style="font-size:57.5px;" /></flowRegion><flowPara 1117 <text transform="matrix(.96106 0 0 1.0405 48.571 195.53)" x="3861.367" y="1281.72" enable-background="new" fill="#f80000" fill-opacity="0" style="line-height:125%">
5811 id="flowPara7475"></flowPara></flowRoot> </g> 1118 <tspan x="3861.367" y="1281.72" font-size="56.642">COMPOSE_PADDED</tspan>
1119 </text>
1120 <text transform="matrix(.96106 0 0 1.0405 48.571 195.53)" x="3615.155" y="49.157" enable-background="new" fill="#f8d615" style="line-height:125%">
1121 <tspan x="3615.155" y="49.157" font-size="50">COMPOSE_ACTIVE</tspan>
1122 </text>
1123 <text transform="matrix(.96106 0 0 1.0405 48.571 195.53)" x="2429.153" y="-3.166" enable-background="new" fill="#f83615" style="line-height:125%">
1124 <tspan x="2429.153" y="-3.166" font-size="50">COMPOSE_DEFAULT</tspan>
1125 </text>
1126 <text transform="matrix(.96106 0 0 1.0405 48.571 195.53)" x="3681.545" y="1289.954" enable-background="new" fill="#f815bb" style="line-height:125%">
1127 <tspan x="3681.545" y="1289.954" font-size="50">COMPOSE_PADDED</tspan>
1128 </text>
1129 </g>
1130 <text transform="matrix(.96106 0 0 1.0405 48.571 195.53)" x="2438.062" y="1368.429" enable-background="new" font-size="50" style="line-height:125%">
1131 <tspan x="2438.062" y="1368.429">COMPOSE_BONDS</tspan>
1132 </text>
1133 <g font-size="40">
1134 <text transform="translate(48.571 195.53)" x="8.082" y="1438.896" enable-background="new" style="line-height:125%">
1135 <tspan x="8.082" y="1438.896" font-size="50">CROP_BONDS</tspan>
1136 </text>
1137 <text transform="translate(48.571 195.53)" x="1455.443" y="-26.808" enable-background="new" style="line-height:125%">
1138 <tspan x="1455.443" y="-26.808" font-size="50">overscan area</tspan>
1139 </text>
1140 <text transform="translate(48.571 195.53)" x="179.631" y="385.388" enable-background="new" fill="#f8d615" style="line-height:125%">
1141 <tspan x="179.631" y="385.388" font-size="50">CROP_ACTIVE</tspan>
1142 </text>
1143 <text transform="translate(48.571 195.53)" x="636.674" y="-138.845" enable-background="new" style="line-height:125%">
1144 <tspan x="636.674" y="-138.845" font-size="70" font-weight="bold">DATA SOURCE</tspan>
1145 </text>
1146 </g>
1147 <text transform="matrix(.96106 0 0 1.0405 48.571 195.53)" x="3178.715" y="-129.061" enable-background="new" font-size="45.314" style="line-height:125%">
1148 <tspan x="3178.715" y="-129.061" font-size="70" font-weight="bold">DATA SINK</tspan>
1149 </text>
1150 </g>
5812</svg> 1151</svg>
diff --git a/Documentation/media/uapi/v4l/subdev-image-processing-crop.svg b/Documentation/media/uapi/v4l/subdev-image-processing-crop.svg
index 1903dd3846c2..ee1df49f83e8 100644
--- a/Documentation/media/uapi/v4l/subdev-image-processing-crop.svg
+++ b/Documentation/media/uapi/v4l/subdev-image-processing-crop.svg
@@ -18,11 +18,11 @@
18 id="metadata100"> 18 id="metadata100">
19 <rdf:RDF> 19 <rdf:RDF>
20 <cc:Work 20 <cc:Work
21 rdf:about=""> 21 rdf:about="">
22 <dc:format>image/svg+xml</dc:format> 22 <dc:format>image/svg+xml</dc:format>
23 <dc:type 23 <dc:type
24 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> 24 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
25 <dc:title /> 25 <dc:title />
26 </cc:Work> 26 </cc:Work>
27 </rdf:RDF> 27 </rdf:RDF>
28 </metadata> 28 </metadata>
diff --git a/Documentation/media/uapi/v4l/subdev-image-processing-full.svg b/Documentation/media/uapi/v4l/subdev-image-processing-full.svg
index 91cf51832c12..c10d222b9ea9 100644
--- a/Documentation/media/uapi/v4l/subdev-image-processing-full.svg
+++ b/Documentation/media/uapi/v4l/subdev-image-processing-full.svg
@@ -18,11 +18,11 @@
18 id="metadata260"> 18 id="metadata260">
19 <rdf:RDF> 19 <rdf:RDF>
20 <cc:Work 20 <cc:Work
21 rdf:about=""> 21 rdf:about="">
22 <dc:format>image/svg+xml</dc:format> 22 <dc:format>image/svg+xml</dc:format>
23 <dc:type 23 <dc:type
24 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> 24 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
25 <dc:title /> 25 <dc:title />
26 </cc:Work> 26 </cc:Work>
27 </rdf:RDF> 27 </rdf:RDF>
28 </metadata> 28 </metadata>
diff --git a/Documentation/media/uapi/v4l/subdev-image-processing-scaling-multi-source.svg b/Documentation/media/uapi/v4l/subdev-image-processing-scaling-multi-source.svg
index cedcbf598923..3cb68bf9fc04 100644
--- a/Documentation/media/uapi/v4l/subdev-image-processing-scaling-multi-source.svg
+++ b/Documentation/media/uapi/v4l/subdev-image-processing-scaling-multi-source.svg
@@ -18,11 +18,11 @@
18 id="metadata186"> 18 id="metadata186">
19 <rdf:RDF> 19 <rdf:RDF>
20 <cc:Work 20 <cc:Work
21 rdf:about=""> 21 rdf:about="">
22 <dc:format>image/svg+xml</dc:format> 22 <dc:format>image/svg+xml</dc:format>
23 <dc:type 23 <dc:type
24 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> 24 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
25 <dc:title /> 25 <dc:title />
26 </cc:Work> 26 </cc:Work>
27 </rdf:RDF> 27 </rdf:RDF>
28 </metadata> 28 </metadata>
diff --git a/Documentation/media/uapi/v4l/vbi_525.svg b/Documentation/media/uapi/v4l/vbi_525.svg
index b05f7777ccf8..643aec8d0ba2 100644
--- a/Documentation/media/uapi/v4l/vbi_525.svg
+++ b/Documentation/media/uapi/v4l/vbi_525.svg
@@ -42,19 +42,21 @@
42 inkscape:current-layer="g10" 42 inkscape:current-layer="g10"
43 units="mm" /><metadata 43 units="mm" /><metadata
44 id="metadata8"><rdf:RDF><cc:Work 44 id="metadata8"><rdf:RDF><cc:Work
45 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type 45 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
46 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs 46 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
47 id="defs6"><clipPath 47 id="defs6"><clipPath
48 id="clipPath20" 48 id="clipPath20"
49 clipPathUnits="userSpaceOnUse"><path 49 clipPathUnits="userSpaceOnUse"><path
50 inkscape:connector-curvature="0" 50 inkscape:connector-curvature="0"
51 id="path22" 51 id="path22"
52 d="m 0,0 5950,0 0,3922 L 0,3922 0,0 Z m 0,3922 5950,0 0,1 -5950,0 0,-1 z m 0,1 1359,0 0,1 -1359,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1363,0 0,1 -1363,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1367,0 0,1 -1367,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1371,0 0,1 -1371,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1375,0 0,1 -1375,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1379,0 0,1 -1379,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1383,0 0,1 -1383,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1387,0 0,1 -1387,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1391,0 0,1 -1391,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1390,0 0,1 -1390,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1386,0 0,1 -1386,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1382,0 0,1 -1382,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1378,0 0,1 -1378,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1374,0 0,1 -1374,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1370,0 0,1 -1370,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1366,0 0,1 -1366,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1362,0 0,1 -1362,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1358,0 0,1 -1358,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 5950,0 0,1 -5950,0 0,-1 z m 0,1 5950,0 0,4478 -5950,0 0,-4478 z" /></clipPath><clipPath 52 d="m 0,0 5950,0 0,3922 L 0,3922 0,0 Z m 0,3922 5950,0 0,1 -5950,0 0,-1 z m 0,1 1359,0 0,1 -1359,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1363,0 0,1 -1363,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1367,0 0,1 -1367,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1371,0 0,1 -1371,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1375,0 0,1 -1375,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1379,0 0,1 -1379,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1383,0 0,1 -1383,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1387,0 0,1 -1387,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1391,0 0,1 -1391,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1390,0 0,1 -1390,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1386,0 0,1 -1386,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1382,0 0,1 -1382,0 0,-1 z m
531399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1378,0 0,1 -1378,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1374,0 0,1 -1374,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1370,0 0,1 -1370,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1366,0 0,1 -1366,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1362,0 0,1 -1362,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1358,0 0,1 -1358,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 5950,0 0,1 -5950,0 0,-1 z m 0,1 5950,0 0,4478 -5950,0 0,-4478 z" /></clipPath><clipPath
53 id="clipPath98" 54 id="clipPath98"
54 clipPathUnits="userSpaceOnUse"><path 55 clipPathUnits="userSpaceOnUse"><path
55 inkscape:connector-curvature="0" 56 inkscape:connector-curvature="0"
56 id="path100" 57 id="path100"
57 d="m 0,0 5950,0 0,4546 L 0,4546 0,0 Z m 0,4546 5950,0 0,1 -5950,0 0,-1 z m 0,1 1360,0 0,1 -1360,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1364,0 0,1 -1364,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1368,0 0,1 -1368,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1372,0 0,1 -1372,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1376,0 0,1 -1376,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1380,0 0,1 -1380,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1384,0 0,1 -1384,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1388,0 0,1 -1388,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1391,0 0,1 -1391,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1389,0 0,1 -1389,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1385,0 0,1 -1385,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1381,0 0,1 -1381,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1377,0 0,1 -1377,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1373,0 0,1 -1373,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1369,0 0,1 -1369,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1365,0 0,1 -1365,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1361,0 0,1 -1361,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1357,0 0,1 -1357,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 5950,0 0,1 -5950,0 0,-1 z m 0,1 5950,0 0,3854 -5950,0 0,-3854 z" /></clipPath></defs><g 58 d="m 0,0 5950,0 0,4546 L 0,4546 0,0 Z m 0,4546 5950,0 0,1 -5950,0 0,-1 z m 0,1 1360,0 0,1 -1360,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1364,0 0,1 -1364,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1368,0 0,1 -1368,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1372,0 0,1 -1372,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1376,0 0,1 -1376,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1380,0 0,1 -1380,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1384,0 0,1 -1384,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1388,0 0,1 -1388,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1391,0 0,1 -1391,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1389,0 0,1 -1389,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1385,0 0,1 -1385,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1381,0 0,1 -1381,0 0,-1 z m
591399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1377,0 0,1 -1377,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1373,0 0,1 -1373,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1369,0 0,1 -1369,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1365,0 0,1 -1365,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1361,0 0,1 -1361,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 1357,0 0,1 -1357,0 0,-1 z m 1399,0 4551,0 0,1 -4551,0 0,-1 z m -1399,1 5950,0 0,1 -5950,0 0,-1 z m 0,1 5950,0 0,3854 -5950,0 0,-3854 z" /></clipPath></defs><g
58 transform="matrix(0.125,0,0,-0.125,-87.571875,638.05691)" 60 transform="matrix(0.125,0,0,-0.125,-87.571875,638.05691)"
59 inkscape:label="vbi_525" 61 inkscape:label="vbi_525"
60 inkscape:groupmode="layer" 62 inkscape:groupmode="layer"
@@ -62,165 +64,165 @@
62 transform="matrix(1.3000026,0,0,1.3000026,-210.17435,-1094.2823)" 64 transform="matrix(1.3000026,0,0,1.3000026,-210.17435,-1094.2823)"
63 id="g12" 65 id="g12"
64 style=""><path 66 style=""><path
65 inkscape:connector-curvature="0" 67 inkscape:connector-curvature="0"
66 id="path14" 68 id="path14"
67 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 69 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
68 d="m 1281.75,3974.45 0,-85.05" /></g><g 70 d="m 1281.75,3974.45 0,-85.05" /></g><g
69 transform="matrix(1.3000026,0,0,1.3000026,-210.17435,-1094.2823)" 71 transform="matrix(1.3000026,0,0,1.3000026,-210.17435,-1094.2823)"
70 id="g16" 72 id="g16"
71 style=""><g 73 style=""><g
72 clip-path="url(#clipPath20)" 74 clip-path="url(#clipPath20)"
73 id="g18" 75 id="g18"
74 style=""><path 76 style=""><path
75 inkscape:connector-curvature="0" 77 inkscape:connector-curvature="0"
76 id="path24" 78 id="path24"
77 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 79 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
78 d="m 1281.75,3931.93 113.4,0" /></g></g><g 80 d="m 1281.75,3931.93 113.4,0" /></g></g><g
79 transform="matrix(1.3000026,0,0,1.3000026,-210.17435,-1094.2823)" 81 transform="matrix(1.3000026,0,0,1.3000026,-210.17435,-1094.2823)"
80 id="g26" 82 id="g26"
81 style=""><path 83 style=""><path
82 inkscape:connector-curvature="0" 84 inkscape:connector-curvature="0"
83 id="path28" 85 id="path28"
84 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" 86 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
85 d="m 1352.31,3922.48 37.8,9.45 -37.8,9.45 0,-18.9" /><path 87 d="m 1352.31,3922.48 37.8,9.45 -37.8,9.45 0,-18.9" /><path
86 inkscape:connector-curvature="0" 88 inkscape:connector-curvature="0"
87 id="path30" 89 id="path30"
88 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 90 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
89 d="m 1352.31,3922.48 37.8,9.45 -37.8,9.45 0,-18.9 z" /><path 91 d="m 1352.31,3922.48 37.8,9.45 -37.8,9.45 0,-18.9 z" /><path
90 inkscape:connector-curvature="0" 92 inkscape:connector-curvature="0"
91 id="path32" 93 id="path32"
92 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 94 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
93 d="m 4683.75,4059.5 0,-56.7" /><path 95 d="m 4683.75,4059.5 0,-56.7" /><path
94 inkscape:connector-curvature="0" 96 inkscape:connector-curvature="0"
95 id="path34" 97 id="path34"
96 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 98 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
97 d="m 4400.25,4059.5 0,-56.7" /><path 99 d="m 4400.25,4059.5 0,-56.7" /><path
98 inkscape:connector-curvature="0" 100 inkscape:connector-curvature="0"
99 id="path36" 101 id="path36"
100 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 102 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
101 d="m 4116.75,4059.5 0,-56.7" /><path 103 d="m 4116.75,4059.5 0,-56.7" /><path
102 inkscape:connector-curvature="0" 104 inkscape:connector-curvature="0"
103 id="path38" 105 id="path38"
104 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 106 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
105 d="m 3833.25,4059.5 0,-56.7" /><path 107 d="m 3833.25,4059.5 0,-56.7" /><path
106 inkscape:connector-curvature="0" 108 inkscape:connector-curvature="0"
107 id="path40" 109 id="path40"
108 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 110 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
109 d="m 3549.75,4059.5 0,-56.7" /><path 111 d="m 3549.75,4059.5 0,-56.7" /><path
110 inkscape:connector-curvature="0" 112 inkscape:connector-curvature="0"
111 id="path42" 113 id="path42"
112 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 114 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
113 d="m 3266.25,4059.5 0,-56.7" /><path 115 d="m 3266.25,4059.5 0,-56.7" /><path
114 inkscape:connector-curvature="0" 116 inkscape:connector-curvature="0"
115 id="path44" 117 id="path44"
116 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 118 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
117 d="m 2982.75,4059.5 0,-56.7" /><path 119 d="m 2982.75,4059.5 0,-56.7" /><path
118 inkscape:connector-curvature="0" 120 inkscape:connector-curvature="0"
119 id="path46" 121 id="path46"
120 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 122 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
121 d="m 2699.25,4059.5 0,-56.7" /><path 123 d="m 2699.25,4059.5 0,-56.7" /><path
122 inkscape:connector-curvature="0" 124 inkscape:connector-curvature="0"
123 id="path48" 125 id="path48"
124 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 126 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
125 d="m 2415.75,4059.5 0,-56.7" /><path 127 d="m 2415.75,4059.5 0,-56.7" /><path
126 inkscape:connector-curvature="0" 128 inkscape:connector-curvature="0"
127 id="path50" 129 id="path50"
128 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 130 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
129 d="m 2132.25,4059.5 0,-56.7" /><path 131 d="m 2132.25,4059.5 0,-56.7" /><path
130 inkscape:connector-curvature="0" 132 inkscape:connector-curvature="0"
131 id="path52" 133 id="path52"
132 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 134 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
133 d="m 1848.75,4059.5 0,-56.7" /><path 135 d="m 1848.75,4059.5 0,-56.7" /><path
134 inkscape:connector-curvature="0" 136 inkscape:connector-curvature="0"
135 id="path54" 137 id="path54"
136 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 138 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
137 d="m 1565.25,4059.5 0,-56.7" /><path 139 d="m 1565.25,4059.5 0,-56.7" /><path
138 inkscape:connector-curvature="0" 140 inkscape:connector-curvature="0"
139 id="path56" 141 id="path56"
140 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 142 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
141 d="m 1281.75,4059.5 0,-56.7" /><path 143 d="m 1281.75,4059.5 0,-56.7" /><path
142 inkscape:connector-curvature="0" 144 inkscape:connector-curvature="0"
143 id="path58" 145 id="path58"
144 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 146 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
145 d="m 998.25,4059.5 0,-56.7" /><path 147 d="m 998.25,4059.5 0,-56.7" /><path
146 inkscape:connector-curvature="0" 148 inkscape:connector-curvature="0"
147 id="path60" 149 id="path60"
148 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 150 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
149 d="m 714.75,4059.5 0,-56.7" /><path 151 d="m 714.75,4059.5 0,-56.7" /><path
150 inkscape:connector-curvature="0" 152 inkscape:connector-curvature="0"
151 id="path62" 153 id="path62"
152 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 154 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
153 d="m 4683.75,4144.55 0,-56.7" /><path 155 d="m 4683.75,4144.55 0,-56.7" /><path
154 inkscape:connector-curvature="0" 156 inkscape:connector-curvature="0"
155 id="path64" 157 id="path64"
156 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 158 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
157 d="m 4400.25,4144.55 0,-56.7" /><path 159 d="m 4400.25,4144.55 0,-56.7" /><path
158 inkscape:connector-curvature="0" 160 inkscape:connector-curvature="0"
159 id="path66" 161 id="path66"
160 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 162 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
161 d="m 4116.75,4144.55 0,-56.7" /><path 163 d="m 4116.75,4144.55 0,-56.7" /><path
162 inkscape:connector-curvature="0" 164 inkscape:connector-curvature="0"
163 id="path68" 165 id="path68"
164 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 166 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
165 d="m 3833.25,4144.55 0,-56.7" /><path 167 d="m 3833.25,4144.55 0,-56.7" /><path
166 inkscape:connector-curvature="0" 168 inkscape:connector-curvature="0"
167 id="path70" 169 id="path70"
168 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 170 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
169 d="m 3549.75,4144.55 0,-56.7" /><path 171 d="m 3549.75,4144.55 0,-56.7" /><path
170 inkscape:connector-curvature="0" 172 inkscape:connector-curvature="0"
171 id="path72" 173 id="path72"
172 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 174 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
173 d="m 3266.25,4144.55 0,-56.7" /><path 175 d="m 3266.25,4144.55 0,-56.7" /><path
174 inkscape:connector-curvature="0" 176 inkscape:connector-curvature="0"
175 id="path74" 177 id="path74"
176 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 178 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
177 d="m 2982.75,4144.55 0,-56.7" /><path 179 d="m 2982.75,4144.55 0,-56.7" /><path
178 inkscape:connector-curvature="0" 180 inkscape:connector-curvature="0"
179 id="path76" 181 id="path76"
180 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 182 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
181 d="m 2699.25,4144.55 0,-56.7" /><path 183 d="m 2699.25,4144.55 0,-56.7" /><path
182 inkscape:connector-curvature="0" 184 inkscape:connector-curvature="0"
183 id="path78" 185 id="path78"
184 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 186 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
185 d="m 2415.75,4144.55 0,-56.7" /><path 187 d="m 2415.75,4144.55 0,-56.7" /><path
186 inkscape:connector-curvature="0" 188 inkscape:connector-curvature="0"
187 id="path80" 189 id="path80"
188 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 190 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
189 d="m 2132.25,4144.55 0,-56.7" /><path 191 d="m 2132.25,4144.55 0,-56.7" /><path
190 inkscape:connector-curvature="0" 192 inkscape:connector-curvature="0"
191 id="path82" 193 id="path82"
192 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 194 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
193 d="m 1848.75,4144.55 0,-56.7" /><path 195 d="m 1848.75,4144.55 0,-56.7" /><path
194 inkscape:connector-curvature="0" 196 inkscape:connector-curvature="0"
195 id="path84" 197 id="path84"
196 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 198 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
197 d="m 1565.25,4144.55 0,-56.7" /><path 199 d="m 1565.25,4144.55 0,-56.7" /><path
198 inkscape:connector-curvature="0" 200 inkscape:connector-curvature="0"
199 id="path86" 201 id="path86"
200 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 202 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
201 d="m 1281.75,4144.55 0,-56.7" /><path 203 d="m 1281.75,4144.55 0,-56.7" /><path
202 inkscape:connector-curvature="0" 204 inkscape:connector-curvature="0"
203 id="path88" 205 id="path88"
204 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 206 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
205 d="m 998.25,4144.55 0,-56.7" /><path 207 d="m 998.25,4144.55 0,-56.7" /><path
206 inkscape:connector-curvature="0" 208 inkscape:connector-curvature="0"
207 id="path90" 209 id="path90"
208 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 210 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
209 d="m 714.75,4144.55 0,-56.7" /><path 211 d="m 714.75,4144.55 0,-56.7" /><path
210 inkscape:connector-curvature="0" 212 inkscape:connector-curvature="0"
211 id="path92" 213 id="path92"
212 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 214 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
213 d="m 1281.75,4598.15 0,-85.05" /></g><g 215 d="m 1281.75,4598.15 0,-85.05" /></g><g
214 transform="matrix(1.3000026,0,0,1.3000026,-210.17435,-1094.2823)" 216 transform="matrix(1.3000026,0,0,1.3000026,-210.17435,-1094.2823)"
215 id="g94" 217 id="g94"
216 style=""><g 218 style=""><g
217 clip-path="url(#clipPath98)" 219 clip-path="url(#clipPath98)"
218 id="g96" 220 id="g96"
219 style=""><path 221 style=""><path
220 inkscape:connector-curvature="0" 222 inkscape:connector-curvature="0"
221 id="path102" 223 id="path102"
222 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 224 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
223 d="m 1281.75,4555.63 113.4,0" /></g></g><path 225 d="m 1281.75,4555.63 113.4,0" /></g></g><path
224 d="m 1547.8322,4815.7637 49.1401,12.2851 -49.1401,12.285 0,-24.5701" 226 d="m 1547.8322,4815.7637 49.1401,12.2851 -49.1401,12.285 0,-24.5701"
225 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" 227 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
226 id="path106" 228 id="path106"
@@ -546,266 +548,266 @@
546 id="text268" 548 id="text268"
547 style="font-variant:normal;font-weight:normal;font-size:61.42512512px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 549 style="font-variant:normal;font-weight:normal;font-size:61.42512512px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
548 transform="scale(1,-1)"><tspan 550 transform="scale(1,-1)"><tspan
549 id="tspan270" 551 id="tspan270"
550 sodipodi:role="line" 552 sodipodi:role="line"
551 y="-4035.6582" 553 y="-4035.6582"
552 x="1621.9453 1642.3999 1676.5522">(1)</tspan></text> 554 x="1621.9453 1642.3999 1676.5522">(1)</tspan></text>
553<text 555<text
554 y="-4127.7959" 556 y="-4127.7959"
555 x="4199.7334" 557 x="4199.7334"
556 id="text272" 558 id="text272"
557 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 559 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
558 transform="scale(1,-1)"><tspan 560 transform="scale(1,-1)"><tspan
559 id="tspan274" 561 id="tspan274"
560 sodipodi:role="line" 562 sodipodi:role="line"
561 y="-4127.7959" 563 y="-4127.7959"
562 x="4199.7334 3831.1829 2725.5305 3112.509 3462.6321 4568.2842 4916.3442 4957.3271 5653.4458 5694.4287 5284.895 5325.8779 2356.9773 1988.4264 1210.3424 1251.3252 1292.3081 1619.8759 841.79163 882.77454 923.75732">874569101211322631262</tspan><tspan 564 x="4199.7334 3831.1829 2725.5305 3112.509 3462.6321 4568.2842 4916.3442 4957.3271 5653.4458 5694.4287 5284.895 5325.8779 2356.9773 1988.4264 1210.3424 1251.3252 1292.3081 1619.8759 841.79163 882.77454 923.75732">874569101211322631262</tspan><tspan
563 id="tspan276" 565 id="tspan276"
564 sodipodi:role="line" 566 sodipodi:role="line"
565 y="-4238.3613" 567 y="-4238.3613"
566 x="4158.748 4199.7314 4240.7144 3790.1975 3831.1807 3872.1633 2684.5457 2725.5283 2766.5112 3071.5237 3112.5063 3153.4895 3421.647 3462.6299 3503.6125 4527.2988 4568.2822 4609.2646 4895.8496 4936.833 4977.8154 5632.9517 5673.9341 5714.917 5264.4009 5305.3833 5346.3662 2315.9946 2356.9775 2397.9604 1947.444 1988.4269 2029.4097 1210.3424 1251.3252 1292.3081 1578.8931 1619.876 1660.8589 841.79163 882.77454 923.75732">271270267268269272273275274266265263264262</tspan><tspan 568 x="4158.748 4199.7314 4240.7144 3790.1975 3831.1807 3872.1633 2684.5457 2725.5283 2766.5112 3071.5237 3112.5063 3153.4895 3421.647 3462.6299 3503.6125 4527.2988 4568.2822 4609.2646 4895.8496 4936.833 4977.8154 5632.9517 5673.9341 5714.917 5264.4009 5305.3833 5346.3662 2315.9946 2356.9775 2397.9604 1947.444 1988.4269 2029.4097 1210.3424 1251.3252 1292.3081 1578.8931 1619.876 1660.8589 841.79163 882.77454 923.75732">271270267268269272273275274266265263264262</tspan><tspan
567 id="tspan278" 569 id="tspan278"
568 sodipodi:role="line" 570 sodipodi:role="line"
569 y="-5049.1729" 571 y="-5049.1729"
570 x="2725.5347 4568.2881 1988.4331 2356.9839 1619.8822 3094.0852 3462.636 4916.3506 4957.334 5284.9019 5325.8843 5653.4526 5694.4351 3812.7656 4181.3164">492315610111278</tspan><tspan 572 x="2725.5347 4568.2881 1988.4331 2356.9839 1619.8822 3094.0852 3462.636 4916.3506 4957.334 5284.9019 5325.8843 5653.4526 5694.4351 3812.7656 4181.3164">492315610111278</tspan><tspan
571 id="tspan280" 573 id="tspan280"
572 sodipodi:role="line" 574 sodipodi:role="line"
573 y="-4938.6074" 575 y="-4938.6074"
574 x="2725.5474 4568.3013 1988.446 2356.9966 1619.8953 3094.0981 3462.6489 4916.3638 4957.3472 5284.9146 5325.8975 5653.4653 5694.4482 3812.7788 4181.3296">492315610111278</tspan><tspan 576 x="2725.5474 4568.3013 1988.446 2356.9966 1619.8953 3094.0981 3462.6489 4916.3638 4957.3472 5284.9146 5325.8975 5653.4653 5694.4482 3812.7788 4181.3296">492315610111278</tspan><tspan
575 id="tspan282" 577 id="tspan282"
576 sodipodi:role="line" 578 sodipodi:role="line"
577 y="-5049.1729" 579 y="-5049.1729"
578 x="841.81781 882.8006 923.78326">524</tspan><tspan 580 x="841.81781 882.8006 923.78326">524</tspan><tspan
579 id="tspan284" 581 id="tspan284"
580 sodipodi:role="line" 582 sodipodi:role="line"
581 y="-4938.6074" 583 y="-4938.6074"
582 x="841.81781 882.8006 923.78326">261</tspan><tspan 584 x="841.81781 882.8006 923.78326">261</tspan><tspan
583 id="tspan286" 585 id="tspan286"
584 sodipodi:role="line" 586 sodipodi:role="line"
585 y="-5049.1729" 587 y="-5049.1729"
586 x="1210.3684 1251.3512 1292.3342">525</tspan><tspan 588 x="1210.3684 1251.3512 1292.3342">525</tspan><tspan
587 id="tspan288" 589 id="tspan288"
588 sodipodi:role="line" 590 sodipodi:role="line"
589 y="-4938.6074" 591 y="-4938.6074"
590 x="1210.3684 1251.3512 1292.3342">262</tspan><tspan 592 x="1210.3684 1251.3512 1292.3342">262</tspan><tspan
591 id="tspan290" 593 id="tspan290"
592 sodipodi:role="line" 594 sodipodi:role="line"
593 y="-5049.1729" 595 y="-5049.1729"
594 x="6022.0161 6062.999">22</tspan><tspan 596 x="6022.0161 6062.999">22</tspan><tspan
595 id="tspan292" 597 id="tspan292"
596 sodipodi:role="line" 598 sodipodi:role="line"
597 y="-4938.6074" 599 y="-4938.6074"
598 x="6022.0161 6062.999">22</tspan><tspan 600 x="6022.0161 6062.999">22</tspan><tspan
599 id="tspan294" 601 id="tspan294"
600 sodipodi:role="line" 602 sodipodi:role="line"
601 y="-5049.1729" 603 y="-5049.1729"
602 x="6390.5669 6431.5498">23</tspan><tspan 604 x="6390.5669 6431.5498">23</tspan><tspan
603 id="tspan296" 605 id="tspan296"
604 sodipodi:role="line" 606 sodipodi:role="line"
605 y="-4938.6074" 607 y="-4938.6074"
606 x="6390.5669 6431.5498">23</tspan><tspan 608 x="6390.5669 6431.5498">23</tspan><tspan
607 id="tspan298" 609 id="tspan298"
608 sodipodi:role="line" 610 sodipodi:role="line"
609 y="-4238.3623" 611 y="-4238.3623"
610 x="6001.5244 6042.5068 6083.4902">285</tspan><tspan 612 x="6001.5244 6042.5068 6083.4902">285</tspan><tspan
611 id="tspan300" 613 id="tspan300"
612 sodipodi:role="line" 614 sodipodi:role="line"
613 y="-4127.7964" 615 y="-4127.7964"
614 x="6022.0156 6062.9985">22</tspan><tspan 616 x="6022.0156 6062.9985">22</tspan><tspan
615 id="tspan302" 617 id="tspan302"
616 sodipodi:role="line" 618 sodipodi:role="line"
617 y="-4238.3623" 619 y="-4238.3623"
618 x="6370.0747 6411.0571 6452.04">286</tspan><tspan 620 x="6370.0747 6411.0571 6452.04">286</tspan><tspan
619 id="tspan304" 621 id="tspan304"
620 sodipodi:role="line" 622 sodipodi:role="line"
621 y="-4127.7964" 623 y="-4127.7964"
622 x="6390.5664 6431.5493">23</tspan><tspan 624 x="6390.5664 6431.5493">23</tspan><tspan
623 id="tspan306" 625 id="tspan306"
624 sodipodi:role="line" 626 sodipodi:role="line"
625 y="-4459.4922" 627 y="-4459.4922"
626 x="3540.4146 3581.3972 3618.2522 3638.7437 3659.2354 3679.7266 3696.0901 3737.073 3753.4365">1st field</tspan><tspan 628 x="3540.4146 3581.3972 3618.2522 3638.7437 3659.2354 3679.7266 3696.0901 3737.073 3753.4365">1st field</tspan><tspan
627 id="tspan308" 629 id="tspan308"
628 sodipodi:role="line" 630 sodipodi:role="line"
629 y="-3648.6809" 631 y="-3648.6809"
630 x="3528.1047 3569.0876 3610.0703 3651.0532 3671.5447 3692.0361 3708.3999 3749.3826 3765.7463">2nd field</tspan></text> 632 x="3528.1047 3569.0876 3610.0703 3651.0532 3671.5447 3692.0361 3708.3999 3749.3826 3765.7463">2nd field</tspan></text>
631<text 633<text
632 y="-4127.7959" 634 y="-4127.7959"
633 x="4199.7334 3831.1829 2725.5305 3112.509 3462.6321 4568.2842 4916.3442 4957.3271 5653.4458 5694.4287 5284.895 5325.8779 2356.9773 1988.4264 1210.3424 1251.3252 1292.3081 1619.8759 841.79163 882.77454 923.75732" 635 x="4199.7334 3831.1829 2725.5305 3112.509 3462.6321 4568.2842 4916.3442 4957.3271 5653.4458 5694.4287 5284.895 5325.8779 2356.9773 1988.4264 1210.3424 1251.3252 1292.3081 1619.8759 841.79163 882.77454 923.75732"
634 id="text3632" 636 id="text3632"
635 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 637 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
636 transform="scale(1,-1)"><tspan 638 transform="scale(1,-1)"><tspan
637 id="tspan3634" 639 id="tspan3634"
638 sodipodi:role="line" 640 sodipodi:role="line"
639 y="-4127.7959" 641 y="-4127.7959"
640 x="4199.7334 3831.1829 2725.5305 3112.509 3462.6321 4568.2842 4916.3442 4957.3271 5653.4458 5694.4287 5284.895 5325.8779 2356.9773 1988.4264 1210.3424 1251.3252 1292.3081 1619.8759 841.79163 882.77454 923.75732">874569101211322631262</tspan></text> 642 x="4199.7334 3831.1829 2725.5305 3112.509 3462.6321 4568.2842 4916.3442 4957.3271 5653.4458 5694.4287 5284.895 5325.8779 2356.9773 1988.4264 1210.3424 1251.3252 1292.3081 1619.8759 841.79163 882.77454 923.75732">874569101211322631262</tspan></text>
641<text 643<text
642 y="-4238.3613" 644 y="-4238.3613"
643 x="4158.748 4199.7314 4240.7144 3790.1975 3831.1807 3872.1633 2684.5457 2725.5283 2766.5112 3071.5237 3112.5063 3153.4895 3421.647 3462.6299 3503.6125 4527.2988 4568.2822 4609.2646 4895.8496 4936.833 4977.8154 5632.9517 5673.9341 5714.917 5264.4009 5305.3833 5346.3662 2315.9946 2356.9775 2397.9604 1947.444 1988.4269 2029.4097 1210.3424 1251.3252 1292.3081 1578.8931 1619.876 1660.8589 841.79163 882.77454 923.75732" 645 x="4158.748 4199.7314 4240.7144 3790.1975 3831.1807 3872.1633 2684.5457 2725.5283 2766.5112 3071.5237 3112.5063 3153.4895 3421.647 3462.6299 3503.6125 4527.2988 4568.2822 4609.2646 4895.8496 4936.833 4977.8154 5632.9517 5673.9341 5714.917 5264.4009 5305.3833 5346.3662 2315.9946 2356.9775 2397.9604 1947.444 1988.4269 2029.4097 1210.3424 1251.3252 1292.3081 1578.8931 1619.876 1660.8589 841.79163 882.77454 923.75732"
644 id="text3636" 646 id="text3636"
645 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 647 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
646 transform="scale(1,-1)"><tspan 648 transform="scale(1,-1)"><tspan
647 id="tspan3638" 649 id="tspan3638"
648 sodipodi:role="line" 650 sodipodi:role="line"
649 y="-4238.3613" 651 y="-4238.3613"
650 x="4158.748 4199.7314 4240.7144 3790.1975 3831.1807 3872.1633 2684.5457 2725.5283 2766.5112 3071.5237 3112.5063 3153.4895 3421.647 3462.6299 3503.6125 4527.2988 4568.2822 4609.2646 4895.8496 4936.833 4977.8154 5632.9517 5673.9341 5714.917 5264.4009 5305.3833 5346.3662 2315.9946 2356.9775 2397.9604 1947.444 1988.4269 2029.4097 1210.3424 1251.3252 1292.3081 1578.8931 1619.876 1660.8589 841.79163 882.77454 923.75732">271270267268269272273275274266265263264262</tspan></text> 652 x="4158.748 4199.7314 4240.7144 3790.1975 3831.1807 3872.1633 2684.5457 2725.5283 2766.5112 3071.5237 3112.5063 3153.4895 3421.647 3462.6299 3503.6125 4527.2988 4568.2822 4609.2646 4895.8496 4936.833 4977.8154 5632.9517 5673.9341 5714.917 5264.4009 5305.3833 5346.3662 2315.9946 2356.9775 2397.9604 1947.444 1988.4269 2029.4097 1210.3424 1251.3252 1292.3081 1578.8931 1619.876 1660.8589 841.79163 882.77454 923.75732">271270267268269272273275274266265263264262</tspan></text>
651<text 653<text
652 y="-5049.1729" 654 y="-5049.1729"
653 x="2725.5347 4568.2881 1988.4331 2356.9839 1619.8822 3094.0852 3462.636 4916.3506 4957.334 5284.9019 5325.8843 5653.4526 5694.4351 3812.7656 4181.3164" 655 x="2725.5347 4568.2881 1988.4331 2356.9839 1619.8822 3094.0852 3462.636 4916.3506 4957.334 5284.9019 5325.8843 5653.4526 5694.4351 3812.7656 4181.3164"
654 id="text3640" 656 id="text3640"
655 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 657 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
656 transform="scale(1,-1)"><tspan 658 transform="scale(1,-1)"><tspan
657 id="tspan3642" 659 id="tspan3642"
658 sodipodi:role="line" 660 sodipodi:role="line"
659 y="-5049.1729" 661 y="-5049.1729"
660 x="2725.5347 4568.2881 1988.4331 2356.9839 1619.8822 3094.0852 3462.636 4916.3506 4957.334 5284.9019 5325.8843 5653.4526 5694.4351 3812.7656 4181.3164">492315610111278</tspan></text> 662 x="2725.5347 4568.2881 1988.4331 2356.9839 1619.8822 3094.0852 3462.636 4916.3506 4957.334 5284.9019 5325.8843 5653.4526 5694.4351 3812.7656 4181.3164">492315610111278</tspan></text>
661<text 663<text
662 y="-4938.6074" 664 y="-4938.6074"
663 x="2725.5474 4568.3013 1988.446 2356.9966 1619.8953 3094.0981 3462.6489 4916.3638 4957.3472 5284.9146 5325.8975 5653.4653 5694.4482 3812.7788 4181.3296" 665 x="2725.5474 4568.3013 1988.446 2356.9966 1619.8953 3094.0981 3462.6489 4916.3638 4957.3472 5284.9146 5325.8975 5653.4653 5694.4482 3812.7788 4181.3296"
664 id="text3644" 666 id="text3644"
665 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 667 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
666 transform="scale(1,-1)"><tspan 668 transform="scale(1,-1)"><tspan
667 id="tspan3646" 669 id="tspan3646"
668 sodipodi:role="line" 670 sodipodi:role="line"
669 y="-4938.6074" 671 y="-4938.6074"
670 x="2725.5474 4568.3013 1988.446 2356.9966 1619.8953 3094.0981 3462.6489 4916.3638 4957.3472 5284.9146 5325.8975 5653.4653 5694.4482 3812.7788 4181.3296">492315610111278</tspan></text> 672 x="2725.5474 4568.3013 1988.446 2356.9966 1619.8953 3094.0981 3462.6489 4916.3638 4957.3472 5284.9146 5325.8975 5653.4653 5694.4482 3812.7788 4181.3296">492315610111278</tspan></text>
671<text 673<text
672 y="-5049.1729" 674 y="-5049.1729"
673 x="841.81781 882.8006 923.78326" 675 x="841.81781 882.8006 923.78326"
674 id="text3648" 676 id="text3648"
675 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 677 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
676 transform="scale(1,-1)"><tspan 678 transform="scale(1,-1)"><tspan
677 id="tspan3650" 679 id="tspan3650"
678 sodipodi:role="line" 680 sodipodi:role="line"
679 y="-5049.1729" 681 y="-5049.1729"
680 x="841.81781 882.8006 923.78326">524</tspan></text> 682 x="841.81781 882.8006 923.78326">524</tspan></text>
681<text 683<text
682 y="-4938.6074" 684 y="-4938.6074"
683 x="841.81781 882.8006 923.78326" 685 x="841.81781 882.8006 923.78326"
684 id="text3652" 686 id="text3652"
685 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 687 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
686 transform="scale(1,-1)"><tspan 688 transform="scale(1,-1)"><tspan
687 id="tspan3654" 689 id="tspan3654"
688 sodipodi:role="line" 690 sodipodi:role="line"
689 y="-4938.6074" 691 y="-4938.6074"
690 x="841.81781 882.8006 923.78326">261</tspan></text> 692 x="841.81781 882.8006 923.78326">261</tspan></text>
691<text 693<text
692 y="-5049.1729" 694 y="-5049.1729"
693 x="1210.3684 1251.3512 1292.3342" 695 x="1210.3684 1251.3512 1292.3342"
694 id="text3656" 696 id="text3656"
695 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 697 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
696 transform="scale(1,-1)"><tspan 698 transform="scale(1,-1)"><tspan
697 id="tspan3658" 699 id="tspan3658"
698 sodipodi:role="line" 700 sodipodi:role="line"
699 y="-5049.1729" 701 y="-5049.1729"
700 x="1210.3684 1251.3512 1292.3342">525</tspan></text> 702 x="1210.3684 1251.3512 1292.3342">525</tspan></text>
701<text 703<text
702 y="-4938.6074" 704 y="-4938.6074"
703 x="1210.3684 1251.3512 1292.3342" 705 x="1210.3684 1251.3512 1292.3342"
704 id="text3660" 706 id="text3660"
705 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 707 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
706 transform="scale(1,-1)"><tspan 708 transform="scale(1,-1)"><tspan
707 id="tspan3662" 709 id="tspan3662"
708 sodipodi:role="line" 710 sodipodi:role="line"
709 y="-4938.6074" 711 y="-4938.6074"
710 x="1210.3684 1251.3512 1292.3342">262</tspan></text> 712 x="1210.3684 1251.3512 1292.3342">262</tspan></text>
711<text 713<text
712 y="-5049.1729" 714 y="-5049.1729"
713 x="6022.0161 6062.999" 715 x="6022.0161 6062.999"
714 id="text3664" 716 id="text3664"
715 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 717 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
716 transform="scale(1,-1)"><tspan 718 transform="scale(1,-1)"><tspan
717 id="tspan3666" 719 id="tspan3666"
718 sodipodi:role="line" 720 sodipodi:role="line"
719 y="-5049.1729" 721 y="-5049.1729"
720 x="6022.0161 6062.999">22</tspan></text> 722 x="6022.0161 6062.999">22</tspan></text>
721<text 723<text
722 y="-4938.6074" 724 y="-4938.6074"
723 x="6022.0161 6062.999" 725 x="6022.0161 6062.999"
724 id="text3668" 726 id="text3668"
725 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 727 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
726 transform="scale(1,-1)"><tspan 728 transform="scale(1,-1)"><tspan
727 id="tspan3670" 729 id="tspan3670"
728 sodipodi:role="line" 730 sodipodi:role="line"
729 y="-4938.6074" 731 y="-4938.6074"
730 x="6022.0161 6062.999">22</tspan></text> 732 x="6022.0161 6062.999">22</tspan></text>
731<text 733<text
732 y="-5049.1729" 734 y="-5049.1729"
733 x="6390.5669 6431.5498" 735 x="6390.5669 6431.5498"
734 id="text3672" 736 id="text3672"
735 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 737 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
736 transform="scale(1,-1)"><tspan 738 transform="scale(1,-1)"><tspan
737 id="tspan3674" 739 id="tspan3674"
738 sodipodi:role="line" 740 sodipodi:role="line"
739 y="-5049.1729" 741 y="-5049.1729"
740 x="6390.5669 6431.5498">23</tspan></text> 742 x="6390.5669 6431.5498">23</tspan></text>
741<text 743<text
742 y="-4938.6074" 744 y="-4938.6074"
743 x="6390.5669 6431.5498" 745 x="6390.5669 6431.5498"
744 id="text3676" 746 id="text3676"
745 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 747 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
746 transform="scale(1,-1)"><tspan 748 transform="scale(1,-1)"><tspan
747 id="tspan3678" 749 id="tspan3678"
748 sodipodi:role="line" 750 sodipodi:role="line"
749 y="-4938.6074" 751 y="-4938.6074"
750 x="6390.5669 6431.5498">23</tspan></text> 752 x="6390.5669 6431.5498">23</tspan></text>
751<text 753<text
752 y="-4238.3623" 754 y="-4238.3623"
753 x="6001.5244 6042.5068 6083.4902" 755 x="6001.5244 6042.5068 6083.4902"
754 id="text3680" 756 id="text3680"
755 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 757 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
756 transform="scale(1,-1)"><tspan 758 transform="scale(1,-1)"><tspan
757 id="tspan3682" 759 id="tspan3682"
758 sodipodi:role="line" 760 sodipodi:role="line"
759 y="-4238.3623" 761 y="-4238.3623"
760 x="6001.5244 6042.5068 6083.4902">285</tspan></text> 762 x="6001.5244 6042.5068 6083.4902">285</tspan></text>
761<text 763<text
762 y="-4127.7964" 764 y="-4127.7964"
763 x="6022.0156 6062.9985" 765 x="6022.0156 6062.9985"
764 id="text3684" 766 id="text3684"
765 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 767 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
766 transform="scale(1,-1)"><tspan 768 transform="scale(1,-1)"><tspan
767 id="tspan3686" 769 id="tspan3686"
768 sodipodi:role="line" 770 sodipodi:role="line"
769 y="-4127.7964" 771 y="-4127.7964"
770 x="6022.0156 6062.9985">22</tspan></text> 772 x="6022.0156 6062.9985">22</tspan></text>
771<text 773<text
772 y="-4238.3623" 774 y="-4238.3623"
773 x="6370.0747 6411.0571 6452.04" 775 x="6370.0747 6411.0571 6452.04"
774 id="text3688" 776 id="text3688"
775 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 777 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
776 transform="scale(1,-1)"><tspan 778 transform="scale(1,-1)"><tspan
777 id="tspan3690" 779 id="tspan3690"
778 sodipodi:role="line" 780 sodipodi:role="line"
779 y="-4238.3623" 781 y="-4238.3623"
780 x="6370.0747 6411.0571 6452.04">286</tspan></text> 782 x="6370.0747 6411.0571 6452.04">286</tspan></text>
781<text 783<text
782 y="-4127.7964" 784 y="-4127.7964"
783 x="6390.5664 6431.5493" 785 x="6390.5664 6431.5493"
784 id="text3692" 786 id="text3692"
785 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 787 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
786 transform="scale(1,-1)"><tspan 788 transform="scale(1,-1)"><tspan
787 id="tspan3694" 789 id="tspan3694"
788 sodipodi:role="line" 790 sodipodi:role="line"
789 y="-4127.7964" 791 y="-4127.7964"
790 x="6390.5664 6431.5493">23</tspan></text> 792 x="6390.5664 6431.5493">23</tspan></text>
791<text 793<text
792 y="-4459.4922" 794 y="-4459.4922"
793 x="3540.4146 3581.3972 3618.2522 3638.7437 3659.2354 3679.7266 3696.0901 3737.073 3753.4365" 795 x="3540.4146 3581.3972 3618.2522 3638.7437 3659.2354 3679.7266 3696.0901 3737.073 3753.4365"
794 id="text3696" 796 id="text3696"
795 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 797 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
796 transform="scale(1,-1)"><tspan 798 transform="scale(1,-1)"><tspan
797 id="tspan3698" 799 id="tspan3698"
798 sodipodi:role="line" 800 sodipodi:role="line"
799 y="-4459.4922" 801 y="-4459.4922"
800 x="3540.4146 3581.3972 3618.2522 3638.7437 3659.2354 3679.7266 3696.0901 3737.073 3753.4365">1st field</tspan></text> 802 x="3540.4146 3581.3972 3618.2522 3638.7437 3659.2354 3679.7266 3696.0901 3737.073 3753.4365">1st field</tspan></text>
801<text 803<text
802 y="-3648.6809" 804 y="-3648.6809"
803 x="3528.1047 3569.0876 3610.0703 3651.0532 3671.5447 3692.0361 3708.3999 3749.3826 3765.7463" 805 x="3528.1047 3569.0876 3610.0703 3651.0532 3671.5447 3692.0361 3708.3999 3749.3826 3765.7463"
804 id="text3700" 806 id="text3700"
805 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 807 style="font-variant:normal;font-weight:normal;font-size:73.71015167px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
806 transform="scale(1,-1)"><tspan 808 transform="scale(1,-1)"><tspan
807 id="tspan3702" 809 id="tspan3702"
808 sodipodi:role="line" 810 sodipodi:role="line"
809 y="-3648.6809" 811 y="-3648.6809"
810 x="3528.1047 3569.0876 3610.0703 3651.0532 3671.5447 3692.0361 3708.3999 3749.3826 3765.7463">2nd field</tspan></text> 812 x="3528.1047 3569.0876 3610.0703 3651.0532 3671.5447 3692.0361 3708.3999 3749.3826 3765.7463">2nd field</tspan></text>
811</g></svg> \ No newline at end of file 813</g></svg> \ No newline at end of file
diff --git a/Documentation/media/uapi/v4l/vbi_625.svg b/Documentation/media/uapi/v4l/vbi_625.svg
index c117ddb7bf7e..9b18243c0a06 100644
--- a/Documentation/media/uapi/v4l/vbi_625.svg
+++ b/Documentation/media/uapi/v4l/vbi_625.svg
@@ -42,19 +42,21 @@
42 inkscape:current-layer="g10" 42 inkscape:current-layer="g10"
43 units="mm" /><metadata 43 units="mm" /><metadata
44 id="metadata8"><rdf:RDF><cc:Work 44 id="metadata8"><rdf:RDF><cc:Work
45 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type 45 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
46 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs 46 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
47 id="defs6"><clipPath 47 id="defs6"><clipPath
48 clipPathUnits="userSpaceOnUse" 48 clipPathUnits="userSpaceOnUse"
49 id="clipPath20"><path 49 id="clipPath20"><path
50 d="m 0,0 5950,0 0,4546 L 0,4546 0,0 Z m 0,4546 5950,0 0,1 -5950,0 0,-1 z m 0,1 2211,0 0,1 -2211,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2215,0 0,1 -2215,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2219,0 0,1 -2219,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2223,0 0,1 -2223,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2227,0 0,1 -2227,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2231,0 0,1 -2231,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2235,0 0,1 -2235,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2239,0 0,1 -2239,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2241,0 0,1 -2241,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2240,0 0,1 -2240,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2236,0 0,1 -2236,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2232,0 0,1 -2232,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2228,0 0,1 -2228,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2224,0 0,1 -2224,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2220,0 0,1 -2220,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2216,0 0,1 -2216,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2212,0 0,1 -2212,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2208,0 0,1 -2208,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 5950,0 0,1 -5950,0 0,-1 z m 0,1 5950,0 0,3854 -5950,0 0,-3854 z" 50 d="m 0,0 5950,0 0,4546 L 0,4546 0,0 Z m 0,4546 5950,0 0,1 -5950,0 0,-1 z m 0,1 2211,0 0,1 -2211,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2215,0 0,1 -2215,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2219,0 0,1 -2219,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2223,0 0,1 -2223,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2227,0 0,1 -2227,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2231,0 0,1 -2231,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2235,0 0,1 -2235,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2239,0 0,1 -2239,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2241,0 0,1 -2241,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2240,0 0,1 -2240,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2236,0 0,1 -2236,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2232,0 0,1 -2232,0 0,-1 z m
51 id="path22" 512250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2228,0 0,1 -2228,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2224,0 0,1 -2224,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2220,0 0,1 -2220,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2216,0 0,1 -2216,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2212,0 0,1 -2212,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2208,0 0,1 -2208,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 5950,0 0,1 -5950,0 0,-1 z m 0,1 5950,0 0,3854 -5950,0 0,-3854 z"
52 inkscape:connector-curvature="0" /></clipPath><clipPath 52 id="path22"
53 inkscape:connector-curvature="0" /></clipPath><clipPath
53 clipPathUnits="userSpaceOnUse" 54 clipPathUnits="userSpaceOnUse"
54 id="clipPath98"><path 55 id="clipPath98"><path
55 d="m 0,0 5950,0 0,3922 L 0,3922 0,0 Z m 0,3922 5950,0 0,1 -5950,0 0,-1 z m 0,1 2209,0 0,1 -2209,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2213,0 0,1 -2213,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2217,0 0,1 -2217,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2221,0 0,1 -2221,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2225,0 0,1 -2225,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2229,0 0,1 -2229,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2233,0 0,1 -2233,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2237,0 0,1 -2237,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2241,0 0,1 -2241,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2241,0 0,1 -2241,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2237,0 0,1 -2237,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2233,0 0,1 -2233,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2229,0 0,1 -2229,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2225,0 0,1 -2225,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2221,0 0,1 -2221,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2217,0 0,1 -2217,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2213,0 0,1 -2213,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2209,0 0,1 -2209,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 5950,0 0,1 -5950,0 0,-1 z m 0,1 5950,0 0,4478 -5950,0 0,-4478 z" 56 d="m 0,0 5950,0 0,3922 L 0,3922 0,0 Z m 0,3922 5950,0 0,1 -5950,0 0,-1 z m 0,1 2209,0 0,1 -2209,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2213,0 0,1 -2213,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2217,0 0,1 -2217,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2221,0 0,1 -2221,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2225,0 0,1 -2225,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2229,0 0,1 -2229,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2233,0 0,1 -2233,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2237,0 0,1 -2237,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2241,0 0,1 -2241,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2241,0 0,1 -2241,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2237,0 0,1 -2237,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2233,0 0,1 -2233,0 0,-1 z m
56 id="path100" 572250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2229,0 0,1 -2229,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2225,0 0,1 -2225,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2221,0 0,1 -2221,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2217,0 0,1 -2217,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2213,0 0,1 -2213,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 2209,0 0,1 -2209,0 0,-1 z m 2250,0 3700,0 0,1 -3700,0 0,-1 z m -2250,1 5950,0 0,1 -5950,0 0,-1 z m 0,1 5950,0 0,4478 -5950,0 0,-4478 z"
57 inkscape:connector-curvature="0" /></clipPath></defs><g 58 id="path100"
59 inkscape:connector-curvature="0" /></clipPath></defs><g
58 id="g10" 60 id="g10"
59 inkscape:groupmode="layer" 61 inkscape:groupmode="layer"
60 inkscape:label="vbi_625" 62 inkscape:label="vbi_625"
@@ -62,20 +64,20 @@
62 id="g12" 64 id="g12"
63 transform="matrix(1.3045828,0,0,1.3045828,-213.38312,-1110.9872)" 65 transform="matrix(1.3045828,0,0,1.3045828,-213.38312,-1110.9872)"
64 style=""><path 66 style=""><path
65 d="m 2132.25,4598.15 0,-85.05" 67 d="m 2132.25,4598.15 0,-85.05"
66 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 68 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
67 id="path14" 69 id="path14"
68 inkscape:connector-curvature="0" /></g><g 70 inkscape:connector-curvature="0" /></g><g
69 id="g16" 71 id="g16"
70 transform="matrix(1.3045828,0,0,1.3045828,-213.38312,-1110.9872)" 72 transform="matrix(1.3045828,0,0,1.3045828,-213.38312,-1110.9872)"
71 style=""><g 73 style=""><g
72 id="g18" 74 id="g18"
73 clip-path="url(#clipPath20)" 75 clip-path="url(#clipPath20)"
74 style=""><path 76 style=""><path
75 d="m 2132.25,4555.63 113.4,0" 77 d="m 2132.25,4555.63 113.4,0"
76 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 78 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
77 id="path24" 79 id="path24"
78 inkscape:connector-curvature="0" /></g></g><path 80 inkscape:connector-curvature="0" /></g></g><path
79 inkscape:connector-curvature="0" 81 inkscape:connector-curvature="0"
80 id="path28" 82 id="path28"
81 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" 83 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
@@ -211,13 +213,13 @@
211 id="g94" 213 id="g94"
212 transform="matrix(1.3045828,0,0,1.3045828,-213.38312,-1110.9872)" 214 transform="matrix(1.3045828,0,0,1.3045828,-213.38312,-1110.9872)"
213 style=""><g 215 style=""><g
214 id="g96" 216 id="g96"
215 clip-path="url(#clipPath98)" 217 clip-path="url(#clipPath98)"
216 style=""><path 218 style=""><path
217 d="m 2132.25,3931.93 113.4,0" 219 d="m 2132.25,3931.93 113.4,0"
218 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 220 style="fill:none;stroke:#000000;stroke-width:2.36249995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
219 id="path102" 221 id="path102"
220 inkscape:connector-curvature="0" /></g></g><path 222 inkscape:connector-curvature="0" /></g></g><path
221 inkscape:connector-curvature="0" 223 inkscape:connector-curvature="0"
222 id="path106" 224 id="path106"
223 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" 225 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
@@ -385,7 +387,8 @@
385 inkscape:connector-curvature="0" 387 inkscape:connector-curvature="0"
386 id="path188" 388 id="path188"
387 style="fill:none;stroke:#000000;stroke-width:3.08207679;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 389 style="fill:none;stroke:#000000;stroke-width:3.08207679;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
388 d="m 1162.8865,4739.7407 18.486,0 0,92.4688 18.499,-18.499 18.4859,36.9849 18.499,-36.9849 18.4859,36.9849 18.499,-55.4708 18.4859,55.4708 18.499,-18.4859 18.486,55.4708 18.499,-55.4708 18.4859,18.4859 18.499,36.9849 18.4859,-73.9698 18.499,36.9849 18.4859,-55.4708 0,-55.4839 18.499,0 0,-110.9548 36.985,0 0,110.9548 18.4859,0 0,55.4839 18.499,36.9849 18.4859,-36.9849 18.499,55.4708 18.4859,-18.4859 18.499,55.4708 18.486,-18.4859 0,-129.4537 18.4989,0 0,-110.9548 18.486,0 0,110.9548 166.4387,0 0,-110.9548 18.4859,0 0,110.9548 166.4387,0 0,-110.9548 18.4859,0 0,110.9548 166.4387,0 0,-110.9548 18.4859,0 0,110.9548 166.4387,0 0,-110.9548 18.4859,0 0,110.9548 166.4387,0 0,-110.9548 147.9397,0 0,110.9548 36.9849,0 0,-110.9548 147.9397,0 0,110.9548 36.985,0 0,-110.9548 147.9397,0 0,110.9548 36.9849,0 0,-110.9548 147.9397,0 0,110.9548 36.9849,0 0,-110.9548 147.9397,0 0,110.9548 36.9849,0 0,-110.9548 18.4859,0 0,110.9548 166.4387,0 0,-110.9548 18.486,0 0,110.9548 166.4386,0 0,-110.9548 18.486,0 0,110.9548 166.4387,0 0,-110.9548 18.4859,0 0,110.9548 166.4387,0 0,-110.9548 18.4859,0 0,110.9548 166.4387,0 0,-110.9548 36.9849,0 0,110.9548 332.8643,0 0,-110.9548 36.9849,0 0,110.9548 18.486,0" /><path 390 d="m 1162.8865,4739.7407 18.486,0 0,92.4688 18.499,-18.499 18.4859,36.9849 18.499,-36.9849 18.4859,36.9849 18.499,-55.4708 18.4859,55.4708 18.499,-18.4859 18.486,55.4708 18.499,-55.4708 18.4859,18.4859 18.499,36.9849 18.4859,-73.9698 18.499,36.9849 18.4859,-55.4708 0,-55.4839 18.499,0 0,-110.9548 36.985,0 0,110.9548 18.4859,0 0,55.4839 18.499,36.9849 18.4859,-36.9849 18.499,55.4708 18.4859,-18.4859 18.499,55.4708 18.486,-18.4859 0,-129.4537 18.4989,0 0,-110.9548 18.486,0 0,110.9548 166.4387,0 0,-110.9548 18.4859,0 0,110.9548 166.4387,0 0,-110.9548 18.4859,0 0,110.9548 166.4387,0 0,-110.9548 18.4859,0 0,110.9548 166.4387,0 0,-110.9548 18.4859,0 0,110.9548 166.4387,0 0,-110.9548 147.9397,0 0,110.9548 36.9849,0 0,-110.9548 147.9397,0 0,110.9548 36.985,0 0,-110.9548 147.9397,0 0,110.9548 36.9849,0 0,-110.9548 147.9397,0 0,110.9548 36.9849,0 0,-110.9548 147.9397,0 0,110.9548 36.9849,0
3910,-110.9548 18.4859,0 0,110.9548 166.4387,0 0,-110.9548 18.486,0 0,110.9548 166.4386,0 0,-110.9548 18.486,0 0,110.9548 166.4387,0 0,-110.9548 18.4859,0 0,110.9548 166.4387,0 0,-110.9548 18.4859,0 0,110.9548 166.4387,0 0,-110.9548 36.9849,0 0,110.9548 332.8643,0 0,-110.9548 36.9849,0 0,110.9548 18.486,0" /><path
389 inkscape:connector-curvature="0" 392 inkscape:connector-curvature="0"
390 id="path190" 393 id="path190"
391 style="fill:none;stroke:#000000;stroke-width:3.08207679;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 394 style="fill:none;stroke:#000000;stroke-width:3.08207679;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
@@ -409,7 +412,8 @@
409 inkscape:connector-curvature="0" 412 inkscape:connector-curvature="0"
410 id="path200" 413 id="path200"
411 style="fill:none;stroke:#000000;stroke-width:3.08207679;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 414 style="fill:none;stroke:#000000;stroke-width:3.08207679;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
412 d="m 1162.8865,3926.0723 18.486,0 0,55.4839 18.499,92.4558 18.4859,-55.4708 36.9849,36.9849 18.499,-55.4839 18.4859,18.499 18.499,-36.985 18.486,55.4709 18.499,-18.4859 18.4859,-36.985 18.499,18.486 18.4859,36.9849 18.499,-36.9849 18.4859,36.9849 0,-110.9548 18.499,0 0,-110.9547 18.486,0 0,110.9547 166.4386,0 0,-110.9547 18.486,0 0,110.9547 166.4387,0 0,-110.9547 18.4859,0 0,110.9547 166.4387,0 0,-110.9547 18.4859,0 0,110.9547 166.4387,0 0,-110.9547 18.4859,0 0,110.9547 166.4387,0 0,-110.9547 147.9397,0 0,110.9547 36.9849,0 0,-110.9547 147.9397,0 0,110.9547 36.9849,0 0,-110.9547 147.9397,0 0,110.9547 36.985,0 0,-110.9547 147.9397,0 0,110.9547 36.9849,0 0,-110.9547 147.9397,0 0,110.9547 36.9849,0 0,-110.9547 18.4859,0 0,110.9547 166.4387,0 0,-110.9547 18.4859,0 0,110.9547 166.4387,0 0,-110.9547 18.486,0 0,110.9547 166.4386,0 0,-110.9547 18.486,0 0,110.9547 166.4387,0 0,-110.9547 18.4859,0 0,110.9547 351.3633,0 0,-110.9547 36.9849,0 0,110.9547 18.486,0" /><path 415 d="m 1162.8865,3926.0723 18.486,0 0,55.4839 18.499,92.4558 18.4859,-55.4708 36.9849,36.9849 18.499,-55.4839 18.4859,18.499 18.499,-36.985 18.486,55.4709 18.499,-18.4859 18.4859,-36.985 18.499,18.486 18.4859,36.9849 18.499,-36.9849 18.4859,36.9849 0,-110.9548 18.499,0 0,-110.9547 18.486,0 0,110.9547 166.4386,0 0,-110.9547 18.486,0 0,110.9547 166.4387,0 0,-110.9547 18.4859,0 0,110.9547 166.4387,0 0,-110.9547 18.4859,0 0,110.9547 166.4387,0 0,-110.9547 18.4859,0 0,110.9547 166.4387,0 0,-110.9547 147.9397,0 0,110.9547 36.9849,0 0,-110.9547 147.9397,0 0,110.9547 36.9849,0 0,-110.9547 147.9397,0 0,110.9547 36.985,0 0,-110.9547 147.9397,0 0,110.9547 36.9849,0 0,-110.9547 147.9397,0 0,110.9547 36.9849,0 0,-110.9547 18.4859,0 0,110.9547 166.4387,0 0,-110.9547 18.4859,0 0,110.9547 166.4387,0 0,-110.9547 18.486,0 0,110.9547 166.4386,0 0,-110.9547 18.486,0 0,110.9547 166.4387,0 0,-110.9547
41618.4859,0 0,110.9547 351.3633,0 0,-110.9547 36.9849,0 0,110.9547 18.486,0" /><path
413 inkscape:connector-curvature="0" 417 inkscape:connector-curvature="0"
414 id="path202" 418 id="path202"
415 style="fill:none;stroke:#000000;stroke-width:3.08207679;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 419 style="fill:none;stroke:#000000;stroke-width:3.08207679;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
@@ -559,300 +563,300 @@
559 id="text276" 563 id="text276"
560 x="3550.4165" 564 x="3550.4165"
561 y="-4462.3472"><tspan 565 y="-4462.3472"><tspan
562 x="3550.4165 3591.5437 3628.5286 3649.0923 3669.656 3690.2195 3706.6409 3747.7681 3764.1895" 566 x="3550.4165 3591.5437 3628.5286 3649.0923 3669.656 3690.2195 3706.6409 3747.7681 3764.1895"
563 y="-4462.3472" 567 y="-4462.3472"
564 sodipodi:role="line" 568 sodipodi:role="line"
565 id="tspan278">1st field</tspan><tspan 569 id="tspan278">1st field</tspan><tspan
566 x="2732.6792 3823.7344 4193.5835 4581.9253 4951.7744 5321.6235 3472.3777 3102.5283 2321.7029 2362.8303 2403.9575 1951.8538 1992.981 2034.1083 1582.0045 1623.132 1664.259 5670.9062 5712.0337" 570 x="2732.6792 3823.7344 4193.5835 4581.9253 4951.7744 5321.6235 3472.3777 3102.5283 2321.7029 2362.8303 2403.9575 1951.8538 1992.981 2034.1083 1582.0045 1623.132 1664.259 5670.9062 5712.0337"
567 y="-4943.1509" 571 y="-4943.1509"
568 sodipodi:role="line" 572 sodipodi:role="line"
569 id="tspan280">1456783231231131022</tspan><tspan 573 id="tspan280">1456783231231131022</tspan><tspan
570 x="2732.6726 3823.7278 4193.5771 4581.9189 4951.7681 5321.6172 3472.3711 3102.522 2321.6965 2362.8237 2403.9509 1951.8473 1992.9745 2034.1018 1581.998 1623.1254 1664.2524 5670.8999 5712.0269" 574 x="2732.6726 3823.7278 4193.5771 4581.9189 4951.7681 5321.6172 3472.3711 3102.522 2321.6965 2362.8237 2403.9509 1951.8473 1992.9745 2034.1018 1581.998 1623.1254 1664.2524 5670.8999 5712.0269"
571 y="-5054.1064" 575 y="-5054.1064"
572 sodipodi:role="line" 576 sodipodi:role="line"
573 id="tspan282">1456783262562462322</tspan><tspan 577 id="tspan282">1456783262562462322</tspan><tspan
574 x="842.29962 883.42694 924.55408" 578 x="842.29962 883.42694 924.55408"
575 y="-4943.1509" 579 y="-4943.1509"
576 sodipodi:role="line" 580 sodipodi:role="line"
577 id="tspan284">308</tspan><tspan 581 id="tspan284">308</tspan><tspan
578 x="842.29962 883.42694 924.55408" 582 x="842.29962 883.42694 924.55408"
579 y="-5054.1064" 583 y="-5054.1064"
580 sodipodi:role="line" 584 sodipodi:role="line"
581 id="tspan286">621</tspan><tspan 585 id="tspan286">621</tspan><tspan
582 x="1212.1489 1253.276 1294.4033" 586 x="1212.1489 1253.276 1294.4033"
583 y="-4943.1509" 587 y="-4943.1509"
584 sodipodi:role="line" 588 sodipodi:role="line"
585 id="tspan288">309</tspan><tspan 589 id="tspan288">309</tspan><tspan
586 x="1212.1489 1253.276 1294.4033" 590 x="1212.1489 1253.276 1294.4033"
587 y="-5054.1064" 591 y="-5054.1064"
588 sodipodi:role="line" 592 sodipodi:role="line"
589 id="tspan290">622</tspan><tspan 593 id="tspan290">622</tspan><tspan
590 x="3538.0635 3579.1907 3620.3179 3661.4451 3682.0088 3702.5723 3718.9937 3760.1208 3776.5422" 594 x="3538.0635 3579.1907 3620.3179 3661.4451 3682.0088 3702.5723 3718.9937 3760.1208 3776.5422"
591 y="-3648.6792" 595 y="-3648.6792"
592 sodipodi:role="line" 596 sodipodi:role="line"
593 id="tspan292">2nd field</tspan></text> 597 id="tspan292">2nd field</tspan></text>
594<text 598<text
595 transform="scale(1,-1)" 599 transform="scale(1,-1)"
596 style="font-variant:normal;font-weight:normal;font-size:61.64153671px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 600 style="font-variant:normal;font-weight:normal;font-size:61.64153671px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
597 id="text294" 601 id="text294"
598 x="2734.751" 602 x="2734.751"
599 y="-4037.021"><tspan 603 y="-4037.021"><tspan
600 x="2734.751 2755.2776 2789.5503" 604 x="2734.751 2755.2776 2789.5503"
601 y="-4037.021" 605 y="-4037.021"
602 sodipodi:role="line" 606 sodipodi:role="line"
603 id="tspan296">(1)</tspan></text> 607 id="tspan296">(1)</tspan></text>
604<text 608<text
605 transform="scale(1,-1)" 609 transform="scale(1,-1)"
606 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 610 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
607 id="text298" 611 id="text298"
608 x="4951.772" 612 x="4951.772"
609 y="-4129.4834"><tspan 613 y="-4129.4834"><tspan
610 x="4951.772 4581.9229 4212.0737 3842.2244 3490.8677 3102.5259 2321.7004 2362.8276 2403.9551 1951.8512 1992.9785 2034.1057 1582.0022 1623.1293 1664.2563" 614 x="4951.772 4581.9229 4212.0737 3842.2244 3490.8677 3102.5259 2321.7004 2362.8276 2403.9551 1951.8512 1992.9785 2034.1057 1582.0022 1623.1293 1664.2563"
611 y="-4129.4834" 615 y="-4129.4834"
612 sodipodi:role="line" 616 sodipodi:role="line"
613 id="tspan300">765432313312311</tspan><tspan 617 id="tspan300">765432313312311</tspan><tspan
614 x="6020.1929 6061.3198 6102.4473 5650.3433 5691.4707 5732.5981 5280.4941 5321.6216 5362.7485 4910.645 4951.7725 4992.8994 4540.7959 4581.9229 4623.0503 4170.9468 4212.0737 4253.2012 3801.0974 3842.2246 3883.3518 3449.7405 3490.8677 3531.9951 3061.3989 3102.5261 3143.6533 2691.5496 2732.677 2773.8042 2321.7004 2362.8276 2403.9551 1951.8512 1992.9785 2034.1057 1582.0022 1623.1293 1664.2563" 618 x="6020.1929 6061.3198 6102.4473 5650.3433 5691.4707 5732.5981 5280.4941 5321.6216 5362.7485 4910.645 4951.7725 4992.8994 4540.7959 4581.9229 4623.0503 4170.9468 4212.0737 4253.2012 3801.0974 3842.2246 3883.3518 3449.7405 3490.8677 3531.9951 3061.3989 3102.5261 3143.6533 2691.5496 2732.677 2773.8042 2321.7004 2362.8276 2403.9551 1951.8512 1992.9785 2034.1057 1582.0022 1623.1293 1664.2563"
615 y="-4240.4385" 619 y="-4240.4385"
616 sodipodi:role="line" 620 sodipodi:role="line"
617 id="tspan302">336335321320319318317316315314313312311</tspan><tspan 621 id="tspan302">336335321320319318317316315314313312311</tspan><tspan
618 x="2732.6765 5321.6211 5670.9062 5712.0337 6040.7554 6081.8828 842.30634 883.43323 924.56055" 622 x="2732.6765 5321.6211 5670.9062 5712.0337 6040.7554 6081.8828 842.30634 883.43323 924.56055"
619 y="-4129.4834" 623 y="-4129.4834"
620 sodipodi:role="line" 624 sodipodi:role="line"
621 id="tspan304">182223309</tspan><tspan 625 id="tspan304">182223309</tspan><tspan
622 x="842.30634 883.43323 924.56055" 626 x="842.30634 883.43323 924.56055"
623 y="-4240.4385" 627 y="-4240.4385"
624 sodipodi:role="line" 628 sodipodi:role="line"
625 id="tspan306">309</tspan><tspan 629 id="tspan306">309</tspan><tspan
626 x="1212.1553 1253.2826 1294.4099" 630 x="1212.1553 1253.2826 1294.4099"
627 y="-4129.4834" 631 y="-4129.4834"
628 sodipodi:role="line" 632 sodipodi:role="line"
629 id="tspan308">310</tspan><tspan 633 id="tspan308">310</tspan><tspan
630 x="1212.1553 1253.2826 1294.4099" 634 x="1212.1553 1253.2826 1294.4099"
631 y="-4240.4385" 635 y="-4240.4385"
632 sodipodi:role="line" 636 sodipodi:role="line"
633 id="tspan310">310</tspan><tspan 637 id="tspan310">310</tspan><tspan
634 x="6410.605 6451.7319" 638 x="6410.605 6451.7319"
635 y="-4129.4834" 639 y="-4129.4834"
636 sodipodi:role="line" 640 sodipodi:role="line"
637 id="tspan312">24</tspan><tspan 641 id="tspan312">24</tspan><tspan
638 x="6390.041 6431.1685 6472.2954" 642 x="6390.041 6431.1685 6472.2954"
639 y="-4240.4385" 643 y="-4240.4385"
640 sodipodi:role="line" 644 sodipodi:role="line"
641 id="tspan314">337</tspan><tspan 645 id="tspan314">337</tspan><tspan
642 x="6040.7559 6081.8833" 646 x="6040.7559 6081.8833"
643 y="-4943.1504" 647 y="-4943.1504"
644 sodipodi:role="line" 648 sodipodi:role="line"
645 id="tspan316">23</tspan><tspan 649 id="tspan316">23</tspan><tspan
646 x="6040.7559 6081.8833" 650 x="6040.7559 6081.8833"
647 y="-5054.106" 651 y="-5054.106"
648 sodipodi:role="line" 652 sodipodi:role="line"
649 id="tspan318">23</tspan><tspan 653 id="tspan318">23</tspan><tspan
650 x="6410.605 6451.7324" 654 x="6410.605 6451.7324"
651 y="-4943.1504" 655 y="-4943.1504"
652 sodipodi:role="line" 656 sodipodi:role="line"
653 id="tspan320">24</tspan><tspan 657 id="tspan320">24</tspan><tspan
654 x="6410.605 6451.7324" 658 x="6410.605 6451.7324"
655 y="-5054.106" 659 y="-5054.106"
656 sodipodi:role="line" 660 sodipodi:role="line"
657 id="tspan322">24</tspan></text> 661 id="tspan322">24</tspan></text>
658<text 662<text
659 transform="scale(1,-1)" 663 transform="scale(1,-1)"
660 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 664 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
661 id="text3671" 665 id="text3671"
662 x="3550.4165 3591.5437 3628.5286 3649.0923 3669.656 3690.2195 3706.6409 3747.7681 3764.1895" 666 x="3550.4165 3591.5437 3628.5286 3649.0923 3669.656 3690.2195 3706.6409 3747.7681 3764.1895"
663 y="-4462.3472"><tspan 667 y="-4462.3472"><tspan
664 x="3550.4165 3591.5437 3628.5286 3649.0923 3669.656 3690.2195 3706.6409 3747.7681 3764.1895" 668 x="3550.4165 3591.5437 3628.5286 3649.0923 3669.656 3690.2195 3706.6409 3747.7681 3764.1895"
665 y="-4462.3472" 669 y="-4462.3472"
666 sodipodi:role="line" 670 sodipodi:role="line"
667 id="tspan3673">1st field</tspan></text> 671 id="tspan3673">1st field</tspan></text>
668<text 672<text
669 transform="scale(1,-1)" 673 transform="scale(1,-1)"
670 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 674 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
671 id="text3675" 675 id="text3675"
672 x="2732.6792 3823.7344 4193.5835 4581.9253 4951.7744 5321.6235 3472.3777 3102.5283 2321.7029 2362.8303 2403.9575 1951.8538 1992.981 2034.1083 1582.0045 1623.132 1664.259 5670.9062 5712.0337" 676 x="2732.6792 3823.7344 4193.5835 4581.9253 4951.7744 5321.6235 3472.3777 3102.5283 2321.7029 2362.8303 2403.9575 1951.8538 1992.981 2034.1083 1582.0045 1623.132 1664.259 5670.9062 5712.0337"
673 y="-4943.1509"><tspan 677 y="-4943.1509"><tspan
674 x="2732.6792 3823.7344 4193.5835 4581.9253 4951.7744 5321.6235 3472.3777 3102.5283 2321.7029 2362.8303 2403.9575 1951.8538 1992.981 2034.1083 1582.0045 1623.132 1664.259 5670.9062 5712.0337" 678 x="2732.6792 3823.7344 4193.5835 4581.9253 4951.7744 5321.6235 3472.3777 3102.5283 2321.7029 2362.8303 2403.9575 1951.8538 1992.981 2034.1083 1582.0045 1623.132 1664.259 5670.9062 5712.0337"
675 y="-4943.1509" 679 y="-4943.1509"
676 sodipodi:role="line" 680 sodipodi:role="line"
677 id="tspan3677">1456783231231131022</tspan></text> 681 id="tspan3677">1456783231231131022</tspan></text>
678<text 682<text
679 transform="scale(1,-1)" 683 transform="scale(1,-1)"
680 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 684 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
681 id="text3679" 685 id="text3679"
682 x="2732.6726 3823.7278 4193.5771 4581.9189 4951.7681 5321.6172 3472.3711 3102.522 2321.6965 2362.8237 2403.9509 1951.8473 1992.9745 2034.1018 1581.998 1623.1254 1664.2524 5670.8999 5712.0269" 686 x="2732.6726 3823.7278 4193.5771 4581.9189 4951.7681 5321.6172 3472.3711 3102.522 2321.6965 2362.8237 2403.9509 1951.8473 1992.9745 2034.1018 1581.998 1623.1254 1664.2524 5670.8999 5712.0269"
683 y="-5054.1064"><tspan 687 y="-5054.1064"><tspan
684 x="2732.6726 3823.7278 4193.5771 4581.9189 4951.7681 5321.6172 3472.3711 3102.522 2321.6965 2362.8237 2403.9509 1951.8473 1992.9745 2034.1018 1581.998 1623.1254 1664.2524 5670.8999 5712.0269" 688 x="2732.6726 3823.7278 4193.5771 4581.9189 4951.7681 5321.6172 3472.3711 3102.522 2321.6965 2362.8237 2403.9509 1951.8473 1992.9745 2034.1018 1581.998 1623.1254 1664.2524 5670.8999 5712.0269"
685 y="-5054.1064" 689 y="-5054.1064"
686 sodipodi:role="line" 690 sodipodi:role="line"
687 id="tspan3681">1456783262562462322</tspan></text> 691 id="tspan3681">1456783262562462322</tspan></text>
688<text 692<text
689 transform="scale(1,-1)" 693 transform="scale(1,-1)"
690 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 694 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
691 id="text3683" 695 id="text3683"
692 x="842.29962 883.42694 924.55408" 696 x="842.29962 883.42694 924.55408"
693 y="-4943.1509"><tspan 697 y="-4943.1509"><tspan
694 x="842.29962 883.42694 924.55408" 698 x="842.29962 883.42694 924.55408"
695 y="-4943.1509" 699 y="-4943.1509"
696 sodipodi:role="line" 700 sodipodi:role="line"
697 id="tspan3685">308</tspan></text> 701 id="tspan3685">308</tspan></text>
698<text 702<text
699 transform="scale(1,-1)" 703 transform="scale(1,-1)"
700 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 704 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
701 id="text3687" 705 id="text3687"
702 x="842.29962 883.42694 924.55408" 706 x="842.29962 883.42694 924.55408"
703 y="-5054.1064"><tspan 707 y="-5054.1064"><tspan
704 x="842.29962 883.42694 924.55408" 708 x="842.29962 883.42694 924.55408"
705 y="-5054.1064" 709 y="-5054.1064"
706 sodipodi:role="line" 710 sodipodi:role="line"
707 id="tspan3689">621</tspan></text> 711 id="tspan3689">621</tspan></text>
708<text 712<text
709 transform="scale(1,-1)" 713 transform="scale(1,-1)"
710 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 714 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
711 id="text3691" 715 id="text3691"
712 x="1212.1489 1253.276 1294.4033" 716 x="1212.1489 1253.276 1294.4033"
713 y="-4943.1509"><tspan 717 y="-4943.1509"><tspan
714 x="1212.1489 1253.276 1294.4033" 718 x="1212.1489 1253.276 1294.4033"
715 y="-4943.1509" 719 y="-4943.1509"
716 sodipodi:role="line" 720 sodipodi:role="line"
717 id="tspan3693">309</tspan></text> 721 id="tspan3693">309</tspan></text>
718<text 722<text
719 transform="scale(1,-1)" 723 transform="scale(1,-1)"
720 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 724 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
721 id="text3695" 725 id="text3695"
722 x="1212.1489 1253.276 1294.4033" 726 x="1212.1489 1253.276 1294.4033"
723 y="-5054.1064"><tspan 727 y="-5054.1064"><tspan
724 x="1212.1489 1253.276 1294.4033" 728 x="1212.1489 1253.276 1294.4033"
725 y="-5054.1064" 729 y="-5054.1064"
726 sodipodi:role="line" 730 sodipodi:role="line"
727 id="tspan3697">622</tspan></text> 731 id="tspan3697">622</tspan></text>
728<text 732<text
729 transform="scale(1,-1)" 733 transform="scale(1,-1)"
730 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 734 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
731 id="text3699" 735 id="text3699"
732 x="3538.0635 3579.1907 3620.3179 3661.4451 3682.0088 3702.5723 3718.9937 3760.1208 3776.5422" 736 x="3538.0635 3579.1907 3620.3179 3661.4451 3682.0088 3702.5723 3718.9937 3760.1208 3776.5422"
733 y="-3648.6792"><tspan 737 y="-3648.6792"><tspan
734 x="3538.0635 3579.1907 3620.3179 3661.4451 3682.0088 3702.5723 3718.9937 3760.1208 3776.5422" 738 x="3538.0635 3579.1907 3620.3179 3661.4451 3682.0088 3702.5723 3718.9937 3760.1208 3776.5422"
735 y="-3648.6792" 739 y="-3648.6792"
736 sodipodi:role="line" 740 sodipodi:role="line"
737 id="tspan3701">2nd field</tspan></text> 741 id="tspan3701">2nd field</tspan></text>
738<text 742<text
739 transform="scale(1,-1)" 743 transform="scale(1,-1)"
740 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 744 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
741 id="text4083" 745 id="text4083"
742 x="4951.772 4581.9229 4212.0737 3842.2244 3490.8677 3102.5259 2321.7004 2362.8276 2403.9551 1951.8512 1992.9785 2034.1057 1582.0022 1623.1293 1664.2563" 746 x="4951.772 4581.9229 4212.0737 3842.2244 3490.8677 3102.5259 2321.7004 2362.8276 2403.9551 1951.8512 1992.9785 2034.1057 1582.0022 1623.1293 1664.2563"
743 y="-4129.4834"><tspan 747 y="-4129.4834"><tspan
744 x="4951.772 4581.9229 4212.0737 3842.2244 3490.8677 3102.5259 2321.7004 2362.8276 2403.9551 1951.8512 1992.9785 2034.1057 1582.0022 1623.1293 1664.2563" 748 x="4951.772 4581.9229 4212.0737 3842.2244 3490.8677 3102.5259 2321.7004 2362.8276 2403.9551 1951.8512 1992.9785 2034.1057 1582.0022 1623.1293 1664.2563"
745 y="-4129.4834" 749 y="-4129.4834"
746 sodipodi:role="line" 750 sodipodi:role="line"
747 id="tspan4085">765432313312311</tspan></text> 751 id="tspan4085">765432313312311</tspan></text>
748<text 752<text
749 transform="scale(1,-1)" 753 transform="scale(1,-1)"
750 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 754 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
751 id="text4087" 755 id="text4087"
752 x="6020.1929 6061.3198 6102.4473 5650.3433 5691.4707 5732.5981 5280.4941 5321.6216 5362.7485 4910.645 4951.7725 4992.8994 4540.7959 4581.9229 4623.0503 4170.9468 4212.0737 4253.2012 3801.0974 3842.2246 3883.3518 3449.7405 3490.8677 3531.9951 3061.3989 3102.5261 3143.6533 2691.5496 2732.677 2773.8042 2321.7004 2362.8276 2403.9551 1951.8512 1992.9785 2034.1057 1582.0022 1623.1293 1664.2563" 756 x="6020.1929 6061.3198 6102.4473 5650.3433 5691.4707 5732.5981 5280.4941 5321.6216 5362.7485 4910.645 4951.7725 4992.8994 4540.7959 4581.9229 4623.0503 4170.9468 4212.0737 4253.2012 3801.0974 3842.2246 3883.3518 3449.7405 3490.8677 3531.9951 3061.3989 3102.5261 3143.6533 2691.5496 2732.677 2773.8042 2321.7004 2362.8276 2403.9551 1951.8512 1992.9785 2034.1057 1582.0022 1623.1293 1664.2563"
753 y="-4240.4385"><tspan 757 y="-4240.4385"><tspan
754 x="6020.1929 6061.3198 6102.4473 5650.3433 5691.4707 5732.5981 5280.4941 5321.6216 5362.7485 4910.645 4951.7725 4992.8994 4540.7959 4581.9229 4623.0503 4170.9468 4212.0737 4253.2012 3801.0974 3842.2246 3883.3518 3449.7405 3490.8677 3531.9951 3061.3989 3102.5261 3143.6533 2691.5496 2732.677 2773.8042 2321.7004 2362.8276 2403.9551 1951.8512 1992.9785 2034.1057 1582.0022 1623.1293 1664.2563" 758 x="6020.1929 6061.3198 6102.4473 5650.3433 5691.4707 5732.5981 5280.4941 5321.6216 5362.7485 4910.645 4951.7725 4992.8994 4540.7959 4581.9229 4623.0503 4170.9468 4212.0737 4253.2012 3801.0974 3842.2246 3883.3518 3449.7405 3490.8677 3531.9951 3061.3989 3102.5261 3143.6533 2691.5496 2732.677 2773.8042 2321.7004 2362.8276 2403.9551 1951.8512 1992.9785 2034.1057 1582.0022 1623.1293 1664.2563"
755 y="-4240.4385" 759 y="-4240.4385"
756 sodipodi:role="line" 760 sodipodi:role="line"
757 id="tspan4089">336335321320319318317316315314313312311</tspan></text> 761 id="tspan4089">336335321320319318317316315314313312311</tspan></text>
758<text 762<text
759 transform="scale(1,-1)" 763 transform="scale(1,-1)"
760 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 764 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
761 id="text4091" 765 id="text4091"
762 x="2732.6765 5321.6211 5670.9062 5712.0337 6040.7554 6081.8828 842.30634 883.43323 924.56055" 766 x="2732.6765 5321.6211 5670.9062 5712.0337 6040.7554 6081.8828 842.30634 883.43323 924.56055"
763 y="-4129.4834"><tspan 767 y="-4129.4834"><tspan
764 x="2732.6765 5321.6211 5670.9062 5712.0337 6040.7554 6081.8828 842.30634 883.43323 924.56055" 768 x="2732.6765 5321.6211 5670.9062 5712.0337 6040.7554 6081.8828 842.30634 883.43323 924.56055"
765 y="-4129.4834" 769 y="-4129.4834"
766 sodipodi:role="line" 770 sodipodi:role="line"
767 id="tspan4093">182223309</tspan></text> 771 id="tspan4093">182223309</tspan></text>
768<text 772<text
769 transform="scale(1,-1)" 773 transform="scale(1,-1)"
770 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 774 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
771 id="text4095" 775 id="text4095"
772 x="842.30634 883.43323 924.56055" 776 x="842.30634 883.43323 924.56055"
773 y="-4240.4385"><tspan 777 y="-4240.4385"><tspan
774 x="842.30634 883.43323 924.56055" 778 x="842.30634 883.43323 924.56055"
775 y="-4240.4385" 779 y="-4240.4385"
776 sodipodi:role="line" 780 sodipodi:role="line"
777 id="tspan4097">309</tspan></text> 781 id="tspan4097">309</tspan></text>
778<text 782<text
779 transform="scale(1,-1)" 783 transform="scale(1,-1)"
780 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 784 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
781 id="text4099" 785 id="text4099"
782 x="1212.1553 1253.2826 1294.4099" 786 x="1212.1553 1253.2826 1294.4099"
783 y="-4129.4834"><tspan 787 y="-4129.4834"><tspan
784 x="1212.1553 1253.2826 1294.4099" 788 x="1212.1553 1253.2826 1294.4099"
785 y="-4129.4834" 789 y="-4129.4834"
786 sodipodi:role="line" 790 sodipodi:role="line"
787 id="tspan4101">310</tspan></text> 791 id="tspan4101">310</tspan></text>
788<text 792<text
789 transform="scale(1,-1)" 793 transform="scale(1,-1)"
790 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 794 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
791 id="text4103" 795 id="text4103"
792 x="1212.1553 1253.2826 1294.4099" 796 x="1212.1553 1253.2826 1294.4099"
793 y="-4240.4385"><tspan 797 y="-4240.4385"><tspan
794 x="1212.1553 1253.2826 1294.4099" 798 x="1212.1553 1253.2826 1294.4099"
795 y="-4240.4385" 799 y="-4240.4385"
796 sodipodi:role="line" 800 sodipodi:role="line"
797 id="tspan4105">310</tspan></text> 801 id="tspan4105">310</tspan></text>
798<text 802<text
799 transform="scale(1,-1)" 803 transform="scale(1,-1)"
800 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 804 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
801 id="text4107" 805 id="text4107"
802 x="6410.605 6451.7319" 806 x="6410.605 6451.7319"
803 y="-4129.4834"><tspan 807 y="-4129.4834"><tspan
804 x="6410.605 6451.7319" 808 x="6410.605 6451.7319"
805 y="-4129.4834" 809 y="-4129.4834"
806 sodipodi:role="line" 810 sodipodi:role="line"
807 id="tspan4109">24</tspan></text> 811 id="tspan4109">24</tspan></text>
808<text 812<text
809 transform="scale(1,-1)" 813 transform="scale(1,-1)"
810 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 814 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
811 id="text4111" 815 id="text4111"
812 x="6390.041 6431.1685 6472.2954" 816 x="6390.041 6431.1685 6472.2954"
813 y="-4240.4385"><tspan 817 y="-4240.4385"><tspan
814 x="6390.041 6431.1685 6472.2954" 818 x="6390.041 6431.1685 6472.2954"
815 y="-4240.4385" 819 y="-4240.4385"
816 sodipodi:role="line" 820 sodipodi:role="line"
817 id="tspan4113">337</tspan></text> 821 id="tspan4113">337</tspan></text>
818<text 822<text
819 transform="scale(1,-1)" 823 transform="scale(1,-1)"
820 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 824 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
821 id="text4115" 825 id="text4115"
822 x="6040.7559 6081.8833" 826 x="6040.7559 6081.8833"
823 y="-4943.1504"><tspan 827 y="-4943.1504"><tspan
824 x="6040.7559 6081.8833" 828 x="6040.7559 6081.8833"
825 y="-4943.1504" 829 y="-4943.1504"
826 sodipodi:role="line" 830 sodipodi:role="line"
827 id="tspan4117">23</tspan></text> 831 id="tspan4117">23</tspan></text>
828<text 832<text
829 transform="scale(1,-1)" 833 transform="scale(1,-1)"
830 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 834 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
831 id="text4119" 835 id="text4119"
832 x="6040.7559 6081.8833" 836 x="6040.7559 6081.8833"
833 y="-5054.106"><tspan 837 y="-5054.106"><tspan
834 x="6040.7559 6081.8833" 838 x="6040.7559 6081.8833"
835 y="-5054.106" 839 y="-5054.106"
836 sodipodi:role="line" 840 sodipodi:role="line"
837 id="tspan4121">23</tspan></text> 841 id="tspan4121">23</tspan></text>
838<text 842<text
839 transform="scale(1,-1)" 843 transform="scale(1,-1)"
840 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 844 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
841 id="text4123" 845 id="text4123"
842 x="6410.605 6451.7324" 846 x="6410.605 6451.7324"
843 y="-4943.1504"><tspan 847 y="-4943.1504"><tspan
844 x="6410.605 6451.7324" 848 x="6410.605 6451.7324"
845 y="-4943.1504" 849 y="-4943.1504"
846 sodipodi:role="line" 850 sodipodi:role="line"
847 id="tspan4125">24</tspan></text> 851 id="tspan4125">24</tspan></text>
848<text 852<text
849 transform="scale(1,-1)" 853 transform="scale(1,-1)"
850 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 854 style="font-variant:normal;font-weight:normal;font-size:73.96984863px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
851 id="text4127" 855 id="text4127"
852 x="6410.605 6451.7324" 856 x="6410.605 6451.7324"
853 y="-5054.106"><tspan 857 y="-5054.106"><tspan
854 x="6410.605 6451.7324" 858 x="6410.605 6451.7324"
855 y="-5054.106" 859 y="-5054.106"
856 sodipodi:role="line" 860 sodipodi:role="line"
857 id="tspan4129">24</tspan></text> 861 id="tspan4129">24</tspan></text>
858</g></svg> \ No newline at end of file 862</g></svg> \ No newline at end of file
diff --git a/Documentation/media/uapi/v4l/vbi_hsync.svg b/Documentation/media/uapi/v4l/vbi_hsync.svg
index 4d5c0b4f146e..e17ff8314e7b 100644
--- a/Documentation/media/uapi/v4l/vbi_hsync.svg
+++ b/Documentation/media/uapi/v4l/vbi_hsync.svg
@@ -42,27 +42,27 @@
42 fit-margin-right="0" 42 fit-margin-right="0"
43 fit-margin-bottom="0" /><metadata 43 fit-margin-bottom="0" /><metadata
44 id="metadata8"><rdf:RDF><cc:Work 44 id="metadata8"><rdf:RDF><cc:Work
45 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type 45 rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
46 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs 46 rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
47 id="defs6"><clipPath 47 id="defs6"><clipPath
48 clipPathUnits="userSpaceOnUse" 48 clipPathUnits="userSpaceOnUse"
49 id="clipPath30"><path 49 id="clipPath30"><path
50 d="m 0,0 0,1163 1544,0 L 1544,0 0,0 Z m 187.184,836.05 0,-19.278 48.517,0 -38.556,9.639 38.556,9.639 -48.517,0 z m 689.189,-19.278 0,19.278 -48.516,0 38.556,-9.639 -38.556,-9.639 48.516,0 z" 50 d="m 0,0 0,1163 1544,0 L 1544,0 0,0 Z m 187.184,836.05 0,-19.278 48.517,0 -38.556,9.639 38.556,9.639 -48.517,0 z m 689.189,-19.278 0,19.278 -48.516,0 38.556,-9.639 -38.556,-9.639 48.516,0 z"
51 id="path32" 51 id="path32"
52 inkscape:connector-curvature="0" 52 inkscape:connector-curvature="0"
53 style="clip-rule:evenodd" /></clipPath><clipPath 53 style="clip-rule:evenodd" /></clipPath><clipPath
54 clipPathUnits="userSpaceOnUse" 54 clipPathUnits="userSpaceOnUse"
55 id="clipPath52"><path 55 id="clipPath52"><path
56 d="m 0,0 0,1163 1544,0 L 1544,0 0,0 Z m 804.08,79.3887 0,19.2778 -48.516,0 38.556,-9.6389 -38.556,-9.6389 48.516,0 z m -703.647,19.2778 0,-19.2778 48.517,0 -38.556,9.6389 38.556,9.6389 -48.517,0 z" 56 d="m 0,0 0,1163 1544,0 L 1544,0 0,0 Z m 804.08,79.3887 0,19.2778 -48.516,0 38.556,-9.6389 -38.556,-9.6389 48.516,0 z m -703.647,19.2778 0,-19.2778 48.517,0 -38.556,9.6389 38.556,9.6389 -48.517,0 z"
57 id="path54" 57 id="path54"
58 inkscape:connector-curvature="0" 58 inkscape:connector-curvature="0"
59 style="clip-rule:evenodd" /></clipPath><clipPath 59 style="clip-rule:evenodd" /></clipPath><clipPath
60 clipPathUnits="userSpaceOnUse" 60 clipPathUnits="userSpaceOnUse"
61 id="clipPath94"><path 61 id="clipPath94"><path
62 d="m 0,0 0,1163 1544,0 L 1544,0 0,0 Z m 471.535,195.057 0,19.278 -48.516,0 38.555,-9.639 -38.555,-9.639 48.516,0 z m -284.351,19.278 0,-19.278 48.517,0 -38.556,9.639 38.556,9.639 -48.517,0 z" 62 d="m 0,0 0,1163 1544,0 L 1544,0 0,0 Z m 471.535,195.057 0,19.278 -48.516,0 38.555,-9.639 -38.555,-9.639 48.516,0 z m -284.351,19.278 0,-19.278 48.517,0 -38.556,9.639 38.556,9.639 -48.517,0 z"
63 id="path96" 63 id="path96"
64 inkscape:connector-curvature="0" 64 inkscape:connector-curvature="0"
65 style="clip-rule:evenodd" /></clipPath></defs><g 65 style="clip-rule:evenodd" /></clipPath></defs><g
66 id="g10" 66 id="g10"
67 inkscape:groupmode="layer" 67 inkscape:groupmode="layer"
68 inkscape:label="vbi_hsync" 68 inkscape:label="vbi_hsync"
@@ -70,69 +70,69 @@
70 id="g14" 70 id="g14"
71 transform="matrix(0.36030235,0,0,0.36030235,-0.75498483,-1.0743684)" 71 transform="matrix(0.36030235,0,0,0.36030235,-0.75498483,-1.0743684)"
72 style=""><path 72 style=""><path
73 inkscape:connector-curvature="0" 73 inkscape:connector-curvature="0"
74 id="path16" 74 id="path16"
75 style="fill:none;stroke:#000000;stroke-width:2.40974998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 75 style="fill:none;stroke:#000000;stroke-width:2.40974998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
76 d="M 32.9604,580.617 4.04346,493.866" /><path 76 d="M 32.9604,580.617 4.04346,493.866" /><path
77 inkscape:connector-curvature="0" 77 inkscape:connector-curvature="0"
78 id="path18" 78 id="path18"
79 style="fill:none;stroke:#000000;stroke-width:2.40974998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 79 style="fill:none;stroke:#000000;stroke-width:2.40974998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
80 d="m 192.004,855.328 0,-665.091" /><path 80 d="m 192.004,855.328 0,-665.091" /><path
81 inkscape:connector-curvature="0" 81 inkscape:connector-curvature="0"
82 id="path20" 82 id="path20"
83 style="fill:none;stroke:#000000;stroke-width:2.40974998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 83 style="fill:none;stroke:#000000;stroke-width:2.40974998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
84 d="m 466.715,392.656 0,-202.419" /><path 84 d="m 466.715,392.656 0,-202.419" /><path
85 inkscape:connector-curvature="0" 85 inkscape:connector-curvature="0"
86 id="path22" 86 id="path22"
87 style="fill:none;stroke:#000000;stroke-width:2.40974998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 87 style="fill:none;stroke:#000000;stroke-width:2.40974998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
88 d="m 799.261,508.324 0,-433.7549" /><path 88 d="m 799.261,508.324 0,-433.7549" /><path
89 inkscape:connector-curvature="0" 89 inkscape:connector-curvature="0"
90 id="path24" 90 id="path24"
91 style="fill:none;stroke:#000000;stroke-width:4.81949997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 91 style="fill:none;stroke:#000000;stroke-width:4.81949997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
92 d="m 857.095,537.241 231.335,0" /></g><g 92 d="m 857.095,537.241 231.335,0" /></g><g
93 id="g26" 93 id="g26"
94 transform="matrix(0.36030235,0,0,0.36030235,-0.75498483,-1.0743684)" 94 transform="matrix(0.36030235,0,0,0.36030235,-0.75498483,-1.0743684)"
95 style=""><g 95 style=""><g
96 clip-path="url(#clipPath30)" 96 clip-path="url(#clipPath30)"
97 id="g28" 97 id="g28"
98 style=""><path 98 style=""><path
99 inkscape:connector-curvature="0" 99 inkscape:connector-curvature="0"
100 id="path34" 100 id="path34"
101 style="fill:none;stroke:#000000;stroke-width:2.40974998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 101 style="fill:none;stroke:#000000;stroke-width:2.40974998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
102 d="m 871.553,826.411 -679.549,0" /></g></g><g 102 d="m 871.553,826.411 -679.549,0" /></g></g><g
103 id="g36" 103 id="g36"
104 transform="matrix(0.36030235,0,0,0.36030235,-0.75498483,-1.0743684)" 104 transform="matrix(0.36030235,0,0,0.36030235,-0.75498483,-1.0743684)"
105 style=""><path 105 style=""><path
106 inkscape:connector-curvature="0" 106 inkscape:connector-curvature="0"
107 id="path38" 107 id="path38"
108 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" 108 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
109 d="m 827.857,816.772 38.556,9.639 -38.556,9.639 0,-19.278" /><path 109 d="m 827.857,816.772 38.556,9.639 -38.556,9.639 0,-19.278" /><path
110 inkscape:connector-curvature="0" 110 inkscape:connector-curvature="0"
111 id="path40" 111 id="path40"
112 style="fill:none;stroke:#000000;stroke-width:2.40974998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 112 style="fill:none;stroke:#000000;stroke-width:2.40974998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
113 d="m 827.857,816.772 38.556,9.639 -38.556,9.639 0,-19.278 z" /><path 113 d="m 827.857,816.772 38.556,9.639 -38.556,9.639 0,-19.278 z" /><path
114 inkscape:connector-curvature="0" 114 inkscape:connector-curvature="0"
115 id="path42" 115 id="path42"
116 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" 116 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
117 d="m 235.701,836.05 -38.556,-9.639 38.556,-9.639 0,19.278" /><path 117 d="m 235.701,836.05 -38.556,-9.639 38.556,-9.639 0,19.278" /><path
118 inkscape:connector-curvature="0" 118 inkscape:connector-curvature="0"
119 id="path44" 119 id="path44"
120 style="fill:none;stroke:#000000;stroke-width:2.40974998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 120 style="fill:none;stroke:#000000;stroke-width:2.40974998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
121 d="m 235.701,836.05 -38.556,-9.639 38.556,-9.639 0,19.278 z" /><path 121 d="m 235.701,836.05 -38.556,-9.639 38.556,-9.639 0,19.278 z" /><path
122 inkscape:connector-curvature="0" 122 inkscape:connector-curvature="0"
123 id="path46" 123 id="path46"
124 style="fill:none;stroke:#000000;stroke-width:2.40974998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 124 style="fill:none;stroke:#000000;stroke-width:2.40974998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
125 d="m 1073.97,493.866 28.92,86.751" /></g><g 125 d="m 1073.97,493.866 28.92,86.751" /></g><g
126 id="g48" 126 id="g48"
127 transform="matrix(0.36030235,0,0,0.36030235,-0.75498483,-1.0743684)" 127 transform="matrix(0.36030235,0,0,0.36030235,-0.75498483,-1.0743684)"
128 style=""><g 128 style=""><g
129 clip-path="url(#clipPath52)" 129 clip-path="url(#clipPath52)"
130 id="g50" 130 id="g50"
131 style=""><path 131 style=""><path
132 inkscape:connector-curvature="0" 132 inkscape:connector-curvature="0"
133 id="path56" 133 id="path56"
134 style="fill:none;stroke:#000000;stroke-width:2.40974998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 134 style="fill:none;stroke:#000000;stroke-width:2.40974998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
135 d="m 105.253,89.0276 694.008,0" /></g></g><path 135 d="m 105.253,89.0276 694.008,0" /></g></g><path
136 d="m 52.91205,34.475403 -13.891817,-3.472918 13.891817,-3.472918 0,6.945836" 136 d="m 52.91205,34.475403 -13.891817,-3.472918 13.891817,-3.472918 0,6.945836"
137 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" 137 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
138 id="path60" 138 id="path60"
@@ -196,13 +196,13 @@
196 id="g90" 196 id="g90"
197 transform="matrix(0.36030235,0,0,0.36030235,-0.75498483,-1.0743684)" 197 transform="matrix(0.36030235,0,0,0.36030235,-0.75498483,-1.0743684)"
198 style=""><g 198 style=""><g
199 clip-path="url(#clipPath94)" 199 clip-path="url(#clipPath94)"
200 id="g92" 200 id="g92"
201 style=""><path 201 style=""><path
202 inkscape:connector-curvature="0" 202 inkscape:connector-curvature="0"
203 id="path98" 203 id="path98"
204 style="fill:none;stroke:#000000;stroke-width:2.40974998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1" 204 style="fill:none;stroke:#000000;stroke-width:2.40974998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
205 d="m 192.004,204.696 274.711,0" /></g></g><path 205 d="m 192.004,204.696 274.711,0" /></g></g><path
206 d="m 84.168639,76.151036 -13.891817,-3.472955 13.891817,-3.472954 0,6.945909" 206 d="m 84.168639,76.151036 -13.891817,-3.472955 13.891817,-3.472954 0,6.945909"
207 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none" 207 style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none"
208 id="path102" 208 id="path102"
@@ -224,90 +224,90 @@
224 transform="scale(1,-1)" 224 transform="scale(1,-1)"
225 x="438.29504" 225 x="438.29504"
226 y="-187.28558"><tspan 226 y="-187.28558"><tspan
227 id="tspan114" 227 id="tspan114"
228 sodipodi:role="line" 228 sodipodi:role="line"
229 y="-187.28558" 229 y="-187.28558"
230 x="438.29504 452.19382 456.81979 468.40555 478.82443 489.24329 495.03619 506.62195 518.2077 528.62659 540.21234">Black Level</tspan><tspan 230 x="438.29504 452.19382 456.81979 468.40555 478.82443 489.24329 495.03619 506.62195 518.2077 528.62659 540.21234">Black Level</tspan><tspan
231 id="tspan116" 231 id="tspan116"
232 sodipodi:role="line" 232 sodipodi:role="line"
233 y="-83.096947" 233 y="-83.096947"
234 x="438.29504 452.19382 462.61267 474.19846 484.61731 490.41019 501.99597 513.58173 524.00061 535.58636">Sync Level</tspan><tspan 234 x="438.29504 452.19382 462.61267 474.19846 484.61731 490.41019 501.99597 513.58173 524.00061 535.58636">Sync Level</tspan><tspan
235 id="tspan118" 235 id="tspan118"
236 sodipodi:role="line" 236 sodipodi:role="line"
237 y="-395.66284" 237 y="-395.66284"
238 x="438.29504 457.96585 469.55164 474.17761 479.97049 491.55627 497.34915 508.93494 520.52069 530.93958 542.52533">White Level</tspan></text> 238 x="438.29504 457.96585 469.55164 474.17761 479.97049 491.55627 497.34915 508.93494 520.52069 530.93958 542.52533">White Level</tspan></text>
239<text 239<text
240 id="text120" 240 id="text120"
241 style="font-variant:normal;font-weight:normal;font-size:20.83772659px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 241 style="font-variant:normal;font-weight:normal;font-size:20.83772659px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
242 transform="scale(1,-1)" 242 transform="scale(1,-1)"
243 x="159.88258" 243 x="159.88258"
244 y="-270.63647"><tspan 244 y="-270.63647"><tspan
245 id="tspan122" 245 id="tspan122"
246 sodipodi:role="line" 246 sodipodi:role="line"
247 y="-270.63647" 247 y="-270.63647"
248 x="159.88258 172.61443 179.55339 186.49236 198.07812 209.66391">offset</tspan></text> 248 x="159.88258 172.61443 179.55339 186.49236 198.07812 209.66391">offset</tspan></text>
249<text 249<text
250 id="text124" 250 id="text124"
251 style="font-variant:normal;font-weight:normal;font-size:20.83772659px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 251 style="font-variant:normal;font-weight:normal;font-size:20.83772659px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
252 transform="scale(1,-1)" 252 transform="scale(1,-1)"
253 x="46.973549" 253 x="46.973549"
254 y="-46.630745"><tspan 254 y="-46.630745"><tspan
255 id="tspan126" 255 id="tspan126"
256 sodipodi:role="line" 256 sodipodi:role="line"
257 y="-46.630745" 257 y="-46.630745"
258 x="46.973549 58.559322 63.185299 74.771072 86.35685 92.149734 102.5686 112.98746 124.57324 134.9921 146.57788 153.51685 159.30972 165.10262 176.68839 188.27417 192.90015 203.319">Line synchr. pulse</tspan><tspan 258 x="46.973549 58.559322 63.185299 74.771072 86.35685 92.149734 102.5686 112.98746 124.57324 134.9921 146.57788 153.51685 159.30972 165.10262 176.68839 188.27417 192.90015 203.319">Line synchr. pulse</tspan><tspan
259 id="tspan128" 259 id="tspan128"
260 sodipodi:role="line" 260 sodipodi:role="line"
261 y="-4.9552913" 261 y="-4.9552913"
262 x="100.80776 112.39354 117.01952 128.60529 140.19107 145.98395 157.56973 162.19569 173.78148 185.36726 195.78612 200.41209 211.99788">Line blanking</tspan></text> 262 x="100.80776 112.39354 117.01952 128.60529 140.19107 145.98395 157.56973 162.19569 173.78148 185.36726 195.78612 200.41209 211.99788">Line blanking</tspan></text>
263<text 263<text
264 id="text3473" 264 id="text3473"
265 style="font-variant:normal;font-weight:normal;font-size:20.83772659px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 265 style="font-variant:normal;font-weight:normal;font-size:20.83772659px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
266 transform="scale(1,-1)" 266 transform="scale(1,-1)"
267 x="46.973549 58.559322 63.185299 74.771072 86.35685 92.149734 102.5686 112.98746 124.57324 134.9921 146.57788 153.51685 159.30972 165.10262 176.68839 188.27417 192.90015 203.319" 267 x="46.973549 58.559322 63.185299 74.771072 86.35685 92.149734 102.5686 112.98746 124.57324 134.9921 146.57788 153.51685 159.30972 165.10262 176.68839 188.27417 192.90015 203.319"
268 y="-46.630745"><tspan 268 y="-46.630745"><tspan
269 id="tspan3475" 269 id="tspan3475"
270 sodipodi:role="line" 270 sodipodi:role="line"
271 y="-46.630745" 271 y="-46.630745"
272 x="46.973549 58.559322 63.185299 74.771072 86.35685 92.149734 102.5686 112.98746 124.57324 134.9921 146.57788 153.51685 159.30972 165.10262 176.68839 188.27417 192.90015 203.319">Line synchr. pulse</tspan></text> 272 x="46.973549 58.559322 63.185299 74.771072 86.35685 92.149734 102.5686 112.98746 124.57324 134.9921 146.57788 153.51685 159.30972 165.10262 176.68839 188.27417 192.90015 203.319">Line synchr. pulse</tspan></text>
273<text 273<text
274 id="text3477" 274 id="text3477"
275 style="font-variant:normal;font-weight:normal;font-size:20.83772659px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 275 style="font-variant:normal;font-weight:normal;font-size:20.83772659px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
276 transform="scale(1,-1)" 276 transform="scale(1,-1)"
277 x="100.80776 112.39354 117.01952 128.60529 140.19107 145.98395 157.56973 162.19569 173.78148 185.36726 195.78612 200.41209 211.99788" 277 x="100.80776 112.39354 117.01952 128.60529 140.19107 145.98395 157.56973 162.19569 173.78148 185.36726 195.78612 200.41209 211.99788"
278 y="-4.9552913"><tspan 278 y="-4.9552913"><tspan
279 id="tspan3479" 279 id="tspan3479"
280 sodipodi:role="line" 280 sodipodi:role="line"
281 y="-4.9552913" 281 y="-4.9552913"
282 x="100.80776 112.39354 117.01952 128.60529 140.19107 145.98395 157.56973 162.19569 173.78148 185.36726 195.78612 200.41209 211.99788">Line blanking</tspan></text> 282 x="100.80776 112.39354 117.01952 128.60529 140.19107 145.98395 157.56973 162.19569 173.78148 185.36726 195.78612 200.41209 211.99788">Line blanking</tspan></text>
283<text 283<text
284 id="text3607" 284 id="text3607"
285 style="font-variant:normal;font-weight:normal;font-size:20.83772659px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 285 style="font-variant:normal;font-weight:normal;font-size:20.83772659px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
286 transform="scale(1,-1)" 286 transform="scale(1,-1)"
287 x="438.29504 452.19382 456.81979 468.40555 478.82443 489.24329 495.03619 506.62195 518.2077 528.62659 540.21234" 287 x="438.29504 452.19382 456.81979 468.40555 478.82443 489.24329 495.03619 506.62195 518.2077 528.62659 540.21234"
288 y="-187.28558"><tspan 288 y="-187.28558"><tspan
289 id="tspan3609" 289 id="tspan3609"
290 sodipodi:role="line" 290 sodipodi:role="line"
291 y="-187.28558" 291 y="-187.28558"
292 x="438.29504 452.19382 456.81979 468.40555 478.82443 489.24329 495.03619 506.62195 518.2077 528.62659 540.21234">Black Level</tspan></text> 292 x="438.29504 452.19382 456.81979 468.40555 478.82443 489.24329 495.03619 506.62195 518.2077 528.62659 540.21234">Black Level</tspan></text>
293<text 293<text
294 id="text3611" 294 id="text3611"
295 style="font-variant:normal;font-weight:normal;font-size:20.83772659px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 295 style="font-variant:normal;font-weight:normal;font-size:20.83772659px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
296 transform="scale(1,-1)" 296 transform="scale(1,-1)"
297 x="438.29504 452.19382 462.61267 474.19846 484.61731 490.41019 501.99597 513.58173 524.00061 535.58636" 297 x="438.29504 452.19382 462.61267 474.19846 484.61731 490.41019 501.99597 513.58173 524.00061 535.58636"
298 y="-83.096947"><tspan 298 y="-83.096947"><tspan
299 id="tspan3613" 299 id="tspan3613"
300 sodipodi:role="line" 300 sodipodi:role="line"
301 y="-83.096947" 301 y="-83.096947"
302 x="438.29504 452.19382 462.61267 474.19846 484.61731 490.41019 501.99597 513.58173 524.00061 535.58636">Sync Level</tspan></text> 302 x="438.29504 452.19382 462.61267 474.19846 484.61731 490.41019 501.99597 513.58173 524.00061 535.58636">Sync Level</tspan></text>
303<text 303<text
304 id="text3615" 304 id="text3615"
305 style="font-variant:normal;font-weight:normal;font-size:20.83772659px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;" 305 style="font-variant:normal;font-weight:normal;font-size:20.83772659px;font-family:sans-serif;-inkscape-font-specification:sans-serif;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-style:normal;font-stretch:normal;"
306 transform="scale(1,-1)" 306 transform="scale(1,-1)"
307 x="438.29504 457.96585 469.55164 474.17761 479.97049 491.55627 497.34915 508.93494 520.52069 530.93958 542.52533" 307 x="438.29504 457.96585 469.55164 474.17761 479.97049 491.55627 497.34915 508.93494 520.52069 530.93958 542.52533"
308 y="-395.66284"><tspan 308 y="-395.66284"><tspan
309 id="tspan3617" 309 id="tspan3617"
310 sodipodi:role="line" 310 sodipodi:role="line"
311 y="-395.66284" 311 y="-395.66284"
312 x="438.29504 457.96585 469.55164 474.17761 479.97049 491.55627 497.34915 508.93494 520.52069 530.93958 542.52533">White Level</tspan></text> 312 x="438.29504 457.96585 469.55164 474.17761 479.97049 491.55627 497.34915 508.93494 520.52069 530.93958 542.52533">White Level</tspan></text>
313</g></svg> \ No newline at end of file 313</g></svg> \ No newline at end of file
diff --git a/Documentation/media/uapi/v4l/vidioc-g-fmt.rst b/Documentation/media/uapi/v4l/vidioc-g-fmt.rst
index b853e48312e2..d082f9a21548 100644
--- a/Documentation/media/uapi/v4l/vidioc-g-fmt.rst
+++ b/Documentation/media/uapi/v4l/vidioc-g-fmt.rst
@@ -147,3 +147,9 @@ appropriately. The generic error codes are described at the
147EINVAL 147EINVAL
148 The struct :c:type:`v4l2_format` ``type`` field is 148 The struct :c:type:`v4l2_format` ``type`` field is
149 invalid or the requested buffer type not supported. 149 invalid or the requested buffer type not supported.
150
151EBUSY
152 The device is busy and cannot change the format. This could be
153 because or the device is streaming or buffers are allocated or
154 queued to the driver. Relevant for :ref:`VIDIOC_S_FMT
155 <VIDIOC_G_FMT>` only.
diff --git a/Documentation/media/v4l-drivers/imx.rst b/Documentation/media/v4l-drivers/imx.rst
index e0ee0f1aeb05..3c4f58bda178 100644
--- a/Documentation/media/v4l-drivers/imx.rst
+++ b/Documentation/media/v4l-drivers/imx.rst
@@ -607,8 +607,9 @@ References
607 607
608Authors 608Authors
609------- 609-------
610Steve Longerbeam <steve_longerbeam@mentor.com> 610
611Philipp Zabel <kernel@pengutronix.de> 611- Steve Longerbeam <steve_longerbeam@mentor.com>
612Russell King <linux@armlinux.org.uk> 612- Philipp Zabel <kernel@pengutronix.de>
613- Russell King <linux@armlinux.org.uk>
613 614
614Copyright (C) 2012-2017 Mentor Graphics Inc. 615Copyright (C) 2012-2017 Mentor Graphics Inc.
diff --git a/Documentation/media/v4l-drivers/index.rst b/Documentation/media/v4l-drivers/index.rst
index 2e24d6806052..10f2ce42ece2 100644
--- a/Documentation/media/v4l-drivers/index.rst
+++ b/Documentation/media/v4l-drivers/index.rst
@@ -41,6 +41,7 @@ For more details see the file COPYING in the source distribution of Linux.
41 cx88 41 cx88
42 davinci-vpbe 42 davinci-vpbe
43 fimc 43 fimc
44 imx
44 ivtv 45 ivtv
45 max2175 46 max2175
46 meye 47 meye
diff --git a/Documentation/networking/switchdev.txt b/Documentation/networking/switchdev.txt
index 3e7b946dea27..5e40e1f68873 100644
--- a/Documentation/networking/switchdev.txt
+++ b/Documentation/networking/switchdev.txt
@@ -228,7 +228,7 @@ Learning on the device port should be enabled, as well as learning_sync:
228 bridge link set dev DEV learning on self 228 bridge link set dev DEV learning on self
229 bridge link set dev DEV learning_sync on self 229 bridge link set dev DEV learning_sync on self
230 230
231Learning_sync attribute enables syncing of the learned/forgotton FDB entry to 231Learning_sync attribute enables syncing of the learned/forgotten FDB entry to
232the bridge's FDB. It's possible, but not optimal, to enable learning on the 232the bridge's FDB. It's possible, but not optimal, to enable learning on the
233device port and on the bridge port, and disable learning_sync. 233device port and on the bridge port, and disable learning_sync.
234 234
@@ -245,7 +245,7 @@ the responsibility of the port driver/device to age out these entries. If the
245port device supports ageing, when the FDB entry expires, it will notify the 245port device supports ageing, when the FDB entry expires, it will notify the
246driver which in turn will notify the bridge with SWITCHDEV_FDB_DEL. If the 246driver which in turn will notify the bridge with SWITCHDEV_FDB_DEL. If the
247device does not support ageing, the driver can simulate ageing using a 247device does not support ageing, the driver can simulate ageing using a
248garbage collection timer to monitor FBD entries. Expired entries will be 248garbage collection timer to monitor FDB entries. Expired entries will be
249notified to the bridge using SWITCHDEV_FDB_DEL. See rocker driver for 249notified to the bridge using SWITCHDEV_FDB_DEL. See rocker driver for
250example of driver running ageing timer. 250example of driver running ageing timer.
251 251
diff --git a/Documentation/power/runtime_pm.txt b/Documentation/power/runtime_pm.txt
index 0fde3dcf077a..625549d4c74a 100644
--- a/Documentation/power/runtime_pm.txt
+++ b/Documentation/power/runtime_pm.txt
@@ -435,7 +435,8 @@ drivers/base/power/runtime.c and include/linux/pm_runtime.h:
435 PM status to 'suspended' and update its parent's counter of 'active' 435 PM status to 'suspended' and update its parent's counter of 'active'
436 children as appropriate (it is only valid to use this function if 436 children as appropriate (it is only valid to use this function if
437 'power.runtime_error' is set or 'power.disable_depth' is greater than 437 'power.runtime_error' is set or 'power.disable_depth' is greater than
438 zero) 438 zero); it will fail and return an error code if the device has a child
439 which is active and the 'power.ignore_children' flag is unset
439 440
440 bool pm_runtime_active(struct device *dev); 441 bool pm_runtime_active(struct device *dev);
441 - return true if the device's runtime PM status is 'active' or its 442 - return true if the device's runtime PM status is 'active' or its
diff --git a/Documentation/printk-formats.txt b/Documentation/printk-formats.txt
index 65ea5915178b..074670b98bac 100644
--- a/Documentation/printk-formats.txt
+++ b/Documentation/printk-formats.txt
@@ -58,20 +58,23 @@ Symbols/Function Pointers
58 %ps versatile_init 58 %ps versatile_init
59 %pB prev_fn_of_versatile_init+0x88/0x88 59 %pB prev_fn_of_versatile_init+0x88/0x88
60 60
61For printing symbols and function pointers. The ``S`` and ``s`` specifiers 61The ``F`` and ``f`` specifiers are for printing function pointers,
62result in the symbol name with (``S``) or without (``s``) offsets. Where 62for example, f->func, &gettimeofday. They have the same result as
63this is used on a kernel without KALLSYMS - the symbol address is 63``S`` and ``s`` specifiers. But they do an extra conversion on
64printed instead. 64ia64, ppc64 and parisc64 architectures where the function pointers
65are actually function descriptors.
66
67The ``S`` and ``s`` specifiers can be used for printing symbols
68from direct addresses, for example, __builtin_return_address(0),
69(void *)regs->ip. They result in the symbol name with (``S``) or
70without (``s``) offsets. If KALLSYMS are disabled then the symbol
71address is printed instead.
65 72
66The ``B`` specifier results in the symbol name with offsets and should be 73The ``B`` specifier results in the symbol name with offsets and should be
67used when printing stack backtraces. The specifier takes into 74used when printing stack backtraces. The specifier takes into
68consideration the effect of compiler optimisations which may occur 75consideration the effect of compiler optimisations which may occur
69when tail-call``s are used and marked with the noreturn GCC attribute. 76when tail-call``s are used and marked with the noreturn GCC attribute.
70 77
71On ia64, ppc64 and parisc64 architectures function pointers are
72actually function descriptors which must first be resolved. The ``F`` and
73``f`` specifiers perform this resolution and then provide the same
74functionality as the ``S`` and ``s`` specifiers.
75 78
76Kernel Pointers 79Kernel Pointers
77=============== 80===============
diff --git a/Documentation/sysctl/net.txt b/Documentation/sysctl/net.txt
index 14db18c970b1..28596e03220b 100644
--- a/Documentation/sysctl/net.txt
+++ b/Documentation/sysctl/net.txt
@@ -35,9 +35,34 @@ Table : Subdirectories in /proc/sys/net
35bpf_jit_enable 35bpf_jit_enable
36-------------- 36--------------
37 37
38This enables Berkeley Packet Filter Just in Time compiler. 38This enables the BPF Just in Time (JIT) compiler. BPF is a flexible
39Currently supported on x86_64 architecture, bpf_jit provides a framework 39and efficient infrastructure allowing to execute bytecode at various
40to speed packet filtering, the one used by tcpdump/libpcap for example. 40hook points. It is used in a number of Linux kernel subsystems such
41as networking (e.g. XDP, tc), tracing (e.g. kprobes, uprobes, tracepoints)
42and security (e.g. seccomp). LLVM has a BPF back end that can compile
43restricted C into a sequence of BPF instructions. After program load
44through bpf(2) and passing a verifier in the kernel, a JIT will then
45translate these BPF proglets into native CPU instructions. There are
46two flavors of JITs, the newer eBPF JIT currently supported on:
47 - x86_64
48 - arm64
49 - ppc64
50 - sparc64
51 - mips64
52 - s390x
53
54And the older cBPF JIT supported on the following archs:
55 - arm
56 - mips
57 - ppc
58 - sparc
59
60eBPF JITs are a superset of cBPF JITs, meaning the kernel will
61migrate cBPF instructions into eBPF instructions and then JIT
62compile them transparently. Older cBPF JITs can only translate
63tcpdump filters, seccomp rules, etc, but not mentioned eBPF
64programs loaded through bpf(2).
65
41Values : 66Values :
42 0 - disable the JIT (default value) 67 0 - disable the JIT (default value)
43 1 - enable the JIT 68 1 - enable the JIT
@@ -46,9 +71,9 @@ Values :
46bpf_jit_harden 71bpf_jit_harden
47-------------- 72--------------
48 73
49This enables hardening for the Berkeley Packet Filter Just in Time compiler. 74This enables hardening for the BPF JIT compiler. Supported are eBPF
50Supported are eBPF JIT backends. Enabling hardening trades off performance, 75JIT backends. Enabling hardening trades off performance, but can
51but can mitigate JIT spraying. 76mitigate JIT spraying.
52Values : 77Values :
53 0 - disable JIT hardening (default value) 78 0 - disable JIT hardening (default value)
54 1 - enable JIT hardening for unprivileged users only 79 1 - enable JIT hardening for unprivileged users only
@@ -57,11 +82,11 @@ Values :
57bpf_jit_kallsyms 82bpf_jit_kallsyms
58---------------- 83----------------
59 84
60When Berkeley Packet Filter Just in Time compiler is enabled, then compiled 85When BPF JIT compiler is enabled, then compiled images are unknown
61images are unknown addresses to the kernel, meaning they neither show up in 86addresses to the kernel, meaning they neither show up in traces nor
62traces nor in /proc/kallsyms. This enables export of these addresses, which 87in /proc/kallsyms. This enables export of these addresses, which can
63can be used for debugging/tracing. If bpf_jit_harden is enabled, this feature 88be used for debugging/tracing. If bpf_jit_harden is enabled, this
64is disabled. 89feature is disabled.
65Values : 90Values :
66 0 - disable JIT kallsyms export (default value) 91 0 - disable JIT kallsyms export (default value)
67 1 - enable JIT kallsyms export for privileged users only 92 1 - enable JIT kallsyms export for privileged users only
diff --git a/MAINTAINERS b/MAINTAINERS
index 205d3977ac46..1c3feffb1c1c 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -205,7 +205,6 @@ F: include/net/9p/
205F: include/uapi/linux/virtio_9p.h 205F: include/uapi/linux/virtio_9p.h
206F: include/trace/events/9p.h 206F: include/trace/events/9p.h
207 207
208
209A8293 MEDIA DRIVER 208A8293 MEDIA DRIVER
210M: Antti Palosaari <crope@iki.fi> 209M: Antti Palosaari <crope@iki.fi>
211L: linux-media@vger.kernel.org 210L: linux-media@vger.kernel.org
@@ -492,13 +491,6 @@ S: Maintained
492F: Documentation/hwmon/adt7475 491F: Documentation/hwmon/adt7475
493F: drivers/hwmon/adt7475.c 492F: drivers/hwmon/adt7475.c
494 493
495ADXL34X THREE-AXIS DIGITAL ACCELEROMETER DRIVER (ADXL345/ADXL346)
496M: Michael Hennerich <michael.hennerich@analog.com>
497W: http://wiki.analog.com/ADXL345
498W: http://ez.analog.com/community/linux-device-drivers
499S: Supported
500F: drivers/input/misc/adxl34x.c
501
502ADVANSYS SCSI DRIVER 494ADVANSYS SCSI DRIVER
503M: Matthew Wilcox <matthew@wil.cx> 495M: Matthew Wilcox <matthew@wil.cx>
504M: Hannes Reinecke <hare@suse.com> 496M: Hannes Reinecke <hare@suse.com>
@@ -507,6 +499,13 @@ S: Maintained
507F: Documentation/scsi/advansys.txt 499F: Documentation/scsi/advansys.txt
508F: drivers/scsi/advansys.c 500F: drivers/scsi/advansys.c
509 501
502ADXL34X THREE-AXIS DIGITAL ACCELEROMETER DRIVER (ADXL345/ADXL346)
503M: Michael Hennerich <michael.hennerich@analog.com>
504W: http://wiki.analog.com/ADXL345
505W: http://ez.analog.com/community/linux-device-drivers
506S: Supported
507F: drivers/input/misc/adxl34x.c
508
510AEDSP16 DRIVER 509AEDSP16 DRIVER
511M: Riccardo Facchetti <fizban@tin.it> 510M: Riccardo Facchetti <fizban@tin.it>
512S: Maintained 511S: Maintained
@@ -808,6 +807,12 @@ W: http://blackfin.uclinux.org/
808S: Supported 807S: Supported
809F: sound/soc/blackfin/* 808F: sound/soc/blackfin/*
810 809
810ANALOG DEVICES INC DMA DRIVERS
811M: Lars-Peter Clausen <lars@metafoo.de>
812W: http://ez.analog.com/community/linux-device-drivers
813S: Supported
814F: drivers/dma/dma-axi-dmac.c
815
811ANALOG DEVICES INC IIO DRIVERS 816ANALOG DEVICES INC IIO DRIVERS
812M: Lars-Peter Clausen <lars@metafoo.de> 817M: Lars-Peter Clausen <lars@metafoo.de>
813M: Michael Hennerich <Michael.Hennerich@analog.com> 818M: Michael Hennerich <Michael.Hennerich@analog.com>
@@ -820,12 +825,6 @@ X: drivers/iio/*/adjd*
820F: drivers/staging/iio/*/ad* 825F: drivers/staging/iio/*/ad*
821F: drivers/staging/iio/trigger/iio-trig-bfin-timer.c 826F: drivers/staging/iio/trigger/iio-trig-bfin-timer.c
822 827
823ANALOG DEVICES INC DMA DRIVERS
824M: Lars-Peter Clausen <lars@metafoo.de>
825W: http://ez.analog.com/community/linux-device-drivers
826S: Supported
827F: drivers/dma/dma-axi-dmac.c
828
829ANDROID CONFIG FRAGMENTS 828ANDROID CONFIG FRAGMENTS
830M: Rob Herring <robh@kernel.org> 829M: Rob Herring <robh@kernel.org>
831S: Supported 830S: Supported
@@ -872,6 +871,15 @@ F: include/linux/apm_bios.h
872F: include/uapi/linux/apm_bios.h 871F: include/uapi/linux/apm_bios.h
873F: drivers/char/apm-emulation.c 872F: drivers/char/apm-emulation.c
874 873
874APPARMOR SECURITY MODULE
875M: John Johansen <john.johansen@canonical.com>
876L: apparmor@lists.ubuntu.com (subscribers-only, general discussion)
877W: apparmor.wiki.kernel.org
878T: git git://git.kernel.org/pub/scm/linux/kernel/git/jj/apparmor-dev.git
879S: Supported
880F: security/apparmor/
881F: Documentation/admin-guide/LSM/apparmor.rst
882
875APPLE BCM5974 MULTITOUCH DRIVER 883APPLE BCM5974 MULTITOUCH DRIVER
876M: Henrik Rydberg <rydberg@bitmath.org> 884M: Henrik Rydberg <rydberg@bitmath.org>
877L: linux-input@vger.kernel.org 885L: linux-input@vger.kernel.org
@@ -895,6 +903,18 @@ M: Duc Dang <dhdang@apm.com>
895S: Supported 903S: Supported
896F: arch/arm64/boot/dts/apm/ 904F: arch/arm64/boot/dts/apm/
897 905
906APPLIED MICRO (APM) X-GENE SOC EDAC
907M: Loc Ho <lho@apm.com>
908S: Supported
909F: drivers/edac/xgene_edac.c
910F: Documentation/devicetree/bindings/edac/apm-xgene-edac.txt
911
912APPLIED MICRO (APM) X-GENE SOC ETHERNET (V2) DRIVER
913M: Iyappan Subramanian <isubramanian@apm.com>
914M: Keyur Chudgar <kchudgar@apm.com>
915S: Supported
916F: drivers/net/ethernet/apm/xgene-v2/
917
898APPLIED MICRO (APM) X-GENE SOC ETHERNET DRIVER 918APPLIED MICRO (APM) X-GENE SOC ETHERNET DRIVER
899M: Iyappan Subramanian <isubramanian@apm.com> 919M: Iyappan Subramanian <isubramanian@apm.com>
900M: Keyur Chudgar <kchudgar@apm.com> 920M: Keyur Chudgar <kchudgar@apm.com>
@@ -905,12 +925,6 @@ F: drivers/net/phy/mdio-xgene.c
905F: Documentation/devicetree/bindings/net/apm-xgene-enet.txt 925F: Documentation/devicetree/bindings/net/apm-xgene-enet.txt
906F: Documentation/devicetree/bindings/net/apm-xgene-mdio.txt 926F: Documentation/devicetree/bindings/net/apm-xgene-mdio.txt
907 927
908APPLIED MICRO (APM) X-GENE SOC ETHERNET (V2) DRIVER
909M: Iyappan Subramanian <isubramanian@apm.com>
910M: Keyur Chudgar <kchudgar@apm.com>
911S: Supported
912F: drivers/net/ethernet/apm/xgene-v2/
913
914APPLIED MICRO (APM) X-GENE SOC PMU 928APPLIED MICRO (APM) X-GENE SOC PMU
915M: Tai Nguyen <ttnguyen@apm.com> 929M: Tai Nguyen <ttnguyen@apm.com>
916S: Supported 930S: Supported
@@ -930,6 +944,12 @@ S: Maintained
930F: drivers/video/fbdev/arcfb.c 944F: drivers/video/fbdev/arcfb.c
931F: drivers/video/fbdev/core/fb_defio.c 945F: drivers/video/fbdev/core/fb_defio.c
932 946
947ARC PGU DRM DRIVER
948M: Alexey Brodkin <abrodkin@synopsys.com>
949S: Supported
950F: drivers/gpu/drm/arc/
951F: Documentation/devicetree/bindings/display/snps,arcpgu.txt
952
933ARCNET NETWORK LAYER 953ARCNET NETWORK LAYER
934M: Michael Grzeschik <m.grzeschik@pengutronix.de> 954M: Michael Grzeschik <m.grzeschik@pengutronix.de>
935L: netdev@vger.kernel.org 955L: netdev@vger.kernel.org
@@ -937,12 +957,6 @@ S: Maintained
937F: drivers/net/arcnet/ 957F: drivers/net/arcnet/
938F: include/uapi/linux/if_arcnet.h 958F: include/uapi/linux/if_arcnet.h
939 959
940ARC PGU DRM DRIVER
941M: Alexey Brodkin <abrodkin@synopsys.com>
942S: Supported
943F: drivers/gpu/drm/arc/
944F: Documentation/devicetree/bindings/display/snps,arcpgu.txt
945
946ARM ARCHITECTED TIMER DRIVER 960ARM ARCHITECTED TIMER DRIVER
947M: Mark Rutland <mark.rutland@arm.com> 961M: Mark Rutland <mark.rutland@arm.com>
948M: Marc Zyngier <marc.zyngier@arm.com> 962M: Marc Zyngier <marc.zyngier@arm.com>
@@ -995,18 +1009,17 @@ S: Maintained
995T: git git://git.armlinux.org.uk/~rmk/linux-arm.git 1009T: git git://git.armlinux.org.uk/~rmk/linux-arm.git
996F: arch/arm/ 1010F: arch/arm/
997 1011
998ARM SUB-ARCHITECTURES
999L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1000S: Maintained
1001F: arch/arm/mach-*/
1002F: arch/arm/plat-*/
1003T: git git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git
1004
1005ARM PRIMECELL AACI PL041 DRIVER 1012ARM PRIMECELL AACI PL041 DRIVER
1006M: Russell King <linux@armlinux.org.uk> 1013M: Russell King <linux@armlinux.org.uk>
1007S: Maintained 1014S: Maintained
1008F: sound/arm/aaci.* 1015F: sound/arm/aaci.*
1009 1016
1017ARM PRIMECELL BUS SUPPORT
1018M: Russell King <linux@armlinux.org.uk>
1019S: Maintained
1020F: drivers/amba/
1021F: include/linux/amba/bus.h
1022
1010ARM PRIMECELL CLCD PL110 DRIVER 1023ARM PRIMECELL CLCD PL110 DRIVER
1011M: Russell King <linux@armlinux.org.uk> 1024M: Russell King <linux@armlinux.org.uk>
1012S: Maintained 1025S: Maintained
@@ -1030,11 +1043,22 @@ S: Maintained
1030F: drivers/tty/serial/amba-pl01*.c 1043F: drivers/tty/serial/amba-pl01*.c
1031F: include/linux/amba/serial.h 1044F: include/linux/amba/serial.h
1032 1045
1033ARM PRIMECELL BUS SUPPORT 1046ARM SMMU DRIVERS
1034M: Russell King <linux@armlinux.org.uk> 1047M: Will Deacon <will.deacon@arm.com>
1048R: Robin Murphy <robin.murphy@arm.com>
1049L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1035S: Maintained 1050S: Maintained
1036F: drivers/amba/ 1051F: drivers/iommu/arm-smmu.c
1037F: include/linux/amba/bus.h 1052F: drivers/iommu/arm-smmu-v3.c
1053F: drivers/iommu/io-pgtable-arm.c
1054F: drivers/iommu/io-pgtable-arm-v7s.c
1055
1056ARM SUB-ARCHITECTURES
1057L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1058S: Maintained
1059F: arch/arm/mach-*/
1060F: arch/arm/plat-*/
1061T: git git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc.git
1038 1062
1039ARM/ACTIONS SEMI ARCHITECTURE 1063ARM/ACTIONS SEMI ARCHITECTURE
1040M: Andreas Färber <afaerber@suse.de> 1064M: Andreas Färber <afaerber@suse.de>
@@ -1067,6 +1091,11 @@ M: Lennert Buytenhek <kernel@wantstofly.org>
1067L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 1091L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1068S: Maintained 1092S: Maintained
1069 1093
1094ARM/Allwinner SoC Clock Support
1095M: Emilio López <emilio@elopez.com.ar>
1096S: Maintained
1097F: drivers/clk/sunxi/
1098
1070ARM/Allwinner sunXi SoC support 1099ARM/Allwinner sunXi SoC support
1071M: Maxime Ripard <maxime.ripard@free-electrons.com> 1100M: Maxime Ripard <maxime.ripard@free-electrons.com>
1072M: Chen-Yu Tsai <wens@csie.org> 1101M: Chen-Yu Tsai <wens@csie.org>
@@ -1081,10 +1110,15 @@ F: drivers/pinctrl/sunxi/
1081F: drivers/soc/sunxi/ 1110F: drivers/soc/sunxi/
1082T: git git://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux.git 1111T: git git://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux.git
1083 1112
1084ARM/Allwinner SoC Clock Support 1113ARM/Amlogic Meson SoC CLOCK FRAMEWORK
1085M: Emilio López <emilio@elopez.com.ar> 1114M: Neil Armstrong <narmstrong@baylibre.com>
1115M: Jerome Brunet <jbrunet@baylibre.com>
1116L: linux-amlogic@lists.infradead.org
1086S: Maintained 1117S: Maintained
1087F: drivers/clk/sunxi/ 1118F: drivers/clk/meson/
1119F: include/dt-bindings/clock/meson*
1120F: include/dt-bindings/clock/gxbb*
1121F: Documentation/devicetree/bindings/clock/amlogic*
1088 1122
1089ARM/Amlogic Meson SoC support 1123ARM/Amlogic Meson SoC support
1090M: Carlo Caione <carlo@caione.org> 1124M: Carlo Caione <carlo@caione.org>
@@ -1096,20 +1130,10 @@ S: Maintained
1096F: arch/arm/mach-meson/ 1130F: arch/arm/mach-meson/
1097F: arch/arm/boot/dts/meson* 1131F: arch/arm/boot/dts/meson*
1098F: arch/arm64/boot/dts/amlogic/ 1132F: arch/arm64/boot/dts/amlogic/
1099F: drivers/pinctrl/meson/ 1133F: drivers/pinctrl/meson/
1100F: drivers/mmc/host/meson* 1134F: drivers/mmc/host/meson*
1101N: meson 1135N: meson
1102 1136
1103ARM/Amlogic Meson SoC CLOCK FRAMEWORK
1104M: Neil Armstrong <narmstrong@baylibre.com>
1105M: Jerome Brunet <jbrunet@baylibre.com>
1106L: linux-amlogic@lists.infradead.org
1107S: Maintained
1108F: drivers/clk/meson/
1109F: include/dt-bindings/clock/meson*
1110F: include/dt-bindings/clock/gxbb*
1111F: Documentation/devicetree/bindings/clock/amlogic*
1112
1113ARM/Annapurna Labs ALPINE ARCHITECTURE 1137ARM/Annapurna Labs ALPINE ARCHITECTURE
1114M: Tsahee Zidenberg <tsahee@annapurnalabs.com> 1138M: Tsahee Zidenberg <tsahee@annapurnalabs.com>
1115M: Antoine Tenart <antoine.tenart@free-electrons.com> 1139M: Antoine Tenart <antoine.tenart@free-electrons.com>
@@ -1132,25 +1156,30 @@ F: drivers/clk/axis
1132F: drivers/pinctrl/pinctrl-artpec* 1156F: drivers/pinctrl/pinctrl-artpec*
1133F: Documentation/devicetree/bindings/pinctrl/axis,artpec6-pinctrl.txt 1157F: Documentation/devicetree/bindings/pinctrl/axis,artpec6-pinctrl.txt
1134 1158
1135ARM/ASPEED MACHINE SUPPORT
1136M: Joel Stanley <joel@jms.id.au>
1137S: Maintained
1138F: arch/arm/mach-aspeed/
1139F: arch/arm/boot/dts/aspeed-*
1140F: drivers/*/*aspeed*
1141
1142ARM/ASPEED I2C DRIVER 1159ARM/ASPEED I2C DRIVER
1143M: Brendan Higgins <brendanhiggins@google.com> 1160M: Brendan Higgins <brendanhiggins@google.com>
1144R: Benjamin Herrenschmidt <benh@kernel.crashing.org> 1161R: Benjamin Herrenschmidt <benh@kernel.crashing.org>
1145R: Joel Stanley <joel@jms.id.au> 1162R: Joel Stanley <joel@jms.id.au>
1146L: linux-i2c@vger.kernel.org 1163L: linux-i2c@vger.kernel.org
1147L: openbmc@lists.ozlabs.org 1164L: openbmc@lists.ozlabs.org (moderated for non-subscribers)
1148S: Maintained 1165S: Maintained
1149F: drivers/irqchip/irq-aspeed-i2c-ic.c 1166F: drivers/irqchip/irq-aspeed-i2c-ic.c
1150F: drivers/i2c/busses/i2c-aspeed.c 1167F: drivers/i2c/busses/i2c-aspeed.c
1151F: Documentation/devicetree/bindings/interrupt-controller/aspeed,ast2400-i2c-ic.txt 1168F: Documentation/devicetree/bindings/interrupt-controller/aspeed,ast2400-i2c-ic.txt
1152F: Documentation/devicetree/bindings/i2c/i2c-aspeed.txt 1169F: Documentation/devicetree/bindings/i2c/i2c-aspeed.txt
1153 1170
1171ARM/ASPEED MACHINE SUPPORT
1172M: Joel Stanley <joel@jms.id.au>
1173S: Maintained
1174F: arch/arm/mach-aspeed/
1175F: arch/arm/boot/dts/aspeed-*
1176F: drivers/*/*aspeed*
1177
1178ARM/ATMEL AT91 Clock Support
1179M: Boris Brezillon <boris.brezillon@free-electrons.com>
1180S: Maintained
1181F: drivers/clk/at91
1182
1154ARM/ATMEL AT91RM9200, AT91SAM9 AND SAMA5 SOC SUPPORT 1183ARM/ATMEL AT91RM9200, AT91SAM9 AND SAMA5 SOC SUPPORT
1155M: Nicolas Ferre <nicolas.ferre@microchip.com> 1184M: Nicolas Ferre <nicolas.ferre@microchip.com>
1156M: Alexandre Belloni <alexandre.belloni@free-electrons.com> 1185M: Alexandre Belloni <alexandre.belloni@free-electrons.com>
@@ -1167,11 +1196,6 @@ F: arch/arm/boot/dts/sama*.dtsi
1167F: arch/arm/include/debug/at91.S 1196F: arch/arm/include/debug/at91.S
1168F: drivers/memory/atmel* 1197F: drivers/memory/atmel*
1169 1198
1170ARM/ATMEL AT91 Clock Support
1171M: Boris Brezillon <boris.brezillon@free-electrons.com>
1172S: Maintained
1173F: drivers/clk/at91
1174
1175ARM/CALXEDA HIGHBANK ARCHITECTURE 1199ARM/CALXEDA HIGHBANK ARCHITECTURE
1176M: Rob Herring <robh@kernel.org> 1200M: Rob Herring <robh@kernel.org>
1177L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 1201L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@ -1198,6 +1222,11 @@ L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1198S: Odd Fixes 1222S: Odd Fixes
1199N: clps711x 1223N: clps711x
1200 1224
1225ARM/CIRRUS LOGIC EDB9315A MACHINE SUPPORT
1226M: Lennert Buytenhek <kernel@wantstofly.org>
1227L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1228S: Maintained
1229
1201ARM/CIRRUS LOGIC EP93XX ARM ARCHITECTURE 1230ARM/CIRRUS LOGIC EP93XX ARM ARCHITECTURE
1202M: Hartley Sweeten <hsweeten@visionengravers.com> 1231M: Hartley Sweeten <hsweeten@visionengravers.com>
1203M: Alexander Sverdlin <alexander.sverdlin@gmail.com> 1232M: Alexander Sverdlin <alexander.sverdlin@gmail.com>
@@ -1206,11 +1235,6 @@ S: Maintained
1206F: arch/arm/mach-ep93xx/ 1235F: arch/arm/mach-ep93xx/
1207F: arch/arm/mach-ep93xx/include/mach/ 1236F: arch/arm/mach-ep93xx/include/mach/
1208 1237
1209ARM/CIRRUS LOGIC EDB9315A MACHINE SUPPORT
1210M: Lennert Buytenhek <kernel@wantstofly.org>
1211L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1212S: Maintained
1213
1214ARM/CLKDEV SUPPORT 1238ARM/CLKDEV SUPPORT
1215M: Russell King <linux@armlinux.org.uk> 1239M: Russell King <linux@armlinux.org.uk>
1216L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 1240L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@ -1224,6 +1248,13 @@ M: Mike Rapoport <mike@compulab.co.il>
1224L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 1248L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1225S: Maintained 1249S: Maintained
1226 1250
1251ARM/CONEXANT DIGICOLOR MACHINE SUPPORT
1252M: Baruch Siach <baruch@tkos.co.il>
1253L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1254S: Maintained
1255F: arch/arm/boot/dts/cx92755*
1256N: digicolor
1257
1227ARM/CONTEC MICRO9 MACHINE SUPPORT 1258ARM/CONTEC MICRO9 MACHINE SUPPORT
1228M: Hubert Feurstein <hubert.feurstein@contec.at> 1259M: Hubert Feurstein <hubert.feurstein@contec.at>
1229S: Maintained 1260S: Maintained
@@ -1269,13 +1300,6 @@ F: drivers/clocksource/timer-prima2.c
1269F: drivers/clocksource/timer-atlas7.c 1300F: drivers/clocksource/timer-atlas7.c
1270N: [^a-z]sirf 1301N: [^a-z]sirf
1271 1302
1272ARM/CONEXANT DIGICOLOR MACHINE SUPPORT
1273M: Baruch Siach <baruch@tkos.co.il>
1274L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1275S: Maintained
1276F: arch/arm/boot/dts/cx92755*
1277N: digicolor
1278
1279ARM/EBSA110 MACHINE SUPPORT 1303ARM/EBSA110 MACHINE SUPPORT
1280M: Russell King <linux@armlinux.org.uk> 1304M: Russell King <linux@armlinux.org.uk>
1281L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 1305L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@ -1389,6 +1413,11 @@ L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1389S: Maintained 1413S: Maintained
1390F: arch/arm/mach-pxa/colibri-pxa270-income.c 1414F: arch/arm/mach-pxa/colibri-pxa270-income.c
1391 1415
1416ARM/INTEL IOP13XX ARM ARCHITECTURE
1417M: Lennert Buytenhek <kernel@wantstofly.org>
1418L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1419S: Maintained
1420
1392ARM/INTEL IOP32X ARM ARCHITECTURE 1421ARM/INTEL IOP32X ARM ARCHITECTURE
1393M: Lennert Buytenhek <kernel@wantstofly.org> 1422M: Lennert Buytenhek <kernel@wantstofly.org>
1394L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 1423L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@ -1398,11 +1427,6 @@ ARM/INTEL IOP33X ARM ARCHITECTURE
1398L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 1427L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1399S: Orphan 1428S: Orphan
1400 1429
1401ARM/INTEL IOP13XX ARM ARCHITECTURE
1402M: Lennert Buytenhek <kernel@wantstofly.org>
1403L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1404S: Maintained
1405
1406ARM/INTEL IQ81342EX MACHINE SUPPORT 1430ARM/INTEL IQ81342EX MACHINE SUPPORT
1407M: Lennert Buytenhek <kernel@wantstofly.org> 1431M: Lennert Buytenhek <kernel@wantstofly.org>
1408L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 1432L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@ -1437,39 +1461,6 @@ M: Lennert Buytenhek <kernel@wantstofly.org>
1437L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 1461L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1438S: Maintained 1462S: Maintained
1439 1463
1440ARM/TEXAS INSTRUMENT KEYSTONE ARCHITECTURE
1441M: Santosh Shilimkar <ssantosh@kernel.org>
1442L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1443S: Maintained
1444F: arch/arm/mach-keystone/
1445F: arch/arm/boot/dts/keystone-*
1446T: git git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone.git
1447
1448ARM/TEXAS INSTRUMENT KEYSTONE CLOCK FRAMEWORK
1449M: Santosh Shilimkar <ssantosh@kernel.org>
1450L: linux-kernel@vger.kernel.org
1451S: Maintained
1452F: drivers/clk/keystone/
1453
1454ARM/TEXAS INSTRUMENT KEYSTONE ClOCKSOURCE
1455M: Santosh Shilimkar <ssantosh@kernel.org>
1456L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1457L: linux-kernel@vger.kernel.org
1458S: Maintained
1459F: drivers/clocksource/timer-keystone.c
1460
1461ARM/TEXAS INSTRUMENT KEYSTONE RESET DRIVER
1462M: Santosh Shilimkar <ssantosh@kernel.org>
1463L: linux-kernel@vger.kernel.org
1464S: Maintained
1465F: drivers/power/reset/keystone-reset.c
1466
1467ARM/TEXAS INSTRUMENT AEMIF/EMIF DRIVERS
1468M: Santosh Shilimkar <ssantosh@kernel.org>
1469L: linux-kernel@vger.kernel.org
1470S: Maintained
1471F: drivers/memory/*emif*
1472
1473ARM/LG1K ARCHITECTURE 1464ARM/LG1K ARCHITECTURE
1474M: Chanho Min <chanho.min@lge.com> 1465M: Chanho Min <chanho.min@lge.com>
1475L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 1466L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@ -1512,24 +1503,6 @@ ARM/MAGICIAN MACHINE SUPPORT
1512M: Philipp Zabel <philipp.zabel@gmail.com> 1503M: Philipp Zabel <philipp.zabel@gmail.com>
1513S: Maintained 1504S: Maintained
1514 1505
1515ARM/Marvell Kirkwood and Armada 370, 375, 38x, 39x, XP, 3700, 7K/8K SOC support
1516M: Jason Cooper <jason@lakedaemon.net>
1517M: Andrew Lunn <andrew@lunn.ch>
1518M: Gregory Clement <gregory.clement@free-electrons.com>
1519M: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
1520L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1521S: Maintained
1522F: arch/arm/boot/dts/armada*
1523F: arch/arm/boot/dts/kirkwood*
1524F: arch/arm/configs/mvebu_*_defconfig
1525F: arch/arm/mach-mvebu/
1526F: arch/arm64/boot/dts/marvell/armada*
1527F: drivers/cpufreq/mvebu-cpufreq.c
1528F: drivers/irqchip/irq-armada-370-xp.c
1529F: drivers/irqchip/irq-mvebu-*
1530F: drivers/pinctrl/mvebu/
1531F: drivers/rtc/rtc-armada38x.c
1532
1533ARM/Marvell Berlin SoC support 1506ARM/Marvell Berlin SoC support
1534M: Jisheng Zhang <jszhang@marvell.com> 1507M: Jisheng Zhang <jszhang@marvell.com>
1535M: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com> 1508M: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
@@ -1539,7 +1512,6 @@ F: arch/arm/mach-berlin/
1539F: arch/arm/boot/dts/berlin* 1512F: arch/arm/boot/dts/berlin*
1540F: arch/arm64/boot/dts/marvell/berlin* 1513F: arch/arm64/boot/dts/marvell/berlin*
1541 1514
1542
1543ARM/Marvell Dove/MV78xx0/Orion SOC support 1515ARM/Marvell Dove/MV78xx0/Orion SOC support
1544M: Jason Cooper <jason@lakedaemon.net> 1516M: Jason Cooper <jason@lakedaemon.net>
1545M: Andrew Lunn <andrew@lunn.ch> 1517M: Andrew Lunn <andrew@lunn.ch>
@@ -1555,24 +1527,23 @@ F: arch/arm/plat-orion/
1555F: arch/arm/boot/dts/dove* 1527F: arch/arm/boot/dts/dove*
1556F: arch/arm/boot/dts/orion5x* 1528F: arch/arm/boot/dts/orion5x*
1557 1529
1558 1530ARM/Marvell Kirkwood and Armada 370, 375, 38x, 39x, XP, 3700, 7K/8K SOC support
1559ARM/Orion SoC/Technologic Systems TS-78xx platform support 1531M: Jason Cooper <jason@lakedaemon.net>
1560M: Alexander Clouter <alex@digriz.org.uk> 1532M: Andrew Lunn <andrew@lunn.ch>
1561L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 1533M: Gregory Clement <gregory.clement@free-electrons.com>
1562W: http://www.digriz.org.uk/ts78xx/kernel 1534M: Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
1563S: Maintained
1564F: arch/arm/mach-orion5x/ts78xx-*
1565
1566ARM/OXNAS platform support
1567M: Neil Armstrong <narmstrong@baylibre.com>
1568L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 1535L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1569L: linux-oxnas@lists.tuxfamily.org (moderated for non-subscribers)
1570S: Maintained 1536S: Maintained
1571F: arch/arm/mach-oxnas/ 1537F: arch/arm/boot/dts/armada*
1572F: arch/arm/boot/dts/ox8*.dtsi 1538F: arch/arm/boot/dts/kirkwood*
1573F: arch/arm/boot/dts/wd-mbwe.dts 1539F: arch/arm/configs/mvebu_*_defconfig
1574F: arch/arm/boot/dts/cloudengines-pogoplug-series-3.dts 1540F: arch/arm/mach-mvebu/
1575N: oxnas 1541F: arch/arm64/boot/dts/marvell/armada*
1542F: drivers/cpufreq/mvebu-cpufreq.c
1543F: drivers/irqchip/irq-armada-370-xp.c
1544F: drivers/irqchip/irq-mvebu-*
1545F: drivers/pinctrl/mvebu/
1546F: drivers/rtc/rtc-armada38x.c
1576 1547
1577ARM/Mediatek RTC DRIVER 1548ARM/Mediatek RTC DRIVER
1578M: Eddie Huang <eddie.huang@mediatek.com> 1549M: Eddie Huang <eddie.huang@mediatek.com>
@@ -1627,16 +1598,53 @@ F: drivers/pinctrl/nomadik/
1627F: drivers/i2c/busses/i2c-nomadik.c 1598F: drivers/i2c/busses/i2c-nomadik.c
1628T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-nomadik.git 1599T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-nomadik.git
1629 1600
1601ARM/NUVOTON W90X900 ARM ARCHITECTURE
1602M: Wan ZongShun <mcuos.com@gmail.com>
1603L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1604W: http://www.mcuos.com
1605S: Maintained
1606F: arch/arm/mach-w90x900/
1607F: drivers/input/keyboard/w90p910_keypad.c
1608F: drivers/input/touchscreen/w90p910_ts.c
1609F: drivers/watchdog/nuc900_wdt.c
1610F: drivers/net/ethernet/nuvoton/w90p910_ether.c
1611F: drivers/mtd/nand/nuc900_nand.c
1612F: drivers/rtc/rtc-nuc900.c
1613F: drivers/spi/spi-nuc900.c
1614F: drivers/usb/host/ehci-w90x900.c
1615F: drivers/video/fbdev/nuc900fb.c
1616
1630ARM/OPENMOKO NEO FREERUNNER (GTA02) MACHINE SUPPORT 1617ARM/OPENMOKO NEO FREERUNNER (GTA02) MACHINE SUPPORT
1631M: Nelson Castillo <arhuaco@freaks-unidos.net> 1618M: Nelson Castillo <arhuaco@freaks-unidos.net>
1632L: openmoko-kernel@lists.openmoko.org (subscribers-only) 1619L: openmoko-kernel@lists.openmoko.org (subscribers-only)
1633W: http://wiki.openmoko.org/wiki/Neo_FreeRunner 1620W: http://wiki.openmoko.org/wiki/Neo_FreeRunner
1634S: Supported 1621S: Supported
1635 1622
1636ARM/TOSA MACHINE SUPPORT 1623ARM/Orion SoC/Technologic Systems TS-78xx platform support
1637M: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> 1624M: Alexander Clouter <alex@digriz.org.uk>
1638M: Dirk Opfer <dirk@opfer-online.de> 1625L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1626W: http://www.digriz.org.uk/ts78xx/kernel
1627S: Maintained
1628F: arch/arm/mach-orion5x/ts78xx-*
1629
1630ARM/OXNAS platform support
1631M: Neil Armstrong <narmstrong@baylibre.com>
1632L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1633L: linux-oxnas@lists.tuxfamily.org (moderated for non-subscribers)
1634S: Maintained
1635F: arch/arm/mach-oxnas/
1636F: arch/arm/boot/dts/ox8*.dtsi
1637F: arch/arm/boot/dts/wd-mbwe.dts
1638F: arch/arm/boot/dts/cloudengines-pogoplug-series-3.dts
1639N: oxnas
1640
1641ARM/PALM TREO SUPPORT
1642M: Tomas Cech <sleep_walker@suse.com>
1643L: linux-arm-kernel@lists.infradead.org
1644W: http://hackndev.com
1639S: Maintained 1645S: Maintained
1646F: arch/arm/mach-pxa/include/mach/palmtreo.h
1647F: arch/arm/mach-pxa/palmtreo.c
1640 1648
1641ARM/PALMTX,PALMT5,PALMLD,PALMTE2,PALMTC SUPPORT 1649ARM/PALMTX,PALMT5,PALMLD,PALMTE2,PALMTC SUPPORT
1642M: Marek Vasut <marek.vasut@gmail.com> 1650M: Marek Vasut <marek.vasut@gmail.com>
@@ -1654,14 +1662,6 @@ F: arch/arm/mach-pxa/palmte2.c
1654F: arch/arm/mach-pxa/include/mach/palmtc.h 1662F: arch/arm/mach-pxa/include/mach/palmtc.h
1655F: arch/arm/mach-pxa/palmtc.c 1663F: arch/arm/mach-pxa/palmtc.c
1656 1664
1657ARM/PALM TREO SUPPORT
1658M: Tomas Cech <sleep_walker@suse.com>
1659L: linux-arm-kernel@lists.infradead.org
1660W: http://hackndev.com
1661S: Maintained
1662F: arch/arm/mach-pxa/include/mach/palmtreo.h
1663F: arch/arm/mach-pxa/palmtreo.c
1664
1665ARM/PALMZ72 SUPPORT 1665ARM/PALMZ72 SUPPORT
1666M: Sergey Lapin <slapin@ossfans.org> 1666M: Sergey Lapin <slapin@ossfans.org>
1667L: linux-arm-kernel@lists.infradead.org 1667L: linux-arm-kernel@lists.infradead.org
@@ -1802,17 +1802,6 @@ L: linux-media@vger.kernel.org
1802S: Maintained 1802S: Maintained
1803F: drivers/media/platform/s5p-g2d/ 1803F: drivers/media/platform/s5p-g2d/
1804 1804
1805ARM/SAMSUNG S5P SERIES Multi Format Codec (MFC) SUPPORT
1806M: Kyungmin Park <kyungmin.park@samsung.com>
1807M: Kamil Debski <kamil@wypas.org>
1808M: Jeongtae Park <jtp.park@samsung.com>
1809M: Andrzej Hajda <a.hajda@samsung.com>
1810L: linux-arm-kernel@lists.infradead.org
1811L: linux-media@vger.kernel.org
1812S: Maintained
1813F: arch/arm/plat-samsung/s5p-dev-mfc.c
1814F: drivers/media/platform/s5p-mfc/
1815
1816ARM/SAMSUNG S5P SERIES HDMI CEC SUBSYSTEM SUPPORT 1805ARM/SAMSUNG S5P SERIES HDMI CEC SUBSYSTEM SUPPORT
1817M: Marek Szyprowski <m.szyprowski@samsung.com> 1806M: Marek Szyprowski <m.szyprowski@samsung.com>
1818L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers) 1807L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
@@ -1829,6 +1818,17 @@ L: linux-media@vger.kernel.org
1829S: Maintained 1818S: Maintained
1830F: drivers/media/platform/s5p-jpeg/ 1819F: drivers/media/platform/s5p-jpeg/
1831 1820
1821ARM/SAMSUNG S5P SERIES Multi Format Codec (MFC) SUPPORT
1822M: Kyungmin Park <kyungmin.park@samsung.com>
1823M: Kamil Debski <kamil@wypas.org>
1824M: Jeongtae Park <jtp.park@samsung.com>
1825M: Andrzej Hajda <a.hajda@samsung.com>
1826L: linux-arm-kernel@lists.infradead.org
1827L: linux-media@vger.kernel.org
1828S: Maintained
1829F: arch/arm/plat-samsung/s5p-dev-mfc.c
1830F: drivers/media/platform/s5p-mfc/
1831
1832ARM/SHMOBILE ARM ARCHITECTURE 1832ARM/SHMOBILE ARM ARCHITECTURE
1833M: Simon Horman <horms@verge.net.au> 1833M: Simon Horman <horms@verge.net.au>
1834M: Magnus Damm <magnus.damm@gmail.com> 1834M: Magnus Damm <magnus.damm@gmail.com>
@@ -1922,26 +1922,48 @@ M: "Mark F. Brown" <mark.brown314@gmail.com>
1922L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 1922L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1923S: Maintained 1923S: Maintained
1924 1924
1925ARM/TEXAS INSTRUMENT AEMIF/EMIF DRIVERS
1926M: Santosh Shilimkar <ssantosh@kernel.org>
1927L: linux-kernel@vger.kernel.org
1928S: Maintained
1929F: drivers/memory/*emif*
1930
1931ARM/TEXAS INSTRUMENT KEYSTONE ARCHITECTURE
1932M: Santosh Shilimkar <ssantosh@kernel.org>
1933L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1934S: Maintained
1935F: arch/arm/mach-keystone/
1936F: arch/arm/boot/dts/keystone-*
1937T: git git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone.git
1938
1939ARM/TEXAS INSTRUMENT KEYSTONE CLOCK FRAMEWORK
1940M: Santosh Shilimkar <ssantosh@kernel.org>
1941L: linux-kernel@vger.kernel.org
1942S: Maintained
1943F: drivers/clk/keystone/
1944
1945ARM/TEXAS INSTRUMENT KEYSTONE ClOCKSOURCE
1946M: Santosh Shilimkar <ssantosh@kernel.org>
1947L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1948L: linux-kernel@vger.kernel.org
1949S: Maintained
1950F: drivers/clocksource/timer-keystone.c
1951
1952ARM/TEXAS INSTRUMENT KEYSTONE RESET DRIVER
1953M: Santosh Shilimkar <ssantosh@kernel.org>
1954L: linux-kernel@vger.kernel.org
1955S: Maintained
1956F: drivers/power/reset/keystone-reset.c
1957
1925ARM/THECUS N2100 MACHINE SUPPORT 1958ARM/THECUS N2100 MACHINE SUPPORT
1926M: Lennert Buytenhek <kernel@wantstofly.org> 1959M: Lennert Buytenhek <kernel@wantstofly.org>
1927L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 1960L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1928S: Maintained 1961S: Maintained
1929 1962
1930ARM/NUVOTON W90X900 ARM ARCHITECTURE 1963ARM/TOSA MACHINE SUPPORT
1931M: Wan ZongShun <mcuos.com@gmail.com> 1964M: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
1932L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 1965M: Dirk Opfer <dirk@opfer-online.de>
1933W: http://www.mcuos.com
1934S: Maintained 1966S: Maintained
1935F: arch/arm/mach-w90x900/
1936F: drivers/input/keyboard/w90p910_keypad.c
1937F: drivers/input/touchscreen/w90p910_ts.c
1938F: drivers/watchdog/nuc900_wdt.c
1939F: drivers/net/ethernet/nuvoton/w90p910_ether.c
1940F: drivers/mtd/nand/nuc900_nand.c
1941F: drivers/rtc/rtc-nuc900.c
1942F: drivers/spi/spi-nuc900.c
1943F: drivers/usb/host/ehci-w90x900.c
1944F: drivers/video/fbdev/nuc900fb.c
1945 1967
1946ARM/U300 MACHINE SUPPORT 1968ARM/U300 MACHINE SUPPORT
1947M: Linus Walleij <linus.walleij@linaro.org> 1969M: Linus Walleij <linus.walleij@linaro.org>
@@ -2086,16 +2108,6 @@ F: drivers/i2c/busses/i2c-cadence.c
2086F: drivers/mmc/host/sdhci-of-arasan.c 2108F: drivers/mmc/host/sdhci-of-arasan.c
2087F: drivers/edac/synopsys_edac.c 2109F: drivers/edac/synopsys_edac.c
2088 2110
2089ARM SMMU DRIVERS
2090M: Will Deacon <will.deacon@arm.com>
2091R: Robin Murphy <robin.murphy@arm.com>
2092L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
2093S: Maintained
2094F: drivers/iommu/arm-smmu.c
2095F: drivers/iommu/arm-smmu-v3.c
2096F: drivers/iommu/io-pgtable-arm.c
2097F: drivers/iommu/io-pgtable-arm-v7s.c
2098
2099ARM64 PORT (AARCH64 ARCHITECTURE) 2111ARM64 PORT (AARCH64 ARCHITECTURE)
2100M: Catalin Marinas <catalin.marinas@arm.com> 2112M: Catalin Marinas <catalin.marinas@arm.com>
2101M: Will Deacon <will.deacon@arm.com> 2113M: Will Deacon <will.deacon@arm.com>
@@ -2207,21 +2219,10 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
2207S: Supported 2219S: Supported
2208F: drivers/net/wireless/ath/ath6kl/ 2220F: drivers/net/wireless/ath/ath6kl/
2209 2221
2210WILOCITY WIL6210 WIRELESS DRIVER 2222ATI_REMOTE2 DRIVER
2211M: Maya Erez <qca_merez@qca.qualcomm.com> 2223M: Ville Syrjala <syrjala@sci.fi>
2212L: linux-wireless@vger.kernel.org
2213L: wil6210@qca.qualcomm.com
2214S: Supported
2215W: http://wireless.kernel.org/en/users/Drivers/wil6210
2216F: drivers/net/wireless/ath/wil6210/
2217F: include/uapi/linux/wil6210_uapi.h
2218
2219CARL9170 LINUX COMMUNITY WIRELESS DRIVER
2220M: Christian Lamparter <chunkeey@googlemail.com>
2221L: linux-wireless@vger.kernel.org
2222W: http://wireless.kernel.org/en/users/Drivers/carl9170
2223S: Maintained 2224S: Maintained
2224F: drivers/net/wireless/ath/carl9170/ 2225F: drivers/input/misc/ati_remote2.c
2225 2226
2226ATK0110 HWMON DRIVER 2227ATK0110 HWMON DRIVER
2227M: Luca Tettamanti <kronos.it@gmail.com> 2228M: Luca Tettamanti <kronos.it@gmail.com>
@@ -2229,11 +2230,6 @@ L: linux-hwmon@vger.kernel.org
2229S: Maintained 2230S: Maintained
2230F: drivers/hwmon/asus_atk0110.c 2231F: drivers/hwmon/asus_atk0110.c
2231 2232
2232ATI_REMOTE2 DRIVER
2233M: Ville Syrjala <syrjala@sci.fi>
2234S: Maintained
2235F: drivers/input/misc/ati_remote2.c
2236
2237ATLX ETHERNET DRIVERS 2233ATLX ETHERNET DRIVERS
2238M: Jay Cliburn <jcliburn@gmail.com> 2234M: Jay Cliburn <jcliburn@gmail.com>
2239M: Chris Snook <chris.snook@gmail.com> 2235M: Chris Snook <chris.snook@gmail.com>
@@ -2263,25 +2259,12 @@ M: Nicolas Ferre <nicolas.ferre@microchip.com>
2263S: Supported 2259S: Supported
2264F: drivers/power/reset/at91-sama5d2_shdwc.c 2260F: drivers/power/reset/at91-sama5d2_shdwc.c
2265 2261
2266ATMEL SAMA5D2 ADC DRIVER
2267M: Ludovic Desroches <ludovic.desroches@microchip.com>
2268L: linux-iio@vger.kernel.org
2269S: Supported
2270F: drivers/iio/adc/at91-sama5d2_adc.c
2271
2272ATMEL Audio ALSA driver 2262ATMEL Audio ALSA driver
2273M: Nicolas Ferre <nicolas.ferre@microchip.com> 2263M: Nicolas Ferre <nicolas.ferre@microchip.com>
2274L: alsa-devel@alsa-project.org (moderated for non-subscribers) 2264L: alsa-devel@alsa-project.org (moderated for non-subscribers)
2275S: Supported 2265S: Supported
2276F: sound/soc/atmel 2266F: sound/soc/atmel
2277 2267
2278ATMEL XDMA DRIVER
2279M: Ludovic Desroches <ludovic.desroches@microchip.com>
2280L: linux-arm-kernel@lists.infradead.org
2281L: dmaengine@vger.kernel.org
2282S: Supported
2283F: drivers/dma/at_xdmac.c
2284
2285ATMEL I2C DRIVER 2268ATMEL I2C DRIVER
2286M: Ludovic Desroches <ludovic.desroches@microchip.com> 2269M: Ludovic Desroches <ludovic.desroches@microchip.com>
2287L: linux-i2c@vger.kernel.org 2270L: linux-i2c@vger.kernel.org
@@ -2307,6 +2290,14 @@ M: Nicolas Ferre <nicolas.ferre@microchip.com>
2307S: Supported 2290S: Supported
2308F: drivers/net/ethernet/cadence/ 2291F: drivers/net/ethernet/cadence/
2309 2292
2293ATMEL MAXTOUCH DRIVER
2294M: Nick Dyer <nick@shmanahar.org>
2295T: git git://github.com/ndyer/linux.git
2296S: Maintained
2297F: Documentation/devicetree/bindings/input/atmel,maxtouch.txt
2298F: drivers/input/touchscreen/atmel_mxt_ts.c
2299F: include/linux/platform_data/atmel_mxt_ts.h
2300
2310ATMEL NAND DRIVER 2301ATMEL NAND DRIVER
2311M: Wenyou Yang <wenyou.yang@atmel.com> 2302M: Wenyou Yang <wenyou.yang@atmel.com>
2312M: Josh Wu <rainyfeeling@outlook.com> 2303M: Josh Wu <rainyfeeling@outlook.com>
@@ -2314,6 +2305,12 @@ L: linux-mtd@lists.infradead.org
2314S: Supported 2305S: Supported
2315F: drivers/mtd/nand/atmel/* 2306F: drivers/mtd/nand/atmel/*
2316 2307
2308ATMEL SAMA5D2 ADC DRIVER
2309M: Ludovic Desroches <ludovic.desroches@microchip.com>
2310L: linux-iio@vger.kernel.org
2311S: Supported
2312F: drivers/iio/adc/at91-sama5d2_adc.c
2313
2317ATMEL SDMMC DRIVER 2314ATMEL SDMMC DRIVER
2318M: Ludovic Desroches <ludovic.desroches@microchip.com> 2315M: Ludovic Desroches <ludovic.desroches@microchip.com>
2319L: linux-mmc@vger.kernel.org 2316L: linux-mmc@vger.kernel.org
@@ -2353,13 +2350,12 @@ W: http://atmelwlandriver.sourceforge.net/
2353S: Maintained 2350S: Maintained
2354F: drivers/net/wireless/atmel/atmel* 2351F: drivers/net/wireless/atmel/atmel*
2355 2352
2356ATMEL MAXTOUCH DRIVER 2353ATMEL XDMA DRIVER
2357M: Nick Dyer <nick@shmanahar.org> 2354M: Ludovic Desroches <ludovic.desroches@microchip.com>
2358T: git git://github.com/ndyer/linux.git 2355L: linux-arm-kernel@lists.infradead.org
2359S: Maintained 2356L: dmaengine@vger.kernel.org
2360F: Documentation/devicetree/bindings/input/atmel,maxtouch.txt 2357S: Supported
2361F: drivers/input/touchscreen/atmel_mxt_ts.c 2358F: drivers/dma/at_xdmac.c
2362F: include/linux/platform_data/atmel_mxt_ts.h
2363 2359
2364ATOMIC INFRASTRUCTURE 2360ATOMIC INFRASTRUCTURE
2365M: Will Deacon <will.deacon@arm.com> 2361M: Will Deacon <will.deacon@arm.com>
@@ -2413,13 +2409,6 @@ F: include/uapi/linux/ax25.h
2413F: include/net/ax25.h 2409F: include/net/ax25.h
2414F: net/ax25/ 2410F: net/ax25/
2415 2411
2416AXENTIA ASOC DRIVERS
2417M: Peter Rosin <peda@axentia.se>
2418L: alsa-devel@alsa-project.org (moderated for non-subscribers)
2419S: Maintained
2420F: Documentation/devicetree/bindings/sound/axentia,*
2421F: sound/soc/atmel/tse850-pcm5142.c
2422
2423AXENTIA ARM DEVICES 2412AXENTIA ARM DEVICES
2424M: Peter Rosin <peda@axentia.se> 2413M: Peter Rosin <peda@axentia.se>
2425L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 2414L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@ -2428,6 +2417,13 @@ F: Documentation/devicetree/bindings/arm/axentia.txt
2428F: arch/arm/boot/dts/at91-linea.dtsi 2417F: arch/arm/boot/dts/at91-linea.dtsi
2429F: arch/arm/boot/dts/at91-tse850-3.dts 2418F: arch/arm/boot/dts/at91-tse850-3.dts
2430 2419
2420AXENTIA ASOC DRIVERS
2421M: Peter Rosin <peda@axentia.se>
2422L: alsa-devel@alsa-project.org (moderated for non-subscribers)
2423S: Maintained
2424F: Documentation/devicetree/bindings/sound/axentia,*
2425F: sound/soc/atmel/tse850-pcm5142.c
2426
2431AZ6007 DVB DRIVER 2427AZ6007 DVB DRIVER
2432M: Mauro Carvalho Chehab <mchehab@s-opensource.com> 2428M: Mauro Carvalho Chehab <mchehab@s-opensource.com>
2433M: Mauro Carvalho Chehab <mchehab@kernel.org> 2429M: Mauro Carvalho Chehab <mchehab@kernel.org>
@@ -2507,13 +2503,11 @@ W: https://linuxtv.org
2507S: Supported 2503S: Supported
2508F: drivers/media/platform/sti/bdisp 2504F: drivers/media/platform/sti/bdisp
2509 2505
2510DELTA ST MEDIA DRIVER 2506BECKHOFF CX5020 ETHERCAT MASTER DRIVER
2511M: Hugues Fruchet <hugues.fruchet@st.com> 2507M: Dariusz Marcinkiewicz <reksio@newterm.pl>
2512L: linux-media@vger.kernel.org 2508L: netdev@vger.kernel.org
2513T: git git://linuxtv.org/media_tree.git 2509S: Maintained
2514W: https://linuxtv.org 2510F: drivers/net/ethernet/ec_bhf.c
2515S: Supported
2516F: drivers/media/platform/sti/delta
2517 2511
2518BEFS FILE SYSTEM 2512BEFS FILE SYSTEM
2519M: Luis de Bethencourt <luisbg@kernel.org> 2513M: Luis de Bethencourt <luisbg@kernel.org>
@@ -2523,11 +2517,13 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/luisbg/linux-befs.git
2523F: Documentation/filesystems/befs.txt 2517F: Documentation/filesystems/befs.txt
2524F: fs/befs/ 2518F: fs/befs/
2525 2519
2526BECKHOFF CX5020 ETHERCAT MASTER DRIVER 2520BFQ I/O SCHEDULER
2527M: Dariusz Marcinkiewicz <reksio@newterm.pl> 2521M: Paolo Valente <paolo.valente@linaro.org>
2528L: netdev@vger.kernel.org 2522M: Jens Axboe <axboe@kernel.dk>
2523L: linux-block@vger.kernel.org
2529S: Maintained 2524S: Maintained
2530F: drivers/net/ethernet/ec_bhf.c 2525F: block/bfq-*
2526F: Documentation/block/bfq-iosched.txt
2531 2527
2532BFS FILE SYSTEM 2528BFS FILE SYSTEM
2533M: "Tigran A. Aivazian" <aivazian.tigran@gmail.com> 2529M: "Tigran A. Aivazian" <aivazian.tigran@gmail.com>
@@ -2550,6 +2546,22 @@ W: http://blackfin.uclinux.org
2550S: Supported 2546S: Supported
2551F: drivers/net/ethernet/adi/ 2547F: drivers/net/ethernet/adi/
2552 2548
2549BLACKFIN I2C TWI DRIVER
2550M: Sonic Zhang <sonic.zhang@analog.com>
2551L: adi-buildroot-devel@lists.sourceforge.net (moderated for non-subscribers)
2552W: http://blackfin.uclinux.org/
2553S: Supported
2554F: drivers/i2c/busses/i2c-bfin-twi.c
2555
2556BLACKFIN MEDIA DRIVER
2557M: Scott Jiang <scott.jiang.linux@gmail.com>
2558L: adi-buildroot-devel@lists.sourceforge.net (moderated for non-subscribers)
2559W: http://blackfin.uclinux.org/
2560S: Supported
2561F: drivers/media/platform/blackfin/
2562F: drivers/media/i2c/adv7183*
2563F: drivers/media/i2c/vs6624*
2564
2553BLACKFIN RTC DRIVER 2565BLACKFIN RTC DRIVER
2554L: adi-buildroot-devel@lists.sourceforge.net (moderated for non-subscribers) 2566L: adi-buildroot-devel@lists.sourceforge.net (moderated for non-subscribers)
2555W: http://blackfin.uclinux.org 2567W: http://blackfin.uclinux.org
@@ -2576,22 +2588,6 @@ W: http://blackfin.uclinux.org
2576S: Supported 2588S: Supported
2577F: drivers/watchdog/bfin_wdt.c 2589F: drivers/watchdog/bfin_wdt.c
2578 2590
2579BLACKFIN I2C TWI DRIVER
2580M: Sonic Zhang <sonic.zhang@analog.com>
2581L: adi-buildroot-devel@lists.sourceforge.net (moderated for non-subscribers)
2582W: http://blackfin.uclinux.org/
2583S: Supported
2584F: drivers/i2c/busses/i2c-bfin-twi.c
2585
2586BLACKFIN MEDIA DRIVER
2587M: Scott Jiang <scott.jiang.linux@gmail.com>
2588L: adi-buildroot-devel@lists.sourceforge.net (moderated for non-subscribers)
2589W: http://blackfin.uclinux.org/
2590S: Supported
2591F: drivers/media/platform/blackfin/
2592F: drivers/media/i2c/adv7183*
2593F: drivers/media/i2c/vs6624*
2594
2595BLINKM RGB LED DRIVER 2591BLINKM RGB LED DRIVER
2596M: Jan-Simon Moeller <jansimon.moeller@gmx.de> 2592M: Jan-Simon Moeller <jansimon.moeller@gmx.de>
2597S: Maintained 2593S: Maintained
@@ -2606,14 +2602,6 @@ F: block/
2606F: kernel/trace/blktrace.c 2602F: kernel/trace/blktrace.c
2607F: lib/sbitmap.c 2603F: lib/sbitmap.c
2608 2604
2609BFQ I/O SCHEDULER
2610M: Paolo Valente <paolo.valente@linaro.org>
2611M: Jens Axboe <axboe@kernel.dk>
2612L: linux-block@vger.kernel.org
2613S: Maintained
2614F: block/bfq-*
2615F: Documentation/block/bfq-iosched.txt
2616
2617BLOCK2MTD DRIVER 2605BLOCK2MTD DRIVER
2618M: Joern Engel <joern@lazybastard.org> 2606M: Joern Engel <joern@lazybastard.org>
2619L: linux-mtd@lists.infradead.org 2607L: linux-mtd@lists.infradead.org
@@ -2643,21 +2631,6 @@ S: Maintained
2643F: net/bluetooth/ 2631F: net/bluetooth/
2644F: include/net/bluetooth/ 2632F: include/net/bluetooth/
2645 2633
2646DMA MAPPING HELPERS
2647M: Christoph Hellwig <hch@lst.de>
2648M: Marek Szyprowski <m.szyprowski@samsung.com>
2649R: Robin Murphy <robin.murphy@arm.com>
2650L: linux-kernel@vger.kernel.org
2651T: git git://git.infradead.org/users/hch/dma-mapping.git
2652W: http://git.infradead.org/users/hch/dma-mapping.git
2653S: Supported
2654F: lib/dma-debug.c
2655F: lib/dma-noop.c
2656F: lib/dma-virt.c
2657F: drivers/base/dma-mapping.c
2658F: drivers/base/dma-coherent.c
2659F: include/linux/dma-mapping.h
2660
2661BONDING DRIVER 2634BONDING DRIVER
2662M: Jay Vosburgh <j.vosburgh@gmail.com> 2635M: Jay Vosburgh <j.vosburgh@gmail.com>
2663M: Veaceslav Falico <vfalico@gmail.com> 2636M: Veaceslav Falico <vfalico@gmail.com>
@@ -2705,35 +2678,6 @@ S: Supported
2705F: drivers/net/dsa/b53/* 2678F: drivers/net/dsa/b53/*
2706F: include/linux/platform_data/b53.h 2679F: include/linux/platform_data/b53.h
2707 2680
2708BROADCOM GENET ETHERNET DRIVER
2709M: Florian Fainelli <f.fainelli@gmail.com>
2710L: netdev@vger.kernel.org
2711S: Supported
2712F: drivers/net/ethernet/broadcom/genet/
2713
2714BROADCOM BNX2 GIGABIT ETHERNET DRIVER
2715M: Rasesh Mody <rasesh.mody@cavium.com>
2716M: Harish Patil <harish.patil@cavium.com>
2717M: Dept-GELinuxNICDev@cavium.com
2718L: netdev@vger.kernel.org
2719S: Supported
2720F: drivers/net/ethernet/broadcom/bnx2.*
2721F: drivers/net/ethernet/broadcom/bnx2_*
2722
2723BROADCOM BNX2X 10 GIGABIT ETHERNET DRIVER
2724M: Yuval Mintz <Yuval.Mintz@cavium.com>
2725M: Ariel Elior <ariel.elior@cavium.com>
2726M: everest-linux-l2@cavium.com
2727L: netdev@vger.kernel.org
2728S: Supported
2729F: drivers/net/ethernet/broadcom/bnx2x/
2730
2731BROADCOM BNXT_EN 50 GIGABIT ETHERNET DRIVER
2732M: Michael Chan <michael.chan@broadcom.com>
2733L: netdev@vger.kernel.org
2734S: Supported
2735F: drivers/net/ethernet/broadcom/bnxt/
2736
2737BROADCOM BCM281XX/BCM11XXX/BCM216XX ARM ARCHITECTURE 2681BROADCOM BCM281XX/BCM11XXX/BCM216XX ARM ARCHITECTURE
2738M: Florian Fainelli <f.fainelli@gmail.com> 2682M: Florian Fainelli <f.fainelli@gmail.com>
2739M: Ray Jui <rjui@broadcom.com> 2683M: Ray Jui <rjui@broadcom.com>
@@ -2812,6 +2756,13 @@ F: arch/arm/boot/dts/bcm7*.dts*
2812F: drivers/bus/brcmstb_gisb.c 2756F: drivers/bus/brcmstb_gisb.c
2813N: brcmstb 2757N: brcmstb
2814 2758
2759BROADCOM BMIPS CPUFREQ DRIVER
2760M: Markus Mayer <mmayer@broadcom.com>
2761M: bcm-kernel-feedback-list@broadcom.com
2762L: linux-pm@vger.kernel.org
2763S: Maintained
2764F: drivers/cpufreq/bmips-cpufreq.c
2765
2815BROADCOM BMIPS MIPS ARCHITECTURE 2766BROADCOM BMIPS MIPS ARCHITECTURE
2816M: Kevin Cernekee <cernekee@gmail.com> 2767M: Kevin Cernekee <cernekee@gmail.com>
2817M: Florian Fainelli <f.fainelli@gmail.com> 2768M: Florian Fainelli <f.fainelli@gmail.com>
@@ -2828,20 +2779,40 @@ F: drivers/irqchip/irq-brcmstb*
2828F: include/linux/bcm963xx_nvram.h 2779F: include/linux/bcm963xx_nvram.h
2829F: include/linux/bcm963xx_tag.h 2780F: include/linux/bcm963xx_tag.h
2830 2781
2831BROADCOM BMIPS CPUFREQ DRIVER 2782BROADCOM BNX2 GIGABIT ETHERNET DRIVER
2832M: Markus Mayer <mmayer@broadcom.com> 2783M: Rasesh Mody <rasesh.mody@cavium.com>
2833M: bcm-kernel-feedback-list@broadcom.com 2784M: Harish Patil <harish.patil@cavium.com>
2834L: linux-pm@vger.kernel.org 2785M: Dept-GELinuxNICDev@cavium.com
2835S: Maintained 2786L: netdev@vger.kernel.org
2836F: drivers/cpufreq/bmips-cpufreq.c 2787S: Supported
2788F: drivers/net/ethernet/broadcom/bnx2.*
2789F: drivers/net/ethernet/broadcom/bnx2_*
2837 2790
2838BROADCOM TG3 GIGABIT ETHERNET DRIVER 2791BROADCOM BNX2FC 10 GIGABIT FCOE DRIVER
2839M: Siva Reddy Kallam <siva.kallam@broadcom.com> 2792M: QLogic-Storage-Upstream@qlogic.com
2840M: Prashant Sreedharan <prashant@broadcom.com> 2793L: linux-scsi@vger.kernel.org
2841M: Michael Chan <mchan@broadcom.com> 2794S: Supported
2795F: drivers/scsi/bnx2fc/
2796
2797BROADCOM BNX2I 1/10 GIGABIT iSCSI DRIVER
2798M: QLogic-Storage-Upstream@qlogic.com
2799L: linux-scsi@vger.kernel.org
2800S: Supported
2801F: drivers/scsi/bnx2i/
2802
2803BROADCOM BNX2X 10 GIGABIT ETHERNET DRIVER
2804M: Yuval Mintz <Yuval.Mintz@cavium.com>
2805M: Ariel Elior <ariel.elior@cavium.com>
2806M: everest-linux-l2@cavium.com
2842L: netdev@vger.kernel.org 2807L: netdev@vger.kernel.org
2843S: Supported 2808S: Supported
2844F: drivers/net/ethernet/broadcom/tg3.* 2809F: drivers/net/ethernet/broadcom/bnx2x/
2810
2811BROADCOM BNXT_EN 50 GIGABIT ETHERNET DRIVER
2812M: Michael Chan <michael.chan@broadcom.com>
2813L: netdev@vger.kernel.org
2814S: Supported
2815F: drivers/net/ethernet/broadcom/bnxt/
2845 2816
2846BROADCOM BRCM80211 IEEE802.11n WIRELESS DRIVER 2817BROADCOM BRCM80211 IEEE802.11n WIRELESS DRIVER
2847M: Arend van Spriel <arend.vanspriel@broadcom.com> 2818M: Arend van Spriel <arend.vanspriel@broadcom.com>
@@ -2855,17 +2826,18 @@ L: brcm80211-dev-list@cypress.com
2855S: Supported 2826S: Supported
2856F: drivers/net/wireless/broadcom/brcm80211/ 2827F: drivers/net/wireless/broadcom/brcm80211/
2857 2828
2858BROADCOM BNX2FC 10 GIGABIT FCOE DRIVER 2829BROADCOM BRCMSTB GPIO DRIVER
2859M: QLogic-Storage-Upstream@qlogic.com 2830M: Gregory Fong <gregory.0xf0@gmail.com>
2860L: linux-scsi@vger.kernel.org 2831L: bcm-kernel-feedback-list@broadcom.com
2861S: Supported 2832S: Supported
2862F: drivers/scsi/bnx2fc/ 2833F: drivers/gpio/gpio-brcmstb.c
2834F: Documentation/devicetree/bindings/gpio/brcm,brcmstb-gpio.txt
2863 2835
2864BROADCOM BNX2I 1/10 GIGABIT iSCSI DRIVER 2836BROADCOM GENET ETHERNET DRIVER
2865M: QLogic-Storage-Upstream@qlogic.com 2837M: Florian Fainelli <f.fainelli@gmail.com>
2866L: linux-scsi@vger.kernel.org 2838L: netdev@vger.kernel.org
2867S: Supported 2839S: Supported
2868F: drivers/scsi/bnx2i/ 2840F: drivers/net/ethernet/broadcom/genet/
2869 2841
2870BROADCOM IPROC ARM ARCHITECTURE 2842BROADCOM IPROC ARM ARCHITECTURE
2871M: Ray Jui <rjui@broadcom.com> 2843M: Ray Jui <rjui@broadcom.com>
@@ -2892,13 +2864,6 @@ F: arch/arm64/boot/dts/broadcom/ns2*
2892F: drivers/clk/bcm/clk-ns* 2864F: drivers/clk/bcm/clk-ns*
2893F: drivers/pinctrl/bcm/pinctrl-ns* 2865F: drivers/pinctrl/bcm/pinctrl-ns*
2894 2866
2895BROADCOM BRCMSTB GPIO DRIVER
2896M: Gregory Fong <gregory.0xf0@gmail.com>
2897L: bcm-kernel-feedback-list@broadcom.com
2898S: Supported
2899F: drivers/gpio/gpio-brcmstb.c
2900F: Documentation/devicetree/bindings/gpio/brcm,brcmstb-gpio.txt
2901
2902BROADCOM KONA GPIO DRIVER 2867BROADCOM KONA GPIO DRIVER
2903M: Ray Jui <rjui@broadcom.com> 2868M: Ray Jui <rjui@broadcom.com>
2904L: bcm-kernel-feedback-list@broadcom.com 2869L: bcm-kernel-feedback-list@broadcom.com
@@ -2906,19 +2871,29 @@ S: Supported
2906F: drivers/gpio/gpio-bcm-kona.c 2871F: drivers/gpio/gpio-bcm-kona.c
2907F: Documentation/devicetree/bindings/gpio/brcm,kona-gpio.txt 2872F: Documentation/devicetree/bindings/gpio/brcm,kona-gpio.txt
2908 2873
2874BROADCOM NETXTREME-E ROCE DRIVER
2875M: Selvin Xavier <selvin.xavier@broadcom.com>
2876M: Devesh Sharma <devesh.sharma@broadcom.com>
2877M: Somnath Kotur <somnath.kotur@broadcom.com>
2878M: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
2879L: linux-rdma@vger.kernel.org
2880W: http://www.broadcom.com
2881S: Supported
2882F: drivers/infiniband/hw/bnxt_re/
2883F: include/uapi/rdma/bnxt_re-abi.h
2884
2909BROADCOM NVRAM DRIVER 2885BROADCOM NVRAM DRIVER
2910M: Rafał Miłecki <zajec5@gmail.com> 2886M: Rafał Miłecki <zajec5@gmail.com>
2911L: linux-mips@linux-mips.org 2887L: linux-mips@linux-mips.org
2912S: Maintained 2888S: Maintained
2913F: drivers/firmware/broadcom/* 2889F: drivers/firmware/broadcom/*
2914 2890
2915BROADCOM STB NAND FLASH DRIVER 2891BROADCOM SPECIFIC AMBA DRIVER (BCMA)
2916M: Brian Norris <computersforpeace@gmail.com> 2892M: Rafał Miłecki <zajec5@gmail.com>
2917M: Kamal Dasu <kdasu.kdev@gmail.com> 2893L: linux-wireless@vger.kernel.org
2918L: linux-mtd@lists.infradead.org
2919L: bcm-kernel-feedback-list@broadcom.com
2920S: Maintained 2894S: Maintained
2921F: drivers/mtd/nand/brcmnand/ 2895F: drivers/bcma/
2896F: include/linux/bcma/
2922 2897
2923BROADCOM STB AVS CPUFREQ DRIVER 2898BROADCOM STB AVS CPUFREQ DRIVER
2924M: Markus Mayer <mmayer@broadcom.com> 2899M: Markus Mayer <mmayer@broadcom.com>
@@ -2928,12 +2903,13 @@ S: Maintained
2928F: Documentation/devicetree/bindings/cpufreq/brcm,stb-avs-cpu-freq.txt 2903F: Documentation/devicetree/bindings/cpufreq/brcm,stb-avs-cpu-freq.txt
2929F: drivers/cpufreq/brcmstb* 2904F: drivers/cpufreq/brcmstb*
2930 2905
2931BROADCOM SPECIFIC AMBA DRIVER (BCMA) 2906BROADCOM STB NAND FLASH DRIVER
2932M: Rafał Miłecki <zajec5@gmail.com> 2907M: Brian Norris <computersforpeace@gmail.com>
2933L: linux-wireless@vger.kernel.org 2908M: Kamal Dasu <kdasu.kdev@gmail.com>
2909L: linux-mtd@lists.infradead.org
2910L: bcm-kernel-feedback-list@broadcom.com
2934S: Maintained 2911S: Maintained
2935F: drivers/bcma/ 2912F: drivers/mtd/nand/brcmnand/
2936F: include/linux/bcma/
2937 2913
2938BROADCOM SYSTEMPORT ETHERNET DRIVER 2914BROADCOM SYSTEMPORT ETHERNET DRIVER
2939M: Florian Fainelli <f.fainelli@gmail.com> 2915M: Florian Fainelli <f.fainelli@gmail.com>
@@ -2941,16 +2917,13 @@ L: netdev@vger.kernel.org
2941S: Supported 2917S: Supported
2942F: drivers/net/ethernet/broadcom/bcmsysport.* 2918F: drivers/net/ethernet/broadcom/bcmsysport.*
2943 2919
2944BROADCOM NETXTREME-E ROCE DRIVER 2920BROADCOM TG3 GIGABIT ETHERNET DRIVER
2945M: Selvin Xavier <selvin.xavier@broadcom.com> 2921M: Siva Reddy Kallam <siva.kallam@broadcom.com>
2946M: Devesh Sharma <devesh.sharma@broadcom.com> 2922M: Prashant Sreedharan <prashant@broadcom.com>
2947M: Somnath Kotur <somnath.kotur@broadcom.com> 2923M: Michael Chan <mchan@broadcom.com>
2948M: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com> 2924L: netdev@vger.kernel.org
2949L: linux-rdma@vger.kernel.org
2950W: http://www.broadcom.com
2951S: Supported 2925S: Supported
2952F: drivers/infiniband/hw/bnxt_re/ 2926F: drivers/net/ethernet/broadcom/tg3.*
2953F: include/uapi/rdma/bnxt_re-abi.h
2954 2927
2955BROCADE BFA FC SCSI DRIVER 2928BROCADE BFA FC SCSI DRIVER
2956M: Anil Gurumurthy <anil.gurumurthy@qlogic.com> 2929M: Anil Gurumurthy <anil.gurumurthy@qlogic.com>
@@ -3013,6 +2986,15 @@ S: Odd fixes
3013F: Documentation/media/v4l-drivers/bttv* 2986F: Documentation/media/v4l-drivers/bttv*
3014F: drivers/media/pci/bt8xx/bttv* 2987F: drivers/media/pci/bt8xx/bttv*
3015 2988
2989BUS FREQUENCY DRIVER FOR SAMSUNG EXYNOS
2990M: Chanwoo Choi <cw00.choi@samsung.com>
2991L: linux-pm@vger.kernel.org
2992L: linux-samsung-soc@vger.kernel.org
2993T: git git://git.kernel.org/pub/scm/linux/kernel/git/mzx/devfreq.git
2994S: Maintained
2995F: drivers/devfreq/exynos-bus.c
2996F: Documentation/devicetree/bindings/devfreq/exynos-bus.txt
2997
3016BUSLOGIC SCSI DRIVER 2998BUSLOGIC SCSI DRIVER
3017M: Khalid Aziz <khalid@gonehiking.org> 2999M: Khalid Aziz <khalid@gonehiking.org>
3018L: linux-scsi@vger.kernel.org 3000L: linux-scsi@vger.kernel.org
@@ -3087,6 +3069,21 @@ F: arch/x86/kernel/tce_64.c
3087F: arch/x86/include/asm/calgary.h 3069F: arch/x86/include/asm/calgary.h
3088F: arch/x86/include/asm/tce.h 3070F: arch/x86/include/asm/tce.h
3089 3071
3072CAN NETWORK DRIVERS
3073M: Wolfgang Grandegger <wg@grandegger.com>
3074M: Marc Kleine-Budde <mkl@pengutronix.de>
3075L: linux-can@vger.kernel.org
3076W: https://github.com/linux-can
3077T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can.git
3078T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next.git
3079S: Maintained
3080F: Documentation/devicetree/bindings/net/can/
3081F: drivers/net/can/
3082F: include/linux/can/dev.h
3083F: include/linux/can/platform/
3084F: include/uapi/linux/can/error.h
3085F: include/uapi/linux/can/netlink.h
3086
3090CAN NETWORK LAYER 3087CAN NETWORK LAYER
3091M: Oliver Hartkopp <socketcan@hartkopp.net> 3088M: Oliver Hartkopp <socketcan@hartkopp.net>
3092M: Marc Kleine-Budde <mkl@pengutronix.de> 3089M: Marc Kleine-Budde <mkl@pengutronix.de>
@@ -3103,21 +3100,6 @@ F: include/uapi/linux/can/bcm.h
3103F: include/uapi/linux/can/raw.h 3100F: include/uapi/linux/can/raw.h
3104F: include/uapi/linux/can/gw.h 3101F: include/uapi/linux/can/gw.h
3105 3102
3106CAN NETWORK DRIVERS
3107M: Wolfgang Grandegger <wg@grandegger.com>
3108M: Marc Kleine-Budde <mkl@pengutronix.de>
3109L: linux-can@vger.kernel.org
3110W: https://github.com/linux-can
3111T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can.git
3112T: git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next.git
3113S: Maintained
3114F: Documentation/devicetree/bindings/net/can/
3115F: drivers/net/can/
3116F: include/linux/can/dev.h
3117F: include/linux/can/platform/
3118F: include/uapi/linux/can/error.h
3119F: include/uapi/linux/can/netlink.h
3120
3121CAPABILITIES 3103CAPABILITIES
3122M: Serge Hallyn <serge@hallyn.com> 3104M: Serge Hallyn <serge@hallyn.com>
3123L: linux-security-module@vger.kernel.org 3105L: linux-security-module@vger.kernel.org
@@ -3132,12 +3114,12 @@ M: Kevin Tsai <ktsai@capellamicro.com>
3132S: Maintained 3114S: Maintained
3133F: drivers/iio/light/cm* 3115F: drivers/iio/light/cm*
3134 3116
3135CAVIUM THUNDERX2 ARM64 SOC 3117CARL9170 LINUX COMMUNITY WIRELESS DRIVER
3136M: Jayachandran C <jnair@caviumnetworks.com> 3118M: Christian Lamparter <chunkeey@googlemail.com>
3137L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 3119L: linux-wireless@vger.kernel.org
3120W: http://wireless.kernel.org/en/users/Drivers/carl9170
3138S: Maintained 3121S: Maintained
3139F: arch/arm64/boot/dts/cavium/thunder2-99xx* 3122F: drivers/net/wireless/ath/carl9170/
3140F: Documentation/devicetree/bindings/arm/cavium-thunder2.txt
3141 3123
3142CAVIUM I2C DRIVER 3124CAVIUM I2C DRIVER
3143M: Jan Glauber <jglauber@cavium.com> 3125M: Jan Glauber <jglauber@cavium.com>
@@ -3147,6 +3129,16 @@ S: Supported
3147F: drivers/i2c/busses/i2c-octeon* 3129F: drivers/i2c/busses/i2c-octeon*
3148F: drivers/i2c/busses/i2c-thunderx* 3130F: drivers/i2c/busses/i2c-thunderx*
3149 3131
3132CAVIUM LIQUIDIO NETWORK DRIVER
3133M: Derek Chickles <derek.chickles@caviumnetworks.com>
3134M: Satanand Burla <satananda.burla@caviumnetworks.com>
3135M: Felix Manlunas <felix.manlunas@caviumnetworks.com>
3136M: Raghu Vatsavayi <raghu.vatsavayi@caviumnetworks.com>
3137L: netdev@vger.kernel.org
3138W: http://www.cavium.com
3139S: Supported
3140F: drivers/net/ethernet/cavium/liquidio/
3141
3150CAVIUM MMC DRIVER 3142CAVIUM MMC DRIVER
3151M: Jan Glauber <jglauber@cavium.com> 3143M: Jan Glauber <jglauber@cavium.com>
3152M: David Daney <david.daney@cavium.com> 3144M: David Daney <david.daney@cavium.com>
@@ -3155,16 +3147,6 @@ W: http://www.cavium.com
3155S: Supported 3147S: Supported
3156F: drivers/mmc/host/cavium* 3148F: drivers/mmc/host/cavium*
3157 3149
3158CAVIUM LIQUIDIO NETWORK DRIVER
3159M: Derek Chickles <derek.chickles@caviumnetworks.com>
3160M: Satanand Burla <satananda.burla@caviumnetworks.com>
3161M: Felix Manlunas <felix.manlunas@caviumnetworks.com>
3162M: Raghu Vatsavayi <raghu.vatsavayi@caviumnetworks.com>
3163L: netdev@vger.kernel.org
3164W: http://www.cavium.com
3165S: Supported
3166F: drivers/net/ethernet/cavium/liquidio/
3167
3168CAVIUM OCTEON-TX CRYPTO DRIVER 3150CAVIUM OCTEON-TX CRYPTO DRIVER
3169M: George Cherian <george.cherian@cavium.com> 3151M: George Cherian <george.cherian@cavium.com>
3170L: linux-crypto@vger.kernel.org 3152L: linux-crypto@vger.kernel.org
@@ -3172,6 +3154,13 @@ W: http://www.cavium.com
3172S: Supported 3154S: Supported
3173F: drivers/crypto/cavium/cpt/ 3155F: drivers/crypto/cavium/cpt/
3174 3156
3157CAVIUM THUNDERX2 ARM64 SOC
3158M: Jayachandran C <jnair@caviumnetworks.com>
3159L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
3160S: Maintained
3161F: arch/arm64/boot/dts/cavium/thunder2-99xx*
3162F: Documentation/devicetree/bindings/arm/cavium-thunder2.txt
3163
3175CC2520 IEEE-802.15.4 RADIO DRIVER 3164CC2520 IEEE-802.15.4 RADIO DRIVER
3176M: Varka Bhadram <varkabhadram@gmail.com> 3165M: Varka Bhadram <varkabhadram@gmail.com>
3177L: linux-wpan@vger.kernel.org 3166L: linux-wpan@vger.kernel.org
@@ -3260,12 +3249,6 @@ F: drivers/usb/host/whci/
3260F: drivers/usb/wusbcore/ 3249F: drivers/usb/wusbcore/
3261F: include/linux/usb/wusb* 3250F: include/linux/usb/wusb*
3262 3251
3263HT16K33 LED CONTROLLER DRIVER
3264M: Robin van der Gracht <robin@protonic.nl>
3265S: Maintained
3266F: drivers/auxdisplay/ht16k33.c
3267F: Documentation/devicetree/bindings/display/ht16k33.txt
3268
3269CFAG12864B LCD DRIVER 3252CFAG12864B LCD DRIVER
3270M: Miguel Ojeda Sandonis <miguel.ojeda.sandonis@gmail.com> 3253M: Miguel Ojeda Sandonis <miguel.ojeda.sandonis@gmail.com>
3271W: http://miguelojeda.es/auxdisplay.htm 3254W: http://miguelojeda.es/auxdisplay.htm
@@ -3337,6 +3320,34 @@ S: Maintained
3337T: git git://git.kernel.org/pub/scm/linux/kernel/git/bleung/chrome-platform.git 3320T: git git://git.kernel.org/pub/scm/linux/kernel/git/bleung/chrome-platform.git
3338F: drivers/platform/chrome/ 3321F: drivers/platform/chrome/
3339 3322
3323CIRRUS LOGIC AUDIO CODEC DRIVERS
3324M: Brian Austin <brian.austin@cirrus.com>
3325M: Paul Handrigan <Paul.Handrigan@cirrus.com>
3326L: alsa-devel@alsa-project.org (moderated for non-subscribers)
3327S: Maintained
3328F: sound/soc/codecs/cs*
3329
3330CIRRUS LOGIC EP93XX ETHERNET DRIVER
3331M: Hartley Sweeten <hsweeten@visionengravers.com>
3332L: netdev@vger.kernel.org
3333S: Maintained
3334F: drivers/net/ethernet/cirrus/ep93xx_eth.c
3335
3336CISCO FCOE HBA DRIVER
3337M: Satish Kharat <satishkh@cisco.com>
3338M: Sesidhar Baddela <sebaddel@cisco.com>
3339M: Karan Tilak Kumar <kartilak@cisco.com>
3340L: linux-scsi@vger.kernel.org
3341S: Supported
3342F: drivers/scsi/fnic/
3343
3344CISCO SCSI HBA DRIVER
3345M: Karan Tilak Kumar <kartilak@cisco.com>
3346M: Sesidhar Baddela <sebaddel@cisco.com>
3347L: linux-scsi@vger.kernel.org
3348S: Supported
3349F: drivers/scsi/snic/
3350
3340CISCO VIC ETHERNET NIC DRIVER 3351CISCO VIC ETHERNET NIC DRIVER
3341M: Christian Benvenuti <benve@cisco.com> 3352M: Christian Benvenuti <benve@cisco.com>
3342M: Govindarajulu Varadarajan <_govind@gmx.com> 3353M: Govindarajulu Varadarajan <_govind@gmx.com>
@@ -3350,19 +3361,6 @@ M: Dave Goodell <dgoodell@cisco.com>
3350S: Supported 3361S: Supported
3351F: drivers/infiniband/hw/usnic/ 3362F: drivers/infiniband/hw/usnic/
3352 3363
3353CIRRUS LOGIC EP93XX ETHERNET DRIVER
3354M: Hartley Sweeten <hsweeten@visionengravers.com>
3355L: netdev@vger.kernel.org
3356S: Maintained
3357F: drivers/net/ethernet/cirrus/ep93xx_eth.c
3358
3359CIRRUS LOGIC AUDIO CODEC DRIVERS
3360M: Brian Austin <brian.austin@cirrus.com>
3361M: Paul Handrigan <Paul.Handrigan@cirrus.com>
3362L: alsa-devel@alsa-project.org (moderated for non-subscribers)
3363S: Maintained
3364F: sound/soc/codecs/cs*
3365
3366CLEANCACHE API 3364CLEANCACHE API
3367M: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> 3365M: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
3368L: linux-kernel@vger.kernel.org 3366L: linux-kernel@vger.kernel.org
@@ -3384,21 +3382,6 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core
3384S: Supported 3382S: Supported
3385F: drivers/clocksource 3383F: drivers/clocksource
3386 3384
3387CISCO FCOE HBA DRIVER
3388M: Satish Kharat <satishkh@cisco.com>
3389M: Sesidhar Baddela <sebaddel@cisco.com>
3390M: Karan Tilak Kumar <kartilak@cisco.com>
3391L: linux-scsi@vger.kernel.org
3392S: Supported
3393F: drivers/scsi/fnic/
3394
3395CISCO SCSI HBA DRIVER
3396M: Karan Tilak Kumar <kartilak@cisco.com>
3397M: Sesidhar Baddela <sebaddel@cisco.com>
3398L: linux-scsi@vger.kernel.org
3399S: Supported
3400F: drivers/scsi/snic/
3401
3402CMPC ACPI DRIVER 3385CMPC ACPI DRIVER
3403M: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com> 3386M: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
3404M: Daniel Oliveira Nascimento <don@syst.com.br> 3387M: Daniel Oliveira Nascimento <don@syst.com.br>
@@ -3474,17 +3457,17 @@ L: linux-pci@vger.kernel.org
3474S: Maintained 3457S: Maintained
3475F: drivers/pci/hotplug/cpci_hotplug* 3458F: drivers/pci/hotplug/cpci_hotplug*
3476 3459
3477COMPACTPCI HOTPLUG ZIATECH ZT5550 DRIVER 3460COMPACTPCI HOTPLUG GENERIC DRIVER
3478M: Scott Murray <scott@spiteful.org> 3461M: Scott Murray <scott@spiteful.org>
3479L: linux-pci@vger.kernel.org 3462L: linux-pci@vger.kernel.org
3480S: Maintained 3463S: Maintained
3481F: drivers/pci/hotplug/cpcihp_zt5550.* 3464F: drivers/pci/hotplug/cpcihp_generic.c
3482 3465
3483COMPACTPCI HOTPLUG GENERIC DRIVER 3466COMPACTPCI HOTPLUG ZIATECH ZT5550 DRIVER
3484M: Scott Murray <scott@spiteful.org> 3467M: Scott Murray <scott@spiteful.org>
3485L: linux-pci@vger.kernel.org 3468L: linux-pci@vger.kernel.org
3486S: Maintained 3469S: Maintained
3487F: drivers/pci/hotplug/cpcihp_generic.c 3470F: drivers/pci/hotplug/cpcihp_zt5550.*
3488 3471
3489COMPAL LAPTOP SUPPORT 3472COMPAL LAPTOP SUPPORT
3490M: Cezary Jackiewicz <cezary.jackiewicz@gmail.com> 3473M: Cezary Jackiewicz <cezary.jackiewicz@gmail.com>
@@ -3587,6 +3570,18 @@ F: drivers/cpufreq/arm_big_little.h
3587F: drivers/cpufreq/arm_big_little.c 3570F: drivers/cpufreq/arm_big_little.c
3588F: drivers/cpufreq/arm_big_little_dt.c 3571F: drivers/cpufreq/arm_big_little_dt.c
3589 3572
3573CPU POWER MONITORING SUBSYSTEM
3574M: Thomas Renninger <trenn@suse.com>
3575L: linux-pm@vger.kernel.org
3576S: Maintained
3577F: tools/power/cpupower/
3578
3579CPUID/MSR DRIVER
3580M: "H. Peter Anvin" <hpa@zytor.com>
3581S: Maintained
3582F: arch/x86/kernel/cpuid.c
3583F: arch/x86/kernel/msr.c
3584
3590CPUIDLE DRIVER - ARM BIG LITTLE 3585CPUIDLE DRIVER - ARM BIG LITTLE
3591M: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 3586M: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
3592M: Daniel Lezcano <daniel.lezcano@linaro.org> 3587M: Daniel Lezcano <daniel.lezcano@linaro.org>
@@ -3616,18 +3611,6 @@ B: https://bugzilla.kernel.org
3616F: drivers/cpuidle/* 3611F: drivers/cpuidle/*
3617F: include/linux/cpuidle.h 3612F: include/linux/cpuidle.h
3618 3613
3619CPUID/MSR DRIVER
3620M: "H. Peter Anvin" <hpa@zytor.com>
3621S: Maintained
3622F: arch/x86/kernel/cpuid.c
3623F: arch/x86/kernel/msr.c
3624
3625CPU POWER MONITORING SUBSYSTEM
3626M: Thomas Renninger <trenn@suse.com>
3627L: linux-pm@vger.kernel.org
3628S: Maintained
3629F: tools/power/cpupower/
3630
3631CRAMFS FILESYSTEM 3614CRAMFS FILESYSTEM
3632W: http://sourceforge.net/projects/cramfs/ 3615W: http://sourceforge.net/projects/cramfs/
3633S: Orphan / Obsolete 3616S: Orphan / Obsolete
@@ -3757,6 +3740,13 @@ S: Supported
3757F: drivers/infiniband/hw/cxgb3/ 3740F: drivers/infiniband/hw/cxgb3/
3758F: include/uapi/rdma/cxgb3-abi.h 3741F: include/uapi/rdma/cxgb3-abi.h
3759 3742
3743CXGB4 CRYPTO DRIVER (chcr)
3744M: Harsh Jain <harsh@chelsio.com>
3745L: linux-crypto@vger.kernel.org
3746W: http://www.chelsio.com
3747S: Supported
3748F: drivers/crypto/chelsio
3749
3760CXGB4 ETHERNET DRIVER (CXGB4) 3750CXGB4 ETHERNET DRIVER (CXGB4)
3761M: Ganesh Goudar <ganeshgr@chelsio.com> 3751M: Ganesh Goudar <ganeshgr@chelsio.com>
3762L: netdev@vger.kernel.org 3752L: netdev@vger.kernel.org
@@ -3779,13 +3769,6 @@ S: Supported
3779F: drivers/infiniband/hw/cxgb4/ 3769F: drivers/infiniband/hw/cxgb4/
3780F: include/uapi/rdma/cxgb4-abi.h 3770F: include/uapi/rdma/cxgb4-abi.h
3781 3771
3782CXGB4 CRYPTO DRIVER (chcr)
3783M: Harsh Jain <harsh@chelsio.com>
3784L: linux-crypto@vger.kernel.org
3785W: http://www.chelsio.com
3786S: Supported
3787F: drivers/crypto/chelsio
3788
3789CXGB4VF ETHERNET DRIVER (CXGB4VF) 3772CXGB4VF ETHERNET DRIVER (CXGB4VF)
3790M: Casey Leedom <leedom@chelsio.com> 3773M: Casey Leedom <leedom@chelsio.com>
3791L: netdev@vger.kernel.org 3774L: netdev@vger.kernel.org
@@ -3815,14 +3798,6 @@ F: drivers/scsi/cxlflash/
3815F: include/uapi/scsi/cxlflash_ioctls.h 3798F: include/uapi/scsi/cxlflash_ioctls.h
3816F: Documentation/powerpc/cxlflash.txt 3799F: Documentation/powerpc/cxlflash.txt
3817 3800
3818STMMAC ETHERNET DRIVER
3819M: Giuseppe Cavallaro <peppe.cavallaro@st.com>
3820M: Alexandre Torgue <alexandre.torgue@st.com>
3821L: netdev@vger.kernel.org
3822W: http://www.stlinux.com
3823S: Supported
3824F: drivers/net/ethernet/stmicro/stmmac/
3825
3826CYBERPRO FB DRIVER 3801CYBERPRO FB DRIVER
3827M: Russell King <linux@armlinux.org.uk> 3802M: Russell King <linux@armlinux.org.uk>
3828L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 3803L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@ -3946,15 +3921,15 @@ L: platform-driver-x86@vger.kernel.org
3946S: Maintained 3921S: Maintained
3947F: drivers/platform/x86/dell-laptop.c 3922F: drivers/platform/x86/dell-laptop.c
3948 3923
3949DELL LAPTOP RBTN DRIVER 3924DELL LAPTOP FREEFALL DRIVER
3950M: Pali Rohár <pali.rohar@gmail.com> 3925M: Pali Rohár <pali.rohar@gmail.com>
3951S: Maintained 3926S: Maintained
3952F: drivers/platform/x86/dell-rbtn.* 3927F: drivers/platform/x86/dell-smo8800.c
3953 3928
3954DELL LAPTOP FREEFALL DRIVER 3929DELL LAPTOP RBTN DRIVER
3955M: Pali Rohár <pali.rohar@gmail.com> 3930M: Pali Rohár <pali.rohar@gmail.com>
3956S: Maintained 3931S: Maintained
3957F: drivers/platform/x86/dell-smo8800.c 3932F: drivers/platform/x86/dell-rbtn.*
3958 3933
3959DELL LAPTOP SMM DRIVER 3934DELL LAPTOP SMM DRIVER
3960M: Pali Rohár <pali.rohar@gmail.com> 3935M: Pali Rohár <pali.rohar@gmail.com>
@@ -3974,6 +3949,14 @@ M: Pali Rohár <pali.rohar@gmail.com>
3974S: Maintained 3949S: Maintained
3975F: drivers/platform/x86/dell-wmi.c 3950F: drivers/platform/x86/dell-wmi.c
3976 3951
3952DELTA ST MEDIA DRIVER
3953M: Hugues Fruchet <hugues.fruchet@st.com>
3954L: linux-media@vger.kernel.org
3955T: git git://linuxtv.org/media_tree.git
3956W: https://linuxtv.org
3957S: Supported
3958F: drivers/media/platform/sti/delta
3959
3977DENALI NAND DRIVER 3960DENALI NAND DRIVER
3978M: Masahiro Yamada <yamada.masahiro@socionext.com> 3961M: Masahiro Yamada <yamada.masahiro@socionext.com>
3979L: linux-mtd@lists.infradead.org 3962L: linux-mtd@lists.infradead.org
@@ -4028,15 +4011,6 @@ F: drivers/devfreq/devfreq-event.c
4028F: include/linux/devfreq-event.h 4011F: include/linux/devfreq-event.h
4029F: Documentation/devicetree/bindings/devfreq/event/ 4012F: Documentation/devicetree/bindings/devfreq/event/
4030 4013
4031BUS FREQUENCY DRIVER FOR SAMSUNG EXYNOS
4032M: Chanwoo Choi <cw00.choi@samsung.com>
4033L: linux-pm@vger.kernel.org
4034L: linux-samsung-soc@vger.kernel.org
4035T: git git://git.kernel.org/pub/scm/linux/kernel/git/mzx/devfreq.git
4036S: Maintained
4037F: drivers/devfreq/exynos-bus.c
4038F: Documentation/devicetree/bindings/devfreq/exynos-bus.txt
4039
4040DEVICE NUMBER REGISTRY 4014DEVICE NUMBER REGISTRY
4041M: Torben Mathiasen <device@lanana.org> 4015M: Torben Mathiasen <device@lanana.org>
4042W: http://lanana.org/docs/device-list/index.html 4016W: http://lanana.org/docs/device-list/index.html
@@ -4186,20 +4160,6 @@ F: include/linux/*fence.h
4186F: Documentation/driver-api/dma-buf.rst 4160F: Documentation/driver-api/dma-buf.rst
4187T: git git://anongit.freedesktop.org/drm/drm-misc 4161T: git git://anongit.freedesktop.org/drm/drm-misc
4188 4162
4189SYNC FILE FRAMEWORK
4190M: Sumit Semwal <sumit.semwal@linaro.org>
4191R: Gustavo Padovan <gustavo@padovan.org>
4192S: Maintained
4193L: linux-media@vger.kernel.org
4194L: dri-devel@lists.freedesktop.org
4195F: drivers/dma-buf/sync_*
4196F: drivers/dma-buf/dma-fence*
4197F: drivers/dma-buf/sw_sync.c
4198F: include/linux/sync_file.h
4199F: include/uapi/linux/sync_file.h
4200F: Documentation/sync_file.txt
4201T: git git://anongit.freedesktop.org/drm/drm-misc
4202
4203DMA GENERIC OFFLOAD ENGINE SUBSYSTEM 4163DMA GENERIC OFFLOAD ENGINE SUBSYSTEM
4204M: Vinod Koul <vinod.koul@intel.com> 4164M: Vinod Koul <vinod.koul@intel.com>
4205L: dmaengine@vger.kernel.org 4165L: dmaengine@vger.kernel.org
@@ -4211,6 +4171,21 @@ F: Documentation/devicetree/bindings/dma/
4211F: Documentation/dmaengine/ 4171F: Documentation/dmaengine/
4212T: git git://git.infradead.org/users/vkoul/slave-dma.git 4172T: git git://git.infradead.org/users/vkoul/slave-dma.git
4213 4173
4174DMA MAPPING HELPERS
4175M: Christoph Hellwig <hch@lst.de>
4176M: Marek Szyprowski <m.szyprowski@samsung.com>
4177R: Robin Murphy <robin.murphy@arm.com>
4178L: linux-kernel@vger.kernel.org
4179T: git git://git.infradead.org/users/hch/dma-mapping.git
4180W: http://git.infradead.org/users/hch/dma-mapping.git
4181S: Supported
4182F: lib/dma-debug.c
4183F: lib/dma-noop.c
4184F: lib/dma-virt.c
4185F: drivers/base/dma-mapping.c
4186F: drivers/base/dma-coherent.c
4187F: include/linux/dma-mapping.h
4188
4214DME1737 HARDWARE MONITOR DRIVER 4189DME1737 HARDWARE MONITOR DRIVER
4215M: Juerg Haefliger <juergh@gmail.com> 4190M: Juerg Haefliger <juergh@gmail.com>
4216L: linux-hwmon@vger.kernel.org 4191L: linux-hwmon@vger.kernel.org
@@ -4241,6 +4216,13 @@ X: Documentation/spi
4241X: Documentation/media 4216X: Documentation/media
4242T: git git://git.lwn.net/linux.git docs-next 4217T: git git://git.lwn.net/linux.git docs-next
4243 4218
4219DONGWOON DW9714 LENS VOICE COIL DRIVER
4220M: Sakari Ailus <sakari.ailus@linux.intel.com>
4221L: linux-media@vger.kernel.org
4222T: git git://linuxtv.org/media_tree.git
4223S: Maintained
4224F: drivers/media/i2c/dw9714.c
4225
4244DOUBLETALK DRIVER 4226DOUBLETALK DRIVER
4245M: "James R. Van Zandt" <jrv@vanzandt.mv.com> 4227M: "James R. Van Zandt" <jrv@vanzandt.mv.com>
4246L: blinux-list@redhat.com 4228L: blinux-list@redhat.com
@@ -4292,36 +4274,13 @@ F: include/linux/debugfs.h
4292F: include/linux/kobj* 4274F: include/linux/kobj*
4293F: lib/kobj* 4275F: lib/kobj*
4294 4276
4295DRM DRIVERS 4277DRIVERS FOR ADAPTIVE VOLTAGE SCALING (AVS)
4296M: David Airlie <airlied@linux.ie> 4278M: Kevin Hilman <khilman@kernel.org>
4297L: dri-devel@lists.freedesktop.org 4279M: Nishanth Menon <nm@ti.com>
4298T: git git://people.freedesktop.org/~airlied/linux
4299B: https://bugs.freedesktop.org/
4300C: irc://chat.freenode.net/dri-devel
4301S: Maintained
4302F: drivers/gpu/drm/
4303F: drivers/gpu/vga/
4304F: Documentation/devicetree/bindings/display/
4305F: Documentation/devicetree/bindings/gpu/
4306F: Documentation/devicetree/bindings/video/
4307F: Documentation/gpu/
4308F: include/drm/
4309F: include/uapi/drm/
4310F: include/linux/vga*
4311
4312DRM DRIVERS AND MISC GPU PATCHES
4313M: Daniel Vetter <daniel.vetter@intel.com>
4314M: Jani Nikula <jani.nikula@linux.intel.com>
4315M: Sean Paul <seanpaul@chromium.org>
4316W: https://01.org/linuxgraphics/gfx-docs/maintainer-tools/drm-misc.html
4317S: Maintained 4280S: Maintained
4318T: git git://anongit.freedesktop.org/drm/drm-misc 4281F: drivers/power/avs/
4319F: Documentation/gpu/ 4282F: include/linux/power/smartreflex.h
4320F: drivers/gpu/vga/ 4283L: linux-pm@vger.kernel.org
4321F: drivers/gpu/drm/*
4322F: include/drm/drm*
4323F: include/uapi/drm/drm*
4324F: include/linux/vga*
4325 4284
4326DRM DRIVER FOR ARM PL111 CLCD 4285DRM DRIVER FOR ARM PL111 CLCD
4327M: Eric Anholt <eric@anholt.net> 4286M: Eric Anholt <eric@anholt.net>
@@ -4334,14 +4293,6 @@ M: Dave Airlie <airlied@redhat.com>
4334S: Odd Fixes 4293S: Odd Fixes
4335F: drivers/gpu/drm/ast/ 4294F: drivers/gpu/drm/ast/
4336 4295
4337DRM DRIVERS FOR BRIDGE CHIPS
4338M: Archit Taneja <architt@codeaurora.org>
4339M: Andrzej Hajda <a.hajda@samsung.com>
4340R: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
4341S: Maintained
4342T: git git://anongit.freedesktop.org/drm/drm-misc
4343F: drivers/gpu/drm/bridge/
4344
4345DRM DRIVER FOR BOCHS VIRTUAL GPU 4296DRM DRIVER FOR BOCHS VIRTUAL GPU
4346M: Gerd Hoffmann <kraxel@redhat.com> 4297M: Gerd Hoffmann <kraxel@redhat.com>
4347L: virtualization@lists.linux-foundation.org 4298L: virtualization@lists.linux-foundation.org
@@ -4349,6 +4300,47 @@ T: git git://anongit.freedesktop.org/drm/drm-misc
4349S: Maintained 4300S: Maintained
4350F: drivers/gpu/drm/bochs/ 4301F: drivers/gpu/drm/bochs/
4351 4302
4303DRM DRIVER FOR INTEL I810 VIDEO CARDS
4304S: Orphan / Obsolete
4305F: drivers/gpu/drm/i810/
4306F: include/uapi/drm/i810_drm.h
4307
4308DRM DRIVER FOR MATROX G200/G400 GRAPHICS CARDS
4309S: Orphan / Obsolete
4310F: drivers/gpu/drm/mga/
4311F: include/uapi/drm/mga_drm.h
4312
4313DRM DRIVER FOR MGA G200 SERVER GRAPHICS CHIPS
4314M: Dave Airlie <airlied@redhat.com>
4315S: Odd Fixes
4316F: drivers/gpu/drm/mgag200/
4317
4318DRM DRIVER FOR MI0283QT
4319M: Noralf Trønnes <noralf@tronnes.org>
4320S: Maintained
4321F: drivers/gpu/drm/tinydrm/mi0283qt.c
4322F: Documentation/devicetree/bindings/display/multi-inno,mi0283qt.txt
4323
4324DRM DRIVER FOR MSM ADRENO GPU
4325M: Rob Clark <robdclark@gmail.com>
4326L: linux-arm-msm@vger.kernel.org
4327L: dri-devel@lists.freedesktop.org
4328L: freedreno@lists.freedesktop.org
4329T: git git://people.freedesktop.org/~robclark/linux
4330S: Maintained
4331F: drivers/gpu/drm/msm/
4332F: include/uapi/drm/msm_drm.h
4333F: Documentation/devicetree/bindings/display/msm/
4334
4335DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS
4336M: Ben Skeggs <bskeggs@redhat.com>
4337L: dri-devel@lists.freedesktop.org
4338L: nouveau@lists.freedesktop.org
4339T: git git://github.com/skeggsb/linux
4340S: Supported
4341F: drivers/gpu/drm/nouveau/
4342F: include/uapi/drm/nouveau_drm.h
4343
4352DRM DRIVER FOR QEMU'S CIRRUS DEVICE 4344DRM DRIVER FOR QEMU'S CIRRUS DEVICE
4353M: Dave Airlie <airlied@redhat.com> 4345M: Dave Airlie <airlied@redhat.com>
4354M: Gerd Hoffmann <kraxel@redhat.com> 4346M: Gerd Hoffmann <kraxel@redhat.com>
@@ -4358,59 +4350,80 @@ S: Obsolete
4358W: https://www.kraxel.org/blog/2014/10/qemu-using-cirrus-considered-harmful/ 4350W: https://www.kraxel.org/blog/2014/10/qemu-using-cirrus-considered-harmful/
4359F: drivers/gpu/drm/cirrus/ 4351F: drivers/gpu/drm/cirrus/
4360 4352
4361RADEON and AMDGPU DRM DRIVERS 4353DRM DRIVER FOR QXL VIRTUAL GPU
4362M: Alex Deucher <alexander.deucher@amd.com> 4354M: Dave Airlie <airlied@redhat.com>
4363M: Christian König <christian.koenig@amd.com> 4355M: Gerd Hoffmann <kraxel@redhat.com>
4364L: amd-gfx@lists.freedesktop.org 4356L: virtualization@lists.linux-foundation.org
4365T: git git://people.freedesktop.org/~agd5f/linux 4357T: git git://anongit.freedesktop.org/drm/drm-misc
4358S: Maintained
4359F: drivers/gpu/drm/qxl/
4360F: include/uapi/drm/qxl_drm.h
4361
4362DRM DRIVER FOR RAGE 128 VIDEO CARDS
4363S: Orphan / Obsolete
4364F: drivers/gpu/drm/r128/
4365F: include/uapi/drm/r128_drm.h
4366
4367DRM DRIVER FOR SAVAGE VIDEO CARDS
4368S: Orphan / Obsolete
4369F: drivers/gpu/drm/savage/
4370F: include/uapi/drm/savage_drm.h
4371
4372DRM DRIVER FOR SIS VIDEO CARDS
4373S: Orphan / Obsolete
4374F: drivers/gpu/drm/sis/
4375F: include/uapi/drm/sis_drm.h
4376
4377DRM DRIVER FOR TDFX VIDEO CARDS
4378S: Orphan / Obsolete
4379F: drivers/gpu/drm/tdfx/
4380
4381DRM DRIVER FOR USB DISPLAYLINK VIDEO ADAPTERS
4382M: Dave Airlie <airlied@redhat.com>
4383S: Odd Fixes
4384F: drivers/gpu/drm/udl/
4385
4386DRM DRIVER FOR VMWARE VIRTUAL GPU
4387M: "VMware Graphics" <linux-graphics-maintainer@vmware.com>
4388M: Sinclair Yeh <syeh@vmware.com>
4389M: Thomas Hellstrom <thellstrom@vmware.com>
4390L: dri-devel@lists.freedesktop.org
4391T: git git://people.freedesktop.org/~syeh/repos_linux
4392T: git git://people.freedesktop.org/~thomash/linux
4366S: Supported 4393S: Supported
4367F: drivers/gpu/drm/radeon/ 4394F: drivers/gpu/drm/vmwgfx/
4368F: include/uapi/drm/radeon_drm.h 4395F: include/uapi/drm/vmwgfx_drm.h
4369F: drivers/gpu/drm/amd/
4370F: include/uapi/drm/amdgpu_drm.h
4371 4396
4372DRM PANEL DRIVERS 4397DRM DRIVERS
4373M: Thierry Reding <thierry.reding@gmail.com> 4398M: David Airlie <airlied@linux.ie>
4374L: dri-devel@lists.freedesktop.org 4399L: dri-devel@lists.freedesktop.org
4375T: git git://anongit.freedesktop.org/tegra/linux.git 4400T: git git://people.freedesktop.org/~airlied/linux
4401B: https://bugs.freedesktop.org/
4402C: irc://chat.freenode.net/dri-devel
4376S: Maintained 4403S: Maintained
4377F: drivers/gpu/drm/drm_panel.c 4404F: drivers/gpu/drm/
4378F: drivers/gpu/drm/panel/ 4405F: drivers/gpu/vga/
4379F: include/drm/drm_panel.h 4406F: Documentation/devicetree/bindings/display/
4380F: Documentation/devicetree/bindings/display/panel/ 4407F: Documentation/devicetree/bindings/gpu/
4408F: Documentation/devicetree/bindings/video/
4409F: Documentation/gpu/
4410F: include/drm/
4411F: include/uapi/drm/
4412F: include/linux/vga*
4381 4413
4382INTEL DRM DRIVERS (excluding Poulsbo, Moorestown and derivative chipsets) 4414DRM DRIVERS AND MISC GPU PATCHES
4383M: Daniel Vetter <daniel.vetter@intel.com> 4415M: Daniel Vetter <daniel.vetter@intel.com>
4384M: Jani Nikula <jani.nikula@linux.intel.com> 4416M: Jani Nikula <jani.nikula@linux.intel.com>
4385L: intel-gfx@lists.freedesktop.org 4417M: Sean Paul <seanpaul@chromium.org>
4386W: https://01.org/linuxgraphics/ 4418W: https://01.org/linuxgraphics/gfx-docs/maintainer-tools/drm-misc.html
4387B: https://01.org/linuxgraphics/documentation/how-report-bugs 4419S: Maintained
4388C: irc://chat.freenode.net/intel-gfx
4389Q: http://patchwork.freedesktop.org/project/intel-gfx/
4390T: git git://anongit.freedesktop.org/drm-intel
4391S: Supported
4392F: drivers/gpu/drm/i915/
4393F: include/drm/i915*
4394F: include/uapi/drm/i915_drm.h
4395F: Documentation/gpu/i915.rst
4396
4397INTEL GVT-g DRIVERS (Intel GPU Virtualization)
4398M: Zhenyu Wang <zhenyuw@linux.intel.com>
4399M: Zhi Wang <zhi.a.wang@intel.com>
4400L: intel-gvt-dev@lists.freedesktop.org
4401L: intel-gfx@lists.freedesktop.org
4402W: https://01.org/igvt-g
4403T: git https://github.com/01org/gvt-linux.git
4404S: Supported
4405F: drivers/gpu/drm/i915/gvt/
4406
4407DRM DRIVERS FOR ATMEL HLCDC
4408M: Boris Brezillon <boris.brezillon@free-electrons.com>
4409L: dri-devel@lists.freedesktop.org
4410S: Supported
4411F: drivers/gpu/drm/atmel-hlcdc/
4412F: Documentation/devicetree/bindings/drm/atmel/
4413T: git git://anongit.freedesktop.org/drm/drm-misc 4420T: git git://anongit.freedesktop.org/drm/drm-misc
4421F: Documentation/gpu/
4422F: drivers/gpu/vga/
4423F: drivers/gpu/drm/*
4424F: include/drm/drm*
4425F: include/uapi/drm/drm*
4426F: include/linux/vga*
4414 4427
4415DRM DRIVERS FOR ALLWINNER A10 4428DRM DRIVERS FOR ALLWINNER A10
4416M: Maxime Ripard <maxime.ripard@free-electrons.com> 4429M: Maxime Ripard <maxime.ripard@free-electrons.com>
@@ -4432,6 +4445,22 @@ F: Documentation/devicetree/bindings/display/amlogic,meson-dw-hdmi.txt
4432F: Documentation/gpu/meson.rst 4445F: Documentation/gpu/meson.rst
4433T: git git://anongit.freedesktop.org/drm/drm-misc 4446T: git git://anongit.freedesktop.org/drm/drm-misc
4434 4447
4448DRM DRIVERS FOR ATMEL HLCDC
4449M: Boris Brezillon <boris.brezillon@free-electrons.com>
4450L: dri-devel@lists.freedesktop.org
4451S: Supported
4452F: drivers/gpu/drm/atmel-hlcdc/
4453F: Documentation/devicetree/bindings/drm/atmel/
4454T: git git://anongit.freedesktop.org/drm/drm-misc
4455
4456DRM DRIVERS FOR BRIDGE CHIPS
4457M: Archit Taneja <architt@codeaurora.org>
4458M: Andrzej Hajda <a.hajda@samsung.com>
4459R: Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
4460S: Maintained
4461T: git git://anongit.freedesktop.org/drm/drm-misc
4462F: drivers/gpu/drm/bridge/
4463
4435DRM DRIVERS FOR EXYNOS 4464DRM DRIVERS FOR EXYNOS
4436M: Inki Dae <inki.dae@samsung.com> 4465M: Inki Dae <inki.dae@samsung.com>
4437M: Joonyoung Shim <jy0922.shim@samsung.com> 4466M: Joonyoung Shim <jy0922.shim@samsung.com>
@@ -4480,11 +4509,6 @@ S: Maintained
4480F: drivers/gpu/drm/hisilicon/ 4509F: drivers/gpu/drm/hisilicon/
4481F: Documentation/devicetree/bindings/display/hisilicon/ 4510F: Documentation/devicetree/bindings/display/hisilicon/
4482 4511
4483DRM DRIVER FOR INTEL I810 VIDEO CARDS
4484S: Orphan / Obsolete
4485F: drivers/gpu/drm/i810/
4486F: include/uapi/drm/i810_drm.h
4487
4488DRM DRIVERS FOR MEDIATEK 4512DRM DRIVERS FOR MEDIATEK
4489M: CK Hu <ck.hu@mediatek.com> 4513M: CK Hu <ck.hu@mediatek.com>
4490M: Philipp Zabel <p.zabel@pengutronix.de> 4514M: Philipp Zabel <p.zabel@pengutronix.de>
@@ -4493,32 +4517,6 @@ S: Supported
4493F: drivers/gpu/drm/mediatek/ 4517F: drivers/gpu/drm/mediatek/
4494F: Documentation/devicetree/bindings/display/mediatek/ 4518F: Documentation/devicetree/bindings/display/mediatek/
4495 4519
4496DRM DRIVER FOR MI0283QT
4497M: Noralf Trønnes <noralf@tronnes.org>
4498S: Maintained
4499F: drivers/gpu/drm/tinydrm/mi0283qt.c
4500F: Documentation/devicetree/bindings/display/multi-inno,mi0283qt.txt
4501
4502DRM DRIVER FOR MSM ADRENO GPU
4503M: Rob Clark <robdclark@gmail.com>
4504L: linux-arm-msm@vger.kernel.org
4505L: dri-devel@lists.freedesktop.org
4506L: freedreno@lists.freedesktop.org
4507T: git git://people.freedesktop.org/~robclark/linux
4508S: Maintained
4509F: drivers/gpu/drm/msm/
4510F: include/uapi/drm/msm_drm.h
4511F: Documentation/devicetree/bindings/display/msm/
4512
4513DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS
4514M: Ben Skeggs <bskeggs@redhat.com>
4515L: dri-devel@lists.freedesktop.org
4516L: nouveau@lists.freedesktop.org
4517T: git git://github.com/skeggsb/linux
4518S: Supported
4519F: drivers/gpu/drm/nouveau/
4520F: include/uapi/drm/nouveau_drm.h
4521
4522DRM DRIVERS FOR NVIDIA TEGRA 4520DRM DRIVERS FOR NVIDIA TEGRA
4523M: Thierry Reding <thierry.reding@gmail.com> 4521M: Thierry Reding <thierry.reding@gmail.com>
4524L: dri-devel@lists.freedesktop.org 4522L: dri-devel@lists.freedesktop.org
@@ -4531,21 +4529,6 @@ F: include/linux/host1x.h
4531F: include/uapi/drm/tegra_drm.h 4529F: include/uapi/drm/tegra_drm.h
4532F: Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.txt 4530F: Documentation/devicetree/bindings/display/tegra/nvidia,tegra20-host1x.txt
4533 4531
4534DRM DRIVER FOR MATROX G200/G400 GRAPHICS CARDS
4535S: Orphan / Obsolete
4536F: drivers/gpu/drm/mga/
4537F: include/uapi/drm/mga_drm.h
4538
4539DRM DRIVER FOR MGA G200 SERVER GRAPHICS CHIPS
4540M: Dave Airlie <airlied@redhat.com>
4541S: Odd Fixes
4542F: drivers/gpu/drm/mgag200/
4543
4544DRM DRIVER FOR RAGE 128 VIDEO CARDS
4545S: Orphan / Obsolete
4546F: drivers/gpu/drm/r128/
4547F: include/uapi/drm/r128_drm.h
4548
4549DRM DRIVERS FOR RENESAS 4532DRM DRIVERS FOR RENESAS
4550M: Laurent Pinchart <laurent.pinchart@ideasonboard.com> 4533M: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
4551L: dri-devel@lists.freedesktop.org 4534L: dri-devel@lists.freedesktop.org
@@ -4558,15 +4541,6 @@ F: include/linux/platform_data/shmob_drm.h
4558F: Documentation/devicetree/bindings/display/bridge/renesas,dw-hdmi.txt 4541F: Documentation/devicetree/bindings/display/bridge/renesas,dw-hdmi.txt
4559F: Documentation/devicetree/bindings/display/renesas,du.txt 4542F: Documentation/devicetree/bindings/display/renesas,du.txt
4560 4543
4561DRM DRIVER FOR QXL VIRTUAL GPU
4562M: Dave Airlie <airlied@redhat.com>
4563M: Gerd Hoffmann <kraxel@redhat.com>
4564L: virtualization@lists.linux-foundation.org
4565T: git git://anongit.freedesktop.org/drm/drm-misc
4566S: Maintained
4567F: drivers/gpu/drm/qxl/
4568F: include/uapi/drm/qxl_drm.h
4569
4570DRM DRIVERS FOR ROCKCHIP 4544DRM DRIVERS FOR ROCKCHIP
4571M: Mark Yao <mark.yao@rock-chips.com> 4545M: Mark Yao <mark.yao@rock-chips.com>
4572L: dri-devel@lists.freedesktop.org 4546L: dri-devel@lists.freedesktop.org
@@ -4575,16 +4549,6 @@ F: drivers/gpu/drm/rockchip/
4575F: Documentation/devicetree/bindings/display/rockchip/ 4549F: Documentation/devicetree/bindings/display/rockchip/
4576T: git git://anongit.freedesktop.org/drm/drm-misc 4550T: git git://anongit.freedesktop.org/drm/drm-misc
4577 4551
4578DRM DRIVER FOR SAVAGE VIDEO CARDS
4579S: Orphan / Obsolete
4580F: drivers/gpu/drm/savage/
4581F: include/uapi/drm/savage_drm.h
4582
4583DRM DRIVER FOR SIS VIDEO CARDS
4584S: Orphan / Obsolete
4585F: drivers/gpu/drm/sis/
4586F: include/uapi/drm/sis_drm.h
4587
4588DRM DRIVERS FOR STI 4552DRM DRIVERS FOR STI
4589M: Benjamin Gaignard <benjamin.gaignard@linaro.org> 4553M: Benjamin Gaignard <benjamin.gaignard@linaro.org>
4590M: Vincent Abriou <vincent.abriou@st.com> 4554M: Vincent Abriou <vincent.abriou@st.com>
@@ -4605,36 +4569,20 @@ S: Maintained
4605F: drivers/gpu/drm/stm 4569F: drivers/gpu/drm/stm
4606F: Documentation/devicetree/bindings/display/st,stm32-ltdc.txt 4570F: Documentation/devicetree/bindings/display/st,stm32-ltdc.txt
4607 4571
4608DRM DRIVER FOR TDFX VIDEO CARDS 4572DRM DRIVERS FOR TI LCDC
4609S: Orphan / Obsolete 4573M: Jyri Sarha <jsarha@ti.com>
4610F: drivers/gpu/drm/tdfx/ 4574R: Tomi Valkeinen <tomi.valkeinen@ti.com>
4611
4612DRM DRIVER FOR USB DISPLAYLINK VIDEO ADAPTERS
4613M: Dave Airlie <airlied@redhat.com>
4614S: Odd Fixes
4615F: drivers/gpu/drm/udl/
4616
4617DRM DRIVERS FOR VIVANTE GPU IP
4618M: Lucas Stach <l.stach@pengutronix.de>
4619R: Russell King <linux+etnaviv@armlinux.org.uk>
4620R: Christian Gmeiner <christian.gmeiner@gmail.com>
4621L: etnaviv@lists.freedesktop.org
4622L: dri-devel@lists.freedesktop.org 4575L: dri-devel@lists.freedesktop.org
4623S: Maintained 4576S: Maintained
4624F: drivers/gpu/drm/etnaviv/ 4577F: drivers/gpu/drm/tilcdc/
4625F: include/uapi/drm/etnaviv_drm.h 4578F: Documentation/devicetree/bindings/display/tilcdc/
4626F: Documentation/devicetree/bindings/display/etnaviv/
4627 4579
4628DRM DRIVER FOR VMWARE VIRTUAL GPU 4580DRM DRIVERS FOR TI OMAP
4629M: "VMware Graphics" <linux-graphics-maintainer@vmware.com> 4581M: Tomi Valkeinen <tomi.valkeinen@ti.com>
4630M: Sinclair Yeh <syeh@vmware.com>
4631M: Thomas Hellstrom <thellstrom@vmware.com>
4632L: dri-devel@lists.freedesktop.org 4582L: dri-devel@lists.freedesktop.org
4633T: git git://people.freedesktop.org/~syeh/repos_linux 4583S: Maintained
4634T: git git://people.freedesktop.org/~thomash/linux 4584F: drivers/gpu/drm/omapdrm/
4635S: Supported 4585F: Documentation/devicetree/bindings/display/ti/
4636F: drivers/gpu/drm/vmwgfx/
4637F: include/uapi/drm/vmwgfx_drm.h
4638 4586
4639DRM DRIVERS FOR VC4 4587DRM DRIVERS FOR VC4
4640M: Eric Anholt <eric@anholt.net> 4588M: Eric Anholt <eric@anholt.net>
@@ -4645,20 +4593,16 @@ F: include/uapi/drm/vc4_drm.h
4645F: Documentation/devicetree/bindings/display/brcm,bcm-vc4.txt 4593F: Documentation/devicetree/bindings/display/brcm,bcm-vc4.txt
4646T: git git://anongit.freedesktop.org/drm/drm-misc 4594T: git git://anongit.freedesktop.org/drm/drm-misc
4647 4595
4648DRM DRIVERS FOR TI OMAP 4596DRM DRIVERS FOR VIVANTE GPU IP
4649M: Tomi Valkeinen <tomi.valkeinen@ti.com> 4597M: Lucas Stach <l.stach@pengutronix.de>
4650L: dri-devel@lists.freedesktop.org 4598R: Russell King <linux+etnaviv@armlinux.org.uk>
4651S: Maintained 4599R: Christian Gmeiner <christian.gmeiner@gmail.com>
4652F: drivers/gpu/drm/omapdrm/ 4600L: etnaviv@lists.freedesktop.org
4653F: Documentation/devicetree/bindings/display/ti/
4654
4655DRM DRIVERS FOR TI LCDC
4656M: Jyri Sarha <jsarha@ti.com>
4657R: Tomi Valkeinen <tomi.valkeinen@ti.com>
4658L: dri-devel@lists.freedesktop.org 4601L: dri-devel@lists.freedesktop.org
4659S: Maintained 4602S: Maintained
4660F: drivers/gpu/drm/tilcdc/ 4603F: drivers/gpu/drm/etnaviv/
4661F: Documentation/devicetree/bindings/display/tilcdc/ 4604F: include/uapi/drm/etnaviv_drm.h
4605F: Documentation/devicetree/bindings/display/etnaviv/
4662 4606
4663DRM DRIVERS FOR ZTE ZX 4607DRM DRIVERS FOR ZTE ZX
4664M: Shawn Guo <shawnguo@kernel.org> 4608M: Shawn Guo <shawnguo@kernel.org>
@@ -4668,6 +4612,16 @@ F: drivers/gpu/drm/zte/
4668F: Documentation/devicetree/bindings/display/zte,vou.txt 4612F: Documentation/devicetree/bindings/display/zte,vou.txt
4669T: git git://anongit.freedesktop.org/drm/drm-misc 4613T: git git://anongit.freedesktop.org/drm/drm-misc
4670 4614
4615DRM PANEL DRIVERS
4616M: Thierry Reding <thierry.reding@gmail.com>
4617L: dri-devel@lists.freedesktop.org
4618T: git git://anongit.freedesktop.org/tegra/linux.git
4619S: Maintained
4620F: drivers/gpu/drm/drm_panel.c
4621F: drivers/gpu/drm/panel/
4622F: include/drm/drm_panel.h
4623F: Documentation/devicetree/bindings/display/panel/
4624
4671DSBR100 USB FM RADIO DRIVER 4625DSBR100 USB FM RADIO DRIVER
4672M: Alexey Klimov <klimov.linux@gmail.com> 4626M: Alexey Klimov <klimov.linux@gmail.com>
4673L: linux-media@vger.kernel.org 4627L: linux-media@vger.kernel.org
@@ -4799,13 +4753,6 @@ S: Maintained
4799F: drivers/media/usb/dvb-usb-v2/dvb_usb* 4753F: drivers/media/usb/dvb-usb-v2/dvb_usb*
4800F: drivers/media/usb/dvb-usb-v2/usb_urb.c 4754F: drivers/media/usb/dvb-usb-v2/usb_urb.c
4801 4755
4802DONGWOON DW9714 LENS VOICE COIL DRIVER
4803M: Sakari Ailus <sakari.ailus@linux.intel.com>
4804L: linux-media@vger.kernel.org
4805T: git git://linuxtv.org/media_tree.git
4806S: Maintained
4807F: drivers/media/i2c/dw9714.c
4808
4809DYNAMIC DEBUG 4756DYNAMIC DEBUG
4810M: Jason Baron <jbaron@akamai.com> 4757M: Jason Baron <jbaron@akamai.com>
4811S: Maintained 4758S: Maintained
@@ -4861,19 +4808,6 @@ S: Supported
4861F: Documentation/filesystems/ecryptfs.txt 4808F: Documentation/filesystems/ecryptfs.txt
4862F: fs/ecryptfs/ 4809F: fs/ecryptfs/
4863 4810
4864EDAC-CORE
4865M: Borislav Petkov <bp@alien8.de>
4866M: Mauro Carvalho Chehab <mchehab@s-opensource.com>
4867M: Mauro Carvalho Chehab <mchehab@kernel.org>
4868L: linux-edac@vger.kernel.org
4869T: git git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git for-next
4870T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac.git linux_next
4871S: Supported
4872F: Documentation/admin-guide/ras.rst
4873F: Documentation/driver-api/edac.rst
4874F: drivers/edac/
4875F: include/linux/edac.h
4876
4877EDAC-AMD64 4811EDAC-AMD64
4878M: Borislav Petkov <bp@alien8.de> 4812M: Borislav Petkov <bp@alien8.de>
4879L: linux-edac@vger.kernel.org 4813L: linux-edac@vger.kernel.org
@@ -4895,6 +4829,19 @@ S: Supported
4895F: drivers/edac/octeon_edac* 4829F: drivers/edac/octeon_edac*
4896F: drivers/edac/thunderx_edac* 4830F: drivers/edac/thunderx_edac*
4897 4831
4832EDAC-CORE
4833M: Borislav Petkov <bp@alien8.de>
4834M: Mauro Carvalho Chehab <mchehab@s-opensource.com>
4835M: Mauro Carvalho Chehab <mchehab@kernel.org>
4836L: linux-edac@vger.kernel.org
4837T: git git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git for-next
4838T: git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac.git linux_next
4839S: Supported
4840F: Documentation/admin-guide/ras.rst
4841F: Documentation/driver-api/edac.rst
4842F: drivers/edac/
4843F: include/linux/edac.h
4844
4898EDAC-E752X 4845EDAC-E752X
4899M: Mark Gross <mark.gross@intel.com> 4846M: Mark Gross <mark.gross@intel.com>
4900L: linux-edac@vger.kernel.org 4847L: linux-edac@vger.kernel.org
@@ -4919,12 +4866,6 @@ L: linux-edac@vger.kernel.org
4919S: Maintained 4866S: Maintained
4920F: drivers/edac/ghes_edac.c 4867F: drivers/edac/ghes_edac.c
4921 4868
4922EDAC-I82443BXGX
4923M: Tim Small <tim@buttersideup.com>
4924L: linux-edac@vger.kernel.org
4925S: Maintained
4926F: drivers/edac/i82443bxgx_edac.c
4927
4928EDAC-I3000 4869EDAC-I3000
4929L: linux-edac@vger.kernel.org 4870L: linux-edac@vger.kernel.org
4930S: Orphan 4871S: Orphan
@@ -4956,6 +4897,12 @@ L: linux-edac@vger.kernel.org
4956S: Maintained 4897S: Maintained
4957F: drivers/edac/i7core_edac.c 4898F: drivers/edac/i7core_edac.c
4958 4899
4900EDAC-I82443BXGX
4901M: Tim Small <tim@buttersideup.com>
4902L: linux-edac@vger.kernel.org
4903S: Maintained
4904F: drivers/edac/i82443bxgx_edac.c
4905
4959EDAC-I82975X 4906EDAC-I82975X
4960M: Ranganathan Desikan <ravi@jetztechnologies.com> 4907M: Ranganathan Desikan <ravi@jetztechnologies.com>
4961M: "Arvind R." <arvino55@gmail.com> 4908M: "Arvind R." <arvino55@gmail.com>
@@ -4975,18 +4922,18 @@ L: linux-edac@vger.kernel.org
4975S: Maintained 4922S: Maintained
4976F: drivers/edac/mpc85xx_edac.[ch] 4923F: drivers/edac/mpc85xx_edac.[ch]
4977 4924
4978EDAC-PND2
4979M: Tony Luck <tony.luck@intel.com>
4980L: linux-edac@vger.kernel.org
4981S: Maintained
4982F: drivers/edac/pnd2_edac.[ch]
4983
4984EDAC-PASEMI 4925EDAC-PASEMI
4985M: Egor Martovetsky <egor@pasemi.com> 4926M: Egor Martovetsky <egor@pasemi.com>
4986L: linux-edac@vger.kernel.org 4927L: linux-edac@vger.kernel.org
4987S: Maintained 4928S: Maintained
4988F: drivers/edac/pasemi_edac.c 4929F: drivers/edac/pasemi_edac.c
4989 4930
4931EDAC-PND2
4932M: Tony Luck <tony.luck@intel.com>
4933L: linux-edac@vger.kernel.org
4934S: Maintained
4935F: drivers/edac/pnd2_edac.[ch]
4936
4990EDAC-R82600 4937EDAC-R82600
4991M: Tim Small <tim@buttersideup.com> 4938M: Tim Small <tim@buttersideup.com>
4992L: linux-edac@vger.kernel.org 4939L: linux-edac@vger.kernel.org
@@ -5006,13 +4953,6 @@ L: linux-edac@vger.kernel.org
5006S: Maintained 4953S: Maintained
5007F: drivers/edac/skx_edac.c 4954F: drivers/edac/skx_edac.c
5008 4955
5009EDAC-XGENE
5010APPLIED MICRO (APM) X-GENE SOC EDAC
5011M: Loc Ho <lho@apm.com>
5012S: Supported
5013F: drivers/edac/xgene_edac.c
5014F: Documentation/devicetree/bindings/edac/apm-xgene-edac.txt
5015
5016EDIROL UA-101/UA-1000 DRIVER 4956EDIROL UA-101/UA-1000 DRIVER
5017M: Clemens Ladisch <clemens@ladisch.de> 4957M: Clemens Ladisch <clemens@ladisch.de>
5018L: alsa-devel@alsa-project.org (moderated for non-subscribers) 4958L: alsa-devel@alsa-project.org (moderated for non-subscribers)
@@ -5020,21 +4960,12 @@ T: git git://git.alsa-project.org/alsa-kernel.git
5020S: Maintained 4960S: Maintained
5021F: sound/usb/misc/ua101.c 4961F: sound/usb/misc/ua101.c
5022 4962
5023EXTENSIBLE FIRMWARE INTERFACE (EFI) 4963EFI TEST DRIVER
5024M: Matt Fleming <matt@codeblueprint.co.uk>
5025M: Ard Biesheuvel <ard.biesheuvel@linaro.org>
5026L: linux-efi@vger.kernel.org 4964L: linux-efi@vger.kernel.org
5027T: git git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git 4965M: Ivan Hu <ivan.hu@canonical.com>
4966M: Matt Fleming <matt@codeblueprint.co.uk>
5028S: Maintained 4967S: Maintained
5029F: Documentation/efi-stub.txt 4968F: drivers/firmware/efi/test/
5030F: arch/*/kernel/efi.c
5031F: arch/x86/boot/compressed/eboot.[ch]
5032F: arch/*/include/asm/efi.h
5033F: arch/x86/platform/efi/
5034F: drivers/firmware/efi/
5035F: include/linux/efi*.h
5036F: arch/arm/boot/compressed/efi-header.S
5037F: arch/arm64/kernel/efi-entry.S
5038 4969
5039EFI VARIABLE FILESYSTEM 4970EFI VARIABLE FILESYSTEM
5040M: Matthew Garrett <matthew.garrett@nebula.com> 4971M: Matthew Garrett <matthew.garrett@nebula.com>
@@ -5051,13 +4982,6 @@ M: Peter Jones <pjones@redhat.com>
5051S: Maintained 4982S: Maintained
5052F: drivers/video/fbdev/efifb.c 4983F: drivers/video/fbdev/efifb.c
5053 4984
5054EFI TEST DRIVER
5055L: linux-efi@vger.kernel.org
5056M: Ivan Hu <ivan.hu@canonical.com>
5057M: Matt Fleming <matt@codeblueprint.co.uk>
5058S: Maintained
5059F: drivers/firmware/efi/test/
5060
5061EFS FILESYSTEM 4985EFS FILESYSTEM
5062W: http://aeschi.ch.eu.org/efs/ 4986W: http://aeschi.ch.eu.org/efs/
5063S: Orphan 4987S: Orphan
@@ -5086,6 +5010,34 @@ M: David Woodhouse <dwmw2@infradead.org>
5086L: linux-embedded@vger.kernel.org 5010L: linux-embedded@vger.kernel.org
5087S: Maintained 5011S: Maintained
5088 5012
5013Emulex 10Gbps iSCSI - OneConnect DRIVER
5014M: Subbu Seetharaman <subbu.seetharaman@broadcom.com>
5015M: Ketan Mukadam <ketan.mukadam@broadcom.com>
5016M: Jitendra Bhivare <jitendra.bhivare@broadcom.com>
5017L: linux-scsi@vger.kernel.org
5018W: http://www.broadcom.com
5019S: Supported
5020F: drivers/scsi/be2iscsi/
5021
5022Emulex 10Gbps NIC BE2, BE3-R, Lancer, Skyhawk-R DRIVER (be2net)
5023M: Sathya Perla <sathya.perla@broadcom.com>
5024M: Ajit Khaparde <ajit.khaparde@broadcom.com>
5025M: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
5026M: Somnath Kotur <somnath.kotur@broadcom.com>
5027L: netdev@vger.kernel.org
5028W: http://www.emulex.com
5029S: Supported
5030F: drivers/net/ethernet/emulex/benet/
5031
5032EMULEX ONECONNECT ROCE DRIVER
5033M: Selvin Xavier <selvin.xavier@broadcom.com>
5034M: Devesh Sharma <devesh.sharma@broadcom.com>
5035L: linux-rdma@vger.kernel.org
5036W: http://www.broadcom.com
5037S: Odd Fixes
5038F: drivers/infiniband/hw/ocrdma/
5039F: include/uapi/rdma/ocrdma-abi.h
5040
5089EMULEX/BROADCOM LPFC FC/FCOE SCSI DRIVER 5041EMULEX/BROADCOM LPFC FC/FCOE SCSI DRIVER
5090M: James Smart <james.smart@broadcom.com> 5042M: James Smart <james.smart@broadcom.com>
5091M: Dick Kennedy <dick.kennedy@broadcom.com> 5043M: Dick Kennedy <dick.kennedy@broadcom.com>
@@ -5138,12 +5090,20 @@ M: Andrew Lunn <andrew@lunn.ch>
5138M: Florian Fainelli <f.fainelli@gmail.com> 5090M: Florian Fainelli <f.fainelli@gmail.com>
5139L: netdev@vger.kernel.org 5091L: netdev@vger.kernel.org
5140S: Maintained 5092S: Maintained
5141F: include/linux/phy.h 5093F: Documentation/ABI/testing/sysfs-bus-mdio
5142F: include/linux/phy_fixed.h 5094F: Documentation/devicetree/bindings/net/mdio*
5143F: drivers/net/phy/
5144F: Documentation/networking/phy.txt 5095F: Documentation/networking/phy.txt
5096F: drivers/net/phy/
5145F: drivers/of/of_mdio.c 5097F: drivers/of/of_mdio.c
5146F: drivers/of/of_net.c 5098F: drivers/of/of_net.c
5099F: include/linux/*mdio*.h
5100F: include/linux/of_net.h
5101F: include/linux/phy.h
5102F: include/linux/phy_fixed.h
5103F: include/linux/platform_data/mdio-gpio.h
5104F: include/trace/events/mdio.h
5105F: include/uapi/linux/mdio.h
5106F: include/uapi/linux/mii.h
5147 5107
5148EXT2 FILE SYSTEM 5108EXT2 FILE SYSTEM
5149M: Jan Kara <jack@suse.com> 5109M: Jan Kara <jack@suse.com>
@@ -5171,6 +5131,22 @@ L: linux-security-module@vger.kernel.org
5171S: Supported 5131S: Supported
5172F: security/integrity/evm/ 5132F: security/integrity/evm/
5173 5133
5134EXTENSIBLE FIRMWARE INTERFACE (EFI)
5135M: Matt Fleming <matt@codeblueprint.co.uk>
5136M: Ard Biesheuvel <ard.biesheuvel@linaro.org>
5137L: linux-efi@vger.kernel.org
5138T: git git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git
5139S: Maintained
5140F: Documentation/efi-stub.txt
5141F: arch/*/kernel/efi.c
5142F: arch/x86/boot/compressed/eboot.[ch]
5143F: arch/*/include/asm/efi.h
5144F: arch/x86/platform/efi/
5145F: drivers/firmware/efi/
5146F: include/linux/efi*.h
5147F: arch/arm/boot/compressed/efi-header.S
5148F: arch/arm64/kernel/efi-entry.S
5149
5174EXTERNAL CONNECTOR SUBSYSTEM (EXTCON) 5150EXTERNAL CONNECTOR SUBSYSTEM (EXTCON)
5175M: MyungJoo Ham <myungjoo.ham@samsung.com> 5151M: MyungJoo Ham <myungjoo.ham@samsung.com>
5176M: Chanwoo Choi <cw00.choi@samsung.com> 5152M: Chanwoo Choi <cw00.choi@samsung.com>
@@ -5201,6 +5177,19 @@ S: Supported
5201F: arch/arc/plat-eznps 5177F: arch/arc/plat-eznps
5202F: arch/arc/boot/dts/eznps.dts 5178F: arch/arc/boot/dts/eznps.dts
5203 5179
5180F2FS FILE SYSTEM
5181M: Jaegeuk Kim <jaegeuk@kernel.org>
5182M: Chao Yu <yuchao0@huawei.com>
5183L: linux-f2fs-devel@lists.sourceforge.net
5184W: https://f2fs.wiki.kernel.org/
5185T: git git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git
5186S: Maintained
5187F: Documentation/filesystems/f2fs.txt
5188F: Documentation/ABI/testing/sysfs-fs-f2fs
5189F: fs/f2fs/
5190F: include/linux/f2fs_fs.h
5191F: include/trace/events/f2fs.h
5192
5204F71805F HARDWARE MONITORING DRIVER 5193F71805F HARDWARE MONITORING DRIVER
5205M: Jean Delvare <jdelvare@suse.com> 5194M: Jean Delvare <jdelvare@suse.com>
5206L: linux-hwmon@vger.kernel.org 5195L: linux-hwmon@vger.kernel.org
@@ -5208,23 +5197,6 @@ S: Maintained
5208F: Documentation/hwmon/f71805f 5197F: Documentation/hwmon/f71805f
5209F: drivers/hwmon/f71805f.c 5198F: drivers/hwmon/f71805f.c
5210 5199
5211FC0011 TUNER DRIVER
5212M: Michael Buesch <m@bues.ch>
5213L: linux-media@vger.kernel.org
5214S: Maintained
5215F: drivers/media/tuners/fc0011.h
5216F: drivers/media/tuners/fc0011.c
5217
5218FC2580 MEDIA DRIVER
5219M: Antti Palosaari <crope@iki.fi>
5220L: linux-media@vger.kernel.org
5221W: https://linuxtv.org
5222W: http://palosaari.fi/linux/
5223Q: http://patchwork.linuxtv.org/project/linux-media/list/
5224T: git git://linuxtv.org/anttip/media_tree.git
5225S: Maintained
5226F: drivers/media/tuners/fc2580*
5227
5228FANOTIFY 5200FANOTIFY
5229M: Eric Paris <eparis@redhat.com> 5201M: Eric Paris <eparis@redhat.com>
5230S: Maintained 5202S: Maintained
@@ -5249,6 +5221,23 @@ M: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
5249S: Maintained 5221S: Maintained
5250F: drivers/staging/fbtft/ 5222F: drivers/staging/fbtft/
5251 5223
5224FC0011 TUNER DRIVER
5225M: Michael Buesch <m@bues.ch>
5226L: linux-media@vger.kernel.org
5227S: Maintained
5228F: drivers/media/tuners/fc0011.h
5229F: drivers/media/tuners/fc0011.c
5230
5231FC2580 MEDIA DRIVER
5232M: Antti Palosaari <crope@iki.fi>
5233L: linux-media@vger.kernel.org
5234W: https://linuxtv.org
5235W: http://palosaari.fi/linux/
5236Q: http://patchwork.linuxtv.org/project/linux-media/list/
5237T: git git://linuxtv.org/anttip/media_tree.git
5238S: Maintained
5239F: drivers/media/tuners/fc2580*
5240
5252FCOE SUBSYSTEM (libfc, libfcoe, fcoe) 5241FCOE SUBSYSTEM (libfc, libfcoe, fcoe)
5253M: Johannes Thumshirn <jth@kernel.org> 5242M: Johannes Thumshirn <jth@kernel.org>
5254L: fcoe-devel@open-fcoe.org 5243L: fcoe-devel@open-fcoe.org
@@ -5408,6 +5397,14 @@ L: linuxppc-dev@lists.ozlabs.org
5408S: Maintained 5397S: Maintained
5409F: drivers/dma/fsldma.* 5398F: drivers/dma/fsldma.*
5410 5399
5400FREESCALE eTSEC ETHERNET DRIVER (GIANFAR)
5401M: Claudiu Manoil <claudiu.manoil@freescale.com>
5402L: netdev@vger.kernel.org
5403S: Maintained
5404F: drivers/net/ethernet/freescale/gianfar*
5405X: drivers/net/ethernet/freescale/gianfar_ptp.c
5406F: Documentation/devicetree/bindings/net/fsl-tsec-phy.txt
5407
5411FREESCALE GPMI NAND DRIVER 5408FREESCALE GPMI NAND DRIVER
5412M: Han Xu <han.xu@nxp.com> 5409M: Han Xu <han.xu@nxp.com>
5413L: linux-mtd@lists.infradead.org 5410L: linux-mtd@lists.infradead.org
@@ -5421,6 +5418,15 @@ L: linux-i2c@vger.kernel.org
5421S: Maintained 5418S: Maintained
5422F: drivers/i2c/busses/i2c-cpm.c 5419F: drivers/i2c/busses/i2c-cpm.c
5423 5420
5421FREESCALE IMX / MXC FEC DRIVER
5422M: Fugang Duan <fugang.duan@nxp.com>
5423L: netdev@vger.kernel.org
5424S: Maintained
5425F: drivers/net/ethernet/freescale/fec_main.c
5426F: drivers/net/ethernet/freescale/fec_ptp.c
5427F: drivers/net/ethernet/freescale/fec.h
5428F: Documentation/devicetree/bindings/net/fsl-fec.txt
5429
5424FREESCALE IMX / MXC FRAMEBUFFER DRIVER 5430FREESCALE IMX / MXC FRAMEBUFFER DRIVER
5425M: Sascha Hauer <kernel@pengutronix.de> 5431M: Sascha Hauer <kernel@pengutronix.de>
5426L: linux-fbdev@vger.kernel.org 5432L: linux-fbdev@vger.kernel.org
@@ -5429,29 +5435,11 @@ S: Maintained
5429F: include/linux/platform_data/video-imxfb.h 5435F: include/linux/platform_data/video-imxfb.h
5430F: drivers/video/fbdev/imxfb.c 5436F: drivers/video/fbdev/imxfb.c
5431 5437
5432FREESCALE QUAD SPI DRIVER 5438FREESCALE QORIQ DPAA ETHERNET DRIVER
5433M: Han Xu <han.xu@nxp.com> 5439M: Madalin Bucur <madalin.bucur@nxp.com>
5434L: linux-mtd@lists.infradead.org
5435S: Maintained
5436F: drivers/mtd/spi-nor/fsl-quadspi.c
5437
5438FREESCALE SOC FS_ENET DRIVER
5439M: Pantelis Antoniou <pantelis.antoniou@gmail.com>
5440M: Vitaly Bordug <vbordug@ru.mvista.com>
5441L: linuxppc-dev@lists.ozlabs.org
5442L: netdev@vger.kernel.org
5443S: Maintained
5444F: drivers/net/ethernet/freescale/fs_enet/
5445F: include/linux/fs_enet_pd.h
5446
5447FREESCALE IMX / MXC FEC DRIVER
5448M: Fugang Duan <fugang.duan@nxp.com>
5449L: netdev@vger.kernel.org 5440L: netdev@vger.kernel.org
5450S: Maintained 5441S: Maintained
5451F: drivers/net/ethernet/freescale/fec_main.c 5442F: drivers/net/ethernet/freescale/dpaa
5452F: drivers/net/ethernet/freescale/fec_ptp.c
5453F: drivers/net/ethernet/freescale/fec.h
5454F: Documentation/devicetree/bindings/net/fsl-fec.txt
5455 5443
5456FREESCALE QORIQ DPAA FMAN DRIVER 5444FREESCALE QORIQ DPAA FMAN DRIVER
5457M: Madalin Bucur <madalin.bucur@nxp.com> 5445M: Madalin Bucur <madalin.bucur@nxp.com>
@@ -5460,20 +5448,11 @@ S: Maintained
5460F: drivers/net/ethernet/freescale/fman 5448F: drivers/net/ethernet/freescale/fman
5461F: Documentation/devicetree/bindings/powerpc/fsl/fman.txt 5449F: Documentation/devicetree/bindings/powerpc/fsl/fman.txt
5462 5450
5463FREESCALE QORIQ DPAA ETHERNET DRIVER 5451FREESCALE QUAD SPI DRIVER
5464M: Madalin Bucur <madalin.bucur@nxp.com> 5452M: Han Xu <han.xu@nxp.com>
5465L: netdev@vger.kernel.org 5453L: linux-mtd@lists.infradead.org
5466S: Maintained
5467F: drivers/net/ethernet/freescale/dpaa
5468
5469FREESCALE SOC DRIVERS
5470M: Li Yang <leoyang.li@nxp.com>
5471L: linuxppc-dev@lists.ozlabs.org
5472L: linux-arm-kernel@lists.infradead.org
5473S: Maintained 5454S: Maintained
5474F: Documentation/devicetree/bindings/soc/fsl/ 5455F: drivers/mtd/spi-nor/fsl-quadspi.c
5475F: drivers/soc/fsl/
5476F: include/linux/fsl/
5477 5456
5478FREESCALE QUICC ENGINE LIBRARY 5457FREESCALE QUICC ENGINE LIBRARY
5479M: Qiang Zhao <qiang.zhao@nxp.com> 5458M: Qiang Zhao <qiang.zhao@nxp.com>
@@ -5483,13 +5462,6 @@ F: drivers/soc/fsl/qe/
5483F: include/soc/fsl/*qe*.h 5462F: include/soc/fsl/*qe*.h
5484F: include/soc/fsl/*ucc*.h 5463F: include/soc/fsl/*ucc*.h
5485 5464
5486FREESCALE USB PERIPHERAL DRIVERS
5487M: Li Yang <leoyang.li@nxp.com>
5488L: linux-usb@vger.kernel.org
5489L: linuxppc-dev@lists.ozlabs.org
5490S: Maintained
5491F: drivers/usb/gadget/udc/fsl*
5492
5493FREESCALE QUICC ENGINE UCC ETHERNET DRIVER 5465FREESCALE QUICC ENGINE UCC ETHERNET DRIVER
5494M: Li Yang <leoyang.li@nxp.com> 5466M: Li Yang <leoyang.li@nxp.com>
5495L: netdev@vger.kernel.org 5467L: netdev@vger.kernel.org
@@ -5497,14 +5469,6 @@ L: linuxppc-dev@lists.ozlabs.org
5497S: Maintained 5469S: Maintained
5498F: drivers/net/ethernet/freescale/ucc_geth* 5470F: drivers/net/ethernet/freescale/ucc_geth*
5499 5471
5500FREESCALE eTSEC ETHERNET DRIVER (GIANFAR)
5501M: Claudiu Manoil <claudiu.manoil@freescale.com>
5502L: netdev@vger.kernel.org
5503S: Maintained
5504F: drivers/net/ethernet/freescale/gianfar*
5505X: drivers/net/ethernet/freescale/gianfar_ptp.c
5506F: Documentation/devicetree/bindings/net/fsl-tsec-phy.txt
5507
5508FREESCALE QUICC ENGINE UCC HDLC DRIVER 5472FREESCALE QUICC ENGINE UCC HDLC DRIVER
5509M: Zhao Qiang <qiang.zhao@nxp.com> 5473M: Zhao Qiang <qiang.zhao@nxp.com>
5510L: netdev@vger.kernel.org 5474L: netdev@vger.kernel.org
@@ -5518,6 +5482,24 @@ L: linuxppc-dev@lists.ozlabs.org
5518S: Maintained 5482S: Maintained
5519F: drivers/tty/serial/ucc_uart.c 5483F: drivers/tty/serial/ucc_uart.c
5520 5484
5485FREESCALE SOC DRIVERS
5486M: Li Yang <leoyang.li@nxp.com>
5487L: linuxppc-dev@lists.ozlabs.org
5488L: linux-arm-kernel@lists.infradead.org
5489S: Maintained
5490F: Documentation/devicetree/bindings/soc/fsl/
5491F: drivers/soc/fsl/
5492F: include/linux/fsl/
5493
5494FREESCALE SOC FS_ENET DRIVER
5495M: Pantelis Antoniou <pantelis.antoniou@gmail.com>
5496M: Vitaly Bordug <vbordug@ru.mvista.com>
5497L: linuxppc-dev@lists.ozlabs.org
5498L: netdev@vger.kernel.org
5499S: Maintained
5500F: drivers/net/ethernet/freescale/fs_enet/
5501F: include/linux/fs_enet_pd.h
5502
5521FREESCALE SOC SOUND DRIVERS 5503FREESCALE SOC SOUND DRIVERS
5522M: Timur Tabi <timur@tabi.org> 5504M: Timur Tabi <timur@tabi.org>
5523M: Nicolin Chen <nicoleotsuka@gmail.com> 5505M: Nicolin Chen <nicoleotsuka@gmail.com>
@@ -5530,6 +5512,13 @@ F: sound/soc/fsl/fsl*
5530F: sound/soc/fsl/imx* 5512F: sound/soc/fsl/imx*
5531F: sound/soc/fsl/mpc8610_hpcd.c 5513F: sound/soc/fsl/mpc8610_hpcd.c
5532 5514
5515FREESCALE USB PERIPHERAL DRIVERS
5516M: Li Yang <leoyang.li@nxp.com>
5517L: linux-usb@vger.kernel.org
5518L: linuxppc-dev@lists.ozlabs.org
5519S: Maintained
5520F: drivers/usb/gadget/udc/fsl*
5521
5533FREEVXFS FILESYSTEM 5522FREEVXFS FILESYSTEM
5534M: Christoph Hellwig <hch@infradead.org> 5523M: Christoph Hellwig <hch@infradead.org>
5535W: ftp://ftp.openlinux.org/pub/people/hch/vxfs 5524W: ftp://ftp.openlinux.org/pub/people/hch/vxfs
@@ -5570,19 +5559,6 @@ S: Supported
5570F: fs/crypto/ 5559F: fs/crypto/
5571F: include/linux/fscrypt*.h 5560F: include/linux/fscrypt*.h
5572 5561
5573F2FS FILE SYSTEM
5574M: Jaegeuk Kim <jaegeuk@kernel.org>
5575M: Chao Yu <yuchao0@huawei.com>
5576L: linux-f2fs-devel@lists.sourceforge.net
5577W: https://f2fs.wiki.kernel.org/
5578T: git git://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git
5579S: Maintained
5580F: Documentation/filesystems/f2fs.txt
5581F: Documentation/ABI/testing/sysfs-fs-f2fs
5582F: fs/f2fs/
5583F: include/linux/f2fs_fs.h
5584F: include/trace/events/f2fs.h
5585
5586FUJITSU FR-V (FRV) PORT 5562FUJITSU FR-V (FRV) PORT
5587S: Orphan 5563S: Orphan
5588F: arch/frv/ 5564F: arch/frv/
@@ -5656,6 +5632,12 @@ S: Maintained
5656F: kernel/gcov/ 5632F: kernel/gcov/
5657F: Documentation/dev-tools/gcov.rst 5633F: Documentation/dev-tools/gcov.rst
5658 5634
5635GDB KERNEL DEBUGGING HELPER SCRIPTS
5636M: Jan Kiszka <jan.kiszka@siemens.com>
5637M: Kieran Bingham <kieran@bingham.xyz>
5638S: Supported
5639F: scripts/gdb/
5640
5659GDT SCSI DISK ARRAY CONTROLLER DRIVER 5641GDT SCSI DISK ARRAY CONTROLLER DRIVER
5660M: Achim Leubner <achim_leubner@adaptec.com> 5642M: Achim Leubner <achim_leubner@adaptec.com>
5661L: linux-scsi@vger.kernel.org 5643L: linux-scsi@vger.kernel.org
@@ -5663,12 +5645,6 @@ W: http://www.icp-vortex.com/
5663S: Supported 5645S: Supported
5664F: drivers/scsi/gdt* 5646F: drivers/scsi/gdt*
5665 5647
5666GDB KERNEL DEBUGGING HELPER SCRIPTS
5667M: Jan Kiszka <jan.kiszka@siemens.com>
5668M: Kieran Bingham <kieran@bingham.xyz>
5669S: Supported
5670F: scripts/gdb/
5671
5672GEMTEK FM RADIO RECEIVER DRIVER 5648GEMTEK FM RADIO RECEIVER DRIVER
5673M: Hans Verkuil <hverkuil@xs4all.nl> 5649M: Hans Verkuil <hverkuil@xs4all.nl>
5674L: linux-media@vger.kernel.org 5650L: linux-media@vger.kernel.org
@@ -5735,17 +5711,17 @@ L: kvm@vger.kernel.org
5735S: Supported 5711S: Supported
5736F: drivers/uio/uio_pci_generic.c 5712F: drivers/uio/uio_pci_generic.c
5737 5713
5738GET_MAINTAINER SCRIPT
5739M: Joe Perches <joe@perches.com>
5740S: Maintained
5741F: scripts/get_maintainer.pl
5742
5743GENWQE (IBM Generic Workqueue Card) 5714GENWQE (IBM Generic Workqueue Card)
5744M: Frank Haverkamp <haver@linux.vnet.ibm.com> 5715M: Frank Haverkamp <haver@linux.vnet.ibm.com>
5745M: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com> 5716M: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com>
5746S: Supported 5717S: Supported
5747F: drivers/misc/genwqe/ 5718F: drivers/misc/genwqe/
5748 5719
5720GET_MAINTAINER SCRIPT
5721M: Joe Perches <joe@perches.com>
5722S: Maintained
5723F: scripts/get_maintainer.pl
5724
5749GFS2 FILE SYSTEM 5725GFS2 FILE SYSTEM
5750M: Steven Whitehouse <swhiteho@redhat.com> 5726M: Steven Whitehouse <swhiteho@redhat.com>
5751M: Bob Peterson <rpeterso@redhat.com> 5727M: Bob Peterson <rpeterso@redhat.com>
@@ -5778,6 +5754,15 @@ L: linux-input@vger.kernel.org
5778S: Maintained 5754S: Maintained
5779F: drivers/input/touchscreen/goodix.c 5755F: drivers/input/touchscreen/goodix.c
5780 5756
5757GPIO ACPI SUPPORT
5758M: Mika Westerberg <mika.westerberg@linux.intel.com>
5759M: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
5760L: linux-gpio@vger.kernel.org
5761L: linux-acpi@vger.kernel.org
5762S: Maintained
5763F: Documentation/acpi/gpio-properties.txt
5764F: drivers/gpio/gpiolib-acpi.c
5765
5781GPIO MOCKUP DRIVER 5766GPIO MOCKUP DRIVER
5782M: Bamvor Jian Zhang <bamvor.zhangjian@linaro.org> 5767M: Bamvor Jian Zhang <bamvor.zhangjian@linaro.org>
5783L: linux-gpio@vger.kernel.org 5768L: linux-gpio@vger.kernel.org
@@ -5801,15 +5786,6 @@ F: include/asm-generic/gpio.h
5801F: include/uapi/linux/gpio.h 5786F: include/uapi/linux/gpio.h
5802F: tools/gpio/ 5787F: tools/gpio/
5803 5788
5804GPIO ACPI SUPPORT
5805M: Mika Westerberg <mika.westerberg@linux.intel.com>
5806M: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
5807L: linux-gpio@vger.kernel.org
5808L: linux-acpi@vger.kernel.org
5809S: Maintained
5810F: Documentation/acpi/gpio-properties.txt
5811F: drivers/gpio/gpiolib-acpi.c
5812
5813GRE DEMULTIPLEXER DRIVER 5789GRE DEMULTIPLEXER DRIVER
5814M: Dmitry Kozlov <xeb@mail.ru> 5790M: Dmitry Kozlov <xeb@mail.ru>
5815L: netdev@vger.kernel.org 5791L: netdev@vger.kernel.org
@@ -5824,14 +5800,6 @@ L: netdev@vger.kernel.org
5824S: Maintained 5800S: Maintained
5825F: drivers/net/ethernet/aeroflex/ 5801F: drivers/net/ethernet/aeroflex/
5826 5802
5827GREYBUS SUBSYSTEM
5828M: Johan Hovold <johan@kernel.org>
5829M: Alex Elder <elder@kernel.org>
5830M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
5831S: Maintained
5832F: drivers/staging/greybus/
5833L: greybus-dev@lists.linaro.org (moderated for non-subscribers)
5834
5835GREYBUS AUDIO PROTOCOLS DRIVERS 5803GREYBUS AUDIO PROTOCOLS DRIVERS
5836M: Vaibhav Agarwal <vaibhav.sr@gmail.com> 5804M: Vaibhav Agarwal <vaibhav.sr@gmail.com>
5837M: Mark Greer <mgreer@animalcreek.com> 5805M: Mark Greer <mgreer@animalcreek.com>
@@ -5849,24 +5817,7 @@ F: drivers/staging/greybus/audio_manager_sysfs.c
5849F: drivers/staging/greybus/audio_module.c 5817F: drivers/staging/greybus/audio_module.c
5850F: drivers/staging/greybus/audio_topology.c 5818F: drivers/staging/greybus/audio_topology.c
5851 5819
5852GREYBUS PROTOCOLS DRIVERS 5820GREYBUS FW/HID/SPI PROTOCOLS DRIVERS
5853M: Rui Miguel Silva <rmfrfs@gmail.com>
5854S: Maintained
5855F: drivers/staging/greybus/sdio.c
5856F: drivers/staging/greybus/light.c
5857F: drivers/staging/greybus/gpio.c
5858F: drivers/staging/greybus/power_supply.c
5859F: drivers/staging/greybus/spi.c
5860F: drivers/staging/greybus/spilib.c
5861
5862GREYBUS PROTOCOLS DRIVERS
5863M: Bryan O'Donoghue <pure.logic@nexus-software.ie>
5864S: Maintained
5865F: drivers/staging/greybus/loopback.c
5866F: drivers/staging/greybus/timesync.c
5867F: drivers/staging/greybus/timesync_platform.c
5868
5869GREYBUS PROTOCOLS DRIVERS
5870M: Viresh Kumar <vireshk@kernel.org> 5821M: Viresh Kumar <vireshk@kernel.org>
5871S: Maintained 5822S: Maintained
5872F: drivers/staging/greybus/authentication.c 5823F: drivers/staging/greybus/authentication.c
@@ -5883,11 +5834,12 @@ F: drivers/staging/greybus/spi.c
5883F: drivers/staging/greybus/spilib.c 5834F: drivers/staging/greybus/spilib.c
5884F: drivers/staging/greybus/spilib.h 5835F: drivers/staging/greybus/spilib.h
5885 5836
5886GREYBUS PROTOCOLS DRIVERS 5837GREYBUS LOOPBACK/TIME PROTOCOLS DRIVERS
5887M: David Lin <dtwlin@gmail.com> 5838M: Bryan O'Donoghue <pure.logic@nexus-software.ie>
5888S: Maintained 5839S: Maintained
5889F: drivers/staging/greybus/uart.c 5840F: drivers/staging/greybus/loopback.c
5890F: drivers/staging/greybus/log.c 5841F: drivers/staging/greybus/timesync.c
5842F: drivers/staging/greybus/timesync_platform.c
5891 5843
5892GREYBUS PLATFORM DRIVERS 5844GREYBUS PLATFORM DRIVERS
5893M: Vaibhav Hiremath <hvaibhav.linux@gmail.com> 5845M: Vaibhav Hiremath <hvaibhav.linux@gmail.com>
@@ -5896,6 +5848,30 @@ F: drivers/staging/greybus/arche-platform.c
5896F: drivers/staging/greybus/arche-apb-ctrl.c 5848F: drivers/staging/greybus/arche-apb-ctrl.c
5897F: drivers/staging/greybus/arche_platform.h 5849F: drivers/staging/greybus/arche_platform.h
5898 5850
5851GREYBUS SDIO/GPIO/SPI PROTOCOLS DRIVERS
5852M: Rui Miguel Silva <rmfrfs@gmail.com>
5853S: Maintained
5854F: drivers/staging/greybus/sdio.c
5855F: drivers/staging/greybus/light.c
5856F: drivers/staging/greybus/gpio.c
5857F: drivers/staging/greybus/power_supply.c
5858F: drivers/staging/greybus/spi.c
5859F: drivers/staging/greybus/spilib.c
5860
5861GREYBUS SUBSYSTEM
5862M: Johan Hovold <johan@kernel.org>
5863M: Alex Elder <elder@kernel.org>
5864M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
5865S: Maintained
5866F: drivers/staging/greybus/
5867L: greybus-dev@lists.linaro.org (moderated for non-subscribers)
5868
5869GREYBUS UART PROTOCOLS DRIVERS
5870M: David Lin <dtwlin@gmail.com>
5871S: Maintained
5872F: drivers/staging/greybus/uart.c
5873F: drivers/staging/greybus/log.c
5874
5899GS1662 VIDEO SERIALIZER 5875GS1662 VIDEO SERIALIZER
5900M: Charles-Antoine Couret <charles-antoine.couret@nexvision.fr> 5876M: Charles-Antoine Couret <charles-antoine.couret@nexvision.fr>
5901L: linux-media@vger.kernel.org 5877L: linux-media@vger.kernel.org
@@ -5966,13 +5942,6 @@ L: linux-efi@vger.kernel.org
5966S: Maintained 5942S: Maintained
5967F: block/partitions/efi.* 5943F: block/partitions/efi.*
5968 5944
5969STK1160 USB VIDEO CAPTURE DRIVER
5970M: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
5971L: linux-media@vger.kernel.org
5972T: git git://linuxtv.org/media_tree.git
5973S: Maintained
5974F: drivers/media/usb/stk1160/
5975
5976H8/300 ARCHITECTURE 5945H8/300 ARCHITECTURE
5977M: Yoshinori Sato <ysato@users.sourceforge.jp> 5946M: Yoshinori Sato <ysato@users.sourceforge.jp>
5978L: uclinux-h8-devel@lists.sourceforge.jp (moderated for non-subscribers) 5947L: uclinux-h8-devel@lists.sourceforge.jp (moderated for non-subscribers)
@@ -5984,33 +5953,6 @@ F: drivers/clocksource/h8300_*.c
5984F: drivers/clk/h8300/ 5953F: drivers/clk/h8300/
5985F: drivers/irqchip/irq-renesas-h8*.c 5954F: drivers/irqchip/irq-renesas-h8*.c
5986 5955
5987HARD DRIVE ACTIVE PROTECTION SYSTEM (HDAPS) DRIVER
5988M: Frank Seidel <frank@f-seidel.de>
5989L: platform-driver-x86@vger.kernel.org
5990W: http://www.kernel.org/pub/linux/kernel/people/fseidel/hdaps/
5991S: Maintained
5992F: drivers/platform/x86/hdaps.c
5993
5994HDPVR USB VIDEO ENCODER DRIVER
5995M: Hans Verkuil <hverkuil@xs4all.nl>
5996L: linux-media@vger.kernel.org
5997T: git git://linuxtv.org/media_tree.git
5998W: https://linuxtv.org
5999S: Odd Fixes
6000F: drivers/media/usb/hdpvr/
6001
6002HWPOISON MEMORY FAILURE HANDLING
6003M: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
6004L: linux-mm@kvack.org
6005S: Maintained
6006F: mm/memory-failure.c
6007F: mm/hwpoison-inject.c
6008
6009HYPERVISOR VIRTUAL CONSOLE DRIVER
6010L: linuxppc-dev@lists.ozlabs.org
6011S: Odd Fixes
6012F: drivers/tty/hvc/
6013
6014HACKRF MEDIA DRIVER 5956HACKRF MEDIA DRIVER
6015M: Antti Palosaari <crope@iki.fi> 5957M: Antti Palosaari <crope@iki.fi>
6016L: linux-media@vger.kernel.org 5958L: linux-media@vger.kernel.org
@@ -6021,6 +5963,13 @@ T: git git://linuxtv.org/anttip/media_tree.git
6021S: Maintained 5963S: Maintained
6022F: drivers/media/usb/hackrf/ 5964F: drivers/media/usb/hackrf/
6023 5965
5966HARD DRIVE ACTIVE PROTECTION SYSTEM (HDAPS) DRIVER
5967M: Frank Seidel <frank@f-seidel.de>
5968L: platform-driver-x86@vger.kernel.org
5969W: http://www.kernel.org/pub/linux/kernel/people/fseidel/hdaps/
5970S: Maintained
5971F: drivers/platform/x86/hdaps.c
5972
6024HARDWARE MONITORING 5973HARDWARE MONITORING
6025M: Jean Delvare <jdelvare@suse.com> 5974M: Jean Delvare <jdelvare@suse.com>
6026M: Guenter Roeck <linux@roeck-us.net> 5975M: Guenter Roeck <linux@roeck-us.net>
@@ -6059,6 +6008,14 @@ L: linux-parisc@vger.kernel.org
6059S: Maintained 6008S: Maintained
6060F: sound/parisc/harmony.* 6009F: sound/parisc/harmony.*
6061 6010
6011HDPVR USB VIDEO ENCODER DRIVER
6012M: Hans Verkuil <hverkuil@xs4all.nl>
6013L: linux-media@vger.kernel.org
6014T: git git://linuxtv.org/media_tree.git
6015W: https://linuxtv.org
6016S: Odd Fixes
6017F: drivers/media/usb/hdpvr/
6018
6062HEWLETT PACKARD ENTERPRISE ILO NMI WATCHDOG DRIVER 6019HEWLETT PACKARD ENTERPRISE ILO NMI WATCHDOG DRIVER
6063M: Jimmy Vance <jimmy.vance@hpe.com> 6020M: Jimmy Vance <jimmy.vance@hpe.com>
6064S: Supported 6021S: Supported
@@ -6085,13 +6042,6 @@ F: drivers/block/cciss*
6085F: include/linux/cciss_ioctl.h 6042F: include/linux/cciss_ioctl.h
6086F: include/uapi/linux/cciss_ioctl.h 6043F: include/uapi/linux/cciss_ioctl.h
6087 6044
6088OPA-VNIC DRIVER
6089M: Dennis Dalessandro <dennis.dalessandro@intel.com>
6090M: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
6091L: linux-rdma@vger.kernel.org
6092S: Supported
6093F: drivers/infiniband/ulp/opa_vnic
6094
6095HFI1 DRIVER 6045HFI1 DRIVER
6096M: Mike Marciniszyn <mike.marciniszyn@intel.com> 6046M: Mike Marciniszyn <mike.marciniszyn@intel.com>
6097M: Dennis Dalessandro <dennis.dalessandro@intel.com> 6047M: Dennis Dalessandro <dennis.dalessandro@intel.com>
@@ -6269,6 +6219,12 @@ L: netdev@vger.kernel.org
6269S: Maintained 6219S: Maintained
6270F: net/hsr/ 6220F: net/hsr/
6271 6221
6222HT16K33 LED CONTROLLER DRIVER
6223M: Robin van der Gracht <robin@protonic.nl>
6224S: Maintained
6225F: drivers/auxdisplay/ht16k33.c
6226F: Documentation/devicetree/bindings/display/ht16k33.txt
6227
6272HTCPEN TOUCHSCREEN DRIVER 6228HTCPEN TOUCHSCREEN DRIVER
6273M: Pau Oliva Fora <pof@eslack.org> 6229M: Pau Oliva Fora <pof@eslack.org>
6274L: linux-input@vger.kernel.org 6230L: linux-input@vger.kernel.org
@@ -6288,6 +6244,13 @@ W: https://linuxtv.org
6288S: Supported 6244S: Supported
6289F: drivers/media/platform/sti/hva 6245F: drivers/media/platform/sti/hva
6290 6246
6247HWPOISON MEMORY FAILURE HANDLING
6248M: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
6249L: linux-mm@kvack.org
6250S: Maintained
6251F: mm/memory-failure.c
6252F: mm/hwpoison-inject.c
6253
6291Hyper-V CORE AND DRIVERS 6254Hyper-V CORE AND DRIVERS
6292M: "K. Y. Srinivasan" <kys@microsoft.com> 6255M: "K. Y. Srinivasan" <kys@microsoft.com>
6293M: Haiyang Zhang <haiyangz@microsoft.com> 6256M: Haiyang Zhang <haiyangz@microsoft.com>
@@ -6310,6 +6273,18 @@ F: include/linux/hyperv.h
6310F: tools/hv/ 6273F: tools/hv/
6311F: Documentation/ABI/stable/sysfs-bus-vmbus 6274F: Documentation/ABI/stable/sysfs-bus-vmbus
6312 6275
6276HYPERVISOR VIRTUAL CONSOLE DRIVER
6277L: linuxppc-dev@lists.ozlabs.org
6278S: Odd Fixes
6279F: drivers/tty/hvc/
6280
6281I2C ACPI SUPPORT
6282M: Mika Westerberg <mika.westerberg@linux.intel.com>
6283L: linux-i2c@vger.kernel.org
6284L: linux-acpi@vger.kernel.org
6285S: Maintained
6286F: drivers/i2c/i2c-core-acpi.c
6287
6313I2C MUXES 6288I2C MUXES
6314M: Peter Rosin <peda@axentia.se> 6289M: Peter Rosin <peda@axentia.se>
6315L: linux-i2c@vger.kernel.org 6290L: linux-i2c@vger.kernel.org
@@ -6332,6 +6307,36 @@ F: Documentation/i2c/busses/i2c-parport-light
6332F: drivers/i2c/busses/i2c-parport.c 6307F: drivers/i2c/busses/i2c-parport.c
6333F: drivers/i2c/busses/i2c-parport-light.c 6308F: drivers/i2c/busses/i2c-parport-light.c
6334 6309
6310I2C SUBSYSTEM
6311M: Wolfram Sang <wsa@the-dreams.de>
6312L: linux-i2c@vger.kernel.org
6313W: https://i2c.wiki.kernel.org/
6314Q: https://patchwork.ozlabs.org/project/linux-i2c/list/
6315T: git git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git
6316S: Maintained
6317F: Documentation/devicetree/bindings/i2c/
6318F: Documentation/i2c/
6319F: drivers/i2c/
6320F: drivers/i2c/*/
6321F: include/linux/i2c.h
6322F: include/linux/i2c-*.h
6323F: include/uapi/linux/i2c.h
6324F: include/uapi/linux/i2c-*.h
6325
6326I2C-TAOS-EVM DRIVER
6327M: Jean Delvare <jdelvare@suse.com>
6328L: linux-i2c@vger.kernel.org
6329S: Maintained
6330F: Documentation/i2c/busses/i2c-taos-evm
6331F: drivers/i2c/busses/i2c-taos-evm.c
6332
6333I2C-TINY-USB DRIVER
6334M: Till Harbaum <till@harbaum.org>
6335L: linux-i2c@vger.kernel.org
6336W: http://www.harbaum.org/till/i2c_tiny_usb
6337S: Maintained
6338F: drivers/i2c/busses/i2c-tiny-usb.c
6339
6335I2C/SMBUS CONTROLLER DRIVERS FOR PC 6340I2C/SMBUS CONTROLLER DRIVERS FOR PC
6336M: Jean Delvare <jdelvare@suse.com> 6341M: Jean Delvare <jdelvare@suse.com>
6337L: linux-i2c@vger.kernel.org 6342L: linux-i2c@vger.kernel.org
@@ -6379,43 +6384,6 @@ L: linux-i2c@vger.kernel.org
6379S: Maintained 6384S: Maintained
6380F: drivers/i2c/i2c-stub.c 6385F: drivers/i2c/i2c-stub.c
6381 6386
6382I2C SUBSYSTEM
6383M: Wolfram Sang <wsa@the-dreams.de>
6384L: linux-i2c@vger.kernel.org
6385W: https://i2c.wiki.kernel.org/
6386Q: https://patchwork.ozlabs.org/project/linux-i2c/list/
6387T: git git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git
6388S: Maintained
6389F: Documentation/devicetree/bindings/i2c/
6390F: Documentation/i2c/
6391F: drivers/i2c/
6392F: drivers/i2c/*/
6393F: include/linux/i2c.h
6394F: include/linux/i2c-*.h
6395F: include/uapi/linux/i2c.h
6396F: include/uapi/linux/i2c-*.h
6397
6398I2C ACPI SUPPORT
6399M: Mika Westerberg <mika.westerberg@linux.intel.com>
6400L: linux-i2c@vger.kernel.org
6401L: linux-acpi@vger.kernel.org
6402S: Maintained
6403F: drivers/i2c/i2c-core-acpi.c
6404
6405I2C-TAOS-EVM DRIVER
6406M: Jean Delvare <jdelvare@suse.com>
6407L: linux-i2c@vger.kernel.org
6408S: Maintained
6409F: Documentation/i2c/busses/i2c-taos-evm
6410F: drivers/i2c/busses/i2c-taos-evm.c
6411
6412I2C-TINY-USB DRIVER
6413M: Till Harbaum <till@harbaum.org>
6414L: linux-i2c@vger.kernel.org
6415W: http://www.harbaum.org/till/i2c_tiny_usb
6416S: Maintained
6417F: drivers/i2c/busses/i2c-tiny-usb.c
6418
6419i386 BOOT CODE 6387i386 BOOT CODE
6420M: "H. Peter Anvin" <hpa@zytor.com> 6388M: "H. Peter Anvin" <hpa@zytor.com>
6421S: Maintained 6389S: Maintained
@@ -6434,17 +6402,15 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux.git
6434S: Maintained 6402S: Maintained
6435F: arch/ia64/ 6403F: arch/ia64/
6436 6404
6437IBM Power VMX Cryptographic instructions 6405IBM Power 842 compression accelerator
6438M: Leonidas S. Barbosa <leosilva@linux.vnet.ibm.com> 6406M: Haren Myneni <haren@us.ibm.com>
6439M: Paulo Flabiano Smorigo <pfsmorigo@linux.vnet.ibm.com>
6440L: linux-crypto@vger.kernel.org
6441S: Supported 6407S: Supported
6442F: drivers/crypto/vmx/Makefile 6408F: drivers/crypto/nx/Makefile
6443F: drivers/crypto/vmx/Kconfig 6409F: drivers/crypto/nx/Kconfig
6444F: drivers/crypto/vmx/vmx.c 6410F: drivers/crypto/nx/nx-842*
6445F: drivers/crypto/vmx/aes* 6411F: include/linux/sw842.h
6446F: drivers/crypto/vmx/ghash* 6412F: crypto/842.c
6447F: drivers/crypto/vmx/ppc-xlate.pl 6413F: lib/842/
6448 6414
6449IBM Power in-Nest Crypto Acceleration 6415IBM Power in-Nest Crypto Acceleration
6450M: Leonidas S. Barbosa <leosilva@linux.vnet.ibm.com> 6416M: Leonidas S. Barbosa <leosilva@linux.vnet.ibm.com>
@@ -6459,33 +6425,29 @@ F: drivers/crypto/nx/nx.*
6459F: drivers/crypto/nx/nx_csbcpb.h 6425F: drivers/crypto/nx/nx_csbcpb.h
6460F: drivers/crypto/nx/nx_debugfs.h 6426F: drivers/crypto/nx/nx_debugfs.h
6461 6427
6462IBM Power 842 compression accelerator
6463M: Haren Myneni <haren@us.ibm.com>
6464S: Supported
6465F: drivers/crypto/nx/Makefile
6466F: drivers/crypto/nx/Kconfig
6467F: drivers/crypto/nx/nx-842*
6468F: include/linux/sw842.h
6469F: crypto/842.c
6470F: lib/842/
6471
6472IBM Power Linux RAID adapter 6428IBM Power Linux RAID adapter
6473M: Brian King <brking@us.ibm.com> 6429M: Brian King <brking@us.ibm.com>
6474S: Supported 6430S: Supported
6475F: drivers/scsi/ipr.* 6431F: drivers/scsi/ipr.*
6476 6432
6477IBM Power Virtual Ethernet Device Driver 6433IBM Power SRIOV Virtual NIC Device Driver
6478M: Thomas Falcon <tlfalcon@linux.vnet.ibm.com> 6434M: Thomas Falcon <tlfalcon@linux.vnet.ibm.com>
6435M: John Allen <jallen@linux.vnet.ibm.com>
6479L: netdev@vger.kernel.org 6436L: netdev@vger.kernel.org
6480S: Supported 6437S: Supported
6481F: drivers/net/ethernet/ibm/ibmveth.* 6438F: drivers/net/ethernet/ibm/ibmvnic.*
6482 6439
6483IBM Power SRIOV Virtual NIC Device Driver 6440IBM Power Virtual Ethernet Device Driver
6484M: Thomas Falcon <tlfalcon@linux.vnet.ibm.com> 6441M: Thomas Falcon <tlfalcon@linux.vnet.ibm.com>
6485M: John Allen <jallen@linux.vnet.ibm.com>
6486L: netdev@vger.kernel.org 6442L: netdev@vger.kernel.org
6487S: Supported 6443S: Supported
6488F: drivers/net/ethernet/ibm/ibmvnic.* 6444F: drivers/net/ethernet/ibm/ibmveth.*
6445
6446IBM Power Virtual FC Device Drivers
6447M: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
6448L: linux-scsi@vger.kernel.org
6449S: Supported
6450F: drivers/scsi/ibmvscsi/ibmvfc*
6489 6451
6490IBM Power Virtual SCSI Device Drivers 6452IBM Power Virtual SCSI Device Drivers
6491M: Tyrel Datwyler <tyreld@linux.vnet.ibm.com> 6453M: Tyrel Datwyler <tyreld@linux.vnet.ibm.com>
@@ -6502,11 +6464,17 @@ L: target-devel@vger.kernel.org
6502S: Supported 6464S: Supported
6503F: drivers/scsi/ibmvscsi_tgt/ 6465F: drivers/scsi/ibmvscsi_tgt/
6504 6466
6505IBM Power Virtual FC Device Drivers 6467IBM Power VMX Cryptographic instructions
6506M: Tyrel Datwyler <tyreld@linux.vnet.ibm.com> 6468M: Leonidas S. Barbosa <leosilva@linux.vnet.ibm.com>
6507L: linux-scsi@vger.kernel.org 6469M: Paulo Flabiano Smorigo <pfsmorigo@linux.vnet.ibm.com>
6470L: linux-crypto@vger.kernel.org
6508S: Supported 6471S: Supported
6509F: drivers/scsi/ibmvscsi/ibmvfc* 6472F: drivers/crypto/vmx/Makefile
6473F: drivers/crypto/vmx/Kconfig
6474F: drivers/crypto/vmx/vmx.c
6475F: drivers/crypto/vmx/aes*
6476F: drivers/crypto/vmx/ghash*
6477F: drivers/crypto/vmx/ppc-xlate.pl
6510 6478
6511IBM ServeRAID RAID DRIVER 6479IBM ServeRAID RAID DRIVER
6512S: Orphan 6480S: Orphan
@@ -6518,11 +6486,6 @@ S: Maintained
6518F: drivers/mfd/lpc_ich.c 6486F: drivers/mfd/lpc_ich.c
6519F: drivers/gpio/gpio-ich.c 6487F: drivers/gpio/gpio-ich.c
6520 6488
6521IDT VersaClock 5 CLOCK DRIVER
6522M: Marek Vasut <marek.vasut@gmail.com>
6523S: Maintained
6524F: drivers/clk/clk-versaclock5.c
6525
6526IDE SUBSYSTEM 6489IDE SUBSYSTEM
6527M: "David S. Miller" <davem@davemloft.net> 6490M: "David S. Miller" <davem@davemloft.net>
6528L: linux-ide@vger.kernel.org 6491L: linux-ide@vger.kernel.org
@@ -6533,6 +6496,13 @@ F: Documentation/ide/
6533F: drivers/ide/ 6496F: drivers/ide/
6534F: include/linux/ide.h 6497F: include/linux/ide.h
6535 6498
6499IDE/ATAPI DRIVERS
6500M: Borislav Petkov <bp@alien8.de>
6501L: linux-ide@vger.kernel.org
6502S: Maintained
6503F: Documentation/cdrom/ide-cd
6504F: drivers/ide/ide-cd*
6505
6536IDEAPAD LAPTOP EXTRAS DRIVER 6506IDEAPAD LAPTOP EXTRAS DRIVER
6537M: Ike Panhc <ike.pan@canonical.com> 6507M: Ike Panhc <ike.pan@canonical.com>
6538L: platform-driver-x86@vger.kernel.org 6508L: platform-driver-x86@vger.kernel.org
@@ -6547,12 +6517,10 @@ W: https://github.com/o2genum/ideapad-slidebar
6547S: Maintained 6517S: Maintained
6548F: drivers/input/misc/ideapad_slidebar.c 6518F: drivers/input/misc/ideapad_slidebar.c
6549 6519
6550IDE/ATAPI DRIVERS 6520IDT VersaClock 5 CLOCK DRIVER
6551M: Borislav Petkov <bp@alien8.de> 6521M: Marek Vasut <marek.vasut@gmail.com>
6552L: linux-ide@vger.kernel.org
6553S: Maintained 6522S: Maintained
6554F: Documentation/cdrom/ide-cd 6523F: drivers/clk/clk-versaclock5.c
6555F: drivers/ide/ide-cd*
6556 6524
6557IEEE 802.15.4 SUBSYSTEM 6525IEEE 802.15.4 SUBSYSTEM
6558M: Alexander Aring <alex.aring@gmail.com> 6526M: Alexander Aring <alex.aring@gmail.com>
@@ -6642,6 +6610,16 @@ S: Maintained
6642F: Documentation/devicetree/bindings/auxdisplay/img-ascii-lcd.txt 6610F: Documentation/devicetree/bindings/auxdisplay/img-ascii-lcd.txt
6643F: drivers/auxdisplay/img-ascii-lcd.c 6611F: drivers/auxdisplay/img-ascii-lcd.c
6644 6612
6613IMGTEC IR DECODER DRIVER
6614M: James Hogan <james.hogan@imgtec.com>
6615S: Maintained
6616F: drivers/media/rc/img-ir/
6617
6618IMS TWINTURBO FRAMEBUFFER DRIVER
6619L: linux-fbdev@vger.kernel.org
6620S: Orphan
6621F: drivers/video/fbdev/imsttfb.c
6622
6645INA209 HARDWARE MONITOR DRIVER 6623INA209 HARDWARE MONITOR DRIVER
6646M: Guenter Roeck <linux@roeck-us.net> 6624M: Guenter Roeck <linux@roeck-us.net>
6647L: linux-hwmon@vger.kernel.org 6625L: linux-hwmon@vger.kernel.org
@@ -6667,37 +6645,6 @@ W: http://industrypack.sourceforge.net
6667S: Maintained 6645S: Maintained
6668F: drivers/ipack/ 6646F: drivers/ipack/
6669 6647
6670INGENIC JZ4780 DMA Driver
6671M: Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com>
6672S: Maintained
6673F: drivers/dma/dma-jz4780.c
6674
6675INGENIC JZ4780 NAND DRIVER
6676M: Harvey Hunt <harveyhuntnexus@gmail.com>
6677L: linux-mtd@lists.infradead.org
6678S: Maintained
6679F: drivers/mtd/nand/jz4780_*
6680
6681INTEGRITY MEASUREMENT ARCHITECTURE (IMA)
6682M: Mimi Zohar <zohar@linux.vnet.ibm.com>
6683M: Dmitry Kasatkin <dmitry.kasatkin@gmail.com>
6684L: linux-ima-devel@lists.sourceforge.net
6685L: linux-ima-user@lists.sourceforge.net
6686L: linux-security-module@vger.kernel.org
6687T: git git://git.kernel.org/pub/scm/linux/kernel/git/zohar/linux-integrity.git
6688S: Supported
6689F: security/integrity/ima/
6690
6691IMGTEC IR DECODER DRIVER
6692M: James Hogan <james.hogan@imgtec.com>
6693S: Maintained
6694F: drivers/media/rc/img-ir/
6695
6696IMS TWINTURBO FRAMEBUFFER DRIVER
6697L: linux-fbdev@vger.kernel.org
6698S: Orphan
6699F: drivers/video/fbdev/imsttfb.c
6700
6701INFINIBAND SUBSYSTEM 6648INFINIBAND SUBSYSTEM
6702M: Doug Ledford <dledford@redhat.com> 6649M: Doug Ledford <dledford@redhat.com>
6703M: Sean Hefty <sean.hefty@intel.com> 6650M: Sean Hefty <sean.hefty@intel.com>
@@ -6714,6 +6661,17 @@ F: include/uapi/linux/if_infiniband.h
6714F: include/uapi/rdma/ 6661F: include/uapi/rdma/
6715F: include/rdma/ 6662F: include/rdma/
6716 6663
6664INGENIC JZ4780 DMA Driver
6665M: Zubair Lutfullah Kakakhel <Zubair.Kakakhel@imgtec.com>
6666S: Maintained
6667F: drivers/dma/dma-jz4780.c
6668
6669INGENIC JZ4780 NAND DRIVER
6670M: Harvey Hunt <harveyhuntnexus@gmail.com>
6671L: linux-mtd@lists.infradead.org
6672S: Maintained
6673F: drivers/mtd/nand/jz4780_*
6674
6717INOTIFY 6675INOTIFY
6718M: John McCutchan <john@johnmccutchan.com> 6676M: John McCutchan <john@johnmccutchan.com>
6719M: Robert Love <rlove@rlove.org> 6677M: Robert Love <rlove@rlove.org>
@@ -6752,6 +6710,22 @@ F: drivers/crypto/inside-secure/
6752S: Maintained 6710S: Maintained
6753L: linux-crypto@vger.kernel.org 6711L: linux-crypto@vger.kernel.org
6754 6712
6713INTEGRITY MEASUREMENT ARCHITECTURE (IMA)
6714M: Mimi Zohar <zohar@linux.vnet.ibm.com>
6715M: Dmitry Kasatkin <dmitry.kasatkin@gmail.com>
6716L: linux-ima-devel@lists.sourceforge.net
6717L: linux-ima-user@lists.sourceforge.net
6718L: linux-security-module@vger.kernel.org
6719T: git git://git.kernel.org/pub/scm/linux/kernel/git/zohar/linux-integrity.git
6720S: Supported
6721F: security/integrity/ima/
6722
6723INTEL 810/815 FRAMEBUFFER DRIVER
6724M: Antonino Daplas <adaplas@gmail.com>
6725L: linux-fbdev@vger.kernel.org
6726S: Maintained
6727F: drivers/video/fbdev/i810/
6728
6755INTEL ASoC BDW/HSW DRIVERS 6729INTEL ASoC BDW/HSW DRIVERS
6756M: Jie Yang <yang.jie@linux.intel.com> 6730M: Jie Yang <yang.jie@linux.intel.com>
6757L: alsa-devel@alsa-project.org (moderated for non-subscribers) 6731L: alsa-devel@alsa-project.org (moderated for non-subscribers)
@@ -6769,17 +6743,74 @@ T: git git://git.code.sf.net/p/intel-sas/isci
6769S: Supported 6743S: Supported
6770F: drivers/scsi/isci/ 6744F: drivers/scsi/isci/
6771 6745
6746INTEL DRM DRIVERS (excluding Poulsbo, Moorestown and derivative chipsets)
6747M: Daniel Vetter <daniel.vetter@intel.com>
6748M: Jani Nikula <jani.nikula@linux.intel.com>
6749L: intel-gfx@lists.freedesktop.org
6750W: https://01.org/linuxgraphics/
6751B: https://01.org/linuxgraphics/documentation/how-report-bugs
6752C: irc://chat.freenode.net/intel-gfx
6753Q: http://patchwork.freedesktop.org/project/intel-gfx/
6754T: git git://anongit.freedesktop.org/drm-intel
6755S: Supported
6756F: drivers/gpu/drm/i915/
6757F: include/drm/i915*
6758F: include/uapi/drm/i915_drm.h
6759F: Documentation/gpu/i915.rst
6760
6761INTEL ETHERNET DRIVERS
6762M: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
6763L: intel-wired-lan@lists.osuosl.org (moderated for non-subscribers)
6764W: http://www.intel.com/support/feedback.htm
6765W: http://e1000.sourceforge.net/
6766Q: http://patchwork.ozlabs.org/project/intel-wired-lan/list/
6767T: git git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-queue.git
6768T: git git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
6769S: Supported
6770F: Documentation/networking/e100.txt
6771F: Documentation/networking/e1000.txt
6772F: Documentation/networking/e1000e.txt
6773F: Documentation/networking/igb.txt
6774F: Documentation/networking/igbvf.txt
6775F: Documentation/networking/ixgb.txt
6776F: Documentation/networking/ixgbe.txt
6777F: Documentation/networking/ixgbevf.txt
6778F: Documentation/networking/i40e.txt
6779F: Documentation/networking/i40evf.txt
6780F: drivers/net/ethernet/intel/
6781F: drivers/net/ethernet/intel/*/
6782F: include/linux/avf/virtchnl.h
6783
6784INTEL FRAMEBUFFER DRIVER (excluding 810 and 815)
6785M: Maik Broemme <mbroemme@libmpq.org>
6786L: linux-fbdev@vger.kernel.org
6787S: Maintained
6788F: Documentation/fb/intelfb.txt
6789F: drivers/video/fbdev/intelfb/
6790
6791INTEL GVT-g DRIVERS (Intel GPU Virtualization)
6792M: Zhenyu Wang <zhenyuw@linux.intel.com>
6793M: Zhi Wang <zhi.a.wang@intel.com>
6794L: intel-gvt-dev@lists.freedesktop.org
6795L: intel-gfx@lists.freedesktop.org
6796W: https://01.org/igvt-g
6797T: git https://github.com/01org/gvt-linux.git
6798S: Supported
6799F: drivers/gpu/drm/i915/gvt/
6800
6772INTEL HID EVENT DRIVER 6801INTEL HID EVENT DRIVER
6773M: Alex Hung <alex.hung@canonical.com> 6802M: Alex Hung <alex.hung@canonical.com>
6774L: platform-driver-x86@vger.kernel.org 6803L: platform-driver-x86@vger.kernel.org
6775S: Maintained 6804S: Maintained
6776F: drivers/platform/x86/intel-hid.c 6805F: drivers/platform/x86/intel-hid.c
6777 6806
6778INTEL VIRTUAL BUTTON DRIVER 6807INTEL I/OAT DMA DRIVER
6779M: AceLan Kao <acelan.kao@canonical.com> 6808M: Dave Jiang <dave.jiang@intel.com>
6780L: platform-driver-x86@vger.kernel.org 6809R: Dan Williams <dan.j.williams@intel.com>
6781S: Maintained 6810L: dmaengine@vger.kernel.org
6782F: drivers/platform/x86/intel-vbtn.c 6811Q: https://patchwork.kernel.org/project/linux-dmaengine/list/
6812S: Supported
6813F: drivers/dma/ioat*
6783 6814
6784INTEL IDLE DRIVER 6815INTEL IDLE DRIVER
6785M: Jacob Pan <jacob.jun.pan@linux.intel.com> 6816M: Jacob Pan <jacob.jun.pan@linux.intel.com>
@@ -6797,41 +6828,6 @@ L: linux-input@vger.kernel.org
6797S: Maintained 6828S: Maintained
6798F: drivers/hid/intel-ish-hid/ 6829F: drivers/hid/intel-ish-hid/
6799 6830
6800INTEL PSTATE DRIVER
6801M: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
6802M: Len Brown <lenb@kernel.org>
6803L: linux-pm@vger.kernel.org
6804S: Supported
6805F: drivers/cpufreq/intel_pstate.c
6806
6807INTEL FRAMEBUFFER DRIVER (excluding 810 and 815)
6808M: Maik Broemme <mbroemme@libmpq.org>
6809L: linux-fbdev@vger.kernel.org
6810S: Maintained
6811F: Documentation/fb/intelfb.txt
6812F: drivers/video/fbdev/intelfb/
6813
6814INTEL 810/815 FRAMEBUFFER DRIVER
6815M: Antonino Daplas <adaplas@gmail.com>
6816L: linux-fbdev@vger.kernel.org
6817S: Maintained
6818F: drivers/video/fbdev/i810/
6819
6820INTEL MENLOW THERMAL DRIVER
6821M: Sujith Thomas <sujith.thomas@intel.com>
6822L: platform-driver-x86@vger.kernel.org
6823W: https://01.org/linux-acpi
6824S: Supported
6825F: drivers/platform/x86/intel_menlow.c
6826
6827INTEL I/OAT DMA DRIVER
6828M: Dave Jiang <dave.jiang@intel.com>
6829R: Dan Williams <dan.j.williams@intel.com>
6830L: dmaengine@vger.kernel.org
6831Q: https://patchwork.kernel.org/project/linux-dmaengine/list/
6832S: Supported
6833F: drivers/dma/ioat*
6834
6835INTEL IOMMU (VT-d) 6831INTEL IOMMU (VT-d)
6836M: David Woodhouse <dwmw2@infradead.org> 6832M: David Woodhouse <dwmw2@infradead.org>
6837L: iommu@lists.linux-foundation.org 6833L: iommu@lists.linux-foundation.org
@@ -6860,35 +6856,23 @@ M: Deepak Saxena <dsaxena@plexity.net>
6860S: Maintained 6856S: Maintained
6861F: drivers/char/hw_random/ixp4xx-rng.c 6857F: drivers/char/hw_random/ixp4xx-rng.c
6862 6858
6863INTEL ETHERNET DRIVERS 6859INTEL MANAGEMENT ENGINE (mei)
6864M: Jeff Kirsher <jeffrey.t.kirsher@intel.com> 6860M: Tomas Winkler <tomas.winkler@intel.com>
6865L: intel-wired-lan@lists.osuosl.org (moderated for non-subscribers) 6861L: linux-kernel@vger.kernel.org
6866W: http://www.intel.com/support/feedback.htm
6867W: http://e1000.sourceforge.net/
6868Q: http://patchwork.ozlabs.org/project/intel-wired-lan/list/
6869T: git git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-queue.git
6870T: git git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue.git
6871S: Supported 6862S: Supported
6872F: Documentation/networking/e100.txt 6863F: include/uapi/linux/mei.h
6873F: Documentation/networking/e1000.txt 6864F: include/linux/mei_cl_bus.h
6874F: Documentation/networking/e1000e.txt 6865F: drivers/misc/mei/*
6875F: Documentation/networking/igb.txt 6866F: drivers/watchdog/mei_wdt.c
6876F: Documentation/networking/igbvf.txt 6867F: Documentation/misc-devices/mei/*
6877F: Documentation/networking/ixgb.txt 6868F: samples/mei/*
6878F: Documentation/networking/ixgbe.txt
6879F: Documentation/networking/ixgbevf.txt
6880F: Documentation/networking/i40e.txt
6881F: Documentation/networking/i40evf.txt
6882F: drivers/net/ethernet/intel/
6883F: drivers/net/ethernet/intel/*/
6884F: include/linux/avf/virtchnl.h
6885 6869
6886INTEL RDMA RNIC DRIVER 6870INTEL MENLOW THERMAL DRIVER
6887M: Faisal Latif <faisal.latif@intel.com> 6871M: Sujith Thomas <sujith.thomas@intel.com>
6888M: Shiraz Saleem <shiraz.saleem@intel.com> 6872L: platform-driver-x86@vger.kernel.org
6889L: linux-rdma@vger.kernel.org 6873W: https://01.org/linux-acpi
6890S: Supported 6874S: Supported
6891F: drivers/infiniband/hw/i40iw/ 6875F: drivers/platform/x86/intel_menlow.c
6892 6876
6893INTEL MERRIFIELD GPIO DRIVER 6877INTEL MERRIFIELD GPIO DRIVER
6894M: Andy Shevchenko <andriy.shevchenko@linux.intel.com> 6878M: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
@@ -6896,11 +6880,38 @@ L: linux-gpio@vger.kernel.org
6896S: Maintained 6880S: Maintained
6897F: drivers/gpio/gpio-merrifield.c 6881F: drivers/gpio/gpio-merrifield.c
6898 6882
6899INTEL-MID GPIO DRIVER 6883INTEL MIC DRIVERS (mic)
6900M: David Cohen <david.a.cohen@linux.intel.com> 6884M: Sudeep Dutt <sudeep.dutt@intel.com>
6901L: linux-gpio@vger.kernel.org 6885M: Ashutosh Dixit <ashutosh.dixit@intel.com>
6886S: Supported
6887W: https://github.com/sudeepdutt/mic
6888W: http://software.intel.com/en-us/mic-developer
6889F: include/linux/mic_bus.h
6890F: include/linux/scif.h
6891F: include/uapi/linux/mic_common.h
6892F: include/uapi/linux/mic_ioctl.h
6893F: include/uapi/linux/scif_ioctl.h
6894F: drivers/misc/mic/
6895F: drivers/dma/mic_x100_dma.c
6896F: drivers/dma/mic_x100_dma.h
6897F: Documentation/mic/
6898
6899INTEL PMC CORE DRIVER
6900M: Rajneesh Bhardwaj <rajneesh.bhardwaj@intel.com>
6901M: Vishwanath Somayaji <vishwanath.somayaji@intel.com>
6902L: platform-driver-x86@vger.kernel.org
6902S: Maintained 6903S: Maintained
6903F: drivers/gpio/gpio-intel-mid.c 6904F: arch/x86/include/asm/pmc_core.h
6905F: drivers/platform/x86/intel_pmc_core*
6906
6907INTEL PMC/P-Unit IPC DRIVER
6908M: Zha Qipeng<qipeng.zha@intel.com>
6909L: platform-driver-x86@vger.kernel.org
6910S: Maintained
6911F: drivers/platform/x86/intel_pmc_ipc.c
6912F: drivers/platform/x86/intel_punit_ipc.c
6913F: arch/x86/include/asm/intel_pmc_ipc.h
6914F: arch/x86/include/asm/intel_punit_ipc.h
6904 6915
6905INTEL PRO/WIRELESS 2100, 2200BG, 2915ABG NETWORK CONNECTION SUPPORT 6916INTEL PRO/WIRELESS 2100, 2200BG, 2915ABG NETWORK CONNECTION SUPPORT
6906M: Stanislav Yakovlev <stas.yakovlev@gmail.com> 6917M: Stanislav Yakovlev <stas.yakovlev@gmail.com>
@@ -6910,31 +6921,32 @@ F: Documentation/networking/README.ipw2100
6910F: Documentation/networking/README.ipw2200 6921F: Documentation/networking/README.ipw2200
6911F: drivers/net/wireless/intel/ipw2x00/ 6922F: drivers/net/wireless/intel/ipw2x00/
6912 6923
6913INTEL(R) TRACE HUB 6924INTEL PSTATE DRIVER
6914M: Alexander Shishkin <alexander.shishkin@linux.intel.com> 6925M: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
6926M: Len Brown <lenb@kernel.org>
6927L: linux-pm@vger.kernel.org
6915S: Supported 6928S: Supported
6916F: Documentation/trace/intel_th.txt 6929F: drivers/cpufreq/intel_pstate.c
6917F: drivers/hwtracing/intel_th/
6918 6930
6919INTEL(R) TRUSTED EXECUTION TECHNOLOGY (TXT) 6931INTEL RDMA RNIC DRIVER
6920M: Ning Sun <ning.sun@intel.com> 6932M: Faisal Latif <faisal.latif@intel.com>
6921L: tboot-devel@lists.sourceforge.net 6933M: Shiraz Saleem <shiraz.saleem@intel.com>
6922W: http://tboot.sourceforge.net 6934L: linux-rdma@vger.kernel.org
6923T: hg http://tboot.hg.sourceforge.net:8000/hgroot/tboot/tboot
6924S: Supported 6935S: Supported
6925F: Documentation/intel_txt.txt 6936F: drivers/infiniband/hw/i40iw/
6926F: include/linux/tboot.h
6927F: arch/x86/kernel/tboot.c
6928 6937
6929INTEL WIRELESS WIMAX CONNECTION 2400 6938INTEL TELEMETRY DRIVER
6930M: Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com> 6939M: Souvik Kumar Chakravarty <souvik.k.chakravarty@intel.com>
6931M: linux-wimax@intel.com 6940L: platform-driver-x86@vger.kernel.org
6932L: wimax@linuxwimax.org (subscribers-only) 6941S: Maintained
6933S: Supported 6942F: arch/x86/include/asm/intel_telemetry.h
6934W: http://linuxwimax.org 6943F: drivers/platform/x86/intel_telemetry*
6935F: Documentation/wimax/README.i2400m 6944
6936F: drivers/net/wimax/i2400m/ 6945INTEL VIRTUAL BUTTON DRIVER
6937F: include/uapi/linux/wimax/i2400m.h 6946M: AceLan Kao <acelan.kao@canonical.com>
6947L: platform-driver-x86@vger.kernel.org
6948S: Maintained
6949F: drivers/platform/x86/intel-vbtn.c
6938 6950
6939INTEL WIRELESS 3945ABG/BG, 4965AGN (iwlegacy) 6951INTEL WIRELESS 3945ABG/BG, 4965AGN (iwlegacy)
6940M: Stanislaw Gruszka <sgruszka@redhat.com> 6952M: Stanislaw Gruszka <sgruszka@redhat.com>
@@ -6953,56 +6965,37 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/iwlwifi.git
6953S: Supported 6965S: Supported
6954F: drivers/net/wireless/intel/iwlwifi/ 6966F: drivers/net/wireless/intel/iwlwifi/
6955 6967
6956INTEL MANAGEMENT ENGINE (mei) 6968INTEL WIRELESS WIMAX CONNECTION 2400
6957M: Tomas Winkler <tomas.winkler@intel.com> 6969M: Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
6958L: linux-kernel@vger.kernel.org 6970M: linux-wimax@intel.com
6971L: wimax@linuxwimax.org (subscribers-only)
6959S: Supported 6972S: Supported
6960F: include/uapi/linux/mei.h 6973W: http://linuxwimax.org
6961F: include/linux/mei_cl_bus.h 6974F: Documentation/wimax/README.i2400m
6962F: drivers/misc/mei/* 6975F: drivers/net/wimax/i2400m/
6963F: drivers/watchdog/mei_wdt.c 6976F: include/uapi/linux/wimax/i2400m.h
6964F: Documentation/misc-devices/mei/*
6965F: samples/mei/*
6966 6977
6967INTEL MIC DRIVERS (mic) 6978INTEL(R) TRACE HUB
6968M: Sudeep Dutt <sudeep.dutt@intel.com> 6979M: Alexander Shishkin <alexander.shishkin@linux.intel.com>
6969M: Ashutosh Dixit <ashutosh.dixit@intel.com>
6970S: Supported 6980S: Supported
6971W: https://github.com/sudeepdutt/mic 6981F: Documentation/trace/intel_th.txt
6972W: http://software.intel.com/en-us/mic-developer 6982F: drivers/hwtracing/intel_th/
6973F: include/linux/mic_bus.h
6974F: include/linux/scif.h
6975F: include/uapi/linux/mic_common.h
6976F: include/uapi/linux/mic_ioctl.h
6977F: include/uapi/linux/scif_ioctl.h
6978F: drivers/misc/mic/
6979F: drivers/dma/mic_x100_dma.c
6980F: drivers/dma/mic_x100_dma.h
6981F: Documentation/mic/
6982
6983INTEL PMC/P-Unit IPC DRIVER
6984M: Zha Qipeng<qipeng.zha@intel.com>
6985L: platform-driver-x86@vger.kernel.org
6986S: Maintained
6987F: drivers/platform/x86/intel_pmc_ipc.c
6988F: drivers/platform/x86/intel_punit_ipc.c
6989F: arch/x86/include/asm/intel_pmc_ipc.h
6990F: arch/x86/include/asm/intel_punit_ipc.h
6991 6983
6992INTEL TELEMETRY DRIVER 6984INTEL(R) TRUSTED EXECUTION TECHNOLOGY (TXT)
6993M: Souvik Kumar Chakravarty <souvik.k.chakravarty@intel.com> 6985M: Ning Sun <ning.sun@intel.com>
6994L: platform-driver-x86@vger.kernel.org 6986L: tboot-devel@lists.sourceforge.net
6995S: Maintained 6987W: http://tboot.sourceforge.net
6996F: arch/x86/include/asm/intel_telemetry.h 6988T: hg http://tboot.hg.sourceforge.net:8000/hgroot/tboot/tboot
6997F: drivers/platform/x86/intel_telemetry* 6989S: Supported
6990F: Documentation/intel_txt.txt
6991F: include/linux/tboot.h
6992F: arch/x86/kernel/tboot.c
6998 6993
6999INTEL PMC CORE DRIVER 6994INTEL-MID GPIO DRIVER
7000M: Rajneesh Bhardwaj <rajneesh.bhardwaj@intel.com> 6995M: David Cohen <david.a.cohen@linux.intel.com>
7001M: Vishwanath Somayaji <vishwanath.somayaji@intel.com> 6996L: linux-gpio@vger.kernel.org
7002L: platform-driver-x86@vger.kernel.org
7003S: Maintained 6997S: Maintained
7004F: arch/x86/include/asm/pmc_core.h 6998F: drivers/gpio/gpio-intel-mid.c
7005F: drivers/platform/x86/intel_pmc_core*
7006 6999
7007INVENSENSE MPU-3050 GYROSCOPE DRIVER 7000INVENSENSE MPU-3050 GYROSCOPE DRIVER
7008M: Linus Walleij <linus.walleij@linaro.org> 7001M: Linus Walleij <linus.walleij@linaro.org>
@@ -7048,13 +7041,6 @@ F: drivers/char/ipmi/
7048F: include/linux/ipmi* 7041F: include/linux/ipmi*
7049F: include/uapi/linux/ipmi* 7042F: include/uapi/linux/ipmi*
7050 7043
7051QCOM AUDIO (ASoC) DRIVERS
7052M: Patrick Lai <plai@codeaurora.org>
7053M: Banajit Goswami <bgoswami@codeaurora.org>
7054L: alsa-devel@alsa-project.org (moderated for non-subscribers)
7055S: Supported
7056F: sound/soc/qcom/
7057
7058IPS SCSI RAID DRIVER 7044IPS SCSI RAID DRIVER
7059M: Adaptec OEM Raid Solutions <aacraid@adaptec.com> 7045M: Adaptec OEM Raid Solutions <aacraid@adaptec.com>
7060L: linux-scsi@vger.kernel.org 7046L: linux-scsi@vger.kernel.org
@@ -7101,6 +7087,15 @@ F: drivers/net/irda/
7101F: include/net/irda/ 7087F: include/net/irda/
7102F: net/irda/ 7088F: net/irda/
7103 7089
7090IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY)
7091M: Marc Zyngier <marc.zyngier@arm.com>
7092S: Maintained
7093T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
7094F: Documentation/IRQ-domain.txt
7095F: include/linux/irqdomain.h
7096F: kernel/irq/irqdomain.c
7097F: kernel/irq/msi.c
7098
7104IRQ SUBSYSTEM 7099IRQ SUBSYSTEM
7105M: Thomas Gleixner <tglx@linutronix.de> 7100M: Thomas Gleixner <tglx@linutronix.de>
7106L: linux-kernel@vger.kernel.org 7101L: linux-kernel@vger.kernel.org
@@ -7115,19 +7110,9 @@ M: Marc Zyngier <marc.zyngier@arm.com>
7115L: linux-kernel@vger.kernel.org 7110L: linux-kernel@vger.kernel.org
7116S: Maintained 7111S: Maintained
7117T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core 7112T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
7118T: git git://git.infradead.org/users/jcooper/linux.git irqchip/core
7119F: Documentation/devicetree/bindings/interrupt-controller/ 7113F: Documentation/devicetree/bindings/interrupt-controller/
7120F: drivers/irqchip/ 7114F: drivers/irqchip/
7121 7115
7122IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY)
7123M: Marc Zyngier <marc.zyngier@arm.com>
7124S: Maintained
7125T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
7126F: Documentation/IRQ-domain.txt
7127F: include/linux/irqdomain.h
7128F: kernel/irq/irqdomain.c
7129F: kernel/irq/msi.c
7130
7131ISA 7116ISA
7132M: William Breathitt Gray <vilhelm.gray@gmail.com> 7117M: William Breathitt Gray <vilhelm.gray@gmail.com>
7133S: Maintained 7118S: Maintained
@@ -7135,13 +7120,6 @@ F: Documentation/isa.txt
7135F: drivers/base/isa.c 7120F: drivers/base/isa.c
7136F: include/linux/isa.h 7121F: include/linux/isa.h
7137 7122
7138ISAPNP
7139M: Jaroslav Kysela <perex@perex.cz>
7140S: Maintained
7141F: Documentation/isapnp.txt
7142F: drivers/pnp/isapnp/
7143F: include/linux/isapnp.h
7144
7145ISA RADIO MODULE 7123ISA RADIO MODULE
7146M: Hans Verkuil <hverkuil@xs4all.nl> 7124M: Hans Verkuil <hverkuil@xs4all.nl>
7147L: linux-media@vger.kernel.org 7125L: linux-media@vger.kernel.org
@@ -7150,11 +7128,12 @@ W: https://linuxtv.org
7150S: Maintained 7128S: Maintained
7151F: drivers/media/radio/radio-isa* 7129F: drivers/media/radio/radio-isa*
7152 7130
7153iSCSI BOOT FIRMWARE TABLE (iBFT) DRIVER 7131ISAPNP
7154M: Peter Jones <pjones@redhat.com> 7132M: Jaroslav Kysela <perex@perex.cz>
7155M: Konrad Rzeszutek Wilk <konrad@kernel.org>
7156S: Maintained 7133S: Maintained
7157F: drivers/firmware/iscsi_ibft* 7134F: Documentation/isapnp.txt
7135F: drivers/pnp/isapnp/
7136F: include/linux/isapnp.h
7158 7137
7159ISCSI 7138ISCSI
7160M: Lee Duncan <lduncan@suse.com> 7139M: Lee Duncan <lduncan@suse.com>
@@ -7165,6 +7144,12 @@ S: Maintained
7165F: drivers/scsi/*iscsi* 7144F: drivers/scsi/*iscsi*
7166F: include/scsi/*iscsi* 7145F: include/scsi/*iscsi*
7167 7146
7147iSCSI BOOT FIRMWARE TABLE (iBFT) DRIVER
7148M: Peter Jones <pjones@redhat.com>
7149M: Konrad Rzeszutek Wilk <konrad@kernel.org>
7150S: Maintained
7151F: drivers/firmware/iscsi_ibft*
7152
7168ISCSI EXTENSIONS FOR RDMA (ISER) INITIATOR 7153ISCSI EXTENSIONS FOR RDMA (ISER) INITIATOR
7169M: Or Gerlitz <ogerlitz@mellanox.com> 7154M: Or Gerlitz <ogerlitz@mellanox.com>
7170M: Sagi Grimberg <sagi@grimberg.me> 7155M: Sagi Grimberg <sagi@grimberg.me>
@@ -7420,27 +7405,6 @@ S: Maintained
7420F: arch/x86/include/asm/svm.h 7405F: arch/x86/include/asm/svm.h
7421F: arch/x86/kvm/svm.c 7406F: arch/x86/kvm/svm.c
7422 7407
7423KERNEL VIRTUAL MACHINE (KVM) FOR POWERPC
7424M: Alexander Graf <agraf@suse.com>
7425L: kvm-ppc@vger.kernel.org
7426W: http://www.linux-kvm.org/
7427T: git git://github.com/agraf/linux-2.6.git
7428S: Supported
7429F: arch/powerpc/include/asm/kvm*
7430F: arch/powerpc/kvm/
7431
7432KERNEL VIRTUAL MACHINE for s390 (KVM/s390)
7433M: Christian Borntraeger <borntraeger@de.ibm.com>
7434M: Cornelia Huck <cohuck@redhat.com>
7435L: linux-s390@vger.kernel.org
7436W: http://www.ibm.com/developerworks/linux/linux390/
7437T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux.git
7438S: Supported
7439F: Documentation/s390/kvm.txt
7440F: arch/s390/include/asm/kvm*
7441F: arch/s390/kvm/
7442F: arch/s390/mm/gmap.c
7443
7444KERNEL VIRTUAL MACHINE (KVM) FOR ARM 7408KERNEL VIRTUAL MACHINE (KVM) FOR ARM
7445M: Christoffer Dall <christoffer.dall@linaro.org> 7409M: Christoffer Dall <christoffer.dall@linaro.org>
7446M: Marc Zyngier <marc.zyngier@arm.com> 7410M: Marc Zyngier <marc.zyngier@arm.com>
@@ -7455,6 +7419,15 @@ F: arch/arm/kvm/
7455F: virt/kvm/arm/ 7419F: virt/kvm/arm/
7456F: include/kvm/arm_* 7420F: include/kvm/arm_*
7457 7421
7422KERNEL VIRTUAL MACHINE (KVM) FOR POWERPC
7423M: Alexander Graf <agraf@suse.com>
7424L: kvm-ppc@vger.kernel.org
7425W: http://www.linux-kvm.org/
7426T: git git://github.com/agraf/linux-2.6.git
7427S: Supported
7428F: arch/powerpc/include/asm/kvm*
7429F: arch/powerpc/kvm/
7430
7458KERNEL VIRTUAL MACHINE FOR ARM64 (KVM/arm64) 7431KERNEL VIRTUAL MACHINE FOR ARM64 (KVM/arm64)
7459M: Christoffer Dall <christoffer.dall@linaro.org> 7432M: Christoffer Dall <christoffer.dall@linaro.org>
7460M: Marc Zyngier <marc.zyngier@arm.com> 7433M: Marc Zyngier <marc.zyngier@arm.com>
@@ -7473,6 +7446,18 @@ F: arch/mips/include/uapi/asm/kvm*
7473F: arch/mips/include/asm/kvm* 7446F: arch/mips/include/asm/kvm*
7474F: arch/mips/kvm/ 7447F: arch/mips/kvm/
7475 7448
7449KERNEL VIRTUAL MACHINE for s390 (KVM/s390)
7450M: Christian Borntraeger <borntraeger@de.ibm.com>
7451M: Cornelia Huck <cohuck@redhat.com>
7452L: linux-s390@vger.kernel.org
7453W: http://www.ibm.com/developerworks/linux/linux390/
7454T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvms390/linux.git
7455S: Supported
7456F: Documentation/s390/kvm.txt
7457F: arch/s390/include/asm/kvm*
7458F: arch/s390/kvm/
7459F: arch/s390/mm/gmap.c
7460
7476KERNFS 7461KERNFS
7477M: Greg Kroah-Hartman <gregkh@linuxfoundation.org> 7462M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
7478M: Tejun Heo <tj@kernel.org> 7463M: Tejun Heo <tj@kernel.org>
@@ -7490,17 +7475,15 @@ F: include/linux/kexec.h
7490F: include/uapi/linux/kexec.h 7475F: include/uapi/linux/kexec.h
7491F: kernel/kexec* 7476F: kernel/kexec*
7492 7477
7493KEYS/KEYRINGS: 7478KEYS-ENCRYPTED
7494M: David Howells <dhowells@redhat.com> 7479M: Mimi Zohar <zohar@linux.vnet.ibm.com>
7480M: David Safford <safford@us.ibm.com>
7481L: linux-security-module@vger.kernel.org
7495L: keyrings@vger.kernel.org 7482L: keyrings@vger.kernel.org
7496S: Maintained 7483S: Supported
7497F: Documentation/security/keys/core.rst 7484F: Documentation/security/keys/trusted-encrypted.rst
7498F: include/linux/key.h 7485F: include/keys/encrypted-type.h
7499F: include/linux/key-type.h 7486F: security/keys/encrypted-keys/
7500F: include/linux/keyctl.h
7501F: include/uapi/linux/keyctl.h
7502F: include/keys/
7503F: security/keys/
7504 7487
7505KEYS-TRUSTED 7488KEYS-TRUSTED
7506M: David Safford <safford@us.ibm.com> 7489M: David Safford <safford@us.ibm.com>
@@ -7513,15 +7496,17 @@ F: include/keys/trusted-type.h
7513F: security/keys/trusted.c 7496F: security/keys/trusted.c
7514F: security/keys/trusted.h 7497F: security/keys/trusted.h
7515 7498
7516KEYS-ENCRYPTED 7499KEYS/KEYRINGS:
7517M: Mimi Zohar <zohar@linux.vnet.ibm.com> 7500M: David Howells <dhowells@redhat.com>
7518M: David Safford <safford@us.ibm.com>
7519L: linux-security-module@vger.kernel.org
7520L: keyrings@vger.kernel.org 7501L: keyrings@vger.kernel.org
7521S: Supported 7502S: Maintained
7522F: Documentation/security/keys/trusted-encrypted.rst 7503F: Documentation/security/keys/core.rst
7523F: include/keys/encrypted-type.h 7504F: include/linux/key.h
7524F: security/keys/encrypted-keys/ 7505F: include/linux/key-type.h
7506F: include/linux/keyctl.h
7507F: include/uapi/linux/keyctl.h
7508F: include/keys/
7509F: security/keys/
7525 7510
7526KGDB / KDB /debug_core 7511KGDB / KDB /debug_core
7527M: Jason Wessel <jason.wessel@windriver.com> 7512M: Jason Wessel <jason.wessel@windriver.com>
@@ -7665,16 +7650,6 @@ F: drivers/lguest/
7665F: include/linux/lguest*.h 7650F: include/linux/lguest*.h
7666F: tools/lguest/ 7651F: tools/lguest/
7667 7652
7668LIBATA SUBSYSTEM (Serial and Parallel ATA drivers)
7669M: Tejun Heo <tj@kernel.org>
7670L: linux-ide@vger.kernel.org
7671T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata.git
7672S: Maintained
7673F: drivers/ata/
7674F: include/linux/ata.h
7675F: include/linux/libata.h
7676F: Documentation/devicetree/bindings/ata/
7677
7678LIBATA PATA ARASAN COMPACT FLASH CONTROLLER 7653LIBATA PATA ARASAN COMPACT FLASH CONTROLLER
7679M: Viresh Kumar <vireshk@kernel.org> 7654M: Viresh Kumar <vireshk@kernel.org>
7680L: linux-ide@vger.kernel.org 7655L: linux-ide@vger.kernel.org
@@ -7718,22 +7693,21 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata.git
7718S: Maintained 7693S: Maintained
7719F: drivers/ata/sata_promise.* 7694F: drivers/ata/sata_promise.*
7720 7695
7696LIBATA SUBSYSTEM (Serial and Parallel ATA drivers)
7697M: Tejun Heo <tj@kernel.org>
7698L: linux-ide@vger.kernel.org
7699T: git git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata.git
7700S: Maintained
7701F: drivers/ata/
7702F: include/linux/ata.h
7703F: include/linux/libata.h
7704F: Documentation/devicetree/bindings/ata/
7705
7721LIBLOCKDEP 7706LIBLOCKDEP
7722M: Sasha Levin <alexander.levin@verizon.com> 7707M: Sasha Levin <alexander.levin@verizon.com>
7723S: Maintained 7708S: Maintained
7724F: tools/lib/lockdep/ 7709F: tools/lib/lockdep/
7725 7710
7726LIBNVDIMM: NON-VOLATILE MEMORY DEVICE SUBSYSTEM
7727M: Dan Williams <dan.j.williams@intel.com>
7728L: linux-nvdimm@lists.01.org
7729Q: https://patchwork.kernel.org/project/linux-nvdimm/list/
7730T: git git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm.git
7731S: Supported
7732F: drivers/nvdimm/*
7733F: include/linux/nd.h
7734F: include/linux/libnvdimm.h
7735F: include/uapi/linux/ndctl.h
7736
7737LIBNVDIMM BLK: MMIO-APERTURE DRIVER 7711LIBNVDIMM BLK: MMIO-APERTURE DRIVER
7738M: Ross Zwisler <ross.zwisler@linux.intel.com> 7712M: Ross Zwisler <ross.zwisler@linux.intel.com>
7739L: linux-nvdimm@lists.01.org 7713L: linux-nvdimm@lists.01.org
@@ -7741,7 +7715,6 @@ Q: https://patchwork.kernel.org/project/linux-nvdimm/list/
7741S: Supported 7715S: Supported
7742F: drivers/nvdimm/blk.c 7716F: drivers/nvdimm/blk.c
7743F: drivers/nvdimm/region_devs.c 7717F: drivers/nvdimm/region_devs.c
7744F: drivers/acpi/nfit*
7745 7718
7746LIBNVDIMM BTT: BLOCK TRANSLATION TABLE 7719LIBNVDIMM BTT: BLOCK TRANSLATION TABLE
7747M: Vishal Verma <vishal.l.verma@intel.com> 7720M: Vishal Verma <vishal.l.verma@intel.com>
@@ -7757,6 +7730,18 @@ Q: https://patchwork.kernel.org/project/linux-nvdimm/list/
7757S: Supported 7730S: Supported
7758F: drivers/nvdimm/pmem* 7731F: drivers/nvdimm/pmem*
7759 7732
7733LIBNVDIMM: NON-VOLATILE MEMORY DEVICE SUBSYSTEM
7734M: Dan Williams <dan.j.williams@intel.com>
7735L: linux-nvdimm@lists.01.org
7736Q: https://patchwork.kernel.org/project/linux-nvdimm/list/
7737T: git git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm.git
7738S: Supported
7739F: drivers/nvdimm/*
7740F: drivers/acpi/nfit/*
7741F: include/linux/nd.h
7742F: include/linux/libnvdimm.h
7743F: include/uapi/linux/ndctl.h
7744
7760LIGHTNVM PLATFORM SUPPORT 7745LIGHTNVM PLATFORM SUPPORT
7761M: Matias Bjorling <mb@lightnvm.io> 7746M: Matias Bjorling <mb@lightnvm.io>
7762W: http://github/OpenChannelSSD 7747W: http://github/OpenChannelSSD
@@ -7766,6 +7751,14 @@ F: drivers/lightnvm/
7766F: include/linux/lightnvm.h 7751F: include/linux/lightnvm.h
7767F: include/uapi/linux/lightnvm.h 7752F: include/uapi/linux/lightnvm.h
7768 7753
7754LINUX FOR POWER MACINTOSH
7755M: Benjamin Herrenschmidt <benh@kernel.crashing.org>
7756W: http://www.penguinppc.org/
7757L: linuxppc-dev@lists.ozlabs.org
7758S: Maintained
7759F: arch/powerpc/platforms/powermac/
7760F: drivers/macintosh/
7761
7769LINUX FOR POWERPC (32-BIT AND 64-BIT) 7762LINUX FOR POWERPC (32-BIT AND 64-BIT)
7770M: Benjamin Herrenschmidt <benh@kernel.crashing.org> 7763M: Benjamin Herrenschmidt <benh@kernel.crashing.org>
7771M: Paul Mackerras <paulus@samba.org> 7764M: Paul Mackerras <paulus@samba.org>
@@ -7799,14 +7792,6 @@ N: powernv
7799N: [^a-z0-9]ps3 7792N: [^a-z0-9]ps3
7800N: pseries 7793N: pseries
7801 7794
7802LINUX FOR POWER MACINTOSH
7803M: Benjamin Herrenschmidt <benh@kernel.crashing.org>
7804W: http://www.penguinppc.org/
7805L: linuxppc-dev@lists.ozlabs.org
7806S: Maintained
7807F: arch/powerpc/platforms/powermac/
7808F: drivers/macintosh/
7809
7810LINUX FOR POWERPC EMBEDDED MPC5XXX 7795LINUX FOR POWERPC EMBEDDED MPC5XXX
7811M: Anatolij Gustschin <agust@denx.de> 7796M: Anatolij Gustschin <agust@denx.de>
7812L: linuxppc-dev@lists.ozlabs.org 7797L: linuxppc-dev@lists.ozlabs.org
@@ -7824,19 +7809,6 @@ S: Maintained
7824F: arch/powerpc/platforms/40x/ 7809F: arch/powerpc/platforms/40x/
7825F: arch/powerpc/platforms/44x/ 7810F: arch/powerpc/platforms/44x/
7826 7811
7827LINUX FOR POWERPC EMBEDDED XILINX VIRTEX
7828L: linuxppc-dev@lists.ozlabs.org
7829S: Orphan
7830F: arch/powerpc/*/*virtex*
7831F: arch/powerpc/*/*/*virtex*
7832
7833LINUX FOR POWERPC EMBEDDED PPC8XX
7834M: Vitaly Bordug <vitb@kernel.crashing.org>
7835W: http://www.penguinppc.org/
7836L: linuxppc-dev@lists.ozlabs.org
7837S: Maintained
7838F: arch/powerpc/platforms/8xx/
7839
7840LINUX FOR POWERPC EMBEDDED PPC83XX AND PPC85XX 7812LINUX FOR POWERPC EMBEDDED PPC83XX AND PPC85XX
7841M: Scott Wood <oss@buserror.net> 7813M: Scott Wood <oss@buserror.net>
7842M: Kumar Gala <galak@kernel.crashing.org> 7814M: Kumar Gala <galak@kernel.crashing.org>
@@ -7848,6 +7820,19 @@ F: arch/powerpc/platforms/83xx/
7848F: arch/powerpc/platforms/85xx/ 7820F: arch/powerpc/platforms/85xx/
7849F: Documentation/devicetree/bindings/powerpc/fsl/ 7821F: Documentation/devicetree/bindings/powerpc/fsl/
7850 7822
7823LINUX FOR POWERPC EMBEDDED PPC8XX
7824M: Vitaly Bordug <vitb@kernel.crashing.org>
7825W: http://www.penguinppc.org/
7826L: linuxppc-dev@lists.ozlabs.org
7827S: Maintained
7828F: arch/powerpc/platforms/8xx/
7829
7830LINUX FOR POWERPC EMBEDDED XILINX VIRTEX
7831L: linuxppc-dev@lists.ozlabs.org
7832S: Orphan
7833F: arch/powerpc/*/*virtex*
7834F: arch/powerpc/*/*/*virtex*
7835
7851LINUX FOR POWERPC PA SEMI PWRFICIENT 7836LINUX FOR POWERPC PA SEMI PWRFICIENT
7852L: linuxppc-dev@lists.ozlabs.org 7837L: linuxppc-dev@lists.ozlabs.org
7853S: Orphan 7838S: Orphan
@@ -7855,6 +7840,11 @@ F: arch/powerpc/platforms/pasemi/
7855F: drivers/*/*pasemi* 7840F: drivers/*/*pasemi*
7856F: drivers/*/*/*pasemi* 7841F: drivers/*/*/*pasemi*
7857 7842
7843LINUX KERNEL DUMP TEST MODULE (LKDTM)
7844M: Kees Cook <keescook@chromium.org>
7845S: Maintained
7846F: drivers/misc/lkdtm*
7847
7858LINUX SECURITY MODULE (LSM) FRAMEWORK 7848LINUX SECURITY MODULE (LSM) FRAMEWORK
7859M: Chris Wright <chrisw@sous-sol.org> 7849M: Chris Wright <chrisw@sous-sol.org>
7860L: linux-security-module@vger.kernel.org 7850L: linux-security-module@vger.kernel.org
@@ -7884,11 +7874,6 @@ F: samples/livepatch/
7884L: live-patching@vger.kernel.org 7874L: live-patching@vger.kernel.org
7885T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/livepatching.git 7875T: git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/livepatching.git
7886 7876
7887LINUX KERNEL DUMP TEST MODULE (LKDTM)
7888M: Kees Cook <keescook@chromium.org>
7889S: Maintained
7890F: drivers/misc/lkdtm*
7891
7892LLC (802.2) 7877LLC (802.2)
7893L: netdev@vger.kernel.org 7878L: netdev@vger.kernel.org
7894S: Odd fixes 7879S: Odd fixes
@@ -7941,6 +7926,13 @@ Q: http://patchwork.linuxtv.org/project/linux-media/list/
7941S: Maintained 7926S: Maintained
7942F: drivers/media/usb/dvb-usb-v2/lmedm04* 7927F: drivers/media/usb/dvb-usb-v2/lmedm04*
7943 7928
7929LOADPIN SECURITY MODULE
7930M: Kees Cook <keescook@chromium.org>
7931T: git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git lsm/loadpin
7932S: Supported
7933F: security/loadpin/
7934F: Documentation/admin-guide/LSM/LoadPin.rst
7935
7944LOCKING PRIMITIVES 7936LOCKING PRIMITIVES
7945M: Peter Zijlstra <peterz@infradead.org> 7937M: Peter Zijlstra <peterz@infradead.org>
7946M: Ingo Molnar <mingo@redhat.com> 7938M: Ingo Molnar <mingo@redhat.com>
@@ -8231,14 +8223,6 @@ S: Maintained
8231F: Documentation/devicetree/bindings/sound/max9860.txt 8223F: Documentation/devicetree/bindings/sound/max9860.txt
8232F: sound/soc/codecs/max9860.* 8224F: sound/soc/codecs/max9860.*
8233 8225
8234MAXIM MUIC CHARGER DRIVERS FOR EXYNOS BASED BOARDS
8235M: Krzysztof Kozlowski <krzk@kernel.org>
8236M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
8237L: linux-pm@vger.kernel.org
8238S: Supported
8239F: drivers/power/supply/max14577_charger.c
8240F: drivers/power/supply/max77693_charger.c
8241
8242MAXIM MAX77802 PMIC REGULATOR DEVICE DRIVER 8226MAXIM MAX77802 PMIC REGULATOR DEVICE DRIVER
8243M: Javier Martinez Canillas <javier@dowhile0.org> 8227M: Javier Martinez Canillas <javier@dowhile0.org>
8244L: linux-kernel@vger.kernel.org 8228L: linux-kernel@vger.kernel.org
@@ -8247,6 +8231,14 @@ F: drivers/regulator/max77802-regulator.c
8247F: Documentation/devicetree/bindings/*/*max77802.txt 8231F: Documentation/devicetree/bindings/*/*max77802.txt
8248F: include/dt-bindings/*/*max77802.h 8232F: include/dt-bindings/*/*max77802.h
8249 8233
8234MAXIM MUIC CHARGER DRIVERS FOR EXYNOS BASED BOARDS
8235M: Krzysztof Kozlowski <krzk@kernel.org>
8236M: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
8237L: linux-pm@vger.kernel.org
8238S: Supported
8239F: drivers/power/supply/max14577_charger.c
8240F: drivers/power/supply/max77693_charger.c
8241
8250MAXIM PMIC AND MUIC DRIVERS FOR EXYNOS BASED BOARDS 8242MAXIM PMIC AND MUIC DRIVERS FOR EXYNOS BASED BOARDS
8251M: Chanwoo Choi <cw00.choi@samsung.com> 8243M: Chanwoo Choi <cw00.choi@samsung.com>
8252M: Krzysztof Kozlowski <krzk@kernel.org> 8244M: Krzysztof Kozlowski <krzk@kernel.org>
@@ -8289,14 +8281,25 @@ L: linux-iio@vger.kernel.org
8289S: Maintained 8281S: Maintained
8290F: drivers/iio/dac/cio-dac.c 8282F: drivers/iio/dac/cio-dac.c
8291 8283
8292MEDIA DRIVERS FOR RENESAS - DRIF 8284MEDIA DRIVERS FOR ASCOT2E
8293M: Ramesh Shanmugasundaram <ramesh.shanmugasundaram@bp.renesas.com> 8285M: Sergey Kozlov <serjk@netup.ru>
8286M: Abylay Ospan <aospan@netup.ru>
8294L: linux-media@vger.kernel.org 8287L: linux-media@vger.kernel.org
8295L: linux-renesas-soc@vger.kernel.org 8288W: https://linuxtv.org
8289W: http://netup.tv/
8296T: git git://linuxtv.org/media_tree.git 8290T: git git://linuxtv.org/media_tree.git
8297S: Supported 8291S: Supported
8298F: Documentation/devicetree/bindings/media/renesas,drif.txt 8292F: drivers/media/dvb-frontends/ascot2e*
8299F: drivers/media/platform/rcar_drif.c 8293
8294MEDIA DRIVERS FOR CXD2841ER
8295M: Sergey Kozlov <serjk@netup.ru>
8296M: Abylay Ospan <aospan@netup.ru>
8297L: linux-media@vger.kernel.org
8298W: https://linuxtv.org
8299W: http://netup.tv/
8300T: git git://linuxtv.org/media_tree.git
8301S: Supported
8302F: drivers/media/dvb-frontends/cxd2841er*
8300 8303
8301MEDIA DRIVERS FOR FREESCALE IMX 8304MEDIA DRIVERS FOR FREESCALE IMX
8302M: Steve Longerbeam <slongerbeam@gmail.com> 8305M: Steve Longerbeam <slongerbeam@gmail.com>
@@ -8310,43 +8313,6 @@ F: drivers/staging/media/imx/
8310F: include/linux/imx-media.h 8313F: include/linux/imx-media.h
8311F: include/media/imx.h 8314F: include/media/imx.h
8312 8315
8313MEDIA DRIVERS FOR RENESAS - FCP
8314M: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
8315L: linux-media@vger.kernel.org
8316L: linux-renesas-soc@vger.kernel.org
8317T: git git://linuxtv.org/media_tree.git
8318S: Supported
8319F: Documentation/devicetree/bindings/media/renesas,fcp.txt
8320F: drivers/media/platform/rcar-fcp.c
8321F: include/media/rcar-fcp.h
8322
8323MEDIA DRIVERS FOR RENESAS - FDP1
8324M: Kieran Bingham <kieran@bingham.xyz>
8325L: linux-media@vger.kernel.org
8326L: linux-renesas-soc@vger.kernel.org
8327T: git git://linuxtv.org/media_tree.git
8328S: Supported
8329F: Documentation/devicetree/bindings/media/renesas,fdp1.txt
8330F: drivers/media/platform/rcar_fdp1.c
8331
8332MEDIA DRIVERS FOR RENESAS - VIN
8333M: Niklas Söderlund <niklas.soderlund@ragnatech.se>
8334L: linux-media@vger.kernel.org
8335L: linux-renesas-soc@vger.kernel.org
8336T: git git://linuxtv.org/media_tree.git
8337S: Supported
8338F: Documentation/devicetree/bindings/media/rcar_vin.txt
8339F: drivers/media/platform/rcar-vin/
8340
8341MEDIA DRIVERS FOR RENESAS - VSP1
8342M: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
8343L: linux-media@vger.kernel.org
8344L: linux-renesas-soc@vger.kernel.org
8345T: git git://linuxtv.org/media_tree.git
8346S: Supported
8347F: Documentation/devicetree/bindings/media/renesas,vsp1.txt
8348F: drivers/media/platform/vsp1/
8349
8350MEDIA DRIVERS FOR HELENE 8316MEDIA DRIVERS FOR HELENE
8351M: Abylay Ospan <aospan@netup.ru> 8317M: Abylay Ospan <aospan@netup.ru>
8352L: linux-media@vger.kernel.org 8318L: linux-media@vger.kernel.org
@@ -8356,7 +8322,7 @@ T: git git://linuxtv.org/media_tree.git
8356S: Supported 8322S: Supported
8357F: drivers/media/dvb-frontends/helene* 8323F: drivers/media/dvb-frontends/helene*
8358 8324
8359MEDIA DRIVERS FOR ASCOT2E 8325MEDIA DRIVERS FOR HORUS3A
8360M: Sergey Kozlov <serjk@netup.ru> 8326M: Sergey Kozlov <serjk@netup.ru>
8361M: Abylay Ospan <aospan@netup.ru> 8327M: Abylay Ospan <aospan@netup.ru>
8362L: linux-media@vger.kernel.org 8328L: linux-media@vger.kernel.org
@@ -8364,9 +8330,9 @@ W: https://linuxtv.org
8364W: http://netup.tv/ 8330W: http://netup.tv/
8365T: git git://linuxtv.org/media_tree.git 8331T: git git://linuxtv.org/media_tree.git
8366S: Supported 8332S: Supported
8367F: drivers/media/dvb-frontends/ascot2e* 8333F: drivers/media/dvb-frontends/horus3a*
8368 8334
8369MEDIA DRIVERS FOR CXD2841ER 8335MEDIA DRIVERS FOR LNBH25
8370M: Sergey Kozlov <serjk@netup.ru> 8336M: Sergey Kozlov <serjk@netup.ru>
8371M: Abylay Ospan <aospan@netup.ru> 8337M: Abylay Ospan <aospan@netup.ru>
8372L: linux-media@vger.kernel.org 8338L: linux-media@vger.kernel.org
@@ -8374,9 +8340,9 @@ W: https://linuxtv.org
8374W: http://netup.tv/ 8340W: http://netup.tv/
8375T: git git://linuxtv.org/media_tree.git 8341T: git git://linuxtv.org/media_tree.git
8376S: Supported 8342S: Supported
8377F: drivers/media/dvb-frontends/cxd2841er* 8343F: drivers/media/dvb-frontends/lnbh25*
8378 8344
8379MEDIA DRIVERS FOR HORUS3A 8345MEDIA DRIVERS FOR NETUP PCI UNIVERSAL DVB devices
8380M: Sergey Kozlov <serjk@netup.ru> 8346M: Sergey Kozlov <serjk@netup.ru>
8381M: Abylay Ospan <aospan@netup.ru> 8347M: Abylay Ospan <aospan@netup.ru>
8382L: linux-media@vger.kernel.org 8348L: linux-media@vger.kernel.org
@@ -8384,27 +8350,53 @@ W: https://linuxtv.org
8384W: http://netup.tv/ 8350W: http://netup.tv/
8385T: git git://linuxtv.org/media_tree.git 8351T: git git://linuxtv.org/media_tree.git
8386S: Supported 8352S: Supported
8387F: drivers/media/dvb-frontends/horus3a* 8353F: drivers/media/pci/netup_unidvb/*
8388 8354
8389MEDIA DRIVERS FOR LNBH25 8355MEDIA DRIVERS FOR RENESAS - DRIF
8390M: Sergey Kozlov <serjk@netup.ru> 8356M: Ramesh Shanmugasundaram <ramesh.shanmugasundaram@bp.renesas.com>
8391M: Abylay Ospan <aospan@netup.ru>
8392L: linux-media@vger.kernel.org 8357L: linux-media@vger.kernel.org
8393W: https://linuxtv.org 8358L: linux-renesas-soc@vger.kernel.org
8394W: http://netup.tv/
8395T: git git://linuxtv.org/media_tree.git 8359T: git git://linuxtv.org/media_tree.git
8396S: Supported 8360S: Supported
8397F: drivers/media/dvb-frontends/lnbh25* 8361F: Documentation/devicetree/bindings/media/renesas,drif.txt
8362F: drivers/media/platform/rcar_drif.c
8398 8363
8399MEDIA DRIVERS FOR NETUP PCI UNIVERSAL DVB devices 8364MEDIA DRIVERS FOR RENESAS - FCP
8400M: Sergey Kozlov <serjk@netup.ru> 8365M: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
8401M: Abylay Ospan <aospan@netup.ru>
8402L: linux-media@vger.kernel.org 8366L: linux-media@vger.kernel.org
8403W: https://linuxtv.org 8367L: linux-renesas-soc@vger.kernel.org
8404W: http://netup.tv/
8405T: git git://linuxtv.org/media_tree.git 8368T: git git://linuxtv.org/media_tree.git
8406S: Supported 8369S: Supported
8407F: drivers/media/pci/netup_unidvb/* 8370F: Documentation/devicetree/bindings/media/renesas,fcp.txt
8371F: drivers/media/platform/rcar-fcp.c
8372F: include/media/rcar-fcp.h
8373
8374MEDIA DRIVERS FOR RENESAS - FDP1
8375M: Kieran Bingham <kieran@bingham.xyz>
8376L: linux-media@vger.kernel.org
8377L: linux-renesas-soc@vger.kernel.org
8378T: git git://linuxtv.org/media_tree.git
8379S: Supported
8380F: Documentation/devicetree/bindings/media/renesas,fdp1.txt
8381F: drivers/media/platform/rcar_fdp1.c
8382
8383MEDIA DRIVERS FOR RENESAS - VIN
8384M: Niklas Söderlund <niklas.soderlund@ragnatech.se>
8385L: linux-media@vger.kernel.org
8386L: linux-renesas-soc@vger.kernel.org
8387T: git git://linuxtv.org/media_tree.git
8388S: Supported
8389F: Documentation/devicetree/bindings/media/rcar_vin.txt
8390F: drivers/media/platform/rcar-vin/
8391
8392MEDIA DRIVERS FOR RENESAS - VSP1
8393M: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
8394L: linux-media@vger.kernel.org
8395L: linux-renesas-soc@vger.kernel.org
8396T: git git://linuxtv.org/media_tree.git
8397S: Supported
8398F: Documentation/devicetree/bindings/media/renesas,vsp1.txt
8399F: drivers/media/platform/vsp1/
8408 8400
8409MEDIA INPUT INFRASTRUCTURE (V4L/DVB) 8401MEDIA INPUT INFRASTRUCTURE (V4L/DVB)
8410M: Mauro Carvalho Chehab <mchehab@s-opensource.com> 8402M: Mauro Carvalho Chehab <mchehab@s-opensource.com>
@@ -8443,15 +8435,6 @@ S: Supported
8443F: drivers/media/platform/mtk-jpeg/ 8435F: drivers/media/platform/mtk-jpeg/
8444F: Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt 8436F: Documentation/devicetree/bindings/media/mediatek-jpeg-decoder.txt
8445 8437
8446MEDIATEK MEDIA DRIVER
8447M: Tiffany Lin <tiffany.lin@mediatek.com>
8448M: Andrew-CT Chen <andrew-ct.chen@mediatek.com>
8449S: Supported
8450F: drivers/media/platform/mtk-vcodec/
8451F: drivers/media/platform/mtk-vpu/
8452F: Documentation/devicetree/bindings/media/mediatek-vcodec.txt
8453F: Documentation/devicetree/bindings/media/mediatek-vpu.txt
8454
8455MEDIATEK MDP DRIVER 8438MEDIATEK MDP DRIVER
8456M: Minghsiu Tsai <minghsiu.tsai@mediatek.com> 8439M: Minghsiu Tsai <minghsiu.tsai@mediatek.com>
8457M: Houlong Wei <houlong.wei@mediatek.com> 8440M: Houlong Wei <houlong.wei@mediatek.com>
@@ -8461,6 +8444,15 @@ F: drivers/media/platform/mtk-mdp/
8461F: drivers/media/platform/mtk-vpu/ 8444F: drivers/media/platform/mtk-vpu/
8462F: Documentation/devicetree/bindings/media/mediatek-mdp.txt 8445F: Documentation/devicetree/bindings/media/mediatek-mdp.txt
8463 8446
8447MEDIATEK MEDIA DRIVER
8448M: Tiffany Lin <tiffany.lin@mediatek.com>
8449M: Andrew-CT Chen <andrew-ct.chen@mediatek.com>
8450S: Supported
8451F: drivers/media/platform/mtk-vcodec/
8452F: drivers/media/platform/mtk-vpu/
8453F: Documentation/devicetree/bindings/media/mediatek-vcodec.txt
8454F: Documentation/devicetree/bindings/media/mediatek-vpu.txt
8455
8464MEDIATEK MT7601U WIRELESS LAN DRIVER 8456MEDIATEK MT7601U WIRELESS LAN DRIVER
8465M: Jakub Kicinski <kubakici@wp.pl> 8457M: Jakub Kicinski <kubakici@wp.pl>
8466L: linux-wireless@vger.kernel.org 8458L: linux-wireless@vger.kernel.org
@@ -8468,9 +8460,9 @@ S: Maintained
8468F: drivers/net/wireless/mediatek/mt7601u/ 8460F: drivers/net/wireless/mediatek/mt7601u/
8469 8461
8470MEDIATEK RANDOM NUMBER GENERATOR SUPPORT 8462MEDIATEK RANDOM NUMBER GENERATOR SUPPORT
8471M: Sean Wang <sean.wang@mediatek.com> 8463M: Sean Wang <sean.wang@mediatek.com>
8472S: Maintained 8464S: Maintained
8473F: drivers/char/hw_random/mtk-rng.c 8465F: drivers/char/hw_random/mtk-rng.c
8474 8466
8475MEGACHIPS STDPXXXX-GE-B850V3-FW LVDS/DP++ BRIDGES 8467MEGACHIPS STDPXXXX-GE-B850V3-FW LVDS/DP++ BRIDGES
8476M: Peter Senna Tschudin <peter.senna@collabora.com> 8468M: Peter Senna Tschudin <peter.senna@collabora.com>
@@ -8492,6 +8484,13 @@ F: Documentation/scsi/megaraid.txt
8492F: drivers/scsi/megaraid.* 8484F: drivers/scsi/megaraid.*
8493F: drivers/scsi/megaraid/ 8485F: drivers/scsi/megaraid/
8494 8486
8487MELEXIS MLX90614 DRIVER
8488M: Crt Mori <cmo@melexis.com>
8489L: linux-iio@vger.kernel.org
8490W: http://www.melexis.com
8491S: Supported
8492F: drivers/iio/temperature/mlx90614.c
8493
8495MELFAS MIP4 TOUCHSCREEN DRIVER 8494MELFAS MIP4 TOUCHSCREEN DRIVER
8496M: Sangwon Jee <jeesw@melfas.com> 8495M: Sangwon Jee <jeesw@melfas.com>
8497W: http://www.melfas.com 8496W: http://www.melfas.com
@@ -8552,6 +8551,56 @@ W: http://www.mellanox.com
8552Q: http://patchwork.ozlabs.org/project/netdev/list/ 8551Q: http://patchwork.ozlabs.org/project/netdev/list/
8553F: drivers/net/ethernet/mellanox/mlxfw/ 8552F: drivers/net/ethernet/mellanox/mlxfw/
8554 8553
8554MELLANOX MLX CPLD HOTPLUG DRIVER
8555M: Vadim Pasternak <vadimp@mellanox.com>
8556L: platform-driver-x86@vger.kernel.org
8557S: Supported
8558F: drivers/platform/x86/mlxcpld-hotplug.c
8559F: include/linux/platform_data/mlxcpld-hotplug.h
8560
8561MELLANOX MLX4 core VPI driver
8562M: Tariq Toukan <tariqt@mellanox.com>
8563L: netdev@vger.kernel.org
8564L: linux-rdma@vger.kernel.org
8565W: http://www.mellanox.com
8566Q: http://patchwork.ozlabs.org/project/netdev/list/
8567S: Supported
8568F: drivers/net/ethernet/mellanox/mlx4/
8569F: include/linux/mlx4/
8570
8571MELLANOX MLX4 IB driver
8572M: Yishai Hadas <yishaih@mellanox.com>
8573L: linux-rdma@vger.kernel.org
8574W: http://www.mellanox.com
8575Q: http://patchwork.kernel.org/project/linux-rdma/list/
8576S: Supported
8577F: drivers/infiniband/hw/mlx4/
8578F: include/linux/mlx4/
8579F: include/uapi/rdma/mlx4-abi.h
8580
8581MELLANOX MLX5 core VPI driver
8582M: Saeed Mahameed <saeedm@mellanox.com>
8583M: Matan Barak <matanb@mellanox.com>
8584M: Leon Romanovsky <leonro@mellanox.com>
8585L: netdev@vger.kernel.org
8586L: linux-rdma@vger.kernel.org
8587W: http://www.mellanox.com
8588Q: http://patchwork.ozlabs.org/project/netdev/list/
8589S: Supported
8590F: drivers/net/ethernet/mellanox/mlx5/core/
8591F: include/linux/mlx5/
8592
8593MELLANOX MLX5 IB driver
8594M: Matan Barak <matanb@mellanox.com>
8595M: Leon Romanovsky <leonro@mellanox.com>
8596L: linux-rdma@vger.kernel.org
8597W: http://www.mellanox.com
8598Q: http://patchwork.kernel.org/project/linux-rdma/list/
8599S: Supported
8600F: drivers/infiniband/hw/mlx5/
8601F: include/linux/mlx5/
8602F: include/uapi/rdma/mlx5-abi.h
8603
8555MELLANOX MLXCPLD I2C AND MUX DRIVER 8604MELLANOX MLXCPLD I2C AND MUX DRIVER
8556M: Vadim Pasternak <vadimp@mellanox.com> 8605M: Vadim Pasternak <vadimp@mellanox.com>
8557M: Michael Shych <michaelsh@mellanox.com> 8606M: Michael Shych <michaelsh@mellanox.com>
@@ -8569,26 +8618,10 @@ F: drivers/leds/leds-mlxcpld.c
8569F: Documentation/leds/leds-mlxcpld.txt 8618F: Documentation/leds/leds-mlxcpld.txt
8570 8619
8571MELLANOX PLATFORM DRIVER 8620MELLANOX PLATFORM DRIVER
8572M: Vadim Pasternak <vadimp@mellanox.com>
8573L: platform-driver-x86@vger.kernel.org
8574S: Supported
8575F: drivers/platform/x86/mlx-platform.c
8576
8577MELLANOX MLX CPLD HOTPLUG DRIVER
8578M: Vadim Pasternak <vadimp@mellanox.com> 8621M: Vadim Pasternak <vadimp@mellanox.com>
8579L: platform-driver-x86@vger.kernel.org 8622L: platform-driver-x86@vger.kernel.org
8580S: Supported 8623S: Supported
8581F: drivers/platform/x86/mlxcpld-hotplug.c 8624F: drivers/platform/x86/mlx-platform.c
8582F: include/linux/platform_data/mlxcpld-hotplug.h
8583
8584SOFT-ROCE DRIVER (rxe)
8585M: Moni Shoua <monis@mellanox.com>
8586L: linux-rdma@vger.kernel.org
8587S: Supported
8588W: https://github.com/SoftRoCE/rxe-dev/wiki/rxe-dev:-Home
8589Q: http://patchwork.kernel.org/project/linux-rdma/list/
8590F: drivers/infiniband/sw/rxe/
8591F: include/uapi/rdma/rdma_user_rxe.h
8592 8625
8593MEMBARRIER SUPPORT 8626MEMBARRIER SUPPORT
8594M: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> 8627M: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
@@ -8710,6 +8743,18 @@ S: Maintained
8710F: drivers/usb/misc/usb251xb.c 8743F: drivers/usb/misc/usb251xb.c
8711F: Documentation/devicetree/bindings/usb/usb251xb.txt 8744F: Documentation/devicetree/bindings/usb/usb251xb.txt
8712 8745
8746MICROSEMI SMART ARRAY SMARTPQI DRIVER (smartpqi)
8747M: Don Brace <don.brace@microsemi.com>
8748L: esc.storagedev@microsemi.com
8749L: linux-scsi@vger.kernel.org
8750S: Supported
8751F: drivers/scsi/smartpqi/smartpqi*.[ch]
8752F: drivers/scsi/smartpqi/Kconfig
8753F: drivers/scsi/smartpqi/Makefile
8754F: include/linux/cciss*.h
8755F: include/uapi/linux/cciss*.h
8756F: Documentation/scsi/smartpqi.txt
8757
8713MICROSOFT SURFACE PRO 3 BUTTON DRIVER 8758MICROSOFT SURFACE PRO 3 BUTTON DRIVER
8714M: Chen Yu <yu.c.chen@intel.com> 8759M: Chen Yu <yu.c.chen@intel.com>
8715L: platform-driver-x86@vger.kernel.org 8760L: platform-driver-x86@vger.kernel.org
@@ -8732,6 +8777,16 @@ F: Documentation/devicetree/bindings/mips/
8732F: Documentation/mips/ 8777F: Documentation/mips/
8733F: arch/mips/ 8778F: arch/mips/
8734 8779
8780MIPS BOSTON DEVELOPMENT BOARD
8781M: Paul Burton <paul.burton@imgtec.com>
8782L: linux-mips@linux-mips.org
8783S: Maintained
8784F: Documentation/devicetree/bindings/clock/img,boston-clock.txt
8785F: arch/mips/boot/dts/img/boston.dts
8786F: arch/mips/configs/generic/board-boston.config
8787F: drivers/clk/imgtec/clk-boston.c
8788F: include/dt-bindings/clock/boston-clock.h
8789
8735MIPS GENERIC PLATFORM 8790MIPS GENERIC PLATFORM
8736M: Paul Burton <paul.burton@imgtec.com> 8791M: Paul Burton <paul.burton@imgtec.com>
8737L: linux-mips@linux-mips.org 8792L: linux-mips@linux-mips.org
@@ -8747,16 +8802,6 @@ F: arch/mips/include/asm/mach-loongson32/
8747F: drivers/*/*loongson1* 8802F: drivers/*/*loongson1*
8748F: drivers/*/*/*loongson1* 8803F: drivers/*/*/*loongson1*
8749 8804
8750MIPS BOSTON DEVELOPMENT BOARD
8751M: Paul Burton <paul.burton@imgtec.com>
8752L: linux-mips@linux-mips.org
8753S: Maintained
8754F: Documentation/devicetree/bindings/clock/img,boston-clock.txt
8755F: arch/mips/boot/dts/img/boston.dts
8756F: arch/mips/configs/generic/board-boston.config
8757F: drivers/clk/imgtec/clk-boston.c
8758F: include/dt-bindings/clock/boston-clock.h
8759
8760MIROSOUND PCM20 FM RADIO RECEIVER DRIVER 8805MIROSOUND PCM20 FM RADIO RECEIVER DRIVER
8761M: Hans Verkuil <hverkuil@xs4all.nl> 8806M: Hans Verkuil <hverkuil@xs4all.nl>
8762L: linux-media@vger.kernel.org 8807L: linux-media@vger.kernel.org
@@ -8765,67 +8810,15 @@ W: https://linuxtv.org
8765S: Odd Fixes 8810S: Odd Fixes
8766F: drivers/media/radio/radio-miropcm20* 8811F: drivers/media/radio/radio-miropcm20*
8767 8812
8768MELLANOX MLX4 core VPI driver 8813MMP SUPPORT
8769M: Tariq Toukan <tariqt@mellanox.com> 8814M: Eric Miao <eric.y.miao@gmail.com>
8770L: netdev@vger.kernel.org 8815M: Haojian Zhuang <haojian.zhuang@gmail.com>
8771L: linux-rdma@vger.kernel.org 8816L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
8772W: http://www.mellanox.com 8817T: git git://github.com/hzhuang1/linux.git
8773Q: http://patchwork.ozlabs.org/project/netdev/list/ 8818T: git git://git.linaro.org/people/ycmiao/pxa-linux.git
8774S: Supported 8819S: Maintained
8775F: drivers/net/ethernet/mellanox/mlx4/ 8820F: arch/arm/boot/dts/mmp*
8776F: include/linux/mlx4/ 8821F: arch/arm/mach-mmp/
8777
8778MELLANOX MLX4 IB driver
8779M: Yishai Hadas <yishaih@mellanox.com>
8780L: linux-rdma@vger.kernel.org
8781W: http://www.mellanox.com
8782Q: http://patchwork.kernel.org/project/linux-rdma/list/
8783S: Supported
8784F: drivers/infiniband/hw/mlx4/
8785F: include/linux/mlx4/
8786F: include/uapi/rdma/mlx4-abi.h
8787
8788MELLANOX MLX5 core VPI driver
8789M: Saeed Mahameed <saeedm@mellanox.com>
8790M: Matan Barak <matanb@mellanox.com>
8791M: Leon Romanovsky <leonro@mellanox.com>
8792L: netdev@vger.kernel.org
8793L: linux-rdma@vger.kernel.org
8794W: http://www.mellanox.com
8795Q: http://patchwork.ozlabs.org/project/netdev/list/
8796S: Supported
8797F: drivers/net/ethernet/mellanox/mlx5/core/
8798F: include/linux/mlx5/
8799
8800MELLANOX MLX5 IB driver
8801M: Matan Barak <matanb@mellanox.com>
8802M: Leon Romanovsky <leonro@mellanox.com>
8803L: linux-rdma@vger.kernel.org
8804W: http://www.mellanox.com
8805Q: http://patchwork.kernel.org/project/linux-rdma/list/
8806S: Supported
8807F: drivers/infiniband/hw/mlx5/
8808F: include/linux/mlx5/
8809F: include/uapi/rdma/mlx5-abi.h
8810
8811MELEXIS MLX90614 DRIVER
8812M: Crt Mori <cmo@melexis.com>
8813L: linux-iio@vger.kernel.org
8814W: http://www.melexis.com
8815S: Supported
8816F: drivers/iio/temperature/mlx90614.c
8817
8818MICROSEMI SMART ARRAY SMARTPQI DRIVER (smartpqi)
8819M: Don Brace <don.brace@microsemi.com>
8820L: esc.storagedev@microsemi.com
8821L: linux-scsi@vger.kernel.org
8822S: Supported
8823F: drivers/scsi/smartpqi/smartpqi*.[ch]
8824F: drivers/scsi/smartpqi/Kconfig
8825F: drivers/scsi/smartpqi/Makefile
8826F: include/linux/cciss*.h
8827F: include/uapi/linux/cciss*.h
8828F: Documentation/scsi/smartpqi.txt
8829 8822
8830MN88472 MEDIA DRIVER 8823MN88472 MEDIA DRIVER
8831M: Antti Palosaari <crope@iki.fi> 8824M: Antti Palosaari <crope@iki.fi>
@@ -8959,6 +8952,11 @@ F: drivers/mfd/
8959F: include/linux/mfd/ 8952F: include/linux/mfd/
8960F: include/dt-bindings/mfd/ 8953F: include/dt-bindings/mfd/
8961 8954
8955MULTIMEDIA CARD (MMC) ETC. OVER SPI
8956S: Orphan
8957F: drivers/mmc/host/mmc_spi.c
8958F: include/linux/spi/mmc_spi.h
8959
8962MULTIMEDIA CARD (MMC), SECURE DIGITAL (SD) AND SDIO SUBSYSTEM 8960MULTIMEDIA CARD (MMC), SECURE DIGITAL (SD) AND SDIO SUBSYSTEM
8963M: Ulf Hansson <ulf.hansson@linaro.org> 8961M: Ulf Hansson <ulf.hansson@linaro.org>
8964L: linux-mmc@vger.kernel.org 8962L: linux-mmc@vger.kernel.org
@@ -8969,11 +8967,6 @@ F: drivers/mmc/
8969F: include/linux/mmc/ 8967F: include/linux/mmc/
8970F: include/uapi/linux/mmc/ 8968F: include/uapi/linux/mmc/
8971 8969
8972MULTIMEDIA CARD (MMC) ETC. OVER SPI
8973S: Orphan
8974F: drivers/mmc/host/mmc_spi.c
8975F: include/linux/spi/mmc_spi.h
8976
8977MULTIPLEXER SUBSYSTEM 8970MULTIPLEXER SUBSYSTEM
8978M: Peter Rosin <peda@axentia.se> 8971M: Peter Rosin <peda@axentia.se>
8979S: Maintained 8972S: Maintained
@@ -9036,10 +9029,6 @@ S: Maintained
9036F: drivers/mtd/nand/ 9029F: drivers/mtd/nand/
9037F: include/linux/mtd/nand*.h 9030F: include/linux/mtd/nand*.h
9038 9031
9039NATSEMI ETHERNET DRIVER (DP8381x)
9040S: Orphan
9041F: drivers/net/ethernet/natsemi/natsemi.c
9042
9043NATIVE INSTRUMENTS USB SOUND INTERFACE DRIVER 9032NATIVE INSTRUMENTS USB SOUND INTERFACE DRIVER
9044M: Daniel Mack <zonque@gmail.com> 9033M: Daniel Mack <zonque@gmail.com>
9045S: Maintained 9034S: Maintained
@@ -9047,6 +9036,10 @@ L: alsa-devel@alsa-project.org (moderated for non-subscribers)
9047W: http://www.native-instruments.com 9036W: http://www.native-instruments.com
9048F: sound/usb/caiaq/ 9037F: sound/usb/caiaq/
9049 9038
9039NATSEMI ETHERNET DRIVER (DP8381x)
9040S: Orphan
9041F: drivers/net/ethernet/natsemi/natsemi.c
9042
9050NCP FILESYSTEM 9043NCP FILESYSTEM
9051M: Petr Vandrovec <petr@vandrovec.name> 9044M: Petr Vandrovec <petr@vandrovec.name>
9052S: Odd Fixes 9045S: Odd Fixes
@@ -9166,6 +9159,35 @@ S: Maintained
9166W: https://fedorahosted.org/dropwatch/ 9159W: https://fedorahosted.org/dropwatch/
9167F: net/core/drop_monitor.c 9160F: net/core/drop_monitor.c
9168 9161
9162NETWORKING DRIVERS
9163L: netdev@vger.kernel.org
9164W: http://www.linuxfoundation.org/en/Net
9165Q: http://patchwork.ozlabs.org/project/netdev/list/
9166T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git
9167T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git
9168S: Odd Fixes
9169F: Documentation/devicetree/bindings/net/
9170F: drivers/net/
9171F: include/linux/if_*
9172F: include/linux/netdevice.h
9173F: include/linux/etherdevice.h
9174F: include/linux/fcdevice.h
9175F: include/linux/fddidevice.h
9176F: include/linux/hippidevice.h
9177F: include/linux/inetdevice.h
9178F: include/uapi/linux/if_*
9179F: include/uapi/linux/netdevice.h
9180
9181NETWORKING DRIVERS (WIRELESS)
9182M: Kalle Valo <kvalo@codeaurora.org>
9183L: linux-wireless@vger.kernel.org
9184Q: http://patchwork.kernel.org/project/linux-wireless/list/
9185T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers.git
9186T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git
9187S: Maintained
9188F: Documentation/devicetree/bindings/net/wireless/
9189F: drivers/net/wireless/
9190
9169NETWORKING [DSA] 9191NETWORKING [DSA]
9170M: Andrew Lunn <andrew@lunn.ch> 9192M: Andrew Lunn <andrew@lunn.ch>
9171M: Vivien Didelot <vivien.didelot@savoirfairelinux.com> 9193M: Vivien Didelot <vivien.didelot@savoirfairelinux.com>
@@ -9197,28 +9219,6 @@ F: tools/net/
9197F: tools/testing/selftests/net/ 9219F: tools/testing/selftests/net/
9198F: lib/random32.c 9220F: lib/random32.c
9199 9221
9200NETWORKING [IPv4/IPv6]
9201M: "David S. Miller" <davem@davemloft.net>
9202M: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
9203M: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
9204L: netdev@vger.kernel.org
9205T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git
9206S: Maintained
9207F: net/ipv4/
9208F: net/ipv6/
9209F: include/net/ip*
9210F: arch/x86/net/*
9211
9212NETWORKING [TLS]
9213M: Ilya Lesokhin <ilyal@mellanox.com>
9214M: Aviad Yehezkel <aviadye@mellanox.com>
9215M: Dave Watson <davejwatson@fb.com>
9216L: netdev@vger.kernel.org
9217S: Maintained
9218F: net/tls/*
9219F: include/uapi/linux/tls.h
9220F: include/net/tls.h
9221
9222NETWORKING [IPSEC] 9222NETWORKING [IPSEC]
9223M: Steffen Klassert <steffen.klassert@secunet.com> 9223M: Steffen Klassert <steffen.klassert@secunet.com>
9224M: Herbert Xu <herbert@gondor.apana.org.au> 9224M: Herbert Xu <herbert@gondor.apana.org.au>
@@ -9243,43 +9243,36 @@ F: net/ipv6/ip6_vti.c
9243F: include/uapi/linux/xfrm.h 9243F: include/uapi/linux/xfrm.h
9244F: include/net/xfrm.h 9244F: include/net/xfrm.h
9245 9245
9246NETWORKING [IPv4/IPv6]
9247M: "David S. Miller" <davem@davemloft.net>
9248M: Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
9249M: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
9250L: netdev@vger.kernel.org
9251T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git
9252S: Maintained
9253F: net/ipv4/
9254F: net/ipv6/
9255F: include/net/ip*
9256F: arch/x86/net/*
9257
9246NETWORKING [LABELED] (NetLabel, CIPSO, Labeled IPsec, SECMARK) 9258NETWORKING [LABELED] (NetLabel, CIPSO, Labeled IPsec, SECMARK)
9247M: Paul Moore <paul@paul-moore.com> 9259M: Paul Moore <paul@paul-moore.com>
9248L: netdev@vger.kernel.org 9260L: netdev@vger.kernel.org
9249S: Maintained 9261S: Maintained
9250 9262
9251NETWORKING [WIRELESS] 9263NETWORKING [TLS]
9252L: linux-wireless@vger.kernel.org 9264M: Ilya Lesokhin <ilyal@mellanox.com>
9253Q: http://patchwork.kernel.org/project/linux-wireless/list/ 9265M: Aviad Yehezkel <aviadye@mellanox.com>
9254 9266M: Dave Watson <davejwatson@fb.com>
9255NETWORKING DRIVERS
9256L: netdev@vger.kernel.org 9267L: netdev@vger.kernel.org
9257W: http://www.linuxfoundation.org/en/Net 9268S: Maintained
9258Q: http://patchwork.ozlabs.org/project/netdev/list/ 9269F: net/tls/*
9259T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git 9270F: include/uapi/linux/tls.h
9260T: git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 9271F: include/net/tls.h
9261S: Odd Fixes
9262F: Documentation/devicetree/bindings/net/
9263F: drivers/net/
9264F: include/linux/if_*
9265F: include/linux/netdevice.h
9266F: include/linux/etherdevice.h
9267F: include/linux/fcdevice.h
9268F: include/linux/fddidevice.h
9269F: include/linux/hippidevice.h
9270F: include/linux/inetdevice.h
9271F: include/uapi/linux/if_*
9272F: include/uapi/linux/netdevice.h
9273 9272
9274NETWORKING DRIVERS (WIRELESS) 9273NETWORKING [WIRELESS]
9275M: Kalle Valo <kvalo@codeaurora.org>
9276L: linux-wireless@vger.kernel.org 9274L: linux-wireless@vger.kernel.org
9277Q: http://patchwork.kernel.org/project/linux-wireless/list/ 9275Q: http://patchwork.kernel.org/project/linux-wireless/list/
9278T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers.git
9279T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git
9280S: Maintained
9281F: Documentation/devicetree/bindings/net/wireless/
9282F: drivers/net/wireless/
9283 9276
9284NETXEN (1/10) GbE SUPPORT 9277NETXEN (1/10) GbE SUPPORT
9285M: Manish Chopra <manish.chopra@cavium.com> 9278M: Manish Chopra <manish.chopra@cavium.com>
@@ -9373,14 +9366,6 @@ S: Maintained
9373F: drivers/media/i2c/et8ek8 9366F: drivers/media/i2c/et8ek8
9374F: drivers/media/i2c/ad5820.c 9367F: drivers/media/i2c/ad5820.c
9375 9368
9376NOKIA N900 CAMERA SUPPORT (ET8EK8 SENSOR, AD5820 FOCUS)
9377M: Pavel Machek <pavel@ucw.cz>
9378M: Sakari Ailus <sakari.ailus@iki.fi>
9379L: linux-media@vger.kernel.org
9380S: Maintained
9381F: drivers/media/i2c/et8ek8
9382F: drivers/media/i2c/ad5820.c
9383
9384NOKIA N900 POWER SUPPLY DRIVERS 9369NOKIA N900 POWER SUPPLY DRIVERS
9385R: Pali Rohár <pali.rohar@gmail.com> 9370R: Pali Rohár <pali.rohar@gmail.com>
9386F: include/linux/power/bq2415x_charger.h 9371F: include/linux/power/bq2415x_charger.h
@@ -9392,6 +9377,12 @@ F: drivers/power/supply/bq27xxx_battery_i2c.c
9392F: drivers/power/supply/isp1704_charger.c 9377F: drivers/power/supply/isp1704_charger.c
9393F: drivers/power/supply/rx51_battery.c 9378F: drivers/power/supply/rx51_battery.c
9394 9379
9380NTB AMD DRIVER
9381M: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
9382L: linux-ntb@googlegroups.com
9383S: Supported
9384F: drivers/ntb/hw/amd/
9385
9395NTB DRIVER CORE 9386NTB DRIVER CORE
9396M: Jon Mason <jdmason@kudzu.us> 9387M: Jon Mason <jdmason@kudzu.us>
9397M: Dave Jiang <dave.jiang@intel.com> 9388M: Dave Jiang <dave.jiang@intel.com>
@@ -9421,12 +9412,6 @@ W: https://github.com/jonmason/ntb/wiki
9421T: git git://github.com/jonmason/ntb.git 9412T: git git://github.com/jonmason/ntb.git
9422F: drivers/ntb/hw/intel/ 9413F: drivers/ntb/hw/intel/
9423 9414
9424NTB AMD DRIVER
9425M: Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
9426L: linux-ntb@googlegroups.com
9427S: Supported
9428F: drivers/ntb/hw/amd/
9429
9430NTFS FILESYSTEM 9415NTFS FILESYSTEM
9431M: Anton Altaparmakov <anton@tuxera.com> 9416M: Anton Altaparmakov <anton@tuxera.com>
9432L: linux-ntfs-dev@lists.sourceforge.net 9417L: linux-ntfs-dev@lists.sourceforge.net
@@ -9456,15 +9441,6 @@ F: drivers/nvme/host/
9456F: include/linux/nvme.h 9441F: include/linux/nvme.h
9457F: include/uapi/linux/nvme_ioctl.h 9442F: include/uapi/linux/nvme_ioctl.h
9458 9443
9459NVM EXPRESS TARGET DRIVER
9460M: Christoph Hellwig <hch@lst.de>
9461M: Sagi Grimberg <sagi@grimberg.me>
9462L: linux-nvme@lists.infradead.org
9463T: git://git.infradead.org/nvme.git
9464W: http://git.infradead.org/nvme.git
9465S: Supported
9466F: drivers/nvme/target/
9467
9468NVM EXPRESS FC TRANSPORT DRIVERS 9444NVM EXPRESS FC TRANSPORT DRIVERS
9469M: James Smart <james.smart@broadcom.com> 9445M: James Smart <james.smart@broadcom.com>
9470L: linux-nvme@lists.infradead.org 9446L: linux-nvme@lists.infradead.org
@@ -9475,6 +9451,15 @@ F: drivers/nvme/host/fc.c
9475F: drivers/nvme/target/fc.c 9451F: drivers/nvme/target/fc.c
9476F: drivers/nvme/target/fcloop.c 9452F: drivers/nvme/target/fcloop.c
9477 9453
9454NVM EXPRESS TARGET DRIVER
9455M: Christoph Hellwig <hch@lst.de>
9456M: Sagi Grimberg <sagi@grimberg.me>
9457L: linux-nvme@lists.infradead.org
9458T: git://git.infradead.org/nvme.git
9459W: http://git.infradead.org/nvme.git
9460S: Supported
9461F: drivers/nvme/target/
9462
9478NVMEM FRAMEWORK 9463NVMEM FRAMEWORK
9479M: Srinivas Kandagatla <srinivas.kandagatla@linaro.org> 9464M: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
9480S: Maintained 9465S: Maintained
@@ -9483,13 +9468,6 @@ F: Documentation/devicetree/bindings/nvmem/
9483F: include/linux/nvmem-consumer.h 9468F: include/linux/nvmem-consumer.h
9484F: include/linux/nvmem-provider.h 9469F: include/linux/nvmem-provider.h
9485 9470
9486NXP-NCI NFC DRIVER
9487M: Clément Perrochaud <clement.perrochaud@effinnov.com>
9488R: Charles Gorand <charles.gorand@effinnov.com>
9489L: linux-nfc@lists.01.org (moderated for non-subscribers)
9490S: Supported
9491F: drivers/nfc/nxp-nci
9492
9493NXP TDA998X DRM DRIVER 9471NXP TDA998X DRM DRIVER
9494M: Russell King <linux@armlinux.org.uk> 9472M: Russell King <linux@armlinux.org.uk>
9495S: Supported 9473S: Supported
@@ -9504,55 +9482,31 @@ L: alsa-devel@alsa-project.org (moderated for non-subscribers)
9504S: Maintained 9482S: Maintained
9505F: sound/soc/codecs/tfa9879* 9483F: sound/soc/codecs/tfa9879*
9506 9484
9485NXP-NCI NFC DRIVER
9486M: Clément Perrochaud <clement.perrochaud@effinnov.com>
9487R: Charles Gorand <charles.gorand@effinnov.com>
9488L: linux-nfc@lists.01.org (moderated for non-subscribers)
9489S: Supported
9490F: drivers/nfc/nxp-nci
9491
9507OBJTOOL 9492OBJTOOL
9508M: Josh Poimboeuf <jpoimboe@redhat.com> 9493M: Josh Poimboeuf <jpoimboe@redhat.com>
9509S: Supported 9494S: Supported
9510F: tools/objtool/ 9495F: tools/objtool/
9511 9496
9512OMAP1 SUPPORT 9497OMAP AUDIO SUPPORT
9513M: Aaro Koskinen <aaro.koskinen@iki.fi> 9498M: Peter Ujfalusi <peter.ujfalusi@ti.com>
9514M: Tony Lindgren <tony@atomide.com> 9499M: Jarkko Nikula <jarkko.nikula@bitmer.com>
9500L: alsa-devel@alsa-project.org (moderated for non-subscribers)
9515L: linux-omap@vger.kernel.org 9501L: linux-omap@vger.kernel.org
9516Q: http://patchwork.kernel.org/project/linux-omap/list/
9517T: git git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git
9518S: Maintained 9502S: Maintained
9519F: arch/arm/mach-omap1/ 9503F: sound/soc/omap/
9520F: arch/arm/plat-omap/
9521F: arch/arm/configs/omap1_defconfig
9522F: drivers/i2c/busses/i2c-omap.c
9523F: include/linux/i2c-omap.h
9524 9504
9525OMAP2+ SUPPORT 9505OMAP CLOCK FRAMEWORK SUPPORT
9526M: Tony Lindgren <tony@atomide.com> 9506M: Paul Walmsley <paul@pwsan.com>
9527L: linux-omap@vger.kernel.org 9507L: linux-omap@vger.kernel.org
9528W: http://www.muru.com/linux/omap/
9529W: http://linux.omap.com/
9530Q: http://patchwork.kernel.org/project/linux-omap/list/
9531T: git git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git
9532S: Maintained 9508S: Maintained
9533F: arch/arm/mach-omap2/ 9509F: arch/arm/*omap*/*clock*
9534F: arch/arm/plat-omap/
9535F: arch/arm/configs/omap2plus_defconfig
9536F: drivers/i2c/busses/i2c-omap.c
9537F: drivers/irqchip/irq-omap-intc.c
9538F: drivers/mfd/*omap*.c
9539F: drivers/mfd/menelaus.c
9540F: drivers/mfd/palmas.c
9541F: drivers/mfd/tps65217.c
9542F: drivers/mfd/tps65218.c
9543F: drivers/mfd/tps65910.c
9544F: drivers/mfd/twl-core.[ch]
9545F: drivers/mfd/twl4030*.c
9546F: drivers/mfd/twl6030*.c
9547F: drivers/mfd/twl6040*.c
9548F: drivers/regulator/palmas-regulator*.c
9549F: drivers/regulator/pbias-regulator.c
9550F: drivers/regulator/tps65217-regulator.c
9551F: drivers/regulator/tps65218-regulator.c
9552F: drivers/regulator/tps65910-regulator.c
9553F: drivers/regulator/twl-regulator.c
9554F: drivers/regulator/twl6030-regulator.c
9555F: include/linux/i2c-omap.h
9556 9510
9557OMAP DEVICE TREE SUPPORT 9511OMAP DEVICE TREE SUPPORT
9558M: Benoît Cousson <bcousson@baylibre.com> 9512M: Benoît Cousson <bcousson@baylibre.com>
@@ -9566,33 +9520,20 @@ F: arch/arm/boot/dts/*am4*
9566F: arch/arm/boot/dts/*am5* 9520F: arch/arm/boot/dts/*am5*
9567F: arch/arm/boot/dts/*dra7* 9521F: arch/arm/boot/dts/*dra7*
9568 9522
9569OMAP CLOCK FRAMEWORK SUPPORT 9523OMAP DISPLAY SUBSYSTEM and FRAMEBUFFER SUPPORT (DSS2)
9570M: Paul Walmsley <paul@pwsan.com> 9524M: Tomi Valkeinen <tomi.valkeinen@ti.com>
9571L: linux-omap@vger.kernel.org
9572S: Maintained
9573F: arch/arm/*omap*/*clock*
9574
9575OMAP POWER MANAGEMENT SUPPORT
9576M: Kevin Hilman <khilman@kernel.org>
9577L: linux-omap@vger.kernel.org
9578S: Maintained
9579F: arch/arm/*omap*/*pm*
9580F: drivers/cpufreq/omap-cpufreq.c
9581
9582OMAP POWERDOMAIN SOC ADAPTATION LAYER SUPPORT
9583M: Rajendra Nayak <rnayak@codeaurora.org>
9584M: Paul Walmsley <paul@pwsan.com>
9585L: linux-omap@vger.kernel.org 9525L: linux-omap@vger.kernel.org
9526L: linux-fbdev@vger.kernel.org
9586S: Maintained 9527S: Maintained
9587F: arch/arm/mach-omap2/prm* 9528F: drivers/video/fbdev/omap2/
9529F: Documentation/arm/OMAP/DSS
9588 9530
9589OMAP AUDIO SUPPORT 9531OMAP FRAMEBUFFER SUPPORT
9590M: Peter Ujfalusi <peter.ujfalusi@ti.com> 9532M: Tomi Valkeinen <tomi.valkeinen@ti.com>
9591M: Jarkko Nikula <jarkko.nikula@bitmer.com> 9533L: linux-fbdev@vger.kernel.org
9592L: alsa-devel@alsa-project.org (moderated for non-subscribers)
9593L: linux-omap@vger.kernel.org 9534L: linux-omap@vger.kernel.org
9594S: Maintained 9535S: Maintained
9595F: sound/soc/omap/ 9536F: drivers/video/fbdev/omap/
9596 9537
9597OMAP GENERAL PURPOSE MEMORY CONTROLLER SUPPORT 9538OMAP GENERAL PURPOSE MEMORY CONTROLLER SUPPORT
9598M: Roger Quadros <rogerq@ti.com> 9539M: Roger Quadros <rogerq@ti.com>
@@ -9602,20 +9543,14 @@ S: Maintained
9602F: drivers/memory/omap-gpmc.c 9543F: drivers/memory/omap-gpmc.c
9603F: arch/arm/mach-omap2/*gpmc* 9544F: arch/arm/mach-omap2/*gpmc*
9604 9545
9605OMAP FRAMEBUFFER SUPPORT 9546OMAP GPIO DRIVER
9606M: Tomi Valkeinen <tomi.valkeinen@ti.com> 9547M: Grygorii Strashko <grygorii.strashko@ti.com>
9607L: linux-fbdev@vger.kernel.org 9548M: Santosh Shilimkar <ssantosh@kernel.org>
9608L: linux-omap@vger.kernel.org 9549M: Kevin Hilman <khilman@kernel.org>
9609S: Maintained
9610F: drivers/video/fbdev/omap/
9611
9612OMAP DISPLAY SUBSYSTEM and FRAMEBUFFER SUPPORT (DSS2)
9613M: Tomi Valkeinen <tomi.valkeinen@ti.com>
9614L: linux-omap@vger.kernel.org 9550L: linux-omap@vger.kernel.org
9615L: linux-fbdev@vger.kernel.org
9616S: Maintained 9551S: Maintained
9617F: drivers/video/fbdev/omap2/ 9552F: Documentation/devicetree/bindings/gpio/gpio-omap.txt
9618F: Documentation/arm/OMAP/DSS 9553F: drivers/gpio/gpio-omap.c
9619 9554
9620OMAP HARDWARE SPINLOCK SUPPORT 9555OMAP HARDWARE SPINLOCK SUPPORT
9621M: Ohad Ben-Cohen <ohad@wizery.com> 9556M: Ohad Ben-Cohen <ohad@wizery.com>
@@ -9623,30 +9558,12 @@ L: linux-omap@vger.kernel.org
9623S: Maintained 9558S: Maintained
9624F: drivers/hwspinlock/omap_hwspinlock.c 9559F: drivers/hwspinlock/omap_hwspinlock.c
9625 9560
9626OMAP MMC SUPPORT
9627M: Jarkko Lavinen <jarkko.lavinen@nokia.com>
9628L: linux-omap@vger.kernel.org
9629S: Maintained
9630F: drivers/mmc/host/omap.c
9631
9632OMAP HS MMC SUPPORT 9561OMAP HS MMC SUPPORT
9633L: linux-mmc@vger.kernel.org 9562L: linux-mmc@vger.kernel.org
9634L: linux-omap@vger.kernel.org 9563L: linux-omap@vger.kernel.org
9635S: Orphan 9564S: Orphan
9636F: drivers/mmc/host/omap_hsmmc.c 9565F: drivers/mmc/host/omap_hsmmc.c
9637 9566
9638OMAP RANDOM NUMBER GENERATOR SUPPORT
9639M: Deepak Saxena <dsaxena@plexity.net>
9640S: Maintained
9641F: drivers/char/hw_random/omap-rng.c
9642
9643OMAP HWMOD SUPPORT
9644M: Benoît Cousson <bcousson@baylibre.com>
9645M: Paul Walmsley <paul@pwsan.com>
9646L: linux-omap@vger.kernel.org
9647S: Maintained
9648F: arch/arm/mach-omap2/omap_hwmod.*
9649
9650OMAP HWMOD DATA 9567OMAP HWMOD DATA
9651M: Paul Walmsley <paul@pwsan.com> 9568M: Paul Walmsley <paul@pwsan.com>
9652L: linux-omap@vger.kernel.org 9569L: linux-omap@vger.kernel.org
@@ -9659,6 +9576,13 @@ L: linux-omap@vger.kernel.org
9659S: Maintained 9576S: Maintained
9660F: arch/arm/mach-omap2/omap_hwmod_44xx_data.c 9577F: arch/arm/mach-omap2/omap_hwmod_44xx_data.c
9661 9578
9579OMAP HWMOD SUPPORT
9580M: Benoît Cousson <bcousson@baylibre.com>
9581M: Paul Walmsley <paul@pwsan.com>
9582L: linux-omap@vger.kernel.org
9583S: Maintained
9584F: arch/arm/mach-omap2/omap_hwmod.*
9585
9662OMAP IMAGING SUBSYSTEM (OMAP3 ISP and OMAP4 ISS) 9586OMAP IMAGING SUBSYSTEM (OMAP3 ISP and OMAP4 ISS)
9663M: Laurent Pinchart <laurent.pinchart@ideasonboard.com> 9587M: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
9664L: linux-media@vger.kernel.org 9588L: linux-media@vger.kernel.org
@@ -9667,6 +9591,31 @@ F: Documentation/devicetree/bindings/media/ti,omap3isp.txt
9667F: drivers/media/platform/omap3isp/ 9591F: drivers/media/platform/omap3isp/
9668F: drivers/staging/media/omap4iss/ 9592F: drivers/staging/media/omap4iss/
9669 9593
9594OMAP MMC SUPPORT
9595M: Jarkko Lavinen <jarkko.lavinen@nokia.com>
9596L: linux-omap@vger.kernel.org
9597S: Maintained
9598F: drivers/mmc/host/omap.c
9599
9600OMAP POWER MANAGEMENT SUPPORT
9601M: Kevin Hilman <khilman@kernel.org>
9602L: linux-omap@vger.kernel.org
9603S: Maintained
9604F: arch/arm/*omap*/*pm*
9605F: drivers/cpufreq/omap-cpufreq.c
9606
9607OMAP POWERDOMAIN SOC ADAPTATION LAYER SUPPORT
9608M: Rajendra Nayak <rnayak@codeaurora.org>
9609M: Paul Walmsley <paul@pwsan.com>
9610L: linux-omap@vger.kernel.org
9611S: Maintained
9612F: arch/arm/mach-omap2/prm*
9613
9614OMAP RANDOM NUMBER GENERATOR SUPPORT
9615M: Deepak Saxena <dsaxena@plexity.net>
9616S: Maintained
9617F: drivers/char/hw_random/omap-rng.c
9618
9670OMAP USB SUPPORT 9619OMAP USB SUPPORT
9671L: linux-usb@vger.kernel.org 9620L: linux-usb@vger.kernel.org
9672L: linux-omap@vger.kernel.org 9621L: linux-omap@vger.kernel.org
@@ -9674,21 +9623,57 @@ S: Orphan
9674F: drivers/usb/*/*omap* 9623F: drivers/usb/*/*omap*
9675F: arch/arm/*omap*/usb* 9624F: arch/arm/*omap*/usb*
9676 9625
9677OMAP GPIO DRIVER
9678M: Grygorii Strashko <grygorii.strashko@ti.com>
9679M: Santosh Shilimkar <ssantosh@kernel.org>
9680M: Kevin Hilman <khilman@kernel.org>
9681L: linux-omap@vger.kernel.org
9682S: Maintained
9683F: Documentation/devicetree/bindings/gpio/gpio-omap.txt
9684F: drivers/gpio/gpio-omap.c
9685
9686OMAP/NEWFLOW NANOBONE MACHINE SUPPORT 9626OMAP/NEWFLOW NANOBONE MACHINE SUPPORT
9687M: Mark Jackson <mpfj@newflow.co.uk> 9627M: Mark Jackson <mpfj@newflow.co.uk>
9688L: linux-omap@vger.kernel.org 9628L: linux-omap@vger.kernel.org
9689S: Maintained 9629S: Maintained
9690F: arch/arm/boot/dts/am335x-nano.dts 9630F: arch/arm/boot/dts/am335x-nano.dts
9691 9631
9632OMAP1 SUPPORT
9633M: Aaro Koskinen <aaro.koskinen@iki.fi>
9634M: Tony Lindgren <tony@atomide.com>
9635L: linux-omap@vger.kernel.org
9636Q: http://patchwork.kernel.org/project/linux-omap/list/
9637T: git git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git
9638S: Maintained
9639F: arch/arm/mach-omap1/
9640F: arch/arm/plat-omap/
9641F: arch/arm/configs/omap1_defconfig
9642F: drivers/i2c/busses/i2c-omap.c
9643F: include/linux/i2c-omap.h
9644
9645OMAP2+ SUPPORT
9646M: Tony Lindgren <tony@atomide.com>
9647L: linux-omap@vger.kernel.org
9648W: http://www.muru.com/linux/omap/
9649W: http://linux.omap.com/
9650Q: http://patchwork.kernel.org/project/linux-omap/list/
9651T: git git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git
9652S: Maintained
9653F: arch/arm/mach-omap2/
9654F: arch/arm/plat-omap/
9655F: arch/arm/configs/omap2plus_defconfig
9656F: drivers/i2c/busses/i2c-omap.c
9657F: drivers/irqchip/irq-omap-intc.c
9658F: drivers/mfd/*omap*.c
9659F: drivers/mfd/menelaus.c
9660F: drivers/mfd/palmas.c
9661F: drivers/mfd/tps65217.c
9662F: drivers/mfd/tps65218.c
9663F: drivers/mfd/tps65910.c
9664F: drivers/mfd/twl-core.[ch]
9665F: drivers/mfd/twl4030*.c
9666F: drivers/mfd/twl6030*.c
9667F: drivers/mfd/twl6040*.c
9668F: drivers/regulator/palmas-regulator*.c
9669F: drivers/regulator/pbias-regulator.c
9670F: drivers/regulator/tps65217-regulator.c
9671F: drivers/regulator/tps65218-regulator.c
9672F: drivers/regulator/tps65910-regulator.c
9673F: drivers/regulator/twl-regulator.c
9674F: drivers/regulator/twl6030-regulator.c
9675F: include/linux/i2c-omap.h
9676
9692OMFS FILESYSTEM 9677OMFS FILESYSTEM
9693M: Bob Copeland <me@bobcopeland.com> 9678M: Bob Copeland <me@bobcopeland.com>
9694L: linux-karma-devel@lists.sourceforge.net 9679L: linux-karma-devel@lists.sourceforge.net
@@ -9708,6 +9693,13 @@ M: Harald Welte <laforge@gnumonks.org>
9708S: Maintained 9693S: Maintained
9709F: drivers/char/pcmcia/cm4040_cs.* 9694F: drivers/char/pcmcia/cm4040_cs.*
9710 9695
9696OMNIVISION OV13858 SENSOR DRIVER
9697M: Sakari Ailus <sakari.ailus@linux.intel.com>
9698L: linux-media@vger.kernel.org
9699T: git git://linuxtv.org/media_tree.git
9700S: Maintained
9701F: drivers/media/i2c/ov13858.c
9702
9711OMNIVISION OV5640 SENSOR DRIVER 9703OMNIVISION OV5640 SENSOR DRIVER
9712M: Steve Longerbeam <slongerbeam@gmail.com> 9704M: Steve Longerbeam <slongerbeam@gmail.com>
9713L: linux-media@vger.kernel.org 9705L: linux-media@vger.kernel.org
@@ -9730,13 +9722,6 @@ S: Maintained
9730F: drivers/media/i2c/ov7670.c 9722F: drivers/media/i2c/ov7670.c
9731F: Documentation/devicetree/bindings/media/i2c/ov7670.txt 9723F: Documentation/devicetree/bindings/media/i2c/ov7670.txt
9732 9724
9733OMNIVISION OV13858 SENSOR DRIVER
9734M: Sakari Ailus <sakari.ailus@linux.intel.com>
9735L: linux-media@vger.kernel.org
9736T: git git://linuxtv.org/media_tree.git
9737S: Maintained
9738F: drivers/media/i2c/ov13858.c
9739
9740ONENAND FLASH DRIVER 9725ONENAND FLASH DRIVER
9741M: Kyungmin Park <kyungmin.park@samsung.com> 9726M: Kyungmin Park <kyungmin.park@samsung.com>
9742L: linux-mtd@lists.infradead.org 9727L: linux-mtd@lists.infradead.org
@@ -9754,12 +9739,26 @@ F: drivers/scsi/osst.*
9754F: drivers/scsi/osst_*.h 9739F: drivers/scsi/osst_*.h
9755F: drivers/scsi/st.h 9740F: drivers/scsi/st.h
9756 9741
9757OPENCORES I2C BUS DRIVER 9742OP-TEE DRIVER
9758M: Peter Korsgaard <jacmet@sunsite.dk> 9743M: Jens Wiklander <jens.wiklander@linaro.org>
9759L: linux-i2c@vger.kernel.org
9760S: Maintained 9744S: Maintained
9761F: Documentation/i2c/busses/i2c-ocores 9745F: drivers/tee/optee/
9762F: drivers/i2c/busses/i2c-ocores.c 9746
9747OPA-VNIC DRIVER
9748M: Dennis Dalessandro <dennis.dalessandro@intel.com>
9749M: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
9750L: linux-rdma@vger.kernel.org
9751S: Supported
9752F: drivers/infiniband/ulp/opa_vnic
9753
9754OPEN FIRMWARE AND DEVICE TREE OVERLAYS
9755M: Pantelis Antoniou <pantelis.antoniou@konsulko.com>
9756L: devicetree@vger.kernel.org
9757S: Maintained
9758F: Documentation/devicetree/dynamic-resolution-notes.txt
9759F: Documentation/devicetree/overlay-notes.txt
9760F: drivers/of/overlay.c
9761F: drivers/of/resolver.c
9763 9762
9764OPEN FIRMWARE AND FLATTENED DEVICE TREE 9763OPEN FIRMWARE AND FLATTENED DEVICE TREE
9765M: Rob Herring <robh+dt@kernel.org> 9764M: Rob Herring <robh+dt@kernel.org>
@@ -9784,14 +9783,12 @@ F: Documentation/devicetree/
9784F: arch/*/boot/dts/ 9783F: arch/*/boot/dts/
9785F: include/dt-bindings/ 9784F: include/dt-bindings/
9786 9785
9787OPEN FIRMWARE AND DEVICE TREE OVERLAYS 9786OPENCORES I2C BUS DRIVER
9788M: Pantelis Antoniou <pantelis.antoniou@konsulko.com> 9787M: Peter Korsgaard <jacmet@sunsite.dk>
9789L: devicetree@vger.kernel.org 9788L: linux-i2c@vger.kernel.org
9790S: Maintained 9789S: Maintained
9791F: Documentation/devicetree/dynamic-resolution-notes.txt 9790F: Documentation/i2c/busses/i2c-ocores
9792F: Documentation/devicetree/overlay-notes.txt 9791F: drivers/i2c/busses/i2c-ocores.c
9793F: drivers/of/overlay.c
9794F: drivers/of/resolver.c
9795 9792
9796OPENRISC ARCHITECTURE 9793OPENRISC ARCHITECTURE
9797M: Jonas Bonn <jonas@southpole.se> 9794M: Jonas Bonn <jonas@southpole.se>
@@ -9840,11 +9837,6 @@ F: arch/*/oprofile/
9840F: drivers/oprofile/ 9837F: drivers/oprofile/
9841F: include/linux/oprofile.h 9838F: include/linux/oprofile.h
9842 9839
9843OP-TEE DRIVER
9844M: Jens Wiklander <jens.wiklander@linaro.org>
9845S: Maintained
9846F: drivers/tee/optee/
9847
9848ORACLE CLUSTER FILESYSTEM 2 (OCFS2) 9840ORACLE CLUSTER FILESYSTEM 2 (OCFS2)
9849M: Mark Fasheh <mfasheh@versity.com> 9841M: Mark Fasheh <mfasheh@versity.com>
9850M: Joel Becker <jlbec@evilplan.org> 9842M: Joel Becker <jlbec@evilplan.org>
@@ -9855,6 +9847,14 @@ F: Documentation/filesystems/ocfs2.txt
9855F: Documentation/filesystems/dlmfs.txt 9847F: Documentation/filesystems/dlmfs.txt
9856F: fs/ocfs2/ 9848F: fs/ocfs2/
9857 9849
9850ORANGEFS FILESYSTEM
9851M: Mike Marshall <hubcap@omnibond.com>
9852L: pvfs2-developers@beowulf-underground.org (subscribers-only)
9853T: git git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git
9854S: Supported
9855F: fs/orangefs/
9856F: Documentation/filesystems/orangefs.txt
9857
9858ORINOCO DRIVER 9858ORINOCO DRIVER
9859L: linux-wireless@vger.kernel.org 9859L: linux-wireless@vger.kernel.org
9860W: http://wireless.kernel.org/en/users/Drivers/orinoco 9860W: http://wireless.kernel.org/en/users/Drivers/orinoco
@@ -9869,6 +9869,16 @@ F: drivers/scsi/osd/
9869F: include/scsi/osd_* 9869F: include/scsi/osd_*
9870F: fs/exofs/ 9870F: fs/exofs/
9871 9871
9872OV2659 OMNIVISION SENSOR DRIVER
9873M: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
9874L: linux-media@vger.kernel.org
9875W: https://linuxtv.org
9876Q: http://patchwork.linuxtv.org/project/linux-media/list/
9877T: git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git
9878S: Maintained
9879F: drivers/media/i2c/ov2659.c
9880F: include/media/i2c/ov2659.h
9881
9872OVERLAY FILESYSTEM 9882OVERLAY FILESYSTEM
9873M: Miklos Szeredi <miklos@szeredi.hu> 9883M: Miklos Szeredi <miklos@szeredi.hu>
9874L: linux-unionfs@vger.kernel.org 9884L: linux-unionfs@vger.kernel.org
@@ -9877,14 +9887,6 @@ S: Supported
9877F: fs/overlayfs/ 9887F: fs/overlayfs/
9878F: Documentation/filesystems/overlayfs.txt 9888F: Documentation/filesystems/overlayfs.txt
9879 9889
9880ORANGEFS FILESYSTEM
9881M: Mike Marshall <hubcap@omnibond.com>
9882L: pvfs2-developers@beowulf-underground.org (subscribers-only)
9883T: git git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git
9884S: Supported
9885F: fs/orangefs/
9886F: Documentation/filesystems/orangefs.txt
9887
9888P54 WIRELESS DRIVER 9890P54 WIRELESS DRIVER
9889M: Christian Lamparter <chunkeey@googlemail.com> 9891M: Christian Lamparter <chunkeey@googlemail.com>
9890L: linux-wireless@vger.kernel.org 9892L: linux-wireless@vger.kernel.org
@@ -9925,11 +9927,11 @@ F: Documentation/mn10300/
9925F: arch/mn10300/ 9927F: arch/mn10300/
9926 9928
9927PARALLEL LCD/KEYPAD PANEL DRIVER 9929PARALLEL LCD/KEYPAD PANEL DRIVER
9928M: Willy Tarreau <willy@haproxy.com> 9930M: Willy Tarreau <willy@haproxy.com>
9929M: Ksenija Stanojevic <ksenija.stanojevic@gmail.com> 9931M: Ksenija Stanojevic <ksenija.stanojevic@gmail.com>
9930S: Odd Fixes 9932S: Odd Fixes
9931F: Documentation/misc-devices/lcd-panel-cgram.txt 9933F: Documentation/misc-devices/lcd-panel-cgram.txt
9932F: drivers/misc/panel.c 9934F: drivers/misc/panel.c
9933 9935
9934PARALLEL PORT SUBSYSTEM 9936PARALLEL PORT SUBSYSTEM
9935M: Sudip Mukherjee <sudipm.mukherjee@gmail.com> 9937M: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
@@ -10025,42 +10027,13 @@ M: Khalid Aziz <khalid@gonehiking.org>
10025S: Maintained 10027S: Maintained
10026F: drivers/firmware/pcdp.* 10028F: drivers/firmware/pcdp.*
10027 10029
10028PCI ERROR RECOVERY 10030PCI DRIVER FOR AARDVARK (Marvell Armada 3700)
10029M: Linas Vepstas <linasvepstas@gmail.com> 10031M: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
10030L: linux-pci@vger.kernel.org
10031S: Supported
10032F: Documentation/PCI/pci-error-recovery.txt
10033
10034PCI ENHANCED ERROR HANDLING (EEH) FOR POWERPC
10035M: Russell Currey <ruscur@russell.cc>
10036L: linuxppc-dev@lists.ozlabs.org
10037S: Supported
10038F: Documentation/powerpc/eeh-pci-error-recovery.txt
10039F: arch/powerpc/kernel/eeh*.c
10040F: arch/powerpc/platforms/*/eeh*.c
10041F: arch/powerpc/include/*/eeh*.h
10042
10043PCI SUBSYSTEM
10044M: Bjorn Helgaas <bhelgaas@google.com>
10045L: linux-pci@vger.kernel.org
10046Q: http://patchwork.ozlabs.org/project/linux-pci/list/
10047T: git git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git
10048S: Supported
10049F: Documentation/devicetree/bindings/pci/
10050F: Documentation/PCI/
10051F: drivers/pci/
10052F: include/linux/pci*
10053F: arch/x86/pci/
10054F: arch/x86/kernel/quirks.c
10055
10056PCI ENDPOINT SUBSYSTEM
10057M: Kishon Vijay Abraham I <kishon@ti.com>
10058L: linux-pci@vger.kernel.org 10032L: linux-pci@vger.kernel.org
10059T: git git://git.kernel.org/pub/scm/linux/kernel/git/kishon/pci-endpoint.git 10033L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
10060S: Supported 10034S: Maintained
10061F: drivers/pci/endpoint/ 10035F: Documentation/devicetree/bindings/pci/aardvark-pci.txt
10062F: drivers/misc/pci_endpoint_test.c 10036F: drivers/pci/host/pci-aardvark.c
10063F: tools/pci/
10064 10037
10065PCI DRIVER FOR ALTERA PCIE IP 10038PCI DRIVER FOR ALTERA PCIE IP
10066M: Ley Foon Tan <lftan@altera.com> 10039M: Ley Foon Tan <lftan@altera.com>
@@ -10070,6 +10043,14 @@ S: Supported
10070F: Documentation/devicetree/bindings/pci/altera-pcie.txt 10043F: Documentation/devicetree/bindings/pci/altera-pcie.txt
10071F: drivers/pci/host/pcie-altera.c 10044F: drivers/pci/host/pcie-altera.c
10072 10045
10046PCI DRIVER FOR APPLIEDMICRO XGENE
10047M: Tanmay Inamdar <tinamdar@apm.com>
10048L: linux-pci@vger.kernel.org
10049L: linux-arm-kernel@lists.infradead.org
10050S: Maintained
10051F: Documentation/devicetree/bindings/pci/xgene-pci.txt
10052F: drivers/pci/host/pci-xgene.c
10053
10073PCI DRIVER FOR ARM VERSATILE PLATFORM 10054PCI DRIVER FOR ARM VERSATILE PLATFORM
10074M: Rob Herring <robh@kernel.org> 10055M: Rob Herring <robh@kernel.org>
10075L: linux-pci@vger.kernel.org 10056L: linux-pci@vger.kernel.org
@@ -10086,14 +10067,6 @@ S: Maintained
10086F: Documentation/devicetree/bindings/pci/pci-armada8k.txt 10067F: Documentation/devicetree/bindings/pci/pci-armada8k.txt
10087F: drivers/pci/dwc/pcie-armada8k.c 10068F: drivers/pci/dwc/pcie-armada8k.c
10088 10069
10089PCI DRIVER FOR APPLIEDMICRO XGENE
10090M: Tanmay Inamdar <tinamdar@apm.com>
10091L: linux-pci@vger.kernel.org
10092L: linux-arm-kernel@lists.infradead.org
10093S: Maintained
10094F: Documentation/devicetree/bindings/pci/xgene-pci.txt
10095F: drivers/pci/host/pci-xgene.c
10096
10097PCI DRIVER FOR FREESCALE LAYERSCAPE 10070PCI DRIVER FOR FREESCALE LAYERSCAPE
10098M: Minghuan Lian <minghuan.Lian@freescale.com> 10071M: Minghuan Lian <minghuan.Lian@freescale.com>
10099M: Mingkai Hu <mingkai.hu@freescale.com> 10072M: Mingkai Hu <mingkai.hu@freescale.com>
@@ -10104,6 +10077,15 @@ L: linux-arm-kernel@lists.infradead.org
10104S: Maintained 10077S: Maintained
10105F: drivers/pci/dwc/*layerscape* 10078F: drivers/pci/dwc/*layerscape*
10106 10079
10080PCI DRIVER FOR GENERIC OF HOSTS
10081M: Will Deacon <will.deacon@arm.com>
10082L: linux-pci@vger.kernel.org
10083L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
10084S: Maintained
10085F: Documentation/devicetree/bindings/pci/host-generic-pci.txt
10086F: drivers/pci/host/pci-host-common.c
10087F: drivers/pci/host/pci-host-generic.c
10088
10107PCI DRIVER FOR IMX6 10089PCI DRIVER FOR IMX6
10108M: Richard Zhu <hongxing.zhu@nxp.com> 10090M: Richard Zhu <hongxing.zhu@nxp.com>
10109M: Lucas Stach <l.stach@pengutronix.de> 10091M: Lucas Stach <l.stach@pengutronix.de>
@@ -10113,28 +10095,11 @@ S: Maintained
10113F: Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt 10095F: Documentation/devicetree/bindings/pci/fsl,imx6q-pcie.txt
10114F: drivers/pci/dwc/*imx6* 10096F: drivers/pci/dwc/*imx6*
10115 10097
10116PCI DRIVER FOR TI KEYSTONE 10098PCI DRIVER FOR INTEL VOLUME MANAGEMENT DEVICE (VMD)
10117M: Murali Karicheri <m-karicheri2@ti.com> 10099M: Keith Busch <keith.busch@intel.com>
10118L: linux-pci@vger.kernel.org
10119L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
10120S: Maintained
10121F: drivers/pci/dwc/*keystone*
10122
10123PCI DRIVER FOR MVEBU (Marvell Armada 370 and Armada XP SOC support)
10124M: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
10125M: Jason Cooper <jason@lakedaemon.net>
10126L: linux-pci@vger.kernel.org
10127L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
10128S: Maintained
10129F: drivers/pci/host/*mvebu*
10130
10131PCI DRIVER FOR AARDVARK (Marvell Armada 3700)
10132M: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
10133L: linux-pci@vger.kernel.org 10100L: linux-pci@vger.kernel.org
10134L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 10101S: Supported
10135S: Maintained 10102F: drivers/pci/host/vmd.c
10136F: Documentation/devicetree/bindings/pci/aardvark-pci.txt
10137F: drivers/pci/host/pci-aardvark.c
10138 10103
10139PCI DRIVER FOR MICROSEMI SWITCHTEC 10104PCI DRIVER FOR MICROSEMI SWITCHTEC
10140M: Kurt Schwemmer <kurt.schwemmer@microsemi.com> 10105M: Kurt Schwemmer <kurt.schwemmer@microsemi.com>
@@ -10147,6 +10112,14 @@ F: Documentation/ABI/testing/sysfs-class-switchtec
10147F: drivers/pci/switch/switchtec* 10112F: drivers/pci/switch/switchtec*
10148F: include/uapi/linux/switchtec_ioctl.h 10113F: include/uapi/linux/switchtec_ioctl.h
10149 10114
10115PCI DRIVER FOR MVEBU (Marvell Armada 370 and Armada XP SOC support)
10116M: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
10117M: Jason Cooper <jason@lakedaemon.net>
10118L: linux-pci@vger.kernel.org
10119L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
10120S: Maintained
10121F: drivers/pci/host/*mvebu*
10122
10150PCI DRIVER FOR NVIDIA TEGRA 10123PCI DRIVER FOR NVIDIA TEGRA
10151M: Thierry Reding <thierry.reding@gmail.com> 10124M: Thierry Reding <thierry.reding@gmail.com>
10152L: linux-tegra@vger.kernel.org 10125L: linux-tegra@vger.kernel.org
@@ -10155,14 +10128,6 @@ S: Supported
10155F: Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt 10128F: Documentation/devicetree/bindings/pci/nvidia,tegra20-pcie.txt
10156F: drivers/pci/host/pci-tegra.c 10129F: drivers/pci/host/pci-tegra.c
10157 10130
10158PCI DRIVER FOR TI DRA7XX
10159M: Kishon Vijay Abraham I <kishon@ti.com>
10160L: linux-omap@vger.kernel.org
10161L: linux-pci@vger.kernel.org
10162S: Supported
10163F: Documentation/devicetree/bindings/pci/ti-pci.txt
10164F: drivers/pci/dwc/pci-dra7xx.c
10165
10166PCI DRIVER FOR RENESAS R-CAR 10131PCI DRIVER FOR RENESAS R-CAR
10167M: Simon Horman <horms@verge.net.au> 10132M: Simon Horman <horms@verge.net.au>
10168L: linux-pci@vger.kernel.org 10133L: linux-pci@vger.kernel.org
@@ -10186,26 +10151,44 @@ S: Maintained
10186F: Documentation/devicetree/bindings/pci/designware-pcie.txt 10151F: Documentation/devicetree/bindings/pci/designware-pcie.txt
10187F: drivers/pci/dwc/*designware* 10152F: drivers/pci/dwc/*designware*
10188 10153
10189PCI DRIVER FOR GENERIC OF HOSTS 10154PCI DRIVER FOR TI DRA7XX
10190M: Will Deacon <will.deacon@arm.com> 10155M: Kishon Vijay Abraham I <kishon@ti.com>
10156L: linux-omap@vger.kernel.org
10157L: linux-pci@vger.kernel.org
10158S: Supported
10159F: Documentation/devicetree/bindings/pci/ti-pci.txt
10160F: drivers/pci/dwc/pci-dra7xx.c
10161
10162PCI DRIVER FOR TI KEYSTONE
10163M: Murali Karicheri <m-karicheri2@ti.com>
10191L: linux-pci@vger.kernel.org 10164L: linux-pci@vger.kernel.org
10192L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 10165L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
10193S: Maintained 10166S: Maintained
10194F: Documentation/devicetree/bindings/pci/host-generic-pci.txt 10167F: drivers/pci/dwc/*keystone*
10195F: drivers/pci/host/pci-host-common.c
10196F: drivers/pci/host/pci-host-generic.c
10197 10168
10198PCI DRIVER FOR INTEL VOLUME MANAGEMENT DEVICE (VMD) 10169PCI ENDPOINT SUBSYSTEM
10199M: Keith Busch <keith.busch@intel.com> 10170M: Kishon Vijay Abraham I <kishon@ti.com>
10200L: linux-pci@vger.kernel.org 10171L: linux-pci@vger.kernel.org
10172T: git git://git.kernel.org/pub/scm/linux/kernel/git/kishon/pci-endpoint.git
10201S: Supported 10173S: Supported
10202F: drivers/pci/host/vmd.c 10174F: drivers/pci/endpoint/
10175F: drivers/misc/pci_endpoint_test.c
10176F: tools/pci/
10203 10177
10204PCIE DRIVER FOR ST SPEAR13XX 10178PCI ENHANCED ERROR HANDLING (EEH) FOR POWERPC
10205M: Pratyush Anand <pratyush.anand@gmail.com> 10179M: Russell Currey <ruscur@russell.cc>
10180L: linuxppc-dev@lists.ozlabs.org
10181S: Supported
10182F: Documentation/powerpc/eeh-pci-error-recovery.txt
10183F: arch/powerpc/kernel/eeh*.c
10184F: arch/powerpc/platforms/*/eeh*.c
10185F: arch/powerpc/include/*/eeh*.h
10186
10187PCI ERROR RECOVERY
10188M: Linas Vepstas <linasvepstas@gmail.com>
10206L: linux-pci@vger.kernel.org 10189L: linux-pci@vger.kernel.org
10207S: Maintained 10190S: Supported
10208F: drivers/pci/dwc/*spear* 10191F: Documentation/PCI/pci-error-recovery.txt
10209 10192
10210PCI MSI DRIVER FOR ALTERA MSI IP 10193PCI MSI DRIVER FOR ALTERA MSI IP
10211M: Ley Foon Tan <lftan@altera.com> 10194M: Ley Foon Tan <lftan@altera.com>
@@ -10223,6 +10206,19 @@ S: Maintained
10223F: Documentation/devicetree/bindings/pci/xgene-pci-msi.txt 10206F: Documentation/devicetree/bindings/pci/xgene-pci-msi.txt
10224F: drivers/pci/host/pci-xgene-msi.c 10207F: drivers/pci/host/pci-xgene-msi.c
10225 10208
10209PCI SUBSYSTEM
10210M: Bjorn Helgaas <bhelgaas@google.com>
10211L: linux-pci@vger.kernel.org
10212Q: http://patchwork.ozlabs.org/project/linux-pci/list/
10213T: git git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git
10214S: Supported
10215F: Documentation/devicetree/bindings/pci/
10216F: Documentation/PCI/
10217F: drivers/pci/
10218F: include/linux/pci*
10219F: arch/x86/pci/
10220F: arch/x86/kernel/quirks.c
10221
10226PCIE DRIVER FOR AXIS ARTPEC 10222PCIE DRIVER FOR AXIS ARTPEC
10227M: Niklas Cassel <niklas.cassel@axis.com> 10223M: Niklas Cassel <niklas.cassel@axis.com>
10228M: Jesper Nilsson <jesper.nilsson@axis.com> 10224M: Jesper Nilsson <jesper.nilsson@axis.com>
@@ -10232,6 +10228,14 @@ S: Maintained
10232F: Documentation/devicetree/bindings/pci/axis,artpec* 10228F: Documentation/devicetree/bindings/pci/axis,artpec*
10233F: drivers/pci/dwc/*artpec* 10229F: drivers/pci/dwc/*artpec*
10234 10230
10231PCIE DRIVER FOR CAVIUM THUNDERX
10232M: David Daney <david.daney@cavium.com>
10233L: linux-pci@vger.kernel.org
10234L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
10235S: Supported
10236F: Documentation/devicetree/bindings/pci/pci-thunder-*
10237F: drivers/pci/host/pci-thunder-*
10238
10235PCIE DRIVER FOR HISILICON 10239PCIE DRIVER FOR HISILICON
10236M: Zhou Wang <wangzhou1@hisilicon.com> 10240M: Zhou Wang <wangzhou1@hisilicon.com>
10237M: Gabriele Paoloni <gabriele.paoloni@huawei.com> 10241M: Gabriele Paoloni <gabriele.paoloni@huawei.com>
@@ -10248,6 +10252,21 @@ S: Maintained
10248F: Documentation/devicetree/bindings/pci/pcie-kirin.txt 10252F: Documentation/devicetree/bindings/pci/pcie-kirin.txt
10249F: drivers/pci/dwc/pcie-kirin.c 10253F: drivers/pci/dwc/pcie-kirin.c
10250 10254
10255PCIE DRIVER FOR MEDIATEK
10256M: Ryder Lee <ryder.lee@mediatek.com>
10257L: linux-pci@vger.kernel.org
10258L: linux-mediatek@lists.infradead.org
10259S: Supported
10260F: Documentation/devicetree/bindings/pci/mediatek*
10261F: drivers/pci/host/*mediatek*
10262
10263PCIE DRIVER FOR QUALCOMM MSM
10264M: Stanimir Varbanov <svarbanov@mm-sol.com>
10265L: linux-pci@vger.kernel.org
10266L: linux-arm-msm@vger.kernel.org
10267S: Maintained
10268F: drivers/pci/dwc/*qcom*
10269
10251PCIE DRIVER FOR ROCKCHIP 10270PCIE DRIVER FOR ROCKCHIP
10252M: Shawn Lin <shawn.lin@rock-chips.com> 10271M: Shawn Lin <shawn.lin@rock-chips.com>
10253L: linux-pci@vger.kernel.org 10272L: linux-pci@vger.kernel.org
@@ -10256,28 +10275,11 @@ S: Maintained
10256F: Documentation/devicetree/bindings/pci/rockchip-pcie.txt 10275F: Documentation/devicetree/bindings/pci/rockchip-pcie.txt
10257F: drivers/pci/host/pcie-rockchip.c 10276F: drivers/pci/host/pcie-rockchip.c
10258 10277
10259PCIE DRIVER FOR QUALCOMM MSM 10278PCIE DRIVER FOR ST SPEAR13XX
10260M: Stanimir Varbanov <svarbanov@mm-sol.com> 10279M: Pratyush Anand <pratyush.anand@gmail.com>
10261L: linux-pci@vger.kernel.org
10262L: linux-arm-msm@vger.kernel.org
10263S: Maintained
10264F: drivers/pci/dwc/*qcom*
10265
10266PCIE DRIVER FOR CAVIUM THUNDERX
10267M: David Daney <david.daney@cavium.com>
10268L: linux-pci@vger.kernel.org 10280L: linux-pci@vger.kernel.org
10269L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 10281S: Maintained
10270S: Supported 10282F: drivers/pci/dwc/*spear*
10271F: Documentation/devicetree/bindings/pci/pci-thunder-*
10272F: drivers/pci/host/pci-thunder-*
10273
10274PCIE DRIVER FOR MEDIATEK
10275M: Ryder Lee <ryder.lee@mediatek.com>
10276L: linux-pci@vger.kernel.org
10277L: linux-mediatek@lists.infradead.org
10278S: Supported
10279F: Documentation/devicetree/bindings/pci/mediatek*
10280F: drivers/pci/host/*mediatek*
10281 10283
10282PCMCIA SUBSYSTEM 10284PCMCIA SUBSYSTEM
10283P: Linux PCMCIA Team 10285P: Linux PCMCIA Team
@@ -10380,7 +10382,7 @@ L: linux-gpio@vger.kernel.org
10380T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git 10382T: git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git
10381S: Maintained 10383S: Maintained
10382F: Documentation/devicetree/bindings/pinctrl/ 10384F: Documentation/devicetree/bindings/pinctrl/
10383F: Documentation/pinctrl.txt 10385F: Documentation/driver-api/pinctl.rst
10384F: drivers/pinctrl/ 10386F: drivers/pinctrl/
10385F: include/linux/pinctrl/ 10387F: include/linux/pinctrl/
10386 10388
@@ -10446,14 +10448,14 @@ S: Maintained
10446F: drivers/pinctrl/spear/ 10448F: drivers/pinctrl/spear/
10447 10449
10448PISTACHIO SOC SUPPORT 10450PISTACHIO SOC SUPPORT
10449M: James Hartley <james.hartley@imgtec.com> 10451M: James Hartley <james.hartley@imgtec.com>
10450M: Ionela Voinescu <ionela.voinescu@imgtec.com> 10452M: Ionela Voinescu <ionela.voinescu@imgtec.com>
10451L: linux-mips@linux-mips.org 10453L: linux-mips@linux-mips.org
10452S: Maintained 10454S: Maintained
10453F: arch/mips/pistachio/ 10455F: arch/mips/pistachio/
10454F: arch/mips/include/asm/mach-pistachio/ 10456F: arch/mips/include/asm/mach-pistachio/
10455F: arch/mips/boot/dts/img/pistachio* 10457F: arch/mips/boot/dts/img/pistachio*
10456F: arch/mips/configs/pistachio*_defconfig 10458F: arch/mips/configs/pistachio*_defconfig
10457 10459
10458PKTCDVD DRIVER 10460PKTCDVD DRIVER
10459S: Orphan 10461S: Orphan
@@ -10496,6 +10498,11 @@ L: linux-scsi@vger.kernel.org
10496S: Supported 10498S: Supported
10497F: drivers/scsi/pm8001/ 10499F: drivers/scsi/pm8001/
10498 10500
10501PNP SUPPORT
10502M: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
10503S: Maintained
10504F: drivers/pnp/
10505
10499POSIX CLOCKS and TIMERS 10506POSIX CLOCKS and TIMERS
10500M: Thomas Gleixner <tglx@linutronix.de> 10507M: Thomas Gleixner <tglx@linutronix.de>
10501L: linux-kernel@vger.kernel.org 10508L: linux-kernel@vger.kernel.org
@@ -10517,15 +10524,6 @@ F: include/linux/pm_*
10517F: include/linux/powercap.h 10524F: include/linux/powercap.h
10518F: drivers/powercap/ 10525F: drivers/powercap/
10519 10526
10520POWER SUPPLY CLASS/SUBSYSTEM and DRIVERS
10521M: Sebastian Reichel <sre@kernel.org>
10522L: linux-pm@vger.kernel.org
10523T: git git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply.git
10524S: Maintained
10525F: Documentation/devicetree/bindings/power/supply/
10526F: include/linux/power_supply.h
10527F: drivers/power/supply/
10528
10529POWER STATE COORDINATION INTERFACE (PSCI) 10527POWER STATE COORDINATION INTERFACE (PSCI)
10530M: Mark Rutland <mark.rutland@arm.com> 10528M: Mark Rutland <mark.rutland@arm.com>
10531M: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 10529M: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
@@ -10535,23 +10533,21 @@ F: drivers/firmware/psci*.c
10535F: include/linux/psci.h 10533F: include/linux/psci.h
10536F: include/uapi/linux/psci.h 10534F: include/uapi/linux/psci.h
10537 10535
10536POWER SUPPLY CLASS/SUBSYSTEM and DRIVERS
10537M: Sebastian Reichel <sre@kernel.org>
10538L: linux-pm@vger.kernel.org
10539T: git git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply.git
10540S: Maintained
10541F: Documentation/devicetree/bindings/power/supply/
10542F: include/linux/power_supply.h
10543F: drivers/power/supply/
10544
10538POWERNV OPERATOR PANEL LCD DISPLAY DRIVER 10545POWERNV OPERATOR PANEL LCD DISPLAY DRIVER
10539M: Suraj Jitindar Singh <sjitindarsingh@gmail.com> 10546M: Suraj Jitindar Singh <sjitindarsingh@gmail.com>
10540L: linuxppc-dev@lists.ozlabs.org 10547L: linuxppc-dev@lists.ozlabs.org
10541S: Maintained 10548S: Maintained
10542F: drivers/char/powernv-op-panel.c 10549F: drivers/char/powernv-op-panel.c
10543 10550
10544PNP SUPPORT
10545M: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
10546S: Maintained
10547F: drivers/pnp/
10548
10549PPP PROTOCOL DRIVERS AND COMPRESSORS
10550M: Paul Mackerras <paulus@samba.org>
10551L: linux-ppp@vger.kernel.org
10552S: Maintained
10553F: drivers/net/ppp/ppp_*
10554
10555PPP OVER ATM (RFC 2364) 10551PPP OVER ATM (RFC 2364)
10556M: Mitchell Blank Jr <mitch@sfgoth.com> 10552M: Mitchell Blank Jr <mitch@sfgoth.com>
10557S: Maintained 10553S: Maintained
@@ -10571,6 +10567,12 @@ F: net/l2tp/l2tp_ppp.c
10571F: include/linux/if_pppol2tp.h 10567F: include/linux/if_pppol2tp.h
10572F: include/uapi/linux/if_pppol2tp.h 10568F: include/uapi/linux/if_pppol2tp.h
10573 10569
10570PPP PROTOCOL DRIVERS AND COMPRESSORS
10571M: Paul Mackerras <paulus@samba.org>
10572L: linux-ppp@vger.kernel.org
10573S: Maintained
10574F: drivers/net/ppp/ppp_*
10575
10574PPS SUPPORT 10576PPS SUPPORT
10575M: Rodolfo Giometti <giometti@enneenne.com> 10577M: Rodolfo Giometti <giometti@enneenne.com>
10576W: http://wiki.enneenne.com/index.php/LinuxPPS_support 10578W: http://wiki.enneenne.com/index.php/LinuxPPS_support
@@ -10684,7 +10686,6 @@ F: drivers/ptp/*
10684F: include/linux/ptp_cl* 10686F: include/linux/ptp_cl*
10685 10687
10686PTRACE SUPPORT 10688PTRACE SUPPORT
10687M: Roland McGrath <roland@hack.frob.com>
10688M: Oleg Nesterov <oleg@redhat.com> 10689M: Oleg Nesterov <oleg@redhat.com>
10689S: Maintained 10690S: Maintained
10690F: include/asm-generic/syscall.h 10691F: include/asm-generic/syscall.h
@@ -10692,7 +10693,12 @@ F: include/linux/ptrace.h
10692F: include/linux/regset.h 10693F: include/linux/regset.h
10693F: include/linux/tracehook.h 10694F: include/linux/tracehook.h
10694F: include/uapi/linux/ptrace.h 10695F: include/uapi/linux/ptrace.h
10696F: include/uapi/linux/ptrace.h
10697F: include/asm-generic/ptrace.h
10695F: kernel/ptrace.c 10698F: kernel/ptrace.c
10699F: arch/*/ptrace*.c
10700F: arch/*/*/ptrace*.c
10701F: arch/*/include/asm/ptrace*.h
10696 10702
10697PULSE8-CEC DRIVER 10703PULSE8-CEC DRIVER
10698M: Hans Verkuil <hverkuil@xs4all.nl> 10704M: Hans Verkuil <hverkuil@xs4all.nl>
@@ -10741,6 +10747,20 @@ F: include/linux/pwm_backlight.h
10741F: drivers/gpio/gpio-mvebu.c 10747F: drivers/gpio/gpio-mvebu.c
10742F: Documentation/devicetree/bindings/gpio/gpio-mvebu.txt 10748F: Documentation/devicetree/bindings/gpio/gpio-mvebu.txt
10743 10749
10750PXA GPIO DRIVER
10751M: Robert Jarzmik <robert.jarzmik@free.fr>
10752L: linux-gpio@vger.kernel.org
10753S: Maintained
10754F: drivers/gpio/gpio-pxa.c
10755
10756PXA MMCI DRIVER
10757S: Orphan
10758
10759PXA RTC DRIVER
10760M: Robert Jarzmik <robert.jarzmik@free.fr>
10761L: linux-rtc@vger.kernel.org
10762S: Maintained
10763
10744PXA2xx/PXA3xx SUPPORT 10764PXA2xx/PXA3xx SUPPORT
10745M: Daniel Mack <daniel@zonque.org> 10765M: Daniel Mack <daniel@zonque.org>
10746M: Haojian Zhuang <haojian.zhuang@gmail.com> 10766M: Haojian Zhuang <haojian.zhuang@gmail.com>
@@ -10760,36 +10780,12 @@ F: include/sound/pxa2xx-lib.h
10760F: sound/arm/pxa* 10780F: sound/arm/pxa*
10761F: sound/soc/pxa/ 10781F: sound/soc/pxa/
10762 10782
10763PXA GPIO DRIVER
10764M: Robert Jarzmik <robert.jarzmik@free.fr>
10765L: linux-gpio@vger.kernel.org
10766S: Maintained
10767F: drivers/gpio/gpio-pxa.c
10768
10769PXA3xx NAND FLASH DRIVER 10783PXA3xx NAND FLASH DRIVER
10770M: Ezequiel Garcia <ezequiel.garcia@free-electrons.com> 10784M: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
10771L: linux-mtd@lists.infradead.org 10785L: linux-mtd@lists.infradead.org
10772S: Maintained 10786S: Maintained
10773F: drivers/mtd/nand/pxa3xx_nand.c 10787F: drivers/mtd/nand/pxa3xx_nand.c
10774 10788
10775MMP SUPPORT
10776M: Eric Miao <eric.y.miao@gmail.com>
10777M: Haojian Zhuang <haojian.zhuang@gmail.com>
10778L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
10779T: git git://github.com/hzhuang1/linux.git
10780T: git git://git.linaro.org/people/ycmiao/pxa-linux.git
10781S: Maintained
10782F: arch/arm/boot/dts/mmp*
10783F: arch/arm/mach-mmp/
10784
10785PXA MMCI DRIVER
10786S: Orphan
10787
10788PXA RTC DRIVER
10789M: Robert Jarzmik <robert.jarzmik@free.fr>
10790L: linux-rtc@vger.kernel.org
10791S: Maintained
10792
10793QAT DRIVER 10789QAT DRIVER
10794M: Giovanni Cabiddu <giovanni.cabiddu@intel.com> 10790M: Giovanni Cabiddu <giovanni.cabiddu@intel.com>
10795M: Salvatore Benedetto <salvatore.benedetto@intel.com> 10791M: Salvatore Benedetto <salvatore.benedetto@intel.com>
@@ -10797,12 +10793,56 @@ L: qat-linux@intel.com
10797S: Supported 10793S: Supported
10798F: drivers/crypto/qat/ 10794F: drivers/crypto/qat/
10799 10795
10796QCOM AUDIO (ASoC) DRIVERS
10797M: Patrick Lai <plai@codeaurora.org>
10798M: Banajit Goswami <bgoswami@codeaurora.org>
10799L: alsa-devel@alsa-project.org (moderated for non-subscribers)
10800S: Supported
10801F: sound/soc/qcom/
10802
10803QEMU MACHINE EMULATOR AND VIRTUALIZER SUPPORT
10804M: Gabriel Somlo <somlo@cmu.edu>
10805M: "Michael S. Tsirkin" <mst@redhat.com>
10806L: qemu-devel@nongnu.org
10807S: Maintained
10808F: drivers/firmware/qemu_fw_cfg.c
10809
10800QIB DRIVER 10810QIB DRIVER
10801M: Mike Marciniszyn <infinipath@intel.com> 10811M: Mike Marciniszyn <infinipath@intel.com>
10802L: linux-rdma@vger.kernel.org 10812L: linux-rdma@vger.kernel.org
10803S: Supported 10813S: Supported
10804F: drivers/infiniband/hw/qib/ 10814F: drivers/infiniband/hw/qib/
10805 10815
10816QLOGIC QL41xxx FCOE DRIVER
10817M: QLogic-Storage-Upstream@cavium.com
10818L: linux-scsi@vger.kernel.org
10819S: Supported
10820F: drivers/scsi/qedf/
10821
10822QLOGIC QL41xxx ISCSI DRIVER
10823M: QLogic-Storage-Upstream@cavium.com
10824L: linux-scsi@vger.kernel.org
10825S: Supported
10826F: drivers/scsi/qedi/
10827
10828QLOGIC QL4xxx ETHERNET DRIVER
10829M: Yuval Mintz <Yuval.Mintz@cavium.com>
10830M: Ariel Elior <Ariel.Elior@cavium.com>
10831M: everest-linux-l2@cavium.com
10832L: netdev@vger.kernel.org
10833S: Supported
10834F: drivers/net/ethernet/qlogic/qed/
10835F: include/linux/qed/
10836F: drivers/net/ethernet/qlogic/qede/
10837
10838QLOGIC QL4xxx RDMA DRIVER
10839M: Ram Amrani <Ram.Amrani@cavium.com>
10840M: Ariel Elior <Ariel.Elior@cavium.com>
10841L: linux-rdma@vger.kernel.org
10842S: Supported
10843F: drivers/infiniband/hw/qedr/
10844F: include/uapi/rdma/qedr-abi.h
10845
10806QLOGIC QLA1280 SCSI DRIVER 10846QLOGIC QLA1280 SCSI DRIVER
10807M: Michael Reed <mdr@sgi.com> 10847M: Michael Reed <mdr@sgi.com>
10808L: linux-scsi@vger.kernel.org 10848L: linux-scsi@vger.kernel.org
@@ -10816,13 +10856,6 @@ S: Supported
10816F: Documentation/scsi/LICENSE.qla2xxx 10856F: Documentation/scsi/LICENSE.qla2xxx
10817F: drivers/scsi/qla2xxx/ 10857F: drivers/scsi/qla2xxx/
10818 10858
10819QLOGIC QLA4XXX iSCSI DRIVER
10820M: QLogic-Storage-Upstream@qlogic.com
10821L: linux-scsi@vger.kernel.org
10822S: Supported
10823F: Documentation/scsi/LICENSE.qla4xxx
10824F: drivers/scsi/qla4xxx/
10825
10826QLOGIC QLA3XXX NETWORK DRIVER 10859QLOGIC QLA3XXX NETWORK DRIVER
10827M: Dept-GELinuxNICDev@cavium.com 10860M: Dept-GELinuxNICDev@cavium.com
10828L: netdev@vger.kernel.org 10861L: netdev@vger.kernel.org
@@ -10830,6 +10863,13 @@ S: Supported
10830F: Documentation/networking/LICENSE.qla3xxx 10863F: Documentation/networking/LICENSE.qla3xxx
10831F: drivers/net/ethernet/qlogic/qla3xxx.* 10864F: drivers/net/ethernet/qlogic/qla3xxx.*
10832 10865
10866QLOGIC QLA4XXX iSCSI DRIVER
10867M: QLogic-Storage-Upstream@qlogic.com
10868L: linux-scsi@vger.kernel.org
10869S: Supported
10870F: Documentation/scsi/LICENSE.qla4xxx
10871F: drivers/scsi/qla4xxx/
10872
10833QLOGIC QLCNIC (1/10)Gb ETHERNET DRIVER 10873QLOGIC QLCNIC (1/10)Gb ETHERNET DRIVER
10834M: Harish Patil <harish.patil@cavium.com> 10874M: Harish Patil <harish.patil@cavium.com>
10835M: Manish Chopra <manish.chopra@cavium.com> 10875M: Manish Chopra <manish.chopra@cavium.com>
@@ -10846,28 +10886,6 @@ L: netdev@vger.kernel.org
10846S: Supported 10886S: Supported
10847F: drivers/net/ethernet/qlogic/qlge/ 10887F: drivers/net/ethernet/qlogic/qlge/
10848 10888
10849QLOGIC QL4xxx ETHERNET DRIVER
10850M: Yuval Mintz <Yuval.Mintz@cavium.com>
10851M: Ariel Elior <Ariel.Elior@cavium.com>
10852M: everest-linux-l2@cavium.com
10853L: netdev@vger.kernel.org
10854S: Supported
10855F: drivers/net/ethernet/qlogic/qed/
10856F: include/linux/qed/
10857F: drivers/net/ethernet/qlogic/qede/
10858
10859QLOGIC QL41xxx ISCSI DRIVER
10860M: QLogic-Storage-Upstream@cavium.com
10861L: linux-scsi@vger.kernel.org
10862S: Supported
10863F: drivers/scsi/qedi/
10864
10865QLOGIC QL41xxx FCOE DRIVER
10866M: QLogic-Storage-Upstream@cavium.com
10867L: linux-scsi@vger.kernel.org
10868S: Supported
10869F: drivers/scsi/qedf/
10870
10871QNX4 FILESYSTEM 10889QNX4 FILESYSTEM
10872M: Anders Larsen <al@alarsen.net> 10890M: Anders Larsen <al@alarsen.net>
10873W: http://www.alarsen.net/linux/qnx4fs/ 10891W: http://www.alarsen.net/linux/qnx4fs/
@@ -10894,13 +10912,6 @@ T: git git://linuxtv.org/anttip/media_tree.git
10894S: Maintained 10912S: Maintained
10895F: drivers/media/tuners/qt1010* 10913F: drivers/media/tuners/qt1010*
10896 10914
10897QUALCOMM ATHEROS ATH9K WIRELESS DRIVER
10898M: QCA ath9k Development <ath9k-devel@qca.qualcomm.com>
10899L: linux-wireless@vger.kernel.org
10900W: http://wireless.kernel.org/en/users/Drivers/ath9k
10901S: Supported
10902F: drivers/net/wireless/ath/ath9k/
10903
10904QUALCOMM ATHEROS ATH10K WIRELESS DRIVER 10915QUALCOMM ATHEROS ATH10K WIRELESS DRIVER
10905M: Kalle Valo <kvalo@qca.qualcomm.com> 10916M: Kalle Valo <kvalo@qca.qualcomm.com>
10906L: ath10k@lists.infradead.org 10917L: ath10k@lists.infradead.org
@@ -10909,6 +10920,13 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
10909S: Supported 10920S: Supported
10910F: drivers/net/wireless/ath/ath10k/ 10921F: drivers/net/wireless/ath/ath10k/
10911 10922
10923QUALCOMM ATHEROS ATH9K WIRELESS DRIVER
10924M: QCA ath9k Development <ath9k-devel@qca.qualcomm.com>
10925L: linux-wireless@vger.kernel.org
10926W: http://wireless.kernel.org/en/users/Drivers/ath9k
10927S: Supported
10928F: drivers/net/wireless/ath/ath9k/
10929
10912QUALCOMM EMAC GIGABIT ETHERNET DRIVER 10930QUALCOMM EMAC GIGABIT ETHERNET DRIVER
10913M: Timur Tabi <timur@codeaurora.org> 10931M: Timur Tabi <timur@codeaurora.org>
10914L: netdev@vger.kernel.org 10932L: netdev@vger.kernel.org
@@ -10938,33 +10956,24 @@ T: git git://github.com/KrasnikovEugene/wcn36xx.git
10938S: Supported 10956S: Supported
10939F: drivers/net/wireless/ath/wcn36xx/ 10957F: drivers/net/wireless/ath/wcn36xx/
10940 10958
10941QEMU MACHINE EMULATOR AND VIRTUALIZER SUPPORT
10942M: Gabriel Somlo <somlo@cmu.edu>
10943M: "Michael S. Tsirkin" <mst@redhat.com>
10944L: qemu-devel@nongnu.org
10945S: Maintained
10946F: drivers/firmware/qemu_fw_cfg.c
10947
10948QUANTENNA QTNFMAC WIRELESS DRIVER 10959QUANTENNA QTNFMAC WIRELESS DRIVER
10949M: Igor Mitsyanko <imitsyanko@quantenna.com> 10960M: Igor Mitsyanko <imitsyanko@quantenna.com>
10950M: Avinash Patil <avinashp@quantenna.com> 10961M: Avinash Patil <avinashp@quantenna.com>
10951M: Sergey Matyukevich <smatyukevich@quantenna.com> 10962M: Sergey Matyukevich <smatyukevich@quantenna.com>
10952L: linux-wireless@vger.kernel.org 10963L: linux-wireless@vger.kernel.org
10953S: Maintained 10964S: Maintained
10954F: drivers/net/wireless/quantenna 10965F: drivers/net/wireless/quantenna
10955 10966
10956RADOS BLOCK DEVICE (RBD) 10967RADEON and AMDGPU DRM DRIVERS
10957M: Ilya Dryomov <idryomov@gmail.com> 10968M: Alex Deucher <alexander.deucher@amd.com>
10958M: Sage Weil <sage@redhat.com> 10969M: Christian König <christian.koenig@amd.com>
10959M: Alex Elder <elder@kernel.org> 10970L: amd-gfx@lists.freedesktop.org
10960L: ceph-devel@vger.kernel.org 10971T: git git://people.freedesktop.org/~agd5f/linux
10961W: http://ceph.com/
10962T: git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git
10963T: git git://github.com/ceph/ceph-client.git
10964S: Supported 10972S: Supported
10965F: Documentation/ABI/testing/sysfs-bus-rbd 10973F: drivers/gpu/drm/radeon/
10966F: drivers/block/rbd.c 10974F: include/uapi/drm/radeon_drm.h
10967F: drivers/block/rbd_types.h 10975F: drivers/gpu/drm/amd/
10976F: include/uapi/drm/amdgpu_drm.h
10968 10977
10969RADEON FRAMEBUFFER DISPLAY DRIVER 10978RADEON FRAMEBUFFER DISPLAY DRIVER
10970M: Benjamin Herrenschmidt <benh@kernel.crashing.org> 10979M: Benjamin Herrenschmidt <benh@kernel.crashing.org>
@@ -10988,6 +10997,19 @@ S: Maintained
10988F: drivers/media/radio/radio-shark2.c 10997F: drivers/media/radio/radio-shark2.c
10989F: drivers/media/radio/radio-tea5777.c 10998F: drivers/media/radio/radio-tea5777.c
10990 10999
11000RADOS BLOCK DEVICE (RBD)
11001M: Ilya Dryomov <idryomov@gmail.com>
11002M: Sage Weil <sage@redhat.com>
11003M: Alex Elder <elder@kernel.org>
11004L: ceph-devel@vger.kernel.org
11005W: http://ceph.com/
11006T: git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git
11007T: git git://github.com/ceph/ceph-client.git
11008S: Supported
11009F: Documentation/ABI/testing/sysfs-bus-rbd
11010F: drivers/block/rbd.c
11011F: drivers/block/rbd_types.h
11012
10991RAGE128 FRAMEBUFFER DISPLAY DRIVER 11013RAGE128 FRAMEBUFFER DISPLAY DRIVER
10992M: Paul Mackerras <paulus@samba.org> 11014M: Paul Mackerras <paulus@samba.org>
10993L: linux-fbdev@vger.kernel.org 11015L: linux-fbdev@vger.kernel.org
@@ -11067,6 +11089,12 @@ L: netdev@vger.kernel.org
11067S: Maintained 11089S: Maintained
11068F: drivers/net/ethernet/rdc/r6040.c 11090F: drivers/net/ethernet/rdc/r6040.c
11069 11091
11092RDMAVT - RDMA verbs software
11093M: Dennis Dalessandro <dennis.dalessandro@intel.com>
11094L: linux-rdma@vger.kernel.org
11095S: Supported
11096F: drivers/infiniband/sw/rdmavt
11097
11070RDS - RELIABLE DATAGRAM SOCKETS 11098RDS - RELIABLE DATAGRAM SOCKETS
11071M: Santosh Shilimkar <santosh.shilimkar@oracle.com> 11099M: Santosh Shilimkar <santosh.shilimkar@oracle.com>
11072L: netdev@vger.kernel.org 11100L: netdev@vger.kernel.org
@@ -11077,12 +11105,6 @@ S: Supported
11077F: net/rds/ 11105F: net/rds/
11078F: Documentation/networking/rds.txt 11106F: Documentation/networking/rds.txt
11079 11107
11080RDMAVT - RDMA verbs software
11081M: Dennis Dalessandro <dennis.dalessandro@intel.com>
11082L: linux-rdma@vger.kernel.org
11083S: Supported
11084F: drivers/infiniband/sw/rdmavt
11085
11086RDT - RESOURCE ALLOCATION 11108RDT - RESOURCE ALLOCATION
11087M: Fenghua Yu <fenghua.yu@intel.com> 11109M: Fenghua Yu <fenghua.yu@intel.com>
11088L: linux-kernel@vger.kernel.org 11110L: linux-kernel@vger.kernel.org
@@ -11131,11 +11153,6 @@ S: Maintained
11131F: sound/soc/codecs/rt* 11153F: sound/soc/codecs/rt*
11132F: include/sound/rt*.h 11154F: include/sound/rt*.h
11133 11155
11134REISERFS FILE SYSTEM
11135L: reiserfs-devel@vger.kernel.org
11136S: Supported
11137F: fs/reiserfs/
11138
11139REGISTER MAP ABSTRACTION 11156REGISTER MAP ABSTRACTION
11140M: Mark Brown <broonie@kernel.org> 11157M: Mark Brown <broonie@kernel.org>
11141L: linux-kernel@vger.kernel.org 11158L: linux-kernel@vger.kernel.org
@@ -11145,6 +11162,11 @@ F: Documentation/devicetree/bindings/regmap/
11145F: drivers/base/regmap/ 11162F: drivers/base/regmap/
11146F: include/linux/regmap.h 11163F: include/linux/regmap.h
11147 11164
11165REISERFS FILE SYSTEM
11166L: reiserfs-devel@vger.kernel.org
11167S: Supported
11168F: fs/reiserfs/
11169
11148REMOTE PROCESSOR (REMOTEPROC) SUBSYSTEM 11170REMOTE PROCESSOR (REMOTEPROC) SUBSYSTEM
11149M: Ohad Ben-Cohen <ohad@wizery.com> 11171M: Ohad Ben-Cohen <ohad@wizery.com>
11150M: Bjorn Andersson <bjorn.andersson@linaro.org> 11172M: Bjorn Andersson <bjorn.andersson@linaro.org>
@@ -11220,16 +11242,16 @@ S: Maintained
11220F: lib/rhashtable.c 11242F: lib/rhashtable.c
11221F: include/linux/rhashtable.h 11243F: include/linux/rhashtable.h
11222 11244
11223RICOH SMARTMEDIA/XD DRIVER 11245RICOH R5C592 MEMORYSTICK DRIVER
11224M: Maxim Levitsky <maximlevitsky@gmail.com> 11246M: Maxim Levitsky <maximlevitsky@gmail.com>
11225S: Maintained 11247S: Maintained
11226F: drivers/mtd/nand/r852.c 11248F: drivers/memstick/host/r592.*
11227F: drivers/mtd/nand/r852.h
11228 11249
11229RICOH R5C592 MEMORYSTICK DRIVER 11250RICOH SMARTMEDIA/XD DRIVER
11230M: Maxim Levitsky <maximlevitsky@gmail.com> 11251M: Maxim Levitsky <maximlevitsky@gmail.com>
11231S: Maintained 11252S: Maintained
11232F: drivers/memstick/host/r592.* 11253F: drivers/mtd/nand/r852.c
11254F: drivers/mtd/nand/r852.h
11233 11255
11234ROCCAT DRIVERS 11256ROCCAT DRIVERS
11235M: Stefan Achatz <erazor_de@users.sourceforge.net> 11257M: Stefan Achatz <erazor_de@users.sourceforge.net>
@@ -11366,6 +11388,23 @@ S: Supported
11366F: drivers/s390/block/dasd* 11388F: drivers/s390/block/dasd*
11367F: block/partitions/ibm.c 11389F: block/partitions/ibm.c
11368 11390
11391S390 IOMMU (PCI)
11392M: Gerald Schaefer <gerald.schaefer@de.ibm.com>
11393L: linux-s390@vger.kernel.org
11394W: http://www.ibm.com/developerworks/linux/linux390/
11395S: Supported
11396F: drivers/iommu/s390-iommu.c
11397
11398S390 IUCV NETWORK LAYER
11399M: Julian Wiedmann <jwi@linux.vnet.ibm.com>
11400M: Ursula Braun <ubraun@linux.vnet.ibm.com>
11401L: linux-s390@vger.kernel.org
11402W: http://www.ibm.com/developerworks/linux/linux390/
11403S: Supported
11404F: drivers/s390/net/*iucv*
11405F: include/net/iucv/
11406F: net/iucv/
11407
11369S390 NETWORK DRIVERS 11408S390 NETWORK DRIVERS
11370M: Julian Wiedmann <jwi@linux.vnet.ibm.com> 11409M: Julian Wiedmann <jwi@linux.vnet.ibm.com>
11371M: Ursula Braun <ubraun@linux.vnet.ibm.com> 11410M: Ursula Braun <ubraun@linux.vnet.ibm.com>
@@ -11383,6 +11422,16 @@ S: Supported
11383F: arch/s390/pci/ 11422F: arch/s390/pci/
11384F: drivers/pci/hotplug/s390_pci_hpc.c 11423F: drivers/pci/hotplug/s390_pci_hpc.c
11385 11424
11425S390 VFIO-CCW DRIVER
11426M: Cornelia Huck <cohuck@redhat.com>
11427M: Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
11428L: linux-s390@vger.kernel.org
11429L: kvm@vger.kernel.org
11430S: Supported
11431F: drivers/s390/cio/vfio_ccw*
11432F: Documentation/s390/vfio-ccw.txt
11433F: include/uapi/linux/vfio_ccw.h
11434
11386S390 ZCRYPT DRIVER 11435S390 ZCRYPT DRIVER
11387M: Harald Freudenberger <freude@de.ibm.com> 11436M: Harald Freudenberger <freude@de.ibm.com>
11388L: linux-s390@vger.kernel.org 11437L: linux-s390@vger.kernel.org
@@ -11397,33 +11446,6 @@ W: http://www.ibm.com/developerworks/linux/linux390/
11397S: Supported 11446S: Supported
11398F: drivers/s390/scsi/zfcp_* 11447F: drivers/s390/scsi/zfcp_*
11399 11448
11400S390 IUCV NETWORK LAYER
11401M: Julian Wiedmann <jwi@linux.vnet.ibm.com>
11402M: Ursula Braun <ubraun@linux.vnet.ibm.com>
11403L: linux-s390@vger.kernel.org
11404W: http://www.ibm.com/developerworks/linux/linux390/
11405S: Supported
11406F: drivers/s390/net/*iucv*
11407F: include/net/iucv/
11408F: net/iucv/
11409
11410S390 IOMMU (PCI)
11411M: Gerald Schaefer <gerald.schaefer@de.ibm.com>
11412L: linux-s390@vger.kernel.org
11413W: http://www.ibm.com/developerworks/linux/linux390/
11414S: Supported
11415F: drivers/iommu/s390-iommu.c
11416
11417S390 VFIO-CCW DRIVER
11418M: Cornelia Huck <cohuck@redhat.com>
11419M: Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
11420L: linux-s390@vger.kernel.org
11421L: kvm@vger.kernel.org
11422S: Supported
11423F: drivers/s390/cio/vfio_ccw*
11424F: Documentation/s390/vfio-ccw.txt
11425F: include/uapi/linux/vfio_ccw.h
11426
11427S3C24XX SD/MMC Driver 11449S3C24XX SD/MMC Driver
11428M: Ben Dooks <ben-linux@fluff.org> 11450M: Ben Dooks <ben-linux@fluff.org>
11429L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 11451L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@ -11457,12 +11479,6 @@ F: drivers/media/common/saa7146/
11457F: drivers/media/pci/saa7146/ 11479F: drivers/media/pci/saa7146/
11458F: include/media/saa7146* 11480F: include/media/saa7146*
11459 11481
11460SAMSUNG LAPTOP DRIVER
11461M: Corentin Chary <corentin.chary@gmail.com>
11462L: platform-driver-x86@vger.kernel.org
11463S: Maintained
11464F: drivers/platform/x86/samsung-laptop.c
11465
11466SAMSUNG AUDIO (ASoC) DRIVERS 11482SAMSUNG AUDIO (ASoC) DRIVERS
11467M: Krzysztof Kozlowski <krzk@kernel.org> 11483M: Krzysztof Kozlowski <krzk@kernel.org>
11468M: Sangbeom Kim <sbkim73@samsung.com> 11484M: Sangbeom Kim <sbkim73@samsung.com>
@@ -11485,6 +11501,12 @@ L: linux-fbdev@vger.kernel.org
11485S: Maintained 11501S: Maintained
11486F: drivers/video/fbdev/s3c-fb.c 11502F: drivers/video/fbdev/s3c-fb.c
11487 11503
11504SAMSUNG LAPTOP DRIVER
11505M: Corentin Chary <corentin.chary@gmail.com>
11506L: platform-driver-x86@vger.kernel.org
11507S: Maintained
11508F: drivers/platform/x86/samsung-laptop.c
11509
11488SAMSUNG MULTIFUNCTION PMIC DEVICE DRIVERS 11510SAMSUNG MULTIFUNCTION PMIC DEVICE DRIVERS
11489M: Sangbeom Kim <sbkim73@samsung.com> 11511M: Sangbeom Kim <sbkim73@samsung.com>
11490M: Krzysztof Kozlowski <krzk@kernel.org> 11512M: Krzysztof Kozlowski <krzk@kernel.org>
@@ -11503,22 +11525,6 @@ F: Documentation/devicetree/bindings/regulator/samsung,s2m*.txt
11503F: Documentation/devicetree/bindings/regulator/samsung,s5m*.txt 11525F: Documentation/devicetree/bindings/regulator/samsung,s5m*.txt
11504F: Documentation/devicetree/bindings/clock/samsung,s2mps11.txt 11526F: Documentation/devicetree/bindings/clock/samsung,s2mps11.txt
11505 11527
11506SAMSUNG S5P Security SubSystem (SSS) DRIVER
11507M: Krzysztof Kozlowski <krzk@kernel.org>
11508M: Vladimir Zapolskiy <vz@mleia.com>
11509L: linux-crypto@vger.kernel.org
11510L: linux-samsung-soc@vger.kernel.org
11511S: Maintained
11512F: drivers/crypto/s5p-sss.c
11513
11514SAMSUNG S5P/EXYNOS4 SOC SERIES CAMERA SUBSYSTEM DRIVERS
11515M: Kyungmin Park <kyungmin.park@samsung.com>
11516M: Sylwester Nawrocki <s.nawrocki@samsung.com>
11517L: linux-media@vger.kernel.org
11518Q: https://patchwork.linuxtv.org/project/linux-media/list/
11519S: Supported
11520F: drivers/media/platform/exynos4-is/
11521
11522SAMSUNG S3C24XX/S3C64XX SOC SERIES CAMIF DRIVER 11528SAMSUNG S3C24XX/S3C64XX SOC SERIES CAMIF DRIVER
11523M: Sylwester Nawrocki <sylvester.nawrocki@gmail.com> 11529M: Sylwester Nawrocki <sylvester.nawrocki@gmail.com>
11524L: linux-media@vger.kernel.org 11530L: linux-media@vger.kernel.org
@@ -11527,6 +11533,13 @@ S: Maintained
11527F: drivers/media/platform/s3c-camif/ 11533F: drivers/media/platform/s3c-camif/
11528F: include/media/drv-intf/s3c_camif.h 11534F: include/media/drv-intf/s3c_camif.h
11529 11535
11536SAMSUNG S3FWRN5 NFC DRIVER
11537M: Robert Baldyga <r.baldyga@samsung.com>
11538M: Krzysztof Opasiak <k.opasiak@samsung.com>
11539L: linux-nfc@lists.01.org (moderated for non-subscribers)
11540S: Supported
11541F: drivers/nfc/s3fwrn5
11542
11530SAMSUNG S5C73M3 CAMERA DRIVER 11543SAMSUNG S5C73M3 CAMERA DRIVER
11531M: Kyungmin Park <kyungmin.park@samsung.com> 11544M: Kyungmin Park <kyungmin.park@samsung.com>
11532M: Andrzej Hajda <a.hajda@samsung.com> 11545M: Andrzej Hajda <a.hajda@samsung.com>
@@ -11541,12 +11554,21 @@ L: linux-media@vger.kernel.org
11541S: Supported 11554S: Supported
11542F: drivers/media/i2c/s5k5baf.c 11555F: drivers/media/i2c/s5k5baf.c
11543 11556
11544SAMSUNG S3FWRN5 NFC DRIVER 11557SAMSUNG S5P Security SubSystem (SSS) DRIVER
11545M: Robert Baldyga <r.baldyga@samsung.com> 11558M: Krzysztof Kozlowski <krzk@kernel.org>
11546M: Krzysztof Opasiak <k.opasiak@samsung.com> 11559M: Vladimir Zapolskiy <vz@mleia.com>
11547L: linux-nfc@lists.01.org (moderated for non-subscribers) 11560L: linux-crypto@vger.kernel.org
11561L: linux-samsung-soc@vger.kernel.org
11562S: Maintained
11563F: drivers/crypto/s5p-sss.c
11564
11565SAMSUNG S5P/EXYNOS4 SOC SERIES CAMERA SUBSYSTEM DRIVERS
11566M: Kyungmin Park <kyungmin.park@samsung.com>
11567M: Sylwester Nawrocki <s.nawrocki@samsung.com>
11568L: linux-media@vger.kernel.org
11569Q: https://patchwork.linuxtv.org/project/linux-media/list/
11548S: Supported 11570S: Supported
11549F: drivers/nfc/s3fwrn5 11571F: drivers/media/platform/exynos4-is/
11550 11572
11551SAMSUNG SOC CLOCK DRIVERS 11573SAMSUNG SOC CLOCK DRIVERS
11552M: Sylwester Nawrocki <s.nawrocki@samsung.com> 11574M: Sylwester Nawrocki <s.nawrocki@samsung.com>
@@ -11599,126 +11621,6 @@ F: drivers/phy/samsung/phy-s5pv210-usb2.c
11599F: drivers/phy/samsung/phy-samsung-usb2.c 11621F: drivers/phy/samsung/phy-samsung-usb2.c
11600F: drivers/phy/samsung/phy-samsung-usb2.h 11622F: drivers/phy/samsung/phy-samsung-usb2.h
11601 11623
11602SERIAL DRIVERS
11603M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11604L: linux-serial@vger.kernel.org
11605S: Maintained
11606F: Documentation/devicetree/bindings/serial/
11607F: drivers/tty/serial/
11608
11609SERIAL DEVICE BUS
11610M: Rob Herring <robh@kernel.org>
11611L: linux-serial@vger.kernel.org
11612S: Maintained
11613F: Documentation/devicetree/bindings/serial/slave-device.txt
11614F: drivers/tty/serdev/
11615F: include/linux/serdev.h
11616
11617SERIAL IR RECEIVER
11618M: Sean Young <sean@mess.org>
11619L: linux-media@vger.kernel.org
11620S: Maintained
11621F: drivers/media/rc/serial_ir.c
11622
11623STI CEC DRIVER
11624M: Benjamin Gaignard <benjamin.gaignard@linaro.org>
11625S: Maintained
11626F: drivers/staging/media/st-cec/
11627F: Documentation/devicetree/bindings/media/stih-cec.txt
11628
11629SHARED MEMORY COMMUNICATIONS (SMC) SOCKETS
11630M: Ursula Braun <ubraun@linux.vnet.ibm.com>
11631L: linux-s390@vger.kernel.org
11632W: http://www.ibm.com/developerworks/linux/linux390/
11633S: Supported
11634F: net/smc/
11635
11636SYNOPSYS DESIGNWARE DMAC DRIVER
11637M: Viresh Kumar <vireshk@kernel.org>
11638M: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
11639S: Maintained
11640F: include/linux/dma/dw.h
11641F: include/linux/platform_data/dma-dw.h
11642F: drivers/dma/dw/
11643
11644SYNOPSYS DESIGNWARE ENTERPRISE ETHERNET DRIVER
11645M: Jie Deng <jiedeng@synopsys.com>
11646L: netdev@vger.kernel.org
11647S: Supported
11648F: drivers/net/ethernet/synopsys/
11649
11650SYNOPSYS DESIGNWARE I2C DRIVER
11651M: Jarkko Nikula <jarkko.nikula@linux.intel.com>
11652R: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
11653R: Mika Westerberg <mika.westerberg@linux.intel.com>
11654L: linux-i2c@vger.kernel.org
11655S: Maintained
11656F: drivers/i2c/busses/i2c-designware-*
11657F: include/linux/platform_data/i2c-designware.h
11658
11659SYNOPSYS DESIGNWARE MMC/SD/SDIO DRIVER
11660M: Jaehoon Chung <jh80.chung@samsung.com>
11661L: linux-mmc@vger.kernel.org
11662S: Maintained
11663F: drivers/mmc/host/dw_mmc*
11664
11665SYSTEM TRACE MODULE CLASS
11666M: Alexander Shishkin <alexander.shishkin@linux.intel.com>
11667S: Maintained
11668T: git git://git.kernel.org/pub/scm/linux/kernel/git/ash/stm.git
11669F: Documentation/trace/stm.txt
11670F: drivers/hwtracing/stm/
11671F: include/linux/stm.h
11672F: include/uapi/linux/stm.h
11673
11674TEE SUBSYSTEM
11675M: Jens Wiklander <jens.wiklander@linaro.org>
11676S: Maintained
11677F: include/linux/tee_drv.h
11678F: include/uapi/linux/tee.h
11679F: drivers/tee/
11680F: Documentation/tee.txt
11681
11682THUNDERBOLT DRIVER
11683M: Andreas Noever <andreas.noever@gmail.com>
11684M: Michael Jamet <michael.jamet@intel.com>
11685M: Mika Westerberg <mika.westerberg@linux.intel.com>
11686M: Yehezkel Bernat <yehezkel.bernat@intel.com>
11687S: Maintained
11688F: drivers/thunderbolt/
11689
11690TI BQ27XXX POWER SUPPLY DRIVER
11691R: Andrew F. Davis <afd@ti.com>
11692F: include/linux/power/bq27xxx_battery.h
11693F: drivers/power/supply/bq27xxx_battery.c
11694F: drivers/power/supply/bq27xxx_battery_i2c.c
11695
11696TIMEKEEPING, CLOCKSOURCE CORE, NTP, ALARMTIMER
11697M: John Stultz <john.stultz@linaro.org>
11698M: Thomas Gleixner <tglx@linutronix.de>
11699R: Stephen Boyd <sboyd@codeaurora.org>
11700L: linux-kernel@vger.kernel.org
11701T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core
11702S: Supported
11703F: include/linux/clocksource.h
11704F: include/linux/time.h
11705F: include/linux/timex.h
11706F: include/uapi/linux/time.h
11707F: include/uapi/linux/timex.h
11708F: kernel/time/clocksource.c
11709F: kernel/time/time*.c
11710F: kernel/time/alarmtimer.c
11711F: kernel/time/ntp.c
11712F: tools/testing/selftests/timers/
11713
11714TI TRF7970A NFC DRIVER
11715M: Mark Greer <mgreer@animalcreek.com>
11716L: linux-wireless@vger.kernel.org
11717L: linux-nfc@lists.01.org (moderated for non-subscribers)
11718S: Supported
11719F: drivers/nfc/trf7970a.c
11720F: Documentation/devicetree/bindings/net/nfc/trf7970a.txt
11721
11722SC1200 WDT DRIVER 11624SC1200 WDT DRIVER
11723M: Zwane Mwaikambo <zwanem@gmail.com> 11625M: Zwane Mwaikambo <zwanem@gmail.com>
11724S: Maintained 11626S: Maintained
@@ -11747,16 +11649,6 @@ M: Lubomir Rintel <lkundrak@v3.sk>
11747S: Supported 11649S: Supported
11748F: drivers/char/pcmcia/scr24x_cs.c 11650F: drivers/char/pcmcia/scr24x_cs.c
11749 11651
11750SYSTEM CONTROL & POWER INTERFACE (SCPI) Message Protocol drivers
11751M: Sudeep Holla <sudeep.holla@arm.com>
11752L: linux-arm-kernel@lists.infradead.org
11753S: Maintained
11754F: Documentation/devicetree/bindings/arm/arm,scpi.txt
11755F: drivers/clk/clk-scpi.c
11756F: drivers/cpufreq/scpi-cpufreq.c
11757F: drivers/firmware/arm_scpi.c
11758F: include/linux/scpi_protocol.h
11759
11760SCSI CDROM DRIVER 11652SCSI CDROM DRIVER
11761M: Jens Axboe <axboe@kernel.dk> 11653M: Jens Axboe <axboe@kernel.dk>
11762L: linux-scsi@vger.kernel.org 11654L: linux-scsi@vger.kernel.org
@@ -11841,14 +11733,6 @@ L: sdricohcs-devel@lists.sourceforge.net (subscribers-only)
11841S: Maintained 11733S: Maintained
11842F: drivers/mmc/host/sdricoh_cs.c 11734F: drivers/mmc/host/sdricoh_cs.c
11843 11735
11844SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) DRIVER
11845M: Adrian Hunter <adrian.hunter@intel.com>
11846L: linux-mmc@vger.kernel.org
11847T: git git://git.infradead.org/users/ahunter/linux-sdhci.git
11848S: Maintained
11849F: drivers/mmc/host/sdhci*
11850F: include/linux/mmc/sdhci*
11851
11852SECURE COMPUTING 11736SECURE COMPUTING
11853M: Kees Cook <keescook@chromium.org> 11737M: Kees Cook <keescook@chromium.org>
11854R: Andy Lutomirski <luto@amacapital.net> 11738R: Andy Lutomirski <luto@amacapital.net>
@@ -11871,6 +11755,14 @@ L: bcm-kernel-feedback-list@broadcom.com
11871S: Maintained 11755S: Maintained
11872F: drivers/mmc/host/sdhci-brcmstb* 11756F: drivers/mmc/host/sdhci-brcmstb*
11873 11757
11758SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) DRIVER
11759M: Adrian Hunter <adrian.hunter@intel.com>
11760L: linux-mmc@vger.kernel.org
11761T: git git://git.infradead.org/users/ahunter/linux-sdhci.git
11762S: Maintained
11763F: drivers/mmc/host/sdhci*
11764F: include/linux/mmc/sdhci*
11765
11874SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) SAMSUNG DRIVER 11766SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) SAMSUNG DRIVER
11875M: Ben Dooks <ben-linux@fluff.org> 11767M: Ben Dooks <ben-linux@fluff.org>
11876M: Jaehoon Chung <jh80.chung@samsung.com> 11768M: Jaehoon Chung <jh80.chung@samsung.com>
@@ -11895,6 +11787,10 @@ F: block/opal_proto.h
11895F: include/linux/sed* 11787F: include/linux/sed*
11896F: include/uapi/linux/sed* 11788F: include/uapi/linux/sed*
11897 11789
11790SECURITY CONTACT
11791M: Security Officers <security@kernel.org>
11792S: Supported
11793
11898SECURITY SUBSYSTEM 11794SECURITY SUBSYSTEM
11899M: James Morris <james.l.morris@oracle.com> 11795M: James Morris <james.l.morris@oracle.com>
11900M: "Serge E. Hallyn" <serge@hallyn.com> 11796M: "Serge E. Hallyn" <serge@hallyn.com>
@@ -11904,10 +11800,6 @@ W: http://kernsec.org/
11904S: Supported 11800S: Supported
11905F: security/ 11801F: security/
11906 11802
11907SECURITY CONTACT
11908M: Security Officers <security@kernel.org>
11909S: Supported
11910
11911SELINUX SECURITY MODULE 11803SELINUX SECURITY MODULE
11912M: Paul Moore <paul@paul-moore.com> 11804M: Paul Moore <paul@paul-moore.com>
11913M: Stephen Smalley <sds@tycho.nsa.gov> 11805M: Stephen Smalley <sds@tycho.nsa.gov>
@@ -11921,62 +11813,32 @@ F: security/selinux/
11921F: scripts/selinux/ 11813F: scripts/selinux/
11922F: Documentation/admin-guide/LSM/SELinux.rst 11814F: Documentation/admin-guide/LSM/SELinux.rst
11923 11815
11924APPARMOR SECURITY MODULE
11925M: John Johansen <john.johansen@canonical.com>
11926L: apparmor@lists.ubuntu.com (subscribers-only, general discussion)
11927W: apparmor.wiki.kernel.org
11928T: git git://git.kernel.org/pub/scm/linux/kernel/git/jj/apparmor-dev.git
11929S: Supported
11930F: security/apparmor/
11931F: Documentation/admin-guide/LSM/apparmor.rst
11932
11933LOADPIN SECURITY MODULE
11934M: Kees Cook <keescook@chromium.org>
11935T: git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git lsm/loadpin
11936S: Supported
11937F: security/loadpin/
11938F: Documentation/admin-guide/LSM/LoadPin.rst
11939
11940YAMA SECURITY MODULE
11941M: Kees Cook <keescook@chromium.org>
11942T: git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git yama/tip
11943S: Supported
11944F: security/yama/
11945F: Documentation/admin-guide/LSM/Yama.rst
11946
11947SENSABLE PHANTOM 11816SENSABLE PHANTOM
11948M: Jiri Slaby <jirislaby@gmail.com> 11817M: Jiri Slaby <jirislaby@gmail.com>
11949S: Maintained 11818S: Maintained
11950F: drivers/misc/phantom.c 11819F: drivers/misc/phantom.c
11951F: include/uapi/linux/phantom.h 11820F: include/uapi/linux/phantom.h
11952 11821
11953Emulex 10Gbps iSCSI - OneConnect DRIVER 11822SERIAL DEVICE BUS
11954M: Subbu Seetharaman <subbu.seetharaman@broadcom.com> 11823M: Rob Herring <robh@kernel.org>
11955M: Ketan Mukadam <ketan.mukadam@broadcom.com> 11824L: linux-serial@vger.kernel.org
11956M: Jitendra Bhivare <jitendra.bhivare@broadcom.com> 11825S: Maintained
11957L: linux-scsi@vger.kernel.org 11826F: Documentation/devicetree/bindings/serial/slave-device.txt
11958W: http://www.broadcom.com 11827F: drivers/tty/serdev/
11959S: Supported 11828F: include/linux/serdev.h
11960F: drivers/scsi/be2iscsi/
11961 11829
11962Emulex 10Gbps NIC BE2, BE3-R, Lancer, Skyhawk-R DRIVER (be2net) 11830SERIAL DRIVERS
11963M: Sathya Perla <sathya.perla@broadcom.com> 11831M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11964M: Ajit Khaparde <ajit.khaparde@broadcom.com> 11832L: linux-serial@vger.kernel.org
11965M: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com> 11833S: Maintained
11966M: Somnath Kotur <somnath.kotur@broadcom.com> 11834F: Documentation/devicetree/bindings/serial/
11967L: netdev@vger.kernel.org 11835F: drivers/tty/serial/
11968W: http://www.emulex.com
11969S: Supported
11970F: drivers/net/ethernet/emulex/benet/
11971 11836
11972EMULEX ONECONNECT ROCE DRIVER 11837SERIAL IR RECEIVER
11973M: Selvin Xavier <selvin.xavier@broadcom.com> 11838M: Sean Young <sean@mess.org>
11974M: Devesh Sharma <devesh.sharma@broadcom.com> 11839L: linux-media@vger.kernel.org
11975L: linux-rdma@vger.kernel.org 11840S: Maintained
11976W: http://www.broadcom.com 11841F: drivers/media/rc/serial_ir.c
11977S: Odd Fixes
11978F: drivers/infiniband/hw/ocrdma/
11979F: include/uapi/rdma/ocrdma-abi.h
11980 11842
11981SFC NETWORK DRIVER 11843SFC NETWORK DRIVER
11982M: Solarflare linux maintainers <linux-net-drivers@solarflare.com> 11844M: Solarflare linux maintainers <linux-net-drivers@solarflare.com>
@@ -12005,6 +11867,24 @@ M: Robin Holt <robinmholt@gmail.com>
12005S: Maintained 11867S: Maintained
12006F: drivers/misc/sgi-xp/ 11868F: drivers/misc/sgi-xp/
12007 11869
11870SHARED MEMORY COMMUNICATIONS (SMC) SOCKETS
11871M: Ursula Braun <ubraun@linux.vnet.ibm.com>
11872L: linux-s390@vger.kernel.org
11873W: http://www.ibm.com/developerworks/linux/linux390/
11874S: Supported
11875F: net/smc/
11876
11877SH_VEU V4L2 MEM2MEM DRIVER
11878L: linux-media@vger.kernel.org
11879S: Orphan
11880F: drivers/media/platform/sh_veu.c
11881
11882SH_VOU V4L2 OUTPUT DRIVER
11883L: linux-media@vger.kernel.org
11884S: Orphan
11885F: drivers/media/platform/sh_vou.c
11886F: include/media/drv-intf/sh_vou.h
11887
12008SI2157 MEDIA DRIVER 11888SI2157 MEDIA DRIVER
12009M: Antti Palosaari <crope@iki.fi> 11889M: Antti Palosaari <crope@iki.fi>
12010L: linux-media@vger.kernel.org 11890L: linux-media@vger.kernel.org
@@ -12087,24 +11967,14 @@ S: Maintained
12087F: drivers/input/touchscreen/silead.c 11967F: drivers/input/touchscreen/silead.c
12088F: drivers/platform/x86/silead_dmi.c 11968F: drivers/platform/x86/silead_dmi.c
12089 11969
12090SIMPLEFB FB DRIVER 11970SILICON MOTION SM712 FRAME BUFFER DRIVER
12091M: Hans de Goede <hdegoede@redhat.com> 11971M: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
11972M: Teddy Wang <teddy.wang@siliconmotion.com>
11973M: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
12092L: linux-fbdev@vger.kernel.org 11974L: linux-fbdev@vger.kernel.org
12093S: Maintained 11975S: Maintained
12094F: Documentation/devicetree/bindings/display/simple-framebuffer.txt 11976F: drivers/video/fbdev/sm712*
12095F: drivers/video/fbdev/simplefb.c 11977F: Documentation/fb/sm712fb.txt
12096F: include/linux/platform_data/simplefb.h
12097
12098SH_VEU V4L2 MEM2MEM DRIVER
12099L: linux-media@vger.kernel.org
12100S: Orphan
12101F: drivers/media/platform/sh_veu.c
12102
12103SH_VOU V4L2 OUTPUT DRIVER
12104L: linux-media@vger.kernel.org
12105S: Orphan
12106F: drivers/media/platform/sh_vou.c
12107F: include/media/drv-intf/sh_vou.h
12108 11978
12109SIMPLE FIRMWARE INTERFACE (SFI) 11979SIMPLE FIRMWARE INTERFACE (SFI)
12110M: Len Brown <lenb@kernel.org> 11980M: Len Brown <lenb@kernel.org>
@@ -12116,6 +11986,14 @@ F: arch/x86/platform/sfi/
12116F: drivers/sfi/ 11986F: drivers/sfi/
12117F: include/linux/sfi*.h 11987F: include/linux/sfi*.h
12118 11988
11989SIMPLEFB FB DRIVER
11990M: Hans de Goede <hdegoede@redhat.com>
11991L: linux-fbdev@vger.kernel.org
11992S: Maintained
11993F: Documentation/devicetree/bindings/display/simple-framebuffer.txt
11994F: drivers/video/fbdev/simplefb.c
11995F: include/linux/platform_data/simplefb.h
11996
12119SIMTEC EB110ATX (Chalice CATS) 11997SIMTEC EB110ATX (Chalice CATS)
12120P: Ben Dooks 11998P: Ben Dooks
12121P: Vincent Sanders <vince@simtec.co.uk> 11999P: Vincent Sanders <vince@simtec.co.uk>
@@ -12140,61 +12018,6 @@ F: lib/siphash.c
12140F: lib/test_siphash.c 12018F: lib/test_siphash.c
12141F: include/linux/siphash.h 12019F: include/linux/siphash.h
12142 12020
12143TI DAVINCI MACHINE SUPPORT
12144M: Sekhar Nori <nsekhar@ti.com>
12145M: Kevin Hilman <khilman@kernel.org>
12146L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
12147T: git git://git.kernel.org/pub/scm/linux/kernel/git/nsekhar/linux-davinci.git
12148S: Supported
12149F: arch/arm/mach-davinci/
12150F: drivers/i2c/busses/i2c-davinci.c
12151F: arch/arm/boot/dts/da850*
12152
12153TI DAVINCI SERIES MEDIA DRIVER
12154M: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
12155L: linux-media@vger.kernel.org
12156W: https://linuxtv.org
12157Q: http://patchwork.linuxtv.org/project/linux-media/list/
12158T: git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git
12159S: Maintained
12160F: drivers/media/platform/davinci/
12161F: include/media/davinci/
12162
12163TI DAVINCI SERIES GPIO DRIVER
12164M: Keerthy <j-keerthy@ti.com>
12165L: linux-gpio@vger.kernel.org
12166S: Maintained
12167F: Documentation/devicetree/bindings/gpio/gpio-davinci.txt
12168F: drivers/gpio/gpio-davinci.c
12169
12170TI AM437X VPFE DRIVER
12171M: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
12172L: linux-media@vger.kernel.org
12173W: https://linuxtv.org
12174Q: http://patchwork.linuxtv.org/project/linux-media/list/
12175T: git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git
12176S: Maintained
12177F: drivers/media/platform/am437x/
12178
12179OV2659 OMNIVISION SENSOR DRIVER
12180M: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
12181L: linux-media@vger.kernel.org
12182W: https://linuxtv.org
12183Q: http://patchwork.linuxtv.org/project/linux-media/list/
12184T: git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git
12185S: Maintained
12186F: drivers/media/i2c/ov2659.c
12187F: include/media/i2c/ov2659.h
12188
12189SILICON MOTION SM712 FRAME BUFFER DRIVER
12190M: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
12191M: Teddy Wang <teddy.wang@siliconmotion.com>
12192M: Sudip Mukherjee <sudip.mukherjee@codethink.co.uk>
12193L: linux-fbdev@vger.kernel.org
12194S: Maintained
12195F: drivers/video/fbdev/sm712*
12196F: Documentation/fb/sm712fb.txt
12197
12198SIS 190 ETHERNET DRIVER 12021SIS 190 ETHERNET DRIVER
12199M: Francois Romieu <romieu@fr.zoreil.com> 12022M: Francois Romieu <romieu@fr.zoreil.com>
12200L: netdev@vger.kernel.org 12023L: netdev@vger.kernel.org
@@ -12255,14 +12078,6 @@ S: Maintained
12255F: Documentation/admin-guide/LSM/Smack.rst 12078F: Documentation/admin-guide/LSM/Smack.rst
12256F: security/smack/ 12079F: security/smack/
12257 12080
12258DRIVERS FOR ADAPTIVE VOLTAGE SCALING (AVS)
12259M: Kevin Hilman <khilman@kernel.org>
12260M: Nishanth Menon <nm@ti.com>
12261S: Maintained
12262F: drivers/power/avs/
12263F: include/linux/power/smartreflex.h
12264L: linux-pm@vger.kernel.org
12265
12266SMC91x ETHERNET DRIVER 12081SMC91x ETHERNET DRIVER
12267M: Nicolas Pitre <nico@fluxnic.net> 12082M: Nicolas Pitre <nico@fluxnic.net>
12268S: Odd Fixes 12083S: Odd Fixes
@@ -12300,6 +12115,12 @@ S: Supported
12300F: Documentation/hwmon/sch5627 12115F: Documentation/hwmon/sch5627
12301F: drivers/hwmon/sch5627.c 12116F: drivers/hwmon/sch5627.c
12302 12117
12118SMSC UFX6000 and UFX7000 USB to VGA DRIVER
12119M: Steve Glendinning <steve.glendinning@shawell.net>
12120L: linux-fbdev@vger.kernel.org
12121S: Maintained
12122F: drivers/video/fbdev/smscufx.c
12123
12303SMSC47B397 HARDWARE MONITOR DRIVER 12124SMSC47B397 HARDWARE MONITOR DRIVER
12304M: Jean Delvare <jdelvare@suse.com> 12125M: Jean Delvare <jdelvare@suse.com>
12305L: linux-hwmon@vger.kernel.org 12126L: linux-hwmon@vger.kernel.org
@@ -12320,12 +12141,6 @@ L: netdev@vger.kernel.org
12320S: Maintained 12141S: Maintained
12321F: drivers/net/ethernet/smsc/smsc9420.* 12142F: drivers/net/ethernet/smsc/smsc9420.*
12322 12143
12323SMSC UFX6000 and UFX7000 USB to VGA DRIVER
12324M: Steve Glendinning <steve.glendinning@shawell.net>
12325L: linux-fbdev@vger.kernel.org
12326S: Maintained
12327F: drivers/video/fbdev/smscufx.c
12328
12329SOC-CAMERA V4L2 SUBSYSTEM 12144SOC-CAMERA V4L2 SUBSYSTEM
12330M: Guennadi Liakhovetski <g.liakhovetski@gmx.de> 12145M: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
12331L: linux-media@vger.kernel.org 12146L: linux-media@vger.kernel.org
@@ -12340,6 +12155,15 @@ M: Chris Boot <bootc@bootc.net>
12340S: Maintained 12155S: Maintained
12341F: drivers/leds/leds-net48xx.c 12156F: drivers/leds/leds-net48xx.c
12342 12157
12158SOFT-ROCE DRIVER (rxe)
12159M: Moni Shoua <monis@mellanox.com>
12160L: linux-rdma@vger.kernel.org
12161S: Supported
12162W: https://github.com/SoftRoCE/rxe-dev/wiki/rxe-dev:-Home
12163Q: http://patchwork.kernel.org/project/linux-rdma/list/
12164F: drivers/infiniband/sw/rxe/
12165F: include/uapi/rdma/rdma_user_rxe.h
12166
12343SOFTLOGIC 6x10 MPEG CODEC 12167SOFTLOGIC 6x10 MPEG CODEC
12344M: Bluecherry Maintainers <maintainers@bluecherrydvr.com> 12168M: Bluecherry Maintainers <maintainers@bluecherrydvr.com>
12345M: Anton Sviridenko <anton@corp.bluecherry.net> 12169M: Anton Sviridenko <anton@corp.bluecherry.net>
@@ -12372,16 +12196,6 @@ S: Maintained
12372F: drivers/ssb/ 12196F: drivers/ssb/
12373F: include/linux/ssb/ 12197F: include/linux/ssb/
12374 12198
12375SONY VAIO CONTROL DEVICE DRIVER
12376M: Mattia Dongili <malattia@linux.it>
12377L: platform-driver-x86@vger.kernel.org
12378W: http://www.linux.it/~malattia/wiki/index.php/Sony_drivers
12379S: Maintained
12380F: Documentation/laptops/sony-laptop.txt
12381F: drivers/char/sonypi.c
12382F: drivers/platform/x86/sony-laptop.c
12383F: include/linux/sony-laptop.h
12384
12385SONY MEMORYSTICK CARD SUPPORT 12199SONY MEMORYSTICK CARD SUPPORT
12386M: Alex Dubov <oakad@yahoo.com> 12200M: Alex Dubov <oakad@yahoo.com>
12387W: http://tifmxx.berlios.de/ 12201W: http://tifmxx.berlios.de/
@@ -12393,6 +12207,16 @@ M: Maxim Levitsky <maximlevitsky@gmail.com>
12393S: Maintained 12207S: Maintained
12394F: drivers/memstick/core/ms_block.* 12208F: drivers/memstick/core/ms_block.*
12395 12209
12210SONY VAIO CONTROL DEVICE DRIVER
12211M: Mattia Dongili <malattia@linux.it>
12212L: platform-driver-x86@vger.kernel.org
12213W: http://www.linux.it/~malattia/wiki/index.php/Sony_drivers
12214S: Maintained
12215F: Documentation/laptops/sony-laptop.txt
12216F: drivers/char/sonypi.c
12217F: drivers/platform/x86/sony-laptop.c
12218F: include/linux/sony-laptop.h
12219
12396SOUND 12220SOUND
12397M: Jaroslav Kysela <perex@perex.cz> 12221M: Jaroslav Kysela <perex@perex.cz>
12398M: Takashi Iwai <tiwai@suse.com> 12222M: Takashi Iwai <tiwai@suse.com>
@@ -12418,6 +12242,13 @@ F: include/uapi/sound/compress_*
12418F: sound/core/compress_offload.c 12242F: sound/core/compress_offload.c
12419F: sound/soc/soc-compress.c 12243F: sound/soc/soc-compress.c
12420 12244
12245SOUND - DMAENGINE HELPERS
12246M: Lars-Peter Clausen <lars@metafoo.de>
12247S: Supported
12248F: include/sound/dmaengine_pcm.h
12249F: sound/core/pcm_dmaengine.c
12250F: sound/soc/soc-generic-dmaengine-pcm.c
12251
12421SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEMENT (ASoC) 12252SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEMENT (ASoC)
12422M: Liam Girdwood <lgirdwood@gmail.com> 12253M: Liam Girdwood <lgirdwood@gmail.com>
12423M: Mark Brown <broonie@kernel.org> 12254M: Mark Brown <broonie@kernel.org>
@@ -12430,13 +12261,6 @@ F: Documentation/sound/alsa/soc/
12430F: sound/soc/ 12261F: sound/soc/
12431F: include/sound/soc* 12262F: include/sound/soc*
12432 12263
12433SOUND - DMAENGINE HELPERS
12434M: Lars-Peter Clausen <lars@metafoo.de>
12435S: Supported
12436F: include/sound/dmaengine_pcm.h
12437F: sound/core/pcm_dmaengine.c
12438F: sound/soc/soc-generic-dmaengine-pcm.c
12439
12440SP2 MEDIA DRIVER 12264SP2 MEDIA DRIVER
12441M: Olli Salonen <olli.salonen@iki.fi> 12265M: Olli Salonen <olli.salonen@iki.fi>
12442L: linux-media@vger.kernel.org 12266L: linux-media@vger.kernel.org
@@ -12479,21 +12303,21 @@ T: git git://git.kernel.org/pub/scm/devel/sparse/chrisl/sparse.git
12479S: Maintained 12303S: Maintained
12480F: include/linux/compiler.h 12304F: include/linux/compiler.h
12481 12305
12482SPEAR PLATFORM SUPPORT 12306SPEAR CLOCK FRAMEWORK SUPPORT
12483M: Viresh Kumar <vireshk@kernel.org> 12307M: Viresh Kumar <vireshk@kernel.org>
12484M: Shiraz Hashim <shiraz.linux.kernel@gmail.com>
12485L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 12308L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
12486W: http://www.st.com/spear 12309W: http://www.st.com/spear
12487S: Maintained 12310S: Maintained
12488F: arch/arm/boot/dts/spear* 12311F: drivers/clk/spear/
12489F: arch/arm/mach-spear/
12490 12312
12491SPEAR CLOCK FRAMEWORK SUPPORT 12313SPEAR PLATFORM SUPPORT
12492M: Viresh Kumar <vireshk@kernel.org> 12314M: Viresh Kumar <vireshk@kernel.org>
12315M: Shiraz Hashim <shiraz.linux.kernel@gmail.com>
12493L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers) 12316L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
12494W: http://www.st.com/spear 12317W: http://www.st.com/spear
12495S: Maintained 12318S: Maintained
12496F: drivers/clk/spear/ 12319F: arch/arm/boot/dts/spear*
12320F: arch/arm/mach-spear/
12497 12321
12498SPI NOR SUBSYSTEM 12322SPI NOR SUBSYSTEM
12499M: Cyrille Pitchen <cyrille.pitchen@wedev4u.fr> 12323M: Cyrille Pitchen <cyrille.pitchen@wedev4u.fr>
@@ -12527,6 +12351,15 @@ S: Supported
12527F: Documentation/networking/spider_net.txt 12351F: Documentation/networking/spider_net.txt
12528F: drivers/net/ethernet/toshiba/spider_net* 12352F: drivers/net/ethernet/toshiba/spider_net*
12529 12353
12354SPMI SUBSYSTEM
12355R: Stephen Boyd <sboyd@codeaurora.org>
12356L: linux-arm-msm@vger.kernel.org
12357F: Documentation/devicetree/bindings/spmi/
12358F: drivers/spmi/
12359F: include/dt-bindings/spmi/spmi.h
12360F: include/linux/spmi.h
12361F: include/trace/events/spmi.h
12362
12530SPU FILE SYSTEM 12363SPU FILE SYSTEM
12531M: Jeremy Kerr <jk@ozlabs.org> 12364M: Jeremy Kerr <jk@ozlabs.org>
12532L: linuxppc-dev@lists.ozlabs.org 12365L: linuxppc-dev@lists.ozlabs.org
@@ -12555,13 +12388,6 @@ L: stable@vger.kernel.org
12555S: Supported 12388S: Supported
12556F: Documentation/process/stable-kernel-rules.rst 12389F: Documentation/process/stable-kernel-rules.rst
12557 12390
12558STAGING SUBSYSTEM
12559M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
12560T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
12561L: devel@driverdev.osuosl.org
12562S: Supported
12563F: drivers/staging/
12564
12565STAGING - COMEDI 12391STAGING - COMEDI
12566M: Ian Abbott <abbotti@mev.co.uk> 12392M: Ian Abbott <abbotti@mev.co.uk>
12567M: H Hartley Sweeten <hsweeten@visionengravers.com> 12393M: H Hartley Sweeten <hsweeten@visionengravers.com>
@@ -12651,11 +12477,39 @@ M: Arnaud Patard <arnaud.patard@rtp-net.org>
12651S: Odd Fixes 12477S: Odd Fixes
12652F: drivers/staging/xgifb/ 12478F: drivers/staging/xgifb/
12653 12479
12480STAGING SUBSYSTEM
12481M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
12482T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
12483L: devel@driverdev.osuosl.org
12484S: Supported
12485F: drivers/staging/
12486
12654STARFIRE/DURALAN NETWORK DRIVER 12487STARFIRE/DURALAN NETWORK DRIVER
12655M: Ion Badulescu <ionut@badula.org> 12488M: Ion Badulescu <ionut@badula.org>
12656S: Odd Fixes 12489S: Odd Fixes
12657F: drivers/net/ethernet/adaptec/starfire* 12490F: drivers/net/ethernet/adaptec/starfire*
12658 12491
12492STI CEC DRIVER
12493M: Benjamin Gaignard <benjamin.gaignard@linaro.org>
12494S: Maintained
12495F: drivers/staging/media/st-cec/
12496F: Documentation/devicetree/bindings/media/stih-cec.txt
12497
12498STK1160 USB VIDEO CAPTURE DRIVER
12499M: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
12500L: linux-media@vger.kernel.org
12501T: git git://linuxtv.org/media_tree.git
12502S: Maintained
12503F: drivers/media/usb/stk1160/
12504
12505STMMAC ETHERNET DRIVER
12506M: Giuseppe Cavallaro <peppe.cavallaro@st.com>
12507M: Alexandre Torgue <alexandre.torgue@st.com>
12508L: netdev@vger.kernel.org
12509W: http://www.stlinux.com
12510S: Supported
12511F: drivers/net/ethernet/stmicro/stmmac/
12512
12659SUN3/3X 12513SUN3/3X
12660M: Sam Creasey <sammy@sammy.net> 12514M: Sam Creasey <sammy@sammy.net>
12661W: http://sammy.net/sun3/ 12515W: http://sammy.net/sun3/
@@ -12727,6 +12581,20 @@ S: Supported
12727F: net/switchdev/ 12581F: net/switchdev/
12728F: include/net/switchdev.h 12582F: include/net/switchdev.h
12729 12583
12584SYNC FILE FRAMEWORK
12585M: Sumit Semwal <sumit.semwal@linaro.org>
12586R: Gustavo Padovan <gustavo@padovan.org>
12587S: Maintained
12588L: linux-media@vger.kernel.org
12589L: dri-devel@lists.freedesktop.org
12590F: drivers/dma-buf/sync_*
12591F: drivers/dma-buf/dma-fence*
12592F: drivers/dma-buf/sw_sync.c
12593F: include/linux/sync_file.h
12594F: include/uapi/linux/sync_file.h
12595F: Documentation/sync_file.txt
12596T: git git://anongit.freedesktop.org/drm/drm-misc
12597
12730SYNOPSYS ARC ARCHITECTURE 12598SYNOPSYS ARC ARCHITECTURE
12731M: Vineet Gupta <vgupta@synopsys.com> 12599M: Vineet Gupta <vgupta@synopsys.com>
12732L: linux-snps-arc@lists.infradead.org 12600L: linux-snps-arc@lists.infradead.org
@@ -12745,6 +12613,35 @@ F: arch/arc/plat-axs10x
12745F: arch/arc/boot/dts/ax* 12613F: arch/arc/boot/dts/ax*
12746F: Documentation/devicetree/bindings/arc/axs10* 12614F: Documentation/devicetree/bindings/arc/axs10*
12747 12615
12616SYNOPSYS DESIGNWARE DMAC DRIVER
12617M: Viresh Kumar <vireshk@kernel.org>
12618M: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
12619S: Maintained
12620F: include/linux/dma/dw.h
12621F: include/linux/platform_data/dma-dw.h
12622F: drivers/dma/dw/
12623
12624SYNOPSYS DESIGNWARE ENTERPRISE ETHERNET DRIVER
12625M: Jie Deng <jiedeng@synopsys.com>
12626L: netdev@vger.kernel.org
12627S: Supported
12628F: drivers/net/ethernet/synopsys/
12629
12630SYNOPSYS DESIGNWARE I2C DRIVER
12631M: Jarkko Nikula <jarkko.nikula@linux.intel.com>
12632R: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
12633R: Mika Westerberg <mika.westerberg@linux.intel.com>
12634L: linux-i2c@vger.kernel.org
12635S: Maintained
12636F: drivers/i2c/busses/i2c-designware-*
12637F: include/linux/platform_data/i2c-designware.h
12638
12639SYNOPSYS DESIGNWARE MMC/SD/SDIO DRIVER
12640M: Jaehoon Chung <jh80.chung@samsung.com>
12641L: linux-mmc@vger.kernel.org
12642S: Maintained
12643F: drivers/mmc/host/dw_mmc*
12644
12748SYSTEM CONFIGURATION (SYSCON) 12645SYSTEM CONFIGURATION (SYSCON)
12749M: Lee Jones <lee.jones@linaro.org> 12646M: Lee Jones <lee.jones@linaro.org>
12750M: Arnd Bergmann <arnd@arndb.de> 12647M: Arnd Bergmann <arnd@arndb.de>
@@ -12752,6 +12649,16 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd.git
12752S: Supported 12649S: Supported
12753F: drivers/mfd/syscon.c 12650F: drivers/mfd/syscon.c
12754 12651
12652SYSTEM CONTROL & POWER INTERFACE (SCPI) Message Protocol drivers
12653M: Sudeep Holla <sudeep.holla@arm.com>
12654L: linux-arm-kernel@lists.infradead.org
12655S: Maintained
12656F: Documentation/devicetree/bindings/arm/arm,scpi.txt
12657F: drivers/clk/clk-scpi.c
12658F: drivers/cpufreq/scpi-cpufreq.c
12659F: drivers/firmware/arm_scpi.c
12660F: include/linux/scpi_protocol.h
12661
12755SYSTEM RESET/SHUTDOWN DRIVERS 12662SYSTEM RESET/SHUTDOWN DRIVERS
12756M: Sebastian Reichel <sre@kernel.org> 12663M: Sebastian Reichel <sre@kernel.org>
12757L: linux-pm@vger.kernel.org 12664L: linux-pm@vger.kernel.org
@@ -12760,6 +12667,15 @@ S: Maintained
12760F: Documentation/devicetree/bindings/power/reset/ 12667F: Documentation/devicetree/bindings/power/reset/
12761F: drivers/power/reset/ 12668F: drivers/power/reset/
12762 12669
12670SYSTEM TRACE MODULE CLASS
12671M: Alexander Shishkin <alexander.shishkin@linux.intel.com>
12672S: Maintained
12673T: git git://git.kernel.org/pub/scm/linux/kernel/git/ash/stm.git
12674F: Documentation/trace/stm.txt
12675F: drivers/hwtracing/stm/
12676F: include/linux/stm.h
12677F: include/uapi/linux/stm.h
12678
12763SYSV FILESYSTEM 12679SYSV FILESYSTEM
12764M: Christoph Hellwig <hch@infradead.org> 12680M: Christoph Hellwig <hch@infradead.org>
12765S: Maintained 12681S: Maintained
@@ -12929,6 +12845,14 @@ L: linux-media@vger.kernel.org
12929S: Maintained 12845S: Maintained
12930F: drivers/media/rc/ttusbir.c 12846F: drivers/media/rc/ttusbir.c
12931 12847
12848TEE SUBSYSTEM
12849M: Jens Wiklander <jens.wiklander@linaro.org>
12850S: Maintained
12851F: include/linux/tee_drv.h
12852F: include/uapi/linux/tee.h
12853F: drivers/tee/
12854F: Documentation/tee.txt
12855
12932TEGRA ARCHITECTURE SUPPORT 12856TEGRA ARCHITECTURE SUPPORT
12933M: Thierry Reding <thierry.reding@gmail.com> 12857M: Thierry Reding <thierry.reding@gmail.com>
12934M: Jonathan Hunter <jonathanh@nvidia.com> 12858M: Jonathan Hunter <jonathanh@nvidia.com>
@@ -13060,6 +12984,23 @@ T: git git://repo.or.cz/linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git
13060S: Maintained 12984S: Maintained
13061F: drivers/platform/x86/thinkpad_acpi.c 12985F: drivers/platform/x86/thinkpad_acpi.c
13062 12986
12987THUNDERBOLT DRIVER
12988M: Andreas Noever <andreas.noever@gmail.com>
12989M: Michael Jamet <michael.jamet@intel.com>
12990M: Mika Westerberg <mika.westerberg@linux.intel.com>
12991M: Yehezkel Bernat <yehezkel.bernat@intel.com>
12992S: Maintained
12993F: drivers/thunderbolt/
12994
12995TI AM437X VPFE DRIVER
12996M: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
12997L: linux-media@vger.kernel.org
12998W: https://linuxtv.org
12999Q: http://patchwork.linuxtv.org/project/linux-media/list/
13000T: git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git
13001S: Maintained
13002F: drivers/media/platform/am437x/
13003
13063TI BANDGAP AND THERMAL DRIVER 13004TI BANDGAP AND THERMAL DRIVER
13064M: Eduardo Valentin <edubezval@gmail.com> 13005M: Eduardo Valentin <edubezval@gmail.com>
13065M: Keerthy <j-keerthy@ti.com> 13006M: Keerthy <j-keerthy@ti.com>
@@ -13068,13 +13009,11 @@ L: linux-omap@vger.kernel.org
13068S: Maintained 13009S: Maintained
13069F: drivers/thermal/ti-soc-thermal/ 13010F: drivers/thermal/ti-soc-thermal/
13070 13011
13071TI VPE/CAL DRIVERS 13012TI BQ27XXX POWER SUPPLY DRIVER
13072M: Benoit Parrot <bparrot@ti.com> 13013R: Andrew F. Davis <afd@ti.com>
13073L: linux-media@vger.kernel.org 13014F: include/linux/power/bq27xxx_battery.h
13074W: http://linuxtv.org/ 13015F: drivers/power/supply/bq27xxx_battery.c
13075Q: http://patchwork.linuxtv.org/project/linux-media/list/ 13016F: drivers/power/supply/bq27xxx_battery_i2c.c
13076S: Maintained
13077F: drivers/media/platform/ti-vpe/
13078 13017
13079TI CDCE706 CLOCK DRIVER 13018TI CDCE706 CLOCK DRIVER
13080M: Max Filippov <jcmvbkbc@gmail.com> 13019M: Max Filippov <jcmvbkbc@gmail.com>
@@ -13088,6 +13027,33 @@ S: Maintained
13088F: drivers/clk/ti/ 13027F: drivers/clk/ti/
13089F: include/linux/clk/ti.h 13028F: include/linux/clk/ti.h
13090 13029
13030TI DAVINCI MACHINE SUPPORT
13031M: Sekhar Nori <nsekhar@ti.com>
13032M: Kevin Hilman <khilman@kernel.org>
13033L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
13034T: git git://git.kernel.org/pub/scm/linux/kernel/git/nsekhar/linux-davinci.git
13035S: Supported
13036F: arch/arm/mach-davinci/
13037F: drivers/i2c/busses/i2c-davinci.c
13038F: arch/arm/boot/dts/da850*
13039
13040TI DAVINCI SERIES GPIO DRIVER
13041M: Keerthy <j-keerthy@ti.com>
13042L: linux-gpio@vger.kernel.org
13043S: Maintained
13044F: Documentation/devicetree/bindings/gpio/gpio-davinci.txt
13045F: drivers/gpio/gpio-davinci.c
13046
13047TI DAVINCI SERIES MEDIA DRIVER
13048M: "Lad, Prabhakar" <prabhakar.csengg@gmail.com>
13049L: linux-media@vger.kernel.org
13050W: https://linuxtv.org
13051Q: http://patchwork.linuxtv.org/project/linux-media/list/
13052T: git git://linuxtv.org/mhadli/v4l-dvb-davinci_devices.git
13053S: Maintained
13054F: drivers/media/platform/davinci/
13055F: include/media/davinci/
13056
13091TI ETHERNET SWITCH DRIVER (CPSW) 13057TI ETHERNET SWITCH DRIVER (CPSW)
13092R: Grygorii Strashko <grygorii.strashko@ti.com> 13058R: Grygorii Strashko <grygorii.strashko@ti.com>
13093L: linux-omap@vger.kernel.org 13059L: linux-omap@vger.kernel.org
@@ -13111,7 +13077,6 @@ S: Maintained
13111F: drivers/soc/ti/* 13077F: drivers/soc/ti/*
13112T: git git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone.git 13078T: git git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone.git
13113 13079
13114
13115TI LM49xxx FAMILY ASoC CODEC DRIVERS 13080TI LM49xxx FAMILY ASoC CODEC DRIVERS
13116M: M R Swami Reddy <mr.swami.reddy@ti.com> 13081M: M R Swami Reddy <mr.swami.reddy@ti.com>
13117M: Vishwas A Deshpande <vishwas.a.deshpande@ti.com> 13082M: Vishwas A Deshpande <vishwas.a.deshpande@ti.com>
@@ -13156,12 +13121,28 @@ L: alsa-devel@alsa-project.org (moderated for non-subscribers)
13156S: Odd Fixes 13121S: Odd Fixes
13157F: sound/soc/codecs/tas571x* 13122F: sound/soc/codecs/tas571x*
13158 13123
13124TI TRF7970A NFC DRIVER
13125M: Mark Greer <mgreer@animalcreek.com>
13126L: linux-wireless@vger.kernel.org
13127L: linux-nfc@lists.01.org (moderated for non-subscribers)
13128S: Supported
13129F: drivers/nfc/trf7970a.c
13130F: Documentation/devicetree/bindings/net/nfc/trf7970a.txt
13131
13159TI TWL4030 SERIES SOC CODEC DRIVER 13132TI TWL4030 SERIES SOC CODEC DRIVER
13160M: Peter Ujfalusi <peter.ujfalusi@ti.com> 13133M: Peter Ujfalusi <peter.ujfalusi@ti.com>
13161L: alsa-devel@alsa-project.org (moderated for non-subscribers) 13134L: alsa-devel@alsa-project.org (moderated for non-subscribers)
13162S: Maintained 13135S: Maintained
13163F: sound/soc/codecs/twl4030* 13136F: sound/soc/codecs/twl4030*
13164 13137
13138TI VPE/CAL DRIVERS
13139M: Benoit Parrot <bparrot@ti.com>
13140L: linux-media@vger.kernel.org
13141W: http://linuxtv.org/
13142Q: http://patchwork.linuxtv.org/project/linux-media/list/
13143S: Maintained
13144F: drivers/media/platform/ti-vpe/
13145
13165TI WILINK WIRELESS DRIVERS 13146TI WILINK WIRELESS DRIVERS
13166L: linux-wireless@vger.kernel.org 13147L: linux-wireless@vger.kernel.org
13167W: http://wireless.kernel.org/en/users/Drivers/wl12xx 13148W: http://wireless.kernel.org/en/users/Drivers/wl12xx
@@ -13171,16 +13152,6 @@ S: Orphan
13171F: drivers/net/wireless/ti/ 13152F: drivers/net/wireless/ti/
13172F: include/linux/wl12xx.h 13153F: include/linux/wl12xx.h
13173 13154
13174TIPC NETWORK LAYER
13175M: Jon Maloy <jon.maloy@ericsson.com>
13176M: Ying Xue <ying.xue@windriver.com>
13177L: netdev@vger.kernel.org (core kernel code)
13178L: tipc-discussion@lists.sourceforge.net (user apps, general discussion)
13179W: http://tipc.sourceforge.net/
13180S: Maintained
13181F: include/uapi/linux/tipc*.h
13182F: net/tipc/
13183
13184TILE ARCHITECTURE 13155TILE ARCHITECTURE
13185M: Chris Metcalf <cmetcalf@mellanox.com> 13156M: Chris Metcalf <cmetcalf@mellanox.com>
13186W: http://www.mellanox.com/repository/solutions/tile-scm/ 13157W: http://www.mellanox.com/repository/solutions/tile-scm/
@@ -13196,6 +13167,34 @@ F: drivers/tty/serial/tilegx.c
13196F: drivers/usb/host/*-tilegx.c 13167F: drivers/usb/host/*-tilegx.c
13197F: include/linux/usb/tilegx.h 13168F: include/linux/usb/tilegx.h
13198 13169
13170TIMEKEEPING, CLOCKSOURCE CORE, NTP, ALARMTIMER
13171M: John Stultz <john.stultz@linaro.org>
13172M: Thomas Gleixner <tglx@linutronix.de>
13173R: Stephen Boyd <sboyd@codeaurora.org>
13174L: linux-kernel@vger.kernel.org
13175T: git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core
13176S: Supported
13177F: include/linux/clocksource.h
13178F: include/linux/time.h
13179F: include/linux/timex.h
13180F: include/uapi/linux/time.h
13181F: include/uapi/linux/timex.h
13182F: kernel/time/clocksource.c
13183F: kernel/time/time*.c
13184F: kernel/time/alarmtimer.c
13185F: kernel/time/ntp.c
13186F: tools/testing/selftests/timers/
13187
13188TIPC NETWORK LAYER
13189M: Jon Maloy <jon.maloy@ericsson.com>
13190M: Ying Xue <ying.xue@windriver.com>
13191L: netdev@vger.kernel.org (core kernel code)
13192L: tipc-discussion@lists.sourceforge.net (user apps, general discussion)
13193W: http://tipc.sourceforge.net/
13194S: Maintained
13195F: include/uapi/linux/tipc*.h
13196F: net/tipc/
13197
13199TLAN NETWORK DRIVER 13198TLAN NETWORK DRIVER
13200M: Samuel Chessman <chessman@tux.org> 13199M: Samuel Chessman <chessman@tux.org>
13201L: tlan-devel@lists.sourceforge.net (subscribers-only) 13200L: tlan-devel@lists.sourceforge.net (subscribers-only)
@@ -13204,6 +13203,38 @@ S: Maintained
13204F: Documentation/networking/tlan.txt 13203F: Documentation/networking/tlan.txt
13205F: drivers/net/ethernet/ti/tlan.* 13204F: drivers/net/ethernet/ti/tlan.*
13206 13205
13206TM6000 VIDEO4LINUX DRIVER
13207M: Mauro Carvalho Chehab <mchehab@s-opensource.com>
13208M: Mauro Carvalho Chehab <mchehab@kernel.org>
13209L: linux-media@vger.kernel.org
13210W: https://linuxtv.org
13211T: git git://linuxtv.org/media_tree.git
13212S: Odd fixes
13213F: drivers/media/usb/tm6000/
13214F: Documentation/media/v4l-drivers/tm6000*
13215
13216TMIO/SDHI MMC DRIVER
13217M: Wolfram Sang <wsa+renesas@sang-engineering.com>
13218L: linux-mmc@vger.kernel.org
13219S: Supported
13220F: drivers/mmc/host/tmio_mmc*
13221F: drivers/mmc/host/renesas_sdhi*
13222F: include/linux/mfd/tmio.h
13223
13224TMP401 HARDWARE MONITOR DRIVER
13225M: Guenter Roeck <linux@roeck-us.net>
13226L: linux-hwmon@vger.kernel.org
13227S: Maintained
13228F: Documentation/hwmon/tmp401
13229F: drivers/hwmon/tmp401.c
13230
13231TMPFS (SHMEM FILESYSTEM)
13232M: Hugh Dickins <hughd@google.com>
13233L: linux-mm@kvack.org
13234S: Maintained
13235F: include/linux/shmem_fs.h
13236F: mm/shmem.c
13237
13207TOMOYO SECURITY MODULE 13238TOMOYO SECURITY MODULE
13208M: Kentaro Takeda <takedakn@nttdata.co.jp> 13239M: Kentaro Takeda <takedakn@nttdata.co.jp>
13209M: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> 13240M: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
@@ -13240,12 +13271,6 @@ L: platform-driver-x86@vger.kernel.org
13240S: Maintained 13271S: Maintained
13241F: drivers/platform/x86/toshiba_haps.c 13272F: drivers/platform/x86/toshiba_haps.c
13242 13273
13243TOSHIBA WMI HOTKEYS DRIVER
13244M: Azael Avalos <coproscefalo@gmail.com>
13245L: platform-driver-x86@vger.kernel.org
13246S: Maintained
13247F: drivers/platform/x86/toshiba-wmi.c
13248
13249TOSHIBA SMM DRIVER 13274TOSHIBA SMM DRIVER
13250M: Jonathan Buzzard <jonathan@buzzard.org.uk> 13275M: Jonathan Buzzard <jonathan@buzzard.org.uk>
13251W: http://www.buzzard.org.uk/toshiba/ 13276W: http://www.buzzard.org.uk/toshiba/
@@ -13261,62 +13286,11 @@ S: Maintained
13261F: drivers/media/i2c/tc358743* 13286F: drivers/media/i2c/tc358743*
13262F: include/media/i2c/tc358743.h 13287F: include/media/i2c/tc358743.h
13263 13288
13264TMIO/SDHI MMC DRIVER 13289TOSHIBA WMI HOTKEYS DRIVER
13265M: Wolfram Sang <wsa+renesas@sang-engineering.com> 13290M: Azael Avalos <coproscefalo@gmail.com>
13266L: linux-mmc@vger.kernel.org 13291L: platform-driver-x86@vger.kernel.org
13267S: Supported
13268F: drivers/mmc/host/tmio_mmc*
13269F: drivers/mmc/host/renesas_sdhi*
13270F: include/linux/mfd/tmio.h
13271
13272TMP401 HARDWARE MONITOR DRIVER
13273M: Guenter Roeck <linux@roeck-us.net>
13274L: linux-hwmon@vger.kernel.org
13275S: Maintained
13276F: Documentation/hwmon/tmp401
13277F: drivers/hwmon/tmp401.c
13278
13279TMPFS (SHMEM FILESYSTEM)
13280M: Hugh Dickins <hughd@google.com>
13281L: linux-mm@kvack.org
13282S: Maintained
13283F: include/linux/shmem_fs.h
13284F: mm/shmem.c
13285
13286TM6000 VIDEO4LINUX DRIVER
13287M: Mauro Carvalho Chehab <mchehab@s-opensource.com>
13288M: Mauro Carvalho Chehab <mchehab@kernel.org>
13289L: linux-media@vger.kernel.org
13290W: https://linuxtv.org
13291T: git git://linuxtv.org/media_tree.git
13292S: Odd fixes
13293F: drivers/media/usb/tm6000/
13294F: Documentation/media/v4l-drivers/tm6000*
13295
13296TW5864 VIDEO4LINUX DRIVER
13297M: Bluecherry Maintainers <maintainers@bluecherrydvr.com>
13298M: Anton Sviridenko <anton@corp.bluecherry.net>
13299M: Andrey Utkin <andrey.utkin@corp.bluecherry.net>
13300M: Andrey Utkin <andrey_utkin@fastmail.com>
13301L: linux-media@vger.kernel.org
13302S: Supported
13303F: drivers/media/pci/tw5864/
13304
13305TW68 VIDEO4LINUX DRIVER
13306M: Hans Verkuil <hverkuil@xs4all.nl>
13307L: linux-media@vger.kernel.org
13308T: git git://linuxtv.org/media_tree.git
13309W: https://linuxtv.org
13310S: Odd Fixes
13311F: drivers/media/pci/tw68/
13312
13313TW686X VIDEO4LINUX DRIVER
13314M: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
13315L: linux-media@vger.kernel.org
13316T: git git://linuxtv.org/media_tree.git
13317W: http://linuxtv.org
13318S: Maintained 13292S: Maintained
13319F: drivers/media/pci/tw686x/ 13293F: drivers/platform/x86/toshiba-wmi.c
13320 13294
13321TPM DEVICE DRIVER 13295TPM DEVICE DRIVER
13322M: Peter Huewe <peterhuewe@gmx.de> 13296M: Peter Huewe <peterhuewe@gmx.de>
@@ -13418,6 +13392,31 @@ S: Maintained
13418F: drivers/tc/ 13392F: drivers/tc/
13419F: include/linux/tc.h 13393F: include/linux/tc.h
13420 13394
13395TW5864 VIDEO4LINUX DRIVER
13396M: Bluecherry Maintainers <maintainers@bluecherrydvr.com>
13397M: Anton Sviridenko <anton@corp.bluecherry.net>
13398M: Andrey Utkin <andrey.utkin@corp.bluecherry.net>
13399M: Andrey Utkin <andrey_utkin@fastmail.com>
13400L: linux-media@vger.kernel.org
13401S: Supported
13402F: drivers/media/pci/tw5864/
13403
13404TW68 VIDEO4LINUX DRIVER
13405M: Hans Verkuil <hverkuil@xs4all.nl>
13406L: linux-media@vger.kernel.org
13407T: git git://linuxtv.org/media_tree.git
13408W: https://linuxtv.org
13409S: Odd Fixes
13410F: drivers/media/pci/tw68/
13411
13412TW686X VIDEO4LINUX DRIVER
13413M: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
13414L: linux-media@vger.kernel.org
13415T: git git://linuxtv.org/media_tree.git
13416W: http://linuxtv.org
13417S: Maintained
13418F: drivers/media/pci/tw686x/
13419
13421UBI FILE SYSTEM (UBIFS) 13420UBI FILE SYSTEM (UBIFS)
13422M: Richard Weinberger <richard@nod.at> 13421M: Richard Weinberger <richard@nod.at>
13423M: Artem Bityutskiy <dedekind1@gmail.com> 13422M: Artem Bityutskiy <dedekind1@gmail.com>
@@ -13467,6 +13466,13 @@ S: Maintained
13467F: drivers/hid/uhid.c 13466F: drivers/hid/uhid.c
13468F: include/uapi/linux/uhid.h 13467F: include/uapi/linux/uhid.h
13469 13468
13469ULPI BUS
13470M: Heikki Krogerus <heikki.krogerus@linux.intel.com>
13471L: linux-usb@vger.kernel.org
13472S: Maintained
13473F: drivers/usb/common/ulpi.c
13474F: include/linux/ulpi/
13475
13470ULTRA-WIDEBAND (UWB) SUBSYSTEM: 13476ULTRA-WIDEBAND (UWB) SUBSYSTEM:
13471L: linux-usb@vger.kernel.org 13477L: linux-usb@vger.kernel.org
13472S: Orphan 13478S: Orphan
@@ -13527,6 +13533,14 @@ F: drivers/mtd/ubi/
13527F: include/linux/mtd/ubi.h 13533F: include/linux/mtd/ubi.h
13528F: include/uapi/mtd/ubi-user.h 13534F: include/uapi/mtd/ubi-user.h
13529 13535
13536USB "USBNET" DRIVER FRAMEWORK
13537M: Oliver Neukum <oneukum@suse.com>
13538L: netdev@vger.kernel.org
13539W: http://www.linux-usb.org/usbnet
13540S: Maintained
13541F: drivers/net/usb/usbnet.c
13542F: include/linux/usb/usbnet.h
13543
13530USB ACM DRIVER 13544USB ACM DRIVER
13531M: Oliver Neukum <oneukum@suse.com> 13545M: Oliver Neukum <oneukum@suse.com>
13532L: linux-usb@vger.kernel.org 13546L: linux-usb@vger.kernel.org
@@ -13750,14 +13764,6 @@ L: linux-usb@vger.kernel.org
13750S: Maintained 13764S: Maintained
13751F: drivers/usb/host/uhci* 13765F: drivers/usb/host/uhci*
13752 13766
13753USB "USBNET" DRIVER FRAMEWORK
13754M: Oliver Neukum <oneukum@suse.com>
13755L: netdev@vger.kernel.org
13756W: http://www.linux-usb.org/usbnet
13757S: Maintained
13758F: drivers/net/usb/usbnet.c
13759F: include/linux/usb/usbnet.h
13760
13761USB VIDEO CLASS 13767USB VIDEO CLASS
13762M: Laurent Pinchart <laurent.pinchart@ideasonboard.com> 13768M: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
13763L: linux-uvc-devel@lists.sourceforge.net (subscribers-only) 13769L: linux-uvc-devel@lists.sourceforge.net (subscribers-only)
@@ -13812,13 +13818,6 @@ S: Maintained
13812F: Documentation/media/v4l-drivers/zr364xx* 13818F: Documentation/media/v4l-drivers/zr364xx*
13813F: drivers/media/usb/zr364xx/ 13819F: drivers/media/usb/zr364xx/
13814 13820
13815ULPI BUS
13816M: Heikki Krogerus <heikki.krogerus@linux.intel.com>
13817L: linux-usb@vger.kernel.org
13818S: Maintained
13819F: drivers/usb/common/ulpi.c
13820F: include/linux/ulpi/
13821
13822USER-MODE LINUX (UML) 13821USER-MODE LINUX (UML)
13823M: Jeff Dike <jdike@addtoit.com> 13822M: Jeff Dike <jdike@addtoit.com>
13824M: Richard Weinberger <richard@nod.at> 13823M: Richard Weinberger <richard@nod.at>
@@ -13912,6 +13911,37 @@ F: drivers/gpu/vga/vga_switcheroo.c
13912F: include/linux/vga_switcheroo.h 13911F: include/linux/vga_switcheroo.h
13913T: git git://anongit.freedesktop.org/drm/drm-misc 13912T: git git://anongit.freedesktop.org/drm/drm-misc
13914 13913
13914VIA RHINE NETWORK DRIVER
13915S: Orphan
13916F: drivers/net/ethernet/via/via-rhine.c
13917
13918VIA SD/MMC CARD CONTROLLER DRIVER
13919M: Bruce Chang <brucechang@via.com.tw>
13920M: Harald Welte <HaraldWelte@viatech.com>
13921S: Maintained
13922F: drivers/mmc/host/via-sdmmc.c
13923
13924VIA UNICHROME(PRO)/CHROME9 FRAMEBUFFER DRIVER
13925M: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
13926L: linux-fbdev@vger.kernel.org
13927S: Maintained
13928F: include/linux/via-core.h
13929F: include/linux/via-gpio.h
13930F: include/linux/via_i2c.h
13931F: drivers/video/fbdev/via/
13932
13933VIA VELOCITY NETWORK DRIVER
13934M: Francois Romieu <romieu@fr.zoreil.com>
13935L: netdev@vger.kernel.org
13936S: Maintained
13937F: drivers/net/ethernet/via/via-velocity.*
13938
13939VIDEO MULTIPLEXER DRIVER
13940M: Philipp Zabel <p.zabel@pengutronix.de>
13941L: linux-media@vger.kernel.org
13942S: Maintained
13943F: drivers/media/platform/video-mux.c
13944
13915VIDEOBUF2 FRAMEWORK 13945VIDEOBUF2 FRAMEWORK
13916M: Pawel Osciak <pawel@osciak.com> 13946M: Pawel Osciak <pawel@osciak.com>
13917M: Marek Szyprowski <m.szyprowski@samsung.com> 13947M: Marek Szyprowski <m.szyprowski@samsung.com>
@@ -13921,11 +13951,20 @@ S: Maintained
13921F: drivers/media/v4l2-core/videobuf2-* 13951F: drivers/media/v4l2-core/videobuf2-*
13922F: include/media/videobuf2-* 13952F: include/media/videobuf2-*
13923 13953
13924VIDEO MULTIPLEXER DRIVER 13954VIMC VIRTUAL MEDIA CONTROLLER DRIVER
13925M: Philipp Zabel <p.zabel@pengutronix.de> 13955M: Helen Koike <helen.koike@collabora.com>
13926L: linux-media@vger.kernel.org 13956L: linux-media@vger.kernel.org
13957T: git git://linuxtv.org/media_tree.git
13958W: https://linuxtv.org
13927S: Maintained 13959S: Maintained
13928F: drivers/media/platform/video-mux.c 13960F: drivers/media/platform/vimc/*
13961
13962VIRT LIB
13963M: Alex Williamson <alex.williamson@redhat.com>
13964M: Paolo Bonzini <pbonzini@redhat.com>
13965L: kvm@vger.kernel.org
13966S: Supported
13967F: virt/lib/
13929 13968
13930VIRTIO AND VHOST VSOCK DRIVER 13969VIRTIO AND VHOST VSOCK DRIVER
13931M: Stefan Hajnoczi <stefanha@redhat.com> 13970M: Stefan Hajnoczi <stefanha@redhat.com>
@@ -13943,12 +13982,6 @@ F: drivers/net/vsockmon.c
13943F: drivers/vhost/vsock.c 13982F: drivers/vhost/vsock.c
13944F: drivers/vhost/vsock.h 13983F: drivers/vhost/vsock.h
13945 13984
13946VIRTUAL SERIO DEVICE DRIVER
13947M: Stephen Chandler Paul <thatslyude@gmail.com>
13948S: Maintained
13949F: drivers/input/serio/userio.c
13950F: include/uapi/linux/userio.h
13951
13952VIRTIO CONSOLE DRIVER 13985VIRTIO CONSOLE DRIVER
13953M: Amit Shah <amit@kernel.org> 13986M: Amit Shah <amit@kernel.org>
13954L: virtualization@lists.linux-foundation.org 13987L: virtualization@lists.linux-foundation.org
@@ -13970,6 +14003,15 @@ F: drivers/block/virtio_blk.c
13970F: include/linux/virtio*.h 14003F: include/linux/virtio*.h
13971F: include/uapi/linux/virtio_*.h 14004F: include/uapi/linux/virtio_*.h
13972F: drivers/crypto/virtio/ 14005F: drivers/crypto/virtio/
14006F: mm/balloon_compaction.c
14007
14008VIRTIO CRYPTO DRIVER
14009M: Gonglei <arei.gonglei@huawei.com>
14010L: virtualization@lists.linux-foundation.org
14011L: linux-crypto@vger.kernel.org
14012S: Maintained
14013F: drivers/crypto/virtio/
14014F: include/uapi/linux/virtio_crypto.h
13973 14015
13974VIRTIO DRIVERS FOR S390 14016VIRTIO DRIVERS FOR S390
13975M: Cornelia Huck <cohuck@redhat.com> 14017M: Cornelia Huck <cohuck@redhat.com>
@@ -14007,45 +14049,11 @@ S: Maintained
14007F: drivers/virtio/virtio_input.c 14049F: drivers/virtio/virtio_input.c
14008F: include/uapi/linux/virtio_input.h 14050F: include/uapi/linux/virtio_input.h
14009 14051
14010VIRTIO CRYPTO DRIVER 14052VIRTUAL SERIO DEVICE DRIVER
14011M: Gonglei <arei.gonglei@huawei.com> 14053M: Stephen Chandler Paul <thatslyude@gmail.com>
14012L: virtualization@lists.linux-foundation.org
14013L: linux-crypto@vger.kernel.org
14014S: Maintained
14015F: drivers/crypto/virtio/
14016F: include/uapi/linux/virtio_crypto.h
14017
14018VIA RHINE NETWORK DRIVER
14019S: Orphan
14020F: drivers/net/ethernet/via/via-rhine.c
14021
14022VIA SD/MMC CARD CONTROLLER DRIVER
14023M: Bruce Chang <brucechang@via.com.tw>
14024M: Harald Welte <HaraldWelte@viatech.com>
14025S: Maintained
14026F: drivers/mmc/host/via-sdmmc.c
14027
14028VIA UNICHROME(PRO)/CHROME9 FRAMEBUFFER DRIVER
14029M: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
14030L: linux-fbdev@vger.kernel.org
14031S: Maintained
14032F: include/linux/via-core.h
14033F: include/linux/via-gpio.h
14034F: include/linux/via_i2c.h
14035F: drivers/video/fbdev/via/
14036
14037VIA VELOCITY NETWORK DRIVER
14038M: Francois Romieu <romieu@fr.zoreil.com>
14039L: netdev@vger.kernel.org
14040S: Maintained 14054S: Maintained
14041F: drivers/net/ethernet/via/via-velocity.* 14055F: drivers/input/serio/userio.c
14042 14056F: include/uapi/linux/userio.h
14043VIRT LIB
14044M: Alex Williamson <alex.williamson@redhat.com>
14045M: Paolo Bonzini <pbonzini@redhat.com>
14046L: kvm@vger.kernel.org
14047S: Supported
14048F: virt/lib/
14049 14057
14050VIVID VIRTUAL VIDEO DRIVER 14058VIVID VIRTUAL VIDEO DRIVER
14051M: Hans Verkuil <hverkuil@xs4all.nl> 14059M: Hans Verkuil <hverkuil@xs4all.nl>
@@ -14055,14 +14063,6 @@ W: https://linuxtv.org
14055S: Maintained 14063S: Maintained
14056F: drivers/media/platform/vivid/* 14064F: drivers/media/platform/vivid/*
14057 14065
14058VIMC VIRTUAL MEDIA CONTROLLER DRIVER
14059M: Helen Koike <helen.koike@collabora.com>
14060L: linux-media@vger.kernel.org
14061T: git git://linuxtv.org/media_tree.git
14062W: https://linuxtv.org
14063S: Maintained
14064F: drivers/media/platform/vimc/*
14065
14066VLYNQ BUS 14066VLYNQ BUS
14067M: Florian Fainelli <f.fainelli@gmail.com> 14067M: Florian Fainelli <f.fainelli@gmail.com>
14068L: openwrt-devel@lists.openwrt.org (subscribers-only) 14068L: openwrt-devel@lists.openwrt.org (subscribers-only)
@@ -14082,12 +14082,6 @@ F: drivers/staging/vme/
14082F: drivers/vme/ 14082F: drivers/vme/
14083F: include/linux/vme* 14083F: include/linux/vme*
14084 14084
14085VMWARE HYPERVISOR INTERFACE
14086M: Alok Kataria <akataria@vmware.com>
14087L: virtualization@lists.linux-foundation.org
14088S: Supported
14089F: arch/x86/kernel/cpu/vmware.c
14090
14091VMWARE BALLOON DRIVER 14085VMWARE BALLOON DRIVER
14092M: Xavier Deguillard <xdeguillard@vmware.com> 14086M: Xavier Deguillard <xdeguillard@vmware.com>
14093M: Philip Moltmann <moltmann@vmware.com> 14087M: Philip Moltmann <moltmann@vmware.com>
@@ -14096,6 +14090,27 @@ L: linux-kernel@vger.kernel.org
14096S: Maintained 14090S: Maintained
14097F: drivers/misc/vmw_balloon.c 14091F: drivers/misc/vmw_balloon.c
14098 14092
14093VMWARE HYPERVISOR INTERFACE
14094M: Alok Kataria <akataria@vmware.com>
14095L: virtualization@lists.linux-foundation.org
14096S: Supported
14097F: arch/x86/kernel/cpu/vmware.c
14098
14099VMWARE PVRDMA DRIVER
14100M: Adit Ranadive <aditr@vmware.com>
14101M: VMware PV-Drivers <pv-drivers@vmware.com>
14102L: linux-rdma@vger.kernel.org
14103S: Maintained
14104F: drivers/infiniband/hw/vmw_pvrdma/
14105
14106VMware PVSCSI driver
14107M: Jim Gill <jgill@vmware.com>
14108M: VMware PV-Drivers <pv-drivers@vmware.com>
14109L: linux-scsi@vger.kernel.org
14110S: Maintained
14111F: drivers/scsi/vmw_pvscsi.c
14112F: drivers/scsi/vmw_pvscsi.h
14113
14099VMWARE VMMOUSE SUBDRIVER 14114VMWARE VMMOUSE SUBDRIVER
14100M: "VMware Graphics" <linux-graphics-maintainer@vmware.com> 14115M: "VMware Graphics" <linux-graphics-maintainer@vmware.com>
14101M: "VMware, Inc." <pv-drivers@vmware.com> 14116M: "VMware, Inc." <pv-drivers@vmware.com>
@@ -14111,21 +14126,6 @@ L: netdev@vger.kernel.org
14111S: Maintained 14126S: Maintained
14112F: drivers/net/vmxnet3/ 14127F: drivers/net/vmxnet3/
14113 14128
14114VMware PVSCSI driver
14115M: Jim Gill <jgill@vmware.com>
14116M: VMware PV-Drivers <pv-drivers@vmware.com>
14117L: linux-scsi@vger.kernel.org
14118S: Maintained
14119F: drivers/scsi/vmw_pvscsi.c
14120F: drivers/scsi/vmw_pvscsi.h
14121
14122VMWARE PVRDMA DRIVER
14123M: Adit Ranadive <aditr@vmware.com>
14124M: VMware PV-Drivers <pv-drivers@vmware.com>
14125L: linux-rdma@vger.kernel.org
14126S: Maintained
14127F: drivers/infiniband/hw/vmw_pvrdma/
14128
14129VOLTAGE AND CURRENT REGULATOR FRAMEWORK 14129VOLTAGE AND CURRENT REGULATOR FRAMEWORK
14130M: Liam Girdwood <lgirdwood@gmail.com> 14130M: Liam Girdwood <lgirdwood@gmail.com>
14131M: Mark Brown <broonie@kernel.org> 14131M: Mark Brown <broonie@kernel.org>
@@ -14218,12 +14218,39 @@ F: drivers/watchdog/
14218F: include/linux/watchdog.h 14218F: include/linux/watchdog.h
14219F: include/uapi/linux/watchdog.h 14219F: include/uapi/linux/watchdog.h
14220 14220
14221WHISKEYCOVE PMIC GPIO DRIVER
14222M: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
14223L: linux-gpio@vger.kernel.org
14224S: Maintained
14225F: drivers/gpio/gpio-wcove.c
14226
14221WIIMOTE HID DRIVER 14227WIIMOTE HID DRIVER
14222M: David Herrmann <dh.herrmann@googlemail.com> 14228M: David Herrmann <dh.herrmann@googlemail.com>
14223L: linux-input@vger.kernel.org 14229L: linux-input@vger.kernel.org
14224S: Maintained 14230S: Maintained
14225F: drivers/hid/hid-wiimote* 14231F: drivers/hid/hid-wiimote*
14226 14232
14233WILOCITY WIL6210 WIRELESS DRIVER
14234M: Maya Erez <qca_merez@qca.qualcomm.com>
14235L: linux-wireless@vger.kernel.org
14236L: wil6210@qca.qualcomm.com
14237S: Supported
14238W: http://wireless.kernel.org/en/users/Drivers/wil6210
14239F: drivers/net/wireless/ath/wil6210/
14240F: include/uapi/linux/wil6210_uapi.h
14241
14242WIMAX STACK
14243M: Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
14244M: linux-wimax@intel.com
14245L: wimax@linuxwimax.org (subscribers-only)
14246S: Supported
14247W: http://linuxwimax.org
14248F: Documentation/wimax/README.wimax
14249F: include/linux/wimax/debug.h
14250F: include/net/wimax.h
14251F: include/uapi/linux/wimax.h
14252F: net/wimax/
14253
14227WINBOND CIR DRIVER 14254WINBOND CIR DRIVER
14228M: David Härdeman <david@hardeman.nu> 14255M: David Härdeman <david@hardeman.nu>
14229S: Maintained 14256S: Maintained
@@ -14241,18 +14268,6 @@ L: linux-gpio@vger.kernel.org
14241S: Maintained 14268S: Maintained
14242F: drivers/gpio/gpio-ws16c48.c 14269F: drivers/gpio/gpio-ws16c48.c
14243 14270
14244WIMAX STACK
14245M: Inaky Perez-Gonzalez <inaky.perez-gonzalez@intel.com>
14246M: linux-wimax@intel.com
14247L: wimax@linuxwimax.org (subscribers-only)
14248S: Supported
14249W: http://linuxwimax.org
14250F: Documentation/wimax/README.wimax
14251F: include/linux/wimax/debug.h
14252F: include/net/wimax.h
14253F: include/uapi/linux/wimax.h
14254F: net/wimax/
14255
14256WISTRON LAPTOP BUTTON DRIVER 14271WISTRON LAPTOP BUTTON DRIVER
14257M: Miloslav Trmac <mitr@volny.cz> 14272M: Miloslav Trmac <mitr@volny.cz>
14258S: Maintained 14273S: Maintained
@@ -14337,15 +14352,6 @@ S: Maintained
14337F: Documentation/x86/ 14352F: Documentation/x86/
14338F: arch/x86/ 14353F: arch/x86/
14339 14354
14340X86 PLATFORM DRIVERS
14341M: Darren Hart <dvhart@infradead.org>
14342M: Andy Shevchenko <andy@infradead.org>
14343L: platform-driver-x86@vger.kernel.org
14344T: git git://git.infradead.org/users/dvhart/linux-platform-drivers-x86.git
14345S: Maintained
14346F: drivers/platform/x86/
14347F: drivers/platform/olpc/
14348
14349X86 MCE INFRASTRUCTURE 14355X86 MCE INFRASTRUCTURE
14350M: Tony Luck <tony.luck@intel.com> 14356M: Tony Luck <tony.luck@intel.com>
14351M: Borislav Petkov <bp@alien8.de> 14357M: Borislav Petkov <bp@alien8.de>
@@ -14358,6 +14364,15 @@ M: Borislav Petkov <bp@alien8.de>
14358S: Maintained 14364S: Maintained
14359F: arch/x86/kernel/cpu/microcode/* 14365F: arch/x86/kernel/cpu/microcode/*
14360 14366
14367X86 PLATFORM DRIVERS
14368M: Darren Hart <dvhart@infradead.org>
14369M: Andy Shevchenko <andy@infradead.org>
14370L: platform-driver-x86@vger.kernel.org
14371T: git git://git.infradead.org/users/dvhart/linux-platform-drivers-x86.git
14372S: Maintained
14373F: drivers/platform/x86/
14374F: drivers/platform/olpc/
14375
14361X86 VDSO 14376X86 VDSO
14362M: Andy Lutomirski <luto@amacapital.net> 14377M: Andy Lutomirski <luto@amacapital.net>
14363L: linux-kernel@vger.kernel.org 14378L: linux-kernel@vger.kernel.org
@@ -14374,20 +14389,13 @@ T: git git://linuxtv.org/media_tree.git
14374S: Maintained 14389S: Maintained
14375F: drivers/media/tuners/tuner-xc2028.* 14390F: drivers/media/tuners/tuner-xc2028.*
14376 14391
14377XEN HYPERVISOR INTERFACE 14392XEN BLOCK SUBSYSTEM
14378M: Boris Ostrovsky <boris.ostrovsky@oracle.com> 14393M: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
14379M: Juergen Gross <jgross@suse.com> 14394M: Roger Pau Monné <roger.pau@citrix.com>
14380L: xen-devel@lists.xenproject.org (moderated for non-subscribers) 14395L: xen-devel@lists.xenproject.org (moderated for non-subscribers)
14381T: git git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git
14382S: Supported 14396S: Supported
14383F: arch/x86/xen/ 14397F: drivers/block/xen-blkback/*
14384F: drivers/*/xen-*front.c 14398F: drivers/block/xen*
14385F: drivers/xen/
14386F: arch/x86/include/asm/xen/
14387F: include/xen/
14388F: include/uapi/xen/
14389F: Documentation/ABI/stable/sysfs-hypervisor-xen
14390F: Documentation/ABI/testing/sysfs-hypervisor-xen
14391 14399
14392XEN HYPERVISOR ARM 14400XEN HYPERVISOR ARM
14393M: Stefano Stabellini <sstabellini@kernel.org> 14401M: Stefano Stabellini <sstabellini@kernel.org>
@@ -14403,6 +14411,21 @@ S: Maintained
14403F: arch/arm64/xen/ 14411F: arch/arm64/xen/
14404F: arch/arm64/include/asm/xen/ 14412F: arch/arm64/include/asm/xen/
14405 14413
14414XEN HYPERVISOR INTERFACE
14415M: Boris Ostrovsky <boris.ostrovsky@oracle.com>
14416M: Juergen Gross <jgross@suse.com>
14417L: xen-devel@lists.xenproject.org (moderated for non-subscribers)
14418T: git git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip.git
14419S: Supported
14420F: arch/x86/xen/
14421F: drivers/*/xen-*front.c
14422F: drivers/xen/
14423F: arch/x86/include/asm/xen/
14424F: include/xen/
14425F: include/uapi/xen/
14426F: Documentation/ABI/stable/sysfs-hypervisor-xen
14427F: Documentation/ABI/testing/sysfs-hypervisor-xen
14428
14406XEN NETWORK BACKEND DRIVER 14429XEN NETWORK BACKEND DRIVER
14407M: Wei Liu <wei.liu2@citrix.com> 14430M: Wei Liu <wei.liu2@citrix.com>
14408M: Paul Durrant <paul.durrant@citrix.com> 14431M: Paul Durrant <paul.durrant@citrix.com>
@@ -14418,14 +14441,6 @@ S: Supported
14418F: arch/x86/pci/*xen* 14441F: arch/x86/pci/*xen*
14419F: drivers/pci/*xen* 14442F: drivers/pci/*xen*
14420 14443
14421XEN BLOCK SUBSYSTEM
14422M: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
14423M: Roger Pau Monné <roger.pau@citrix.com>
14424L: xen-devel@lists.xenproject.org (moderated for non-subscribers)
14425S: Supported
14426F: drivers/block/xen-blkback/*
14427F: drivers/block/xen*
14428
14429XEN PVSCSI DRIVERS 14444XEN PVSCSI DRIVERS
14430M: Juergen Gross <jgross@suse.com> 14445M: Juergen Gross <jgross@suse.com>
14431L: xen-devel@lists.xenproject.org (moderated for non-subscribers) 14446L: xen-devel@lists.xenproject.org (moderated for non-subscribers)
@@ -14502,6 +14517,13 @@ S: Maintained
14502F: drivers/net/hamradio/yam* 14517F: drivers/net/hamradio/yam*
14503F: include/linux/yam.h 14518F: include/linux/yam.h
14504 14519
14520YAMA SECURITY MODULE
14521M: Kees Cook <keescook@chromium.org>
14522T: git git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux.git yama/tip
14523S: Supported
14524F: security/yama/
14525F: Documentation/admin-guide/LSM/Yama.rst
14526
14505YEALINK PHONE DRIVER 14527YEALINK PHONE DRIVER
14506M: Henk Vergonet <Henk.Vergonet@gmail.com> 14528M: Henk Vergonet <Henk.Vergonet@gmail.com>
14507L: usbb2k-api-dev@nongnu.org 14529L: usbb2k-api-dev@nongnu.org
@@ -14536,23 +14558,23 @@ L: zd1211-devs@lists.sourceforge.net (subscribers-only)
14536S: Maintained 14558S: Maintained
14537F: drivers/net/wireless/zydas/zd1211rw/ 14559F: drivers/net/wireless/zydas/zd1211rw/
14538 14560
14539ZD1301_DEMOD MEDIA DRIVER 14561ZD1301 MEDIA DRIVER
14540M: Antti Palosaari <crope@iki.fi> 14562M: Antti Palosaari <crope@iki.fi>
14541L: linux-media@vger.kernel.org 14563L: linux-media@vger.kernel.org
14542W: https://linuxtv.org/ 14564W: https://linuxtv.org/
14543W: http://palosaari.fi/linux/ 14565W: http://palosaari.fi/linux/
14544Q: https://patchwork.linuxtv.org/project/linux-media/list/ 14566Q: https://patchwork.linuxtv.org/project/linux-media/list/
14545S: Maintained 14567S: Maintained
14546F: drivers/media/dvb-frontends/zd1301_demod* 14568F: drivers/media/usb/dvb-usb-v2/zd1301*
14547 14569
14548ZD1301 MEDIA DRIVER 14570ZD1301_DEMOD MEDIA DRIVER
14549M: Antti Palosaari <crope@iki.fi> 14571M: Antti Palosaari <crope@iki.fi>
14550L: linux-media@vger.kernel.org 14572L: linux-media@vger.kernel.org
14551W: https://linuxtv.org/ 14573W: https://linuxtv.org/
14552W: http://palosaari.fi/linux/ 14574W: http://palosaari.fi/linux/
14553Q: https://patchwork.linuxtv.org/project/linux-media/list/ 14575Q: https://patchwork.linuxtv.org/project/linux-media/list/
14554S: Maintained 14576S: Maintained
14555F: drivers/media/usb/dvb-usb-v2/zd1301* 14577F: drivers/media/dvb-frontends/zd1301_demod*
14556 14578
14557ZPOOL COMPRESSED PAGE STORAGE API 14579ZPOOL COMPRESSED PAGE STORAGE API
14558M: Dan Streetman <ddstreet@ieee.org> 14580M: Dan Streetman <ddstreet@ieee.org>
diff --git a/Makefile b/Makefile
index b4fb9a1d1594..dda88e744d5f 100644
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
1VERSION = 4 1VERSION = 4
2PATCHLEVEL = 13 2PATCHLEVEL = 13
3SUBLEVEL = 0 3SUBLEVEL = 0
4EXTRAVERSION = -rc1 4EXTRAVERSION = -rc6
5NAME = Fearless Coyote 5NAME = Fearless Coyote
6 6
7# *DOCUMENTATION* 7# *DOCUMENTATION*
@@ -396,7 +396,7 @@ LINUXINCLUDE := \
396KBUILD_CPPFLAGS := -D__KERNEL__ 396KBUILD_CPPFLAGS := -D__KERNEL__
397 397
398KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ 398KBUILD_CFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
399 -fno-strict-aliasing -fno-common \ 399 -fno-strict-aliasing -fno-common -fshort-wchar \
400 -Werror-implicit-function-declaration \ 400 -Werror-implicit-function-declaration \
401 -Wno-format-security \ 401 -Wno-format-security \
402 -std=gnu89 $(call cc-option,-fno-PIE) 402 -std=gnu89 $(call cc-option,-fno-PIE)
@@ -442,7 +442,7 @@ export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \
442# =========================================================================== 442# ===========================================================================
443# Rules shared between *config targets and build targets 443# Rules shared between *config targets and build targets
444 444
445# Basic helpers built in scripts/ 445# Basic helpers built in scripts/basic/
446PHONY += scripts_basic 446PHONY += scripts_basic
447scripts_basic: 447scripts_basic:
448 $(Q)$(MAKE) $(build)=scripts/basic 448 $(Q)$(MAKE) $(build)=scripts/basic
@@ -505,7 +505,7 @@ ifeq ($(KBUILD_EXTMOD),)
505 endif 505 endif
506 endif 506 endif
507endif 507endif
508# install and module_install need also be processed one by one 508# install and modules_install need also be processed one by one
509ifneq ($(filter install,$(MAKECMDGOALS)),) 509ifneq ($(filter install,$(MAKECMDGOALS)),)
510 ifneq ($(filter modules_install,$(MAKECMDGOALS)),) 510 ifneq ($(filter modules_install,$(MAKECMDGOALS)),)
511 mixed-targets := 1 511 mixed-targets := 1
@@ -964,7 +964,7 @@ export KBUILD_VMLINUX_MAIN := $(core-y) $(libs-y2) $(drivers-y) $(net-y) $(virt-
964export KBUILD_VMLINUX_LIBS := $(libs-y1) 964export KBUILD_VMLINUX_LIBS := $(libs-y1)
965export KBUILD_LDS := arch/$(SRCARCH)/kernel/vmlinux.lds 965export KBUILD_LDS := arch/$(SRCARCH)/kernel/vmlinux.lds
966export LDFLAGS_vmlinux 966export LDFLAGS_vmlinux
967# used by scripts/pacmage/Makefile 967# used by scripts/package/Makefile
968export KBUILD_ALLDIRS := $(sort $(filter-out arch/%,$(vmlinux-alldirs)) arch Documentation include samples scripts tools) 968export KBUILD_ALLDIRS := $(sort $(filter-out arch/%,$(vmlinux-alldirs)) arch Documentation include samples scripts tools)
969 969
970vmlinux-deps := $(KBUILD_LDS) $(KBUILD_VMLINUX_INIT) $(KBUILD_VMLINUX_MAIN) $(KBUILD_VMLINUX_LIBS) 970vmlinux-deps := $(KBUILD_LDS) $(KBUILD_VMLINUX_INIT) $(KBUILD_VMLINUX_MAIN) $(KBUILD_VMLINUX_LIBS)
@@ -992,8 +992,8 @@ include/generated/autoksyms.h: FORCE
992ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(SRCARCH)/Makefile.postlink) 992ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(SRCARCH)/Makefile.postlink)
993 993
994# Final link of vmlinux with optional arch pass after final link 994# Final link of vmlinux with optional arch pass after final link
995 cmd_link-vmlinux = \ 995cmd_link-vmlinux = \
996 $(CONFIG_SHELL) $< $(LD) $(LDFLAGS) $(LDFLAGS_vmlinux) ; \ 996 $(CONFIG_SHELL) $< $(LD) $(LDFLAGS) $(LDFLAGS_vmlinux) ; \
997 $(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true) 997 $(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true)
998 998
999vmlinux: scripts/link-vmlinux.sh vmlinux_prereq $(vmlinux-deps) FORCE 999vmlinux: scripts/link-vmlinux.sh vmlinux_prereq $(vmlinux-deps) FORCE
@@ -1184,6 +1184,7 @@ PHONY += kselftest
1184kselftest: 1184kselftest:
1185 $(Q)$(MAKE) -C tools/testing/selftests run_tests 1185 $(Q)$(MAKE) -C tools/testing/selftests run_tests
1186 1186
1187PHONY += kselftest-clean
1187kselftest-clean: 1188kselftest-clean:
1188 $(Q)$(MAKE) -C tools/testing/selftests clean 1189 $(Q)$(MAKE) -C tools/testing/selftests clean
1189 1190
diff --git a/arch/alpha/include/uapi/asm/ioctls.h b/arch/alpha/include/uapi/asm/ioctls.h
index ff67b8373bf7..1cd7dc7d4870 100644
--- a/arch/alpha/include/uapi/asm/ioctls.h
+++ b/arch/alpha/include/uapi/asm/ioctls.h
@@ -100,7 +100,7 @@
100#define TIOCGPKT _IOR('T', 0x38, int) /* Get packet mode state */ 100#define TIOCGPKT _IOR('T', 0x38, int) /* Get packet mode state */
101#define TIOCGPTLCK _IOR('T', 0x39, int) /* Get Pty lock state */ 101#define TIOCGPTLCK _IOR('T', 0x39, int) /* Get Pty lock state */
102#define TIOCGEXCL _IOR('T', 0x40, int) /* Get exclusive mode state */ 102#define TIOCGEXCL _IOR('T', 0x40, int) /* Get exclusive mode state */
103#define TIOCGPTPEER _IOR('T', 0x41, int) /* Safely open the slave */ 103#define TIOCGPTPEER _IO('T', 0x41) /* Safely open the slave */
104 104
105#define TIOCSERCONFIG 0x5453 105#define TIOCSERCONFIG 0x5453
106#define TIOCSERGWILD 0x5454 106#define TIOCSERGWILD 0x5454
diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig
index a5459698f0ee..7db85ab00c52 100644
--- a/arch/arc/Kconfig
+++ b/arch/arc/Kconfig
@@ -96,7 +96,6 @@ menu "ARC Architecture Configuration"
96 96
97menu "ARC Platform/SoC/Board" 97menu "ARC Platform/SoC/Board"
98 98
99source "arch/arc/plat-sim/Kconfig"
100source "arch/arc/plat-tb10x/Kconfig" 99source "arch/arc/plat-tb10x/Kconfig"
101source "arch/arc/plat-axs10x/Kconfig" 100source "arch/arc/plat-axs10x/Kconfig"
102#New platform adds here 101#New platform adds here
diff --git a/arch/arc/Makefile b/arch/arc/Makefile
index 44ef35d33956..3a61cfcc38c0 100644
--- a/arch/arc/Makefile
+++ b/arch/arc/Makefile
@@ -107,7 +107,7 @@ core-y += arch/arc/
107# w/o this dtb won't embed into kernel binary 107# w/o this dtb won't embed into kernel binary
108core-y += arch/arc/boot/dts/ 108core-y += arch/arc/boot/dts/
109 109
110core-$(CONFIG_ARC_PLAT_SIM) += arch/arc/plat-sim/ 110core-y += arch/arc/plat-sim/
111core-$(CONFIG_ARC_PLAT_TB10X) += arch/arc/plat-tb10x/ 111core-$(CONFIG_ARC_PLAT_TB10X) += arch/arc/plat-tb10x/
112core-$(CONFIG_ARC_PLAT_AXS10X) += arch/arc/plat-axs10x/ 112core-$(CONFIG_ARC_PLAT_AXS10X) += arch/arc/plat-axs10x/
113core-$(CONFIG_ARC_PLAT_EZNPS) += arch/arc/plat-eznps/ 113core-$(CONFIG_ARC_PLAT_EZNPS) += arch/arc/plat-eznps/
diff --git a/arch/arc/boot/dts/axc001.dtsi b/arch/arc/boot/dts/axc001.dtsi
index 53ce226f77a5..a380ffa1a458 100644
--- a/arch/arc/boot/dts/axc001.dtsi
+++ b/arch/arc/boot/dts/axc001.dtsi
@@ -15,15 +15,15 @@
15 15
16/ { 16/ {
17 compatible = "snps,arc"; 17 compatible = "snps,arc";
18 #address-cells = <1>; 18 #address-cells = <2>;
19 #size-cells = <1>; 19 #size-cells = <2>;
20 20
21 cpu_card { 21 cpu_card {
22 compatible = "simple-bus"; 22 compatible = "simple-bus";
23 #address-cells = <1>; 23 #address-cells = <1>;
24 #size-cells = <1>; 24 #size-cells = <1>;
25 25
26 ranges = <0x00000000 0xf0000000 0x10000000>; 26 ranges = <0x00000000 0x0 0xf0000000 0x10000000>;
27 27
28 core_clk: core_clk { 28 core_clk: core_clk {
29 #clock-cells = <0>; 29 #clock-cells = <0>;
@@ -91,23 +91,21 @@
91 mb_intc: dw-apb-ictl@0xe0012000 { 91 mb_intc: dw-apb-ictl@0xe0012000 {
92 #interrupt-cells = <1>; 92 #interrupt-cells = <1>;
93 compatible = "snps,dw-apb-ictl"; 93 compatible = "snps,dw-apb-ictl";
94 reg = < 0xe0012000 0x200 >; 94 reg = < 0x0 0xe0012000 0x0 0x200 >;
95 interrupt-controller; 95 interrupt-controller;
96 interrupt-parent = <&core_intc>; 96 interrupt-parent = <&core_intc>;
97 interrupts = < 7 >; 97 interrupts = < 7 >;
98 }; 98 };
99 99
100 memory { 100 memory {
101 #address-cells = <1>;
102 #size-cells = <1>;
103 ranges = <0x00000000 0x80000000 0x20000000>;
104 device_type = "memory"; 101 device_type = "memory";
105 reg = <0x80000000 0x1b000000>; /* (512 - 32) MiB */ 102 /* CONFIG_KERNEL_RAM_BASE_ADDRESS needs to match low mem start */
103 reg = <0x0 0x80000000 0x0 0x1b000000>; /* (512 - 32) MiB */
106 }; 104 };
107 105
108 reserved-memory { 106 reserved-memory {
109 #address-cells = <1>; 107 #address-cells = <2>;
110 #size-cells = <1>; 108 #size-cells = <2>;
111 ranges; 109 ranges;
112 /* 110 /*
113 * We just move frame buffer area to the very end of 111 * We just move frame buffer area to the very end of
@@ -118,7 +116,7 @@
118 */ 116 */
119 frame_buffer: frame_buffer@9e000000 { 117 frame_buffer: frame_buffer@9e000000 {
120 compatible = "shared-dma-pool"; 118 compatible = "shared-dma-pool";
121 reg = <0x9e000000 0x2000000>; 119 reg = <0x0 0x9e000000 0x0 0x2000000>;
122 no-map; 120 no-map;
123 }; 121 };
124 }; 122 };
diff --git a/arch/arc/boot/dts/axc003.dtsi b/arch/arc/boot/dts/axc003.dtsi
index 14df46f141bf..cc9239ef8d08 100644
--- a/arch/arc/boot/dts/axc003.dtsi
+++ b/arch/arc/boot/dts/axc003.dtsi
@@ -14,15 +14,15 @@
14 14
15/ { 15/ {
16 compatible = "snps,arc"; 16 compatible = "snps,arc";
17 #address-cells = <1>; 17 #address-cells = <2>;
18 #size-cells = <1>; 18 #size-cells = <2>;
19 19
20 cpu_card { 20 cpu_card {
21 compatible = "simple-bus"; 21 compatible = "simple-bus";
22 #address-cells = <1>; 22 #address-cells = <1>;
23 #size-cells = <1>; 23 #size-cells = <1>;
24 24
25 ranges = <0x00000000 0xf0000000 0x10000000>; 25 ranges = <0x00000000 0x0 0xf0000000 0x10000000>;
26 26
27 core_clk: core_clk { 27 core_clk: core_clk {
28 #clock-cells = <0>; 28 #clock-cells = <0>;
@@ -94,30 +94,29 @@
94 mb_intc: dw-apb-ictl@0xe0012000 { 94 mb_intc: dw-apb-ictl@0xe0012000 {
95 #interrupt-cells = <1>; 95 #interrupt-cells = <1>;
96 compatible = "snps,dw-apb-ictl"; 96 compatible = "snps,dw-apb-ictl";
97 reg = < 0xe0012000 0x200 >; 97 reg = < 0x0 0xe0012000 0x0 0x200 >;
98 interrupt-controller; 98 interrupt-controller;
99 interrupt-parent = <&core_intc>; 99 interrupt-parent = <&core_intc>;
100 interrupts = < 24 >; 100 interrupts = < 24 >;
101 }; 101 };
102 102
103 memory { 103 memory {
104 #address-cells = <1>;
105 #size-cells = <1>;
106 ranges = <0x00000000 0x80000000 0x40000000>;
107 device_type = "memory"; 104 device_type = "memory";
108 reg = <0x80000000 0x20000000>; /* 512MiB */ 105 /* CONFIG_KERNEL_RAM_BASE_ADDRESS needs to match low mem start */
106 reg = <0x0 0x80000000 0x0 0x20000000 /* 512 MiB low mem */
107 0x1 0xc0000000 0x0 0x40000000>; /* 1 GiB highmem */
109 }; 108 };
110 109
111 reserved-memory { 110 reserved-memory {
112 #address-cells = <1>; 111 #address-cells = <2>;
113 #size-cells = <1>; 112 #size-cells = <2>;
114 ranges; 113 ranges;
115 /* 114 /*
116 * Move frame buffer out of IOC aperture (0x8z-0xAz). 115 * Move frame buffer out of IOC aperture (0x8z-0xAz).
117 */ 116 */
118 frame_buffer: frame_buffer@be000000 { 117 frame_buffer: frame_buffer@be000000 {
119 compatible = "shared-dma-pool"; 118 compatible = "shared-dma-pool";
120 reg = <0xbe000000 0x2000000>; 119 reg = <0x0 0xbe000000 0x0 0x2000000>;
121 no-map; 120 no-map;
122 }; 121 };
123 }; 122 };
diff --git a/arch/arc/boot/dts/axc003_idu.dtsi b/arch/arc/boot/dts/axc003_idu.dtsi
index 695f9fa1996b..4ebb2170abec 100644
--- a/arch/arc/boot/dts/axc003_idu.dtsi
+++ b/arch/arc/boot/dts/axc003_idu.dtsi
@@ -14,15 +14,15 @@
14 14
15/ { 15/ {
16 compatible = "snps,arc"; 16 compatible = "snps,arc";
17 #address-cells = <1>; 17 #address-cells = <2>;
18 #size-cells = <1>; 18 #size-cells = <2>;
19 19
20 cpu_card { 20 cpu_card {
21 compatible = "simple-bus"; 21 compatible = "simple-bus";
22 #address-cells = <1>; 22 #address-cells = <1>;
23 #size-cells = <1>; 23 #size-cells = <1>;
24 24
25 ranges = <0x00000000 0xf0000000 0x10000000>; 25 ranges = <0x00000000 0x0 0xf0000000 0x10000000>;
26 26
27 core_clk: core_clk { 27 core_clk: core_clk {
28 #clock-cells = <0>; 28 #clock-cells = <0>;
@@ -100,30 +100,29 @@
100 mb_intc: dw-apb-ictl@0xe0012000 { 100 mb_intc: dw-apb-ictl@0xe0012000 {
101 #interrupt-cells = <1>; 101 #interrupt-cells = <1>;
102 compatible = "snps,dw-apb-ictl"; 102 compatible = "snps,dw-apb-ictl";
103 reg = < 0xe0012000 0x200 >; 103 reg = < 0x0 0xe0012000 0x0 0x200 >;
104 interrupt-controller; 104 interrupt-controller;
105 interrupt-parent = <&idu_intc>; 105 interrupt-parent = <&idu_intc>;
106 interrupts = <0>; 106 interrupts = <0>;
107 }; 107 };
108 108
109 memory { 109 memory {
110 #address-cells = <1>;
111 #size-cells = <1>;
112 ranges = <0x00000000 0x80000000 0x40000000>;
113 device_type = "memory"; 110 device_type = "memory";
114 reg = <0x80000000 0x20000000>; /* 512MiB */ 111 /* CONFIG_KERNEL_RAM_BASE_ADDRESS needs to match low mem start */
112 reg = <0x0 0x80000000 0x0 0x20000000 /* 512 MiB low mem */
113 0x1 0xc0000000 0x0 0x40000000>; /* 1 GiB highmem */
115 }; 114 };
116 115
117 reserved-memory { 116 reserved-memory {
118 #address-cells = <1>; 117 #address-cells = <2>;
119 #size-cells = <1>; 118 #size-cells = <2>;
120 ranges; 119 ranges;
121 /* 120 /*
122 * Move frame buffer out of IOC aperture (0x8z-0xAz). 121 * Move frame buffer out of IOC aperture (0x8z-0xAz).
123 */ 122 */
124 frame_buffer: frame_buffer@be000000 { 123 frame_buffer: frame_buffer@be000000 {
125 compatible = "shared-dma-pool"; 124 compatible = "shared-dma-pool";
126 reg = <0xbe000000 0x2000000>; 125 reg = <0x0 0xbe000000 0x0 0x2000000>;
127 no-map; 126 no-map;
128 }; 127 };
129 }; 128 };
diff --git a/arch/arc/boot/dts/axs10x_mb.dtsi b/arch/arc/boot/dts/axs10x_mb.dtsi
index 41cfb29b62c1..0ff7e07edcd4 100644
--- a/arch/arc/boot/dts/axs10x_mb.dtsi
+++ b/arch/arc/boot/dts/axs10x_mb.dtsi
@@ -13,7 +13,7 @@
13 compatible = "simple-bus"; 13 compatible = "simple-bus";
14 #address-cells = <1>; 14 #address-cells = <1>;
15 #size-cells = <1>; 15 #size-cells = <1>;
16 ranges = <0x00000000 0xe0000000 0x10000000>; 16 ranges = <0x00000000 0x0 0xe0000000 0x10000000>;
17 interrupt-parent = <&mb_intc>; 17 interrupt-parent = <&mb_intc>;
18 18
19 i2sclk: i2sclk@100a0 { 19 i2sclk: i2sclk@100a0 {
diff --git a/arch/arc/configs/haps_hs_defconfig b/arch/arc/configs/haps_hs_defconfig
index 57b3e599322f..db04ea4dd2d9 100644
--- a/arch/arc/configs/haps_hs_defconfig
+++ b/arch/arc/configs/haps_hs_defconfig
@@ -21,7 +21,6 @@ CONFIG_MODULES=y
21# CONFIG_BLK_DEV_BSG is not set 21# CONFIG_BLK_DEV_BSG is not set
22# CONFIG_IOSCHED_DEADLINE is not set 22# CONFIG_IOSCHED_DEADLINE is not set
23# CONFIG_IOSCHED_CFQ is not set 23# CONFIG_IOSCHED_CFQ is not set
24CONFIG_ARC_PLAT_SIM=y
25CONFIG_ISA_ARCV2=y 24CONFIG_ISA_ARCV2=y
26CONFIG_ARC_BUILTIN_DTB_NAME="haps_hs" 25CONFIG_ARC_BUILTIN_DTB_NAME="haps_hs"
27CONFIG_PREEMPT=y 26CONFIG_PREEMPT=y
diff --git a/arch/arc/configs/haps_hs_smp_defconfig b/arch/arc/configs/haps_hs_smp_defconfig
index f85985adebb2..821a2e562f3f 100644
--- a/arch/arc/configs/haps_hs_smp_defconfig
+++ b/arch/arc/configs/haps_hs_smp_defconfig
@@ -23,7 +23,6 @@ CONFIG_MODULES=y
23# CONFIG_BLK_DEV_BSG is not set 23# CONFIG_BLK_DEV_BSG is not set
24# CONFIG_IOSCHED_DEADLINE is not set 24# CONFIG_IOSCHED_DEADLINE is not set
25# CONFIG_IOSCHED_CFQ is not set 25# CONFIG_IOSCHED_CFQ is not set
26CONFIG_ARC_PLAT_SIM=y
27CONFIG_ISA_ARCV2=y 26CONFIG_ISA_ARCV2=y
28CONFIG_SMP=y 27CONFIG_SMP=y
29CONFIG_ARC_BUILTIN_DTB_NAME="haps_hs_idu" 28CONFIG_ARC_BUILTIN_DTB_NAME="haps_hs_idu"
diff --git a/arch/arc/configs/nps_defconfig b/arch/arc/configs/nps_defconfig
index ede625c76216..7c9c706ae7f6 100644
--- a/arch/arc/configs/nps_defconfig
+++ b/arch/arc/configs/nps_defconfig
@@ -39,7 +39,6 @@ CONFIG_IP_PNP=y
39# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 39# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
40# CONFIG_INET_XFRM_MODE_TUNNEL is not set 40# CONFIG_INET_XFRM_MODE_TUNNEL is not set
41# CONFIG_INET_XFRM_MODE_BEET is not set 41# CONFIG_INET_XFRM_MODE_BEET is not set
42# CONFIG_INET_LRO is not set
43# CONFIG_INET_DIAG is not set 42# CONFIG_INET_DIAG is not set
44# CONFIG_IPV6 is not set 43# CONFIG_IPV6 is not set
45# CONFIG_WIRELESS is not set 44# CONFIG_WIRELESS is not set
diff --git a/arch/arc/configs/nsim_700_defconfig b/arch/arc/configs/nsim_700_defconfig
index b0066a749d4c..6dff83a238b8 100644
--- a/arch/arc/configs/nsim_700_defconfig
+++ b/arch/arc/configs/nsim_700_defconfig
@@ -23,7 +23,6 @@ CONFIG_MODULES=y
23# CONFIG_BLK_DEV_BSG is not set 23# CONFIG_BLK_DEV_BSG is not set
24# CONFIG_IOSCHED_DEADLINE is not set 24# CONFIG_IOSCHED_DEADLINE is not set
25# CONFIG_IOSCHED_CFQ is not set 25# CONFIG_IOSCHED_CFQ is not set
26CONFIG_ARC_PLAT_SIM=y
27CONFIG_ARC_BUILTIN_DTB_NAME="nsim_700" 26CONFIG_ARC_BUILTIN_DTB_NAME="nsim_700"
28CONFIG_PREEMPT=y 27CONFIG_PREEMPT=y
29# CONFIG_COMPACTION is not set 28# CONFIG_COMPACTION is not set
diff --git a/arch/arc/configs/nsim_hs_defconfig b/arch/arc/configs/nsim_hs_defconfig
index ebe9ebb92933..31ee51b987e7 100644
--- a/arch/arc/configs/nsim_hs_defconfig
+++ b/arch/arc/configs/nsim_hs_defconfig
@@ -26,7 +26,6 @@ CONFIG_MODULE_FORCE_UNLOAD=y
26# CONFIG_BLK_DEV_BSG is not set 26# CONFIG_BLK_DEV_BSG is not set
27# CONFIG_IOSCHED_DEADLINE is not set 27# CONFIG_IOSCHED_DEADLINE is not set
28# CONFIG_IOSCHED_CFQ is not set 28# CONFIG_IOSCHED_CFQ is not set
29CONFIG_ARC_PLAT_SIM=y
30CONFIG_ISA_ARCV2=y 29CONFIG_ISA_ARCV2=y
31CONFIG_ARC_BUILTIN_DTB_NAME="nsim_hs" 30CONFIG_ARC_BUILTIN_DTB_NAME="nsim_hs"
32CONFIG_PREEMPT=y 31CONFIG_PREEMPT=y
diff --git a/arch/arc/configs/nsim_hs_smp_defconfig b/arch/arc/configs/nsim_hs_smp_defconfig
index 4bde43278be6..8d3b1f67cae4 100644
--- a/arch/arc/configs/nsim_hs_smp_defconfig
+++ b/arch/arc/configs/nsim_hs_smp_defconfig
@@ -24,7 +24,6 @@ CONFIG_MODULE_FORCE_UNLOAD=y
24# CONFIG_BLK_DEV_BSG is not set 24# CONFIG_BLK_DEV_BSG is not set
25# CONFIG_IOSCHED_DEADLINE is not set 25# CONFIG_IOSCHED_DEADLINE is not set
26# CONFIG_IOSCHED_CFQ is not set 26# CONFIG_IOSCHED_CFQ is not set
27CONFIG_ARC_PLAT_SIM=y
28CONFIG_ISA_ARCV2=y 27CONFIG_ISA_ARCV2=y
29CONFIG_SMP=y 28CONFIG_SMP=y
30CONFIG_ARC_BUILTIN_DTB_NAME="nsim_hs_idu" 29CONFIG_ARC_BUILTIN_DTB_NAME="nsim_hs_idu"
diff --git a/arch/arc/configs/nsimosci_defconfig b/arch/arc/configs/nsimosci_defconfig
index f6fb3d26557e..6168ce2ac2ef 100644
--- a/arch/arc/configs/nsimosci_defconfig
+++ b/arch/arc/configs/nsimosci_defconfig
@@ -23,7 +23,6 @@ CONFIG_MODULES=y
23# CONFIG_BLK_DEV_BSG is not set 23# CONFIG_BLK_DEV_BSG is not set
24# CONFIG_IOSCHED_DEADLINE is not set 24# CONFIG_IOSCHED_DEADLINE is not set
25# CONFIG_IOSCHED_CFQ is not set 25# CONFIG_IOSCHED_CFQ is not set
26CONFIG_ARC_PLAT_SIM=y
27CONFIG_ARC_BUILTIN_DTB_NAME="nsimosci" 26CONFIG_ARC_BUILTIN_DTB_NAME="nsimosci"
28# CONFIG_COMPACTION is not set 27# CONFIG_COMPACTION is not set
29CONFIG_NET=y 28CONFIG_NET=y
diff --git a/arch/arc/configs/nsimosci_hs_defconfig b/arch/arc/configs/nsimosci_hs_defconfig
index b9f0fe00044b..a70bdeb2b3fd 100644
--- a/arch/arc/configs/nsimosci_hs_defconfig
+++ b/arch/arc/configs/nsimosci_hs_defconfig
@@ -23,7 +23,6 @@ CONFIG_MODULES=y
23# CONFIG_BLK_DEV_BSG is not set 23# CONFIG_BLK_DEV_BSG is not set
24# CONFIG_IOSCHED_DEADLINE is not set 24# CONFIG_IOSCHED_DEADLINE is not set
25# CONFIG_IOSCHED_CFQ is not set 25# CONFIG_IOSCHED_CFQ is not set
26CONFIG_ARC_PLAT_SIM=y
27CONFIG_ISA_ARCV2=y 26CONFIG_ISA_ARCV2=y
28CONFIG_ARC_BUILTIN_DTB_NAME="nsimosci_hs" 27CONFIG_ARC_BUILTIN_DTB_NAME="nsimosci_hs"
29# CONFIG_COMPACTION is not set 28# CONFIG_COMPACTION is not set
diff --git a/arch/arc/configs/nsimosci_hs_smp_defconfig b/arch/arc/configs/nsimosci_hs_smp_defconfig
index 155add7761ed..ef96406c446e 100644
--- a/arch/arc/configs/nsimosci_hs_smp_defconfig
+++ b/arch/arc/configs/nsimosci_hs_smp_defconfig
@@ -18,7 +18,6 @@ CONFIG_MODULES=y
18# CONFIG_BLK_DEV_BSG is not set 18# CONFIG_BLK_DEV_BSG is not set
19# CONFIG_IOSCHED_DEADLINE is not set 19# CONFIG_IOSCHED_DEADLINE is not set
20# CONFIG_IOSCHED_CFQ is not set 20# CONFIG_IOSCHED_CFQ is not set
21CONFIG_ARC_PLAT_SIM=y
22CONFIG_ISA_ARCV2=y 21CONFIG_ISA_ARCV2=y
23CONFIG_SMP=y 22CONFIG_SMP=y
24# CONFIG_ARC_TIMERS_64BIT is not set 23# CONFIG_ARC_TIMERS_64BIT is not set
diff --git a/arch/arc/configs/tb10x_defconfig b/arch/arc/configs/tb10x_defconfig
index 4c5118384eb5..f30182549395 100644
--- a/arch/arc/configs/tb10x_defconfig
+++ b/arch/arc/configs/tb10x_defconfig
@@ -38,7 +38,6 @@ CONFIG_IP_MULTICAST=y
38# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 38# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
39# CONFIG_INET_XFRM_MODE_TUNNEL is not set 39# CONFIG_INET_XFRM_MODE_TUNNEL is not set
40# CONFIG_INET_XFRM_MODE_BEET is not set 40# CONFIG_INET_XFRM_MODE_BEET is not set
41# CONFIG_INET_LRO is not set
42# CONFIG_INET_DIAG is not set 41# CONFIG_INET_DIAG is not set
43# CONFIG_IPV6 is not set 42# CONFIG_IPV6 is not set
44# CONFIG_WIRELESS is not set 43# CONFIG_WIRELESS is not set
diff --git a/arch/arc/include/asm/cache.h b/arch/arc/include/asm/cache.h
index 19ebddffb279..02fd1cece6ef 100644
--- a/arch/arc/include/asm/cache.h
+++ b/arch/arc/include/asm/cache.h
@@ -96,7 +96,9 @@ extern unsigned long perip_base, perip_end;
96#define ARC_REG_SLC_FLUSH 0x904 96#define ARC_REG_SLC_FLUSH 0x904
97#define ARC_REG_SLC_INVALIDATE 0x905 97#define ARC_REG_SLC_INVALIDATE 0x905
98#define ARC_REG_SLC_RGN_START 0x914 98#define ARC_REG_SLC_RGN_START 0x914
99#define ARC_REG_SLC_RGN_START1 0x915
99#define ARC_REG_SLC_RGN_END 0x916 100#define ARC_REG_SLC_RGN_END 0x916
101#define ARC_REG_SLC_RGN_END1 0x917
100 102
101/* Bit val in SLC_CONTROL */ 103/* Bit val in SLC_CONTROL */
102#define SLC_CTRL_DIS 0x001 104#define SLC_CTRL_DIS 0x001
diff --git a/arch/arc/include/asm/mmu.h b/arch/arc/include/asm/mmu.h
index db7319e9b506..efb79fafff1d 100644
--- a/arch/arc/include/asm/mmu.h
+++ b/arch/arc/include/asm/mmu.h
@@ -94,6 +94,8 @@ static inline int is_pae40_enabled(void)
94 return IS_ENABLED(CONFIG_ARC_HAS_PAE40); 94 return IS_ENABLED(CONFIG_ARC_HAS_PAE40);
95} 95}
96 96
97extern int pae40_exist_but_not_enab(void);
98
97#endif /* !__ASSEMBLY__ */ 99#endif /* !__ASSEMBLY__ */
98 100
99#endif 101#endif
diff --git a/arch/arc/kernel/intc-arcv2.c b/arch/arc/kernel/intc-arcv2.c
index f928795fd07a..cf90714a676d 100644
--- a/arch/arc/kernel/intc-arcv2.c
+++ b/arch/arc/kernel/intc-arcv2.c
@@ -75,10 +75,13 @@ void arc_init_IRQ(void)
75 * Set a default priority for all available interrupts to prevent 75 * Set a default priority for all available interrupts to prevent
76 * switching of register banks if Fast IRQ and multiple register banks 76 * switching of register banks if Fast IRQ and multiple register banks
77 * are supported by CPU. 77 * are supported by CPU.
78 * Also disable all IRQ lines so faulty external hardware won't
79 * trigger interrupt that kernel is not ready to handle.
78 */ 80 */
79 for (i = NR_EXCEPTIONS; i < irq_bcr.irqs + NR_EXCEPTIONS; i++) { 81 for (i = NR_EXCEPTIONS; i < irq_bcr.irqs + NR_EXCEPTIONS; i++) {
80 write_aux_reg(AUX_IRQ_SELECT, i); 82 write_aux_reg(AUX_IRQ_SELECT, i);
81 write_aux_reg(AUX_IRQ_PRIORITY, ARCV2_IRQ_DEF_PRIO); 83 write_aux_reg(AUX_IRQ_PRIORITY, ARCV2_IRQ_DEF_PRIO);
84 write_aux_reg(AUX_IRQ_ENABLE, 0);
82 } 85 }
83 86
84 /* setup status32, don't enable intr yet as kernel doesn't want */ 87 /* setup status32, don't enable intr yet as kernel doesn't want */
diff --git a/arch/arc/kernel/intc-compact.c b/arch/arc/kernel/intc-compact.c
index 7e608c6b0a01..cef388025adf 100644
--- a/arch/arc/kernel/intc-compact.c
+++ b/arch/arc/kernel/intc-compact.c
@@ -27,7 +27,7 @@
27 */ 27 */
28void arc_init_IRQ(void) 28void arc_init_IRQ(void)
29{ 29{
30 int level_mask = 0; 30 int level_mask = 0, i;
31 31
32 /* Is timer high priority Interrupt (Level2 in ARCompact jargon) */ 32 /* Is timer high priority Interrupt (Level2 in ARCompact jargon) */
33 level_mask |= IS_ENABLED(CONFIG_ARC_COMPACT_IRQ_LEVELS) << TIMER0_IRQ; 33 level_mask |= IS_ENABLED(CONFIG_ARC_COMPACT_IRQ_LEVELS) << TIMER0_IRQ;
@@ -40,6 +40,18 @@ void arc_init_IRQ(void)
40 40
41 if (level_mask) 41 if (level_mask)
42 pr_info("Level-2 interrupts bitset %x\n", level_mask); 42 pr_info("Level-2 interrupts bitset %x\n", level_mask);
43
44 /*
45 * Disable all IRQ lines so faulty external hardware won't
46 * trigger interrupt that kernel is not ready to handle.
47 */
48 for (i = TIMER0_IRQ; i < NR_CPU_IRQS; i++) {
49 unsigned int ienb;
50
51 ienb = read_aux_reg(AUX_IENABLE);
52 ienb &= ~(1 << i);
53 write_aux_reg(AUX_IENABLE, ienb);
54 }
43} 55}
44 56
45/* 57/*
diff --git a/arch/arc/mm/cache.c b/arch/arc/mm/cache.c
index a867575a758b..7db283b46ebd 100644
--- a/arch/arc/mm/cache.c
+++ b/arch/arc/mm/cache.c
@@ -665,6 +665,7 @@ noinline void slc_op(phys_addr_t paddr, unsigned long sz, const int op)
665 static DEFINE_SPINLOCK(lock); 665 static DEFINE_SPINLOCK(lock);
666 unsigned long flags; 666 unsigned long flags;
667 unsigned int ctrl; 667 unsigned int ctrl;
668 phys_addr_t end;
668 669
669 spin_lock_irqsave(&lock, flags); 670 spin_lock_irqsave(&lock, flags);
670 671
@@ -694,8 +695,19 @@ noinline void slc_op(phys_addr_t paddr, unsigned long sz, const int op)
694 * END needs to be setup before START (latter triggers the operation) 695 * END needs to be setup before START (latter triggers the operation)
695 * END can't be same as START, so add (l2_line_sz - 1) to sz 696 * END can't be same as START, so add (l2_line_sz - 1) to sz
696 */ 697 */
697 write_aux_reg(ARC_REG_SLC_RGN_END, (paddr + sz + l2_line_sz - 1)); 698 end = paddr + sz + l2_line_sz - 1;
698 write_aux_reg(ARC_REG_SLC_RGN_START, paddr); 699 if (is_pae40_enabled())
700 write_aux_reg(ARC_REG_SLC_RGN_END1, upper_32_bits(end));
701
702 write_aux_reg(ARC_REG_SLC_RGN_END, lower_32_bits(end));
703
704 if (is_pae40_enabled())
705 write_aux_reg(ARC_REG_SLC_RGN_START1, upper_32_bits(paddr));
706
707 write_aux_reg(ARC_REG_SLC_RGN_START, lower_32_bits(paddr));
708
709 /* Make sure "busy" bit reports correct stataus, see STAR 9001165532 */
710 read_aux_reg(ARC_REG_SLC_CTRL);
699 711
700 while (read_aux_reg(ARC_REG_SLC_CTRL) & SLC_CTRL_BUSY); 712 while (read_aux_reg(ARC_REG_SLC_CTRL) & SLC_CTRL_BUSY);
701 713
@@ -1111,6 +1123,13 @@ noinline void __init arc_ioc_setup(void)
1111 __dc_enable(); 1123 __dc_enable();
1112} 1124}
1113 1125
1126/*
1127 * Cache related boot time checks/setups only needed on master CPU:
1128 * - Geometry checks (kernel build and hardware agree: e.g. L1_CACHE_BYTES)
1129 * Assume SMP only, so all cores will have same cache config. A check on
1130 * one core suffices for all
1131 * - IOC setup / dma callbacks only need to be done once
1132 */
1114void __init arc_cache_init_master(void) 1133void __init arc_cache_init_master(void)
1115{ 1134{
1116 unsigned int __maybe_unused cpu = smp_processor_id(); 1135 unsigned int __maybe_unused cpu = smp_processor_id();
@@ -1190,12 +1209,27 @@ void __ref arc_cache_init(void)
1190 1209
1191 printk(arc_cache_mumbojumbo(0, str, sizeof(str))); 1210 printk(arc_cache_mumbojumbo(0, str, sizeof(str)));
1192 1211
1193 /*
1194 * Only master CPU needs to execute rest of function:
1195 * - Assume SMP so all cores will have same cache config so
1196 * any geomtry checks will be same for all
1197 * - IOC setup / dma callbacks only need to be setup once
1198 */
1199 if (!cpu) 1212 if (!cpu)
1200 arc_cache_init_master(); 1213 arc_cache_init_master();
1214
1215 /*
1216 * In PAE regime, TLB and cache maintenance ops take wider addresses
1217 * And even if PAE is not enabled in kernel, the upper 32-bits still need
1218 * to be zeroed to keep the ops sane.
1219 * As an optimization for more common !PAE enabled case, zero them out
1220 * once at init, rather than checking/setting to 0 for every runtime op
1221 */
1222 if (is_isa_arcv2() && pae40_exist_but_not_enab()) {
1223
1224 if (IS_ENABLED(CONFIG_ARC_HAS_ICACHE))
1225 write_aux_reg(ARC_REG_IC_PTAG_HI, 0);
1226
1227 if (IS_ENABLED(CONFIG_ARC_HAS_DCACHE))
1228 write_aux_reg(ARC_REG_DC_PTAG_HI, 0);
1229
1230 if (l2_line_sz) {
1231 write_aux_reg(ARC_REG_SLC_RGN_END1, 0);
1232 write_aux_reg(ARC_REG_SLC_RGN_START1, 0);
1233 }
1234 }
1201} 1235}
diff --git a/arch/arc/mm/dma.c b/arch/arc/mm/dma.c
index 2a07e6ecafbd..e9d93604ad0f 100644
--- a/arch/arc/mm/dma.c
+++ b/arch/arc/mm/dma.c
@@ -117,7 +117,7 @@ static int arc_dma_mmap(struct device *dev, struct vm_area_struct *vma,
117 117
118 vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); 118 vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
119 119
120 if (dma_mmap_from_coherent(dev, vma, cpu_addr, size, &ret)) 120 if (dma_mmap_from_dev_coherent(dev, vma, cpu_addr, size, &ret))
121 return ret; 121 return ret;
122 122
123 if (off < count && user_count <= (count - off)) { 123 if (off < count && user_count <= (count - off)) {
@@ -153,6 +153,19 @@ static void _dma_cache_sync(phys_addr_t paddr, size_t size,
153 } 153 }
154} 154}
155 155
156/*
157 * arc_dma_map_page - map a portion of a page for streaming DMA
158 *
159 * Ensure that any data held in the cache is appropriately discarded
160 * or written back.
161 *
162 * The device owns this memory once this call has completed. The CPU
163 * can regain ownership by calling dma_unmap_page().
164 *
165 * Note: while it takes struct page as arg, caller can "abuse" it to pass
166 * a region larger than PAGE_SIZE, provided it is physically contiguous
167 * and this still works correctly
168 */
156static dma_addr_t arc_dma_map_page(struct device *dev, struct page *page, 169static dma_addr_t arc_dma_map_page(struct device *dev, struct page *page,
157 unsigned long offset, size_t size, enum dma_data_direction dir, 170 unsigned long offset, size_t size, enum dma_data_direction dir,
158 unsigned long attrs) 171 unsigned long attrs)
@@ -165,6 +178,24 @@ static dma_addr_t arc_dma_map_page(struct device *dev, struct page *page,
165 return plat_phys_to_dma(dev, paddr); 178 return plat_phys_to_dma(dev, paddr);
166} 179}
167 180
181/*
182 * arc_dma_unmap_page - unmap a buffer previously mapped through dma_map_page()
183 *
184 * After this call, reads by the CPU to the buffer are guaranteed to see
185 * whatever the device wrote there.
186 *
187 * Note: historically this routine was not implemented for ARC
188 */
189static void arc_dma_unmap_page(struct device *dev, dma_addr_t handle,
190 size_t size, enum dma_data_direction dir,
191 unsigned long attrs)
192{
193 phys_addr_t paddr = plat_dma_to_phys(dev, handle);
194
195 if (!(attrs & DMA_ATTR_SKIP_CPU_SYNC))
196 _dma_cache_sync(paddr, size, dir);
197}
198
168static int arc_dma_map_sg(struct device *dev, struct scatterlist *sg, 199static int arc_dma_map_sg(struct device *dev, struct scatterlist *sg,
169 int nents, enum dma_data_direction dir, unsigned long attrs) 200 int nents, enum dma_data_direction dir, unsigned long attrs)
170{ 201{
@@ -178,6 +209,18 @@ static int arc_dma_map_sg(struct device *dev, struct scatterlist *sg,
178 return nents; 209 return nents;
179} 210}
180 211
212static void arc_dma_unmap_sg(struct device *dev, struct scatterlist *sg,
213 int nents, enum dma_data_direction dir,
214 unsigned long attrs)
215{
216 struct scatterlist *s;
217 int i;
218
219 for_each_sg(sg, s, nents, i)
220 arc_dma_unmap_page(dev, sg_dma_address(s), sg_dma_len(s), dir,
221 attrs);
222}
223
181static void arc_dma_sync_single_for_cpu(struct device *dev, 224static void arc_dma_sync_single_for_cpu(struct device *dev,
182 dma_addr_t dma_handle, size_t size, enum dma_data_direction dir) 225 dma_addr_t dma_handle, size_t size, enum dma_data_direction dir)
183{ 226{
@@ -223,7 +266,9 @@ const struct dma_map_ops arc_dma_ops = {
223 .free = arc_dma_free, 266 .free = arc_dma_free,
224 .mmap = arc_dma_mmap, 267 .mmap = arc_dma_mmap,
225 .map_page = arc_dma_map_page, 268 .map_page = arc_dma_map_page,
269 .unmap_page = arc_dma_unmap_page,
226 .map_sg = arc_dma_map_sg, 270 .map_sg = arc_dma_map_sg,
271 .unmap_sg = arc_dma_unmap_sg,
227 .sync_single_for_device = arc_dma_sync_single_for_device, 272 .sync_single_for_device = arc_dma_sync_single_for_device,
228 .sync_single_for_cpu = arc_dma_sync_single_for_cpu, 273 .sync_single_for_cpu = arc_dma_sync_single_for_cpu,
229 .sync_sg_for_cpu = arc_dma_sync_sg_for_cpu, 274 .sync_sg_for_cpu = arc_dma_sync_sg_for_cpu,
diff --git a/arch/arc/mm/tlb.c b/arch/arc/mm/tlb.c
index d0126fdfe2d8..b181f3ee38aa 100644
--- a/arch/arc/mm/tlb.c
+++ b/arch/arc/mm/tlb.c
@@ -104,6 +104,8 @@
104/* A copy of the ASID from the PID reg is kept in asid_cache */ 104/* A copy of the ASID from the PID reg is kept in asid_cache */
105DEFINE_PER_CPU(unsigned int, asid_cache) = MM_CTXT_FIRST_CYCLE; 105DEFINE_PER_CPU(unsigned int, asid_cache) = MM_CTXT_FIRST_CYCLE;
106 106
107static int __read_mostly pae_exists;
108
107/* 109/*
108 * Utility Routine to erase a J-TLB entry 110 * Utility Routine to erase a J-TLB entry
109 * Caller needs to setup Index Reg (manually or via getIndex) 111 * Caller needs to setup Index Reg (manually or via getIndex)
@@ -784,7 +786,7 @@ void read_decode_mmu_bcr(void)
784 mmu->u_dtlb = mmu4->u_dtlb * 4; 786 mmu->u_dtlb = mmu4->u_dtlb * 4;
785 mmu->u_itlb = mmu4->u_itlb * 4; 787 mmu->u_itlb = mmu4->u_itlb * 4;
786 mmu->sasid = mmu4->sasid; 788 mmu->sasid = mmu4->sasid;
787 mmu->pae = mmu4->pae; 789 pae_exists = mmu->pae = mmu4->pae;
788 } 790 }
789} 791}
790 792
@@ -809,6 +811,11 @@ char *arc_mmu_mumbojumbo(int cpu_id, char *buf, int len)
809 return buf; 811 return buf;
810} 812}
811 813
814int pae40_exist_but_not_enab(void)
815{
816 return pae_exists && !is_pae40_enabled();
817}
818
812void arc_mmu_init(void) 819void arc_mmu_init(void)
813{ 820{
814 char str[256]; 821 char str[256];
@@ -859,6 +866,9 @@ void arc_mmu_init(void)
859 /* swapper_pg_dir is the pgd for the kernel, used by vmalloc */ 866 /* swapper_pg_dir is the pgd for the kernel, used by vmalloc */
860 write_aux_reg(ARC_REG_SCRATCH_DATA0, swapper_pg_dir); 867 write_aux_reg(ARC_REG_SCRATCH_DATA0, swapper_pg_dir);
861#endif 868#endif
869
870 if (pae40_exist_but_not_enab())
871 write_aux_reg(ARC_REG_TLBPD1HI, 0);
862} 872}
863 873
864/* 874/*
diff --git a/arch/arc/plat-sim/Kconfig b/arch/arc/plat-sim/Kconfig
deleted file mode 100644
index ac6af96a82f3..000000000000
--- a/arch/arc/plat-sim/Kconfig
+++ /dev/null
@@ -1,13 +0,0 @@
1#
2# Copyright (C) 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
3#
4# This program is free software; you can redistribute it and/or modify
5# it under the terms of the GNU General Public License version 2 as
6# published by the Free Software Foundation.
7#
8
9menuconfig ARC_PLAT_SIM
10 bool "ARC nSIM based simulation virtual platforms"
11 help
12 Support for nSIM based ARC simulation platforms
13 This includes the standalone nSIM (uart only) vs. System C OSCI VP
diff --git a/arch/arc/plat-sim/platform.c b/arch/arc/plat-sim/platform.c
index aea87389e44b..5cda56b1a2ea 100644
--- a/arch/arc/plat-sim/platform.c
+++ b/arch/arc/plat-sim/platform.c
@@ -20,11 +20,14 @@
20 */ 20 */
21 21
22static const char *simulation_compat[] __initconst = { 22static const char *simulation_compat[] __initconst = {
23#ifdef CONFIG_ISA_ARCOMPACT
23 "snps,nsim", 24 "snps,nsim",
24 "snps,nsim_hs",
25 "snps,nsimosci", 25 "snps,nsimosci",
26#else
27 "snps,nsim_hs",
26 "snps,nsimosci_hs", 28 "snps,nsimosci_hs",
27 "snps,zebu_hs", 29 "snps,zebu_hs",
30#endif
28 NULL, 31 NULL,
29}; 32};
30 33
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index a208bfe367b5..61a0cb15067e 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -380,7 +380,7 @@ config ARCH_EP93XX
380 bool "EP93xx-based" 380 bool "EP93xx-based"
381 select ARCH_HAS_HOLES_MEMORYMODEL 381 select ARCH_HAS_HOLES_MEMORYMODEL
382 select ARM_AMBA 382 select ARM_AMBA
383 select ARM_PATCH_PHYS_VIRT 383 imply ARM_PATCH_PHYS_VIRT
384 select ARM_VIC 384 select ARM_VIC
385 select AUTO_ZRELADDR 385 select AUTO_ZRELADDR
386 select CLKDEV_LOOKUP 386 select CLKDEV_LOOKUP
diff --git a/arch/arm/boot/dts/armada-388-gp.dts b/arch/arm/boot/dts/armada-388-gp.dts
index 895fa6cfa15a..563901e0ec07 100644
--- a/arch/arm/boot/dts/armada-388-gp.dts
+++ b/arch/arm/boot/dts/armada-388-gp.dts
@@ -75,7 +75,7 @@
75 pinctrl-names = "default"; 75 pinctrl-names = "default";
76 pinctrl-0 = <&pca0_pins>; 76 pinctrl-0 = <&pca0_pins>;
77 interrupt-parent = <&gpio0>; 77 interrupt-parent = <&gpio0>;
78 interrupts = <18 IRQ_TYPE_EDGE_FALLING>; 78 interrupts = <18 IRQ_TYPE_LEVEL_LOW>;
79 gpio-controller; 79 gpio-controller;
80 #gpio-cells = <2>; 80 #gpio-cells = <2>;
81 interrupt-controller; 81 interrupt-controller;
@@ -87,7 +87,7 @@
87 compatible = "nxp,pca9555"; 87 compatible = "nxp,pca9555";
88 pinctrl-names = "default"; 88 pinctrl-names = "default";
89 interrupt-parent = <&gpio0>; 89 interrupt-parent = <&gpio0>;
90 interrupts = <18 IRQ_TYPE_EDGE_FALLING>; 90 interrupts = <18 IRQ_TYPE_LEVEL_LOW>;
91 gpio-controller; 91 gpio-controller;
92 #gpio-cells = <2>; 92 #gpio-cells = <2>;
93 interrupt-controller; 93 interrupt-controller;
diff --git a/arch/arm/boot/dts/da850-evm.dts b/arch/arm/boot/dts/da850-evm.dts
index a423e8ebfb37..67e72bc72e80 100644
--- a/arch/arm/boot/dts/da850-evm.dts
+++ b/arch/arm/boot/dts/da850-evm.dts
@@ -301,25 +301,4 @@
301 pinctrl-names = "default"; 301 pinctrl-names = "default";
302 pinctrl-0 = <&vpif_capture_pins>, <&vpif_display_pins>; 302 pinctrl-0 = <&vpif_capture_pins>, <&vpif_display_pins>;
303 status = "okay"; 303 status = "okay";
304
305 /* VPIF capture port */
306 port@0 {
307 vpif_input_ch0: endpoint@0 {
308 reg = <0>;
309 bus-width = <8>;
310 };
311
312 vpif_input_ch1: endpoint@1 {
313 reg = <1>;
314 bus-width = <8>;
315 data-shift = <8>;
316 };
317 };
318
319 /* VPIF display port */
320 port@1 {
321 vpif_output_ch0: endpoint {
322 bus-width = <8>;
323 };
324 };
325}; 304};
diff --git a/arch/arm/boot/dts/da850-lcdk.dts b/arch/arm/boot/dts/da850-lcdk.dts
index b837fec70eec..a0f0916156e6 100644
--- a/arch/arm/boot/dts/da850-lcdk.dts
+++ b/arch/arm/boot/dts/da850-lcdk.dts
@@ -318,11 +318,4 @@
318 pinctrl-names = "default"; 318 pinctrl-names = "default";
319 pinctrl-0 = <&vpif_capture_pins>; 319 pinctrl-0 = <&vpif_capture_pins>;
320 status = "okay"; 320 status = "okay";
321
322 /* VPIF capture port */
323 port {
324 vpif_ch0: endpoint {
325 bus-width = <8>;
326 };
327 };
328}; 321};
diff --git a/arch/arm/boot/dts/dm8168-evm.dts b/arch/arm/boot/dts/dm8168-evm.dts
index 1865976db5f9..c72a2132aa82 100644
--- a/arch/arm/boot/dts/dm8168-evm.dts
+++ b/arch/arm/boot/dts/dm8168-evm.dts
@@ -68,6 +68,34 @@
68 DM816X_IOPAD(0x0d08, MUX_MODE0) /* USB1_DRVVBUS */ 68 DM816X_IOPAD(0x0d08, MUX_MODE0) /* USB1_DRVVBUS */
69 >; 69 >;
70 }; 70 };
71
72 nandflash_pins: nandflash_pins {
73 pinctrl-single,pins = <
74 DM816X_IOPAD(0x0b38, PULL_UP | MUX_MODE0) /* PINCTRL207 GPMC_CS0*/
75 DM816X_IOPAD(0x0b60, PULL_ENA | MUX_MODE0) /* PINCTRL217 GPMC_ADV_ALE */
76 DM816X_IOPAD(0x0b54, PULL_UP | PULL_ENA | MUX_MODE0) /* PINCTRL214 GPMC_OE_RE */
77 DM816X_IOPAD(0x0b58, PULL_ENA | MUX_MODE0) /* PINCTRL215 GPMC_BE0_CLE */
78 DM816X_IOPAD(0x0b50, PULL_UP | MUX_MODE0) /* PINCTRL213 GPMC_WE */
79 DM816X_IOPAD(0x0b6c, MUX_MODE0) /* PINCTRL220 GPMC_WAIT */
80 DM816X_IOPAD(0x0be4, PULL_ENA | MUX_MODE0) /* PINCTRL250 GPMC_CLK */
81 DM816X_IOPAD(0x0ba4, MUX_MODE0) /* PINCTRL234 GPMC_D0 */
82 DM816X_IOPAD(0x0ba8, MUX_MODE0) /* PINCTRL234 GPMC_D1 */
83 DM816X_IOPAD(0x0bac, MUX_MODE0) /* PINCTRL234 GPMC_D2 */
84 DM816X_IOPAD(0x0bb0, MUX_MODE0) /* PINCTRL234 GPMC_D3 */
85 DM816X_IOPAD(0x0bb4, MUX_MODE0) /* PINCTRL234 GPMC_D4 */
86 DM816X_IOPAD(0x0bb8, MUX_MODE0) /* PINCTRL234 GPMC_D5 */
87 DM816X_IOPAD(0x0bbc, MUX_MODE0) /* PINCTRL234 GPMC_D6 */
88 DM816X_IOPAD(0x0bc0, MUX_MODE0) /* PINCTRL234 GPMC_D7 */
89 DM816X_IOPAD(0x0bc4, MUX_MODE0) /* PINCTRL234 GPMC_D8 */
90 DM816X_IOPAD(0x0bc8, MUX_MODE0) /* PINCTRL234 GPMC_D9 */
91 DM816X_IOPAD(0x0bcc, MUX_MODE0) /* PINCTRL234 GPMC_D10 */
92 DM816X_IOPAD(0x0bd0, MUX_MODE0) /* PINCTRL234 GPMC_D11 */
93 DM816X_IOPAD(0x0bd4, MUX_MODE0) /* PINCTRL234 GPMC_D12 */
94 DM816X_IOPAD(0x0bd8, MUX_MODE0) /* PINCTRL234 GPMC_D13 */
95 DM816X_IOPAD(0x0bdc, MUX_MODE0) /* PINCTRL234 GPMC_D14 */
96 DM816X_IOPAD(0x0be0, MUX_MODE0) /* PINCTRL234 GPMC_D15 */
97 >;
98 };
71}; 99};
72 100
73&i2c1 { 101&i2c1 {
@@ -90,6 +118,8 @@
90 118
91&gpmc { 119&gpmc {
92 ranges = <0 0 0x04000000 0x01000000>; /* CS0: 16MB for NAND */ 120 ranges = <0 0 0x04000000 0x01000000>; /* CS0: 16MB for NAND */
121 pinctrl-names = "default";
122 pinctrl-0 = <&nandflash_pins>;
93 123
94 nand@0,0 { 124 nand@0,0 {
95 compatible = "ti,omap2-nand"; 125 compatible = "ti,omap2-nand";
@@ -98,9 +128,11 @@
98 interrupt-parent = <&gpmc>; 128 interrupt-parent = <&gpmc>;
99 interrupts = <0 IRQ_TYPE_NONE>, /* fifoevent */ 129 interrupts = <0 IRQ_TYPE_NONE>, /* fifoevent */
100 <1 IRQ_TYPE_NONE>; /* termcount */ 130 <1 IRQ_TYPE_NONE>; /* termcount */
131 rb-gpios = <&gpmc 0 GPIO_ACTIVE_HIGH>; /* gpmc_wait0 */
101 #address-cells = <1>; 132 #address-cells = <1>;
102 #size-cells = <1>; 133 #size-cells = <1>;
103 ti,nand-ecc-opt = "bch8"; 134 ti,nand-ecc-opt = "bch8";
135 ti,elm-id = <&elm>;
104 nand-bus-width = <16>; 136 nand-bus-width = <16>;
105 gpmc,device-width = <2>; 137 gpmc,device-width = <2>;
106 gpmc,sync-clk-ps = <0>; 138 gpmc,sync-clk-ps = <0>;
@@ -164,7 +196,7 @@
164 vmmc-supply = <&vmmcsd_fixed>; 196 vmmc-supply = <&vmmcsd_fixed>;
165 bus-width = <4>; 197 bus-width = <4>;
166 cd-gpios = <&gpio2 7 GPIO_ACTIVE_LOW>; 198 cd-gpios = <&gpio2 7 GPIO_ACTIVE_LOW>;
167 wp-gpios = <&gpio2 8 GPIO_ACTIVE_LOW>; 199 wp-gpios = <&gpio2 8 GPIO_ACTIVE_HIGH>;
168}; 200};
169 201
170/* At least dm8168-evm rev c won't support multipoint, later may */ 202/* At least dm8168-evm rev c won't support multipoint, later may */
diff --git a/arch/arm/boot/dts/dm816x.dtsi b/arch/arm/boot/dts/dm816x.dtsi
index 59cbf958fcc3..566b2a8c8b96 100644
--- a/arch/arm/boot/dts/dm816x.dtsi
+++ b/arch/arm/boot/dts/dm816x.dtsi
@@ -145,7 +145,7 @@
145 }; 145 };
146 146
147 elm: elm@48080000 { 147 elm: elm@48080000 {
148 compatible = "ti,816-elm"; 148 compatible = "ti,am3352-elm";
149 ti,hwmods = "elm"; 149 ti,hwmods = "elm";
150 reg = <0x48080000 0x2000>; 150 reg = <0x48080000 0x2000>;
151 interrupts = <4>; 151 interrupts = <4>;
diff --git a/arch/arm/boot/dts/dra71-evm.dts b/arch/arm/boot/dts/dra71-evm.dts
index 4d57a55473af..a6298eb56978 100644
--- a/arch/arm/boot/dts/dra71-evm.dts
+++ b/arch/arm/boot/dts/dra71-evm.dts
@@ -190,7 +190,7 @@
190 ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_25_NS>; 190 ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_25_NS>;
191 ti,tx-internal-delay = <DP83867_RGMIIDCTL_250_PS>; 191 ti,tx-internal-delay = <DP83867_RGMIIDCTL_250_PS>;
192 ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_8_B_NIB>; 192 ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_8_B_NIB>;
193 ti,impedance-control = <0x1f>; 193 ti,min-output-impedance;
194 }; 194 };
195 195
196 dp83867_1: ethernet-phy@3 { 196 dp83867_1: ethernet-phy@3 {
@@ -198,7 +198,7 @@
198 ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_25_NS>; 198 ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_25_NS>;
199 ti,tx-internal-delay = <DP83867_RGMIIDCTL_250_PS>; 199 ti,tx-internal-delay = <DP83867_RGMIIDCTL_250_PS>;
200 ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_8_B_NIB>; 200 ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_8_B_NIB>;
201 ti,impedance-control = <0x1f>; 201 ti,min-output-impedance;
202 }; 202 };
203}; 203};
204 204
diff --git a/arch/arm/boot/dts/exynos4.dtsi b/arch/arm/boot/dts/exynos4.dtsi
index 497a9470c888..5739389f5bb8 100644
--- a/arch/arm/boot/dts/exynos4.dtsi
+++ b/arch/arm/boot/dts/exynos4.dtsi
@@ -59,6 +59,9 @@
59 compatible = "samsung,exynos4210-audss-clock"; 59 compatible = "samsung,exynos4210-audss-clock";
60 reg = <0x03810000 0x0C>; 60 reg = <0x03810000 0x0C>;
61 #clock-cells = <1>; 61 #clock-cells = <1>;
62 clocks = <&clock CLK_FIN_PLL>, <&clock CLK_FOUT_EPLL>,
63 <&clock CLK_SCLK_AUDIO0>, <&clock CLK_SCLK_AUDIO0>;
64 clock-names = "pll_ref", "pll_in", "sclk_audio", "sclk_pcm_in";
62 }; 65 };
63 66
64 i2s0: i2s@03830000 { 67 i2s0: i2s@03830000 {
diff --git a/arch/arm/boot/dts/exynos5422-odroidxu3-common.dtsi b/arch/arm/boot/dts/exynos5422-odroidxu3-common.dtsi
index f92f95741207..a183b56283f8 100644
--- a/arch/arm/boot/dts/exynos5422-odroidxu3-common.dtsi
+++ b/arch/arm/boot/dts/exynos5422-odroidxu3-common.dtsi
@@ -266,6 +266,7 @@
266 266
267&hdmicec { 267&hdmicec {
268 status = "okay"; 268 status = "okay";
269 needs-hpd;
269}; 270};
270 271
271&hsi2c_4 { 272&hsi2c_4 {
diff --git a/arch/arm/boot/dts/imx25.dtsi b/arch/arm/boot/dts/imx25.dtsi
index dfcc8e00cf1c..0ade3619f3c3 100644
--- a/arch/arm/boot/dts/imx25.dtsi
+++ b/arch/arm/boot/dts/imx25.dtsi
@@ -297,6 +297,7 @@
297 #address-cells = <1>; 297 #address-cells = <1>;
298 #size-cells = <1>; 298 #size-cells = <1>;
299 status = "disabled"; 299 status = "disabled";
300 ranges;
300 301
301 adc: adc@50030800 { 302 adc: adc@50030800 {
302 compatible = "fsl,imx25-gcq"; 303 compatible = "fsl,imx25-gcq";
diff --git a/arch/arm/boot/dts/imx6qdl-nitrogen6_som2.dtsi b/arch/arm/boot/dts/imx6qdl-nitrogen6_som2.dtsi
index aeaa5a6e4fcf..a24e4f1911ab 100644
--- a/arch/arm/boot/dts/imx6qdl-nitrogen6_som2.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-nitrogen6_som2.dtsi
@@ -507,7 +507,7 @@
507 pinctrl_pcie: pciegrp { 507 pinctrl_pcie: pciegrp {
508 fsl,pins = < 508 fsl,pins = <
509 /* PCIe reset */ 509 /* PCIe reset */
510 MX6QDL_PAD_EIM_BCLK__GPIO6_IO31 0x030b0 510 MX6QDL_PAD_EIM_DA0__GPIO3_IO00 0x030b0
511 MX6QDL_PAD_EIM_DA4__GPIO3_IO04 0x030b0 511 MX6QDL_PAD_EIM_DA4__GPIO3_IO04 0x030b0
512 >; 512 >;
513 }; 513 };
@@ -668,7 +668,7 @@
668&pcie { 668&pcie {
669 pinctrl-names = "default"; 669 pinctrl-names = "default";
670 pinctrl-0 = <&pinctrl_pcie>; 670 pinctrl-0 = <&pinctrl_pcie>;
671 reset-gpio = <&gpio6 31 GPIO_ACTIVE_LOW>; 671 reset-gpio = <&gpio3 0 GPIO_ACTIVE_LOW>;
672 status = "okay"; 672 status = "okay";
673}; 673};
674 674
diff --git a/arch/arm/boot/dts/imx7d-sdb.dts b/arch/arm/boot/dts/imx7d-sdb.dts
index 54c45402286b..0a24d1bf3c39 100644
--- a/arch/arm/boot/dts/imx7d-sdb.dts
+++ b/arch/arm/boot/dts/imx7d-sdb.dts
@@ -557,6 +557,14 @@
557 >; 557 >;
558 }; 558 };
559 559
560 pinctrl_spi4: spi4grp {
561 fsl,pins = <
562 MX7D_PAD_GPIO1_IO09__GPIO1_IO9 0x59
563 MX7D_PAD_GPIO1_IO12__GPIO1_IO12 0x59
564 MX7D_PAD_GPIO1_IO13__GPIO1_IO13 0x59
565 >;
566 };
567
560 pinctrl_tsc2046_pendown: tsc2046_pendown { 568 pinctrl_tsc2046_pendown: tsc2046_pendown {
561 fsl,pins = < 569 fsl,pins = <
562 MX7D_PAD_EPDC_BDR1__GPIO2_IO29 0x59 570 MX7D_PAD_EPDC_BDR1__GPIO2_IO29 0x59
@@ -697,13 +705,5 @@
697 fsl,pins = < 705 fsl,pins = <
698 MX7D_PAD_LPSR_GPIO1_IO01__PWM1_OUT 0x110b0 706 MX7D_PAD_LPSR_GPIO1_IO01__PWM1_OUT 0x110b0
699 >; 707 >;
700
701 pinctrl_spi4: spi4grp {
702 fsl,pins = <
703 MX7D_PAD_GPIO1_IO09__GPIO1_IO9 0x59
704 MX7D_PAD_GPIO1_IO12__GPIO1_IO12 0x59
705 MX7D_PAD_GPIO1_IO13__GPIO1_IO13 0x59
706 >;
707 };
708 }; 708 };
709}; 709};
diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi
index 2484f11761ea..858e1fed762a 100644
--- a/arch/arm/boot/dts/rk3288.dtsi
+++ b/arch/arm/boot/dts/rk3288.dtsi
@@ -1126,8 +1126,8 @@
1126 }; 1126 };
1127 }; 1127 };
1128 1128
1129 gpu: mali@ffa30000 { 1129 gpu: gpu@ffa30000 {
1130 compatible = "rockchip,rk3288-mali", "arm,mali-t760", "arm,mali-midgard"; 1130 compatible = "rockchip,rk3288-mali", "arm,mali-t760";
1131 reg = <0xffa30000 0x10000>; 1131 reg = <0xffa30000 0x10000>;
1132 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>, 1132 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
1133 <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, 1133 <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
diff --git a/arch/arm/boot/dts/sama5d2.dtsi b/arch/arm/boot/dts/sama5d2.dtsi
index cc06da394366..60e69aeacbdb 100644
--- a/arch/arm/boot/dts/sama5d2.dtsi
+++ b/arch/arm/boot/dts/sama5d2.dtsi
@@ -303,7 +303,7 @@
303 #size-cells = <1>; 303 #size-cells = <1>;
304 atmel,smc = <&hsmc>; 304 atmel,smc = <&hsmc>;
305 reg = <0x10000000 0x10000000 305 reg = <0x10000000 0x10000000
306 0x40000000 0x30000000>; 306 0x60000000 0x30000000>;
307 ranges = <0x0 0x0 0x10000000 0x10000000 307 ranges = <0x0 0x0 0x10000000 0x10000000
308 0x1 0x0 0x60000000 0x10000000 308 0x1 0x0 0x60000000 0x10000000
309 0x2 0x0 0x70000000 0x10000000 309 0x2 0x0 0x70000000 0x10000000
@@ -1048,18 +1048,18 @@
1048 }; 1048 };
1049 1049
1050 hsmc: hsmc@f8014000 { 1050 hsmc: hsmc@f8014000 {
1051 compatible = "atmel,sama5d3-smc", "syscon", "simple-mfd"; 1051 compatible = "atmel,sama5d2-smc", "syscon", "simple-mfd";
1052 reg = <0xf8014000 0x1000>; 1052 reg = <0xf8014000 0x1000>;
1053 interrupts = <5 IRQ_TYPE_LEVEL_HIGH 6>; 1053 interrupts = <17 IRQ_TYPE_LEVEL_HIGH 6>;
1054 clocks = <&hsmc_clk>; 1054 clocks = <&hsmc_clk>;
1055 #address-cells = <1>; 1055 #address-cells = <1>;
1056 #size-cells = <1>; 1056 #size-cells = <1>;
1057 ranges; 1057 ranges;
1058 1058
1059 pmecc: ecc-engine@ffffc070 { 1059 pmecc: ecc-engine@f8014070 {
1060 compatible = "atmel,sama5d2-pmecc"; 1060 compatible = "atmel,sama5d2-pmecc";
1061 reg = <0xffffc070 0x490>, 1061 reg = <0xf8014070 0x490>,
1062 <0xffffc500 0x100>; 1062 <0xf8014500 0x100>;
1063 }; 1063 };
1064 }; 1064 };
1065 1065
diff --git a/arch/arm/boot/dts/sun8i-a83t.dtsi b/arch/arm/boot/dts/sun8i-a83t.dtsi
index 8923ba625b76..19a8f4fcfab5 100644
--- a/arch/arm/boot/dts/sun8i-a83t.dtsi
+++ b/arch/arm/boot/dts/sun8i-a83t.dtsi
@@ -44,7 +44,9 @@
44 44
45#include <dt-bindings/interrupt-controller/arm-gic.h> 45#include <dt-bindings/interrupt-controller/arm-gic.h>
46 46
47#include <dt-bindings/clock/sun8i-a83t-ccu.h>
47#include <dt-bindings/clock/sun8i-r-ccu.h> 48#include <dt-bindings/clock/sun8i-r-ccu.h>
49#include <dt-bindings/reset/sun8i-a83t-ccu.h>
48 50
49/ { 51/ {
50 interrupt-parent = <&gic>; 52 interrupt-parent = <&gic>;
@@ -175,8 +177,8 @@
175 compatible = "allwinner,sun8i-a83t-dma"; 177 compatible = "allwinner,sun8i-a83t-dma";
176 reg = <0x01c02000 0x1000>; 178 reg = <0x01c02000 0x1000>;
177 interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>; 179 interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
178 clocks = <&ccu 21>; 180 clocks = <&ccu CLK_BUS_DMA>;
179 resets = <&ccu 7>; 181 resets = <&ccu RST_BUS_DMA>;
180 #dma-cells = <1>; 182 #dma-cells = <1>;
181 }; 183 };
182 184
@@ -195,7 +197,7 @@
195 <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>, 197 <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
196 <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>; 198 <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
197 reg = <0x01c20800 0x400>; 199 reg = <0x01c20800 0x400>;
198 clocks = <&ccu 45>, <&osc24M>, <&osc16Md512>; 200 clocks = <&ccu CLK_BUS_PIO>, <&osc24M>, <&osc16Md512>;
199 clock-names = "apb", "hosc", "losc"; 201 clock-names = "apb", "hosc", "losc";
200 gpio-controller; 202 gpio-controller;
201 interrupt-controller; 203 interrupt-controller;
@@ -247,8 +249,8 @@
247 "allwinner,sun8i-h3-spdif"; 249 "allwinner,sun8i-h3-spdif";
248 reg = <0x01c21000 0x400>; 250 reg = <0x01c21000 0x400>;
249 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>; 251 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
250 clocks = <&ccu 44>, <&ccu 76>; 252 clocks = <&ccu CLK_BUS_SPDIF>, <&ccu CLK_SPDIF>;
251 resets = <&ccu 32>; 253 resets = <&ccu RST_BUS_SPDIF>;
252 clock-names = "apb", "spdif"; 254 clock-names = "apb", "spdif";
253 dmas = <&dma 2>; 255 dmas = <&dma 2>;
254 dma-names = "tx"; 256 dma-names = "tx";
@@ -263,8 +265,8 @@
263 interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>; 265 interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
264 reg-shift = <2>; 266 reg-shift = <2>;
265 reg-io-width = <4>; 267 reg-io-width = <4>;
266 clocks = <&ccu 53>; 268 clocks = <&ccu CLK_BUS_UART0>;
267 resets = <&ccu 40>; 269 resets = <&ccu RST_BUS_UART0>;
268 status = "disabled"; 270 status = "disabled";
269 }; 271 };
270 272
diff --git a/arch/arm/boot/dts/sunxi-h3-h5.dtsi b/arch/arm/boot/dts/sunxi-h3-h5.dtsi
index 6f2162608006..d38282b9e5d4 100644
--- a/arch/arm/boot/dts/sunxi-h3-h5.dtsi
+++ b/arch/arm/boot/dts/sunxi-h3-h5.dtsi
@@ -394,7 +394,7 @@
394 emac: ethernet@1c30000 { 394 emac: ethernet@1c30000 {
395 compatible = "allwinner,sun8i-h3-emac"; 395 compatible = "allwinner,sun8i-h3-emac";
396 syscon = <&syscon>; 396 syscon = <&syscon>;
397 reg = <0x01c30000 0x104>; 397 reg = <0x01c30000 0x10000>;
398 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>; 398 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
399 interrupt-names = "macirq"; 399 interrupt-names = "macirq";
400 resets = <&ccu RST_BUS_EMAC>; 400 resets = <&ccu RST_BUS_EMAC>;
diff --git a/arch/arm/boot/dts/tango4-vantage-1172.dts b/arch/arm/boot/dts/tango4-vantage-1172.dts
index 86d8df98802f..13bcc460bcb2 100644
--- a/arch/arm/boot/dts/tango4-vantage-1172.dts
+++ b/arch/arm/boot/dts/tango4-vantage-1172.dts
@@ -22,7 +22,7 @@
22}; 22};
23 23
24&eth0 { 24&eth0 {
25 phy-connection-type = "rgmii"; 25 phy-connection-type = "rgmii-id";
26 phy-handle = <&eth0_phy>; 26 phy-handle = <&eth0_phy>;
27 #address-cells = <1>; 27 #address-cells = <1>;
28 #size-cells = <0>; 28 #size-cells = <0>;
diff --git a/arch/arm/include/asm/bug.h b/arch/arm/include/asm/bug.h
index 4e6e88a6b2f4..2244a94ed9c9 100644
--- a/arch/arm/include/asm/bug.h
+++ b/arch/arm/include/asm/bug.h
@@ -37,7 +37,7 @@ do { \
37 ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" \ 37 ".pushsection .rodata.str, \"aMS\", %progbits, 1\n" \
38 "2:\t.asciz " #__file "\n" \ 38 "2:\t.asciz " #__file "\n" \
39 ".popsection\n" \ 39 ".popsection\n" \
40 ".pushsection __bug_table,\"a\"\n" \ 40 ".pushsection __bug_table,\"aw\"\n" \
41 ".align 2\n" \ 41 ".align 2\n" \
42 "3:\t.word 1b, 2b\n" \ 42 "3:\t.word 1b, 2b\n" \
43 "\t.hword " #__line ", 0\n" \ 43 "\t.hword " #__line ", 0\n" \
diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h
index d69bebf697e7..74504b154256 100644
--- a/arch/arm/include/asm/cacheflush.h
+++ b/arch/arm/include/asm/cacheflush.h
@@ -116,7 +116,7 @@ struct cpu_cache_fns {
116 void (*dma_unmap_area)(const void *, size_t, int); 116 void (*dma_unmap_area)(const void *, size_t, int);
117 117
118 void (*dma_flush_range)(const void *, const void *); 118 void (*dma_flush_range)(const void *, const void *);
119}; 119} __no_randomize_layout;
120 120
121/* 121/*
122 * Select the calling method 122 * Select the calling method
diff --git a/arch/arm/include/asm/kexec.h b/arch/arm/include/asm/kexec.h
index 1869af6bac5c..25021b798a1e 100644
--- a/arch/arm/include/asm/kexec.h
+++ b/arch/arm/include/asm/kexec.h
@@ -19,6 +19,11 @@
19 19
20#ifndef __ASSEMBLY__ 20#ifndef __ASSEMBLY__
21 21
22#define ARCH_HAS_KIMAGE_ARCH
23struct kimage_arch {
24 u32 kernel_r2;
25};
26
22/** 27/**
23 * crash_setup_regs() - save registers for the panic kernel 28 * crash_setup_regs() - save registers for the panic kernel
24 * @newregs: registers are saved here 29 * @newregs: registers are saved here
diff --git a/arch/arm/include/asm/tlb.h b/arch/arm/include/asm/tlb.h
index 3f2eb76243e3..d5562f9ce600 100644
--- a/arch/arm/include/asm/tlb.h
+++ b/arch/arm/include/asm/tlb.h
@@ -148,7 +148,8 @@ static inline void tlb_flush_mmu(struct mmu_gather *tlb)
148} 148}
149 149
150static inline void 150static inline void
151tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned long start, unsigned long end) 151arch_tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm,
152 unsigned long start, unsigned long end)
152{ 153{
153 tlb->mm = mm; 154 tlb->mm = mm;
154 tlb->fullmm = !(start | (end+1)); 155 tlb->fullmm = !(start | (end+1));
@@ -166,8 +167,14 @@ tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned long start
166} 167}
167 168
168static inline void 169static inline void
169tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end) 170arch_tlb_finish_mmu(struct mmu_gather *tlb,
171 unsigned long start, unsigned long end, bool force)
170{ 172{
173 if (force) {
174 tlb->range_start = start;
175 tlb->range_end = end;
176 }
177
171 tlb_flush_mmu(tlb); 178 tlb_flush_mmu(tlb);
172 179
173 /* keep the page table cache within bounds */ 180 /* keep the page table cache within bounds */
diff --git a/arch/arm/include/asm/ucontext.h b/arch/arm/include/asm/ucontext.h
index 14749aec94bf..921d8274855c 100644
--- a/arch/arm/include/asm/ucontext.h
+++ b/arch/arm/include/asm/ucontext.h
@@ -35,6 +35,12 @@ struct ucontext {
35 * bytes, to prevent unpredictable padding in the signal frame. 35 * bytes, to prevent unpredictable padding in the signal frame.
36 */ 36 */
37 37
38/*
39 * Dummy padding block: if this magic is encountered, the block should
40 * be skipped using the corresponding size field.
41 */
42#define DUMMY_MAGIC 0xb0d9ed01
43
38#ifdef CONFIG_CRUNCH 44#ifdef CONFIG_CRUNCH
39#define CRUNCH_MAGIC 0x5065cf03 45#define CRUNCH_MAGIC 0x5065cf03
40#define CRUNCH_STORAGE_SIZE (CRUNCH_SIZE + 8) 46#define CRUNCH_STORAGE_SIZE (CRUNCH_SIZE + 8)
diff --git a/arch/arm/kernel/machine_kexec.c b/arch/arm/kernel/machine_kexec.c
index 15495887ca14..fe1419eeb932 100644
--- a/arch/arm/kernel/machine_kexec.c
+++ b/arch/arm/kernel/machine_kexec.c
@@ -30,7 +30,6 @@ extern unsigned long kexec_boot_atags;
30 30
31static atomic_t waiting_for_crash_ipi; 31static atomic_t waiting_for_crash_ipi;
32 32
33static unsigned long dt_mem;
34/* 33/*
35 * Provide a dummy crash_notes definition while crash dump arrives to arm. 34 * Provide a dummy crash_notes definition while crash dump arrives to arm.
36 * This prevents breakage of crash_notes attribute in kernel/ksysfs.c. 35 * This prevents breakage of crash_notes attribute in kernel/ksysfs.c.
@@ -42,6 +41,9 @@ int machine_kexec_prepare(struct kimage *image)
42 __be32 header; 41 __be32 header;
43 int i, err; 42 int i, err;
44 43
44 image->arch.kernel_r2 = image->start - KEXEC_ARM_ZIMAGE_OFFSET
45 + KEXEC_ARM_ATAGS_OFFSET;
46
45 /* 47 /*
46 * Validate that if the current HW supports SMP, then the SW supports 48 * Validate that if the current HW supports SMP, then the SW supports
47 * and implements CPU hotplug for the current HW. If not, we won't be 49 * and implements CPU hotplug for the current HW. If not, we won't be
@@ -66,8 +68,8 @@ int machine_kexec_prepare(struct kimage *image)
66 if (err) 68 if (err)
67 return err; 69 return err;
68 70
69 if (be32_to_cpu(header) == OF_DT_HEADER) 71 if (header == cpu_to_be32(OF_DT_HEADER))
70 dt_mem = current_segment->mem; 72 image->arch.kernel_r2 = current_segment->mem;
71 } 73 }
72 return 0; 74 return 0;
73} 75}
@@ -165,8 +167,7 @@ void machine_kexec(struct kimage *image)
165 kexec_start_address = image->start; 167 kexec_start_address = image->start;
166 kexec_indirection_page = page_list; 168 kexec_indirection_page = page_list;
167 kexec_mach_type = machine_arch_type; 169 kexec_mach_type = machine_arch_type;
168 kexec_boot_atags = dt_mem ?: image->start - KEXEC_ARM_ZIMAGE_OFFSET 170 kexec_boot_atags = image->arch.kernel_r2;
169 + KEXEC_ARM_ATAGS_OFFSET;
170 171
171 /* copy our kernel relocation code to the control code page */ 172 /* copy our kernel relocation code to the control code page */
172 reboot_entry = fncpy(reboot_code_buffer, 173 reboot_entry = fncpy(reboot_code_buffer,
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
index 4e80bf7420d4..8e9a3e40d949 100644
--- a/arch/arm/kernel/setup.c
+++ b/arch/arm/kernel/setup.c
@@ -987,6 +987,9 @@ static void __init reserve_crashkernel(void)
987 987
988 if (crash_base <= 0) { 988 if (crash_base <= 0) {
989 unsigned long long crash_max = idmap_to_phys((u32)~0); 989 unsigned long long crash_max = idmap_to_phys((u32)~0);
990 unsigned long long lowmem_max = __pa(high_memory - 1) + 1;
991 if (crash_max > lowmem_max)
992 crash_max = lowmem_max;
990 crash_base = memblock_find_in_range(CRASH_ALIGN, crash_max, 993 crash_base = memblock_find_in_range(CRASH_ALIGN, crash_max,
991 crash_size, CRASH_ALIGN); 994 crash_size, CRASH_ALIGN);
992 if (!crash_base) { 995 if (!crash_base) {
diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c
index 7b8f2141427b..5814298ef0b7 100644
--- a/arch/arm/kernel/signal.c
+++ b/arch/arm/kernel/signal.c
@@ -40,8 +40,10 @@ static int preserve_crunch_context(struct crunch_sigframe __user *frame)
40 return __copy_to_user(frame, kframe, sizeof(*frame)); 40 return __copy_to_user(frame, kframe, sizeof(*frame));
41} 41}
42 42
43static int restore_crunch_context(struct crunch_sigframe __user *frame) 43static int restore_crunch_context(char __user **auxp)
44{ 44{
45 struct crunch_sigframe __user *frame =
46 (struct crunch_sigframe __user *)*auxp;
45 char kbuf[sizeof(*frame) + 8]; 47 char kbuf[sizeof(*frame) + 8];
46 struct crunch_sigframe *kframe; 48 struct crunch_sigframe *kframe;
47 49
@@ -52,6 +54,7 @@ static int restore_crunch_context(struct crunch_sigframe __user *frame)
52 if (kframe->magic != CRUNCH_MAGIC || 54 if (kframe->magic != CRUNCH_MAGIC ||
53 kframe->size != CRUNCH_STORAGE_SIZE) 55 kframe->size != CRUNCH_STORAGE_SIZE)
54 return -1; 56 return -1;
57 *auxp += CRUNCH_STORAGE_SIZE;
55 crunch_task_restore(current_thread_info(), &kframe->storage); 58 crunch_task_restore(current_thread_info(), &kframe->storage);
56 return 0; 59 return 0;
57} 60}
@@ -59,21 +62,39 @@ static int restore_crunch_context(struct crunch_sigframe __user *frame)
59 62
60#ifdef CONFIG_IWMMXT 63#ifdef CONFIG_IWMMXT
61 64
62static int preserve_iwmmxt_context(struct iwmmxt_sigframe *frame) 65static int preserve_iwmmxt_context(struct iwmmxt_sigframe __user *frame)
63{ 66{
64 char kbuf[sizeof(*frame) + 8]; 67 char kbuf[sizeof(*frame) + 8];
65 struct iwmmxt_sigframe *kframe; 68 struct iwmmxt_sigframe *kframe;
69 int err = 0;
66 70
67 /* the iWMMXt context must be 64 bit aligned */ 71 /* the iWMMXt context must be 64 bit aligned */
68 kframe = (struct iwmmxt_sigframe *)((unsigned long)(kbuf + 8) & ~7); 72 kframe = (struct iwmmxt_sigframe *)((unsigned long)(kbuf + 8) & ~7);
69 kframe->magic = IWMMXT_MAGIC; 73
70 kframe->size = IWMMXT_STORAGE_SIZE; 74 if (test_thread_flag(TIF_USING_IWMMXT)) {
71 iwmmxt_task_copy(current_thread_info(), &kframe->storage); 75 kframe->magic = IWMMXT_MAGIC;
72 return __copy_to_user(frame, kframe, sizeof(*frame)); 76 kframe->size = IWMMXT_STORAGE_SIZE;
77 iwmmxt_task_copy(current_thread_info(), &kframe->storage);
78
79 err = __copy_to_user(frame, kframe, sizeof(*frame));
80 } else {
81 /*
82 * For bug-compatibility with older kernels, some space
83 * has to be reserved for iWMMXt even if it's not used.
84 * Set the magic and size appropriately so that properly
85 * written userspace can skip it reliably:
86 */
87 __put_user_error(DUMMY_MAGIC, &frame->magic, err);
88 __put_user_error(IWMMXT_STORAGE_SIZE, &frame->size, err);
89 }
90
91 return err;
73} 92}
74 93
75static int restore_iwmmxt_context(struct iwmmxt_sigframe *frame) 94static int restore_iwmmxt_context(char __user **auxp)
76{ 95{
96 struct iwmmxt_sigframe __user *frame =
97 (struct iwmmxt_sigframe __user *)*auxp;
77 char kbuf[sizeof(*frame) + 8]; 98 char kbuf[sizeof(*frame) + 8];
78 struct iwmmxt_sigframe *kframe; 99 struct iwmmxt_sigframe *kframe;
79 100
@@ -81,10 +102,28 @@ static int restore_iwmmxt_context(struct iwmmxt_sigframe *frame)
81 kframe = (struct iwmmxt_sigframe *)((unsigned long)(kbuf + 8) & ~7); 102 kframe = (struct iwmmxt_sigframe *)((unsigned long)(kbuf + 8) & ~7);
82 if (__copy_from_user(kframe, frame, sizeof(*frame))) 103 if (__copy_from_user(kframe, frame, sizeof(*frame)))
83 return -1; 104 return -1;
84 if (kframe->magic != IWMMXT_MAGIC || 105
85 kframe->size != IWMMXT_STORAGE_SIZE) 106 /*
107 * For non-iWMMXt threads: a single iwmmxt_sigframe-sized dummy
108 * block is discarded for compatibility with setup_sigframe() if
109 * present, but we don't mandate its presence. If some other
110 * magic is here, it's not for us:
111 */
112 if (!test_thread_flag(TIF_USING_IWMMXT) &&
113 kframe->magic != DUMMY_MAGIC)
114 return 0;
115
116 if (kframe->size != IWMMXT_STORAGE_SIZE)
86 return -1; 117 return -1;
87 iwmmxt_task_restore(current_thread_info(), &kframe->storage); 118
119 if (test_thread_flag(TIF_USING_IWMMXT)) {
120 if (kframe->magic != IWMMXT_MAGIC)
121 return -1;
122
123 iwmmxt_task_restore(current_thread_info(), &kframe->storage);
124 }
125
126 *auxp += IWMMXT_STORAGE_SIZE;
88 return 0; 127 return 0;
89} 128}
90 129
@@ -107,8 +146,10 @@ static int preserve_vfp_context(struct vfp_sigframe __user *frame)
107 return vfp_preserve_user_clear_hwstate(&frame->ufp, &frame->ufp_exc); 146 return vfp_preserve_user_clear_hwstate(&frame->ufp, &frame->ufp_exc);
108} 147}
109 148
110static int restore_vfp_context(struct vfp_sigframe __user *frame) 149static int restore_vfp_context(char __user **auxp)
111{ 150{
151 struct vfp_sigframe __user *frame =
152 (struct vfp_sigframe __user *)*auxp;
112 unsigned long magic; 153 unsigned long magic;
113 unsigned long size; 154 unsigned long size;
114 int err = 0; 155 int err = 0;
@@ -121,6 +162,7 @@ static int restore_vfp_context(struct vfp_sigframe __user *frame)
121 if (magic != VFP_MAGIC || size != VFP_STORAGE_SIZE) 162 if (magic != VFP_MAGIC || size != VFP_STORAGE_SIZE)
122 return -EINVAL; 163 return -EINVAL;
123 164
165 *auxp += size;
124 return vfp_restore_user_hwstate(&frame->ufp, &frame->ufp_exc); 166 return vfp_restore_user_hwstate(&frame->ufp, &frame->ufp_exc);
125} 167}
126 168
@@ -141,7 +183,7 @@ struct rt_sigframe {
141 183
142static int restore_sigframe(struct pt_regs *regs, struct sigframe __user *sf) 184static int restore_sigframe(struct pt_regs *regs, struct sigframe __user *sf)
143{ 185{
144 struct aux_sigframe __user *aux; 186 char __user *aux;
145 sigset_t set; 187 sigset_t set;
146 int err; 188 int err;
147 189
@@ -169,18 +211,18 @@ static int restore_sigframe(struct pt_regs *regs, struct sigframe __user *sf)
169 211
170 err |= !valid_user_regs(regs); 212 err |= !valid_user_regs(regs);
171 213
172 aux = (struct aux_sigframe __user *) sf->uc.uc_regspace; 214 aux = (char __user *) sf->uc.uc_regspace;
173#ifdef CONFIG_CRUNCH 215#ifdef CONFIG_CRUNCH
174 if (err == 0) 216 if (err == 0)
175 err |= restore_crunch_context(&aux->crunch); 217 err |= restore_crunch_context(&aux);
176#endif 218#endif
177#ifdef CONFIG_IWMMXT 219#ifdef CONFIG_IWMMXT
178 if (err == 0 && test_thread_flag(TIF_USING_IWMMXT)) 220 if (err == 0)
179 err |= restore_iwmmxt_context(&aux->iwmmxt); 221 err |= restore_iwmmxt_context(&aux);
180#endif 222#endif
181#ifdef CONFIG_VFP 223#ifdef CONFIG_VFP
182 if (err == 0) 224 if (err == 0)
183 err |= restore_vfp_context(&aux->vfp); 225 err |= restore_vfp_context(&aux);
184#endif 226#endif
185 227
186 return err; 228 return err;
@@ -286,7 +328,7 @@ setup_sigframe(struct sigframe __user *sf, struct pt_regs *regs, sigset_t *set)
286 err |= preserve_crunch_context(&aux->crunch); 328 err |= preserve_crunch_context(&aux->crunch);
287#endif 329#endif
288#ifdef CONFIG_IWMMXT 330#ifdef CONFIG_IWMMXT
289 if (err == 0 && test_thread_flag(TIF_USING_IWMMXT)) 331 if (err == 0)
290 err |= preserve_iwmmxt_context(&aux->iwmmxt); 332 err |= preserve_iwmmxt_context(&aux->iwmmxt);
291#endif 333#endif
292#ifdef CONFIG_VFP 334#ifdef CONFIG_VFP
diff --git a/arch/arm/mach-at91/Kconfig b/arch/arm/mach-at91/Kconfig
index d735e5fc4772..195da38cb9a2 100644
--- a/arch/arm/mach-at91/Kconfig
+++ b/arch/arm/mach-at91/Kconfig
@@ -1,7 +1,7 @@
1menuconfig ARCH_AT91 1menuconfig ARCH_AT91
2 bool "Atmel SoCs" 2 bool "Atmel SoCs"
3 depends on ARCH_MULTI_V4T || ARCH_MULTI_V5 || ARCH_MULTI_V7 || ARM_SINGLE_ARMV7M 3 depends on ARCH_MULTI_V4T || ARCH_MULTI_V5 || ARCH_MULTI_V7 || ARM_SINGLE_ARMV7M
4 select ARM_CPU_SUSPEND if PM 4 select ARM_CPU_SUSPEND if PM && ARCH_MULTI_V7
5 select COMMON_CLK_AT91 5 select COMMON_CLK_AT91
6 select GPIOLIB 6 select GPIOLIB
7 select PINCTRL 7 select PINCTRL
diff --git a/arch/arm/mach-at91/pm.c b/arch/arm/mach-at91/pm.c
index 667fddac3856..5036f996e694 100644
--- a/arch/arm/mach-at91/pm.c
+++ b/arch/arm/mach-at91/pm.c
@@ -608,6 +608,9 @@ static void __init at91_pm_init(void (*pm_idle)(void))
608 608
609void __init at91rm9200_pm_init(void) 609void __init at91rm9200_pm_init(void)
610{ 610{
611 if (!IS_ENABLED(CONFIG_SOC_AT91RM9200))
612 return;
613
611 at91_dt_ramc(); 614 at91_dt_ramc();
612 615
613 /* 616 /*
@@ -620,18 +623,27 @@ void __init at91rm9200_pm_init(void)
620 623
621void __init at91sam9_pm_init(void) 624void __init at91sam9_pm_init(void)
622{ 625{
626 if (!IS_ENABLED(CONFIG_SOC_AT91SAM9))
627 return;
628
623 at91_dt_ramc(); 629 at91_dt_ramc();
624 at91_pm_init(at91sam9_idle); 630 at91_pm_init(at91sam9_idle);
625} 631}
626 632
627void __init sama5_pm_init(void) 633void __init sama5_pm_init(void)
628{ 634{
635 if (!IS_ENABLED(CONFIG_SOC_SAMA5))
636 return;
637
629 at91_dt_ramc(); 638 at91_dt_ramc();
630 at91_pm_init(NULL); 639 at91_pm_init(NULL);
631} 640}
632 641
633void __init sama5d2_pm_init(void) 642void __init sama5d2_pm_init(void)
634{ 643{
644 if (!IS_ENABLED(CONFIG_SOC_SAMA5D2))
645 return;
646
635 at91_pm_backup_init(); 647 at91_pm_backup_init();
636 sama5_pm_init(); 648 sama5_pm_init();
637} 649}
diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c
index b5625d009288..e568c8c6f69c 100644
--- a/arch/arm/mach-davinci/board-da850-evm.c
+++ b/arch/arm/mach-davinci/board-da850-evm.c
@@ -1166,7 +1166,7 @@ static struct tvp514x_platform_data tvp5146_pdata = {
1166 1166
1167#define TVP514X_STD_ALL (V4L2_STD_NTSC | V4L2_STD_PAL) 1167#define TVP514X_STD_ALL (V4L2_STD_NTSC | V4L2_STD_PAL)
1168 1168
1169static const struct vpif_input da850_ch0_inputs[] = { 1169static struct vpif_input da850_ch0_inputs[] = {
1170 { 1170 {
1171 .input = { 1171 .input = {
1172 .index = 0, 1172 .index = 0,
@@ -1181,7 +1181,7 @@ static const struct vpif_input da850_ch0_inputs[] = {
1181 }, 1181 },
1182}; 1182};
1183 1183
1184static const struct vpif_input da850_ch1_inputs[] = { 1184static struct vpif_input da850_ch1_inputs[] = {
1185 { 1185 {
1186 .input = { 1186 .input = {
1187 .index = 0, 1187 .index = 0,
diff --git a/arch/arm/mach-davinci/clock.c b/arch/arm/mach-davinci/clock.c
index f5dce9b4e617..f77a4f766050 100644
--- a/arch/arm/mach-davinci/clock.c
+++ b/arch/arm/mach-davinci/clock.c
@@ -218,6 +218,15 @@ int clk_set_parent(struct clk *clk, struct clk *parent)
218} 218}
219EXPORT_SYMBOL(clk_set_parent); 219EXPORT_SYMBOL(clk_set_parent);
220 220
221struct clk *clk_get_parent(struct clk *clk)
222{
223 if (!clk)
224 return NULL;
225
226 return clk->parent;
227}
228EXPORT_SYMBOL(clk_get_parent);
229
221int clk_register(struct clk *clk) 230int clk_register(struct clk *clk)
222{ 231{
223 if (clk == NULL || IS_ERR(clk)) 232 if (clk == NULL || IS_ERR(clk))
diff --git a/arch/arm/mach-ep93xx/clock.c b/arch/arm/mach-ep93xx/clock.c
index 39ef3b613912..beec5f16443a 100644
--- a/arch/arm/mach-ep93xx/clock.c
+++ b/arch/arm/mach-ep93xx/clock.c
@@ -475,6 +475,26 @@ int clk_set_rate(struct clk *clk, unsigned long rate)
475} 475}
476EXPORT_SYMBOL(clk_set_rate); 476EXPORT_SYMBOL(clk_set_rate);
477 477
478long clk_round_rate(struct clk *clk, unsigned long rate)
479{
480 WARN_ON(clk);
481 return 0;
482}
483EXPORT_SYMBOL(clk_round_rate);
484
485int clk_set_parent(struct clk *clk, struct clk *parent)
486{
487 WARN_ON(clk);
488 return 0;
489}
490EXPORT_SYMBOL(clk_set_parent);
491
492struct clk *clk_get_parent(struct clk *clk)
493{
494 return clk->parent;
495}
496EXPORT_SYMBOL(clk_get_parent);
497
478 498
479static char fclk_divisors[] = { 1, 2, 4, 8, 16, 1, 1, 1 }; 499static char fclk_divisors[] = { 1, 2, 4, 8, 16, 1, 1, 1 };
480static char hclk_divisors[] = { 1, 2, 4, 5, 6, 8, 16, 32 }; 500static char hclk_divisors[] = { 1, 2, 4, 5, 6, 8, 16, 32 };
diff --git a/arch/arm/mach-ixp4xx/include/mach/io.h b/arch/arm/mach-ixp4xx/include/mach/io.h
index 7a0c13bf4269..844e8ac593e2 100644
--- a/arch/arm/mach-ixp4xx/include/mach/io.h
+++ b/arch/arm/mach-ixp4xx/include/mach/io.h
@@ -95,8 +95,10 @@ static inline void __indirect_writeb(u8 value, volatile void __iomem *p)
95} 95}
96 96
97static inline void __indirect_writesb(volatile void __iomem *bus_addr, 97static inline void __indirect_writesb(volatile void __iomem *bus_addr,
98 const u8 *vaddr, int count) 98 const void *p, int count)
99{ 99{
100 const u8 *vaddr = p;
101
100 while (count--) 102 while (count--)
101 writeb(*vaddr++, bus_addr); 103 writeb(*vaddr++, bus_addr);
102} 104}
@@ -118,8 +120,10 @@ static inline void __indirect_writew(u16 value, volatile void __iomem *p)
118} 120}
119 121
120static inline void __indirect_writesw(volatile void __iomem *bus_addr, 122static inline void __indirect_writesw(volatile void __iomem *bus_addr,
121 const u16 *vaddr, int count) 123 const void *p, int count)
122{ 124{
125 const u16 *vaddr = p;
126
123 while (count--) 127 while (count--)
124 writew(*vaddr++, bus_addr); 128 writew(*vaddr++, bus_addr);
125} 129}
@@ -137,8 +141,9 @@ static inline void __indirect_writel(u32 value, volatile void __iomem *p)
137} 141}
138 142
139static inline void __indirect_writesl(volatile void __iomem *bus_addr, 143static inline void __indirect_writesl(volatile void __iomem *bus_addr,
140 const u32 *vaddr, int count) 144 const void *p, int count)
141{ 145{
146 const u32 *vaddr = p;
142 while (count--) 147 while (count--)
143 writel(*vaddr++, bus_addr); 148 writel(*vaddr++, bus_addr);
144} 149}
@@ -160,8 +165,10 @@ static inline u8 __indirect_readb(const volatile void __iomem *p)
160} 165}
161 166
162static inline void __indirect_readsb(const volatile void __iomem *bus_addr, 167static inline void __indirect_readsb(const volatile void __iomem *bus_addr,
163 u8 *vaddr, u32 count) 168 void *p, u32 count)
164{ 169{
170 u8 *vaddr = p;
171
165 while (count--) 172 while (count--)
166 *vaddr++ = readb(bus_addr); 173 *vaddr++ = readb(bus_addr);
167} 174}
@@ -183,8 +190,10 @@ static inline u16 __indirect_readw(const volatile void __iomem *p)
183} 190}
184 191
185static inline void __indirect_readsw(const volatile void __iomem *bus_addr, 192static inline void __indirect_readsw(const volatile void __iomem *bus_addr,
186 u16 *vaddr, u32 count) 193 void *p, u32 count)
187{ 194{
195 u16 *vaddr = p;
196
188 while (count--) 197 while (count--)
189 *vaddr++ = readw(bus_addr); 198 *vaddr++ = readw(bus_addr);
190} 199}
@@ -204,8 +213,10 @@ static inline u32 __indirect_readl(const volatile void __iomem *p)
204} 213}
205 214
206static inline void __indirect_readsl(const volatile void __iomem *bus_addr, 215static inline void __indirect_readsl(const volatile void __iomem *bus_addr,
207 u32 *vaddr, u32 count) 216 void *p, u32 count)
208{ 217{
218 u32 *vaddr = p;
219
209 while (count--) 220 while (count--)
210 *vaddr++ = readl(bus_addr); 221 *vaddr++ = readl(bus_addr);
211} 222}
@@ -523,8 +534,15 @@ static inline void iowrite32_rep(void __iomem *addr, const void *vaddr,
523#endif 534#endif
524} 535}
525 536
526#define ioport_map(port, nr) ((void __iomem*)(port + PIO_OFFSET)) 537#define ioport_map(port, nr) ioport_map(port, nr)
527#define ioport_unmap(addr) 538static inline void __iomem *ioport_map(unsigned long port, unsigned int nr)
539{
540 return ((void __iomem*)((port) + PIO_OFFSET));
541}
542#define ioport_unmap(addr) ioport_unmap(addr)
543static inline void ioport_unmap(void __iomem *addr)
544{
545}
528#endif /* CONFIG_PCI */ 546#endif /* CONFIG_PCI */
529 547
530#endif /* __ASM_ARM_ARCH_IO_H */ 548#endif /* __ASM_ARM_ARCH_IO_H */
diff --git a/arch/arm/mach-mmp/devices.c b/arch/arm/mach-mmp/devices.c
index 3330ac7cfbef..671c7a09ab3d 100644
--- a/arch/arm/mach-mmp/devices.c
+++ b/arch/arm/mach-mmp/devices.c
@@ -238,7 +238,7 @@ void pxa_usb_phy_deinit(void __iomem *phy_reg)
238#endif 238#endif
239 239
240#if IS_ENABLED(CONFIG_USB_SUPPORT) 240#if IS_ENABLED(CONFIG_USB_SUPPORT)
241static u64 usb_dma_mask = ~(u32)0; 241static u64 __maybe_unused usb_dma_mask = ~(u32)0;
242 242
243#if IS_ENABLED(CONFIG_USB_MV_UDC) 243#if IS_ENABLED(CONFIG_USB_MV_UDC)
244struct resource pxa168_u2o_resources[] = { 244struct resource pxa168_u2o_resources[] = {
diff --git a/arch/arm/mach-mvebu/platsmp.c b/arch/arm/mach-mvebu/platsmp.c
index e62273aacb43..4ffbbd217e82 100644
--- a/arch/arm/mach-mvebu/platsmp.c
+++ b/arch/arm/mach-mvebu/platsmp.c
@@ -211,7 +211,7 @@ static int mv98dx3236_resume_set_cpu_boot_addr(int hw_cpu, void *boot_addr)
211 return PTR_ERR(base); 211 return PTR_ERR(base);
212 212
213 writel(0, base + MV98DX3236_CPU_RESUME_CTRL_REG); 213 writel(0, base + MV98DX3236_CPU_RESUME_CTRL_REG);
214 writel(virt_to_phys(boot_addr), base + MV98DX3236_CPU_RESUME_ADDR_REG); 214 writel(__pa_symbol(boot_addr), base + MV98DX3236_CPU_RESUME_ADDR_REG);
215 215
216 iounmap(base); 216 iounmap(base);
217 217
diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c
index 6613a6ff5dbc..6cbc69c92913 100644
--- a/arch/arm/mach-omap1/board-ams-delta.c
+++ b/arch/arm/mach-omap1/board-ams-delta.c
@@ -510,6 +510,7 @@ static void __init ams_delta_init(void)
510static void modem_pm(struct uart_port *port, unsigned int state, unsigned old) 510static void modem_pm(struct uart_port *port, unsigned int state, unsigned old)
511{ 511{
512 struct modem_private_data *priv = port->private_data; 512 struct modem_private_data *priv = port->private_data;
513 int ret;
513 514
514 if (IS_ERR(priv->regulator)) 515 if (IS_ERR(priv->regulator))
515 return; 516 return;
@@ -518,9 +519,16 @@ static void modem_pm(struct uart_port *port, unsigned int state, unsigned old)
518 return; 519 return;
519 520
520 if (state == 0) 521 if (state == 0)
521 regulator_enable(priv->regulator); 522 ret = regulator_enable(priv->regulator);
522 else if (old == 0) 523 else if (old == 0)
523 regulator_disable(priv->regulator); 524 ret = regulator_disable(priv->regulator);
525 else
526 ret = 0;
527
528 if (ret)
529 dev_warn(port->dev,
530 "ams_delta modem_pm: failed to %sable regulator: %d\n",
531 state ? "dis" : "en", ret);
524} 532}
525 533
526static struct plat_serial8250_port ams_delta_modem_ports[] = { 534static struct plat_serial8250_port ams_delta_modem_ports[] = {
diff --git a/arch/arm/mach-omap1/board-osk.c b/arch/arm/mach-omap1/board-osk.c
index 4dfb99504810..95ac1929aede 100644
--- a/arch/arm/mach-omap1/board-osk.c
+++ b/arch/arm/mach-omap1/board-osk.c
@@ -441,13 +441,11 @@ static struct spi_board_info __initdata mistral_boardinfo[] = { {
441 .chip_select = 0, 441 .chip_select = 0,
442} }; 442} };
443 443
444#ifdef CONFIG_PM
445static irqreturn_t 444static irqreturn_t
446osk_mistral_wake_interrupt(int irq, void *ignored) 445osk_mistral_wake_interrupt(int irq, void *ignored)
447{ 446{
448 return IRQ_HANDLED; 447 return IRQ_HANDLED;
449} 448}
450#endif
451 449
452static void __init osk_mistral_init(void) 450static void __init osk_mistral_init(void)
453{ 451{
@@ -515,7 +513,6 @@ static void __init osk_mistral_init(void)
515 513
516 gpio_direction_input(OMAP_MPUIO(2)); 514 gpio_direction_input(OMAP_MPUIO(2));
517 irq_set_irq_type(irq, IRQ_TYPE_EDGE_RISING); 515 irq_set_irq_type(irq, IRQ_TYPE_EDGE_RISING);
518#ifdef CONFIG_PM
519 /* share the IRQ in case someone wants to use the 516 /* share the IRQ in case someone wants to use the
520 * button for more than wakeup from system sleep. 517 * button for more than wakeup from system sleep.
521 */ 518 */
@@ -529,7 +526,6 @@ static void __init osk_mistral_init(void)
529 ret); 526 ret);
530 } else 527 } else
531 enable_irq_wake(irq); 528 enable_irq_wake(irq);
532#endif
533 } else 529 } else
534 printk(KERN_ERR "OSK+Mistral: wakeup button is awol\n"); 530 printk(KERN_ERR "OSK+Mistral: wakeup button is awol\n");
535 531
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
index dc9e34e670a2..b1e661bb5521 100644
--- a/arch/arm/mach-omap2/board-generic.c
+++ b/arch/arm/mach-omap2/board-generic.c
@@ -28,7 +28,7 @@ static const struct of_device_id omap_dt_match_table[] __initconst = {
28 { } 28 { }
29}; 29};
30 30
31static void __init omap_generic_init(void) 31static void __init __maybe_unused omap_generic_init(void)
32{ 32{
33 pdata_quirks_init(omap_dt_match_table); 33 pdata_quirks_init(omap_dt_match_table);
34 34
diff --git a/arch/arm/mach-omap2/hsmmc.c b/arch/arm/mach-omap2/hsmmc.c
index be517b048762..5b614388d72f 100644
--- a/arch/arm/mach-omap2/hsmmc.c
+++ b/arch/arm/mach-omap2/hsmmc.c
@@ -32,120 +32,6 @@ static u16 control_devconf1_offset;
32 32
33#define HSMMC_NAME_LEN 9 33#define HSMMC_NAME_LEN 9
34 34
35static void omap_hsmmc1_before_set_reg(struct device *dev,
36 int power_on, int vdd)
37{
38 u32 reg, prog_io;
39 struct omap_hsmmc_platform_data *mmc = dev->platform_data;
40
41 if (mmc->remux)
42 mmc->remux(dev, power_on);
43
44 /*
45 * Assume we power both OMAP VMMC1 (for CMD, CLK, DAT0..3) and the
46 * card with Vcc regulator (from twl4030 or whatever). OMAP has both
47 * 1.8V and 3.0V modes, controlled by the PBIAS register.
48 *
49 * In 8-bit modes, OMAP VMMC1A (for DAT4..7) needs a supply, which
50 * is most naturally TWL VSIM; those pins also use PBIAS.
51 *
52 * FIXME handle VMMC1A as needed ...
53 */
54 if (power_on) {
55 if (cpu_is_omap2430()) {
56 reg = omap_ctrl_readl(OMAP243X_CONTROL_DEVCONF1);
57 if ((1 << vdd) >= MMC_VDD_30_31)
58 reg |= OMAP243X_MMC1_ACTIVE_OVERWRITE;
59 else
60 reg &= ~OMAP243X_MMC1_ACTIVE_OVERWRITE;
61 omap_ctrl_writel(reg, OMAP243X_CONTROL_DEVCONF1);
62 }
63
64 if (mmc->internal_clock) {
65 reg = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0);
66 reg |= OMAP2_MMCSDIO1ADPCLKISEL;
67 omap_ctrl_writel(reg, OMAP2_CONTROL_DEVCONF0);
68 }
69
70 reg = omap_ctrl_readl(control_pbias_offset);
71 if (cpu_is_omap3630()) {
72 /* Set MMC I/O to 52MHz */
73 prog_io = omap_ctrl_readl(OMAP343X_CONTROL_PROG_IO1);
74 prog_io |= OMAP3630_PRG_SDMMC1_SPEEDCTRL;
75 omap_ctrl_writel(prog_io, OMAP343X_CONTROL_PROG_IO1);
76 } else {
77 reg |= OMAP2_PBIASSPEEDCTRL0;
78 }
79 reg &= ~OMAP2_PBIASLITEPWRDNZ0;
80 omap_ctrl_writel(reg, control_pbias_offset);
81 } else {
82 reg = omap_ctrl_readl(control_pbias_offset);
83 reg &= ~OMAP2_PBIASLITEPWRDNZ0;
84 omap_ctrl_writel(reg, control_pbias_offset);
85 }
86}
87
88static void omap_hsmmc1_after_set_reg(struct device *dev, int power_on, int vdd)
89{
90 u32 reg;
91
92 /* 100ms delay required for PBIAS configuration */
93 msleep(100);
94
95 if (power_on) {
96 reg = omap_ctrl_readl(control_pbias_offset);
97 reg |= (OMAP2_PBIASLITEPWRDNZ0 | OMAP2_PBIASSPEEDCTRL0);
98 if ((1 << vdd) <= MMC_VDD_165_195)
99 reg &= ~OMAP2_PBIASLITEVMODE0;
100 else
101 reg |= OMAP2_PBIASLITEVMODE0;
102 omap_ctrl_writel(reg, control_pbias_offset);
103 } else {
104 reg = omap_ctrl_readl(control_pbias_offset);
105 reg |= (OMAP2_PBIASSPEEDCTRL0 | OMAP2_PBIASLITEPWRDNZ0 |
106 OMAP2_PBIASLITEVMODE0);
107 omap_ctrl_writel(reg, control_pbias_offset);
108 }
109}
110
111static void hsmmc2_select_input_clk_src(struct omap_hsmmc_platform_data *mmc)
112{
113 u32 reg;
114
115 reg = omap_ctrl_readl(control_devconf1_offset);
116 if (mmc->internal_clock)
117 reg |= OMAP2_MMCSDIO2ADPCLKISEL;
118 else
119 reg &= ~OMAP2_MMCSDIO2ADPCLKISEL;
120 omap_ctrl_writel(reg, control_devconf1_offset);
121}
122
123static void hsmmc2_before_set_reg(struct device *dev, int power_on, int vdd)
124{
125 struct omap_hsmmc_platform_data *mmc = dev->platform_data;
126
127 if (mmc->remux)
128 mmc->remux(dev, power_on);
129
130 if (power_on)
131 hsmmc2_select_input_clk_src(mmc);
132}
133
134static int am35x_hsmmc2_set_power(struct device *dev, int power_on, int vdd)
135{
136 struct omap_hsmmc_platform_data *mmc = dev->platform_data;
137
138 if (power_on)
139 hsmmc2_select_input_clk_src(mmc);
140
141 return 0;
142}
143
144static int nop_mmc_set_power(struct device *dev, int power_on, int vdd)
145{
146 return 0;
147}
148
149static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c, 35static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c,
150 struct omap_hsmmc_platform_data *mmc) 36 struct omap_hsmmc_platform_data *mmc)
151{ 37{
@@ -157,101 +43,11 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c,
157 return -ENOMEM; 43 return -ENOMEM;
158 } 44 }
159 45
160 if (c->name) 46 snprintf(hc_name, (HSMMC_NAME_LEN + 1), "mmc%islot%i", c->mmc, 1);
161 strncpy(hc_name, c->name, HSMMC_NAME_LEN);
162 else
163 snprintf(hc_name, (HSMMC_NAME_LEN + 1), "mmc%islot%i",
164 c->mmc, 1);
165 mmc->name = hc_name; 47 mmc->name = hc_name;
166 mmc->caps = c->caps; 48 mmc->caps = c->caps;
167 mmc->internal_clock = !c->ext_clock;
168 mmc->reg_offset = 0; 49 mmc->reg_offset = 0;
169 50
170 if (c->cover_only) {
171 /* detect if mobile phone cover removed */
172 mmc->gpio_cd = -EINVAL;
173 mmc->gpio_cod = c->gpio_cd;
174 } else {
175 /* card detect pin on the mmc socket itself */
176 mmc->gpio_cd = c->gpio_cd;
177 mmc->gpio_cod = -EINVAL;
178 }
179 mmc->gpio_wp = c->gpio_wp;
180
181 mmc->remux = c->remux;
182 mmc->init_card = c->init_card;
183
184 if (c->nonremovable)
185 mmc->nonremovable = 1;
186
187 /*
188 * NOTE: MMC slots should have a Vcc regulator set up.
189 * This may be from a TWL4030-family chip, another
190 * controllable regulator, or a fixed supply.
191 *
192 * temporary HACK: ocr_mask instead of fixed supply
193 */
194 if (soc_is_am35xx())
195 mmc->ocr_mask = MMC_VDD_165_195 |
196 MMC_VDD_26_27 |
197 MMC_VDD_27_28 |
198 MMC_VDD_29_30 |
199 MMC_VDD_30_31 |
200 MMC_VDD_31_32;
201 else
202 mmc->ocr_mask = c->ocr_mask;
203
204 if (!soc_is_am35xx())
205 mmc->features |= HSMMC_HAS_PBIAS;
206
207 switch (c->mmc) {
208 case 1:
209 if (mmc->features & HSMMC_HAS_PBIAS) {
210 /* on-chip level shifting via PBIAS0/PBIAS1 */
211 mmc->before_set_reg =
212 omap_hsmmc1_before_set_reg;
213 mmc->after_set_reg =
214 omap_hsmmc1_after_set_reg;
215 }
216
217 if (soc_is_am35xx())
218 mmc->set_power = nop_mmc_set_power;
219
220 /* OMAP3630 HSMMC1 supports only 4-bit */
221 if (cpu_is_omap3630() &&
222 (c->caps & MMC_CAP_8_BIT_DATA)) {
223 c->caps &= ~MMC_CAP_8_BIT_DATA;
224 c->caps |= MMC_CAP_4_BIT_DATA;
225 mmc->caps = c->caps;
226 }
227 break;
228 case 2:
229 if (soc_is_am35xx())
230 mmc->set_power = am35x_hsmmc2_set_power;
231
232 if (c->ext_clock)
233 c->transceiver = 1;
234 if (c->transceiver && (c->caps & MMC_CAP_8_BIT_DATA)) {
235 c->caps &= ~MMC_CAP_8_BIT_DATA;
236 c->caps |= MMC_CAP_4_BIT_DATA;
237 }
238 if (mmc->features & HSMMC_HAS_PBIAS) {
239 /* off-chip level shifting, or none */
240 mmc->before_set_reg = hsmmc2_before_set_reg;
241 mmc->after_set_reg = NULL;
242 }
243 break;
244 case 3:
245 case 4:
246 case 5:
247 mmc->before_set_reg = NULL;
248 mmc->after_set_reg = NULL;
249 break;
250 default:
251 pr_err("MMC%d configuration not supported!\n", c->mmc);
252 kfree(hc_name);
253 return -ENODEV;
254 }
255 return 0; 51 return 0;
256} 52}
257 53
@@ -260,7 +56,6 @@ static int omap_hsmmc_done;
260void omap_hsmmc_late_init(struct omap2_hsmmc_info *c) 56void omap_hsmmc_late_init(struct omap2_hsmmc_info *c)
261{ 57{
262 struct platform_device *pdev; 58 struct platform_device *pdev;
263 struct omap_hsmmc_platform_data *mmc_pdata;
264 int res; 59 int res;
265 60
266 if (omap_hsmmc_done != 1) 61 if (omap_hsmmc_done != 1)
@@ -269,32 +64,12 @@ void omap_hsmmc_late_init(struct omap2_hsmmc_info *c)
269 omap_hsmmc_done++; 64 omap_hsmmc_done++;
270 65
271 for (; c->mmc; c++) { 66 for (; c->mmc; c++) {
272 if (!c->deferred)
273 continue;
274
275 pdev = c->pdev; 67 pdev = c->pdev;
276 if (!pdev) 68 if (!pdev)
277 continue; 69 continue;
278
279 mmc_pdata = pdev->dev.platform_data;
280 if (!mmc_pdata)
281 continue;
282
283 if (c->cover_only) {
284 /* detect if mobile phone cover removed */
285 mmc_pdata->gpio_cd = -EINVAL;
286 mmc_pdata->gpio_cod = c->gpio_cd;
287 } else {
288 /* card detect pin on the mmc socket itself */
289 mmc_pdata->gpio_cd = c->gpio_cd;
290 mmc_pdata->gpio_cod = -EINVAL;
291 }
292 mmc_pdata->gpio_wp = c->gpio_wp;
293
294 res = omap_device_register(pdev); 70 res = omap_device_register(pdev);
295 if (res) 71 if (res)
296 pr_err("Could not late init MMC %s\n", 72 pr_err("Could not late init MMC\n");
297 c->name);
298 } 73 }
299} 74}
300 75
@@ -336,13 +111,6 @@ static void __init omap_hsmmc_init_one(struct omap2_hsmmc_info *hsmmcinfo,
336 if (oh->dev_attr != NULL) { 111 if (oh->dev_attr != NULL) {
337 mmc_dev_attr = oh->dev_attr; 112 mmc_dev_attr = oh->dev_attr;
338 mmc_data->controller_flags = mmc_dev_attr->flags; 113 mmc_data->controller_flags = mmc_dev_attr->flags;
339 /*
340 * erratum 2.1.1.128 doesn't apply if board has
341 * a transceiver is attached
342 */
343 if (hsmmcinfo->transceiver)
344 mmc_data->controller_flags &=
345 ~OMAP_HSMMC_BROKEN_MULTIBLOCK_READ;
346 } 114 }
347 115
348 pdev = platform_device_alloc(name, ctrl_nr - 1); 116 pdev = platform_device_alloc(name, ctrl_nr - 1);
@@ -367,9 +135,6 @@ static void __init omap_hsmmc_init_one(struct omap2_hsmmc_info *hsmmcinfo,
367 135
368 hsmmcinfo->pdev = pdev; 136 hsmmcinfo->pdev = pdev;
369 137
370 if (hsmmcinfo->deferred)
371 goto free_mmc;
372
373 res = omap_device_register(pdev); 138 res = omap_device_register(pdev);
374 if (res) { 139 if (res) {
375 pr_err("Could not register od for %s\n", name); 140 pr_err("Could not register od for %s\n", name);
diff --git a/arch/arm/mach-omap2/hsmmc.h b/arch/arm/mach-omap2/hsmmc.h
index 69b619ddc765..af9af5094ec3 100644
--- a/arch/arm/mach-omap2/hsmmc.h
+++ b/arch/arm/mach-omap2/hsmmc.h
@@ -12,18 +12,9 @@ struct omap2_hsmmc_info {
12 u8 mmc; /* controller 1/2/3 */ 12 u8 mmc; /* controller 1/2/3 */
13 u32 caps; /* 4/8 wires and any additional host 13 u32 caps; /* 4/8 wires and any additional host
14 * capabilities OR'd (ref. linux/mmc/host.h) */ 14 * capabilities OR'd (ref. linux/mmc/host.h) */
15 bool transceiver; /* MMC-2 option */
16 bool ext_clock; /* use external pin for input clock */
17 bool cover_only; /* No card detect - just cover switch */
18 bool nonremovable; /* Nonremovable e.g. eMMC */
19 bool deferred; /* mmc needs a deferred probe */
20 int gpio_cd; /* or -EINVAL */ 15 int gpio_cd; /* or -EINVAL */
21 int gpio_wp; /* or -EINVAL */ 16 int gpio_wp; /* or -EINVAL */
22 char *name; /* or NULL for default */
23 struct platform_device *pdev; /* mmc controller instance */ 17 struct platform_device *pdev; /* mmc controller instance */
24 int ocr_mask; /* temporary HACK */
25 /* Remux (pad configuration) when powering on/off */
26 void (*remux)(struct device *dev, int power_on);
27 /* init some special card */ 18 /* init some special card */
28 void (*init_card)(struct mmc_card *card); 19 void (*init_card)(struct mmc_card *card);
29}; 20};
diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
index 1d739d1a0a65..1cd20e4d56b0 100644
--- a/arch/arm/mach-omap2/io.c
+++ b/arch/arm/mach-omap2/io.c
@@ -410,7 +410,7 @@ static int _set_hwmod_postsetup_state(struct omap_hwmod *oh, void *data)
410 return omap_hwmod_set_postsetup_state(oh, *(u8 *)data); 410 return omap_hwmod_set_postsetup_state(oh, *(u8 *)data);
411} 411}
412 412
413static void __init omap_hwmod_init_postsetup(void) 413static void __init __maybe_unused omap_hwmod_init_postsetup(void)
414{ 414{
415 u8 postsetup_state; 415 u8 postsetup_state;
416 416
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index d44e0e2f1106..841ba19d64a6 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -486,7 +486,6 @@ int __init omap3_pm_init(void)
486 ret = request_irq(omap_prcm_event_to_irq("io"), 486 ret = request_irq(omap_prcm_event_to_irq("io"),
487 _prcm_int_handle_io, IRQF_SHARED | IRQF_NO_SUSPEND, "pm_io", 487 _prcm_int_handle_io, IRQF_SHARED | IRQF_NO_SUSPEND, "pm_io",
488 omap3_pm_init); 488 omap3_pm_init);
489 enable_irq(omap_prcm_event_to_irq("io"));
490 489
491 if (ret) { 490 if (ret) {
492 pr_err("pm: Failed to request pm_io irq\n"); 491 pr_err("pm: Failed to request pm_io irq\n");
diff --git a/arch/arm/mach-omap2/prm3xxx.c b/arch/arm/mach-omap2/prm3xxx.c
index 382e236fbfd9..64f6451499a7 100644
--- a/arch/arm/mach-omap2/prm3xxx.c
+++ b/arch/arm/mach-omap2/prm3xxx.c
@@ -692,7 +692,6 @@ static int omap3xxx_prm_late_init(void)
692{ 692{
693 struct device_node *np; 693 struct device_node *np;
694 int irq_num; 694 int irq_num;
695 int ret;
696 695
697 if (!(prm_features & PRM_HAS_IO_WAKEUP)) 696 if (!(prm_features & PRM_HAS_IO_WAKEUP))
698 return 0; 697 return 0;
@@ -712,12 +711,8 @@ static int omap3xxx_prm_late_init(void)
712 } 711 }
713 712
714 omap3xxx_prm_enable_io_wakeup(); 713 omap3xxx_prm_enable_io_wakeup();
715 ret = omap_prcm_register_chain_handler(&omap3_prcm_irq_setup);
716 if (!ret)
717 irq_set_status_flags(omap_prcm_event_to_irq("io"),
718 IRQ_NOAUTOEN);
719 714
720 return ret; 715 return omap_prcm_register_chain_handler(&omap3_prcm_irq_setup);
721} 716}
722 717
723static void __exit omap3xxx_prm_exit(void) 718static void __exit omap3xxx_prm_exit(void)
diff --git a/arch/arm/mach-omap2/prm44xx.c b/arch/arm/mach-omap2/prm44xx.c
index 87e86a4a9ead..3ab5df1ce900 100644
--- a/arch/arm/mach-omap2/prm44xx.c
+++ b/arch/arm/mach-omap2/prm44xx.c
@@ -337,6 +337,27 @@ static void omap44xx_prm_reconfigure_io_chain(void)
337} 337}
338 338
339/** 339/**
340 * omap44xx_prm_enable_io_wakeup - enable wakeup events from I/O wakeup latches
341 *
342 * Activates the I/O wakeup event latches and allows events logged by
343 * those latches to signal a wakeup event to the PRCM. For I/O wakeups
344 * to occur, WAKEUPENABLE bits must be set in the pad mux registers, and
345 * omap44xx_prm_reconfigure_io_chain() must be called. No return value.
346 */
347static void __init omap44xx_prm_enable_io_wakeup(void)
348{
349 s32 inst = omap4_prmst_get_prm_dev_inst();
350
351 if (inst == PRM_INSTANCE_UNKNOWN)
352 return;
353
354 omap4_prm_rmw_inst_reg_bits(OMAP4430_GLOBAL_WUEN_MASK,
355 OMAP4430_GLOBAL_WUEN_MASK,
356 inst,
357 omap4_prcm_irq_setup.pm_ctrl);
358}
359
360/**
340 * omap44xx_prm_read_reset_sources - return the last SoC reset source 361 * omap44xx_prm_read_reset_sources - return the last SoC reset source
341 * 362 *
342 * Return a u32 representing the last reset sources of the SoC. The 363 * Return a u32 representing the last reset sources of the SoC. The
@@ -668,6 +689,8 @@ struct pwrdm_ops omap4_pwrdm_operations = {
668 .pwrdm_has_voltdm = omap4_check_vcvp, 689 .pwrdm_has_voltdm = omap4_check_vcvp,
669}; 690};
670 691
692static int omap44xx_prm_late_init(void);
693
671/* 694/*
672 * XXX document 695 * XXX document
673 */ 696 */
@@ -675,6 +698,7 @@ static struct prm_ll_data omap44xx_prm_ll_data = {
675 .read_reset_sources = &omap44xx_prm_read_reset_sources, 698 .read_reset_sources = &omap44xx_prm_read_reset_sources,
676 .was_any_context_lost_old = &omap44xx_prm_was_any_context_lost_old, 699 .was_any_context_lost_old = &omap44xx_prm_was_any_context_lost_old,
677 .clear_context_loss_flags_old = &omap44xx_prm_clear_context_loss_flags_old, 700 .clear_context_loss_flags_old = &omap44xx_prm_clear_context_loss_flags_old,
701 .late_init = &omap44xx_prm_late_init,
678 .assert_hardreset = omap4_prminst_assert_hardreset, 702 .assert_hardreset = omap4_prminst_assert_hardreset,
679 .deassert_hardreset = omap4_prminst_deassert_hardreset, 703 .deassert_hardreset = omap4_prminst_deassert_hardreset,
680 .is_hardreset_asserted = omap4_prminst_is_hardreset_asserted, 704 .is_hardreset_asserted = omap4_prminst_is_hardreset_asserted,
@@ -711,6 +735,37 @@ int __init omap44xx_prm_init(const struct omap_prcm_init_data *data)
711 return prm_register(&omap44xx_prm_ll_data); 735 return prm_register(&omap44xx_prm_ll_data);
712} 736}
713 737
738static int omap44xx_prm_late_init(void)
739{
740 int irq_num;
741
742 if (!(prm_features & PRM_HAS_IO_WAKEUP))
743 return 0;
744
745 irq_num = of_irq_get(prm_init_data->np, 0);
746 /*
747 * Already have OMAP4 IRQ num. For all other platforms, we need
748 * IRQ numbers from DT
749 */
750 if (irq_num < 0 && !(prm_init_data->flags & PRM_IRQ_DEFAULT)) {
751 if (irq_num == -EPROBE_DEFER)
752 return irq_num;
753
754 /* Have nothing to do */
755 return 0;
756 }
757
758 /* Once OMAP4 DT is filled as well */
759 if (irq_num >= 0) {
760 omap4_prcm_irq_setup.irq = irq_num;
761 omap4_prcm_irq_setup.xlate_irq = NULL;
762 }
763
764 omap44xx_prm_enable_io_wakeup();
765
766 return omap_prcm_register_chain_handler(&omap4_prcm_irq_setup);
767}
768
714static void __exit omap44xx_prm_exit(void) 769static void __exit omap44xx_prm_exit(void)
715{ 770{
716 prm_unregister(&omap44xx_prm_ll_data); 771 prm_unregister(&omap44xx_prm_ll_data);
diff --git a/arch/arm/mach-prima2/common.c b/arch/arm/mach-prima2/common.c
index 8cadb302a7d2..ffe05c27087e 100644
--- a/arch/arm/mach-prima2/common.c
+++ b/arch/arm/mach-prima2/common.c
@@ -15,7 +15,7 @@
15#include <linux/of_platform.h> 15#include <linux/of_platform.h>
16#include "common.h" 16#include "common.h"
17 17
18static void __init sirfsoc_init_late(void) 18static void __init __maybe_unused sirfsoc_init_late(void)
19{ 19{
20 sirfsoc_pm_init(); 20 sirfsoc_pm_init();
21} 21}
diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig
index 76fbc115ec33..ce7d97babb0f 100644
--- a/arch/arm/mach-pxa/Kconfig
+++ b/arch/arm/mach-pxa/Kconfig
@@ -566,6 +566,7 @@ config MACH_ICONTROL
566config ARCH_PXA_ESERIES 566config ARCH_PXA_ESERIES
567 bool "PXA based Toshiba e-series PDAs" 567 bool "PXA based Toshiba e-series PDAs"
568 select FB_W100 568 select FB_W100
569 select FB
569 select PXA25x 570 select PXA25x
570 571
571config MACH_E330 572config MACH_E330
diff --git a/arch/arm/mach-pxa/include/mach/mtd-xip.h b/arch/arm/mach-pxa/include/mach/mtd-xip.h
index 990d2bf2fb45..9bf4ea6a6f74 100644
--- a/arch/arm/mach-pxa/include/mach/mtd-xip.h
+++ b/arch/arm/mach-pxa/include/mach/mtd-xip.h
@@ -17,11 +17,15 @@
17 17
18#include <mach/regs-ost.h> 18#include <mach/regs-ost.h>
19 19
20#define xip_irqpending() (ICIP & ICMR) 20/* restored July 2017, this did not build since 2011! */
21
22#define ICIP io_p2v(0x40d00000)
23#define ICMR io_p2v(0x40d00004)
24#define xip_irqpending() (readl(ICIP) & readl(ICMR))
21 25
22/* we sample OSCR and convert desired delta to usec (1/4 ~= 1000000/3686400) */ 26/* we sample OSCR and convert desired delta to usec (1/4 ~= 1000000/3686400) */
23#define xip_currtime() (OSCR) 27#define xip_currtime() readl(OSCR)
24#define xip_elapsed_since(x) (signed)((OSCR - (x)) / 4) 28#define xip_elapsed_since(x) (signed)((readl(OSCR) - (x)) / 4)
25 29
26/* 30/*
27 * xip_cpu_idle() is used when waiting for a delay equal or larger than 31 * xip_cpu_idle() is used when waiting for a delay equal or larger than
diff --git a/arch/arm/mach-rpc/include/mach/hardware.h b/arch/arm/mach-rpc/include/mach/hardware.h
index aa79fa47373a..622d4e5df029 100644
--- a/arch/arm/mach-rpc/include/mach/hardware.h
+++ b/arch/arm/mach-rpc/include/mach/hardware.h
@@ -25,8 +25,8 @@
25 * *_SIZE is the size of the region 25 * *_SIZE is the size of the region
26 * *_BASE is the virtual address 26 * *_BASE is the virtual address
27 */ 27 */
28#define RAM_SIZE 0x10000000 28#define RPC_RAM_SIZE 0x10000000
29#define RAM_START 0x10000000 29#define RPC_RAM_START 0x10000000
30 30
31#define EASI_SIZE 0x08000000 /* EASI I/O */ 31#define EASI_SIZE 0x08000000 /* EASI I/O */
32#define EASI_START 0x08000000 32#define EASI_START 0x08000000
diff --git a/arch/arm/mach-sa1100/clock.c b/arch/arm/mach-sa1100/clock.c
index 0db46895c82a..7d52cd97d96e 100644
--- a/arch/arm/mach-sa1100/clock.c
+++ b/arch/arm/mach-sa1100/clock.c
@@ -35,6 +35,31 @@ struct clk clk_##_name = { \
35 35
36static DEFINE_SPINLOCK(clocks_lock); 36static DEFINE_SPINLOCK(clocks_lock);
37 37
38/* Dummy clk routine to build generic kernel parts that may be using them */
39long clk_round_rate(struct clk *clk, unsigned long rate)
40{
41 return clk_get_rate(clk);
42}
43EXPORT_SYMBOL(clk_round_rate);
44
45int clk_set_rate(struct clk *clk, unsigned long rate)
46{
47 return 0;
48}
49EXPORT_SYMBOL(clk_set_rate);
50
51int clk_set_parent(struct clk *clk, struct clk *parent)
52{
53 return 0;
54}
55EXPORT_SYMBOL(clk_set_parent);
56
57struct clk *clk_get_parent(struct clk *clk)
58{
59 return NULL;
60}
61EXPORT_SYMBOL(clk_get_parent);
62
38static void clk_gpio27_enable(struct clk *clk) 63static void clk_gpio27_enable(struct clk *clk)
39{ 64{
40 /* 65 /*
diff --git a/arch/arm/mach-sa1100/include/mach/mtd-xip.h b/arch/arm/mach-sa1100/include/mach/mtd-xip.h
index b3d684098fbf..cb76096a2e36 100644
--- a/arch/arm/mach-sa1100/include/mach/mtd-xip.h
+++ b/arch/arm/mach-sa1100/include/mach/mtd-xip.h
@@ -20,7 +20,7 @@
20#define xip_irqpending() (ICIP & ICMR) 20#define xip_irqpending() (ICIP & ICMR)
21 21
22/* we sample OSCR and convert desired delta to usec (1/4 ~= 1000000/3686400) */ 22/* we sample OSCR and convert desired delta to usec (1/4 ~= 1000000/3686400) */
23#define xip_currtime() (OSCR) 23#define xip_currtime() readl_relaxed(OSCR)
24#define xip_elapsed_since(x) (signed)((OSCR - (x)) / 4) 24#define xip_elapsed_since(x) (signed)((readl_relaxed(OSCR) - (x)) / 4)
25 25
26#endif /* __ARCH_SA1100_MTD_XIP_H__ */ 26#endif /* __ARCH_SA1100_MTD_XIP_H__ */
diff --git a/arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c b/arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c
index 73e3adbc1330..44438f344dc8 100644
--- a/arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c
+++ b/arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c
@@ -67,8 +67,12 @@ static int regulator_quirk_notify(struct notifier_block *nb,
67{ 67{
68 struct device *dev = data; 68 struct device *dev = data;
69 struct i2c_client *client; 69 struct i2c_client *client;
70 static bool done;
70 u32 mon; 71 u32 mon;
71 72
73 if (done)
74 return 0;
75
72 mon = ioread32(irqc + IRQC_MONITOR); 76 mon = ioread32(irqc + IRQC_MONITOR);
73 dev_dbg(dev, "%s: %ld, IRQC_MONITOR = 0x%x\n", __func__, action, mon); 77 dev_dbg(dev, "%s: %ld, IRQC_MONITOR = 0x%x\n", __func__, action, mon);
74 if (mon & REGULATOR_IRQ_MASK) 78 if (mon & REGULATOR_IRQ_MASK)
@@ -99,7 +103,7 @@ static int regulator_quirk_notify(struct notifier_block *nb,
99remove: 103remove:
100 dev_info(dev, "IRQ2 is not asserted, removing quirk\n"); 104 dev_info(dev, "IRQ2 is not asserted, removing quirk\n");
101 105
102 bus_unregister_notifier(&i2c_bus_type, nb); 106 done = true;
103 iounmap(irqc); 107 iounmap(irqc);
104 return 0; 108 return 0;
105} 109}
diff --git a/arch/arm/mach-ux500/cpu-db8500.c b/arch/arm/mach-ux500/cpu-db8500.c
index 28083ef72819..71a34e8c345a 100644
--- a/arch/arm/mach-ux500/cpu-db8500.c
+++ b/arch/arm/mach-ux500/cpu-db8500.c
@@ -133,6 +133,7 @@ static irqreturn_t db8500_pmu_handler(int irq, void *dev, irq_handler_t handler)
133 133
134static struct arm_pmu_platdata db8500_pmu_platdata = { 134static struct arm_pmu_platdata db8500_pmu_platdata = {
135 .handle_irq = db8500_pmu_handler, 135 .handle_irq = db8500_pmu_handler,
136 .irq_flags = IRQF_NOBALANCING | IRQF_NO_THREAD,
136}; 137};
137 138
138static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = { 139static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
diff --git a/arch/arm/mach-w90x900/clock.c b/arch/arm/mach-w90x900/clock.c
index ac6fd1a2cb59..3f93fac98d97 100644
--- a/arch/arm/mach-w90x900/clock.c
+++ b/arch/arm/mach-w90x900/clock.c
@@ -93,3 +93,32 @@ void nuc900_subclk_enable(struct clk *clk, int enable)
93 93
94 __raw_writel(clken, W90X900_VA_CLKPWR + SUBCLK); 94 __raw_writel(clken, W90X900_VA_CLKPWR + SUBCLK);
95} 95}
96
97/* dummy functions, should not be called */
98long clk_round_rate(struct clk *clk, unsigned long rate)
99{
100 WARN_ON(clk);
101 return 0;
102}
103EXPORT_SYMBOL(clk_round_rate);
104
105int clk_set_rate(struct clk *clk, unsigned long rate)
106{
107 WARN_ON(clk);
108 return 0;
109}
110EXPORT_SYMBOL(clk_set_rate);
111
112int clk_set_parent(struct clk *clk, struct clk *parent)
113{
114 WARN_ON(clk);
115 return 0;
116}
117EXPORT_SYMBOL(clk_set_parent);
118
119struct clk *clk_get_parent(struct clk *clk)
120{
121 WARN_ON(clk);
122 return NULL;
123}
124EXPORT_SYMBOL(clk_get_parent);
diff --git a/arch/arm/mm/dma-mapping-nommu.c b/arch/arm/mm/dma-mapping-nommu.c
index 90ee354d803e..6db5fc26d154 100644
--- a/arch/arm/mm/dma-mapping-nommu.c
+++ b/arch/arm/mm/dma-mapping-nommu.c
@@ -40,9 +40,21 @@ static void *arm_nommu_dma_alloc(struct device *dev, size_t size,
40 40
41{ 41{
42 const struct dma_map_ops *ops = &dma_noop_ops; 42 const struct dma_map_ops *ops = &dma_noop_ops;
43 void *ret;
43 44
44 /* 45 /*
45 * We are here because: 46 * Try generic allocator first if we are advertised that
47 * consistency is not required.
48 */
49
50 if (attrs & DMA_ATTR_NON_CONSISTENT)
51 return ops->alloc(dev, size, dma_handle, gfp, attrs);
52
53 ret = dma_alloc_from_global_coherent(size, dma_handle);
54
55 /*
56 * dma_alloc_from_global_coherent() may fail because:
57 *
46 * - no consistent DMA region has been defined, so we can't 58 * - no consistent DMA region has been defined, so we can't
47 * continue. 59 * continue.
48 * - there is no space left in consistent DMA region, so we 60 * - there is no space left in consistent DMA region, so we
@@ -50,11 +62,8 @@ static void *arm_nommu_dma_alloc(struct device *dev, size_t size,
50 * advertised that consistency is not required. 62 * advertised that consistency is not required.
51 */ 63 */
52 64
53 if (attrs & DMA_ATTR_NON_CONSISTENT) 65 WARN_ON_ONCE(ret == NULL);
54 return ops->alloc(dev, size, dma_handle, gfp, attrs); 66 return ret;
55
56 WARN_ON_ONCE(1);
57 return NULL;
58} 67}
59 68
60static void arm_nommu_dma_free(struct device *dev, size_t size, 69static void arm_nommu_dma_free(struct device *dev, size_t size,
@@ -63,14 +72,31 @@ static void arm_nommu_dma_free(struct device *dev, size_t size,
63{ 72{
64 const struct dma_map_ops *ops = &dma_noop_ops; 73 const struct dma_map_ops *ops = &dma_noop_ops;
65 74
66 if (attrs & DMA_ATTR_NON_CONSISTENT) 75 if (attrs & DMA_ATTR_NON_CONSISTENT) {
67 ops->free(dev, size, cpu_addr, dma_addr, attrs); 76 ops->free(dev, size, cpu_addr, dma_addr, attrs);
68 else 77 } else {
69 WARN_ON_ONCE(1); 78 int ret = dma_release_from_global_coherent(get_order(size),
79 cpu_addr);
80
81 WARN_ON_ONCE(ret == 0);
82 }
70 83
71 return; 84 return;
72} 85}
73 86
87static int arm_nommu_dma_mmap(struct device *dev, struct vm_area_struct *vma,
88 void *cpu_addr, dma_addr_t dma_addr, size_t size,
89 unsigned long attrs)
90{
91 int ret;
92
93 if (dma_mmap_from_global_coherent(vma, cpu_addr, size, &ret))
94 return ret;
95
96 return dma_common_mmap(dev, vma, cpu_addr, dma_addr, size);
97}
98
99
74static void __dma_page_cpu_to_dev(phys_addr_t paddr, size_t size, 100static void __dma_page_cpu_to_dev(phys_addr_t paddr, size_t size,
75 enum dma_data_direction dir) 101 enum dma_data_direction dir)
76{ 102{
@@ -173,6 +199,7 @@ static void arm_nommu_dma_sync_sg_for_cpu(struct device *dev, struct scatterlist
173const struct dma_map_ops arm_nommu_dma_ops = { 199const struct dma_map_ops arm_nommu_dma_ops = {
174 .alloc = arm_nommu_dma_alloc, 200 .alloc = arm_nommu_dma_alloc,
175 .free = arm_nommu_dma_free, 201 .free = arm_nommu_dma_free,
202 .mmap = arm_nommu_dma_mmap,
176 .map_page = arm_nommu_dma_map_page, 203 .map_page = arm_nommu_dma_map_page,
177 .unmap_page = arm_nommu_dma_unmap_page, 204 .unmap_page = arm_nommu_dma_unmap_page,
178 .map_sg = arm_nommu_dma_map_sg, 205 .map_sg = arm_nommu_dma_map_sg,
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c
index e7380bafbfa6..fcf1473d6fed 100644
--- a/arch/arm/mm/dma-mapping.c
+++ b/arch/arm/mm/dma-mapping.c
@@ -851,7 +851,7 @@ static int __arm_dma_mmap(struct device *dev, struct vm_area_struct *vma,
851 unsigned long pfn = dma_to_pfn(dev, dma_addr); 851 unsigned long pfn = dma_to_pfn(dev, dma_addr);
852 unsigned long off = vma->vm_pgoff; 852 unsigned long off = vma->vm_pgoff;
853 853
854 if (dma_mmap_from_coherent(dev, vma, cpu_addr, size, &ret)) 854 if (dma_mmap_from_dev_coherent(dev, vma, cpu_addr, size, &ret))
855 return ret; 855 return ret;
856 856
857 if (off < nr_pages && nr_vma_pages <= (nr_pages - off)) { 857 if (off < nr_pages && nr_vma_pages <= (nr_pages - off)) {
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts
index 0d1f026d831a..ba2fde2909f9 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts
@@ -51,6 +51,7 @@
51 compatible = "sinovoip,bananapi-m64", "allwinner,sun50i-a64"; 51 compatible = "sinovoip,bananapi-m64", "allwinner,sun50i-a64";
52 52
53 aliases { 53 aliases {
54 ethernet0 = &emac;
54 serial0 = &uart0; 55 serial0 = &uart0;
55 serial1 = &uart1; 56 serial1 = &uart1;
56 }; 57 };
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
index 08cda24ea194..827168bc22ed 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
@@ -51,6 +51,7 @@
51 compatible = "pine64,pine64", "allwinner,sun50i-a64"; 51 compatible = "pine64,pine64", "allwinner,sun50i-a64";
52 52
53 aliases { 53 aliases {
54 ethernet0 = &emac;
54 serial0 = &uart0; 55 serial0 = &uart0;
55 serial1 = &uart1; 56 serial1 = &uart1;
56 serial2 = &uart2; 57 serial2 = &uart2;
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts
index 17eb1cc5bf6b..216e3a5dafae 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts
@@ -53,6 +53,7 @@
53 "allwinner,sun50i-a64"; 53 "allwinner,sun50i-a64";
54 54
55 aliases { 55 aliases {
56 ethernet0 = &emac;
56 serial0 = &uart0; 57 serial0 = &uart0;
57 }; 58 };
58 59
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
index 9d00622ce845..bd0f33b77f57 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
@@ -452,7 +452,7 @@
452 emac: ethernet@1c30000 { 452 emac: ethernet@1c30000 {
453 compatible = "allwinner,sun50i-a64-emac"; 453 compatible = "allwinner,sun50i-a64-emac";
454 syscon = <&syscon>; 454 syscon = <&syscon>;
455 reg = <0x01c30000 0x100>; 455 reg = <0x01c30000 0x10000>;
456 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>; 456 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
457 interrupt-names = "macirq"; 457 interrupt-names = "macirq";
458 resets = <&ccu RST_BUS_EMAC>; 458 resets = <&ccu RST_BUS_EMAC>;
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi
index 732e2e06f503..d9a720bff05d 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi
@@ -120,5 +120,8 @@
120}; 120};
121 121
122&pio { 122&pio {
123 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
124 <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
125 <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
123 compatible = "allwinner,sun50i-h5-pinctrl"; 126 compatible = "allwinner,sun50i-h5-pinctrl";
124}; 127};
diff --git a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
index 35b8c88c3220..738ed689ff69 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
+++ b/arch/arm64/boot/dts/amlogic/meson-gx.dtsi
@@ -400,7 +400,7 @@
400 }; 400 };
401 401
402 pwm_AO_ab: pwm@550 { 402 pwm_AO_ab: pwm@550 {
403 compatible = "amlogic,meson-gx-pwm", "amlogic,meson-gxbb-pwm"; 403 compatible = "amlogic,meson-gx-ao-pwm", "amlogic,meson-gxbb-ao-pwm";
404 reg = <0x0 0x00550 0x0 0x10>; 404 reg = <0x0 0x00550 0x0 0x10>;
405 #pwm-cells = <3>; 405 #pwm-cells = <3>;
406 status = "disabled"; 406 status = "disabled";
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts
index 72c5a9f64ca8..94567eb17875 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-khadas-vim.dts
@@ -109,8 +109,8 @@
109 status = "okay"; 109 status = "okay";
110 pinctrl-0 = <&pwm_ao_a_3_pins>, <&pwm_ao_b_pins>; 110 pinctrl-0 = <&pwm_ao_a_3_pins>, <&pwm_ao_b_pins>;
111 pinctrl-names = "default"; 111 pinctrl-names = "default";
112 clocks = <&clkc CLKID_FCLK_DIV4>; 112 clocks = <&xtal> , <&xtal>;
113 clock-names = "clkin0"; 113 clock-names = "clkin0", "clkin1" ;
114}; 114};
115 115
116&pwm_ef { 116&pwm_ef {
diff --git a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts
index 890821d6e52b..266fbcf3e47f 100644
--- a/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts
+++ b/arch/arm64/boot/dts/amlogic/meson-gxl-s905x-libretech-cc.dts
@@ -10,12 +10,20 @@
10 10
11#include <dt-bindings/input/input.h> 11#include <dt-bindings/input/input.h>
12 12
13#include "meson-gxl-s905x-p212.dtsi" 13#include "meson-gxl-s905x.dtsi"
14 14
15/ { 15/ {
16 compatible = "libretech,cc", "amlogic,s905x", "amlogic,meson-gxl"; 16 compatible = "libretech,cc", "amlogic,s905x", "amlogic,meson-gxl";
17 model = "Libre Technology CC"; 17 model = "Libre Technology CC";
18 18
19 aliases {
20 serial0 = &uart_AO;
21 };
22
23 chosen {
24 stdout-path = "serial0:115200n8";
25 };
26
19 cvbs-connector { 27 cvbs-connector {
20 compatible = "composite-video-connector"; 28 compatible = "composite-video-connector";
21 29
@@ -26,6 +34,11 @@
26 }; 34 };
27 }; 35 };
28 36
37 emmc_pwrseq: emmc-pwrseq {
38 compatible = "mmc-pwrseq-emmc";
39 reset-gpios = <&gpio BOOT_9 GPIO_ACTIVE_LOW>;
40 };
41
29 hdmi-connector { 42 hdmi-connector {
30 compatible = "hdmi-connector"; 43 compatible = "hdmi-connector";
31 type = "a"; 44 type = "a";
@@ -53,6 +66,39 @@
53 linux,default-trigger = "heartbeat"; 66 linux,default-trigger = "heartbeat";
54 }; 67 };
55 }; 68 };
69
70 memory@0 {
71 device_type = "memory";
72 reg = <0x0 0x0 0x0 0x80000000>;
73 };
74
75 vcc_3v3: regulator-vcc_3v3 {
76 compatible = "regulator-fixed";
77 regulator-name = "VCC_3V3";
78 regulator-min-microvolt = <3300000>;
79 regulator-max-microvolt = <3300000>;
80 };
81
82 vcc_card: regulator-vcc-card {
83 compatible = "regulator-gpio";
84
85 regulator-name = "VCC_CARD";
86 regulator-min-microvolt = <1800000>;
87 regulator-max-microvolt = <3300000>;
88
89 gpios = <&gpio_ao GPIOAO_3 GPIO_ACTIVE_HIGH>;
90 gpios-states = <0>;
91
92 states = <3300000 0>,
93 <1800000 1>;
94 };
95
96 vddio_boot: regulator-vddio_boot {
97 compatible = "regulator-fixed";
98 regulator-name = "VDDIO_BOOT";
99 regulator-min-microvolt = <3300000>;
100 regulator-max-microvolt = <3300000>;
101 };
56}; 102};
57 103
58&cvbs_vdac_port { 104&cvbs_vdac_port {
@@ -61,6 +107,16 @@
61 }; 107 };
62}; 108};
63 109
110&ethmac {
111 status = "okay";
112};
113
114&ir {
115 status = "okay";
116 pinctrl-0 = <&remote_input_ao_pins>;
117 pinctrl-names = "default";
118};
119
64&hdmi_tx { 120&hdmi_tx {
65 status = "okay"; 121 status = "okay";
66 pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>; 122 pinctrl-0 = <&hdmi_hpd_pins>, <&hdmi_i2c_pins>;
@@ -73,20 +129,43 @@
73 }; 129 };
74}; 130};
75 131
76/* 132/* SD card */
77 * The following devices exists but are exposed on the general 133&sd_emmc_b {
78 * purpose GPIO header. End user may well decide to use those pins 134 status = "okay";
79 * for another purpose 135 pinctrl-0 = <&sdcard_pins>;
80 */ 136 pinctrl-names = "default";
137
138 bus-width = <4>;
139 cap-sd-highspeed;
140 max-frequency = <100000000>;
141 disable-wp;
142
143 cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>;
144 cd-inverted;
81 145
82&sd_emmc_a { 146 vmmc-supply = <&vcc_3v3>;
83 status = "disabled"; 147 vqmmc-supply = <&vcc_card>;
84}; 148};
85 149
86&uart_A { 150/* eMMC */
87 status = "disabled"; 151&sd_emmc_c {
152 status = "okay";
153 pinctrl-0 = <&emmc_pins>;
154 pinctrl-names = "default";
155
156 bus-width = <8>;
157 cap-mmc-highspeed;
158 max-frequency = <50000000>;
159 non-removable;
160 disable-wp;
161
162 mmc-pwrseq = <&emmc_pwrseq>;
163 vmmc-supply = <&vcc_3v3>;
164 vqmmc-supply = <&vddio_boot>;
88}; 165};
89 166
90&wifi32k { 167&uart_AO {
91 status = "disabled"; 168 status = "okay";
169 pinctrl-0 = <&uart_ao_a_pins>;
170 pinctrl-names = "default";
92}; 171};
diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
index dbcc3d4e2ed5..51763d674050 100644
--- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
@@ -219,7 +219,7 @@
219 reg = <0x18800 0x100>, <0x18C00 0x20>; 219 reg = <0x18800 0x100>, <0x18C00 0x20>;
220 gpiosb: gpio { 220 gpiosb: gpio {
221 #gpio-cells = <2>; 221 #gpio-cells = <2>;
222 gpio-ranges = <&pinctrl_sb 0 0 29>; 222 gpio-ranges = <&pinctrl_sb 0 0 30>;
223 gpio-controller; 223 gpio-controller;
224 interrupts = 224 interrupts =
225 <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>, 225 <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
diff --git a/arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi b/arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi
index 726528ce54e9..4c68605675a8 100644
--- a/arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-cp110-master.dtsi
@@ -270,6 +270,7 @@
270 interrupt-names = "mem", "ring0", "ring1", 270 interrupt-names = "mem", "ring0", "ring1",
271 "ring2", "ring3", "eip"; 271 "ring2", "ring3", "eip";
272 clocks = <&cpm_clk 1 26>; 272 clocks = <&cpm_clk 1 26>;
273 dma-coherent;
273 }; 274 };
274 }; 275 };
275 276
diff --git a/arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi b/arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi
index 95f8e5f607f6..923f354b02f0 100644
--- a/arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi
+++ b/arch/arm64/boot/dts/marvell/armada-cp110-slave.dtsi
@@ -64,7 +64,7 @@
64 compatible = "marvell,armada-8k-rtc"; 64 compatible = "marvell,armada-8k-rtc";
65 reg = <0x284000 0x20>, <0x284080 0x24>; 65 reg = <0x284000 0x20>, <0x284080 0x24>;
66 reg-names = "rtc", "rtc-soc"; 66 reg-names = "rtc", "rtc-soc";
67 interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>; 67 interrupts = <ICU_GRP_NSR 77 IRQ_TYPE_LEVEL_HIGH>;
68 }; 68 };
69 69
70 cps_ethernet: ethernet@0 { 70 cps_ethernet: ethernet@0 {
@@ -261,6 +261,7 @@
261 interrupt-names = "mem", "ring0", "ring1", 261 interrupt-names = "mem", "ring0", "ring1",
262 "ring2", "ring3", "eip"; 262 "ring2", "ring3", "eip";
263 clocks = <&cps_clk 1 26>; 263 clocks = <&cps_clk 1 26>;
264 dma-coherent;
264 /* 265 /*
265 * The cryptographic engine found on the cp110 266 * The cryptographic engine found on the cp110
266 * master is enabled by default at the SoC 267 * master is enabled by default at the SoC
diff --git a/arch/arm64/boot/dts/renesas/salvator-common.dtsi b/arch/arm64/boot/dts/renesas/salvator-common.dtsi
index aef35e0b685a..f903957da504 100644
--- a/arch/arm64/boot/dts/renesas/salvator-common.dtsi
+++ b/arch/arm64/boot/dts/renesas/salvator-common.dtsi
@@ -45,7 +45,7 @@
45 stdout-path = "serial0:115200n8"; 45 stdout-path = "serial0:115200n8";
46 }; 46 };
47 47
48 audio_clkout: audio_clkout { 48 audio_clkout: audio-clkout {
49 /* 49 /*
50 * This is same as <&rcar_sound 0> 50 * This is same as <&rcar_sound 0>
51 * but needed to avoid cs2000/rcar_sound probe dead-lock 51 * but needed to avoid cs2000/rcar_sound probe dead-lock
@@ -508,7 +508,7 @@
508 508
509 /* audio_clkout0/1/2/3 */ 509 /* audio_clkout0/1/2/3 */
510 #clock-cells = <1>; 510 #clock-cells = <1>;
511 clock-frequency = <11289600 12288000>; 511 clock-frequency = <12288000 11289600>;
512 512
513 status = "okay"; 513 status = "okay";
514 514
diff --git a/arch/arm64/boot/dts/renesas/ulcb.dtsi b/arch/arm64/boot/dts/renesas/ulcb.dtsi
index b5c6ee07d7f9..d1a3f3b7a0ab 100644
--- a/arch/arm64/boot/dts/renesas/ulcb.dtsi
+++ b/arch/arm64/boot/dts/renesas/ulcb.dtsi
@@ -281,7 +281,7 @@
281 281
282 /* audio_clkout0/1/2/3 */ 282 /* audio_clkout0/1/2/3 */
283 #clock-cells = <1>; 283 #clock-cells = <1>;
284 clock-frequency = <11289600 12288000>; 284 clock-frequency = <12288000 11289600>;
285 285
286 status = "okay"; 286 status = "okay";
287 287
diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
index 6c7d147eed54..b4ca115b3be1 100644
--- a/arch/arm64/configs/defconfig
+++ b/arch/arm64/configs/defconfig
@@ -476,6 +476,7 @@ CONFIG_QCOM_CLK_SMD_RPM=y
476CONFIG_MSM_GCC_8916=y 476CONFIG_MSM_GCC_8916=y
477CONFIG_MSM_GCC_8994=y 477CONFIG_MSM_GCC_8994=y
478CONFIG_MSM_MMCC_8996=y 478CONFIG_MSM_MMCC_8996=y
479CONFIG_HWSPINLOCK=y
479CONFIG_HWSPINLOCK_QCOM=y 480CONFIG_HWSPINLOCK_QCOM=y
480CONFIG_ARM_MHU=y 481CONFIG_ARM_MHU=y
481CONFIG_PLATFORM_MHU=y 482CONFIG_PLATFORM_MHU=y
diff --git a/arch/arm64/include/asm/arch_timer.h b/arch/arm64/include/asm/arch_timer.h
index 74d08e44a651..a652ce0a5cb2 100644
--- a/arch/arm64/include/asm/arch_timer.h
+++ b/arch/arm64/include/asm/arch_timer.h
@@ -65,13 +65,13 @@ DECLARE_PER_CPU(const struct arch_timer_erratum_workaround *,
65 u64 _val; \ 65 u64 _val; \
66 if (needs_unstable_timer_counter_workaround()) { \ 66 if (needs_unstable_timer_counter_workaround()) { \
67 const struct arch_timer_erratum_workaround *wa; \ 67 const struct arch_timer_erratum_workaround *wa; \
68 preempt_disable(); \ 68 preempt_disable_notrace(); \
69 wa = __this_cpu_read(timer_unstable_counter_workaround); \ 69 wa = __this_cpu_read(timer_unstable_counter_workaround); \
70 if (wa && wa->read_##reg) \ 70 if (wa && wa->read_##reg) \
71 _val = wa->read_##reg(); \ 71 _val = wa->read_##reg(); \
72 else \ 72 else \
73 _val = read_sysreg(reg); \ 73 _val = read_sysreg(reg); \
74 preempt_enable(); \ 74 preempt_enable_notrace(); \
75 } else { \ 75 } else { \
76 _val = read_sysreg(reg); \ 76 _val = read_sysreg(reg); \
77 } \ 77 } \
diff --git a/arch/arm64/include/asm/atomic_lse.h b/arch/arm64/include/asm/atomic_lse.h
index 99fa69c9c3cf..9ef0797380cb 100644
--- a/arch/arm64/include/asm/atomic_lse.h
+++ b/arch/arm64/include/asm/atomic_lse.h
@@ -435,7 +435,7 @@ static inline long atomic64_dec_if_positive(atomic64_t *v)
435 " sub x30, x30, %[ret]\n" 435 " sub x30, x30, %[ret]\n"
436 " cbnz x30, 1b\n" 436 " cbnz x30, 1b\n"
437 "2:") 437 "2:")
438 : [ret] "+&r" (x0), [v] "+Q" (v->counter) 438 : [ret] "+r" (x0), [v] "+Q" (v->counter)
439 : 439 :
440 : __LL_SC_CLOBBERS, "cc", "memory"); 440 : __LL_SC_CLOBBERS, "cc", "memory");
441 441
diff --git a/arch/arm64/include/asm/bug.h b/arch/arm64/include/asm/bug.h
index 366448eb0fb7..a02a57186f56 100644
--- a/arch/arm64/include/asm/bug.h
+++ b/arch/arm64/include/asm/bug.h
@@ -36,7 +36,7 @@
36#ifdef CONFIG_GENERIC_BUG 36#ifdef CONFIG_GENERIC_BUG
37 37
38#define __BUG_ENTRY(flags) \ 38#define __BUG_ENTRY(flags) \
39 ".pushsection __bug_table,\"a\"\n\t" \ 39 ".pushsection __bug_table,\"aw\"\n\t" \
40 ".align 2\n\t" \ 40 ".align 2\n\t" \
41 "0: .long 1f - 0b\n\t" \ 41 "0: .long 1f - 0b\n\t" \
42_BUGVERBOSE_LOCATION(__FILE__, __LINE__) \ 42_BUGVERBOSE_LOCATION(__FILE__, __LINE__) \
diff --git a/arch/arm64/include/asm/elf.h b/arch/arm64/include/asm/elf.h
index acae781f7359..3288c2b36731 100644
--- a/arch/arm64/include/asm/elf.h
+++ b/arch/arm64/include/asm/elf.h
@@ -114,10 +114,10 @@
114 114
115/* 115/*
116 * This is the base location for PIE (ET_DYN with INTERP) loads. On 116 * This is the base location for PIE (ET_DYN with INTERP) loads. On
117 * 64-bit, this is raised to 4GB to leave the entire 32-bit address 117 * 64-bit, this is above 4GB to leave the entire 32-bit address
118 * space open for things that want to use the area for 32-bit pointers. 118 * space open for things that want to use the area for 32-bit pointers.
119 */ 119 */
120#define ELF_ET_DYN_BASE 0x100000000UL 120#define ELF_ET_DYN_BASE (2 * TASK_SIZE_64 / 3)
121 121
122#ifndef __ASSEMBLY__ 122#ifndef __ASSEMBLY__
123 123
diff --git a/arch/arm64/include/asm/memory.h b/arch/arm64/include/asm/memory.h
index 32f82723338a..ef39dcb9ca6a 100644
--- a/arch/arm64/include/asm/memory.h
+++ b/arch/arm64/include/asm/memory.h
@@ -64,8 +64,10 @@
64 * TASK_UNMAPPED_BASE - the lower boundary of the mmap VM area. 64 * TASK_UNMAPPED_BASE - the lower boundary of the mmap VM area.
65 */ 65 */
66#define VA_BITS (CONFIG_ARM64_VA_BITS) 66#define VA_BITS (CONFIG_ARM64_VA_BITS)
67#define VA_START (UL(0xffffffffffffffff) << VA_BITS) 67#define VA_START (UL(0xffffffffffffffff) - \
68#define PAGE_OFFSET (UL(0xffffffffffffffff) << (VA_BITS - 1)) 68 (UL(1) << VA_BITS) + 1)
69#define PAGE_OFFSET (UL(0xffffffffffffffff) - \
70 (UL(1) << (VA_BITS - 1)) + 1)
69#define KIMAGE_VADDR (MODULES_END) 71#define KIMAGE_VADDR (MODULES_END)
70#define MODULES_END (MODULES_VADDR + MODULES_VSIZE) 72#define MODULES_END (MODULES_VADDR + MODULES_VSIZE)
71#define MODULES_VADDR (VA_START + KASAN_SHADOW_SIZE) 73#define MODULES_VADDR (VA_START + KASAN_SHADOW_SIZE)
diff --git a/arch/arm64/include/asm/sysreg.h b/arch/arm64/include/asm/sysreg.h
index 16e44fa9b3b6..248339e4aaf5 100644
--- a/arch/arm64/include/asm/sysreg.h
+++ b/arch/arm64/include/asm/sysreg.h
@@ -492,7 +492,7 @@ asm(
492 * the "%x0" template means XZR. 492 * the "%x0" template means XZR.
493 */ 493 */
494#define write_sysreg(v, r) do { \ 494#define write_sysreg(v, r) do { \
495 u64 __val = (u64)v; \ 495 u64 __val = (u64)(v); \
496 asm volatile("msr " __stringify(r) ", %x0" \ 496 asm volatile("msr " __stringify(r) ", %x0" \
497 : : "rZ" (__val)); \ 497 : : "rZ" (__val)); \
498} while (0) 498} while (0)
@@ -508,7 +508,7 @@ asm(
508}) 508})
509 509
510#define write_sysreg_s(v, r) do { \ 510#define write_sysreg_s(v, r) do { \
511 u64 __val = (u64)v; \ 511 u64 __val = (u64)(v); \
512 asm volatile("msr_s " __stringify(r) ", %x0" : : "rZ" (__val)); \ 512 asm volatile("msr_s " __stringify(r) ", %x0" : : "rZ" (__val)); \
513} while (0) 513} while (0)
514 514
diff --git a/arch/arm64/include/asm/uaccess.h b/arch/arm64/include/asm/uaccess.h
index 8f0a1de11e4a..fab46a0ea223 100644
--- a/arch/arm64/include/asm/uaccess.h
+++ b/arch/arm64/include/asm/uaccess.h
@@ -69,7 +69,7 @@ static inline void set_fs(mm_segment_t fs)
69 */ 69 */
70#define __range_ok(addr, size) \ 70#define __range_ok(addr, size) \
71({ \ 71({ \
72 unsigned long __addr = (unsigned long __force)(addr); \ 72 unsigned long __addr = (unsigned long)(addr); \
73 unsigned long flag, roksum; \ 73 unsigned long flag, roksum; \
74 __chk_user_ptr(addr); \ 74 __chk_user_ptr(addr); \
75 asm("adds %1, %1, %3; ccmp %1, %4, #2, cc; cset %0, ls" \ 75 asm("adds %1, %1, %3; ccmp %1, %4, #2, cc; cset %0, ls" \
diff --git a/arch/arm64/kernel/cpu_ops.c b/arch/arm64/kernel/cpu_ops.c
index e137ceaf5016..d16978213c5b 100644
--- a/arch/arm64/kernel/cpu_ops.c
+++ b/arch/arm64/kernel/cpu_ops.c
@@ -82,8 +82,8 @@ static const char *__init cpu_read_enable_method(int cpu)
82 * Don't warn spuriously. 82 * Don't warn spuriously.
83 */ 83 */
84 if (cpu != 0) 84 if (cpu != 0)
85 pr_err("%s: missing enable-method property\n", 85 pr_err("%pOF: missing enable-method property\n",
86 dn->full_name); 86 dn);
87 } 87 }
88 } else { 88 } else {
89 enable_method = acpi_get_enable_method(cpu); 89 enable_method = acpi_get_enable_method(cpu);
diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c
index 06da8ea16bbe..c7b4995868e1 100644
--- a/arch/arm64/kernel/fpsimd.c
+++ b/arch/arm64/kernel/fpsimd.c
@@ -161,9 +161,11 @@ void fpsimd_flush_thread(void)
161{ 161{
162 if (!system_supports_fpsimd()) 162 if (!system_supports_fpsimd())
163 return; 163 return;
164 preempt_disable();
164 memset(&current->thread.fpsimd_state, 0, sizeof(struct fpsimd_state)); 165 memset(&current->thread.fpsimd_state, 0, sizeof(struct fpsimd_state));
165 fpsimd_flush_task_state(current); 166 fpsimd_flush_task_state(current);
166 set_thread_flag(TIF_FOREIGN_FPSTATE); 167 set_thread_flag(TIF_FOREIGN_FPSTATE);
168 preempt_enable();
167} 169}
168 170
169/* 171/*
diff --git a/arch/arm64/kernel/head.S b/arch/arm64/kernel/head.S
index 973df7de7bf8..adb0910b88f5 100644
--- a/arch/arm64/kernel/head.S
+++ b/arch/arm64/kernel/head.S
@@ -354,7 +354,6 @@ __primary_switched:
354 tst x23, ~(MIN_KIMG_ALIGN - 1) // already running randomized? 354 tst x23, ~(MIN_KIMG_ALIGN - 1) // already running randomized?
355 b.ne 0f 355 b.ne 0f
356 mov x0, x21 // pass FDT address in x0 356 mov x0, x21 // pass FDT address in x0
357 mov x1, x23 // pass modulo offset in x1
358 bl kaslr_early_init // parse FDT for KASLR options 357 bl kaslr_early_init // parse FDT for KASLR options
359 cbz x0, 0f // KASLR disabled? just proceed 358 cbz x0, 0f // KASLR disabled? just proceed
360 orr x23, x23, x0 // record KASLR offset 359 orr x23, x23, x0 // record KASLR offset
diff --git a/arch/arm64/kernel/kaslr.c b/arch/arm64/kernel/kaslr.c
index a9710efb8c01..47080c49cc7e 100644
--- a/arch/arm64/kernel/kaslr.c
+++ b/arch/arm64/kernel/kaslr.c
@@ -75,7 +75,7 @@ extern void *__init __fixmap_remap_fdt(phys_addr_t dt_phys, int *size,
75 * containing function pointers) to be reinitialized, and zero-initialized 75 * containing function pointers) to be reinitialized, and zero-initialized
76 * .bss variables will be reset to 0. 76 * .bss variables will be reset to 0.
77 */ 77 */
78u64 __init kaslr_early_init(u64 dt_phys, u64 modulo_offset) 78u64 __init kaslr_early_init(u64 dt_phys)
79{ 79{
80 void *fdt; 80 void *fdt;
81 u64 seed, offset, mask, module_range; 81 u64 seed, offset, mask, module_range;
@@ -131,15 +131,17 @@ u64 __init kaslr_early_init(u64 dt_phys, u64 modulo_offset)
131 /* 131 /*
132 * The kernel Image should not extend across a 1GB/32MB/512MB alignment 132 * The kernel Image should not extend across a 1GB/32MB/512MB alignment
133 * boundary (for 4KB/16KB/64KB granule kernels, respectively). If this 133 * boundary (for 4KB/16KB/64KB granule kernels, respectively). If this
134 * happens, increase the KASLR offset by the size of the kernel image 134 * happens, round down the KASLR offset by (1 << SWAPPER_TABLE_SHIFT).
135 * rounded up by SWAPPER_BLOCK_SIZE. 135 *
136 * NOTE: The references to _text and _end below will already take the
137 * modulo offset (the physical displacement modulo 2 MB) into
138 * account, given that the physical placement is controlled by
139 * the loader, and will not change as a result of the virtual
140 * mapping we choose.
136 */ 141 */
137 if ((((u64)_text + offset + modulo_offset) >> SWAPPER_TABLE_SHIFT) != 142 if ((((u64)_text + offset) >> SWAPPER_TABLE_SHIFT) !=
138 (((u64)_end + offset + modulo_offset) >> SWAPPER_TABLE_SHIFT)) { 143 (((u64)_end + offset) >> SWAPPER_TABLE_SHIFT))
139 u64 kimg_sz = _end - _text; 144 offset = round_down(offset, 1 << SWAPPER_TABLE_SHIFT);
140 offset = (offset + round_up(kimg_sz, SWAPPER_BLOCK_SIZE))
141 & mask;
142 }
143 145
144 if (IS_ENABLED(CONFIG_KASAN)) 146 if (IS_ENABLED(CONFIG_KASAN))
145 /* 147 /*
diff --git a/arch/arm64/kernel/smp.c b/arch/arm64/kernel/smp.c
index 321119881abf..dc66e6ec3a99 100644
--- a/arch/arm64/kernel/smp.c
+++ b/arch/arm64/kernel/smp.c
@@ -469,7 +469,7 @@ static u64 __init of_get_cpu_mpidr(struct device_node *dn)
469 */ 469 */
470 cell = of_get_property(dn, "reg", NULL); 470 cell = of_get_property(dn, "reg", NULL);
471 if (!cell) { 471 if (!cell) {
472 pr_err("%s: missing reg property\n", dn->full_name); 472 pr_err("%pOF: missing reg property\n", dn);
473 return INVALID_HWID; 473 return INVALID_HWID;
474 } 474 }
475 475
@@ -478,7 +478,7 @@ static u64 __init of_get_cpu_mpidr(struct device_node *dn)
478 * Non affinity bits must be set to 0 in the DT 478 * Non affinity bits must be set to 0 in the DT
479 */ 479 */
480 if (hwid & ~MPIDR_HWID_BITMASK) { 480 if (hwid & ~MPIDR_HWID_BITMASK) {
481 pr_err("%s: invalid reg property\n", dn->full_name); 481 pr_err("%pOF: invalid reg property\n", dn);
482 return INVALID_HWID; 482 return INVALID_HWID;
483 } 483 }
484 return hwid; 484 return hwid;
@@ -627,8 +627,8 @@ static void __init of_parse_and_init_cpus(void)
627 goto next; 627 goto next;
628 628
629 if (is_mpidr_duplicate(cpu_count, hwid)) { 629 if (is_mpidr_duplicate(cpu_count, hwid)) {
630 pr_err("%s: duplicate cpu reg properties in the DT\n", 630 pr_err("%pOF: duplicate cpu reg properties in the DT\n",
631 dn->full_name); 631 dn);
632 goto next; 632 goto next;
633 } 633 }
634 634
@@ -640,8 +640,8 @@ static void __init of_parse_and_init_cpus(void)
640 */ 640 */
641 if (hwid == cpu_logical_map(0)) { 641 if (hwid == cpu_logical_map(0)) {
642 if (bootcpu_valid) { 642 if (bootcpu_valid) {
643 pr_err("%s: duplicate boot cpu reg property in DT\n", 643 pr_err("%pOF: duplicate boot cpu reg property in DT\n",
644 dn->full_name); 644 dn);
645 goto next; 645 goto next;
646 } 646 }
647 647
diff --git a/arch/arm64/kernel/topology.c b/arch/arm64/kernel/topology.c
index 79244c75eaec..8d48b233e6ce 100644
--- a/arch/arm64/kernel/topology.c
+++ b/arch/arm64/kernel/topology.c
@@ -45,7 +45,7 @@ static int __init get_cpu_for_node(struct device_node *node)
45 } 45 }
46 } 46 }
47 47
48 pr_crit("Unable to find CPU node for %s\n", cpu_node->full_name); 48 pr_crit("Unable to find CPU node for %pOF\n", cpu_node);
49 49
50 of_node_put(cpu_node); 50 of_node_put(cpu_node);
51 return -1; 51 return -1;
@@ -71,8 +71,8 @@ static int __init parse_core(struct device_node *core, int cluster_id,
71 cpu_topology[cpu].core_id = core_id; 71 cpu_topology[cpu].core_id = core_id;
72 cpu_topology[cpu].thread_id = i; 72 cpu_topology[cpu].thread_id = i;
73 } else { 73 } else {
74 pr_err("%s: Can't get CPU for thread\n", 74 pr_err("%pOF: Can't get CPU for thread\n",
75 t->full_name); 75 t);
76 of_node_put(t); 76 of_node_put(t);
77 return -EINVAL; 77 return -EINVAL;
78 } 78 }
@@ -84,15 +84,15 @@ static int __init parse_core(struct device_node *core, int cluster_id,
84 cpu = get_cpu_for_node(core); 84 cpu = get_cpu_for_node(core);
85 if (cpu >= 0) { 85 if (cpu >= 0) {
86 if (!leaf) { 86 if (!leaf) {
87 pr_err("%s: Core has both threads and CPU\n", 87 pr_err("%pOF: Core has both threads and CPU\n",
88 core->full_name); 88 core);
89 return -EINVAL; 89 return -EINVAL;
90 } 90 }
91 91
92 cpu_topology[cpu].cluster_id = cluster_id; 92 cpu_topology[cpu].cluster_id = cluster_id;
93 cpu_topology[cpu].core_id = core_id; 93 cpu_topology[cpu].core_id = core_id;
94 } else if (leaf) { 94 } else if (leaf) {
95 pr_err("%s: Can't get CPU for leaf core\n", core->full_name); 95 pr_err("%pOF: Can't get CPU for leaf core\n", core);
96 return -EINVAL; 96 return -EINVAL;
97 } 97 }
98 98
@@ -137,8 +137,8 @@ static int __init parse_cluster(struct device_node *cluster, int depth)
137 has_cores = true; 137 has_cores = true;
138 138
139 if (depth == 0) { 139 if (depth == 0) {
140 pr_err("%s: cpu-map children should be clusters\n", 140 pr_err("%pOF: cpu-map children should be clusters\n",
141 c->full_name); 141 c);
142 of_node_put(c); 142 of_node_put(c);
143 return -EINVAL; 143 return -EINVAL;
144 } 144 }
@@ -146,8 +146,8 @@ static int __init parse_cluster(struct device_node *cluster, int depth)
146 if (leaf) { 146 if (leaf) {
147 ret = parse_core(c, cluster_id, core_id++); 147 ret = parse_core(c, cluster_id, core_id++);
148 } else { 148 } else {
149 pr_err("%s: Non-leaf cluster with core %s\n", 149 pr_err("%pOF: Non-leaf cluster with core %s\n",
150 cluster->full_name, name); 150 cluster, name);
151 ret = -EINVAL; 151 ret = -EINVAL;
152 } 152 }
153 153
@@ -159,7 +159,7 @@ static int __init parse_cluster(struct device_node *cluster, int depth)
159 } while (c); 159 } while (c);
160 160
161 if (leaf && !has_cores) 161 if (leaf && !has_cores)
162 pr_warn("%s: empty cluster\n", cluster->full_name); 162 pr_warn("%pOF: empty cluster\n", cluster);
163 163
164 if (leaf) 164 if (leaf)
165 cluster_id++; 165 cluster_id++;
diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c
index c7c7088097be..8a62648848e5 100644
--- a/arch/arm64/kernel/traps.c
+++ b/arch/arm64/kernel/traps.c
@@ -274,10 +274,12 @@ static DEFINE_RAW_SPINLOCK(die_lock);
274void die(const char *str, struct pt_regs *regs, int err) 274void die(const char *str, struct pt_regs *regs, int err)
275{ 275{
276 int ret; 276 int ret;
277 unsigned long flags;
278
279 raw_spin_lock_irqsave(&die_lock, flags);
277 280
278 oops_enter(); 281 oops_enter();
279 282
280 raw_spin_lock_irq(&die_lock);
281 console_verbose(); 283 console_verbose();
282 bust_spinlocks(1); 284 bust_spinlocks(1);
283 ret = __die(str, err, regs); 285 ret = __die(str, err, regs);
@@ -287,13 +289,15 @@ void die(const char *str, struct pt_regs *regs, int err)
287 289
288 bust_spinlocks(0); 290 bust_spinlocks(0);
289 add_taint(TAINT_DIE, LOCKDEP_NOW_UNRELIABLE); 291 add_taint(TAINT_DIE, LOCKDEP_NOW_UNRELIABLE);
290 raw_spin_unlock_irq(&die_lock);
291 oops_exit(); 292 oops_exit();
292 293
293 if (in_interrupt()) 294 if (in_interrupt())
294 panic("Fatal exception in interrupt"); 295 panic("Fatal exception in interrupt");
295 if (panic_on_oops) 296 if (panic_on_oops)
296 panic("Fatal exception"); 297 panic("Fatal exception");
298
299 raw_spin_unlock_irqrestore(&die_lock, flags);
300
297 if (ret != NOTIFY_STOP) 301 if (ret != NOTIFY_STOP)
298 do_exit(SIGSEGV); 302 do_exit(SIGSEGV);
299} 303}
@@ -519,7 +523,7 @@ static void cntfrq_read_handler(unsigned int esr, struct pt_regs *regs)
519{ 523{
520 int rt = (esr & ESR_ELx_SYS64_ISS_RT_MASK) >> ESR_ELx_SYS64_ISS_RT_SHIFT; 524 int rt = (esr & ESR_ELx_SYS64_ISS_RT_MASK) >> ESR_ELx_SYS64_ISS_RT_SHIFT;
521 525
522 pt_regs_write_reg(regs, rt, read_sysreg(cntfrq_el0)); 526 pt_regs_write_reg(regs, rt, arch_timer_get_rate());
523 regs->pc += 4; 527 regs->pc += 4;
524} 528}
525 529
diff --git a/arch/arm64/kvm/sys_regs.c b/arch/arm64/kvm/sys_regs.c
index 77862881ae86..2e070d3baf9f 100644
--- a/arch/arm64/kvm/sys_regs.c
+++ b/arch/arm64/kvm/sys_regs.c
@@ -764,7 +764,7 @@ static bool access_pmovs(struct kvm_vcpu *vcpu, struct sys_reg_params *p,
764 if (p->is_write) { 764 if (p->is_write) {
765 if (r->CRm & 0x2) 765 if (r->CRm & 0x2)
766 /* accessing PMOVSSET_EL0 */ 766 /* accessing PMOVSSET_EL0 */
767 kvm_pmu_overflow_set(vcpu, p->regval & mask); 767 vcpu_sys_reg(vcpu, PMOVSSET_EL0) |= (p->regval & mask);
768 else 768 else
769 /* accessing PMOVSCLR_EL0 */ 769 /* accessing PMOVSCLR_EL0 */
770 vcpu_sys_reg(vcpu, PMOVSSET_EL0) &= ~(p->regval & mask); 770 vcpu_sys_reg(vcpu, PMOVSSET_EL0) &= ~(p->regval & mask);
diff --git a/arch/arm64/lib/copy_page.S b/arch/arm64/lib/copy_page.S
index c3cd65e31814..076c43715e64 100644
--- a/arch/arm64/lib/copy_page.S
+++ b/arch/arm64/lib/copy_page.S
@@ -30,9 +30,10 @@
30 */ 30 */
31ENTRY(copy_page) 31ENTRY(copy_page)
32alternative_if ARM64_HAS_NO_HW_PREFETCH 32alternative_if ARM64_HAS_NO_HW_PREFETCH
33 # Prefetch two cache lines ahead. 33 // Prefetch three cache lines ahead.
34 prfm pldl1strm, [x1, #128] 34 prfm pldl1strm, [x1, #128]
35 prfm pldl1strm, [x1, #256] 35 prfm pldl1strm, [x1, #256]
36 prfm pldl1strm, [x1, #384]
36alternative_else_nop_endif 37alternative_else_nop_endif
37 38
38 ldp x2, x3, [x1] 39 ldp x2, x3, [x1]
@@ -50,7 +51,7 @@ alternative_else_nop_endif
50 subs x18, x18, #128 51 subs x18, x18, #128
51 52
52alternative_if ARM64_HAS_NO_HW_PREFETCH 53alternative_if ARM64_HAS_NO_HW_PREFETCH
53 prfm pldl1strm, [x1, #384] 54 prfm pldl1strm, [x1, #384]
54alternative_else_nop_endif 55alternative_else_nop_endif
55 56
56 stnp x2, x3, [x0] 57 stnp x2, x3, [x0]
diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c
index e90cd1db42a8..f27d4dd04384 100644
--- a/arch/arm64/mm/dma-mapping.c
+++ b/arch/arm64/mm/dma-mapping.c
@@ -329,7 +329,7 @@ static int __swiotlb_mmap(struct device *dev,
329 vma->vm_page_prot = __get_dma_pgprot(attrs, vma->vm_page_prot, 329 vma->vm_page_prot = __get_dma_pgprot(attrs, vma->vm_page_prot,
330 is_device_dma_coherent(dev)); 330 is_device_dma_coherent(dev));
331 331
332 if (dma_mmap_from_coherent(dev, vma, cpu_addr, size, &ret)) 332 if (dma_mmap_from_dev_coherent(dev, vma, cpu_addr, size, &ret))
333 return ret; 333 return ret;
334 334
335 return __swiotlb_mmap_pfn(vma, pfn, size); 335 return __swiotlb_mmap_pfn(vma, pfn, size);
@@ -706,7 +706,7 @@ static int __iommu_mmap_attrs(struct device *dev, struct vm_area_struct *vma,
706 vma->vm_page_prot = __get_dma_pgprot(attrs, vma->vm_page_prot, 706 vma->vm_page_prot = __get_dma_pgprot(attrs, vma->vm_page_prot,
707 is_device_dma_coherent(dev)); 707 is_device_dma_coherent(dev));
708 708
709 if (dma_mmap_from_coherent(dev, vma, cpu_addr, size, &ret)) 709 if (dma_mmap_from_dev_coherent(dev, vma, cpu_addr, size, &ret))
710 return ret; 710 return ret;
711 711
712 if (attrs & DMA_ATTR_FORCE_CONTIGUOUS) { 712 if (attrs & DMA_ATTR_FORCE_CONTIGUOUS) {
diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c
index c7861c9864e6..1f22a41565a3 100644
--- a/arch/arm64/mm/fault.c
+++ b/arch/arm64/mm/fault.c
@@ -163,26 +163,27 @@ int ptep_set_access_flags(struct vm_area_struct *vma,
163 /* only preserve the access flags and write permission */ 163 /* only preserve the access flags and write permission */
164 pte_val(entry) &= PTE_AF | PTE_WRITE | PTE_DIRTY; 164 pte_val(entry) &= PTE_AF | PTE_WRITE | PTE_DIRTY;
165 165
166 /* 166 /* set PTE_RDONLY if actual read-only or clean PTE */
167 * PTE_RDONLY is cleared by default in the asm below, so set it in
168 * back if necessary (read-only or clean PTE).
169 */
170 if (!pte_write(entry) || !pte_sw_dirty(entry)) 167 if (!pte_write(entry) || !pte_sw_dirty(entry))
171 pte_val(entry) |= PTE_RDONLY; 168 pte_val(entry) |= PTE_RDONLY;
172 169
173 /* 170 /*
174 * Setting the flags must be done atomically to avoid racing with the 171 * Setting the flags must be done atomically to avoid racing with the
175 * hardware update of the access/dirty state. 172 * hardware update of the access/dirty state. The PTE_RDONLY bit must
173 * be set to the most permissive (lowest value) of *ptep and entry
174 * (calculated as: a & b == ~(~a | ~b)).
176 */ 175 */
176 pte_val(entry) ^= PTE_RDONLY;
177 asm volatile("// ptep_set_access_flags\n" 177 asm volatile("// ptep_set_access_flags\n"
178 " prfm pstl1strm, %2\n" 178 " prfm pstl1strm, %2\n"
179 "1: ldxr %0, %2\n" 179 "1: ldxr %0, %2\n"
180 " and %0, %0, %3 // clear PTE_RDONLY\n" 180 " eor %0, %0, %3 // negate PTE_RDONLY in *ptep\n"
181 " orr %0, %0, %4 // set flags\n" 181 " orr %0, %0, %4 // set flags\n"
182 " eor %0, %0, %3 // negate final PTE_RDONLY\n"
182 " stxr %w1, %0, %2\n" 183 " stxr %w1, %0, %2\n"
183 " cbnz %w1, 1b\n" 184 " cbnz %w1, 1b\n"
184 : "=&r" (old_pteval), "=&r" (tmp), "+Q" (pte_val(*ptep)) 185 : "=&r" (old_pteval), "=&r" (tmp), "+Q" (pte_val(*ptep))
185 : "L" (~PTE_RDONLY), "r" (pte_val(entry))); 186 : "L" (PTE_RDONLY), "r" (pte_val(entry)));
186 187
187 flush_tlb_fix_spurious_fault(vma, address); 188 flush_tlb_fix_spurious_fault(vma, address);
188 return 1; 189 return 1;
@@ -434,8 +435,11 @@ retry:
434 * the mmap_sem because it would already be released 435 * the mmap_sem because it would already be released
435 * in __lock_page_or_retry in mm/filemap.c. 436 * in __lock_page_or_retry in mm/filemap.c.
436 */ 437 */
437 if (fatal_signal_pending(current)) 438 if (fatal_signal_pending(current)) {
439 if (!user_mode(regs))
440 goto no_context;
438 return 0; 441 return 0;
442 }
439 443
440 /* 444 /*
441 * Clear FAULT_FLAG_ALLOW_RETRY to avoid any risk of 445 * Clear FAULT_FLAG_ALLOW_RETRY to avoid any risk of
diff --git a/arch/arm64/mm/mmu.c b/arch/arm64/mm/mmu.c
index 23c2d89a362e..f1eb15e0e864 100644
--- a/arch/arm64/mm/mmu.c
+++ b/arch/arm64/mm/mmu.c
@@ -496,7 +496,7 @@ void mark_rodata_ro(void)
496 496
497static void __init map_kernel_segment(pgd_t *pgd, void *va_start, void *va_end, 497static void __init map_kernel_segment(pgd_t *pgd, void *va_start, void *va_end,
498 pgprot_t prot, struct vm_struct *vma, 498 pgprot_t prot, struct vm_struct *vma,
499 int flags) 499 int flags, unsigned long vm_flags)
500{ 500{
501 phys_addr_t pa_start = __pa_symbol(va_start); 501 phys_addr_t pa_start = __pa_symbol(va_start);
502 unsigned long size = va_end - va_start; 502 unsigned long size = va_end - va_start;
@@ -507,10 +507,13 @@ static void __init map_kernel_segment(pgd_t *pgd, void *va_start, void *va_end,
507 __create_pgd_mapping(pgd, pa_start, (unsigned long)va_start, size, prot, 507 __create_pgd_mapping(pgd, pa_start, (unsigned long)va_start, size, prot,
508 early_pgtable_alloc, flags); 508 early_pgtable_alloc, flags);
509 509
510 if (!(vm_flags & VM_NO_GUARD))
511 size += PAGE_SIZE;
512
510 vma->addr = va_start; 513 vma->addr = va_start;
511 vma->phys_addr = pa_start; 514 vma->phys_addr = pa_start;
512 vma->size = size; 515 vma->size = size;
513 vma->flags = VM_MAP; 516 vma->flags = VM_MAP | vm_flags;
514 vma->caller = __builtin_return_address(0); 517 vma->caller = __builtin_return_address(0);
515 518
516 vm_area_add_early(vma); 519 vm_area_add_early(vma);
@@ -541,14 +544,15 @@ static void __init map_kernel(pgd_t *pgd)
541 * Only rodata will be remapped with different permissions later on, 544 * Only rodata will be remapped with different permissions later on,
542 * all other segments are allowed to use contiguous mappings. 545 * all other segments are allowed to use contiguous mappings.
543 */ 546 */
544 map_kernel_segment(pgd, _text, _etext, text_prot, &vmlinux_text, 0); 547 map_kernel_segment(pgd, _text, _etext, text_prot, &vmlinux_text, 0,
548 VM_NO_GUARD);
545 map_kernel_segment(pgd, __start_rodata, __inittext_begin, PAGE_KERNEL, 549 map_kernel_segment(pgd, __start_rodata, __inittext_begin, PAGE_KERNEL,
546 &vmlinux_rodata, NO_CONT_MAPPINGS); 550 &vmlinux_rodata, NO_CONT_MAPPINGS, VM_NO_GUARD);
547 map_kernel_segment(pgd, __inittext_begin, __inittext_end, text_prot, 551 map_kernel_segment(pgd, __inittext_begin, __inittext_end, text_prot,
548 &vmlinux_inittext, 0); 552 &vmlinux_inittext, 0, VM_NO_GUARD);
549 map_kernel_segment(pgd, __initdata_begin, __initdata_end, PAGE_KERNEL, 553 map_kernel_segment(pgd, __initdata_begin, __initdata_end, PAGE_KERNEL,
550 &vmlinux_initdata, 0); 554 &vmlinux_initdata, 0, VM_NO_GUARD);
551 map_kernel_segment(pgd, _data, _end, PAGE_KERNEL, &vmlinux_data, 0); 555 map_kernel_segment(pgd, _data, _end, PAGE_KERNEL, &vmlinux_data, 0, 0);
552 556
553 if (!pgd_val(*pgd_offset_raw(pgd, FIXADDR_START))) { 557 if (!pgd_val(*pgd_offset_raw(pgd, FIXADDR_START))) {
554 /* 558 /*
diff --git a/arch/arm64/mm/numa.c b/arch/arm64/mm/numa.c
index b388a99fea7b..dad128ba98bf 100644
--- a/arch/arm64/mm/numa.c
+++ b/arch/arm64/mm/numa.c
@@ -208,8 +208,6 @@ int __init numa_add_memblk(int nid, u64 start, u64 end)
208 } 208 }
209 209
210 node_set(nid, numa_nodes_parsed); 210 node_set(nid, numa_nodes_parsed);
211 pr_info("Adding memblock [0x%llx - 0x%llx] on node %d\n",
212 start, (end - 1), nid);
213 return ret; 211 return ret;
214} 212}
215 213
@@ -223,10 +221,7 @@ static void __init setup_node_data(int nid, u64 start_pfn, u64 end_pfn)
223 void *nd; 221 void *nd;
224 int tnid; 222 int tnid;
225 223
226 if (start_pfn < end_pfn) 224 if (start_pfn >= end_pfn)
227 pr_info("Initmem setup node %d [mem %#010Lx-%#010Lx]\n", nid,
228 start_pfn << PAGE_SHIFT, (end_pfn << PAGE_SHIFT) - 1);
229 else
230 pr_info("Initmem setup node %d [<memory-less node>]\n", nid); 225 pr_info("Initmem setup node %d [<memory-less node>]\n", nid);
231 226
232 nd_pa = memblock_alloc_try_nid(nd_size, SMP_CACHE_BYTES, nid); 227 nd_pa = memblock_alloc_try_nid(nd_size, SMP_CACHE_BYTES, nid);
diff --git a/arch/blackfin/include/asm/bug.h b/arch/blackfin/include/asm/bug.h
index 8d9b1eba89c4..76b2e82ee730 100644
--- a/arch/blackfin/include/asm/bug.h
+++ b/arch/blackfin/include/asm/bug.h
@@ -21,7 +21,7 @@
21#define _BUG_OR_WARN(flags) \ 21#define _BUG_OR_WARN(flags) \
22 asm volatile( \ 22 asm volatile( \
23 "1: .hword %0\n" \ 23 "1: .hword %0\n" \
24 " .section __bug_table,\"a\",@progbits\n" \ 24 " .section __bug_table,\"aw\",@progbits\n" \
25 "2: .long 1b\n" \ 25 "2: .long 1b\n" \
26 " .long %1\n" \ 26 " .long %1\n" \
27 " .short %2\n" \ 27 " .short %2\n" \
@@ -38,7 +38,7 @@
38#define _BUG_OR_WARN(flags) \ 38#define _BUG_OR_WARN(flags) \
39 asm volatile( \ 39 asm volatile( \
40 "1: .hword %0\n" \ 40 "1: .hword %0\n" \
41 " .section __bug_table,\"a\",@progbits\n" \ 41 " .section __bug_table,\"aw\",@progbits\n" \
42 "2: .long 1b\n" \ 42 "2: .long 1b\n" \
43 " .short %1\n" \ 43 " .short %1\n" \
44 " .org 2b + %2\n" \ 44 " .org 2b + %2\n" \
diff --git a/arch/ia64/include/asm/tlb.h b/arch/ia64/include/asm/tlb.h
index fced197b9626..cbe5ac3699bf 100644
--- a/arch/ia64/include/asm/tlb.h
+++ b/arch/ia64/include/asm/tlb.h
@@ -168,7 +168,8 @@ static inline void __tlb_alloc_page(struct mmu_gather *tlb)
168 168
169 169
170static inline void 170static inline void
171tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned long start, unsigned long end) 171arch_tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm,
172 unsigned long start, unsigned long end)
172{ 173{
173 tlb->mm = mm; 174 tlb->mm = mm;
174 tlb->max = ARRAY_SIZE(tlb->local); 175 tlb->max = ARRAY_SIZE(tlb->local);
@@ -185,8 +186,11 @@ tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned long start
185 * collected. 186 * collected.
186 */ 187 */
187static inline void 188static inline void
188tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end) 189arch_tlb_finish_mmu(struct mmu_gather *tlb,
190 unsigned long start, unsigned long end, bool force)
189{ 191{
192 if (force)
193 tlb->need_flush = 1;
190 /* 194 /*
191 * Note: tlb->nr may be 0 at this point, so we can't rely on tlb->start_addr and 195 * Note: tlb->nr may be 0 at this point, so we can't rely on tlb->start_addr and
192 * tlb->end_addr. 196 * tlb->end_addr.
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 8dd20358464f..48d91d5be4e9 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -2260,7 +2260,7 @@ config CPU_R4K_CACHE_TLB
2260 2260
2261config MIPS_MT_SMP 2261config MIPS_MT_SMP
2262 bool "MIPS MT SMP support (1 TC on each available VPE)" 2262 bool "MIPS MT SMP support (1 TC on each available VPE)"
2263 depends on SYS_SUPPORTS_MULTITHREADING && !CPU_MIPSR6 2263 depends on SYS_SUPPORTS_MULTITHREADING && !CPU_MIPSR6 && !CPU_MICROMIPS
2264 select CPU_MIPSR2_IRQ_VI 2264 select CPU_MIPSR2_IRQ_VI
2265 select CPU_MIPSR2_IRQ_EI 2265 select CPU_MIPSR2_IRQ_EI
2266 select SYNC_R4K 2266 select SYNC_R4K
diff --git a/arch/mips/Makefile b/arch/mips/Makefile
index 04343625b929..bc2708c9ada4 100644
--- a/arch/mips/Makefile
+++ b/arch/mips/Makefile
@@ -243,8 +243,21 @@ include arch/mips/Kbuild.platforms
243ifdef CONFIG_PHYSICAL_START 243ifdef CONFIG_PHYSICAL_START
244load-y = $(CONFIG_PHYSICAL_START) 244load-y = $(CONFIG_PHYSICAL_START)
245endif 245endif
246entry-y = 0x$(shell $(NM) vmlinux 2>/dev/null \ 246
247entry-noisa-y = 0x$(shell $(NM) vmlinux 2>/dev/null \
247 | grep "\bkernel_entry\b" | cut -f1 -d \ ) 248 | grep "\bkernel_entry\b" | cut -f1 -d \ )
249ifdef CONFIG_CPU_MICROMIPS
250 #
251 # Set the ISA bit, since the kernel_entry symbol in the ELF will have it
252 # clear which would lead to images containing addresses which bootloaders may
253 # jump to as MIPS32 code.
254 #
255 entry-y = $(patsubst %0,%1,$(patsubst %2,%3,$(patsubst %4,%5, \
256 $(patsubst %6,%7,$(patsubst %8,%9,$(patsubst %a,%b, \
257 $(patsubst %c,%d,$(patsubst %e,%f,$(entry-noisa-y)))))))))
258else
259 entry-y = $(entry-noisa-y)
260endif
248 261
249cflags-y += -I$(srctree)/arch/mips/include/asm/mach-generic 262cflags-y += -I$(srctree)/arch/mips/include/asm/mach-generic
250drivers-$(CONFIG_PCI) += arch/mips/pci/ 263drivers-$(CONFIG_PCI) += arch/mips/pci/
diff --git a/arch/mips/boot/compressed/.gitignore b/arch/mips/boot/compressed/.gitignore
new file mode 100644
index 000000000000..ebae133f1d00
--- /dev/null
+++ b/arch/mips/boot/compressed/.gitignore
@@ -0,0 +1,2 @@
1ashldi3.c
2bswapsi.c
diff --git a/arch/mips/cavium-octeon/octeon-usb.c b/arch/mips/cavium-octeon/octeon-usb.c
index 542be1cd0f32..bfdfaf32d2c4 100644
--- a/arch/mips/cavium-octeon/octeon-usb.c
+++ b/arch/mips/cavium-octeon/octeon-usb.c
@@ -13,9 +13,9 @@
13#include <linux/mutex.h> 13#include <linux/mutex.h>
14#include <linux/delay.h> 14#include <linux/delay.h>
15#include <linux/of_platform.h> 15#include <linux/of_platform.h>
16#include <linux/io.h>
16 17
17#include <asm/octeon/octeon.h> 18#include <asm/octeon/octeon.h>
18#include <asm/octeon/cvmx-gpio-defs.h>
19 19
20/* USB Control Register */ 20/* USB Control Register */
21union cvm_usbdrd_uctl_ctl { 21union cvm_usbdrd_uctl_ctl {
diff --git a/arch/mips/dec/int-handler.S b/arch/mips/dec/int-handler.S
index 1910223a9c02..cea2bb1621e6 100644
--- a/arch/mips/dec/int-handler.S
+++ b/arch/mips/dec/int-handler.S
@@ -147,23 +147,12 @@
147 * Find irq with highest priority 147 * Find irq with highest priority
148 */ 148 */
149 # open coded PTR_LA t1, cpu_mask_nr_tbl 149 # open coded PTR_LA t1, cpu_mask_nr_tbl
150#if (_MIPS_SZPTR == 32) 150#if defined(CONFIG_32BIT) || defined(KBUILD_64BIT_SYM32)
151 # open coded la t1, cpu_mask_nr_tbl 151 # open coded la t1, cpu_mask_nr_tbl
152 lui t1, %hi(cpu_mask_nr_tbl) 152 lui t1, %hi(cpu_mask_nr_tbl)
153 addiu t1, %lo(cpu_mask_nr_tbl) 153 addiu t1, %lo(cpu_mask_nr_tbl)
154 154#else
155#endif 155#error GCC `-msym32' option required for 64-bit DECstation builds
156#if (_MIPS_SZPTR == 64)
157 # open coded dla t1, cpu_mask_nr_tbl
158 .set push
159 .set noat
160 lui t1, %highest(cpu_mask_nr_tbl)
161 lui AT, %hi(cpu_mask_nr_tbl)
162 daddiu t1, t1, %higher(cpu_mask_nr_tbl)
163 daddiu AT, AT, %lo(cpu_mask_nr_tbl)
164 dsll t1, 32
165 daddu t1, t1, AT
166 .set pop
167#endif 156#endif
1681: lw t2,(t1) 1571: lw t2,(t1)
169 nop 158 nop
@@ -214,23 +203,12 @@
214 * Find irq with highest priority 203 * Find irq with highest priority
215 */ 204 */
216 # open coded PTR_LA t1,asic_mask_nr_tbl 205 # open coded PTR_LA t1,asic_mask_nr_tbl
217#if (_MIPS_SZPTR == 32) 206#if defined(CONFIG_32BIT) || defined(KBUILD_64BIT_SYM32)
218 # open coded la t1, asic_mask_nr_tbl 207 # open coded la t1, asic_mask_nr_tbl
219 lui t1, %hi(asic_mask_nr_tbl) 208 lui t1, %hi(asic_mask_nr_tbl)
220 addiu t1, %lo(asic_mask_nr_tbl) 209 addiu t1, %lo(asic_mask_nr_tbl)
221 210#else
222#endif 211#error GCC `-msym32' option required for 64-bit DECstation builds
223#if (_MIPS_SZPTR == 64)
224 # open coded dla t1, asic_mask_nr_tbl
225 .set push
226 .set noat
227 lui t1, %highest(asic_mask_nr_tbl)
228 lui AT, %hi(asic_mask_nr_tbl)
229 daddiu t1, t1, %higher(asic_mask_nr_tbl)
230 daddiu AT, AT, %lo(asic_mask_nr_tbl)
231 dsll t1, 32
232 daddu t1, t1, AT
233 .set pop
234#endif 212#endif
2352: lw t2,(t1) 2132: lw t2,(t1)
236 nop 214 nop
diff --git a/arch/mips/include/asm/cache.h b/arch/mips/include/asm/cache.h
index fc67947ed658..8b14c2706aa5 100644
--- a/arch/mips/include/asm/cache.h
+++ b/arch/mips/include/asm/cache.h
@@ -9,6 +9,8 @@
9#ifndef _ASM_CACHE_H 9#ifndef _ASM_CACHE_H
10#define _ASM_CACHE_H 10#define _ASM_CACHE_H
11 11
12#include <kmalloc.h>
13
12#define L1_CACHE_SHIFT CONFIG_MIPS_L1_CACHE_SHIFT 14#define L1_CACHE_SHIFT CONFIG_MIPS_L1_CACHE_SHIFT
13#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT) 15#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
14 16
diff --git a/arch/mips/include/asm/cpu-features.h b/arch/mips/include/asm/cpu-features.h
index 8baa9033b181..721b698bfe3c 100644
--- a/arch/mips/include/asm/cpu-features.h
+++ b/arch/mips/include/asm/cpu-features.h
@@ -428,6 +428,9 @@
428#ifndef cpu_scache_line_size 428#ifndef cpu_scache_line_size
429#define cpu_scache_line_size() cpu_data[0].scache.linesz 429#define cpu_scache_line_size() cpu_data[0].scache.linesz
430#endif 430#endif
431#ifndef cpu_tcache_line_size
432#define cpu_tcache_line_size() cpu_data[0].tcache.linesz
433#endif
431 434
432#ifndef cpu_hwrena_impl_bits 435#ifndef cpu_hwrena_impl_bits
433#define cpu_hwrena_impl_bits 0 436#define cpu_hwrena_impl_bits 0
diff --git a/arch/mips/include/asm/mach-ralink/ralink_regs.h b/arch/mips/include/asm/mach-ralink/ralink_regs.h
index 9df1a53bcb36..b4e7dfa214eb 100644
--- a/arch/mips/include/asm/mach-ralink/ralink_regs.h
+++ b/arch/mips/include/asm/mach-ralink/ralink_regs.h
@@ -13,6 +13,8 @@
13#ifndef _RALINK_REGS_H_ 13#ifndef _RALINK_REGS_H_
14#define _RALINK_REGS_H_ 14#define _RALINK_REGS_H_
15 15
16#include <linux/io.h>
17
16enum ralink_soc_type { 18enum ralink_soc_type {
17 RALINK_UNKNOWN = 0, 19 RALINK_UNKNOWN = 0,
18 RT2880_SOC, 20 RT2880_SOC,
diff --git a/arch/mips/include/asm/octeon/cvmx-l2c-defs.h b/arch/mips/include/asm/octeon/cvmx-l2c-defs.h
index d045973ddb33..3ea84acf1814 100644
--- a/arch/mips/include/asm/octeon/cvmx-l2c-defs.h
+++ b/arch/mips/include/asm/octeon/cvmx-l2c-defs.h
@@ -33,6 +33,10 @@
33#define CVMX_L2C_DBG (CVMX_ADD_IO_SEG(0x0001180080000030ull)) 33#define CVMX_L2C_DBG (CVMX_ADD_IO_SEG(0x0001180080000030ull))
34#define CVMX_L2C_CFG (CVMX_ADD_IO_SEG(0x0001180080000000ull)) 34#define CVMX_L2C_CFG (CVMX_ADD_IO_SEG(0x0001180080000000ull))
35#define CVMX_L2C_CTL (CVMX_ADD_IO_SEG(0x0001180080800000ull)) 35#define CVMX_L2C_CTL (CVMX_ADD_IO_SEG(0x0001180080800000ull))
36#define CVMX_L2C_ERR_TDTX(block_id) \
37 (CVMX_ADD_IO_SEG(0x0001180080A007E0ull) + ((block_id) & 3) * 0x40000ull)
38#define CVMX_L2C_ERR_TTGX(block_id) \
39 (CVMX_ADD_IO_SEG(0x0001180080A007E8ull) + ((block_id) & 3) * 0x40000ull)
36#define CVMX_L2C_LCKBASE (CVMX_ADD_IO_SEG(0x0001180080000058ull)) 40#define CVMX_L2C_LCKBASE (CVMX_ADD_IO_SEG(0x0001180080000058ull))
37#define CVMX_L2C_LCKOFF (CVMX_ADD_IO_SEG(0x0001180080000060ull)) 41#define CVMX_L2C_LCKOFF (CVMX_ADD_IO_SEG(0x0001180080000060ull))
38#define CVMX_L2C_PFCTL (CVMX_ADD_IO_SEG(0x0001180080000090ull)) 42#define CVMX_L2C_PFCTL (CVMX_ADD_IO_SEG(0x0001180080000090ull))
@@ -66,9 +70,40 @@
66 ((offset) & 1) * 8) 70 ((offset) & 1) * 8)
67#define CVMX_L2C_WPAR_PPX(offset) (CVMX_ADD_IO_SEG(0x0001180080840000ull) + \ 71#define CVMX_L2C_WPAR_PPX(offset) (CVMX_ADD_IO_SEG(0x0001180080840000ull) + \
68 ((offset) & 31) * 8) 72 ((offset) & 31) * 8)
69#define CVMX_L2D_FUS3 (CVMX_ADD_IO_SEG(0x00011800800007B8ull))
70 73
71 74
75union cvmx_l2c_err_tdtx {
76 uint64_t u64;
77 struct cvmx_l2c_err_tdtx_s {
78 __BITFIELD_FIELD(uint64_t dbe:1,
79 __BITFIELD_FIELD(uint64_t sbe:1,
80 __BITFIELD_FIELD(uint64_t vdbe:1,
81 __BITFIELD_FIELD(uint64_t vsbe:1,
82 __BITFIELD_FIELD(uint64_t syn:10,
83 __BITFIELD_FIELD(uint64_t reserved_22_49:28,
84 __BITFIELD_FIELD(uint64_t wayidx:18,
85 __BITFIELD_FIELD(uint64_t reserved_2_3:2,
86 __BITFIELD_FIELD(uint64_t type:2,
87 ;)))))))))
88 } s;
89};
90
91union cvmx_l2c_err_ttgx {
92 uint64_t u64;
93 struct cvmx_l2c_err_ttgx_s {
94 __BITFIELD_FIELD(uint64_t dbe:1,
95 __BITFIELD_FIELD(uint64_t sbe:1,
96 __BITFIELD_FIELD(uint64_t noway:1,
97 __BITFIELD_FIELD(uint64_t reserved_56_60:5,
98 __BITFIELD_FIELD(uint64_t syn:6,
99 __BITFIELD_FIELD(uint64_t reserved_22_49:28,
100 __BITFIELD_FIELD(uint64_t wayidx:15,
101 __BITFIELD_FIELD(uint64_t reserved_2_6:5,
102 __BITFIELD_FIELD(uint64_t type:2,
103 ;)))))))))
104 } s;
105};
106
72union cvmx_l2c_cfg { 107union cvmx_l2c_cfg {
73 uint64_t u64; 108 uint64_t u64;
74 struct cvmx_l2c_cfg_s { 109 struct cvmx_l2c_cfg_s {
diff --git a/arch/mips/include/asm/octeon/cvmx-l2d-defs.h b/arch/mips/include/asm/octeon/cvmx-l2d-defs.h
new file mode 100644
index 000000000000..a951ad5d65ad
--- /dev/null
+++ b/arch/mips/include/asm/octeon/cvmx-l2d-defs.h
@@ -0,0 +1,60 @@
1/***********************license start***************
2 * Author: Cavium Networks
3 *
4 * Contact: support@caviumnetworks.com
5 * This file is part of the OCTEON SDK
6 *
7 * Copyright (c) 2003-2017 Cavium, Inc.
8 *
9 * This file is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License, Version 2, as
11 * published by the Free Software Foundation.
12 *
13 * This file is distributed in the hope that it will be useful, but
14 * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty
15 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or
16 * NONINFRINGEMENT. See the GNU General Public License for more
17 * details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this file; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22 * or visit http://www.gnu.org/licenses/.
23 *
24 * This file may also be available under a different license from Cavium.
25 * Contact Cavium Networks for more information
26 ***********************license end**************************************/
27
28#ifndef __CVMX_L2D_DEFS_H__
29#define __CVMX_L2D_DEFS_H__
30
31#define CVMX_L2D_ERR (CVMX_ADD_IO_SEG(0x0001180080000010ull))
32#define CVMX_L2D_FUS3 (CVMX_ADD_IO_SEG(0x00011800800007B8ull))
33
34
35union cvmx_l2d_err {
36 uint64_t u64;
37 struct cvmx_l2d_err_s {
38 __BITFIELD_FIELD(uint64_t reserved_6_63:58,
39 __BITFIELD_FIELD(uint64_t bmhclsel:1,
40 __BITFIELD_FIELD(uint64_t ded_err:1,
41 __BITFIELD_FIELD(uint64_t sec_err:1,
42 __BITFIELD_FIELD(uint64_t ded_intena:1,
43 __BITFIELD_FIELD(uint64_t sec_intena:1,
44 __BITFIELD_FIELD(uint64_t ecc_ena:1,
45 ;)))))))
46 } s;
47};
48
49union cvmx_l2d_fus3 {
50 uint64_t u64;
51 struct cvmx_l2d_fus3_s {
52 __BITFIELD_FIELD(uint64_t reserved_40_63:24,
53 __BITFIELD_FIELD(uint64_t ema_ctl:3,
54 __BITFIELD_FIELD(uint64_t reserved_34_36:3,
55 __BITFIELD_FIELD(uint64_t q3fus:34,
56 ;))))
57 } s;
58};
59
60#endif
diff --git a/arch/mips/include/asm/octeon/cvmx.h b/arch/mips/include/asm/octeon/cvmx.h
index 9742202f2a32..e638735cc3ac 100644
--- a/arch/mips/include/asm/octeon/cvmx.h
+++ b/arch/mips/include/asm/octeon/cvmx.h
@@ -62,6 +62,7 @@ enum cvmx_mips_space {
62#include <asm/octeon/cvmx-iob-defs.h> 62#include <asm/octeon/cvmx-iob-defs.h>
63#include <asm/octeon/cvmx-ipd-defs.h> 63#include <asm/octeon/cvmx-ipd-defs.h>
64#include <asm/octeon/cvmx-l2c-defs.h> 64#include <asm/octeon/cvmx-l2c-defs.h>
65#include <asm/octeon/cvmx-l2d-defs.h>
65#include <asm/octeon/cvmx-l2t-defs.h> 66#include <asm/octeon/cvmx-l2t-defs.h>
66#include <asm/octeon/cvmx-led-defs.h> 67#include <asm/octeon/cvmx-led-defs.h>
67#include <asm/octeon/cvmx-mio-defs.h> 68#include <asm/octeon/cvmx-mio-defs.h>
diff --git a/arch/mips/include/uapi/asm/ioctls.h b/arch/mips/include/uapi/asm/ioctls.h
index 68e19b689a00..1609cb0907ac 100644
--- a/arch/mips/include/uapi/asm/ioctls.h
+++ b/arch/mips/include/uapi/asm/ioctls.h
@@ -91,7 +91,7 @@
91#define TIOCGPKT _IOR('T', 0x38, int) /* Get packet mode state */ 91#define TIOCGPKT _IOR('T', 0x38, int) /* Get packet mode state */
92#define TIOCGPTLCK _IOR('T', 0x39, int) /* Get Pty lock state */ 92#define TIOCGPTLCK _IOR('T', 0x39, int) /* Get Pty lock state */
93#define TIOCGEXCL _IOR('T', 0x40, int) /* Get exclusive mode state */ 93#define TIOCGEXCL _IOR('T', 0x40, int) /* Get exclusive mode state */
94#define TIOCGPTPEER _IOR('T', 0x41, int) /* Safely open the slave */ 94#define TIOCGPTPEER _IO('T', 0x41) /* Safely open the slave */
95 95
96/* I hope the range from 0x5480 on is free ... */ 96/* I hope the range from 0x5480 on is free ... */
97#define TIOCSCTTY 0x5480 /* become controlling tty */ 97#define TIOCSCTTY 0x5480 /* become controlling tty */
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c
index 770d4d1516cb..6bace7695788 100644
--- a/arch/mips/kernel/smp.c
+++ b/arch/mips/kernel/smp.c
@@ -376,9 +376,6 @@ asmlinkage void start_secondary(void)
376 cpumask_set_cpu(cpu, &cpu_coherent_mask); 376 cpumask_set_cpu(cpu, &cpu_coherent_mask);
377 notify_cpu_starting(cpu); 377 notify_cpu_starting(cpu);
378 378
379 complete(&cpu_running);
380 synchronise_count_slave(cpu);
381
382 set_cpu_online(cpu, true); 379 set_cpu_online(cpu, true);
383 380
384 set_cpu_sibling_map(cpu); 381 set_cpu_sibling_map(cpu);
@@ -386,6 +383,9 @@ asmlinkage void start_secondary(void)
386 383
387 calculate_cpu_foreign_map(); 384 calculate_cpu_foreign_map();
388 385
386 complete(&cpu_running);
387 synchronise_count_slave(cpu);
388
389 /* 389 /*
390 * irq will be enabled in ->smp_finish(), enabling it too early 390 * irq will be enabled in ->smp_finish(), enabling it too early
391 * is dangerous. 391 * is dangerous.
diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c
index e08598c70b3e..8e78251eccc2 100644
--- a/arch/mips/mm/dma-default.c
+++ b/arch/mips/mm/dma-default.c
@@ -232,7 +232,7 @@ static int mips_dma_mmap(struct device *dev, struct vm_area_struct *vma,
232 else 232 else
233 vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); 233 vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
234 234
235 if (dma_mmap_from_coherent(dev, vma, cpu_addr, size, &ret)) 235 if (dma_mmap_from_dev_coherent(dev, vma, cpu_addr, size, &ret))
236 return ret; 236 return ret;
237 237
238 if (off < count && user_count <= (count - off)) { 238 if (off < count && user_count <= (count - off)) {
diff --git a/arch/mips/mm/uasm-mips.c b/arch/mips/mm/uasm-mips.c
index 3f74f6c1f065..9fea6c6bbf49 100644
--- a/arch/mips/mm/uasm-mips.c
+++ b/arch/mips/mm/uasm-mips.c
@@ -48,7 +48,7 @@
48 48
49#include "uasm.c" 49#include "uasm.c"
50 50
51static const struct insn const insn_table[insn_invalid] = { 51static const struct insn insn_table[insn_invalid] = {
52 [insn_addiu] = {M(addiu_op, 0, 0, 0, 0, 0), RS | RT | SIMM}, 52 [insn_addiu] = {M(addiu_op, 0, 0, 0, 0, 0), RS | RT | SIMM},
53 [insn_addu] = {M(spec_op, 0, 0, 0, 0, addu_op), RS | RT | RD}, 53 [insn_addu] = {M(spec_op, 0, 0, 0, 0, addu_op), RS | RT | RD},
54 [insn_and] = {M(spec_op, 0, 0, 0, 0, and_op), RS | RT | RD}, 54 [insn_and] = {M(spec_op, 0, 0, 0, 0, and_op), RS | RT | RD},
diff --git a/arch/mips/net/ebpf_jit.c b/arch/mips/net/ebpf_jit.c
new file mode 100644
index 000000000000..3f87b96da5c4
--- /dev/null
+++ b/arch/mips/net/ebpf_jit.c
@@ -0,0 +1,1950 @@
1/*
2 * Just-In-Time compiler for eBPF filters on MIPS
3 *
4 * Copyright (c) 2017 Cavium, Inc.
5 *
6 * Based on code from:
7 *
8 * Copyright (c) 2014 Imagination Technologies Ltd.
9 * Author: Markos Chandras <markos.chandras@imgtec.com>
10 *
11 * This program is free software; you can redistribute it and/or modify it
12 * under the terms of the GNU General Public License as published by the
13 * Free Software Foundation; version 2 of the License.
14 */
15
16#include <linux/bitops.h>
17#include <linux/errno.h>
18#include <linux/filter.h>
19#include <linux/bpf.h>
20#include <linux/slab.h>
21#include <asm/bitops.h>
22#include <asm/byteorder.h>
23#include <asm/cacheflush.h>
24#include <asm/cpu-features.h>
25#include <asm/uasm.h>
26
27/* Registers used by JIT */
28#define MIPS_R_ZERO 0
29#define MIPS_R_AT 1
30#define MIPS_R_V0 2 /* BPF_R0 */
31#define MIPS_R_V1 3
32#define MIPS_R_A0 4 /* BPF_R1 */
33#define MIPS_R_A1 5 /* BPF_R2 */
34#define MIPS_R_A2 6 /* BPF_R3 */
35#define MIPS_R_A3 7 /* BPF_R4 */
36#define MIPS_R_A4 8 /* BPF_R5 */
37#define MIPS_R_T4 12 /* BPF_AX */
38#define MIPS_R_T5 13
39#define MIPS_R_T6 14
40#define MIPS_R_T7 15
41#define MIPS_R_S0 16 /* BPF_R6 */
42#define MIPS_R_S1 17 /* BPF_R7 */
43#define MIPS_R_S2 18 /* BPF_R8 */
44#define MIPS_R_S3 19 /* BPF_R9 */
45#define MIPS_R_S4 20 /* BPF_TCC */
46#define MIPS_R_S5 21
47#define MIPS_R_S6 22
48#define MIPS_R_S7 23
49#define MIPS_R_T8 24
50#define MIPS_R_T9 25
51#define MIPS_R_SP 29
52#define MIPS_R_RA 31
53
54/* eBPF flags */
55#define EBPF_SAVE_S0 BIT(0)
56#define EBPF_SAVE_S1 BIT(1)
57#define EBPF_SAVE_S2 BIT(2)
58#define EBPF_SAVE_S3 BIT(3)
59#define EBPF_SAVE_S4 BIT(4)
60#define EBPF_SAVE_RA BIT(5)
61#define EBPF_SEEN_FP BIT(6)
62#define EBPF_SEEN_TC BIT(7)
63#define EBPF_TCC_IN_V1 BIT(8)
64
65/*
66 * For the mips64 ISA, we need to track the value range or type for
67 * each JIT register. The BPF machine requires zero extended 32-bit
68 * values, but the mips64 ISA requires sign extended 32-bit values.
69 * At each point in the BPF program we track the state of every
70 * register so that we can zero extend or sign extend as the BPF
71 * semantics require.
72 */
73enum reg_val_type {
74 /* uninitialized */
75 REG_UNKNOWN,
76 /* not known to be 32-bit compatible. */
77 REG_64BIT,
78 /* 32-bit compatible, no truncation needed for 64-bit ops. */
79 REG_64BIT_32BIT,
80 /* 32-bit compatible, need truncation for 64-bit ops. */
81 REG_32BIT,
82 /* 32-bit zero extended. */
83 REG_32BIT_ZERO_EX,
84 /* 32-bit no sign/zero extension needed. */
85 REG_32BIT_POS
86};
87
88/*
89 * high bit of offsets indicates if long branch conversion done at
90 * this insn.
91 */
92#define OFFSETS_B_CONV BIT(31)
93
94/**
95 * struct jit_ctx - JIT context
96 * @skf: The sk_filter
97 * @stack_size: eBPF stack size
98 * @tmp_offset: eBPF $sp offset to 8-byte temporary memory
99 * @idx: Instruction index
100 * @flags: JIT flags
101 * @offsets: Instruction offsets
102 * @target: Memory location for the compiled filter
103 * @reg_val_types Packed enum reg_val_type for each register.
104 */
105struct jit_ctx {
106 const struct bpf_prog *skf;
107 int stack_size;
108 int tmp_offset;
109 u32 idx;
110 u32 flags;
111 u32 *offsets;
112 u32 *target;
113 u64 *reg_val_types;
114 unsigned int long_b_conversion:1;
115 unsigned int gen_b_offsets:1;
116};
117
118static void set_reg_val_type(u64 *rvt, int reg, enum reg_val_type type)
119{
120 *rvt &= ~(7ull << (reg * 3));
121 *rvt |= ((u64)type << (reg * 3));
122}
123
124static enum reg_val_type get_reg_val_type(const struct jit_ctx *ctx,
125 int index, int reg)
126{
127 return (ctx->reg_val_types[index] >> (reg * 3)) & 7;
128}
129
130/* Simply emit the instruction if the JIT memory space has been allocated */
131#define emit_instr(ctx, func, ...) \
132do { \
133 if ((ctx)->target != NULL) { \
134 u32 *p = &(ctx)->target[ctx->idx]; \
135 uasm_i_##func(&p, ##__VA_ARGS__); \
136 } \
137 (ctx)->idx++; \
138} while (0)
139
140static unsigned int j_target(struct jit_ctx *ctx, int target_idx)
141{
142 unsigned long target_va, base_va;
143 unsigned int r;
144
145 if (!ctx->target)
146 return 0;
147
148 base_va = (unsigned long)ctx->target;
149 target_va = base_va + (ctx->offsets[target_idx] & ~OFFSETS_B_CONV);
150
151 if ((base_va & ~0x0ffffffful) != (target_va & ~0x0ffffffful))
152 return (unsigned int)-1;
153 r = target_va & 0x0ffffffful;
154 return r;
155}
156
157/* Compute the immediate value for PC-relative branches. */
158static u32 b_imm(unsigned int tgt, struct jit_ctx *ctx)
159{
160 if (!ctx->gen_b_offsets)
161 return 0;
162
163 /*
164 * We want a pc-relative branch. tgt is the instruction offset
165 * we want to jump to.
166
167 * Branch on MIPS:
168 * I: target_offset <- sign_extend(offset)
169 * I+1: PC += target_offset (delay slot)
170 *
171 * ctx->idx currently points to the branch instruction
172 * but the offset is added to the delay slot so we need
173 * to subtract 4.
174 */
175 return (ctx->offsets[tgt] & ~OFFSETS_B_CONV) -
176 (ctx->idx * 4) - 4;
177}
178
179int bpf_jit_enable __read_mostly;
180
181enum which_ebpf_reg {
182 src_reg,
183 src_reg_no_fp,
184 dst_reg,
185 dst_reg_fp_ok
186};
187
188/*
189 * For eBPF, the register mapping naturally falls out of the
190 * requirements of eBPF and the MIPS n64 ABI. We don't maintain a
191 * separate frame pointer, so BPF_REG_10 relative accesses are
192 * adjusted to be $sp relative.
193 */
194int ebpf_to_mips_reg(struct jit_ctx *ctx, const struct bpf_insn *insn,
195 enum which_ebpf_reg w)
196{
197 int ebpf_reg = (w == src_reg || w == src_reg_no_fp) ?
198 insn->src_reg : insn->dst_reg;
199
200 switch (ebpf_reg) {
201 case BPF_REG_0:
202 return MIPS_R_V0;
203 case BPF_REG_1:
204 return MIPS_R_A0;
205 case BPF_REG_2:
206 return MIPS_R_A1;
207 case BPF_REG_3:
208 return MIPS_R_A2;
209 case BPF_REG_4:
210 return MIPS_R_A3;
211 case BPF_REG_5:
212 return MIPS_R_A4;
213 case BPF_REG_6:
214 ctx->flags |= EBPF_SAVE_S0;
215 return MIPS_R_S0;
216 case BPF_REG_7:
217 ctx->flags |= EBPF_SAVE_S1;
218 return MIPS_R_S1;
219 case BPF_REG_8:
220 ctx->flags |= EBPF_SAVE_S2;
221 return MIPS_R_S2;
222 case BPF_REG_9:
223 ctx->flags |= EBPF_SAVE_S3;
224 return MIPS_R_S3;
225 case BPF_REG_10:
226 if (w == dst_reg || w == src_reg_no_fp)
227 goto bad_reg;
228 ctx->flags |= EBPF_SEEN_FP;
229 /*
230 * Needs special handling, return something that
231 * cannot be clobbered just in case.
232 */
233 return MIPS_R_ZERO;
234 case BPF_REG_AX:
235 return MIPS_R_T4;
236 default:
237bad_reg:
238 WARN(1, "Illegal bpf reg: %d\n", ebpf_reg);
239 return -EINVAL;
240 }
241}
242/*
243 * eBPF stack frame will be something like:
244 *
245 * Entry $sp ------> +--------------------------------+
246 * | $ra (optional) |
247 * +--------------------------------+
248 * | $s0 (optional) |
249 * +--------------------------------+
250 * | $s1 (optional) |
251 * +--------------------------------+
252 * | $s2 (optional) |
253 * +--------------------------------+
254 * | $s3 (optional) |
255 * +--------------------------------+
256 * | $s4 (optional) |
257 * +--------------------------------+
258 * | tmp-storage (if $ra saved) |
259 * $sp + tmp_offset --> +--------------------------------+ <--BPF_REG_10
260 * | BPF_REG_10 relative storage |
261 * | MAX_BPF_STACK (optional) |
262 * | . |
263 * | . |
264 * | . |
265 * $sp --------> +--------------------------------+
266 *
267 * If BPF_REG_10 is never referenced, then the MAX_BPF_STACK sized
268 * area is not allocated.
269 */
270static int gen_int_prologue(struct jit_ctx *ctx)
271{
272 int stack_adjust = 0;
273 int store_offset;
274 int locals_size;
275
276 if (ctx->flags & EBPF_SAVE_RA)
277 /*
278 * If RA we are doing a function call and may need
279 * extra 8-byte tmp area.
280 */
281 stack_adjust += 16;
282 if (ctx->flags & EBPF_SAVE_S0)
283 stack_adjust += 8;
284 if (ctx->flags & EBPF_SAVE_S1)
285 stack_adjust += 8;
286 if (ctx->flags & EBPF_SAVE_S2)
287 stack_adjust += 8;
288 if (ctx->flags & EBPF_SAVE_S3)
289 stack_adjust += 8;
290 if (ctx->flags & EBPF_SAVE_S4)
291 stack_adjust += 8;
292
293 BUILD_BUG_ON(MAX_BPF_STACK & 7);
294 locals_size = (ctx->flags & EBPF_SEEN_FP) ? MAX_BPF_STACK : 0;
295
296 stack_adjust += locals_size;
297 ctx->tmp_offset = locals_size;
298
299 ctx->stack_size = stack_adjust;
300
301 /*
302 * First instruction initializes the tail call count (TCC).
303 * On tail call we skip this instruction, and the TCC is
304 * passed in $v1 from the caller.
305 */
306 emit_instr(ctx, daddiu, MIPS_R_V1, MIPS_R_ZERO, MAX_TAIL_CALL_CNT);
307 if (stack_adjust)
308 emit_instr(ctx, daddiu, MIPS_R_SP, MIPS_R_SP, -stack_adjust);
309 else
310 return 0;
311
312 store_offset = stack_adjust - 8;
313
314 if (ctx->flags & EBPF_SAVE_RA) {
315 emit_instr(ctx, sd, MIPS_R_RA, store_offset, MIPS_R_SP);
316 store_offset -= 8;
317 }
318 if (ctx->flags & EBPF_SAVE_S0) {
319 emit_instr(ctx, sd, MIPS_R_S0, store_offset, MIPS_R_SP);
320 store_offset -= 8;
321 }
322 if (ctx->flags & EBPF_SAVE_S1) {
323 emit_instr(ctx, sd, MIPS_R_S1, store_offset, MIPS_R_SP);
324 store_offset -= 8;
325 }
326 if (ctx->flags & EBPF_SAVE_S2) {
327 emit_instr(ctx, sd, MIPS_R_S2, store_offset, MIPS_R_SP);
328 store_offset -= 8;
329 }
330 if (ctx->flags & EBPF_SAVE_S3) {
331 emit_instr(ctx, sd, MIPS_R_S3, store_offset, MIPS_R_SP);
332 store_offset -= 8;
333 }
334 if (ctx->flags & EBPF_SAVE_S4) {
335 emit_instr(ctx, sd, MIPS_R_S4, store_offset, MIPS_R_SP);
336 store_offset -= 8;
337 }
338
339 if ((ctx->flags & EBPF_SEEN_TC) && !(ctx->flags & EBPF_TCC_IN_V1))
340 emit_instr(ctx, daddu, MIPS_R_S4, MIPS_R_V1, MIPS_R_ZERO);
341
342 return 0;
343}
344
345static int build_int_epilogue(struct jit_ctx *ctx, int dest_reg)
346{
347 const struct bpf_prog *prog = ctx->skf;
348 int stack_adjust = ctx->stack_size;
349 int store_offset = stack_adjust - 8;
350 int r0 = MIPS_R_V0;
351
352 if (dest_reg == MIPS_R_RA &&
353 get_reg_val_type(ctx, prog->len, BPF_REG_0) == REG_32BIT_ZERO_EX)
354 /* Don't let zero extended value escape. */
355 emit_instr(ctx, sll, r0, r0, 0);
356
357 if (ctx->flags & EBPF_SAVE_RA) {
358 emit_instr(ctx, ld, MIPS_R_RA, store_offset, MIPS_R_SP);
359 store_offset -= 8;
360 }
361 if (ctx->flags & EBPF_SAVE_S0) {
362 emit_instr(ctx, ld, MIPS_R_S0, store_offset, MIPS_R_SP);
363 store_offset -= 8;
364 }
365 if (ctx->flags & EBPF_SAVE_S1) {
366 emit_instr(ctx, ld, MIPS_R_S1, store_offset, MIPS_R_SP);
367 store_offset -= 8;
368 }
369 if (ctx->flags & EBPF_SAVE_S2) {
370 emit_instr(ctx, ld, MIPS_R_S2, store_offset, MIPS_R_SP);
371 store_offset -= 8;
372 }
373 if (ctx->flags & EBPF_SAVE_S3) {
374 emit_instr(ctx, ld, MIPS_R_S3, store_offset, MIPS_R_SP);
375 store_offset -= 8;
376 }
377 if (ctx->flags & EBPF_SAVE_S4) {
378 emit_instr(ctx, ld, MIPS_R_S4, store_offset, MIPS_R_SP);
379 store_offset -= 8;
380 }
381 emit_instr(ctx, jr, dest_reg);
382
383 if (stack_adjust)
384 emit_instr(ctx, daddiu, MIPS_R_SP, MIPS_R_SP, stack_adjust);
385 else
386 emit_instr(ctx, nop);
387
388 return 0;
389}
390
391static void gen_imm_to_reg(const struct bpf_insn *insn, int reg,
392 struct jit_ctx *ctx)
393{
394 if (insn->imm >= S16_MIN && insn->imm <= S16_MAX) {
395 emit_instr(ctx, addiu, reg, MIPS_R_ZERO, insn->imm);
396 } else {
397 int lower = (s16)(insn->imm & 0xffff);
398 int upper = insn->imm - lower;
399
400 emit_instr(ctx, lui, reg, upper >> 16);
401 emit_instr(ctx, addiu, reg, reg, lower);
402 }
403
404}
405
406static int gen_imm_insn(const struct bpf_insn *insn, struct jit_ctx *ctx,
407 int idx)
408{
409 int upper_bound, lower_bound;
410 int dst = ebpf_to_mips_reg(ctx, insn, dst_reg);
411
412 if (dst < 0)
413 return dst;
414
415 switch (BPF_OP(insn->code)) {
416 case BPF_MOV:
417 case BPF_ADD:
418 upper_bound = S16_MAX;
419 lower_bound = S16_MIN;
420 break;
421 case BPF_SUB:
422 upper_bound = -(int)S16_MIN;
423 lower_bound = -(int)S16_MAX;
424 break;
425 case BPF_AND:
426 case BPF_OR:
427 case BPF_XOR:
428 upper_bound = 0xffff;
429 lower_bound = 0;
430 break;
431 case BPF_RSH:
432 case BPF_LSH:
433 case BPF_ARSH:
434 /* Shift amounts are truncated, no need for bounds */
435 upper_bound = S32_MAX;
436 lower_bound = S32_MIN;
437 break;
438 default:
439 return -EINVAL;
440 }
441
442 /*
443 * Immediate move clobbers the register, so no sign/zero
444 * extension needed.
445 */
446 if (BPF_CLASS(insn->code) == BPF_ALU64 &&
447 BPF_OP(insn->code) != BPF_MOV &&
448 get_reg_val_type(ctx, idx, insn->dst_reg) == REG_32BIT)
449 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32);
450 /* BPF_ALU | BPF_LSH doesn't need separate sign extension */
451 if (BPF_CLASS(insn->code) == BPF_ALU &&
452 BPF_OP(insn->code) != BPF_LSH &&
453 BPF_OP(insn->code) != BPF_MOV &&
454 get_reg_val_type(ctx, idx, insn->dst_reg) != REG_32BIT)
455 emit_instr(ctx, sll, dst, dst, 0);
456
457 if (insn->imm >= lower_bound && insn->imm <= upper_bound) {
458 /* single insn immediate case */
459 switch (BPF_OP(insn->code) | BPF_CLASS(insn->code)) {
460 case BPF_ALU64 | BPF_MOV:
461 emit_instr(ctx, daddiu, dst, MIPS_R_ZERO, insn->imm);
462 break;
463 case BPF_ALU64 | BPF_AND:
464 case BPF_ALU | BPF_AND:
465 emit_instr(ctx, andi, dst, dst, insn->imm);
466 break;
467 case BPF_ALU64 | BPF_OR:
468 case BPF_ALU | BPF_OR:
469 emit_instr(ctx, ori, dst, dst, insn->imm);
470 break;
471 case BPF_ALU64 | BPF_XOR:
472 case BPF_ALU | BPF_XOR:
473 emit_instr(ctx, xori, dst, dst, insn->imm);
474 break;
475 case BPF_ALU64 | BPF_ADD:
476 emit_instr(ctx, daddiu, dst, dst, insn->imm);
477 break;
478 case BPF_ALU64 | BPF_SUB:
479 emit_instr(ctx, daddiu, dst, dst, -insn->imm);
480 break;
481 case BPF_ALU64 | BPF_RSH:
482 emit_instr(ctx, dsrl_safe, dst, dst, insn->imm & 0x3f);
483 break;
484 case BPF_ALU | BPF_RSH:
485 emit_instr(ctx, srl, dst, dst, insn->imm & 0x1f);
486 break;
487 case BPF_ALU64 | BPF_LSH:
488 emit_instr(ctx, dsll_safe, dst, dst, insn->imm & 0x3f);
489 break;
490 case BPF_ALU | BPF_LSH:
491 emit_instr(ctx, sll, dst, dst, insn->imm & 0x1f);
492 break;
493 case BPF_ALU64 | BPF_ARSH:
494 emit_instr(ctx, dsra_safe, dst, dst, insn->imm & 0x3f);
495 break;
496 case BPF_ALU | BPF_ARSH:
497 emit_instr(ctx, sra, dst, dst, insn->imm & 0x1f);
498 break;
499 case BPF_ALU | BPF_MOV:
500 emit_instr(ctx, addiu, dst, MIPS_R_ZERO, insn->imm);
501 break;
502 case BPF_ALU | BPF_ADD:
503 emit_instr(ctx, addiu, dst, dst, insn->imm);
504 break;
505 case BPF_ALU | BPF_SUB:
506 emit_instr(ctx, addiu, dst, dst, -insn->imm);
507 break;
508 default:
509 return -EINVAL;
510 }
511 } else {
512 /* multi insn immediate case */
513 if (BPF_OP(insn->code) == BPF_MOV) {
514 gen_imm_to_reg(insn, dst, ctx);
515 } else {
516 gen_imm_to_reg(insn, MIPS_R_AT, ctx);
517 switch (BPF_OP(insn->code) | BPF_CLASS(insn->code)) {
518 case BPF_ALU64 | BPF_AND:
519 case BPF_ALU | BPF_AND:
520 emit_instr(ctx, and, dst, dst, MIPS_R_AT);
521 break;
522 case BPF_ALU64 | BPF_OR:
523 case BPF_ALU | BPF_OR:
524 emit_instr(ctx, or, dst, dst, MIPS_R_AT);
525 break;
526 case BPF_ALU64 | BPF_XOR:
527 case BPF_ALU | BPF_XOR:
528 emit_instr(ctx, xor, dst, dst, MIPS_R_AT);
529 break;
530 case BPF_ALU64 | BPF_ADD:
531 emit_instr(ctx, daddu, dst, dst, MIPS_R_AT);
532 break;
533 case BPF_ALU64 | BPF_SUB:
534 emit_instr(ctx, dsubu, dst, dst, MIPS_R_AT);
535 break;
536 case BPF_ALU | BPF_ADD:
537 emit_instr(ctx, addu, dst, dst, MIPS_R_AT);
538 break;
539 case BPF_ALU | BPF_SUB:
540 emit_instr(ctx, subu, dst, dst, MIPS_R_AT);
541 break;
542 default:
543 return -EINVAL;
544 }
545 }
546 }
547
548 return 0;
549}
550
551static void * __must_check
552ool_skb_header_pointer(const struct sk_buff *skb, int offset,
553 int len, void *buffer)
554{
555 return skb_header_pointer(skb, offset, len, buffer);
556}
557
558static int size_to_len(const struct bpf_insn *insn)
559{
560 switch (BPF_SIZE(insn->code)) {
561 case BPF_B:
562 return 1;
563 case BPF_H:
564 return 2;
565 case BPF_W:
566 return 4;
567 case BPF_DW:
568 return 8;
569 }
570 return 0;
571}
572
573static void emit_const_to_reg(struct jit_ctx *ctx, int dst, u64 value)
574{
575 if (value >= 0xffffffffffff8000ull || value < 0x8000ull) {
576 emit_instr(ctx, daddiu, dst, MIPS_R_ZERO, (int)value);
577 } else if (value >= 0xffffffff80000000ull ||
578 (value < 0x80000000 && value > 0xffff)) {
579 emit_instr(ctx, lui, dst, (s32)(s16)(value >> 16));
580 emit_instr(ctx, ori, dst, dst, (unsigned int)(value & 0xffff));
581 } else {
582 int i;
583 bool seen_part = false;
584 int needed_shift = 0;
585
586 for (i = 0; i < 4; i++) {
587 u64 part = (value >> (16 * (3 - i))) & 0xffff;
588
589 if (seen_part && needed_shift > 0 && (part || i == 3)) {
590 emit_instr(ctx, dsll_safe, dst, dst, needed_shift);
591 needed_shift = 0;
592 }
593 if (part) {
594 if (i == 0 || (!seen_part && i < 3 && part < 0x8000)) {
595 emit_instr(ctx, lui, dst, (s32)(s16)part);
596 needed_shift = -16;
597 } else {
598 emit_instr(ctx, ori, dst,
599 seen_part ? dst : MIPS_R_ZERO,
600 (unsigned int)part);
601 }
602 seen_part = true;
603 }
604 if (seen_part)
605 needed_shift += 16;
606 }
607 }
608}
609
610static int emit_bpf_tail_call(struct jit_ctx *ctx, int this_idx)
611{
612 int off, b_off;
613
614 ctx->flags |= EBPF_SEEN_TC;
615 /*
616 * if (index >= array->map.max_entries)
617 * goto out;
618 */
619 off = offsetof(struct bpf_array, map.max_entries);
620 emit_instr(ctx, lwu, MIPS_R_T5, off, MIPS_R_A1);
621 emit_instr(ctx, sltu, MIPS_R_AT, MIPS_R_T5, MIPS_R_A2);
622 b_off = b_imm(this_idx + 1, ctx);
623 emit_instr(ctx, bne, MIPS_R_AT, MIPS_R_ZERO, b_off);
624 /*
625 * if (--TCC < 0)
626 * goto out;
627 */
628 /* Delay slot */
629 emit_instr(ctx, daddiu, MIPS_R_T5,
630 (ctx->flags & EBPF_TCC_IN_V1) ? MIPS_R_V1 : MIPS_R_S4, -1);
631 b_off = b_imm(this_idx + 1, ctx);
632 emit_instr(ctx, bltz, MIPS_R_T5, b_off);
633 /*
634 * prog = array->ptrs[index];
635 * if (prog == NULL)
636 * goto out;
637 */
638 /* Delay slot */
639 emit_instr(ctx, dsll, MIPS_R_T8, MIPS_R_A2, 3);
640 emit_instr(ctx, daddu, MIPS_R_T8, MIPS_R_T8, MIPS_R_A1);
641 off = offsetof(struct bpf_array, ptrs);
642 emit_instr(ctx, ld, MIPS_R_AT, off, MIPS_R_T8);
643 b_off = b_imm(this_idx + 1, ctx);
644 emit_instr(ctx, beq, MIPS_R_AT, MIPS_R_ZERO, b_off);
645 /* Delay slot */
646 emit_instr(ctx, nop);
647
648 /* goto *(prog->bpf_func + 4); */
649 off = offsetof(struct bpf_prog, bpf_func);
650 emit_instr(ctx, ld, MIPS_R_T9, off, MIPS_R_AT);
651 /* All systems are go... propagate TCC */
652 emit_instr(ctx, daddu, MIPS_R_V1, MIPS_R_T5, MIPS_R_ZERO);
653 /* Skip first instruction (TCC initialization) */
654 emit_instr(ctx, daddiu, MIPS_R_T9, MIPS_R_T9, 4);
655 return build_int_epilogue(ctx, MIPS_R_T9);
656}
657
658static bool use_bbit_insns(void)
659{
660 switch (current_cpu_type()) {
661 case CPU_CAVIUM_OCTEON:
662 case CPU_CAVIUM_OCTEON_PLUS:
663 case CPU_CAVIUM_OCTEON2:
664 case CPU_CAVIUM_OCTEON3:
665 return true;
666 default:
667 return false;
668 }
669}
670
671static bool is_bad_offset(int b_off)
672{
673 return b_off > 0x1ffff || b_off < -0x20000;
674}
675
676/* Returns the number of insn slots consumed. */
677static int build_one_insn(const struct bpf_insn *insn, struct jit_ctx *ctx,
678 int this_idx, int exit_idx)
679{
680 int src, dst, r, td, ts, mem_off, b_off;
681 bool need_swap, did_move, cmp_eq;
682 unsigned int target;
683 u64 t64;
684 s64 t64s;
685
686 switch (insn->code) {
687 case BPF_ALU64 | BPF_ADD | BPF_K: /* ALU64_IMM */
688 case BPF_ALU64 | BPF_SUB | BPF_K: /* ALU64_IMM */
689 case BPF_ALU64 | BPF_OR | BPF_K: /* ALU64_IMM */
690 case BPF_ALU64 | BPF_AND | BPF_K: /* ALU64_IMM */
691 case BPF_ALU64 | BPF_LSH | BPF_K: /* ALU64_IMM */
692 case BPF_ALU64 | BPF_RSH | BPF_K: /* ALU64_IMM */
693 case BPF_ALU64 | BPF_XOR | BPF_K: /* ALU64_IMM */
694 case BPF_ALU64 | BPF_ARSH | BPF_K: /* ALU64_IMM */
695 case BPF_ALU64 | BPF_MOV | BPF_K: /* ALU64_IMM */
696 case BPF_ALU | BPF_MOV | BPF_K: /* ALU32_IMM */
697 case BPF_ALU | BPF_ADD | BPF_K: /* ALU32_IMM */
698 case BPF_ALU | BPF_SUB | BPF_K: /* ALU32_IMM */
699 case BPF_ALU | BPF_OR | BPF_K: /* ALU64_IMM */
700 case BPF_ALU | BPF_AND | BPF_K: /* ALU64_IMM */
701 case BPF_ALU | BPF_LSH | BPF_K: /* ALU64_IMM */
702 case BPF_ALU | BPF_RSH | BPF_K: /* ALU64_IMM */
703 case BPF_ALU | BPF_XOR | BPF_K: /* ALU64_IMM */
704 case BPF_ALU | BPF_ARSH | BPF_K: /* ALU64_IMM */
705 r = gen_imm_insn(insn, ctx, this_idx);
706 if (r < 0)
707 return r;
708 break;
709 case BPF_ALU64 | BPF_MUL | BPF_K: /* ALU64_IMM */
710 dst = ebpf_to_mips_reg(ctx, insn, dst_reg);
711 if (dst < 0)
712 return dst;
713 if (get_reg_val_type(ctx, this_idx, insn->dst_reg) == REG_32BIT)
714 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32);
715 if (insn->imm == 1) /* Mult by 1 is a nop */
716 break;
717 gen_imm_to_reg(insn, MIPS_R_AT, ctx);
718 emit_instr(ctx, dmultu, MIPS_R_AT, dst);
719 emit_instr(ctx, mflo, dst);
720 break;
721 case BPF_ALU64 | BPF_NEG | BPF_K: /* ALU64_IMM */
722 dst = ebpf_to_mips_reg(ctx, insn, dst_reg);
723 if (dst < 0)
724 return dst;
725 if (get_reg_val_type(ctx, this_idx, insn->dst_reg) == REG_32BIT)
726 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32);
727 emit_instr(ctx, dsubu, dst, MIPS_R_ZERO, dst);
728 break;
729 case BPF_ALU | BPF_MUL | BPF_K: /* ALU_IMM */
730 dst = ebpf_to_mips_reg(ctx, insn, dst_reg);
731 if (dst < 0)
732 return dst;
733 td = get_reg_val_type(ctx, this_idx, insn->dst_reg);
734 if (td == REG_64BIT || td == REG_32BIT_ZERO_EX) {
735 /* sign extend */
736 emit_instr(ctx, sll, dst, dst, 0);
737 }
738 if (insn->imm == 1) /* Mult by 1 is a nop */
739 break;
740 gen_imm_to_reg(insn, MIPS_R_AT, ctx);
741 emit_instr(ctx, multu, dst, MIPS_R_AT);
742 emit_instr(ctx, mflo, dst);
743 break;
744 case BPF_ALU | BPF_NEG | BPF_K: /* ALU_IMM */
745 dst = ebpf_to_mips_reg(ctx, insn, dst_reg);
746 if (dst < 0)
747 return dst;
748 td = get_reg_val_type(ctx, this_idx, insn->dst_reg);
749 if (td == REG_64BIT || td == REG_32BIT_ZERO_EX) {
750 /* sign extend */
751 emit_instr(ctx, sll, dst, dst, 0);
752 }
753 emit_instr(ctx, subu, dst, MIPS_R_ZERO, dst);
754 break;
755 case BPF_ALU | BPF_DIV | BPF_K: /* ALU_IMM */
756 case BPF_ALU | BPF_MOD | BPF_K: /* ALU_IMM */
757 dst = ebpf_to_mips_reg(ctx, insn, dst_reg);
758 if (dst < 0)
759 return dst;
760 if (insn->imm == 0) { /* Div by zero */
761 b_off = b_imm(exit_idx, ctx);
762 if (is_bad_offset(b_off))
763 return -E2BIG;
764 emit_instr(ctx, beq, MIPS_R_ZERO, MIPS_R_ZERO, b_off);
765 emit_instr(ctx, addu, MIPS_R_V0, MIPS_R_ZERO, MIPS_R_ZERO);
766 }
767 td = get_reg_val_type(ctx, this_idx, insn->dst_reg);
768 if (td == REG_64BIT || td == REG_32BIT_ZERO_EX)
769 /* sign extend */
770 emit_instr(ctx, sll, dst, dst, 0);
771 if (insn->imm == 1) {
772 /* div by 1 is a nop, mod by 1 is zero */
773 if (BPF_OP(insn->code) == BPF_MOD)
774 emit_instr(ctx, addu, dst, MIPS_R_ZERO, MIPS_R_ZERO);
775 break;
776 }
777 gen_imm_to_reg(insn, MIPS_R_AT, ctx);
778 emit_instr(ctx, divu, dst, MIPS_R_AT);
779 if (BPF_OP(insn->code) == BPF_DIV)
780 emit_instr(ctx, mflo, dst);
781 else
782 emit_instr(ctx, mfhi, dst);
783 break;
784 case BPF_ALU64 | BPF_DIV | BPF_K: /* ALU_IMM */
785 case BPF_ALU64 | BPF_MOD | BPF_K: /* ALU_IMM */
786 dst = ebpf_to_mips_reg(ctx, insn, dst_reg);
787 if (dst < 0)
788 return dst;
789 if (insn->imm == 0) { /* Div by zero */
790 b_off = b_imm(exit_idx, ctx);
791 if (is_bad_offset(b_off))
792 return -E2BIG;
793 emit_instr(ctx, beq, MIPS_R_ZERO, MIPS_R_ZERO, b_off);
794 emit_instr(ctx, addu, MIPS_R_V0, MIPS_R_ZERO, MIPS_R_ZERO);
795 }
796 if (get_reg_val_type(ctx, this_idx, insn->dst_reg) == REG_32BIT)
797 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32);
798
799 if (insn->imm == 1) {
800 /* div by 1 is a nop, mod by 1 is zero */
801 if (BPF_OP(insn->code) == BPF_MOD)
802 emit_instr(ctx, addu, dst, MIPS_R_ZERO, MIPS_R_ZERO);
803 break;
804 }
805 gen_imm_to_reg(insn, MIPS_R_AT, ctx);
806 emit_instr(ctx, ddivu, dst, MIPS_R_AT);
807 if (BPF_OP(insn->code) == BPF_DIV)
808 emit_instr(ctx, mflo, dst);
809 else
810 emit_instr(ctx, mfhi, dst);
811 break;
812 case BPF_ALU64 | BPF_MOV | BPF_X: /* ALU64_REG */
813 case BPF_ALU64 | BPF_ADD | BPF_X: /* ALU64_REG */
814 case BPF_ALU64 | BPF_SUB | BPF_X: /* ALU64_REG */
815 case BPF_ALU64 | BPF_XOR | BPF_X: /* ALU64_REG */
816 case BPF_ALU64 | BPF_OR | BPF_X: /* ALU64_REG */
817 case BPF_ALU64 | BPF_AND | BPF_X: /* ALU64_REG */
818 case BPF_ALU64 | BPF_MUL | BPF_X: /* ALU64_REG */
819 case BPF_ALU64 | BPF_DIV | BPF_X: /* ALU64_REG */
820 case BPF_ALU64 | BPF_MOD | BPF_X: /* ALU64_REG */
821 case BPF_ALU64 | BPF_LSH | BPF_X: /* ALU64_REG */
822 case BPF_ALU64 | BPF_RSH | BPF_X: /* ALU64_REG */
823 case BPF_ALU64 | BPF_ARSH | BPF_X: /* ALU64_REG */
824 src = ebpf_to_mips_reg(ctx, insn, src_reg);
825 dst = ebpf_to_mips_reg(ctx, insn, dst_reg);
826 if (src < 0 || dst < 0)
827 return -EINVAL;
828 if (get_reg_val_type(ctx, this_idx, insn->dst_reg) == REG_32BIT)
829 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32);
830 did_move = false;
831 if (insn->src_reg == BPF_REG_10) {
832 if (BPF_OP(insn->code) == BPF_MOV) {
833 emit_instr(ctx, daddiu, dst, MIPS_R_SP, MAX_BPF_STACK);
834 did_move = true;
835 } else {
836 emit_instr(ctx, daddiu, MIPS_R_AT, MIPS_R_SP, MAX_BPF_STACK);
837 src = MIPS_R_AT;
838 }
839 } else if (get_reg_val_type(ctx, this_idx, insn->src_reg) == REG_32BIT) {
840 int tmp_reg = MIPS_R_AT;
841
842 if (BPF_OP(insn->code) == BPF_MOV) {
843 tmp_reg = dst;
844 did_move = true;
845 }
846 emit_instr(ctx, daddu, tmp_reg, src, MIPS_R_ZERO);
847 emit_instr(ctx, dinsu, tmp_reg, MIPS_R_ZERO, 32, 32);
848 src = MIPS_R_AT;
849 }
850 switch (BPF_OP(insn->code)) {
851 case BPF_MOV:
852 if (!did_move)
853 emit_instr(ctx, daddu, dst, src, MIPS_R_ZERO);
854 break;
855 case BPF_ADD:
856 emit_instr(ctx, daddu, dst, dst, src);
857 break;
858 case BPF_SUB:
859 emit_instr(ctx, dsubu, dst, dst, src);
860 break;
861 case BPF_XOR:
862 emit_instr(ctx, xor, dst, dst, src);
863 break;
864 case BPF_OR:
865 emit_instr(ctx, or, dst, dst, src);
866 break;
867 case BPF_AND:
868 emit_instr(ctx, and, dst, dst, src);
869 break;
870 case BPF_MUL:
871 emit_instr(ctx, dmultu, dst, src);
872 emit_instr(ctx, mflo, dst);
873 break;
874 case BPF_DIV:
875 case BPF_MOD:
876 b_off = b_imm(exit_idx, ctx);
877 if (is_bad_offset(b_off))
878 return -E2BIG;
879 emit_instr(ctx, beq, src, MIPS_R_ZERO, b_off);
880 emit_instr(ctx, movz, MIPS_R_V0, MIPS_R_ZERO, src);
881 emit_instr(ctx, ddivu, dst, src);
882 if (BPF_OP(insn->code) == BPF_DIV)
883 emit_instr(ctx, mflo, dst);
884 else
885 emit_instr(ctx, mfhi, dst);
886 break;
887 case BPF_LSH:
888 emit_instr(ctx, dsllv, dst, dst, src);
889 break;
890 case BPF_RSH:
891 emit_instr(ctx, dsrlv, dst, dst, src);
892 break;
893 case BPF_ARSH:
894 emit_instr(ctx, dsrav, dst, dst, src);
895 break;
896 default:
897 pr_err("ALU64_REG NOT HANDLED\n");
898 return -EINVAL;
899 }
900 break;
901 case BPF_ALU | BPF_MOV | BPF_X: /* ALU_REG */
902 case BPF_ALU | BPF_ADD | BPF_X: /* ALU_REG */
903 case BPF_ALU | BPF_SUB | BPF_X: /* ALU_REG */
904 case BPF_ALU | BPF_XOR | BPF_X: /* ALU_REG */
905 case BPF_ALU | BPF_OR | BPF_X: /* ALU_REG */
906 case BPF_ALU | BPF_AND | BPF_X: /* ALU_REG */
907 case BPF_ALU | BPF_MUL | BPF_X: /* ALU_REG */
908 case BPF_ALU | BPF_DIV | BPF_X: /* ALU_REG */
909 case BPF_ALU | BPF_MOD | BPF_X: /* ALU_REG */
910 case BPF_ALU | BPF_LSH | BPF_X: /* ALU_REG */
911 case BPF_ALU | BPF_RSH | BPF_X: /* ALU_REG */
912 src = ebpf_to_mips_reg(ctx, insn, src_reg_no_fp);
913 dst = ebpf_to_mips_reg(ctx, insn, dst_reg);
914 if (src < 0 || dst < 0)
915 return -EINVAL;
916 td = get_reg_val_type(ctx, this_idx, insn->dst_reg);
917 if (td == REG_64BIT || td == REG_32BIT_ZERO_EX) {
918 /* sign extend */
919 emit_instr(ctx, sll, dst, dst, 0);
920 }
921 did_move = false;
922 ts = get_reg_val_type(ctx, this_idx, insn->src_reg);
923 if (ts == REG_64BIT || ts == REG_32BIT_ZERO_EX) {
924 int tmp_reg = MIPS_R_AT;
925
926 if (BPF_OP(insn->code) == BPF_MOV) {
927 tmp_reg = dst;
928 did_move = true;
929 }
930 /* sign extend */
931 emit_instr(ctx, sll, tmp_reg, src, 0);
932 src = MIPS_R_AT;
933 }
934 switch (BPF_OP(insn->code)) {
935 case BPF_MOV:
936 if (!did_move)
937 emit_instr(ctx, addu, dst, src, MIPS_R_ZERO);
938 break;
939 case BPF_ADD:
940 emit_instr(ctx, addu, dst, dst, src);
941 break;
942 case BPF_SUB:
943 emit_instr(ctx, subu, dst, dst, src);
944 break;
945 case BPF_XOR:
946 emit_instr(ctx, xor, dst, dst, src);
947 break;
948 case BPF_OR:
949 emit_instr(ctx, or, dst, dst, src);
950 break;
951 case BPF_AND:
952 emit_instr(ctx, and, dst, dst, src);
953 break;
954 case BPF_MUL:
955 emit_instr(ctx, mul, dst, dst, src);
956 break;
957 case BPF_DIV:
958 case BPF_MOD:
959 b_off = b_imm(exit_idx, ctx);
960 if (is_bad_offset(b_off))
961 return -E2BIG;
962 emit_instr(ctx, beq, src, MIPS_R_ZERO, b_off);
963 emit_instr(ctx, movz, MIPS_R_V0, MIPS_R_ZERO, src);
964 emit_instr(ctx, divu, dst, src);
965 if (BPF_OP(insn->code) == BPF_DIV)
966 emit_instr(ctx, mflo, dst);
967 else
968 emit_instr(ctx, mfhi, dst);
969 break;
970 case BPF_LSH:
971 emit_instr(ctx, sllv, dst, dst, src);
972 break;
973 case BPF_RSH:
974 emit_instr(ctx, srlv, dst, dst, src);
975 break;
976 default:
977 pr_err("ALU_REG NOT HANDLED\n");
978 return -EINVAL;
979 }
980 break;
981 case BPF_JMP | BPF_EXIT:
982 if (this_idx + 1 < exit_idx) {
983 b_off = b_imm(exit_idx, ctx);
984 if (is_bad_offset(b_off))
985 return -E2BIG;
986 emit_instr(ctx, beq, MIPS_R_ZERO, MIPS_R_ZERO, b_off);
987 emit_instr(ctx, nop);
988 }
989 break;
990 case BPF_JMP | BPF_JEQ | BPF_K: /* JMP_IMM */
991 case BPF_JMP | BPF_JNE | BPF_K: /* JMP_IMM */
992 cmp_eq = (BPF_OP(insn->code) == BPF_JEQ);
993 dst = ebpf_to_mips_reg(ctx, insn, dst_reg_fp_ok);
994 if (dst < 0)
995 return dst;
996 if (insn->imm == 0) {
997 src = MIPS_R_ZERO;
998 } else {
999 gen_imm_to_reg(insn, MIPS_R_AT, ctx);
1000 src = MIPS_R_AT;
1001 }
1002 goto jeq_common;
1003 case BPF_JMP | BPF_JEQ | BPF_X: /* JMP_REG */
1004 case BPF_JMP | BPF_JNE | BPF_X:
1005 case BPF_JMP | BPF_JSGT | BPF_X:
1006 case BPF_JMP | BPF_JSGE | BPF_X:
1007 case BPF_JMP | BPF_JGT | BPF_X:
1008 case BPF_JMP | BPF_JGE | BPF_X:
1009 case BPF_JMP | BPF_JSET | BPF_X:
1010 src = ebpf_to_mips_reg(ctx, insn, src_reg_no_fp);
1011 dst = ebpf_to_mips_reg(ctx, insn, dst_reg);
1012 if (src < 0 || dst < 0)
1013 return -EINVAL;
1014 td = get_reg_val_type(ctx, this_idx, insn->dst_reg);
1015 ts = get_reg_val_type(ctx, this_idx, insn->src_reg);
1016 if (td == REG_32BIT && ts != REG_32BIT) {
1017 emit_instr(ctx, sll, MIPS_R_AT, src, 0);
1018 src = MIPS_R_AT;
1019 } else if (ts == REG_32BIT && td != REG_32BIT) {
1020 emit_instr(ctx, sll, MIPS_R_AT, dst, 0);
1021 dst = MIPS_R_AT;
1022 }
1023 if (BPF_OP(insn->code) == BPF_JSET) {
1024 emit_instr(ctx, and, MIPS_R_AT, dst, src);
1025 cmp_eq = false;
1026 dst = MIPS_R_AT;
1027 src = MIPS_R_ZERO;
1028 } else if (BPF_OP(insn->code) == BPF_JSGT) {
1029 emit_instr(ctx, dsubu, MIPS_R_AT, dst, src);
1030 if ((insn + 1)->code == (BPF_JMP | BPF_EXIT) && insn->off == 1) {
1031 b_off = b_imm(exit_idx, ctx);
1032 if (is_bad_offset(b_off))
1033 return -E2BIG;
1034 emit_instr(ctx, blez, MIPS_R_AT, b_off);
1035 emit_instr(ctx, nop);
1036 return 2; /* We consumed the exit. */
1037 }
1038 b_off = b_imm(this_idx + insn->off + 1, ctx);
1039 if (is_bad_offset(b_off))
1040 return -E2BIG;
1041 emit_instr(ctx, bgtz, MIPS_R_AT, b_off);
1042 emit_instr(ctx, nop);
1043 break;
1044 } else if (BPF_OP(insn->code) == BPF_JSGE) {
1045 emit_instr(ctx, slt, MIPS_R_AT, dst, src);
1046 cmp_eq = true;
1047 dst = MIPS_R_AT;
1048 src = MIPS_R_ZERO;
1049 } else if (BPF_OP(insn->code) == BPF_JGT) {
1050 /* dst or src could be AT */
1051 emit_instr(ctx, dsubu, MIPS_R_T8, dst, src);
1052 emit_instr(ctx, sltu, MIPS_R_AT, dst, src);
1053 /* SP known to be non-zero, movz becomes boolean not */
1054 emit_instr(ctx, movz, MIPS_R_T9, MIPS_R_SP, MIPS_R_T8);
1055 emit_instr(ctx, movn, MIPS_R_T9, MIPS_R_ZERO, MIPS_R_T8);
1056 emit_instr(ctx, or, MIPS_R_AT, MIPS_R_T9, MIPS_R_AT);
1057 cmp_eq = true;
1058 dst = MIPS_R_AT;
1059 src = MIPS_R_ZERO;
1060 } else if (BPF_OP(insn->code) == BPF_JGE) {
1061 emit_instr(ctx, sltu, MIPS_R_AT, dst, src);
1062 cmp_eq = true;
1063 dst = MIPS_R_AT;
1064 src = MIPS_R_ZERO;
1065 } else { /* JNE/JEQ case */
1066 cmp_eq = (BPF_OP(insn->code) == BPF_JEQ);
1067 }
1068jeq_common:
1069 /*
1070 * If the next insn is EXIT and we are jumping arround
1071 * only it, invert the sense of the compare and
1072 * conditionally jump to the exit. Poor man's branch
1073 * chaining.
1074 */
1075 if ((insn + 1)->code == (BPF_JMP | BPF_EXIT) && insn->off == 1) {
1076 b_off = b_imm(exit_idx, ctx);
1077 if (is_bad_offset(b_off)) {
1078 target = j_target(ctx, exit_idx);
1079 if (target == (unsigned int)-1)
1080 return -E2BIG;
1081 cmp_eq = !cmp_eq;
1082 b_off = 4 * 3;
1083 if (!(ctx->offsets[this_idx] & OFFSETS_B_CONV)) {
1084 ctx->offsets[this_idx] |= OFFSETS_B_CONV;
1085 ctx->long_b_conversion = 1;
1086 }
1087 }
1088
1089 if (cmp_eq)
1090 emit_instr(ctx, bne, dst, src, b_off);
1091 else
1092 emit_instr(ctx, beq, dst, src, b_off);
1093 emit_instr(ctx, nop);
1094 if (ctx->offsets[this_idx] & OFFSETS_B_CONV) {
1095 emit_instr(ctx, j, target);
1096 emit_instr(ctx, nop);
1097 }
1098 return 2; /* We consumed the exit. */
1099 }
1100 b_off = b_imm(this_idx + insn->off + 1, ctx);
1101 if (is_bad_offset(b_off)) {
1102 target = j_target(ctx, this_idx + insn->off + 1);
1103 if (target == (unsigned int)-1)
1104 return -E2BIG;
1105 cmp_eq = !cmp_eq;
1106 b_off = 4 * 3;
1107 if (!(ctx->offsets[this_idx] & OFFSETS_B_CONV)) {
1108 ctx->offsets[this_idx] |= OFFSETS_B_CONV;
1109 ctx->long_b_conversion = 1;
1110 }
1111 }
1112
1113 if (cmp_eq)
1114 emit_instr(ctx, beq, dst, src, b_off);
1115 else
1116 emit_instr(ctx, bne, dst, src, b_off);
1117 emit_instr(ctx, nop);
1118 if (ctx->offsets[this_idx] & OFFSETS_B_CONV) {
1119 emit_instr(ctx, j, target);
1120 emit_instr(ctx, nop);
1121 }
1122 break;
1123 case BPF_JMP | BPF_JSGT | BPF_K: /* JMP_IMM */
1124 case BPF_JMP | BPF_JSGE | BPF_K: /* JMP_IMM */
1125 cmp_eq = (BPF_OP(insn->code) == BPF_JSGE);
1126 dst = ebpf_to_mips_reg(ctx, insn, dst_reg_fp_ok);
1127 if (dst < 0)
1128 return dst;
1129
1130 if (insn->imm == 0) {
1131 if ((insn + 1)->code == (BPF_JMP | BPF_EXIT) && insn->off == 1) {
1132 b_off = b_imm(exit_idx, ctx);
1133 if (is_bad_offset(b_off))
1134 return -E2BIG;
1135 if (cmp_eq)
1136 emit_instr(ctx, bltz, dst, b_off);
1137 else
1138 emit_instr(ctx, blez, dst, b_off);
1139 emit_instr(ctx, nop);
1140 return 2; /* We consumed the exit. */
1141 }
1142 b_off = b_imm(this_idx + insn->off + 1, ctx);
1143 if (is_bad_offset(b_off))
1144 return -E2BIG;
1145 if (cmp_eq)
1146 emit_instr(ctx, bgez, dst, b_off);
1147 else
1148 emit_instr(ctx, bgtz, dst, b_off);
1149 emit_instr(ctx, nop);
1150 break;
1151 }
1152 /*
1153 * only "LT" compare available, so we must use imm + 1
1154 * to generate "GT"
1155 */
1156 t64s = insn->imm + (cmp_eq ? 0 : 1);
1157 if (t64s >= S16_MIN && t64s <= S16_MAX) {
1158 emit_instr(ctx, slti, MIPS_R_AT, dst, (int)t64s);
1159 src = MIPS_R_AT;
1160 dst = MIPS_R_ZERO;
1161 cmp_eq = true;
1162 goto jeq_common;
1163 }
1164 emit_const_to_reg(ctx, MIPS_R_AT, (u64)t64s);
1165 emit_instr(ctx, slt, MIPS_R_AT, dst, MIPS_R_AT);
1166 src = MIPS_R_AT;
1167 dst = MIPS_R_ZERO;
1168 cmp_eq = true;
1169 goto jeq_common;
1170
1171 case BPF_JMP | BPF_JGT | BPF_K:
1172 case BPF_JMP | BPF_JGE | BPF_K:
1173 cmp_eq = (BPF_OP(insn->code) == BPF_JGE);
1174 dst = ebpf_to_mips_reg(ctx, insn, dst_reg_fp_ok);
1175 if (dst < 0)
1176 return dst;
1177 /*
1178 * only "LT" compare available, so we must use imm + 1
1179 * to generate "GT"
1180 */
1181 t64s = (u64)(u32)(insn->imm) + (cmp_eq ? 0 : 1);
1182 if (t64s >= 0 && t64s <= S16_MAX) {
1183 emit_instr(ctx, sltiu, MIPS_R_AT, dst, (int)t64s);
1184 src = MIPS_R_AT;
1185 dst = MIPS_R_ZERO;
1186 cmp_eq = true;
1187 goto jeq_common;
1188 }
1189 emit_const_to_reg(ctx, MIPS_R_AT, (u64)t64s);
1190 emit_instr(ctx, sltu, MIPS_R_AT, dst, MIPS_R_AT);
1191 src = MIPS_R_AT;
1192 dst = MIPS_R_ZERO;
1193 cmp_eq = true;
1194 goto jeq_common;
1195
1196 case BPF_JMP | BPF_JSET | BPF_K: /* JMP_IMM */
1197 dst = ebpf_to_mips_reg(ctx, insn, dst_reg_fp_ok);
1198 if (dst < 0)
1199 return dst;
1200
1201 if (use_bbit_insns() && hweight32((u32)insn->imm) == 1) {
1202 if ((insn + 1)->code == (BPF_JMP | BPF_EXIT) && insn->off == 1) {
1203 b_off = b_imm(exit_idx, ctx);
1204 if (is_bad_offset(b_off))
1205 return -E2BIG;
1206 emit_instr(ctx, bbit0, dst, ffs((u32)insn->imm) - 1, b_off);
1207 emit_instr(ctx, nop);
1208 return 2; /* We consumed the exit. */
1209 }
1210 b_off = b_imm(this_idx + insn->off + 1, ctx);
1211 if (is_bad_offset(b_off))
1212 return -E2BIG;
1213 emit_instr(ctx, bbit1, dst, ffs((u32)insn->imm) - 1, b_off);
1214 emit_instr(ctx, nop);
1215 break;
1216 }
1217 t64 = (u32)insn->imm;
1218 emit_const_to_reg(ctx, MIPS_R_AT, t64);
1219 emit_instr(ctx, and, MIPS_R_AT, dst, MIPS_R_AT);
1220 src = MIPS_R_AT;
1221 dst = MIPS_R_ZERO;
1222 cmp_eq = false;
1223 goto jeq_common;
1224
1225 case BPF_JMP | BPF_JA:
1226 /*
1227 * Prefer relative branch for easier debugging, but
1228 * fall back if needed.
1229 */
1230 b_off = b_imm(this_idx + insn->off + 1, ctx);
1231 if (is_bad_offset(b_off)) {
1232 target = j_target(ctx, this_idx + insn->off + 1);
1233 if (target == (unsigned int)-1)
1234 return -E2BIG;
1235 emit_instr(ctx, j, target);
1236 } else {
1237 emit_instr(ctx, b, b_off);
1238 }
1239 emit_instr(ctx, nop);
1240 break;
1241 case BPF_LD | BPF_DW | BPF_IMM:
1242 if (insn->src_reg != 0)
1243 return -EINVAL;
1244 dst = ebpf_to_mips_reg(ctx, insn, dst_reg);
1245 if (dst < 0)
1246 return dst;
1247 t64 = ((u64)(u32)insn->imm) | ((u64)(insn + 1)->imm << 32);
1248 emit_const_to_reg(ctx, dst, t64);
1249 return 2; /* Double slot insn */
1250
1251 case BPF_JMP | BPF_CALL:
1252 ctx->flags |= EBPF_SAVE_RA;
1253 t64s = (s64)insn->imm + (s64)__bpf_call_base;
1254 emit_const_to_reg(ctx, MIPS_R_T9, (u64)t64s);
1255 emit_instr(ctx, jalr, MIPS_R_RA, MIPS_R_T9);
1256 /* delay slot */
1257 emit_instr(ctx, nop);
1258 break;
1259
1260 case BPF_JMP | BPF_TAIL_CALL:
1261 if (emit_bpf_tail_call(ctx, this_idx))
1262 return -EINVAL;
1263 break;
1264
1265 case BPF_LD | BPF_B | BPF_ABS:
1266 case BPF_LD | BPF_H | BPF_ABS:
1267 case BPF_LD | BPF_W | BPF_ABS:
1268 case BPF_LD | BPF_DW | BPF_ABS:
1269 ctx->flags |= EBPF_SAVE_RA;
1270
1271 gen_imm_to_reg(insn, MIPS_R_A1, ctx);
1272 emit_instr(ctx, addiu, MIPS_R_A2, MIPS_R_ZERO, size_to_len(insn));
1273
1274 if (insn->imm < 0) {
1275 emit_const_to_reg(ctx, MIPS_R_T9, (u64)bpf_internal_load_pointer_neg_helper);
1276 } else {
1277 emit_const_to_reg(ctx, MIPS_R_T9, (u64)ool_skb_header_pointer);
1278 emit_instr(ctx, daddiu, MIPS_R_A3, MIPS_R_SP, ctx->tmp_offset);
1279 }
1280 goto ld_skb_common;
1281
1282 case BPF_LD | BPF_B | BPF_IND:
1283 case BPF_LD | BPF_H | BPF_IND:
1284 case BPF_LD | BPF_W | BPF_IND:
1285 case BPF_LD | BPF_DW | BPF_IND:
1286 ctx->flags |= EBPF_SAVE_RA;
1287 src = ebpf_to_mips_reg(ctx, insn, src_reg_no_fp);
1288 if (src < 0)
1289 return src;
1290 ts = get_reg_val_type(ctx, this_idx, insn->src_reg);
1291 if (ts == REG_32BIT_ZERO_EX) {
1292 /* sign extend */
1293 emit_instr(ctx, sll, MIPS_R_A1, src, 0);
1294 src = MIPS_R_A1;
1295 }
1296 if (insn->imm >= S16_MIN && insn->imm <= S16_MAX) {
1297 emit_instr(ctx, daddiu, MIPS_R_A1, src, insn->imm);
1298 } else {
1299 gen_imm_to_reg(insn, MIPS_R_AT, ctx);
1300 emit_instr(ctx, daddu, MIPS_R_A1, MIPS_R_AT, src);
1301 }
1302 /* truncate to 32-bit int */
1303 emit_instr(ctx, sll, MIPS_R_A1, MIPS_R_A1, 0);
1304 emit_instr(ctx, daddiu, MIPS_R_A3, MIPS_R_SP, ctx->tmp_offset);
1305 emit_instr(ctx, slt, MIPS_R_AT, MIPS_R_A1, MIPS_R_ZERO);
1306
1307 emit_const_to_reg(ctx, MIPS_R_T8, (u64)bpf_internal_load_pointer_neg_helper);
1308 emit_const_to_reg(ctx, MIPS_R_T9, (u64)ool_skb_header_pointer);
1309 emit_instr(ctx, addiu, MIPS_R_A2, MIPS_R_ZERO, size_to_len(insn));
1310 emit_instr(ctx, movn, MIPS_R_T9, MIPS_R_T8, MIPS_R_AT);
1311
1312ld_skb_common:
1313 emit_instr(ctx, jalr, MIPS_R_RA, MIPS_R_T9);
1314 /* delay slot move */
1315 emit_instr(ctx, daddu, MIPS_R_A0, MIPS_R_S0, MIPS_R_ZERO);
1316
1317 /* Check the error value */
1318 b_off = b_imm(exit_idx, ctx);
1319 if (is_bad_offset(b_off)) {
1320 target = j_target(ctx, exit_idx);
1321 if (target == (unsigned int)-1)
1322 return -E2BIG;
1323
1324 if (!(ctx->offsets[this_idx] & OFFSETS_B_CONV)) {
1325 ctx->offsets[this_idx] |= OFFSETS_B_CONV;
1326 ctx->long_b_conversion = 1;
1327 }
1328 emit_instr(ctx, bne, MIPS_R_V0, MIPS_R_ZERO, 4 * 3);
1329 emit_instr(ctx, nop);
1330 emit_instr(ctx, j, target);
1331 emit_instr(ctx, nop);
1332 } else {
1333 emit_instr(ctx, beq, MIPS_R_V0, MIPS_R_ZERO, b_off);
1334 emit_instr(ctx, nop);
1335 }
1336
1337#ifdef __BIG_ENDIAN
1338 need_swap = false;
1339#else
1340 need_swap = true;
1341#endif
1342 dst = MIPS_R_V0;
1343 switch (BPF_SIZE(insn->code)) {
1344 case BPF_B:
1345 emit_instr(ctx, lbu, dst, 0, MIPS_R_V0);
1346 break;
1347 case BPF_H:
1348 emit_instr(ctx, lhu, dst, 0, MIPS_R_V0);
1349 if (need_swap)
1350 emit_instr(ctx, wsbh, dst, dst);
1351 break;
1352 case BPF_W:
1353 emit_instr(ctx, lw, dst, 0, MIPS_R_V0);
1354 if (need_swap) {
1355 emit_instr(ctx, wsbh, dst, dst);
1356 emit_instr(ctx, rotr, dst, dst, 16);
1357 }
1358 break;
1359 case BPF_DW:
1360 emit_instr(ctx, ld, dst, 0, MIPS_R_V0);
1361 if (need_swap) {
1362 emit_instr(ctx, dsbh, dst, dst);
1363 emit_instr(ctx, dshd, dst, dst);
1364 }
1365 break;
1366 }
1367
1368 break;
1369 case BPF_ALU | BPF_END | BPF_FROM_BE:
1370 case BPF_ALU | BPF_END | BPF_FROM_LE:
1371 dst = ebpf_to_mips_reg(ctx, insn, dst_reg);
1372 if (dst < 0)
1373 return dst;
1374 td = get_reg_val_type(ctx, this_idx, insn->dst_reg);
1375 if (insn->imm == 64 && td == REG_32BIT)
1376 emit_instr(ctx, dinsu, dst, MIPS_R_ZERO, 32, 32);
1377
1378 if (insn->imm != 64 &&
1379 (td == REG_64BIT || td == REG_32BIT_ZERO_EX)) {
1380 /* sign extend */
1381 emit_instr(ctx, sll, dst, dst, 0);
1382 }
1383
1384#ifdef __BIG_ENDIAN
1385 need_swap = (BPF_SRC(insn->code) == BPF_FROM_LE);
1386#else
1387 need_swap = (BPF_SRC(insn->code) == BPF_FROM_BE);
1388#endif
1389 if (insn->imm == 16) {
1390 if (need_swap)
1391 emit_instr(ctx, wsbh, dst, dst);
1392 emit_instr(ctx, andi, dst, dst, 0xffff);
1393 } else if (insn->imm == 32) {
1394 if (need_swap) {
1395 emit_instr(ctx, wsbh, dst, dst);
1396 emit_instr(ctx, rotr, dst, dst, 16);
1397 }
1398 } else { /* 64-bit*/
1399 if (need_swap) {
1400 emit_instr(ctx, dsbh, dst, dst);
1401 emit_instr(ctx, dshd, dst, dst);
1402 }
1403 }
1404 break;
1405
1406 case BPF_ST | BPF_B | BPF_MEM:
1407 case BPF_ST | BPF_H | BPF_MEM:
1408 case BPF_ST | BPF_W | BPF_MEM:
1409 case BPF_ST | BPF_DW | BPF_MEM:
1410 if (insn->dst_reg == BPF_REG_10) {
1411 ctx->flags |= EBPF_SEEN_FP;
1412 dst = MIPS_R_SP;
1413 mem_off = insn->off + MAX_BPF_STACK;
1414 } else {
1415 dst = ebpf_to_mips_reg(ctx, insn, dst_reg);
1416 if (dst < 0)
1417 return dst;
1418 mem_off = insn->off;
1419 }
1420 gen_imm_to_reg(insn, MIPS_R_AT, ctx);
1421 switch (BPF_SIZE(insn->code)) {
1422 case BPF_B:
1423 emit_instr(ctx, sb, MIPS_R_AT, mem_off, dst);
1424 break;
1425 case BPF_H:
1426 emit_instr(ctx, sh, MIPS_R_AT, mem_off, dst);
1427 break;
1428 case BPF_W:
1429 emit_instr(ctx, sw, MIPS_R_AT, mem_off, dst);
1430 break;
1431 case BPF_DW:
1432 emit_instr(ctx, sd, MIPS_R_AT, mem_off, dst);
1433 break;
1434 }
1435 break;
1436
1437 case BPF_LDX | BPF_B | BPF_MEM:
1438 case BPF_LDX | BPF_H | BPF_MEM:
1439 case BPF_LDX | BPF_W | BPF_MEM:
1440 case BPF_LDX | BPF_DW | BPF_MEM:
1441 if (insn->src_reg == BPF_REG_10) {
1442 ctx->flags |= EBPF_SEEN_FP;
1443 src = MIPS_R_SP;
1444 mem_off = insn->off + MAX_BPF_STACK;
1445 } else {
1446 src = ebpf_to_mips_reg(ctx, insn, src_reg_no_fp);
1447 if (src < 0)
1448 return src;
1449 mem_off = insn->off;
1450 }
1451 dst = ebpf_to_mips_reg(ctx, insn, dst_reg);
1452 if (dst < 0)
1453 return dst;
1454 switch (BPF_SIZE(insn->code)) {
1455 case BPF_B:
1456 emit_instr(ctx, lbu, dst, mem_off, src);
1457 break;
1458 case BPF_H:
1459 emit_instr(ctx, lhu, dst, mem_off, src);
1460 break;
1461 case BPF_W:
1462 emit_instr(ctx, lw, dst, mem_off, src);
1463 break;
1464 case BPF_DW:
1465 emit_instr(ctx, ld, dst, mem_off, src);
1466 break;
1467 }
1468 break;
1469
1470 case BPF_STX | BPF_B | BPF_MEM:
1471 case BPF_STX | BPF_H | BPF_MEM:
1472 case BPF_STX | BPF_W | BPF_MEM:
1473 case BPF_STX | BPF_DW | BPF_MEM:
1474 case BPF_STX | BPF_W | BPF_XADD:
1475 case BPF_STX | BPF_DW | BPF_XADD:
1476 if (insn->dst_reg == BPF_REG_10) {
1477 ctx->flags |= EBPF_SEEN_FP;
1478 dst = MIPS_R_SP;
1479 mem_off = insn->off + MAX_BPF_STACK;
1480 } else {
1481 dst = ebpf_to_mips_reg(ctx, insn, dst_reg);
1482 if (dst < 0)
1483 return dst;
1484 mem_off = insn->off;
1485 }
1486 src = ebpf_to_mips_reg(ctx, insn, src_reg_no_fp);
1487 if (src < 0)
1488 return dst;
1489 if (BPF_MODE(insn->code) == BPF_XADD) {
1490 switch (BPF_SIZE(insn->code)) {
1491 case BPF_W:
1492 if (get_reg_val_type(ctx, this_idx, insn->src_reg) == REG_32BIT) {
1493 emit_instr(ctx, sll, MIPS_R_AT, src, 0);
1494 src = MIPS_R_AT;
1495 }
1496 emit_instr(ctx, ll, MIPS_R_T8, mem_off, dst);
1497 emit_instr(ctx, addu, MIPS_R_T8, MIPS_R_T8, src);
1498 emit_instr(ctx, sc, MIPS_R_T8, mem_off, dst);
1499 /*
1500 * On failure back up to LL (-4
1501 * instructions of 4 bytes each
1502 */
1503 emit_instr(ctx, beq, MIPS_R_T8, MIPS_R_ZERO, -4 * 4);
1504 emit_instr(ctx, nop);
1505 break;
1506 case BPF_DW:
1507 if (get_reg_val_type(ctx, this_idx, insn->src_reg) == REG_32BIT) {
1508 emit_instr(ctx, daddu, MIPS_R_AT, src, MIPS_R_ZERO);
1509 emit_instr(ctx, dinsu, MIPS_R_AT, MIPS_R_ZERO, 32, 32);
1510 src = MIPS_R_AT;
1511 }
1512 emit_instr(ctx, lld, MIPS_R_T8, mem_off, dst);
1513 emit_instr(ctx, daddu, MIPS_R_T8, MIPS_R_T8, src);
1514 emit_instr(ctx, scd, MIPS_R_T8, mem_off, dst);
1515 emit_instr(ctx, beq, MIPS_R_T8, MIPS_R_ZERO, -4 * 4);
1516 emit_instr(ctx, nop);
1517 break;
1518 }
1519 } else { /* BPF_MEM */
1520 switch (BPF_SIZE(insn->code)) {
1521 case BPF_B:
1522 emit_instr(ctx, sb, src, mem_off, dst);
1523 break;
1524 case BPF_H:
1525 emit_instr(ctx, sh, src, mem_off, dst);
1526 break;
1527 case BPF_W:
1528 emit_instr(ctx, sw, src, mem_off, dst);
1529 break;
1530 case BPF_DW:
1531 if (get_reg_val_type(ctx, this_idx, insn->src_reg) == REG_32BIT) {
1532 emit_instr(ctx, daddu, MIPS_R_AT, src, MIPS_R_ZERO);
1533 emit_instr(ctx, dinsu, MIPS_R_AT, MIPS_R_ZERO, 32, 32);
1534 src = MIPS_R_AT;
1535 }
1536 emit_instr(ctx, sd, src, mem_off, dst);
1537 break;
1538 }
1539 }
1540 break;
1541
1542 default:
1543 pr_err("NOT HANDLED %d - (%02x)\n",
1544 this_idx, (unsigned int)insn->code);
1545 return -EINVAL;
1546 }
1547 return 1;
1548}
1549
1550#define RVT_VISITED_MASK 0xc000000000000000ull
1551#define RVT_FALL_THROUGH 0x4000000000000000ull
1552#define RVT_BRANCH_TAKEN 0x8000000000000000ull
1553#define RVT_DONE (RVT_FALL_THROUGH | RVT_BRANCH_TAKEN)
1554
1555static int build_int_body(struct jit_ctx *ctx)
1556{
1557 const struct bpf_prog *prog = ctx->skf;
1558 const struct bpf_insn *insn;
1559 int i, r;
1560
1561 for (i = 0; i < prog->len; ) {
1562 insn = prog->insnsi + i;
1563 if ((ctx->reg_val_types[i] & RVT_VISITED_MASK) == 0) {
1564 /* dead instruction, don't emit it. */
1565 i++;
1566 continue;
1567 }
1568
1569 if (ctx->target == NULL)
1570 ctx->offsets[i] = (ctx->offsets[i] & OFFSETS_B_CONV) | (ctx->idx * 4);
1571
1572 r = build_one_insn(insn, ctx, i, prog->len);
1573 if (r < 0)
1574 return r;
1575 i += r;
1576 }
1577 /* epilogue offset */
1578 if (ctx->target == NULL)
1579 ctx->offsets[i] = ctx->idx * 4;
1580
1581 /*
1582 * All exits have an offset of the epilogue, some offsets may
1583 * not have been set due to banch-around threading, so set
1584 * them now.
1585 */
1586 if (ctx->target == NULL)
1587 for (i = 0; i < prog->len; i++) {
1588 insn = prog->insnsi + i;
1589 if (insn->code == (BPF_JMP | BPF_EXIT))
1590 ctx->offsets[i] = ctx->idx * 4;
1591 }
1592 return 0;
1593}
1594
1595/* return the last idx processed, or negative for error */
1596static int reg_val_propagate_range(struct jit_ctx *ctx, u64 initial_rvt,
1597 int start_idx, bool follow_taken)
1598{
1599 const struct bpf_prog *prog = ctx->skf;
1600 const struct bpf_insn *insn;
1601 u64 exit_rvt = initial_rvt;
1602 u64 *rvt = ctx->reg_val_types;
1603 int idx;
1604 int reg;
1605
1606 for (idx = start_idx; idx < prog->len; idx++) {
1607 rvt[idx] = (rvt[idx] & RVT_VISITED_MASK) | exit_rvt;
1608 insn = prog->insnsi + idx;
1609 switch (BPF_CLASS(insn->code)) {
1610 case BPF_ALU:
1611 switch (BPF_OP(insn->code)) {
1612 case BPF_ADD:
1613 case BPF_SUB:
1614 case BPF_MUL:
1615 case BPF_DIV:
1616 case BPF_OR:
1617 case BPF_AND:
1618 case BPF_LSH:
1619 case BPF_RSH:
1620 case BPF_NEG:
1621 case BPF_MOD:
1622 case BPF_XOR:
1623 set_reg_val_type(&exit_rvt, insn->dst_reg, REG_32BIT);
1624 break;
1625 case BPF_MOV:
1626 if (BPF_SRC(insn->code)) {
1627 set_reg_val_type(&exit_rvt, insn->dst_reg, REG_32BIT);
1628 } else {
1629 /* IMM to REG move*/
1630 if (insn->imm >= 0)
1631 set_reg_val_type(&exit_rvt, insn->dst_reg, REG_32BIT_POS);
1632 else
1633 set_reg_val_type(&exit_rvt, insn->dst_reg, REG_32BIT);
1634 }
1635 break;
1636 case BPF_END:
1637 if (insn->imm == 64)
1638 set_reg_val_type(&exit_rvt, insn->dst_reg, REG_64BIT);
1639 else if (insn->imm == 32)
1640 set_reg_val_type(&exit_rvt, insn->dst_reg, REG_32BIT);
1641 else /* insn->imm == 16 */
1642 set_reg_val_type(&exit_rvt, insn->dst_reg, REG_32BIT_POS);
1643 break;
1644 }
1645 rvt[idx] |= RVT_DONE;
1646 break;
1647 case BPF_ALU64:
1648 switch (BPF_OP(insn->code)) {
1649 case BPF_MOV:
1650 if (BPF_SRC(insn->code)) {
1651 /* REG to REG move*/
1652 set_reg_val_type(&exit_rvt, insn->dst_reg, REG_64BIT);
1653 } else {
1654 /* IMM to REG move*/
1655 if (insn->imm >= 0)
1656 set_reg_val_type(&exit_rvt, insn->dst_reg, REG_32BIT_POS);
1657 else
1658 set_reg_val_type(&exit_rvt, insn->dst_reg, REG_64BIT_32BIT);
1659 }
1660 break;
1661 default:
1662 set_reg_val_type(&exit_rvt, insn->dst_reg, REG_64BIT);
1663 }
1664 rvt[idx] |= RVT_DONE;
1665 break;
1666 case BPF_LD:
1667 switch (BPF_SIZE(insn->code)) {
1668 case BPF_DW:
1669 if (BPF_MODE(insn->code) == BPF_IMM) {
1670 s64 val;
1671
1672 val = (s64)((u32)insn->imm | ((u64)(insn + 1)->imm << 32));
1673 if (val > 0 && val <= S32_MAX)
1674 set_reg_val_type(&exit_rvt, insn->dst_reg, REG_32BIT_POS);
1675 else if (val >= S32_MIN && val <= S32_MAX)
1676 set_reg_val_type(&exit_rvt, insn->dst_reg, REG_64BIT_32BIT);
1677 else
1678 set_reg_val_type(&exit_rvt, insn->dst_reg, REG_64BIT);
1679 rvt[idx] |= RVT_DONE;
1680 idx++;
1681 } else {
1682 set_reg_val_type(&exit_rvt, insn->dst_reg, REG_64BIT);
1683 }
1684 break;
1685 case BPF_B:
1686 case BPF_H:
1687 set_reg_val_type(&exit_rvt, insn->dst_reg, REG_32BIT_POS);
1688 break;
1689 case BPF_W:
1690 if (BPF_MODE(insn->code) == BPF_IMM)
1691 set_reg_val_type(&exit_rvt, insn->dst_reg,
1692 insn->imm >= 0 ? REG_32BIT_POS : REG_32BIT);
1693 else
1694 set_reg_val_type(&exit_rvt, insn->dst_reg, REG_32BIT);
1695 break;
1696 }
1697 rvt[idx] |= RVT_DONE;
1698 break;
1699 case BPF_LDX:
1700 switch (BPF_SIZE(insn->code)) {
1701 case BPF_DW:
1702 set_reg_val_type(&exit_rvt, insn->dst_reg, REG_64BIT);
1703 break;
1704 case BPF_B:
1705 case BPF_H:
1706 set_reg_val_type(&exit_rvt, insn->dst_reg, REG_32BIT_POS);
1707 break;
1708 case BPF_W:
1709 set_reg_val_type(&exit_rvt, insn->dst_reg, REG_32BIT);
1710 break;
1711 }
1712 rvt[idx] |= RVT_DONE;
1713 break;
1714 case BPF_JMP:
1715 switch (BPF_OP(insn->code)) {
1716 case BPF_EXIT:
1717 rvt[idx] = RVT_DONE | exit_rvt;
1718 rvt[prog->len] = exit_rvt;
1719 return idx;
1720 case BPF_JA:
1721 rvt[idx] |= RVT_DONE;
1722 idx += insn->off;
1723 break;
1724 case BPF_JEQ:
1725 case BPF_JGT:
1726 case BPF_JGE:
1727 case BPF_JSET:
1728 case BPF_JNE:
1729 case BPF_JSGT:
1730 case BPF_JSGE:
1731 if (follow_taken) {
1732 rvt[idx] |= RVT_BRANCH_TAKEN;
1733 idx += insn->off;
1734 follow_taken = false;
1735 } else {
1736 rvt[idx] |= RVT_FALL_THROUGH;
1737 }
1738 break;
1739 case BPF_CALL:
1740 set_reg_val_type(&exit_rvt, BPF_REG_0, REG_64BIT);
1741 /* Upon call return, argument registers are clobbered. */
1742 for (reg = BPF_REG_0; reg <= BPF_REG_5; reg++)
1743 set_reg_val_type(&exit_rvt, reg, REG_64BIT);
1744
1745 rvt[idx] |= RVT_DONE;
1746 break;
1747 default:
1748 WARN(1, "Unhandled BPF_JMP case.\n");
1749 rvt[idx] |= RVT_DONE;
1750 break;
1751 }
1752 break;
1753 default:
1754 rvt[idx] |= RVT_DONE;
1755 break;
1756 }
1757 }
1758 return idx;
1759}
1760
1761/*
1762 * Track the value range (i.e. 32-bit vs. 64-bit) of each register at
1763 * each eBPF insn. This allows unneeded sign and zero extension
1764 * operations to be omitted.
1765 *
1766 * Doesn't handle yet confluence of control paths with conflicting
1767 * ranges, but it is good enough for most sane code.
1768 */
1769static int reg_val_propagate(struct jit_ctx *ctx)
1770{
1771 const struct bpf_prog *prog = ctx->skf;
1772 u64 exit_rvt;
1773 int reg;
1774 int i;
1775
1776 /*
1777 * 11 registers * 3 bits/reg leaves top bits free for other
1778 * uses. Bit-62..63 used to see if we have visited an insn.
1779 */
1780 exit_rvt = 0;
1781
1782 /* Upon entry, argument registers are 64-bit. */
1783 for (reg = BPF_REG_1; reg <= BPF_REG_5; reg++)
1784 set_reg_val_type(&exit_rvt, reg, REG_64BIT);
1785
1786 /*
1787 * First follow all conditional branches on the fall-through
1788 * edge of control flow..
1789 */
1790 reg_val_propagate_range(ctx, exit_rvt, 0, false);
1791restart_search:
1792 /*
1793 * Then repeatedly find the first conditional branch where
1794 * both edges of control flow have not been taken, and follow
1795 * the branch taken edge. We will end up restarting the
1796 * search once per conditional branch insn.
1797 */
1798 for (i = 0; i < prog->len; i++) {
1799 u64 rvt = ctx->reg_val_types[i];
1800
1801 if ((rvt & RVT_VISITED_MASK) == RVT_DONE ||
1802 (rvt & RVT_VISITED_MASK) == 0)
1803 continue;
1804 if ((rvt & RVT_VISITED_MASK) == RVT_FALL_THROUGH) {
1805 reg_val_propagate_range(ctx, rvt & ~RVT_VISITED_MASK, i, true);
1806 } else { /* RVT_BRANCH_TAKEN */
1807 WARN(1, "Unexpected RVT_BRANCH_TAKEN case.\n");
1808 reg_val_propagate_range(ctx, rvt & ~RVT_VISITED_MASK, i, false);
1809 }
1810 goto restart_search;
1811 }
1812 /*
1813 * Eventually all conditional branches have been followed on
1814 * both branches and we are done. Any insn that has not been
1815 * visited at this point is dead.
1816 */
1817
1818 return 0;
1819}
1820
1821static void jit_fill_hole(void *area, unsigned int size)
1822{
1823 u32 *p;
1824
1825 /* We are guaranteed to have aligned memory. */
1826 for (p = area; size >= sizeof(u32); size -= sizeof(u32))
1827 uasm_i_break(&p, BRK_BUG); /* Increments p */
1828}
1829
1830struct bpf_prog *bpf_int_jit_compile(struct bpf_prog *prog)
1831{
1832 struct bpf_prog *orig_prog = prog;
1833 bool tmp_blinded = false;
1834 struct bpf_prog *tmp;
1835 struct bpf_binary_header *header = NULL;
1836 struct jit_ctx ctx;
1837 unsigned int image_size;
1838 u8 *image_ptr;
1839
1840 if (!bpf_jit_enable || !cpu_has_mips64r2)
1841 return prog;
1842
1843 tmp = bpf_jit_blind_constants(prog);
1844 /* If blinding was requested and we failed during blinding,
1845 * we must fall back to the interpreter.
1846 */
1847 if (IS_ERR(tmp))
1848 return orig_prog;
1849 if (tmp != prog) {
1850 tmp_blinded = true;
1851 prog = tmp;
1852 }
1853
1854 memset(&ctx, 0, sizeof(ctx));
1855
1856 ctx.offsets = kcalloc(prog->len + 1, sizeof(*ctx.offsets), GFP_KERNEL);
1857 if (ctx.offsets == NULL)
1858 goto out_err;
1859
1860 ctx.reg_val_types = kcalloc(prog->len + 1, sizeof(*ctx.reg_val_types), GFP_KERNEL);
1861 if (ctx.reg_val_types == NULL)
1862 goto out_err;
1863
1864 ctx.skf = prog;
1865
1866 if (reg_val_propagate(&ctx))
1867 goto out_err;
1868
1869 /*
1870 * First pass discovers used resources and instruction offsets
1871 * assuming short branches are used.
1872 */
1873 if (build_int_body(&ctx))
1874 goto out_err;
1875
1876 /*
1877 * If no calls are made (EBPF_SAVE_RA), then tail call count
1878 * in $v1, else we must save in n$s4.
1879 */
1880 if (ctx.flags & EBPF_SEEN_TC) {
1881 if (ctx.flags & EBPF_SAVE_RA)
1882 ctx.flags |= EBPF_SAVE_S4;
1883 else
1884 ctx.flags |= EBPF_TCC_IN_V1;
1885 }
1886
1887 /*
1888 * Second pass generates offsets, if any branches are out of
1889 * range a jump-around long sequence is generated, and we have
1890 * to try again from the beginning to generate the new
1891 * offsets. This is done until no additional conversions are
1892 * necessary.
1893 */
1894 do {
1895 ctx.idx = 0;
1896 ctx.gen_b_offsets = 1;
1897 ctx.long_b_conversion = 0;
1898 if (gen_int_prologue(&ctx))
1899 goto out_err;
1900 if (build_int_body(&ctx))
1901 goto out_err;
1902 if (build_int_epilogue(&ctx, MIPS_R_RA))
1903 goto out_err;
1904 } while (ctx.long_b_conversion);
1905
1906 image_size = 4 * ctx.idx;
1907
1908 header = bpf_jit_binary_alloc(image_size, &image_ptr,
1909 sizeof(u32), jit_fill_hole);
1910 if (header == NULL)
1911 goto out_err;
1912
1913 ctx.target = (u32 *)image_ptr;
1914
1915 /* Third pass generates the code */
1916 ctx.idx = 0;
1917 if (gen_int_prologue(&ctx))
1918 goto out_err;
1919 if (build_int_body(&ctx))
1920 goto out_err;
1921 if (build_int_epilogue(&ctx, MIPS_R_RA))
1922 goto out_err;
1923
1924 /* Update the icache */
1925 flush_icache_range((unsigned long)ctx.target,
1926 (unsigned long)(ctx.target + ctx.idx * sizeof(u32)));
1927
1928 if (bpf_jit_enable > 1)
1929 /* Dump JIT code */
1930 bpf_jit_dump(prog->len, image_size, 2, ctx.target);
1931
1932 bpf_jit_binary_lock_ro(header);
1933 prog->bpf_func = (void *)ctx.target;
1934 prog->jited = 1;
1935 prog->jited_len = image_size;
1936out_normal:
1937 if (tmp_blinded)
1938 bpf_jit_prog_release_other(prog, prog == orig_prog ?
1939 tmp : orig_prog);
1940 kfree(ctx.offsets);
1941 kfree(ctx.reg_val_types);
1942
1943 return prog;
1944
1945out_err:
1946 prog = orig_prog;
1947 if (header)
1948 bpf_jit_binary_free(header);
1949 goto out_normal;
1950}
diff --git a/arch/mips/pci/pci.c b/arch/mips/pci/pci.c
index bd67ac74fe2d..9632436d74d7 100644
--- a/arch/mips/pci/pci.c
+++ b/arch/mips/pci/pci.c
@@ -28,16 +28,15 @@ EXPORT_SYMBOL(PCIBIOS_MIN_MEM);
28 28
29static int __init pcibios_set_cache_line_size(void) 29static int __init pcibios_set_cache_line_size(void)
30{ 30{
31 struct cpuinfo_mips *c = &current_cpu_data;
32 unsigned int lsize; 31 unsigned int lsize;
33 32
34 /* 33 /*
35 * Set PCI cacheline size to that of the highest level in the 34 * Set PCI cacheline size to that of the highest level in the
36 * cache hierarchy. 35 * cache hierarchy.
37 */ 36 */
38 lsize = c->dcache.linesz; 37 lsize = cpu_dcache_line_size();
39 lsize = c->scache.linesz ? : lsize; 38 lsize = cpu_scache_line_size() ? : lsize;
40 lsize = c->tcache.linesz ? : lsize; 39 lsize = cpu_tcache_line_size() ? : lsize;
41 40
42 BUG_ON(!lsize); 41 BUG_ON(!lsize);
43 42
diff --git a/arch/mips/ralink/mt7620.c b/arch/mips/ralink/mt7620.c
index 094a0ee4af46..9be8b08ae46b 100644
--- a/arch/mips/ralink/mt7620.c
+++ b/arch/mips/ralink/mt7620.c
@@ -12,6 +12,7 @@
12 12
13#include <linux/kernel.h> 13#include <linux/kernel.h>
14#include <linux/init.h> 14#include <linux/init.h>
15#include <linux/bug.h>
15 16
16#include <asm/mipsregs.h> 17#include <asm/mipsregs.h>
17#include <asm/mach-ralink/ralink_regs.h> 18#include <asm/mach-ralink/ralink_regs.h>
diff --git a/arch/mips/vdso/gettimeofday.c b/arch/mips/vdso/gettimeofday.c
index 974276e828b2..e2690d7ca4dd 100644
--- a/arch/mips/vdso/gettimeofday.c
+++ b/arch/mips/vdso/gettimeofday.c
@@ -35,7 +35,8 @@ static __always_inline long gettimeofday_fallback(struct timeval *_tv,
35 " syscall\n" 35 " syscall\n"
36 : "=r" (ret), "=r" (error) 36 : "=r" (ret), "=r" (error)
37 : "r" (tv), "r" (tz), "r" (nr) 37 : "r" (tv), "r" (tz), "r" (nr)
38 : "memory"); 38 : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13",
39 "$14", "$15", "$24", "$25", "hi", "lo", "memory");
39 40
40 return error ? -ret : ret; 41 return error ? -ret : ret;
41} 42}
@@ -55,7 +56,8 @@ static __always_inline long clock_gettime_fallback(clockid_t _clkid,
55 " syscall\n" 56 " syscall\n"
56 : "=r" (ret), "=r" (error) 57 : "=r" (ret), "=r" (error)
57 : "r" (clkid), "r" (ts), "r" (nr) 58 : "r" (clkid), "r" (ts), "r" (nr)
58 : "memory"); 59 : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13",
60 "$14", "$15", "$24", "$25", "hi", "lo", "memory");
59 61
60 return error ? -ret : ret; 62 return error ? -ret : ret;
61} 63}
diff --git a/arch/mn10300/include/asm/bug.h b/arch/mn10300/include/asm/bug.h
index aa6a38886391..811414fb002d 100644
--- a/arch/mn10300/include/asm/bug.h
+++ b/arch/mn10300/include/asm/bug.h
@@ -21,7 +21,7 @@ do { \
21 asm volatile( \ 21 asm volatile( \
22 " syscall 15 \n" \ 22 " syscall 15 \n" \
23 "0: \n" \ 23 "0: \n" \
24 " .section __bug_table,\"a\" \n" \ 24 " .section __bug_table,\"aw\" \n" \
25 " .long 0b,%0,%1 \n" \ 25 " .long 0b,%0,%1 \n" \
26 " .previous \n" \ 26 " .previous \n" \
27 : \ 27 : \
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig
index 531da9eb8f43..dda1f558ef35 100644
--- a/arch/parisc/Kconfig
+++ b/arch/parisc/Kconfig
@@ -47,6 +47,9 @@ config PARISC
47 and later HP3000 series). The PA-RISC Linux project home page is 47 and later HP3000 series). The PA-RISC Linux project home page is
48 at <http://www.parisc-linux.org/>. 48 at <http://www.parisc-linux.org/>.
49 49
50config CPU_BIG_ENDIAN
51 def_bool y
52
50config MMU 53config MMU
51 def_bool y 54 def_bool y
52 55
diff --git a/arch/parisc/configs/712_defconfig b/arch/parisc/configs/712_defconfig
index 143d02652792..ccc109761f44 100644
--- a/arch/parisc/configs/712_defconfig
+++ b/arch/parisc/configs/712_defconfig
@@ -1,11 +1,9 @@
1CONFIG_EXPERIMENTAL=y
2# CONFIG_LOCALVERSION_AUTO is not set 1# CONFIG_LOCALVERSION_AUTO is not set
3CONFIG_SYSVIPC=y 2CONFIG_SYSVIPC=y
4CONFIG_POSIX_MQUEUE=y 3CONFIG_POSIX_MQUEUE=y
5CONFIG_IKCONFIG=y 4CONFIG_IKCONFIG=y
6CONFIG_IKCONFIG_PROC=y 5CONFIG_IKCONFIG_PROC=y
7CONFIG_LOG_BUF_SHIFT=16 6CONFIG_LOG_BUF_SHIFT=16
8CONFIG_SYSFS_DEPRECATED_V2=y
9CONFIG_BLK_DEV_INITRD=y 7CONFIG_BLK_DEV_INITRD=y
10CONFIG_KALLSYMS_ALL=y 8CONFIG_KALLSYMS_ALL=y
11CONFIG_SLAB=y 9CONFIG_SLAB=y
@@ -14,7 +12,6 @@ CONFIG_OPROFILE=m
14CONFIG_MODULES=y 12CONFIG_MODULES=y
15CONFIG_MODULE_UNLOAD=y 13CONFIG_MODULE_UNLOAD=y
16CONFIG_MODULE_FORCE_UNLOAD=y 14CONFIG_MODULE_FORCE_UNLOAD=y
17# CONFIG_BLK_DEV_BSG is not set
18CONFIG_PA7100LC=y 15CONFIG_PA7100LC=y
19CONFIG_PREEMPT_VOLUNTARY=y 16CONFIG_PREEMPT_VOLUNTARY=y
20CONFIG_GSC_LASI=y 17CONFIG_GSC_LASI=y
@@ -32,11 +29,9 @@ CONFIG_IP_PNP_DHCP=y
32CONFIG_IP_PNP_BOOTP=y 29CONFIG_IP_PNP_BOOTP=y
33CONFIG_INET_AH=m 30CONFIG_INET_AH=m
34CONFIG_INET_ESP=m 31CONFIG_INET_ESP=m
35# CONFIG_INET_LRO is not set
36CONFIG_INET_DIAG=m 32CONFIG_INET_DIAG=m
37# CONFIG_IPV6 is not set 33# CONFIG_IPV6 is not set
38CONFIG_NETFILTER=y 34CONFIG_NETFILTER=y
39CONFIG_IP_NF_QUEUE=m
40CONFIG_LLC2=m 35CONFIG_LLC2=m
41CONFIG_NET_PKTGEN=m 36CONFIG_NET_PKTGEN=m
42CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 37CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
@@ -65,21 +60,20 @@ CONFIG_MD_LINEAR=m
65CONFIG_MD_RAID0=m 60CONFIG_MD_RAID0=m
66CONFIG_MD_RAID1=m 61CONFIG_MD_RAID1=m
67CONFIG_NETDEVICES=y 62CONFIG_NETDEVICES=y
68CONFIG_DUMMY=m
69CONFIG_BONDING=m 63CONFIG_BONDING=m
64CONFIG_DUMMY=m
70CONFIG_TUN=m 65CONFIG_TUN=m
71CONFIG_NET_ETHERNET=y
72CONFIG_MII=m
73CONFIG_LASI_82596=y 66CONFIG_LASI_82596=y
74CONFIG_PPP=m 67CONFIG_PPP=m
75CONFIG_PPP_ASYNC=m
76CONFIG_PPP_SYNC_TTY=m
77CONFIG_PPP_DEFLATE=m
78CONFIG_PPP_BSDCOMP=m 68CONFIG_PPP_BSDCOMP=m
69CONFIG_PPP_DEFLATE=m
79CONFIG_PPP_MPPE=m 70CONFIG_PPP_MPPE=m
80CONFIG_PPPOE=m 71CONFIG_PPPOE=m
72CONFIG_PPP_ASYNC=m
73CONFIG_PPP_SYNC_TTY=m
81# CONFIG_KEYBOARD_HIL_OLD is not set 74# CONFIG_KEYBOARD_HIL_OLD is not set
82CONFIG_MOUSE_SERIAL=m 75CONFIG_MOUSE_SERIAL=m
76CONFIG_LEGACY_PTY_COUNT=64
83CONFIG_SERIAL_8250=y 77CONFIG_SERIAL_8250=y
84CONFIG_SERIAL_8250_CONSOLE=y 78CONFIG_SERIAL_8250_CONSOLE=y
85CONFIG_SERIAL_8250_NR_UARTS=17 79CONFIG_SERIAL_8250_NR_UARTS=17
@@ -88,22 +82,17 @@ CONFIG_SERIAL_8250_MANY_PORTS=y
88CONFIG_SERIAL_8250_SHARE_IRQ=y 82CONFIG_SERIAL_8250_SHARE_IRQ=y
89# CONFIG_SERIAL_MUX is not set 83# CONFIG_SERIAL_MUX is not set
90CONFIG_PDC_CONSOLE=y 84CONFIG_PDC_CONSOLE=y
91CONFIG_LEGACY_PTY_COUNT=64
92CONFIG_PRINTER=m 85CONFIG_PRINTER=m
93CONFIG_PPDEV=m 86CONFIG_PPDEV=m
94# CONFIG_HW_RANDOM is not set 87# CONFIG_HW_RANDOM is not set
95CONFIG_RAW_DRIVER=y 88CONFIG_RAW_DRIVER=y
96# CONFIG_HWMON is not set 89# CONFIG_HWMON is not set
97CONFIG_VIDEO_OUTPUT_CONTROL=m
98CONFIG_FB=y 90CONFIG_FB=y
99CONFIG_FB_MODE_HELPERS=y 91CONFIG_FB_MODE_HELPERS=y
100CONFIG_FB_TILEBLITTING=y 92CONFIG_FB_TILEBLITTING=y
101CONFIG_DUMMY_CONSOLE_COLUMNS=128 93CONFIG_DUMMY_CONSOLE_COLUMNS=128
102CONFIG_DUMMY_CONSOLE_ROWS=48 94CONFIG_DUMMY_CONSOLE_ROWS=48
103CONFIG_FRAMEBUFFER_CONSOLE=y 95CONFIG_FRAMEBUFFER_CONSOLE=y
104CONFIG_FONTS=y
105CONFIG_FONT_8x8=y
106CONFIG_FONT_8x16=y
107CONFIG_LOGO=y 96CONFIG_LOGO=y
108# CONFIG_LOGO_LINUX_MONO is not set 97# CONFIG_LOGO_LINUX_MONO is not set
109# CONFIG_LOGO_LINUX_VGA16 is not set 98# CONFIG_LOGO_LINUX_VGA16 is not set
@@ -111,13 +100,9 @@ CONFIG_LOGO=y
111CONFIG_SOUND=y 100CONFIG_SOUND=y
112CONFIG_SND=y 101CONFIG_SND=y
113CONFIG_SND_SEQUENCER=y 102CONFIG_SND_SEQUENCER=y
114CONFIG_SND_MIXER_OSS=y
115CONFIG_SND_PCM_OSS=y
116CONFIG_SND_SEQUENCER_OSS=y
117CONFIG_SND_HARMONY=y 103CONFIG_SND_HARMONY=y
118CONFIG_EXT2_FS=y 104CONFIG_EXT2_FS=y
119CONFIG_EXT3_FS=y 105CONFIG_EXT3_FS=y
120# CONFIG_EXT3_FS_XATTR is not set
121CONFIG_JFS_FS=m 106CONFIG_JFS_FS=m
122CONFIG_XFS_FS=m 107CONFIG_XFS_FS=m
123CONFIG_AUTOFS4_FS=y 108CONFIG_AUTOFS4_FS=y
@@ -130,14 +115,10 @@ CONFIG_PROC_KCORE=y
130CONFIG_TMPFS=y 115CONFIG_TMPFS=y
131CONFIG_UFS_FS=m 116CONFIG_UFS_FS=m
132CONFIG_NFS_FS=y 117CONFIG_NFS_FS=y
133CONFIG_NFS_V3=y
134CONFIG_NFS_V4=y 118CONFIG_NFS_V4=y
135CONFIG_ROOT_NFS=y 119CONFIG_ROOT_NFS=y
136CONFIG_NFSD=m 120CONFIG_NFSD=m
137CONFIG_NFSD_V4=y 121CONFIG_NFSD_V4=y
138CONFIG_RPCSEC_GSS_SPKM3=m
139CONFIG_SMB_FS=m
140CONFIG_SMB_NLS_DEFAULT=y
141CONFIG_CIFS=m 122CONFIG_CIFS=m
142CONFIG_NLS_CODEPAGE_437=m 123CONFIG_NLS_CODEPAGE_437=m
143CONFIG_NLS_CODEPAGE_737=m 124CONFIG_NLS_CODEPAGE_737=m
@@ -177,21 +158,16 @@ CONFIG_NLS_ISO8859_15=m
177CONFIG_NLS_KOI8_R=m 158CONFIG_NLS_KOI8_R=m
178CONFIG_NLS_KOI8_U=m 159CONFIG_NLS_KOI8_U=m
179CONFIG_NLS_UTF8=m 160CONFIG_NLS_UTF8=m
180CONFIG_MAGIC_SYSRQ=y
181CONFIG_DEBUG_FS=y 161CONFIG_DEBUG_FS=y
162CONFIG_MAGIC_SYSRQ=y
182CONFIG_DEBUG_KERNEL=y 163CONFIG_DEBUG_KERNEL=y
183CONFIG_DEBUG_MUTEXES=y 164CONFIG_DEBUG_MUTEXES=y
184# CONFIG_RCU_CPU_STALL_DETECTOR is not set
185CONFIG_CRYPTO_NULL=m
186CONFIG_CRYPTO_TEST=m 165CONFIG_CRYPTO_TEST=m
187CONFIG_CRYPTO_HMAC=y 166CONFIG_CRYPTO_HMAC=y
188CONFIG_CRYPTO_MD4=m
189CONFIG_CRYPTO_MICHAEL_MIC=m 167CONFIG_CRYPTO_MICHAEL_MIC=m
190CONFIG_CRYPTO_SHA256=m
191CONFIG_CRYPTO_SHA512=m 168CONFIG_CRYPTO_SHA512=m
192CONFIG_CRYPTO_TGR192=m 169CONFIG_CRYPTO_TGR192=m
193CONFIG_CRYPTO_WP512=m 170CONFIG_CRYPTO_WP512=m
194CONFIG_CRYPTO_AES=m
195CONFIG_CRYPTO_ANUBIS=m 171CONFIG_CRYPTO_ANUBIS=m
196CONFIG_CRYPTO_BLOWFISH=m 172CONFIG_CRYPTO_BLOWFISH=m
197CONFIG_CRYPTO_CAST6=m 173CONFIG_CRYPTO_CAST6=m
@@ -200,6 +176,7 @@ CONFIG_CRYPTO_SERPENT=m
200CONFIG_CRYPTO_TEA=m 176CONFIG_CRYPTO_TEA=m
201CONFIG_CRYPTO_TWOFISH=m 177CONFIG_CRYPTO_TWOFISH=m
202CONFIG_CRYPTO_DEFLATE=m 178CONFIG_CRYPTO_DEFLATE=m
203# CONFIG_CRYPTO_ANSI_CPRNG is not set
204# CONFIG_CRYPTO_HW is not set 179# CONFIG_CRYPTO_HW is not set
205CONFIG_LIBCRC32C=m 180CONFIG_FONTS=y
181CONFIG_FONT_8x8=y
182CONFIG_FONT_8x16=y
diff --git a/arch/parisc/configs/a500_defconfig b/arch/parisc/configs/a500_defconfig
index 1a4f776b49b8..5acb93dcaabf 100644
--- a/arch/parisc/configs/a500_defconfig
+++ b/arch/parisc/configs/a500_defconfig
@@ -1,13 +1,10 @@
1CONFIG_EXPERIMENTAL=y
2# CONFIG_LOCALVERSION_AUTO is not set 1# CONFIG_LOCALVERSION_AUTO is not set
3CONFIG_SYSVIPC=y 2CONFIG_SYSVIPC=y
4CONFIG_POSIX_MQUEUE=y 3CONFIG_POSIX_MQUEUE=y
5CONFIG_IKCONFIG=y 4CONFIG_IKCONFIG=y
6CONFIG_IKCONFIG_PROC=y 5CONFIG_IKCONFIG_PROC=y
7CONFIG_LOG_BUF_SHIFT=16 6CONFIG_LOG_BUF_SHIFT=16
8CONFIG_SYSFS_DEPRECATED_V2=y
9CONFIG_BLK_DEV_INITRD=y 7CONFIG_BLK_DEV_INITRD=y
10# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
11CONFIG_EXPERT=y 8CONFIG_EXPERT=y
12CONFIG_KALLSYMS_ALL=y 9CONFIG_KALLSYMS_ALL=y
13CONFIG_SLAB=y 10CONFIG_SLAB=y
@@ -16,7 +13,6 @@ CONFIG_OPROFILE=m
16CONFIG_MODULES=y 13CONFIG_MODULES=y
17CONFIG_MODULE_UNLOAD=y 14CONFIG_MODULE_UNLOAD=y
18CONFIG_MODULE_FORCE_UNLOAD=y 15CONFIG_MODULE_FORCE_UNLOAD=y
19# CONFIG_BLK_DEV_BSG is not set
20CONFIG_PA8X00=y 16CONFIG_PA8X00=y
21CONFIG_64BIT=y 17CONFIG_64BIT=y
22CONFIG_SMP=y 18CONFIG_SMP=y
@@ -43,21 +39,17 @@ CONFIG_IP_PNP_DHCP=y
43CONFIG_IP_PNP_BOOTP=y 39CONFIG_IP_PNP_BOOTP=y
44CONFIG_INET_AH=m 40CONFIG_INET_AH=m
45CONFIG_INET_ESP=m 41CONFIG_INET_ESP=m
46# CONFIG_INET_LRO is not set
47CONFIG_INET6_AH=m 42CONFIG_INET6_AH=m
48CONFIG_INET6_ESP=m 43CONFIG_INET6_ESP=m
49CONFIG_INET6_IPCOMP=m 44CONFIG_INET6_IPCOMP=m
50CONFIG_IPV6_TUNNEL=m 45CONFIG_IPV6_TUNNEL=m
51CONFIG_NETFILTER=y 46CONFIG_NETFILTER=y
52# CONFIG_NETFILTER_XT_MATCH_DCCP is not set 47# CONFIG_NETFILTER_XT_MATCH_DCCP is not set
53CONFIG_IP_NF_QUEUE=m
54CONFIG_IP_NF_IPTABLES=m 48CONFIG_IP_NF_IPTABLES=m
55CONFIG_IP_NF_MATCH_ECN=m 49CONFIG_IP_NF_MATCH_ECN=m
56CONFIG_IP_NF_MATCH_TTL=m 50CONFIG_IP_NF_MATCH_TTL=m
57CONFIG_IP_NF_FILTER=m 51CONFIG_IP_NF_FILTER=m
58CONFIG_IP_NF_TARGET_REJECT=m 52CONFIG_IP_NF_TARGET_REJECT=m
59CONFIG_IP_NF_TARGET_LOG=m
60CONFIG_IP_NF_TARGET_ULOG=m
61CONFIG_IP_NF_MANGLE=m 53CONFIG_IP_NF_MANGLE=m
62CONFIG_IP_NF_TARGET_ECN=m 54CONFIG_IP_NF_TARGET_ECN=m
63CONFIG_IP_NF_RAW=m 55CONFIG_IP_NF_RAW=m
@@ -70,7 +62,6 @@ CONFIG_IP6_NF_MATCH_OPTS=m
70CONFIG_IP6_NF_MATCH_HL=m 62CONFIG_IP6_NF_MATCH_HL=m
71CONFIG_IP6_NF_MATCH_IPV6HEADER=m 63CONFIG_IP6_NF_MATCH_IPV6HEADER=m
72CONFIG_IP6_NF_MATCH_RT=m 64CONFIG_IP6_NF_MATCH_RT=m
73CONFIG_IP6_NF_TARGET_LOG=m
74CONFIG_IP6_NF_FILTER=m 65CONFIG_IP6_NF_FILTER=m
75CONFIG_IP6_NF_TARGET_REJECT=m 66CONFIG_IP6_NF_TARGET_REJECT=m
76CONFIG_IP6_NF_MANGLE=m 67CONFIG_IP6_NF_MANGLE=m
@@ -94,7 +85,6 @@ CONFIG_BLK_DEV_SD=y
94CONFIG_CHR_DEV_ST=y 85CONFIG_CHR_DEV_ST=y
95CONFIG_BLK_DEV_SR=y 86CONFIG_BLK_DEV_SR=y
96CONFIG_CHR_DEV_SG=y 87CONFIG_CHR_DEV_SG=y
97CONFIG_SCSI_MULTI_LUN=y
98CONFIG_SCSI_ISCSI_ATTRS=m 88CONFIG_SCSI_ISCSI_ATTRS=m
99CONFIG_SCSI_SYM53C8XX_2=y 89CONFIG_SCSI_SYM53C8XX_2=y
100CONFIG_SCSI_QLOGIC_1280=m 90CONFIG_SCSI_QLOGIC_1280=m
@@ -106,43 +96,38 @@ CONFIG_MD_RAID0=y
106CONFIG_MD_RAID1=y 96CONFIG_MD_RAID1=y
107CONFIG_FUSION=y 97CONFIG_FUSION=y
108CONFIG_FUSION_SPI=m 98CONFIG_FUSION_SPI=m
109CONFIG_FUSION_FC=m
110CONFIG_FUSION_CTL=m 99CONFIG_FUSION_CTL=m
111CONFIG_NETDEVICES=y 100CONFIG_NETDEVICES=y
112CONFIG_DUMMY=m
113CONFIG_BONDING=m 101CONFIG_BONDING=m
102CONFIG_DUMMY=m
114CONFIG_TUN=m 103CONFIG_TUN=m
115CONFIG_NET_ETHERNET=y 104CONFIG_PCMCIA_3C574=m
116CONFIG_NET_VENDOR_3COM=y 105CONFIG_PCMCIA_3C589=m
117CONFIG_VORTEX=m 106CONFIG_VORTEX=m
118CONFIG_TYPHOON=m 107CONFIG_TYPHOON=m
108CONFIG_ACENIC=m
109CONFIG_ACENIC_OMIT_TIGON_I=y
110CONFIG_PCNET32=m
111CONFIG_TIGON3=m
119CONFIG_NET_TULIP=y 112CONFIG_NET_TULIP=y
120CONFIG_DE2104X=m 113CONFIG_DE2104X=m
121CONFIG_TULIP=y 114CONFIG_TULIP=y
122CONFIG_TULIP_MMIO=y 115CONFIG_TULIP_MMIO=y
123CONFIG_PCMCIA_XIRCOM=m 116CONFIG_PCMCIA_XIRCOM=m
124CONFIG_HP100=m 117CONFIG_HP100=m
125CONFIG_NET_PCI=y
126CONFIG_PCNET32=m
127CONFIG_E100=m 118CONFIG_E100=m
128CONFIG_ACENIC=m
129CONFIG_ACENIC_OMIT_TIGON_I=y
130CONFIG_E1000=m 119CONFIG_E1000=m
131CONFIG_TIGON3=m
132CONFIG_NET_PCMCIA=y
133CONFIG_PCMCIA_3C589=m
134CONFIG_PCMCIA_3C574=m
135CONFIG_PCMCIA_SMC91C92=m 120CONFIG_PCMCIA_SMC91C92=m
136CONFIG_PCMCIA_XIRC2PS=m 121CONFIG_PCMCIA_XIRC2PS=m
137CONFIG_PPP=m 122CONFIG_PPP=m
123CONFIG_PPP_BSDCOMP=m
124CONFIG_PPP_DEFLATE=m
138CONFIG_PPP_ASYNC=m 125CONFIG_PPP_ASYNC=m
139CONFIG_PPP_SYNC_TTY=m 126CONFIG_PPP_SYNC_TTY=m
140CONFIG_PPP_DEFLATE=m
141CONFIG_PPP_BSDCOMP=m
142# CONFIG_INPUT_MOUSEDEV is not set
143# CONFIG_INPUT_KEYBOARD is not set 127# CONFIG_INPUT_KEYBOARD is not set
144# CONFIG_INPUT_MOUSE is not set 128# CONFIG_INPUT_MOUSE is not set
145# CONFIG_SERIO is not set 129# CONFIG_SERIO is not set
130# CONFIG_LEGACY_PTYS is not set
146CONFIG_SERIAL_8250=y 131CONFIG_SERIAL_8250=y
147CONFIG_SERIAL_8250_CONSOLE=y 132CONFIG_SERIAL_8250_CONSOLE=y
148CONFIG_SERIAL_8250_CS=m 133CONFIG_SERIAL_8250_CS=m
@@ -151,7 +136,6 @@ CONFIG_SERIAL_8250_EXTENDED=y
151CONFIG_SERIAL_8250_MANY_PORTS=y 136CONFIG_SERIAL_8250_MANY_PORTS=y
152CONFIG_SERIAL_8250_SHARE_IRQ=y 137CONFIG_SERIAL_8250_SHARE_IRQ=y
153CONFIG_PDC_CONSOLE=y 138CONFIG_PDC_CONSOLE=y
154# CONFIG_LEGACY_PTYS is not set
155# CONFIG_HW_RANDOM is not set 139# CONFIG_HW_RANDOM is not set
156CONFIG_RAW_DRIVER=y 140CONFIG_RAW_DRIVER=y
157# CONFIG_HWMON is not set 141# CONFIG_HWMON is not set
@@ -160,7 +144,6 @@ CONFIG_AGP_PARISC=y
160# CONFIG_STI_CONSOLE is not set 144# CONFIG_STI_CONSOLE is not set
161CONFIG_EXT2_FS=y 145CONFIG_EXT2_FS=y
162CONFIG_EXT3_FS=y 146CONFIG_EXT3_FS=y
163# CONFIG_EXT3_FS_XATTR is not set
164CONFIG_JFS_FS=m 147CONFIG_JFS_FS=m
165CONFIG_XFS_FS=m 148CONFIG_XFS_FS=m
166CONFIG_AUTOFS4_FS=y 149CONFIG_AUTOFS4_FS=y
@@ -173,13 +156,9 @@ CONFIG_PROC_KCORE=y
173CONFIG_TMPFS=y 156CONFIG_TMPFS=y
174CONFIG_UFS_FS=m 157CONFIG_UFS_FS=m
175CONFIG_NFS_FS=m 158CONFIG_NFS_FS=m
176CONFIG_NFS_V3=y 159CONFIG_NFS_V4=m
177CONFIG_NFS_V4=y
178CONFIG_NFSD=m 160CONFIG_NFSD=m
179CONFIG_NFSD_V4=y 161CONFIG_NFSD_V4=y
180CONFIG_RPCSEC_GSS_SPKM3=m
181CONFIG_SMB_FS=m
182CONFIG_SMB_NLS_DEFAULT=y
183CONFIG_CIFS=m 162CONFIG_CIFS=m
184CONFIG_NLS_CODEPAGE_437=m 163CONFIG_NLS_CODEPAGE_437=m
185CONFIG_NLS_CODEPAGE_850=m 164CONFIG_NLS_CODEPAGE_850=m
@@ -187,17 +166,12 @@ CONFIG_NLS_ASCII=m
187CONFIG_NLS_ISO8859_1=m 166CONFIG_NLS_ISO8859_1=m
188CONFIG_NLS_ISO8859_15=m 167CONFIG_NLS_ISO8859_15=m
189CONFIG_NLS_UTF8=m 168CONFIG_NLS_UTF8=m
190CONFIG_MAGIC_SYSRQ=y
191CONFIG_DEBUG_FS=y 169CONFIG_DEBUG_FS=y
192CONFIG_HEADERS_CHECK=y 170CONFIG_HEADERS_CHECK=y
193CONFIG_DEBUG_KERNEL=y 171CONFIG_MAGIC_SYSRQ=y
194# CONFIG_DEBUG_BUGVERBOSE is not set 172# CONFIG_DEBUG_BUGVERBOSE is not set
195# CONFIG_RCU_CPU_STALL_DETECTOR is not set
196CONFIG_CRYPTO_NULL=m
197CONFIG_CRYPTO_TEST=m 173CONFIG_CRYPTO_TEST=m
198CONFIG_CRYPTO_HMAC=y 174CONFIG_CRYPTO_HMAC=y
199CONFIG_CRYPTO_MD5=y 175CONFIG_CRYPTO_MD5=y
200CONFIG_CRYPTO_BLOWFISH=m 176CONFIG_CRYPTO_BLOWFISH=m
201# CONFIG_CRYPTO_ANSI_CPRNG is not set
202# CONFIG_CRYPTO_HW is not set 177# CONFIG_CRYPTO_HW is not set
203CONFIG_LIBCRC32C=m
diff --git a/arch/parisc/configs/b180_defconfig b/arch/parisc/configs/b180_defconfig
index f1a0c25bef8d..83ffd161aec5 100644
--- a/arch/parisc/configs/b180_defconfig
+++ b/arch/parisc/configs/b180_defconfig
@@ -3,7 +3,6 @@ CONFIG_SYSVIPC=y
3CONFIG_IKCONFIG=y 3CONFIG_IKCONFIG=y
4CONFIG_IKCONFIG_PROC=y 4CONFIG_IKCONFIG_PROC=y
5CONFIG_LOG_BUF_SHIFT=16 5CONFIG_LOG_BUF_SHIFT=16
6CONFIG_SYSFS_DEPRECATED_V2=y
7CONFIG_BLK_DEV_INITRD=y 6CONFIG_BLK_DEV_INITRD=y
8CONFIG_SLAB=y 7CONFIG_SLAB=y
9CONFIG_MODULES=y 8CONFIG_MODULES=y
@@ -25,8 +24,6 @@ CONFIG_INET=y
25CONFIG_IP_MULTICAST=y 24CONFIG_IP_MULTICAST=y
26CONFIG_IP_PNP=y 25CONFIG_IP_PNP=y
27CONFIG_IP_PNP_BOOTP=y 26CONFIG_IP_PNP_BOOTP=y
28# CONFIG_INET_LRO is not set
29CONFIG_IPV6=y
30CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 27CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
31CONFIG_DEVTMPFS=y 28CONFIG_DEVTMPFS=y
32CONFIG_DEVTMPFS_MOUNT=y 29CONFIG_DEVTMPFS_MOUNT=y
@@ -53,10 +50,9 @@ CONFIG_MD_LINEAR=y
53CONFIG_MD_RAID0=y 50CONFIG_MD_RAID0=y
54CONFIG_MD_RAID1=y 51CONFIG_MD_RAID1=y
55CONFIG_NETDEVICES=y 52CONFIG_NETDEVICES=y
56CONFIG_NET_ETHERNET=y
57CONFIG_LASI_82596=y
58CONFIG_NET_TULIP=y 53CONFIG_NET_TULIP=y
59CONFIG_TULIP=y 54CONFIG_TULIP=y
55CONFIG_LASI_82596=y
60CONFIG_PPP=y 56CONFIG_PPP=y
61CONFIG_INPUT_EVDEV=y 57CONFIG_INPUT_EVDEV=y
62# CONFIG_KEYBOARD_HIL_OLD is not set 58# CONFIG_KEYBOARD_HIL_OLD is not set
@@ -71,40 +67,31 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
71CONFIG_PRINTER=y 67CONFIG_PRINTER=y
72# CONFIG_HW_RANDOM is not set 68# CONFIG_HW_RANDOM is not set
73# CONFIG_HWMON is not set 69# CONFIG_HWMON is not set
74CONFIG_VIDEO_OUTPUT_CONTROL=m
75CONFIG_FB=y 70CONFIG_FB=y
76CONFIG_FRAMEBUFFER_CONSOLE=y 71CONFIG_FRAMEBUFFER_CONSOLE=y
77CONFIG_LOGO=y 72CONFIG_LOGO=y
78CONFIG_SOUND=y 73CONFIG_SOUND=y
79CONFIG_SND=y 74CONFIG_SND=y
80CONFIG_SND_SEQUENCER=y 75CONFIG_SND_SEQUENCER=y
81CONFIG_SND_MIXER_OSS=y
82CONFIG_SND_PCM_OSS=y
83CONFIG_SND_SEQUENCER_OSS=y
84CONFIG_SND_HARMONY=y 76CONFIG_SND_HARMONY=y
85CONFIG_EXT2_FS=y 77CONFIG_EXT2_FS=y
86CONFIG_EXT3_FS=y 78CONFIG_EXT3_FS=y
87# CONFIG_EXT3_FS_XATTR is not set
88CONFIG_AUTOFS4_FS=y 79CONFIG_AUTOFS4_FS=y
89CONFIG_ISO9660_FS=y 80CONFIG_ISO9660_FS=y
90CONFIG_JOLIET=y 81CONFIG_JOLIET=y
91CONFIG_PROC_KCORE=y 82CONFIG_PROC_KCORE=y
92CONFIG_TMPFS=y 83CONFIG_TMPFS=y
93CONFIG_NFS_FS=y 84CONFIG_NFS_FS=y
94CONFIG_NFS_V3=y
95CONFIG_ROOT_NFS=y 85CONFIG_ROOT_NFS=y
96CONFIG_NFSD=y 86CONFIG_NFSD=y
97CONFIG_NFSD_V3=y 87CONFIG_NFSD_V3=y
98CONFIG_SMB_FS=y
99CONFIG_NLS_CODEPAGE_437=m 88CONFIG_NLS_CODEPAGE_437=m
100CONFIG_NLS_CODEPAGE_850=m 89CONFIG_NLS_CODEPAGE_850=m
101CONFIG_NLS_ASCII=m 90CONFIG_NLS_ASCII=m
102CONFIG_NLS_ISO8859_1=m 91CONFIG_NLS_ISO8859_1=m
103CONFIG_NLS_ISO8859_15=m 92CONFIG_NLS_ISO8859_15=m
104CONFIG_NLS_UTF8=m 93CONFIG_NLS_UTF8=m
105CONFIG_MAGIC_SYSRQ=y
106CONFIG_HEADERS_CHECK=y 94CONFIG_HEADERS_CHECK=y
95CONFIG_MAGIC_SYSRQ=y
107CONFIG_DEBUG_KERNEL=y 96CONFIG_DEBUG_KERNEL=y
108# CONFIG_RCU_CPU_STALL_DETECTOR is not set
109CONFIG_SECURITY=y 97CONFIG_SECURITY=y
110# CONFIG_CRYPTO_ANSI_CPRNG is not set
diff --git a/arch/parisc/configs/c3000_defconfig b/arch/parisc/configs/c3000_defconfig
index 8e8f0e34f817..0764d3971cf6 100644
--- a/arch/parisc/configs/c3000_defconfig
+++ b/arch/parisc/configs/c3000_defconfig
@@ -1,12 +1,9 @@
1CONFIG_EXPERIMENTAL=y
2# CONFIG_LOCALVERSION_AUTO is not set 1# CONFIG_LOCALVERSION_AUTO is not set
3CONFIG_SYSVIPC=y 2CONFIG_SYSVIPC=y
4CONFIG_IKCONFIG=y 3CONFIG_IKCONFIG=y
5CONFIG_IKCONFIG_PROC=y 4CONFIG_IKCONFIG_PROC=y
6CONFIG_LOG_BUF_SHIFT=16 5CONFIG_LOG_BUF_SHIFT=16
7CONFIG_SYSFS_DEPRECATED_V2=y
8CONFIG_BLK_DEV_INITRD=y 6CONFIG_BLK_DEV_INITRD=y
9# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
10CONFIG_EXPERT=y 7CONFIG_EXPERT=y
11CONFIG_KALLSYMS_ALL=y 8CONFIG_KALLSYMS_ALL=y
12CONFIG_SLAB=y 9CONFIG_SLAB=y
@@ -15,7 +12,6 @@ CONFIG_OPROFILE=m
15CONFIG_MODULES=y 12CONFIG_MODULES=y
16CONFIG_MODULE_UNLOAD=y 13CONFIG_MODULE_UNLOAD=y
17CONFIG_MODULE_FORCE_UNLOAD=y 14CONFIG_MODULE_FORCE_UNLOAD=y
18# CONFIG_BLK_DEV_BSG is not set
19CONFIG_PA8X00=y 15CONFIG_PA8X00=y
20CONFIG_PREEMPT_VOLUNTARY=y 16CONFIG_PREEMPT_VOLUNTARY=y
21# CONFIG_GSC is not set 17# CONFIG_GSC is not set
@@ -31,13 +27,11 @@ CONFIG_INET=y
31CONFIG_IP_MULTICAST=y 27CONFIG_IP_MULTICAST=y
32CONFIG_IP_PNP=y 28CONFIG_IP_PNP=y
33CONFIG_IP_PNP_BOOTP=y 29CONFIG_IP_PNP_BOOTP=y
34# CONFIG_INET_LRO is not set
35# CONFIG_INET_DIAG is not set 30# CONFIG_INET_DIAG is not set
36CONFIG_INET6_IPCOMP=m 31CONFIG_INET6_IPCOMP=m
37CONFIG_IPV6_TUNNEL=m 32CONFIG_IPV6_TUNNEL=m
38CONFIG_NETFILTER=y 33CONFIG_NETFILTER=y
39CONFIG_NETFILTER_DEBUG=y 34CONFIG_NETFILTER_DEBUG=y
40CONFIG_IP_NF_QUEUE=m
41CONFIG_NET_PKTGEN=m 35CONFIG_NET_PKTGEN=m
42CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 36CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
43CONFIG_DEVTMPFS=y 37CONFIG_DEVTMPFS=y
@@ -50,13 +44,11 @@ CONFIG_BLK_DEV_CRYPTOLOOP=m
50CONFIG_IDE=y 44CONFIG_IDE=y
51CONFIG_BLK_DEV_IDECD=y 45CONFIG_BLK_DEV_IDECD=y
52CONFIG_BLK_DEV_NS87415=y 46CONFIG_BLK_DEV_NS87415=y
53CONFIG_PATA_SIL680=m
54CONFIG_SCSI=y 47CONFIG_SCSI=y
55CONFIG_BLK_DEV_SD=y 48CONFIG_BLK_DEV_SD=y
56CONFIG_CHR_DEV_ST=y 49CONFIG_CHR_DEV_ST=y
57CONFIG_BLK_DEV_SR=y 50CONFIG_BLK_DEV_SR=y
58CONFIG_CHR_DEV_SG=y 51CONFIG_CHR_DEV_SG=y
59CONFIG_SCSI_MULTI_LUN=y
60CONFIG_SCSI_ISCSI_ATTRS=m 52CONFIG_SCSI_ISCSI_ATTRS=m
61CONFIG_SCSI_SYM53C8XX_2=y 53CONFIG_SCSI_SYM53C8XX_2=y
62CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0 54CONFIG_SCSI_SYM53C8XX_DMA_ADDRESSING_MODE=0
@@ -76,28 +68,23 @@ CONFIG_FUSION=y
76CONFIG_FUSION_SPI=m 68CONFIG_FUSION_SPI=m
77CONFIG_FUSION_CTL=m 69CONFIG_FUSION_CTL=m
78CONFIG_NETDEVICES=y 70CONFIG_NETDEVICES=y
79CONFIG_DUMMY=m
80CONFIG_BONDING=m 71CONFIG_BONDING=m
72CONFIG_DUMMY=m
81CONFIG_TUN=m 73CONFIG_TUN=m
82CONFIG_NET_ETHERNET=y 74CONFIG_ACENIC=m
75CONFIG_TIGON3=m
83CONFIG_NET_TULIP=y 76CONFIG_NET_TULIP=y
84CONFIG_DE2104X=m 77CONFIG_DE2104X=m
85CONFIG_TULIP=y 78CONFIG_TULIP=y
86CONFIG_TULIP_MMIO=y 79CONFIG_TULIP_MMIO=y
87CONFIG_NET_PCI=y
88CONFIG_E100=m 80CONFIG_E100=m
89CONFIG_ACENIC=m
90CONFIG_E1000=m 81CONFIG_E1000=m
91CONFIG_TIGON3=m
92CONFIG_PPP=m 82CONFIG_PPP=m
93CONFIG_PPP_ASYNC=m
94CONFIG_PPP_SYNC_TTY=m
95CONFIG_PPP_DEFLATE=m
96CONFIG_PPP_BSDCOMP=m 83CONFIG_PPP_BSDCOMP=m
84CONFIG_PPP_DEFLATE=m
97CONFIG_PPPOE=m 85CONFIG_PPPOE=m
98# CONFIG_INPUT_MOUSEDEV_PSAUX is not set 86CONFIG_PPP_ASYNC=m
99CONFIG_INPUT_MOUSEDEV_SCREEN_X=1600 87CONFIG_PPP_SYNC_TTY=m
100CONFIG_INPUT_MOUSEDEV_SCREEN_Y=1200
101# CONFIG_KEYBOARD_ATKBD is not set 88# CONFIG_KEYBOARD_ATKBD is not set
102# CONFIG_MOUSE_PS2 is not set 89# CONFIG_MOUSE_PS2 is not set
103CONFIG_SERIO=m 90CONFIG_SERIO=m
@@ -111,7 +98,6 @@ CONFIG_SERIAL_8250_SHARE_IRQ=y
111# CONFIG_HW_RANDOM is not set 98# CONFIG_HW_RANDOM is not set
112CONFIG_RAW_DRIVER=y 99CONFIG_RAW_DRIVER=y
113# CONFIG_HWMON is not set 100# CONFIG_HWMON is not set
114CONFIG_VIDEO_OUTPUT_CONTROL=m
115CONFIG_FB=y 101CONFIG_FB=y
116CONFIG_FRAMEBUFFER_CONSOLE=y 102CONFIG_FRAMEBUFFER_CONSOLE=y
117CONFIG_LOGO=y 103CONFIG_LOGO=y
@@ -121,9 +107,6 @@ CONFIG_LOGO=y
121CONFIG_SOUND=y 107CONFIG_SOUND=y
122CONFIG_SND=y 108CONFIG_SND=y
123CONFIG_SND_SEQUENCER=y 109CONFIG_SND_SEQUENCER=y
124CONFIG_SND_MIXER_OSS=y
125CONFIG_SND_PCM_OSS=y
126CONFIG_SND_SEQUENCER_OSS=y
127CONFIG_SND_AD1889=y 110CONFIG_SND_AD1889=y
128CONFIG_USB_HIDDEV=y 111CONFIG_USB_HIDDEV=y
129CONFIG_USB=y 112CONFIG_USB=y
@@ -139,7 +122,6 @@ CONFIG_USB_MICROTEK=m
139CONFIG_USB_LEGOTOWER=m 122CONFIG_USB_LEGOTOWER=m
140CONFIG_EXT2_FS=y 123CONFIG_EXT2_FS=y
141CONFIG_EXT3_FS=y 124CONFIG_EXT3_FS=y
142# CONFIG_EXT3_FS_XATTR is not set
143CONFIG_XFS_FS=m 125CONFIG_XFS_FS=m
144CONFIG_AUTOFS4_FS=y 126CONFIG_AUTOFS4_FS=y
145CONFIG_ISO9660_FS=y 127CONFIG_ISO9660_FS=y
@@ -149,7 +131,6 @@ CONFIG_VFAT_FS=m
149CONFIG_PROC_KCORE=y 131CONFIG_PROC_KCORE=y
150CONFIG_TMPFS=y 132CONFIG_TMPFS=y
151CONFIG_NFS_FS=y 133CONFIG_NFS_FS=y
152CONFIG_NFS_V3=y
153CONFIG_ROOT_NFS=y 134CONFIG_ROOT_NFS=y
154CONFIG_NFSD=y 135CONFIG_NFSD=y
155CONFIG_NFSD_V3=y 136CONFIG_NFSD_V3=y
@@ -159,18 +140,13 @@ CONFIG_NLS_ASCII=m
159CONFIG_NLS_ISO8859_1=m 140CONFIG_NLS_ISO8859_1=m
160CONFIG_NLS_ISO8859_15=m 141CONFIG_NLS_ISO8859_15=m
161CONFIG_NLS_UTF8=m 142CONFIG_NLS_UTF8=m
162CONFIG_MAGIC_SYSRQ=y
163CONFIG_DEBUG_FS=y 143CONFIG_DEBUG_FS=y
164CONFIG_HEADERS_CHECK=y 144CONFIG_HEADERS_CHECK=y
165CONFIG_DEBUG_KERNEL=y 145CONFIG_MAGIC_SYSRQ=y
166CONFIG_DEBUG_MUTEXES=y 146CONFIG_DEBUG_MUTEXES=y
167# CONFIG_DEBUG_BUGVERBOSE is not set 147# CONFIG_DEBUG_BUGVERBOSE is not set
168# CONFIG_RCU_CPU_STALL_DETECTOR is not set
169CONFIG_CRYPTO_NULL=m
170CONFIG_CRYPTO_TEST=m 148CONFIG_CRYPTO_TEST=m
171CONFIG_CRYPTO_MD5=m 149CONFIG_CRYPTO_MD5=m
172CONFIG_CRYPTO_BLOWFISH=m 150CONFIG_CRYPTO_BLOWFISH=m
173CONFIG_CRYPTO_DES=m 151CONFIG_CRYPTO_DES=m
174# CONFIG_CRYPTO_ANSI_CPRNG is not set
175# CONFIG_CRYPTO_HW is not set 152# CONFIG_CRYPTO_HW is not set
176CONFIG_LIBCRC32C=m
diff --git a/arch/parisc/configs/c8000_defconfig b/arch/parisc/configs/c8000_defconfig
index f6a4c016304b..088ab948a5ca 100644
--- a/arch/parisc/configs/c8000_defconfig
+++ b/arch/parisc/configs/c8000_defconfig
@@ -1,16 +1,13 @@
1# CONFIG_LOCALVERSION_AUTO is not set 1# CONFIG_LOCALVERSION_AUTO is not set
2CONFIG_SYSVIPC=y 2CONFIG_SYSVIPC=y
3CONFIG_POSIX_MQUEUE=y 3CONFIG_POSIX_MQUEUE=y
4CONFIG_FHANDLE=y 4# CONFIG_CROSS_MEMORY_ATTACH is not set
5CONFIG_BSD_PROCESS_ACCT=y 5CONFIG_BSD_PROCESS_ACCT=y
6CONFIG_BSD_PROCESS_ACCT_V3=y 6CONFIG_BSD_PROCESS_ACCT_V3=y
7CONFIG_IKCONFIG=y 7CONFIG_IKCONFIG=y
8CONFIG_IKCONFIG_PROC=y 8CONFIG_IKCONFIG_PROC=y
9CONFIG_RELAY=y 9CONFIG_RELAY=y
10CONFIG_BLK_DEV_INITRD=y 10CONFIG_BLK_DEV_INITRD=y
11CONFIG_RD_BZIP2=y
12CONFIG_RD_LZMA=y
13CONFIG_RD_LZO=y
14CONFIG_EXPERT=y 11CONFIG_EXPERT=y
15CONFIG_SYSCTL_SYSCALL=y 12CONFIG_SYSCTL_SYSCALL=y
16CONFIG_SLAB=y 13CONFIG_SLAB=y
@@ -23,7 +20,6 @@ CONFIG_PA8X00=y
23CONFIG_64BIT=y 20CONFIG_64BIT=y
24CONFIG_SMP=y 21CONFIG_SMP=y
25CONFIG_PREEMPT=y 22CONFIG_PREEMPT=y
26# CONFIG_CROSS_MEMORY_ATTACH is not set
27CONFIG_IOMMU_CCIO=y 23CONFIG_IOMMU_CCIO=y
28CONFIG_PCI=y 24CONFIG_PCI=y
29CONFIG_PCI_LBA=y 25CONFIG_PCI_LBA=y
@@ -146,7 +142,6 @@ CONFIG_FB_FOREIGN_ENDIAN=y
146CONFIG_FB_MODE_HELPERS=y 142CONFIG_FB_MODE_HELPERS=y
147CONFIG_FB_TILEBLITTING=y 143CONFIG_FB_TILEBLITTING=y
148# CONFIG_FB_STI is not set 144# CONFIG_FB_STI is not set
149CONFIG_BACKLIGHT_LCD_SUPPORT=y
150# CONFIG_LCD_CLASS_DEVICE is not set 145# CONFIG_LCD_CLASS_DEVICE is not set
151# CONFIG_BACKLIGHT_GENERIC is not set 146# CONFIG_BACKLIGHT_GENERIC is not set
152CONFIG_FRAMEBUFFER_CONSOLE=y 147CONFIG_FRAMEBUFFER_CONSOLE=y
@@ -157,12 +152,9 @@ CONFIG_LOGO=y
157# CONFIG_LOGO_LINUX_CLUT224 is not set 152# CONFIG_LOGO_LINUX_CLUT224 is not set
158CONFIG_SOUND=m 153CONFIG_SOUND=m
159CONFIG_SND=m 154CONFIG_SND=m
155CONFIG_SND_VERBOSE_PRINTK=y
160CONFIG_SND_SEQUENCER=m 156CONFIG_SND_SEQUENCER=m
161CONFIG_SND_SEQ_DUMMY=m 157CONFIG_SND_SEQ_DUMMY=m
162CONFIG_SND_MIXER_OSS=m
163CONFIG_SND_PCM_OSS=m
164CONFIG_SND_SEQUENCER_OSS=y
165CONFIG_SND_VERBOSE_PRINTK=y
166CONFIG_SND_AD1889=m 158CONFIG_SND_AD1889=m
167# CONFIG_SND_USB is not set 159# CONFIG_SND_USB is not set
168# CONFIG_SND_GSC is not set 160# CONFIG_SND_GSC is not set
@@ -174,8 +166,6 @@ CONFIG_EXT2_FS_XATTR=y
174CONFIG_EXT2_FS_POSIX_ACL=y 166CONFIG_EXT2_FS_POSIX_ACL=y
175CONFIG_EXT2_FS_SECURITY=y 167CONFIG_EXT2_FS_SECURITY=y
176CONFIG_EXT3_FS=y 168CONFIG_EXT3_FS=y
177# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
178CONFIG_EXT4_FS=m
179CONFIG_REISERFS_FS=m 169CONFIG_REISERFS_FS=m
180CONFIG_REISERFS_PROC_INFO=y 170CONFIG_REISERFS_PROC_INFO=y
181CONFIG_XFS_FS=m 171CONFIG_XFS_FS=m
@@ -238,11 +228,8 @@ CONFIG_DEBUG_SLAB=y
238CONFIG_DEBUG_SLAB_LEAK=y 228CONFIG_DEBUG_SLAB_LEAK=y
239CONFIG_DEBUG_MEMORY_INIT=y 229CONFIG_DEBUG_MEMORY_INIT=y
240CONFIG_DEBUG_STACKOVERFLOW=y 230CONFIG_DEBUG_STACKOVERFLOW=y
241CONFIG_LOCKUP_DETECTOR=y
242CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
243CONFIG_PANIC_ON_OOPS=y 231CONFIG_PANIC_ON_OOPS=y
244CONFIG_DEBUG_RT_MUTEXES=y 232CONFIG_DEBUG_RT_MUTEXES=y
245CONFIG_PROVE_RCU_DELAY=y
246CONFIG_DEBUG_BLOCK_EXT_DEVT=y 233CONFIG_DEBUG_BLOCK_EXT_DEVT=y
247CONFIG_LATENCYTOP=y 234CONFIG_LATENCYTOP=y
248CONFIG_KEYS=y 235CONFIG_KEYS=y
diff --git a/arch/parisc/configs/default_defconfig b/arch/parisc/configs/default_defconfig
index 310b6657e4ac..52c9050a7c5c 100644
--- a/arch/parisc/configs/default_defconfig
+++ b/arch/parisc/configs/default_defconfig
@@ -1,11 +1,9 @@
1CONFIG_EXPERIMENTAL=y
2# CONFIG_LOCALVERSION_AUTO is not set 1# CONFIG_LOCALVERSION_AUTO is not set
3CONFIG_SYSVIPC=y 2CONFIG_SYSVIPC=y
4CONFIG_POSIX_MQUEUE=y 3CONFIG_POSIX_MQUEUE=y
5CONFIG_IKCONFIG=y 4CONFIG_IKCONFIG=y
6CONFIG_IKCONFIG_PROC=y 5CONFIG_IKCONFIG_PROC=y
7CONFIG_LOG_BUF_SHIFT=16 6CONFIG_LOG_BUF_SHIFT=16
8CONFIG_SYSFS_DEPRECATED_V2=y
9CONFIG_BLK_DEV_INITRD=y 7CONFIG_BLK_DEV_INITRD=y
10CONFIG_KALLSYMS_ALL=y 8CONFIG_KALLSYMS_ALL=y
11CONFIG_SLAB=y 9CONFIG_SLAB=y
@@ -41,9 +39,7 @@ CONFIG_IP_PNP_DHCP=y
41CONFIG_IP_PNP_BOOTP=y 39CONFIG_IP_PNP_BOOTP=y
42CONFIG_INET_AH=m 40CONFIG_INET_AH=m
43CONFIG_INET_ESP=m 41CONFIG_INET_ESP=m
44# CONFIG_INET_LRO is not set
45CONFIG_INET_DIAG=m 42CONFIG_INET_DIAG=m
46CONFIG_IPV6=y
47CONFIG_INET6_AH=y 43CONFIG_INET6_AH=y
48CONFIG_INET6_ESP=y 44CONFIG_INET6_ESP=y
49CONFIG_INET6_IPCOMP=y 45CONFIG_INET6_IPCOMP=y
@@ -82,26 +78,23 @@ CONFIG_MD_RAID1=y
82CONFIG_MD_RAID10=y 78CONFIG_MD_RAID10=y
83CONFIG_BLK_DEV_DM=y 79CONFIG_BLK_DEV_DM=y
84CONFIG_NETDEVICES=y 80CONFIG_NETDEVICES=y
85CONFIG_DUMMY=m
86CONFIG_BONDING=m 81CONFIG_BONDING=m
82CONFIG_DUMMY=m
87CONFIG_TUN=m 83CONFIG_TUN=m
88CONFIG_NET_ETHERNET=y
89CONFIG_MII=m
90CONFIG_LASI_82596=y
91CONFIG_NET_TULIP=y
92CONFIG_TULIP=y
93CONFIG_NET_PCI=y
94CONFIG_ACENIC=y 84CONFIG_ACENIC=y
95CONFIG_TIGON3=y 85CONFIG_TIGON3=y
96CONFIG_NET_PCMCIA=y 86CONFIG_NET_TULIP=y
87CONFIG_TULIP=y
88CONFIG_LASI_82596=y
97CONFIG_PPP=m 89CONFIG_PPP=m
98CONFIG_PPP_ASYNC=m
99CONFIG_PPP_SYNC_TTY=m
100CONFIG_PPP_DEFLATE=m
101CONFIG_PPP_BSDCOMP=m 90CONFIG_PPP_BSDCOMP=m
91CONFIG_PPP_DEFLATE=m
102CONFIG_PPPOE=m 92CONFIG_PPPOE=m
93CONFIG_PPP_ASYNC=m
94CONFIG_PPP_SYNC_TTY=m
103# CONFIG_KEYBOARD_HIL_OLD is not set 95# CONFIG_KEYBOARD_HIL_OLD is not set
104CONFIG_MOUSE_SERIAL=y 96CONFIG_MOUSE_SERIAL=y
97CONFIG_LEGACY_PTY_COUNT=64
105CONFIG_SERIAL_8250=y 98CONFIG_SERIAL_8250=y
106CONFIG_SERIAL_8250_CONSOLE=y 99CONFIG_SERIAL_8250_CONSOLE=y
107CONFIG_SERIAL_8250_CS=y 100CONFIG_SERIAL_8250_CS=y
@@ -109,31 +102,24 @@ CONFIG_SERIAL_8250_NR_UARTS=17
109CONFIG_SERIAL_8250_EXTENDED=y 102CONFIG_SERIAL_8250_EXTENDED=y
110CONFIG_SERIAL_8250_MANY_PORTS=y 103CONFIG_SERIAL_8250_MANY_PORTS=y
111CONFIG_SERIAL_8250_SHARE_IRQ=y 104CONFIG_SERIAL_8250_SHARE_IRQ=y
112CONFIG_LEGACY_PTY_COUNT=64
113CONFIG_PRINTER=m 105CONFIG_PRINTER=m
114CONFIG_PPDEV=m 106CONFIG_PPDEV=m
115# CONFIG_HW_RANDOM is not set 107# CONFIG_HW_RANDOM is not set
116# CONFIG_HWMON is not set 108# CONFIG_HWMON is not set
117CONFIG_VIDEO_OUTPUT_CONTROL=m
118CONFIG_FB=y 109CONFIG_FB=y
119CONFIG_FB_MODE_HELPERS=y 110CONFIG_FB_MODE_HELPERS=y
120CONFIG_FB_TILEBLITTING=y 111CONFIG_FB_TILEBLITTING=y
121CONFIG_DUMMY_CONSOLE_COLUMNS=128 112CONFIG_DUMMY_CONSOLE_COLUMNS=128
122CONFIG_DUMMY_CONSOLE_ROWS=48 113CONFIG_DUMMY_CONSOLE_ROWS=48
123CONFIG_FRAMEBUFFER_CONSOLE=y 114CONFIG_FRAMEBUFFER_CONSOLE=y
124CONFIG_FONTS=y
125CONFIG_FONT_8x16=y
126CONFIG_LOGO=y 115CONFIG_LOGO=y
127# CONFIG_LOGO_LINUX_MONO is not set 116# CONFIG_LOGO_LINUX_MONO is not set
128# CONFIG_LOGO_LINUX_VGA16 is not set 117# CONFIG_LOGO_LINUX_VGA16 is not set
129# CONFIG_LOGO_LINUX_CLUT224 is not set 118# CONFIG_LOGO_LINUX_CLUT224 is not set
130CONFIG_SOUND=y 119CONFIG_SOUND=y
131CONFIG_SND=y 120CONFIG_SND=y
132CONFIG_SND_SEQUENCER=y
133CONFIG_SND_MIXER_OSS=y
134CONFIG_SND_PCM_OSS=y
135CONFIG_SND_SEQUENCER_OSS=y
136CONFIG_SND_DYNAMIC_MINORS=y 121CONFIG_SND_DYNAMIC_MINORS=y
122CONFIG_SND_SEQUENCER=y
137CONFIG_SND_AD1889=y 123CONFIG_SND_AD1889=y
138CONFIG_SND_HARMONY=y 124CONFIG_SND_HARMONY=y
139CONFIG_HID_GYRATION=y 125CONFIG_HID_GYRATION=y
@@ -141,7 +127,6 @@ CONFIG_HID_NTRIG=y
141CONFIG_HID_PANTHERLORD=y 127CONFIG_HID_PANTHERLORD=y
142CONFIG_HID_PETALYNX=y 128CONFIG_HID_PETALYNX=y
143CONFIG_HID_SAMSUNG=y 129CONFIG_HID_SAMSUNG=y
144CONFIG_HID_SONY=y
145CONFIG_HID_SUNPLUS=y 130CONFIG_HID_SUNPLUS=y
146CONFIG_HID_TOPSEED=y 131CONFIG_HID_TOPSEED=y
147CONFIG_USB=y 132CONFIG_USB=y
@@ -150,21 +135,15 @@ CONFIG_USB_OHCI_HCD=y
150CONFIG_USB_UHCI_HCD=y 135CONFIG_USB_UHCI_HCD=y
151CONFIG_EXT2_FS=y 136CONFIG_EXT2_FS=y
152CONFIG_EXT3_FS=y 137CONFIG_EXT3_FS=y
153# CONFIG_EXT3_FS_XATTR is not set
154CONFIG_AUTOFS_FS=y
155CONFIG_ISO9660_FS=y 138CONFIG_ISO9660_FS=y
156CONFIG_JOLIET=y 139CONFIG_JOLIET=y
157CONFIG_VFAT_FS=y 140CONFIG_VFAT_FS=y
158CONFIG_PROC_KCORE=y 141CONFIG_PROC_KCORE=y
159CONFIG_TMPFS=y 142CONFIG_TMPFS=y
160CONFIG_NFS_FS=y 143CONFIG_NFS_FS=y
161CONFIG_NFS_V3=y
162CONFIG_ROOT_NFS=y 144CONFIG_ROOT_NFS=y
163CONFIG_NFSD=y 145CONFIG_NFSD=y
164CONFIG_NFSD_V4=y 146CONFIG_NFSD_V4=y
165CONFIG_RPCSEC_GSS_SPKM3=m
166CONFIG_SMB_FS=m
167CONFIG_SMB_NLS_DEFAULT=y
168CONFIG_CIFS=m 147CONFIG_CIFS=m
169CONFIG_NLS_CODEPAGE_437=y 148CONFIG_NLS_CODEPAGE_437=y
170CONFIG_NLS_CODEPAGE_737=m 149CONFIG_NLS_CODEPAGE_737=m
@@ -204,30 +183,24 @@ CONFIG_NLS_ISO8859_15=m
204CONFIG_NLS_KOI8_R=m 183CONFIG_NLS_KOI8_R=m
205CONFIG_NLS_KOI8_U=m 184CONFIG_NLS_KOI8_U=m
206CONFIG_NLS_UTF8=y 185CONFIG_NLS_UTF8=y
207CONFIG_MAGIC_SYSRQ=y
208CONFIG_DEBUG_FS=y 186CONFIG_DEBUG_FS=y
209CONFIG_HEADERS_CHECK=y 187CONFIG_HEADERS_CHECK=y
188CONFIG_MAGIC_SYSRQ=y
210CONFIG_DEBUG_KERNEL=y 189CONFIG_DEBUG_KERNEL=y
211CONFIG_DEBUG_MUTEXES=y 190CONFIG_DEBUG_MUTEXES=y
212# CONFIG_RCU_CPU_STALL_DETECTOR is not set
213CONFIG_KEYS=y 191CONFIG_KEYS=y
214CONFIG_CRYPTO_NULL=m
215CONFIG_CRYPTO_TEST=m 192CONFIG_CRYPTO_TEST=m
216CONFIG_CRYPTO_MD4=m
217CONFIG_CRYPTO_MICHAEL_MIC=m 193CONFIG_CRYPTO_MICHAEL_MIC=m
218CONFIG_CRYPTO_SHA256=m
219CONFIG_CRYPTO_SHA512=m 194CONFIG_CRYPTO_SHA512=m
220CONFIG_CRYPTO_TGR192=m 195CONFIG_CRYPTO_TGR192=m
221CONFIG_CRYPTO_WP512=m 196CONFIG_CRYPTO_WP512=m
222CONFIG_CRYPTO_AES=m
223CONFIG_CRYPTO_ANUBIS=m 197CONFIG_CRYPTO_ANUBIS=m
224CONFIG_CRYPTO_ARC4=m
225CONFIG_CRYPTO_BLOWFISH=m 198CONFIG_CRYPTO_BLOWFISH=m
226CONFIG_CRYPTO_CAST6=m 199CONFIG_CRYPTO_CAST6=m
227CONFIG_CRYPTO_KHAZAD=m 200CONFIG_CRYPTO_KHAZAD=m
228CONFIG_CRYPTO_SERPENT=m 201CONFIG_CRYPTO_SERPENT=m
229CONFIG_CRYPTO_TEA=m 202CONFIG_CRYPTO_TEA=m
230CONFIG_CRYPTO_TWOFISH=m 203CONFIG_CRYPTO_TWOFISH=m
231# CONFIG_CRYPTO_ANSI_CPRNG is not set
232# CONFIG_CRYPTO_HW is not set 204# CONFIG_CRYPTO_HW is not set
233CONFIG_LIBCRC32C=m 205CONFIG_LIBCRC32C=m
206CONFIG_FONTS=y
diff --git a/arch/parisc/configs/generic-32bit_defconfig b/arch/parisc/configs/generic-32bit_defconfig
index 8688ba7f5966..37ae4b57c001 100644
--- a/arch/parisc/configs/generic-32bit_defconfig
+++ b/arch/parisc/configs/generic-32bit_defconfig
@@ -2,15 +2,11 @@ CONFIG_LOCALVERSION="-32bit"
2# CONFIG_LOCALVERSION_AUTO is not set 2# CONFIG_LOCALVERSION_AUTO is not set
3CONFIG_SYSVIPC=y 3CONFIG_SYSVIPC=y
4CONFIG_POSIX_MQUEUE=y 4CONFIG_POSIX_MQUEUE=y
5CONFIG_FHANDLE=y
6CONFIG_BSD_PROCESS_ACCT=y 5CONFIG_BSD_PROCESS_ACCT=y
7CONFIG_IKCONFIG=y 6CONFIG_IKCONFIG=y
8CONFIG_IKCONFIG_PROC=y 7CONFIG_IKCONFIG_PROC=y
9CONFIG_LOG_BUF_SHIFT=16 8CONFIG_LOG_BUF_SHIFT=16
10CONFIG_BLK_DEV_INITRD=y 9CONFIG_BLK_DEV_INITRD=y
11CONFIG_RD_BZIP2=y
12CONFIG_RD_LZMA=y
13CONFIG_RD_LZO=y
14CONFIG_EXPERT=y 10CONFIG_EXPERT=y
15CONFIG_SYSCTL_SYSCALL=y 11CONFIG_SYSCTL_SYSCALL=y
16CONFIG_PERF_EVENTS=y 12CONFIG_PERF_EVENTS=y
@@ -49,7 +45,6 @@ CONFIG_INET_ESP=m
49# CONFIG_INET_XFRM_MODE_TRANSPORT is not set 45# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
50# CONFIG_INET_XFRM_MODE_TUNNEL is not set 46# CONFIG_INET_XFRM_MODE_TUNNEL is not set
51# CONFIG_INET_XFRM_MODE_BEET is not set 47# CONFIG_INET_XFRM_MODE_BEET is not set
52# CONFIG_INET_LRO is not set
53CONFIG_INET_DIAG=m 48CONFIG_INET_DIAG=m
54CONFIG_LLC2=m 49CONFIG_LLC2=m
55# CONFIG_WIRELESS is not set 50# CONFIG_WIRELESS is not set
@@ -149,10 +144,8 @@ CONFIG_PRINTER=m
149CONFIG_PPDEV=m 144CONFIG_PPDEV=m
150# CONFIG_HW_RANDOM is not set 145# CONFIG_HW_RANDOM is not set
151CONFIG_I2C=y 146CONFIG_I2C=y
152CONFIG_POWER_SUPPLY=y
153# CONFIG_HWMON is not set 147# CONFIG_HWMON is not set
154CONFIG_AGP=y 148CONFIG_AGP=y
155CONFIG_VIDEO_OUTPUT_CONTROL=y
156CONFIG_FB=y 149CONFIG_FB=y
157CONFIG_FB_FOREIGN_ENDIAN=y 150CONFIG_FB_FOREIGN_ENDIAN=y
158CONFIG_FB_MODE_HELPERS=y 151CONFIG_FB_MODE_HELPERS=y
@@ -169,11 +162,8 @@ CONFIG_LOGO=y
169# CONFIG_LOGO_LINUX_CLUT224 is not set 162# CONFIG_LOGO_LINUX_CLUT224 is not set
170CONFIG_SOUND=m 163CONFIG_SOUND=m
171CONFIG_SND=m 164CONFIG_SND=m
172CONFIG_SND_SEQUENCER=m
173CONFIG_SND_MIXER_OSS=m
174CONFIG_SND_PCM_OSS=m
175CONFIG_SND_SEQUENCER_OSS=y
176CONFIG_SND_DYNAMIC_MINORS=y 165CONFIG_SND_DYNAMIC_MINORS=y
166CONFIG_SND_SEQUENCER=m
177CONFIG_SND_AD1889=m 167CONFIG_SND_AD1889=m
178CONFIG_SND_HARMONY=m 168CONFIG_SND_HARMONY=m
179CONFIG_HIDRAW=y 169CONFIG_HIDRAW=y
@@ -223,12 +213,7 @@ CONFIG_EXT2_FS=y
223CONFIG_EXT2_FS_XATTR=y 213CONFIG_EXT2_FS_XATTR=y
224CONFIG_EXT2_FS_SECURITY=y 214CONFIG_EXT2_FS_SECURITY=y
225CONFIG_EXT3_FS=y 215CONFIG_EXT3_FS=y
226# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
227CONFIG_EXT3_FS_SECURITY=y 216CONFIG_EXT3_FS_SECURITY=y
228CONFIG_EXT4_FS=y
229CONFIG_XFS_FS=m
230CONFIG_XFS_QUOTA=y
231CONFIG_XFS_RT=y
232CONFIG_QUOTA=y 217CONFIG_QUOTA=y
233CONFIG_QUOTA_NETLINK_INTERFACE=y 218CONFIG_QUOTA_NETLINK_INTERFACE=y
234CONFIG_QFMT_V2=y 219CONFIG_QFMT_V2=y
@@ -293,15 +278,12 @@ CONFIG_DEBUG_MEMORY_INIT=y
293CONFIG_DEBUG_STACKOVERFLOW=y 278CONFIG_DEBUG_STACKOVERFLOW=y
294CONFIG_DEBUG_SHIRQ=y 279CONFIG_DEBUG_SHIRQ=y
295CONFIG_DETECT_HUNG_TASK=y 280CONFIG_DETECT_HUNG_TASK=y
296CONFIG_TIMER_STATS=y
297CONFIG_DEBUG_RT_MUTEXES=y 281CONFIG_DEBUG_RT_MUTEXES=y
298CONFIG_DEBUG_SPINLOCK=y 282CONFIG_DEBUG_SPINLOCK=y
299CONFIG_DEBUG_MUTEXES=y 283CONFIG_DEBUG_MUTEXES=y
300CONFIG_RCU_CPU_STALL_INFO=y
301CONFIG_LATENCYTOP=y 284CONFIG_LATENCYTOP=y
302CONFIG_LKDTM=m 285CONFIG_LKDTM=m
303CONFIG_KEYS=y 286CONFIG_KEYS=y
304CONFIG_CRYPTO_NULL=m
305CONFIG_CRYPTO_TEST=m 287CONFIG_CRYPTO_TEST=m
306CONFIG_CRYPTO_HMAC=y 288CONFIG_CRYPTO_HMAC=y
307CONFIG_CRYPTO_MD5=y 289CONFIG_CRYPTO_MD5=y
@@ -320,7 +302,6 @@ CONFIG_CRYPTO_SERPENT=m
320CONFIG_CRYPTO_TEA=m 302CONFIG_CRYPTO_TEA=m
321CONFIG_CRYPTO_TWOFISH=m 303CONFIG_CRYPTO_TWOFISH=m
322CONFIG_CRYPTO_DEFLATE=y 304CONFIG_CRYPTO_DEFLATE=y
323# CONFIG_CRYPTO_ANSI_CPRNG is not set
324CONFIG_CRC_CCITT=m 305CONFIG_CRC_CCITT=m
325CONFIG_CRC_T10DIF=y 306CONFIG_CRC_T10DIF=y
326CONFIG_FONTS=y 307CONFIG_FONTS=y
diff --git a/arch/parisc/configs/generic-64bit_defconfig b/arch/parisc/configs/generic-64bit_defconfig
index c564e6e1fa23..d39e7f821aba 100644
--- a/arch/parisc/configs/generic-64bit_defconfig
+++ b/arch/parisc/configs/generic-64bit_defconfig
@@ -8,10 +8,11 @@ CONFIG_TASKSTATS=y
8CONFIG_TASK_DELAY_ACCT=y 8CONFIG_TASK_DELAY_ACCT=y
9CONFIG_TASK_XACCT=y 9CONFIG_TASK_XACCT=y
10CONFIG_TASK_IO_ACCOUNTING=y 10CONFIG_TASK_IO_ACCOUNTING=y
11# CONFIG_UTS_NS is not set 11CONFIG_CGROUPS=y
12# CONFIG_IPC_NS is not set 12CONFIG_MEMCG=y
13# CONFIG_PID_NS is not set 13CONFIG_MEMCG_SWAP=y
14# CONFIG_NET_NS is not set 14CONFIG_CGROUP_PIDS=y
15CONFIG_CPUSETS=y
15CONFIG_RELAY=y 16CONFIG_RELAY=y
16CONFIG_BLK_DEV_INITRD=y 17CONFIG_BLK_DEV_INITRD=y
17CONFIG_CC_OPTIMIZE_FOR_SIZE=y 18CONFIG_CC_OPTIMIZE_FOR_SIZE=y
@@ -52,7 +53,6 @@ CONFIG_INET_ESP=m
52CONFIG_INET_XFRM_MODE_TRANSPORT=m 53CONFIG_INET_XFRM_MODE_TRANSPORT=m
53CONFIG_INET_XFRM_MODE_TUNNEL=m 54CONFIG_INET_XFRM_MODE_TUNNEL=m
54CONFIG_INET_XFRM_MODE_BEET=m 55CONFIG_INET_XFRM_MODE_BEET=m
55CONFIG_INET_LRO=m
56CONFIG_INET_DIAG=m 56CONFIG_INET_DIAG=m
57CONFIG_NETFILTER=y 57CONFIG_NETFILTER=y
58# CONFIG_NETFILTER_ADVANCED is not set 58# CONFIG_NETFILTER_ADVANCED is not set
@@ -84,7 +84,6 @@ CONFIG_PATA_SIL680=y
84CONFIG_ATA_GENERIC=y 84CONFIG_ATA_GENERIC=y
85CONFIG_MD=y 85CONFIG_MD=y
86CONFIG_MD_LINEAR=m 86CONFIG_MD_LINEAR=m
87CONFIG_MD_RAID0=m
88CONFIG_BLK_DEV_DM=m 87CONFIG_BLK_DEV_DM=m
89CONFIG_DM_RAID=m 88CONFIG_DM_RAID=m
90CONFIG_DM_UEVENT=y 89CONFIG_DM_UEVENT=y
@@ -138,21 +137,21 @@ CONFIG_QLGE=m
138# CONFIG_NET_VENDOR_TI is not set 137# CONFIG_NET_VENDOR_TI is not set
139# CONFIG_NET_VENDOR_VIA is not set 138# CONFIG_NET_VENDOR_VIA is not set
140# CONFIG_NET_VENDOR_WIZNET is not set 139# CONFIG_NET_VENDOR_WIZNET is not set
140CONFIG_MDIO_BITBANG=m
141CONFIG_PHYLIB=y 141CONFIG_PHYLIB=y
142CONFIG_MARVELL_PHY=m
143CONFIG_DAVICOM_PHY=m
144CONFIG_QSEMI_PHY=m
145CONFIG_LXT_PHY=m
146CONFIG_CICADA_PHY=m
147CONFIG_VITESSE_PHY=m
148CONFIG_SMSC_PHY=m
149CONFIG_BROADCOM_PHY=m 142CONFIG_BROADCOM_PHY=m
143CONFIG_CICADA_PHY=m
144CONFIG_DAVICOM_PHY=m
150CONFIG_ICPLUS_PHY=m 145CONFIG_ICPLUS_PHY=m
151CONFIG_REALTEK_PHY=m 146CONFIG_LSI_ET1011C_PHY=m
147CONFIG_LXT_PHY=m
148CONFIG_MARVELL_PHY=m
152CONFIG_NATIONAL_PHY=m 149CONFIG_NATIONAL_PHY=m
150CONFIG_QSEMI_PHY=m
151CONFIG_REALTEK_PHY=m
152CONFIG_SMSC_PHY=m
153CONFIG_STE10XP=m 153CONFIG_STE10XP=m
154CONFIG_LSI_ET1011C_PHY=m 154CONFIG_VITESSE_PHY=m
155CONFIG_MDIO_BITBANG=m
156CONFIG_SLIP=m 155CONFIG_SLIP=m
157CONFIG_SLIP_COMPRESSED=y 156CONFIG_SLIP_COMPRESSED=y
158CONFIG_SLIP_SMART=y 157CONFIG_SLIP_SMART=y
@@ -166,10 +165,8 @@ CONFIG_INPUT_MISC=y
166CONFIG_SERIO_SERPORT=m 165CONFIG_SERIO_SERPORT=m
167# CONFIG_HP_SDC is not set 166# CONFIG_HP_SDC is not set
168CONFIG_SERIO_RAW=m 167CONFIG_SERIO_RAW=m
169CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
170# CONFIG_LEGACY_PTYS is not set 168# CONFIG_LEGACY_PTYS is not set
171CONFIG_NOZOMI=m 169CONFIG_NOZOMI=m
172# CONFIG_DEVKMEM is not set
173CONFIG_SERIAL_8250=y 170CONFIG_SERIAL_8250=y
174# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set 171# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
175CONFIG_SERIAL_8250_CONSOLE=y 172CONFIG_SERIAL_8250_CONSOLE=y
@@ -207,10 +204,8 @@ CONFIG_AGP=y
207CONFIG_AGP_PARISC=y 204CONFIG_AGP_PARISC=y
208CONFIG_DRM=y 205CONFIG_DRM=y
209CONFIG_DRM_RADEON=y 206CONFIG_DRM_RADEON=y
210CONFIG_DRM_RADEON_UMS=y
211CONFIG_FIRMWARE_EDID=y 207CONFIG_FIRMWARE_EDID=y
212CONFIG_FB_MODE_HELPERS=y 208CONFIG_FB_MODE_HELPERS=y
213CONFIG_BACKLIGHT_LCD_SUPPORT=y
214# CONFIG_BACKLIGHT_GENERIC is not set 209# CONFIG_BACKLIGHT_GENERIC is not set
215CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y 210CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
216CONFIG_LOGO=y 211CONFIG_LOGO=y
@@ -246,8 +241,6 @@ CONFIG_EXT2_FS_XATTR=y
246CONFIG_EXT2_FS_SECURITY=y 241CONFIG_EXT2_FS_SECURITY=y
247CONFIG_EXT3_FS=y 242CONFIG_EXT3_FS=y
248CONFIG_EXT3_FS_SECURITY=y 243CONFIG_EXT3_FS_SECURITY=y
249CONFIG_EXT4_FS=y
250CONFIG_EXT4_FS_SECURITY=y
251CONFIG_XFS_FS=m 244CONFIG_XFS_FS=m
252CONFIG_BTRFS_FS=m 245CONFIG_BTRFS_FS=m
253CONFIG_QUOTA=y 246CONFIG_QUOTA=y
@@ -286,27 +279,16 @@ CONFIG_DEBUG_FS=y
286CONFIG_MAGIC_SYSRQ=y 279CONFIG_MAGIC_SYSRQ=y
287CONFIG_DEBUG_KERNEL=y 280CONFIG_DEBUG_KERNEL=y
288CONFIG_DEBUG_STACKOVERFLOW=y 281CONFIG_DEBUG_STACKOVERFLOW=y
289CONFIG_LOCKUP_DETECTOR=y
290CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC=y
291CONFIG_BOOTPARAM_HUNG_TASK_PANIC=y
292# CONFIG_SCHED_DEBUG is not set 282# CONFIG_SCHED_DEBUG is not set
293CONFIG_TIMER_STATS=y
294CONFIG_CRYPTO_MANAGER=y 283CONFIG_CRYPTO_MANAGER=y
295CONFIG_CRYPTO_ECB=m 284CONFIG_CRYPTO_ECB=m
296CONFIG_CRYPTO_PCBC=m 285CONFIG_CRYPTO_PCBC=m
297CONFIG_CRYPTO_MD4=m 286CONFIG_CRYPTO_MD4=m
298CONFIG_CRYPTO_MD5=y 287CONFIG_CRYPTO_MD5=y
299CONFIG_CRYPTO_MICHAEL_MIC=m 288CONFIG_CRYPTO_MICHAEL_MIC=m
300CONFIG_CRYPTO_SHA256=m
301CONFIG_CRYPTO_ARC4=m 289CONFIG_CRYPTO_ARC4=m
302CONFIG_CRYPTO_FCRYPT=m 290CONFIG_CRYPTO_FCRYPT=m
303CONFIG_CRYPTO_DEFLATE=m 291CONFIG_CRYPTO_DEFLATE=m
304# CONFIG_CRYPTO_HW is not set 292# CONFIG_CRYPTO_HW is not set
305CONFIG_CRC_CCITT=m 293CONFIG_CRC_CCITT=m
306CONFIG_LIBCRC32C=y 294CONFIG_LIBCRC32C=y
307CONFIG_XZ_DEC_X86=y
308CONFIG_XZ_DEC_POWERPC=y
309CONFIG_XZ_DEC_IA64=y
310CONFIG_XZ_DEC_ARM=y
311CONFIG_XZ_DEC_ARMTHUMB=y
312CONFIG_XZ_DEC_SPARC=y
diff --git a/arch/parisc/include/asm/bug.h b/arch/parisc/include/asm/bug.h
index d2742273a685..07ea467f22fc 100644
--- a/arch/parisc/include/asm/bug.h
+++ b/arch/parisc/include/asm/bug.h
@@ -27,7 +27,7 @@
27 do { \ 27 do { \
28 asm volatile("\n" \ 28 asm volatile("\n" \
29 "1:\t" PARISC_BUG_BREAK_ASM "\n" \ 29 "1:\t" PARISC_BUG_BREAK_ASM "\n" \
30 "\t.pushsection __bug_table,\"a\"\n" \ 30 "\t.pushsection __bug_table,\"aw\"\n" \
31 "2:\t" ASM_WORD_INSN "1b, %c0\n" \ 31 "2:\t" ASM_WORD_INSN "1b, %c0\n" \
32 "\t.short %c1, %c2\n" \ 32 "\t.short %c1, %c2\n" \
33 "\t.org 2b+%c3\n" \ 33 "\t.org 2b+%c3\n" \
@@ -50,7 +50,7 @@
50 do { \ 50 do { \
51 asm volatile("\n" \ 51 asm volatile("\n" \
52 "1:\t" PARISC_BUG_BREAK_ASM "\n" \ 52 "1:\t" PARISC_BUG_BREAK_ASM "\n" \
53 "\t.pushsection __bug_table,\"a\"\n" \ 53 "\t.pushsection __bug_table,\"aw\"\n" \
54 "2:\t" ASM_WORD_INSN "1b, %c0\n" \ 54 "2:\t" ASM_WORD_INSN "1b, %c0\n" \
55 "\t.short %c1, %c2\n" \ 55 "\t.short %c1, %c2\n" \
56 "\t.org 2b+%c3\n" \ 56 "\t.org 2b+%c3\n" \
@@ -64,7 +64,7 @@
64 do { \ 64 do { \
65 asm volatile("\n" \ 65 asm volatile("\n" \
66 "1:\t" PARISC_BUG_BREAK_ASM "\n" \ 66 "1:\t" PARISC_BUG_BREAK_ASM "\n" \
67 "\t.pushsection __bug_table,\"a\"\n" \ 67 "\t.pushsection __bug_table,\"aw\"\n" \
68 "2:\t" ASM_WORD_INSN "1b\n" \ 68 "2:\t" ASM_WORD_INSN "1b\n" \
69 "\t.short %c0\n" \ 69 "\t.short %c0\n" \
70 "\t.org 2b+%c1\n" \ 70 "\t.org 2b+%c1\n" \
diff --git a/arch/parisc/include/asm/pdcpat.h b/arch/parisc/include/asm/pdcpat.h
index 32e105fb8adb..e3c0586260d8 100644
--- a/arch/parisc/include/asm/pdcpat.h
+++ b/arch/parisc/include/asm/pdcpat.h
@@ -150,7 +150,7 @@
150#define PDC_PAT_MEM_SETGM 9L /* Set Good Memory value */ 150#define PDC_PAT_MEM_SETGM 9L /* Set Good Memory value */
151#define PDC_PAT_MEM_ADD_PAGE 10L /* ADDs a page to the cell */ 151#define PDC_PAT_MEM_ADD_PAGE 10L /* ADDs a page to the cell */
152#define PDC_PAT_MEM_ADDRESS 11L /* Get Physical Location From */ 152#define PDC_PAT_MEM_ADDRESS 11L /* Get Physical Location From */
153 /* Memory Address */ 153 /* Memory Address */
154#define PDC_PAT_MEM_GET_TXT_SIZE 12L /* Get Formatted Text Size */ 154#define PDC_PAT_MEM_GET_TXT_SIZE 12L /* Get Formatted Text Size */
155#define PDC_PAT_MEM_GET_PD_TXT 13L /* Get PD Formatted Text */ 155#define PDC_PAT_MEM_GET_PD_TXT 13L /* Get PD Formatted Text */
156#define PDC_PAT_MEM_GET_CELL_TXT 14L /* Get Cell Formatted Text */ 156#define PDC_PAT_MEM_GET_CELL_TXT 14L /* Get Cell Formatted Text */
@@ -228,6 +228,17 @@ struct pdc_pat_mem_read_pd_retinfo { /* PDC_PAT_MEM/PDC_PAT_MEM_PD_READ */
228 unsigned long pdt_entries; 228 unsigned long pdt_entries;
229}; 229};
230 230
231struct pdc_pat_mem_phys_mem_location { /* PDC_PAT_MEM/PDC_PAT_MEM_ADDRESS */
232 u64 cabinet:8;
233 u64 ign1:8;
234 u64 ign2:8;
235 u64 cell_slot:8;
236 u64 ign3:8;
237 u64 dimm_slot:8; /* DIMM slot, e.g. 0x1A, 0x2B, show user hex value! */
238 u64 ign4:8;
239 u64 source:4; /* for mem: always 0x07 */
240 u64 source_detail:4; /* for mem: always 0x04 (SIMM or DIMM) */
241};
231 242
232struct pdc_pat_pd_addr_map_entry { 243struct pdc_pat_pd_addr_map_entry {
233 unsigned char entry_type; /* 1 = Memory Descriptor Entry Type */ 244 unsigned char entry_type; /* 1 = Memory Descriptor Entry Type */
@@ -319,6 +330,9 @@ extern int pdc_pat_mem_read_cell_pdt(struct pdc_pat_mem_read_pd_retinfo *pret,
319extern int pdc_pat_mem_read_pd_pdt(struct pdc_pat_mem_read_pd_retinfo *pret, 330extern int pdc_pat_mem_read_pd_pdt(struct pdc_pat_mem_read_pd_retinfo *pret,
320 unsigned long *pdt_entries_ptr, unsigned long count, 331 unsigned long *pdt_entries_ptr, unsigned long count,
321 unsigned long offset); 332 unsigned long offset);
333extern int pdc_pat_mem_get_dimm_phys_location(
334 struct pdc_pat_mem_phys_mem_location *pret,
335 unsigned long phys_addr);
322 336
323#endif /* __ASSEMBLY__ */ 337#endif /* __ASSEMBLY__ */
324 338
diff --git a/arch/parisc/include/asm/thread_info.h b/arch/parisc/include/asm/thread_info.h
index 88fe0aad4390..bc208136bbb2 100644
--- a/arch/parisc/include/asm/thread_info.h
+++ b/arch/parisc/include/asm/thread_info.h
@@ -34,7 +34,7 @@ struct thread_info {
34 34
35/* thread information allocation */ 35/* thread information allocation */
36 36
37#define THREAD_SIZE_ORDER 2 /* PA-RISC requires at least 16k stack */ 37#define THREAD_SIZE_ORDER 3 /* PA-RISC requires at least 32k stack */
38/* Be sure to hunt all references to this down when you change the size of 38/* Be sure to hunt all references to this down when you change the size of
39 * the kernel stack */ 39 * the kernel stack */
40#define THREAD_SIZE (PAGE_SIZE << THREAD_SIZE_ORDER) 40#define THREAD_SIZE (PAGE_SIZE << THREAD_SIZE_ORDER)
diff --git a/arch/parisc/include/uapi/asm/ioctls.h b/arch/parisc/include/uapi/asm/ioctls.h
index 674c68a5bbd0..d0e3321403be 100644
--- a/arch/parisc/include/uapi/asm/ioctls.h
+++ b/arch/parisc/include/uapi/asm/ioctls.h
@@ -60,7 +60,7 @@
60#define TIOCGPKT _IOR('T', 0x38, int) /* Get packet mode state */ 60#define TIOCGPKT _IOR('T', 0x38, int) /* Get packet mode state */
61#define TIOCGPTLCK _IOR('T', 0x39, int) /* Get Pty lock state */ 61#define TIOCGPTLCK _IOR('T', 0x39, int) /* Get Pty lock state */
62#define TIOCGEXCL _IOR('T', 0x40, int) /* Get exclusive mode state */ 62#define TIOCGEXCL _IOR('T', 0x40, int) /* Get exclusive mode state */
63#define TIOCGPTPEER _IOR('T', 0x41, int) /* Safely open the slave */ 63#define TIOCGPTPEER _IO('T', 0x41) /* Safely open the slave */
64 64
65#define FIONCLEX 0x5450 /* these numbers need to be adjusted. */ 65#define FIONCLEX 0x5450 /* these numbers need to be adjusted. */
66#define FIOCLEX 0x5451 66#define FIOCLEX 0x5451
diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c
index c32a09095216..19c0c141bc3f 100644
--- a/arch/parisc/kernel/cache.c
+++ b/arch/parisc/kernel/cache.c
@@ -453,8 +453,8 @@ void copy_user_page(void *vto, void *vfrom, unsigned long vaddr,
453 before it can be accessed through the kernel mapping. */ 453 before it can be accessed through the kernel mapping. */
454 preempt_disable(); 454 preempt_disable();
455 flush_dcache_page_asm(__pa(vfrom), vaddr); 455 flush_dcache_page_asm(__pa(vfrom), vaddr);
456 preempt_enable();
457 copy_page_asm(vto, vfrom); 456 copy_page_asm(vto, vfrom);
457 preempt_enable();
458} 458}
459EXPORT_SYMBOL(copy_user_page); 459EXPORT_SYMBOL(copy_user_page);
460 460
@@ -539,6 +539,10 @@ void flush_cache_mm(struct mm_struct *mm)
539 struct vm_area_struct *vma; 539 struct vm_area_struct *vma;
540 pgd_t *pgd; 540 pgd_t *pgd;
541 541
542 /* Flush the TLB to avoid speculation if coherency is required. */
543 if (parisc_requires_coherency())
544 flush_tlb_all();
545
542 /* Flushing the whole cache on each cpu takes forever on 546 /* Flushing the whole cache on each cpu takes forever on
543 rp3440, etc. So, avoid it if the mm isn't too big. */ 547 rp3440, etc. So, avoid it if the mm isn't too big. */
544 if (mm_total_size(mm) >= parisc_cache_flush_threshold) { 548 if (mm_total_size(mm) >= parisc_cache_flush_threshold) {
@@ -577,33 +581,21 @@ void flush_cache_mm(struct mm_struct *mm)
577void flush_cache_range(struct vm_area_struct *vma, 581void flush_cache_range(struct vm_area_struct *vma,
578 unsigned long start, unsigned long end) 582 unsigned long start, unsigned long end)
579{ 583{
580 unsigned long addr;
581 pgd_t *pgd;
582
583 BUG_ON(!vma->vm_mm->context); 584 BUG_ON(!vma->vm_mm->context);
584 585
585 if ((end - start) >= parisc_cache_flush_threshold) { 586 /* Flush the TLB to avoid speculation if coherency is required. */
586 flush_cache_all(); 587 if (parisc_requires_coherency())
587 return; 588 flush_tlb_range(vma, start, end);
588 }
589 589
590 if (vma->vm_mm->context == mfsp(3)) { 590 if ((end - start) >= parisc_cache_flush_threshold
591 flush_user_dcache_range_asm(start, end); 591 || vma->vm_mm->context != mfsp(3)) {
592 if (vma->vm_flags & VM_EXEC) 592 flush_cache_all();
593 flush_user_icache_range_asm(start, end);
594 return; 593 return;
595 } 594 }
596 595
597 pgd = vma->vm_mm->pgd; 596 flush_user_dcache_range_asm(start, end);
598 for (addr = start & PAGE_MASK; addr < end; addr += PAGE_SIZE) { 597 if (vma->vm_flags & VM_EXEC)
599 unsigned long pfn; 598 flush_user_icache_range_asm(start, end);
600 pte_t *ptep = get_ptep(pgd, addr);
601 if (!ptep)
602 continue;
603 pfn = pte_pfn(*ptep);
604 if (pfn_valid(pfn))
605 __flush_cache_page(vma, addr, PFN_PHYS(pfn));
606 }
607} 599}
608 600
609void 601void
@@ -612,7 +604,8 @@ flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr, unsigned long
612 BUG_ON(!vma->vm_mm->context); 604 BUG_ON(!vma->vm_mm->context);
613 605
614 if (pfn_valid(pfn)) { 606 if (pfn_valid(pfn)) {
615 flush_tlb_page(vma, vmaddr); 607 if (parisc_requires_coherency())
608 flush_tlb_page(vma, vmaddr);
616 __flush_cache_page(vma, vmaddr, PFN_PHYS(pfn)); 609 __flush_cache_page(vma, vmaddr, PFN_PHYS(pfn));
617 } 610 }
618} 611}
diff --git a/arch/parisc/kernel/firmware.c b/arch/parisc/kernel/firmware.c
index 98190252c12f..f622a311d04a 100644
--- a/arch/parisc/kernel/firmware.c
+++ b/arch/parisc/kernel/firmware.c
@@ -1481,12 +1481,44 @@ int pdc_pat_mem_read_pd_pdt(struct pdc_pat_mem_read_pd_retinfo *pret,
1481 unsigned long offset) 1481 unsigned long offset)
1482{ 1482{
1483 int retval; 1483 int retval;
1484 unsigned long flags; 1484 unsigned long flags, entries;
1485 1485
1486 spin_lock_irqsave(&pdc_lock, flags); 1486 spin_lock_irqsave(&pdc_lock, flags);
1487 retval = mem_pdc_call(PDC_PAT_MEM, PDC_PAT_MEM_PD_READ, 1487 retval = mem_pdc_call(PDC_PAT_MEM, PDC_PAT_MEM_PD_READ,
1488 __pa(&pret), __pa(pdt_entries_ptr), 1488 __pa(&pdc_result), __pa(pdt_entries_ptr),
1489 count, offset); 1489 count, offset);
1490
1491 if (retval == PDC_OK) {
1492 entries = min(pdc_result[0], count);
1493 pret->actual_count_bytes = entries;
1494 pret->pdt_entries = entries / sizeof(unsigned long);
1495 }
1496
1497 spin_unlock_irqrestore(&pdc_lock, flags);
1498
1499 return retval;
1500}
1501
1502/**
1503 * pdc_pat_mem_get_dimm_phys_location - Get physical DIMM slot via PAT firmware
1504 * @pret: ptr to hold returned information
1505 * @phys_addr: physical address to examine
1506 *
1507 */
1508int pdc_pat_mem_get_dimm_phys_location(
1509 struct pdc_pat_mem_phys_mem_location *pret,
1510 unsigned long phys_addr)
1511{
1512 int retval;
1513 unsigned long flags;
1514
1515 spin_lock_irqsave(&pdc_lock, flags);
1516 retval = mem_pdc_call(PDC_PAT_MEM, PDC_PAT_MEM_ADDRESS,
1517 __pa(&pdc_result), phys_addr);
1518
1519 if (retval == PDC_OK)
1520 memcpy(pret, &pdc_result, sizeof(*pret));
1521
1490 spin_unlock_irqrestore(&pdc_lock, flags); 1522 spin_unlock_irqrestore(&pdc_lock, flags);
1491 1523
1492 return retval; 1524 return retval;
diff --git a/arch/parisc/kernel/irq.c b/arch/parisc/kernel/irq.c
index ba5e1c7b1f17..0ca254085a66 100644
--- a/arch/parisc/kernel/irq.c
+++ b/arch/parisc/kernel/irq.c
@@ -380,7 +380,7 @@ static inline int eirr_to_irq(unsigned long eirr)
380/* 380/*
381 * IRQ STACK - used for irq handler 381 * IRQ STACK - used for irq handler
382 */ 382 */
383#define IRQ_STACK_SIZE (4096 << 2) /* 16k irq stack size */ 383#define IRQ_STACK_SIZE (4096 << 3) /* 32k irq stack size */
384 384
385union irq_stack_union { 385union irq_stack_union {
386 unsigned long stack[IRQ_STACK_SIZE/sizeof(unsigned long)]; 386 unsigned long stack[IRQ_STACK_SIZE/sizeof(unsigned long)];
@@ -413,6 +413,10 @@ static inline void stack_overflow_check(struct pt_regs *regs)
413 if (regs->sr[7]) 413 if (regs->sr[7])
414 return; 414 return;
415 415
416 /* exit if already in panic */
417 if (sysctl_panic_on_stackoverflow < 0)
418 return;
419
416 /* calculate kernel stack usage */ 420 /* calculate kernel stack usage */
417 stack_usage = sp - stack_start; 421 stack_usage = sp - stack_start;
418#ifdef CONFIG_IRQSTACKS 422#ifdef CONFIG_IRQSTACKS
@@ -454,8 +458,10 @@ check_kernel_stack:
454#ifdef CONFIG_IRQSTACKS 458#ifdef CONFIG_IRQSTACKS
455panic_check: 459panic_check:
456#endif 460#endif
457 if (sysctl_panic_on_stackoverflow) 461 if (sysctl_panic_on_stackoverflow) {
462 sysctl_panic_on_stackoverflow = -1; /* disable further checks */
458 panic("low stack detected by irq handler - check messages\n"); 463 panic("low stack detected by irq handler - check messages\n");
464 }
459#endif 465#endif
460} 466}
461 467
diff --git a/arch/parisc/kernel/pdt.c b/arch/parisc/kernel/pdt.c
index f3a797e670b0..d02874ecb94d 100644
--- a/arch/parisc/kernel/pdt.c
+++ b/arch/parisc/kernel/pdt.c
@@ -112,10 +112,12 @@ void __init pdc_pdt_init(void)
112#ifdef CONFIG_64BIT 112#ifdef CONFIG_64BIT
113 struct pdc_pat_mem_read_pd_retinfo pat_pret; 113 struct pdc_pat_mem_read_pd_retinfo pat_pret;
114 114
115 /* try old obsolete PAT firmware function first */
116 pdt_type = PDT_PAT_OLD;
115 ret = pdc_pat_mem_read_cell_pdt(&pat_pret, pdt_entry, 117 ret = pdc_pat_mem_read_cell_pdt(&pat_pret, pdt_entry,
116 MAX_PDT_ENTRIES); 118 MAX_PDT_ENTRIES);
117 if (ret != PDC_OK) { 119 if (ret != PDC_OK) {
118 pdt_type = PDT_PAT_OLD; 120 pdt_type = PDT_PAT_NEW;
119 ret = pdc_pat_mem_read_pd_pdt(&pat_pret, pdt_entry, 121 ret = pdc_pat_mem_read_pd_pdt(&pat_pret, pdt_entry,
120 MAX_PDT_TABLE_SIZE, 0); 122 MAX_PDT_TABLE_SIZE, 0);
121 } 123 }
@@ -131,11 +133,20 @@ void __init pdc_pdt_init(void)
131 } 133 }
132 134
133 for (i = 0; i < pdt_status.pdt_entries; i++) { 135 for (i = 0; i < pdt_status.pdt_entries; i++) {
134 if (i < 20) 136 struct pdc_pat_mem_phys_mem_location loc;
135 pr_warn("PDT: BAD PAGE #%d at 0x%08lx (error_type = %lu)\n", 137
136 i, 138 /* get DIMM slot number */
137 pdt_entry[i] & PAGE_MASK, 139 loc.dimm_slot = 0xff;
138 pdt_entry[i] & 1); 140#ifdef CONFIG_64BIT
141 pdc_pat_mem_get_dimm_phys_location(&loc, pdt_entry[i]);
142#endif
143
144 pr_warn("PDT: BAD PAGE #%d at 0x%08lx, "
145 "DIMM slot %02x (error_type = %lu)\n",
146 i,
147 pdt_entry[i] & PAGE_MASK,
148 loc.dimm_slot,
149 pdt_entry[i] & 1);
139 150
140 /* mark memory page bad */ 151 /* mark memory page bad */
141 memblock_reserve(pdt_entry[i] & PAGE_MASK, PAGE_SIZE); 152 memblock_reserve(pdt_entry[i] & PAGE_MASK, PAGE_SIZE);
diff --git a/arch/parisc/kernel/process.c b/arch/parisc/kernel/process.c
index b64d7d21646e..a45a67d526f8 100644
--- a/arch/parisc/kernel/process.c
+++ b/arch/parisc/kernel/process.c
@@ -53,6 +53,7 @@
53#include <linux/uaccess.h> 53#include <linux/uaccess.h>
54#include <linux/rcupdate.h> 54#include <linux/rcupdate.h>
55#include <linux/random.h> 55#include <linux/random.h>
56#include <linux/nmi.h>
56 57
57#include <asm/io.h> 58#include <asm/io.h>
58#include <asm/asm-offsets.h> 59#include <asm/asm-offsets.h>
@@ -145,6 +146,7 @@ void machine_power_off(void)
145 146
146 /* prevent soft lockup/stalled CPU messages for endless loop. */ 147 /* prevent soft lockup/stalled CPU messages for endless loop. */
147 rcu_sysrq_start(); 148 rcu_sysrq_start();
149 lockup_detector_suspend();
148 for (;;); 150 for (;;);
149} 151}
150 152
diff --git a/arch/parisc/kernel/vmlinux.lds.S b/arch/parisc/kernel/vmlinux.lds.S
index 3d6ef1b29c6a..ffe2cbf52d1a 100644
--- a/arch/parisc/kernel/vmlinux.lds.S
+++ b/arch/parisc/kernel/vmlinux.lds.S
@@ -78,6 +78,8 @@ SECTIONS
78 *(.text.sys_exit) 78 *(.text.sys_exit)
79 *(.text.do_sigaltstack) 79 *(.text.do_sigaltstack)
80 *(.text.do_fork) 80 *(.text.do_fork)
81 *(.text.div)
82 *($$*) /* millicode routines */
81 *(.text.*) 83 *(.text.*)
82 *(.fixup) 84 *(.fixup)
83 *(.lock.text) /* out-of-line lock text */ 85 *(.lock.text) /* out-of-line lock text */
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 36f858c37ca7..81b0031f909f 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -199,7 +199,7 @@ config PPC
199 select HAVE_OPTPROBES if PPC64 199 select HAVE_OPTPROBES if PPC64
200 select HAVE_PERF_EVENTS 200 select HAVE_PERF_EVENTS
201 select HAVE_PERF_EVENTS_NMI if PPC64 201 select HAVE_PERF_EVENTS_NMI if PPC64
202 select HAVE_HARDLOCKUP_DETECTOR_PERF if HAVE_PERF_EVENTS_NMI && !HAVE_HARDLOCKUP_DETECTOR_ARCH 202 select HAVE_HARDLOCKUP_DETECTOR_PERF if PERF_EVENTS && HAVE_PERF_EVENTS_NMI && !HAVE_HARDLOCKUP_DETECTOR_ARCH
203 select HAVE_PERF_REGS 203 select HAVE_PERF_REGS
204 select HAVE_PERF_USER_STACK_DUMP 204 select HAVE_PERF_USER_STACK_DUMP
205 select HAVE_RCU_TABLE_FREE if SMP 205 select HAVE_RCU_TABLE_FREE if SMP
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index 8d4ed73d5490..e2b3e7a00c9e 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -59,6 +59,19 @@ machine-$(CONFIG_PPC64) += 64
59machine-$(CONFIG_CPU_LITTLE_ENDIAN) += le 59machine-$(CONFIG_CPU_LITTLE_ENDIAN) += le
60UTS_MACHINE := $(subst $(space),,$(machine-y)) 60UTS_MACHINE := $(subst $(space),,$(machine-y))
61 61
62# XXX This needs to be before we override LD below
63ifdef CONFIG_PPC32
64KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
65else
66ifeq ($(call ld-ifversion, -ge, 225000000, y),y)
67# Have the linker provide sfpr if possible.
68# There is a corresponding test in arch/powerpc/lib/Makefile
69KBUILD_LDFLAGS_MODULE += --save-restore-funcs
70else
71KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
72endif
73endif
74
62ifeq ($(CONFIG_CPU_LITTLE_ENDIAN),y) 75ifeq ($(CONFIG_CPU_LITTLE_ENDIAN),y)
63override LD += -EL 76override LD += -EL
64LDEMULATION := lppc 77LDEMULATION := lppc
@@ -190,18 +203,6 @@ else
190CHECKFLAGS += -D__LITTLE_ENDIAN__ 203CHECKFLAGS += -D__LITTLE_ENDIAN__
191endif 204endif
192 205
193ifdef CONFIG_PPC32
194KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
195else
196ifeq ($(call ld-ifversion, -ge, 225000000, y),y)
197# Have the linker provide sfpr if possible.
198# There is a corresponding test in arch/powerpc/lib/Makefile
199KBUILD_LDFLAGS_MODULE += --save-restore-funcs
200else
201KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
202endif
203endif
204
205ifeq ($(CONFIG_476FPE_ERR46),y) 206ifeq ($(CONFIG_476FPE_ERR46),y)
206 KBUILD_LDFLAGS_MODULE += --ppc476-workaround \ 207 KBUILD_LDFLAGS_MODULE += --ppc476-workaround \
207 -T $(srctree)/arch/powerpc/platforms/44x/ppc476_modules.lds 208 -T $(srctree)/arch/powerpc/platforms/44x/ppc476_modules.lds
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index a7814a7b1523..6f952fe1f084 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -25,12 +25,20 @@ compress-$(CONFIG_KERNEL_XZ) := CONFIG_KERNEL_XZ
25BOOTCFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \ 25BOOTCFLAGS := -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs \
26 -fno-strict-aliasing -Os -msoft-float -pipe \ 26 -fno-strict-aliasing -Os -msoft-float -pipe \
27 -fomit-frame-pointer -fno-builtin -fPIC -nostdinc \ 27 -fomit-frame-pointer -fno-builtin -fPIC -nostdinc \
28 -isystem $(shell $(CROSS32CC) -print-file-name=include) \
29 -D$(compress-y) 28 -D$(compress-y)
30 29
30BOOTCC := $(CC)
31ifdef CONFIG_PPC64_BOOT_WRAPPER 31ifdef CONFIG_PPC64_BOOT_WRAPPER
32BOOTCFLAGS += -m64 32BOOTCFLAGS += -m64
33else
34BOOTCFLAGS += -m32
35ifdef CROSS32_COMPILE
36 BOOTCC := $(CROSS32_COMPILE)gcc
37endif
33endif 38endif
39
40BOOTCFLAGS += -isystem $(shell $(BOOTCC) -print-file-name=include)
41
34ifdef CONFIG_CPU_BIG_ENDIAN 42ifdef CONFIG_CPU_BIG_ENDIAN
35BOOTCFLAGS += -mbig-endian 43BOOTCFLAGS += -mbig-endian
36else 44else
@@ -183,10 +191,10 @@ clean-files := $(zlib-) $(zlibheader-) $(zliblinuxheader-) \
183 empty.c zImage.coff.lds zImage.ps3.lds zImage.lds 191 empty.c zImage.coff.lds zImage.ps3.lds zImage.lds
184 192
185quiet_cmd_bootcc = BOOTCC $@ 193quiet_cmd_bootcc = BOOTCC $@
186 cmd_bootcc = $(CROSS32CC) -Wp,-MD,$(depfile) $(BOOTCFLAGS) -c -o $@ $< 194 cmd_bootcc = $(BOOTCC) -Wp,-MD,$(depfile) $(BOOTCFLAGS) -c -o $@ $<
187 195
188quiet_cmd_bootas = BOOTAS $@ 196quiet_cmd_bootas = BOOTAS $@
189 cmd_bootas = $(CROSS32CC) -Wp,-MD,$(depfile) $(BOOTAFLAGS) -c -o $@ $< 197 cmd_bootas = $(BOOTCC) -Wp,-MD,$(depfile) $(BOOTAFLAGS) -c -o $@ $<
190 198
191quiet_cmd_bootar = BOOTAR $@ 199quiet_cmd_bootar = BOOTAR $@
192 cmd_bootar = $(CROSS32AR) -cr$(KBUILD_ARFLAGS) $@.$$$$ $(filter-out FORCE,$^); mv $@.$$$$ $@ 200 cmd_bootar = $(CROSS32AR) -cr$(KBUILD_ARFLAGS) $@.$$$$ $(filter-out FORCE,$^); mv $@.$$$$ $@
diff --git a/arch/powerpc/configs/powernv_defconfig b/arch/powerpc/configs/powernv_defconfig
index 0695ce047d56..34fc9bbfca9e 100644
--- a/arch/powerpc/configs/powernv_defconfig
+++ b/arch/powerpc/configs/powernv_defconfig
@@ -293,7 +293,8 @@ CONFIG_MAGIC_SYSRQ=y
293CONFIG_DEBUG_KERNEL=y 293CONFIG_DEBUG_KERNEL=y
294CONFIG_DEBUG_STACK_USAGE=y 294CONFIG_DEBUG_STACK_USAGE=y
295CONFIG_DEBUG_STACKOVERFLOW=y 295CONFIG_DEBUG_STACKOVERFLOW=y
296CONFIG_LOCKUP_DETECTOR=y 296CONFIG_SOFTLOCKUP_DETECTOR=y
297CONFIG_HARDLOCKUP_DETECTOR=y
297CONFIG_LATENCYTOP=y 298CONFIG_LATENCYTOP=y
298CONFIG_SCHED_TRACER=y 299CONFIG_SCHED_TRACER=y
299CONFIG_BLK_DEV_IO_TRACE=y 300CONFIG_BLK_DEV_IO_TRACE=y
diff --git a/arch/powerpc/configs/ppc64_defconfig b/arch/powerpc/configs/ppc64_defconfig
index 5175028c56ce..c5246d29f385 100644
--- a/arch/powerpc/configs/ppc64_defconfig
+++ b/arch/powerpc/configs/ppc64_defconfig
@@ -324,7 +324,8 @@ CONFIG_MAGIC_SYSRQ=y
324CONFIG_DEBUG_KERNEL=y 324CONFIG_DEBUG_KERNEL=y
325CONFIG_DEBUG_STACK_USAGE=y 325CONFIG_DEBUG_STACK_USAGE=y
326CONFIG_DEBUG_STACKOVERFLOW=y 326CONFIG_DEBUG_STACKOVERFLOW=y
327CONFIG_LOCKUP_DETECTOR=y 327CONFIG_SOFTLOCKUP_DETECTOR=y
328CONFIG_HARDLOCKUP_DETECTOR=y
328CONFIG_DEBUG_MUTEXES=y 329CONFIG_DEBUG_MUTEXES=y
329CONFIG_LATENCYTOP=y 330CONFIG_LATENCYTOP=y
330CONFIG_SCHED_TRACER=y 331CONFIG_SCHED_TRACER=y
diff --git a/arch/powerpc/configs/pseries_defconfig b/arch/powerpc/configs/pseries_defconfig
index 1a61aa20dfba..fd5d98a0b95c 100644
--- a/arch/powerpc/configs/pseries_defconfig
+++ b/arch/powerpc/configs/pseries_defconfig
@@ -291,7 +291,8 @@ CONFIG_MAGIC_SYSRQ=y
291CONFIG_DEBUG_KERNEL=y 291CONFIG_DEBUG_KERNEL=y
292CONFIG_DEBUG_STACK_USAGE=y 292CONFIG_DEBUG_STACK_USAGE=y
293CONFIG_DEBUG_STACKOVERFLOW=y 293CONFIG_DEBUG_STACKOVERFLOW=y
294CONFIG_LOCKUP_DETECTOR=y 294CONFIG_SOFTLOCKUP_DETECTOR=y
295CONFIG_HARDLOCKUP_DETECTOR=y
295CONFIG_LATENCYTOP=y 296CONFIG_LATENCYTOP=y
296CONFIG_SCHED_TRACER=y 297CONFIG_SCHED_TRACER=y
297CONFIG_BLK_DEV_IO_TRACE=y 298CONFIG_BLK_DEV_IO_TRACE=y
diff --git a/arch/powerpc/include/asm/book3s/64/hash.h b/arch/powerpc/include/asm/book3s/64/hash.h
index 0ce513f2926f..36fc7bfe9e11 100644
--- a/arch/powerpc/include/asm/book3s/64/hash.h
+++ b/arch/powerpc/include/asm/book3s/64/hash.h
@@ -91,6 +91,7 @@ static inline int hash__pgd_bad(pgd_t pgd)
91} 91}
92#ifdef CONFIG_STRICT_KERNEL_RWX 92#ifdef CONFIG_STRICT_KERNEL_RWX
93extern void hash__mark_rodata_ro(void); 93extern void hash__mark_rodata_ro(void);
94extern void hash__mark_initmem_nx(void);
94#endif 95#endif
95 96
96extern void hpte_need_flush(struct mm_struct *mm, unsigned long addr, 97extern void hpte_need_flush(struct mm_struct *mm, unsigned long addr,
diff --git a/arch/powerpc/include/asm/book3s/64/mmu.h b/arch/powerpc/include/asm/book3s/64/mmu.h
index 77529a3e3811..5b4023c616f7 100644
--- a/arch/powerpc/include/asm/book3s/64/mmu.h
+++ b/arch/powerpc/include/asm/book3s/64/mmu.h
@@ -59,13 +59,14 @@ extern struct patb_entry *partition_tb;
59#define PRTS_MASK 0x1f /* process table size field */ 59#define PRTS_MASK 0x1f /* process table size field */
60#define PRTB_MASK 0x0ffffffffffff000UL 60#define PRTB_MASK 0x0ffffffffffff000UL
61 61
62/* 62/* Number of supported PID bits */
63 * Limit process table to PAGE_SIZE table. This 63extern unsigned int mmu_pid_bits;
64 * also limit the max pid we can support. 64
65 * MAX_USER_CONTEXT * 16 bytes of space. 65/* Base PID to allocate from */
66 */ 66extern unsigned int mmu_base_pid;
67#define PRTB_SIZE_SHIFT (CONTEXT_BITS + 4) 67
68#define PRTB_ENTRIES (1ul << CONTEXT_BITS) 68#define PRTB_SIZE_SHIFT (mmu_pid_bits + 4)
69#define PRTB_ENTRIES (1ul << mmu_pid_bits)
69 70
70/* 71/*
71 * Power9 currently only support 64K partition table size. 72 * Power9 currently only support 64K partition table size.
diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h b/arch/powerpc/include/asm/book3s/64/pgtable.h
index c0737c86a362..818a58fc3f4f 100644
--- a/arch/powerpc/include/asm/book3s/64/pgtable.h
+++ b/arch/powerpc/include/asm/book3s/64/pgtable.h
@@ -608,9 +608,17 @@ static inline pte_t pte_mkdevmap(pte_t pte)
608 return __pte(pte_val(pte) | _PAGE_SPECIAL|_PAGE_DEVMAP); 608 return __pte(pte_val(pte) | _PAGE_SPECIAL|_PAGE_DEVMAP);
609} 609}
610 610
611/*
612 * This is potentially called with a pmd as the argument, in which case it's not
613 * safe to check _PAGE_DEVMAP unless we also confirm that _PAGE_PTE is set.
614 * That's because the bit we use for _PAGE_DEVMAP is not reserved for software
615 * use in page directory entries (ie. non-ptes).
616 */
611static inline int pte_devmap(pte_t pte) 617static inline int pte_devmap(pte_t pte)
612{ 618{
613 return !!(pte_raw(pte) & cpu_to_be64(_PAGE_DEVMAP)); 619 u64 mask = cpu_to_be64(_PAGE_DEVMAP | _PAGE_PTE);
620
621 return (pte_raw(pte) & mask) == mask;
614} 622}
615 623
616static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) 624static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
@@ -1192,5 +1200,6 @@ static inline const int pud_pfn(pud_t pud)
1192 BUILD_BUG(); 1200 BUILD_BUG();
1193 return 0; 1201 return 0;
1194} 1202}
1203
1195#endif /* __ASSEMBLY__ */ 1204#endif /* __ASSEMBLY__ */
1196#endif /* _ASM_POWERPC_BOOK3S_64_PGTABLE_H_ */ 1205#endif /* _ASM_POWERPC_BOOK3S_64_PGTABLE_H_ */
diff --git a/arch/powerpc/include/asm/book3s/64/radix.h b/arch/powerpc/include/asm/book3s/64/radix.h
index 487709ff6875..544440b5aff3 100644
--- a/arch/powerpc/include/asm/book3s/64/radix.h
+++ b/arch/powerpc/include/asm/book3s/64/radix.h
@@ -118,6 +118,7 @@
118 118
119#ifdef CONFIG_STRICT_KERNEL_RWX 119#ifdef CONFIG_STRICT_KERNEL_RWX
120extern void radix__mark_rodata_ro(void); 120extern void radix__mark_rodata_ro(void);
121extern void radix__mark_initmem_nx(void);
121#endif 122#endif
122 123
123static inline unsigned long __radix_pte_update(pte_t *ptep, unsigned long clr, 124static inline unsigned long __radix_pte_update(pte_t *ptep, unsigned long clr,
diff --git a/arch/powerpc/include/asm/bug.h b/arch/powerpc/include/asm/bug.h
index 0151af6c2a50..87fcc1948817 100644
--- a/arch/powerpc/include/asm/bug.h
+++ b/arch/powerpc/include/asm/bug.h
@@ -18,7 +18,7 @@
18#include <asm/asm-offsets.h> 18#include <asm/asm-offsets.h>
19#ifdef CONFIG_DEBUG_BUGVERBOSE 19#ifdef CONFIG_DEBUG_BUGVERBOSE
20.macro EMIT_BUG_ENTRY addr,file,line,flags 20.macro EMIT_BUG_ENTRY addr,file,line,flags
21 .section __bug_table,"a" 21 .section __bug_table,"aw"
225001: PPC_LONG \addr, 5002f 225001: PPC_LONG \addr, 5002f
23 .short \line, \flags 23 .short \line, \flags
24 .org 5001b+BUG_ENTRY_SIZE 24 .org 5001b+BUG_ENTRY_SIZE
@@ -29,7 +29,7 @@
29.endm 29.endm
30#else 30#else
31.macro EMIT_BUG_ENTRY addr,file,line,flags 31.macro EMIT_BUG_ENTRY addr,file,line,flags
32 .section __bug_table,"a" 32 .section __bug_table,"aw"
335001: PPC_LONG \addr 335001: PPC_LONG \addr
34 .short \flags 34 .short \flags
35 .org 5001b+BUG_ENTRY_SIZE 35 .org 5001b+BUG_ENTRY_SIZE
@@ -42,14 +42,14 @@
42 sizeof(struct bug_entry), respectively */ 42 sizeof(struct bug_entry), respectively */
43#ifdef CONFIG_DEBUG_BUGVERBOSE 43#ifdef CONFIG_DEBUG_BUGVERBOSE
44#define _EMIT_BUG_ENTRY \ 44#define _EMIT_BUG_ENTRY \
45 ".section __bug_table,\"a\"\n" \ 45 ".section __bug_table,\"aw\"\n" \
46 "2:\t" PPC_LONG "1b, %0\n" \ 46 "2:\t" PPC_LONG "1b, %0\n" \
47 "\t.short %1, %2\n" \ 47 "\t.short %1, %2\n" \
48 ".org 2b+%3\n" \ 48 ".org 2b+%3\n" \
49 ".previous\n" 49 ".previous\n"
50#else 50#else
51#define _EMIT_BUG_ENTRY \ 51#define _EMIT_BUG_ENTRY \
52 ".section __bug_table,\"a\"\n" \ 52 ".section __bug_table,\"aw\"\n" \
53 "2:\t" PPC_LONG "1b\n" \ 53 "2:\t" PPC_LONG "1b\n" \
54 "\t.short %2\n" \ 54 "\t.short %2\n" \
55 ".org 2b+%3\n" \ 55 ".org 2b+%3\n" \
diff --git a/arch/powerpc/include/asm/mmu_context.h b/arch/powerpc/include/asm/mmu_context.h
index da7e9432fa8f..0c76675394c5 100644
--- a/arch/powerpc/include/asm/mmu_context.h
+++ b/arch/powerpc/include/asm/mmu_context.h
@@ -45,7 +45,7 @@ extern void set_context(unsigned long id, pgd_t *pgd);
45 45
46#ifdef CONFIG_PPC_BOOK3S_64 46#ifdef CONFIG_PPC_BOOK3S_64
47extern void radix__switch_mmu_context(struct mm_struct *prev, 47extern void radix__switch_mmu_context(struct mm_struct *prev,
48 struct mm_struct *next); 48 struct mm_struct *next);
49static inline void switch_mmu_context(struct mm_struct *prev, 49static inline void switch_mmu_context(struct mm_struct *prev,
50 struct mm_struct *next, 50 struct mm_struct *next,
51 struct task_struct *tsk) 51 struct task_struct *tsk)
@@ -67,6 +67,12 @@ extern void __destroy_context(unsigned long context_id);
67extern void mmu_context_init(void); 67extern void mmu_context_init(void);
68#endif 68#endif
69 69
70#if defined(CONFIG_KVM_BOOK3S_HV_POSSIBLE) && defined(CONFIG_PPC_RADIX_MMU)
71extern void radix_kvm_prefetch_workaround(struct mm_struct *mm);
72#else
73static inline void radix_kvm_prefetch_workaround(struct mm_struct *mm) { }
74#endif
75
70extern void switch_cop(struct mm_struct *next); 76extern void switch_cop(struct mm_struct *next);
71extern int use_cop(unsigned long acop, struct mm_struct *mm); 77extern int use_cop(unsigned long acop, struct mm_struct *mm);
72extern void drop_cop(unsigned long acop, struct mm_struct *mm); 78extern void drop_cop(unsigned long acop, struct mm_struct *mm);
@@ -79,9 +85,13 @@ static inline void switch_mm_irqs_off(struct mm_struct *prev,
79 struct mm_struct *next, 85 struct mm_struct *next,
80 struct task_struct *tsk) 86 struct task_struct *tsk)
81{ 87{
88 bool new_on_cpu = false;
89
82 /* Mark this context has been used on the new CPU */ 90 /* Mark this context has been used on the new CPU */
83 if (!cpumask_test_cpu(smp_processor_id(), mm_cpumask(next))) 91 if (!cpumask_test_cpu(smp_processor_id(), mm_cpumask(next))) {
84 cpumask_set_cpu(smp_processor_id(), mm_cpumask(next)); 92 cpumask_set_cpu(smp_processor_id(), mm_cpumask(next));
93 new_on_cpu = true;
94 }
85 95
86 /* 32-bit keeps track of the current PGDIR in the thread struct */ 96 /* 32-bit keeps track of the current PGDIR in the thread struct */
87#ifdef CONFIG_PPC32 97#ifdef CONFIG_PPC32
@@ -109,6 +119,10 @@ static inline void switch_mm_irqs_off(struct mm_struct *prev,
109 if (cpu_has_feature(CPU_FTR_ALTIVEC)) 119 if (cpu_has_feature(CPU_FTR_ALTIVEC))
110 asm volatile ("dssall"); 120 asm volatile ("dssall");
111#endif /* CONFIG_ALTIVEC */ 121#endif /* CONFIG_ALTIVEC */
122
123 if (new_on_cpu)
124 radix_kvm_prefetch_workaround(next);
125
112 /* 126 /*
113 * The actual HW switching method differs between the various 127 * The actual HW switching method differs between the various
114 * sub architectures. Out of line for now 128 * sub architectures. Out of line for now
diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h
index dd01212935ac..afae9a336136 100644
--- a/arch/powerpc/include/asm/pgtable.h
+++ b/arch/powerpc/include/asm/pgtable.h
@@ -80,6 +80,13 @@ unsigned long vmalloc_to_phys(void *vmalloc_addr);
80 80
81void pgtable_cache_add(unsigned shift, void (*ctor)(void *)); 81void pgtable_cache_add(unsigned shift, void (*ctor)(void *));
82void pgtable_cache_init(void); 82void pgtable_cache_init(void);
83
84#ifdef CONFIG_STRICT_KERNEL_RWX
85void mark_initmem_nx(void);
86#else
87static inline void mark_initmem_nx(void) { }
88#endif
89
83#endif /* __ASSEMBLY__ */ 90#endif /* __ASSEMBLY__ */
84 91
85#endif /* _ASM_POWERPC_PGTABLE_H */ 92#endif /* _ASM_POWERPC_PGTABLE_H */
diff --git a/arch/powerpc/include/uapi/asm/ioctls.h b/arch/powerpc/include/uapi/asm/ioctls.h
index bfd609a3e928..e3b10469f787 100644
--- a/arch/powerpc/include/uapi/asm/ioctls.h
+++ b/arch/powerpc/include/uapi/asm/ioctls.h
@@ -100,7 +100,7 @@
100#define TIOCGPKT _IOR('T', 0x38, int) /* Get packet mode state */ 100#define TIOCGPKT _IOR('T', 0x38, int) /* Get packet mode state */
101#define TIOCGPTLCK _IOR('T', 0x39, int) /* Get Pty lock state */ 101#define TIOCGPTLCK _IOR('T', 0x39, int) /* Get Pty lock state */
102#define TIOCGEXCL _IOR('T', 0x40, int) /* Get exclusive mode state */ 102#define TIOCGEXCL _IOR('T', 0x40, int) /* Get exclusive mode state */
103#define TIOCGPTPEER _IOR('T', 0x41, int) /* Safely open the slave */ 103#define TIOCGPTPEER _IO('T', 0x41) /* Safely open the slave */
104 104
105#define TIOCSERCONFIG 0x5453 105#define TIOCSERCONFIG 0x5453
106#define TIOCSERGWILD 0x5454 106#define TIOCSERGWILD 0x5454
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S
index 49d8422767b4..e925c1c99c71 100644
--- a/arch/powerpc/kernel/entry_64.S
+++ b/arch/powerpc/kernel/entry_64.S
@@ -223,17 +223,27 @@ system_call_exit:
223 andi. r0,r9,(_TIF_SYSCALL_DOTRACE|_TIF_SINGLESTEP|_TIF_USER_WORK_MASK|_TIF_PERSYSCALL_MASK) 223 andi. r0,r9,(_TIF_SYSCALL_DOTRACE|_TIF_SINGLESTEP|_TIF_USER_WORK_MASK|_TIF_PERSYSCALL_MASK)
224 bne- .Lsyscall_exit_work 224 bne- .Lsyscall_exit_work
225 225
226 /* If MSR_FP and MSR_VEC are set in user msr, then no need to restore */ 226 andi. r0,r8,MSR_FP
227 li r7,MSR_FP 227 beq 2f
228#ifdef CONFIG_ALTIVEC 228#ifdef CONFIG_ALTIVEC
229 oris r7,r7,MSR_VEC@h 229 andis. r0,r8,MSR_VEC@h
230 bne 3f
230#endif 231#endif
231 and r0,r8,r7 2322: addi r3,r1,STACK_FRAME_OVERHEAD
232 cmpd r0,r7 233#ifdef CONFIG_PPC_BOOK3S
233 bne .Lsyscall_restore_math 234 li r10,MSR_RI
234.Lsyscall_restore_math_cont: 235 mtmsrd r10,1 /* Restore RI */
236#endif
237 bl restore_math
238#ifdef CONFIG_PPC_BOOK3S
239 li r11,0
240 mtmsrd r11,1
241#endif
242 ld r8,_MSR(r1)
243 ld r3,RESULT(r1)
244 li r11,-MAX_ERRNO
235 245
236 cmpld r3,r11 2463: cmpld r3,r11
237 ld r5,_CCR(r1) 247 ld r5,_CCR(r1)
238 bge- .Lsyscall_error 248 bge- .Lsyscall_error
239.Lsyscall_error_cont: 249.Lsyscall_error_cont:
@@ -267,40 +277,6 @@ END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR)
267 std r5,_CCR(r1) 277 std r5,_CCR(r1)
268 b .Lsyscall_error_cont 278 b .Lsyscall_error_cont
269 279
270.Lsyscall_restore_math:
271 /*
272 * Some initial tests from restore_math to avoid the heavyweight
273 * C code entry and MSR manipulations.
274 */
275 LOAD_REG_IMMEDIATE(r0, MSR_TS_MASK)
276 and. r0,r0,r8
277 bne 1f
278
279 ld r7,PACACURRENT(r13)
280 lbz r0,THREAD+THREAD_LOAD_FP(r7)
281#ifdef CONFIG_ALTIVEC
282 lbz r6,THREAD+THREAD_LOAD_VEC(r7)
283 add r0,r0,r6
284#endif
285 cmpdi r0,0
286 beq .Lsyscall_restore_math_cont
287
2881: addi r3,r1,STACK_FRAME_OVERHEAD
289#ifdef CONFIG_PPC_BOOK3S
290 li r10,MSR_RI
291 mtmsrd r10,1 /* Restore RI */
292#endif
293 bl restore_math
294#ifdef CONFIG_PPC_BOOK3S
295 li r11,0
296 mtmsrd r11,1
297#endif
298 /* Restore volatiles, reload MSR from updated one */
299 ld r8,_MSR(r1)
300 ld r3,RESULT(r1)
301 li r11,-MAX_ERRNO
302 b .Lsyscall_restore_math_cont
303
304/* Traced system call support */ 280/* Traced system call support */
305.Lsyscall_dotrace: 281.Lsyscall_dotrace:
306 bl save_nvgprs 282 bl save_nvgprs
diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
index e6d8354d79ef..f14f3c04ec7e 100644
--- a/arch/powerpc/kernel/exceptions-64s.S
+++ b/arch/powerpc/kernel/exceptions-64s.S
@@ -824,7 +824,7 @@ EXC_COMMON(trap_0b_common, 0xb00, unknown_exception)
824 * r3 volatile parameter and return value for status 824 * r3 volatile parameter and return value for status
825 * r4-r10 volatile input and output value 825 * r4-r10 volatile input and output value
826 * r11 volatile hypercall number and output value 826 * r11 volatile hypercall number and output value
827 * r12 volatile 827 * r12 volatile input and output value
828 * r13-r31 nonvolatile 828 * r13-r31 nonvolatile
829 * LR nonvolatile 829 * LR nonvolatile
830 * CTR volatile 830 * CTR volatile
@@ -834,25 +834,26 @@ EXC_COMMON(trap_0b_common, 0xb00, unknown_exception)
834 * Other registers nonvolatile 834 * Other registers nonvolatile
835 * 835 *
836 * The intersection of volatile registers that don't contain possible 836 * The intersection of volatile registers that don't contain possible
837 * inputs is: r12, cr0, xer, ctr. We may use these as scratch regs 837 * inputs is: cr0, xer, ctr. We may use these as scratch regs upon entry
838 * upon entry without saving. 838 * without saving, though xer is not a good idea to use, as hardware may
839 * interpret some bits so it may be costly to change them.
839 */ 840 */
840#ifdef CONFIG_KVM_BOOK3S_64_HANDLER 841#ifdef CONFIG_KVM_BOOK3S_64_HANDLER
841 /* 842 /*
842 * There is a little bit of juggling to get syscall and hcall 843 * There is a little bit of juggling to get syscall and hcall
843 * working well. Save r10 in ctr to be restored in case it is a 844 * working well. Save r13 in ctr to avoid using SPRG scratch
844 * hcall. 845 * register.
845 * 846 *
846 * Userspace syscalls have already saved the PPR, hcalls must save 847 * Userspace syscalls have already saved the PPR, hcalls must save
847 * it before setting HMT_MEDIUM. 848 * it before setting HMT_MEDIUM.
848 */ 849 */
849#define SYSCALL_KVMTEST \ 850#define SYSCALL_KVMTEST \
850 mr r12,r13; \ 851 mtctr r13; \
851 GET_PACA(r13); \ 852 GET_PACA(r13); \
852 mtctr r10; \ 853 std r10,PACA_EXGEN+EX_R10(r13); \
853 KVMTEST_PR(0xc00); /* uses r10, branch to do_kvm_0xc00_system_call */ \ 854 KVMTEST_PR(0xc00); /* uses r10, branch to do_kvm_0xc00_system_call */ \
854 HMT_MEDIUM; \ 855 HMT_MEDIUM; \
855 mr r9,r12; \ 856 mfctr r9;
856 857
857#else 858#else
858#define SYSCALL_KVMTEST \ 859#define SYSCALL_KVMTEST \
@@ -935,8 +936,8 @@ EXC_VIRT_END(system_call, 0x4c00, 0x100)
935 * This is a hcall, so register convention is as above, with these 936 * This is a hcall, so register convention is as above, with these
936 * differences: 937 * differences:
937 * r13 = PACA 938 * r13 = PACA
938 * r12 = orig r13 939 * ctr = orig r13
939 * ctr = orig r10 940 * orig r10 saved in PACA
940 */ 941 */
941TRAMP_KVM_BEGIN(do_kvm_0xc00) 942TRAMP_KVM_BEGIN(do_kvm_0xc00)
942 /* 943 /*
@@ -944,14 +945,13 @@ TRAMP_KVM_BEGIN(do_kvm_0xc00)
944 * HMT_MEDIUM. That allows the KVM code to save that value into the 945 * HMT_MEDIUM. That allows the KVM code to save that value into the
945 * guest state (it is the guest's PPR value). 946 * guest state (it is the guest's PPR value).
946 */ 947 */
947 OPT_GET_SPR(r0, SPRN_PPR, CPU_FTR_HAS_PPR) 948 OPT_GET_SPR(r10, SPRN_PPR, CPU_FTR_HAS_PPR)
948 HMT_MEDIUM 949 HMT_MEDIUM
949 OPT_SAVE_REG_TO_PACA(PACA_EXGEN+EX_PPR, r0, CPU_FTR_HAS_PPR) 950 OPT_SAVE_REG_TO_PACA(PACA_EXGEN+EX_PPR, r10, CPU_FTR_HAS_PPR)
950 mfctr r10 951 mfctr r10
951 SET_SCRATCH0(r12) 952 SET_SCRATCH0(r10)
952 std r9,PACA_EXGEN+EX_R9(r13) 953 std r9,PACA_EXGEN+EX_R9(r13)
953 mfcr r9 954 mfcr r9
954 std r10,PACA_EXGEN+EX_R10(r13)
955 KVM_HANDLER(PACA_EXGEN, EXC_STD, 0xc00) 955 KVM_HANDLER(PACA_EXGEN, EXC_STD, 0xc00)
956#endif 956#endif
957 957
@@ -1325,10 +1325,18 @@ EXC_VIRT_NONE(0x5800, 0x100)
1325 std r10,PACA_EXGEN+EX_R13(r13); \ 1325 std r10,PACA_EXGEN+EX_R13(r13); \
1326 EXCEPTION_PROLOG_PSERIES_1(soft_nmi_common, _H) 1326 EXCEPTION_PROLOG_PSERIES_1(soft_nmi_common, _H)
1327 1327
1328/*
1329 * Branch to soft_nmi_interrupt using the emergency stack. The emergency
1330 * stack is one that is usable by maskable interrupts so long as MSR_EE
1331 * remains off. It is used for recovery when something has corrupted the
1332 * normal kernel stack, for example. The "soft NMI" must not use the process
1333 * stack because we want irq disabled sections to avoid touching the stack
1334 * at all (other than PMU interrupts), so use the emergency stack for this,
1335 * and run it entirely with interrupts hard disabled.
1336 */
1328EXC_COMMON_BEGIN(soft_nmi_common) 1337EXC_COMMON_BEGIN(soft_nmi_common)
1329 mr r10,r1 1338 mr r10,r1
1330 ld r1,PACAEMERGSP(r13) 1339 ld r1,PACAEMERGSP(r13)
1331 ld r1,PACA_NMI_EMERG_SP(r13)
1332 subi r1,r1,INT_FRAME_SIZE 1340 subi r1,r1,INT_FRAME_SIZE
1333 EXCEPTION_COMMON_NORET_STACK(PACA_EXGEN, 0x900, 1341 EXCEPTION_COMMON_NORET_STACK(PACA_EXGEN, 0x900,
1334 system_reset, soft_nmi_interrupt, 1342 system_reset, soft_nmi_interrupt,
diff --git a/arch/powerpc/kernel/idle_book3s.S b/arch/powerpc/kernel/idle_book3s.S
index 5adb390e773b..e6252c5a57a4 100644
--- a/arch/powerpc/kernel/idle_book3s.S
+++ b/arch/powerpc/kernel/idle_book3s.S
@@ -30,6 +30,7 @@
30 * Use unused space in the interrupt stack to save and restore 30 * Use unused space in the interrupt stack to save and restore
31 * registers for winkle support. 31 * registers for winkle support.
32 */ 32 */
33#define _MMCR0 GPR0
33#define _SDR1 GPR3 34#define _SDR1 GPR3
34#define _PTCR GPR3 35#define _PTCR GPR3
35#define _RPR GPR4 36#define _RPR GPR4
@@ -272,6 +273,14 @@ power_enter_stop:
272 b pnv_wakeup_noloss 273 b pnv_wakeup_noloss
273 274
274.Lhandle_esl_ec_set: 275.Lhandle_esl_ec_set:
276 /*
277 * POWER9 DD2 can incorrectly set PMAO when waking up after a
278 * state-loss idle. Saving and restoring MMCR0 over idle is a
279 * workaround.
280 */
281 mfspr r4,SPRN_MMCR0
282 std r4,_MMCR0(r1)
283
275/* 284/*
276 * Check if the requested state is a deep idle state. 285 * Check if the requested state is a deep idle state.
277 */ 286 */
@@ -450,10 +459,20 @@ ALT_FTR_SECTION_END_IFSET(CPU_FTR_ARCH_300)
450pnv_restore_hyp_resource_arch300: 459pnv_restore_hyp_resource_arch300:
451 /* 460 /*
452 * Workaround for POWER9, if we lost resources, the ERAT 461 * Workaround for POWER9, if we lost resources, the ERAT
453 * might have been mixed up and needs flushing. 462 * might have been mixed up and needs flushing. We also need
463 * to reload MMCR0 (see comment above). We also need to set
464 * then clear bit 60 in MMCRA to ensure the PMU starts running.
454 */ 465 */
455 blt cr3,1f 466 blt cr3,1f
456 PPC_INVALIDATE_ERAT 467 PPC_INVALIDATE_ERAT
468 ld r1,PACAR1(r13)
469 mfspr r4,SPRN_MMCRA
470 ori r4,r4,(1 << (63-60))
471 mtspr SPRN_MMCRA,r4
472 xori r4,r4,(1 << (63-60))
473 mtspr SPRN_MMCRA,r4
474 ld r4,_MMCR0(r1)
475 mtspr SPRN_MMCR0,r4
4571: 4761:
458 /* 477 /*
459 * POWER ISA 3. Use PSSCR to determine if we 478 * POWER ISA 3. Use PSSCR to determine if we
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c
index 0bcec745a672..f291f7826abc 100644
--- a/arch/powerpc/kernel/irq.c
+++ b/arch/powerpc/kernel/irq.c
@@ -145,6 +145,19 @@ notrace unsigned int __check_irq_replay(void)
145 145
146 /* Clear bit 0 which we wouldn't clear otherwise */ 146 /* Clear bit 0 which we wouldn't clear otherwise */
147 local_paca->irq_happened &= ~PACA_IRQ_HARD_DIS; 147 local_paca->irq_happened &= ~PACA_IRQ_HARD_DIS;
148 if (happened & PACA_IRQ_HARD_DIS) {
149 /*
150 * We may have missed a decrementer interrupt if hard disabled.
151 * Check the decrementer register in case we had a rollover
152 * while hard disabled.
153 */
154 if (!(happened & PACA_IRQ_DEC)) {
155 if (decrementer_check_overflow()) {
156 local_paca->irq_happened |= PACA_IRQ_DEC;
157 happened |= PACA_IRQ_DEC;
158 }
159 }
160 }
148 161
149 /* 162 /*
150 * Force the delivery of pending soft-disabled interrupts on PS3. 163 * Force the delivery of pending soft-disabled interrupts on PS3.
@@ -170,7 +183,7 @@ notrace unsigned int __check_irq_replay(void)
170 * in case we also had a rollover while hard disabled 183 * in case we also had a rollover while hard disabled
171 */ 184 */
172 local_paca->irq_happened &= ~PACA_IRQ_DEC; 185 local_paca->irq_happened &= ~PACA_IRQ_DEC;
173 if ((happened & PACA_IRQ_DEC) || decrementer_check_overflow()) 186 if (happened & PACA_IRQ_DEC)
174 return 0x900; 187 return 0x900;
175 188
176 /* Finally check if an external interrupt happened */ 189 /* Finally check if an external interrupt happened */
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c
index 9f3e2c932dcc..1f0fd361e09b 100644
--- a/arch/powerpc/kernel/process.c
+++ b/arch/powerpc/kernel/process.c
@@ -362,7 +362,8 @@ void enable_kernel_vsx(void)
362 362
363 cpumsr = msr_check_and_set(MSR_FP|MSR_VEC|MSR_VSX); 363 cpumsr = msr_check_and_set(MSR_FP|MSR_VEC|MSR_VSX);
364 364
365 if (current->thread.regs && (current->thread.regs->msr & MSR_VSX)) { 365 if (current->thread.regs &&
366 (current->thread.regs->msr & (MSR_VSX|MSR_VEC|MSR_FP))) {
366 check_if_tm_restore_required(current); 367 check_if_tm_restore_required(current);
367 /* 368 /*
368 * If a thread has already been reclaimed then the 369 * If a thread has already been reclaimed then the
@@ -386,7 +387,7 @@ void flush_vsx_to_thread(struct task_struct *tsk)
386{ 387{
387 if (tsk->thread.regs) { 388 if (tsk->thread.regs) {
388 preempt_disable(); 389 preempt_disable();
389 if (tsk->thread.regs->msr & MSR_VSX) { 390 if (tsk->thread.regs->msr & (MSR_VSX|MSR_VEC|MSR_FP)) {
390 BUG_ON(tsk != current); 391 BUG_ON(tsk != current);
391 giveup_vsx(tsk); 392 giveup_vsx(tsk);
392 } 393 }
@@ -511,10 +512,6 @@ void restore_math(struct pt_regs *regs)
511{ 512{
512 unsigned long msr; 513 unsigned long msr;
513 514
514 /*
515 * Syscall exit makes a similar initial check before branching
516 * to restore_math. Keep them in synch.
517 */
518 if (!msr_tm_active(regs->msr) && 515 if (!msr_tm_active(regs->msr) &&
519 !current->thread.load_fp && !loadvec(current->thread)) 516 !current->thread.load_fp && !loadvec(current->thread))
520 return; 517 return;
diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c
index 925a4ef90559..660ed39e9c9a 100644
--- a/arch/powerpc/kernel/ptrace.c
+++ b/arch/powerpc/kernel/ptrace.c
@@ -127,12 +127,19 @@ static void flush_tmregs_to_thread(struct task_struct *tsk)
127 * If task is not current, it will have been flushed already to 127 * If task is not current, it will have been flushed already to
128 * it's thread_struct during __switch_to(). 128 * it's thread_struct during __switch_to().
129 * 129 *
130 * A reclaim flushes ALL the state. 130 * A reclaim flushes ALL the state or if not in TM save TM SPRs
131 * in the appropriate thread structures from live.
131 */ 132 */
132 133
133 if (tsk == current && MSR_TM_SUSPENDED(mfmsr())) 134 if (tsk != current)
134 tm_reclaim_current(TM_CAUSE_SIGNAL); 135 return;
135 136
137 if (MSR_TM_SUSPENDED(mfmsr())) {
138 tm_reclaim_current(TM_CAUSE_SIGNAL);
139 } else {
140 tm_enable();
141 tm_save_sprs(&(tsk->thread));
142 }
136} 143}
137#else 144#else
138static inline void flush_tmregs_to_thread(struct task_struct *tsk) { } 145static inline void flush_tmregs_to_thread(struct task_struct *tsk) { }
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
index 997c88d54acf..8d3320562c70 100644
--- a/arch/powerpc/kernel/smp.c
+++ b/arch/powerpc/kernel/smp.c
@@ -351,7 +351,7 @@ static void nmi_ipi_lock_start(unsigned long *flags)
351 hard_irq_disable(); 351 hard_irq_disable();
352 while (atomic_cmpxchg(&__nmi_ipi_lock, 0, 1) == 1) { 352 while (atomic_cmpxchg(&__nmi_ipi_lock, 0, 1) == 1) {
353 raw_local_irq_restore(*flags); 353 raw_local_irq_restore(*flags);
354 cpu_relax(); 354 spin_until_cond(atomic_read(&__nmi_ipi_lock) == 0);
355 raw_local_irq_save(*flags); 355 raw_local_irq_save(*flags);
356 hard_irq_disable(); 356 hard_irq_disable();
357 } 357 }
@@ -360,7 +360,7 @@ static void nmi_ipi_lock_start(unsigned long *flags)
360static void nmi_ipi_lock(void) 360static void nmi_ipi_lock(void)
361{ 361{
362 while (atomic_cmpxchg(&__nmi_ipi_lock, 0, 1) == 1) 362 while (atomic_cmpxchg(&__nmi_ipi_lock, 0, 1) == 1)
363 cpu_relax(); 363 spin_until_cond(atomic_read(&__nmi_ipi_lock) == 0);
364} 364}
365 365
366static void nmi_ipi_unlock(void) 366static void nmi_ipi_unlock(void)
@@ -475,7 +475,7 @@ int smp_send_nmi_ipi(int cpu, void (*fn)(struct pt_regs *), u64 delay_us)
475 nmi_ipi_lock_start(&flags); 475 nmi_ipi_lock_start(&flags);
476 while (nmi_ipi_busy_count) { 476 while (nmi_ipi_busy_count) {
477 nmi_ipi_unlock_end(&flags); 477 nmi_ipi_unlock_end(&flags);
478 cpu_relax(); 478 spin_until_cond(nmi_ipi_busy_count == 0);
479 nmi_ipi_lock_start(&flags); 479 nmi_ipi_lock_start(&flags);
480 } 480 }
481 481
@@ -1003,21 +1003,13 @@ static struct sched_domain_topology_level powerpc_topology[] = {
1003 { NULL, }, 1003 { NULL, },
1004}; 1004};
1005 1005
1006static __init long smp_setup_cpu_workfn(void *data __always_unused)
1007{
1008 smp_ops->setup_cpu(boot_cpuid);
1009 return 0;
1010}
1011
1012void __init smp_cpus_done(unsigned int max_cpus) 1006void __init smp_cpus_done(unsigned int max_cpus)
1013{ 1007{
1014 /* 1008 /*
1015 * We want the setup_cpu() here to be called on the boot CPU, but 1009 * We are running pinned to the boot CPU, see rest_init().
1016 * init might run on any CPU, so make sure it's invoked on the boot
1017 * CPU.
1018 */ 1010 */
1019 if (smp_ops && smp_ops->setup_cpu) 1011 if (smp_ops && smp_ops->setup_cpu)
1020 work_on_cpu_safe(boot_cpuid, smp_setup_cpu_workfn, NULL); 1012 smp_ops->setup_cpu(boot_cpuid);
1021 1013
1022 if (smp_ops && smp_ops->bringup_done) 1014 if (smp_ops && smp_ops->bringup_done)
1023 smp_ops->bringup_done(); 1015 smp_ops->bringup_done();
diff --git a/arch/powerpc/kernel/watchdog.c b/arch/powerpc/kernel/watchdog.c
index b67f8b03a32d..34721a257a77 100644
--- a/arch/powerpc/kernel/watchdog.c
+++ b/arch/powerpc/kernel/watchdog.c
@@ -71,15 +71,20 @@ static inline void wd_smp_lock(unsigned long *flags)
71 * This may be called from low level interrupt handlers at some 71 * This may be called from low level interrupt handlers at some
72 * point in future. 72 * point in future.
73 */ 73 */
74 local_irq_save(*flags); 74 raw_local_irq_save(*flags);
75 while (unlikely(test_and_set_bit_lock(0, &__wd_smp_lock))) 75 hard_irq_disable(); /* Make it soft-NMI safe */
76 cpu_relax(); 76 while (unlikely(test_and_set_bit_lock(0, &__wd_smp_lock))) {
77 raw_local_irq_restore(*flags);
78 spin_until_cond(!test_bit(0, &__wd_smp_lock));
79 raw_local_irq_save(*flags);
80 hard_irq_disable();
81 }
77} 82}
78 83
79static inline void wd_smp_unlock(unsigned long *flags) 84static inline void wd_smp_unlock(unsigned long *flags)
80{ 85{
81 clear_bit_unlock(0, &__wd_smp_lock); 86 clear_bit_unlock(0, &__wd_smp_lock);
82 local_irq_restore(*flags); 87 raw_local_irq_restore(*flags);
83} 88}
84 89
85static void wd_lockup_ipi(struct pt_regs *regs) 90static void wd_lockup_ipi(struct pt_regs *regs)
@@ -96,10 +101,10 @@ static void wd_lockup_ipi(struct pt_regs *regs)
96 nmi_panic(regs, "Hard LOCKUP"); 101 nmi_panic(regs, "Hard LOCKUP");
97} 102}
98 103
99static void set_cpu_stuck(int cpu, u64 tb) 104static void set_cpumask_stuck(const struct cpumask *cpumask, u64 tb)
100{ 105{
101 cpumask_set_cpu(cpu, &wd_smp_cpus_stuck); 106 cpumask_or(&wd_smp_cpus_stuck, &wd_smp_cpus_stuck, cpumask);
102 cpumask_clear_cpu(cpu, &wd_smp_cpus_pending); 107 cpumask_andnot(&wd_smp_cpus_pending, &wd_smp_cpus_pending, cpumask);
103 if (cpumask_empty(&wd_smp_cpus_pending)) { 108 if (cpumask_empty(&wd_smp_cpus_pending)) {
104 wd_smp_last_reset_tb = tb; 109 wd_smp_last_reset_tb = tb;
105 cpumask_andnot(&wd_smp_cpus_pending, 110 cpumask_andnot(&wd_smp_cpus_pending,
@@ -107,6 +112,10 @@ static void set_cpu_stuck(int cpu, u64 tb)
107 &wd_smp_cpus_stuck); 112 &wd_smp_cpus_stuck);
108 } 113 }
109} 114}
115static void set_cpu_stuck(int cpu, u64 tb)
116{
117 set_cpumask_stuck(cpumask_of(cpu), tb);
118}
110 119
111static void watchdog_smp_panic(int cpu, u64 tb) 120static void watchdog_smp_panic(int cpu, u64 tb)
112{ 121{
@@ -135,11 +144,9 @@ static void watchdog_smp_panic(int cpu, u64 tb)
135 } 144 }
136 smp_flush_nmi_ipi(1000000); 145 smp_flush_nmi_ipi(1000000);
137 146
138 /* Take the stuck CPU out of the watch group */ 147 /* Take the stuck CPUs out of the watch group */
139 for_each_cpu(c, &wd_smp_cpus_pending) 148 set_cpumask_stuck(&wd_smp_cpus_pending, tb);
140 set_cpu_stuck(c, tb);
141 149
142out:
143 wd_smp_unlock(&flags); 150 wd_smp_unlock(&flags);
144 151
145 printk_safe_flush(); 152 printk_safe_flush();
@@ -152,6 +159,11 @@ out:
152 159
153 if (hardlockup_panic) 160 if (hardlockup_panic)
154 nmi_panic(NULL, "Hard LOCKUP"); 161 nmi_panic(NULL, "Hard LOCKUP");
162
163 return;
164
165out:
166 wd_smp_unlock(&flags);
155} 167}
156 168
157static void wd_smp_clear_cpu_pending(int cpu, u64 tb) 169static void wd_smp_clear_cpu_pending(int cpu, u64 tb)
@@ -258,9 +270,11 @@ static void wd_timer_fn(unsigned long data)
258 270
259void arch_touch_nmi_watchdog(void) 271void arch_touch_nmi_watchdog(void)
260{ 272{
273 unsigned long ticks = tb_ticks_per_usec * wd_timer_period_ms * 1000;
261 int cpu = smp_processor_id(); 274 int cpu = smp_processor_id();
262 275
263 watchdog_timer_interrupt(cpu); 276 if (get_tb() - per_cpu(wd_timer_tb, cpu) >= ticks)
277 watchdog_timer_interrupt(cpu);
264} 278}
265EXPORT_SYMBOL(arch_touch_nmi_watchdog); 279EXPORT_SYMBOL(arch_touch_nmi_watchdog);
266 280
@@ -283,6 +297,8 @@ static void stop_watchdog_timer_on(unsigned int cpu)
283 297
284static int start_wd_on_cpu(unsigned int cpu) 298static int start_wd_on_cpu(unsigned int cpu)
285{ 299{
300 unsigned long flags;
301
286 if (cpumask_test_cpu(cpu, &wd_cpus_enabled)) { 302 if (cpumask_test_cpu(cpu, &wd_cpus_enabled)) {
287 WARN_ON(1); 303 WARN_ON(1);
288 return 0; 304 return 0;
@@ -297,12 +313,14 @@ static int start_wd_on_cpu(unsigned int cpu)
297 if (!cpumask_test_cpu(cpu, &watchdog_cpumask)) 313 if (!cpumask_test_cpu(cpu, &watchdog_cpumask))
298 return 0; 314 return 0;
299 315
316 wd_smp_lock(&flags);
300 cpumask_set_cpu(cpu, &wd_cpus_enabled); 317 cpumask_set_cpu(cpu, &wd_cpus_enabled);
301 if (cpumask_weight(&wd_cpus_enabled) == 1) { 318 if (cpumask_weight(&wd_cpus_enabled) == 1) {
302 cpumask_set_cpu(cpu, &wd_smp_cpus_pending); 319 cpumask_set_cpu(cpu, &wd_smp_cpus_pending);
303 wd_smp_last_reset_tb = get_tb(); 320 wd_smp_last_reset_tb = get_tb();
304 } 321 }
305 smp_wmb(); 322 wd_smp_unlock(&flags);
323
306 start_watchdog_timer_on(cpu); 324 start_watchdog_timer_on(cpu);
307 325
308 return 0; 326 return 0;
@@ -310,12 +328,17 @@ static int start_wd_on_cpu(unsigned int cpu)
310 328
311static int stop_wd_on_cpu(unsigned int cpu) 329static int stop_wd_on_cpu(unsigned int cpu)
312{ 330{
331 unsigned long flags;
332
313 if (!cpumask_test_cpu(cpu, &wd_cpus_enabled)) 333 if (!cpumask_test_cpu(cpu, &wd_cpus_enabled))
314 return 0; /* Can happen in CPU unplug case */ 334 return 0; /* Can happen in CPU unplug case */
315 335
316 stop_watchdog_timer_on(cpu); 336 stop_watchdog_timer_on(cpu);
317 337
338 wd_smp_lock(&flags);
318 cpumask_clear_cpu(cpu, &wd_cpus_enabled); 339 cpumask_clear_cpu(cpu, &wd_cpus_enabled);
340 wd_smp_unlock(&flags);
341
319 wd_smp_clear_cpu_pending(cpu, get_tb()); 342 wd_smp_clear_cpu_pending(cpu, get_tb());
320 343
321 return 0; 344 return 0;
diff --git a/arch/powerpc/kvm/book3s_64_mmu_hv.c b/arch/powerpc/kvm/book3s_64_mmu_hv.c
index 8cb0190e2a73..b42812e014c0 100644
--- a/arch/powerpc/kvm/book3s_64_mmu_hv.c
+++ b/arch/powerpc/kvm/book3s_64_mmu_hv.c
@@ -164,8 +164,10 @@ long kvmppc_alloc_reset_hpt(struct kvm *kvm, int order)
164 goto out; 164 goto out;
165 } 165 }
166 166
167 if (kvm->arch.hpt.virt) 167 if (kvm->arch.hpt.virt) {
168 kvmppc_free_hpt(&kvm->arch.hpt); 168 kvmppc_free_hpt(&kvm->arch.hpt);
169 kvmppc_rmap_reset(kvm);
170 }
169 171
170 err = kvmppc_allocate_hpt(&info, order); 172 err = kvmppc_allocate_hpt(&info, order);
171 if (err < 0) 173 if (err < 0)
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c
index 0b436df746fc..359c79cdf0cc 100644
--- a/arch/powerpc/kvm/book3s_hv.c
+++ b/arch/powerpc/kvm/book3s_hv.c
@@ -3211,6 +3211,8 @@ static int kvmppc_vcpu_run_hv(struct kvm_run *run, struct kvm_vcpu *vcpu)
3211 run->fail_entry.hardware_entry_failure_reason = 0; 3211 run->fail_entry.hardware_entry_failure_reason = 0;
3212 return -EINVAL; 3212 return -EINVAL;
3213 } 3213 }
3214 /* Enable TM so we can read the TM SPRs */
3215 mtmsr(mfmsr() | MSR_TM);
3214 current->thread.tm_tfhar = mfspr(SPRN_TFHAR); 3216 current->thread.tm_tfhar = mfspr(SPRN_TFHAR);
3215 current->thread.tm_tfiar = mfspr(SPRN_TFIAR); 3217 current->thread.tm_tfiar = mfspr(SPRN_TFIAR);
3216 current->thread.tm_texasr = mfspr(SPRN_TEXASR); 3218 current->thread.tm_texasr = mfspr(SPRN_TEXASR);
diff --git a/arch/powerpc/kvm/book3s_hv_rmhandlers.S b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
index cb44065e2946..c52184a8efdf 100644
--- a/arch/powerpc/kvm/book3s_hv_rmhandlers.S
+++ b/arch/powerpc/kvm/book3s_hv_rmhandlers.S
@@ -1443,12 +1443,14 @@ mc_cont:
1443 ori r6,r6,1 1443 ori r6,r6,1
1444 mtspr SPRN_CTRLT,r6 1444 mtspr SPRN_CTRLT,r6
14454: 14454:
1446 /* Read the guest SLB and save it away */ 1446 /* Check if we are running hash or radix and store it in cr2 */
1447 ld r5, VCPU_KVM(r9) 1447 ld r5, VCPU_KVM(r9)
1448 lbz r0, KVM_RADIX(r5) 1448 lbz r0, KVM_RADIX(r5)
1449 cmpwi r0, 0 1449 cmpwi cr2,r0,0
1450
1451 /* Read the guest SLB and save it away */
1450 li r5, 0 1452 li r5, 0
1451 bne 3f /* for radix, save 0 entries */ 1453 bne cr2, 3f /* for radix, save 0 entries */
1452 lwz r0,VCPU_SLB_NR(r9) /* number of entries in SLB */ 1454 lwz r0,VCPU_SLB_NR(r9) /* number of entries in SLB */
1453 mtctr r0 1455 mtctr r0
1454 li r6,0 1456 li r6,0
@@ -1712,11 +1714,6 @@ BEGIN_FTR_SECTION_NESTED(96)
1712END_FTR_SECTION_NESTED(CPU_FTR_ARCH_300, 0, 96) 1714END_FTR_SECTION_NESTED(CPU_FTR_ARCH_300, 0, 96)
1713END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S) 1715END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S)
171422: 171622:
1715 /* Clear out SLB */
1716 li r5,0
1717 slbmte r5,r5
1718 slbia
1719 ptesync
1720 1717
1721 /* Restore host values of some registers */ 1718 /* Restore host values of some registers */
1722BEGIN_FTR_SECTION 1719BEGIN_FTR_SECTION
@@ -1737,10 +1734,56 @@ BEGIN_FTR_SECTION
1737 mtspr SPRN_PID, r7 1734 mtspr SPRN_PID, r7
1738 mtspr SPRN_IAMR, r8 1735 mtspr SPRN_IAMR, r8
1739END_FTR_SECTION_IFSET(CPU_FTR_ARCH_300) 1736END_FTR_SECTION_IFSET(CPU_FTR_ARCH_300)
1737
1738#ifdef CONFIG_PPC_RADIX_MMU
1739 /*
1740 * Are we running hash or radix ?
1741 */
1742 beq cr2,3f
1743
1744 /* Radix: Handle the case where the guest used an illegal PID */
1745 LOAD_REG_ADDR(r4, mmu_base_pid)
1746 lwz r3, VCPU_GUEST_PID(r9)
1747 lwz r5, 0(r4)
1748 cmpw cr0,r3,r5
1749 blt 2f
1750
1751 /*
1752 * Illegal PID, the HW might have prefetched and cached in the TLB
1753 * some translations for the LPID 0 / guest PID combination which
1754 * Linux doesn't know about, so we need to flush that PID out of
1755 * the TLB. First we need to set LPIDR to 0 so tlbiel applies to
1756 * the right context.
1757 */
1758 li r0,0
1759 mtspr SPRN_LPID,r0
1760 isync
1761
1762 /* Then do a congruence class local flush */
1763 ld r6,VCPU_KVM(r9)
1764 lwz r0,KVM_TLB_SETS(r6)
1765 mtctr r0
1766 li r7,0x400 /* IS field = 0b01 */
1767 ptesync
1768 sldi r0,r3,32 /* RS has PID */
17691: PPC_TLBIEL(7,0,2,1,1) /* RIC=2, PRS=1, R=1 */
1770 addi r7,r7,0x1000
1771 bdnz 1b
1772 ptesync
1773
17742: /* Flush the ERAT on radix P9 DD1 guest exit */
1740BEGIN_FTR_SECTION 1775BEGIN_FTR_SECTION
1741 PPC_INVALIDATE_ERAT 1776 PPC_INVALIDATE_ERAT
1742END_FTR_SECTION_IFSET(CPU_FTR_POWER9_DD1) 1777END_FTR_SECTION_IFSET(CPU_FTR_POWER9_DD1)
1778 b 4f
1779#endif /* CONFIG_PPC_RADIX_MMU */
1743 1780
1781 /* Hash: clear out SLB */
17823: li r5,0
1783 slbmte r5,r5
1784 slbia
1785 ptesync
17864:
1744 /* 1787 /*
1745 * POWER7/POWER8 guest -> host partition switch code. 1788 * POWER7/POWER8 guest -> host partition switch code.
1746 * We don't have to lock against tlbies but we do 1789 * We don't have to lock against tlbies but we do
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c
index 8541f18694a4..46b4e67d2372 100644
--- a/arch/powerpc/mm/mem.c
+++ b/arch/powerpc/mm/mem.c
@@ -402,6 +402,7 @@ void __init mem_init(void)
402void free_initmem(void) 402void free_initmem(void)
403{ 403{
404 ppc_md.progress = ppc_printk_progress; 404 ppc_md.progress = ppc_printk_progress;
405 mark_initmem_nx();
405 free_initmem_default(POISON_FREE_INITMEM); 406 free_initmem_default(POISON_FREE_INITMEM);
406} 407}
407 408
diff --git a/arch/powerpc/mm/mmu_context_book3s64.c b/arch/powerpc/mm/mmu_context_book3s64.c
index abed1fe6992f..a75f63833284 100644
--- a/arch/powerpc/mm/mmu_context_book3s64.c
+++ b/arch/powerpc/mm/mmu_context_book3s64.c
@@ -126,9 +126,10 @@ static int hash__init_new_context(struct mm_struct *mm)
126static int radix__init_new_context(struct mm_struct *mm) 126static int radix__init_new_context(struct mm_struct *mm)
127{ 127{
128 unsigned long rts_field; 128 unsigned long rts_field;
129 int index; 129 int index, max_id;
130 130
131 index = alloc_context_id(1, PRTB_ENTRIES - 1); 131 max_id = (1 << mmu_pid_bits) - 1;
132 index = alloc_context_id(mmu_base_pid, max_id);
132 if (index < 0) 133 if (index < 0)
133 return index; 134 return index;
134 135
diff --git a/arch/powerpc/mm/pgtable-hash64.c b/arch/powerpc/mm/pgtable-hash64.c
index 188b4107584d..443a2c66a304 100644
--- a/arch/powerpc/mm/pgtable-hash64.c
+++ b/arch/powerpc/mm/pgtable-hash64.c
@@ -425,33 +425,51 @@ int hash__has_transparent_hugepage(void)
425#endif /* CONFIG_TRANSPARENT_HUGEPAGE */ 425#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
426 426
427#ifdef CONFIG_STRICT_KERNEL_RWX 427#ifdef CONFIG_STRICT_KERNEL_RWX
428void hash__mark_rodata_ro(void) 428static bool hash__change_memory_range(unsigned long start, unsigned long end,
429 unsigned long newpp)
429{ 430{
430 unsigned long start = (unsigned long)_stext;
431 unsigned long end = (unsigned long)__init_begin;
432 unsigned long idx; 431 unsigned long idx;
433 unsigned int step, shift; 432 unsigned int step, shift;
434 unsigned long newpp = PP_RXXX;
435 433
436 shift = mmu_psize_defs[mmu_linear_psize].shift; 434 shift = mmu_psize_defs[mmu_linear_psize].shift;
437 step = 1 << shift; 435 step = 1 << shift;
438 436
439 start = ((start + step - 1) >> shift) << shift; 437 start = ALIGN_DOWN(start, step);
440 end = (end >> shift) << shift; 438 end = ALIGN(end, step); // aligns up
441 439
442 pr_devel("marking ro start %lx, end %lx, step %x\n", 440 if (start >= end)
443 start, end, step); 441 return false;
444 442
445 if (start == end) { 443 pr_debug("Changing page protection on range 0x%lx-0x%lx, to 0x%lx, step 0x%x\n",
446 pr_warn("could not set rodata ro, relocate the start" 444 start, end, newpp, step);
447 " of the kernel to a 0x%x boundary\n", step);
448 return;
449 }
450 445
451 for (idx = start; idx < end; idx += step) 446 for (idx = start; idx < end; idx += step)
452 /* Not sure if we can do much with the return value */ 447 /* Not sure if we can do much with the return value */
453 mmu_hash_ops.hpte_updateboltedpp(newpp, idx, mmu_linear_psize, 448 mmu_hash_ops.hpte_updateboltedpp(newpp, idx, mmu_linear_psize,
454 mmu_kernel_ssize); 449 mmu_kernel_ssize);
455 450
451 return true;
452}
453
454void hash__mark_rodata_ro(void)
455{
456 unsigned long start, end;
457
458 start = (unsigned long)_stext;
459 end = (unsigned long)__init_begin;
460
461 WARN_ON(!hash__change_memory_range(start, end, PP_RXXX));
462}
463
464void hash__mark_initmem_nx(void)
465{
466 unsigned long start, end, pp;
467
468 start = (unsigned long)__init_begin;
469 end = (unsigned long)__init_end;
470
471 pp = htab_convert_pte_flags(pgprot_val(PAGE_KERNEL));
472
473 WARN_ON(!hash__change_memory_range(start, end, pp));
456} 474}
457#endif 475#endif
diff --git a/arch/powerpc/mm/pgtable-radix.c b/arch/powerpc/mm/pgtable-radix.c
index 8c13e4282308..671a45d86c18 100644
--- a/arch/powerpc/mm/pgtable-radix.c
+++ b/arch/powerpc/mm/pgtable-radix.c
@@ -25,6 +25,9 @@
25 25
26#include <trace/events/thp.h> 26#include <trace/events/thp.h>
27 27
28unsigned int mmu_pid_bits;
29unsigned int mmu_base_pid;
30
28static int native_register_process_table(unsigned long base, unsigned long pg_sz, 31static int native_register_process_table(unsigned long base, unsigned long pg_sz,
29 unsigned long table_size) 32 unsigned long table_size)
30{ 33{
@@ -112,10 +115,9 @@ set_the_pte:
112} 115}
113 116
114#ifdef CONFIG_STRICT_KERNEL_RWX 117#ifdef CONFIG_STRICT_KERNEL_RWX
115void radix__mark_rodata_ro(void) 118void radix__change_memory_range(unsigned long start, unsigned long end,
119 unsigned long clear)
116{ 120{
117 unsigned long start = (unsigned long)_stext;
118 unsigned long end = (unsigned long)__init_begin;
119 unsigned long idx; 121 unsigned long idx;
120 pgd_t *pgdp; 122 pgd_t *pgdp;
121 pud_t *pudp; 123 pud_t *pudp;
@@ -125,7 +127,8 @@ void radix__mark_rodata_ro(void)
125 start = ALIGN_DOWN(start, PAGE_SIZE); 127 start = ALIGN_DOWN(start, PAGE_SIZE);
126 end = PAGE_ALIGN(end); // aligns up 128 end = PAGE_ALIGN(end); // aligns up
127 129
128 pr_devel("marking ro start %lx, end %lx\n", start, end); 130 pr_debug("Changing flags on range %lx-%lx removing 0x%lx\n",
131 start, end, clear);
129 132
130 for (idx = start; idx < end; idx += PAGE_SIZE) { 133 for (idx = start; idx < end; idx += PAGE_SIZE) {
131 pgdp = pgd_offset_k(idx); 134 pgdp = pgd_offset_k(idx);
@@ -147,11 +150,29 @@ void radix__mark_rodata_ro(void)
147 if (!ptep) 150 if (!ptep)
148 continue; 151 continue;
149update_the_pte: 152update_the_pte:
150 radix__pte_update(&init_mm, idx, ptep, _PAGE_WRITE, 0, 0); 153 radix__pte_update(&init_mm, idx, ptep, clear, 0, 0);
151 } 154 }
152 155
153 radix__flush_tlb_kernel_range(start, end); 156 radix__flush_tlb_kernel_range(start, end);
154} 157}
158
159void radix__mark_rodata_ro(void)
160{
161 unsigned long start, end;
162
163 start = (unsigned long)_stext;
164 end = (unsigned long)__init_begin;
165
166 radix__change_memory_range(start, end, _PAGE_WRITE);
167}
168
169void radix__mark_initmem_nx(void)
170{
171 unsigned long start = (unsigned long)__init_begin;
172 unsigned long end = (unsigned long)__init_end;
173
174 radix__change_memory_range(start, end, _PAGE_EXEC);
175}
155#endif /* CONFIG_STRICT_KERNEL_RWX */ 176#endif /* CONFIG_STRICT_KERNEL_RWX */
156 177
157static inline void __meminit print_mapping(unsigned long start, 178static inline void __meminit print_mapping(unsigned long start,
@@ -243,11 +264,34 @@ static void __init radix_init_pgtable(void)
243 for_each_memblock(memory, reg) 264 for_each_memblock(memory, reg)
244 WARN_ON(create_physical_mapping(reg->base, 265 WARN_ON(create_physical_mapping(reg->base,
245 reg->base + reg->size)); 266 reg->base + reg->size));
267
268 /* Find out how many PID bits are supported */
269 if (cpu_has_feature(CPU_FTR_HVMODE)) {
270 if (!mmu_pid_bits)
271 mmu_pid_bits = 20;
272#ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE
273 /*
274 * When KVM is possible, we only use the top half of the
275 * PID space to avoid collisions between host and guest PIDs
276 * which can cause problems due to prefetch when exiting the
277 * guest with AIL=3
278 */
279 mmu_base_pid = 1 << (mmu_pid_bits - 1);
280#else
281 mmu_base_pid = 1;
282#endif
283 } else {
284 /* The guest uses the bottom half of the PID space */
285 if (!mmu_pid_bits)
286 mmu_pid_bits = 19;
287 mmu_base_pid = 1;
288 }
289
246 /* 290 /*
247 * Allocate Partition table and process table for the 291 * Allocate Partition table and process table for the
248 * host. 292 * host.
249 */ 293 */
250 BUILD_BUG_ON_MSG((PRTB_SIZE_SHIFT > 36), "Process table size too large."); 294 BUG_ON(PRTB_SIZE_SHIFT > 36);
251 process_tb = early_alloc_pgtable(1UL << PRTB_SIZE_SHIFT); 295 process_tb = early_alloc_pgtable(1UL << PRTB_SIZE_SHIFT);
252 /* 296 /*
253 * Fill in the process table. 297 * Fill in the process table.
@@ -321,6 +365,12 @@ static int __init radix_dt_scan_page_sizes(unsigned long node,
321 if (type == NULL || strcmp(type, "cpu") != 0) 365 if (type == NULL || strcmp(type, "cpu") != 0)
322 return 0; 366 return 0;
323 367
368 /* Find MMU PID size */
369 prop = of_get_flat_dt_prop(node, "ibm,mmu-pid-bits", &size);
370 if (prop && size == 4)
371 mmu_pid_bits = be32_to_cpup(prop);
372
373 /* Grab page size encodings */
324 prop = of_get_flat_dt_prop(node, "ibm,processor-radix-AP-encodings", &size); 374 prop = of_get_flat_dt_prop(node, "ibm,processor-radix-AP-encodings", &size);
325 if (!prop) 375 if (!prop)
326 return 0; 376 return 0;
diff --git a/arch/powerpc/mm/pgtable_64.c b/arch/powerpc/mm/pgtable_64.c
index 5c0b795d656c..0736e94c7615 100644
--- a/arch/powerpc/mm/pgtable_64.c
+++ b/arch/powerpc/mm/pgtable_64.c
@@ -505,4 +505,12 @@ void mark_rodata_ro(void)
505 else 505 else
506 hash__mark_rodata_ro(); 506 hash__mark_rodata_ro();
507} 507}
508
509void mark_initmem_nx(void)
510{
511 if (radix_enabled())
512 radix__mark_initmem_nx();
513 else
514 hash__mark_initmem_nx();
515}
508#endif 516#endif
diff --git a/arch/powerpc/mm/subpage-prot.c b/arch/powerpc/mm/subpage-prot.c
index e94fbd4c8845..781532d7bc4d 100644
--- a/arch/powerpc/mm/subpage-prot.c
+++ b/arch/powerpc/mm/subpage-prot.c
@@ -36,7 +36,7 @@ void subpage_prot_free(struct mm_struct *mm)
36 } 36 }
37 } 37 }
38 addr = 0; 38 addr = 0;
39 for (i = 0; i < 2; ++i) { 39 for (i = 0; i < (TASK_SIZE_USER64 >> 43); ++i) {
40 p = spt->protptrs[i]; 40 p = spt->protptrs[i];
41 if (!p) 41 if (!p)
42 continue; 42 continue;
diff --git a/arch/powerpc/mm/tlb-radix.c b/arch/powerpc/mm/tlb-radix.c
index 744e0164ecf5..16ae1bbe13f0 100644
--- a/arch/powerpc/mm/tlb-radix.c
+++ b/arch/powerpc/mm/tlb-radix.c
@@ -12,12 +12,12 @@
12#include <linux/mm.h> 12#include <linux/mm.h>
13#include <linux/hugetlb.h> 13#include <linux/hugetlb.h>
14#include <linux/memblock.h> 14#include <linux/memblock.h>
15#include <asm/ppc-opcode.h>
16 15
16#include <asm/ppc-opcode.h>
17#include <asm/tlb.h> 17#include <asm/tlb.h>
18#include <asm/tlbflush.h> 18#include <asm/tlbflush.h>
19#include <asm/trace.h> 19#include <asm/trace.h>
20 20#include <asm/cputhreads.h>
21 21
22#define RIC_FLUSH_TLB 0 22#define RIC_FLUSH_TLB 0
23#define RIC_FLUSH_PWC 1 23#define RIC_FLUSH_PWC 1
@@ -454,3 +454,44 @@ void radix__flush_tlb_pte_p9_dd1(unsigned long old_pte, struct mm_struct *mm,
454 else 454 else
455 radix__flush_tlb_page_psize(mm, address, mmu_virtual_psize); 455 radix__flush_tlb_page_psize(mm, address, mmu_virtual_psize);
456} 456}
457
458#ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE
459extern void radix_kvm_prefetch_workaround(struct mm_struct *mm)
460{
461 unsigned int pid = mm->context.id;
462
463 if (unlikely(pid == MMU_NO_CONTEXT))
464 return;
465
466 /*
467 * If this context hasn't run on that CPU before and KVM is
468 * around, there's a slim chance that the guest on another
469 * CPU just brought in obsolete translation into the TLB of
470 * this CPU due to a bad prefetch using the guest PID on
471 * the way into the hypervisor.
472 *
473 * We work around this here. If KVM is possible, we check if
474 * any sibling thread is in KVM. If it is, the window may exist
475 * and thus we flush that PID from the core.
476 *
477 * A potential future improvement would be to mark which PIDs
478 * have never been used on the system and avoid it if the PID
479 * is new and the process has no other cpumask bit set.
480 */
481 if (cpu_has_feature(CPU_FTR_HVMODE) && radix_enabled()) {
482 int cpu = smp_processor_id();
483 int sib = cpu_first_thread_sibling(cpu);
484 bool flush = false;
485
486 for (; sib <= cpu_last_thread_sibling(cpu) && !flush; sib++) {
487 if (sib == cpu)
488 continue;
489 if (paca[sib].kvm_hstate.kvm_vcpu)
490 flush = true;
491 }
492 if (flush)
493 _tlbiel_pid(pid, RIC_FLUSH_ALL);
494 }
495}
496EXPORT_SYMBOL_GPL(radix_kvm_prefetch_workaround);
497#endif /* CONFIG_KVM_BOOK3S_HV_POSSIBLE */
diff --git a/arch/powerpc/platforms/83xx/mpc832x_rdb.c b/arch/powerpc/platforms/83xx/mpc832x_rdb.c
index d7c9b186954d..763ffca9628d 100644
--- a/arch/powerpc/platforms/83xx/mpc832x_rdb.c
+++ b/arch/powerpc/platforms/83xx/mpc832x_rdb.c
@@ -89,7 +89,7 @@ static int __init of_fsl_spi_probe(char *type, char *compatible, u32 sysclk,
89 goto err; 89 goto err;
90 90
91 ret = of_irq_to_resource(np, 0, &res[1]); 91 ret = of_irq_to_resource(np, 0, &res[1]);
92 if (!ret) 92 if (ret <= 0)
93 goto err; 93 goto err;
94 94
95 pdev = platform_device_alloc("mpc83xx_spi", i); 95 pdev = platform_device_alloc("mpc83xx_spi", i);
diff --git a/arch/powerpc/platforms/powernv/idle.c b/arch/powerpc/platforms/powernv/idle.c
index 2abee070373f..a553aeea7af6 100644
--- a/arch/powerpc/platforms/powernv/idle.c
+++ b/arch/powerpc/platforms/powernv/idle.c
@@ -56,6 +56,7 @@ u64 pnv_first_deep_stop_state = MAX_STOP_STATE;
56 */ 56 */
57static u64 pnv_deepest_stop_psscr_val; 57static u64 pnv_deepest_stop_psscr_val;
58static u64 pnv_deepest_stop_psscr_mask; 58static u64 pnv_deepest_stop_psscr_mask;
59static u64 pnv_deepest_stop_flag;
59static bool deepest_stop_found; 60static bool deepest_stop_found;
60 61
61static int pnv_save_sprs_for_deep_states(void) 62static int pnv_save_sprs_for_deep_states(void)
@@ -185,8 +186,40 @@ static void pnv_alloc_idle_core_states(void)
185 186
186 update_subcore_sibling_mask(); 187 update_subcore_sibling_mask();
187 188
188 if (supported_cpuidle_states & OPAL_PM_LOSE_FULL_CONTEXT) 189 if (supported_cpuidle_states & OPAL_PM_LOSE_FULL_CONTEXT) {
189 pnv_save_sprs_for_deep_states(); 190 int rc = pnv_save_sprs_for_deep_states();
191
192 if (likely(!rc))
193 return;
194
195 /*
196 * The stop-api is unable to restore hypervisor
197 * resources on wakeup from platform idle states which
198 * lose full context. So disable such states.
199 */
200 supported_cpuidle_states &= ~OPAL_PM_LOSE_FULL_CONTEXT;
201 pr_warn("cpuidle-powernv: Disabling idle states that lose full context\n");
202 pr_warn("cpuidle-powernv: Idle power-savings, CPU-Hotplug affected\n");
203
204 if (cpu_has_feature(CPU_FTR_ARCH_300) &&
205 (pnv_deepest_stop_flag & OPAL_PM_LOSE_FULL_CONTEXT)) {
206 /*
207 * Use the default stop state for CPU-Hotplug
208 * if available.
209 */
210 if (default_stop_found) {
211 pnv_deepest_stop_psscr_val =
212 pnv_default_stop_val;
213 pnv_deepest_stop_psscr_mask =
214 pnv_default_stop_mask;
215 pr_warn("cpuidle-powernv: Offlined CPUs will stop with psscr = 0x%016llx\n",
216 pnv_deepest_stop_psscr_val);
217 } else { /* Fallback to snooze loop for CPU-Hotplug */
218 deepest_stop_found = false;
219 pr_warn("cpuidle-powernv: Offlined CPUs will busy wait\n");
220 }
221 }
222 }
190} 223}
191 224
192u32 pnv_get_supported_cpuidle_states(void) 225u32 pnv_get_supported_cpuidle_states(void)
@@ -375,7 +408,8 @@ unsigned long pnv_cpu_offline(unsigned int cpu)
375 pnv_deepest_stop_psscr_val; 408 pnv_deepest_stop_psscr_val;
376 srr1 = power9_idle_stop(psscr); 409 srr1 = power9_idle_stop(psscr);
377 410
378 } else if (idle_states & OPAL_PM_WINKLE_ENABLED) { 411 } else if ((idle_states & OPAL_PM_WINKLE_ENABLED) &&
412 (idle_states & OPAL_PM_LOSE_FULL_CONTEXT)) {
379 srr1 = power7_idle_insn(PNV_THREAD_WINKLE); 413 srr1 = power7_idle_insn(PNV_THREAD_WINKLE);
380 } else if ((idle_states & OPAL_PM_SLEEP_ENABLED) || 414 } else if ((idle_states & OPAL_PM_SLEEP_ENABLED) ||
381 (idle_states & OPAL_PM_SLEEP_ENABLED_ER1)) { 415 (idle_states & OPAL_PM_SLEEP_ENABLED_ER1)) {
@@ -553,6 +587,7 @@ static int __init pnv_power9_idle_init(struct device_node *np, u32 *flags,
553 max_residency_ns = residency_ns[i]; 587 max_residency_ns = residency_ns[i];
554 pnv_deepest_stop_psscr_val = psscr_val[i]; 588 pnv_deepest_stop_psscr_val = psscr_val[i];
555 pnv_deepest_stop_psscr_mask = psscr_mask[i]; 589 pnv_deepest_stop_psscr_mask = psscr_mask[i];
590 pnv_deepest_stop_flag = flags[i];
556 deepest_stop_found = true; 591 deepest_stop_found = true;
557 } 592 }
558 593
diff --git a/arch/powerpc/platforms/powernv/opal.c b/arch/powerpc/platforms/powernv/opal.c
index 9b87abb178f0..cad6b57ce494 100644
--- a/arch/powerpc/platforms/powernv/opal.c
+++ b/arch/powerpc/platforms/powernv/opal.c
@@ -78,7 +78,7 @@ void opal_configure_cores(void)
78 * ie. Host hash supports hash guests 78 * ie. Host hash supports hash guests
79 * Host radix supports hash/radix guests 79 * Host radix supports hash/radix guests
80 */ 80 */
81 if (cpu_has_feature(CPU_FTR_ARCH_300)) { 81 if (early_cpu_has_feature(CPU_FTR_ARCH_300)) {
82 reinit_flags |= OPAL_REINIT_CPUS_MMU_HASH; 82 reinit_flags |= OPAL_REINIT_CPUS_MMU_HASH;
83 if (early_radix_enabled()) 83 if (early_radix_enabled())
84 reinit_flags |= OPAL_REINIT_CPUS_MMU_RADIX; 84 reinit_flags |= OPAL_REINIT_CPUS_MMU_RADIX;
diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c b/arch/powerpc/platforms/powernv/pci-ioda.c
index 437613588df1..b900eb1d5e17 100644
--- a/arch/powerpc/platforms/powernv/pci-ioda.c
+++ b/arch/powerpc/platforms/powernv/pci-ioda.c
@@ -1852,6 +1852,14 @@ static int pnv_pci_ioda_dma_set_mask(struct pci_dev *pdev, u64 dma_mask)
1852 /* 4GB offset bypasses 32-bit space */ 1852 /* 4GB offset bypasses 32-bit space */
1853 set_dma_offset(&pdev->dev, (1ULL << 32)); 1853 set_dma_offset(&pdev->dev, (1ULL << 32));
1854 set_dma_ops(&pdev->dev, &dma_direct_ops); 1854 set_dma_ops(&pdev->dev, &dma_direct_ops);
1855 } else if (dma_mask >> 32 && dma_mask != DMA_BIT_MASK(64)) {
1856 /*
1857 * Fail the request if a DMA mask between 32 and 64 bits
1858 * was requested but couldn't be fulfilled. Ideally we
1859 * would do this for 64-bits but historically we have
1860 * always fallen back to 32-bits.
1861 */
1862 return -ENOMEM;
1855 } else { 1863 } else {
1856 dev_info(&pdev->dev, "Using 32-bit DMA via iommu\n"); 1864 dev_info(&pdev->dev, "Using 32-bit DMA via iommu\n");
1857 set_dma_ops(&pdev->dev, &dma_iommu_ops); 1865 set_dma_ops(&pdev->dev, &dma_iommu_ops);
diff --git a/arch/powerpc/platforms/pseries/reconfig.c b/arch/powerpc/platforms/pseries/reconfig.c
index e5bf1e84047f..011ef2180fe6 100644
--- a/arch/powerpc/platforms/pseries/reconfig.c
+++ b/arch/powerpc/platforms/pseries/reconfig.c
@@ -82,7 +82,6 @@ static int pSeries_reconfig_remove_node(struct device_node *np)
82 82
83 of_detach_node(np); 83 of_detach_node(np);
84 of_node_put(parent); 84 of_node_put(parent);
85 of_node_put(np); /* Must decrement the refcount */
86 return 0; 85 return 0;
87} 86}
88 87
diff --git a/arch/s390/include/asm/bug.h b/arch/s390/include/asm/bug.h
index 1bbd9dbfe4e0..ce9cc123988b 100644
--- a/arch/s390/include/asm/bug.h
+++ b/arch/s390/include/asm/bug.h
@@ -14,7 +14,7 @@
14 ".section .rodata.str,\"aMS\",@progbits,1\n" \ 14 ".section .rodata.str,\"aMS\",@progbits,1\n" \
15 "2: .asciz \""__FILE__"\"\n" \ 15 "2: .asciz \""__FILE__"\"\n" \
16 ".previous\n" \ 16 ".previous\n" \
17 ".section __bug_table,\"a\"\n" \ 17 ".section __bug_table,\"aw\"\n" \
18 "3: .long 1b-3b,2b-3b\n" \ 18 "3: .long 1b-3b,2b-3b\n" \
19 " .short %0,%1\n" \ 19 " .short %0,%1\n" \
20 " .org 3b+%2\n" \ 20 " .org 3b+%2\n" \
@@ -30,7 +30,7 @@
30 asm volatile( \ 30 asm volatile( \
31 "0: j 0b+2\n" \ 31 "0: j 0b+2\n" \
32 "1:\n" \ 32 "1:\n" \
33 ".section __bug_table,\"a\"\n" \ 33 ".section __bug_table,\"aw\"\n" \
34 "2: .long 1b-2b\n" \ 34 "2: .long 1b-2b\n" \
35 " .short %0\n" \ 35 " .short %0\n" \
36 " .org 2b+%1\n" \ 36 " .org 2b+%1\n" \
diff --git a/arch/s390/include/asm/tlb.h b/arch/s390/include/asm/tlb.h
index 7317b3108a88..2eb8ff0d6fca 100644
--- a/arch/s390/include/asm/tlb.h
+++ b/arch/s390/include/asm/tlb.h
@@ -47,10 +47,9 @@ struct mmu_table_batch {
47extern void tlb_table_flush(struct mmu_gather *tlb); 47extern void tlb_table_flush(struct mmu_gather *tlb);
48extern void tlb_remove_table(struct mmu_gather *tlb, void *table); 48extern void tlb_remove_table(struct mmu_gather *tlb, void *table);
49 49
50static inline void tlb_gather_mmu(struct mmu_gather *tlb, 50static inline void
51 struct mm_struct *mm, 51arch_tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm,
52 unsigned long start, 52 unsigned long start, unsigned long end)
53 unsigned long end)
54{ 53{
55 tlb->mm = mm; 54 tlb->mm = mm;
56 tlb->start = start; 55 tlb->start = start;
@@ -76,9 +75,15 @@ static inline void tlb_flush_mmu(struct mmu_gather *tlb)
76 tlb_flush_mmu_free(tlb); 75 tlb_flush_mmu_free(tlb);
77} 76}
78 77
79static inline void tlb_finish_mmu(struct mmu_gather *tlb, 78static inline void
80 unsigned long start, unsigned long end) 79arch_tlb_finish_mmu(struct mmu_gather *tlb,
80 unsigned long start, unsigned long end, bool force)
81{ 81{
82 if (force) {
83 tlb->start = start;
84 tlb->end = end;
85 }
86
82 tlb_flush_mmu(tlb); 87 tlb_flush_mmu(tlb);
83} 88}
84 89
diff --git a/arch/s390/kernel/perf_cpum_sf.c b/arch/s390/kernel/perf_cpum_sf.c
index 0c82f7903fc7..c1bf75ffb875 100644
--- a/arch/s390/kernel/perf_cpum_sf.c
+++ b/arch/s390/kernel/perf_cpum_sf.c
@@ -998,7 +998,7 @@ static int perf_push_sample(struct perf_event *event, struct sf_raw_sample *sfr)
998 psw_bits(regs.psw).ia = sfr->basic.ia; 998 psw_bits(regs.psw).ia = sfr->basic.ia;
999 psw_bits(regs.psw).dat = sfr->basic.T; 999 psw_bits(regs.psw).dat = sfr->basic.T;
1000 psw_bits(regs.psw).wait = sfr->basic.W; 1000 psw_bits(regs.psw).wait = sfr->basic.W;
1001 psw_bits(regs.psw).per = sfr->basic.P; 1001 psw_bits(regs.psw).pstate = sfr->basic.P;
1002 psw_bits(regs.psw).as = sfr->basic.AS; 1002 psw_bits(regs.psw).as = sfr->basic.AS;
1003 1003
1004 /* 1004 /*
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c
index 3f2884e99ed4..af09d3437631 100644
--- a/arch/s390/kvm/kvm-s390.c
+++ b/arch/s390/kvm/kvm-s390.c
@@ -1324,7 +1324,7 @@ static long kvm_s390_get_skeys(struct kvm *kvm, struct kvm_s390_skeys *args)
1324{ 1324{
1325 uint8_t *keys; 1325 uint8_t *keys;
1326 uint64_t hva; 1326 uint64_t hva;
1327 int i, r = 0; 1327 int srcu_idx, i, r = 0;
1328 1328
1329 if (args->flags != 0) 1329 if (args->flags != 0)
1330 return -EINVAL; 1330 return -EINVAL;
@@ -1342,6 +1342,7 @@ static long kvm_s390_get_skeys(struct kvm *kvm, struct kvm_s390_skeys *args)
1342 return -ENOMEM; 1342 return -ENOMEM;
1343 1343
1344 down_read(&current->mm->mmap_sem); 1344 down_read(&current->mm->mmap_sem);
1345 srcu_idx = srcu_read_lock(&kvm->srcu);
1345 for (i = 0; i < args->count; i++) { 1346 for (i = 0; i < args->count; i++) {
1346 hva = gfn_to_hva(kvm, args->start_gfn + i); 1347 hva = gfn_to_hva(kvm, args->start_gfn + i);
1347 if (kvm_is_error_hva(hva)) { 1348 if (kvm_is_error_hva(hva)) {
@@ -1353,6 +1354,7 @@ static long kvm_s390_get_skeys(struct kvm *kvm, struct kvm_s390_skeys *args)
1353 if (r) 1354 if (r)
1354 break; 1355 break;
1355 } 1356 }
1357 srcu_read_unlock(&kvm->srcu, srcu_idx);
1356 up_read(&current->mm->mmap_sem); 1358 up_read(&current->mm->mmap_sem);
1357 1359
1358 if (!r) { 1360 if (!r) {
@@ -1370,7 +1372,7 @@ static long kvm_s390_set_skeys(struct kvm *kvm, struct kvm_s390_skeys *args)
1370{ 1372{
1371 uint8_t *keys; 1373 uint8_t *keys;
1372 uint64_t hva; 1374 uint64_t hva;
1373 int i, r = 0; 1375 int srcu_idx, i, r = 0;
1374 1376
1375 if (args->flags != 0) 1377 if (args->flags != 0)
1376 return -EINVAL; 1378 return -EINVAL;
@@ -1396,6 +1398,7 @@ static long kvm_s390_set_skeys(struct kvm *kvm, struct kvm_s390_skeys *args)
1396 goto out; 1398 goto out;
1397 1399
1398 down_read(&current->mm->mmap_sem); 1400 down_read(&current->mm->mmap_sem);
1401 srcu_idx = srcu_read_lock(&kvm->srcu);
1399 for (i = 0; i < args->count; i++) { 1402 for (i = 0; i < args->count; i++) {
1400 hva = gfn_to_hva(kvm, args->start_gfn + i); 1403 hva = gfn_to_hva(kvm, args->start_gfn + i);
1401 if (kvm_is_error_hva(hva)) { 1404 if (kvm_is_error_hva(hva)) {
@@ -1413,6 +1416,7 @@ static long kvm_s390_set_skeys(struct kvm *kvm, struct kvm_s390_skeys *args)
1413 if (r) 1416 if (r)
1414 break; 1417 break;
1415 } 1418 }
1419 srcu_read_unlock(&kvm->srcu, srcu_idx);
1416 up_read(&current->mm->mmap_sem); 1420 up_read(&current->mm->mmap_sem);
1417out: 1421out:
1418 kvfree(keys); 1422 kvfree(keys);
diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c
index d4d409ba206b..4a1f7366b17a 100644
--- a/arch/s390/mm/pgtable.c
+++ b/arch/s390/mm/pgtable.c
@@ -591,11 +591,11 @@ void ptep_zap_key(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
591 unsigned long ptev; 591 unsigned long ptev;
592 pgste_t pgste; 592 pgste_t pgste;
593 593
594 /* Clear storage key */ 594 /* Clear storage key ACC and F, but set R/C */
595 preempt_disable(); 595 preempt_disable();
596 pgste = pgste_get_lock(ptep); 596 pgste = pgste_get_lock(ptep);
597 pgste_val(pgste) &= ~(PGSTE_ACC_BITS | PGSTE_FP_BIT | 597 pgste_val(pgste) &= ~(PGSTE_ACC_BITS | PGSTE_FP_BIT);
598 PGSTE_GR_BIT | PGSTE_GC_BIT); 598 pgste_val(pgste) |= PGSTE_GR_BIT | PGSTE_GC_BIT;
599 ptev = pte_val(*ptep); 599 ptev = pte_val(*ptep);
600 if (!(ptev & _PAGE_INVALID) && (ptev & _PAGE_WRITE)) 600 if (!(ptev & _PAGE_INVALID) && (ptev & _PAGE_WRITE))
601 page_set_storage_key(ptev & PAGE_MASK, PAGE_DEFAULT_KEY, 1); 601 page_set_storage_key(ptev & PAGE_MASK, PAGE_DEFAULT_KEY, 1);
diff --git a/arch/s390/net/bpf_jit_comp.c b/arch/s390/net/bpf_jit_comp.c
index 01c6fbc3e85b..1803797fc885 100644
--- a/arch/s390/net/bpf_jit_comp.c
+++ b/arch/s390/net/bpf_jit_comp.c
@@ -1253,7 +1253,8 @@ static int bpf_jit_prog(struct bpf_jit *jit, struct bpf_prog *fp)
1253 insn_count = bpf_jit_insn(jit, fp, i); 1253 insn_count = bpf_jit_insn(jit, fp, i);
1254 if (insn_count < 0) 1254 if (insn_count < 0)
1255 return -1; 1255 return -1;
1256 jit->addrs[i + 1] = jit->prg; /* Next instruction address */ 1256 /* Next instruction address */
1257 jit->addrs[i + insn_count] = jit->prg;
1257 } 1258 }
1258 bpf_jit_epilogue(jit); 1259 bpf_jit_epilogue(jit);
1259 1260
diff --git a/arch/sh/include/asm/bug.h b/arch/sh/include/asm/bug.h
index c9828f785ca0..5b5086367639 100644
--- a/arch/sh/include/asm/bug.h
+++ b/arch/sh/include/asm/bug.h
@@ -24,14 +24,14 @@
24 */ 24 */
25#ifdef CONFIG_DEBUG_BUGVERBOSE 25#ifdef CONFIG_DEBUG_BUGVERBOSE
26#define _EMIT_BUG_ENTRY \ 26#define _EMIT_BUG_ENTRY \
27 "\t.pushsection __bug_table,\"a\"\n" \ 27 "\t.pushsection __bug_table,\"aw\"\n" \
28 "2:\t.long 1b, %O1\n" \ 28 "2:\t.long 1b, %O1\n" \
29 "\t.short %O2, %O3\n" \ 29 "\t.short %O2, %O3\n" \
30 "\t.org 2b+%O4\n" \ 30 "\t.org 2b+%O4\n" \
31 "\t.popsection\n" 31 "\t.popsection\n"
32#else 32#else
33#define _EMIT_BUG_ENTRY \ 33#define _EMIT_BUG_ENTRY \
34 "\t.pushsection __bug_table,\"a\"\n" \ 34 "\t.pushsection __bug_table,\"aw\"\n" \
35 "2:\t.long 1b\n" \ 35 "2:\t.long 1b\n" \
36 "\t.short %O3\n" \ 36 "\t.short %O3\n" \
37 "\t.org 2b+%O4\n" \ 37 "\t.org 2b+%O4\n" \
diff --git a/arch/sh/include/asm/tlb.h b/arch/sh/include/asm/tlb.h
index 46e0d635e36f..51a8bc967e75 100644
--- a/arch/sh/include/asm/tlb.h
+++ b/arch/sh/include/asm/tlb.h
@@ -36,7 +36,8 @@ static inline void init_tlb_gather(struct mmu_gather *tlb)
36} 36}
37 37
38static inline void 38static inline void
39tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned long start, unsigned long end) 39arch_tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm,
40 unsigned long start, unsigned long end)
40{ 41{
41 tlb->mm = mm; 42 tlb->mm = mm;
42 tlb->start = start; 43 tlb->start = start;
@@ -47,9 +48,10 @@ tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned long start
47} 48}
48 49
49static inline void 50static inline void
50tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end) 51arch_tlb_finish_mmu(struct mmu_gather *tlb,
52 unsigned long start, unsigned long end, bool force)
51{ 53{
52 if (tlb->fullmm) 54 if (tlb->fullmm || force)
53 flush_tlb_mm(tlb->mm); 55 flush_tlb_mm(tlb->mm);
54 56
55 /* keep the page table cache within bounds */ 57 /* keep the page table cache within bounds */
diff --git a/arch/sh/include/uapi/asm/ioctls.h b/arch/sh/include/uapi/asm/ioctls.h
index eec7901e9e65..787bac9f67da 100644
--- a/arch/sh/include/uapi/asm/ioctls.h
+++ b/arch/sh/include/uapi/asm/ioctls.h
@@ -93,7 +93,7 @@
93#define TIOCGPKT _IOR('T', 0x38, int) /* Get packet mode state */ 93#define TIOCGPKT _IOR('T', 0x38, int) /* Get packet mode state */
94#define TIOCGPTLCK _IOR('T', 0x39, int) /* Get Pty lock state */ 94#define TIOCGPTLCK _IOR('T', 0x39, int) /* Get Pty lock state */
95#define TIOCGEXCL _IOR('T', 0x40, int) /* Get exclusive mode state */ 95#define TIOCGEXCL _IOR('T', 0x40, int) /* Get exclusive mode state */
96#define TIOCGPTPEER _IOR('T', 0x41, int) /* Safely open the slave */ 96#define TIOCGPTPEER _IO('T', 0x41) /* Safely open the slave */
97 97
98#define TIOCSERCONFIG _IO('T', 83) /* 0x5453 */ 98#define TIOCSERCONFIG _IO('T', 83) /* 0x5453 */
99#define TIOCSERGWILD _IOR('T', 84, int) /* 0x5454 */ 99#define TIOCSERGWILD _IOR('T', 84, int) /* 0x5454 */
diff --git a/arch/sparc/configs/sparc32_defconfig b/arch/sparc/configs/sparc32_defconfig
index c74d3701ad68..207a43a2d8b3 100644
--- a/arch/sparc/configs/sparc32_defconfig
+++ b/arch/sparc/configs/sparc32_defconfig
@@ -1,4 +1,3 @@
1CONFIG_EXPERIMENTAL=y
2CONFIG_SYSVIPC=y 1CONFIG_SYSVIPC=y
3CONFIG_POSIX_MQUEUE=y 2CONFIG_POSIX_MQUEUE=y
4CONFIG_LOG_BUF_SHIFT=14 3CONFIG_LOG_BUF_SHIFT=14
@@ -23,7 +22,6 @@ CONFIG_IP_PNP_DHCP=y
23CONFIG_INET_AH=y 22CONFIG_INET_AH=y
24CONFIG_INET_ESP=y 23CONFIG_INET_ESP=y
25CONFIG_INET_IPCOMP=y 24CONFIG_INET_IPCOMP=y
26# CONFIG_INET_LRO is not set
27CONFIG_INET6_AH=m 25CONFIG_INET6_AH=m
28CONFIG_INET6_ESP=m 26CONFIG_INET6_ESP=m
29CONFIG_INET6_IPCOMP=m 27CONFIG_INET6_IPCOMP=m
@@ -69,7 +67,6 @@ CONFIG_EXT2_FS=y
69CONFIG_EXT2_FS_XATTR=y 67CONFIG_EXT2_FS_XATTR=y
70CONFIG_EXT2_FS_POSIX_ACL=y 68CONFIG_EXT2_FS_POSIX_ACL=y
71CONFIG_EXT2_FS_SECURITY=y 69CONFIG_EXT2_FS_SECURITY=y
72CONFIG_AUTOFS_FS=m
73CONFIG_AUTOFS4_FS=m 70CONFIG_AUTOFS4_FS=m
74CONFIG_ISO9660_FS=m 71CONFIG_ISO9660_FS=m
75CONFIG_PROC_KCORE=y 72CONFIG_PROC_KCORE=y
@@ -82,7 +79,6 @@ CONFIG_NLS=y
82CONFIG_DEBUG_KERNEL=y 79CONFIG_DEBUG_KERNEL=y
83CONFIG_DETECT_HUNG_TASK=y 80CONFIG_DETECT_HUNG_TASK=y
84# CONFIG_SCHED_DEBUG is not set 81# CONFIG_SCHED_DEBUG is not set
85# CONFIG_RCU_CPU_STALL_DETECTOR is not set
86CONFIG_KGDB=y 82CONFIG_KGDB=y
87CONFIG_KGDB_TESTS=y 83CONFIG_KGDB_TESTS=y
88CONFIG_CRYPTO_NULL=m 84CONFIG_CRYPTO_NULL=m
diff --git a/arch/sparc/configs/sparc64_defconfig b/arch/sparc/configs/sparc64_defconfig
index b2e650d1764f..ca8609d7292f 100644
--- a/arch/sparc/configs/sparc64_defconfig
+++ b/arch/sparc/configs/sparc64_defconfig
@@ -1,5 +1,4 @@
1CONFIG_64BIT=y 1CONFIG_64BIT=y
2CONFIG_EXPERIMENTAL=y
3# CONFIG_LOCALVERSION_AUTO is not set 2# CONFIG_LOCALVERSION_AUTO is not set
4CONFIG_SYSVIPC=y 3CONFIG_SYSVIPC=y
5CONFIG_POSIX_MQUEUE=y 4CONFIG_POSIX_MQUEUE=y
@@ -184,7 +183,6 @@ CONFIG_HID_TOPSEED=y
184CONFIG_HID_THRUSTMASTER=y 183CONFIG_HID_THRUSTMASTER=y
185CONFIG_HID_ZEROPLUS=y 184CONFIG_HID_ZEROPLUS=y
186CONFIG_USB=y 185CONFIG_USB=y
187# CONFIG_USB_DEVICE_CLASS is not set
188CONFIG_USB_EHCI_HCD=m 186CONFIG_USB_EHCI_HCD=m
189# CONFIG_USB_EHCI_TT_NEWSCHED is not set 187# CONFIG_USB_EHCI_TT_NEWSCHED is not set
190CONFIG_USB_OHCI_HCD=y 188CONFIG_USB_OHCI_HCD=y
@@ -210,8 +208,6 @@ CONFIG_LOCKUP_DETECTOR=y
210CONFIG_DETECT_HUNG_TASK=y 208CONFIG_DETECT_HUNG_TASK=y
211# CONFIG_SCHED_DEBUG is not set 209# CONFIG_SCHED_DEBUG is not set
212CONFIG_SCHEDSTATS=y 210CONFIG_SCHEDSTATS=y
213# CONFIG_RCU_CPU_STALL_DETECTOR is not set
214CONFIG_SYSCTL_SYSCALL_CHECK=y
215CONFIG_BLK_DEV_IO_TRACE=y 211CONFIG_BLK_DEV_IO_TRACE=y
216CONFIG_UPROBE_EVENTS=y 212CONFIG_UPROBE_EVENTS=y
217CONFIG_KEYS=y 213CONFIG_KEYS=y
diff --git a/arch/sparc/include/asm/mmu_context_64.h b/arch/sparc/include/asm/mmu_context_64.h
index 2cddcda4f85f..87841d687f8d 100644
--- a/arch/sparc/include/asm/mmu_context_64.h
+++ b/arch/sparc/include/asm/mmu_context_64.h
@@ -27,9 +27,11 @@ void destroy_context(struct mm_struct *mm);
27void __tsb_context_switch(unsigned long pgd_pa, 27void __tsb_context_switch(unsigned long pgd_pa,
28 struct tsb_config *tsb_base, 28 struct tsb_config *tsb_base,
29 struct tsb_config *tsb_huge, 29 struct tsb_config *tsb_huge,
30 unsigned long tsb_descr_pa); 30 unsigned long tsb_descr_pa,
31 unsigned long secondary_ctx);
31 32
32static inline void tsb_context_switch(struct mm_struct *mm) 33static inline void tsb_context_switch_ctx(struct mm_struct *mm,
34 unsigned long ctx)
33{ 35{
34 __tsb_context_switch(__pa(mm->pgd), 36 __tsb_context_switch(__pa(mm->pgd),
35 &mm->context.tsb_block[MM_TSB_BASE], 37 &mm->context.tsb_block[MM_TSB_BASE],
@@ -40,9 +42,12 @@ static inline void tsb_context_switch(struct mm_struct *mm)
40#else 42#else
41 NULL 43 NULL
42#endif 44#endif
43 , __pa(&mm->context.tsb_descr[MM_TSB_BASE])); 45 , __pa(&mm->context.tsb_descr[MM_TSB_BASE]),
46 ctx);
44} 47}
45 48
49#define tsb_context_switch(X) tsb_context_switch_ctx(X, 0)
50
46void tsb_grow(struct mm_struct *mm, 51void tsb_grow(struct mm_struct *mm,
47 unsigned long tsb_index, 52 unsigned long tsb_index,
48 unsigned long mm_rss); 53 unsigned long mm_rss);
@@ -112,8 +117,7 @@ static inline void switch_mm(struct mm_struct *old_mm, struct mm_struct *mm, str
112 * cpu0 to update it's TSB because at that point the cpu_vm_mask 117 * cpu0 to update it's TSB because at that point the cpu_vm_mask
113 * only had cpu1 set in it. 118 * only had cpu1 set in it.
114 */ 119 */
115 load_secondary_context(mm); 120 tsb_context_switch_ctx(mm, CTX_HWBITS(mm->context));
116 tsb_context_switch(mm);
117 121
118 /* Any time a processor runs a context on an address space 122 /* Any time a processor runs a context on an address space
119 * for the first time, we must flush that context out of the 123 * for the first time, we must flush that context out of the
diff --git a/arch/sparc/include/asm/page_32.h b/arch/sparc/include/asm/page_32.h
index 0efd0583a8c9..6249214148c2 100644
--- a/arch/sparc/include/asm/page_32.h
+++ b/arch/sparc/include/asm/page_32.h
@@ -68,6 +68,7 @@ typedef struct { unsigned long iopgprot; } iopgprot_t;
68#define iopgprot_val(x) ((x).iopgprot) 68#define iopgprot_val(x) ((x).iopgprot)
69 69
70#define __pte(x) ((pte_t) { (x) } ) 70#define __pte(x) ((pte_t) { (x) } )
71#define __pmd(x) ((pmd_t) { { (x) }, })
71#define __iopte(x) ((iopte_t) { (x) } ) 72#define __iopte(x) ((iopte_t) { (x) } )
72#define __pgd(x) ((pgd_t) { (x) } ) 73#define __pgd(x) ((pgd_t) { (x) } )
73#define __ctxd(x) ((ctxd_t) { (x) } ) 74#define __ctxd(x) ((ctxd_t) { (x) } )
@@ -95,6 +96,7 @@ typedef unsigned long iopgprot_t;
95#define iopgprot_val(x) (x) 96#define iopgprot_val(x) (x)
96 97
97#define __pte(x) (x) 98#define __pte(x) (x)
99#define __pmd(x) ((pmd_t) { { (x) }, })
98#define __iopte(x) (x) 100#define __iopte(x) (x)
99#define __pgd(x) (x) 101#define __pgd(x) (x)
100#define __ctxd(x) (x) 102#define __ctxd(x) (x)
diff --git a/arch/sparc/include/asm/spitfire.h b/arch/sparc/include/asm/spitfire.h
index 1d8321c827a8..1b1286d05069 100644
--- a/arch/sparc/include/asm/spitfire.h
+++ b/arch/sparc/include/asm/spitfire.h
@@ -47,10 +47,26 @@
47#define SUN4V_CHIP_NIAGARA5 0x05 47#define SUN4V_CHIP_NIAGARA5 0x05
48#define SUN4V_CHIP_SPARC_M6 0x06 48#define SUN4V_CHIP_SPARC_M6 0x06
49#define SUN4V_CHIP_SPARC_M7 0x07 49#define SUN4V_CHIP_SPARC_M7 0x07
50#define SUN4V_CHIP_SPARC_M8 0x08
50#define SUN4V_CHIP_SPARC64X 0x8a 51#define SUN4V_CHIP_SPARC64X 0x8a
51#define SUN4V_CHIP_SPARC_SN 0x8b 52#define SUN4V_CHIP_SPARC_SN 0x8b
52#define SUN4V_CHIP_UNKNOWN 0xff 53#define SUN4V_CHIP_UNKNOWN 0xff
53 54
55/*
56 * The following CPU_ID_xxx constants are used
57 * to identify the CPU type in the setup phase
58 * (see head_64.S)
59 */
60#define CPU_ID_NIAGARA1 ('1')
61#define CPU_ID_NIAGARA2 ('2')
62#define CPU_ID_NIAGARA3 ('3')
63#define CPU_ID_NIAGARA4 ('4')
64#define CPU_ID_NIAGARA5 ('5')
65#define CPU_ID_M6 ('6')
66#define CPU_ID_M7 ('7')
67#define CPU_ID_M8 ('8')
68#define CPU_ID_SONOMA1 ('N')
69
54#ifndef __ASSEMBLY__ 70#ifndef __ASSEMBLY__
55 71
56enum ultra_tlb_layout { 72enum ultra_tlb_layout {
diff --git a/arch/sparc/include/uapi/asm/ioctls.h b/arch/sparc/include/uapi/asm/ioctls.h
index 6d27398632ea..f5df72b93bb2 100644
--- a/arch/sparc/include/uapi/asm/ioctls.h
+++ b/arch/sparc/include/uapi/asm/ioctls.h
@@ -88,7 +88,7 @@
88#define TIOCGPTN _IOR('t', 134, unsigned int) /* Get Pty Number */ 88#define TIOCGPTN _IOR('t', 134, unsigned int) /* Get Pty Number */
89#define TIOCSPTLCK _IOW('t', 135, int) /* Lock/unlock PTY */ 89#define TIOCSPTLCK _IOW('t', 135, int) /* Lock/unlock PTY */
90#define TIOCSIG _IOW('t', 136, int) /* Generate signal on Pty slave */ 90#define TIOCSIG _IOW('t', 136, int) /* Generate signal on Pty slave */
91#define TIOCGPTPEER _IOR('t', 137, int) /* Safely open the slave */ 91#define TIOCGPTPEER _IO('t', 137) /* Safely open the slave */
92 92
93/* Little f */ 93/* Little f */
94#define FIOCLEX _IO('f', 1) 94#define FIOCLEX _IO('f', 1)
diff --git a/arch/sparc/kernel/cpu.c b/arch/sparc/kernel/cpu.c
index 493e023a468a..ef4f18f7a674 100644
--- a/arch/sparc/kernel/cpu.c
+++ b/arch/sparc/kernel/cpu.c
@@ -506,6 +506,12 @@ static void __init sun4v_cpu_probe(void)
506 sparc_pmu_type = "sparc-m7"; 506 sparc_pmu_type = "sparc-m7";
507 break; 507 break;
508 508
509 case SUN4V_CHIP_SPARC_M8:
510 sparc_cpu_type = "SPARC-M8";
511 sparc_fpu_type = "SPARC-M8 integrated FPU";
512 sparc_pmu_type = "sparc-m8";
513 break;
514
509 case SUN4V_CHIP_SPARC_SN: 515 case SUN4V_CHIP_SPARC_SN:
510 sparc_cpu_type = "SPARC-SN"; 516 sparc_cpu_type = "SPARC-SN";
511 sparc_fpu_type = "SPARC-SN integrated FPU"; 517 sparc_fpu_type = "SPARC-SN integrated FPU";
diff --git a/arch/sparc/kernel/cpumap.c b/arch/sparc/kernel/cpumap.c
index 45c820e1cba5..90d550bbfeef 100644
--- a/arch/sparc/kernel/cpumap.c
+++ b/arch/sparc/kernel/cpumap.c
@@ -328,6 +328,7 @@ static int iterate_cpu(struct cpuinfo_tree *t, unsigned int root_index)
328 case SUN4V_CHIP_NIAGARA5: 328 case SUN4V_CHIP_NIAGARA5:
329 case SUN4V_CHIP_SPARC_M6: 329 case SUN4V_CHIP_SPARC_M6:
330 case SUN4V_CHIP_SPARC_M7: 330 case SUN4V_CHIP_SPARC_M7:
331 case SUN4V_CHIP_SPARC_M8:
331 case SUN4V_CHIP_SPARC_SN: 332 case SUN4V_CHIP_SPARC_SN:
332 case SUN4V_CHIP_SPARC64X: 333 case SUN4V_CHIP_SPARC64X:
333 rover_inc_table = niagara_iterate_method; 334 rover_inc_table = niagara_iterate_method;
diff --git a/arch/sparc/kernel/head_64.S b/arch/sparc/kernel/head_64.S
index 41a407328667..78e0211753d2 100644
--- a/arch/sparc/kernel/head_64.S
+++ b/arch/sparc/kernel/head_64.S
@@ -424,22 +424,25 @@ EXPORT_SYMBOL(sun4v_chip_type)
424 nop 424 nop
425 425
42670: ldub [%g1 + 7], %g2 42670: ldub [%g1 + 7], %g2
427 cmp %g2, '3' 427 cmp %g2, CPU_ID_NIAGARA3
428 be,pt %xcc, 5f 428 be,pt %xcc, 5f
429 mov SUN4V_CHIP_NIAGARA3, %g4 429 mov SUN4V_CHIP_NIAGARA3, %g4
430 cmp %g2, '4' 430 cmp %g2, CPU_ID_NIAGARA4
431 be,pt %xcc, 5f 431 be,pt %xcc, 5f
432 mov SUN4V_CHIP_NIAGARA4, %g4 432 mov SUN4V_CHIP_NIAGARA4, %g4
433 cmp %g2, '5' 433 cmp %g2, CPU_ID_NIAGARA5
434 be,pt %xcc, 5f 434 be,pt %xcc, 5f
435 mov SUN4V_CHIP_NIAGARA5, %g4 435 mov SUN4V_CHIP_NIAGARA5, %g4
436 cmp %g2, '6' 436 cmp %g2, CPU_ID_M6
437 be,pt %xcc, 5f 437 be,pt %xcc, 5f
438 mov SUN4V_CHIP_SPARC_M6, %g4 438 mov SUN4V_CHIP_SPARC_M6, %g4
439 cmp %g2, '7' 439 cmp %g2, CPU_ID_M7
440 be,pt %xcc, 5f 440 be,pt %xcc, 5f
441 mov SUN4V_CHIP_SPARC_M7, %g4 441 mov SUN4V_CHIP_SPARC_M7, %g4
442 cmp %g2, 'N' 442 cmp %g2, CPU_ID_M8
443 be,pt %xcc, 5f
444 mov SUN4V_CHIP_SPARC_M8, %g4
445 cmp %g2, CPU_ID_SONOMA1
443 be,pt %xcc, 5f 446 be,pt %xcc, 5f
444 mov SUN4V_CHIP_SPARC_SN, %g4 447 mov SUN4V_CHIP_SPARC_SN, %g4
445 ba,pt %xcc, 49f 448 ba,pt %xcc, 49f
@@ -448,10 +451,10 @@ EXPORT_SYMBOL(sun4v_chip_type)
44891: sethi %hi(prom_cpu_compatible), %g1 45191: sethi %hi(prom_cpu_compatible), %g1
449 or %g1, %lo(prom_cpu_compatible), %g1 452 or %g1, %lo(prom_cpu_compatible), %g1
450 ldub [%g1 + 17], %g2 453 ldub [%g1 + 17], %g2
451 cmp %g2, '1' 454 cmp %g2, CPU_ID_NIAGARA1
452 be,pt %xcc, 5f 455 be,pt %xcc, 5f
453 mov SUN4V_CHIP_NIAGARA1, %g4 456 mov SUN4V_CHIP_NIAGARA1, %g4
454 cmp %g2, '2' 457 cmp %g2, CPU_ID_NIAGARA2
455 be,pt %xcc, 5f 458 be,pt %xcc, 5f
456 mov SUN4V_CHIP_NIAGARA2, %g4 459 mov SUN4V_CHIP_NIAGARA2, %g4
457 460
@@ -602,6 +605,9 @@ niagara_tlb_fixup:
602 cmp %g1, SUN4V_CHIP_SPARC_M7 605 cmp %g1, SUN4V_CHIP_SPARC_M7
603 be,pt %xcc, niagara4_patch 606 be,pt %xcc, niagara4_patch
604 nop 607 nop
608 cmp %g1, SUN4V_CHIP_SPARC_M8
609 be,pt %xcc, niagara4_patch
610 nop
605 cmp %g1, SUN4V_CHIP_SPARC_SN 611 cmp %g1, SUN4V_CHIP_SPARC_SN
606 be,pt %xcc, niagara4_patch 612 be,pt %xcc, niagara4_patch
607 nop 613 nop
diff --git a/arch/sparc/kernel/pci_sun4v.c b/arch/sparc/kernel/pci_sun4v.c
index f10e2f712394..9ebebf1fd93d 100644
--- a/arch/sparc/kernel/pci_sun4v.c
+++ b/arch/sparc/kernel/pci_sun4v.c
@@ -1266,8 +1266,6 @@ static int pci_sun4v_probe(struct platform_device *op)
1266 * ATU group, but ATU hcalls won't be available. 1266 * ATU group, but ATU hcalls won't be available.
1267 */ 1267 */
1268 hv_atu = false; 1268 hv_atu = false;
1269 pr_err(PFX "Could not register hvapi ATU err=%d\n",
1270 err);
1271 } else { 1269 } else {
1272 pr_info(PFX "Registered hvapi ATU major[%lu] minor[%lu]\n", 1270 pr_info(PFX "Registered hvapi ATU major[%lu] minor[%lu]\n",
1273 vatu_major, vatu_minor); 1271 vatu_major, vatu_minor);
diff --git a/arch/sparc/kernel/pcic.c b/arch/sparc/kernel/pcic.c
index a38787b84322..732af9a9f6dd 100644
--- a/arch/sparc/kernel/pcic.c
+++ b/arch/sparc/kernel/pcic.c
@@ -602,7 +602,7 @@ void pcibios_fixup_bus(struct pci_bus *bus)
602{ 602{
603 struct pci_dev *dev; 603 struct pci_dev *dev;
604 int i, has_io, has_mem; 604 int i, has_io, has_mem;
605 unsigned int cmd; 605 unsigned int cmd = 0;
606 struct linux_pcic *pcic; 606 struct linux_pcic *pcic;
607 /* struct linux_pbm_info* pbm = &pcic->pbm; */ 607 /* struct linux_pbm_info* pbm = &pcic->pbm; */
608 int node; 608 int node;
diff --git a/arch/sparc/kernel/setup_64.c b/arch/sparc/kernel/setup_64.c
index 4d9c3e13c150..150ee7d4b059 100644
--- a/arch/sparc/kernel/setup_64.c
+++ b/arch/sparc/kernel/setup_64.c
@@ -288,10 +288,17 @@ static void __init sun4v_patch(void)
288 288
289 sun4v_patch_2insn_range(&__sun4v_2insn_patch, 289 sun4v_patch_2insn_range(&__sun4v_2insn_patch,
290 &__sun4v_2insn_patch_end); 290 &__sun4v_2insn_patch_end);
291 if (sun4v_chip_type == SUN4V_CHIP_SPARC_M7 || 291
292 sun4v_chip_type == SUN4V_CHIP_SPARC_SN) 292 switch (sun4v_chip_type) {
293 case SUN4V_CHIP_SPARC_M7:
294 case SUN4V_CHIP_SPARC_M8:
295 case SUN4V_CHIP_SPARC_SN:
293 sun_m7_patch_2insn_range(&__sun_m7_2insn_patch, 296 sun_m7_patch_2insn_range(&__sun_m7_2insn_patch,
294 &__sun_m7_2insn_patch_end); 297 &__sun_m7_2insn_patch_end);
298 break;
299 default:
300 break;
301 }
295 302
296 sun4v_hvapi_init(); 303 sun4v_hvapi_init();
297} 304}
@@ -529,6 +536,7 @@ static void __init init_sparc64_elf_hwcap(void)
529 sun4v_chip_type == SUN4V_CHIP_NIAGARA5 || 536 sun4v_chip_type == SUN4V_CHIP_NIAGARA5 ||
530 sun4v_chip_type == SUN4V_CHIP_SPARC_M6 || 537 sun4v_chip_type == SUN4V_CHIP_SPARC_M6 ||
531 sun4v_chip_type == SUN4V_CHIP_SPARC_M7 || 538 sun4v_chip_type == SUN4V_CHIP_SPARC_M7 ||
539 sun4v_chip_type == SUN4V_CHIP_SPARC_M8 ||
532 sun4v_chip_type == SUN4V_CHIP_SPARC_SN || 540 sun4v_chip_type == SUN4V_CHIP_SPARC_SN ||
533 sun4v_chip_type == SUN4V_CHIP_SPARC64X) 541 sun4v_chip_type == SUN4V_CHIP_SPARC64X)
534 cap |= HWCAP_SPARC_BLKINIT; 542 cap |= HWCAP_SPARC_BLKINIT;
@@ -538,6 +546,7 @@ static void __init init_sparc64_elf_hwcap(void)
538 sun4v_chip_type == SUN4V_CHIP_NIAGARA5 || 546 sun4v_chip_type == SUN4V_CHIP_NIAGARA5 ||
539 sun4v_chip_type == SUN4V_CHIP_SPARC_M6 || 547 sun4v_chip_type == SUN4V_CHIP_SPARC_M6 ||
540 sun4v_chip_type == SUN4V_CHIP_SPARC_M7 || 548 sun4v_chip_type == SUN4V_CHIP_SPARC_M7 ||
549 sun4v_chip_type == SUN4V_CHIP_SPARC_M8 ||
541 sun4v_chip_type == SUN4V_CHIP_SPARC_SN || 550 sun4v_chip_type == SUN4V_CHIP_SPARC_SN ||
542 sun4v_chip_type == SUN4V_CHIP_SPARC64X) 551 sun4v_chip_type == SUN4V_CHIP_SPARC64X)
543 cap |= HWCAP_SPARC_N2; 552 cap |= HWCAP_SPARC_N2;
@@ -568,6 +577,7 @@ static void __init init_sparc64_elf_hwcap(void)
568 sun4v_chip_type == SUN4V_CHIP_NIAGARA5 || 577 sun4v_chip_type == SUN4V_CHIP_NIAGARA5 ||
569 sun4v_chip_type == SUN4V_CHIP_SPARC_M6 || 578 sun4v_chip_type == SUN4V_CHIP_SPARC_M6 ||
570 sun4v_chip_type == SUN4V_CHIP_SPARC_M7 || 579 sun4v_chip_type == SUN4V_CHIP_SPARC_M7 ||
580 sun4v_chip_type == SUN4V_CHIP_SPARC_M8 ||
571 sun4v_chip_type == SUN4V_CHIP_SPARC_SN || 581 sun4v_chip_type == SUN4V_CHIP_SPARC_SN ||
572 sun4v_chip_type == SUN4V_CHIP_SPARC64X) 582 sun4v_chip_type == SUN4V_CHIP_SPARC64X)
573 cap |= (AV_SPARC_VIS | AV_SPARC_VIS2 | 583 cap |= (AV_SPARC_VIS | AV_SPARC_VIS2 |
@@ -578,6 +588,7 @@ static void __init init_sparc64_elf_hwcap(void)
578 sun4v_chip_type == SUN4V_CHIP_NIAGARA5 || 588 sun4v_chip_type == SUN4V_CHIP_NIAGARA5 ||
579 sun4v_chip_type == SUN4V_CHIP_SPARC_M6 || 589 sun4v_chip_type == SUN4V_CHIP_SPARC_M6 ||
580 sun4v_chip_type == SUN4V_CHIP_SPARC_M7 || 590 sun4v_chip_type == SUN4V_CHIP_SPARC_M7 ||
591 sun4v_chip_type == SUN4V_CHIP_SPARC_M8 ||
581 sun4v_chip_type == SUN4V_CHIP_SPARC_SN || 592 sun4v_chip_type == SUN4V_CHIP_SPARC_SN ||
582 sun4v_chip_type == SUN4V_CHIP_SPARC64X) 593 sun4v_chip_type == SUN4V_CHIP_SPARC64X)
583 cap |= (AV_SPARC_VIS3 | AV_SPARC_HPC | 594 cap |= (AV_SPARC_VIS3 | AV_SPARC_HPC |
diff --git a/arch/sparc/kernel/tsb.S b/arch/sparc/kernel/tsb.S
index 07c0df924960..db872dbfafe9 100644
--- a/arch/sparc/kernel/tsb.S
+++ b/arch/sparc/kernel/tsb.S
@@ -360,6 +360,7 @@ tsb_flush:
360 * %o1: TSB base config pointer 360 * %o1: TSB base config pointer
361 * %o2: TSB huge config pointer, or NULL if none 361 * %o2: TSB huge config pointer, or NULL if none
362 * %o3: Hypervisor TSB descriptor physical address 362 * %o3: Hypervisor TSB descriptor physical address
363 * %o4: Secondary context to load, if non-zero
363 * 364 *
364 * We have to run this whole thing with interrupts 365 * We have to run this whole thing with interrupts
365 * disabled so that the current cpu doesn't change 366 * disabled so that the current cpu doesn't change
@@ -372,6 +373,17 @@ __tsb_context_switch:
372 rdpr %pstate, %g1 373 rdpr %pstate, %g1
373 wrpr %g1, PSTATE_IE, %pstate 374 wrpr %g1, PSTATE_IE, %pstate
374 375
376 brz,pn %o4, 1f
377 mov SECONDARY_CONTEXT, %o5
378
379661: stxa %o4, [%o5] ASI_DMMU
380 .section .sun4v_1insn_patch, "ax"
381 .word 661b
382 stxa %o4, [%o5] ASI_MMU
383 .previous
384 flush %g6
385
3861:
375 TRAP_LOAD_TRAP_BLOCK(%g2, %g3) 387 TRAP_LOAD_TRAP_BLOCK(%g2, %g3)
376 388
377 stx %o0, [%g2 + TRAP_PER_CPU_PGD_PADDR] 389 stx %o0, [%g2 + TRAP_PER_CPU_PGD_PADDR]
diff --git a/arch/sparc/lib/U3memcpy.S b/arch/sparc/lib/U3memcpy.S
index 54f98706b03b..5a8cb37f0a3b 100644
--- a/arch/sparc/lib/U3memcpy.S
+++ b/arch/sparc/lib/U3memcpy.S
@@ -145,13 +145,13 @@ ENDPROC(U3_retl_o2_plus_GS_plus_0x08)
145ENTRY(U3_retl_o2_and_7_plus_GS) 145ENTRY(U3_retl_o2_and_7_plus_GS)
146 and %o2, 7, %o2 146 and %o2, 7, %o2
147 retl 147 retl
148 add %o2, GLOBAL_SPARE, %o2 148 add %o2, GLOBAL_SPARE, %o0
149ENDPROC(U3_retl_o2_and_7_plus_GS) 149ENDPROC(U3_retl_o2_and_7_plus_GS)
150ENTRY(U3_retl_o2_and_7_plus_GS_plus_8) 150ENTRY(U3_retl_o2_and_7_plus_GS_plus_8)
151 add GLOBAL_SPARE, 8, GLOBAL_SPARE 151 add GLOBAL_SPARE, 8, GLOBAL_SPARE
152 and %o2, 7, %o2 152 and %o2, 7, %o2
153 retl 153 retl
154 add %o2, GLOBAL_SPARE, %o2 154 add %o2, GLOBAL_SPARE, %o0
155ENDPROC(U3_retl_o2_and_7_plus_GS_plus_8) 155ENDPROC(U3_retl_o2_and_7_plus_GS_plus_8)
156#endif 156#endif
157 157
diff --git a/arch/sparc/lib/multi3.S b/arch/sparc/lib/multi3.S
index d6b6c97fe3c7..703127aaf4a5 100644
--- a/arch/sparc/lib/multi3.S
+++ b/arch/sparc/lib/multi3.S
@@ -5,26 +5,26 @@
5 .align 4 5 .align 4
6ENTRY(__multi3) /* %o0 = u, %o1 = v */ 6ENTRY(__multi3) /* %o0 = u, %o1 = v */
7 mov %o1, %g1 7 mov %o1, %g1
8 srl %o3, 0, %g4 8 srl %o3, 0, %o4
9 mulx %g4, %g1, %o1 9 mulx %o4, %g1, %o1
10 srlx %g1, 0x20, %g3 10 srlx %g1, 0x20, %g3
11 mulx %g3, %g4, %g5 11 mulx %g3, %o4, %g7
12 sllx %g5, 0x20, %o5 12 sllx %g7, 0x20, %o5
13 srl %g1, 0, %g4 13 srl %g1, 0, %o4
14 sub %o1, %o5, %o5 14 sub %o1, %o5, %o5
15 srlx %o5, 0x20, %o5 15 srlx %o5, 0x20, %o5
16 addcc %g5, %o5, %g5 16 addcc %g7, %o5, %g7
17 srlx %o3, 0x20, %o5 17 srlx %o3, 0x20, %o5
18 mulx %g4, %o5, %g4 18 mulx %o4, %o5, %o4
19 mulx %g3, %o5, %o5 19 mulx %g3, %o5, %o5
20 sethi %hi(0x80000000), %g3 20 sethi %hi(0x80000000), %g3
21 addcc %g5, %g4, %g5 21 addcc %g7, %o4, %g7
22 srlx %g5, 0x20, %g5 22 srlx %g7, 0x20, %g7
23 add %g3, %g3, %g3 23 add %g3, %g3, %g3
24 movcc %xcc, %g0, %g3 24 movcc %xcc, %g0, %g3
25 addcc %o5, %g5, %o5 25 addcc %o5, %g7, %o5
26 sllx %g4, 0x20, %g4 26 sllx %o4, 0x20, %o4
27 add %o1, %g4, %o1 27 add %o1, %o4, %o1
28 add %o5, %g3, %g2 28 add %o5, %g3, %g2
29 mulx %g1, %o2, %g1 29 mulx %g1, %o2, %g1
30 add %g1, %g2, %g1 30 add %g1, %g2, %g1
diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c
index 3c40ebd50f92..afa0099f3748 100644
--- a/arch/sparc/mm/init_64.c
+++ b/arch/sparc/mm/init_64.c
@@ -325,6 +325,29 @@ static void __update_mmu_tsb_insert(struct mm_struct *mm, unsigned long tsb_inde
325} 325}
326 326
327#ifdef CONFIG_HUGETLB_PAGE 327#ifdef CONFIG_HUGETLB_PAGE
328static void __init add_huge_page_size(unsigned long size)
329{
330 unsigned int order;
331
332 if (size_to_hstate(size))
333 return;
334
335 order = ilog2(size) - PAGE_SHIFT;
336 hugetlb_add_hstate(order);
337}
338
339static int __init hugetlbpage_init(void)
340{
341 add_huge_page_size(1UL << HPAGE_64K_SHIFT);
342 add_huge_page_size(1UL << HPAGE_SHIFT);
343 add_huge_page_size(1UL << HPAGE_256MB_SHIFT);
344 add_huge_page_size(1UL << HPAGE_2GB_SHIFT);
345
346 return 0;
347}
348
349arch_initcall(hugetlbpage_init);
350
328static int __init setup_hugepagesz(char *string) 351static int __init setup_hugepagesz(char *string)
329{ 352{
330 unsigned long long hugepage_size; 353 unsigned long long hugepage_size;
@@ -364,7 +387,7 @@ static int __init setup_hugepagesz(char *string)
364 goto out; 387 goto out;
365 } 388 }
366 389
367 hugetlb_add_hstate(hugepage_shift - PAGE_SHIFT); 390 add_huge_page_size(hugepage_size);
368 rc = 1; 391 rc = 1;
369 392
370out: 393out:
@@ -1921,12 +1944,22 @@ static void __init setup_page_offset(void)
1921 break; 1944 break;
1922 case SUN4V_CHIP_SPARC_M7: 1945 case SUN4V_CHIP_SPARC_M7:
1923 case SUN4V_CHIP_SPARC_SN: 1946 case SUN4V_CHIP_SPARC_SN:
1924 default:
1925 /* M7 and later support 52-bit virtual addresses. */ 1947 /* M7 and later support 52-bit virtual addresses. */
1926 sparc64_va_hole_top = 0xfff8000000000000UL; 1948 sparc64_va_hole_top = 0xfff8000000000000UL;
1927 sparc64_va_hole_bottom = 0x0008000000000000UL; 1949 sparc64_va_hole_bottom = 0x0008000000000000UL;
1928 max_phys_bits = 49; 1950 max_phys_bits = 49;
1929 break; 1951 break;
1952 case SUN4V_CHIP_SPARC_M8:
1953 default:
1954 /* M8 and later support 54-bit virtual addresses.
1955 * However, restricting M8 and above VA bits to 53
1956 * as 4-level page table cannot support more than
1957 * 53 VA bits.
1958 */
1959 sparc64_va_hole_top = 0xfff0000000000000UL;
1960 sparc64_va_hole_bottom = 0x0010000000000000UL;
1961 max_phys_bits = 51;
1962 break;
1930 } 1963 }
1931 } 1964 }
1932 1965
@@ -2138,6 +2171,7 @@ static void __init sun4v_linear_pte_xor_finalize(void)
2138 */ 2171 */
2139 switch (sun4v_chip_type) { 2172 switch (sun4v_chip_type) {
2140 case SUN4V_CHIP_SPARC_M7: 2173 case SUN4V_CHIP_SPARC_M7:
2174 case SUN4V_CHIP_SPARC_M8:
2141 case SUN4V_CHIP_SPARC_SN: 2175 case SUN4V_CHIP_SPARC_SN:
2142 pagecv_flag = 0x00; 2176 pagecv_flag = 0x00;
2143 break; 2177 break;
@@ -2290,6 +2324,7 @@ void __init paging_init(void)
2290 */ 2324 */
2291 switch (sun4v_chip_type) { 2325 switch (sun4v_chip_type) {
2292 case SUN4V_CHIP_SPARC_M7: 2326 case SUN4V_CHIP_SPARC_M7:
2327 case SUN4V_CHIP_SPARC_M8:
2293 case SUN4V_CHIP_SPARC_SN: 2328 case SUN4V_CHIP_SPARC_SN:
2294 page_cache4v_flag = _PAGE_CP_4V; 2329 page_cache4v_flag = _PAGE_CP_4V;
2295 break; 2330 break;
diff --git a/arch/sparc/power/hibernate.c b/arch/sparc/power/hibernate.c
index 17bd2e167e07..df707a8ad311 100644
--- a/arch/sparc/power/hibernate.c
+++ b/arch/sparc/power/hibernate.c
@@ -35,6 +35,5 @@ void restore_processor_state(void)
35{ 35{
36 struct mm_struct *mm = current->active_mm; 36 struct mm_struct *mm = current->active_mm;
37 37
38 load_secondary_context(mm); 38 tsb_context_switch_ctx(mm, CTX_HWBITS(mm->context));
39 tsb_context_switch(mm);
40} 39}
diff --git a/arch/um/include/asm/tlb.h b/arch/um/include/asm/tlb.h
index 600a2e9bfee2..344d95619d03 100644
--- a/arch/um/include/asm/tlb.h
+++ b/arch/um/include/asm/tlb.h
@@ -45,7 +45,8 @@ static inline void init_tlb_gather(struct mmu_gather *tlb)
45} 45}
46 46
47static inline void 47static inline void
48tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned long start, unsigned long end) 48arch_tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm,
49 unsigned long start, unsigned long end)
49{ 50{
50 tlb->mm = mm; 51 tlb->mm = mm;
51 tlb->start = start; 52 tlb->start = start;
@@ -80,13 +81,19 @@ tlb_flush_mmu(struct mmu_gather *tlb)
80 tlb_flush_mmu_free(tlb); 81 tlb_flush_mmu_free(tlb);
81} 82}
82 83
83/* tlb_finish_mmu 84/* arch_tlb_finish_mmu
84 * Called at the end of the shootdown operation to free up any resources 85 * Called at the end of the shootdown operation to free up any resources
85 * that were required. 86 * that were required.
86 */ 87 */
87static inline void 88static inline void
88tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end) 89arch_tlb_finish_mmu(struct mmu_gather *tlb,
90 unsigned long start, unsigned long end, bool force)
89{ 91{
92 if (force) {
93 tlb->start = start;
94 tlb->end = end;
95 tlb->need_flush = 1;
96 }
90 tlb_flush_mmu(tlb); 97 tlb_flush_mmu(tlb);
91 98
92 /* keep the page table cache within bounds */ 99 /* keep the page table cache within bounds */
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index ff637dedfafa..e4844e934728 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -100,6 +100,7 @@ config X86
100 select GENERIC_STRNCPY_FROM_USER 100 select GENERIC_STRNCPY_FROM_USER
101 select GENERIC_STRNLEN_USER 101 select GENERIC_STRNLEN_USER
102 select GENERIC_TIME_VSYSCALL 102 select GENERIC_TIME_VSYSCALL
103 select HARDLOCKUP_CHECK_TIMESTAMP if X86_64
103 select HAVE_ACPI_APEI if ACPI 104 select HAVE_ACPI_APEI if ACPI
104 select HAVE_ACPI_APEI_NMI if ACPI 105 select HAVE_ACPI_APEI_NMI if ACPI
105 select HAVE_ALIGNED_STRUCT_PAGE if SLUB 106 select HAVE_ALIGNED_STRUCT_PAGE if SLUB
@@ -163,7 +164,7 @@ config X86
163 select HAVE_PCSPKR_PLATFORM 164 select HAVE_PCSPKR_PLATFORM
164 select HAVE_PERF_EVENTS 165 select HAVE_PERF_EVENTS
165 select HAVE_PERF_EVENTS_NMI 166 select HAVE_PERF_EVENTS_NMI
166 select HAVE_HARDLOCKUP_DETECTOR_PERF if HAVE_PERF_EVENTS_NMI 167 select HAVE_HARDLOCKUP_DETECTOR_PERF if PERF_EVENTS && HAVE_PERF_EVENTS_NMI
167 select HAVE_PERF_REGS 168 select HAVE_PERF_REGS
168 select HAVE_PERF_USER_STACK_DUMP 169 select HAVE_PERF_USER_STACK_DUMP
169 select HAVE_REGS_AND_STACK_ACCESS_API 170 select HAVE_REGS_AND_STACK_ACCESS_API
diff --git a/arch/x86/Kconfig.debug b/arch/x86/Kconfig.debug
index fcb7604172ce..cd20ca0b4043 100644
--- a/arch/x86/Kconfig.debug
+++ b/arch/x86/Kconfig.debug
@@ -348,6 +348,7 @@ config X86_DEBUG_FPU
348 348
349config PUNIT_ATOM_DEBUG 349config PUNIT_ATOM_DEBUG
350 tristate "ATOM Punit debug driver" 350 tristate "ATOM Punit debug driver"
351 depends on PCI
351 select DEBUG_FS 352 select DEBUG_FS
352 select IOSF_MBI 353 select IOSF_MBI
353 ---help--- 354 ---help---
diff --git a/arch/x86/boot/Makefile b/arch/x86/boot/Makefile
index 0d810fb15eac..d88a2fddba8c 100644
--- a/arch/x86/boot/Makefile
+++ b/arch/x86/boot/Makefile
@@ -73,12 +73,13 @@ UBSAN_SANITIZE := n
73$(obj)/bzImage: asflags-y := $(SVGA_MODE) 73$(obj)/bzImage: asflags-y := $(SVGA_MODE)
74 74
75quiet_cmd_image = BUILD $@ 75quiet_cmd_image = BUILD $@
76silent_redirect_image = >/dev/null
76cmd_image = $(obj)/tools/build $(obj)/setup.bin $(obj)/vmlinux.bin \ 77cmd_image = $(obj)/tools/build $(obj)/setup.bin $(obj)/vmlinux.bin \
77 $(obj)/zoffset.h $@ 78 $(obj)/zoffset.h $@ $($(quiet)redirect_image)
78 79
79$(obj)/bzImage: $(obj)/setup.bin $(obj)/vmlinux.bin $(obj)/tools/build FORCE 80$(obj)/bzImage: $(obj)/setup.bin $(obj)/vmlinux.bin $(obj)/tools/build FORCE
80 $(call if_changed,image) 81 $(call if_changed,image)
81 @echo 'Kernel: $@ is ready' ' (#'`cat .version`')' 82 @$(kecho) 'Kernel: $@ is ready' ' (#'`cat .version`')'
82 83
83OBJCOPYFLAGS_vmlinux.bin := -O binary -R .note -R .comment -S 84OBJCOPYFLAGS_vmlinux.bin := -O binary -R .note -R .comment -S
84$(obj)/vmlinux.bin: $(obj)/compressed/vmlinux FORCE 85$(obj)/vmlinux.bin: $(obj)/compressed/vmlinux FORCE
diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile
index 2c860ad4fe06..8a958274b54c 100644
--- a/arch/x86/boot/compressed/Makefile
+++ b/arch/x86/boot/compressed/Makefile
@@ -34,6 +34,7 @@ KBUILD_CFLAGS += $(cflags-y)
34KBUILD_CFLAGS += -mno-mmx -mno-sse 34KBUILD_CFLAGS += -mno-mmx -mno-sse
35KBUILD_CFLAGS += $(call cc-option,-ffreestanding) 35KBUILD_CFLAGS += $(call cc-option,-ffreestanding)
36KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector) 36KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
37KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
37 38
38KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__ 39KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
39GCOV_PROFILE := n 40GCOV_PROFILE := n
diff --git a/arch/x86/boot/string.c b/arch/x86/boot/string.c
index 630e3664906b..16f49123d747 100644
--- a/arch/x86/boot/string.c
+++ b/arch/x86/boot/string.c
@@ -16,6 +16,15 @@
16#include "ctype.h" 16#include "ctype.h"
17#include "string.h" 17#include "string.h"
18 18
19/*
20 * Undef these macros so that the functions that we provide
21 * here will have the correct names regardless of how string.h
22 * may have chosen to #define them.
23 */
24#undef memcpy
25#undef memset
26#undef memcmp
27
19int memcmp(const void *s1, const void *s2, size_t len) 28int memcmp(const void *s1, const void *s2, size_t len)
20{ 29{
21 bool diff; 30 bool diff;
diff --git a/arch/x86/configs/i386_defconfig b/arch/x86/configs/i386_defconfig
index 6cf79e1a6830..0eb9f92f3717 100644
--- a/arch/x86/configs/i386_defconfig
+++ b/arch/x86/configs/i386_defconfig
@@ -1,5 +1,4 @@
1# CONFIG_64BIT is not set 1# CONFIG_64BIT is not set
2CONFIG_EXPERIMENTAL=y
3# CONFIG_LOCALVERSION_AUTO is not set 2# CONFIG_LOCALVERSION_AUTO is not set
4CONFIG_SYSVIPC=y 3CONFIG_SYSVIPC=y
5CONFIG_POSIX_MQUEUE=y 4CONFIG_POSIX_MQUEUE=y
@@ -125,7 +124,6 @@ CONFIG_NF_CONNTRACK_IPV4=y
125CONFIG_IP_NF_IPTABLES=y 124CONFIG_IP_NF_IPTABLES=y
126CONFIG_IP_NF_FILTER=y 125CONFIG_IP_NF_FILTER=y
127CONFIG_IP_NF_TARGET_REJECT=y 126CONFIG_IP_NF_TARGET_REJECT=y
128CONFIG_IP_NF_TARGET_ULOG=y
129CONFIG_NF_NAT=y 127CONFIG_NF_NAT=y
130CONFIG_IP_NF_TARGET_MASQUERADE=y 128CONFIG_IP_NF_TARGET_MASQUERADE=y
131CONFIG_IP_NF_MANGLE=y 129CONFIG_IP_NF_MANGLE=y
@@ -255,7 +253,6 @@ CONFIG_USB_OHCI_HCD=y
255CONFIG_USB_UHCI_HCD=y 253CONFIG_USB_UHCI_HCD=y
256CONFIG_USB_PRINTER=y 254CONFIG_USB_PRINTER=y
257CONFIG_USB_STORAGE=y 255CONFIG_USB_STORAGE=y
258CONFIG_USB_LIBUSUAL=y
259CONFIG_EDAC=y 256CONFIG_EDAC=y
260CONFIG_RTC_CLASS=y 257CONFIG_RTC_CLASS=y
261# CONFIG_RTC_HCTOSYS is not set 258# CONFIG_RTC_HCTOSYS is not set
diff --git a/arch/x86/configs/x86_64_defconfig b/arch/x86/configs/x86_64_defconfig
index de45f57b410d..4a4b16e56d35 100644
--- a/arch/x86/configs/x86_64_defconfig
+++ b/arch/x86/configs/x86_64_defconfig
@@ -1,4 +1,3 @@
1CONFIG_EXPERIMENTAL=y
2# CONFIG_LOCALVERSION_AUTO is not set 1# CONFIG_LOCALVERSION_AUTO is not set
3CONFIG_SYSVIPC=y 2CONFIG_SYSVIPC=y
4CONFIG_POSIX_MQUEUE=y 3CONFIG_POSIX_MQUEUE=y
@@ -124,7 +123,6 @@ CONFIG_NF_CONNTRACK_IPV4=y
124CONFIG_IP_NF_IPTABLES=y 123CONFIG_IP_NF_IPTABLES=y
125CONFIG_IP_NF_FILTER=y 124CONFIG_IP_NF_FILTER=y
126CONFIG_IP_NF_TARGET_REJECT=y 125CONFIG_IP_NF_TARGET_REJECT=y
127CONFIG_IP_NF_TARGET_ULOG=y
128CONFIG_NF_NAT=y 126CONFIG_NF_NAT=y
129CONFIG_IP_NF_TARGET_MASQUERADE=y 127CONFIG_IP_NF_TARGET_MASQUERADE=y
130CONFIG_IP_NF_MANGLE=y 128CONFIG_IP_NF_MANGLE=y
@@ -251,7 +249,6 @@ CONFIG_USB_OHCI_HCD=y
251CONFIG_USB_UHCI_HCD=y 249CONFIG_USB_UHCI_HCD=y
252CONFIG_USB_PRINTER=y 250CONFIG_USB_PRINTER=y
253CONFIG_USB_STORAGE=y 251CONFIG_USB_STORAGE=y
254CONFIG_USB_LIBUSUAL=y
255CONFIG_EDAC=y 252CONFIG_EDAC=y
256CONFIG_RTC_CLASS=y 253CONFIG_RTC_CLASS=y
257# CONFIG_RTC_HCTOSYS is not set 254# CONFIG_RTC_HCTOSYS is not set
diff --git a/arch/x86/crypto/sha1_avx2_x86_64_asm.S b/arch/x86/crypto/sha1_avx2_x86_64_asm.S
index 1cd792db15ef..1eab79c9ac48 100644
--- a/arch/x86/crypto/sha1_avx2_x86_64_asm.S
+++ b/arch/x86/crypto/sha1_avx2_x86_64_asm.S
@@ -117,11 +117,10 @@
117 .set T1, REG_T1 117 .set T1, REG_T1
118.endm 118.endm
119 119
120#define K_BASE %r8
121#define HASH_PTR %r9 120#define HASH_PTR %r9
121#define BLOCKS_CTR %r8
122#define BUFFER_PTR %r10 122#define BUFFER_PTR %r10
123#define BUFFER_PTR2 %r13 123#define BUFFER_PTR2 %r13
124#define BUFFER_END %r11
125 124
126#define PRECALC_BUF %r14 125#define PRECALC_BUF %r14
127#define WK_BUF %r15 126#define WK_BUF %r15
@@ -205,14 +204,14 @@
205 * blended AVX2 and ALU instruction scheduling 204 * blended AVX2 and ALU instruction scheduling
206 * 1 vector iteration per 8 rounds 205 * 1 vector iteration per 8 rounds
207 */ 206 */
208 vmovdqu ((i * 2) + PRECALC_OFFSET)(BUFFER_PTR), W_TMP 207 vmovdqu (i * 2)(BUFFER_PTR), W_TMP
209 .elseif ((i & 7) == 1) 208 .elseif ((i & 7) == 1)
210 vinsertf128 $1, (((i-1) * 2)+PRECALC_OFFSET)(BUFFER_PTR2),\ 209 vinsertf128 $1, ((i-1) * 2)(BUFFER_PTR2),\
211 WY_TMP, WY_TMP 210 WY_TMP, WY_TMP
212 .elseif ((i & 7) == 2) 211 .elseif ((i & 7) == 2)
213 vpshufb YMM_SHUFB_BSWAP, WY_TMP, WY 212 vpshufb YMM_SHUFB_BSWAP, WY_TMP, WY
214 .elseif ((i & 7) == 4) 213 .elseif ((i & 7) == 4)
215 vpaddd K_XMM(K_BASE), WY, WY_TMP 214 vpaddd K_XMM + K_XMM_AR(%rip), WY, WY_TMP
216 .elseif ((i & 7) == 7) 215 .elseif ((i & 7) == 7)
217 vmovdqu WY_TMP, PRECALC_WK(i&~7) 216 vmovdqu WY_TMP, PRECALC_WK(i&~7)
218 217
@@ -255,7 +254,7 @@
255 vpxor WY, WY_TMP, WY_TMP 254 vpxor WY, WY_TMP, WY_TMP
256 .elseif ((i & 7) == 7) 255 .elseif ((i & 7) == 7)
257 vpxor WY_TMP2, WY_TMP, WY 256 vpxor WY_TMP2, WY_TMP, WY
258 vpaddd K_XMM(K_BASE), WY, WY_TMP 257 vpaddd K_XMM + K_XMM_AR(%rip), WY, WY_TMP
259 vmovdqu WY_TMP, PRECALC_WK(i&~7) 258 vmovdqu WY_TMP, PRECALC_WK(i&~7)
260 259
261 PRECALC_ROTATE_WY 260 PRECALC_ROTATE_WY
@@ -291,7 +290,7 @@
291 vpsrld $30, WY, WY 290 vpsrld $30, WY, WY
292 vpor WY, WY_TMP, WY 291 vpor WY, WY_TMP, WY
293 .elseif ((i & 7) == 7) 292 .elseif ((i & 7) == 7)
294 vpaddd K_XMM(K_BASE), WY, WY_TMP 293 vpaddd K_XMM + K_XMM_AR(%rip), WY, WY_TMP
295 vmovdqu WY_TMP, PRECALC_WK(i&~7) 294 vmovdqu WY_TMP, PRECALC_WK(i&~7)
296 295
297 PRECALC_ROTATE_WY 296 PRECALC_ROTATE_WY
@@ -446,6 +445,16 @@
446 445
447.endm 446.endm
448 447
448/* Add constant only if (%2 > %3) condition met (uses RTA as temp)
449 * %1 + %2 >= %3 ? %4 : 0
450 */
451.macro ADD_IF_GE a, b, c, d
452 mov \a, RTA
453 add $\d, RTA
454 cmp $\c, \b
455 cmovge RTA, \a
456.endm
457
449/* 458/*
450 * macro implements 80 rounds of SHA-1, for multiple blocks with s/w pipelining 459 * macro implements 80 rounds of SHA-1, for multiple blocks with s/w pipelining
451 */ 460 */
@@ -463,13 +472,16 @@
463 lea (2*4*80+32)(%rsp), WK_BUF 472 lea (2*4*80+32)(%rsp), WK_BUF
464 473
465 # Precalc WK for first 2 blocks 474 # Precalc WK for first 2 blocks
466 PRECALC_OFFSET = 0 475 ADD_IF_GE BUFFER_PTR2, BLOCKS_CTR, 2, 64
467 .set i, 0 476 .set i, 0
468 .rept 160 477 .rept 160
469 PRECALC i 478 PRECALC i
470 .set i, i + 1 479 .set i, i + 1
471 .endr 480 .endr
472 PRECALC_OFFSET = 128 481
482 /* Go to next block if needed */
483 ADD_IF_GE BUFFER_PTR, BLOCKS_CTR, 3, 128
484 ADD_IF_GE BUFFER_PTR2, BLOCKS_CTR, 4, 128
473 xchg WK_BUF, PRECALC_BUF 485 xchg WK_BUF, PRECALC_BUF
474 486
475 .align 32 487 .align 32
@@ -479,8 +491,8 @@ _loop:
479 * we use K_BASE value as a signal of a last block, 491 * we use K_BASE value as a signal of a last block,
480 * it is set below by: cmovae BUFFER_PTR, K_BASE 492 * it is set below by: cmovae BUFFER_PTR, K_BASE
481 */ 493 */
482 cmp K_BASE, BUFFER_PTR 494 test BLOCKS_CTR, BLOCKS_CTR
483 jne _begin 495 jnz _begin
484 .align 32 496 .align 32
485 jmp _end 497 jmp _end
486 .align 32 498 .align 32
@@ -512,10 +524,10 @@ _loop0:
512 .set j, j+2 524 .set j, j+2
513 .endr 525 .endr
514 526
515 add $(2*64), BUFFER_PTR /* move to next odd-64-byte block */ 527 /* Update Counter */
516 cmp BUFFER_END, BUFFER_PTR /* is current block the last one? */ 528 sub $1, BLOCKS_CTR
517 cmovae K_BASE, BUFFER_PTR /* signal the last iteration smartly */ 529 /* Move to the next block only if needed*/
518 530 ADD_IF_GE BUFFER_PTR, BLOCKS_CTR, 4, 128
519 /* 531 /*
520 * rounds 532 * rounds
521 * 60,62,64,66,68 533 * 60,62,64,66,68
@@ -532,8 +544,8 @@ _loop0:
532 UPDATE_HASH 12(HASH_PTR), D 544 UPDATE_HASH 12(HASH_PTR), D
533 UPDATE_HASH 16(HASH_PTR), E 545 UPDATE_HASH 16(HASH_PTR), E
534 546
535 cmp K_BASE, BUFFER_PTR /* is current block the last one? */ 547 test BLOCKS_CTR, BLOCKS_CTR
536 je _loop 548 jz _loop
537 549
538 mov TB, B 550 mov TB, B
539 551
@@ -575,10 +587,10 @@ _loop2:
575 .set j, j+2 587 .set j, j+2
576 .endr 588 .endr
577 589
578 add $(2*64), BUFFER_PTR2 /* move to next even-64-byte block */ 590 /* update counter */
579 591 sub $1, BLOCKS_CTR
580 cmp BUFFER_END, BUFFER_PTR2 /* is current block the last one */ 592 /* Move to the next block only if needed*/
581 cmovae K_BASE, BUFFER_PTR /* signal the last iteration smartly */ 593 ADD_IF_GE BUFFER_PTR2, BLOCKS_CTR, 4, 128
582 594
583 jmp _loop3 595 jmp _loop3
584_loop3: 596_loop3:
@@ -641,19 +653,12 @@ _loop3:
641 653
642 avx2_zeroupper 654 avx2_zeroupper
643 655
644 lea K_XMM_AR(%rip), K_BASE 656 /* Setup initial values */
645
646 mov CTX, HASH_PTR 657 mov CTX, HASH_PTR
647 mov BUF, BUFFER_PTR 658 mov BUF, BUFFER_PTR
648 lea 64(BUF), BUFFER_PTR2
649
650 shl $6, CNT /* mul by 64 */
651 add BUF, CNT
652 add $64, CNT
653 mov CNT, BUFFER_END
654 659
655 cmp BUFFER_END, BUFFER_PTR2 660 mov BUF, BUFFER_PTR2
656 cmovae K_BASE, BUFFER_PTR2 661 mov CNT, BLOCKS_CTR
657 662
658 xmm_mov BSWAP_SHUFB_CTL(%rip), YMM_SHUFB_BSWAP 663 xmm_mov BSWAP_SHUFB_CTL(%rip), YMM_SHUFB_BSWAP
659 664
diff --git a/arch/x86/crypto/sha1_ssse3_glue.c b/arch/x86/crypto/sha1_ssse3_glue.c
index f960a043cdeb..fc61739150e7 100644
--- a/arch/x86/crypto/sha1_ssse3_glue.c
+++ b/arch/x86/crypto/sha1_ssse3_glue.c
@@ -201,7 +201,7 @@ asmlinkage void sha1_transform_avx2(u32 *digest, const char *data,
201 201
202static bool avx2_usable(void) 202static bool avx2_usable(void)
203{ 203{
204 if (false && avx_usable() && boot_cpu_has(X86_FEATURE_AVX2) 204 if (avx_usable() && boot_cpu_has(X86_FEATURE_AVX2)
205 && boot_cpu_has(X86_FEATURE_BMI1) 205 && boot_cpu_has(X86_FEATURE_BMI1)
206 && boot_cpu_has(X86_FEATURE_BMI2)) 206 && boot_cpu_has(X86_FEATURE_BMI2))
207 return true; 207 return true;
diff --git a/arch/x86/entry/entry_64.S b/arch/x86/entry/entry_64.S
index a9a8027a6c0e..6d078b89a5e8 100644
--- a/arch/x86/entry/entry_64.S
+++ b/arch/x86/entry/entry_64.S
@@ -705,6 +705,7 @@ apicinterrupt X86_PLATFORM_IPI_VECTOR x86_platform_ipi smp_x86_platform_ipi
705#ifdef CONFIG_HAVE_KVM 705#ifdef CONFIG_HAVE_KVM
706apicinterrupt3 POSTED_INTR_VECTOR kvm_posted_intr_ipi smp_kvm_posted_intr_ipi 706apicinterrupt3 POSTED_INTR_VECTOR kvm_posted_intr_ipi smp_kvm_posted_intr_ipi
707apicinterrupt3 POSTED_INTR_WAKEUP_VECTOR kvm_posted_intr_wakeup_ipi smp_kvm_posted_intr_wakeup_ipi 707apicinterrupt3 POSTED_INTR_WAKEUP_VECTOR kvm_posted_intr_wakeup_ipi smp_kvm_posted_intr_wakeup_ipi
708apicinterrupt3 POSTED_INTR_NESTED_VECTOR kvm_posted_intr_nested_ipi smp_kvm_posted_intr_nested_ipi
708#endif 709#endif
709 710
710#ifdef CONFIG_X86_MCE_THRESHOLD 711#ifdef CONFIG_X86_MCE_THRESHOLD
@@ -1210,6 +1211,8 @@ ENTRY(nmi)
1210 * other IST entries. 1211 * other IST entries.
1211 */ 1212 */
1212 1213
1214 ASM_CLAC
1215
1213 /* Use %rdx as our temp variable throughout */ 1216 /* Use %rdx as our temp variable throughout */
1214 pushq %rdx 1217 pushq %rdx
1215 1218
diff --git a/arch/x86/events/core.c b/arch/x86/events/core.c
index ff1ea2fb9705..af12e294caed 100644
--- a/arch/x86/events/core.c
+++ b/arch/x86/events/core.c
@@ -191,8 +191,8 @@ static void release_pmc_hardware(void) {}
191 191
192static bool check_hw_exists(void) 192static bool check_hw_exists(void)
193{ 193{
194 u64 val, val_fail, val_new= ~0; 194 u64 val, val_fail = -1, val_new= ~0;
195 int i, reg, reg_fail, ret = 0; 195 int i, reg, reg_fail = -1, ret = 0;
196 int bios_fail = 0; 196 int bios_fail = 0;
197 int reg_safe = -1; 197 int reg_safe = -1;
198 198
@@ -2114,7 +2114,7 @@ static void refresh_pce(void *ignored)
2114 load_mm_cr4(this_cpu_read(cpu_tlbstate.loaded_mm)); 2114 load_mm_cr4(this_cpu_read(cpu_tlbstate.loaded_mm));
2115} 2115}
2116 2116
2117static void x86_pmu_event_mapped(struct perf_event *event) 2117static void x86_pmu_event_mapped(struct perf_event *event, struct mm_struct *mm)
2118{ 2118{
2119 if (!(event->hw.flags & PERF_X86_EVENT_RDPMC_ALLOWED)) 2119 if (!(event->hw.flags & PERF_X86_EVENT_RDPMC_ALLOWED))
2120 return; 2120 return;
@@ -2129,22 +2129,20 @@ static void x86_pmu_event_mapped(struct perf_event *event)
2129 * For now, this can't happen because all callers hold mmap_sem 2129 * For now, this can't happen because all callers hold mmap_sem
2130 * for write. If this changes, we'll need a different solution. 2130 * for write. If this changes, we'll need a different solution.
2131 */ 2131 */
2132 lockdep_assert_held_exclusive(&current->mm->mmap_sem); 2132 lockdep_assert_held_exclusive(&mm->mmap_sem);
2133 2133
2134 if (atomic_inc_return(&current->mm->context.perf_rdpmc_allowed) == 1) 2134 if (atomic_inc_return(&mm->context.perf_rdpmc_allowed) == 1)
2135 on_each_cpu_mask(mm_cpumask(current->mm), refresh_pce, NULL, 1); 2135 on_each_cpu_mask(mm_cpumask(mm), refresh_pce, NULL, 1);
2136} 2136}
2137 2137
2138static void x86_pmu_event_unmapped(struct perf_event *event) 2138static void x86_pmu_event_unmapped(struct perf_event *event, struct mm_struct *mm)
2139{ 2139{
2140 if (!current->mm)
2141 return;
2142 2140
2143 if (!(event->hw.flags & PERF_X86_EVENT_RDPMC_ALLOWED)) 2141 if (!(event->hw.flags & PERF_X86_EVENT_RDPMC_ALLOWED))
2144 return; 2142 return;
2145 2143
2146 if (atomic_dec_and_test(&current->mm->context.perf_rdpmc_allowed)) 2144 if (atomic_dec_and_test(&mm->context.perf_rdpmc_allowed))
2147 on_each_cpu_mask(mm_cpumask(current->mm), refresh_pce, NULL, 1); 2145 on_each_cpu_mask(mm_cpumask(mm), refresh_pce, NULL, 1);
2148} 2146}
2149 2147
2150static int x86_pmu_event_idx(struct perf_event *event) 2148static int x86_pmu_event_idx(struct perf_event *event)
diff --git a/arch/x86/events/intel/bts.c b/arch/x86/events/intel/bts.c
index 8ae8c5ce3a1f..ddd8d3516bfc 100644
--- a/arch/x86/events/intel/bts.c
+++ b/arch/x86/events/intel/bts.c
@@ -69,7 +69,7 @@ struct bts_buffer {
69 struct bts_phys buf[0]; 69 struct bts_phys buf[0];
70}; 70};
71 71
72struct pmu bts_pmu; 72static struct pmu bts_pmu;
73 73
74static size_t buf_size(struct page *page) 74static size_t buf_size(struct page *page)
75{ 75{
diff --git a/arch/x86/events/intel/core.c b/arch/x86/events/intel/core.c
index aa62437d1aa1..98b0f0729527 100644
--- a/arch/x86/events/intel/core.c
+++ b/arch/x86/events/intel/core.c
@@ -1708,6 +1708,120 @@ static __initconst const u64 glm_hw_cache_extra_regs
1708 }, 1708 },
1709}; 1709};
1710 1710
1711static __initconst const u64 glp_hw_cache_event_ids
1712 [PERF_COUNT_HW_CACHE_MAX]
1713 [PERF_COUNT_HW_CACHE_OP_MAX]
1714 [PERF_COUNT_HW_CACHE_RESULT_MAX] = {
1715 [C(L1D)] = {
1716 [C(OP_READ)] = {
1717 [C(RESULT_ACCESS)] = 0x81d0, /* MEM_UOPS_RETIRED.ALL_LOADS */
1718 [C(RESULT_MISS)] = 0x0,
1719 },
1720 [C(OP_WRITE)] = {
1721 [C(RESULT_ACCESS)] = 0x82d0, /* MEM_UOPS_RETIRED.ALL_STORES */
1722 [C(RESULT_MISS)] = 0x0,
1723 },
1724 [C(OP_PREFETCH)] = {
1725 [C(RESULT_ACCESS)] = 0x0,
1726 [C(RESULT_MISS)] = 0x0,
1727 },
1728 },
1729 [C(L1I)] = {
1730 [C(OP_READ)] = {
1731 [C(RESULT_ACCESS)] = 0x0380, /* ICACHE.ACCESSES */
1732 [C(RESULT_MISS)] = 0x0280, /* ICACHE.MISSES */
1733 },
1734 [C(OP_WRITE)] = {
1735 [C(RESULT_ACCESS)] = -1,
1736 [C(RESULT_MISS)] = -1,
1737 },
1738 [C(OP_PREFETCH)] = {
1739 [C(RESULT_ACCESS)] = 0x0,
1740 [C(RESULT_MISS)] = 0x0,
1741 },
1742 },
1743 [C(LL)] = {
1744 [C(OP_READ)] = {
1745 [C(RESULT_ACCESS)] = 0x1b7, /* OFFCORE_RESPONSE */
1746 [C(RESULT_MISS)] = 0x1b7, /* OFFCORE_RESPONSE */
1747 },
1748 [C(OP_WRITE)] = {
1749 [C(RESULT_ACCESS)] = 0x1b7, /* OFFCORE_RESPONSE */
1750 [C(RESULT_MISS)] = 0x1b7, /* OFFCORE_RESPONSE */
1751 },
1752 [C(OP_PREFETCH)] = {
1753 [C(RESULT_ACCESS)] = 0x0,
1754 [C(RESULT_MISS)] = 0x0,
1755 },
1756 },
1757 [C(DTLB)] = {
1758 [C(OP_READ)] = {
1759 [C(RESULT_ACCESS)] = 0x81d0, /* MEM_UOPS_RETIRED.ALL_LOADS */
1760 [C(RESULT_MISS)] = 0xe08, /* DTLB_LOAD_MISSES.WALK_COMPLETED */
1761 },
1762 [C(OP_WRITE)] = {
1763 [C(RESULT_ACCESS)] = 0x82d0, /* MEM_UOPS_RETIRED.ALL_STORES */
1764 [C(RESULT_MISS)] = 0xe49, /* DTLB_STORE_MISSES.WALK_COMPLETED */
1765 },
1766 [C(OP_PREFETCH)] = {
1767 [C(RESULT_ACCESS)] = 0x0,
1768 [C(RESULT_MISS)] = 0x0,
1769 },
1770 },
1771 [C(ITLB)] = {
1772 [C(OP_READ)] = {
1773 [C(RESULT_ACCESS)] = 0x00c0, /* INST_RETIRED.ANY_P */
1774 [C(RESULT_MISS)] = 0x0481, /* ITLB.MISS */
1775 },
1776 [C(OP_WRITE)] = {
1777 [C(RESULT_ACCESS)] = -1,
1778 [C(RESULT_MISS)] = -1,
1779 },
1780 [C(OP_PREFETCH)] = {
1781 [C(RESULT_ACCESS)] = -1,
1782 [C(RESULT_MISS)] = -1,
1783 },
1784 },
1785 [C(BPU)] = {
1786 [C(OP_READ)] = {
1787 [C(RESULT_ACCESS)] = 0x00c4, /* BR_INST_RETIRED.ALL_BRANCHES */
1788 [C(RESULT_MISS)] = 0x00c5, /* BR_MISP_RETIRED.ALL_BRANCHES */
1789 },
1790 [C(OP_WRITE)] = {
1791 [C(RESULT_ACCESS)] = -1,
1792 [C(RESULT_MISS)] = -1,
1793 },
1794 [C(OP_PREFETCH)] = {
1795 [C(RESULT_ACCESS)] = -1,
1796 [C(RESULT_MISS)] = -1,
1797 },
1798 },
1799};
1800
1801static __initconst const u64 glp_hw_cache_extra_regs
1802 [PERF_COUNT_HW_CACHE_MAX]
1803 [PERF_COUNT_HW_CACHE_OP_MAX]
1804 [PERF_COUNT_HW_CACHE_RESULT_MAX] = {
1805 [C(LL)] = {
1806 [C(OP_READ)] = {
1807 [C(RESULT_ACCESS)] = GLM_DEMAND_READ|
1808 GLM_LLC_ACCESS,
1809 [C(RESULT_MISS)] = GLM_DEMAND_READ|
1810 GLM_LLC_MISS,
1811 },
1812 [C(OP_WRITE)] = {
1813 [C(RESULT_ACCESS)] = GLM_DEMAND_WRITE|
1814 GLM_LLC_ACCESS,
1815 [C(RESULT_MISS)] = GLM_DEMAND_WRITE|
1816 GLM_LLC_MISS,
1817 },
1818 [C(OP_PREFETCH)] = {
1819 [C(RESULT_ACCESS)] = 0x0,
1820 [C(RESULT_MISS)] = 0x0,
1821 },
1822 },
1823};
1824
1711#define KNL_OT_L2_HITE BIT_ULL(19) /* Other Tile L2 Hit */ 1825#define KNL_OT_L2_HITE BIT_ULL(19) /* Other Tile L2 Hit */
1712#define KNL_OT_L2_HITF BIT_ULL(20) /* Other Tile L2 Hit */ 1826#define KNL_OT_L2_HITF BIT_ULL(20) /* Other Tile L2 Hit */
1713#define KNL_MCDRAM_LOCAL BIT_ULL(21) 1827#define KNL_MCDRAM_LOCAL BIT_ULL(21)
@@ -3016,6 +3130,9 @@ static int hsw_hw_config(struct perf_event *event)
3016 return 0; 3130 return 0;
3017} 3131}
3018 3132
3133static struct event_constraint counter0_constraint =
3134 INTEL_ALL_EVENT_CONSTRAINT(0, 0x1);
3135
3019static struct event_constraint counter2_constraint = 3136static struct event_constraint counter2_constraint =
3020 EVENT_CONSTRAINT(0, 0x4, 0); 3137 EVENT_CONSTRAINT(0, 0x4, 0);
3021 3138
@@ -3037,6 +3154,21 @@ hsw_get_event_constraints(struct cpu_hw_events *cpuc, int idx,
3037 return c; 3154 return c;
3038} 3155}
3039 3156
3157static struct event_constraint *
3158glp_get_event_constraints(struct cpu_hw_events *cpuc, int idx,
3159 struct perf_event *event)
3160{
3161 struct event_constraint *c;
3162
3163 /* :ppp means to do reduced skid PEBS which is PMC0 only. */
3164 if (event->attr.precise_ip == 3)
3165 return &counter0_constraint;
3166
3167 c = intel_get_event_constraints(cpuc, idx, event);
3168
3169 return c;
3170}
3171
3040/* 3172/*
3041 * Broadwell: 3173 * Broadwell:
3042 * 3174 *
@@ -3265,10 +3397,8 @@ static void intel_pmu_cpu_dying(int cpu)
3265static void intel_pmu_sched_task(struct perf_event_context *ctx, 3397static void intel_pmu_sched_task(struct perf_event_context *ctx,
3266 bool sched_in) 3398 bool sched_in)
3267{ 3399{
3268 if (x86_pmu.pebs_active) 3400 intel_pmu_pebs_sched_task(ctx, sched_in);
3269 intel_pmu_pebs_sched_task(ctx, sched_in); 3401 intel_pmu_lbr_sched_task(ctx, sched_in);
3270 if (x86_pmu.lbr_nr)
3271 intel_pmu_lbr_sched_task(ctx, sched_in);
3272} 3402}
3273 3403
3274PMU_FORMAT_ATTR(offcore_rsp, "config1:0-63"); 3404PMU_FORMAT_ATTR(offcore_rsp, "config1:0-63");
@@ -3838,6 +3968,32 @@ __init int intel_pmu_init(void)
3838 pr_cont("Goldmont events, "); 3968 pr_cont("Goldmont events, ");
3839 break; 3969 break;
3840 3970
3971 case INTEL_FAM6_ATOM_GEMINI_LAKE:
3972 memcpy(hw_cache_event_ids, glp_hw_cache_event_ids,
3973 sizeof(hw_cache_event_ids));
3974 memcpy(hw_cache_extra_regs, glp_hw_cache_extra_regs,
3975 sizeof(hw_cache_extra_regs));
3976
3977 intel_pmu_lbr_init_skl();
3978
3979 x86_pmu.event_constraints = intel_slm_event_constraints;
3980 x86_pmu.pebs_constraints = intel_glp_pebs_event_constraints;
3981 x86_pmu.extra_regs = intel_glm_extra_regs;
3982 /*
3983 * It's recommended to use CPU_CLK_UNHALTED.CORE_P + NPEBS
3984 * for precise cycles.
3985 */
3986 x86_pmu.pebs_aliases = NULL;
3987 x86_pmu.pebs_prec_dist = true;
3988 x86_pmu.lbr_pt_coexist = true;
3989 x86_pmu.flags |= PMU_FL_HAS_RSP_1;
3990 x86_pmu.get_event_constraints = glp_get_event_constraints;
3991 x86_pmu.cpu_events = glm_events_attrs;
3992 /* Goldmont Plus has 4-wide pipeline */
3993 event_attr_td_total_slots_scale_glm.event_str = "4";
3994 pr_cont("Goldmont plus events, ");
3995 break;
3996
3841 case INTEL_FAM6_WESTMERE: 3997 case INTEL_FAM6_WESTMERE:
3842 case INTEL_FAM6_WESTMERE_EP: 3998 case INTEL_FAM6_WESTMERE_EP:
3843 case INTEL_FAM6_WESTMERE_EX: 3999 case INTEL_FAM6_WESTMERE_EX:
diff --git a/arch/x86/events/intel/cstate.c b/arch/x86/events/intel/cstate.c
index 238ae3248ba5..4cf100ff2a37 100644
--- a/arch/x86/events/intel/cstate.c
+++ b/arch/x86/events/intel/cstate.c
@@ -40,16 +40,16 @@
40 * Model specific counters: 40 * Model specific counters:
41 * MSR_CORE_C1_RES: CORE C1 Residency Counter 41 * MSR_CORE_C1_RES: CORE C1 Residency Counter
42 * perf code: 0x00 42 * perf code: 0x00
43 * Available model: SLM,AMT 43 * Available model: SLM,AMT,GLM
44 * Scope: Core (each processor core has a MSR) 44 * Scope: Core (each processor core has a MSR)
45 * MSR_CORE_C3_RESIDENCY: CORE C3 Residency Counter 45 * MSR_CORE_C3_RESIDENCY: CORE C3 Residency Counter
46 * perf code: 0x01 46 * perf code: 0x01
47 * Available model: NHM,WSM,SNB,IVB,HSW,BDW,SKL 47 * Available model: NHM,WSM,SNB,IVB,HSW,BDW,SKL,GLM
48 * Scope: Core 48 * Scope: Core
49 * MSR_CORE_C6_RESIDENCY: CORE C6 Residency Counter 49 * MSR_CORE_C6_RESIDENCY: CORE C6 Residency Counter
50 * perf code: 0x02 50 * perf code: 0x02
51 * Available model: SLM,AMT,NHM,WSM,SNB,IVB,HSW,BDW 51 * Available model: SLM,AMT,NHM,WSM,SNB,IVB,HSW,BDW
52 * SKL,KNL 52 * SKL,KNL,GLM
53 * Scope: Core 53 * Scope: Core
54 * MSR_CORE_C7_RESIDENCY: CORE C7 Residency Counter 54 * MSR_CORE_C7_RESIDENCY: CORE C7 Residency Counter
55 * perf code: 0x03 55 * perf code: 0x03
@@ -57,16 +57,17 @@
57 * Scope: Core 57 * Scope: Core
58 * MSR_PKG_C2_RESIDENCY: Package C2 Residency Counter. 58 * MSR_PKG_C2_RESIDENCY: Package C2 Residency Counter.
59 * perf code: 0x00 59 * perf code: 0x00
60 * Available model: SNB,IVB,HSW,BDW,SKL,KNL 60 * Available model: SNB,IVB,HSW,BDW,SKL,KNL,GLM
61 * Scope: Package (physical package) 61 * Scope: Package (physical package)
62 * MSR_PKG_C3_RESIDENCY: Package C3 Residency Counter. 62 * MSR_PKG_C3_RESIDENCY: Package C3 Residency Counter.
63 * perf code: 0x01 63 * perf code: 0x01
64 * Available model: NHM,WSM,SNB,IVB,HSW,BDW,SKL,KNL 64 * Available model: NHM,WSM,SNB,IVB,HSW,BDW,SKL,KNL
65 * GLM
65 * Scope: Package (physical package) 66 * Scope: Package (physical package)
66 * MSR_PKG_C6_RESIDENCY: Package C6 Residency Counter. 67 * MSR_PKG_C6_RESIDENCY: Package C6 Residency Counter.
67 * perf code: 0x02 68 * perf code: 0x02
68 * Available model: SLM,AMT,NHM,WSM,SNB,IVB,HSW,BDW 69 * Available model: SLM,AMT,NHM,WSM,SNB,IVB,HSW,BDW
69 * SKL,KNL 70 * SKL,KNL,GLM
70 * Scope: Package (physical package) 71 * Scope: Package (physical package)
71 * MSR_PKG_C7_RESIDENCY: Package C7 Residency Counter. 72 * MSR_PKG_C7_RESIDENCY: Package C7 Residency Counter.
72 * perf code: 0x03 73 * perf code: 0x03
@@ -82,7 +83,7 @@
82 * Scope: Package (physical package) 83 * Scope: Package (physical package)
83 * MSR_PKG_C10_RESIDENCY: Package C10 Residency Counter. 84 * MSR_PKG_C10_RESIDENCY: Package C10 Residency Counter.
84 * perf code: 0x06 85 * perf code: 0x06
85 * Available model: HSW ULT only 86 * Available model: HSW ULT, GLM
86 * Scope: Package (physical package) 87 * Scope: Package (physical package)
87 * 88 *
88 */ 89 */
@@ -504,6 +505,17 @@ static const struct cstate_model knl_cstates __initconst = {
504}; 505};
505 506
506 507
508static const struct cstate_model glm_cstates __initconst = {
509 .core_events = BIT(PERF_CSTATE_CORE_C1_RES) |
510 BIT(PERF_CSTATE_CORE_C3_RES) |
511 BIT(PERF_CSTATE_CORE_C6_RES),
512
513 .pkg_events = BIT(PERF_CSTATE_PKG_C2_RES) |
514 BIT(PERF_CSTATE_PKG_C3_RES) |
515 BIT(PERF_CSTATE_PKG_C6_RES) |
516 BIT(PERF_CSTATE_PKG_C10_RES),
517};
518
507 519
508#define X86_CSTATES_MODEL(model, states) \ 520#define X86_CSTATES_MODEL(model, states) \
509 { X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, (unsigned long) &(states) } 521 { X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, (unsigned long) &(states) }
@@ -546,6 +558,8 @@ static const struct x86_cpu_id intel_cstates_match[] __initconst = {
546 558
547 X86_CSTATES_MODEL(INTEL_FAM6_XEON_PHI_KNL, knl_cstates), 559 X86_CSTATES_MODEL(INTEL_FAM6_XEON_PHI_KNL, knl_cstates),
548 X86_CSTATES_MODEL(INTEL_FAM6_XEON_PHI_KNM, knl_cstates), 560 X86_CSTATES_MODEL(INTEL_FAM6_XEON_PHI_KNM, knl_cstates),
561
562 X86_CSTATES_MODEL(INTEL_FAM6_ATOM_GOLDMONT, glm_cstates),
549 { }, 563 { },
550}; 564};
551MODULE_DEVICE_TABLE(x86cpu, intel_cstates_match); 565MODULE_DEVICE_TABLE(x86cpu, intel_cstates_match);
diff --git a/arch/x86/events/intel/ds.c b/arch/x86/events/intel/ds.c
index c6d23ffe422d..a322fed5f8ed 100644
--- a/arch/x86/events/intel/ds.c
+++ b/arch/x86/events/intel/ds.c
@@ -606,12 +606,6 @@ static inline void intel_pmu_drain_pebs_buffer(void)
606 x86_pmu.drain_pebs(&regs); 606 x86_pmu.drain_pebs(&regs);
607} 607}
608 608
609void intel_pmu_pebs_sched_task(struct perf_event_context *ctx, bool sched_in)
610{
611 if (!sched_in)
612 intel_pmu_drain_pebs_buffer();
613}
614
615/* 609/*
616 * PEBS 610 * PEBS
617 */ 611 */
@@ -651,6 +645,12 @@ struct event_constraint intel_glm_pebs_event_constraints[] = {
651 EVENT_CONSTRAINT_END 645 EVENT_CONSTRAINT_END
652}; 646};
653 647
648struct event_constraint intel_glp_pebs_event_constraints[] = {
649 /* Allow all events as PEBS with no flags */
650 INTEL_ALL_EVENT_CONSTRAINT(0, 0xf),
651 EVENT_CONSTRAINT_END
652};
653
654struct event_constraint intel_nehalem_pebs_event_constraints[] = { 654struct event_constraint intel_nehalem_pebs_event_constraints[] = {
655 INTEL_PLD_CONSTRAINT(0x100b, 0xf), /* MEM_INST_RETIRED.* */ 655 INTEL_PLD_CONSTRAINT(0x100b, 0xf), /* MEM_INST_RETIRED.* */
656 INTEL_FLAGS_EVENT_CONSTRAINT(0x0f, 0xf), /* MEM_UNCORE_RETIRED.* */ 656 INTEL_FLAGS_EVENT_CONSTRAINT(0x0f, 0xf), /* MEM_UNCORE_RETIRED.* */
@@ -816,6 +816,14 @@ static inline bool pebs_needs_sched_cb(struct cpu_hw_events *cpuc)
816 return cpuc->n_pebs && (cpuc->n_pebs == cpuc->n_large_pebs); 816 return cpuc->n_pebs && (cpuc->n_pebs == cpuc->n_large_pebs);
817} 817}
818 818
819void intel_pmu_pebs_sched_task(struct perf_event_context *ctx, bool sched_in)
820{
821 struct cpu_hw_events *cpuc = this_cpu_ptr(&cpu_hw_events);
822
823 if (!sched_in && pebs_needs_sched_cb(cpuc))
824 intel_pmu_drain_pebs_buffer();
825}
826
819static inline void pebs_update_threshold(struct cpu_hw_events *cpuc) 827static inline void pebs_update_threshold(struct cpu_hw_events *cpuc)
820{ 828{
821 struct debug_store *ds = cpuc->ds; 829 struct debug_store *ds = cpuc->ds;
@@ -889,6 +897,8 @@ void intel_pmu_pebs_enable(struct perf_event *event)
889 if (hwc->flags & PERF_X86_EVENT_AUTO_RELOAD) { 897 if (hwc->flags & PERF_X86_EVENT_AUTO_RELOAD) {
890 ds->pebs_event_reset[hwc->idx] = 898 ds->pebs_event_reset[hwc->idx] =
891 (u64)(-hwc->sample_period) & x86_pmu.cntval_mask; 899 (u64)(-hwc->sample_period) & x86_pmu.cntval_mask;
900 } else {
901 ds->pebs_event_reset[hwc->idx] = 0;
892 } 902 }
893} 903}
894 904
diff --git a/arch/x86/events/intel/lbr.c b/arch/x86/events/intel/lbr.c
index eb261656a320..955457a30197 100644
--- a/arch/x86/events/intel/lbr.c
+++ b/arch/x86/events/intel/lbr.c
@@ -380,8 +380,12 @@ static void __intel_pmu_lbr_save(struct x86_perf_task_context *task_ctx)
380 380
381void intel_pmu_lbr_sched_task(struct perf_event_context *ctx, bool sched_in) 381void intel_pmu_lbr_sched_task(struct perf_event_context *ctx, bool sched_in)
382{ 382{
383 struct cpu_hw_events *cpuc = this_cpu_ptr(&cpu_hw_events);
383 struct x86_perf_task_context *task_ctx; 384 struct x86_perf_task_context *task_ctx;
384 385
386 if (!cpuc->lbr_users)
387 return;
388
385 /* 389 /*
386 * If LBR callstack feature is enabled and the stack was saved when 390 * If LBR callstack feature is enabled and the stack was saved when
387 * the task was scheduled out, restore the stack. Otherwise flush 391 * the task was scheduled out, restore the stack. Otherwise flush
diff --git a/arch/x86/events/intel/p4.c b/arch/x86/events/intel/p4.c
index eb0533558c2b..d32c0eed38ca 100644
--- a/arch/x86/events/intel/p4.c
+++ b/arch/x86/events/intel/p4.c
@@ -587,7 +587,7 @@ static __initconst const u64 p4_hw_cache_event_ids
587 * P4_CONFIG_ALIASABLE or bits for P4_PEBS_METRIC, they are 587 * P4_CONFIG_ALIASABLE or bits for P4_PEBS_METRIC, they are
588 * either up to date automatically or not applicable at all. 588 * either up to date automatically or not applicable at all.
589 */ 589 */
590struct p4_event_alias { 590static struct p4_event_alias {
591 u64 original; 591 u64 original;
592 u64 alternative; 592 u64 alternative;
593} p4_event_aliases[] = { 593} p4_event_aliases[] = {
diff --git a/arch/x86/events/intel/rapl.c b/arch/x86/events/intel/rapl.c
index a45e2114a846..8e2457cb6b4a 100644
--- a/arch/x86/events/intel/rapl.c
+++ b/arch/x86/events/intel/rapl.c
@@ -559,7 +559,7 @@ static struct attribute_group rapl_pmu_format_group = {
559 .attrs = rapl_formats_attr, 559 .attrs = rapl_formats_attr,
560}; 560};
561 561
562const struct attribute_group *rapl_attr_groups[] = { 562static const struct attribute_group *rapl_attr_groups[] = {
563 &rapl_pmu_attr_group, 563 &rapl_pmu_attr_group,
564 &rapl_pmu_format_group, 564 &rapl_pmu_format_group,
565 &rapl_pmu_events_group, 565 &rapl_pmu_events_group,
diff --git a/arch/x86/events/intel/uncore.c b/arch/x86/events/intel/uncore.c
index 44ec523287f6..1c5390f1cf09 100644
--- a/arch/x86/events/intel/uncore.c
+++ b/arch/x86/events/intel/uncore.c
@@ -721,7 +721,7 @@ static struct attribute *uncore_pmu_attrs[] = {
721 NULL, 721 NULL,
722}; 722};
723 723
724static struct attribute_group uncore_pmu_attr_group = { 724static const struct attribute_group uncore_pmu_attr_group = {
725 .attrs = uncore_pmu_attrs, 725 .attrs = uncore_pmu_attrs,
726}; 726};
727 727
diff --git a/arch/x86/events/intel/uncore_nhmex.c b/arch/x86/events/intel/uncore_nhmex.c
index cda569332005..6a5cbe90f859 100644
--- a/arch/x86/events/intel/uncore_nhmex.c
+++ b/arch/x86/events/intel/uncore_nhmex.c
@@ -272,7 +272,7 @@ static struct attribute *nhmex_uncore_ubox_formats_attr[] = {
272 NULL, 272 NULL,
273}; 273};
274 274
275static struct attribute_group nhmex_uncore_ubox_format_group = { 275static const struct attribute_group nhmex_uncore_ubox_format_group = {
276 .name = "format", 276 .name = "format",
277 .attrs = nhmex_uncore_ubox_formats_attr, 277 .attrs = nhmex_uncore_ubox_formats_attr,
278}; 278};
@@ -299,7 +299,7 @@ static struct attribute *nhmex_uncore_cbox_formats_attr[] = {
299 NULL, 299 NULL,
300}; 300};
301 301
302static struct attribute_group nhmex_uncore_cbox_format_group = { 302static const struct attribute_group nhmex_uncore_cbox_format_group = {
303 .name = "format", 303 .name = "format",
304 .attrs = nhmex_uncore_cbox_formats_attr, 304 .attrs = nhmex_uncore_cbox_formats_attr,
305}; 305};
@@ -407,7 +407,7 @@ static struct attribute *nhmex_uncore_bbox_formats_attr[] = {
407 NULL, 407 NULL,
408}; 408};
409 409
410static struct attribute_group nhmex_uncore_bbox_format_group = { 410static const struct attribute_group nhmex_uncore_bbox_format_group = {
411 .name = "format", 411 .name = "format",
412 .attrs = nhmex_uncore_bbox_formats_attr, 412 .attrs = nhmex_uncore_bbox_formats_attr,
413}; 413};
@@ -484,7 +484,7 @@ static struct attribute *nhmex_uncore_sbox_formats_attr[] = {
484 NULL, 484 NULL,
485}; 485};
486 486
487static struct attribute_group nhmex_uncore_sbox_format_group = { 487static const struct attribute_group nhmex_uncore_sbox_format_group = {
488 .name = "format", 488 .name = "format",
489 .attrs = nhmex_uncore_sbox_formats_attr, 489 .attrs = nhmex_uncore_sbox_formats_attr,
490}; 490};
@@ -898,7 +898,7 @@ static struct attribute *nhmex_uncore_mbox_formats_attr[] = {
898 NULL, 898 NULL,
899}; 899};
900 900
901static struct attribute_group nhmex_uncore_mbox_format_group = { 901static const struct attribute_group nhmex_uncore_mbox_format_group = {
902 .name = "format", 902 .name = "format",
903 .attrs = nhmex_uncore_mbox_formats_attr, 903 .attrs = nhmex_uncore_mbox_formats_attr,
904}; 904};
@@ -1163,7 +1163,7 @@ static struct attribute *nhmex_uncore_rbox_formats_attr[] = {
1163 NULL, 1163 NULL,
1164}; 1164};
1165 1165
1166static struct attribute_group nhmex_uncore_rbox_format_group = { 1166static const struct attribute_group nhmex_uncore_rbox_format_group = {
1167 .name = "format", 1167 .name = "format",
1168 .attrs = nhmex_uncore_rbox_formats_attr, 1168 .attrs = nhmex_uncore_rbox_formats_attr,
1169}; 1169};
diff --git a/arch/x86/events/intel/uncore_snb.c b/arch/x86/events/intel/uncore_snb.c
index a3dcc12bef4a..db1127ce685e 100644
--- a/arch/x86/events/intel/uncore_snb.c
+++ b/arch/x86/events/intel/uncore_snb.c
@@ -130,7 +130,7 @@ static struct attribute *snb_uncore_formats_attr[] = {
130 NULL, 130 NULL,
131}; 131};
132 132
133static struct attribute_group snb_uncore_format_group = { 133static const struct attribute_group snb_uncore_format_group = {
134 .name = "format", 134 .name = "format",
135 .attrs = snb_uncore_formats_attr, 135 .attrs = snb_uncore_formats_attr,
136}; 136};
@@ -289,7 +289,7 @@ static struct attribute *snb_uncore_imc_formats_attr[] = {
289 NULL, 289 NULL,
290}; 290};
291 291
292static struct attribute_group snb_uncore_imc_format_group = { 292static const struct attribute_group snb_uncore_imc_format_group = {
293 .name = "format", 293 .name = "format",
294 .attrs = snb_uncore_imc_formats_attr, 294 .attrs = snb_uncore_imc_formats_attr,
295}; 295};
@@ -769,7 +769,7 @@ static struct attribute *nhm_uncore_formats_attr[] = {
769 NULL, 769 NULL,
770}; 770};
771 771
772static struct attribute_group nhm_uncore_format_group = { 772static const struct attribute_group nhm_uncore_format_group = {
773 .name = "format", 773 .name = "format",
774 .attrs = nhm_uncore_formats_attr, 774 .attrs = nhm_uncore_formats_attr,
775}; 775};
diff --git a/arch/x86/events/intel/uncore_snbep.c b/arch/x86/events/intel/uncore_snbep.c
index dae2fedc1601..db1fe377e6dd 100644
--- a/arch/x86/events/intel/uncore_snbep.c
+++ b/arch/x86/events/intel/uncore_snbep.c
@@ -316,7 +316,7 @@
316#define SKX_UPI_PCI_PMON_CTL0 0x350 316#define SKX_UPI_PCI_PMON_CTL0 0x350
317#define SKX_UPI_PCI_PMON_CTR0 0x318 317#define SKX_UPI_PCI_PMON_CTR0 0x318
318#define SKX_UPI_PCI_PMON_BOX_CTL 0x378 318#define SKX_UPI_PCI_PMON_BOX_CTL 0x378
319#define SKX_PMON_CTL_UMASK_EXT 0xff 319#define SKX_UPI_CTL_UMASK_EXT 0xffefff
320 320
321/* SKX M2M */ 321/* SKX M2M */
322#define SKX_M2M_PCI_PMON_CTL0 0x228 322#define SKX_M2M_PCI_PMON_CTL0 0x228
@@ -328,7 +328,7 @@ DEFINE_UNCORE_FORMAT_ATTR(event2, event, "config:0-6");
328DEFINE_UNCORE_FORMAT_ATTR(event_ext, event, "config:0-7,21"); 328DEFINE_UNCORE_FORMAT_ATTR(event_ext, event, "config:0-7,21");
329DEFINE_UNCORE_FORMAT_ATTR(use_occ_ctr, use_occ_ctr, "config:7"); 329DEFINE_UNCORE_FORMAT_ATTR(use_occ_ctr, use_occ_ctr, "config:7");
330DEFINE_UNCORE_FORMAT_ATTR(umask, umask, "config:8-15"); 330DEFINE_UNCORE_FORMAT_ATTR(umask, umask, "config:8-15");
331DEFINE_UNCORE_FORMAT_ATTR(umask_ext, umask, "config:8-15,32-39"); 331DEFINE_UNCORE_FORMAT_ATTR(umask_ext, umask, "config:8-15,32-43,45-55");
332DEFINE_UNCORE_FORMAT_ATTR(qor, qor, "config:16"); 332DEFINE_UNCORE_FORMAT_ATTR(qor, qor, "config:16");
333DEFINE_UNCORE_FORMAT_ATTR(edge, edge, "config:18"); 333DEFINE_UNCORE_FORMAT_ATTR(edge, edge, "config:18");
334DEFINE_UNCORE_FORMAT_ATTR(tid_en, tid_en, "config:19"); 334DEFINE_UNCORE_FORMAT_ATTR(tid_en, tid_en, "config:19");
@@ -351,7 +351,6 @@ DEFINE_UNCORE_FORMAT_ATTR(filter_cid, filter_cid, "config1:5");
351DEFINE_UNCORE_FORMAT_ATTR(filter_link, filter_link, "config1:5-8"); 351DEFINE_UNCORE_FORMAT_ATTR(filter_link, filter_link, "config1:5-8");
352DEFINE_UNCORE_FORMAT_ATTR(filter_link2, filter_link, "config1:6-8"); 352DEFINE_UNCORE_FORMAT_ATTR(filter_link2, filter_link, "config1:6-8");
353DEFINE_UNCORE_FORMAT_ATTR(filter_link3, filter_link, "config1:12"); 353DEFINE_UNCORE_FORMAT_ATTR(filter_link3, filter_link, "config1:12");
354DEFINE_UNCORE_FORMAT_ATTR(filter_link4, filter_link, "config1:9-12");
355DEFINE_UNCORE_FORMAT_ATTR(filter_nid, filter_nid, "config1:10-17"); 354DEFINE_UNCORE_FORMAT_ATTR(filter_nid, filter_nid, "config1:10-17");
356DEFINE_UNCORE_FORMAT_ATTR(filter_nid2, filter_nid, "config1:32-47"); 355DEFINE_UNCORE_FORMAT_ATTR(filter_nid2, filter_nid, "config1:32-47");
357DEFINE_UNCORE_FORMAT_ATTR(filter_state, filter_state, "config1:18-22"); 356DEFINE_UNCORE_FORMAT_ATTR(filter_state, filter_state, "config1:18-22");
@@ -603,27 +602,27 @@ static struct uncore_event_desc snbep_uncore_qpi_events[] = {
603 { /* end: all zeroes */ }, 602 { /* end: all zeroes */ },
604}; 603};
605 604
606static struct attribute_group snbep_uncore_format_group = { 605static const struct attribute_group snbep_uncore_format_group = {
607 .name = "format", 606 .name = "format",
608 .attrs = snbep_uncore_formats_attr, 607 .attrs = snbep_uncore_formats_attr,
609}; 608};
610 609
611static struct attribute_group snbep_uncore_ubox_format_group = { 610static const struct attribute_group snbep_uncore_ubox_format_group = {
612 .name = "format", 611 .name = "format",
613 .attrs = snbep_uncore_ubox_formats_attr, 612 .attrs = snbep_uncore_ubox_formats_attr,
614}; 613};
615 614
616static struct attribute_group snbep_uncore_cbox_format_group = { 615static const struct attribute_group snbep_uncore_cbox_format_group = {
617 .name = "format", 616 .name = "format",
618 .attrs = snbep_uncore_cbox_formats_attr, 617 .attrs = snbep_uncore_cbox_formats_attr,
619}; 618};
620 619
621static struct attribute_group snbep_uncore_pcu_format_group = { 620static const struct attribute_group snbep_uncore_pcu_format_group = {
622 .name = "format", 621 .name = "format",
623 .attrs = snbep_uncore_pcu_formats_attr, 622 .attrs = snbep_uncore_pcu_formats_attr,
624}; 623};
625 624
626static struct attribute_group snbep_uncore_qpi_format_group = { 625static const struct attribute_group snbep_uncore_qpi_format_group = {
627 .name = "format", 626 .name = "format",
628 .attrs = snbep_uncore_qpi_formats_attr, 627 .attrs = snbep_uncore_qpi_formats_attr,
629}; 628};
@@ -1432,27 +1431,27 @@ static struct attribute *ivbep_uncore_qpi_formats_attr[] = {
1432 NULL, 1431 NULL,
1433}; 1432};
1434 1433
1435static struct attribute_group ivbep_uncore_format_group = { 1434static const struct attribute_group ivbep_uncore_format_group = {
1436 .name = "format", 1435 .name = "format",
1437 .attrs = ivbep_uncore_formats_attr, 1436 .attrs = ivbep_uncore_formats_attr,
1438}; 1437};
1439 1438
1440static struct attribute_group ivbep_uncore_ubox_format_group = { 1439static const struct attribute_group ivbep_uncore_ubox_format_group = {
1441 .name = "format", 1440 .name = "format",
1442 .attrs = ivbep_uncore_ubox_formats_attr, 1441 .attrs = ivbep_uncore_ubox_formats_attr,
1443}; 1442};
1444 1443
1445static struct attribute_group ivbep_uncore_cbox_format_group = { 1444static const struct attribute_group ivbep_uncore_cbox_format_group = {
1446 .name = "format", 1445 .name = "format",
1447 .attrs = ivbep_uncore_cbox_formats_attr, 1446 .attrs = ivbep_uncore_cbox_formats_attr,
1448}; 1447};
1449 1448
1450static struct attribute_group ivbep_uncore_pcu_format_group = { 1449static const struct attribute_group ivbep_uncore_pcu_format_group = {
1451 .name = "format", 1450 .name = "format",
1452 .attrs = ivbep_uncore_pcu_formats_attr, 1451 .attrs = ivbep_uncore_pcu_formats_attr,
1453}; 1452};
1454 1453
1455static struct attribute_group ivbep_uncore_qpi_format_group = { 1454static const struct attribute_group ivbep_uncore_qpi_format_group = {
1456 .name = "format", 1455 .name = "format",
1457 .attrs = ivbep_uncore_qpi_formats_attr, 1456 .attrs = ivbep_uncore_qpi_formats_attr,
1458}; 1457};
@@ -1888,7 +1887,7 @@ static struct attribute *knl_uncore_ubox_formats_attr[] = {
1888 NULL, 1887 NULL,
1889}; 1888};
1890 1889
1891static struct attribute_group knl_uncore_ubox_format_group = { 1890static const struct attribute_group knl_uncore_ubox_format_group = {
1892 .name = "format", 1891 .name = "format",
1893 .attrs = knl_uncore_ubox_formats_attr, 1892 .attrs = knl_uncore_ubox_formats_attr,
1894}; 1893};
@@ -1928,7 +1927,7 @@ static struct attribute *knl_uncore_cha_formats_attr[] = {
1928 NULL, 1927 NULL,
1929}; 1928};
1930 1929
1931static struct attribute_group knl_uncore_cha_format_group = { 1930static const struct attribute_group knl_uncore_cha_format_group = {
1932 .name = "format", 1931 .name = "format",
1933 .attrs = knl_uncore_cha_formats_attr, 1932 .attrs = knl_uncore_cha_formats_attr,
1934}; 1933};
@@ -2038,7 +2037,7 @@ static struct attribute *knl_uncore_pcu_formats_attr[] = {
2038 NULL, 2037 NULL,
2039}; 2038};
2040 2039
2041static struct attribute_group knl_uncore_pcu_format_group = { 2040static const struct attribute_group knl_uncore_pcu_format_group = {
2042 .name = "format", 2041 .name = "format",
2043 .attrs = knl_uncore_pcu_formats_attr, 2042 .attrs = knl_uncore_pcu_formats_attr,
2044}; 2043};
@@ -2188,7 +2187,7 @@ static struct attribute *knl_uncore_irp_formats_attr[] = {
2188 NULL, 2187 NULL,
2189}; 2188};
2190 2189
2191static struct attribute_group knl_uncore_irp_format_group = { 2190static const struct attribute_group knl_uncore_irp_format_group = {
2192 .name = "format", 2191 .name = "format",
2193 .attrs = knl_uncore_irp_formats_attr, 2192 .attrs = knl_uncore_irp_formats_attr,
2194}; 2193};
@@ -2386,7 +2385,7 @@ static struct attribute *hswep_uncore_ubox_formats_attr[] = {
2386 NULL, 2385 NULL,
2387}; 2386};
2388 2387
2389static struct attribute_group hswep_uncore_ubox_format_group = { 2388static const struct attribute_group hswep_uncore_ubox_format_group = {
2390 .name = "format", 2389 .name = "format",
2391 .attrs = hswep_uncore_ubox_formats_attr, 2390 .attrs = hswep_uncore_ubox_formats_attr,
2392}; 2391};
@@ -2440,7 +2439,7 @@ static struct attribute *hswep_uncore_cbox_formats_attr[] = {
2440 NULL, 2439 NULL,
2441}; 2440};
2442 2441
2443static struct attribute_group hswep_uncore_cbox_format_group = { 2442static const struct attribute_group hswep_uncore_cbox_format_group = {
2444 .name = "format", 2443 .name = "format",
2445 .attrs = hswep_uncore_cbox_formats_attr, 2444 .attrs = hswep_uncore_cbox_formats_attr,
2446}; 2445};
@@ -2622,7 +2621,7 @@ static struct attribute *hswep_uncore_sbox_formats_attr[] = {
2622 NULL, 2621 NULL,
2623}; 2622};
2624 2623
2625static struct attribute_group hswep_uncore_sbox_format_group = { 2624static const struct attribute_group hswep_uncore_sbox_format_group = {
2626 .name = "format", 2625 .name = "format",
2627 .attrs = hswep_uncore_sbox_formats_attr, 2626 .attrs = hswep_uncore_sbox_formats_attr,
2628}; 2627};
@@ -3302,7 +3301,6 @@ static struct attribute *skx_uncore_cha_formats_attr[] = {
3302 &format_attr_inv.attr, 3301 &format_attr_inv.attr,
3303 &format_attr_thresh8.attr, 3302 &format_attr_thresh8.attr,
3304 &format_attr_filter_tid4.attr, 3303 &format_attr_filter_tid4.attr,
3305 &format_attr_filter_link4.attr,
3306 &format_attr_filter_state5.attr, 3304 &format_attr_filter_state5.attr,
3307 &format_attr_filter_rem.attr, 3305 &format_attr_filter_rem.attr,
3308 &format_attr_filter_loc.attr, 3306 &format_attr_filter_loc.attr,
@@ -3312,12 +3310,11 @@ static struct attribute *skx_uncore_cha_formats_attr[] = {
3312 &format_attr_filter_opc_0.attr, 3310 &format_attr_filter_opc_0.attr,
3313 &format_attr_filter_opc_1.attr, 3311 &format_attr_filter_opc_1.attr,
3314 &format_attr_filter_nc.attr, 3312 &format_attr_filter_nc.attr,
3315 &format_attr_filter_c6.attr,
3316 &format_attr_filter_isoc.attr, 3313 &format_attr_filter_isoc.attr,
3317 NULL, 3314 NULL,
3318}; 3315};
3319 3316
3320static struct attribute_group skx_uncore_chabox_format_group = { 3317static const struct attribute_group skx_uncore_chabox_format_group = {
3321 .name = "format", 3318 .name = "format",
3322 .attrs = skx_uncore_cha_formats_attr, 3319 .attrs = skx_uncore_cha_formats_attr,
3323}; 3320};
@@ -3333,8 +3330,11 @@ static struct extra_reg skx_uncore_cha_extra_regs[] = {
3333 SNBEP_CBO_EVENT_EXTRA_REG(0x0534, 0xffff, 0x4), 3330 SNBEP_CBO_EVENT_EXTRA_REG(0x0534, 0xffff, 0x4),
3334 SNBEP_CBO_EVENT_EXTRA_REG(0x0934, 0xffff, 0x4), 3331 SNBEP_CBO_EVENT_EXTRA_REG(0x0934, 0xffff, 0x4),
3335 SNBEP_CBO_EVENT_EXTRA_REG(0x1134, 0xffff, 0x4), 3332 SNBEP_CBO_EVENT_EXTRA_REG(0x1134, 0xffff, 0x4),
3336 SNBEP_CBO_EVENT_EXTRA_REG(0x2134, 0xffff, 0x4), 3333 SNBEP_CBO_EVENT_EXTRA_REG(0x3134, 0xffff, 0x4),
3337 SNBEP_CBO_EVENT_EXTRA_REG(0x8134, 0xffff, 0x4), 3334 SNBEP_CBO_EVENT_EXTRA_REG(0x9134, 0xffff, 0x4),
3335 SNBEP_CBO_EVENT_EXTRA_REG(0x35, 0xff, 0x8),
3336 SNBEP_CBO_EVENT_EXTRA_REG(0x36, 0xff, 0x8),
3337 EVENT_EXTRA_END
3338}; 3338};
3339 3339
3340static u64 skx_cha_filter_mask(int fields) 3340static u64 skx_cha_filter_mask(int fields)
@@ -3347,6 +3347,17 @@ static u64 skx_cha_filter_mask(int fields)
3347 mask |= SKX_CHA_MSR_PMON_BOX_FILTER_LINK; 3347 mask |= SKX_CHA_MSR_PMON_BOX_FILTER_LINK;
3348 if (fields & 0x4) 3348 if (fields & 0x4)
3349 mask |= SKX_CHA_MSR_PMON_BOX_FILTER_STATE; 3349 mask |= SKX_CHA_MSR_PMON_BOX_FILTER_STATE;
3350 if (fields & 0x8) {
3351 mask |= SKX_CHA_MSR_PMON_BOX_FILTER_REM;
3352 mask |= SKX_CHA_MSR_PMON_BOX_FILTER_LOC;
3353 mask |= SKX_CHA_MSR_PMON_BOX_FILTER_ALL_OPC;
3354 mask |= SKX_CHA_MSR_PMON_BOX_FILTER_NM;
3355 mask |= SKX_CHA_MSR_PMON_BOX_FILTER_NOT_NM;
3356 mask |= SKX_CHA_MSR_PMON_BOX_FILTER_OPC0;
3357 mask |= SKX_CHA_MSR_PMON_BOX_FILTER_OPC1;
3358 mask |= SKX_CHA_MSR_PMON_BOX_FILTER_NC;
3359 mask |= SKX_CHA_MSR_PMON_BOX_FILTER_ISOC;
3360 }
3350 return mask; 3361 return mask;
3351} 3362}
3352 3363
@@ -3416,7 +3427,7 @@ static struct attribute *skx_uncore_iio_formats_attr[] = {
3416 NULL, 3427 NULL,
3417}; 3428};
3418 3429
3419static struct attribute_group skx_uncore_iio_format_group = { 3430static const struct attribute_group skx_uncore_iio_format_group = {
3420 .name = "format", 3431 .name = "format",
3421 .attrs = skx_uncore_iio_formats_attr, 3432 .attrs = skx_uncore_iio_formats_attr,
3422}; 3433};
@@ -3473,7 +3484,7 @@ static struct attribute *skx_uncore_formats_attr[] = {
3473 NULL, 3484 NULL,
3474}; 3485};
3475 3486
3476static struct attribute_group skx_uncore_format_group = { 3487static const struct attribute_group skx_uncore_format_group = {
3477 .name = "format", 3488 .name = "format",
3478 .attrs = skx_uncore_formats_attr, 3489 .attrs = skx_uncore_formats_attr,
3479}; 3490};
@@ -3492,6 +3503,26 @@ static struct intel_uncore_type skx_uncore_irp = {
3492 .format_group = &skx_uncore_format_group, 3503 .format_group = &skx_uncore_format_group,
3493}; 3504};
3494 3505
3506static struct attribute *skx_uncore_pcu_formats_attr[] = {
3507 &format_attr_event.attr,
3508 &format_attr_umask.attr,
3509 &format_attr_edge.attr,
3510 &format_attr_inv.attr,
3511 &format_attr_thresh8.attr,
3512 &format_attr_occ_invert.attr,
3513 &format_attr_occ_edge_det.attr,
3514 &format_attr_filter_band0.attr,
3515 &format_attr_filter_band1.attr,
3516 &format_attr_filter_band2.attr,
3517 &format_attr_filter_band3.attr,
3518 NULL,
3519};
3520
3521static struct attribute_group skx_uncore_pcu_format_group = {
3522 .name = "format",
3523 .attrs = skx_uncore_pcu_formats_attr,
3524};
3525
3495static struct intel_uncore_ops skx_uncore_pcu_ops = { 3526static struct intel_uncore_ops skx_uncore_pcu_ops = {
3496 IVBEP_UNCORE_MSR_OPS_COMMON_INIT(), 3527 IVBEP_UNCORE_MSR_OPS_COMMON_INIT(),
3497 .hw_config = hswep_pcu_hw_config, 3528 .hw_config = hswep_pcu_hw_config,
@@ -3510,7 +3541,7 @@ static struct intel_uncore_type skx_uncore_pcu = {
3510 .box_ctl = HSWEP_PCU_MSR_PMON_BOX_CTL, 3541 .box_ctl = HSWEP_PCU_MSR_PMON_BOX_CTL,
3511 .num_shared_regs = 1, 3542 .num_shared_regs = 1,
3512 .ops = &skx_uncore_pcu_ops, 3543 .ops = &skx_uncore_pcu_ops,
3513 .format_group = &snbep_uncore_pcu_format_group, 3544 .format_group = &skx_uncore_pcu_format_group,
3514}; 3545};
3515 3546
3516static struct intel_uncore_type *skx_msr_uncores[] = { 3547static struct intel_uncore_type *skx_msr_uncores[] = {
@@ -3574,7 +3605,7 @@ static struct attribute *skx_upi_uncore_formats_attr[] = {
3574 NULL, 3605 NULL,
3575}; 3606};
3576 3607
3577static struct attribute_group skx_upi_uncore_format_group = { 3608static const struct attribute_group skx_upi_uncore_format_group = {
3578 .name = "format", 3609 .name = "format",
3579 .attrs = skx_upi_uncore_formats_attr, 3610 .attrs = skx_upi_uncore_formats_attr,
3580}; 3611};
@@ -3603,8 +3634,8 @@ static struct intel_uncore_type skx_uncore_upi = {
3603 .perf_ctr_bits = 48, 3634 .perf_ctr_bits = 48,
3604 .perf_ctr = SKX_UPI_PCI_PMON_CTR0, 3635 .perf_ctr = SKX_UPI_PCI_PMON_CTR0,
3605 .event_ctl = SKX_UPI_PCI_PMON_CTL0, 3636 .event_ctl = SKX_UPI_PCI_PMON_CTL0,
3606 .event_mask = SNBEP_QPI_PCI_PMON_RAW_EVENT_MASK, 3637 .event_mask = SNBEP_PMON_RAW_EVENT_MASK,
3607 .event_mask_ext = SKX_PMON_CTL_UMASK_EXT, 3638 .event_mask_ext = SKX_UPI_CTL_UMASK_EXT,
3608 .box_ctl = SKX_UPI_PCI_PMON_BOX_CTL, 3639 .box_ctl = SKX_UPI_PCI_PMON_BOX_CTL,
3609 .ops = &skx_upi_uncore_pci_ops, 3640 .ops = &skx_upi_uncore_pci_ops,
3610 .format_group = &skx_upi_uncore_format_group, 3641 .format_group = &skx_upi_uncore_format_group,
diff --git a/arch/x86/events/perf_event.h b/arch/x86/events/perf_event.h
index 53728eea1bed..476aec3a4cab 100644
--- a/arch/x86/events/perf_event.h
+++ b/arch/x86/events/perf_event.h
@@ -879,6 +879,8 @@ extern struct event_constraint intel_slm_pebs_event_constraints[];
879 879
880extern struct event_constraint intel_glm_pebs_event_constraints[]; 880extern struct event_constraint intel_glm_pebs_event_constraints[];
881 881
882extern struct event_constraint intel_glp_pebs_event_constraints[];
883
882extern struct event_constraint intel_nehalem_pebs_event_constraints[]; 884extern struct event_constraint intel_nehalem_pebs_event_constraints[];
883 885
884extern struct event_constraint intel_westmere_pebs_event_constraints[]; 886extern struct event_constraint intel_westmere_pebs_event_constraints[];
diff --git a/arch/x86/include/asm/bug.h b/arch/x86/include/asm/bug.h
index 39e702d90cdb..aa6b2023d8f8 100644
--- a/arch/x86/include/asm/bug.h
+++ b/arch/x86/include/asm/bug.h
@@ -35,7 +35,7 @@
35#define _BUG_FLAGS(ins, flags) \ 35#define _BUG_FLAGS(ins, flags) \
36do { \ 36do { \
37 asm volatile("1:\t" ins "\n" \ 37 asm volatile("1:\t" ins "\n" \
38 ".pushsection __bug_table,\"a\"\n" \ 38 ".pushsection __bug_table,\"aw\"\n" \
39 "2:\t" __BUG_REL(1b) "\t# bug_entry::bug_addr\n" \ 39 "2:\t" __BUG_REL(1b) "\t# bug_entry::bug_addr\n" \
40 "\t" __BUG_REL(%c0) "\t# bug_entry::file\n" \ 40 "\t" __BUG_REL(%c0) "\t# bug_entry::file\n" \
41 "\t.word %c1" "\t# bug_entry::line\n" \ 41 "\t.word %c1" "\t# bug_entry::line\n" \
@@ -52,7 +52,7 @@ do { \
52#define _BUG_FLAGS(ins, flags) \ 52#define _BUG_FLAGS(ins, flags) \
53do { \ 53do { \
54 asm volatile("1:\t" ins "\n" \ 54 asm volatile("1:\t" ins "\n" \
55 ".pushsection __bug_table,\"a\"\n" \ 55 ".pushsection __bug_table,\"aw\"\n" \
56 "2:\t" __BUG_REL(1b) "\t# bug_entry::bug_addr\n" \ 56 "2:\t" __BUG_REL(1b) "\t# bug_entry::bug_addr\n" \
57 "\t.word %c0" "\t# bug_entry::flags\n" \ 57 "\t.word %c0" "\t# bug_entry::flags\n" \
58 "\t.org 2b+%c1\n" \ 58 "\t.org 2b+%c1\n" \
diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpufeatures.h
index 14f0f2913364..66ac08607471 100644
--- a/arch/x86/include/asm/cpufeatures.h
+++ b/arch/x86/include/asm/cpufeatures.h
@@ -287,7 +287,7 @@
287#define X86_FEATURE_PAUSEFILTER (15*32+10) /* filtered pause intercept */ 287#define X86_FEATURE_PAUSEFILTER (15*32+10) /* filtered pause intercept */
288#define X86_FEATURE_PFTHRESHOLD (15*32+12) /* pause filter threshold */ 288#define X86_FEATURE_PFTHRESHOLD (15*32+12) /* pause filter threshold */
289#define X86_FEATURE_AVIC (15*32+13) /* Virtual Interrupt Controller */ 289#define X86_FEATURE_AVIC (15*32+13) /* Virtual Interrupt Controller */
290#define X86_FEATURE_VIRTUAL_VMLOAD_VMSAVE (15*32+15) /* Virtual VMLOAD VMSAVE */ 290#define X86_FEATURE_V_VMSAVE_VMLOAD (15*32+15) /* Virtual VMSAVE VMLOAD */
291 291
292/* Intel-defined CPU features, CPUID level 0x00000007:0 (ecx), word 16 */ 292/* Intel-defined CPU features, CPUID level 0x00000007:0 (ecx), word 16 */
293#define X86_FEATURE_AVX512VBMI (16*32+ 1) /* AVX512 Vector Bit Manipulation instructions*/ 293#define X86_FEATURE_AVX512VBMI (16*32+ 1) /* AVX512 Vector Bit Manipulation instructions*/
diff --git a/arch/x86/include/asm/elf.h b/arch/x86/include/asm/elf.h
index f87f4d73c700..a3de31ffb722 100644
--- a/arch/x86/include/asm/elf.h
+++ b/arch/x86/include/asm/elf.h
@@ -247,11 +247,11 @@ extern int force_personality32;
247 247
248/* 248/*
249 * This is the base location for PIE (ET_DYN with INTERP) loads. On 249 * This is the base location for PIE (ET_DYN with INTERP) loads. On
250 * 64-bit, this is raised to 4GB to leave the entire 32-bit address 250 * 64-bit, this is above 4GB to leave the entire 32-bit address
251 * space open for things that want to use the area for 32-bit pointers. 251 * space open for things that want to use the area for 32-bit pointers.
252 */ 252 */
253#define ELF_ET_DYN_BASE (mmap_is_ia32() ? 0x000400000UL : \ 253#define ELF_ET_DYN_BASE (mmap_is_ia32() ? 0x000400000UL : \
254 0x100000000UL) 254 (TASK_SIZE / 3 * 2))
255 255
256/* This yields a mask that user programs can use to figure out what 256/* This yields a mask that user programs can use to figure out what
257 instruction set this CPU supports. This could be done in user space, 257 instruction set this CPU supports. This could be done in user space,
diff --git a/arch/x86/include/asm/entry_arch.h b/arch/x86/include/asm/entry_arch.h
index df002992d8fd..07b06955a05d 100644
--- a/arch/x86/include/asm/entry_arch.h
+++ b/arch/x86/include/asm/entry_arch.h
@@ -25,6 +25,8 @@ BUILD_INTERRUPT3(kvm_posted_intr_ipi, POSTED_INTR_VECTOR,
25 smp_kvm_posted_intr_ipi) 25 smp_kvm_posted_intr_ipi)
26BUILD_INTERRUPT3(kvm_posted_intr_wakeup_ipi, POSTED_INTR_WAKEUP_VECTOR, 26BUILD_INTERRUPT3(kvm_posted_intr_wakeup_ipi, POSTED_INTR_WAKEUP_VECTOR,
27 smp_kvm_posted_intr_wakeup_ipi) 27 smp_kvm_posted_intr_wakeup_ipi)
28BUILD_INTERRUPT3(kvm_posted_intr_nested_ipi, POSTED_INTR_NESTED_VECTOR,
29 smp_kvm_posted_intr_nested_ipi)
28#endif 30#endif
29 31
30/* 32/*
diff --git a/arch/x86/include/asm/hardirq.h b/arch/x86/include/asm/hardirq.h
index 9b76cd331990..ad1ed531febc 100644
--- a/arch/x86/include/asm/hardirq.h
+++ b/arch/x86/include/asm/hardirq.h
@@ -15,6 +15,7 @@ typedef struct {
15#ifdef CONFIG_HAVE_KVM 15#ifdef CONFIG_HAVE_KVM
16 unsigned int kvm_posted_intr_ipis; 16 unsigned int kvm_posted_intr_ipis;
17 unsigned int kvm_posted_intr_wakeup_ipis; 17 unsigned int kvm_posted_intr_wakeup_ipis;
18 unsigned int kvm_posted_intr_nested_ipis;
18#endif 19#endif
19 unsigned int x86_platform_ipis; /* arch dependent */ 20 unsigned int x86_platform_ipis; /* arch dependent */
20 unsigned int apic_perf_irqs; 21 unsigned int apic_perf_irqs;
diff --git a/arch/x86/include/asm/hw_irq.h b/arch/x86/include/asm/hw_irq.h
index b90e1053049b..d6dbafbd4207 100644
--- a/arch/x86/include/asm/hw_irq.h
+++ b/arch/x86/include/asm/hw_irq.h
@@ -30,6 +30,7 @@ extern asmlinkage void apic_timer_interrupt(void);
30extern asmlinkage void x86_platform_ipi(void); 30extern asmlinkage void x86_platform_ipi(void);
31extern asmlinkage void kvm_posted_intr_ipi(void); 31extern asmlinkage void kvm_posted_intr_ipi(void);
32extern asmlinkage void kvm_posted_intr_wakeup_ipi(void); 32extern asmlinkage void kvm_posted_intr_wakeup_ipi(void);
33extern asmlinkage void kvm_posted_intr_nested_ipi(void);
33extern asmlinkage void error_interrupt(void); 34extern asmlinkage void error_interrupt(void);
34extern asmlinkage void irq_work_interrupt(void); 35extern asmlinkage void irq_work_interrupt(void);
35 36
@@ -62,6 +63,7 @@ extern void trace_call_function_single_interrupt(void);
62#define trace_reboot_interrupt reboot_interrupt 63#define trace_reboot_interrupt reboot_interrupt
63#define trace_kvm_posted_intr_ipi kvm_posted_intr_ipi 64#define trace_kvm_posted_intr_ipi kvm_posted_intr_ipi
64#define trace_kvm_posted_intr_wakeup_ipi kvm_posted_intr_wakeup_ipi 65#define trace_kvm_posted_intr_wakeup_ipi kvm_posted_intr_wakeup_ipi
66#define trace_kvm_posted_intr_nested_ipi kvm_posted_intr_nested_ipi
65#endif /* CONFIG_TRACING */ 67#endif /* CONFIG_TRACING */
66 68
67#ifdef CONFIG_X86_LOCAL_APIC 69#ifdef CONFIG_X86_LOCAL_APIC
diff --git a/arch/x86/include/asm/hypervisor.h b/arch/x86/include/asm/hypervisor.h
index 21126155a739..0ead9dbb9130 100644
--- a/arch/x86/include/asm/hypervisor.h
+++ b/arch/x86/include/asm/hypervisor.h
@@ -43,6 +43,9 @@ struct hypervisor_x86 {
43 43
44 /* pin current vcpu to specified physical cpu (run rarely) */ 44 /* pin current vcpu to specified physical cpu (run rarely) */
45 void (*pin_vcpu)(int); 45 void (*pin_vcpu)(int);
46
47 /* called during init_mem_mapping() to setup early mappings. */
48 void (*init_mem_mapping)(void);
46}; 49};
47 50
48extern const struct hypervisor_x86 *x86_hyper; 51extern const struct hypervisor_x86 *x86_hyper;
@@ -57,8 +60,15 @@ extern const struct hypervisor_x86 x86_hyper_kvm;
57extern void init_hypervisor_platform(void); 60extern void init_hypervisor_platform(void);
58extern bool hypervisor_x2apic_available(void); 61extern bool hypervisor_x2apic_available(void);
59extern void hypervisor_pin_vcpu(int cpu); 62extern void hypervisor_pin_vcpu(int cpu);
63
64static inline void hypervisor_init_mem_mapping(void)
65{
66 if (x86_hyper && x86_hyper->init_mem_mapping)
67 x86_hyper->init_mem_mapping();
68}
60#else 69#else
61static inline void init_hypervisor_platform(void) { } 70static inline void init_hypervisor_platform(void) { }
62static inline bool hypervisor_x2apic_available(void) { return false; } 71static inline bool hypervisor_x2apic_available(void) { return false; }
72static inline void hypervisor_init_mem_mapping(void) { }
63#endif /* CONFIG_HYPERVISOR_GUEST */ 73#endif /* CONFIG_HYPERVISOR_GUEST */
64#endif /* _ASM_X86_HYPERVISOR_H */ 74#endif /* _ASM_X86_HYPERVISOR_H */
diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h
index e080a39b2108..4bc6f459a8b6 100644
--- a/arch/x86/include/asm/io.h
+++ b/arch/x86/include/asm/io.h
@@ -328,13 +328,13 @@ static inline unsigned type in##bwl##_p(int port) \
328static inline void outs##bwl(int port, const void *addr, unsigned long count) \ 328static inline void outs##bwl(int port, const void *addr, unsigned long count) \
329{ \ 329{ \
330 asm volatile("rep; outs" #bwl \ 330 asm volatile("rep; outs" #bwl \
331 : "+S"(addr), "+c"(count) : "d"(port)); \ 331 : "+S"(addr), "+c"(count) : "d"(port) : "memory"); \
332} \ 332} \
333 \ 333 \
334static inline void ins##bwl(int port, void *addr, unsigned long count) \ 334static inline void ins##bwl(int port, void *addr, unsigned long count) \
335{ \ 335{ \
336 asm volatile("rep; ins" #bwl \ 336 asm volatile("rep; ins" #bwl \
337 : "+D"(addr), "+c"(count) : "d"(port)); \ 337 : "+D"(addr), "+c"(count) : "d"(port) : "memory"); \
338} 338}
339 339
340BUILDIO(b, b, char) 340BUILDIO(b, b, char)
diff --git a/arch/x86/include/asm/irq_vectors.h b/arch/x86/include/asm/irq_vectors.h
index 6ca9fd6234e1..aaf8d28b5d00 100644
--- a/arch/x86/include/asm/irq_vectors.h
+++ b/arch/x86/include/asm/irq_vectors.h
@@ -83,7 +83,6 @@
83 */ 83 */
84#define X86_PLATFORM_IPI_VECTOR 0xf7 84#define X86_PLATFORM_IPI_VECTOR 0xf7
85 85
86#define POSTED_INTR_WAKEUP_VECTOR 0xf1
87/* 86/*
88 * IRQ work vector: 87 * IRQ work vector:
89 */ 88 */
@@ -98,6 +97,8 @@
98/* Vector for KVM to deliver posted interrupt IPI */ 97/* Vector for KVM to deliver posted interrupt IPI */
99#ifdef CONFIG_HAVE_KVM 98#ifdef CONFIG_HAVE_KVM
100#define POSTED_INTR_VECTOR 0xf2 99#define POSTED_INTR_VECTOR 0xf2
100#define POSTED_INTR_WAKEUP_VECTOR 0xf1
101#define POSTED_INTR_NESTED_VECTOR 0xf0
101#endif 102#endif
102 103
103/* 104/*
diff --git a/arch/x86/include/asm/kprobes.h b/arch/x86/include/asm/kprobes.h
index 34b984c60790..6cf65437b5e5 100644
--- a/arch/x86/include/asm/kprobes.h
+++ b/arch/x86/include/asm/kprobes.h
@@ -52,10 +52,10 @@ typedef u8 kprobe_opcode_t;
52#define flush_insn_slot(p) do { } while (0) 52#define flush_insn_slot(p) do { } while (0)
53 53
54/* optinsn template addresses */ 54/* optinsn template addresses */
55extern __visible kprobe_opcode_t optprobe_template_entry; 55extern __visible kprobe_opcode_t optprobe_template_entry[];
56extern __visible kprobe_opcode_t optprobe_template_val; 56extern __visible kprobe_opcode_t optprobe_template_val[];
57extern __visible kprobe_opcode_t optprobe_template_call; 57extern __visible kprobe_opcode_t optprobe_template_call[];
58extern __visible kprobe_opcode_t optprobe_template_end; 58extern __visible kprobe_opcode_t optprobe_template_end[];
59#define MAX_OPTIMIZED_LENGTH (MAX_INSN_SIZE + RELATIVE_ADDR_SIZE) 59#define MAX_OPTIMIZED_LENGTH (MAX_INSN_SIZE + RELATIVE_ADDR_SIZE)
60#define MAX_OPTINSN_SIZE \ 60#define MAX_OPTINSN_SIZE \
61 (((unsigned long)&optprobe_template_end - \ 61 (((unsigned long)&optprobe_template_end - \
diff --git a/arch/x86/include/asm/mmu_context.h b/arch/x86/include/asm/mmu_context.h
index 14b3cdccf4f9..d25d9f4abb15 100644
--- a/arch/x86/include/asm/mmu_context.h
+++ b/arch/x86/include/asm/mmu_context.h
@@ -304,7 +304,7 @@ static inline unsigned long __get_current_cr3_fast(void)
304 cr3 |= this_cpu_read(cpu_tlbstate.loaded_mm_asid); 304 cr3 |= this_cpu_read(cpu_tlbstate.loaded_mm_asid);
305 305
306 /* For now, be very restrictive about when this can be called. */ 306 /* For now, be very restrictive about when this can be called. */
307 VM_WARN_ON(in_nmi() || !in_atomic()); 307 VM_WARN_ON(in_nmi() || preemptible());
308 308
309 VM_BUG_ON(cr3 != __read_cr3()); 309 VM_BUG_ON(cr3 != __read_cr3());
310 return cr3; 310 return cr3;
diff --git a/arch/x86/include/asm/paravirt_types.h b/arch/x86/include/asm/paravirt_types.h
index cb976bab6299..9ffc36bfe4cd 100644
--- a/arch/x86/include/asm/paravirt_types.h
+++ b/arch/x86/include/asm/paravirt_types.h
@@ -84,7 +84,7 @@ struct pv_init_ops {
84 */ 84 */
85 unsigned (*patch)(u8 type, u16 clobber, void *insnbuf, 85 unsigned (*patch)(u8 type, u16 clobber, void *insnbuf,
86 unsigned long addr, unsigned len); 86 unsigned long addr, unsigned len);
87}; 87} __no_randomize_layout;
88 88
89 89
90struct pv_lazy_ops { 90struct pv_lazy_ops {
@@ -92,12 +92,12 @@ struct pv_lazy_ops {
92 void (*enter)(void); 92 void (*enter)(void);
93 void (*leave)(void); 93 void (*leave)(void);
94 void (*flush)(void); 94 void (*flush)(void);
95}; 95} __no_randomize_layout;
96 96
97struct pv_time_ops { 97struct pv_time_ops {
98 unsigned long long (*sched_clock)(void); 98 unsigned long long (*sched_clock)(void);
99 unsigned long long (*steal_clock)(int cpu); 99 unsigned long long (*steal_clock)(int cpu);
100}; 100} __no_randomize_layout;
101 101
102struct pv_cpu_ops { 102struct pv_cpu_ops {
103 /* hooks for various privileged instructions */ 103 /* hooks for various privileged instructions */
@@ -176,7 +176,7 @@ struct pv_cpu_ops {
176 176
177 void (*start_context_switch)(struct task_struct *prev); 177 void (*start_context_switch)(struct task_struct *prev);
178 void (*end_context_switch)(struct task_struct *next); 178 void (*end_context_switch)(struct task_struct *next);
179}; 179} __no_randomize_layout;
180 180
181struct pv_irq_ops { 181struct pv_irq_ops {
182 /* 182 /*
@@ -199,7 +199,7 @@ struct pv_irq_ops {
199#ifdef CONFIG_X86_64 199#ifdef CONFIG_X86_64
200 void (*adjust_exception_frame)(void); 200 void (*adjust_exception_frame)(void);
201#endif 201#endif
202}; 202} __no_randomize_layout;
203 203
204struct pv_mmu_ops { 204struct pv_mmu_ops {
205 unsigned long (*read_cr2)(void); 205 unsigned long (*read_cr2)(void);
@@ -305,7 +305,7 @@ struct pv_mmu_ops {
305 an mfn. We can tell which is which from the index. */ 305 an mfn. We can tell which is which from the index. */
306 void (*set_fixmap)(unsigned /* enum fixed_addresses */ idx, 306 void (*set_fixmap)(unsigned /* enum fixed_addresses */ idx,
307 phys_addr_t phys, pgprot_t flags); 307 phys_addr_t phys, pgprot_t flags);
308}; 308} __no_randomize_layout;
309 309
310struct arch_spinlock; 310struct arch_spinlock;
311#ifdef CONFIG_SMP 311#ifdef CONFIG_SMP
@@ -322,7 +322,7 @@ struct pv_lock_ops {
322 void (*kick)(int cpu); 322 void (*kick)(int cpu);
323 323
324 struct paravirt_callee_save vcpu_is_preempted; 324 struct paravirt_callee_save vcpu_is_preempted;
325}; 325} __no_randomize_layout;
326 326
327/* This contains all the paravirt structures: we get a convenient 327/* This contains all the paravirt structures: we get a convenient
328 * number for each function using the offset which we use to indicate 328 * number for each function using the offset which we use to indicate
@@ -334,7 +334,7 @@ struct paravirt_patch_template {
334 struct pv_irq_ops pv_irq_ops; 334 struct pv_irq_ops pv_irq_ops;
335 struct pv_mmu_ops pv_mmu_ops; 335 struct pv_mmu_ops pv_mmu_ops;
336 struct pv_lock_ops pv_lock_ops; 336 struct pv_lock_ops pv_lock_ops;
337}; 337} __no_randomize_layout;
338 338
339extern struct pv_info pv_info; 339extern struct pv_info pv_info;
340extern struct pv_init_ops pv_init_ops; 340extern struct pv_init_ops pv_init_ops;
diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h
index ed26e14cfc2f..c61bab07a84e 100644
--- a/arch/x86/include/asm/processor.h
+++ b/arch/x86/include/asm/processor.h
@@ -130,7 +130,7 @@ struct cpuinfo_x86 {
130 /* Index into per_cpu list: */ 130 /* Index into per_cpu list: */
131 u16 cpu_index; 131 u16 cpu_index;
132 u32 microcode; 132 u32 microcode;
133}; 133} __randomize_layout;
134 134
135struct cpuid_regs { 135struct cpuid_regs {
136 u32 eax, ebx, ecx, edx; 136 u32 eax, ebx, ecx, edx;
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c
index 850160a76864..97bb2caf3428 100644
--- a/arch/x86/kernel/acpi/boot.c
+++ b/arch/x86/kernel/acpi/boot.c
@@ -347,6 +347,14 @@ static void __init mp_override_legacy_irq(u8 bus_irq, u8 polarity, u8 trigger,
347 struct mpc_intsrc mp_irq; 347 struct mpc_intsrc mp_irq;
348 348
349 /* 349 /*
350 * Check bus_irq boundary.
351 */
352 if (bus_irq >= NR_IRQS_LEGACY) {
353 pr_warn("Invalid bus_irq %u for legacy override\n", bus_irq);
354 return;
355 }
356
357 /*
350 * Convert 'gsi' to 'ioapic.pin'. 358 * Convert 'gsi' to 'ioapic.pin'.
351 */ 359 */
352 ioapic = mp_find_ioapic(gsi); 360 ioapic = mp_find_ioapic(gsi);
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c
index b4f5f73febdb..237e9c2341c7 100644
--- a/arch/x86/kernel/apic/io_apic.c
+++ b/arch/x86/kernel/apic/io_apic.c
@@ -2093,7 +2093,7 @@ static inline void __init check_timer(void)
2093 int idx; 2093 int idx;
2094 idx = find_irq_entry(apic1, pin1, mp_INT); 2094 idx = find_irq_entry(apic1, pin1, mp_INT);
2095 if (idx != -1 && irq_trigger(idx)) 2095 if (idx != -1 && irq_trigger(idx))
2096 unmask_ioapic_irq(irq_get_chip_data(0)); 2096 unmask_ioapic_irq(irq_get_irq_data(0));
2097 } 2097 }
2098 irq_domain_deactivate_irq(irq_data); 2098 irq_domain_deactivate_irq(irq_data);
2099 irq_domain_activate_irq(irq_data); 2099 irq_domain_activate_irq(irq_data);
diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c
index f22fd4ea8858..110ca5d2bb87 100644
--- a/arch/x86/kernel/cpu/amd.c
+++ b/arch/x86/kernel/cpu/amd.c
@@ -134,6 +134,7 @@ static void init_amd_k6(struct cpuinfo_x86 *c)
134 134
135 n = K6_BUG_LOOP; 135 n = K6_BUG_LOOP;
136 f_vide = vide; 136 f_vide = vide;
137 OPTIMIZER_HIDE_VAR(f_vide);
137 d = rdtsc(); 138 d = rdtsc();
138 while (n--) 139 while (n--)
139 f_vide(); 140 f_vide();
diff --git a/arch/x86/kernel/cpu/aperfmperf.c b/arch/x86/kernel/cpu/aperfmperf.c
index d869c8671e36..0ee83321a313 100644
--- a/arch/x86/kernel/cpu/aperfmperf.c
+++ b/arch/x86/kernel/cpu/aperfmperf.c
@@ -8,20 +8,25 @@
8 * This file is licensed under GPLv2. 8 * This file is licensed under GPLv2.
9 */ 9 */
10 10
11#include <linux/jiffies.h> 11#include <linux/delay.h>
12#include <linux/ktime.h>
12#include <linux/math64.h> 13#include <linux/math64.h>
13#include <linux/percpu.h> 14#include <linux/percpu.h>
14#include <linux/smp.h> 15#include <linux/smp.h>
15 16
16struct aperfmperf_sample { 17struct aperfmperf_sample {
17 unsigned int khz; 18 unsigned int khz;
18 unsigned long jiffies; 19 ktime_t time;
19 u64 aperf; 20 u64 aperf;
20 u64 mperf; 21 u64 mperf;
21}; 22};
22 23
23static DEFINE_PER_CPU(struct aperfmperf_sample, samples); 24static DEFINE_PER_CPU(struct aperfmperf_sample, samples);
24 25
26#define APERFMPERF_CACHE_THRESHOLD_MS 10
27#define APERFMPERF_REFRESH_DELAY_MS 20
28#define APERFMPERF_STALE_THRESHOLD_MS 1000
29
25/* 30/*
26 * aperfmperf_snapshot_khz() 31 * aperfmperf_snapshot_khz()
27 * On the current CPU, snapshot APERF, MPERF, and jiffies 32 * On the current CPU, snapshot APERF, MPERF, and jiffies
@@ -33,13 +38,18 @@ static void aperfmperf_snapshot_khz(void *dummy)
33 u64 aperf, aperf_delta; 38 u64 aperf, aperf_delta;
34 u64 mperf, mperf_delta; 39 u64 mperf, mperf_delta;
35 struct aperfmperf_sample *s = this_cpu_ptr(&samples); 40 struct aperfmperf_sample *s = this_cpu_ptr(&samples);
41 ktime_t now = ktime_get();
42 s64 time_delta = ktime_ms_delta(now, s->time);
43 unsigned long flags;
36 44
37 /* Don't bother re-computing within 10 ms */ 45 /* Don't bother re-computing within the cache threshold time. */
38 if (time_before(jiffies, s->jiffies + HZ/100)) 46 if (time_delta < APERFMPERF_CACHE_THRESHOLD_MS)
39 return; 47 return;
40 48
49 local_irq_save(flags);
41 rdmsrl(MSR_IA32_APERF, aperf); 50 rdmsrl(MSR_IA32_APERF, aperf);
42 rdmsrl(MSR_IA32_MPERF, mperf); 51 rdmsrl(MSR_IA32_MPERF, mperf);
52 local_irq_restore(flags);
43 53
44 aperf_delta = aperf - s->aperf; 54 aperf_delta = aperf - s->aperf;
45 mperf_delta = mperf - s->mperf; 55 mperf_delta = mperf - s->mperf;
@@ -51,22 +61,21 @@ static void aperfmperf_snapshot_khz(void *dummy)
51 if (mperf_delta == 0) 61 if (mperf_delta == 0)
52 return; 62 return;
53 63
54 /* 64 s->time = now;
55 * if (cpu_khz * aperf_delta) fits into ULLONG_MAX, then
56 * khz = (cpu_khz * aperf_delta) / mperf_delta
57 */
58 if (div64_u64(ULLONG_MAX, cpu_khz) > aperf_delta)
59 s->khz = div64_u64((cpu_khz * aperf_delta), mperf_delta);
60 else /* khz = aperf_delta / (mperf_delta / cpu_khz) */
61 s->khz = div64_u64(aperf_delta,
62 div64_u64(mperf_delta, cpu_khz));
63 s->jiffies = jiffies;
64 s->aperf = aperf; 65 s->aperf = aperf;
65 s->mperf = mperf; 66 s->mperf = mperf;
67
68 /* If the previous iteration was too long ago, discard it. */
69 if (time_delta > APERFMPERF_STALE_THRESHOLD_MS)
70 s->khz = 0;
71 else
72 s->khz = div64_u64((cpu_khz * aperf_delta), mperf_delta);
66} 73}
67 74
68unsigned int arch_freq_get_on_cpu(int cpu) 75unsigned int arch_freq_get_on_cpu(int cpu)
69{ 76{
77 unsigned int khz;
78
70 if (!cpu_khz) 79 if (!cpu_khz)
71 return 0; 80 return 0;
72 81
@@ -74,6 +83,12 @@ unsigned int arch_freq_get_on_cpu(int cpu)
74 return 0; 83 return 0;
75 84
76 smp_call_function_single(cpu, aperfmperf_snapshot_khz, NULL, 1); 85 smp_call_function_single(cpu, aperfmperf_snapshot_khz, NULL, 1);
86 khz = per_cpu(samples.khz, cpu);
87 if (khz)
88 return khz;
89
90 msleep(APERFMPERF_REFRESH_DELAY_MS);
91 smp_call_function_single(cpu, aperfmperf_snapshot_khz, NULL, 1);
77 92
78 return per_cpu(samples.khz, cpu); 93 return per_cpu(samples.khz, cpu);
79} 94}
diff --git a/arch/x86/kernel/cpu/mcheck/therm_throt.c b/arch/x86/kernel/cpu/mcheck/therm_throt.c
index d7cc190ae457..f7370abd33c6 100644
--- a/arch/x86/kernel/cpu/mcheck/therm_throt.c
+++ b/arch/x86/kernel/cpu/mcheck/therm_throt.c
@@ -122,7 +122,7 @@ static struct attribute *thermal_throttle_attrs[] = {
122 NULL 122 NULL
123}; 123};
124 124
125static struct attribute_group thermal_attr_group = { 125static const struct attribute_group thermal_attr_group = {
126 .attrs = thermal_throttle_attrs, 126 .attrs = thermal_throttle_attrs,
127 .name = "thermal_throttle" 127 .name = "thermal_throttle"
128}; 128};
diff --git a/arch/x86/kernel/cpu/microcode/core.c b/arch/x86/kernel/cpu/microcode/core.c
index 9cb98ee103db..86e8f0b2537b 100644
--- a/arch/x86/kernel/cpu/microcode/core.c
+++ b/arch/x86/kernel/cpu/microcode/core.c
@@ -561,7 +561,7 @@ static struct attribute *mc_default_attrs[] = {
561 NULL 561 NULL
562}; 562};
563 563
564static struct attribute_group mc_attr_group = { 564static const struct attribute_group mc_attr_group = {
565 .attrs = mc_default_attrs, 565 .attrs = mc_default_attrs,
566 .name = "microcode", 566 .name = "microcode",
567}; 567};
@@ -707,7 +707,7 @@ static struct attribute *cpu_root_microcode_attrs[] = {
707 NULL 707 NULL
708}; 708};
709 709
710static struct attribute_group cpu_root_microcode_group = { 710static const struct attribute_group cpu_root_microcode_group = {
711 .name = "microcode", 711 .name = "microcode",
712 .attrs = cpu_root_microcode_attrs, 712 .attrs = cpu_root_microcode_attrs,
713}; 713};
diff --git a/arch/x86/kernel/cpu/mtrr/main.c b/arch/x86/kernel/cpu/mtrr/main.c
index c5bb63be4ba1..40d5a8a75212 100644
--- a/arch/x86/kernel/cpu/mtrr/main.c
+++ b/arch/x86/kernel/cpu/mtrr/main.c
@@ -237,6 +237,18 @@ set_mtrr(unsigned int reg, unsigned long base, unsigned long size, mtrr_type typ
237 stop_machine(mtrr_rendezvous_handler, &data, cpu_online_mask); 237 stop_machine(mtrr_rendezvous_handler, &data, cpu_online_mask);
238} 238}
239 239
240static void set_mtrr_cpuslocked(unsigned int reg, unsigned long base,
241 unsigned long size, mtrr_type type)
242{
243 struct set_mtrr_data data = { .smp_reg = reg,
244 .smp_base = base,
245 .smp_size = size,
246 .smp_type = type
247 };
248
249 stop_machine_cpuslocked(mtrr_rendezvous_handler, &data, cpu_online_mask);
250}
251
240static void set_mtrr_from_inactive_cpu(unsigned int reg, unsigned long base, 252static void set_mtrr_from_inactive_cpu(unsigned int reg, unsigned long base,
241 unsigned long size, mtrr_type type) 253 unsigned long size, mtrr_type type)
242{ 254{
@@ -370,7 +382,7 @@ int mtrr_add_page(unsigned long base, unsigned long size,
370 /* Search for an empty MTRR */ 382 /* Search for an empty MTRR */
371 i = mtrr_if->get_free_region(base, size, replace); 383 i = mtrr_if->get_free_region(base, size, replace);
372 if (i >= 0) { 384 if (i >= 0) {
373 set_mtrr(i, base, size, type); 385 set_mtrr_cpuslocked(i, base, size, type);
374 if (likely(replace < 0)) { 386 if (likely(replace < 0)) {
375 mtrr_usage_table[i] = 1; 387 mtrr_usage_table[i] = 1;
376 } else { 388 } else {
@@ -378,7 +390,7 @@ int mtrr_add_page(unsigned long base, unsigned long size,
378 if (increment) 390 if (increment)
379 mtrr_usage_table[i]++; 391 mtrr_usage_table[i]++;
380 if (unlikely(replace != i)) { 392 if (unlikely(replace != i)) {
381 set_mtrr(replace, 0, 0, 0); 393 set_mtrr_cpuslocked(replace, 0, 0, 0);
382 mtrr_usage_table[replace] = 0; 394 mtrr_usage_table[replace] = 0;
383 } 395 }
384 } 396 }
@@ -506,7 +518,7 @@ int mtrr_del_page(int reg, unsigned long base, unsigned long size)
506 goto out; 518 goto out;
507 } 519 }
508 if (--mtrr_usage_table[reg] < 1) 520 if (--mtrr_usage_table[reg] < 1)
509 set_mtrr(reg, 0, 0, 0); 521 set_mtrr_cpuslocked(reg, 0, 0, 0);
510 error = reg; 522 error = reg;
511 out: 523 out:
512 mutex_unlock(&mtrr_mutex); 524 mutex_unlock(&mtrr_mutex);
diff --git a/arch/x86/kernel/devicetree.c b/arch/x86/kernel/devicetree.c
index 3fe45f84ced4..cbf1f6ba39a8 100644
--- a/arch/x86/kernel/devicetree.c
+++ b/arch/x86/kernel/devicetree.c
@@ -235,8 +235,7 @@ static void __init dtb_add_ioapic(struct device_node *dn)
235 235
236 ret = of_address_to_resource(dn, 0, &r); 236 ret = of_address_to_resource(dn, 0, &r);
237 if (ret) { 237 if (ret) {
238 printk(KERN_ERR "Can't obtain address from node %s.\n", 238 printk(KERN_ERR "Can't obtain address from device node %pOF.\n", dn);
239 dn->full_name);
240 return; 239 return;
241 } 240 }
242 mp_register_ioapic(++ioapic_id, r.start, gsi_top, &cfg); 241 mp_register_ioapic(++ioapic_id, r.start, gsi_top, &cfg);
diff --git a/arch/x86/kernel/head64.c b/arch/x86/kernel/head64.c
index 925b2928f377..6a193b93fd95 100644
--- a/arch/x86/kernel/head64.c
+++ b/arch/x86/kernel/head64.c
@@ -55,6 +55,7 @@ unsigned long __head __startup_64(unsigned long physaddr,
55 pudval_t *pud; 55 pudval_t *pud;
56 pmdval_t *pmd, pmd_entry; 56 pmdval_t *pmd, pmd_entry;
57 int i; 57 int i;
58 unsigned int *next_pgt_ptr;
58 59
59 /* Is the address too large? */ 60 /* Is the address too large? */
60 if (physaddr >> MAX_PHYSMEM_BITS) 61 if (physaddr >> MAX_PHYSMEM_BITS)
@@ -100,8 +101,10 @@ unsigned long __head __startup_64(unsigned long physaddr,
100 * it avoids problems around wraparound. 101 * it avoids problems around wraparound.
101 */ 102 */
102 103
103 pud = fixup_pointer(early_dynamic_pgts[next_early_pgt++], physaddr); 104 next_pgt_ptr = fixup_pointer(&next_early_pgt, physaddr);
104 pmd = fixup_pointer(early_dynamic_pgts[next_early_pgt++], physaddr); 105 pud = fixup_pointer(early_dynamic_pgts[(*next_pgt_ptr)++], physaddr);
106 pmd = fixup_pointer(early_dynamic_pgts[(*next_pgt_ptr)++], physaddr);
107
105 pgtable_flags = _KERNPG_TABLE_NOENC + sme_get_me_mask(); 108 pgtable_flags = _KERNPG_TABLE_NOENC + sme_get_me_mask();
106 109
107 if (IS_ENABLED(CONFIG_X86_5LEVEL)) { 110 if (IS_ENABLED(CONFIG_X86_5LEVEL)) {
diff --git a/arch/x86/kernel/hpet.c b/arch/x86/kernel/hpet.c
index 16f82a3aaec7..8ce4212e2b8d 100644
--- a/arch/x86/kernel/hpet.c
+++ b/arch/x86/kernel/hpet.c
@@ -345,21 +345,10 @@ static int hpet_shutdown(struct clock_event_device *evt, int timer)
345 return 0; 345 return 0;
346} 346}
347 347
348static int hpet_resume(struct clock_event_device *evt, int timer) 348static int hpet_resume(struct clock_event_device *evt)
349{ 349{
350 if (!timer) { 350 hpet_enable_legacy_int();
351 hpet_enable_legacy_int();
352 } else {
353 struct hpet_dev *hdev = EVT_TO_HPET_DEV(evt);
354
355 irq_domain_deactivate_irq(irq_get_irq_data(hdev->irq));
356 irq_domain_activate_irq(irq_get_irq_data(hdev->irq));
357 disable_hardirq(hdev->irq);
358 irq_set_affinity(hdev->irq, cpumask_of(hdev->cpu));
359 enable_irq(hdev->irq);
360 }
361 hpet_print_config(); 351 hpet_print_config();
362
363 return 0; 352 return 0;
364} 353}
365 354
@@ -417,7 +406,7 @@ static int hpet_legacy_set_periodic(struct clock_event_device *evt)
417 406
418static int hpet_legacy_resume(struct clock_event_device *evt) 407static int hpet_legacy_resume(struct clock_event_device *evt)
419{ 408{
420 return hpet_resume(evt, 0); 409 return hpet_resume(evt);
421} 410}
422 411
423static int hpet_legacy_next_event(unsigned long delta, 412static int hpet_legacy_next_event(unsigned long delta,
@@ -510,8 +499,14 @@ static int hpet_msi_set_periodic(struct clock_event_device *evt)
510static int hpet_msi_resume(struct clock_event_device *evt) 499static int hpet_msi_resume(struct clock_event_device *evt)
511{ 500{
512 struct hpet_dev *hdev = EVT_TO_HPET_DEV(evt); 501 struct hpet_dev *hdev = EVT_TO_HPET_DEV(evt);
502 struct irq_data *data = irq_get_irq_data(hdev->irq);
503 struct msi_msg msg;
513 504
514 return hpet_resume(evt, hdev->num); 505 /* Restore the MSI msg and unmask the interrupt */
506 irq_chip_compose_msi_msg(data, &msg);
507 hpet_msi_write(hdev, &msg);
508 hpet_msi_unmask(data);
509 return 0;
515} 510}
516 511
517static int hpet_msi_next_event(unsigned long delta, 512static int hpet_msi_next_event(unsigned long delta,
diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c
index 4aa03c5a14c9..4ed0aba8dbc8 100644
--- a/arch/x86/kernel/irq.c
+++ b/arch/x86/kernel/irq.c
@@ -155,6 +155,12 @@ int arch_show_interrupts(struct seq_file *p, int prec)
155 seq_printf(p, "%10u ", irq_stats(j)->kvm_posted_intr_ipis); 155 seq_printf(p, "%10u ", irq_stats(j)->kvm_posted_intr_ipis);
156 seq_puts(p, " Posted-interrupt notification event\n"); 156 seq_puts(p, " Posted-interrupt notification event\n");
157 157
158 seq_printf(p, "%*s: ", prec, "NPI");
159 for_each_online_cpu(j)
160 seq_printf(p, "%10u ",
161 irq_stats(j)->kvm_posted_intr_nested_ipis);
162 seq_puts(p, " Nested posted-interrupt event\n");
163
158 seq_printf(p, "%*s: ", prec, "PIW"); 164 seq_printf(p, "%*s: ", prec, "PIW");
159 for_each_online_cpu(j) 165 for_each_online_cpu(j)
160 seq_printf(p, "%10u ", 166 seq_printf(p, "%10u ",
@@ -313,6 +319,19 @@ __visible void smp_kvm_posted_intr_wakeup_ipi(struct pt_regs *regs)
313 exiting_irq(); 319 exiting_irq();
314 set_irq_regs(old_regs); 320 set_irq_regs(old_regs);
315} 321}
322
323/*
324 * Handler for POSTED_INTERRUPT_NESTED_VECTOR.
325 */
326__visible void smp_kvm_posted_intr_nested_ipi(struct pt_regs *regs)
327{
328 struct pt_regs *old_regs = set_irq_regs(regs);
329
330 entering_ack_irq();
331 inc_irq_stat(kvm_posted_intr_nested_ipis);
332 exiting_irq();
333 set_irq_regs(old_regs);
334}
316#endif 335#endif
317 336
318__visible void __irq_entry smp_trace_x86_platform_ipi(struct pt_regs *regs) 337__visible void __irq_entry smp_trace_x86_platform_ipi(struct pt_regs *regs)
diff --git a/arch/x86/kernel/irqinit.c b/arch/x86/kernel/irqinit.c
index 7468c6987547..c7fd18526c3e 100644
--- a/arch/x86/kernel/irqinit.c
+++ b/arch/x86/kernel/irqinit.c
@@ -150,6 +150,8 @@ static void __init apic_intr_init(void)
150 alloc_intr_gate(POSTED_INTR_VECTOR, kvm_posted_intr_ipi); 150 alloc_intr_gate(POSTED_INTR_VECTOR, kvm_posted_intr_ipi);
151 /* IPI for KVM to deliver interrupt to wake up tasks */ 151 /* IPI for KVM to deliver interrupt to wake up tasks */
152 alloc_intr_gate(POSTED_INTR_WAKEUP_VECTOR, kvm_posted_intr_wakeup_ipi); 152 alloc_intr_gate(POSTED_INTR_WAKEUP_VECTOR, kvm_posted_intr_wakeup_ipi);
153 /* IPI for KVM to deliver nested posted interrupt */
154 alloc_intr_gate(POSTED_INTR_NESTED_VECTOR, kvm_posted_intr_nested_ipi);
153#endif 155#endif
154 156
155 /* IPI vectors for APIC spurious and error interrupts */ 157 /* IPI vectors for APIC spurious and error interrupts */
diff --git a/arch/x86/kernel/kprobes/core.c b/arch/x86/kernel/kprobes/core.c
index 6b877807598b..f0153714ddac 100644
--- a/arch/x86/kernel/kprobes/core.c
+++ b/arch/x86/kernel/kprobes/core.c
@@ -457,6 +457,8 @@ static int arch_copy_kprobe(struct kprobe *p)
457 457
458int arch_prepare_kprobe(struct kprobe *p) 458int arch_prepare_kprobe(struct kprobe *p)
459{ 459{
460 int ret;
461
460 if (alternatives_text_reserved(p->addr, p->addr)) 462 if (alternatives_text_reserved(p->addr, p->addr))
461 return -EINVAL; 463 return -EINVAL;
462 464
@@ -467,7 +469,13 @@ int arch_prepare_kprobe(struct kprobe *p)
467 if (!p->ainsn.insn) 469 if (!p->ainsn.insn)
468 return -ENOMEM; 470 return -ENOMEM;
469 471
470 return arch_copy_kprobe(p); 472 ret = arch_copy_kprobe(p);
473 if (ret) {
474 free_insn_slot(p->ainsn.insn, 0);
475 p->ainsn.insn = NULL;
476 }
477
478 return ret;
471} 479}
472 480
473void arch_arm_kprobe(struct kprobe *p) 481void arch_arm_kprobe(struct kprobe *p)
diff --git a/arch/x86/kernel/ksysfs.c b/arch/x86/kernel/ksysfs.c
index ee51db9a968a..4b0592ca9e47 100644
--- a/arch/x86/kernel/ksysfs.c
+++ b/arch/x86/kernel/ksysfs.c
@@ -55,7 +55,7 @@ static struct bin_attribute *boot_params_data_attrs[] = {
55 NULL, 55 NULL,
56}; 56};
57 57
58static struct attribute_group boot_params_attr_group = { 58static const struct attribute_group boot_params_attr_group = {
59 .attrs = boot_params_version_attrs, 59 .attrs = boot_params_version_attrs,
60 .bin_attrs = boot_params_data_attrs, 60 .bin_attrs = boot_params_data_attrs,
61}; 61};
@@ -202,7 +202,7 @@ static struct bin_attribute *setup_data_data_attrs[] = {
202 NULL, 202 NULL,
203}; 203};
204 204
205static struct attribute_group setup_data_attr_group = { 205static const struct attribute_group setup_data_attr_group = {
206 .attrs = setup_data_type_attrs, 206 .attrs = setup_data_type_attrs,
207 .bin_attrs = setup_data_data_attrs, 207 .bin_attrs = setup_data_data_attrs,
208}; 208};
diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c
index 71c17a5be983..d04e30e3c0ff 100644
--- a/arch/x86/kernel/kvm.c
+++ b/arch/x86/kernel/kvm.c
@@ -151,6 +151,8 @@ void kvm_async_pf_task_wait(u32 token)
151 if (hlist_unhashed(&n.link)) 151 if (hlist_unhashed(&n.link))
152 break; 152 break;
153 153
154 rcu_irq_exit();
155
154 if (!n.halted) { 156 if (!n.halted) {
155 local_irq_enable(); 157 local_irq_enable();
156 schedule(); 158 schedule();
@@ -159,11 +161,11 @@ void kvm_async_pf_task_wait(u32 token)
159 /* 161 /*
160 * We cannot reschedule. So halt. 162 * We cannot reschedule. So halt.
161 */ 163 */
162 rcu_irq_exit();
163 native_safe_halt(); 164 native_safe_halt();
164 local_irq_disable(); 165 local_irq_disable();
165 rcu_irq_enter();
166 } 166 }
167
168 rcu_irq_enter();
167 } 169 }
168 if (!n.halted) 170 if (!n.halted)
169 finish_swait(&n.wq, &wait); 171 finish_swait(&n.wq, &wait);
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
index 67393fc88353..a56bf6051f4e 100644
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
@@ -471,12 +471,12 @@ static int __init reboot_init(void)
471 471
472 /* 472 /*
473 * The DMI quirks table takes precedence. If no quirks entry 473 * The DMI quirks table takes precedence. If no quirks entry
474 * matches and the ACPI Hardware Reduced bit is set, force EFI 474 * matches and the ACPI Hardware Reduced bit is set and EFI
475 * reboot. 475 * runtime services are enabled, force EFI reboot.
476 */ 476 */
477 rv = dmi_check_system(reboot_dmi_table); 477 rv = dmi_check_system(reboot_dmi_table);
478 478
479 if (!rv && efi_reboot_required()) 479 if (!rv && efi_reboot_required() && !efi_runtime_disabled())
480 reboot_type = BOOT_EFI; 480 reboot_type = BOOT_EFI;
481 481
482 return 0; 482 return 0;
diff --git a/arch/x86/kernel/smpboot.c b/arch/x86/kernel/smpboot.c
index b474c8de7fba..54b9e89d4d6b 100644
--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -971,7 +971,8 @@ void common_cpu_up(unsigned int cpu, struct task_struct *idle)
971 * Returns zero if CPU booted OK, else error code from 971 * Returns zero if CPU booted OK, else error code from
972 * ->wakeup_secondary_cpu. 972 * ->wakeup_secondary_cpu.
973 */ 973 */
974static int do_boot_cpu(int apicid, int cpu, struct task_struct *idle) 974static int do_boot_cpu(int apicid, int cpu, struct task_struct *idle,
975 int *cpu0_nmi_registered)
975{ 976{
976 volatile u32 *trampoline_status = 977 volatile u32 *trampoline_status =
977 (volatile u32 *) __va(real_mode_header->trampoline_status); 978 (volatile u32 *) __va(real_mode_header->trampoline_status);
@@ -979,7 +980,6 @@ static int do_boot_cpu(int apicid, int cpu, struct task_struct *idle)
979 unsigned long start_ip = real_mode_header->trampoline_start; 980 unsigned long start_ip = real_mode_header->trampoline_start;
980 981
981 unsigned long boot_error = 0; 982 unsigned long boot_error = 0;
982 int cpu0_nmi_registered = 0;
983 unsigned long timeout; 983 unsigned long timeout;
984 984
985 idle->thread.sp = (unsigned long)task_pt_regs(idle); 985 idle->thread.sp = (unsigned long)task_pt_regs(idle);
@@ -1035,7 +1035,7 @@ static int do_boot_cpu(int apicid, int cpu, struct task_struct *idle)
1035 boot_error = apic->wakeup_secondary_cpu(apicid, start_ip); 1035 boot_error = apic->wakeup_secondary_cpu(apicid, start_ip);
1036 else 1036 else
1037 boot_error = wakeup_cpu_via_init_nmi(cpu, start_ip, apicid, 1037 boot_error = wakeup_cpu_via_init_nmi(cpu, start_ip, apicid,
1038 &cpu0_nmi_registered); 1038 cpu0_nmi_registered);
1039 1039
1040 if (!boot_error) { 1040 if (!boot_error) {
1041 /* 1041 /*
@@ -1080,12 +1080,6 @@ static int do_boot_cpu(int apicid, int cpu, struct task_struct *idle)
1080 */ 1080 */
1081 smpboot_restore_warm_reset_vector(); 1081 smpboot_restore_warm_reset_vector();
1082 } 1082 }
1083 /*
1084 * Clean up the nmi handler. Do this after the callin and callout sync
1085 * to avoid impact of possible long unregister time.
1086 */
1087 if (cpu0_nmi_registered)
1088 unregister_nmi_handler(NMI_LOCAL, "wake_cpu0");
1089 1083
1090 return boot_error; 1084 return boot_error;
1091} 1085}
@@ -1093,8 +1087,9 @@ static int do_boot_cpu(int apicid, int cpu, struct task_struct *idle)
1093int native_cpu_up(unsigned int cpu, struct task_struct *tidle) 1087int native_cpu_up(unsigned int cpu, struct task_struct *tidle)
1094{ 1088{
1095 int apicid = apic->cpu_present_to_apicid(cpu); 1089 int apicid = apic->cpu_present_to_apicid(cpu);
1090 int cpu0_nmi_registered = 0;
1096 unsigned long flags; 1091 unsigned long flags;
1097 int err; 1092 int err, ret = 0;
1098 1093
1099 WARN_ON(irqs_disabled()); 1094 WARN_ON(irqs_disabled());
1100 1095
@@ -1131,10 +1126,11 @@ int native_cpu_up(unsigned int cpu, struct task_struct *tidle)
1131 1126
1132 common_cpu_up(cpu, tidle); 1127 common_cpu_up(cpu, tidle);
1133 1128
1134 err = do_boot_cpu(apicid, cpu, tidle); 1129 err = do_boot_cpu(apicid, cpu, tidle, &cpu0_nmi_registered);
1135 if (err) { 1130 if (err) {
1136 pr_err("do_boot_cpu failed(%d) to wakeup CPU#%u\n", err, cpu); 1131 pr_err("do_boot_cpu failed(%d) to wakeup CPU#%u\n", err, cpu);
1137 return -EIO; 1132 ret = -EIO;
1133 goto unreg_nmi;
1138 } 1134 }
1139 1135
1140 /* 1136 /*
@@ -1150,7 +1146,15 @@ int native_cpu_up(unsigned int cpu, struct task_struct *tidle)
1150 touch_nmi_watchdog(); 1146 touch_nmi_watchdog();
1151 } 1147 }
1152 1148
1153 return 0; 1149unreg_nmi:
1150 /*
1151 * Clean up the nmi handler. Do this after the callin and callout sync
1152 * to avoid impact of possible long unregister time.
1153 */
1154 if (cpu0_nmi_registered)
1155 unregister_nmi_handler(NMI_LOCAL, "wake_cpu0");
1156
1157 return ret;
1154} 1158}
1155 1159
1156/** 1160/**
diff --git a/arch/x86/kvm/Kconfig b/arch/x86/kvm/Kconfig
index 760433b2574a..2688c7dc5323 100644
--- a/arch/x86/kvm/Kconfig
+++ b/arch/x86/kvm/Kconfig
@@ -22,7 +22,7 @@ config KVM
22 depends on HAVE_KVM 22 depends on HAVE_KVM
23 depends on HIGH_RES_TIMERS 23 depends on HIGH_RES_TIMERS
24 # for TASKSTATS/TASK_DELAY_ACCT: 24 # for TASKSTATS/TASK_DELAY_ACCT:
25 depends on NET 25 depends on NET && MULTIUSER
26 select PREEMPT_NOTIFIERS 26 select PREEMPT_NOTIFIERS
27 select MMU_NOTIFIER 27 select MMU_NOTIFIER
28 select ANON_INODES 28 select ANON_INODES
diff --git a/arch/x86/kvm/hyperv.c b/arch/x86/kvm/hyperv.c
index 2695a34fa1c5..337b6d2730fa 100644
--- a/arch/x86/kvm/hyperv.c
+++ b/arch/x86/kvm/hyperv.c
@@ -649,9 +649,10 @@ void kvm_hv_process_stimers(struct kvm_vcpu *vcpu)
649 } 649 }
650 650
651 if ((stimer->config & HV_STIMER_ENABLE) && 651 if ((stimer->config & HV_STIMER_ENABLE) &&
652 stimer->count) 652 stimer->count) {
653 stimer_start(stimer); 653 if (!stimer->msg_pending)
654 else 654 stimer_start(stimer);
655 } else
655 stimer_cleanup(stimer); 656 stimer_cleanup(stimer);
656 } 657 }
657 } 658 }
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
index 2819d4c123eb..589dcc117086 100644
--- a/arch/x86/kvm/lapic.c
+++ b/arch/x86/kvm/lapic.c
@@ -1495,11 +1495,10 @@ EXPORT_SYMBOL_GPL(kvm_lapic_hv_timer_in_use);
1495 1495
1496static void cancel_hv_timer(struct kvm_lapic *apic) 1496static void cancel_hv_timer(struct kvm_lapic *apic)
1497{ 1497{
1498 WARN_ON(preemptible());
1498 WARN_ON(!apic->lapic_timer.hv_timer_in_use); 1499 WARN_ON(!apic->lapic_timer.hv_timer_in_use);
1499 preempt_disable();
1500 kvm_x86_ops->cancel_hv_timer(apic->vcpu); 1500 kvm_x86_ops->cancel_hv_timer(apic->vcpu);
1501 apic->lapic_timer.hv_timer_in_use = false; 1501 apic->lapic_timer.hv_timer_in_use = false;
1502 preempt_enable();
1503} 1502}
1504 1503
1505static bool start_hv_timer(struct kvm_lapic *apic) 1504static bool start_hv_timer(struct kvm_lapic *apic)
@@ -1507,6 +1506,7 @@ static bool start_hv_timer(struct kvm_lapic *apic)
1507 struct kvm_timer *ktimer = &apic->lapic_timer; 1506 struct kvm_timer *ktimer = &apic->lapic_timer;
1508 int r; 1507 int r;
1509 1508
1509 WARN_ON(preemptible());
1510 if (!kvm_x86_ops->set_hv_timer) 1510 if (!kvm_x86_ops->set_hv_timer)
1511 return false; 1511 return false;
1512 1512
@@ -1538,6 +1538,8 @@ static bool start_hv_timer(struct kvm_lapic *apic)
1538static void start_sw_timer(struct kvm_lapic *apic) 1538static void start_sw_timer(struct kvm_lapic *apic)
1539{ 1539{
1540 struct kvm_timer *ktimer = &apic->lapic_timer; 1540 struct kvm_timer *ktimer = &apic->lapic_timer;
1541
1542 WARN_ON(preemptible());
1541 if (apic->lapic_timer.hv_timer_in_use) 1543 if (apic->lapic_timer.hv_timer_in_use)
1542 cancel_hv_timer(apic); 1544 cancel_hv_timer(apic);
1543 if (!apic_lvtt_period(apic) && atomic_read(&ktimer->pending)) 1545 if (!apic_lvtt_period(apic) && atomic_read(&ktimer->pending))
@@ -1552,15 +1554,20 @@ static void start_sw_timer(struct kvm_lapic *apic)
1552 1554
1553static void restart_apic_timer(struct kvm_lapic *apic) 1555static void restart_apic_timer(struct kvm_lapic *apic)
1554{ 1556{
1557 preempt_disable();
1555 if (!start_hv_timer(apic)) 1558 if (!start_hv_timer(apic))
1556 start_sw_timer(apic); 1559 start_sw_timer(apic);
1560 preempt_enable();
1557} 1561}
1558 1562
1559void kvm_lapic_expired_hv_timer(struct kvm_vcpu *vcpu) 1563void kvm_lapic_expired_hv_timer(struct kvm_vcpu *vcpu)
1560{ 1564{
1561 struct kvm_lapic *apic = vcpu->arch.apic; 1565 struct kvm_lapic *apic = vcpu->arch.apic;
1562 1566
1563 WARN_ON(!apic->lapic_timer.hv_timer_in_use); 1567 preempt_disable();
1568 /* If the preempt notifier has already run, it also called apic_timer_expired */
1569 if (!apic->lapic_timer.hv_timer_in_use)
1570 goto out;
1564 WARN_ON(swait_active(&vcpu->wq)); 1571 WARN_ON(swait_active(&vcpu->wq));
1565 cancel_hv_timer(apic); 1572 cancel_hv_timer(apic);
1566 apic_timer_expired(apic); 1573 apic_timer_expired(apic);
@@ -1569,6 +1576,8 @@ void kvm_lapic_expired_hv_timer(struct kvm_vcpu *vcpu)
1569 advance_periodic_target_expiration(apic); 1576 advance_periodic_target_expiration(apic);
1570 restart_apic_timer(apic); 1577 restart_apic_timer(apic);
1571 } 1578 }
1579out:
1580 preempt_enable();
1572} 1581}
1573EXPORT_SYMBOL_GPL(kvm_lapic_expired_hv_timer); 1582EXPORT_SYMBOL_GPL(kvm_lapic_expired_hv_timer);
1574 1583
@@ -1582,9 +1591,11 @@ void kvm_lapic_switch_to_sw_timer(struct kvm_vcpu *vcpu)
1582{ 1591{
1583 struct kvm_lapic *apic = vcpu->arch.apic; 1592 struct kvm_lapic *apic = vcpu->arch.apic;
1584 1593
1594 preempt_disable();
1585 /* Possibly the TSC deadline timer is not enabled yet */ 1595 /* Possibly the TSC deadline timer is not enabled yet */
1586 if (apic->lapic_timer.hv_timer_in_use) 1596 if (apic->lapic_timer.hv_timer_in_use)
1587 start_sw_timer(apic); 1597 start_sw_timer(apic);
1598 preempt_enable();
1588} 1599}
1589EXPORT_SYMBOL_GPL(kvm_lapic_switch_to_sw_timer); 1600EXPORT_SYMBOL_GPL(kvm_lapic_switch_to_sw_timer);
1590 1601
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index 6af04dd5426c..099ff08b4aff 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -1100,7 +1100,7 @@ static __init int svm_hardware_setup(void)
1100 1100
1101 if (vls) { 1101 if (vls) {
1102 if (!npt_enabled || 1102 if (!npt_enabled ||
1103 !boot_cpu_has(X86_FEATURE_VIRTUAL_VMLOAD_VMSAVE) || 1103 !boot_cpu_has(X86_FEATURE_V_VMSAVE_VMLOAD) ||
1104 !IS_ENABLED(CONFIG_X86_64)) { 1104 !IS_ENABLED(CONFIG_X86_64)) {
1105 vls = false; 1105 vls = false;
1106 } else { 1106 } else {
@@ -2430,6 +2430,16 @@ static int nested_svm_check_exception(struct vcpu_svm *svm, unsigned nr,
2430 svm->vmcb->control.exit_code = SVM_EXIT_EXCP_BASE + nr; 2430 svm->vmcb->control.exit_code = SVM_EXIT_EXCP_BASE + nr;
2431 svm->vmcb->control.exit_code_hi = 0; 2431 svm->vmcb->control.exit_code_hi = 0;
2432 svm->vmcb->control.exit_info_1 = error_code; 2432 svm->vmcb->control.exit_info_1 = error_code;
2433
2434 /*
2435 * FIXME: we should not write CR2 when L1 intercepts an L2 #PF exception.
2436 * The fix is to add the ancillary datum (CR2 or DR6) to structs
2437 * kvm_queued_exception and kvm_vcpu_events, so that CR2 and DR6 can be
2438 * written only when inject_pending_event runs (DR6 would written here
2439 * too). This should be conditional on a new capability---if the
2440 * capability is disabled, kvm_multiple_exception would write the
2441 * ancillary information to CR2 or DR6, for backwards ABI-compatibility.
2442 */
2433 if (svm->vcpu.arch.exception.nested_apf) 2443 if (svm->vcpu.arch.exception.nested_apf)
2434 svm->vmcb->control.exit_info_2 = svm->vcpu.arch.apf.nested_apf_token; 2444 svm->vmcb->control.exit_info_2 = svm->vcpu.arch.apf.nested_apf_token;
2435 else 2445 else
diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
index ffd469ecad57..416d5ed320b6 100644
--- a/arch/x86/kvm/vmx.c
+++ b/arch/x86/kvm/vmx.c
@@ -198,7 +198,8 @@ struct loaded_vmcs {
198 struct vmcs *vmcs; 198 struct vmcs *vmcs;
199 struct vmcs *shadow_vmcs; 199 struct vmcs *shadow_vmcs;
200 int cpu; 200 int cpu;
201 int launched; 201 bool launched;
202 bool nmi_known_unmasked;
202 struct list_head loaded_vmcss_on_cpu_link; 203 struct list_head loaded_vmcss_on_cpu_link;
203}; 204};
204 205
@@ -415,13 +416,10 @@ struct nested_vmx {
415 416
416 /* The guest-physical address of the current VMCS L1 keeps for L2 */ 417 /* The guest-physical address of the current VMCS L1 keeps for L2 */
417 gpa_t current_vmptr; 418 gpa_t current_vmptr;
418 /* The host-usable pointer to the above */
419 struct page *current_vmcs12_page;
420 struct vmcs12 *current_vmcs12;
421 /* 419 /*
422 * Cache of the guest's VMCS, existing outside of guest memory. 420 * Cache of the guest's VMCS, existing outside of guest memory.
423 * Loaded from guest memory during VMPTRLD. Flushed to guest 421 * Loaded from guest memory during VMPTRLD. Flushed to guest
424 * memory during VMXOFF, VMCLEAR, VMPTRLD. 422 * memory during VMCLEAR and VMPTRLD.
425 */ 423 */
426 struct vmcs12 *cached_vmcs12; 424 struct vmcs12 *cached_vmcs12;
427 /* 425 /*
@@ -562,7 +560,6 @@ struct vcpu_vmx {
562 struct kvm_vcpu vcpu; 560 struct kvm_vcpu vcpu;
563 unsigned long host_rsp; 561 unsigned long host_rsp;
564 u8 fail; 562 u8 fail;
565 bool nmi_known_unmasked;
566 u32 exit_intr_info; 563 u32 exit_intr_info;
567 u32 idt_vectoring_info; 564 u32 idt_vectoring_info;
568 ulong rflags; 565 ulong rflags;
@@ -927,6 +924,10 @@ static u32 vmx_segment_access_rights(struct kvm_segment *var);
927static void copy_vmcs12_to_shadow(struct vcpu_vmx *vmx); 924static void copy_vmcs12_to_shadow(struct vcpu_vmx *vmx);
928static void copy_shadow_to_vmcs12(struct vcpu_vmx *vmx); 925static void copy_shadow_to_vmcs12(struct vcpu_vmx *vmx);
929static int alloc_identity_pagetable(struct kvm *kvm); 926static int alloc_identity_pagetable(struct kvm *kvm);
927static bool vmx_get_nmi_mask(struct kvm_vcpu *vcpu);
928static void vmx_set_nmi_mask(struct kvm_vcpu *vcpu, bool masked);
929static bool nested_vmx_is_page_fault_vmexit(struct vmcs12 *vmcs12,
930 u16 error_code);
930 931
931static DEFINE_PER_CPU(struct vmcs *, vmxarea); 932static DEFINE_PER_CPU(struct vmcs *, vmxarea);
932static DEFINE_PER_CPU(struct vmcs *, current_vmcs); 933static DEFINE_PER_CPU(struct vmcs *, current_vmcs);
@@ -2326,6 +2327,11 @@ static void vmx_vcpu_put(struct kvm_vcpu *vcpu)
2326 __vmx_load_host_state(to_vmx(vcpu)); 2327 __vmx_load_host_state(to_vmx(vcpu));
2327} 2328}
2328 2329
2330static bool emulation_required(struct kvm_vcpu *vcpu)
2331{
2332 return emulate_invalid_guest_state && !guest_state_valid(vcpu);
2333}
2334
2329static void vmx_decache_cr0_guest_bits(struct kvm_vcpu *vcpu); 2335static void vmx_decache_cr0_guest_bits(struct kvm_vcpu *vcpu);
2330 2336
2331/* 2337/*
@@ -2363,6 +2369,8 @@ static unsigned long vmx_get_rflags(struct kvm_vcpu *vcpu)
2363 2369
2364static void vmx_set_rflags(struct kvm_vcpu *vcpu, unsigned long rflags) 2370static void vmx_set_rflags(struct kvm_vcpu *vcpu, unsigned long rflags)
2365{ 2371{
2372 unsigned long old_rflags = vmx_get_rflags(vcpu);
2373
2366 __set_bit(VCPU_EXREG_RFLAGS, (ulong *)&vcpu->arch.regs_avail); 2374 __set_bit(VCPU_EXREG_RFLAGS, (ulong *)&vcpu->arch.regs_avail);
2367 to_vmx(vcpu)->rflags = rflags; 2375 to_vmx(vcpu)->rflags = rflags;
2368 if (to_vmx(vcpu)->rmode.vm86_active) { 2376 if (to_vmx(vcpu)->rmode.vm86_active) {
@@ -2370,6 +2378,9 @@ static void vmx_set_rflags(struct kvm_vcpu *vcpu, unsigned long rflags)
2370 rflags |= X86_EFLAGS_IOPL | X86_EFLAGS_VM; 2378 rflags |= X86_EFLAGS_IOPL | X86_EFLAGS_VM;
2371 } 2379 }
2372 vmcs_writel(GUEST_RFLAGS, rflags); 2380 vmcs_writel(GUEST_RFLAGS, rflags);
2381
2382 if ((old_rflags ^ to_vmx(vcpu)->rflags) & X86_EFLAGS_VM)
2383 to_vmx(vcpu)->emulation_required = emulation_required(vcpu);
2373} 2384}
2374 2385
2375static u32 vmx_get_pkru(struct kvm_vcpu *vcpu) 2386static u32 vmx_get_pkru(struct kvm_vcpu *vcpu)
@@ -2418,6 +2429,30 @@ static void skip_emulated_instruction(struct kvm_vcpu *vcpu)
2418 vmx_set_interrupt_shadow(vcpu, 0); 2429 vmx_set_interrupt_shadow(vcpu, 0);
2419} 2430}
2420 2431
2432static void nested_vmx_inject_exception_vmexit(struct kvm_vcpu *vcpu,
2433 unsigned long exit_qual)
2434{
2435 struct vmcs12 *vmcs12 = get_vmcs12(vcpu);
2436 unsigned int nr = vcpu->arch.exception.nr;
2437 u32 intr_info = nr | INTR_INFO_VALID_MASK;
2438
2439 if (vcpu->arch.exception.has_error_code) {
2440 vmcs12->vm_exit_intr_error_code = vcpu->arch.exception.error_code;
2441 intr_info |= INTR_INFO_DELIVER_CODE_MASK;
2442 }
2443
2444 if (kvm_exception_is_soft(nr))
2445 intr_info |= INTR_TYPE_SOFT_EXCEPTION;
2446 else
2447 intr_info |= INTR_TYPE_HARD_EXCEPTION;
2448
2449 if (!(vmcs12->idt_vectoring_info_field & VECTORING_INFO_VALID_MASK) &&
2450 vmx_get_nmi_mask(vcpu))
2451 intr_info |= INTR_INFO_UNBLOCK_NMI;
2452
2453 nested_vmx_vmexit(vcpu, EXIT_REASON_EXCEPTION_NMI, intr_info, exit_qual);
2454}
2455
2421/* 2456/*
2422 * KVM wants to inject page-faults which it got to the guest. This function 2457 * KVM wants to inject page-faults which it got to the guest. This function
2423 * checks whether in a nested guest, we need to inject them to L1 or L2. 2458 * checks whether in a nested guest, we need to inject them to L1 or L2.
@@ -2427,23 +2462,38 @@ static int nested_vmx_check_exception(struct kvm_vcpu *vcpu)
2427 struct vmcs12 *vmcs12 = get_vmcs12(vcpu); 2462 struct vmcs12 *vmcs12 = get_vmcs12(vcpu);
2428 unsigned int nr = vcpu->arch.exception.nr; 2463 unsigned int nr = vcpu->arch.exception.nr;
2429 2464
2430 if (!((vmcs12->exception_bitmap & (1u << nr)) || 2465 if (nr == PF_VECTOR) {
2431 (nr == PF_VECTOR && vcpu->arch.exception.nested_apf))) 2466 if (vcpu->arch.exception.nested_apf) {
2432 return 0; 2467 nested_vmx_inject_exception_vmexit(vcpu,
2468 vcpu->arch.apf.nested_apf_token);
2469 return 1;
2470 }
2471 /*
2472 * FIXME: we must not write CR2 when L1 intercepts an L2 #PF exception.
2473 * The fix is to add the ancillary datum (CR2 or DR6) to structs
2474 * kvm_queued_exception and kvm_vcpu_events, so that CR2 and DR6
2475 * can be written only when inject_pending_event runs. This should be
2476 * conditional on a new capability---if the capability is disabled,
2477 * kvm_multiple_exception would write the ancillary information to
2478 * CR2 or DR6, for backwards ABI-compatibility.
2479 */
2480 if (nested_vmx_is_page_fault_vmexit(vmcs12,
2481 vcpu->arch.exception.error_code)) {
2482 nested_vmx_inject_exception_vmexit(vcpu, vcpu->arch.cr2);
2483 return 1;
2484 }
2485 } else {
2486 unsigned long exit_qual = 0;
2487 if (nr == DB_VECTOR)
2488 exit_qual = vcpu->arch.dr6;
2433 2489
2434 if (vcpu->arch.exception.nested_apf) { 2490 if (vmcs12->exception_bitmap & (1u << nr)) {
2435 vmcs_write32(VM_EXIT_INTR_ERROR_CODE, vcpu->arch.exception.error_code); 2491 nested_vmx_inject_exception_vmexit(vcpu, exit_qual);
2436 nested_vmx_vmexit(vcpu, EXIT_REASON_EXCEPTION_NMI, 2492 return 1;
2437 PF_VECTOR | INTR_TYPE_HARD_EXCEPTION | 2493 }
2438 INTR_INFO_DELIVER_CODE_MASK | INTR_INFO_VALID_MASK,
2439 vcpu->arch.apf.nested_apf_token);
2440 return 1;
2441 } 2494 }
2442 2495
2443 nested_vmx_vmexit(vcpu, EXIT_REASON_EXCEPTION_NMI, 2496 return 0;
2444 vmcs_read32(VM_EXIT_INTR_INFO),
2445 vmcs_readl(EXIT_QUALIFICATION));
2446 return 1;
2447} 2497}
2448 2498
2449static void vmx_queue_exception(struct kvm_vcpu *vcpu) 2499static void vmx_queue_exception(struct kvm_vcpu *vcpu)
@@ -2657,7 +2707,7 @@ static void nested_vmx_setup_ctls_msrs(struct vcpu_vmx *vmx)
2657 * reason is that if one of these bits is necessary, it will appear 2707 * reason is that if one of these bits is necessary, it will appear
2658 * in vmcs01 and prepare_vmcs02, when it bitwise-or's the control 2708 * in vmcs01 and prepare_vmcs02, when it bitwise-or's the control
2659 * fields of vmcs01 and vmcs02, will turn these bits off - and 2709 * fields of vmcs01 and vmcs02, will turn these bits off - and
2660 * nested_vmx_exit_handled() will not pass related exits to L1. 2710 * nested_vmx_exit_reflected() will not pass related exits to L1.
2661 * These rules have exceptions below. 2711 * These rules have exceptions below.
2662 */ 2712 */
2663 2713
@@ -3857,11 +3907,6 @@ static __init int alloc_kvm_area(void)
3857 return 0; 3907 return 0;
3858} 3908}
3859 3909
3860static bool emulation_required(struct kvm_vcpu *vcpu)
3861{
3862 return emulate_invalid_guest_state && !guest_state_valid(vcpu);
3863}
3864
3865static void fix_pmode_seg(struct kvm_vcpu *vcpu, int seg, 3910static void fix_pmode_seg(struct kvm_vcpu *vcpu, int seg,
3866 struct kvm_segment *save) 3911 struct kvm_segment *save)
3867{ 3912{
@@ -4950,6 +4995,28 @@ static bool vmx_get_enable_apicv(void)
4950 return enable_apicv; 4995 return enable_apicv;
4951} 4996}
4952 4997
4998static void nested_mark_vmcs12_pages_dirty(struct kvm_vcpu *vcpu)
4999{
5000 struct vmcs12 *vmcs12 = get_vmcs12(vcpu);
5001 gfn_t gfn;
5002
5003 /*
5004 * Don't need to mark the APIC access page dirty; it is never
5005 * written to by the CPU during APIC virtualization.
5006 */
5007
5008 if (nested_cpu_has(vmcs12, CPU_BASED_TPR_SHADOW)) {
5009 gfn = vmcs12->virtual_apic_page_addr >> PAGE_SHIFT;
5010 kvm_vcpu_mark_page_dirty(vcpu, gfn);
5011 }
5012
5013 if (nested_cpu_has_posted_intr(vmcs12)) {
5014 gfn = vmcs12->posted_intr_desc_addr >> PAGE_SHIFT;
5015 kvm_vcpu_mark_page_dirty(vcpu, gfn);
5016 }
5017}
5018
5019
4953static void vmx_complete_nested_posted_interrupt(struct kvm_vcpu *vcpu) 5020static void vmx_complete_nested_posted_interrupt(struct kvm_vcpu *vcpu)
4954{ 5021{
4955 struct vcpu_vmx *vmx = to_vmx(vcpu); 5022 struct vcpu_vmx *vmx = to_vmx(vcpu);
@@ -4957,18 +5024,15 @@ static void vmx_complete_nested_posted_interrupt(struct kvm_vcpu *vcpu)
4957 void *vapic_page; 5024 void *vapic_page;
4958 u16 status; 5025 u16 status;
4959 5026
4960 if (vmx->nested.pi_desc && 5027 if (!vmx->nested.pi_desc || !vmx->nested.pi_pending)
4961 vmx->nested.pi_pending) { 5028 return;
4962 vmx->nested.pi_pending = false;
4963 if (!pi_test_and_clear_on(vmx->nested.pi_desc))
4964 return;
4965
4966 max_irr = find_last_bit(
4967 (unsigned long *)vmx->nested.pi_desc->pir, 256);
4968 5029
4969 if (max_irr == 256) 5030 vmx->nested.pi_pending = false;
4970 return; 5031 if (!pi_test_and_clear_on(vmx->nested.pi_desc))
5032 return;
4971 5033
5034 max_irr = find_last_bit((unsigned long *)vmx->nested.pi_desc->pir, 256);
5035 if (max_irr != 256) {
4972 vapic_page = kmap(vmx->nested.virtual_apic_page); 5036 vapic_page = kmap(vmx->nested.virtual_apic_page);
4973 __kvm_apic_update_irr(vmx->nested.pi_desc->pir, vapic_page); 5037 __kvm_apic_update_irr(vmx->nested.pi_desc->pir, vapic_page);
4974 kunmap(vmx->nested.virtual_apic_page); 5038 kunmap(vmx->nested.virtual_apic_page);
@@ -4980,11 +5044,16 @@ static void vmx_complete_nested_posted_interrupt(struct kvm_vcpu *vcpu)
4980 vmcs_write16(GUEST_INTR_STATUS, status); 5044 vmcs_write16(GUEST_INTR_STATUS, status);
4981 } 5045 }
4982 } 5046 }
5047
5048 nested_mark_vmcs12_pages_dirty(vcpu);
4983} 5049}
4984 5050
4985static inline bool kvm_vcpu_trigger_posted_interrupt(struct kvm_vcpu *vcpu) 5051static inline bool kvm_vcpu_trigger_posted_interrupt(struct kvm_vcpu *vcpu,
5052 bool nested)
4986{ 5053{
4987#ifdef CONFIG_SMP 5054#ifdef CONFIG_SMP
5055 int pi_vec = nested ? POSTED_INTR_NESTED_VECTOR : POSTED_INTR_VECTOR;
5056
4988 if (vcpu->mode == IN_GUEST_MODE) { 5057 if (vcpu->mode == IN_GUEST_MODE) {
4989 struct vcpu_vmx *vmx = to_vmx(vcpu); 5058 struct vcpu_vmx *vmx = to_vmx(vcpu);
4990 5059
@@ -5002,8 +5071,7 @@ static inline bool kvm_vcpu_trigger_posted_interrupt(struct kvm_vcpu *vcpu)
5002 */ 5071 */
5003 WARN_ON_ONCE(pi_test_sn(&vmx->pi_desc)); 5072 WARN_ON_ONCE(pi_test_sn(&vmx->pi_desc));
5004 5073
5005 apic->send_IPI_mask(get_cpu_mask(vcpu->cpu), 5074 apic->send_IPI_mask(get_cpu_mask(vcpu->cpu), pi_vec);
5006 POSTED_INTR_VECTOR);
5007 return true; 5075 return true;
5008 } 5076 }
5009#endif 5077#endif
@@ -5018,7 +5086,7 @@ static int vmx_deliver_nested_posted_interrupt(struct kvm_vcpu *vcpu,
5018 if (is_guest_mode(vcpu) && 5086 if (is_guest_mode(vcpu) &&
5019 vector == vmx->nested.posted_intr_nv) { 5087 vector == vmx->nested.posted_intr_nv) {
5020 /* the PIR and ON have been set by L1. */ 5088 /* the PIR and ON have been set by L1. */
5021 kvm_vcpu_trigger_posted_interrupt(vcpu); 5089 kvm_vcpu_trigger_posted_interrupt(vcpu, true);
5022 /* 5090 /*
5023 * If a posted intr is not recognized by hardware, 5091 * If a posted intr is not recognized by hardware,
5024 * we will accomplish it in the next vmentry. 5092 * we will accomplish it in the next vmentry.
@@ -5052,7 +5120,7 @@ static void vmx_deliver_posted_interrupt(struct kvm_vcpu *vcpu, int vector)
5052 if (pi_test_and_set_on(&vmx->pi_desc)) 5120 if (pi_test_and_set_on(&vmx->pi_desc))
5053 return; 5121 return;
5054 5122
5055 if (!kvm_vcpu_trigger_posted_interrupt(vcpu)) 5123 if (!kvm_vcpu_trigger_posted_interrupt(vcpu, false))
5056 kvm_vcpu_kick(vcpu); 5124 kvm_vcpu_kick(vcpu);
5057} 5125}
5058 5126
@@ -5510,10 +5578,8 @@ static void vmx_inject_nmi(struct kvm_vcpu *vcpu)
5510{ 5578{
5511 struct vcpu_vmx *vmx = to_vmx(vcpu); 5579 struct vcpu_vmx *vmx = to_vmx(vcpu);
5512 5580
5513 if (!is_guest_mode(vcpu)) { 5581 ++vcpu->stat.nmi_injections;
5514 ++vcpu->stat.nmi_injections; 5582 vmx->loaded_vmcs->nmi_known_unmasked = false;
5515 vmx->nmi_known_unmasked = false;
5516 }
5517 5583
5518 if (vmx->rmode.vm86_active) { 5584 if (vmx->rmode.vm86_active) {
5519 if (kvm_inject_realmode_interrupt(vcpu, NMI_VECTOR, 0) != EMULATE_DONE) 5585 if (kvm_inject_realmode_interrupt(vcpu, NMI_VECTOR, 0) != EMULATE_DONE)
@@ -5527,16 +5593,21 @@ static void vmx_inject_nmi(struct kvm_vcpu *vcpu)
5527 5593
5528static bool vmx_get_nmi_mask(struct kvm_vcpu *vcpu) 5594static bool vmx_get_nmi_mask(struct kvm_vcpu *vcpu)
5529{ 5595{
5530 if (to_vmx(vcpu)->nmi_known_unmasked) 5596 struct vcpu_vmx *vmx = to_vmx(vcpu);
5597 bool masked;
5598
5599 if (vmx->loaded_vmcs->nmi_known_unmasked)
5531 return false; 5600 return false;
5532 return vmcs_read32(GUEST_INTERRUPTIBILITY_INFO) & GUEST_INTR_STATE_NMI; 5601 masked = vmcs_read32(GUEST_INTERRUPTIBILITY_INFO) & GUEST_INTR_STATE_NMI;
5602 vmx->loaded_vmcs->nmi_known_unmasked = !masked;
5603 return masked;
5533} 5604}
5534 5605
5535static void vmx_set_nmi_mask(struct kvm_vcpu *vcpu, bool masked) 5606static void vmx_set_nmi_mask(struct kvm_vcpu *vcpu, bool masked)
5536{ 5607{
5537 struct vcpu_vmx *vmx = to_vmx(vcpu); 5608 struct vcpu_vmx *vmx = to_vmx(vcpu);
5538 5609
5539 vmx->nmi_known_unmasked = !masked; 5610 vmx->loaded_vmcs->nmi_known_unmasked = !masked;
5540 if (masked) 5611 if (masked)
5541 vmcs_set_bits(GUEST_INTERRUPTIBILITY_INFO, 5612 vmcs_set_bits(GUEST_INTERRUPTIBILITY_INFO,
5542 GUEST_INTR_STATE_NMI); 5613 GUEST_INTR_STATE_NMI);
@@ -7124,34 +7195,32 @@ static int nested_vmx_check_permission(struct kvm_vcpu *vcpu)
7124 return 1; 7195 return 1;
7125} 7196}
7126 7197
7198static void vmx_disable_shadow_vmcs(struct vcpu_vmx *vmx)
7199{
7200 vmcs_clear_bits(SECONDARY_VM_EXEC_CONTROL, SECONDARY_EXEC_SHADOW_VMCS);
7201 vmcs_write64(VMCS_LINK_POINTER, -1ull);
7202}
7203
7127static inline void nested_release_vmcs12(struct vcpu_vmx *vmx) 7204static inline void nested_release_vmcs12(struct vcpu_vmx *vmx)
7128{ 7205{
7129 if (vmx->nested.current_vmptr == -1ull) 7206 if (vmx->nested.current_vmptr == -1ull)
7130 return; 7207 return;
7131 7208
7132 /* current_vmptr and current_vmcs12 are always set/reset together */
7133 if (WARN_ON(vmx->nested.current_vmcs12 == NULL))
7134 return;
7135
7136 if (enable_shadow_vmcs) { 7209 if (enable_shadow_vmcs) {
7137 /* copy to memory all shadowed fields in case 7210 /* copy to memory all shadowed fields in case
7138 they were modified */ 7211 they were modified */
7139 copy_shadow_to_vmcs12(vmx); 7212 copy_shadow_to_vmcs12(vmx);
7140 vmx->nested.sync_shadow_vmcs = false; 7213 vmx->nested.sync_shadow_vmcs = false;
7141 vmcs_clear_bits(SECONDARY_VM_EXEC_CONTROL, 7214 vmx_disable_shadow_vmcs(vmx);
7142 SECONDARY_EXEC_SHADOW_VMCS);
7143 vmcs_write64(VMCS_LINK_POINTER, -1ull);
7144 } 7215 }
7145 vmx->nested.posted_intr_nv = -1; 7216 vmx->nested.posted_intr_nv = -1;
7146 7217
7147 /* Flush VMCS12 to guest memory */ 7218 /* Flush VMCS12 to guest memory */
7148 memcpy(vmx->nested.current_vmcs12, vmx->nested.cached_vmcs12, 7219 kvm_vcpu_write_guest_page(&vmx->vcpu,
7149 VMCS12_SIZE); 7220 vmx->nested.current_vmptr >> PAGE_SHIFT,
7221 vmx->nested.cached_vmcs12, 0, VMCS12_SIZE);
7150 7222
7151 kunmap(vmx->nested.current_vmcs12_page);
7152 nested_release_page(vmx->nested.current_vmcs12_page);
7153 vmx->nested.current_vmptr = -1ull; 7223 vmx->nested.current_vmptr = -1ull;
7154 vmx->nested.current_vmcs12 = NULL;
7155} 7224}
7156 7225
7157/* 7226/*
@@ -7165,12 +7234,14 @@ static void free_nested(struct vcpu_vmx *vmx)
7165 7234
7166 vmx->nested.vmxon = false; 7235 vmx->nested.vmxon = false;
7167 free_vpid(vmx->nested.vpid02); 7236 free_vpid(vmx->nested.vpid02);
7168 nested_release_vmcs12(vmx); 7237 vmx->nested.posted_intr_nv = -1;
7238 vmx->nested.current_vmptr = -1ull;
7169 if (vmx->nested.msr_bitmap) { 7239 if (vmx->nested.msr_bitmap) {
7170 free_page((unsigned long)vmx->nested.msr_bitmap); 7240 free_page((unsigned long)vmx->nested.msr_bitmap);
7171 vmx->nested.msr_bitmap = NULL; 7241 vmx->nested.msr_bitmap = NULL;
7172 } 7242 }
7173 if (enable_shadow_vmcs) { 7243 if (enable_shadow_vmcs) {
7244 vmx_disable_shadow_vmcs(vmx);
7174 vmcs_clear(vmx->vmcs01.shadow_vmcs); 7245 vmcs_clear(vmx->vmcs01.shadow_vmcs);
7175 free_vmcs(vmx->vmcs01.shadow_vmcs); 7246 free_vmcs(vmx->vmcs01.shadow_vmcs);
7176 vmx->vmcs01.shadow_vmcs = NULL; 7247 vmx->vmcs01.shadow_vmcs = NULL;
@@ -7569,14 +7640,14 @@ static int handle_vmptrld(struct kvm_vcpu *vcpu)
7569 } 7640 }
7570 7641
7571 nested_release_vmcs12(vmx); 7642 nested_release_vmcs12(vmx);
7572 vmx->nested.current_vmcs12 = new_vmcs12;
7573 vmx->nested.current_vmcs12_page = page;
7574 /* 7643 /*
7575 * Load VMCS12 from guest memory since it is not already 7644 * Load VMCS12 from guest memory since it is not already
7576 * cached. 7645 * cached.
7577 */ 7646 */
7578 memcpy(vmx->nested.cached_vmcs12, 7647 memcpy(vmx->nested.cached_vmcs12, new_vmcs12, VMCS12_SIZE);
7579 vmx->nested.current_vmcs12, VMCS12_SIZE); 7648 kunmap(page);
7649 nested_release_page_clean(page);
7650
7580 set_current_vmptr(vmx, vmptr); 7651 set_current_vmptr(vmx, vmptr);
7581 } 7652 }
7582 7653
@@ -8009,12 +8080,11 @@ static bool nested_vmx_exit_handled_cr(struct kvm_vcpu *vcpu,
8009 * should handle it ourselves in L0 (and then continue L2). Only call this 8080 * should handle it ourselves in L0 (and then continue L2). Only call this
8010 * when in is_guest_mode (L2). 8081 * when in is_guest_mode (L2).
8011 */ 8082 */
8012static bool nested_vmx_exit_handled(struct kvm_vcpu *vcpu) 8083static bool nested_vmx_exit_reflected(struct kvm_vcpu *vcpu, u32 exit_reason)
8013{ 8084{
8014 u32 intr_info = vmcs_read32(VM_EXIT_INTR_INFO); 8085 u32 intr_info = vmcs_read32(VM_EXIT_INTR_INFO);
8015 struct vcpu_vmx *vmx = to_vmx(vcpu); 8086 struct vcpu_vmx *vmx = to_vmx(vcpu);
8016 struct vmcs12 *vmcs12 = get_vmcs12(vcpu); 8087 struct vmcs12 *vmcs12 = get_vmcs12(vcpu);
8017 u32 exit_reason = vmx->exit_reason;
8018 8088
8019 trace_kvm_nested_vmexit(kvm_rip_read(vcpu), exit_reason, 8089 trace_kvm_nested_vmexit(kvm_rip_read(vcpu), exit_reason,
8020 vmcs_readl(EXIT_QUALIFICATION), 8090 vmcs_readl(EXIT_QUALIFICATION),
@@ -8023,6 +8093,18 @@ static bool nested_vmx_exit_handled(struct kvm_vcpu *vcpu)
8023 vmcs_read32(VM_EXIT_INTR_ERROR_CODE), 8093 vmcs_read32(VM_EXIT_INTR_ERROR_CODE),
8024 KVM_ISA_VMX); 8094 KVM_ISA_VMX);
8025 8095
8096 /*
8097 * The host physical addresses of some pages of guest memory
8098 * are loaded into VMCS02 (e.g. L1's Virtual APIC Page). The CPU
8099 * may write to these pages via their host physical address while
8100 * L2 is running, bypassing any address-translation-based dirty
8101 * tracking (e.g. EPT write protection).
8102 *
8103 * Mark them dirty on every exit from L2 to prevent them from
8104 * getting out of sync with dirty tracking.
8105 */
8106 nested_mark_vmcs12_pages_dirty(vcpu);
8107
8026 if (vmx->nested.nested_run_pending) 8108 if (vmx->nested.nested_run_pending)
8027 return false; 8109 return false;
8028 8110
@@ -8159,6 +8241,29 @@ static bool nested_vmx_exit_handled(struct kvm_vcpu *vcpu)
8159 } 8241 }
8160} 8242}
8161 8243
8244static int nested_vmx_reflect_vmexit(struct kvm_vcpu *vcpu, u32 exit_reason)
8245{
8246 u32 exit_intr_info = vmcs_read32(VM_EXIT_INTR_INFO);
8247
8248 /*
8249 * At this point, the exit interruption info in exit_intr_info
8250 * is only valid for EXCEPTION_NMI exits. For EXTERNAL_INTERRUPT
8251 * we need to query the in-kernel LAPIC.
8252 */
8253 WARN_ON(exit_reason == EXIT_REASON_EXTERNAL_INTERRUPT);
8254 if ((exit_intr_info &
8255 (INTR_INFO_VALID_MASK | INTR_INFO_DELIVER_CODE_MASK)) ==
8256 (INTR_INFO_VALID_MASK | INTR_INFO_DELIVER_CODE_MASK)) {
8257 struct vmcs12 *vmcs12 = get_vmcs12(vcpu);
8258 vmcs12->vm_exit_intr_error_code =
8259 vmcs_read32(VM_EXIT_INTR_ERROR_CODE);
8260 }
8261
8262 nested_vmx_vmexit(vcpu, exit_reason, exit_intr_info,
8263 vmcs_readl(EXIT_QUALIFICATION));
8264 return 1;
8265}
8266
8162static void vmx_get_exit_info(struct kvm_vcpu *vcpu, u64 *info1, u64 *info2) 8267static void vmx_get_exit_info(struct kvm_vcpu *vcpu, u64 *info1, u64 *info2)
8163{ 8268{
8164 *info1 = vmcs_readl(EXIT_QUALIFICATION); 8269 *info1 = vmcs_readl(EXIT_QUALIFICATION);
@@ -8405,12 +8510,8 @@ static int vmx_handle_exit(struct kvm_vcpu *vcpu)
8405 if (vmx->emulation_required) 8510 if (vmx->emulation_required)
8406 return handle_invalid_guest_state(vcpu); 8511 return handle_invalid_guest_state(vcpu);
8407 8512
8408 if (is_guest_mode(vcpu) && nested_vmx_exit_handled(vcpu)) { 8513 if (is_guest_mode(vcpu) && nested_vmx_exit_reflected(vcpu, exit_reason))
8409 nested_vmx_vmexit(vcpu, exit_reason, 8514 return nested_vmx_reflect_vmexit(vcpu, exit_reason);
8410 vmcs_read32(VM_EXIT_INTR_INFO),
8411 vmcs_readl(EXIT_QUALIFICATION));
8412 return 1;
8413 }
8414 8515
8415 if (exit_reason & VMX_EXIT_REASONS_FAILED_VMENTRY) { 8516 if (exit_reason & VMX_EXIT_REASONS_FAILED_VMENTRY) {
8416 dump_vmcs(); 8517 dump_vmcs();
@@ -8736,7 +8837,7 @@ static void vmx_recover_nmi_blocking(struct vcpu_vmx *vmx)
8736 8837
8737 idtv_info_valid = vmx->idt_vectoring_info & VECTORING_INFO_VALID_MASK; 8838 idtv_info_valid = vmx->idt_vectoring_info & VECTORING_INFO_VALID_MASK;
8738 8839
8739 if (vmx->nmi_known_unmasked) 8840 if (vmx->loaded_vmcs->nmi_known_unmasked)
8740 return; 8841 return;
8741 /* 8842 /*
8742 * Can't use vmx->exit_intr_info since we're not sure what 8843 * Can't use vmx->exit_intr_info since we're not sure what
@@ -8760,7 +8861,7 @@ static void vmx_recover_nmi_blocking(struct vcpu_vmx *vmx)
8760 vmcs_set_bits(GUEST_INTERRUPTIBILITY_INFO, 8861 vmcs_set_bits(GUEST_INTERRUPTIBILITY_INFO,
8761 GUEST_INTR_STATE_NMI); 8862 GUEST_INTR_STATE_NMI);
8762 else 8863 else
8763 vmx->nmi_known_unmasked = 8864 vmx->loaded_vmcs->nmi_known_unmasked =
8764 !(vmcs_read32(GUEST_INTERRUPTIBILITY_INFO) 8865 !(vmcs_read32(GUEST_INTERRUPTIBILITY_INFO)
8765 & GUEST_INTR_STATE_NMI); 8866 & GUEST_INTR_STATE_NMI);
8766} 8867}
@@ -9213,7 +9314,6 @@ static struct kvm_vcpu *vmx_create_vcpu(struct kvm *kvm, unsigned int id)
9213 9314
9214 vmx->nested.posted_intr_nv = -1; 9315 vmx->nested.posted_intr_nv = -1;
9215 vmx->nested.current_vmptr = -1ull; 9316 vmx->nested.current_vmptr = -1ull;
9216 vmx->nested.current_vmcs12 = NULL;
9217 9317
9218 vmx->msr_ia32_feature_control_valid_bits = FEATURE_CONTROL_LOCKED; 9318 vmx->msr_ia32_feature_control_valid_bits = FEATURE_CONTROL_LOCKED;
9219 9319
@@ -9499,12 +9599,15 @@ static void vmx_inject_page_fault_nested(struct kvm_vcpu *vcpu,
9499 9599
9500 WARN_ON(!is_guest_mode(vcpu)); 9600 WARN_ON(!is_guest_mode(vcpu));
9501 9601
9502 if (nested_vmx_is_page_fault_vmexit(vmcs12, fault->error_code)) 9602 if (nested_vmx_is_page_fault_vmexit(vmcs12, fault->error_code)) {
9503 nested_vmx_vmexit(vcpu, to_vmx(vcpu)->exit_reason, 9603 vmcs12->vm_exit_intr_error_code = fault->error_code;
9504 vmcs_read32(VM_EXIT_INTR_INFO), 9604 nested_vmx_vmexit(vcpu, EXIT_REASON_EXCEPTION_NMI,
9505 vmcs_readl(EXIT_QUALIFICATION)); 9605 PF_VECTOR | INTR_TYPE_HARD_EXCEPTION |
9506 else 9606 INTR_INFO_DELIVER_CODE_MASK | INTR_INFO_VALID_MASK,
9607 fault->address);
9608 } else {
9507 kvm_inject_page_fault(vcpu, fault); 9609 kvm_inject_page_fault(vcpu, fault);
9610 }
9508} 9611}
9509 9612
9510static inline bool nested_vmx_merge_msr_bitmap(struct kvm_vcpu *vcpu, 9613static inline bool nested_vmx_merge_msr_bitmap(struct kvm_vcpu *vcpu,
@@ -10032,6 +10135,8 @@ static int prepare_vmcs02(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12,
10032 vmcs12->vm_entry_instruction_len); 10135 vmcs12->vm_entry_instruction_len);
10033 vmcs_write32(GUEST_INTERRUPTIBILITY_INFO, 10136 vmcs_write32(GUEST_INTERRUPTIBILITY_INFO,
10034 vmcs12->guest_interruptibility_info); 10137 vmcs12->guest_interruptibility_info);
10138 vmx->loaded_vmcs->nmi_known_unmasked =
10139 !(vmcs12->guest_interruptibility_info & GUEST_INTR_STATE_NMI);
10035 } else { 10140 } else {
10036 vmcs_write32(VM_ENTRY_INTR_INFO_FIELD, 0); 10141 vmcs_write32(VM_ENTRY_INTR_INFO_FIELD, 0);
10037 } 10142 }
@@ -10056,13 +10161,9 @@ static int prepare_vmcs02(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12,
10056 10161
10057 /* Posted interrupts setting is only taken from vmcs12. */ 10162 /* Posted interrupts setting is only taken from vmcs12. */
10058 if (nested_cpu_has_posted_intr(vmcs12)) { 10163 if (nested_cpu_has_posted_intr(vmcs12)) {
10059 /*
10060 * Note that we use L0's vector here and in
10061 * vmx_deliver_nested_posted_interrupt.
10062 */
10063 vmx->nested.posted_intr_nv = vmcs12->posted_intr_nv; 10164 vmx->nested.posted_intr_nv = vmcs12->posted_intr_nv;
10064 vmx->nested.pi_pending = false; 10165 vmx->nested.pi_pending = false;
10065 vmcs_write16(POSTED_INTR_NV, POSTED_INTR_VECTOR); 10166 vmcs_write16(POSTED_INTR_NV, POSTED_INTR_NESTED_VECTOR);
10066 } else { 10167 } else {
10067 exec_control &= ~PIN_BASED_POSTED_INTR; 10168 exec_control &= ~PIN_BASED_POSTED_INTR;
10068 } 10169 }
@@ -10086,12 +10187,6 @@ static int prepare_vmcs02(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12,
10086 * "or"ing of the EB of vmcs01 and vmcs12, because when enable_ept, 10187 * "or"ing of the EB of vmcs01 and vmcs12, because when enable_ept,
10087 * vmcs01's EB.PF is 0 so the "or" will take vmcs12's value, and when 10188 * vmcs01's EB.PF is 0 so the "or" will take vmcs12's value, and when
10088 * !enable_ept, EB.PF is 1, so the "or" will always be 1. 10189 * !enable_ept, EB.PF is 1, so the "or" will always be 1.
10089 *
10090 * A problem with this approach (when !enable_ept) is that L1 may be
10091 * injected with more page faults than it asked for. This could have
10092 * caused problems, but in practice existing hypervisors don't care.
10093 * To fix this, we will need to emulate the PFEC checking (on the L1
10094 * page tables), using walk_addr(), when injecting PFs to L1.
10095 */ 10190 */
10096 vmcs_write32(PAGE_FAULT_ERROR_CODE_MASK, 10191 vmcs_write32(PAGE_FAULT_ERROR_CODE_MASK,
10097 enable_ept ? vmcs12->page_fault_error_code_mask : 0); 10192 enable_ept ? vmcs12->page_fault_error_code_mask : 0);
@@ -10488,6 +10583,7 @@ static int nested_vmx_run(struct kvm_vcpu *vcpu, bool launch)
10488{ 10583{
10489 struct vmcs12 *vmcs12; 10584 struct vmcs12 *vmcs12;
10490 struct vcpu_vmx *vmx = to_vmx(vcpu); 10585 struct vcpu_vmx *vmx = to_vmx(vcpu);
10586 u32 interrupt_shadow = vmx_get_interrupt_shadow(vcpu);
10491 u32 exit_qual; 10587 u32 exit_qual;
10492 int ret; 10588 int ret;
10493 10589
@@ -10512,6 +10608,12 @@ static int nested_vmx_run(struct kvm_vcpu *vcpu, bool launch)
10512 * for misconfigurations which will anyway be caught by the processor 10608 * for misconfigurations which will anyway be caught by the processor
10513 * when using the merged vmcs02. 10609 * when using the merged vmcs02.
10514 */ 10610 */
10611 if (interrupt_shadow & KVM_X86_SHADOW_INT_MOV_SS) {
10612 nested_vmx_failValid(vcpu,
10613 VMXERR_ENTRY_EVENTS_BLOCKED_BY_MOV_SS);
10614 goto out;
10615 }
10616
10515 if (vmcs12->launch_state == launch) { 10617 if (vmcs12->launch_state == launch) {
10516 nested_vmx_failValid(vcpu, 10618 nested_vmx_failValid(vcpu,
10517 launch ? VMXERR_VMLAUNCH_NONCLEAR_VMCS 10619 launch ? VMXERR_VMLAUNCH_NONCLEAR_VMCS
@@ -10832,13 +10934,8 @@ static void prepare_vmcs12(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12,
10832 10934
10833 vmcs12->vm_exit_reason = exit_reason; 10935 vmcs12->vm_exit_reason = exit_reason;
10834 vmcs12->exit_qualification = exit_qualification; 10936 vmcs12->exit_qualification = exit_qualification;
10835
10836 vmcs12->vm_exit_intr_info = exit_intr_info; 10937 vmcs12->vm_exit_intr_info = exit_intr_info;
10837 if ((vmcs12->vm_exit_intr_info & 10938
10838 (INTR_INFO_VALID_MASK | INTR_INFO_DELIVER_CODE_MASK)) ==
10839 (INTR_INFO_VALID_MASK | INTR_INFO_DELIVER_CODE_MASK))
10840 vmcs12->vm_exit_intr_error_code =
10841 vmcs_read32(VM_EXIT_INTR_ERROR_CODE);
10842 vmcs12->idt_vectoring_info_field = 0; 10939 vmcs12->idt_vectoring_info_field = 0;
10843 vmcs12->vm_exit_instruction_len = vmcs_read32(VM_EXIT_INSTRUCTION_LEN); 10940 vmcs12->vm_exit_instruction_len = vmcs_read32(VM_EXIT_INSTRUCTION_LEN);
10844 vmcs12->vmx_instruction_info = vmcs_read32(VMX_INSTRUCTION_INFO); 10941 vmcs12->vmx_instruction_info = vmcs_read32(VMX_INSTRUCTION_INFO);
@@ -10926,7 +11023,9 @@ static void load_vmcs12_host_state(struct kvm_vcpu *vcpu,
10926 */ 11023 */
10927 vmx_flush_tlb(vcpu); 11024 vmx_flush_tlb(vcpu);
10928 } 11025 }
10929 11026 /* Restore posted intr vector. */
11027 if (nested_cpu_has_posted_intr(vmcs12))
11028 vmcs_write16(POSTED_INTR_NV, POSTED_INTR_VECTOR);
10930 11029
10931 vmcs_write32(GUEST_SYSENTER_CS, vmcs12->host_ia32_sysenter_cs); 11030 vmcs_write32(GUEST_SYSENTER_CS, vmcs12->host_ia32_sysenter_cs);
10932 vmcs_writel(GUEST_SYSENTER_ESP, vmcs12->host_ia32_sysenter_esp); 11031 vmcs_writel(GUEST_SYSENTER_ESP, vmcs12->host_ia32_sysenter_esp);
@@ -11032,8 +11131,15 @@ static void nested_vmx_vmexit(struct kvm_vcpu *vcpu, u32 exit_reason,
11032 11131
11033 vmx_switch_vmcs(vcpu, &vmx->vmcs01); 11132 vmx_switch_vmcs(vcpu, &vmx->vmcs01);
11034 11133
11035 if ((exit_reason == EXIT_REASON_EXTERNAL_INTERRUPT) 11134 /*
11036 && nested_exit_intr_ack_set(vcpu)) { 11135 * TODO: SDM says that with acknowledge interrupt on exit, bit 31 of
11136 * the VM-exit interrupt information (valid interrupt) is always set to
11137 * 1 on EXIT_REASON_EXTERNAL_INTERRUPT, so we shouldn't need
11138 * kvm_cpu_has_interrupt(). See the commit message for details.
11139 */
11140 if (nested_exit_intr_ack_set(vcpu) &&
11141 exit_reason == EXIT_REASON_EXTERNAL_INTERRUPT &&
11142 kvm_cpu_has_interrupt(vcpu)) {
11037 int irq = kvm_cpu_get_interrupt(vcpu); 11143 int irq = kvm_cpu_get_interrupt(vcpu);
11038 WARN_ON(irq < 0); 11144 WARN_ON(irq < 0);
11039 vmcs12->vm_exit_intr_info = irq | 11145 vmcs12->vm_exit_intr_info = irq |
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 88be1aabc8d7..eda4bdbd7e5e 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -598,8 +598,8 @@ bool pdptrs_changed(struct kvm_vcpu *vcpu)
598 (unsigned long *)&vcpu->arch.regs_avail)) 598 (unsigned long *)&vcpu->arch.regs_avail))
599 return true; 599 return true;
600 600
601 gfn = (kvm_read_cr3(vcpu) & ~31u) >> PAGE_SHIFT; 601 gfn = (kvm_read_cr3(vcpu) & 0xffffffe0ul) >> PAGE_SHIFT;
602 offset = (kvm_read_cr3(vcpu) & ~31u) & (PAGE_SIZE - 1); 602 offset = (kvm_read_cr3(vcpu) & 0xffffffe0ul) & (PAGE_SIZE - 1);
603 r = kvm_read_nested_guest_page(vcpu, gfn, pdpte, offset, sizeof(pdpte), 603 r = kvm_read_nested_guest_page(vcpu, gfn, pdpte, offset, sizeof(pdpte),
604 PFERR_USER_MASK | PFERR_WRITE_MASK); 604 PFERR_USER_MASK | PFERR_WRITE_MASK);
605 if (r < 0) 605 if (r < 0)
@@ -3160,15 +3160,18 @@ static int kvm_vcpu_ioctl_x86_set_vcpu_events(struct kvm_vcpu *vcpu,
3160 kvm_set_hflags(vcpu, hflags); 3160 kvm_set_hflags(vcpu, hflags);
3161 3161
3162 vcpu->arch.smi_pending = events->smi.pending; 3162 vcpu->arch.smi_pending = events->smi.pending;
3163 if (events->smi.smm_inside_nmi) 3163
3164 vcpu->arch.hflags |= HF_SMM_INSIDE_NMI_MASK; 3164 if (events->smi.smm) {
3165 else 3165 if (events->smi.smm_inside_nmi)
3166 vcpu->arch.hflags &= ~HF_SMM_INSIDE_NMI_MASK; 3166 vcpu->arch.hflags |= HF_SMM_INSIDE_NMI_MASK;
3167 if (lapic_in_kernel(vcpu)) {
3168 if (events->smi.latched_init)
3169 set_bit(KVM_APIC_INIT, &vcpu->arch.apic->pending_events);
3170 else 3167 else
3171 clear_bit(KVM_APIC_INIT, &vcpu->arch.apic->pending_events); 3168 vcpu->arch.hflags &= ~HF_SMM_INSIDE_NMI_MASK;
3169 if (lapic_in_kernel(vcpu)) {
3170 if (events->smi.latched_init)
3171 set_bit(KVM_APIC_INIT, &vcpu->arch.apic->pending_events);
3172 else
3173 clear_bit(KVM_APIC_INIT, &vcpu->arch.apic->pending_events);
3174 }
3172 } 3175 }
3173 } 3176 }
3174 3177
@@ -6216,6 +6219,7 @@ static void kvm_pv_kick_cpu_op(struct kvm *kvm, unsigned long flags, int apicid)
6216 6219
6217 lapic_irq.shorthand = 0; 6220 lapic_irq.shorthand = 0;
6218 lapic_irq.dest_mode = 0; 6221 lapic_irq.dest_mode = 0;
6222 lapic_irq.level = 0;
6219 lapic_irq.dest_id = apicid; 6223 lapic_irq.dest_id = apicid;
6220 lapic_irq.msi_redir_hint = false; 6224 lapic_irq.msi_redir_hint = false;
6221 6225
diff --git a/arch/x86/math-emu/Makefile b/arch/x86/math-emu/Makefile
index 9b0c63b60302..1b2dac174321 100644
--- a/arch/x86/math-emu/Makefile
+++ b/arch/x86/math-emu/Makefile
@@ -5,8 +5,8 @@
5#DEBUG = -DDEBUGGING 5#DEBUG = -DDEBUGGING
6DEBUG = 6DEBUG =
7PARANOID = -DPARANOID 7PARANOID = -DPARANOID
8EXTRA_CFLAGS := $(PARANOID) $(DEBUG) -fno-builtin $(MATH_EMULATION) 8ccflags-y += $(PARANOID) $(DEBUG) -fno-builtin $(MATH_EMULATION)
9EXTRA_AFLAGS := $(PARANOID) 9asflags-y += $(PARANOID)
10 10
11# From 'C' language sources: 11# From 'C' language sources:
12C_OBJS =fpu_entry.o errors.o \ 12C_OBJS =fpu_entry.o errors.o \
diff --git a/arch/x86/math-emu/fpu_emu.h b/arch/x86/math-emu/fpu_emu.h
index afbc4d805d66..c9c320dccca1 100644
--- a/arch/x86/math-emu/fpu_emu.h
+++ b/arch/x86/math-emu/fpu_emu.h
@@ -157,7 +157,7 @@ extern u_char const data_sizes_16[32];
157 157
158#define signbyte(a) (((u_char *)(a))[9]) 158#define signbyte(a) (((u_char *)(a))[9])
159#define getsign(a) (signbyte(a) & 0x80) 159#define getsign(a) (signbyte(a) & 0x80)
160#define setsign(a,b) { if (b) signbyte(a) |= 0x80; else signbyte(a) &= 0x7f; } 160#define setsign(a,b) { if ((b) != 0) signbyte(a) |= 0x80; else signbyte(a) &= 0x7f; }
161#define copysign(a,b) { if (getsign(a)) signbyte(b) |= 0x80; \ 161#define copysign(a,b) { if (getsign(a)) signbyte(b) |= 0x80; \
162 else signbyte(b) &= 0x7f; } 162 else signbyte(b) &= 0x7f; }
163#define changesign(a) { signbyte(a) ^= 0x80; } 163#define changesign(a) { signbyte(a) ^= 0x80; }
diff --git a/arch/x86/math-emu/reg_compare.c b/arch/x86/math-emu/reg_compare.c
index b77360fdbf4a..19b33b50adfa 100644
--- a/arch/x86/math-emu/reg_compare.c
+++ b/arch/x86/math-emu/reg_compare.c
@@ -168,7 +168,7 @@ static int compare(FPU_REG const *b, int tagb)
168/* This function requires that st(0) is not empty */ 168/* This function requires that st(0) is not empty */
169int FPU_compare_st_data(FPU_REG const *loaded_data, u_char loaded_tag) 169int FPU_compare_st_data(FPU_REG const *loaded_data, u_char loaded_tag)
170{ 170{
171 int f = 0, c; 171 int f, c;
172 172
173 c = compare(loaded_data, loaded_tag); 173 c = compare(loaded_data, loaded_tag);
174 174
@@ -189,12 +189,12 @@ int FPU_compare_st_data(FPU_REG const *loaded_data, u_char loaded_tag)
189 case COMP_No_Comp: 189 case COMP_No_Comp:
190 f = SW_C3 | SW_C2 | SW_C0; 190 f = SW_C3 | SW_C2 | SW_C0;
191 break; 191 break;
192#ifdef PARANOID
193 default: 192 default:
193#ifdef PARANOID
194 EXCEPTION(EX_INTERNAL | 0x121); 194 EXCEPTION(EX_INTERNAL | 0x121);
195#endif /* PARANOID */
195 f = SW_C3 | SW_C2 | SW_C0; 196 f = SW_C3 | SW_C2 | SW_C0;
196 break; 197 break;
197#endif /* PARANOID */
198 } 198 }
199 setcc(f); 199 setcc(f);
200 if (c & COMP_Denormal) { 200 if (c & COMP_Denormal) {
@@ -205,7 +205,7 @@ int FPU_compare_st_data(FPU_REG const *loaded_data, u_char loaded_tag)
205 205
206static int compare_st_st(int nr) 206static int compare_st_st(int nr)
207{ 207{
208 int f = 0, c; 208 int f, c;
209 FPU_REG *st_ptr; 209 FPU_REG *st_ptr;
210 210
211 if (!NOT_EMPTY(0) || !NOT_EMPTY(nr)) { 211 if (!NOT_EMPTY(0) || !NOT_EMPTY(nr)) {
@@ -235,12 +235,12 @@ static int compare_st_st(int nr)
235 case COMP_No_Comp: 235 case COMP_No_Comp:
236 f = SW_C3 | SW_C2 | SW_C0; 236 f = SW_C3 | SW_C2 | SW_C0;
237 break; 237 break;
238#ifdef PARANOID
239 default: 238 default:
239#ifdef PARANOID
240 EXCEPTION(EX_INTERNAL | 0x122); 240 EXCEPTION(EX_INTERNAL | 0x122);
241#endif /* PARANOID */
241 f = SW_C3 | SW_C2 | SW_C0; 242 f = SW_C3 | SW_C2 | SW_C0;
242 break; 243 break;
243#endif /* PARANOID */
244 } 244 }
245 setcc(f); 245 setcc(f);
246 if (c & COMP_Denormal) { 246 if (c & COMP_Denormal) {
@@ -283,12 +283,12 @@ static int compare_i_st_st(int nr)
283 case COMP_No_Comp: 283 case COMP_No_Comp:
284 f = X86_EFLAGS_ZF | X86_EFLAGS_PF | X86_EFLAGS_CF; 284 f = X86_EFLAGS_ZF | X86_EFLAGS_PF | X86_EFLAGS_CF;
285 break; 285 break;
286#ifdef PARANOID
287 default: 286 default:
287#ifdef PARANOID
288 EXCEPTION(EX_INTERNAL | 0x122); 288 EXCEPTION(EX_INTERNAL | 0x122);
289#endif /* PARANOID */
289 f = 0; 290 f = 0;
290 break; 291 break;
291#endif /* PARANOID */
292 } 292 }
293 FPU_EFLAGS = (FPU_EFLAGS & ~(X86_EFLAGS_ZF | X86_EFLAGS_PF | X86_EFLAGS_CF)) | f; 293 FPU_EFLAGS = (FPU_EFLAGS & ~(X86_EFLAGS_ZF | X86_EFLAGS_PF | X86_EFLAGS_CF)) | f;
294 if (c & COMP_Denormal) { 294 if (c & COMP_Denormal) {
diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c
index 65ae17d45c4a..7777ccc0e9f9 100644
--- a/arch/x86/mm/init.c
+++ b/arch/x86/mm/init.c
@@ -18,6 +18,7 @@
18#include <asm/dma.h> /* for MAX_DMA_PFN */ 18#include <asm/dma.h> /* for MAX_DMA_PFN */
19#include <asm/microcode.h> 19#include <asm/microcode.h>
20#include <asm/kaslr.h> 20#include <asm/kaslr.h>
21#include <asm/hypervisor.h>
21 22
22/* 23/*
23 * We need to define the tracepoints somewhere, and tlb.c 24 * We need to define the tracepoints somewhere, and tlb.c
@@ -636,6 +637,8 @@ void __init init_mem_mapping(void)
636 load_cr3(swapper_pg_dir); 637 load_cr3(swapper_pg_dir);
637 __flush_tlb_all(); 638 __flush_tlb_all();
638 639
640 hypervisor_init_mem_mapping();
641
639 early_memtest(0, max_pfn_mapped << PAGE_SHIFT); 642 early_memtest(0, max_pfn_mapped << PAGE_SHIFT);
640} 643}
641 644
diff --git a/arch/x86/mm/mmap.c b/arch/x86/mm/mmap.c
index c15a50a70b24..a99679826846 100644
--- a/arch/x86/mm/mmap.c
+++ b/arch/x86/mm/mmap.c
@@ -50,8 +50,7 @@ unsigned long task_size_64bit(int full_addr_space)
50static unsigned long stack_maxrandom_size(unsigned long task_size) 50static unsigned long stack_maxrandom_size(unsigned long task_size)
51{ 51{
52 unsigned long max = 0; 52 unsigned long max = 0;
53 if ((current->flags & PF_RANDOMIZE) && 53 if (current->flags & PF_RANDOMIZE) {
54 !(current->personality & ADDR_NO_RANDOMIZE)) {
55 max = (-1UL) & __STACK_RND_MASK(task_size == task_size_32bit()); 54 max = (-1UL) & __STACK_RND_MASK(task_size == task_size_32bit());
56 max <<= PAGE_SHIFT; 55 max <<= PAGE_SHIFT;
57 } 56 }
@@ -79,13 +78,13 @@ static int mmap_is_legacy(void)
79 78
80static unsigned long arch_rnd(unsigned int rndbits) 79static unsigned long arch_rnd(unsigned int rndbits)
81{ 80{
81 if (!(current->flags & PF_RANDOMIZE))
82 return 0;
82 return (get_random_long() & ((1UL << rndbits) - 1)) << PAGE_SHIFT; 83 return (get_random_long() & ((1UL << rndbits) - 1)) << PAGE_SHIFT;
83} 84}
84 85
85unsigned long arch_mmap_rnd(void) 86unsigned long arch_mmap_rnd(void)
86{ 87{
87 if (!(current->flags & PF_RANDOMIZE))
88 return 0;
89 return arch_rnd(mmap_is_ia32() ? mmap32_rnd_bits : mmap64_rnd_bits); 88 return arch_rnd(mmap_is_ia32() ? mmap32_rnd_bits : mmap64_rnd_bits);
90} 89}
91 90
diff --git a/arch/x86/platform/intel-mid/device_libs/platform_max7315.c b/arch/x86/platform/intel-mid/device_libs/platform_max7315.c
index 6e075afa7877..58337b2bc682 100644
--- a/arch/x86/platform/intel-mid/device_libs/platform_max7315.c
+++ b/arch/x86/platform/intel-mid/device_libs/platform_max7315.c
@@ -38,8 +38,10 @@ static void __init *max7315_platform_data(void *info)
38 */ 38 */
39 strcpy(i2c_info->type, "max7315"); 39 strcpy(i2c_info->type, "max7315");
40 if (nr++) { 40 if (nr++) {
41 sprintf(base_pin_name, "max7315_%d_base", nr); 41 snprintf(base_pin_name, sizeof(base_pin_name),
42 sprintf(intr_pin_name, "max7315_%d_int", nr); 42 "max7315_%d_base", nr);
43 snprintf(intr_pin_name, sizeof(intr_pin_name),
44 "max7315_%d_int", nr);
43 } else { 45 } else {
44 strcpy(base_pin_name, "max7315_base"); 46 strcpy(base_pin_name, "max7315_base");
45 strcpy(intr_pin_name, "max7315_int"); 47 strcpy(intr_pin_name, "max7315_int");
diff --git a/arch/x86/platform/uv/tlb_uv.c b/arch/x86/platform/uv/tlb_uv.c
index d4a61ddf9e62..f44c0bc95aa2 100644
--- a/arch/x86/platform/uv/tlb_uv.c
+++ b/arch/x86/platform/uv/tlb_uv.c
@@ -26,7 +26,7 @@
26static struct bau_operations ops __ro_after_init; 26static struct bau_operations ops __ro_after_init;
27 27
28/* timeouts in nanoseconds (indexed by UVH_AGING_PRESCALE_SEL urgency7 30:28) */ 28/* timeouts in nanoseconds (indexed by UVH_AGING_PRESCALE_SEL urgency7 30:28) */
29static int timeout_base_ns[] = { 29static const int timeout_base_ns[] = {
30 20, 30 20,
31 160, 31 160,
32 1280, 32 1280,
@@ -40,7 +40,6 @@ static int timeout_base_ns[] = {
40static int timeout_us; 40static int timeout_us;
41static bool nobau = true; 41static bool nobau = true;
42static int nobau_perm; 42static int nobau_perm;
43static cycles_t congested_cycles;
44 43
45/* tunables: */ 44/* tunables: */
46static int max_concurr = MAX_BAU_CONCURRENT; 45static int max_concurr = MAX_BAU_CONCURRENT;
@@ -829,10 +828,10 @@ static void record_send_stats(cycles_t time1, cycles_t time2,
829 if ((completion_status == FLUSH_COMPLETE) && (try == 1)) { 828 if ((completion_status == FLUSH_COMPLETE) && (try == 1)) {
830 bcp->period_requests++; 829 bcp->period_requests++;
831 bcp->period_time += elapsed; 830 bcp->period_time += elapsed;
832 if ((elapsed > congested_cycles) && 831 if ((elapsed > usec_2_cycles(bcp->cong_response_us)) &&
833 (bcp->period_requests > bcp->cong_reps) && 832 (bcp->period_requests > bcp->cong_reps) &&
834 ((bcp->period_time / bcp->period_requests) > 833 ((bcp->period_time / bcp->period_requests) >
835 congested_cycles)) { 834 usec_2_cycles(bcp->cong_response_us))) {
836 stat->s_congested++; 835 stat->s_congested++;
837 disable_for_period(bcp, stat); 836 disable_for_period(bcp, stat);
838 } 837 }
@@ -1217,7 +1216,7 @@ static struct bau_pq_entry *find_another_by_swack(struct bau_pq_entry *msg,
1217 * set a bit in the UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE register. 1216 * set a bit in the UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE register.
1218 * Such a message must be ignored. 1217 * Such a message must be ignored.
1219 */ 1218 */
1220void process_uv2_message(struct msg_desc *mdp, struct bau_control *bcp) 1219static void process_uv2_message(struct msg_desc *mdp, struct bau_control *bcp)
1221{ 1220{
1222 unsigned long mmr_image; 1221 unsigned long mmr_image;
1223 unsigned char swack_vec; 1222 unsigned char swack_vec;
@@ -2222,14 +2221,17 @@ static int __init uv_bau_init(void)
2222 else if (is_uv1_hub()) 2221 else if (is_uv1_hub())
2223 ops = uv1_bau_ops; 2222 ops = uv1_bau_ops;
2224 2223
2224 nuvhubs = uv_num_possible_blades();
2225 if (nuvhubs < 2) {
2226 pr_crit("UV: BAU disabled - insufficient hub count\n");
2227 goto err_bau_disable;
2228 }
2229
2225 for_each_possible_cpu(cur_cpu) { 2230 for_each_possible_cpu(cur_cpu) {
2226 mask = &per_cpu(uv_flush_tlb_mask, cur_cpu); 2231 mask = &per_cpu(uv_flush_tlb_mask, cur_cpu);
2227 zalloc_cpumask_var_node(mask, GFP_KERNEL, cpu_to_node(cur_cpu)); 2232 zalloc_cpumask_var_node(mask, GFP_KERNEL, cpu_to_node(cur_cpu));
2228 } 2233 }
2229 2234
2230 nuvhubs = uv_num_possible_blades();
2231 congested_cycles = usec_2_cycles(congested_respns_us);
2232
2233 uv_base_pnode = 0x7fffffff; 2235 uv_base_pnode = 0x7fffffff;
2234 for (uvhub = 0; uvhub < nuvhubs; uvhub++) { 2236 for (uvhub = 0; uvhub < nuvhubs; uvhub++) {
2235 cpus = uv_blade_nr_possible_cpus(uvhub); 2237 cpus = uv_blade_nr_possible_cpus(uvhub);
@@ -2242,9 +2244,8 @@ static int __init uv_bau_init(void)
2242 enable_timeouts(); 2244 enable_timeouts();
2243 2245
2244 if (init_per_cpu(nuvhubs, uv_base_pnode)) { 2246 if (init_per_cpu(nuvhubs, uv_base_pnode)) {
2245 set_bau_off(); 2247 pr_crit("UV: BAU disabled - per CPU init failed\n");
2246 nobau_perm = 1; 2248 goto err_bau_disable;
2247 return 0;
2248 } 2249 }
2249 2250
2250 vector = UV_BAU_MESSAGE; 2251 vector = UV_BAU_MESSAGE;
@@ -2270,6 +2271,16 @@ static int __init uv_bau_init(void)
2270 } 2271 }
2271 2272
2272 return 0; 2273 return 0;
2274
2275err_bau_disable:
2276
2277 for_each_possible_cpu(cur_cpu)
2278 free_cpumask_var(per_cpu(uv_flush_tlb_mask, cur_cpu));
2279
2280 set_bau_off();
2281 nobau_perm = 1;
2282
2283 return -EINVAL;
2273} 2284}
2274core_initcall(uv_bau_init); 2285core_initcall(uv_bau_init);
2275fs_initcall(uv_ptc_init); 2286fs_initcall(uv_ptc_init);
diff --git a/arch/x86/xen/enlighten_hvm.c b/arch/x86/xen/enlighten_hvm.c
index 87d791356ea9..de503c225ae1 100644
--- a/arch/x86/xen/enlighten_hvm.c
+++ b/arch/x86/xen/enlighten_hvm.c
@@ -12,6 +12,7 @@
12#include <asm/setup.h> 12#include <asm/setup.h>
13#include <asm/hypervisor.h> 13#include <asm/hypervisor.h>
14#include <asm/e820/api.h> 14#include <asm/e820/api.h>
15#include <asm/early_ioremap.h>
15 16
16#include <asm/xen/cpuid.h> 17#include <asm/xen/cpuid.h>
17#include <asm/xen/hypervisor.h> 18#include <asm/xen/hypervisor.h>
@@ -21,38 +22,50 @@
21#include "mmu.h" 22#include "mmu.h"
22#include "smp.h" 23#include "smp.h"
23 24
24void __ref xen_hvm_init_shared_info(void) 25static unsigned long shared_info_pfn;
26
27void xen_hvm_init_shared_info(void)
25{ 28{
26 struct xen_add_to_physmap xatp; 29 struct xen_add_to_physmap xatp;
27 u64 pa;
28
29 if (HYPERVISOR_shared_info == &xen_dummy_shared_info) {
30 /*
31 * Search for a free page starting at 4kB physical address.
32 * Low memory is preferred to avoid an EPT large page split up
33 * by the mapping.
34 * Starting below X86_RESERVE_LOW (usually 64kB) is fine as
35 * the BIOS used for HVM guests is well behaved and won't
36 * clobber memory other than the first 4kB.
37 */
38 for (pa = PAGE_SIZE;
39 !e820__mapped_all(pa, pa + PAGE_SIZE, E820_TYPE_RAM) ||
40 memblock_is_reserved(pa);
41 pa += PAGE_SIZE)
42 ;
43
44 memblock_reserve(pa, PAGE_SIZE);
45 HYPERVISOR_shared_info = __va(pa);
46 }
47 30
48 xatp.domid = DOMID_SELF; 31 xatp.domid = DOMID_SELF;
49 xatp.idx = 0; 32 xatp.idx = 0;
50 xatp.space = XENMAPSPACE_shared_info; 33 xatp.space = XENMAPSPACE_shared_info;
51 xatp.gpfn = virt_to_pfn(HYPERVISOR_shared_info); 34 xatp.gpfn = shared_info_pfn;
52 if (HYPERVISOR_memory_op(XENMEM_add_to_physmap, &xatp)) 35 if (HYPERVISOR_memory_op(XENMEM_add_to_physmap, &xatp))
53 BUG(); 36 BUG();
54} 37}
55 38
39static void __init reserve_shared_info(void)
40{
41 u64 pa;
42
43 /*
44 * Search for a free page starting at 4kB physical address.
45 * Low memory is preferred to avoid an EPT large page split up
46 * by the mapping.
47 * Starting below X86_RESERVE_LOW (usually 64kB) is fine as
48 * the BIOS used for HVM guests is well behaved and won't
49 * clobber memory other than the first 4kB.
50 */
51 for (pa = PAGE_SIZE;
52 !e820__mapped_all(pa, pa + PAGE_SIZE, E820_TYPE_RAM) ||
53 memblock_is_reserved(pa);
54 pa += PAGE_SIZE)
55 ;
56
57 shared_info_pfn = PHYS_PFN(pa);
58
59 memblock_reserve(pa, PAGE_SIZE);
60 HYPERVISOR_shared_info = early_memremap(pa, PAGE_SIZE);
61}
62
63static void __init xen_hvm_init_mem_mapping(void)
64{
65 early_memunmap(HYPERVISOR_shared_info, PAGE_SIZE);
66 HYPERVISOR_shared_info = __va(PFN_PHYS(shared_info_pfn));
67}
68
56static void __init init_hvm_pv_info(void) 69static void __init init_hvm_pv_info(void)
57{ 70{
58 int major, minor; 71 int major, minor;
@@ -153,6 +166,7 @@ static void __init xen_hvm_guest_init(void)
153 166
154 init_hvm_pv_info(); 167 init_hvm_pv_info();
155 168
169 reserve_shared_info();
156 xen_hvm_init_shared_info(); 170 xen_hvm_init_shared_info();
157 171
158 /* 172 /*
@@ -218,5 +232,6 @@ const struct hypervisor_x86 x86_hyper_xen_hvm = {
218 .init_platform = xen_hvm_guest_init, 232 .init_platform = xen_hvm_guest_init,
219 .pin_vcpu = xen_pin_vcpu, 233 .pin_vcpu = xen_pin_vcpu,
220 .x2apic_available = xen_x2apic_para_available, 234 .x2apic_available = xen_x2apic_para_available,
235 .init_mem_mapping = xen_hvm_init_mem_mapping,
221}; 236};
222EXPORT_SYMBOL(x86_hyper_xen_hvm); 237EXPORT_SYMBOL(x86_hyper_xen_hvm);
diff --git a/arch/x86/xen/smp_pv.c b/arch/x86/xen/smp_pv.c
index 1ea598e5f030..51471408fdd1 100644
--- a/arch/x86/xen/smp_pv.c
+++ b/arch/x86/xen/smp_pv.c
@@ -19,6 +19,7 @@
19#include <linux/irq_work.h> 19#include <linux/irq_work.h>
20#include <linux/tick.h> 20#include <linux/tick.h>
21#include <linux/nmi.h> 21#include <linux/nmi.h>
22#include <linux/cpuhotplug.h>
22 23
23#include <asm/paravirt.h> 24#include <asm/paravirt.h>
24#include <asm/desc.h> 25#include <asm/desc.h>
@@ -413,7 +414,7 @@ static void xen_pv_play_dead(void) /* used only with HOTPLUG_CPU */
413 */ 414 */
414 tick_nohz_idle_enter(); 415 tick_nohz_idle_enter();
415 416
416 cpu_startup_entry(CPUHP_AP_ONLINE_IDLE); 417 cpuhp_online_idle(CPUHP_AP_ONLINE_IDLE);
417} 418}
418 419
419#else /* !CONFIG_HOTPLUG_CPU */ 420#else /* !CONFIG_HOTPLUG_CPU */
diff --git a/arch/x86/xen/time.c b/arch/x86/xen/time.c
index a1895a8e85c1..1ecb05db3632 100644
--- a/arch/x86/xen/time.c
+++ b/arch/x86/xen/time.c
@@ -309,7 +309,6 @@ static irqreturn_t xen_timer_interrupt(int irq, void *dev_id)
309void xen_teardown_timer(int cpu) 309void xen_teardown_timer(int cpu)
310{ 310{
311 struct clock_event_device *evt; 311 struct clock_event_device *evt;
312 BUG_ON(cpu == 0);
313 evt = &per_cpu(xen_clock_events, cpu).evt; 312 evt = &per_cpu(xen_clock_events, cpu).evt;
314 313
315 if (evt->irq >= 0) { 314 if (evt->irq >= 0) {
diff --git a/arch/xtensa/include/asm/Kbuild b/arch/xtensa/include/asm/Kbuild
index 2d716ebc5a5e..dff7cc39437c 100644
--- a/arch/xtensa/include/asm/Kbuild
+++ b/arch/xtensa/include/asm/Kbuild
@@ -1,5 +1,6 @@
1generic-y += bug.h 1generic-y += bug.h
2generic-y += clkdev.h 2generic-y += clkdev.h
3generic-y += device.h
3generic-y += div64.h 4generic-y += div64.h
4generic-y += dma-contiguous.h 5generic-y += dma-contiguous.h
5generic-y += emergency-restart.h 6generic-y += emergency-restart.h
@@ -17,6 +18,7 @@ generic-y += local.h
17generic-y += local64.h 18generic-y += local64.h
18generic-y += mcs_spinlock.h 19generic-y += mcs_spinlock.h
19generic-y += mm-arch-hooks.h 20generic-y += mm-arch-hooks.h
21generic-y += param.h
20generic-y += percpu.h 22generic-y += percpu.h
21generic-y += preempt.h 23generic-y += preempt.h
22generic-y += rwsem.h 24generic-y += rwsem.h
diff --git a/arch/xtensa/include/asm/device.h b/arch/xtensa/include/asm/device.h
deleted file mode 100644
index 1deeb8ebbb1b..000000000000
--- a/arch/xtensa/include/asm/device.h
+++ /dev/null
@@ -1,15 +0,0 @@
1/*
2 * Arch specific extensions to struct device
3 *
4 * This file is released under the GPLv2
5 */
6#ifndef _ASM_XTENSA_DEVICE_H
7#define _ASM_XTENSA_DEVICE_H
8
9struct dev_archdata {
10};
11
12struct pdev_archdata {
13};
14
15#endif /* _ASM_XTENSA_DEVICE_H */
diff --git a/arch/xtensa/include/asm/param.h b/arch/xtensa/include/asm/param.h
deleted file mode 100644
index 0a70e780ef2a..000000000000
--- a/arch/xtensa/include/asm/param.h
+++ /dev/null
@@ -1,18 +0,0 @@
1/*
2 * include/asm-xtensa/param.h
3 *
4 * This file is subject to the terms and conditions of the GNU General Public
5 * License. See the file "COPYING" in the main directory of this archive
6 * for more details.
7 *
8 * Copyright (C) 2001 - 2005 Tensilica Inc.
9 */
10#ifndef _XTENSA_PARAM_H
11#define _XTENSA_PARAM_H
12
13#include <uapi/asm/param.h>
14
15# define HZ CONFIG_HZ /* internal timer frequency */
16# define USER_HZ 100 /* for user interfaces in "ticks" */
17# define CLOCKS_PER_SEC (USER_HZ) /* frequnzy at which times() counts */
18#endif /* _XTENSA_PARAM_H */
diff --git a/arch/xtensa/include/uapi/asm/ioctls.h b/arch/xtensa/include/uapi/asm/ioctls.h
index 98b004e24e85..47d82c09be7b 100644
--- a/arch/xtensa/include/uapi/asm/ioctls.h
+++ b/arch/xtensa/include/uapi/asm/ioctls.h
@@ -105,7 +105,7 @@
105#define TIOCGPKT _IOR('T', 0x38, int) /* Get packet mode state */ 105#define TIOCGPKT _IOR('T', 0x38, int) /* Get packet mode state */
106#define TIOCGPTLCK _IOR('T', 0x39, int) /* Get Pty lock state */ 106#define TIOCGPTLCK _IOR('T', 0x39, int) /* Get Pty lock state */
107#define TIOCGEXCL _IOR('T', 0x40, int) /* Get exclusive mode state */ 107#define TIOCGEXCL _IOR('T', 0x40, int) /* Get exclusive mode state */
108#define TIOCGPTPEER _IOR('T', 0x41, int) /* Safely open the slave */ 108#define TIOCGPTPEER _IO('T', 0x41) /* Safely open the slave */
109 109
110#define TIOCSERCONFIG _IO('T', 83) 110#define TIOCSERCONFIG _IO('T', 83)
111#define TIOCSERGWILD _IOR('T', 84, int) 111#define TIOCSERGWILD _IOR('T', 84, int)
diff --git a/arch/xtensa/kernel/xtensa_ksyms.c b/arch/xtensa/kernel/xtensa_ksyms.c
index d159e9b9c018..672391003e40 100644
--- a/arch/xtensa/kernel/xtensa_ksyms.c
+++ b/arch/xtensa/kernel/xtensa_ksyms.c
@@ -94,13 +94,11 @@ unsigned long __sync_fetch_and_or_4(unsigned long *p, unsigned long v)
94} 94}
95EXPORT_SYMBOL(__sync_fetch_and_or_4); 95EXPORT_SYMBOL(__sync_fetch_and_or_4);
96 96
97#ifdef CONFIG_NET
98/* 97/*
99 * Networking support 98 * Networking support
100 */ 99 */
101EXPORT_SYMBOL(csum_partial); 100EXPORT_SYMBOL(csum_partial);
102EXPORT_SYMBOL(csum_partial_copy_generic); 101EXPORT_SYMBOL(csum_partial_copy_generic);
103#endif /* CONFIG_NET */
104 102
105/* 103/*
106 * Architecture-specific symbols 104 * Architecture-specific symbols
diff --git a/arch/xtensa/mm/cache.c b/arch/xtensa/mm/cache.c
index 1a804a2f9a5b..3c75c4e597da 100644
--- a/arch/xtensa/mm/cache.c
+++ b/arch/xtensa/mm/cache.c
@@ -103,6 +103,7 @@ void clear_user_highpage(struct page *page, unsigned long vaddr)
103 clear_page_alias(kvaddr, paddr); 103 clear_page_alias(kvaddr, paddr);
104 preempt_enable(); 104 preempt_enable();
105} 105}
106EXPORT_SYMBOL(clear_user_highpage);
106 107
107void copy_user_highpage(struct page *dst, struct page *src, 108void copy_user_highpage(struct page *dst, struct page *src,
108 unsigned long vaddr, struct vm_area_struct *vma) 109 unsigned long vaddr, struct vm_area_struct *vma)
@@ -119,10 +120,7 @@ void copy_user_highpage(struct page *dst, struct page *src,
119 copy_page_alias(dst_vaddr, src_vaddr, dst_paddr, src_paddr); 120 copy_page_alias(dst_vaddr, src_vaddr, dst_paddr, src_paddr);
120 preempt_enable(); 121 preempt_enable();
121} 122}
122 123EXPORT_SYMBOL(copy_user_highpage);
123#endif /* DCACHE_WAY_SIZE > PAGE_SIZE */
124
125#if (DCACHE_WAY_SIZE > PAGE_SIZE) && XCHAL_DCACHE_IS_WRITEBACK
126 124
127/* 125/*
128 * Any time the kernel writes to a user page cache page, or it is about to 126 * Any time the kernel writes to a user page cache page, or it is about to
@@ -176,7 +174,7 @@ void flush_dcache_page(struct page *page)
176 174
177 /* There shouldn't be an entry in the cache for this page anymore. */ 175 /* There shouldn't be an entry in the cache for this page anymore. */
178} 176}
179 177EXPORT_SYMBOL(flush_dcache_page);
180 178
181/* 179/*
182 * For now, flush the whole cache. FIXME?? 180 * For now, flush the whole cache. FIXME??
@@ -188,6 +186,7 @@ void local_flush_cache_range(struct vm_area_struct *vma,
188 __flush_invalidate_dcache_all(); 186 __flush_invalidate_dcache_all();
189 __invalidate_icache_all(); 187 __invalidate_icache_all();
190} 188}
189EXPORT_SYMBOL(local_flush_cache_range);
191 190
192/* 191/*
193 * Remove any entry in the cache for this page. 192 * Remove any entry in the cache for this page.
@@ -207,8 +206,9 @@ void local_flush_cache_page(struct vm_area_struct *vma, unsigned long address,
207 __flush_invalidate_dcache_page_alias(virt, phys); 206 __flush_invalidate_dcache_page_alias(virt, phys);
208 __invalidate_icache_page_alias(virt, phys); 207 __invalidate_icache_page_alias(virt, phys);
209} 208}
209EXPORT_SYMBOL(local_flush_cache_page);
210 210
211#endif 211#endif /* DCACHE_WAY_SIZE > PAGE_SIZE */
212 212
213void 213void
214update_mmu_cache(struct vm_area_struct * vma, unsigned long addr, pte_t *ptep) 214update_mmu_cache(struct vm_area_struct * vma, unsigned long addr, pte_t *ptep)
@@ -225,7 +225,7 @@ update_mmu_cache(struct vm_area_struct * vma, unsigned long addr, pte_t *ptep)
225 225
226 flush_tlb_page(vma, addr); 226 flush_tlb_page(vma, addr);
227 227
228#if (DCACHE_WAY_SIZE > PAGE_SIZE) && XCHAL_DCACHE_IS_WRITEBACK 228#if (DCACHE_WAY_SIZE > PAGE_SIZE)
229 229
230 if (!PageReserved(page) && test_bit(PG_arch_1, &page->flags)) { 230 if (!PageReserved(page) && test_bit(PG_arch_1, &page->flags)) {
231 unsigned long phys = page_to_phys(page); 231 unsigned long phys = page_to_phys(page);
@@ -256,7 +256,7 @@ update_mmu_cache(struct vm_area_struct * vma, unsigned long addr, pte_t *ptep)
256 * flush_dcache_page() on the page. 256 * flush_dcache_page() on the page.
257 */ 257 */
258 258
259#if (DCACHE_WAY_SIZE > PAGE_SIZE) && XCHAL_DCACHE_IS_WRITEBACK 259#if (DCACHE_WAY_SIZE > PAGE_SIZE)
260 260
261void copy_to_user_page(struct vm_area_struct *vma, struct page *page, 261void copy_to_user_page(struct vm_area_struct *vma, struct page *page,
262 unsigned long vaddr, void *dst, const void *src, 262 unsigned long vaddr, void *dst, const void *src,
diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index 60a6835265fc..436b6ca6b175 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -4299,6 +4299,9 @@ static void bfq_completed_request(struct bfq_queue *bfqq, struct bfq_data *bfqd)
4299 bfq_bfqq_expire(bfqd, bfqq, false, 4299 bfq_bfqq_expire(bfqd, bfqq, false,
4300 BFQQE_NO_MORE_REQUESTS); 4300 BFQQE_NO_MORE_REQUESTS);
4301 } 4301 }
4302
4303 if (!bfqd->rq_in_driver)
4304 bfq_schedule_dispatch(bfqd);
4302} 4305}
4303 4306
4304static void bfq_put_rq_priv_body(struct bfq_queue *bfqq) 4307static void bfq_put_rq_priv_body(struct bfq_queue *bfqq)
diff --git a/block/bfq-iosched.h b/block/bfq-iosched.h
index 8fd83b885774..859f0a8c97c8 100644
--- a/block/bfq-iosched.h
+++ b/block/bfq-iosched.h
@@ -52,7 +52,7 @@ struct bfq_entity;
52struct bfq_service_tree { 52struct bfq_service_tree {
53 /* tree for active entities (i.e., those backlogged) */ 53 /* tree for active entities (i.e., those backlogged) */
54 struct rb_root active; 54 struct rb_root active;
55 /* tree for idle entities (i.e., not backlogged, with V <= F_i)*/ 55 /* tree for idle entities (i.e., not backlogged, with V < F_i)*/
56 struct rb_root idle; 56 struct rb_root idle;
57 57
58 /* idle entity with minimum F_i */ 58 /* idle entity with minimum F_i */
@@ -71,17 +71,29 @@ struct bfq_service_tree {
71 * 71 *
72 * bfq_sched_data is the basic scheduler queue. It supports three 72 * bfq_sched_data is the basic scheduler queue. It supports three
73 * ioprio_classes, and can be used either as a toplevel queue or as an 73 * ioprio_classes, and can be used either as a toplevel queue or as an
74 * intermediate queue on a hierarchical setup. @next_in_service 74 * intermediate queue in a hierarchical setup.
75 * points to the active entity of the sched_data service trees that
76 * will be scheduled next. It is used to reduce the number of steps
77 * needed for each hierarchical-schedule update.
78 * 75 *
79 * The supported ioprio_classes are the same as in CFQ, in descending 76 * The supported ioprio_classes are the same as in CFQ, in descending
80 * priority order, IOPRIO_CLASS_RT, IOPRIO_CLASS_BE, IOPRIO_CLASS_IDLE. 77 * priority order, IOPRIO_CLASS_RT, IOPRIO_CLASS_BE, IOPRIO_CLASS_IDLE.
81 * Requests from higher priority queues are served before all the 78 * Requests from higher priority queues are served before all the
82 * requests from lower priority queues; among requests of the same 79 * requests from lower priority queues; among requests of the same
83 * queue requests are served according to B-WF2Q+. 80 * queue requests are served according to B-WF2Q+.
84 * All the fields are protected by the queue lock of the containing bfqd. 81 *
82 * The schedule is implemented by the service trees, plus the field
83 * @next_in_service, which points to the entity on the active trees
84 * that will be served next, if 1) no changes in the schedule occurs
85 * before the current in-service entity is expired, 2) the in-service
86 * queue becomes idle when it expires, and 3) if the entity pointed by
87 * in_service_entity is not a queue, then the in-service child entity
88 * of the entity pointed by in_service_entity becomes idle on
89 * expiration. This peculiar definition allows for the following
90 * optimization, not yet exploited: while a given entity is still in
91 * service, we already know which is the best candidate for next
92 * service among the other active entitities in the same parent
93 * entity. We can then quickly compare the timestamps of the
94 * in-service entity with those of such best candidate.
95 *
96 * All fields are protected by the lock of the containing bfqd.
85 */ 97 */
86struct bfq_sched_data { 98struct bfq_sched_data {
87 /* entity in service */ 99 /* entity in service */
diff --git a/block/bfq-wf2q.c b/block/bfq-wf2q.c
index 5ec05cd42b80..911aa7431dbe 100644
--- a/block/bfq-wf2q.c
+++ b/block/bfq-wf2q.c
@@ -188,21 +188,23 @@ static bool bfq_update_parent_budget(struct bfq_entity *next_in_service)
188 188
189/* 189/*
190 * This function tells whether entity stops being a candidate for next 190 * This function tells whether entity stops being a candidate for next
191 * service, according to the following logic. 191 * service, according to the restrictive definition of the field
192 * next_in_service. In particular, this function is invoked for an
193 * entity that is about to be set in service.
192 * 194 *
193 * This function is invoked for an entity that is about to be set in 195 * If entity is a queue, then the entity is no longer a candidate for
194 * service. If such an entity is a queue, then the entity is no longer 196 * next service according to the that definition, because entity is
195 * a candidate for next service (i.e, a candidate entity to serve 197 * about to become the in-service queue. This function then returns
196 * after the in-service entity is expired). The function then returns 198 * true if entity is a queue.
197 * true.
198 * 199 *
199 * In contrast, the entity could stil be a candidate for next service 200 * In contrast, entity could still be a candidate for next service if
200 * if it is not a queue, and has more than one child. In fact, even if 201 * it is not a queue, and has more than one active child. In fact,
201 * one of its children is about to be set in service, other children 202 * even if one of its children is about to be set in service, other
202 * may still be the next to serve. As a consequence, a non-queue 203 * active children may still be the next to serve, for the parent
203 * entity is not a candidate for next-service only if it has only one 204 * entity, even according to the above definition. As a consequence, a
204 * child. And only if this condition holds, then the function returns 205 * non-queue entity is not a candidate for next-service only if it has
205 * true for a non-queue entity. 206 * only one active child. And only if this condition holds, then this
207 * function returns true for a non-queue entity.
206 */ 208 */
207static bool bfq_no_longer_next_in_service(struct bfq_entity *entity) 209static bool bfq_no_longer_next_in_service(struct bfq_entity *entity)
208{ 210{
@@ -213,6 +215,18 @@ static bool bfq_no_longer_next_in_service(struct bfq_entity *entity)
213 215
214 bfqg = container_of(entity, struct bfq_group, entity); 216 bfqg = container_of(entity, struct bfq_group, entity);
215 217
218 /*
219 * The field active_entities does not always contain the
220 * actual number of active children entities: it happens to
221 * not account for the in-service entity in case the latter is
222 * removed from its active tree (which may get done after
223 * invoking the function bfq_no_longer_next_in_service in
224 * bfq_get_next_queue). Fortunately, here, i.e., while
225 * bfq_no_longer_next_in_service is not yet completed in
226 * bfq_get_next_queue, bfq_active_extract has not yet been
227 * invoked, and thus active_entities still coincides with the
228 * actual number of active entities.
229 */
216 if (bfqg->active_entities == 1) 230 if (bfqg->active_entities == 1)
217 return true; 231 return true;
218 232
@@ -954,7 +968,7 @@ static void bfq_update_fin_time_enqueue(struct bfq_entity *entity,
954 * one of its children receives a new request. 968 * one of its children receives a new request.
955 * 969 *
956 * Basically, this function updates the timestamps of entity and 970 * Basically, this function updates the timestamps of entity and
957 * inserts entity into its active tree, ater possible extracting it 971 * inserts entity into its active tree, ater possibly extracting it
958 * from its idle tree. 972 * from its idle tree.
959 */ 973 */
960static void __bfq_activate_entity(struct bfq_entity *entity, 974static void __bfq_activate_entity(struct bfq_entity *entity,
@@ -1048,7 +1062,7 @@ static void __bfq_requeue_entity(struct bfq_entity *entity)
1048 entity->start = entity->finish; 1062 entity->start = entity->finish;
1049 /* 1063 /*
1050 * In addition, if the entity had more than one child 1064 * In addition, if the entity had more than one child
1051 * when set in service, then was not extracted from 1065 * when set in service, then it was not extracted from
1052 * the active tree. This implies that the position of 1066 * the active tree. This implies that the position of
1053 * the entity in the active tree may need to be 1067 * the entity in the active tree may need to be
1054 * changed now, because we have just updated the start 1068 * changed now, because we have just updated the start
@@ -1056,9 +1070,8 @@ static void __bfq_requeue_entity(struct bfq_entity *entity)
1056 * time in a moment (the requeueing is then, more 1070 * time in a moment (the requeueing is then, more
1057 * precisely, a repositioning in this case). To 1071 * precisely, a repositioning in this case). To
1058 * implement this repositioning, we: 1) dequeue the 1072 * implement this repositioning, we: 1) dequeue the
1059 * entity here, 2) update the finish time and 1073 * entity here, 2) update the finish time and requeue
1060 * requeue the entity according to the new 1074 * the entity according to the new timestamps below.
1061 * timestamps below.
1062 */ 1075 */
1063 if (entity->tree) 1076 if (entity->tree)
1064 bfq_active_extract(st, entity); 1077 bfq_active_extract(st, entity);
@@ -1105,9 +1118,10 @@ static void __bfq_activate_requeue_entity(struct bfq_entity *entity,
1105 1118
1106 1119
1107/** 1120/**
1108 * bfq_activate_entity - activate or requeue an entity representing a bfq_queue, 1121 * bfq_activate_requeue_entity - activate or requeue an entity representing a
1109 * and activate, requeue or reposition all ancestors 1122 * bfq_queue, and activate, requeue or reposition
1110 * for which such an update becomes necessary. 1123 * all ancestors for which such an update becomes
1124 * necessary.
1111 * @entity: the entity to activate. 1125 * @entity: the entity to activate.
1112 * @non_blocking_wait_rq: true if this entity was waiting for a request 1126 * @non_blocking_wait_rq: true if this entity was waiting for a request
1113 * @requeue: true if this is a requeue, which implies that bfqq is 1127 * @requeue: true if this is a requeue, which implies that bfqq is
@@ -1135,9 +1149,9 @@ static void bfq_activate_requeue_entity(struct bfq_entity *entity,
1135 * @ins_into_idle_tree: if false, the entity will not be put into the 1149 * @ins_into_idle_tree: if false, the entity will not be put into the
1136 * idle tree. 1150 * idle tree.
1137 * 1151 *
1138 * Deactivates an entity, independently from its previous state. Must 1152 * Deactivates an entity, independently of its previous state. Must
1139 * be invoked only if entity is on a service tree. Extracts the entity 1153 * be invoked only if entity is on a service tree. Extracts the entity
1140 * from that tree, and if necessary and allowed, puts it on the idle 1154 * from that tree, and if necessary and allowed, puts it into the idle
1141 * tree. 1155 * tree.
1142 */ 1156 */
1143bool __bfq_deactivate_entity(struct bfq_entity *entity, bool ins_into_idle_tree) 1157bool __bfq_deactivate_entity(struct bfq_entity *entity, bool ins_into_idle_tree)
@@ -1158,8 +1172,10 @@ bool __bfq_deactivate_entity(struct bfq_entity *entity, bool ins_into_idle_tree)
1158 st = bfq_entity_service_tree(entity); 1172 st = bfq_entity_service_tree(entity);
1159 is_in_service = entity == sd->in_service_entity; 1173 is_in_service = entity == sd->in_service_entity;
1160 1174
1161 if (is_in_service) 1175 if (is_in_service) {
1162 bfq_calc_finish(entity, entity->service); 1176 bfq_calc_finish(entity, entity->service);
1177 sd->in_service_entity = NULL;
1178 }
1163 1179
1164 if (entity->tree == &st->active) 1180 if (entity->tree == &st->active)
1165 bfq_active_extract(st, entity); 1181 bfq_active_extract(st, entity);
@@ -1177,7 +1193,7 @@ bool __bfq_deactivate_entity(struct bfq_entity *entity, bool ins_into_idle_tree)
1177/** 1193/**
1178 * bfq_deactivate_entity - deactivate an entity representing a bfq_queue. 1194 * bfq_deactivate_entity - deactivate an entity representing a bfq_queue.
1179 * @entity: the entity to deactivate. 1195 * @entity: the entity to deactivate.
1180 * @ins_into_idle_tree: true if the entity can be put on the idle tree 1196 * @ins_into_idle_tree: true if the entity can be put into the idle tree
1181 */ 1197 */
1182static void bfq_deactivate_entity(struct bfq_entity *entity, 1198static void bfq_deactivate_entity(struct bfq_entity *entity,
1183 bool ins_into_idle_tree, 1199 bool ins_into_idle_tree,
@@ -1208,16 +1224,29 @@ static void bfq_deactivate_entity(struct bfq_entity *entity,
1208 */ 1224 */
1209 bfq_update_next_in_service(sd, NULL); 1225 bfq_update_next_in_service(sd, NULL);
1210 1226
1211 if (sd->next_in_service) 1227 if (sd->next_in_service || sd->in_service_entity) {
1212 /* 1228 /*
1213 * The parent entity is still backlogged, 1229 * The parent entity is still active, because
1214 * because next_in_service is not NULL. So, no 1230 * either next_in_service or in_service_entity
1215 * further upwards deactivation must be 1231 * is not NULL. So, no further upwards
1216 * performed. Yet, next_in_service has 1232 * deactivation must be performed. Yet,
1217 * changed. Then the schedule does need to be 1233 * next_in_service has changed. Then the
1218 * updated upwards. 1234 * schedule does need to be updated upwards.
1235 *
1236 * NOTE If in_service_entity is not NULL, then
1237 * next_in_service may happen to be NULL,
1238 * although the parent entity is evidently
1239 * active. This happens if 1) the entity
1240 * pointed by in_service_entity is the only
1241 * active entity in the parent entity, and 2)
1242 * according to the definition of
1243 * next_in_service, the in_service_entity
1244 * cannot be considered as
1245 * next_in_service. See the comments on the
1246 * definition of next_in_service for details.
1219 */ 1247 */
1220 break; 1248 break;
1249 }
1221 1250
1222 /* 1251 /*
1223 * If we get here, then the parent is no more 1252 * If we get here, then the parent is no more
@@ -1297,7 +1326,7 @@ static void bfq_update_vtime(struct bfq_service_tree *st, u64 new_value)
1297 * 1326 *
1298 * This function searches the first schedulable entity, starting from the 1327 * This function searches the first schedulable entity, starting from the
1299 * root of the tree and going on the left every time on this side there is 1328 * root of the tree and going on the left every time on this side there is
1300 * a subtree with at least one eligible (start >= vtime) entity. The path on 1329 * a subtree with at least one eligible (start <= vtime) entity. The path on
1301 * the right is followed only if a) the left subtree contains no eligible 1330 * the right is followed only if a) the left subtree contains no eligible
1302 * entities and b) no eligible entity has been found yet. 1331 * entities and b) no eligible entity has been found yet.
1303 */ 1332 */
@@ -1494,47 +1523,34 @@ struct bfq_queue *bfq_get_next_queue(struct bfq_data *bfqd)
1494 1523
1495 /* 1524 /*
1496 * If entity is no longer a candidate for next 1525 * If entity is no longer a candidate for next
1497 * service, then we extract it from its active tree, 1526 * service, then it must be extracted from its active
1498 * for the following reason. To further boost the 1527 * tree, so as to make sure that it won't be
1499 * throughput in some special case, BFQ needs to know 1528 * considered when computing next_in_service. See the
1500 * which is the next candidate entity to serve, while 1529 * comments on the function
1501 * there is already an entity in service. In this 1530 * bfq_no_longer_next_in_service() for details.
1502 * respect, to make it easy to compute/update the next
1503 * candidate entity to serve after the current
1504 * candidate has been set in service, there is a case
1505 * where it is necessary to extract the current
1506 * candidate from its service tree. Such a case is
1507 * when the entity just set in service cannot be also
1508 * a candidate for next service. Details about when
1509 * this conditions holds are reported in the comments
1510 * on the function bfq_no_longer_next_in_service()
1511 * invoked below.
1512 */ 1531 */
1513 if (bfq_no_longer_next_in_service(entity)) 1532 if (bfq_no_longer_next_in_service(entity))
1514 bfq_active_extract(bfq_entity_service_tree(entity), 1533 bfq_active_extract(bfq_entity_service_tree(entity),
1515 entity); 1534 entity);
1516 1535
1517 /* 1536 /*
1518 * For the same reason why we may have just extracted 1537 * Even if entity is not to be extracted according to
1519 * entity from its active tree, we may need to update 1538 * the above check, a descendant entity may get
1520 * next_in_service for the sched_data of entity too, 1539 * extracted in one of the next iterations of this
1521 * regardless of whether entity has been extracted. 1540 * loop. Such an event could cause a change in
1522 * In fact, even if entity has not been extracted, a 1541 * next_in_service for the level of the descendant
1523 * descendant entity may get extracted. Such an event 1542 * entity, and thus possibly back to this level.
1524 * would cause a change in next_in_service for the
1525 * level of the descendant entity, and thus possibly
1526 * back to upper levels.
1527 * 1543 *
1528 * We cannot perform the resulting needed update 1544 * However, we cannot perform the resulting needed
1529 * before the end of this loop, because, to know which 1545 * update of next_in_service for this level before the
1530 * is the correct next-to-serve candidate entity for 1546 * end of the whole loop, because, to know which is
1531 * each level, we need first to find the leaf entity 1547 * the correct next-to-serve candidate entity for each
1532 * to set in service. In fact, only after we know 1548 * level, we need first to find the leaf entity to set
1533 * which is the next-to-serve leaf entity, we can 1549 * in service. In fact, only after we know which is
1534 * discover whether the parent entity of the leaf 1550 * the next-to-serve leaf entity, we can discover
1535 * entity becomes the next-to-serve, and so on. 1551 * whether the parent entity of the leaf entity
1552 * becomes the next-to-serve, and so on.
1536 */ 1553 */
1537
1538 } 1554 }
1539 1555
1540 bfqq = bfq_entity_to_bfqq(entity); 1556 bfqq = bfq_entity_to_bfqq(entity);
diff --git a/block/bio-integrity.c b/block/bio-integrity.c
index 83e92beb3c9f..9b1ea478577b 100644
--- a/block/bio-integrity.c
+++ b/block/bio-integrity.c
@@ -387,9 +387,11 @@ static void bio_integrity_verify_fn(struct work_struct *work)
387 */ 387 */
388bool __bio_integrity_endio(struct bio *bio) 388bool __bio_integrity_endio(struct bio *bio)
389{ 389{
390 if (bio_op(bio) == REQ_OP_READ && !bio->bi_status) { 390 struct blk_integrity *bi = bdev_get_integrity(bio->bi_bdev);
391 struct bio_integrity_payload *bip = bio_integrity(bio); 391 struct bio_integrity_payload *bip = bio_integrity(bio);
392 392
393 if (bio_op(bio) == REQ_OP_READ && !bio->bi_status &&
394 (bip->bip_flags & BIP_BLOCK_INTEGRITY) && bi->profile->verify_fn) {
393 INIT_WORK(&bip->bip_work, bio_integrity_verify_fn); 395 INIT_WORK(&bip->bip_work, bio_integrity_verify_fn);
394 queue_work(kintegrityd_wq, &bip->bip_work); 396 queue_work(kintegrityd_wq, &bip->bip_work);
395 return false; 397 return false;
diff --git a/block/blk-core.c b/block/blk-core.c
index 970b9c9638c5..dbecbf4a64e0 100644
--- a/block/blk-core.c
+++ b/block/blk-core.c
@@ -3421,6 +3421,10 @@ EXPORT_SYMBOL(blk_finish_plug);
3421 */ 3421 */
3422void blk_pm_runtime_init(struct request_queue *q, struct device *dev) 3422void blk_pm_runtime_init(struct request_queue *q, struct device *dev)
3423{ 3423{
3424 /* not support for RQF_PM and ->rpm_status in blk-mq yet */
3425 if (q->mq_ops)
3426 return;
3427
3424 q->dev = dev; 3428 q->dev = dev;
3425 q->rpm_status = RPM_ACTIVE; 3429 q->rpm_status = RPM_ACTIVE;
3426 pm_runtime_set_autosuspend_delay(q->dev, -1); 3430 pm_runtime_set_autosuspend_delay(q->dev, -1);
diff --git a/block/blk-mq-cpumap.c b/block/blk-mq-cpumap.c
index 4891f042a22f..9f8cffc8a701 100644
--- a/block/blk-mq-cpumap.c
+++ b/block/blk-mq-cpumap.c
@@ -17,9 +17,9 @@
17static int cpu_to_queue_index(unsigned int nr_queues, const int cpu) 17static int cpu_to_queue_index(unsigned int nr_queues, const int cpu)
18{ 18{
19 /* 19 /*
20 * Non online CPU will be mapped to queue index 0. 20 * Non present CPU will be mapped to queue index 0.
21 */ 21 */
22 if (!cpu_online(cpu)) 22 if (!cpu_present(cpu))
23 return 0; 23 return 0;
24 return cpu % nr_queues; 24 return cpu % nr_queues;
25} 25}
diff --git a/block/blk-mq-pci.c b/block/blk-mq-pci.c
index 0c3354cf3552..76944e3271bf 100644
--- a/block/blk-mq-pci.c
+++ b/block/blk-mq-pci.c
@@ -36,12 +36,18 @@ int blk_mq_pci_map_queues(struct blk_mq_tag_set *set, struct pci_dev *pdev)
36 for (queue = 0; queue < set->nr_hw_queues; queue++) { 36 for (queue = 0; queue < set->nr_hw_queues; queue++) {
37 mask = pci_irq_get_affinity(pdev, queue); 37 mask = pci_irq_get_affinity(pdev, queue);
38 if (!mask) 38 if (!mask)
39 return -EINVAL; 39 goto fallback;
40 40
41 for_each_cpu(cpu, mask) 41 for_each_cpu(cpu, mask)
42 set->mq_map[cpu] = queue; 42 set->mq_map[cpu] = queue;
43 } 43 }
44 44
45 return 0; 45 return 0;
46
47fallback:
48 WARN_ON_ONCE(set->nr_hw_queues > 1);
49 for_each_possible_cpu(cpu)
50 set->mq_map[cpu] = 0;
51 return 0;
46} 52}
47EXPORT_SYMBOL_GPL(blk_mq_pci_map_queues); 53EXPORT_SYMBOL_GPL(blk_mq_pci_map_queues);
diff --git a/block/blk-mq.c b/block/blk-mq.c
index 041f7b7fa0d6..4603b115e234 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -301,11 +301,12 @@ static struct request *blk_mq_get_request(struct request_queue *q,
301 struct elevator_queue *e = q->elevator; 301 struct elevator_queue *e = q->elevator;
302 struct request *rq; 302 struct request *rq;
303 unsigned int tag; 303 unsigned int tag;
304 struct blk_mq_ctx *local_ctx = NULL;
304 305
305 blk_queue_enter_live(q); 306 blk_queue_enter_live(q);
306 data->q = q; 307 data->q = q;
307 if (likely(!data->ctx)) 308 if (likely(!data->ctx))
308 data->ctx = blk_mq_get_ctx(q); 309 data->ctx = local_ctx = blk_mq_get_ctx(q);
309 if (likely(!data->hctx)) 310 if (likely(!data->hctx))
310 data->hctx = blk_mq_map_queue(q, data->ctx->cpu); 311 data->hctx = blk_mq_map_queue(q, data->ctx->cpu);
311 if (op & REQ_NOWAIT) 312 if (op & REQ_NOWAIT)
@@ -324,6 +325,10 @@ static struct request *blk_mq_get_request(struct request_queue *q,
324 325
325 tag = blk_mq_get_tag(data); 326 tag = blk_mq_get_tag(data);
326 if (tag == BLK_MQ_TAG_FAIL) { 327 if (tag == BLK_MQ_TAG_FAIL) {
328 if (local_ctx) {
329 blk_mq_put_ctx(local_ctx);
330 data->ctx = NULL;
331 }
327 blk_queue_exit(q); 332 blk_queue_exit(q);
328 return NULL; 333 return NULL;
329 } 334 }
@@ -355,13 +360,13 @@ struct request *blk_mq_alloc_request(struct request_queue *q, unsigned int op,
355 return ERR_PTR(ret); 360 return ERR_PTR(ret);
356 361
357 rq = blk_mq_get_request(q, NULL, op, &alloc_data); 362 rq = blk_mq_get_request(q, NULL, op, &alloc_data);
358
359 blk_mq_put_ctx(alloc_data.ctx);
360 blk_queue_exit(q); 363 blk_queue_exit(q);
361 364
362 if (!rq) 365 if (!rq)
363 return ERR_PTR(-EWOULDBLOCK); 366 return ERR_PTR(-EWOULDBLOCK);
364 367
368 blk_mq_put_ctx(alloc_data.ctx);
369
365 rq->__data_len = 0; 370 rq->__data_len = 0;
366 rq->__sector = (sector_t) -1; 371 rq->__sector = (sector_t) -1;
367 rq->bio = rq->biotail = NULL; 372 rq->bio = rq->biotail = NULL;
@@ -406,7 +411,6 @@ struct request *blk_mq_alloc_request_hctx(struct request_queue *q,
406 alloc_data.ctx = __blk_mq_get_ctx(q, cpu); 411 alloc_data.ctx = __blk_mq_get_ctx(q, cpu);
407 412
408 rq = blk_mq_get_request(q, NULL, op, &alloc_data); 413 rq = blk_mq_get_request(q, NULL, op, &alloc_data);
409
410 blk_queue_exit(q); 414 blk_queue_exit(q);
411 415
412 if (!rq) 416 if (!rq)
@@ -679,8 +683,8 @@ EXPORT_SYMBOL(blk_mq_kick_requeue_list);
679void blk_mq_delay_kick_requeue_list(struct request_queue *q, 683void blk_mq_delay_kick_requeue_list(struct request_queue *q,
680 unsigned long msecs) 684 unsigned long msecs)
681{ 685{
682 kblockd_schedule_delayed_work(&q->requeue_work, 686 kblockd_mod_delayed_work_on(WORK_CPU_UNBOUND, &q->requeue_work,
683 msecs_to_jiffies(msecs)); 687 msecs_to_jiffies(msecs));
684} 688}
685EXPORT_SYMBOL(blk_mq_delay_kick_requeue_list); 689EXPORT_SYMBOL(blk_mq_delay_kick_requeue_list);
686 690
diff --git a/crypto/authencesn.c b/crypto/authencesn.c
index 6f8f6b86bfe2..0cf5fefdb859 100644
--- a/crypto/authencesn.c
+++ b/crypto/authencesn.c
@@ -248,6 +248,9 @@ static int crypto_authenc_esn_decrypt_tail(struct aead_request *req,
248 u8 *ihash = ohash + crypto_ahash_digestsize(auth); 248 u8 *ihash = ohash + crypto_ahash_digestsize(auth);
249 u32 tmp[2]; 249 u32 tmp[2];
250 250
251 if (!authsize)
252 goto decrypt;
253
251 /* Move high-order bits of sequence number back. */ 254 /* Move high-order bits of sequence number back. */
252 scatterwalk_map_and_copy(tmp, dst, 4, 4, 0); 255 scatterwalk_map_and_copy(tmp, dst, 4, 4, 0);
253 scatterwalk_map_and_copy(tmp + 1, dst, assoclen + cryptlen, 4, 0); 256 scatterwalk_map_and_copy(tmp + 1, dst, assoclen + cryptlen, 4, 0);
@@ -256,6 +259,8 @@ static int crypto_authenc_esn_decrypt_tail(struct aead_request *req,
256 if (crypto_memneq(ihash, ohash, authsize)) 259 if (crypto_memneq(ihash, ohash, authsize))
257 return -EBADMSG; 260 return -EBADMSG;
258 261
262decrypt:
263
259 sg_init_table(areq_ctx->dst, 2); 264 sg_init_table(areq_ctx->dst, 2);
260 dst = scatterwalk_ffwd(areq_ctx->dst, dst, assoclen); 265 dst = scatterwalk_ffwd(areq_ctx->dst, dst, assoclen);
261 266
diff --git a/drivers/acpi/acpi_apd.c b/drivers/acpi/acpi_apd.c
index fc6c416f8724..d5999eb41c00 100644
--- a/drivers/acpi/acpi_apd.c
+++ b/drivers/acpi/acpi_apd.c
@@ -180,8 +180,8 @@ static const struct acpi_device_id acpi_apd_device_ids[] = {
180 { "APMC0D0F", APD_ADDR(xgene_i2c_desc) }, 180 { "APMC0D0F", APD_ADDR(xgene_i2c_desc) },
181 { "BRCM900D", APD_ADDR(vulcan_spi_desc) }, 181 { "BRCM900D", APD_ADDR(vulcan_spi_desc) },
182 { "CAV900D", APD_ADDR(vulcan_spi_desc) }, 182 { "CAV900D", APD_ADDR(vulcan_spi_desc) },
183 { "HISI0A21", APD_ADDR(hip07_i2c_desc) }, 183 { "HISI02A1", APD_ADDR(hip07_i2c_desc) },
184 { "HISI0A22", APD_ADDR(hip08_i2c_desc) }, 184 { "HISI02A2", APD_ADDR(hip08_i2c_desc) },
185#endif 185#endif
186 { } 186 { }
187}; 187};
diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
index e51a1e98e62f..f88caf5aab76 100644
--- a/drivers/acpi/acpi_lpss.c
+++ b/drivers/acpi/acpi_lpss.c
@@ -85,6 +85,7 @@ static const struct lpss_device_desc lpss_dma_desc = {
85}; 85};
86 86
87struct lpss_private_data { 87struct lpss_private_data {
88 struct acpi_device *adev;
88 void __iomem *mmio_base; 89 void __iomem *mmio_base;
89 resource_size_t mmio_size; 90 resource_size_t mmio_size;
90 unsigned int fixed_clk_rate; 91 unsigned int fixed_clk_rate;
@@ -155,6 +156,12 @@ static struct pwm_lookup byt_pwm_lookup[] = {
155 156
156static void byt_pwm_setup(struct lpss_private_data *pdata) 157static void byt_pwm_setup(struct lpss_private_data *pdata)
157{ 158{
159 struct acpi_device *adev = pdata->adev;
160
161 /* Only call pwm_add_table for the first PWM controller */
162 if (!adev->pnp.unique_id || strcmp(adev->pnp.unique_id, "1"))
163 return;
164
158 if (!acpi_dev_present("INT33FD", NULL, -1)) 165 if (!acpi_dev_present("INT33FD", NULL, -1))
159 pwm_add_table(byt_pwm_lookup, ARRAY_SIZE(byt_pwm_lookup)); 166 pwm_add_table(byt_pwm_lookup, ARRAY_SIZE(byt_pwm_lookup));
160} 167}
@@ -180,6 +187,12 @@ static struct pwm_lookup bsw_pwm_lookup[] = {
180 187
181static void bsw_pwm_setup(struct lpss_private_data *pdata) 188static void bsw_pwm_setup(struct lpss_private_data *pdata)
182{ 189{
190 struct acpi_device *adev = pdata->adev;
191
192 /* Only call pwm_add_table for the first PWM controller */
193 if (!adev->pnp.unique_id || strcmp(adev->pnp.unique_id, "1"))
194 return;
195
183 pwm_add_table(bsw_pwm_lookup, ARRAY_SIZE(bsw_pwm_lookup)); 196 pwm_add_table(bsw_pwm_lookup, ARRAY_SIZE(bsw_pwm_lookup));
184} 197}
185 198
@@ -456,6 +469,7 @@ static int acpi_lpss_create_device(struct acpi_device *adev,
456 goto err_out; 469 goto err_out;
457 } 470 }
458 471
472 pdata->adev = adev;
459 pdata->dev_desc = dev_desc; 473 pdata->dev_desc = dev_desc;
460 474
461 if (dev_desc->setup) 475 if (dev_desc->setup)
diff --git a/drivers/acpi/acpi_watchdog.c b/drivers/acpi/acpi_watchdog.c
index 8c4e0a18460a..bf22c29d2517 100644
--- a/drivers/acpi/acpi_watchdog.c
+++ b/drivers/acpi/acpi_watchdog.c
@@ -86,7 +86,12 @@ void __init acpi_watchdog_init(void)
86 86
87 found = false; 87 found = false;
88 resource_list_for_each_entry(rentry, &resource_list) { 88 resource_list_for_each_entry(rentry, &resource_list) {
89 if (resource_contains(rentry->res, &res)) { 89 if (rentry->res->flags == res.flags &&
90 resource_overlaps(rentry->res, &res)) {
91 if (res.start < rentry->res->start)
92 rentry->res->start = res.start;
93 if (res.end > rentry->res->end)
94 rentry->res->end = res.end;
90 found = true; 95 found = true;
91 break; 96 break;
92 } 97 }
diff --git a/drivers/acpi/acpica/nsxfeval.c b/drivers/acpi/acpica/nsxfeval.c
index 538c61677c10..783f4c838aee 100644
--- a/drivers/acpi/acpica/nsxfeval.c
+++ b/drivers/acpi/acpica/nsxfeval.c
@@ -100,9 +100,13 @@ acpi_evaluate_object_typed(acpi_handle handle,
100 free_buffer_on_error = TRUE; 100 free_buffer_on_error = TRUE;
101 } 101 }
102 102
103 status = acpi_get_handle(handle, pathname, &target_handle); 103 if (pathname) {
104 if (ACPI_FAILURE(status)) { 104 status = acpi_get_handle(handle, pathname, &target_handle);
105 return_ACPI_STATUS(status); 105 if (ACPI_FAILURE(status)) {
106 return_ACPI_STATUS(status);
107 }
108 } else {
109 target_handle = handle;
106 } 110 }
107 111
108 full_pathname = acpi_ns_get_external_pathname(target_handle); 112 full_pathname = acpi_ns_get_external_pathname(target_handle);
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c
index ddb01e9fa5b2..ae3d6d152633 100644
--- a/drivers/acpi/ec.c
+++ b/drivers/acpi/ec.c
@@ -151,6 +151,10 @@ static bool ec_freeze_events __read_mostly = false;
151module_param(ec_freeze_events, bool, 0644); 151module_param(ec_freeze_events, bool, 0644);
152MODULE_PARM_DESC(ec_freeze_events, "Disabling event handling during suspend/resume"); 152MODULE_PARM_DESC(ec_freeze_events, "Disabling event handling during suspend/resume");
153 153
154static bool ec_no_wakeup __read_mostly;
155module_param(ec_no_wakeup, bool, 0644);
156MODULE_PARM_DESC(ec_no_wakeup, "Do not wake up from suspend-to-idle");
157
154struct acpi_ec_query_handler { 158struct acpi_ec_query_handler {
155 struct list_head node; 159 struct list_head node;
156 acpi_ec_query_func func; 160 acpi_ec_query_func func;
@@ -535,6 +539,14 @@ static void acpi_ec_disable_event(struct acpi_ec *ec)
535 spin_unlock_irqrestore(&ec->lock, flags); 539 spin_unlock_irqrestore(&ec->lock, flags);
536 __acpi_ec_flush_event(ec); 540 __acpi_ec_flush_event(ec);
537} 541}
542
543void acpi_ec_flush_work(void)
544{
545 if (first_ec)
546 __acpi_ec_flush_event(first_ec);
547
548 flush_scheduled_work();
549}
538#endif /* CONFIG_PM_SLEEP */ 550#endif /* CONFIG_PM_SLEEP */
539 551
540static bool acpi_ec_guard_event(struct acpi_ec *ec) 552static bool acpi_ec_guard_event(struct acpi_ec *ec)
@@ -1729,7 +1741,7 @@ error:
1729 * functioning ECDT EC first in order to handle the events. 1741 * functioning ECDT EC first in order to handle the events.
1730 * https://bugzilla.kernel.org/show_bug.cgi?id=115021 1742 * https://bugzilla.kernel.org/show_bug.cgi?id=115021
1731 */ 1743 */
1732int __init acpi_ec_ecdt_start(void) 1744static int __init acpi_ec_ecdt_start(void)
1733{ 1745{
1734 acpi_handle handle; 1746 acpi_handle handle;
1735 1747
@@ -1880,6 +1892,32 @@ static int acpi_ec_suspend(struct device *dev)
1880 return 0; 1892 return 0;
1881} 1893}
1882 1894
1895static int acpi_ec_suspend_noirq(struct device *dev)
1896{
1897 struct acpi_ec *ec = acpi_driver_data(to_acpi_device(dev));
1898
1899 /*
1900 * The SCI handler doesn't run at this point, so the GPE can be
1901 * masked at the low level without side effects.
1902 */
1903 if (ec_no_wakeup && test_bit(EC_FLAGS_STARTED, &ec->flags) &&
1904 ec->reference_count >= 1)
1905 acpi_set_gpe(NULL, ec->gpe, ACPI_GPE_DISABLE);
1906
1907 return 0;
1908}
1909
1910static int acpi_ec_resume_noirq(struct device *dev)
1911{
1912 struct acpi_ec *ec = acpi_driver_data(to_acpi_device(dev));
1913
1914 if (ec_no_wakeup && test_bit(EC_FLAGS_STARTED, &ec->flags) &&
1915 ec->reference_count >= 1)
1916 acpi_set_gpe(NULL, ec->gpe, ACPI_GPE_ENABLE);
1917
1918 return 0;
1919}
1920
1883static int acpi_ec_resume(struct device *dev) 1921static int acpi_ec_resume(struct device *dev)
1884{ 1922{
1885 struct acpi_ec *ec = 1923 struct acpi_ec *ec =
@@ -1891,6 +1929,7 @@ static int acpi_ec_resume(struct device *dev)
1891#endif 1929#endif
1892 1930
1893static const struct dev_pm_ops acpi_ec_pm = { 1931static const struct dev_pm_ops acpi_ec_pm = {
1932 SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(acpi_ec_suspend_noirq, acpi_ec_resume_noirq)
1894 SET_SYSTEM_SLEEP_PM_OPS(acpi_ec_suspend, acpi_ec_resume) 1933 SET_SYSTEM_SLEEP_PM_OPS(acpi_ec_suspend, acpi_ec_resume)
1895}; 1934};
1896 1935
@@ -1964,20 +2003,17 @@ static inline void acpi_ec_query_exit(void)
1964int __init acpi_ec_init(void) 2003int __init acpi_ec_init(void)
1965{ 2004{
1966 int result; 2005 int result;
2006 int ecdt_fail, dsdt_fail;
1967 2007
1968 /* register workqueue for _Qxx evaluations */ 2008 /* register workqueue for _Qxx evaluations */
1969 result = acpi_ec_query_init(); 2009 result = acpi_ec_query_init();
1970 if (result) 2010 if (result)
1971 goto err_exit; 2011 return result;
1972 /* Now register the driver for the EC */
1973 result = acpi_bus_register_driver(&acpi_ec_driver);
1974 if (result)
1975 goto err_exit;
1976 2012
1977err_exit: 2013 /* Drivers must be started after acpi_ec_query_init() */
1978 if (result) 2014 ecdt_fail = acpi_ec_ecdt_start();
1979 acpi_ec_query_exit(); 2015 dsdt_fail = acpi_bus_register_driver(&acpi_ec_driver);
1980 return result; 2016 return ecdt_fail && dsdt_fail ? -ENODEV : 0;
1981} 2017}
1982 2018
1983/* EC driver currently not unloadable */ 2019/* EC driver currently not unloadable */
diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h
index 9531d3276f65..3f5af4d7a739 100644
--- a/drivers/acpi/internal.h
+++ b/drivers/acpi/internal.h
@@ -185,7 +185,6 @@ typedef int (*acpi_ec_query_func) (void *data);
185int acpi_ec_init(void); 185int acpi_ec_init(void);
186int acpi_ec_ecdt_probe(void); 186int acpi_ec_ecdt_probe(void);
187int acpi_ec_dsdt_probe(void); 187int acpi_ec_dsdt_probe(void);
188int acpi_ec_ecdt_start(void);
189void acpi_ec_block_transactions(void); 188void acpi_ec_block_transactions(void);
190void acpi_ec_unblock_transactions(void); 189void acpi_ec_unblock_transactions(void);
191int acpi_ec_add_query_handler(struct acpi_ec *ec, u8 query_bit, 190int acpi_ec_add_query_handler(struct acpi_ec *ec, u8 query_bit,
@@ -193,6 +192,10 @@ int acpi_ec_add_query_handler(struct acpi_ec *ec, u8 query_bit,
193 void *data); 192 void *data);
194void acpi_ec_remove_query_handler(struct acpi_ec *ec, u8 query_bit); 193void acpi_ec_remove_query_handler(struct acpi_ec *ec, u8 query_bit);
195 194
195#ifdef CONFIG_PM_SLEEP
196void acpi_ec_flush_work(void);
197#endif
198
196 199
197/*-------------------------------------------------------------------------- 200/*--------------------------------------------------------------------------
198 Suspend/Resume 201 Suspend/Resume
diff --git a/drivers/acpi/nfit/core.c b/drivers/acpi/nfit/core.c
index b75b734ee73a..19182d091587 100644
--- a/drivers/acpi/nfit/core.c
+++ b/drivers/acpi/nfit/core.c
@@ -3160,6 +3160,8 @@ static struct acpi_driver acpi_nfit_driver = {
3160 3160
3161static __init int nfit_init(void) 3161static __init int nfit_init(void)
3162{ 3162{
3163 int ret;
3164
3163 BUILD_BUG_ON(sizeof(struct acpi_table_nfit) != 40); 3165 BUILD_BUG_ON(sizeof(struct acpi_table_nfit) != 40);
3164 BUILD_BUG_ON(sizeof(struct acpi_nfit_system_address) != 56); 3166 BUILD_BUG_ON(sizeof(struct acpi_nfit_system_address) != 56);
3165 BUILD_BUG_ON(sizeof(struct acpi_nfit_memory_map) != 48); 3167 BUILD_BUG_ON(sizeof(struct acpi_nfit_memory_map) != 48);
@@ -3187,8 +3189,14 @@ static __init int nfit_init(void)
3187 return -ENOMEM; 3189 return -ENOMEM;
3188 3190
3189 nfit_mce_register(); 3191 nfit_mce_register();
3192 ret = acpi_bus_register_driver(&acpi_nfit_driver);
3193 if (ret) {
3194 nfit_mce_unregister();
3195 destroy_workqueue(nfit_wq);
3196 }
3197
3198 return ret;
3190 3199
3191 return acpi_bus_register_driver(&acpi_nfit_driver);
3192} 3200}
3193 3201
3194static __exit void nfit_exit(void) 3202static __exit void nfit_exit(void)
diff --git a/drivers/acpi/numa.c b/drivers/acpi/numa.c
index edb0c79f7c64..917f1cc0fda4 100644
--- a/drivers/acpi/numa.c
+++ b/drivers/acpi/numa.c
@@ -443,7 +443,7 @@ int __init acpi_numa_init(void)
443 * So go over all cpu entries in SRAT to get apicid to node mapping. 443 * So go over all cpu entries in SRAT to get apicid to node mapping.
444 */ 444 */
445 445
446 /* SRAT: Static Resource Affinity Table */ 446 /* SRAT: System Resource Affinity Table */
447 if (!acpi_table_parse(ACPI_SIG_SRAT, acpi_parse_srat)) { 447 if (!acpi_table_parse(ACPI_SIG_SRAT, acpi_parse_srat)) {
448 struct acpi_subtable_proc srat_proc[3]; 448 struct acpi_subtable_proc srat_proc[3];
449 449
diff --git a/drivers/acpi/property.c b/drivers/acpi/property.c
index 917c789f953d..476a52c60cf3 100644
--- a/drivers/acpi/property.c
+++ b/drivers/acpi/property.c
@@ -1047,7 +1047,7 @@ static struct fwnode_handle *acpi_graph_get_child_prop_value(
1047 fwnode_for_each_child_node(fwnode, child) { 1047 fwnode_for_each_child_node(fwnode, child) {
1048 u32 nr; 1048 u32 nr;
1049 1049
1050 if (!fwnode_property_read_u32(fwnode, prop_name, &nr)) 1050 if (fwnode_property_read_u32(child, prop_name, &nr))
1051 continue; 1051 continue;
1052 1052
1053 if (val == nr) 1053 if (val == nr)
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index 33897298f03e..70fd5502c284 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -2084,7 +2084,6 @@ int __init acpi_scan_init(void)
2084 2084
2085 acpi_gpe_apply_masked_gpes(); 2085 acpi_gpe_apply_masked_gpes();
2086 acpi_update_all_gpes(); 2086 acpi_update_all_gpes();
2087 acpi_ec_ecdt_start();
2088 2087
2089 acpi_scan_initialized = true; 2088 acpi_scan_initialized = true;
2090 2089
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
index be17664736b2..fa8243c5c062 100644
--- a/drivers/acpi/sleep.c
+++ b/drivers/acpi/sleep.c
@@ -777,11 +777,11 @@ static void acpi_freeze_sync(void)
777 /* 777 /*
778 * Process all pending events in case there are any wakeup ones. 778 * Process all pending events in case there are any wakeup ones.
779 * 779 *
780 * The EC driver uses the system workqueue, so that one needs to be 780 * The EC driver uses the system workqueue and an additional special
781 * flushed too. 781 * one, so those need to be flushed too.
782 */ 782 */
783 acpi_ec_flush_work();
783 acpi_os_wait_events_complete(); 784 acpi_os_wait_events_complete();
784 flush_scheduled_work();
785 s2idle_wakeup = false; 785 s2idle_wakeup = false;
786} 786}
787 787
diff --git a/drivers/acpi/spcr.c b/drivers/acpi/spcr.c
index 4ac3e06b41d8..98aa8c808a33 100644
--- a/drivers/acpi/spcr.c
+++ b/drivers/acpi/spcr.c
@@ -17,6 +17,16 @@
17#include <linux/serial_core.h> 17#include <linux/serial_core.h>
18 18
19/* 19/*
20 * Erratum 44 for QDF2432v1 and QDF2400v1 SoCs describes the BUSY bit as
21 * occasionally getting stuck as 1. To avoid the potential for a hang, check
22 * TXFE == 0 instead of BUSY == 1. This may not be suitable for all UART
23 * implementations, so only do so if an affected platform is detected in
24 * parse_spcr().
25 */
26bool qdf2400_e44_present;
27EXPORT_SYMBOL(qdf2400_e44_present);
28
29/*
20 * Some Qualcomm Datacenter Technologies SoCs have a defective UART BUSY bit. 30 * Some Qualcomm Datacenter Technologies SoCs have a defective UART BUSY bit.
21 * Detect them by examining the OEM fields in the SPCR header, similiar to PCI 31 * Detect them by examining the OEM fields in the SPCR header, similiar to PCI
22 * quirk detection in pci_mcfg.c. 32 * quirk detection in pci_mcfg.c.
@@ -147,8 +157,30 @@ int __init parse_spcr(bool earlycon)
147 goto done; 157 goto done;
148 } 158 }
149 159
150 if (qdf2400_erratum_44_present(&table->header)) 160 /*
151 uart = "qdf2400_e44"; 161 * If the E44 erratum is required, then we need to tell the pl011
162 * driver to implement the work-around.
163 *
164 * The global variable is used by the probe function when it
165 * creates the UARTs, whether or not they're used as a console.
166 *
167 * If the user specifies "traditional" earlycon, the qdf2400_e44
168 * console name matches the EARLYCON_DECLARE() statement, and
169 * SPCR is not used. Parameter "earlycon" is false.
170 *
171 * If the user specifies "SPCR" earlycon, then we need to update
172 * the console name so that it also says "qdf2400_e44". Parameter
173 * "earlycon" is true.
174 *
175 * For consistency, if we change the console name, then we do it
176 * for everyone, not just earlycon.
177 */
178 if (qdf2400_erratum_44_present(&table->header)) {
179 qdf2400_e44_present = true;
180 if (earlycon)
181 uart = "qdf2400_e44";
182 }
183
152 if (xgene_8250_erratum_present(table)) 184 if (xgene_8250_erratum_present(table))
153 iotype = "mmio32"; 185 iotype = "mmio32";
154 186
diff --git a/drivers/android/binder.c b/drivers/android/binder.c
index aae4d8d4be36..f7665c31feca 100644
--- a/drivers/android/binder.c
+++ b/drivers/android/binder.c
@@ -2200,8 +2200,12 @@ static void binder_transaction(struct binder_proc *proc,
2200 list_add_tail(&t->work.entry, target_list); 2200 list_add_tail(&t->work.entry, target_list);
2201 tcomplete->type = BINDER_WORK_TRANSACTION_COMPLETE; 2201 tcomplete->type = BINDER_WORK_TRANSACTION_COMPLETE;
2202 list_add_tail(&tcomplete->entry, &thread->todo); 2202 list_add_tail(&tcomplete->entry, &thread->todo);
2203 if (target_wait) 2203 if (target_wait) {
2204 wake_up_interruptible(target_wait); 2204 if (reply || !(t->flags & TF_ONE_WAY))
2205 wake_up_interruptible_sync(target_wait);
2206 else
2207 wake_up_interruptible(target_wait);
2208 }
2205 return; 2209 return;
2206 2210
2207err_translate_failed: 2211err_translate_failed:
@@ -3247,10 +3251,6 @@ static long binder_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
3247 /*pr_info("binder_ioctl: %d:%d %x %lx\n", 3251 /*pr_info("binder_ioctl: %d:%d %x %lx\n",
3248 proc->pid, current->pid, cmd, arg);*/ 3252 proc->pid, current->pid, cmd, arg);*/
3249 3253
3250 if (unlikely(current->mm != proc->vma_vm_mm)) {
3251 pr_err("current mm mismatch proc mm\n");
3252 return -EINVAL;
3253 }
3254 trace_binder_ioctl(cmd, arg); 3254 trace_binder_ioctl(cmd, arg);
3255 3255
3256 ret = wait_event_interruptible(binder_user_error_wait, binder_stop_on_user_error < 2); 3256 ret = wait_event_interruptible(binder_user_error_wait, binder_stop_on_user_error < 2);
@@ -3464,9 +3464,8 @@ static int binder_open(struct inode *nodp, struct file *filp)
3464 proc = kzalloc(sizeof(*proc), GFP_KERNEL); 3464 proc = kzalloc(sizeof(*proc), GFP_KERNEL);
3465 if (proc == NULL) 3465 if (proc == NULL)
3466 return -ENOMEM; 3466 return -ENOMEM;
3467 get_task_struct(current); 3467 get_task_struct(current->group_leader);
3468 proc->tsk = current; 3468 proc->tsk = current->group_leader;
3469 proc->vma_vm_mm = current->mm;
3470 INIT_LIST_HEAD(&proc->todo); 3469 INIT_LIST_HEAD(&proc->todo);
3471 init_waitqueue_head(&proc->wait); 3470 init_waitqueue_head(&proc->wait);
3472 proc->default_priority = task_nice(current); 3471 proc->default_priority = task_nice(current);
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
index 948fc86980a1..363fc5330c21 100644
--- a/drivers/ata/Kconfig
+++ b/drivers/ata/Kconfig
@@ -215,7 +215,7 @@ config SATA_FSL
215 215
216config SATA_GEMINI 216config SATA_GEMINI
217 tristate "Gemini SATA bridge support" 217 tristate "Gemini SATA bridge support"
218 depends on PATA_FTIDE010 218 depends on ARCH_GEMINI || COMPILE_TEST
219 default ARCH_GEMINI 219 default ARCH_GEMINI
220 help 220 help
221 This enabled support for the FTIDE010 to SATA bridge 221 This enabled support for the FTIDE010 to SATA bridge
@@ -613,7 +613,7 @@ config PATA_FTIDE010
613 tristate "Faraday Technology FTIDE010 PATA support" 613 tristate "Faraday Technology FTIDE010 PATA support"
614 depends on OF 614 depends on OF
615 depends on ARM 615 depends on ARM
616 default ARCH_GEMINI 616 depends on SATA_GEMINI
617 help 617 help
618 This option enables support for the Faraday FTIDE010 618 This option enables support for the Faraday FTIDE010
619 PATA controller found in the Cortina Gemini SoCs. 619 PATA controller found in the Cortina Gemini SoCs.
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 8453f9a4682f..fa7dd4394c02 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -2083,7 +2083,7 @@ unsigned int ata_read_log_page(struct ata_device *dev, u8 log,
2083retry: 2083retry:
2084 ata_tf_init(dev, &tf); 2084 ata_tf_init(dev, &tf);
2085 if (dev->dma_mode && ata_id_has_read_log_dma_ext(dev->id) && 2085 if (dev->dma_mode && ata_id_has_read_log_dma_ext(dev->id) &&
2086 !(dev->horkage & ATA_HORKAGE_NO_NCQ_LOG)) { 2086 !(dev->horkage & ATA_HORKAGE_NO_DMA_LOG)) {
2087 tf.command = ATA_CMD_READ_LOG_DMA_EXT; 2087 tf.command = ATA_CMD_READ_LOG_DMA_EXT;
2088 tf.protocol = ATA_PROT_DMA; 2088 tf.protocol = ATA_PROT_DMA;
2089 dma = true; 2089 dma = true;
@@ -2102,8 +2102,8 @@ retry:
2102 buf, sectors * ATA_SECT_SIZE, 0); 2102 buf, sectors * ATA_SECT_SIZE, 0);
2103 2103
2104 if (err_mask && dma) { 2104 if (err_mask && dma) {
2105 dev->horkage |= ATA_HORKAGE_NO_NCQ_LOG; 2105 dev->horkage |= ATA_HORKAGE_NO_DMA_LOG;
2106 ata_dev_warn(dev, "READ LOG DMA EXT failed, trying unqueued\n"); 2106 ata_dev_warn(dev, "READ LOG DMA EXT failed, trying PIO\n");
2107 goto retry; 2107 goto retry;
2108 } 2108 }
2109 2109
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c
index b70bcf6d2914..3dbd05532c09 100644
--- a/drivers/ata/libata-eh.c
+++ b/drivers/ata/libata-eh.c
@@ -1434,7 +1434,7 @@ void ata_eh_about_to_do(struct ata_link *link, struct ata_device *dev,
1434 1434
1435/** 1435/**
1436 * ata_eh_done - EH action complete 1436 * ata_eh_done - EH action complete
1437* @ap: target ATA port 1437 * @link: ATA link for which EH actions are complete
1438 * @dev: target ATA dev for per-dev action (can be NULL) 1438 * @dev: target ATA dev for per-dev action (can be NULL)
1439 * @action: action just completed 1439 * @action: action just completed
1440 * 1440 *
@@ -1576,7 +1576,7 @@ unsigned int atapi_eh_tur(struct ata_device *dev, u8 *r_sense_key)
1576 1576
1577/** 1577/**
1578 * ata_eh_request_sense - perform REQUEST_SENSE_DATA_EXT 1578 * ata_eh_request_sense - perform REQUEST_SENSE_DATA_EXT
1579 * @dev: device to perform REQUEST_SENSE_SENSE_DATA_EXT to 1579 * @qc: qc to perform REQUEST_SENSE_SENSE_DATA_EXT to
1580 * @cmd: scsi command for which the sense code should be set 1580 * @cmd: scsi command for which the sense code should be set
1581 * 1581 *
1582 * Perform REQUEST_SENSE_DATA_EXT after the device reported CHECK 1582 * Perform REQUEST_SENSE_DATA_EXT after the device reported CHECK
@@ -4175,7 +4175,6 @@ static void ata_eh_handle_port_resume(struct ata_port *ap)
4175 struct ata_link *link; 4175 struct ata_link *link;
4176 struct ata_device *dev; 4176 struct ata_device *dev;
4177 unsigned long flags; 4177 unsigned long flags;
4178 int rc = 0;
4179 4178
4180 /* are we resuming? */ 4179 /* are we resuming? */
4181 spin_lock_irqsave(ap->lock, flags); 4180 spin_lock_irqsave(ap->lock, flags);
@@ -4202,7 +4201,7 @@ static void ata_eh_handle_port_resume(struct ata_port *ap)
4202 ata_acpi_set_state(ap, ap->pm_mesg); 4201 ata_acpi_set_state(ap, ap->pm_mesg);
4203 4202
4204 if (ap->ops->port_resume) 4203 if (ap->ops->port_resume)
4205 rc = ap->ops->port_resume(ap); 4204 ap->ops->port_resume(ap);
4206 4205
4207 /* tell ACPI that we're resuming */ 4206 /* tell ACPI that we're resuming */
4208 ata_acpi_on_resume(ap); 4207 ata_acpi_on_resume(ap);
diff --git a/drivers/ata/libata-scsi.c b/drivers/ata/libata-scsi.c
index d462c5a3a7ef..44ba292f2cd7 100644
--- a/drivers/ata/libata-scsi.c
+++ b/drivers/ata/libata-scsi.c
@@ -3030,10 +3030,12 @@ static unsigned int atapi_xlat(struct ata_queued_cmd *qc)
3030static struct ata_device *ata_find_dev(struct ata_port *ap, int devno) 3030static struct ata_device *ata_find_dev(struct ata_port *ap, int devno)
3031{ 3031{
3032 if (!sata_pmp_attached(ap)) { 3032 if (!sata_pmp_attached(ap)) {
3033 if (likely(devno < ata_link_max_devices(&ap->link))) 3033 if (likely(devno >= 0 &&
3034 devno < ata_link_max_devices(&ap->link)))
3034 return &ap->link.device[devno]; 3035 return &ap->link.device[devno];
3035 } else { 3036 } else {
3036 if (likely(devno < ap->nr_pmp_links)) 3037 if (likely(devno >= 0 &&
3038 devno < ap->nr_pmp_links))
3037 return &ap->pmp_link[devno].device[0]; 3039 return &ap->pmp_link[devno].device[0];
3038 } 3040 }
3039 3041
diff --git a/drivers/ata/sata_rcar.c b/drivers/ata/sata_rcar.c
index ee9844758736..537d11869069 100644
--- a/drivers/ata/sata_rcar.c
+++ b/drivers/ata/sata_rcar.c
@@ -858,6 +858,14 @@ static const struct of_device_id sata_rcar_match[] = {
858 .compatible = "renesas,sata-r8a7795", 858 .compatible = "renesas,sata-r8a7795",
859 .data = (void *)RCAR_GEN2_SATA 859 .data = (void *)RCAR_GEN2_SATA
860 }, 860 },
861 {
862 .compatible = "renesas,rcar-gen2-sata",
863 .data = (void *)RCAR_GEN2_SATA
864 },
865 {
866 .compatible = "renesas,rcar-gen3-sata",
867 .data = (void *)RCAR_GEN2_SATA
868 },
861 { }, 869 { },
862}; 870};
863MODULE_DEVICE_TABLE(of, sata_rcar_match); 871MODULE_DEVICE_TABLE(of, sata_rcar_match);
diff --git a/drivers/atm/zatm.c b/drivers/atm/zatm.c
index 292dec18ffb8..07bdd51b3b9a 100644
--- a/drivers/atm/zatm.c
+++ b/drivers/atm/zatm.c
@@ -1613,7 +1613,7 @@ static int zatm_init_one(struct pci_dev *pci_dev,
1613 1613
1614 ret = dma_set_mask_and_coherent(&pci_dev->dev, DMA_BIT_MASK(32)); 1614 ret = dma_set_mask_and_coherent(&pci_dev->dev, DMA_BIT_MASK(32));
1615 if (ret < 0) 1615 if (ret < 0)
1616 goto out_disable; 1616 goto out_release;
1617 1617
1618 zatm_dev->pci_dev = pci_dev; 1618 zatm_dev->pci_dev = pci_dev;
1619 dev->dev_data = zatm_dev; 1619 dev->dev_data = zatm_dev;
diff --git a/drivers/base/dma-coherent.c b/drivers/base/dma-coherent.c
index 2ae24c28e70c..1c152aed6b82 100644
--- a/drivers/base/dma-coherent.c
+++ b/drivers/base/dma-coherent.c
@@ -25,7 +25,7 @@ static inline struct dma_coherent_mem *dev_get_coherent_memory(struct device *de
25{ 25{
26 if (dev && dev->dma_mem) 26 if (dev && dev->dma_mem)
27 return dev->dma_mem; 27 return dev->dma_mem;
28 return dma_coherent_default_memory; 28 return NULL;
29} 29}
30 30
31static inline dma_addr_t dma_get_device_base(struct device *dev, 31static inline dma_addr_t dma_get_device_base(struct device *dev,
@@ -165,34 +165,15 @@ void *dma_mark_declared_memory_occupied(struct device *dev,
165} 165}
166EXPORT_SYMBOL(dma_mark_declared_memory_occupied); 166EXPORT_SYMBOL(dma_mark_declared_memory_occupied);
167 167
168/** 168static void *__dma_alloc_from_coherent(struct dma_coherent_mem *mem,
169 * dma_alloc_from_coherent() - try to allocate memory from the per-device coherent area 169 ssize_t size, dma_addr_t *dma_handle)
170 *
171 * @dev: device from which we allocate memory
172 * @size: size of requested memory area
173 * @dma_handle: This will be filled with the correct dma handle
174 * @ret: This pointer will be filled with the virtual address
175 * to allocated area.
176 *
177 * This function should be only called from per-arch dma_alloc_coherent()
178 * to support allocation from per-device coherent memory pools.
179 *
180 * Returns 0 if dma_alloc_coherent should continue with allocating from
181 * generic memory areas, or !0 if dma_alloc_coherent should return @ret.
182 */
183int dma_alloc_from_coherent(struct device *dev, ssize_t size,
184 dma_addr_t *dma_handle, void **ret)
185{ 170{
186 struct dma_coherent_mem *mem = dev_get_coherent_memory(dev);
187 int order = get_order(size); 171 int order = get_order(size);
188 unsigned long flags; 172 unsigned long flags;
189 int pageno; 173 int pageno;
190 int dma_memory_map; 174 int dma_memory_map;
175 void *ret;
191 176
192 if (!mem)
193 return 0;
194
195 *ret = NULL;
196 spin_lock_irqsave(&mem->spinlock, flags); 177 spin_lock_irqsave(&mem->spinlock, flags);
197 178
198 if (unlikely(size > (mem->size << PAGE_SHIFT))) 179 if (unlikely(size > (mem->size << PAGE_SHIFT)))
@@ -203,21 +184,50 @@ int dma_alloc_from_coherent(struct device *dev, ssize_t size,
203 goto err; 184 goto err;
204 185
205 /* 186 /*
206 * Memory was found in the per-device area. 187 * Memory was found in the coherent area.
207 */ 188 */
208 *dma_handle = dma_get_device_base(dev, mem) + (pageno << PAGE_SHIFT); 189 *dma_handle = mem->device_base + (pageno << PAGE_SHIFT);
209 *ret = mem->virt_base + (pageno << PAGE_SHIFT); 190 ret = mem->virt_base + (pageno << PAGE_SHIFT);
210 dma_memory_map = (mem->flags & DMA_MEMORY_MAP); 191 dma_memory_map = (mem->flags & DMA_MEMORY_MAP);
211 spin_unlock_irqrestore(&mem->spinlock, flags); 192 spin_unlock_irqrestore(&mem->spinlock, flags);
212 if (dma_memory_map) 193 if (dma_memory_map)
213 memset(*ret, 0, size); 194 memset(ret, 0, size);
214 else 195 else
215 memset_io(*ret, 0, size); 196 memset_io(ret, 0, size);
216 197
217 return 1; 198 return ret;
218 199
219err: 200err:
220 spin_unlock_irqrestore(&mem->spinlock, flags); 201 spin_unlock_irqrestore(&mem->spinlock, flags);
202 return NULL;
203}
204
205/**
206 * dma_alloc_from_dev_coherent() - allocate memory from device coherent pool
207 * @dev: device from which we allocate memory
208 * @size: size of requested memory area
209 * @dma_handle: This will be filled with the correct dma handle
210 * @ret: This pointer will be filled with the virtual address
211 * to allocated area.
212 *
213 * This function should be only called from per-arch dma_alloc_coherent()
214 * to support allocation from per-device coherent memory pools.
215 *
216 * Returns 0 if dma_alloc_coherent should continue with allocating from
217 * generic memory areas, or !0 if dma_alloc_coherent should return @ret.
218 */
219int dma_alloc_from_dev_coherent(struct device *dev, ssize_t size,
220 dma_addr_t *dma_handle, void **ret)
221{
222 struct dma_coherent_mem *mem = dev_get_coherent_memory(dev);
223
224 if (!mem)
225 return 0;
226
227 *ret = __dma_alloc_from_coherent(mem, size, dma_handle);
228 if (*ret)
229 return 1;
230
221 /* 231 /*
222 * In the case where the allocation can not be satisfied from the 232 * In the case where the allocation can not be satisfied from the
223 * per-device area, try to fall back to generic memory if the 233 * per-device area, try to fall back to generic memory if the
@@ -225,25 +235,20 @@ err:
225 */ 235 */
226 return mem->flags & DMA_MEMORY_EXCLUSIVE; 236 return mem->flags & DMA_MEMORY_EXCLUSIVE;
227} 237}
228EXPORT_SYMBOL(dma_alloc_from_coherent); 238EXPORT_SYMBOL(dma_alloc_from_dev_coherent);
229 239
230/** 240void *dma_alloc_from_global_coherent(ssize_t size, dma_addr_t *dma_handle)
231 * dma_release_from_coherent() - try to free the memory allocated from per-device coherent memory pool
232 * @dev: device from which the memory was allocated
233 * @order: the order of pages allocated
234 * @vaddr: virtual address of allocated pages
235 *
236 * This checks whether the memory was allocated from the per-device
237 * coherent memory pool and if so, releases that memory.
238 *
239 * Returns 1 if we correctly released the memory, or 0 if
240 * dma_release_coherent() should proceed with releasing memory from
241 * generic pools.
242 */
243int dma_release_from_coherent(struct device *dev, int order, void *vaddr)
244{ 241{
245 struct dma_coherent_mem *mem = dev_get_coherent_memory(dev); 242 if (!dma_coherent_default_memory)
243 return NULL;
244
245 return __dma_alloc_from_coherent(dma_coherent_default_memory, size,
246 dma_handle);
247}
246 248
249static int __dma_release_from_coherent(struct dma_coherent_mem *mem,
250 int order, void *vaddr)
251{
247 if (mem && vaddr >= mem->virt_base && vaddr < 252 if (mem && vaddr >= mem->virt_base && vaddr <
248 (mem->virt_base + (mem->size << PAGE_SHIFT))) { 253 (mem->virt_base + (mem->size << PAGE_SHIFT))) {
249 int page = (vaddr - mem->virt_base) >> PAGE_SHIFT; 254 int page = (vaddr - mem->virt_base) >> PAGE_SHIFT;
@@ -256,28 +261,39 @@ int dma_release_from_coherent(struct device *dev, int order, void *vaddr)
256 } 261 }
257 return 0; 262 return 0;
258} 263}
259EXPORT_SYMBOL(dma_release_from_coherent);
260 264
261/** 265/**
262 * dma_mmap_from_coherent() - try to mmap the memory allocated from 266 * dma_release_from_dev_coherent() - free memory to device coherent memory pool
263 * per-device coherent memory pool to userspace
264 * @dev: device from which the memory was allocated 267 * @dev: device from which the memory was allocated
265 * @vma: vm_area for the userspace memory 268 * @order: the order of pages allocated
266 * @vaddr: cpu address returned by dma_alloc_from_coherent 269 * @vaddr: virtual address of allocated pages
267 * @size: size of the memory buffer allocated by dma_alloc_from_coherent
268 * @ret: result from remap_pfn_range()
269 * 270 *
270 * This checks whether the memory was allocated from the per-device 271 * This checks whether the memory was allocated from the per-device
271 * coherent memory pool and if so, maps that memory to the provided vma. 272 * coherent memory pool and if so, releases that memory.
272 * 273 *
273 * Returns 1 if we correctly mapped the memory, or 0 if the caller should 274 * Returns 1 if we correctly released the memory, or 0 if the caller should
274 * proceed with mapping memory from generic pools. 275 * proceed with releasing memory from generic pools.
275 */ 276 */
276int dma_mmap_from_coherent(struct device *dev, struct vm_area_struct *vma, 277int dma_release_from_dev_coherent(struct device *dev, int order, void *vaddr)
277 void *vaddr, size_t size, int *ret)
278{ 278{
279 struct dma_coherent_mem *mem = dev_get_coherent_memory(dev); 279 struct dma_coherent_mem *mem = dev_get_coherent_memory(dev);
280 280
281 return __dma_release_from_coherent(mem, order, vaddr);
282}
283EXPORT_SYMBOL(dma_release_from_dev_coherent);
284
285int dma_release_from_global_coherent(int order, void *vaddr)
286{
287 if (!dma_coherent_default_memory)
288 return 0;
289
290 return __dma_release_from_coherent(dma_coherent_default_memory, order,
291 vaddr);
292}
293
294static int __dma_mmap_from_coherent(struct dma_coherent_mem *mem,
295 struct vm_area_struct *vma, void *vaddr, size_t size, int *ret)
296{
281 if (mem && vaddr >= mem->virt_base && vaddr + size <= 297 if (mem && vaddr >= mem->virt_base && vaddr + size <=
282 (mem->virt_base + (mem->size << PAGE_SHIFT))) { 298 (mem->virt_base + (mem->size << PAGE_SHIFT))) {
283 unsigned long off = vma->vm_pgoff; 299 unsigned long off = vma->vm_pgoff;
@@ -296,7 +312,39 @@ int dma_mmap_from_coherent(struct device *dev, struct vm_area_struct *vma,
296 } 312 }
297 return 0; 313 return 0;
298} 314}
299EXPORT_SYMBOL(dma_mmap_from_coherent); 315
316/**
317 * dma_mmap_from_dev_coherent() - mmap memory from the device coherent pool
318 * @dev: device from which the memory was allocated
319 * @vma: vm_area for the userspace memory
320 * @vaddr: cpu address returned by dma_alloc_from_dev_coherent
321 * @size: size of the memory buffer allocated
322 * @ret: result from remap_pfn_range()
323 *
324 * This checks whether the memory was allocated from the per-device
325 * coherent memory pool and if so, maps that memory to the provided vma.
326 *
327 * Returns 1 if we correctly mapped the memory, or 0 if the caller should
328 * proceed with mapping memory from generic pools.
329 */
330int dma_mmap_from_dev_coherent(struct device *dev, struct vm_area_struct *vma,
331 void *vaddr, size_t size, int *ret)
332{
333 struct dma_coherent_mem *mem = dev_get_coherent_memory(dev);
334
335 return __dma_mmap_from_coherent(mem, vma, vaddr, size, ret);
336}
337EXPORT_SYMBOL(dma_mmap_from_dev_coherent);
338
339int dma_mmap_from_global_coherent(struct vm_area_struct *vma, void *vaddr,
340 size_t size, int *ret)
341{
342 if (!dma_coherent_default_memory)
343 return 0;
344
345 return __dma_mmap_from_coherent(dma_coherent_default_memory, vma,
346 vaddr, size, ret);
347}
300 348
301/* 349/*
302 * Support for reserved memory regions defined in device tree 350 * Support for reserved memory regions defined in device tree
diff --git a/drivers/base/dma-mapping.c b/drivers/base/dma-mapping.c
index 5096755d185e..b555ff9dd8fc 100644
--- a/drivers/base/dma-mapping.c
+++ b/drivers/base/dma-mapping.c
@@ -235,7 +235,7 @@ int dma_common_mmap(struct device *dev, struct vm_area_struct *vma,
235 235
236 vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); 236 vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
237 237
238 if (dma_mmap_from_coherent(dev, vma, cpu_addr, size, &ret)) 238 if (dma_mmap_from_dev_coherent(dev, vma, cpu_addr, size, &ret))
239 return ret; 239 return ret;
240 240
241 if (off < count && user_count <= (count - off)) { 241 if (off < count && user_count <= (count - off)) {
diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
index b9f907eedbf7..bfbe1e154128 100644
--- a/drivers/base/firmware_class.c
+++ b/drivers/base/firmware_class.c
@@ -30,7 +30,6 @@
30#include <linux/syscore_ops.h> 30#include <linux/syscore_ops.h>
31#include <linux/reboot.h> 31#include <linux/reboot.h>
32#include <linux/security.h> 32#include <linux/security.h>
33#include <linux/swait.h>
34 33
35#include <generated/utsrelease.h> 34#include <generated/utsrelease.h>
36 35
@@ -112,13 +111,13 @@ static inline long firmware_loading_timeout(void)
112 * state of the firmware loading. 111 * state of the firmware loading.
113 */ 112 */
114struct fw_state { 113struct fw_state {
115 struct swait_queue_head wq; 114 struct completion completion;
116 enum fw_status status; 115 enum fw_status status;
117}; 116};
118 117
119static void fw_state_init(struct fw_state *fw_st) 118static void fw_state_init(struct fw_state *fw_st)
120{ 119{
121 init_swait_queue_head(&fw_st->wq); 120 init_completion(&fw_st->completion);
122 fw_st->status = FW_STATUS_UNKNOWN; 121 fw_st->status = FW_STATUS_UNKNOWN;
123} 122}
124 123
@@ -131,9 +130,7 @@ static int __fw_state_wait_common(struct fw_state *fw_st, long timeout)
131{ 130{
132 long ret; 131 long ret;
133 132
134 ret = swait_event_interruptible_timeout(fw_st->wq, 133 ret = wait_for_completion_killable_timeout(&fw_st->completion, timeout);
135 __fw_state_is_done(READ_ONCE(fw_st->status)),
136 timeout);
137 if (ret != 0 && fw_st->status == FW_STATUS_ABORTED) 134 if (ret != 0 && fw_st->status == FW_STATUS_ABORTED)
138 return -ENOENT; 135 return -ENOENT;
139 if (!ret) 136 if (!ret)
@@ -148,35 +145,34 @@ static void __fw_state_set(struct fw_state *fw_st,
148 WRITE_ONCE(fw_st->status, status); 145 WRITE_ONCE(fw_st->status, status);
149 146
150 if (status == FW_STATUS_DONE || status == FW_STATUS_ABORTED) 147 if (status == FW_STATUS_DONE || status == FW_STATUS_ABORTED)
151 swake_up(&fw_st->wq); 148 complete_all(&fw_st->completion);
152} 149}
153 150
154#define fw_state_start(fw_st) \ 151#define fw_state_start(fw_st) \
155 __fw_state_set(fw_st, FW_STATUS_LOADING) 152 __fw_state_set(fw_st, FW_STATUS_LOADING)
156#define fw_state_done(fw_st) \ 153#define fw_state_done(fw_st) \
157 __fw_state_set(fw_st, FW_STATUS_DONE) 154 __fw_state_set(fw_st, FW_STATUS_DONE)
155#define fw_state_aborted(fw_st) \
156 __fw_state_set(fw_st, FW_STATUS_ABORTED)
158#define fw_state_wait(fw_st) \ 157#define fw_state_wait(fw_st) \
159 __fw_state_wait_common(fw_st, MAX_SCHEDULE_TIMEOUT) 158 __fw_state_wait_common(fw_st, MAX_SCHEDULE_TIMEOUT)
160 159
161#ifndef CONFIG_FW_LOADER_USER_HELPER
162
163#define fw_state_is_aborted(fw_st) false
164
165#else /* CONFIG_FW_LOADER_USER_HELPER */
166
167static int __fw_state_check(struct fw_state *fw_st, enum fw_status status) 160static int __fw_state_check(struct fw_state *fw_st, enum fw_status status)
168{ 161{
169 return fw_st->status == status; 162 return fw_st->status == status;
170} 163}
171 164
165#define fw_state_is_aborted(fw_st) \
166 __fw_state_check(fw_st, FW_STATUS_ABORTED)
167
168#ifdef CONFIG_FW_LOADER_USER_HELPER
169
172#define fw_state_aborted(fw_st) \ 170#define fw_state_aborted(fw_st) \
173 __fw_state_set(fw_st, FW_STATUS_ABORTED) 171 __fw_state_set(fw_st, FW_STATUS_ABORTED)
174#define fw_state_is_done(fw_st) \ 172#define fw_state_is_done(fw_st) \
175 __fw_state_check(fw_st, FW_STATUS_DONE) 173 __fw_state_check(fw_st, FW_STATUS_DONE)
176#define fw_state_is_loading(fw_st) \ 174#define fw_state_is_loading(fw_st) \
177 __fw_state_check(fw_st, FW_STATUS_LOADING) 175 __fw_state_check(fw_st, FW_STATUS_LOADING)
178#define fw_state_is_aborted(fw_st) \
179 __fw_state_check(fw_st, FW_STATUS_ABORTED)
180#define fw_state_wait_timeout(fw_st, timeout) \ 176#define fw_state_wait_timeout(fw_st, timeout) \
181 __fw_state_wait_common(fw_st, timeout) 177 __fw_state_wait_common(fw_st, timeout)
182 178
@@ -1200,6 +1196,28 @@ _request_firmware_prepare(struct firmware **firmware_p, const char *name,
1200 return 1; /* need to load */ 1196 return 1; /* need to load */
1201} 1197}
1202 1198
1199/*
1200 * Batched requests need only one wake, we need to do this step last due to the
1201 * fallback mechanism. The buf is protected with kref_get(), and it won't be
1202 * released until the last user calls release_firmware().
1203 *
1204 * Failed batched requests are possible as well, in such cases we just share
1205 * the struct firmware_buf and won't release it until all requests are woken
1206 * and have gone through this same path.
1207 */
1208static void fw_abort_batch_reqs(struct firmware *fw)
1209{
1210 struct firmware_buf *buf;
1211
1212 /* Loaded directly? */
1213 if (!fw || !fw->priv)
1214 return;
1215
1216 buf = fw->priv;
1217 if (!fw_state_is_aborted(&buf->fw_st))
1218 fw_state_aborted(&buf->fw_st);
1219}
1220
1203/* called from request_firmware() and request_firmware_work_func() */ 1221/* called from request_firmware() and request_firmware_work_func() */
1204static int 1222static int
1205_request_firmware(const struct firmware **firmware_p, const char *name, 1223_request_firmware(const struct firmware **firmware_p, const char *name,
@@ -1243,6 +1261,7 @@ _request_firmware(const struct firmware **firmware_p, const char *name,
1243 1261
1244 out: 1262 out:
1245 if (ret < 0) { 1263 if (ret < 0) {
1264 fw_abort_batch_reqs(fw);
1246 release_firmware(fw); 1265 release_firmware(fw);
1247 fw = NULL; 1266 fw = NULL;
1248 } 1267 }
diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c
index 3b8210ebb50e..60303aa28587 100644
--- a/drivers/base/power/domain.c
+++ b/drivers/base/power/domain.c
@@ -1222,8 +1222,6 @@ static struct generic_pm_domain_data *genpd_alloc_dev_data(struct device *dev,
1222 1222
1223 spin_unlock_irq(&dev->power.lock); 1223 spin_unlock_irq(&dev->power.lock);
1224 1224
1225 dev_pm_domain_set(dev, &genpd->domain);
1226
1227 return gpd_data; 1225 return gpd_data;
1228 1226
1229 err_free: 1227 err_free:
@@ -1237,8 +1235,6 @@ static struct generic_pm_domain_data *genpd_alloc_dev_data(struct device *dev,
1237static void genpd_free_dev_data(struct device *dev, 1235static void genpd_free_dev_data(struct device *dev,
1238 struct generic_pm_domain_data *gpd_data) 1236 struct generic_pm_domain_data *gpd_data)
1239{ 1237{
1240 dev_pm_domain_set(dev, NULL);
1241
1242 spin_lock_irq(&dev->power.lock); 1238 spin_lock_irq(&dev->power.lock);
1243 1239
1244 dev->power.subsys_data->domain_data = NULL; 1240 dev->power.subsys_data->domain_data = NULL;
@@ -1275,6 +1271,8 @@ static int genpd_add_device(struct generic_pm_domain *genpd, struct device *dev,
1275 if (ret) 1271 if (ret)
1276 goto out; 1272 goto out;
1277 1273
1274 dev_pm_domain_set(dev, &genpd->domain);
1275
1278 genpd->device_count++; 1276 genpd->device_count++;
1279 genpd->max_off_time_changed = true; 1277 genpd->max_off_time_changed = true;
1280 1278
@@ -1336,6 +1334,8 @@ static int genpd_remove_device(struct generic_pm_domain *genpd,
1336 if (genpd->detach_dev) 1334 if (genpd->detach_dev)
1337 genpd->detach_dev(genpd, dev); 1335 genpd->detach_dev(genpd, dev);
1338 1336
1337 dev_pm_domain_set(dev, NULL);
1338
1339 list_del_init(&pdd->list_node); 1339 list_del_init(&pdd->list_node);
1340 1340
1341 genpd_unlock(genpd); 1341 genpd_unlock(genpd);
diff --git a/drivers/block/nbd.c b/drivers/block/nbd.c
index dea7d85134ee..5bdf923294a5 100644
--- a/drivers/block/nbd.c
+++ b/drivers/block/nbd.c
@@ -626,7 +626,6 @@ static void recv_work(struct work_struct *work)
626 struct nbd_device *nbd = args->nbd; 626 struct nbd_device *nbd = args->nbd;
627 struct nbd_config *config = nbd->config; 627 struct nbd_config *config = nbd->config;
628 struct nbd_cmd *cmd; 628 struct nbd_cmd *cmd;
629 int ret = 0;
630 629
631 while (1) { 630 while (1) {
632 cmd = nbd_read_stat(nbd, args->index); 631 cmd = nbd_read_stat(nbd, args->index);
@@ -636,7 +635,6 @@ static void recv_work(struct work_struct *work)
636 mutex_lock(&nsock->tx_lock); 635 mutex_lock(&nsock->tx_lock);
637 nbd_mark_nsock_dead(nbd, nsock, 1); 636 nbd_mark_nsock_dead(nbd, nsock, 1);
638 mutex_unlock(&nsock->tx_lock); 637 mutex_unlock(&nsock->tx_lock);
639 ret = PTR_ERR(cmd);
640 break; 638 break;
641 } 639 }
642 640
@@ -910,7 +908,8 @@ static int nbd_reconnect_socket(struct nbd_device *nbd, unsigned long arg)
910 continue; 908 continue;
911 } 909 }
912 sk_set_memalloc(sock->sk); 910 sk_set_memalloc(sock->sk);
913 sock->sk->sk_sndtimeo = nbd->tag_set.timeout; 911 if (nbd->tag_set.timeout)
912 sock->sk->sk_sndtimeo = nbd->tag_set.timeout;
914 atomic_inc(&config->recv_threads); 913 atomic_inc(&config->recv_threads);
915 refcount_inc(&nbd->config_refs); 914 refcount_inc(&nbd->config_refs);
916 old = nsock->sock; 915 old = nsock->sock;
@@ -924,6 +923,8 @@ static int nbd_reconnect_socket(struct nbd_device *nbd, unsigned long arg)
924 mutex_unlock(&nsock->tx_lock); 923 mutex_unlock(&nsock->tx_lock);
925 sockfd_put(old); 924 sockfd_put(old);
926 925
926 clear_bit(NBD_DISCONNECTED, &config->runtime_flags);
927
927 /* We take the tx_mutex in an error path in the recv_work, so we 928 /* We take the tx_mutex in an error path in the recv_work, so we
928 * need to queue_work outside of the tx_mutex. 929 * need to queue_work outside of the tx_mutex.
929 */ 930 */
@@ -980,11 +981,15 @@ static void send_disconnects(struct nbd_device *nbd)
980 int i, ret; 981 int i, ret;
981 982
982 for (i = 0; i < config->num_connections; i++) { 983 for (i = 0; i < config->num_connections; i++) {
984 struct nbd_sock *nsock = config->socks[i];
985
983 iov_iter_kvec(&from, WRITE | ITER_KVEC, &iov, 1, sizeof(request)); 986 iov_iter_kvec(&from, WRITE | ITER_KVEC, &iov, 1, sizeof(request));
987 mutex_lock(&nsock->tx_lock);
984 ret = sock_xmit(nbd, i, 1, &from, 0, NULL); 988 ret = sock_xmit(nbd, i, 1, &from, 0, NULL);
985 if (ret <= 0) 989 if (ret <= 0)
986 dev_err(disk_to_dev(nbd->disk), 990 dev_err(disk_to_dev(nbd->disk),
987 "Send disconnect failed %d\n", ret); 991 "Send disconnect failed %d\n", ret);
992 mutex_unlock(&nsock->tx_lock);
988 } 993 }
989} 994}
990 995
@@ -993,9 +998,8 @@ static int nbd_disconnect(struct nbd_device *nbd)
993 struct nbd_config *config = nbd->config; 998 struct nbd_config *config = nbd->config;
994 999
995 dev_info(disk_to_dev(nbd->disk), "NBD_DISCONNECT\n"); 1000 dev_info(disk_to_dev(nbd->disk), "NBD_DISCONNECT\n");
996 if (!test_and_set_bit(NBD_DISCONNECT_REQUESTED, 1001 set_bit(NBD_DISCONNECT_REQUESTED, &config->runtime_flags);
997 &config->runtime_flags)) 1002 send_disconnects(nbd);
998 send_disconnects(nbd);
999 return 0; 1003 return 0;
1000} 1004}
1001 1005
@@ -1076,7 +1080,9 @@ static int nbd_start_device(struct nbd_device *nbd)
1076 return -ENOMEM; 1080 return -ENOMEM;
1077 } 1081 }
1078 sk_set_memalloc(config->socks[i]->sock->sk); 1082 sk_set_memalloc(config->socks[i]->sock->sk);
1079 config->socks[i]->sock->sk->sk_sndtimeo = nbd->tag_set.timeout; 1083 if (nbd->tag_set.timeout)
1084 config->socks[i]->sock->sk->sk_sndtimeo =
1085 nbd->tag_set.timeout;
1080 atomic_inc(&config->recv_threads); 1086 atomic_inc(&config->recv_threads);
1081 refcount_inc(&nbd->config_refs); 1087 refcount_inc(&nbd->config_refs);
1082 INIT_WORK(&args->work, recv_work); 1088 INIT_WORK(&args->work, recv_work);
diff --git a/drivers/block/sunvdc.c b/drivers/block/sunvdc.c
index 6b16ead1da58..ad9749463d4f 100644
--- a/drivers/block/sunvdc.c
+++ b/drivers/block/sunvdc.c
@@ -875,6 +875,56 @@ static void print_version(void)
875 printk(KERN_INFO "%s", version); 875 printk(KERN_INFO "%s", version);
876} 876}
877 877
878struct vdc_check_port_data {
879 int dev_no;
880 char *type;
881};
882
883static int vdc_device_probed(struct device *dev, void *arg)
884{
885 struct vio_dev *vdev = to_vio_dev(dev);
886 struct vdc_check_port_data *port_data;
887
888 port_data = (struct vdc_check_port_data *)arg;
889
890 if ((vdev->dev_no == port_data->dev_no) &&
891 (!(strcmp((char *)&vdev->type, port_data->type))) &&
892 dev_get_drvdata(dev)) {
893 /* This device has already been configured
894 * by vdc_port_probe()
895 */
896 return 1;
897 } else {
898 return 0;
899 }
900}
901
902/* Determine whether the VIO device is part of an mpgroup
903 * by locating all the virtual-device-port nodes associated
904 * with the parent virtual-device node for the VIO device
905 * and checking whether any of these nodes are vdc-ports
906 * which have already been configured.
907 *
908 * Returns true if this device is part of an mpgroup and has
909 * already been probed.
910 */
911static bool vdc_port_mpgroup_check(struct vio_dev *vdev)
912{
913 struct vdc_check_port_data port_data;
914 struct device *dev;
915
916 port_data.dev_no = vdev->dev_no;
917 port_data.type = (char *)&vdev->type;
918
919 dev = device_find_child(vdev->dev.parent, &port_data,
920 vdc_device_probed);
921
922 if (dev)
923 return true;
924
925 return false;
926}
927
878static int vdc_port_probe(struct vio_dev *vdev, const struct vio_device_id *id) 928static int vdc_port_probe(struct vio_dev *vdev, const struct vio_device_id *id)
879{ 929{
880 struct mdesc_handle *hp; 930 struct mdesc_handle *hp;
@@ -893,6 +943,14 @@ static int vdc_port_probe(struct vio_dev *vdev, const struct vio_device_id *id)
893 goto err_out_release_mdesc; 943 goto err_out_release_mdesc;
894 } 944 }
895 945
946 /* Check if this device is part of an mpgroup */
947 if (vdc_port_mpgroup_check(vdev)) {
948 printk(KERN_WARNING
949 "VIO: Ignoring extra vdisk port %s",
950 dev_name(&vdev->dev));
951 goto err_out_release_mdesc;
952 }
953
896 port = kzalloc(sizeof(*port), GFP_KERNEL); 954 port = kzalloc(sizeof(*port), GFP_KERNEL);
897 err = -ENOMEM; 955 err = -ENOMEM;
898 if (!port) { 956 if (!port) {
@@ -943,6 +1001,9 @@ static int vdc_port_probe(struct vio_dev *vdev, const struct vio_device_id *id)
943 if (err) 1001 if (err)
944 goto err_out_free_tx_ring; 1002 goto err_out_free_tx_ring;
945 1003
1004 /* Note that the device driver_data is used to determine
1005 * whether the port has been probed.
1006 */
946 dev_set_drvdata(&vdev->dev, port); 1007 dev_set_drvdata(&vdev->dev, port);
947 1008
948 mdesc_release(hp); 1009 mdesc_release(hp);
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
index 4e02aa5fdac0..1498b899a593 100644
--- a/drivers/block/virtio_blk.c
+++ b/drivers/block/virtio_blk.c
@@ -541,12 +541,9 @@ virtblk_cache_type_store(struct device *dev, struct device_attribute *attr,
541 int i; 541 int i;
542 542
543 BUG_ON(!virtio_has_feature(vblk->vdev, VIRTIO_BLK_F_CONFIG_WCE)); 543 BUG_ON(!virtio_has_feature(vblk->vdev, VIRTIO_BLK_F_CONFIG_WCE));
544 for (i = ARRAY_SIZE(virtblk_cache_types); --i >= 0; ) 544 i = sysfs_match_string(virtblk_cache_types, buf);
545 if (sysfs_streq(buf, virtblk_cache_types[i]))
546 break;
547
548 if (i < 0) 545 if (i < 0)
549 return -EINVAL; 546 return i;
550 547
551 virtio_cwrite8(vdev, offsetof(struct virtio_blk_config, wce), i); 548 virtio_cwrite8(vdev, offsetof(struct virtio_blk_config, wce), i);
552 virtblk_update_cache_mode(vdev); 549 virtblk_update_cache_mode(vdev);
diff --git a/drivers/block/xen-blkfront.c b/drivers/block/xen-blkfront.c
index c852ed3c01d5..2468c28d4771 100644
--- a/drivers/block/xen-blkfront.c
+++ b/drivers/block/xen-blkfront.c
@@ -111,7 +111,7 @@ struct blk_shadow {
111}; 111};
112 112
113struct blkif_req { 113struct blkif_req {
114 int error; 114 blk_status_t error;
115}; 115};
116 116
117static inline struct blkif_req *blkif_req(struct request *rq) 117static inline struct blkif_req *blkif_req(struct request *rq)
@@ -708,6 +708,7 @@ static int blkif_queue_rw_req(struct request *req, struct blkfront_ring_info *ri
708 * existing persistent grants, or if we have to get new grants, 708 * existing persistent grants, or if we have to get new grants,
709 * as there are not sufficiently many free. 709 * as there are not sufficiently many free.
710 */ 710 */
711 bool new_persistent_gnts = false;
711 struct scatterlist *sg; 712 struct scatterlist *sg;
712 int num_sg, max_grefs, num_grant; 713 int num_sg, max_grefs, num_grant;
713 714
@@ -719,19 +720,21 @@ static int blkif_queue_rw_req(struct request *req, struct blkfront_ring_info *ri
719 */ 720 */
720 max_grefs += INDIRECT_GREFS(max_grefs); 721 max_grefs += INDIRECT_GREFS(max_grefs);
721 722
722 /* 723 /* Check if we have enough persistent grants to allocate a requests */
723 * We have to reserve 'max_grefs' grants because persistent 724 if (rinfo->persistent_gnts_c < max_grefs) {
724 * grants are shared by all rings. 725 new_persistent_gnts = true;
725 */ 726
726 if (max_grefs > 0) 727 if (gnttab_alloc_grant_references(
727 if (gnttab_alloc_grant_references(max_grefs, &setup.gref_head) < 0) { 728 max_grefs - rinfo->persistent_gnts_c,
729 &setup.gref_head) < 0) {
728 gnttab_request_free_callback( 730 gnttab_request_free_callback(
729 &rinfo->callback, 731 &rinfo->callback,
730 blkif_restart_queue_callback, 732 blkif_restart_queue_callback,
731 rinfo, 733 rinfo,
732 max_grefs); 734 max_grefs - rinfo->persistent_gnts_c);
733 return 1; 735 return 1;
734 } 736 }
737 }
735 738
736 /* Fill out a communications ring structure. */ 739 /* Fill out a communications ring structure. */
737 id = blkif_ring_get_request(rinfo, req, &ring_req); 740 id = blkif_ring_get_request(rinfo, req, &ring_req);
@@ -832,7 +835,7 @@ static int blkif_queue_rw_req(struct request *req, struct blkfront_ring_info *ri
832 if (unlikely(require_extra_req)) 835 if (unlikely(require_extra_req))
833 rinfo->shadow[extra_id].req = *extra_ring_req; 836 rinfo->shadow[extra_id].req = *extra_ring_req;
834 837
835 if (max_grefs > 0) 838 if (new_persistent_gnts)
836 gnttab_free_grant_references(setup.gref_head); 839 gnttab_free_grant_references(setup.gref_head);
837 840
838 return 0; 841 return 0;
@@ -906,8 +909,8 @@ out_err:
906 return BLK_STS_IOERR; 909 return BLK_STS_IOERR;
907 910
908out_busy: 911out_busy:
909 spin_unlock_irqrestore(&rinfo->ring_lock, flags);
910 blk_mq_stop_hw_queue(hctx); 912 blk_mq_stop_hw_queue(hctx);
913 spin_unlock_irqrestore(&rinfo->ring_lock, flags);
911 return BLK_STS_RESOURCE; 914 return BLK_STS_RESOURCE;
912} 915}
913 916
@@ -1616,7 +1619,7 @@ static irqreturn_t blkif_interrupt(int irq, void *dev_id)
1616 if (unlikely(bret->status == BLKIF_RSP_EOPNOTSUPP)) { 1619 if (unlikely(bret->status == BLKIF_RSP_EOPNOTSUPP)) {
1617 printk(KERN_WARNING "blkfront: %s: %s op failed\n", 1620 printk(KERN_WARNING "blkfront: %s: %s op failed\n",
1618 info->gd->disk_name, op_name(bret->operation)); 1621 info->gd->disk_name, op_name(bret->operation));
1619 blkif_req(req)->error = -EOPNOTSUPP; 1622 blkif_req(req)->error = BLK_STS_NOTSUPP;
1620 } 1623 }
1621 if (unlikely(bret->status == BLKIF_RSP_ERROR && 1624 if (unlikely(bret->status == BLKIF_RSP_ERROR &&
1622 rinfo->shadow[id].req.u.rw.nr_segments == 0)) { 1625 rinfo->shadow[id].req.u.rw.nr_segments == 0)) {
@@ -2072,9 +2075,9 @@ static int blkfront_resume(struct xenbus_device *dev)
2072 /* 2075 /*
2073 * Get the bios in the request so we can re-queue them. 2076 * Get the bios in the request so we can re-queue them.
2074 */ 2077 */
2075 if (req_op(shadow[i].request) == REQ_OP_FLUSH || 2078 if (req_op(shadow[j].request) == REQ_OP_FLUSH ||
2076 req_op(shadow[i].request) == REQ_OP_DISCARD || 2079 req_op(shadow[j].request) == REQ_OP_DISCARD ||
2077 req_op(shadow[i].request) == REQ_OP_SECURE_ERASE || 2080 req_op(shadow[j].request) == REQ_OP_SECURE_ERASE ||
2078 shadow[j].request->cmd_flags & REQ_FUA) { 2081 shadow[j].request->cmd_flags & REQ_FUA) {
2079 /* 2082 /*
2080 * Flush operations don't contain bios, so 2083 * Flush operations don't contain bios, so
diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
index 856d5dc02451..3b1b6340ba13 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -308,7 +308,7 @@ static ssize_t comp_algorithm_store(struct device *dev,
308 struct device_attribute *attr, const char *buf, size_t len) 308 struct device_attribute *attr, const char *buf, size_t len)
309{ 309{
310 struct zram *zram = dev_to_zram(dev); 310 struct zram *zram = dev_to_zram(dev);
311 char compressor[CRYPTO_MAX_ALG_NAME]; 311 char compressor[ARRAY_SIZE(zram->compressor)];
312 size_t sz; 312 size_t sz;
313 313
314 strlcpy(compressor, buf, sizeof(compressor)); 314 strlcpy(compressor, buf, sizeof(compressor));
@@ -327,7 +327,7 @@ static ssize_t comp_algorithm_store(struct device *dev,
327 return -EBUSY; 327 return -EBUSY;
328 } 328 }
329 329
330 strlcpy(zram->compressor, compressor, sizeof(compressor)); 330 strcpy(zram->compressor, compressor);
331 up_write(&zram->init_lock); 331 up_write(&zram->init_lock);
332 return len; 332 return len;
333} 333}
diff --git a/drivers/bus/uniphier-system-bus.c b/drivers/bus/uniphier-system-bus.c
index 1e6e0269edcc..f76be6bd6eb3 100644
--- a/drivers/bus/uniphier-system-bus.c
+++ b/drivers/bus/uniphier-system-bus.c
@@ -256,10 +256,23 @@ static int uniphier_system_bus_probe(struct platform_device *pdev)
256 256
257 uniphier_system_bus_set_reg(priv); 257 uniphier_system_bus_set_reg(priv);
258 258
259 platform_set_drvdata(pdev, priv);
260
259 /* Now, the bus is configured. Populate platform_devices below it */ 261 /* Now, the bus is configured. Populate platform_devices below it */
260 return of_platform_default_populate(dev->of_node, NULL, dev); 262 return of_platform_default_populate(dev->of_node, NULL, dev);
261} 263}
262 264
265static int __maybe_unused uniphier_system_bus_resume(struct device *dev)
266{
267 uniphier_system_bus_set_reg(dev_get_drvdata(dev));
268
269 return 0;
270}
271
272static const struct dev_pm_ops uniphier_system_bus_pm_ops = {
273 SET_SYSTEM_SLEEP_PM_OPS(NULL, uniphier_system_bus_resume)
274};
275
263static const struct of_device_id uniphier_system_bus_match[] = { 276static const struct of_device_id uniphier_system_bus_match[] = {
264 { .compatible = "socionext,uniphier-system-bus" }, 277 { .compatible = "socionext,uniphier-system-bus" },
265 { /* sentinel */ } 278 { /* sentinel */ }
@@ -271,6 +284,7 @@ static struct platform_driver uniphier_system_bus_driver = {
271 .driver = { 284 .driver = {
272 .name = "uniphier-system-bus", 285 .name = "uniphier-system-bus",
273 .of_match_table = uniphier_system_bus_match, 286 .of_match_table = uniphier_system_bus_match,
287 .pm = &uniphier_system_bus_pm_ops,
274 }, 288 },
275}; 289};
276module_platform_driver(uniphier_system_bus_driver); 290module_platform_driver(uniphier_system_bus_driver);
diff --git a/drivers/char/random.c b/drivers/char/random.c
index afa3ce7d3e72..8ad92707e45f 100644
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
@@ -1492,7 +1492,7 @@ static void _warn_unseeded_randomness(const char *func_name, void *caller,
1492#ifndef CONFIG_WARN_ALL_UNSEEDED_RANDOM 1492#ifndef CONFIG_WARN_ALL_UNSEEDED_RANDOM
1493 print_once = true; 1493 print_once = true;
1494#endif 1494#endif
1495 pr_notice("random: %s called from %pF with crng_init=%d\n", 1495 pr_notice("random: %s called from %pS with crng_init=%d\n",
1496 func_name, caller, crng_init); 1496 func_name, caller, crng_init);
1497} 1497}
1498 1498
diff --git a/drivers/clk/clk-gemini.c b/drivers/clk/clk-gemini.c
index c391a49aaaff..b4cf2f699a21 100644
--- a/drivers/clk/clk-gemini.c
+++ b/drivers/clk/clk-gemini.c
@@ -237,6 +237,18 @@ static int gemini_reset(struct reset_controller_dev *rcdev,
237 BIT(GEMINI_RESET_CPU1) | BIT(id)); 237 BIT(GEMINI_RESET_CPU1) | BIT(id));
238} 238}
239 239
240static int gemini_reset_assert(struct reset_controller_dev *rcdev,
241 unsigned long id)
242{
243 return 0;
244}
245
246static int gemini_reset_deassert(struct reset_controller_dev *rcdev,
247 unsigned long id)
248{
249 return 0;
250}
251
240static int gemini_reset_status(struct reset_controller_dev *rcdev, 252static int gemini_reset_status(struct reset_controller_dev *rcdev,
241 unsigned long id) 253 unsigned long id)
242{ 254{
@@ -253,6 +265,8 @@ static int gemini_reset_status(struct reset_controller_dev *rcdev,
253 265
254static const struct reset_control_ops gemini_reset_ops = { 266static const struct reset_control_ops gemini_reset_ops = {
255 .reset = gemini_reset, 267 .reset = gemini_reset,
268 .assert = gemini_reset_assert,
269 .deassert = gemini_reset_deassert,
256 .status = gemini_reset_status, 270 .status = gemini_reset_status,
257}; 271};
258 272
diff --git a/drivers/clk/keystone/sci-clk.c b/drivers/clk/keystone/sci-clk.c
index 43b0f2f08df2..9cdf9d5050ac 100644
--- a/drivers/clk/keystone/sci-clk.c
+++ b/drivers/clk/keystone/sci-clk.c
@@ -22,6 +22,7 @@
22#include <linux/platform_device.h> 22#include <linux/platform_device.h>
23#include <linux/slab.h> 23#include <linux/slab.h>
24#include <linux/soc/ti/ti_sci_protocol.h> 24#include <linux/soc/ti/ti_sci_protocol.h>
25#include <linux/bsearch.h>
25 26
26#define SCI_CLK_SSC_ENABLE BIT(0) 27#define SCI_CLK_SSC_ENABLE BIT(0)
27#define SCI_CLK_ALLOW_FREQ_CHANGE BIT(1) 28#define SCI_CLK_ALLOW_FREQ_CHANGE BIT(1)
@@ -44,6 +45,7 @@ struct sci_clk_data {
44 * @dev: Device pointer for the clock provider 45 * @dev: Device pointer for the clock provider
45 * @clk_data: Clock data 46 * @clk_data: Clock data
46 * @clocks: Clocks array for this device 47 * @clocks: Clocks array for this device
48 * @num_clocks: Total number of clocks for this provider
47 */ 49 */
48struct sci_clk_provider { 50struct sci_clk_provider {
49 const struct ti_sci_handle *sci; 51 const struct ti_sci_handle *sci;
@@ -51,6 +53,7 @@ struct sci_clk_provider {
51 struct device *dev; 53 struct device *dev;
52 const struct sci_clk_data *clk_data; 54 const struct sci_clk_data *clk_data;
53 struct clk_hw **clocks; 55 struct clk_hw **clocks;
56 int num_clocks;
54}; 57};
55 58
56/** 59/**
@@ -58,7 +61,6 @@ struct sci_clk_provider {
58 * @hw: Hardware clock cookie for common clock framework 61 * @hw: Hardware clock cookie for common clock framework
59 * @dev_id: Device index 62 * @dev_id: Device index
60 * @clk_id: Clock index 63 * @clk_id: Clock index
61 * @node: Clocks list link
62 * @provider: Master clock provider 64 * @provider: Master clock provider
63 * @flags: Flags for the clock 65 * @flags: Flags for the clock
64 */ 66 */
@@ -66,7 +68,6 @@ struct sci_clk {
66 struct clk_hw hw; 68 struct clk_hw hw;
67 u16 dev_id; 69 u16 dev_id;
68 u8 clk_id; 70 u8 clk_id;
69 struct list_head node;
70 struct sci_clk_provider *provider; 71 struct sci_clk_provider *provider;
71 u8 flags; 72 u8 flags;
72}; 73};
@@ -367,6 +368,19 @@ err:
367 return &sci_clk->hw; 368 return &sci_clk->hw;
368} 369}
369 370
371static int _cmp_sci_clk(const void *a, const void *b)
372{
373 const struct sci_clk *ca = a;
374 const struct sci_clk *cb = *(struct sci_clk **)b;
375
376 if (ca->dev_id == cb->dev_id && ca->clk_id == cb->clk_id)
377 return 0;
378 if (ca->dev_id > cb->dev_id ||
379 (ca->dev_id == cb->dev_id && ca->clk_id > cb->clk_id))
380 return 1;
381 return -1;
382}
383
370/** 384/**
371 * sci_clk_get - Xlate function for getting clock handles 385 * sci_clk_get - Xlate function for getting clock handles
372 * @clkspec: device tree clock specifier 386 * @clkspec: device tree clock specifier
@@ -380,29 +394,22 @@ err:
380static struct clk_hw *sci_clk_get(struct of_phandle_args *clkspec, void *data) 394static struct clk_hw *sci_clk_get(struct of_phandle_args *clkspec, void *data)
381{ 395{
382 struct sci_clk_provider *provider = data; 396 struct sci_clk_provider *provider = data;
383 u16 dev_id; 397 struct sci_clk **clk;
384 u8 clk_id; 398 struct sci_clk key;
385 const struct sci_clk_data *clks = provider->clk_data;
386 struct clk_hw **clocks = provider->clocks;
387 399
388 if (clkspec->args_count != 2) 400 if (clkspec->args_count != 2)
389 return ERR_PTR(-EINVAL); 401 return ERR_PTR(-EINVAL);
390 402
391 dev_id = clkspec->args[0]; 403 key.dev_id = clkspec->args[0];
392 clk_id = clkspec->args[1]; 404 key.clk_id = clkspec->args[1];
393 405
394 while (clks->num_clks) { 406 clk = bsearch(&key, provider->clocks, provider->num_clocks,
395 if (clks->dev == dev_id) { 407 sizeof(clk), _cmp_sci_clk);
396 if (clk_id >= clks->num_clks)
397 return ERR_PTR(-EINVAL);
398
399 return clocks[clk_id];
400 }
401 408
402 clks++; 409 if (!clk)
403 } 410 return ERR_PTR(-ENODEV);
404 411
405 return ERR_PTR(-ENODEV); 412 return &(*clk)->hw;
406} 413}
407 414
408static int ti_sci_init_clocks(struct sci_clk_provider *p) 415static int ti_sci_init_clocks(struct sci_clk_provider *p)
@@ -410,18 +417,29 @@ static int ti_sci_init_clocks(struct sci_clk_provider *p)
410 const struct sci_clk_data *data = p->clk_data; 417 const struct sci_clk_data *data = p->clk_data;
411 struct clk_hw *hw; 418 struct clk_hw *hw;
412 int i; 419 int i;
420 int num_clks = 0;
413 421
414 while (data->num_clks) { 422 while (data->num_clks) {
415 p->clocks = devm_kcalloc(p->dev, data->num_clks, 423 num_clks += data->num_clks;
416 sizeof(struct sci_clk), 424 data++;
417 GFP_KERNEL); 425 }
418 if (!p->clocks)
419 return -ENOMEM;
420 426
427 p->num_clocks = num_clks;
428
429 p->clocks = devm_kcalloc(p->dev, num_clks, sizeof(struct sci_clk),
430 GFP_KERNEL);
431 if (!p->clocks)
432 return -ENOMEM;
433
434 num_clks = 0;
435
436 data = p->clk_data;
437
438 while (data->num_clks) {
421 for (i = 0; i < data->num_clks; i++) { 439 for (i = 0; i < data->num_clks; i++) {
422 hw = _sci_clk_build(p, data->dev, i); 440 hw = _sci_clk_build(p, data->dev, i);
423 if (!IS_ERR(hw)) { 441 if (!IS_ERR(hw)) {
424 p->clocks[i] = hw; 442 p->clocks[num_clks++] = hw;
425 continue; 443 continue;
426 } 444 }
427 445
diff --git a/drivers/clk/meson/clk-mpll.c b/drivers/clk/meson/clk-mpll.c
index 39eab69fe51a..44a5a535ca63 100644
--- a/drivers/clk/meson/clk-mpll.c
+++ b/drivers/clk/meson/clk-mpll.c
@@ -161,6 +161,13 @@ static int mpll_set_rate(struct clk_hw *hw,
161 reg = PARM_SET(p->width, p->shift, reg, 1); 161 reg = PARM_SET(p->width, p->shift, reg, 1);
162 writel(reg, mpll->base + p->reg_off); 162 writel(reg, mpll->base + p->reg_off);
163 163
164 p = &mpll->ssen;
165 if (p->width != 0) {
166 reg = readl(mpll->base + p->reg_off);
167 reg = PARM_SET(p->width, p->shift, reg, 1);
168 writel(reg, mpll->base + p->reg_off);
169 }
170
164 p = &mpll->n2; 171 p = &mpll->n2;
165 reg = readl(mpll->base + p->reg_off); 172 reg = readl(mpll->base + p->reg_off);
166 reg = PARM_SET(p->width, p->shift, reg, n2); 173 reg = PARM_SET(p->width, p->shift, reg, n2);
diff --git a/drivers/clk/meson/clkc.h b/drivers/clk/meson/clkc.h
index d6feafe8bd6c..1629da9b4141 100644
--- a/drivers/clk/meson/clkc.h
+++ b/drivers/clk/meson/clkc.h
@@ -118,6 +118,7 @@ struct meson_clk_mpll {
118 struct parm sdm_en; 118 struct parm sdm_en;
119 struct parm n2; 119 struct parm n2;
120 struct parm en; 120 struct parm en;
121 struct parm ssen;
121 spinlock_t *lock; 122 spinlock_t *lock;
122}; 123};
123 124
diff --git a/drivers/clk/meson/gxbb.c b/drivers/clk/meson/gxbb.c
index a897ea45327c..a7ea5f3da89d 100644
--- a/drivers/clk/meson/gxbb.c
+++ b/drivers/clk/meson/gxbb.c
@@ -528,6 +528,11 @@ static struct meson_clk_mpll gxbb_mpll0 = {
528 .shift = 14, 528 .shift = 14,
529 .width = 1, 529 .width = 1,
530 }, 530 },
531 .ssen = {
532 .reg_off = HHI_MPLL_CNTL,
533 .shift = 25,
534 .width = 1,
535 },
531 .lock = &clk_lock, 536 .lock = &clk_lock,
532 .hw.init = &(struct clk_init_data){ 537 .hw.init = &(struct clk_init_data){
533 .name = "mpll0", 538 .name = "mpll0",
diff --git a/drivers/clk/meson/meson8b.c b/drivers/clk/meson/meson8b.c
index bb3f1de876b1..6ec512ad2598 100644
--- a/drivers/clk/meson/meson8b.c
+++ b/drivers/clk/meson/meson8b.c
@@ -267,6 +267,11 @@ static struct meson_clk_mpll meson8b_mpll0 = {
267 .shift = 14, 267 .shift = 14,
268 .width = 1, 268 .width = 1,
269 }, 269 },
270 .ssen = {
271 .reg_off = HHI_MPLL_CNTL,
272 .shift = 25,
273 .width = 1,
274 },
270 .lock = &clk_lock, 275 .lock = &clk_lock,
271 .hw.init = &(struct clk_init_data){ 276 .hw.init = &(struct clk_init_data){
272 .name = "mpll0", 277 .name = "mpll0",
diff --git a/drivers/clk/samsung/clk-exynos5420.c b/drivers/clk/samsung/clk-exynos5420.c
index 0748a0b333c5..9a6476aa7d81 100644
--- a/drivers/clk/samsung/clk-exynos5420.c
+++ b/drivers/clk/samsung/clk-exynos5420.c
@@ -1283,16 +1283,16 @@ static const struct samsung_pll_rate_table exynos5420_pll2550x_24mhz_tbl[] __ini
1283static const struct samsung_pll_rate_table exynos5420_epll_24mhz_tbl[] = { 1283static const struct samsung_pll_rate_table exynos5420_epll_24mhz_tbl[] = {
1284 PLL_36XX_RATE(600000000U, 100, 2, 1, 0), 1284 PLL_36XX_RATE(600000000U, 100, 2, 1, 0),
1285 PLL_36XX_RATE(400000000U, 200, 3, 2, 0), 1285 PLL_36XX_RATE(400000000U, 200, 3, 2, 0),
1286 PLL_36XX_RATE(393216000U, 197, 3, 2, 25690), 1286 PLL_36XX_RATE(393216003U, 197, 3, 2, -25690),
1287 PLL_36XX_RATE(361267200U, 301, 5, 2, 3671), 1287 PLL_36XX_RATE(361267218U, 301, 5, 2, 3671),
1288 PLL_36XX_RATE(200000000U, 200, 3, 3, 0), 1288 PLL_36XX_RATE(200000000U, 200, 3, 3, 0),
1289 PLL_36XX_RATE(196608000U, 197, 3, 3, -25690), 1289 PLL_36XX_RATE(196608001U, 197, 3, 3, -25690),
1290 PLL_36XX_RATE(180633600U, 301, 5, 3, 3671), 1290 PLL_36XX_RATE(180633609U, 301, 5, 3, 3671),
1291 PLL_36XX_RATE(131072000U, 131, 3, 3, 4719), 1291 PLL_36XX_RATE(131072006U, 131, 3, 3, 4719),
1292 PLL_36XX_RATE(100000000U, 200, 3, 4, 0), 1292 PLL_36XX_RATE(100000000U, 200, 3, 4, 0),
1293 PLL_36XX_RATE(65536000U, 131, 3, 4, 4719), 1293 PLL_36XX_RATE( 65536003U, 131, 3, 4, 4719),
1294 PLL_36XX_RATE(49152000U, 197, 3, 5, 25690), 1294 PLL_36XX_RATE( 49152000U, 197, 3, 5, -25690),
1295 PLL_36XX_RATE(32768000U, 131, 3, 5, 4719), 1295 PLL_36XX_RATE( 32768001U, 131, 3, 5, 4719),
1296}; 1296};
1297 1297
1298static struct samsung_pll_clock exynos5x_plls[nr_plls] __initdata = { 1298static struct samsung_pll_clock exynos5x_plls[nr_plls] __initdata = {
diff --git a/drivers/clk/sunxi-ng/ccu-sun5i.c b/drivers/clk/sunxi-ng/ccu-sun5i.c
index 5372bf8be5e6..31d7ffda9aab 100644
--- a/drivers/clk/sunxi-ng/ccu-sun5i.c
+++ b/drivers/clk/sunxi-ng/ccu-sun5i.c
@@ -184,7 +184,7 @@ static struct ccu_mux cpu_clk = {
184 .hw.init = CLK_HW_INIT_PARENTS("cpu", 184 .hw.init = CLK_HW_INIT_PARENTS("cpu",
185 cpu_parents, 185 cpu_parents,
186 &ccu_mux_ops, 186 &ccu_mux_ops,
187 CLK_IS_CRITICAL), 187 CLK_SET_RATE_PARENT | CLK_IS_CRITICAL),
188 } 188 }
189}; 189};
190 190
diff --git a/drivers/clk/x86/clk-pmc-atom.c b/drivers/clk/x86/clk-pmc-atom.c
index f99abc1106f0..08ef69945ffb 100644
--- a/drivers/clk/x86/clk-pmc-atom.c
+++ b/drivers/clk/x86/clk-pmc-atom.c
@@ -186,6 +186,13 @@ static struct clk_plt *plt_clk_register(struct platform_device *pdev, int id,
186 pclk->reg = base + PMC_CLK_CTL_OFFSET + id * PMC_CLK_CTL_SIZE; 186 pclk->reg = base + PMC_CLK_CTL_OFFSET + id * PMC_CLK_CTL_SIZE;
187 spin_lock_init(&pclk->lock); 187 spin_lock_init(&pclk->lock);
188 188
189 /*
190 * If the clock was already enabled by the firmware mark it as critical
191 * to avoid it being gated by the clock framework if no driver owns it.
192 */
193 if (plt_clk_is_enabled(&pclk->hw))
194 init.flags |= CLK_IS_CRITICAL;
195
189 ret = devm_clk_hw_register(&pdev->dev, &pclk->hw); 196 ret = devm_clk_hw_register(&pdev->dev, &pclk->hw);
190 if (ret) { 197 if (ret) {
191 pclk = ERR_PTR(ret); 198 pclk = ERR_PTR(ret);
diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
index fcae5ca6ac92..54a67f8a28eb 100644
--- a/drivers/clocksource/Kconfig
+++ b/drivers/clocksource/Kconfig
@@ -262,7 +262,7 @@ config CLKSRC_LPC32XX
262 262
263config CLKSRC_PISTACHIO 263config CLKSRC_PISTACHIO
264 bool "Clocksource for Pistachio SoC" if COMPILE_TEST 264 bool "Clocksource for Pistachio SoC" if COMPILE_TEST
265 depends on HAS_IOMEM 265 depends on GENERIC_CLOCKEVENTS && HAS_IOMEM
266 select TIMER_OF 266 select TIMER_OF
267 help 267 help
268 Enables the clocksource for the Pistachio SoC. 268 Enables the clocksource for the Pistachio SoC.
diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c
index aae87c4c546e..72bbfccef113 100644
--- a/drivers/clocksource/arm_arch_timer.c
+++ b/drivers/clocksource/arm_arch_timer.c
@@ -1440,7 +1440,7 @@ static int __init arch_timer_mem_acpi_init(int platform_timer_count)
1440 * While unlikely, it's theoretically possible that none of the frames 1440 * While unlikely, it's theoretically possible that none of the frames
1441 * in a timer expose the combination of feature we want. 1441 * in a timer expose the combination of feature we want.
1442 */ 1442 */
1443 for (i = i; i < timer_count; i++) { 1443 for (i = 0; i < timer_count; i++) {
1444 timer = &timers[i]; 1444 timer = &timers[i];
1445 1445
1446 frame = arch_timer_mem_find_best_frame(timer); 1446 frame = arch_timer_mem_find_best_frame(timer);
diff --git a/drivers/clocksource/em_sti.c b/drivers/clocksource/em_sti.c
index bc48cbf6a795..269db74a0658 100644
--- a/drivers/clocksource/em_sti.c
+++ b/drivers/clocksource/em_sti.c
@@ -305,7 +305,7 @@ static int em_sti_probe(struct platform_device *pdev)
305 irq = platform_get_irq(pdev, 0); 305 irq = platform_get_irq(pdev, 0);
306 if (irq < 0) { 306 if (irq < 0) {
307 dev_err(&pdev->dev, "failed to get irq\n"); 307 dev_err(&pdev->dev, "failed to get irq\n");
308 return -EINVAL; 308 return irq;
309 } 309 }
310 310
311 /* map memory, let base point to the STI instance */ 311 /* map memory, let base point to the STI instance */
@@ -314,11 +314,12 @@ static int em_sti_probe(struct platform_device *pdev)
314 if (IS_ERR(p->base)) 314 if (IS_ERR(p->base))
315 return PTR_ERR(p->base); 315 return PTR_ERR(p->base);
316 316
317 if (devm_request_irq(&pdev->dev, irq, em_sti_interrupt, 317 ret = devm_request_irq(&pdev->dev, irq, em_sti_interrupt,
318 IRQF_TIMER | IRQF_IRQPOLL | IRQF_NOBALANCING, 318 IRQF_TIMER | IRQF_IRQPOLL | IRQF_NOBALANCING,
319 dev_name(&pdev->dev), p)) { 319 dev_name(&pdev->dev), p);
320 if (ret) {
320 dev_err(&pdev->dev, "failed to request low IRQ\n"); 321 dev_err(&pdev->dev, "failed to request low IRQ\n");
321 return -ENOENT; 322 return ret;
322 } 323 }
323 324
324 /* get hold of clock */ 325 /* get hold of clock */
diff --git a/drivers/clocksource/timer-of.c b/drivers/clocksource/timer-of.c
index f6e7491c873c..4d7aef9d9c15 100644
--- a/drivers/clocksource/timer-of.c
+++ b/drivers/clocksource/timer-of.c
@@ -41,8 +41,16 @@ static __init int timer_irq_init(struct device_node *np,
41 struct timer_of *to = container_of(of_irq, struct timer_of, of_irq); 41 struct timer_of *to = container_of(of_irq, struct timer_of, of_irq);
42 struct clock_event_device *clkevt = &to->clkevt; 42 struct clock_event_device *clkevt = &to->clkevt;
43 43
44 of_irq->irq = of_irq->name ? of_irq_get_byname(np, of_irq->name): 44 if (of_irq->name) {
45 irq_of_parse_and_map(np, of_irq->index); 45 of_irq->irq = ret = of_irq_get_byname(np, of_irq->name);
46 if (ret < 0) {
47 pr_err("Failed to get interrupt %s for %s\n",
48 of_irq->name, np->full_name);
49 return ret;
50 }
51 } else {
52 of_irq->irq = irq_of_parse_and_map(np, of_irq->index);
53 }
46 if (!of_irq->irq) { 54 if (!of_irq->irq) {
47 pr_err("Failed to map interrupt for %s\n", np->full_name); 55 pr_err("Failed to map interrupt for %s\n", np->full_name);
48 return -EINVAL; 56 return -EINVAL;
@@ -120,9 +128,9 @@ static __init int timer_base_init(struct device_node *np,
120 const char *name = of_base->name ? of_base->name : np->full_name; 128 const char *name = of_base->name ? of_base->name : np->full_name;
121 129
122 of_base->base = of_io_request_and_map(np, of_base->index, name); 130 of_base->base = of_io_request_and_map(np, of_base->index, name);
123 if (!of_base->base) { 131 if (IS_ERR(of_base->base)) {
124 pr_err("Failed to iomap (%s)\n", name); 132 pr_err("Failed to iomap (%s)\n", name);
125 return -ENXIO; 133 return PTR_ERR(of_base->base);
126 } 134 }
127 135
128 return 0; 136 return 0;
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index b7fb8b7c980d..65ee4fcace1f 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -225,6 +225,9 @@ struct global_params {
225 * @vid: Stores VID limits for this CPU 225 * @vid: Stores VID limits for this CPU
226 * @pid: Stores PID parameters for this CPU 226 * @pid: Stores PID parameters for this CPU
227 * @last_sample_time: Last Sample time 227 * @last_sample_time: Last Sample time
228 * @aperf_mperf_shift: Number of clock cycles after aperf, merf is incremented
229 * This shift is a multiplier to mperf delta to
230 * calculate CPU busy.
228 * @prev_aperf: Last APERF value read from APERF MSR 231 * @prev_aperf: Last APERF value read from APERF MSR
229 * @prev_mperf: Last MPERF value read from MPERF MSR 232 * @prev_mperf: Last MPERF value read from MPERF MSR
230 * @prev_tsc: Last timestamp counter (TSC) value 233 * @prev_tsc: Last timestamp counter (TSC) value
@@ -259,6 +262,7 @@ struct cpudata {
259 262
260 u64 last_update; 263 u64 last_update;
261 u64 last_sample_time; 264 u64 last_sample_time;
265 u64 aperf_mperf_shift;
262 u64 prev_aperf; 266 u64 prev_aperf;
263 u64 prev_mperf; 267 u64 prev_mperf;
264 u64 prev_tsc; 268 u64 prev_tsc;
@@ -321,6 +325,7 @@ struct pstate_funcs {
321 int (*get_min)(void); 325 int (*get_min)(void);
322 int (*get_turbo)(void); 326 int (*get_turbo)(void);
323 int (*get_scaling)(void); 327 int (*get_scaling)(void);
328 int (*get_aperf_mperf_shift)(void);
324 u64 (*get_val)(struct cpudata*, int pstate); 329 u64 (*get_val)(struct cpudata*, int pstate);
325 void (*get_vid)(struct cpudata *); 330 void (*get_vid)(struct cpudata *);
326 void (*update_util)(struct update_util_data *data, u64 time, 331 void (*update_util)(struct update_util_data *data, u64 time,
@@ -1486,6 +1491,11 @@ static u64 core_get_val(struct cpudata *cpudata, int pstate)
1486 return val; 1491 return val;
1487} 1492}
1488 1493
1494static int knl_get_aperf_mperf_shift(void)
1495{
1496 return 10;
1497}
1498
1489static int knl_get_turbo_pstate(void) 1499static int knl_get_turbo_pstate(void)
1490{ 1500{
1491 u64 value; 1501 u64 value;
@@ -1543,6 +1553,9 @@ static void intel_pstate_get_cpu_pstates(struct cpudata *cpu)
1543 cpu->pstate.max_freq = cpu->pstate.max_pstate * cpu->pstate.scaling; 1553 cpu->pstate.max_freq = cpu->pstate.max_pstate * cpu->pstate.scaling;
1544 cpu->pstate.turbo_freq = cpu->pstate.turbo_pstate * cpu->pstate.scaling; 1554 cpu->pstate.turbo_freq = cpu->pstate.turbo_pstate * cpu->pstate.scaling;
1545 1555
1556 if (pstate_funcs.get_aperf_mperf_shift)
1557 cpu->aperf_mperf_shift = pstate_funcs.get_aperf_mperf_shift();
1558
1546 if (pstate_funcs.get_vid) 1559 if (pstate_funcs.get_vid)
1547 pstate_funcs.get_vid(cpu); 1560 pstate_funcs.get_vid(cpu);
1548 1561
@@ -1600,8 +1613,7 @@ static inline bool intel_pstate_sample(struct cpudata *cpu, u64 time)
1600 1613
1601static inline int32_t get_avg_frequency(struct cpudata *cpu) 1614static inline int32_t get_avg_frequency(struct cpudata *cpu)
1602{ 1615{
1603 return mul_ext_fp(cpu->sample.core_avg_perf, 1616 return mul_ext_fp(cpu->sample.core_avg_perf, cpu_khz);
1604 cpu->pstate.max_pstate_physical * cpu->pstate.scaling);
1605} 1617}
1606 1618
1607static inline int32_t get_avg_pstate(struct cpudata *cpu) 1619static inline int32_t get_avg_pstate(struct cpudata *cpu)
@@ -1616,7 +1628,8 @@ static inline int32_t get_target_pstate_use_cpu_load(struct cpudata *cpu)
1616 int32_t busy_frac, boost; 1628 int32_t busy_frac, boost;
1617 int target, avg_pstate; 1629 int target, avg_pstate;
1618 1630
1619 busy_frac = div_fp(sample->mperf, sample->tsc); 1631 busy_frac = div_fp(sample->mperf << cpu->aperf_mperf_shift,
1632 sample->tsc);
1620 1633
1621 boost = cpu->iowait_boost; 1634 boost = cpu->iowait_boost;
1622 cpu->iowait_boost >>= 1; 1635 cpu->iowait_boost >>= 1;
@@ -1675,7 +1688,8 @@ static inline int32_t get_target_pstate_use_performance(struct cpudata *cpu)
1675 sample_ratio = div_fp(pid_params.sample_rate_ns, duration_ns); 1688 sample_ratio = div_fp(pid_params.sample_rate_ns, duration_ns);
1676 perf_scaled = mul_fp(perf_scaled, sample_ratio); 1689 perf_scaled = mul_fp(perf_scaled, sample_ratio);
1677 } else { 1690 } else {
1678 sample_ratio = div_fp(100 * cpu->sample.mperf, cpu->sample.tsc); 1691 sample_ratio = div_fp(100 * (cpu->sample.mperf << cpu->aperf_mperf_shift),
1692 cpu->sample.tsc);
1679 if (sample_ratio < int_tofp(1)) 1693 if (sample_ratio < int_tofp(1))
1680 perf_scaled = 0; 1694 perf_scaled = 0;
1681 } 1695 }
@@ -1807,6 +1821,7 @@ static const struct pstate_funcs knl_funcs = {
1807 .get_max_physical = core_get_max_pstate_physical, 1821 .get_max_physical = core_get_max_pstate_physical,
1808 .get_min = core_get_min_pstate, 1822 .get_min = core_get_min_pstate,
1809 .get_turbo = knl_get_turbo_pstate, 1823 .get_turbo = knl_get_turbo_pstate,
1824 .get_aperf_mperf_shift = knl_get_aperf_mperf_shift,
1810 .get_scaling = core_get_scaling, 1825 .get_scaling = core_get_scaling,
1811 .get_val = core_get_val, 1826 .get_val = core_get_val,
1812 .update_util = intel_pstate_update_util_pid, 1827 .update_util = intel_pstate_update_util_pid,
@@ -1906,13 +1921,6 @@ static int intel_pstate_init_cpu(unsigned int cpunum)
1906 return 0; 1921 return 0;
1907} 1922}
1908 1923
1909static unsigned int intel_pstate_get(unsigned int cpu_num)
1910{
1911 struct cpudata *cpu = all_cpu_data[cpu_num];
1912
1913 return cpu ? get_avg_frequency(cpu) : 0;
1914}
1915
1916static void intel_pstate_set_update_util_hook(unsigned int cpu_num) 1924static void intel_pstate_set_update_util_hook(unsigned int cpu_num)
1917{ 1925{
1918 struct cpudata *cpu = all_cpu_data[cpu_num]; 1926 struct cpudata *cpu = all_cpu_data[cpu_num];
@@ -2153,7 +2161,6 @@ static struct cpufreq_driver intel_pstate = {
2153 .setpolicy = intel_pstate_set_policy, 2161 .setpolicy = intel_pstate_set_policy,
2154 .suspend = intel_pstate_hwp_save_state, 2162 .suspend = intel_pstate_hwp_save_state,
2155 .resume = intel_pstate_resume, 2163 .resume = intel_pstate_resume,
2156 .get = intel_pstate_get,
2157 .init = intel_pstate_cpu_init, 2164 .init = intel_pstate_cpu_init,
2158 .exit = intel_pstate_cpu_exit, 2165 .exit = intel_pstate_cpu_exit,
2159 .stop_cpu = intel_pstate_stop_cpu, 2166 .stop_cpu = intel_pstate_stop_cpu,
@@ -2403,6 +2410,7 @@ static void __init copy_cpu_funcs(struct pstate_funcs *funcs)
2403 pstate_funcs.get_val = funcs->get_val; 2410 pstate_funcs.get_val = funcs->get_val;
2404 pstate_funcs.get_vid = funcs->get_vid; 2411 pstate_funcs.get_vid = funcs->get_vid;
2405 pstate_funcs.update_util = funcs->update_util; 2412 pstate_funcs.update_util = funcs->update_util;
2413 pstate_funcs.get_aperf_mperf_shift = funcs->get_aperf_mperf_shift;
2406 2414
2407 intel_pstate_use_acpi_profile(); 2415 intel_pstate_use_acpi_profile();
2408} 2416}
diff --git a/drivers/cpuidle/cpuidle-powernv.c b/drivers/cpuidle/cpuidle-powernv.c
index 37b0698b7193..42896a67aeae 100644
--- a/drivers/cpuidle/cpuidle-powernv.c
+++ b/drivers/cpuidle/cpuidle-powernv.c
@@ -235,6 +235,7 @@ static inline int validate_dt_prop_sizes(const char *prop1, int prop1_len,
235 return -1; 235 return -1;
236} 236}
237 237
238extern u32 pnv_get_supported_cpuidle_states(void);
238static int powernv_add_idle_states(void) 239static int powernv_add_idle_states(void)
239{ 240{
240 struct device_node *power_mgt; 241 struct device_node *power_mgt;
@@ -248,6 +249,8 @@ static int powernv_add_idle_states(void)
248 const char *names[CPUIDLE_STATE_MAX]; 249 const char *names[CPUIDLE_STATE_MAX];
249 u32 has_stop_states = 0; 250 u32 has_stop_states = 0;
250 int i, rc; 251 int i, rc;
252 u32 supported_flags = pnv_get_supported_cpuidle_states();
253
251 254
252 /* Currently we have snooze statically defined */ 255 /* Currently we have snooze statically defined */
253 256
@@ -362,6 +365,13 @@ static int powernv_add_idle_states(void)
362 for (i = 0; i < dt_idle_states; i++) { 365 for (i = 0; i < dt_idle_states; i++) {
363 unsigned int exit_latency, target_residency; 366 unsigned int exit_latency, target_residency;
364 bool stops_timebase = false; 367 bool stops_timebase = false;
368
369 /*
370 * Skip the platform idle state whose flag isn't in
371 * the supported_cpuidle_states flag mask.
372 */
373 if ((flags[i] & supported_flags) != flags[i])
374 continue;
365 /* 375 /*
366 * If an idle state has exit latency beyond 376 * If an idle state has exit latency beyond
367 * POWERNV_THRESHOLD_LATENCY_NS then don't use it 377 * POWERNV_THRESHOLD_LATENCY_NS then don't use it
diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig
index 193204dfbf3a..4b75084fabad 100644
--- a/drivers/crypto/Kconfig
+++ b/drivers/crypto/Kconfig
@@ -655,7 +655,7 @@ source "drivers/crypto/virtio/Kconfig"
655config CRYPTO_DEV_BCM_SPU 655config CRYPTO_DEV_BCM_SPU
656 tristate "Broadcom symmetric crypto/hash acceleration support" 656 tristate "Broadcom symmetric crypto/hash acceleration support"
657 depends on ARCH_BCM_IPROC 657 depends on ARCH_BCM_IPROC
658 depends on BCM_PDC_MBOX 658 depends on MAILBOX
659 default m 659 default m
660 select CRYPTO_DES 660 select CRYPTO_DES
661 select CRYPTO_MD5 661 select CRYPTO_MD5
diff --git a/drivers/crypto/bcm/spu2.c b/drivers/crypto/bcm/spu2.c
index ef04c9748317..bf7ac621c591 100644
--- a/drivers/crypto/bcm/spu2.c
+++ b/drivers/crypto/bcm/spu2.c
@@ -302,6 +302,7 @@ spu2_hash_xlate(enum hash_alg hash_alg, enum hash_mode hash_mode,
302 break; 302 break;
303 case HASH_ALG_SHA3_512: 303 case HASH_ALG_SHA3_512:
304 *spu2_type = SPU2_HASH_TYPE_SHA3_512; 304 *spu2_type = SPU2_HASH_TYPE_SHA3_512;
305 break;
305 case HASH_ALG_LAST: 306 case HASH_ALG_LAST:
306 default: 307 default:
307 err = -EINVAL; 308 err = -EINVAL;
diff --git a/drivers/crypto/cavium/nitrox/nitrox_main.c b/drivers/crypto/cavium/nitrox/nitrox_main.c
index ae44a464cd2d..9ccefb9b7232 100644
--- a/drivers/crypto/cavium/nitrox/nitrox_main.c
+++ b/drivers/crypto/cavium/nitrox/nitrox_main.c
@@ -18,8 +18,9 @@
18#define SE_GROUP 0 18#define SE_GROUP 0
19 19
20#define DRIVER_VERSION "1.0" 20#define DRIVER_VERSION "1.0"
21#define FW_DIR "cavium/"
21/* SE microcode */ 22/* SE microcode */
22#define SE_FW "cnn55xx_se.fw" 23#define SE_FW FW_DIR "cnn55xx_se.fw"
23 24
24static const char nitrox_driver_name[] = "CNN55XX"; 25static const char nitrox_driver_name[] = "CNN55XX";
25 26
diff --git a/drivers/crypto/inside-secure/safexcel.c b/drivers/crypto/inside-secure/safexcel.c
index e7f87ac12685..1fabd4aee81b 100644
--- a/drivers/crypto/inside-secure/safexcel.c
+++ b/drivers/crypto/inside-secure/safexcel.c
@@ -773,7 +773,6 @@ static int safexcel_probe(struct platform_device *pdev)
773 struct device *dev = &pdev->dev; 773 struct device *dev = &pdev->dev;
774 struct resource *res; 774 struct resource *res;
775 struct safexcel_crypto_priv *priv; 775 struct safexcel_crypto_priv *priv;
776 u64 dma_mask;
777 int i, ret; 776 int i, ret;
778 777
779 priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); 778 priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL);
@@ -802,9 +801,7 @@ static int safexcel_probe(struct platform_device *pdev)
802 return -EPROBE_DEFER; 801 return -EPROBE_DEFER;
803 } 802 }
804 803
805 if (of_property_read_u64(dev->of_node, "dma-mask", &dma_mask)) 804 ret = dma_set_mask_and_coherent(dev, DMA_BIT_MASK(64));
806 dma_mask = DMA_BIT_MASK(64);
807 ret = dma_set_mask_and_coherent(dev, dma_mask);
808 if (ret) 805 if (ret)
809 goto err_clk; 806 goto err_clk;
810 807
diff --git a/drivers/crypto/inside-secure/safexcel_hash.c b/drivers/crypto/inside-secure/safexcel_hash.c
index 8527a5899a2f..3f819399cd95 100644
--- a/drivers/crypto/inside-secure/safexcel_hash.c
+++ b/drivers/crypto/inside-secure/safexcel_hash.c
@@ -883,10 +883,7 @@ static int safexcel_hmac_sha1_setkey(struct crypto_ahash *tfm, const u8 *key,
883 if (ret) 883 if (ret)
884 return ret; 884 return ret;
885 885
886 memcpy(ctx->ipad, &istate.state, SHA1_DIGEST_SIZE); 886 for (i = 0; i < SHA1_DIGEST_SIZE / sizeof(u32); i++) {
887 memcpy(ctx->opad, &ostate.state, SHA1_DIGEST_SIZE);
888
889 for (i = 0; i < ARRAY_SIZE(istate.state); i++) {
890 if (ctx->ipad[i] != le32_to_cpu(istate.state[i]) || 887 if (ctx->ipad[i] != le32_to_cpu(istate.state[i]) ||
891 ctx->opad[i] != le32_to_cpu(ostate.state[i])) { 888 ctx->opad[i] != le32_to_cpu(ostate.state[i])) {
892 ctx->base.needs_inv = true; 889 ctx->base.needs_inv = true;
@@ -894,6 +891,9 @@ static int safexcel_hmac_sha1_setkey(struct crypto_ahash *tfm, const u8 *key,
894 } 891 }
895 } 892 }
896 893
894 memcpy(ctx->ipad, &istate.state, SHA1_DIGEST_SIZE);
895 memcpy(ctx->opad, &ostate.state, SHA1_DIGEST_SIZE);
896
897 return 0; 897 return 0;
898} 898}
899 899
diff --git a/drivers/crypto/ixp4xx_crypto.c b/drivers/crypto/ixp4xx_crypto.c
index 427cbe012729..dadc4a808df5 100644
--- a/drivers/crypto/ixp4xx_crypto.c
+++ b/drivers/crypto/ixp4xx_crypto.c
@@ -1073,7 +1073,7 @@ static int aead_perform(struct aead_request *req, int encrypt,
1073 req_ctx->hmac_virt = dma_pool_alloc(buffer_pool, flags, 1073 req_ctx->hmac_virt = dma_pool_alloc(buffer_pool, flags,
1074 &crypt->icv_rev_aes); 1074 &crypt->icv_rev_aes);
1075 if (unlikely(!req_ctx->hmac_virt)) 1075 if (unlikely(!req_ctx->hmac_virt))
1076 goto free_buf_src; 1076 goto free_buf_dst;
1077 if (!encrypt) { 1077 if (!encrypt) {
1078 scatterwalk_map_and_copy(req_ctx->hmac_virt, 1078 scatterwalk_map_and_copy(req_ctx->hmac_virt,
1079 req->src, cryptlen, authsize, 0); 1079 req->src, cryptlen, authsize, 0);
@@ -1088,10 +1088,10 @@ static int aead_perform(struct aead_request *req, int encrypt,
1088 BUG_ON(qmgr_stat_overflow(SEND_QID)); 1088 BUG_ON(qmgr_stat_overflow(SEND_QID));
1089 return -EINPROGRESS; 1089 return -EINPROGRESS;
1090 1090
1091free_buf_src:
1092 free_buf_chain(dev, req_ctx->src, crypt->src_buf);
1093free_buf_dst: 1091free_buf_dst:
1094 free_buf_chain(dev, req_ctx->dst, crypt->dst_buf); 1092 free_buf_chain(dev, req_ctx->dst, crypt->dst_buf);
1093free_buf_src:
1094 free_buf_chain(dev, req_ctx->src, crypt->src_buf);
1095 crypt->ctl_flags = CTL_FLAG_UNUSED; 1095 crypt->ctl_flags = CTL_FLAG_UNUSED;
1096 return -ENOMEM; 1096 return -ENOMEM;
1097} 1097}
diff --git a/drivers/dax/device-dax.h b/drivers/dax/device-dax.h
index fdcd9769ffde..688b051750bd 100644
--- a/drivers/dax/device-dax.h
+++ b/drivers/dax/device-dax.h
@@ -21,5 +21,5 @@ struct dax_region *alloc_dax_region(struct device *parent,
21 int region_id, struct resource *res, unsigned int align, 21 int region_id, struct resource *res, unsigned int align,
22 void *addr, unsigned long flags); 22 void *addr, unsigned long flags);
23struct dev_dax *devm_create_dev_dax(struct dax_region *dax_region, 23struct dev_dax *devm_create_dev_dax(struct dax_region *dax_region,
24 struct resource *res, int count); 24 int id, struct resource *res, int count);
25#endif /* __DEVICE_DAX_H__ */ 25#endif /* __DEVICE_DAX_H__ */
diff --git a/drivers/dax/device.c b/drivers/dax/device.c
index 12943d19bfc4..e9f3b3e4bbf4 100644
--- a/drivers/dax/device.c
+++ b/drivers/dax/device.c
@@ -529,7 +529,8 @@ static void dev_dax_release(struct device *dev)
529 struct dax_region *dax_region = dev_dax->region; 529 struct dax_region *dax_region = dev_dax->region;
530 struct dax_device *dax_dev = dev_dax->dax_dev; 530 struct dax_device *dax_dev = dev_dax->dax_dev;
531 531
532 ida_simple_remove(&dax_region->ida, dev_dax->id); 532 if (dev_dax->id >= 0)
533 ida_simple_remove(&dax_region->ida, dev_dax->id);
533 dax_region_put(dax_region); 534 dax_region_put(dax_region);
534 put_dax(dax_dev); 535 put_dax(dax_dev);
535 kfree(dev_dax); 536 kfree(dev_dax);
@@ -559,7 +560,7 @@ static void unregister_dev_dax(void *dev)
559} 560}
560 561
561struct dev_dax *devm_create_dev_dax(struct dax_region *dax_region, 562struct dev_dax *devm_create_dev_dax(struct dax_region *dax_region,
562 struct resource *res, int count) 563 int id, struct resource *res, int count)
563{ 564{
564 struct device *parent = dax_region->dev; 565 struct device *parent = dax_region->dev;
565 struct dax_device *dax_dev; 566 struct dax_device *dax_dev;
@@ -567,7 +568,10 @@ struct dev_dax *devm_create_dev_dax(struct dax_region *dax_region,
567 struct inode *inode; 568 struct inode *inode;
568 struct device *dev; 569 struct device *dev;
569 struct cdev *cdev; 570 struct cdev *cdev;
570 int rc = 0, i; 571 int rc, i;
572
573 if (!count)
574 return ERR_PTR(-EINVAL);
571 575
572 dev_dax = kzalloc(sizeof(*dev_dax) + sizeof(*res) * count, GFP_KERNEL); 576 dev_dax = kzalloc(sizeof(*dev_dax) + sizeof(*res) * count, GFP_KERNEL);
573 if (!dev_dax) 577 if (!dev_dax)
@@ -587,10 +591,16 @@ struct dev_dax *devm_create_dev_dax(struct dax_region *dax_region,
587 if (i < count) 591 if (i < count)
588 goto err_id; 592 goto err_id;
589 593
590 dev_dax->id = ida_simple_get(&dax_region->ida, 0, 0, GFP_KERNEL); 594 if (id < 0) {
591 if (dev_dax->id < 0) { 595 id = ida_simple_get(&dax_region->ida, 0, 0, GFP_KERNEL);
592 rc = dev_dax->id; 596 dev_dax->id = id;
593 goto err_id; 597 if (id < 0) {
598 rc = id;
599 goto err_id;
600 }
601 } else {
602 /* region provider owns @id lifetime */
603 dev_dax->id = -1;
594 } 604 }
595 605
596 /* 606 /*
@@ -598,8 +608,10 @@ struct dev_dax *devm_create_dev_dax(struct dax_region *dax_region,
598 * device outside of mmap of the resulting character device. 608 * device outside of mmap of the resulting character device.
599 */ 609 */
600 dax_dev = alloc_dax(dev_dax, NULL, NULL); 610 dax_dev = alloc_dax(dev_dax, NULL, NULL);
601 if (!dax_dev) 611 if (!dax_dev) {
612 rc = -ENOMEM;
602 goto err_dax; 613 goto err_dax;
614 }
603 615
604 /* from here on we're committed to teardown via dax_dev_release() */ 616 /* from here on we're committed to teardown via dax_dev_release() */
605 dev = &dev_dax->dev; 617 dev = &dev_dax->dev;
@@ -620,7 +632,7 @@ struct dev_dax *devm_create_dev_dax(struct dax_region *dax_region,
620 dev->parent = parent; 632 dev->parent = parent;
621 dev->groups = dax_attribute_groups; 633 dev->groups = dax_attribute_groups;
622 dev->release = dev_dax_release; 634 dev->release = dev_dax_release;
623 dev_set_name(dev, "dax%d.%d", dax_region->id, dev_dax->id); 635 dev_set_name(dev, "dax%d.%d", dax_region->id, id);
624 636
625 rc = cdev_device_add(cdev, dev); 637 rc = cdev_device_add(cdev, dev);
626 if (rc) { 638 if (rc) {
@@ -636,7 +648,8 @@ struct dev_dax *devm_create_dev_dax(struct dax_region *dax_region,
636 return dev_dax; 648 return dev_dax;
637 649
638 err_dax: 650 err_dax:
639 ida_simple_remove(&dax_region->ida, dev_dax->id); 651 if (dev_dax->id >= 0)
652 ida_simple_remove(&dax_region->ida, dev_dax->id);
640 err_id: 653 err_id:
641 kfree(dev_dax); 654 kfree(dev_dax);
642 655
diff --git a/drivers/dax/pmem.c b/drivers/dax/pmem.c
index 9f2a0b4fd801..8d8c852ba8f2 100644
--- a/drivers/dax/pmem.c
+++ b/drivers/dax/pmem.c
@@ -58,13 +58,12 @@ static void dax_pmem_percpu_kill(void *data)
58 58
59static int dax_pmem_probe(struct device *dev) 59static int dax_pmem_probe(struct device *dev)
60{ 60{
61 int rc;
62 void *addr; 61 void *addr;
63 struct resource res; 62 struct resource res;
63 int rc, id, region_id;
64 struct nd_pfn_sb *pfn_sb; 64 struct nd_pfn_sb *pfn_sb;
65 struct dev_dax *dev_dax; 65 struct dev_dax *dev_dax;
66 struct dax_pmem *dax_pmem; 66 struct dax_pmem *dax_pmem;
67 struct nd_region *nd_region;
68 struct nd_namespace_io *nsio; 67 struct nd_namespace_io *nsio;
69 struct dax_region *dax_region; 68 struct dax_region *dax_region;
70 struct nd_namespace_common *ndns; 69 struct nd_namespace_common *ndns;
@@ -123,14 +122,17 @@ static int dax_pmem_probe(struct device *dev)
123 /* adjust the dax_region resource to the start of data */ 122 /* adjust the dax_region resource to the start of data */
124 res.start += le64_to_cpu(pfn_sb->dataoff); 123 res.start += le64_to_cpu(pfn_sb->dataoff);
125 124
126 nd_region = to_nd_region(dev->parent); 125 rc = sscanf(dev_name(&ndns->dev), "namespace%d.%d", &region_id, &id);
127 dax_region = alloc_dax_region(dev, nd_region->id, &res, 126 if (rc != 2)
127 return -EINVAL;
128
129 dax_region = alloc_dax_region(dev, region_id, &res,
128 le32_to_cpu(pfn_sb->align), addr, PFN_DEV|PFN_MAP); 130 le32_to_cpu(pfn_sb->align), addr, PFN_DEV|PFN_MAP);
129 if (!dax_region) 131 if (!dax_region)
130 return -ENOMEM; 132 return -ENOMEM;
131 133
132 /* TODO: support for subdividing a dax region... */ 134 /* TODO: support for subdividing a dax region... */
133 dev_dax = devm_create_dev_dax(dax_region, &res, 1); 135 dev_dax = devm_create_dev_dax(dax_region, id, &res, 1);
134 136
135 /* child dev_dax instances now own the lifetime of the dax_region */ 137 /* child dev_dax instances now own the lifetime of the dax_region */
136 dax_region_put(dax_region); 138 dax_region_put(dax_region);
diff --git a/drivers/dax/super.c b/drivers/dax/super.c
index ce9e563e6e1d..938eb4868f7f 100644
--- a/drivers/dax/super.c
+++ b/drivers/dax/super.c
@@ -278,6 +278,12 @@ void dax_write_cache(struct dax_device *dax_dev, bool wc)
278} 278}
279EXPORT_SYMBOL_GPL(dax_write_cache); 279EXPORT_SYMBOL_GPL(dax_write_cache);
280 280
281bool dax_write_cache_enabled(struct dax_device *dax_dev)
282{
283 return test_bit(DAXDEV_WRITE_CACHE, &dax_dev->flags);
284}
285EXPORT_SYMBOL_GPL(dax_write_cache_enabled);
286
281bool dax_alive(struct dax_device *dax_dev) 287bool dax_alive(struct dax_device *dax_dev)
282{ 288{
283 lockdep_assert_held(&dax_srcu); 289 lockdep_assert_held(&dax_srcu);
diff --git a/drivers/dma-buf/dma-fence.c b/drivers/dma-buf/dma-fence.c
index 57da14c15987..56e0a0e1b600 100644
--- a/drivers/dma-buf/dma-fence.c
+++ b/drivers/dma-buf/dma-fence.c
@@ -75,11 +75,6 @@ int dma_fence_signal_locked(struct dma_fence *fence)
75 if (WARN_ON(!fence)) 75 if (WARN_ON(!fence))
76 return -EINVAL; 76 return -EINVAL;
77 77
78 if (!ktime_to_ns(fence->timestamp)) {
79 fence->timestamp = ktime_get();
80 smp_mb__before_atomic();
81 }
82
83 if (test_and_set_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)) { 78 if (test_and_set_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)) {
84 ret = -EINVAL; 79 ret = -EINVAL;
85 80
@@ -87,8 +82,11 @@ int dma_fence_signal_locked(struct dma_fence *fence)
87 * we might have raced with the unlocked dma_fence_signal, 82 * we might have raced with the unlocked dma_fence_signal,
88 * still run through all callbacks 83 * still run through all callbacks
89 */ 84 */
90 } else 85 } else {
86 fence->timestamp = ktime_get();
87 set_bit(DMA_FENCE_FLAG_TIMESTAMP_BIT, &fence->flags);
91 trace_dma_fence_signaled(fence); 88 trace_dma_fence_signaled(fence);
89 }
92 90
93 list_for_each_entry_safe(cur, tmp, &fence->cb_list, node) { 91 list_for_each_entry_safe(cur, tmp, &fence->cb_list, node) {
94 list_del_init(&cur->node); 92 list_del_init(&cur->node);
@@ -115,14 +113,11 @@ int dma_fence_signal(struct dma_fence *fence)
115 if (!fence) 113 if (!fence)
116 return -EINVAL; 114 return -EINVAL;
117 115
118 if (!ktime_to_ns(fence->timestamp)) {
119 fence->timestamp = ktime_get();
120 smp_mb__before_atomic();
121 }
122
123 if (test_and_set_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags)) 116 if (test_and_set_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags))
124 return -EINVAL; 117 return -EINVAL;
125 118
119 fence->timestamp = ktime_get();
120 set_bit(DMA_FENCE_FLAG_TIMESTAMP_BIT, &fence->flags);
126 trace_dma_fence_signaled(fence); 121 trace_dma_fence_signaled(fence);
127 122
128 if (test_bit(DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT, &fence->flags)) { 123 if (test_bit(DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT, &fence->flags)) {
diff --git a/drivers/dma-buf/sync_debug.c b/drivers/dma-buf/sync_debug.c
index 82a6e7f6d37f..59a3b2f8ee91 100644
--- a/drivers/dma-buf/sync_debug.c
+++ b/drivers/dma-buf/sync_debug.c
@@ -84,7 +84,7 @@ static void sync_print_fence(struct seq_file *s,
84 show ? "_" : "", 84 show ? "_" : "",
85 sync_status_str(status)); 85 sync_status_str(status));
86 86
87 if (status) { 87 if (test_bit(DMA_FENCE_FLAG_TIMESTAMP_BIT, &fence->flags)) {
88 struct timespec64 ts64 = 88 struct timespec64 ts64 =
89 ktime_to_timespec64(fence->timestamp); 89 ktime_to_timespec64(fence->timestamp);
90 90
diff --git a/drivers/dma-buf/sync_file.c b/drivers/dma-buf/sync_file.c
index 545e2c5c4815..66fb40d0ebdb 100644
--- a/drivers/dma-buf/sync_file.c
+++ b/drivers/dma-buf/sync_file.c
@@ -304,7 +304,7 @@ static int sync_file_release(struct inode *inode, struct file *file)
304{ 304{
305 struct sync_file *sync_file = file->private_data; 305 struct sync_file *sync_file = file->private_data;
306 306
307 if (test_bit(POLL_ENABLED, &sync_file->fence->flags)) 307 if (test_bit(POLL_ENABLED, &sync_file->flags))
308 dma_fence_remove_callback(sync_file->fence, &sync_file->cb); 308 dma_fence_remove_callback(sync_file->fence, &sync_file->cb);
309 dma_fence_put(sync_file->fence); 309 dma_fence_put(sync_file->fence);
310 kfree(sync_file); 310 kfree(sync_file);
@@ -318,7 +318,8 @@ static unsigned int sync_file_poll(struct file *file, poll_table *wait)
318 318
319 poll_wait(file, &sync_file->wq, wait); 319 poll_wait(file, &sync_file->wq, wait);
320 320
321 if (!test_and_set_bit(POLL_ENABLED, &sync_file->fence->flags)) { 321 if (list_empty(&sync_file->cb.node) &&
322 !test_and_set_bit(POLL_ENABLED, &sync_file->flags)) {
322 if (dma_fence_add_callback(sync_file->fence, &sync_file->cb, 323 if (dma_fence_add_callback(sync_file->fence, &sync_file->cb,
323 fence_check_cb_func) < 0) 324 fence_check_cb_func) < 0)
324 wake_up_all(&sync_file->wq); 325 wake_up_all(&sync_file->wq);
@@ -391,7 +392,13 @@ static void sync_fill_fence_info(struct dma_fence *fence,
391 sizeof(info->driver_name)); 392 sizeof(info->driver_name));
392 393
393 info->status = dma_fence_get_status(fence); 394 info->status = dma_fence_get_status(fence);
394 info->timestamp_ns = ktime_to_ns(fence->timestamp); 395 while (test_bit(DMA_FENCE_FLAG_SIGNALED_BIT, &fence->flags) &&
396 !test_bit(DMA_FENCE_FLAG_TIMESTAMP_BIT, &fence->flags))
397 cpu_relax();
398 info->timestamp_ns =
399 test_bit(DMA_FENCE_FLAG_TIMESTAMP_BIT, &fence->flags) ?
400 ktime_to_ns(fence->timestamp) :
401 ktime_set(0, 0);
395} 402}
396 403
397static long sync_file_ioctl_fence_info(struct sync_file *sync_file, 404static long sync_file_ioctl_fence_info(struct sync_file *sync_file,
diff --git a/drivers/fsi/fsi-core.c b/drivers/fsi/fsi-core.c
index a485864cb512..06432d84cbf8 100644
--- a/drivers/fsi/fsi-core.c
+++ b/drivers/fsi/fsi-core.c
@@ -532,7 +532,7 @@ static inline uint32_t fsi_smode_sid(int x)
532 return (x & FSI_SMODE_SID_MASK) << FSI_SMODE_SID_SHIFT; 532 return (x & FSI_SMODE_SID_MASK) << FSI_SMODE_SID_SHIFT;
533} 533}
534 534
535static const uint32_t fsi_slave_smode(int id) 535static uint32_t fsi_slave_smode(int id)
536{ 536{
537 return FSI_SMODE_WSC | FSI_SMODE_ECRC 537 return FSI_SMODE_WSC | FSI_SMODE_ECRC
538 | fsi_smode_sid(id) 538 | fsi_smode_sid(id)
@@ -883,17 +883,16 @@ struct bus_type fsi_bus_type = {
883}; 883};
884EXPORT_SYMBOL_GPL(fsi_bus_type); 884EXPORT_SYMBOL_GPL(fsi_bus_type);
885 885
886static int fsi_init(void) 886static int __init fsi_init(void)
887{ 887{
888 return bus_register(&fsi_bus_type); 888 return bus_register(&fsi_bus_type);
889} 889}
890postcore_initcall(fsi_init);
890 891
891static void fsi_exit(void) 892static void fsi_exit(void)
892{ 893{
893 bus_unregister(&fsi_bus_type); 894 bus_unregister(&fsi_bus_type);
894} 895}
895
896module_init(fsi_init);
897module_exit(fsi_exit); 896module_exit(fsi_exit);
898module_param(discard_errors, int, 0664); 897module_param(discard_errors, int, 0664);
899MODULE_LICENSE("GPL"); 898MODULE_LICENSE("GPL");
diff --git a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
index f235eae04c16..461d6fc3688b 100644
--- a/drivers/gpio/Kconfig
+++ b/drivers/gpio/Kconfig
@@ -504,6 +504,7 @@ config GPIO_XGENE_SB
504 depends on ARCH_XGENE && OF_GPIO 504 depends on ARCH_XGENE && OF_GPIO
505 select GPIO_GENERIC 505 select GPIO_GENERIC
506 select GPIOLIB_IRQCHIP 506 select GPIOLIB_IRQCHIP
507 select IRQ_DOMAIN_HIERARCHY
507 help 508 help
508 This driver supports the GPIO block within the APM X-Gene 509 This driver supports the GPIO block within the APM X-Gene
509 Standby Domain. Say yes here to enable the GPIO functionality. 510 Standby Domain. Say yes here to enable the GPIO functionality.
diff --git a/drivers/gpio/gpio-exar.c b/drivers/gpio/gpio-exar.c
index fb8d304cfa17..0ecd2369c2ca 100644
--- a/drivers/gpio/gpio-exar.c
+++ b/drivers/gpio/gpio-exar.c
@@ -132,7 +132,7 @@ static int gpio_exar_probe(struct platform_device *pdev)
132 if (!p) 132 if (!p)
133 return -ENOMEM; 133 return -ENOMEM;
134 134
135 ret = device_property_read_u32(&pdev->dev, "linux,first-pin", 135 ret = device_property_read_u32(&pdev->dev, "exar,first-pin",
136 &first_pin); 136 &first_pin);
137 if (ret) 137 if (ret)
138 return ret; 138 return ret;
diff --git a/drivers/gpio/gpio-lp87565.c b/drivers/gpio/gpio-lp87565.c
index 6313c50bb91b..a121c8f10610 100644
--- a/drivers/gpio/gpio-lp87565.c
+++ b/drivers/gpio/gpio-lp87565.c
@@ -26,6 +26,27 @@ struct lp87565_gpio {
26 struct regmap *map; 26 struct regmap *map;
27}; 27};
28 28
29static int lp87565_gpio_get(struct gpio_chip *chip, unsigned int offset)
30{
31 struct lp87565_gpio *gpio = gpiochip_get_data(chip);
32 int ret, val;
33
34 ret = regmap_read(gpio->map, LP87565_REG_GPIO_IN, &val);
35 if (ret < 0)
36 return ret;
37
38 return !!(val & BIT(offset));
39}
40
41static void lp87565_gpio_set(struct gpio_chip *chip, unsigned int offset,
42 int value)
43{
44 struct lp87565_gpio *gpio = gpiochip_get_data(chip);
45
46 regmap_update_bits(gpio->map, LP87565_REG_GPIO_OUT,
47 BIT(offset), value ? BIT(offset) : 0);
48}
49
29static int lp87565_gpio_get_direction(struct gpio_chip *chip, 50static int lp87565_gpio_get_direction(struct gpio_chip *chip,
30 unsigned int offset) 51 unsigned int offset)
31{ 52{
@@ -54,30 +75,11 @@ static int lp87565_gpio_direction_output(struct gpio_chip *chip,
54{ 75{
55 struct lp87565_gpio *gpio = gpiochip_get_data(chip); 76 struct lp87565_gpio *gpio = gpiochip_get_data(chip);
56 77
78 lp87565_gpio_set(chip, offset, value);
79
57 return regmap_update_bits(gpio->map, 80 return regmap_update_bits(gpio->map,
58 LP87565_REG_GPIO_CONFIG, 81 LP87565_REG_GPIO_CONFIG,
59 BIT(offset), !value ? BIT(offset) : 0); 82 BIT(offset), BIT(offset));
60}
61
62static int lp87565_gpio_get(struct gpio_chip *chip, unsigned int offset)
63{
64 struct lp87565_gpio *gpio = gpiochip_get_data(chip);
65 int ret, val;
66
67 ret = regmap_read(gpio->map, LP87565_REG_GPIO_IN, &val);
68 if (ret < 0)
69 return ret;
70
71 return !!(val & BIT(offset));
72}
73
74static void lp87565_gpio_set(struct gpio_chip *chip, unsigned int offset,
75 int value)
76{
77 struct lp87565_gpio *gpio = gpiochip_get_data(chip);
78
79 regmap_update_bits(gpio->map, LP87565_REG_GPIO_OUT,
80 BIT(offset), value ? BIT(offset) : 0);
81} 83}
82 84
83static int lp87565_gpio_request(struct gpio_chip *gc, unsigned int offset) 85static int lp87565_gpio_request(struct gpio_chip *gc, unsigned int offset)
diff --git a/drivers/gpio/gpio-mvebu.c b/drivers/gpio/gpio-mvebu.c
index e338c3743562..45c65f805fd6 100644
--- a/drivers/gpio/gpio-mvebu.c
+++ b/drivers/gpio/gpio-mvebu.c
@@ -557,7 +557,7 @@ static void mvebu_gpio_irq_handler(struct irq_desc *desc)
557 edge_cause = mvebu_gpio_read_edge_cause(mvchip); 557 edge_cause = mvebu_gpio_read_edge_cause(mvchip);
558 edge_mask = mvebu_gpio_read_edge_mask(mvchip); 558 edge_mask = mvebu_gpio_read_edge_mask(mvchip);
559 559
560 cause = (data_in ^ level_mask) | (edge_cause & edge_mask); 560 cause = (data_in & level_mask) | (edge_cause & edge_mask);
561 561
562 for (i = 0; i < mvchip->chip.ngpio; i++) { 562 for (i = 0; i < mvchip->chip.ngpio; i++) {
563 int irq; 563 int irq;
diff --git a/drivers/gpio/gpio-mxc.c b/drivers/gpio/gpio-mxc.c
index 3abea3f0b307..92692251ade1 100644
--- a/drivers/gpio/gpio-mxc.c
+++ b/drivers/gpio/gpio-mxc.c
@@ -424,6 +424,9 @@ static int mxc_gpio_probe(struct platform_device *pdev)
424 return PTR_ERR(port->base); 424 return PTR_ERR(port->base);
425 425
426 port->irq_high = platform_get_irq(pdev, 1); 426 port->irq_high = platform_get_irq(pdev, 1);
427 if (port->irq_high < 0)
428 port->irq_high = 0;
429
427 port->irq = platform_get_irq(pdev, 0); 430 port->irq = platform_get_irq(pdev, 0);
428 if (port->irq < 0) 431 if (port->irq < 0)
429 return port->irq; 432 return port->irq;
diff --git a/drivers/gpio/gpio-tegra.c b/drivers/gpio/gpio-tegra.c
index 88529d3c06c9..506c6a67c5fc 100644
--- a/drivers/gpio/gpio-tegra.c
+++ b/drivers/gpio/gpio-tegra.c
@@ -360,7 +360,7 @@ static void tegra_gpio_irq_handler(struct irq_desc *desc)
360{ 360{
361 int port; 361 int port;
362 int pin; 362 int pin;
363 int unmasked = 0; 363 bool unmasked = false;
364 int gpio; 364 int gpio;
365 u32 lvl; 365 u32 lvl;
366 unsigned long sta; 366 unsigned long sta;
@@ -384,8 +384,8 @@ static void tegra_gpio_irq_handler(struct irq_desc *desc)
384 * before executing the handler so that we don't 384 * before executing the handler so that we don't
385 * miss edges 385 * miss edges
386 */ 386 */
387 if (lvl & (0x100 << pin)) { 387 if (!unmasked && lvl & (0x100 << pin)) {
388 unmasked = 1; 388 unmasked = true;
389 chained_irq_exit(chip, desc); 389 chained_irq_exit(chip, desc);
390 } 390 }
391 391
diff --git a/drivers/gpio/gpiolib-sysfs.c b/drivers/gpio/gpiolib-sysfs.c
index 16fe9742597b..fc80add5fedb 100644
--- a/drivers/gpio/gpiolib-sysfs.c
+++ b/drivers/gpio/gpiolib-sysfs.c
@@ -2,6 +2,7 @@
2#include <linux/mutex.h> 2#include <linux/mutex.h>
3#include <linux/device.h> 3#include <linux/device.h>
4#include <linux/sysfs.h> 4#include <linux/sysfs.h>
5#include <linux/gpio.h>
5#include <linux/gpio/consumer.h> 6#include <linux/gpio/consumer.h>
6#include <linux/gpio/driver.h> 7#include <linux/gpio/driver.h>
7#include <linux/interrupt.h> 8#include <linux/interrupt.h>
@@ -432,6 +433,11 @@ static struct attribute *gpiochip_attrs[] = {
432}; 433};
433ATTRIBUTE_GROUPS(gpiochip); 434ATTRIBUTE_GROUPS(gpiochip);
434 435
436static struct gpio_desc *gpio_to_valid_desc(int gpio)
437{
438 return gpio_is_valid(gpio) ? gpio_to_desc(gpio) : NULL;
439}
440
435/* 441/*
436 * /sys/class/gpio/export ... write-only 442 * /sys/class/gpio/export ... write-only
437 * integer N ... number of GPIO to export (full access) 443 * integer N ... number of GPIO to export (full access)
@@ -450,7 +456,7 @@ static ssize_t export_store(struct class *class,
450 if (status < 0) 456 if (status < 0)
451 goto done; 457 goto done;
452 458
453 desc = gpio_to_desc(gpio); 459 desc = gpio_to_valid_desc(gpio);
454 /* reject invalid GPIOs */ 460 /* reject invalid GPIOs */
455 if (!desc) { 461 if (!desc) {
456 pr_warn("%s: invalid GPIO %ld\n", __func__, gpio); 462 pr_warn("%s: invalid GPIO %ld\n", __func__, gpio);
@@ -493,7 +499,7 @@ static ssize_t unexport_store(struct class *class,
493 if (status < 0) 499 if (status < 0)
494 goto done; 500 goto done;
495 501
496 desc = gpio_to_desc(gpio); 502 desc = gpio_to_valid_desc(gpio);
497 /* reject bogus commands (gpio_unexport ignores them) */ 503 /* reject bogus commands (gpio_unexport ignores them) */
498 if (!desc) { 504 if (!desc) {
499 pr_warn("%s: invalid GPIO %ld\n", __func__, gpio); 505 pr_warn("%s: invalid GPIO %ld\n", __func__, gpio);
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index 9568708a550b..cd003b74512f 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -704,24 +704,23 @@ static irqreturn_t lineevent_irq_thread(int irq, void *p)
704{ 704{
705 struct lineevent_state *le = p; 705 struct lineevent_state *le = p;
706 struct gpioevent_data ge; 706 struct gpioevent_data ge;
707 int ret; 707 int ret, level;
708 708
709 ge.timestamp = ktime_get_real_ns(); 709 ge.timestamp = ktime_get_real_ns();
710 level = gpiod_get_value_cansleep(le->desc);
710 711
711 if (le->eflags & GPIOEVENT_REQUEST_RISING_EDGE 712 if (le->eflags & GPIOEVENT_REQUEST_RISING_EDGE
712 && le->eflags & GPIOEVENT_REQUEST_FALLING_EDGE) { 713 && le->eflags & GPIOEVENT_REQUEST_FALLING_EDGE) {
713 int level = gpiod_get_value_cansleep(le->desc);
714
715 if (level) 714 if (level)
716 /* Emit low-to-high event */ 715 /* Emit low-to-high event */
717 ge.id = GPIOEVENT_EVENT_RISING_EDGE; 716 ge.id = GPIOEVENT_EVENT_RISING_EDGE;
718 else 717 else
719 /* Emit high-to-low event */ 718 /* Emit high-to-low event */
720 ge.id = GPIOEVENT_EVENT_FALLING_EDGE; 719 ge.id = GPIOEVENT_EVENT_FALLING_EDGE;
721 } else if (le->eflags & GPIOEVENT_REQUEST_RISING_EDGE) { 720 } else if (le->eflags & GPIOEVENT_REQUEST_RISING_EDGE && level) {
722 /* Emit low-to-high event */ 721 /* Emit low-to-high event */
723 ge.id = GPIOEVENT_EVENT_RISING_EDGE; 722 ge.id = GPIOEVENT_EVENT_RISING_EDGE;
724 } else if (le->eflags & GPIOEVENT_REQUEST_FALLING_EDGE) { 723 } else if (le->eflags & GPIOEVENT_REQUEST_FALLING_EDGE && !level) {
725 /* Emit high-to-low event */ 724 /* Emit high-to-low event */
726 ge.id = GPIOEVENT_EVENT_FALLING_EDGE; 725 ge.id = GPIOEVENT_EVENT_FALLING_EDGE;
727 } else { 726 } else {
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
index 5f8ada1d872b..37971d9402e3 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.c
@@ -101,7 +101,6 @@ void amdgpu_amdkfd_device_init(struct amdgpu_device *adev)
101 if (adev->kfd) { 101 if (adev->kfd) {
102 struct kgd2kfd_shared_resources gpu_resources = { 102 struct kgd2kfd_shared_resources gpu_resources = {
103 .compute_vmid_bitmap = 0xFF00, 103 .compute_vmid_bitmap = 0xFF00,
104 .num_mec = adev->gfx.mec.num_mec,
105 .num_pipe_per_mec = adev->gfx.mec.num_pipe_per_mec, 104 .num_pipe_per_mec = adev->gfx.mec.num_pipe_per_mec,
106 .num_queue_per_pipe = adev->gfx.mec.num_queue_per_pipe 105 .num_queue_per_pipe = adev->gfx.mec.num_queue_per_pipe
107 }; 106 };
@@ -122,7 +121,7 @@ void amdgpu_amdkfd_device_init(struct amdgpu_device *adev)
122 121
123 /* According to linux/bitmap.h we shouldn't use bitmap_clear if 122 /* According to linux/bitmap.h we shouldn't use bitmap_clear if
124 * nbits is not compile time constant */ 123 * nbits is not compile time constant */
125 last_valid_bit = adev->gfx.mec.num_mec 124 last_valid_bit = 1 /* only first MEC can have compute queues */
126 * adev->gfx.mec.num_pipe_per_mec 125 * adev->gfx.mec.num_pipe_per_mec
127 * adev->gfx.mec.num_queue_per_pipe; 126 * adev->gfx.mec.num_queue_per_pipe;
128 for (i = last_valid_bit; i < KGD_MAX_QUEUES; ++i) 127 for (i = last_valid_bit; i < KGD_MAX_QUEUES; ++i)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
index f621ee115c98..5e771bc11b00 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_bo_list.c
@@ -198,12 +198,16 @@ amdgpu_bo_list_get(struct amdgpu_fpriv *fpriv, int id)
198 result = idr_find(&fpriv->bo_list_handles, id); 198 result = idr_find(&fpriv->bo_list_handles, id);
199 199
200 if (result) { 200 if (result) {
201 if (kref_get_unless_zero(&result->refcount)) 201 if (kref_get_unless_zero(&result->refcount)) {
202 rcu_read_unlock();
202 mutex_lock(&result->lock); 203 mutex_lock(&result->lock);
203 else 204 } else {
205 rcu_read_unlock();
204 result = NULL; 206 result = NULL;
207 }
208 } else {
209 rcu_read_unlock();
205 } 210 }
206 rcu_read_unlock();
207 211
208 return result; 212 return result;
209} 213}
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c
index 38f739fb727b..6558a3ed57a7 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_mn.c
@@ -359,7 +359,7 @@ void amdgpu_mn_unregister(struct amdgpu_bo *bo)
359 head = bo->mn_list.next; 359 head = bo->mn_list.next;
360 360
361 bo->mn = NULL; 361 bo->mn = NULL;
362 list_del(&bo->mn_list); 362 list_del_init(&bo->mn_list);
363 363
364 if (list_empty(head)) { 364 if (list_empty(head)) {
365 struct amdgpu_mn_node *node; 365 struct amdgpu_mn_node *node;
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c
index a6899180b265..c586f44312f9 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_sync.c
@@ -244,6 +244,12 @@ struct dma_fence *amdgpu_sync_peek_fence(struct amdgpu_sync *sync,
244 struct dma_fence *f = e->fence; 244 struct dma_fence *f = e->fence;
245 struct amd_sched_fence *s_fence = to_amd_sched_fence(f); 245 struct amd_sched_fence *s_fence = to_amd_sched_fence(f);
246 246
247 if (dma_fence_is_signaled(f)) {
248 hash_del(&e->node);
249 dma_fence_put(f);
250 kmem_cache_free(amdgpu_sync_slab, e);
251 continue;
252 }
247 if (ring && s_fence) { 253 if (ring && s_fence) {
248 /* For fences from the same ring it is sufficient 254 /* For fences from the same ring it is sufficient
249 * when they are scheduled. 255 * when they are scheduled.
@@ -256,13 +262,6 @@ struct dma_fence *amdgpu_sync_peek_fence(struct amdgpu_sync *sync,
256 } 262 }
257 } 263 }
258 264
259 if (dma_fence_is_signaled(f)) {
260 hash_del(&e->node);
261 dma_fence_put(f);
262 kmem_cache_free(amdgpu_sync_slab, e);
263 continue;
264 }
265
266 return f; 265 return f;
267 } 266 }
268 267
diff --git a/drivers/gpu/drm/amd/amdgpu/clearstate_gfx9.h b/drivers/gpu/drm/amd/amdgpu/clearstate_gfx9.h
index 18fd01f3e4b2..003a131bad47 100644
--- a/drivers/gpu/drm/amd/amdgpu/clearstate_gfx9.h
+++ b/drivers/gpu/drm/amd/amdgpu/clearstate_gfx9.h
@@ -1,24 +1,25 @@
1
2/* 1/*
3*************************************************************************************************** 2 * Copyright 2017 Advanced Micro Devices, Inc.
4* 3 *
5* Trade secret of Advanced Micro Devices, Inc. 4 * Permission is hereby granted, free of charge, to any person obtaining a
6* Copyright (c) 2010 Advanced Micro Devices, Inc. (unpublished) 5 * copy of this software and associated documentation files (the "Software"),
7* 6 * to deal in the Software without restriction, including without limitation
8* All rights reserved. This notice is intended as a precaution against inadvertent publication and 7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9* does not imply publication or any waiver of confidentiality. The year included in the foregoing 8 * and/or sell copies of the Software, and to permit persons to whom the
10* notice is the year of creation of the work. 9 * Software is furnished to do so, subject to the following conditions:
11* 10 *
12*************************************************************************************************** 11 * The above copyright notice and this permission notice shall be included in
13*/ 12 * all copies or substantial portions of the Software.
14/** 13 *
15*************************************************************************************************** 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16* @brief gfx9 Clearstate Definitions 15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17*************************************************************************************************** 16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18* 17 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
19* Do not edit! This is a machine-generated file! 18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
20* 19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
21*/ 20 * OTHER DEALINGS IN THE SOFTWARE.
21 *
22 */
22 23
23static const unsigned int gfx9_SECT_CONTEXT_def_1[] = 24static const unsigned int gfx9_SECT_CONTEXT_def_1[] =
24{ 25{
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
index 3a0b69b09ed6..c9b9c88231aa 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
@@ -1475,21 +1475,23 @@ static void gfx_v9_0_tiling_mode_table_init(struct amdgpu_device *adev)
1475 1475
1476static void gfx_v9_0_select_se_sh(struct amdgpu_device *adev, u32 se_num, u32 sh_num, u32 instance) 1476static void gfx_v9_0_select_se_sh(struct amdgpu_device *adev, u32 se_num, u32 sh_num, u32 instance)
1477{ 1477{
1478 u32 data = REG_SET_FIELD(0, GRBM_GFX_INDEX, INSTANCE_BROADCAST_WRITES, 1); 1478 u32 data;
1479 1479
1480 if ((se_num == 0xffffffff) && (sh_num == 0xffffffff)) { 1480 if (instance == 0xffffffff)
1481 data = REG_SET_FIELD(data, GRBM_GFX_INDEX, SH_BROADCAST_WRITES, 1); 1481 data = REG_SET_FIELD(0, GRBM_GFX_INDEX, INSTANCE_BROADCAST_WRITES, 1);
1482 data = REG_SET_FIELD(data, GRBM_GFX_INDEX, SE_BROADCAST_WRITES, 1); 1482 else
1483 } else if (se_num == 0xffffffff) { 1483 data = REG_SET_FIELD(0, GRBM_GFX_INDEX, INSTANCE_INDEX, instance);
1484 data = REG_SET_FIELD(data, GRBM_GFX_INDEX, SH_INDEX, sh_num); 1484
1485 if (se_num == 0xffffffff)
1485 data = REG_SET_FIELD(data, GRBM_GFX_INDEX, SE_BROADCAST_WRITES, 1); 1486 data = REG_SET_FIELD(data, GRBM_GFX_INDEX, SE_BROADCAST_WRITES, 1);
1486 } else if (sh_num == 0xffffffff) { 1487 else
1487 data = REG_SET_FIELD(data, GRBM_GFX_INDEX, SH_BROADCAST_WRITES, 1);
1488 data = REG_SET_FIELD(data, GRBM_GFX_INDEX, SE_INDEX, se_num); 1488 data = REG_SET_FIELD(data, GRBM_GFX_INDEX, SE_INDEX, se_num);
1489 } else { 1489
1490 if (sh_num == 0xffffffff)
1491 data = REG_SET_FIELD(data, GRBM_GFX_INDEX, SH_BROADCAST_WRITES, 1);
1492 else
1490 data = REG_SET_FIELD(data, GRBM_GFX_INDEX, SH_INDEX, sh_num); 1493 data = REG_SET_FIELD(data, GRBM_GFX_INDEX, SH_INDEX, sh_num);
1491 data = REG_SET_FIELD(data, GRBM_GFX_INDEX, SE_INDEX, se_num); 1494
1492 }
1493 WREG32_SOC15(GC, 0, mmGRBM_GFX_INDEX, data); 1495 WREG32_SOC15(GC, 0, mmGRBM_GFX_INDEX, data);
1494} 1496}
1495 1497
diff --git a/drivers/gpu/drm/amd/amdgpu/si.c b/drivers/gpu/drm/amd/amdgpu/si.c
index f45fb0f022b3..4267fa417997 100644
--- a/drivers/gpu/drm/amd/amdgpu/si.c
+++ b/drivers/gpu/drm/amd/amdgpu/si.c
@@ -1385,6 +1385,7 @@ static void si_init_golden_registers(struct amdgpu_device *adev)
1385 amdgpu_program_register_sequence(adev, 1385 amdgpu_program_register_sequence(adev,
1386 pitcairn_mgcg_cgcg_init, 1386 pitcairn_mgcg_cgcg_init,
1387 (const u32)ARRAY_SIZE(pitcairn_mgcg_cgcg_init)); 1387 (const u32)ARRAY_SIZE(pitcairn_mgcg_cgcg_init));
1388 break;
1388 case CHIP_VERDE: 1389 case CHIP_VERDE:
1389 amdgpu_program_register_sequence(adev, 1390 amdgpu_program_register_sequence(adev,
1390 verde_golden_registers, 1391 verde_golden_registers,
@@ -1409,6 +1410,7 @@ static void si_init_golden_registers(struct amdgpu_device *adev)
1409 amdgpu_program_register_sequence(adev, 1410 amdgpu_program_register_sequence(adev,
1410 oland_mgcg_cgcg_init, 1411 oland_mgcg_cgcg_init,
1411 (const u32)ARRAY_SIZE(oland_mgcg_cgcg_init)); 1412 (const u32)ARRAY_SIZE(oland_mgcg_cgcg_init));
1413 break;
1412 case CHIP_HAINAN: 1414 case CHIP_HAINAN:
1413 amdgpu_program_register_sequence(adev, 1415 amdgpu_program_register_sequence(adev,
1414 hainan_golden_registers, 1416 hainan_golden_registers,
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
index 88187bfc5ea3..3f95f7cb4019 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
@@ -226,10 +226,6 @@ bool kgd2kfd_device_init(struct kfd_dev *kfd,
226 226
227 kfd->shared_resources = *gpu_resources; 227 kfd->shared_resources = *gpu_resources;
228 228
229 /* We only use the first MEC */
230 if (kfd->shared_resources.num_mec > 1)
231 kfd->shared_resources.num_mec = 1;
232
233 /* calculate max size of mqds needed for queues */ 229 /* calculate max size of mqds needed for queues */
234 size = max_num_of_queues_per_device * 230 size = max_num_of_queues_per_device *
235 kfd->device_info->mqd_size_aligned; 231 kfd->device_info->mqd_size_aligned;
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
index 955aa304ff48..602769ced3bd 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
@@ -77,13 +77,6 @@ static bool is_pipe_enabled(struct device_queue_manager *dqm, int mec, int pipe)
77 return false; 77 return false;
78} 78}
79 79
80unsigned int get_mec_num(struct device_queue_manager *dqm)
81{
82 BUG_ON(!dqm || !dqm->dev);
83
84 return dqm->dev->shared_resources.num_mec;
85}
86
87unsigned int get_queues_num(struct device_queue_manager *dqm) 80unsigned int get_queues_num(struct device_queue_manager *dqm)
88{ 81{
89 BUG_ON(!dqm || !dqm->dev); 82 BUG_ON(!dqm || !dqm->dev);
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h
index 66b9615bc3c1..faf820a06400 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.h
@@ -180,7 +180,6 @@ void device_queue_manager_init_cik(struct device_queue_manager_asic_ops *ops);
180void device_queue_manager_init_vi(struct device_queue_manager_asic_ops *ops); 180void device_queue_manager_init_vi(struct device_queue_manager_asic_ops *ops);
181void program_sh_mem_settings(struct device_queue_manager *dqm, 181void program_sh_mem_settings(struct device_queue_manager *dqm,
182 struct qcm_process_device *qpd); 182 struct qcm_process_device *qpd);
183unsigned int get_mec_num(struct device_queue_manager *dqm);
184unsigned int get_queues_num(struct device_queue_manager *dqm); 183unsigned int get_queues_num(struct device_queue_manager *dqm);
185unsigned int get_queues_per_pipe(struct device_queue_manager *dqm); 184unsigned int get_queues_per_pipe(struct device_queue_manager *dqm);
186unsigned int get_pipes_per_mec(struct device_queue_manager *dqm); 185unsigned int get_pipes_per_mec(struct device_queue_manager *dqm);
diff --git a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
index 91ef1484b3bb..36f376677a53 100644
--- a/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
+++ b/drivers/gpu/drm/amd/include/kgd_kfd_interface.h
@@ -63,9 +63,6 @@ struct kgd2kfd_shared_resources {
63 /* Bit n == 1 means VMID n is available for KFD. */ 63 /* Bit n == 1 means VMID n is available for KFD. */
64 unsigned int compute_vmid_bitmap; 64 unsigned int compute_vmid_bitmap;
65 65
66 /* number of mec available from the hardware */
67 uint32_t num_mec;
68
69 /* number of pipes per mec */ 66 /* number of pipes per mec */
70 uint32_t num_pipe_per_mec; 67 uint32_t num_pipe_per_mec;
71 68
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
index d6f097f44b6c..197174e562d2 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/vega10_hwmgr.c
@@ -2128,15 +2128,9 @@ static int vega10_populate_avfs_parameters(struct pp_hwmgr *hwmgr)
2128 pp_table->AvfsGbCksOff.m2_shift = 12; 2128 pp_table->AvfsGbCksOff.m2_shift = 12;
2129 pp_table->AvfsGbCksOff.b_shift = 0; 2129 pp_table->AvfsGbCksOff.b_shift = 0;
2130 2130
2131 for (i = 0; i < dep_table->count; i++) { 2131 for (i = 0; i < dep_table->count; i++)
2132 if (dep_table->entries[i].sclk_offset == 0) 2132 pp_table->StaticVoltageOffsetVid[i] =
2133 pp_table->StaticVoltageOffsetVid[i] = 248; 2133 convert_to_vid((uint8_t)(dep_table->entries[i].sclk_offset));
2134 else
2135 pp_table->StaticVoltageOffsetVid[i] =
2136 (uint8_t)(dep_table->entries[i].sclk_offset *
2137 VOLTAGE_VID_OFFSET_SCALE2 /
2138 VOLTAGE_VID_OFFSET_SCALE1);
2139 }
2140 2134
2141 if ((PPREGKEY_VEGA10QUADRATICEQUATION_DFLT != 2135 if ((PPREGKEY_VEGA10QUADRATICEQUATION_DFLT !=
2142 data->disp_clk_quad_eqn_a) && 2136 data->disp_clk_quad_eqn_a) &&
diff --git a/drivers/gpu/drm/bridge/tc358767.c b/drivers/gpu/drm/bridge/tc358767.c
index 5c26488e7a2d..0529e500c534 100644
--- a/drivers/gpu/drm/bridge/tc358767.c
+++ b/drivers/gpu/drm/bridge/tc358767.c
@@ -1255,7 +1255,7 @@ static int tc_probe(struct i2c_client *client, const struct i2c_device_id *id)
1255 1255
1256 /* port@2 is the output port */ 1256 /* port@2 is the output port */
1257 ret = drm_of_find_panel_or_bridge(dev->of_node, 2, 0, &tc->panel, NULL); 1257 ret = drm_of_find_panel_or_bridge(dev->of_node, 2, 0, &tc->panel, NULL);
1258 if (ret) 1258 if (ret && ret != -ENODEV)
1259 return ret; 1259 return ret;
1260 1260
1261 /* Shut down GPIO is optional */ 1261 /* Shut down GPIO is optional */
diff --git a/drivers/gpu/drm/drm_dp_helper.c b/drivers/gpu/drm/drm_dp_helper.c
index 213fb837e1c4..08af8d6b844b 100644
--- a/drivers/gpu/drm/drm_dp_helper.c
+++ b/drivers/gpu/drm/drm_dp_helper.c
@@ -544,7 +544,7 @@ void drm_dp_downstream_debug(struct seq_file *m,
544 DP_DETAILED_CAP_INFO_AVAILABLE; 544 DP_DETAILED_CAP_INFO_AVAILABLE;
545 int clk; 545 int clk;
546 int bpc; 546 int bpc;
547 char id[6]; 547 char id[7];
548 int len; 548 int len;
549 uint8_t rev[2]; 549 uint8_t rev[2];
550 int type = port_cap[0] & DP_DS_PORT_TYPE_MASK; 550 int type = port_cap[0] & DP_DS_PORT_TYPE_MASK;
@@ -583,6 +583,7 @@ void drm_dp_downstream_debug(struct seq_file *m,
583 seq_puts(m, "\t\tType: N/A\n"); 583 seq_puts(m, "\t\tType: N/A\n");
584 } 584 }
585 585
586 memset(id, 0, sizeof(id));
586 drm_dp_downstream_id(aux, id); 587 drm_dp_downstream_id(aux, id);
587 seq_printf(m, "\t\tID: %s\n", id); 588 seq_printf(m, "\t\tID: %s\n", id);
588 589
@@ -591,7 +592,7 @@ void drm_dp_downstream_debug(struct seq_file *m,
591 seq_printf(m, "\t\tHW: %d.%d\n", 592 seq_printf(m, "\t\tHW: %d.%d\n",
592 (rev[0] & 0xf0) >> 4, rev[0] & 0xf); 593 (rev[0] & 0xf0) >> 4, rev[0] & 0xf);
593 594
594 len = drm_dp_dpcd_read(aux, DP_BRANCH_SW_REV, &rev, 2); 595 len = drm_dp_dpcd_read(aux, DP_BRANCH_SW_REV, rev, 2);
595 if (len > 0) 596 if (len > 0)
596 seq_printf(m, "\t\tSW: %d.%d\n", rev[0], rev[1]); 597 seq_printf(m, "\t\tSW: %d.%d\n", rev[0], rev[1]);
597 598
diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c
index bfd237c15e76..ae5f06895562 100644
--- a/drivers/gpu/drm/drm_dp_mst_topology.c
+++ b/drivers/gpu/drm/drm_dp_mst_topology.c
@@ -330,6 +330,13 @@ static bool drm_dp_sideband_msg_build(struct drm_dp_sideband_msg_rx *msg,
330 return false; 330 return false;
331 } 331 }
332 332
333 /*
334 * ignore out-of-order messages or messages that are part of a
335 * failed transaction
336 */
337 if (!recv_hdr.somt && !msg->have_somt)
338 return false;
339
333 /* get length contained in this portion */ 340 /* get length contained in this portion */
334 msg->curchunk_len = recv_hdr.msg_len; 341 msg->curchunk_len = recv_hdr.msg_len;
335 msg->curchunk_hdrlen = hdrlen; 342 msg->curchunk_hdrlen = hdrlen;
@@ -2164,7 +2171,7 @@ out_unlock:
2164} 2171}
2165EXPORT_SYMBOL(drm_dp_mst_topology_mgr_resume); 2172EXPORT_SYMBOL(drm_dp_mst_topology_mgr_resume);
2166 2173
2167static void drm_dp_get_one_sb_msg(struct drm_dp_mst_topology_mgr *mgr, bool up) 2174static bool drm_dp_get_one_sb_msg(struct drm_dp_mst_topology_mgr *mgr, bool up)
2168{ 2175{
2169 int len; 2176 int len;
2170 u8 replyblock[32]; 2177 u8 replyblock[32];
@@ -2179,12 +2186,12 @@ static void drm_dp_get_one_sb_msg(struct drm_dp_mst_topology_mgr *mgr, bool up)
2179 replyblock, len); 2186 replyblock, len);
2180 if (ret != len) { 2187 if (ret != len) {
2181 DRM_DEBUG_KMS("failed to read DPCD down rep %d %d\n", len, ret); 2188 DRM_DEBUG_KMS("failed to read DPCD down rep %d %d\n", len, ret);
2182 return; 2189 return false;
2183 } 2190 }
2184 ret = drm_dp_sideband_msg_build(msg, replyblock, len, true); 2191 ret = drm_dp_sideband_msg_build(msg, replyblock, len, true);
2185 if (!ret) { 2192 if (!ret) {
2186 DRM_DEBUG_KMS("sideband msg build failed %d\n", replyblock[0]); 2193 DRM_DEBUG_KMS("sideband msg build failed %d\n", replyblock[0]);
2187 return; 2194 return false;
2188 } 2195 }
2189 replylen = msg->curchunk_len + msg->curchunk_hdrlen; 2196 replylen = msg->curchunk_len + msg->curchunk_hdrlen;
2190 2197
@@ -2196,21 +2203,32 @@ static void drm_dp_get_one_sb_msg(struct drm_dp_mst_topology_mgr *mgr, bool up)
2196 ret = drm_dp_dpcd_read(mgr->aux, basereg + curreply, 2203 ret = drm_dp_dpcd_read(mgr->aux, basereg + curreply,
2197 replyblock, len); 2204 replyblock, len);
2198 if (ret != len) { 2205 if (ret != len) {
2199 DRM_DEBUG_KMS("failed to read a chunk\n"); 2206 DRM_DEBUG_KMS("failed to read a chunk (len %d, ret %d)\n",
2207 len, ret);
2208 return false;
2200 } 2209 }
2210
2201 ret = drm_dp_sideband_msg_build(msg, replyblock, len, false); 2211 ret = drm_dp_sideband_msg_build(msg, replyblock, len, false);
2202 if (ret == false) 2212 if (!ret) {
2203 DRM_DEBUG_KMS("failed to build sideband msg\n"); 2213 DRM_DEBUG_KMS("failed to build sideband msg\n");
2214 return false;
2215 }
2216
2204 curreply += len; 2217 curreply += len;
2205 replylen -= len; 2218 replylen -= len;
2206 } 2219 }
2220 return true;
2207} 2221}
2208 2222
2209static int drm_dp_mst_handle_down_rep(struct drm_dp_mst_topology_mgr *mgr) 2223static int drm_dp_mst_handle_down_rep(struct drm_dp_mst_topology_mgr *mgr)
2210{ 2224{
2211 int ret = 0; 2225 int ret = 0;
2212 2226
2213 drm_dp_get_one_sb_msg(mgr, false); 2227 if (!drm_dp_get_one_sb_msg(mgr, false)) {
2228 memset(&mgr->down_rep_recv, 0,
2229 sizeof(struct drm_dp_sideband_msg_rx));
2230 return 0;
2231 }
2214 2232
2215 if (mgr->down_rep_recv.have_eomt) { 2233 if (mgr->down_rep_recv.have_eomt) {
2216 struct drm_dp_sideband_msg_tx *txmsg; 2234 struct drm_dp_sideband_msg_tx *txmsg;
@@ -2266,7 +2284,12 @@ static int drm_dp_mst_handle_down_rep(struct drm_dp_mst_topology_mgr *mgr)
2266static int drm_dp_mst_handle_up_req(struct drm_dp_mst_topology_mgr *mgr) 2284static int drm_dp_mst_handle_up_req(struct drm_dp_mst_topology_mgr *mgr)
2267{ 2285{
2268 int ret = 0; 2286 int ret = 0;
2269 drm_dp_get_one_sb_msg(mgr, true); 2287
2288 if (!drm_dp_get_one_sb_msg(mgr, true)) {
2289 memset(&mgr->up_req_recv, 0,
2290 sizeof(struct drm_dp_sideband_msg_rx));
2291 return 0;
2292 }
2270 2293
2271 if (mgr->up_req_recv.have_eomt) { 2294 if (mgr->up_req_recv.have_eomt) {
2272 struct drm_dp_sideband_msg_req_body msg; 2295 struct drm_dp_sideband_msg_req_body msg;
@@ -2318,7 +2341,9 @@ static int drm_dp_mst_handle_up_req(struct drm_dp_mst_topology_mgr *mgr)
2318 DRM_DEBUG_KMS("Got RSN: pn: %d avail_pbn %d\n", msg.u.resource_stat.port_number, msg.u.resource_stat.available_pbn); 2341 DRM_DEBUG_KMS("Got RSN: pn: %d avail_pbn %d\n", msg.u.resource_stat.port_number, msg.u.resource_stat.available_pbn);
2319 } 2342 }
2320 2343
2321 drm_dp_put_mst_branch_device(mstb); 2344 if (mstb)
2345 drm_dp_put_mst_branch_device(mstb);
2346
2322 memset(&mgr->up_req_recv, 0, sizeof(struct drm_dp_sideband_msg_rx)); 2347 memset(&mgr->up_req_recv, 0, sizeof(struct drm_dp_sideband_msg_rx));
2323 } 2348 }
2324 return ret; 2349 return ret;
diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c b/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c
index 5bd93169dac2..6463fc2c736f 100644
--- a/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c
+++ b/drivers/gpu/drm/etnaviv/etnaviv_gem_submit.c
@@ -270,8 +270,8 @@ static int submit_reloc(struct etnaviv_gem_submit *submit, void *stream,
270 if (ret) 270 if (ret)
271 return ret; 271 return ret;
272 272
273 if (r->reloc_offset >= bo->obj->base.size - sizeof(*ptr)) { 273 if (r->reloc_offset > bo->obj->base.size - sizeof(*ptr)) {
274 DRM_ERROR("relocation %u outside object", i); 274 DRM_ERROR("relocation %u outside object\n", i);
275 return -EINVAL; 275 return -EINVAL;
276 } 276 }
277 277
diff --git a/drivers/gpu/drm/exynos/Kconfig b/drivers/gpu/drm/exynos/Kconfig
index 1d185347c64c..305dc3d4ff77 100644
--- a/drivers/gpu/drm/exynos/Kconfig
+++ b/drivers/gpu/drm/exynos/Kconfig
@@ -75,6 +75,7 @@ config DRM_EXYNOS_DP
75config DRM_EXYNOS_HDMI 75config DRM_EXYNOS_HDMI
76 bool "HDMI" 76 bool "HDMI"
77 depends on DRM_EXYNOS_MIXER || DRM_EXYNOS5433_DECON 77 depends on DRM_EXYNOS_MIXER || DRM_EXYNOS5433_DECON
78 select CEC_CORE if CEC_NOTIFIER
78 help 79 help
79 Choose this option if you want to use Exynos HDMI for DRM. 80 Choose this option if you want to use Exynos HDMI for DRM.
80 81
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
index 35a8dfc93836..242bd50faa26 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
@@ -453,7 +453,6 @@ static int exynos_drm_platform_probe(struct platform_device *pdev)
453 struct component_match *match; 453 struct component_match *match;
454 454
455 pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32); 455 pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32);
456 exynos_drm_driver.num_ioctls = ARRAY_SIZE(exynos_ioctls);
457 456
458 match = exynos_drm_match_add(&pdev->dev); 457 match = exynos_drm_match_add(&pdev->dev);
459 if (IS_ERR(match)) 458 if (IS_ERR(match))
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
index a11b79596e2f..b6a46d9a016e 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c
@@ -1651,8 +1651,6 @@ static int exynos_dsi_parse_dt(struct exynos_dsi *dsi)
1651 return ret; 1651 return ret;
1652 1652
1653 dsi->bridge_node = of_graph_get_remote_node(node, DSI_PORT_IN, 0); 1653 dsi->bridge_node = of_graph_get_remote_node(node, DSI_PORT_IN, 0);
1654 if (!dsi->bridge_node)
1655 return -EINVAL;
1656 1654
1657 return 0; 1655 return 0;
1658} 1656}
@@ -1687,9 +1685,11 @@ static int exynos_dsi_bind(struct device *dev, struct device *master,
1687 return ret; 1685 return ret;
1688 } 1686 }
1689 1687
1690 bridge = of_drm_find_bridge(dsi->bridge_node); 1688 if (dsi->bridge_node) {
1691 if (bridge) 1689 bridge = of_drm_find_bridge(dsi->bridge_node);
1692 drm_bridge_attach(encoder, bridge, NULL); 1690 if (bridge)
1691 drm_bridge_attach(encoder, bridge, NULL);
1692 }
1693 1693
1694 return mipi_dsi_host_register(&dsi->dsi_host); 1694 return mipi_dsi_host_register(&dsi->dsi_host);
1695} 1695}
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fb.c b/drivers/gpu/drm/exynos/exynos_drm_fb.c
index d48fd7c918f8..73217c281c9a 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fb.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fb.c
@@ -145,13 +145,19 @@ static struct drm_framebuffer *
145exynos_user_fb_create(struct drm_device *dev, struct drm_file *file_priv, 145exynos_user_fb_create(struct drm_device *dev, struct drm_file *file_priv,
146 const struct drm_mode_fb_cmd2 *mode_cmd) 146 const struct drm_mode_fb_cmd2 *mode_cmd)
147{ 147{
148 const struct drm_format_info *info = drm_get_format_info(dev, mode_cmd);
148 struct exynos_drm_gem *exynos_gem[MAX_FB_BUFFER]; 149 struct exynos_drm_gem *exynos_gem[MAX_FB_BUFFER];
149 struct drm_gem_object *obj; 150 struct drm_gem_object *obj;
150 struct drm_framebuffer *fb; 151 struct drm_framebuffer *fb;
151 int i; 152 int i;
152 int ret; 153 int ret;
153 154
154 for (i = 0; i < drm_format_num_planes(mode_cmd->pixel_format); i++) { 155 for (i = 0; i < info->num_planes; i++) {
156 unsigned int height = (i == 0) ? mode_cmd->height :
157 DIV_ROUND_UP(mode_cmd->height, info->vsub);
158 unsigned long size = height * mode_cmd->pitches[i] +
159 mode_cmd->offsets[i];
160
155 obj = drm_gem_object_lookup(file_priv, mode_cmd->handles[i]); 161 obj = drm_gem_object_lookup(file_priv, mode_cmd->handles[i]);
156 if (!obj) { 162 if (!obj) {
157 DRM_ERROR("failed to lookup gem object\n"); 163 DRM_ERROR("failed to lookup gem object\n");
@@ -160,6 +166,12 @@ exynos_user_fb_create(struct drm_device *dev, struct drm_file *file_priv,
160 } 166 }
161 167
162 exynos_gem[i] = to_exynos_gem(obj); 168 exynos_gem[i] = to_exynos_gem(obj);
169
170 if (size > exynos_gem[i]->size) {
171 i++;
172 ret = -EINVAL;
173 goto err;
174 }
163 } 175 }
164 176
165 fb = exynos_drm_framebuffer_init(dev, mode_cmd, exynos_gem, i); 177 fb = exynos_drm_framebuffer_init(dev, mode_cmd, exynos_gem, i);
diff --git a/drivers/gpu/drm/exynos/exynos_drm_mic.c b/drivers/gpu/drm/exynos/exynos_drm_mic.c
index e45720543a45..16bbee897e0d 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_mic.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_mic.c
@@ -340,16 +340,10 @@ static int exynos_mic_bind(struct device *dev, struct device *master,
340 void *data) 340 void *data)
341{ 341{
342 struct exynos_mic *mic = dev_get_drvdata(dev); 342 struct exynos_mic *mic = dev_get_drvdata(dev);
343 int ret;
344 343
345 mic->bridge.funcs = &mic_bridge_funcs;
346 mic->bridge.of_node = dev->of_node;
347 mic->bridge.driver_private = mic; 344 mic->bridge.driver_private = mic;
348 ret = drm_bridge_add(&mic->bridge);
349 if (ret)
350 DRM_ERROR("mic: Failed to add MIC to the global bridge list\n");
351 345
352 return ret; 346 return 0;
353} 347}
354 348
355static void exynos_mic_unbind(struct device *dev, struct device *master, 349static void exynos_mic_unbind(struct device *dev, struct device *master,
@@ -365,8 +359,6 @@ static void exynos_mic_unbind(struct device *dev, struct device *master,
365 359
366already_disabled: 360already_disabled:
367 mutex_unlock(&mic_mutex); 361 mutex_unlock(&mic_mutex);
368
369 drm_bridge_remove(&mic->bridge);
370} 362}
371 363
372static const struct component_ops exynos_mic_component_ops = { 364static const struct component_ops exynos_mic_component_ops = {
@@ -461,6 +453,15 @@ static int exynos_mic_probe(struct platform_device *pdev)
461 453
462 platform_set_drvdata(pdev, mic); 454 platform_set_drvdata(pdev, mic);
463 455
456 mic->bridge.funcs = &mic_bridge_funcs;
457 mic->bridge.of_node = dev->of_node;
458
459 ret = drm_bridge_add(&mic->bridge);
460 if (ret) {
461 DRM_ERROR("mic: Failed to add MIC to the global bridge list\n");
462 return ret;
463 }
464
464 pm_runtime_enable(dev); 465 pm_runtime_enable(dev);
465 466
466 ret = component_add(dev, &exynos_mic_component_ops); 467 ret = component_add(dev, &exynos_mic_component_ops);
@@ -479,8 +480,13 @@ err:
479 480
480static int exynos_mic_remove(struct platform_device *pdev) 481static int exynos_mic_remove(struct platform_device *pdev)
481{ 482{
483 struct exynos_mic *mic = platform_get_drvdata(pdev);
484
482 component_del(&pdev->dev, &exynos_mic_component_ops); 485 component_del(&pdev->dev, &exynos_mic_component_ops);
483 pm_runtime_disable(&pdev->dev); 486 pm_runtime_disable(&pdev->dev);
487
488 drm_bridge_remove(&mic->bridge);
489
484 return 0; 490 return 0;
485} 491}
486 492
diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c
index 06bfbe400cf1..d3b69d66736f 100644
--- a/drivers/gpu/drm/exynos/exynos_hdmi.c
+++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
@@ -1501,8 +1501,6 @@ static void hdmi_disable(struct drm_encoder *encoder)
1501 */ 1501 */
1502 cancel_delayed_work(&hdata->hotplug_work); 1502 cancel_delayed_work(&hdata->hotplug_work);
1503 cec_notifier_set_phys_addr(hdata->notifier, CEC_PHYS_ADDR_INVALID); 1503 cec_notifier_set_phys_addr(hdata->notifier, CEC_PHYS_ADDR_INVALID);
1504
1505 hdmiphy_disable(hdata);
1506} 1504}
1507 1505
1508static const struct drm_encoder_helper_funcs exynos_hdmi_encoder_helper_funcs = { 1506static const struct drm_encoder_helper_funcs exynos_hdmi_encoder_helper_funcs = {
@@ -1676,7 +1674,7 @@ static int hdmi_resources_init(struct hdmi_context *hdata)
1676 return hdmi_bridge_init(hdata); 1674 return hdmi_bridge_init(hdata);
1677} 1675}
1678 1676
1679static struct of_device_id hdmi_match_types[] = { 1677static const struct of_device_id hdmi_match_types[] = {
1680 { 1678 {
1681 .compatible = "samsung,exynos4210-hdmi", 1679 .compatible = "samsung,exynos4210-hdmi",
1682 .data = &exynos4210_hdmi_driver_data, 1680 .data = &exynos4210_hdmi_driver_data,
@@ -1934,8 +1932,7 @@ static int hdmi_remove(struct platform_device *pdev)
1934 return 0; 1932 return 0;
1935} 1933}
1936 1934
1937#ifdef CONFIG_PM 1935static int __maybe_unused exynos_hdmi_suspend(struct device *dev)
1938static int exynos_hdmi_suspend(struct device *dev)
1939{ 1936{
1940 struct hdmi_context *hdata = dev_get_drvdata(dev); 1937 struct hdmi_context *hdata = dev_get_drvdata(dev);
1941 1938
@@ -1944,7 +1941,7 @@ static int exynos_hdmi_suspend(struct device *dev)
1944 return 0; 1941 return 0;
1945} 1942}
1946 1943
1947static int exynos_hdmi_resume(struct device *dev) 1944static int __maybe_unused exynos_hdmi_resume(struct device *dev)
1948{ 1945{
1949 struct hdmi_context *hdata = dev_get_drvdata(dev); 1946 struct hdmi_context *hdata = dev_get_drvdata(dev);
1950 int ret; 1947 int ret;
@@ -1955,7 +1952,6 @@ static int exynos_hdmi_resume(struct device *dev)
1955 1952
1956 return 0; 1953 return 0;
1957} 1954}
1958#endif
1959 1955
1960static const struct dev_pm_ops exynos_hdmi_pm_ops = { 1956static const struct dev_pm_ops exynos_hdmi_pm_ops = {
1961 SET_RUNTIME_PM_OPS(exynos_hdmi_suspend, exynos_hdmi_resume, NULL) 1957 SET_RUNTIME_PM_OPS(exynos_hdmi_suspend, exynos_hdmi_resume, NULL)
diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c
index 6bed4f3ffcd6..a998a8dd783c 100644
--- a/drivers/gpu/drm/exynos/exynos_mixer.c
+++ b/drivers/gpu/drm/exynos/exynos_mixer.c
@@ -1094,28 +1094,28 @@ static const struct exynos_drm_crtc_ops mixer_crtc_ops = {
1094 .atomic_check = mixer_atomic_check, 1094 .atomic_check = mixer_atomic_check,
1095}; 1095};
1096 1096
1097static struct mixer_drv_data exynos5420_mxr_drv_data = { 1097static const struct mixer_drv_data exynos5420_mxr_drv_data = {
1098 .version = MXR_VER_128_0_0_184, 1098 .version = MXR_VER_128_0_0_184,
1099 .is_vp_enabled = 0, 1099 .is_vp_enabled = 0,
1100}; 1100};
1101 1101
1102static struct mixer_drv_data exynos5250_mxr_drv_data = { 1102static const struct mixer_drv_data exynos5250_mxr_drv_data = {
1103 .version = MXR_VER_16_0_33_0, 1103 .version = MXR_VER_16_0_33_0,
1104 .is_vp_enabled = 0, 1104 .is_vp_enabled = 0,
1105}; 1105};
1106 1106
1107static struct mixer_drv_data exynos4212_mxr_drv_data = { 1107static const struct mixer_drv_data exynos4212_mxr_drv_data = {
1108 .version = MXR_VER_0_0_0_16, 1108 .version = MXR_VER_0_0_0_16,
1109 .is_vp_enabled = 1, 1109 .is_vp_enabled = 1,
1110}; 1110};
1111 1111
1112static struct mixer_drv_data exynos4210_mxr_drv_data = { 1112static const struct mixer_drv_data exynos4210_mxr_drv_data = {
1113 .version = MXR_VER_0_0_0_16, 1113 .version = MXR_VER_0_0_0_16,
1114 .is_vp_enabled = 1, 1114 .is_vp_enabled = 1,
1115 .has_sclk = 1, 1115 .has_sclk = 1,
1116}; 1116};
1117 1117
1118static struct of_device_id mixer_match_types[] = { 1118static const struct of_device_id mixer_match_types[] = {
1119 { 1119 {
1120 .compatible = "samsung,exynos4210-mixer", 1120 .compatible = "samsung,exynos4210-mixer",
1121 .data = &exynos4210_mxr_drv_data, 1121 .data = &exynos4210_mxr_drv_data,
diff --git a/drivers/gpu/drm/i915/gvt/display.c b/drivers/gpu/drm/i915/gvt/display.c
index 2deb05f618fb..7cb0818a13de 100644
--- a/drivers/gpu/drm/i915/gvt/display.c
+++ b/drivers/gpu/drm/i915/gvt/display.c
@@ -323,27 +323,27 @@ void intel_gvt_check_vblank_emulation(struct intel_gvt *gvt)
323{ 323{
324 struct intel_gvt_irq *irq = &gvt->irq; 324 struct intel_gvt_irq *irq = &gvt->irq;
325 struct intel_vgpu *vgpu; 325 struct intel_vgpu *vgpu;
326 bool have_enabled_pipe = false;
327 int pipe, id; 326 int pipe, id;
328 327
329 if (WARN_ON(!mutex_is_locked(&gvt->lock))) 328 if (WARN_ON(!mutex_is_locked(&gvt->lock)))
330 return; 329 return;
331 330
332 hrtimer_cancel(&irq->vblank_timer.timer);
333
334 for_each_active_vgpu(gvt, vgpu, id) { 331 for_each_active_vgpu(gvt, vgpu, id) {
335 for (pipe = 0; pipe < I915_MAX_PIPES; pipe++) { 332 for (pipe = 0; pipe < I915_MAX_PIPES; pipe++) {
336 have_enabled_pipe = 333 if (pipe_is_enabled(vgpu, pipe))
337 pipe_is_enabled(vgpu, pipe); 334 goto out;
338 if (have_enabled_pipe)
339 break;
340 } 335 }
341 } 336 }
342 337
343 if (have_enabled_pipe) 338 /* all the pipes are disabled */
344 hrtimer_start(&irq->vblank_timer.timer, 339 hrtimer_cancel(&irq->vblank_timer.timer);
345 ktime_add_ns(ktime_get(), irq->vblank_timer.period), 340 return;
346 HRTIMER_MODE_ABS); 341
342out:
343 hrtimer_start(&irq->vblank_timer.timer,
344 ktime_add_ns(ktime_get(), irq->vblank_timer.period),
345 HRTIMER_MODE_ABS);
346
347} 347}
348 348
349static void emulate_vblank_on_pipe(struct intel_vgpu *vgpu, int pipe) 349static void emulate_vblank_on_pipe(struct intel_vgpu *vgpu, int pipe)
diff --git a/drivers/gpu/drm/i915/gvt/execlist.c b/drivers/gpu/drm/i915/gvt/execlist.c
index 700050556242..1648887d3f55 100644
--- a/drivers/gpu/drm/i915/gvt/execlist.c
+++ b/drivers/gpu/drm/i915/gvt/execlist.c
@@ -46,6 +46,8 @@
46#define same_context(a, b) (((a)->context_id == (b)->context_id) && \ 46#define same_context(a, b) (((a)->context_id == (b)->context_id) && \
47 ((a)->lrca == (b)->lrca)) 47 ((a)->lrca == (b)->lrca))
48 48
49static void clean_workloads(struct intel_vgpu *vgpu, unsigned long engine_mask);
50
49static int context_switch_events[] = { 51static int context_switch_events[] = {
50 [RCS] = RCS_AS_CONTEXT_SWITCH, 52 [RCS] = RCS_AS_CONTEXT_SWITCH,
51 [BCS] = BCS_AS_CONTEXT_SWITCH, 53 [BCS] = BCS_AS_CONTEXT_SWITCH,
@@ -499,10 +501,10 @@ static void release_shadow_wa_ctx(struct intel_shadow_wa_ctx *wa_ctx)
499static int complete_execlist_workload(struct intel_vgpu_workload *workload) 501static int complete_execlist_workload(struct intel_vgpu_workload *workload)
500{ 502{
501 struct intel_vgpu *vgpu = workload->vgpu; 503 struct intel_vgpu *vgpu = workload->vgpu;
502 struct intel_vgpu_execlist *execlist = 504 int ring_id = workload->ring_id;
503 &vgpu->execlist[workload->ring_id]; 505 struct intel_vgpu_execlist *execlist = &vgpu->execlist[ring_id];
504 struct intel_vgpu_workload *next_workload; 506 struct intel_vgpu_workload *next_workload;
505 struct list_head *next = workload_q_head(vgpu, workload->ring_id)->next; 507 struct list_head *next = workload_q_head(vgpu, ring_id)->next;
506 bool lite_restore = false; 508 bool lite_restore = false;
507 int ret; 509 int ret;
508 510
@@ -512,10 +514,25 @@ static int complete_execlist_workload(struct intel_vgpu_workload *workload)
512 release_shadow_batch_buffer(workload); 514 release_shadow_batch_buffer(workload);
513 release_shadow_wa_ctx(&workload->wa_ctx); 515 release_shadow_wa_ctx(&workload->wa_ctx);
514 516
515 if (workload->status || vgpu->resetting) 517 if (workload->status || (vgpu->resetting_eng & ENGINE_MASK(ring_id))) {
518 /* if workload->status is not successful means HW GPU
519 * has occurred GPU hang or something wrong with i915/GVT,
520 * and GVT won't inject context switch interrupt to guest.
521 * So this error is a vGPU hang actually to the guest.
522 * According to this we should emunlate a vGPU hang. If
523 * there are pending workloads which are already submitted
524 * from guest, we should clean them up like HW GPU does.
525 *
526 * if it is in middle of engine resetting, the pending
527 * workloads won't be submitted to HW GPU and will be
528 * cleaned up during the resetting process later, so doing
529 * the workload clean up here doesn't have any impact.
530 **/
531 clean_workloads(vgpu, ENGINE_MASK(ring_id));
516 goto out; 532 goto out;
533 }
517 534
518 if (!list_empty(workload_q_head(vgpu, workload->ring_id))) { 535 if (!list_empty(workload_q_head(vgpu, ring_id))) {
519 struct execlist_ctx_descriptor_format *this_desc, *next_desc; 536 struct execlist_ctx_descriptor_format *this_desc, *next_desc;
520 537
521 next_workload = container_of(next, 538 next_workload = container_of(next,
diff --git a/drivers/gpu/drm/i915/gvt/firmware.c b/drivers/gpu/drm/i915/gvt/firmware.c
index 5dad9298b2d5..a26c1705430e 100644
--- a/drivers/gpu/drm/i915/gvt/firmware.c
+++ b/drivers/gpu/drm/i915/gvt/firmware.c
@@ -72,11 +72,13 @@ static int expose_firmware_sysfs(struct intel_gvt *gvt)
72 struct intel_gvt_device_info *info = &gvt->device_info; 72 struct intel_gvt_device_info *info = &gvt->device_info;
73 struct pci_dev *pdev = gvt->dev_priv->drm.pdev; 73 struct pci_dev *pdev = gvt->dev_priv->drm.pdev;
74 struct intel_gvt_mmio_info *e; 74 struct intel_gvt_mmio_info *e;
75 struct gvt_mmio_block *block = gvt->mmio.mmio_block;
76 int num = gvt->mmio.num_mmio_block;
75 struct gvt_firmware_header *h; 77 struct gvt_firmware_header *h;
76 void *firmware; 78 void *firmware;
77 void *p; 79 void *p;
78 unsigned long size, crc32_start; 80 unsigned long size, crc32_start;
79 int i; 81 int i, j;
80 int ret; 82 int ret;
81 83
82 size = sizeof(*h) + info->mmio_size + info->cfg_space_size; 84 size = sizeof(*h) + info->mmio_size + info->cfg_space_size;
@@ -105,6 +107,13 @@ static int expose_firmware_sysfs(struct intel_gvt *gvt)
105 hash_for_each(gvt->mmio.mmio_info_table, i, e, node) 107 hash_for_each(gvt->mmio.mmio_info_table, i, e, node)
106 *(u32 *)(p + e->offset) = I915_READ_NOTRACE(_MMIO(e->offset)); 108 *(u32 *)(p + e->offset) = I915_READ_NOTRACE(_MMIO(e->offset));
107 109
110 for (i = 0; i < num; i++, block++) {
111 for (j = 0; j < block->size; j += 4)
112 *(u32 *)(p + INTEL_GVT_MMIO_OFFSET(block->offset) + j) =
113 I915_READ_NOTRACE(_MMIO(INTEL_GVT_MMIO_OFFSET(
114 block->offset) + j));
115 }
116
108 memcpy(gvt->firmware.mmio, p, info->mmio_size); 117 memcpy(gvt->firmware.mmio, p, info->mmio_size);
109 118
110 crc32_start = offsetof(struct gvt_firmware_header, crc32) + 4; 119 crc32_start = offsetof(struct gvt_firmware_header, crc32) + 4;
diff --git a/drivers/gpu/drm/i915/gvt/gvt.h b/drivers/gpu/drm/i915/gvt/gvt.h
index 3a74e79eac2f..2964a4d01a66 100644
--- a/drivers/gpu/drm/i915/gvt/gvt.h
+++ b/drivers/gpu/drm/i915/gvt/gvt.h
@@ -149,7 +149,7 @@ struct intel_vgpu {
149 bool active; 149 bool active;
150 bool pv_notified; 150 bool pv_notified;
151 bool failsafe; 151 bool failsafe;
152 bool resetting; 152 unsigned int resetting_eng;
153 void *sched_data; 153 void *sched_data;
154 struct vgpu_sched_ctl sched_ctl; 154 struct vgpu_sched_ctl sched_ctl;
155 155
@@ -195,6 +195,15 @@ struct intel_gvt_fence {
195 unsigned long vgpu_allocated_fence_num; 195 unsigned long vgpu_allocated_fence_num;
196}; 196};
197 197
198/* Special MMIO blocks. */
199struct gvt_mmio_block {
200 unsigned int device;
201 i915_reg_t offset;
202 unsigned int size;
203 gvt_mmio_func read;
204 gvt_mmio_func write;
205};
206
198#define INTEL_GVT_MMIO_HASH_BITS 11 207#define INTEL_GVT_MMIO_HASH_BITS 11
199 208
200struct intel_gvt_mmio { 209struct intel_gvt_mmio {
@@ -214,6 +223,9 @@ struct intel_gvt_mmio {
214/* This reg could be accessed by unaligned address */ 223/* This reg could be accessed by unaligned address */
215#define F_UNALIGN (1 << 6) 224#define F_UNALIGN (1 << 6)
216 225
226 struct gvt_mmio_block *mmio_block;
227 unsigned int num_mmio_block;
228
217 DECLARE_HASHTABLE(mmio_info_table, INTEL_GVT_MMIO_HASH_BITS); 229 DECLARE_HASHTABLE(mmio_info_table, INTEL_GVT_MMIO_HASH_BITS);
218 unsigned int num_tracked_mmio; 230 unsigned int num_tracked_mmio;
219}; 231};
diff --git a/drivers/gpu/drm/i915/gvt/handlers.c b/drivers/gpu/drm/i915/gvt/handlers.c
index 17febe830ff6..feed9921b3b3 100644
--- a/drivers/gpu/drm/i915/gvt/handlers.c
+++ b/drivers/gpu/drm/i915/gvt/handlers.c
@@ -2857,31 +2857,15 @@ static int init_skl_mmio_info(struct intel_gvt *gvt)
2857 return 0; 2857 return 0;
2858} 2858}
2859 2859
2860/* Special MMIO blocks. */
2861static struct gvt_mmio_block {
2862 unsigned int device;
2863 i915_reg_t offset;
2864 unsigned int size;
2865 gvt_mmio_func read;
2866 gvt_mmio_func write;
2867} gvt_mmio_blocks[] = {
2868 {D_SKL_PLUS, _MMIO(CSR_MMIO_START_RANGE), 0x3000, NULL, NULL},
2869 {D_ALL, _MMIO(MCHBAR_MIRROR_BASE_SNB), 0x40000, NULL, NULL},
2870 {D_ALL, _MMIO(VGT_PVINFO_PAGE), VGT_PVINFO_SIZE,
2871 pvinfo_mmio_read, pvinfo_mmio_write},
2872 {D_ALL, LGC_PALETTE(PIPE_A, 0), 1024, NULL, NULL},
2873 {D_ALL, LGC_PALETTE(PIPE_B, 0), 1024, NULL, NULL},
2874 {D_ALL, LGC_PALETTE(PIPE_C, 0), 1024, NULL, NULL},
2875};
2876
2877static struct gvt_mmio_block *find_mmio_block(struct intel_gvt *gvt, 2860static struct gvt_mmio_block *find_mmio_block(struct intel_gvt *gvt,
2878 unsigned int offset) 2861 unsigned int offset)
2879{ 2862{
2880 unsigned long device = intel_gvt_get_device_type(gvt); 2863 unsigned long device = intel_gvt_get_device_type(gvt);
2881 struct gvt_mmio_block *block = gvt_mmio_blocks; 2864 struct gvt_mmio_block *block = gvt->mmio.mmio_block;
2865 int num = gvt->mmio.num_mmio_block;
2882 int i; 2866 int i;
2883 2867
2884 for (i = 0; i < ARRAY_SIZE(gvt_mmio_blocks); i++, block++) { 2868 for (i = 0; i < num; i++, block++) {
2885 if (!(device & block->device)) 2869 if (!(device & block->device))
2886 continue; 2870 continue;
2887 if (offset >= INTEL_GVT_MMIO_OFFSET(block->offset) && 2871 if (offset >= INTEL_GVT_MMIO_OFFSET(block->offset) &&
@@ -2912,6 +2896,17 @@ void intel_gvt_clean_mmio_info(struct intel_gvt *gvt)
2912 gvt->mmio.mmio_attribute = NULL; 2896 gvt->mmio.mmio_attribute = NULL;
2913} 2897}
2914 2898
2899/* Special MMIO blocks. */
2900static struct gvt_mmio_block mmio_blocks[] = {
2901 {D_SKL_PLUS, _MMIO(CSR_MMIO_START_RANGE), 0x3000, NULL, NULL},
2902 {D_ALL, _MMIO(MCHBAR_MIRROR_BASE_SNB), 0x40000, NULL, NULL},
2903 {D_ALL, _MMIO(VGT_PVINFO_PAGE), VGT_PVINFO_SIZE,
2904 pvinfo_mmio_read, pvinfo_mmio_write},
2905 {D_ALL, LGC_PALETTE(PIPE_A, 0), 1024, NULL, NULL},
2906 {D_ALL, LGC_PALETTE(PIPE_B, 0), 1024, NULL, NULL},
2907 {D_ALL, LGC_PALETTE(PIPE_C, 0), 1024, NULL, NULL},
2908};
2909
2915/** 2910/**
2916 * intel_gvt_setup_mmio_info - setup MMIO information table for GVT device 2911 * intel_gvt_setup_mmio_info - setup MMIO information table for GVT device
2917 * @gvt: GVT device 2912 * @gvt: GVT device
@@ -2951,6 +2946,9 @@ int intel_gvt_setup_mmio_info(struct intel_gvt *gvt)
2951 goto err; 2946 goto err;
2952 } 2947 }
2953 2948
2949 gvt->mmio.mmio_block = mmio_blocks;
2950 gvt->mmio.num_mmio_block = ARRAY_SIZE(mmio_blocks);
2951
2954 gvt_dbg_mmio("traced %u virtual mmio registers\n", 2952 gvt_dbg_mmio("traced %u virtual mmio registers\n",
2955 gvt->mmio.num_tracked_mmio); 2953 gvt->mmio.num_tracked_mmio);
2956 return 0; 2954 return 0;
@@ -3030,7 +3028,7 @@ int intel_vgpu_mmio_reg_rw(struct intel_vgpu *vgpu, unsigned int offset,
3030 gvt_mmio_func func; 3028 gvt_mmio_func func;
3031 int ret; 3029 int ret;
3032 3030
3033 if (WARN_ON(bytes > 4)) 3031 if (WARN_ON(bytes > 8))
3034 return -EINVAL; 3032 return -EINVAL;
3035 3033
3036 /* 3034 /*
diff --git a/drivers/gpu/drm/i915/gvt/scheduler.c b/drivers/gpu/drm/i915/gvt/scheduler.c
index 4f7057d62d88..22e08eb2d0b7 100644
--- a/drivers/gpu/drm/i915/gvt/scheduler.c
+++ b/drivers/gpu/drm/i915/gvt/scheduler.c
@@ -432,7 +432,8 @@ static void complete_current_workload(struct intel_gvt *gvt, int ring_id)
432 432
433 i915_gem_request_put(fetch_and_zero(&workload->req)); 433 i915_gem_request_put(fetch_and_zero(&workload->req));
434 434
435 if (!workload->status && !vgpu->resetting) { 435 if (!workload->status && !(vgpu->resetting_eng &
436 ENGINE_MASK(ring_id))) {
436 update_guest_context(workload); 437 update_guest_context(workload);
437 438
438 for_each_set_bit(event, workload->pending_events, 439 for_each_set_bit(event, workload->pending_events,
diff --git a/drivers/gpu/drm/i915/gvt/vgpu.c b/drivers/gpu/drm/i915/gvt/vgpu.c
index 90c14e6e3ea0..3deadcbd5a24 100644
--- a/drivers/gpu/drm/i915/gvt/vgpu.c
+++ b/drivers/gpu/drm/i915/gvt/vgpu.c
@@ -480,11 +480,13 @@ void intel_gvt_reset_vgpu_locked(struct intel_vgpu *vgpu, bool dmlr,
480{ 480{
481 struct intel_gvt *gvt = vgpu->gvt; 481 struct intel_gvt *gvt = vgpu->gvt;
482 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler; 482 struct intel_gvt_workload_scheduler *scheduler = &gvt->scheduler;
483 unsigned int resetting_eng = dmlr ? ALL_ENGINES : engine_mask;
483 484
484 gvt_dbg_core("------------------------------------------\n"); 485 gvt_dbg_core("------------------------------------------\n");
485 gvt_dbg_core("resseting vgpu%d, dmlr %d, engine_mask %08x\n", 486 gvt_dbg_core("resseting vgpu%d, dmlr %d, engine_mask %08x\n",
486 vgpu->id, dmlr, engine_mask); 487 vgpu->id, dmlr, engine_mask);
487 vgpu->resetting = true; 488
489 vgpu->resetting_eng = resetting_eng;
488 490
489 intel_vgpu_stop_schedule(vgpu); 491 intel_vgpu_stop_schedule(vgpu);
490 /* 492 /*
@@ -497,7 +499,7 @@ void intel_gvt_reset_vgpu_locked(struct intel_vgpu *vgpu, bool dmlr,
497 mutex_lock(&gvt->lock); 499 mutex_lock(&gvt->lock);
498 } 500 }
499 501
500 intel_vgpu_reset_execlist(vgpu, dmlr ? ALL_ENGINES : engine_mask); 502 intel_vgpu_reset_execlist(vgpu, resetting_eng);
501 503
502 /* full GPU reset or device model level reset */ 504 /* full GPU reset or device model level reset */
503 if (engine_mask == ALL_ENGINES || dmlr) { 505 if (engine_mask == ALL_ENGINES || dmlr) {
@@ -520,7 +522,7 @@ void intel_gvt_reset_vgpu_locked(struct intel_vgpu *vgpu, bool dmlr,
520 } 522 }
521 } 523 }
522 524
523 vgpu->resetting = false; 525 vgpu->resetting_eng = 0;
524 gvt_dbg_core("reset vgpu%d done\n", vgpu->id); 526 gvt_dbg_core("reset vgpu%d done\n", vgpu->id);
525 gvt_dbg_core("------------------------------------------\n"); 527 gvt_dbg_core("------------------------------------------\n");
526} 528}
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index 00d8967c8512..d1bd53b73738 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -4580,7 +4580,7 @@ static void gen9_sseu_device_status(struct drm_i915_private *dev_priv,
4580 4580
4581 sseu->slice_mask |= BIT(s); 4581 sseu->slice_mask |= BIT(s);
4582 4582
4583 if (IS_GEN9_BC(dev_priv)) 4583 if (IS_GEN9_BC(dev_priv) || IS_CANNONLAKE(dev_priv))
4584 sseu->subslice_mask = 4584 sseu->subslice_mask =
4585 INTEL_INFO(dev_priv)->sseu.subslice_mask; 4585 INTEL_INFO(dev_priv)->sseu.subslice_mask;
4586 4586
diff --git a/drivers/gpu/drm/i915/i915_gem_clflush.c b/drivers/gpu/drm/i915/i915_gem_clflush.c
index 152f16c11878..348b29a845c9 100644
--- a/drivers/gpu/drm/i915/i915_gem_clflush.c
+++ b/drivers/gpu/drm/i915/i915_gem_clflush.c
@@ -114,7 +114,7 @@ i915_clflush_notify(struct i915_sw_fence *fence,
114 return NOTIFY_DONE; 114 return NOTIFY_DONE;
115} 115}
116 116
117void i915_gem_clflush_object(struct drm_i915_gem_object *obj, 117bool i915_gem_clflush_object(struct drm_i915_gem_object *obj,
118 unsigned int flags) 118 unsigned int flags)
119{ 119{
120 struct clflush *clflush; 120 struct clflush *clflush;
@@ -128,7 +128,7 @@ void i915_gem_clflush_object(struct drm_i915_gem_object *obj,
128 */ 128 */
129 if (!i915_gem_object_has_struct_page(obj)) { 129 if (!i915_gem_object_has_struct_page(obj)) {
130 obj->cache_dirty = false; 130 obj->cache_dirty = false;
131 return; 131 return false;
132 } 132 }
133 133
134 /* If the GPU is snooping the contents of the CPU cache, 134 /* If the GPU is snooping the contents of the CPU cache,
@@ -140,7 +140,7 @@ void i915_gem_clflush_object(struct drm_i915_gem_object *obj,
140 * tracking. 140 * tracking.
141 */ 141 */
142 if (!(flags & I915_CLFLUSH_FORCE) && obj->cache_coherent) 142 if (!(flags & I915_CLFLUSH_FORCE) && obj->cache_coherent)
143 return; 143 return false;
144 144
145 trace_i915_gem_object_clflush(obj); 145 trace_i915_gem_object_clflush(obj);
146 146
@@ -179,4 +179,5 @@ void i915_gem_clflush_object(struct drm_i915_gem_object *obj,
179 } 179 }
180 180
181 obj->cache_dirty = false; 181 obj->cache_dirty = false;
182 return true;
182} 183}
diff --git a/drivers/gpu/drm/i915/i915_gem_clflush.h b/drivers/gpu/drm/i915/i915_gem_clflush.h
index 2455a7820937..f390247561b3 100644
--- a/drivers/gpu/drm/i915/i915_gem_clflush.h
+++ b/drivers/gpu/drm/i915/i915_gem_clflush.h
@@ -28,7 +28,7 @@
28struct drm_i915_private; 28struct drm_i915_private;
29struct drm_i915_gem_object; 29struct drm_i915_gem_object;
30 30
31void i915_gem_clflush_object(struct drm_i915_gem_object *obj, 31bool i915_gem_clflush_object(struct drm_i915_gem_object *obj,
32 unsigned int flags); 32 unsigned int flags);
33#define I915_CLFLUSH_FORCE BIT(0) 33#define I915_CLFLUSH_FORCE BIT(0)
34#define I915_CLFLUSH_SYNC BIT(1) 34#define I915_CLFLUSH_SYNC BIT(1)
diff --git a/drivers/gpu/drm/i915/i915_gem_context.c b/drivers/gpu/drm/i915/i915_gem_context.c
index 39ed58a21fc1..e1e971ee2ed5 100644
--- a/drivers/gpu/drm/i915/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/i915_gem_context.c
@@ -688,19 +688,19 @@ static inline bool skip_rcs_switch(struct i915_hw_ppgtt *ppgtt,
688} 688}
689 689
690static bool 690static bool
691needs_pd_load_pre(struct i915_hw_ppgtt *ppgtt, 691needs_pd_load_pre(struct i915_hw_ppgtt *ppgtt, struct intel_engine_cs *engine)
692 struct intel_engine_cs *engine,
693 struct i915_gem_context *to)
694{ 692{
693 struct i915_gem_context *from = engine->legacy_active_context;
694
695 if (!ppgtt) 695 if (!ppgtt)
696 return false; 696 return false;
697 697
698 /* Always load the ppgtt on first use */ 698 /* Always load the ppgtt on first use */
699 if (!engine->legacy_active_context) 699 if (!from)
700 return true; 700 return true;
701 701
702 /* Same context without new entries, skip */ 702 /* Same context without new entries, skip */
703 if (engine->legacy_active_context == to && 703 if ((!from->ppgtt || from->ppgtt == ppgtt) &&
704 !(intel_engine_flag(engine) & ppgtt->pd_dirty_rings)) 704 !(intel_engine_flag(engine) & ppgtt->pd_dirty_rings))
705 return false; 705 return false;
706 706
@@ -744,7 +744,7 @@ static int do_rcs_switch(struct drm_i915_gem_request *req)
744 if (skip_rcs_switch(ppgtt, engine, to)) 744 if (skip_rcs_switch(ppgtt, engine, to))
745 return 0; 745 return 0;
746 746
747 if (needs_pd_load_pre(ppgtt, engine, to)) { 747 if (needs_pd_load_pre(ppgtt, engine)) {
748 /* Older GENs and non render rings still want the load first, 748 /* Older GENs and non render rings still want the load first,
749 * "PP_DCLV followed by PP_DIR_BASE register through Load 749 * "PP_DCLV followed by PP_DIR_BASE register through Load
750 * Register Immediate commands in Ring Buffer before submitting 750 * Register Immediate commands in Ring Buffer before submitting
@@ -841,7 +841,7 @@ int i915_switch_context(struct drm_i915_gem_request *req)
841 struct i915_hw_ppgtt *ppgtt = 841 struct i915_hw_ppgtt *ppgtt =
842 to->ppgtt ?: req->i915->mm.aliasing_ppgtt; 842 to->ppgtt ?: req->i915->mm.aliasing_ppgtt;
843 843
844 if (needs_pd_load_pre(ppgtt, engine, to)) { 844 if (needs_pd_load_pre(ppgtt, engine)) {
845 int ret; 845 int ret;
846 846
847 trace_switch_mm(engine, to); 847 trace_switch_mm(engine, to);
@@ -852,6 +852,7 @@ int i915_switch_context(struct drm_i915_gem_request *req)
852 ppgtt->pd_dirty_rings &= ~intel_engine_flag(engine); 852 ppgtt->pd_dirty_rings &= ~intel_engine_flag(engine);
853 } 853 }
854 854
855 engine->legacy_active_context = to;
855 return 0; 856 return 0;
856 } 857 }
857 858
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index 054b2e54cdaf..e9503f6d1100 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -560,9 +560,6 @@ static int eb_reserve_vma(const struct i915_execbuffer *eb,
560 eb->args->flags |= __EXEC_HAS_RELOC; 560 eb->args->flags |= __EXEC_HAS_RELOC;
561 } 561 }
562 562
563 entry->flags |= __EXEC_OBJECT_HAS_PIN;
564 GEM_BUG_ON(eb_vma_misplaced(entry, vma));
565
566 if (unlikely(entry->flags & EXEC_OBJECT_NEEDS_FENCE)) { 563 if (unlikely(entry->flags & EXEC_OBJECT_NEEDS_FENCE)) {
567 err = i915_vma_get_fence(vma); 564 err = i915_vma_get_fence(vma);
568 if (unlikely(err)) { 565 if (unlikely(err)) {
@@ -574,6 +571,9 @@ static int eb_reserve_vma(const struct i915_execbuffer *eb,
574 entry->flags |= __EXEC_OBJECT_HAS_FENCE; 571 entry->flags |= __EXEC_OBJECT_HAS_FENCE;
575 } 572 }
576 573
574 entry->flags |= __EXEC_OBJECT_HAS_PIN;
575 GEM_BUG_ON(eb_vma_misplaced(entry, vma));
576
577 return 0; 577 return 0;
578} 578}
579 579
@@ -1458,7 +1458,7 @@ static int eb_relocate_vma(struct i915_execbuffer *eb, struct i915_vma *vma)
1458 * to read. However, if the array is not writable the user loses 1458 * to read. However, if the array is not writable the user loses
1459 * the updated relocation values. 1459 * the updated relocation values.
1460 */ 1460 */
1461 if (unlikely(!access_ok(VERIFY_READ, urelocs, remain*sizeof(urelocs)))) 1461 if (unlikely(!access_ok(VERIFY_READ, urelocs, remain*sizeof(*urelocs))))
1462 return -EFAULT; 1462 return -EFAULT;
1463 1463
1464 do { 1464 do {
@@ -1775,7 +1775,7 @@ out:
1775 } 1775 }
1776 } 1776 }
1777 1777
1778 return err ?: have_copy; 1778 return err;
1779} 1779}
1780 1780
1781static int eb_relocate(struct i915_execbuffer *eb) 1781static int eb_relocate(struct i915_execbuffer *eb)
@@ -1825,7 +1825,7 @@ static int eb_move_to_gpu(struct i915_execbuffer *eb)
1825 int err; 1825 int err;
1826 1826
1827 for (i = 0; i < count; i++) { 1827 for (i = 0; i < count; i++) {
1828 const struct drm_i915_gem_exec_object2 *entry = &eb->exec[i]; 1828 struct drm_i915_gem_exec_object2 *entry = &eb->exec[i];
1829 struct i915_vma *vma = exec_to_vma(entry); 1829 struct i915_vma *vma = exec_to_vma(entry);
1830 struct drm_i915_gem_object *obj = vma->obj; 1830 struct drm_i915_gem_object *obj = vma->obj;
1831 1831
@@ -1841,12 +1841,14 @@ static int eb_move_to_gpu(struct i915_execbuffer *eb)
1841 eb->request->capture_list = capture; 1841 eb->request->capture_list = capture;
1842 } 1842 }
1843 1843
1844 if (unlikely(obj->cache_dirty && !obj->cache_coherent)) {
1845 if (i915_gem_clflush_object(obj, 0))
1846 entry->flags &= ~EXEC_OBJECT_ASYNC;
1847 }
1848
1844 if (entry->flags & EXEC_OBJECT_ASYNC) 1849 if (entry->flags & EXEC_OBJECT_ASYNC)
1845 goto skip_flushes; 1850 goto skip_flushes;
1846 1851
1847 if (unlikely(obj->cache_dirty && !obj->cache_coherent))
1848 i915_gem_clflush_object(obj, 0);
1849
1850 err = i915_gem_request_await_object 1852 err = i915_gem_request_await_object
1851 (eb->request, obj, entry->flags & EXEC_OBJECT_WRITE); 1853 (eb->request, obj, entry->flags & EXEC_OBJECT_WRITE);
1852 if (err) 1854 if (err)
@@ -2209,7 +2211,7 @@ i915_gem_do_execbuffer(struct drm_device *dev,
2209 goto err_unlock; 2211 goto err_unlock;
2210 2212
2211 err = eb_relocate(&eb); 2213 err = eb_relocate(&eb);
2212 if (err) 2214 if (err) {
2213 /* 2215 /*
2214 * If the user expects the execobject.offset and 2216 * If the user expects the execobject.offset and
2215 * reloc.presumed_offset to be an exact match, 2217 * reloc.presumed_offset to be an exact match,
@@ -2218,8 +2220,8 @@ i915_gem_do_execbuffer(struct drm_device *dev,
2218 * relocation. 2220 * relocation.
2219 */ 2221 */
2220 args->flags &= ~__EXEC_HAS_RELOC; 2222 args->flags &= ~__EXEC_HAS_RELOC;
2221 if (err < 0)
2222 goto err_vma; 2223 goto err_vma;
2224 }
2223 2225
2224 if (unlikely(eb.batch->exec_entry->flags & EXEC_OBJECT_WRITE)) { 2226 if (unlikely(eb.batch->exec_entry->flags & EXEC_OBJECT_WRITE)) {
2225 DRM_DEBUG("Attempting to use self-modifying batch buffer\n"); 2227 DRM_DEBUG("Attempting to use self-modifying batch buffer\n");
diff --git a/drivers/gpu/drm/i915/i915_gem_render_state.c b/drivers/gpu/drm/i915/i915_gem_render_state.c
index 7032c542a9b1..4dd4c2159a92 100644
--- a/drivers/gpu/drm/i915/i915_gem_render_state.c
+++ b/drivers/gpu/drm/i915/i915_gem_render_state.c
@@ -242,6 +242,10 @@ int i915_gem_render_state_emit(struct drm_i915_gem_request *req)
242 goto err_unpin; 242 goto err_unpin;
243 } 243 }
244 244
245 ret = req->engine->emit_flush(req, EMIT_INVALIDATE);
246 if (ret)
247 goto err_unpin;
248
245 ret = req->engine->emit_bb_start(req, 249 ret = req->engine->emit_bb_start(req,
246 so->batch_offset, so->batch_size, 250 so->batch_offset, so->batch_size,
247 I915_DISPATCH_SECURE); 251 I915_DISPATCH_SECURE);
diff --git a/drivers/gpu/drm/i915/i915_gem_shrinker.c b/drivers/gpu/drm/i915/i915_gem_shrinker.c
index 1032f98add11..77fb39808131 100644
--- a/drivers/gpu/drm/i915/i915_gem_shrinker.c
+++ b/drivers/gpu/drm/i915/i915_gem_shrinker.c
@@ -43,16 +43,21 @@ static bool shrinker_lock(struct drm_i915_private *dev_priv, bool *unlock)
43 return true; 43 return true;
44 44
45 case MUTEX_TRYLOCK_FAILED: 45 case MUTEX_TRYLOCK_FAILED:
46 *unlock = false;
47 preempt_disable();
46 do { 48 do {
47 cpu_relax(); 49 cpu_relax();
48 if (mutex_trylock(&dev_priv->drm.struct_mutex)) { 50 if (mutex_trylock(&dev_priv->drm.struct_mutex)) {
49 case MUTEX_TRYLOCK_SUCCESS:
50 *unlock = true; 51 *unlock = true;
51 return true; 52 break;
52 } 53 }
53 } while (!need_resched()); 54 } while (!need_resched());
55 preempt_enable();
56 return *unlock;
54 57
55 return false; 58 case MUTEX_TRYLOCK_SUCCESS:
59 *unlock = true;
60 return true;
56 } 61 }
57 62
58 BUG(); 63 BUG();
diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
index 9cd22f83b0cf..f33d90226704 100644
--- a/drivers/gpu/drm/i915/i915_perf.c
+++ b/drivers/gpu/drm/i915/i915_perf.c
@@ -1601,11 +1601,11 @@ static int gen8_emit_oa_config(struct drm_i915_gem_request *req)
1601 u32 *cs; 1601 u32 *cs;
1602 int i; 1602 int i;
1603 1603
1604 cs = intel_ring_begin(req, n_flex_regs * 2 + 4); 1604 cs = intel_ring_begin(req, ARRAY_SIZE(flex_mmio) * 2 + 4);
1605 if (IS_ERR(cs)) 1605 if (IS_ERR(cs))
1606 return PTR_ERR(cs); 1606 return PTR_ERR(cs);
1607 1607
1608 *cs++ = MI_LOAD_REGISTER_IMM(n_flex_regs + 1); 1608 *cs++ = MI_LOAD_REGISTER_IMM(ARRAY_SIZE(flex_mmio) + 1);
1609 1609
1610 *cs++ = i915_mmio_reg_offset(GEN8_OACTXCONTROL); 1610 *cs++ = i915_mmio_reg_offset(GEN8_OACTXCONTROL);
1611 *cs++ = (dev_priv->perf.oa.period_exponent << GEN8_OA_TIMER_PERIOD_SHIFT) | 1611 *cs++ = (dev_priv->perf.oa.period_exponent << GEN8_OA_TIMER_PERIOD_SHIFT) |
diff --git a/drivers/gpu/drm/i915/i915_vma.h b/drivers/gpu/drm/i915/i915_vma.h
index 4a673fc1a432..20cf272c97b1 100644
--- a/drivers/gpu/drm/i915/i915_vma.h
+++ b/drivers/gpu/drm/i915/i915_vma.h
@@ -284,12 +284,12 @@ static inline void __i915_vma_pin(struct i915_vma *vma)
284 284
285static inline void __i915_vma_unpin(struct i915_vma *vma) 285static inline void __i915_vma_unpin(struct i915_vma *vma)
286{ 286{
287 GEM_BUG_ON(!i915_vma_is_pinned(vma));
288 vma->flags--; 287 vma->flags--;
289} 288}
290 289
291static inline void i915_vma_unpin(struct i915_vma *vma) 290static inline void i915_vma_unpin(struct i915_vma *vma)
292{ 291{
292 GEM_BUG_ON(!i915_vma_is_pinned(vma));
293 GEM_BUG_ON(!drm_mm_node_allocated(&vma->node)); 293 GEM_BUG_ON(!drm_mm_node_allocated(&vma->node));
294 __i915_vma_unpin(vma); 294 __i915_vma_unpin(vma);
295} 295}
diff --git a/drivers/gpu/drm/i915/intel_color.c b/drivers/gpu/drm/i915/intel_color.c
index 306c6b06b330..17c4ae7e4e7c 100644
--- a/drivers/gpu/drm/i915/intel_color.c
+++ b/drivers/gpu/drm/i915/intel_color.c
@@ -398,6 +398,7 @@ static void bdw_load_gamma_lut(struct drm_crtc_state *state, u32 offset)
398 } 398 }
399 399
400 /* Program the max register to clamp values > 1.0. */ 400 /* Program the max register to clamp values > 1.0. */
401 i = lut_size - 1;
401 I915_WRITE(PREC_PAL_GC_MAX(pipe, 0), 402 I915_WRITE(PREC_PAL_GC_MAX(pipe, 0),
402 drm_color_lut_extract(lut[i].red, 16)); 403 drm_color_lut_extract(lut[i].red, 16));
403 I915_WRITE(PREC_PAL_GC_MAX(pipe, 1), 404 I915_WRITE(PREC_PAL_GC_MAX(pipe, 1),
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index 80e96f1f49d2..d3b3252a8742 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -1762,7 +1762,7 @@ cnl_get_buf_trans_edp(struct drm_i915_private *dev_priv,
1762 if (dev_priv->vbt.edp.low_vswing) { 1762 if (dev_priv->vbt.edp.low_vswing) {
1763 if (voltage == VOLTAGE_INFO_0_85V) { 1763 if (voltage == VOLTAGE_INFO_0_85V) {
1764 *n_entries = ARRAY_SIZE(cnl_ddi_translations_edp_0_85V); 1764 *n_entries = ARRAY_SIZE(cnl_ddi_translations_edp_0_85V);
1765 return cnl_ddi_translations_dp_0_85V; 1765 return cnl_ddi_translations_edp_0_85V;
1766 } else if (voltage == VOLTAGE_INFO_0_95V) { 1766 } else if (voltage == VOLTAGE_INFO_0_95V) {
1767 *n_entries = ARRAY_SIZE(cnl_ddi_translations_edp_0_95V); 1767 *n_entries = ARRAY_SIZE(cnl_ddi_translations_edp_0_95V);
1768 return cnl_ddi_translations_edp_0_95V; 1768 return cnl_ddi_translations_edp_0_95V;
@@ -1896,8 +1896,8 @@ static void cnl_ddi_vswing_sequence(struct intel_encoder *encoder, u32 level)
1896 val = I915_READ(CNL_PORT_TX_DW4_LN(port, ln)); 1896 val = I915_READ(CNL_PORT_TX_DW4_LN(port, ln));
1897 val &= ~LOADGEN_SELECT; 1897 val &= ~LOADGEN_SELECT;
1898 1898
1899 if (((rate < 600000) && (width == 4) && (ln >= 1)) || 1899 if ((rate <= 600000 && width == 4 && ln >= 1) ||
1900 ((rate < 600000) && (width < 4) && ((ln == 1) || (ln == 2)))) { 1900 (rate <= 600000 && width < 4 && (ln == 1 || ln == 2))) {
1901 val |= LOADGEN_SELECT; 1901 val |= LOADGEN_SELECT;
1902 } 1902 }
1903 I915_WRITE(CNL_PORT_TX_DW4_LN(port, ln), val); 1903 I915_WRITE(CNL_PORT_TX_DW4_LN(port, ln), val);
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index dec9e58545a1..cc484b56eeaa 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -3427,26 +3427,6 @@ static void intel_complete_page_flips(struct drm_i915_private *dev_priv)
3427 intel_finish_page_flip_cs(dev_priv, crtc->pipe); 3427 intel_finish_page_flip_cs(dev_priv, crtc->pipe);
3428} 3428}
3429 3429
3430static void intel_update_primary_planes(struct drm_device *dev)
3431{
3432 struct drm_crtc *crtc;
3433
3434 for_each_crtc(dev, crtc) {
3435 struct intel_plane *plane = to_intel_plane(crtc->primary);
3436 struct intel_plane_state *plane_state =
3437 to_intel_plane_state(plane->base.state);
3438
3439 if (plane_state->base.visible) {
3440 trace_intel_update_plane(&plane->base,
3441 to_intel_crtc(crtc));
3442
3443 plane->update_plane(plane,
3444 to_intel_crtc_state(crtc->state),
3445 plane_state);
3446 }
3447 }
3448}
3449
3450static int 3430static int
3451__intel_display_resume(struct drm_device *dev, 3431__intel_display_resume(struct drm_device *dev,
3452 struct drm_atomic_state *state, 3432 struct drm_atomic_state *state,
@@ -3499,6 +3479,19 @@ void intel_prepare_reset(struct drm_i915_private *dev_priv)
3499 struct drm_atomic_state *state; 3479 struct drm_atomic_state *state;
3500 int ret; 3480 int ret;
3501 3481
3482
3483 /* reset doesn't touch the display */
3484 if (!i915.force_reset_modeset_test &&
3485 !gpu_reset_clobbers_display(dev_priv))
3486 return;
3487
3488 /* We have a modeset vs reset deadlock, defensively unbreak it.
3489 *
3490 * FIXME: We can do a _lot_ better, this is just a first iteration.
3491 */
3492 i915_gem_set_wedged(dev_priv);
3493 DRM_DEBUG_DRIVER("Wedging GPU to avoid deadlocks with pending modeset updates\n");
3494
3502 /* 3495 /*
3503 * Need mode_config.mutex so that we don't 3496 * Need mode_config.mutex so that we don't
3504 * trample ongoing ->detect() and whatnot. 3497 * trample ongoing ->detect() and whatnot.
@@ -3512,12 +3505,6 @@ void intel_prepare_reset(struct drm_i915_private *dev_priv)
3512 3505
3513 drm_modeset_backoff(ctx); 3506 drm_modeset_backoff(ctx);
3514 } 3507 }
3515
3516 /* reset doesn't touch the display, but flips might get nuked anyway, */
3517 if (!i915.force_reset_modeset_test &&
3518 !gpu_reset_clobbers_display(dev_priv))
3519 return;
3520
3521 /* 3508 /*
3522 * Disabling the crtcs gracefully seems nicer. Also the 3509 * Disabling the crtcs gracefully seems nicer. Also the
3523 * g33 docs say we should at least disable all the planes. 3510 * g33 docs say we should at least disable all the planes.
@@ -3547,6 +3534,14 @@ void intel_finish_reset(struct drm_i915_private *dev_priv)
3547 struct drm_atomic_state *state = dev_priv->modeset_restore_state; 3534 struct drm_atomic_state *state = dev_priv->modeset_restore_state;
3548 int ret; 3535 int ret;
3549 3536
3537 /* reset doesn't touch the display */
3538 if (!i915.force_reset_modeset_test &&
3539 !gpu_reset_clobbers_display(dev_priv))
3540 return;
3541
3542 if (!state)
3543 goto unlock;
3544
3550 /* 3545 /*
3551 * Flips in the rings will be nuked by the reset, 3546 * Flips in the rings will be nuked by the reset,
3552 * so complete all pending flips so that user space 3547 * so complete all pending flips so that user space
@@ -3558,22 +3553,10 @@ void intel_finish_reset(struct drm_i915_private *dev_priv)
3558 3553
3559 /* reset doesn't touch the display */ 3554 /* reset doesn't touch the display */
3560 if (!gpu_reset_clobbers_display(dev_priv)) { 3555 if (!gpu_reset_clobbers_display(dev_priv)) {
3561 if (!state) { 3556 /* for testing only restore the display */
3562 /* 3557 ret = __intel_display_resume(dev, state, ctx);
3563 * Flips in the rings have been nuked by the reset,
3564 * so update the base address of all primary
3565 * planes to the the last fb to make sure we're
3566 * showing the correct fb after a reset.
3567 *
3568 * FIXME: Atomic will make this obsolete since we won't schedule
3569 * CS-based flips (which might get lost in gpu resets) any more.
3570 */
3571 intel_update_primary_planes(dev);
3572 } else {
3573 ret = __intel_display_resume(dev, state, ctx);
3574 if (ret) 3558 if (ret)
3575 DRM_ERROR("Restoring old state failed with %i\n", ret); 3559 DRM_ERROR("Restoring old state failed with %i\n", ret);
3576 }
3577 } else { 3560 } else {
3578 /* 3561 /*
3579 * The display has been reset as well, 3562 * The display has been reset as well,
@@ -3597,8 +3580,8 @@ void intel_finish_reset(struct drm_i915_private *dev_priv)
3597 intel_hpd_init(dev_priv); 3580 intel_hpd_init(dev_priv);
3598 } 3581 }
3599 3582
3600 if (state) 3583 drm_atomic_state_put(state);
3601 drm_atomic_state_put(state); 3584unlock:
3602 drm_modeset_drop_locks(ctx); 3585 drm_modeset_drop_locks(ctx);
3603 drm_modeset_acquire_fini(ctx); 3586 drm_modeset_acquire_fini(ctx);
3604 mutex_unlock(&dev->mode_config.mutex); 3587 mutex_unlock(&dev->mode_config.mutex);
@@ -9117,6 +9100,13 @@ static bool haswell_get_pipe_config(struct intel_crtc *crtc,
9117 u64 power_domain_mask; 9100 u64 power_domain_mask;
9118 bool active; 9101 bool active;
9119 9102
9103 if (INTEL_GEN(dev_priv) >= 9) {
9104 intel_crtc_init_scalers(crtc, pipe_config);
9105
9106 pipe_config->scaler_state.scaler_id = -1;
9107 pipe_config->scaler_state.scaler_users &= ~(1 << SKL_CRTC_INDEX);
9108 }
9109
9120 power_domain = POWER_DOMAIN_PIPE(crtc->pipe); 9110 power_domain = POWER_DOMAIN_PIPE(crtc->pipe);
9121 if (!intel_display_power_get_if_enabled(dev_priv, power_domain)) 9111 if (!intel_display_power_get_if_enabled(dev_priv, power_domain))
9122 return false; 9112 return false;
@@ -9145,13 +9135,6 @@ static bool haswell_get_pipe_config(struct intel_crtc *crtc,
9145 pipe_config->gamma_mode = 9135 pipe_config->gamma_mode =
9146 I915_READ(GAMMA_MODE(crtc->pipe)) & GAMMA_MODE_MODE_MASK; 9136 I915_READ(GAMMA_MODE(crtc->pipe)) & GAMMA_MODE_MODE_MASK;
9147 9137
9148 if (INTEL_GEN(dev_priv) >= 9) {
9149 intel_crtc_init_scalers(crtc, pipe_config);
9150
9151 pipe_config->scaler_state.scaler_id = -1;
9152 pipe_config->scaler_state.scaler_users &= ~(1 << SKL_CRTC_INDEX);
9153 }
9154
9155 power_domain = POWER_DOMAIN_PIPE_PANEL_FITTER(crtc->pipe); 9138 power_domain = POWER_DOMAIN_PIPE_PANEL_FITTER(crtc->pipe);
9156 if (intel_display_power_get_if_enabled(dev_priv, power_domain)) { 9139 if (intel_display_power_get_if_enabled(dev_priv, power_domain)) {
9157 power_domain_mask |= BIT_ULL(power_domain); 9140 power_domain_mask |= BIT_ULL(power_domain);
@@ -9540,7 +9523,16 @@ static void i9xx_update_cursor(struct intel_plane *plane,
9540 * On some platforms writing CURCNTR first will also 9523 * On some platforms writing CURCNTR first will also
9541 * cause CURPOS to be armed by the CURBASE write. 9524 * cause CURPOS to be armed by the CURBASE write.
9542 * Without the CURCNTR write the CURPOS write would 9525 * Without the CURCNTR write the CURPOS write would
9543 * arm itself. 9526 * arm itself. Thus we always start the full update
9527 * with a CURCNTR write.
9528 *
9529 * On other platforms CURPOS always requires the
9530 * CURBASE write to arm the update. Additonally
9531 * a write to any of the cursor register will cancel
9532 * an already armed cursor update. Thus leaving out
9533 * the CURBASE write after CURPOS could lead to a
9534 * cursor that doesn't appear to move, or even change
9535 * shape. Thus we always write CURBASE.
9544 * 9536 *
9545 * CURCNTR and CUR_FBC_CTL are always 9537 * CURCNTR and CUR_FBC_CTL are always
9546 * armed by the CURBASE write only. 9538 * armed by the CURBASE write only.
@@ -9559,6 +9551,7 @@ static void i9xx_update_cursor(struct intel_plane *plane,
9559 plane->cursor.cntl = cntl; 9551 plane->cursor.cntl = cntl;
9560 } else { 9552 } else {
9561 I915_WRITE_FW(CURPOS(pipe), pos); 9553 I915_WRITE_FW(CURPOS(pipe), pos);
9554 I915_WRITE_FW(CURBASE(pipe), base);
9562 } 9555 }
9563 9556
9564 POSTING_READ_FW(CURBASE(pipe)); 9557 POSTING_READ_FW(CURBASE(pipe));
diff --git a/drivers/gpu/drm/i915/intel_gvt.c b/drivers/gpu/drm/i915/intel_gvt.c
index 52d5b82790d9..c17ed0e62b67 100644
--- a/drivers/gpu/drm/i915/intel_gvt.c
+++ b/drivers/gpu/drm/i915/intel_gvt.c
@@ -45,7 +45,7 @@ static bool is_supported_device(struct drm_i915_private *dev_priv)
45 return true; 45 return true;
46 if (IS_SKYLAKE(dev_priv)) 46 if (IS_SKYLAKE(dev_priv))
47 return true; 47 return true;
48 if (IS_KABYLAKE(dev_priv) && INTEL_DEVID(dev_priv) == 0x591D) 48 if (IS_KABYLAKE(dev_priv))
49 return true; 49 return true;
50 return false; 50 return false;
51} 51}
diff --git a/drivers/gpu/drm/i915/intel_lrc.h b/drivers/gpu/drm/i915/intel_lrc.h
index 52b3a1fd4059..57ef5833c427 100644
--- a/drivers/gpu/drm/i915/intel_lrc.h
+++ b/drivers/gpu/drm/i915/intel_lrc.h
@@ -63,7 +63,6 @@ enum {
63}; 63};
64 64
65/* Logical Rings */ 65/* Logical Rings */
66void intel_logical_ring_stop(struct intel_engine_cs *engine);
67void intel_logical_ring_cleanup(struct intel_engine_cs *engine); 66void intel_logical_ring_cleanup(struct intel_engine_cs *engine);
68int logical_render_ring_init(struct intel_engine_cs *engine); 67int logical_render_ring_init(struct intel_engine_cs *engine);
69int logical_xcs_ring_init(struct intel_engine_cs *engine); 68int logical_xcs_ring_init(struct intel_engine_cs *engine);
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index 96c2cbd81869..593349be8b9d 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -469,7 +469,7 @@ static u32 intel_panel_compute_brightness(struct intel_connector *connector,
469 469
470 if (i915.invert_brightness > 0 || 470 if (i915.invert_brightness > 0 ||
471 dev_priv->quirks & QUIRK_INVERT_BRIGHTNESS) { 471 dev_priv->quirks & QUIRK_INVERT_BRIGHTNESS) {
472 return panel->backlight.max - val; 472 return panel->backlight.max - val + panel->backlight.min;
473 } 473 }
474 474
475 return val; 475 return val;
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index 48ea0fca1f72..40b224b44d1b 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -4463,8 +4463,8 @@ static int skl_compute_plane_wm(const struct drm_i915_private *dev_priv,
4463 if ((cpp * cstate->base.adjusted_mode.crtc_htotal / 512 < 1) && 4463 if ((cpp * cstate->base.adjusted_mode.crtc_htotal / 512 < 1) &&
4464 (plane_bytes_per_line / 512 < 1)) 4464 (plane_bytes_per_line / 512 < 1))
4465 selected_result = method2; 4465 selected_result = method2;
4466 else if ((ddb_allocation && ddb_allocation / 4466 else if (ddb_allocation >=
4467 fixed_16_16_to_u32_round_up(plane_blocks_per_line)) >= 1) 4467 fixed_16_16_to_u32_round_up(plane_blocks_per_line))
4468 selected_result = min_fixed_16_16(method1, method2); 4468 selected_result = min_fixed_16_16(method1, method2);
4469 else if (latency >= linetime_us) 4469 else if (latency >= linetime_us)
4470 selected_result = min_fixed_16_16(method1, method2); 4470 selected_result = min_fixed_16_16(method1, method2);
diff --git a/drivers/gpu/drm/i915/selftests/mock_gem_device.c b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
index 627e2aa09766..8cdec455cf7d 100644
--- a/drivers/gpu/drm/i915/selftests/mock_gem_device.c
+++ b/drivers/gpu/drm/i915/selftests/mock_gem_device.c
@@ -206,7 +206,7 @@ struct drm_i915_private *mock_gem_device(void)
206 mkwrite_device_info(i915)->ring_mask = BIT(0); 206 mkwrite_device_info(i915)->ring_mask = BIT(0);
207 i915->engine[RCS] = mock_engine(i915, "mock"); 207 i915->engine[RCS] = mock_engine(i915, "mock");
208 if (!i915->engine[RCS]) 208 if (!i915->engine[RCS])
209 goto err_dependencies; 209 goto err_priorities;
210 210
211 i915->kernel_context = mock_context(i915, NULL); 211 i915->kernel_context = mock_context(i915, NULL);
212 if (!i915->kernel_context) 212 if (!i915->kernel_context)
diff --git a/drivers/gpu/drm/imx/ipuv3-plane.c b/drivers/gpu/drm/imx/ipuv3-plane.c
index 49546222c6d3..6276bb834b4f 100644
--- a/drivers/gpu/drm/imx/ipuv3-plane.c
+++ b/drivers/gpu/drm/imx/ipuv3-plane.c
@@ -54,7 +54,7 @@ static const uint32_t ipu_plane_formats[] = {
54 DRM_FORMAT_RGBA8888, 54 DRM_FORMAT_RGBA8888,
55 DRM_FORMAT_RGBX8888, 55 DRM_FORMAT_RGBX8888,
56 DRM_FORMAT_BGRA8888, 56 DRM_FORMAT_BGRA8888,
57 DRM_FORMAT_BGRA8888, 57 DRM_FORMAT_BGRX8888,
58 DRM_FORMAT_UYVY, 58 DRM_FORMAT_UYVY,
59 DRM_FORMAT_VYUY, 59 DRM_FORMAT_VYUY,
60 DRM_FORMAT_YUYV, 60 DRM_FORMAT_YUYV,
diff --git a/drivers/gpu/drm/imx/parallel-display.c b/drivers/gpu/drm/imx/parallel-display.c
index 636031a30e17..8aca20209cb8 100644
--- a/drivers/gpu/drm/imx/parallel-display.c
+++ b/drivers/gpu/drm/imx/parallel-display.c
@@ -237,7 +237,7 @@ static int imx_pd_bind(struct device *dev, struct device *master, void *data)
237 237
238 /* port@1 is the output port */ 238 /* port@1 is the output port */
239 ret = drm_of_find_panel_or_bridge(np, 1, 0, &imxpd->panel, &imxpd->bridge); 239 ret = drm_of_find_panel_or_bridge(np, 1, 0, &imxpd->panel, &imxpd->bridge);
240 if (ret) 240 if (ret && ret != -ENODEV)
241 return ret; 241 return ret;
242 242
243 imxpd->dev = dev; 243 imxpd->dev = dev;
diff --git a/drivers/gpu/drm/msm/Kconfig b/drivers/gpu/drm/msm/Kconfig
index b638d192ce5e..99d39b2aefa6 100644
--- a/drivers/gpu/drm/msm/Kconfig
+++ b/drivers/gpu/drm/msm/Kconfig
@@ -5,7 +5,7 @@ config DRM_MSM
5 depends on ARCH_QCOM || (ARM && COMPILE_TEST) 5 depends on ARCH_QCOM || (ARM && COMPILE_TEST)
6 depends on OF && COMMON_CLK 6 depends on OF && COMMON_CLK
7 depends on MMU 7 depends on MMU
8 select QCOM_MDT_LOADER 8 select QCOM_MDT_LOADER if ARCH_QCOM
9 select REGULATOR 9 select REGULATOR
10 select DRM_KMS_HELPER 10 select DRM_KMS_HELPER
11 select DRM_PANEL 11 select DRM_PANEL
diff --git a/drivers/gpu/drm/msm/adreno/a5xx_gpu.c b/drivers/gpu/drm/msm/adreno/a5xx_gpu.c
index b4b54f1c24bc..f9eae03aa1dc 100644
--- a/drivers/gpu/drm/msm/adreno/a5xx_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/a5xx_gpu.c
@@ -15,7 +15,7 @@
15#include <linux/cpumask.h> 15#include <linux/cpumask.h>
16#include <linux/qcom_scm.h> 16#include <linux/qcom_scm.h>
17#include <linux/dma-mapping.h> 17#include <linux/dma-mapping.h>
18#include <linux/of_reserved_mem.h> 18#include <linux/of_address.h>
19#include <linux/soc/qcom/mdt_loader.h> 19#include <linux/soc/qcom/mdt_loader.h>
20#include "msm_gem.h" 20#include "msm_gem.h"
21#include "msm_mmu.h" 21#include "msm_mmu.h"
@@ -26,16 +26,34 @@ static void a5xx_dump(struct msm_gpu *gpu);
26 26
27#define GPU_PAS_ID 13 27#define GPU_PAS_ID 13
28 28
29#if IS_ENABLED(CONFIG_QCOM_MDT_LOADER)
30
31static int zap_shader_load_mdt(struct device *dev, const char *fwname) 29static int zap_shader_load_mdt(struct device *dev, const char *fwname)
32{ 30{
33 const struct firmware *fw; 31 const struct firmware *fw;
32 struct device_node *np;
33 struct resource r;
34 phys_addr_t mem_phys; 34 phys_addr_t mem_phys;
35 ssize_t mem_size; 35 ssize_t mem_size;
36 void *mem_region = NULL; 36 void *mem_region = NULL;
37 int ret; 37 int ret;
38 38
39 if (!IS_ENABLED(CONFIG_ARCH_QCOM))
40 return -EINVAL;
41
42 np = of_get_child_by_name(dev->of_node, "zap-shader");
43 if (!np)
44 return -ENODEV;
45
46 np = of_parse_phandle(np, "memory-region", 0);
47 if (!np)
48 return -EINVAL;
49
50 ret = of_address_to_resource(np, 0, &r);
51 if (ret)
52 return ret;
53
54 mem_phys = r.start;
55 mem_size = resource_size(&r);
56
39 /* Request the MDT file for the firmware */ 57 /* Request the MDT file for the firmware */
40 ret = request_firmware(&fw, fwname, dev); 58 ret = request_firmware(&fw, fwname, dev);
41 if (ret) { 59 if (ret) {
@@ -51,7 +69,7 @@ static int zap_shader_load_mdt(struct device *dev, const char *fwname)
51 } 69 }
52 70
53 /* Allocate memory for the firmware image */ 71 /* Allocate memory for the firmware image */
54 mem_region = dmam_alloc_coherent(dev, mem_size, &mem_phys, GFP_KERNEL); 72 mem_region = memremap(mem_phys, mem_size, MEMREMAP_WC);
55 if (!mem_region) { 73 if (!mem_region) {
56 ret = -ENOMEM; 74 ret = -ENOMEM;
57 goto out; 75 goto out;
@@ -69,16 +87,13 @@ static int zap_shader_load_mdt(struct device *dev, const char *fwname)
69 DRM_DEV_ERROR(dev, "Unable to authorize the image\n"); 87 DRM_DEV_ERROR(dev, "Unable to authorize the image\n");
70 88
71out: 89out:
90 if (mem_region)
91 memunmap(mem_region);
92
72 release_firmware(fw); 93 release_firmware(fw);
73 94
74 return ret; 95 return ret;
75} 96}
76#else
77static int zap_shader_load_mdt(struct device *dev, const char *fwname)
78{
79 return -ENODEV;
80}
81#endif
82 97
83static void a5xx_submit(struct msm_gpu *gpu, struct msm_gem_submit *submit, 98static void a5xx_submit(struct msm_gpu *gpu, struct msm_gem_submit *submit,
84 struct msm_file_private *ctx) 99 struct msm_file_private *ctx)
@@ -117,12 +132,10 @@ static void a5xx_submit(struct msm_gpu *gpu, struct msm_gem_submit *submit,
117 gpu->funcs->flush(gpu); 132 gpu->funcs->flush(gpu);
118} 133}
119 134
120struct a5xx_hwcg { 135static const struct {
121 u32 offset; 136 u32 offset;
122 u32 value; 137 u32 value;
123}; 138} a5xx_hwcg[] = {
124
125static const struct a5xx_hwcg a530_hwcg[] = {
126 {REG_A5XX_RBBM_CLOCK_CNTL_SP0, 0x02222222}, 139 {REG_A5XX_RBBM_CLOCK_CNTL_SP0, 0x02222222},
127 {REG_A5XX_RBBM_CLOCK_CNTL_SP1, 0x02222222}, 140 {REG_A5XX_RBBM_CLOCK_CNTL_SP1, 0x02222222},
128 {REG_A5XX_RBBM_CLOCK_CNTL_SP2, 0x02222222}, 141 {REG_A5XX_RBBM_CLOCK_CNTL_SP2, 0x02222222},
@@ -217,38 +230,16 @@ static const struct a5xx_hwcg a530_hwcg[] = {
217 {REG_A5XX_RBBM_CLOCK_DELAY_VFD, 0x00002222} 230 {REG_A5XX_RBBM_CLOCK_DELAY_VFD, 0x00002222}
218}; 231};
219 232
220static const struct { 233void a5xx_set_hwcg(struct msm_gpu *gpu, bool state)
221 int (*test)(struct adreno_gpu *gpu);
222 const struct a5xx_hwcg *regs;
223 unsigned int count;
224} a5xx_hwcg_regs[] = {
225 { adreno_is_a530, a530_hwcg, ARRAY_SIZE(a530_hwcg), },
226};
227
228static void _a5xx_enable_hwcg(struct msm_gpu *gpu,
229 const struct a5xx_hwcg *regs, unsigned int count)
230{ 234{
231 unsigned int i; 235 unsigned int i;
232 236
233 for (i = 0; i < count; i++) 237 for (i = 0; i < ARRAY_SIZE(a5xx_hwcg); i++)
234 gpu_write(gpu, regs[i].offset, regs[i].value); 238 gpu_write(gpu, a5xx_hwcg[i].offset,
239 state ? a5xx_hwcg[i].value : 0);
235 240
236 gpu_write(gpu, REG_A5XX_RBBM_CLOCK_CNTL, 0xAAA8AA00); 241 gpu_write(gpu, REG_A5XX_RBBM_CLOCK_CNTL, state ? 0xAAA8AA00 : 0);
237 gpu_write(gpu, REG_A5XX_RBBM_ISDB_CNT, 0x182); 242 gpu_write(gpu, REG_A5XX_RBBM_ISDB_CNT, state ? 0x182 : 0x180);
238}
239
240static void a5xx_enable_hwcg(struct msm_gpu *gpu)
241{
242 struct adreno_gpu *adreno_gpu = to_adreno_gpu(gpu);
243 unsigned int i;
244
245 for (i = 0; i < ARRAY_SIZE(a5xx_hwcg_regs); i++) {
246 if (a5xx_hwcg_regs[i].test(adreno_gpu)) {
247 _a5xx_enable_hwcg(gpu, a5xx_hwcg_regs[i].regs,
248 a5xx_hwcg_regs[i].count);
249 return;
250 }
251 }
252} 243}
253 244
254static int a5xx_me_init(struct msm_gpu *gpu) 245static int a5xx_me_init(struct msm_gpu *gpu)
@@ -377,45 +368,6 @@ static int a5xx_zap_shader_resume(struct msm_gpu *gpu)
377 return ret; 368 return ret;
378} 369}
379 370
380/* Set up a child device to "own" the zap shader */
381static int a5xx_zap_shader_dev_init(struct device *parent, struct device *dev)
382{
383 struct device_node *node;
384 int ret;
385
386 if (dev->parent)
387 return 0;
388
389 /* Find the sub-node for the zap shader */
390 node = of_get_child_by_name(parent->of_node, "zap-shader");
391 if (!node) {
392 DRM_DEV_ERROR(parent, "zap-shader not found in device tree\n");
393 return -ENODEV;
394 }
395
396 dev->parent = parent;
397 dev->of_node = node;
398 dev_set_name(dev, "adreno_zap_shader");
399
400 ret = device_register(dev);
401 if (ret) {
402 DRM_DEV_ERROR(parent, "Couldn't register zap shader device\n");
403 goto out;
404 }
405
406 ret = of_reserved_mem_device_init(dev);
407 if (ret) {
408 DRM_DEV_ERROR(parent, "Unable to set up the reserved memory\n");
409 device_unregister(dev);
410 }
411
412out:
413 if (ret)
414 dev->parent = NULL;
415
416 return ret;
417}
418
419static int a5xx_zap_shader_init(struct msm_gpu *gpu) 371static int a5xx_zap_shader_init(struct msm_gpu *gpu)
420{ 372{
421 static bool loaded; 373 static bool loaded;
@@ -444,11 +396,7 @@ static int a5xx_zap_shader_init(struct msm_gpu *gpu)
444 return -ENODEV; 396 return -ENODEV;
445 } 397 }
446 398
447 ret = a5xx_zap_shader_dev_init(&pdev->dev, &a5xx_gpu->zap_dev); 399 ret = zap_shader_load_mdt(&pdev->dev, adreno_gpu->info->zapfw);
448
449 if (!ret)
450 ret = zap_shader_load_mdt(&a5xx_gpu->zap_dev,
451 adreno_gpu->info->zapfw);
452 400
453 loaded = !ret; 401 loaded = !ret;
454 402
@@ -545,7 +493,7 @@ static int a5xx_hw_init(struct msm_gpu *gpu)
545 gpu_write(gpu, REG_A5XX_RBBM_AHB_CNTL1, 0xA6FFFFFF); 493 gpu_write(gpu, REG_A5XX_RBBM_AHB_CNTL1, 0xA6FFFFFF);
546 494
547 /* Enable HWCG */ 495 /* Enable HWCG */
548 a5xx_enable_hwcg(gpu); 496 a5xx_set_hwcg(gpu, true);
549 497
550 gpu_write(gpu, REG_A5XX_RBBM_AHB_CNTL2, 0x0000003F); 498 gpu_write(gpu, REG_A5XX_RBBM_AHB_CNTL2, 0x0000003F);
551 499
@@ -691,9 +639,6 @@ static void a5xx_destroy(struct msm_gpu *gpu)
691 639
692 DBG("%s", gpu->name); 640 DBG("%s", gpu->name);
693 641
694 if (a5xx_gpu->zap_dev.parent)
695 device_unregister(&a5xx_gpu->zap_dev);
696
697 if (a5xx_gpu->pm4_bo) { 642 if (a5xx_gpu->pm4_bo) {
698 if (a5xx_gpu->pm4_iova) 643 if (a5xx_gpu->pm4_iova)
699 msm_gem_put_iova(a5xx_gpu->pm4_bo, gpu->aspace); 644 msm_gem_put_iova(a5xx_gpu->pm4_bo, gpu->aspace);
@@ -920,31 +865,30 @@ static const u32 a5xx_registers[] = {
920 0x0000, 0x0002, 0x0004, 0x0020, 0x0022, 0x0026, 0x0029, 0x002B, 865 0x0000, 0x0002, 0x0004, 0x0020, 0x0022, 0x0026, 0x0029, 0x002B,
921 0x002E, 0x0035, 0x0038, 0x0042, 0x0044, 0x0044, 0x0047, 0x0095, 866 0x002E, 0x0035, 0x0038, 0x0042, 0x0044, 0x0044, 0x0047, 0x0095,
922 0x0097, 0x00BB, 0x03A0, 0x0464, 0x0469, 0x046F, 0x04D2, 0x04D3, 867 0x0097, 0x00BB, 0x03A0, 0x0464, 0x0469, 0x046F, 0x04D2, 0x04D3,
923 0x04E0, 0x0533, 0x0540, 0x0555, 0xF400, 0xF400, 0xF800, 0xF807, 868 0x04E0, 0x0533, 0x0540, 0x0555, 0x0800, 0x081A, 0x081F, 0x0841,
924 0x0800, 0x081A, 0x081F, 0x0841, 0x0860, 0x0860, 0x0880, 0x08A0, 869 0x0860, 0x0860, 0x0880, 0x08A0, 0x0B00, 0x0B12, 0x0B15, 0x0B28,
925 0x0B00, 0x0B12, 0x0B15, 0x0B28, 0x0B78, 0x0B7F, 0x0BB0, 0x0BBD, 870 0x0B78, 0x0B7F, 0x0BB0, 0x0BBD, 0x0BC0, 0x0BC6, 0x0BD0, 0x0C53,
926 0x0BC0, 0x0BC6, 0x0BD0, 0x0C53, 0x0C60, 0x0C61, 0x0C80, 0x0C82, 871 0x0C60, 0x0C61, 0x0C80, 0x0C82, 0x0C84, 0x0C85, 0x0C90, 0x0C98,
927 0x0C84, 0x0C85, 0x0C90, 0x0C98, 0x0CA0, 0x0CA0, 0x0CB0, 0x0CB2, 872 0x0CA0, 0x0CA0, 0x0CB0, 0x0CB2, 0x2180, 0x2185, 0x2580, 0x2585,
928 0x2180, 0x2185, 0x2580, 0x2585, 0x0CC1, 0x0CC1, 0x0CC4, 0x0CC7, 873 0x0CC1, 0x0CC1, 0x0CC4, 0x0CC7, 0x0CCC, 0x0CCC, 0x0CD0, 0x0CD8,
929 0x0CCC, 0x0CCC, 0x0CD0, 0x0CD8, 0x0CE0, 0x0CE5, 0x0CE8, 0x0CE8, 874 0x0CE0, 0x0CE5, 0x0CE8, 0x0CE8, 0x0CEC, 0x0CF1, 0x0CFB, 0x0D0E,
930 0x0CEC, 0x0CF1, 0x0CFB, 0x0D0E, 0x2100, 0x211E, 0x2140, 0x2145, 875 0x2100, 0x211E, 0x2140, 0x2145, 0x2500, 0x251E, 0x2540, 0x2545,
931 0x2500, 0x251E, 0x2540, 0x2545, 0x0D10, 0x0D17, 0x0D20, 0x0D23, 876 0x0D10, 0x0D17, 0x0D20, 0x0D23, 0x0D30, 0x0D30, 0x20C0, 0x20C0,
932 0x0D30, 0x0D30, 0x20C0, 0x20C0, 0x24C0, 0x24C0, 0x0E40, 0x0E43, 877 0x24C0, 0x24C0, 0x0E40, 0x0E43, 0x0E4A, 0x0E4A, 0x0E50, 0x0E57,
933 0x0E4A, 0x0E4A, 0x0E50, 0x0E57, 0x0E60, 0x0E7C, 0x0E80, 0x0E8E, 878 0x0E60, 0x0E7C, 0x0E80, 0x0E8E, 0x0E90, 0x0E96, 0x0EA0, 0x0EA8,
934 0x0E90, 0x0E96, 0x0EA0, 0x0EA8, 0x0EB0, 0x0EB2, 0xE140, 0xE147, 879 0x0EB0, 0x0EB2, 0xE140, 0xE147, 0xE150, 0xE187, 0xE1A0, 0xE1A9,
935 0xE150, 0xE187, 0xE1A0, 0xE1A9, 0xE1B0, 0xE1B6, 0xE1C0, 0xE1C7, 880 0xE1B0, 0xE1B6, 0xE1C0, 0xE1C7, 0xE1D0, 0xE1D1, 0xE200, 0xE201,
936 0xE1D0, 0xE1D1, 0xE200, 0xE201, 0xE210, 0xE21C, 0xE240, 0xE268, 881 0xE210, 0xE21C, 0xE240, 0xE268, 0xE000, 0xE006, 0xE010, 0xE09A,
937 0xE000, 0xE006, 0xE010, 0xE09A, 0xE0A0, 0xE0A4, 0xE0AA, 0xE0EB, 882 0xE0A0, 0xE0A4, 0xE0AA, 0xE0EB, 0xE100, 0xE105, 0xE380, 0xE38F,
938 0xE100, 0xE105, 0xE380, 0xE38F, 0xE3B0, 0xE3B0, 0xE400, 0xE405, 883 0xE3B0, 0xE3B0, 0xE400, 0xE405, 0xE408, 0xE4E9, 0xE4F0, 0xE4F0,
939 0xE408, 0xE4E9, 0xE4F0, 0xE4F0, 0xE280, 0xE280, 0xE282, 0xE2A3, 884 0xE280, 0xE280, 0xE282, 0xE2A3, 0xE2A5, 0xE2C2, 0xE940, 0xE947,
940 0xE2A5, 0xE2C2, 0xE940, 0xE947, 0xE950, 0xE987, 0xE9A0, 0xE9A9, 885 0xE950, 0xE987, 0xE9A0, 0xE9A9, 0xE9B0, 0xE9B6, 0xE9C0, 0xE9C7,
941 0xE9B0, 0xE9B6, 0xE9C0, 0xE9C7, 0xE9D0, 0xE9D1, 0xEA00, 0xEA01, 886 0xE9D0, 0xE9D1, 0xEA00, 0xEA01, 0xEA10, 0xEA1C, 0xEA40, 0xEA68,
942 0xEA10, 0xEA1C, 0xEA40, 0xEA68, 0xE800, 0xE806, 0xE810, 0xE89A, 887 0xE800, 0xE806, 0xE810, 0xE89A, 0xE8A0, 0xE8A4, 0xE8AA, 0xE8EB,
943 0xE8A0, 0xE8A4, 0xE8AA, 0xE8EB, 0xE900, 0xE905, 0xEB80, 0xEB8F, 888 0xE900, 0xE905, 0xEB80, 0xEB8F, 0xEBB0, 0xEBB0, 0xEC00, 0xEC05,
944 0xEBB0, 0xEBB0, 0xEC00, 0xEC05, 0xEC08, 0xECE9, 0xECF0, 0xECF0, 889 0xEC08, 0xECE9, 0xECF0, 0xECF0, 0xEA80, 0xEA80, 0xEA82, 0xEAA3,
945 0xEA80, 0xEA80, 0xEA82, 0xEAA3, 0xEAA5, 0xEAC2, 0xA800, 0xA8FF, 890 0xEAA5, 0xEAC2, 0xA800, 0xA8FF, 0xAC60, 0xAC60, 0xB000, 0xB97F,
946 0xAC60, 0xAC60, 0xB000, 0xB97F, 0xB9A0, 0xB9BF, 891 0xB9A0, 0xB9BF, ~0
947 ~0
948}; 892};
949 893
950static void a5xx_dump(struct msm_gpu *gpu) 894static void a5xx_dump(struct msm_gpu *gpu)
@@ -1020,7 +964,14 @@ static void a5xx_show(struct msm_gpu *gpu, struct seq_file *m)
1020{ 964{
1021 seq_printf(m, "status: %08x\n", 965 seq_printf(m, "status: %08x\n",
1022 gpu_read(gpu, REG_A5XX_RBBM_STATUS)); 966 gpu_read(gpu, REG_A5XX_RBBM_STATUS));
967
968 /*
969 * Temporarily disable hardware clock gating before going into
970 * adreno_show to avoid issues while reading the registers
971 */
972 a5xx_set_hwcg(gpu, false);
1023 adreno_show(gpu, m); 973 adreno_show(gpu, m);
974 a5xx_set_hwcg(gpu, true);
1024} 975}
1025#endif 976#endif
1026 977
diff --git a/drivers/gpu/drm/msm/adreno/a5xx_gpu.h b/drivers/gpu/drm/msm/adreno/a5xx_gpu.h
index 6638bc85645d..1137092241d5 100644
--- a/drivers/gpu/drm/msm/adreno/a5xx_gpu.h
+++ b/drivers/gpu/drm/msm/adreno/a5xx_gpu.h
@@ -36,8 +36,6 @@ struct a5xx_gpu {
36 uint32_t gpmu_dwords; 36 uint32_t gpmu_dwords;
37 37
38 uint32_t lm_leakage; 38 uint32_t lm_leakage;
39
40 struct device zap_dev;
41}; 39};
42 40
43#define to_a5xx_gpu(x) container_of(x, struct a5xx_gpu, base) 41#define to_a5xx_gpu(x) container_of(x, struct a5xx_gpu, base)
@@ -59,5 +57,6 @@ static inline int spin_usecs(struct msm_gpu *gpu, uint32_t usecs,
59} 57}
60 58
61bool a5xx_idle(struct msm_gpu *gpu); 59bool a5xx_idle(struct msm_gpu *gpu);
60void a5xx_set_hwcg(struct msm_gpu *gpu, bool state);
62 61
63#endif /* __A5XX_GPU_H__ */ 62#endif /* __A5XX_GPU_H__ */
diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.c b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
index f1ab2703674a..7414c6bbd582 100644
--- a/drivers/gpu/drm/msm/adreno/adreno_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.c
@@ -48,8 +48,15 @@ int adreno_get_param(struct msm_gpu *gpu, uint32_t param, uint64_t *value)
48 *value = adreno_gpu->base.fast_rate; 48 *value = adreno_gpu->base.fast_rate;
49 return 0; 49 return 0;
50 case MSM_PARAM_TIMESTAMP: 50 case MSM_PARAM_TIMESTAMP:
51 if (adreno_gpu->funcs->get_timestamp) 51 if (adreno_gpu->funcs->get_timestamp) {
52 return adreno_gpu->funcs->get_timestamp(gpu, value); 52 int ret;
53
54 pm_runtime_get_sync(&gpu->pdev->dev);
55 ret = adreno_gpu->funcs->get_timestamp(gpu, value);
56 pm_runtime_put_autosuspend(&gpu->pdev->dev);
57
58 return ret;
59 }
53 return -EINVAL; 60 return -EINVAL;
54 default: 61 default:
55 DBG("%s: invalid param: %u", gpu->name, param); 62 DBG("%s: invalid param: %u", gpu->name, param);
diff --git a/drivers/gpu/drm/msm/dsi/dsi_host.c b/drivers/gpu/drm/msm/dsi/dsi_host.c
index 9e9c5696bc03..c7b612c3d771 100644
--- a/drivers/gpu/drm/msm/dsi/dsi_host.c
+++ b/drivers/gpu/drm/msm/dsi/dsi_host.c
@@ -2137,6 +2137,13 @@ void msm_dsi_host_get_phy_clk_req(struct mipi_dsi_host *host,
2137 struct msm_dsi_phy_clk_request *clk_req) 2137 struct msm_dsi_phy_clk_request *clk_req)
2138{ 2138{
2139 struct msm_dsi_host *msm_host = to_msm_dsi_host(host); 2139 struct msm_dsi_host *msm_host = to_msm_dsi_host(host);
2140 int ret;
2141
2142 ret = dsi_calc_clk_rate(msm_host);
2143 if (ret) {
2144 pr_err("%s: unable to calc clk rate, %d\n", __func__, ret);
2145 return;
2146 }
2140 2147
2141 clk_req->bitclk_rate = msm_host->byte_clk_rate * 8; 2148 clk_req->bitclk_rate = msm_host->byte_clk_rate * 8;
2142 clk_req->escclk_rate = msm_host->esc_clk_rate; 2149 clk_req->escclk_rate = msm_host->esc_clk_rate;
@@ -2280,7 +2287,6 @@ int msm_dsi_host_set_display_mode(struct mipi_dsi_host *host,
2280 struct drm_display_mode *mode) 2287 struct drm_display_mode *mode)
2281{ 2288{
2282 struct msm_dsi_host *msm_host = to_msm_dsi_host(host); 2289 struct msm_dsi_host *msm_host = to_msm_dsi_host(host);
2283 int ret;
2284 2290
2285 if (msm_host->mode) { 2291 if (msm_host->mode) {
2286 drm_mode_destroy(msm_host->dev, msm_host->mode); 2292 drm_mode_destroy(msm_host->dev, msm_host->mode);
@@ -2293,12 +2299,6 @@ int msm_dsi_host_set_display_mode(struct mipi_dsi_host *host,
2293 return -ENOMEM; 2299 return -ENOMEM;
2294 } 2300 }
2295 2301
2296 ret = dsi_calc_clk_rate(msm_host);
2297 if (ret) {
2298 pr_err("%s: unable to calc clk rate, %d\n", __func__, ret);
2299 return ret;
2300 }
2301
2302 return 0; 2302 return 0;
2303} 2303}
2304 2304
diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c
index cb5415d6c04b..735a87a699fa 100644
--- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c
+++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_crtc.c
@@ -221,8 +221,8 @@ static void blend_setup(struct drm_crtc *crtc)
221 struct mdp5_ctl *ctl = mdp5_cstate->ctl; 221 struct mdp5_ctl *ctl = mdp5_cstate->ctl;
222 uint32_t blend_op, fg_alpha, bg_alpha, ctl_blend_flags = 0; 222 uint32_t blend_op, fg_alpha, bg_alpha, ctl_blend_flags = 0;
223 unsigned long flags; 223 unsigned long flags;
224 enum mdp5_pipe stage[STAGE_MAX + 1][MAX_PIPE_STAGE] = { SSPP_NONE }; 224 enum mdp5_pipe stage[STAGE_MAX + 1][MAX_PIPE_STAGE] = { { SSPP_NONE } };
225 enum mdp5_pipe r_stage[STAGE_MAX + 1][MAX_PIPE_STAGE] = { SSPP_NONE }; 225 enum mdp5_pipe r_stage[STAGE_MAX + 1][MAX_PIPE_STAGE] = { { SSPP_NONE } };
226 int i, plane_cnt = 0; 226 int i, plane_cnt = 0;
227 bool bg_alpha_enabled = false; 227 bool bg_alpha_enabled = false;
228 u32 mixer_op_mode = 0; 228 u32 mixer_op_mode = 0;
@@ -753,6 +753,7 @@ static int mdp5_crtc_cursor_set(struct drm_crtc *crtc,
753 if (!handle) { 753 if (!handle) {
754 DBG("Cursor off"); 754 DBG("Cursor off");
755 cursor_enable = false; 755 cursor_enable = false;
756 mdp5_enable(mdp5_kms);
756 goto set_cursor; 757 goto set_cursor;
757 } 758 }
758 759
@@ -776,6 +777,8 @@ static int mdp5_crtc_cursor_set(struct drm_crtc *crtc,
776 777
777 get_roi(crtc, &roi_w, &roi_h); 778 get_roi(crtc, &roi_w, &roi_h);
778 779
780 mdp5_enable(mdp5_kms);
781
779 mdp5_write(mdp5_kms, REG_MDP5_LM_CURSOR_STRIDE(lm), stride); 782 mdp5_write(mdp5_kms, REG_MDP5_LM_CURSOR_STRIDE(lm), stride);
780 mdp5_write(mdp5_kms, REG_MDP5_LM_CURSOR_FORMAT(lm), 783 mdp5_write(mdp5_kms, REG_MDP5_LM_CURSOR_FORMAT(lm),
781 MDP5_LM_CURSOR_FORMAT_FORMAT(CURSOR_FMT_ARGB8888)); 784 MDP5_LM_CURSOR_FORMAT_FORMAT(CURSOR_FMT_ARGB8888));
@@ -804,6 +807,7 @@ set_cursor:
804 crtc_flush(crtc, flush_mask); 807 crtc_flush(crtc, flush_mask);
805 808
806end: 809end:
810 mdp5_disable(mdp5_kms);
807 if (old_bo) { 811 if (old_bo) {
808 drm_flip_work_queue(&mdp5_crtc->unref_cursor_work, old_bo); 812 drm_flip_work_queue(&mdp5_crtc->unref_cursor_work, old_bo);
809 /* enable vblank to complete cursor work: */ 813 /* enable vblank to complete cursor work: */
@@ -836,6 +840,8 @@ static int mdp5_crtc_cursor_move(struct drm_crtc *crtc, int x, int y)
836 840
837 get_roi(crtc, &roi_w, &roi_h); 841 get_roi(crtc, &roi_w, &roi_h);
838 842
843 mdp5_enable(mdp5_kms);
844
839 spin_lock_irqsave(&mdp5_crtc->cursor.lock, flags); 845 spin_lock_irqsave(&mdp5_crtc->cursor.lock, flags);
840 mdp5_write(mdp5_kms, REG_MDP5_LM_CURSOR_SIZE(lm), 846 mdp5_write(mdp5_kms, REG_MDP5_LM_CURSOR_SIZE(lm),
841 MDP5_LM_CURSOR_SIZE_ROI_H(roi_h) | 847 MDP5_LM_CURSOR_SIZE_ROI_H(roi_h) |
@@ -847,6 +853,8 @@ static int mdp5_crtc_cursor_move(struct drm_crtc *crtc, int x, int y)
847 853
848 crtc_flush(crtc, flush_mask); 854 crtc_flush(crtc, flush_mask);
849 855
856 mdp5_disable(mdp5_kms);
857
850 return 0; 858 return 0;
851} 859}
852 860
diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_encoder.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_encoder.c
index 97f3294fbfc6..70bef51245af 100644
--- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_encoder.c
+++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_encoder.c
@@ -299,7 +299,7 @@ static void mdp5_encoder_enable(struct drm_encoder *encoder)
299 struct mdp5_interface *intf = mdp5_encoder->intf; 299 struct mdp5_interface *intf = mdp5_encoder->intf;
300 300
301 if (intf->mode == MDP5_INTF_DSI_MODE_COMMAND) 301 if (intf->mode == MDP5_INTF_DSI_MODE_COMMAND)
302 mdp5_cmd_encoder_disable(encoder); 302 mdp5_cmd_encoder_enable(encoder);
303 else 303 else
304 mdp5_vid_encoder_enable(encoder); 304 mdp5_vid_encoder_enable(encoder);
305} 305}
diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c
index 5d13fa5381ee..1c603aef3c59 100644
--- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c
+++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_kms.c
@@ -502,7 +502,7 @@ static int get_clk(struct platform_device *pdev, struct clk **clkp,
502 const char *name, bool mandatory) 502 const char *name, bool mandatory)
503{ 503{
504 struct device *dev = &pdev->dev; 504 struct device *dev = &pdev->dev;
505 struct clk *clk = devm_clk_get(dev, name); 505 struct clk *clk = msm_clk_get(pdev, name);
506 if (IS_ERR(clk) && mandatory) { 506 if (IS_ERR(clk) && mandatory) {
507 dev_err(dev, "failed to get %s (%ld)\n", name, PTR_ERR(clk)); 507 dev_err(dev, "failed to get %s (%ld)\n", name, PTR_ERR(clk));
508 return PTR_ERR(clk); 508 return PTR_ERR(clk);
@@ -887,21 +887,21 @@ static int mdp5_init(struct platform_device *pdev, struct drm_device *dev)
887 } 887 }
888 888
889 /* mandatory clocks: */ 889 /* mandatory clocks: */
890 ret = get_clk(pdev, &mdp5_kms->axi_clk, "bus_clk", true); 890 ret = get_clk(pdev, &mdp5_kms->axi_clk, "bus", true);
891 if (ret) 891 if (ret)
892 goto fail; 892 goto fail;
893 ret = get_clk(pdev, &mdp5_kms->ahb_clk, "iface_clk", true); 893 ret = get_clk(pdev, &mdp5_kms->ahb_clk, "iface", true);
894 if (ret) 894 if (ret)
895 goto fail; 895 goto fail;
896 ret = get_clk(pdev, &mdp5_kms->core_clk, "core_clk", true); 896 ret = get_clk(pdev, &mdp5_kms->core_clk, "core", true);
897 if (ret) 897 if (ret)
898 goto fail; 898 goto fail;
899 ret = get_clk(pdev, &mdp5_kms->vsync_clk, "vsync_clk", true); 899 ret = get_clk(pdev, &mdp5_kms->vsync_clk, "vsync", true);
900 if (ret) 900 if (ret)
901 goto fail; 901 goto fail;
902 902
903 /* optional clocks: */ 903 /* optional clocks: */
904 get_clk(pdev, &mdp5_kms->lut_clk, "lut_clk", false); 904 get_clk(pdev, &mdp5_kms->lut_clk, "lut", false);
905 905
906 /* we need to set a default rate before enabling. Set a safe 906 /* we need to set a default rate before enabling. Set a safe
907 * rate first, then figure out hw revision, and then set a 907 * rate first, then figure out hw revision, and then set a
diff --git a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c
index fe3a4de1a433..61f39c86dd09 100644
--- a/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c
+++ b/drivers/gpu/drm/msm/mdp/mdp5/mdp5_plane.c
@@ -890,8 +890,8 @@ static int mdp5_plane_mode_set(struct drm_plane *plane,
890 struct mdp5_hw_pipe *right_hwpipe; 890 struct mdp5_hw_pipe *right_hwpipe;
891 const struct mdp_format *format; 891 const struct mdp_format *format;
892 uint32_t nplanes, config = 0; 892 uint32_t nplanes, config = 0;
893 struct phase_step step = { 0 }; 893 struct phase_step step = { { 0 } };
894 struct pixel_ext pe = { 0 }; 894 struct pixel_ext pe = { { 0 } };
895 uint32_t hdecm = 0, vdecm = 0; 895 uint32_t hdecm = 0, vdecm = 0;
896 uint32_t pix_format; 896 uint32_t pix_format;
897 unsigned int rotation; 897 unsigned int rotation;
diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c
index 65f35544c1ec..a0c60e738db8 100644
--- a/drivers/gpu/drm/msm/msm_gem.c
+++ b/drivers/gpu/drm/msm/msm_gem.c
@@ -383,8 +383,10 @@ int msm_gem_get_iova(struct drm_gem_object *obj,
383 struct page **pages; 383 struct page **pages;
384 384
385 vma = add_vma(obj, aspace); 385 vma = add_vma(obj, aspace);
386 if (IS_ERR(vma)) 386 if (IS_ERR(vma)) {
387 return PTR_ERR(vma); 387 ret = PTR_ERR(vma);
388 goto unlock;
389 }
388 390
389 pages = get_pages(obj); 391 pages = get_pages(obj);
390 if (IS_ERR(pages)) { 392 if (IS_ERR(pages)) {
@@ -405,7 +407,7 @@ int msm_gem_get_iova(struct drm_gem_object *obj,
405 407
406fail: 408fail:
407 del_vma(vma); 409 del_vma(vma);
408 410unlock:
409 mutex_unlock(&msm_obj->lock); 411 mutex_unlock(&msm_obj->lock);
410 return ret; 412 return ret;
411} 413}
@@ -928,8 +930,12 @@ static struct drm_gem_object *_msm_gem_new(struct drm_device *dev,
928 if (use_vram) { 930 if (use_vram) {
929 struct msm_gem_vma *vma; 931 struct msm_gem_vma *vma;
930 struct page **pages; 932 struct page **pages;
933 struct msm_gem_object *msm_obj = to_msm_bo(obj);
934
935 mutex_lock(&msm_obj->lock);
931 936
932 vma = add_vma(obj, NULL); 937 vma = add_vma(obj, NULL);
938 mutex_unlock(&msm_obj->lock);
933 if (IS_ERR(vma)) { 939 if (IS_ERR(vma)) {
934 ret = PTR_ERR(vma); 940 ret = PTR_ERR(vma);
935 goto fail; 941 goto fail;
diff --git a/drivers/gpu/drm/msm/msm_gem_submit.c b/drivers/gpu/drm/msm/msm_gem_submit.c
index 6bfca7470141..8a75c0bd8a78 100644
--- a/drivers/gpu/drm/msm/msm_gem_submit.c
+++ b/drivers/gpu/drm/msm/msm_gem_submit.c
@@ -34,8 +34,8 @@ static struct msm_gem_submit *submit_create(struct drm_device *dev,
34 struct msm_gpu *gpu, uint32_t nr_bos, uint32_t nr_cmds) 34 struct msm_gpu *gpu, uint32_t nr_bos, uint32_t nr_cmds)
35{ 35{
36 struct msm_gem_submit *submit; 36 struct msm_gem_submit *submit;
37 uint64_t sz = sizeof(*submit) + (nr_bos * sizeof(submit->bos[0])) + 37 uint64_t sz = sizeof(*submit) + ((u64)nr_bos * sizeof(submit->bos[0])) +
38 (nr_cmds * sizeof(submit->cmd[0])); 38 ((u64)nr_cmds * sizeof(submit->cmd[0]));
39 39
40 if (sz > SIZE_MAX) 40 if (sz > SIZE_MAX)
41 return NULL; 41 return NULL;
@@ -451,7 +451,7 @@ int msm_ioctl_gem_submit(struct drm_device *dev, void *data,
451 if (ret) 451 if (ret)
452 goto out; 452 goto out;
453 453
454 if (!(args->fence & MSM_SUBMIT_NO_IMPLICIT)) { 454 if (!(args->flags & MSM_SUBMIT_NO_IMPLICIT)) {
455 ret = submit_fence_sync(submit); 455 ret = submit_fence_sync(submit);
456 if (ret) 456 if (ret)
457 goto out; 457 goto out;
diff --git a/drivers/gpu/drm/msm/msm_gem_vma.c b/drivers/gpu/drm/msm/msm_gem_vma.c
index c36321bc8714..d34e331554f3 100644
--- a/drivers/gpu/drm/msm/msm_gem_vma.c
+++ b/drivers/gpu/drm/msm/msm_gem_vma.c
@@ -42,7 +42,7 @@ void
42msm_gem_unmap_vma(struct msm_gem_address_space *aspace, 42msm_gem_unmap_vma(struct msm_gem_address_space *aspace,
43 struct msm_gem_vma *vma, struct sg_table *sgt) 43 struct msm_gem_vma *vma, struct sg_table *sgt)
44{ 44{
45 if (!vma->iova) 45 if (!aspace || !vma->iova)
46 return; 46 return;
47 47
48 if (aspace->mmu) { 48 if (aspace->mmu) {
diff --git a/drivers/gpu/drm/nouveau/nouveau_connector.c b/drivers/gpu/drm/nouveau/nouveau_connector.c
index 147b22163f9f..dab78c660dd6 100644
--- a/drivers/gpu/drm/nouveau/nouveau_connector.c
+++ b/drivers/gpu/drm/nouveau/nouveau_connector.c
@@ -1158,8 +1158,6 @@ nouveau_connector_aux_xfer(struct drm_dp_aux *obj, struct drm_dp_aux_msg *msg)
1158 return -ENODEV; 1158 return -ENODEV;
1159 if (WARN_ON(msg->size > 16)) 1159 if (WARN_ON(msg->size > 16))
1160 return -E2BIG; 1160 return -E2BIG;
1161 if (msg->size == 0)
1162 return msg->size;
1163 1161
1164 ret = nvkm_i2c_aux_acquire(aux); 1162 ret = nvkm_i2c_aux_acquire(aux);
1165 if (ret) 1163 if (ret)
diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c
index 8d1df5678eaa..f362c9fa8b3b 100644
--- a/drivers/gpu/drm/nouveau/nouveau_display.c
+++ b/drivers/gpu/drm/nouveau/nouveau_display.c
@@ -409,7 +409,6 @@ nouveau_display_fini(struct drm_device *dev, bool suspend)
409 struct nouveau_display *disp = nouveau_display(dev); 409 struct nouveau_display *disp = nouveau_display(dev);
410 struct nouveau_drm *drm = nouveau_drm(dev); 410 struct nouveau_drm *drm = nouveau_drm(dev);
411 struct drm_connector *connector; 411 struct drm_connector *connector;
412 struct drm_crtc *crtc;
413 412
414 if (!suspend) { 413 if (!suspend) {
415 if (drm_drv_uses_atomic_modeset(dev)) 414 if (drm_drv_uses_atomic_modeset(dev))
@@ -418,10 +417,6 @@ nouveau_display_fini(struct drm_device *dev, bool suspend)
418 drm_crtc_force_disable_all(dev); 417 drm_crtc_force_disable_all(dev);
419 } 418 }
420 419
421 /* Make sure that drm and hw vblank irqs get properly disabled. */
422 drm_for_each_crtc(crtc, dev)
423 drm_crtc_vblank_off(crtc);
424
425 /* disable flip completion events */ 420 /* disable flip completion events */
426 nvif_notify_put(&drm->flip); 421 nvif_notify_put(&drm->flip);
427 422
diff --git a/drivers/gpu/drm/nouveau/nv50_display.c b/drivers/gpu/drm/nouveau/nv50_display.c
index e3132a2ce34d..2bc0dc985214 100644
--- a/drivers/gpu/drm/nouveau/nv50_display.c
+++ b/drivers/gpu/drm/nouveau/nv50_display.c
@@ -3674,15 +3674,24 @@ nv50_sor_create(struct drm_connector *connector, struct dcb_output *dcbe)
3674 drm_mode_connector_attach_encoder(connector, encoder); 3674 drm_mode_connector_attach_encoder(connector, encoder);
3675 3675
3676 if (dcbe->type == DCB_OUTPUT_DP) { 3676 if (dcbe->type == DCB_OUTPUT_DP) {
3677 struct nv50_disp *disp = nv50_disp(encoder->dev);
3677 struct nvkm_i2c_aux *aux = 3678 struct nvkm_i2c_aux *aux =
3678 nvkm_i2c_aux_find(i2c, dcbe->i2c_index); 3679 nvkm_i2c_aux_find(i2c, dcbe->i2c_index);
3679 if (aux) { 3680 if (aux) {
3680 nv_encoder->i2c = &nv_connector->aux.ddc; 3681 if (disp->disp->oclass < GF110_DISP) {
3682 /* HW has no support for address-only
3683 * transactions, so we're required to
3684 * use custom I2C-over-AUX code.
3685 */
3686 nv_encoder->i2c = &aux->i2c;
3687 } else {
3688 nv_encoder->i2c = &nv_connector->aux.ddc;
3689 }
3681 nv_encoder->aux = aux; 3690 nv_encoder->aux = aux;
3682 } 3691 }
3683 3692
3684 /*TODO: Use DP Info Table to check for support. */ 3693 /*TODO: Use DP Info Table to check for support. */
3685 if (nv50_disp(encoder->dev)->disp->oclass >= GF110_DISP) { 3694 if (disp->disp->oclass >= GF110_DISP) {
3686 ret = nv50_mstm_new(nv_encoder, &nv_connector->aux, 16, 3695 ret = nv50_mstm_new(nv_encoder, &nv_connector->aux, 16,
3687 nv_connector->base.base.id, 3696 nv_connector->base.base.id,
3688 &nv_encoder->dp.mstm); 3697 &nv_encoder->dp.mstm);
@@ -3931,6 +3940,8 @@ nv50_disp_atomic_commit_tail(struct drm_atomic_state *state)
3931 3940
3932 NV_ATOMIC(drm, "%s: clr %04x (set %04x)\n", crtc->name, 3941 NV_ATOMIC(drm, "%s: clr %04x (set %04x)\n", crtc->name,
3933 asyh->clr.mask, asyh->set.mask); 3942 asyh->clr.mask, asyh->set.mask);
3943 if (crtc_state->active && !asyh->state.active)
3944 drm_crtc_vblank_off(crtc);
3934 3945
3935 if (asyh->clr.mask) { 3946 if (asyh->clr.mask) {
3936 nv50_head_flush_clr(head, asyh, atom->flush_disable); 3947 nv50_head_flush_clr(head, asyh, atom->flush_disable);
@@ -4016,11 +4027,13 @@ nv50_disp_atomic_commit_tail(struct drm_atomic_state *state)
4016 nv50_head_flush_set(head, asyh); 4027 nv50_head_flush_set(head, asyh);
4017 interlock_core = 1; 4028 interlock_core = 1;
4018 } 4029 }
4019 }
4020 4030
4021 for_each_crtc_in_state(state, crtc, crtc_state, i) { 4031 if (asyh->state.active) {
4022 if (crtc->state->event) 4032 if (!crtc_state->active)
4023 drm_crtc_vblank_get(crtc); 4033 drm_crtc_vblank_on(crtc);
4034 if (asyh->state.event)
4035 drm_crtc_vblank_get(crtc);
4036 }
4024 } 4037 }
4025 4038
4026 /* Update plane(s). */ 4039 /* Update plane(s). */
@@ -4067,12 +4080,14 @@ nv50_disp_atomic_commit_tail(struct drm_atomic_state *state)
4067 if (crtc->state->event) { 4080 if (crtc->state->event) {
4068 unsigned long flags; 4081 unsigned long flags;
4069 /* Get correct count/ts if racing with vblank irq */ 4082 /* Get correct count/ts if racing with vblank irq */
4070 drm_accurate_vblank_count(crtc); 4083 if (crtc->state->active)
4084 drm_accurate_vblank_count(crtc);
4071 spin_lock_irqsave(&crtc->dev->event_lock, flags); 4085 spin_lock_irqsave(&crtc->dev->event_lock, flags);
4072 drm_crtc_send_vblank_event(crtc, crtc->state->event); 4086 drm_crtc_send_vblank_event(crtc, crtc->state->event);
4073 spin_unlock_irqrestore(&crtc->dev->event_lock, flags); 4087 spin_unlock_irqrestore(&crtc->dev->event_lock, flags);
4074 crtc->state->event = NULL; 4088 crtc->state->event = NULL;
4075 drm_crtc_vblank_put(crtc); 4089 if (crtc->state->active)
4090 drm_crtc_vblank_put(crtc);
4076 } 4091 }
4077 } 4092 }
4078 4093
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/base.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/base.c
index c7c84d34d97e..88582af8bd89 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/base.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/base.c
@@ -267,6 +267,8 @@ nvkm_disp_oneinit(struct nvkm_engine *engine)
267 /* Create output path objects for each VBIOS display path. */ 267 /* Create output path objects for each VBIOS display path. */
268 i = -1; 268 i = -1;
269 while ((data = dcb_outp_parse(bios, ++i, &ver, &hdr, &dcbE))) { 269 while ((data = dcb_outp_parse(bios, ++i, &ver, &hdr, &dcbE))) {
270 if (ver < 0x40) /* No support for chipsets prior to NV50. */
271 break;
270 if (dcbE.type == DCB_OUTPUT_UNUSED) 272 if (dcbE.type == DCB_OUTPUT_UNUSED)
271 continue; 273 continue;
272 if (dcbE.type == DCB_OUTPUT_EOL) 274 if (dcbE.type == DCB_OUTPUT_EOL)
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h b/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h
index a24312fb0228..a1e8bf48b778 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/ior.h
@@ -22,6 +22,7 @@ struct nvkm_ior {
22 unsigned proto_evo:4; 22 unsigned proto_evo:4;
23 enum nvkm_ior_proto { 23 enum nvkm_ior_proto {
24 CRT, 24 CRT,
25 TV,
25 TMDS, 26 TMDS,
26 LVDS, 27 LVDS,
27 DP, 28 DP,
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/nv50.h b/drivers/gpu/drm/nouveau/nvkm/engine/disp/nv50.h
index 19c635663399..6ea19466f436 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/nv50.h
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/nv50.h
@@ -22,7 +22,7 @@ struct nv50_disp {
22 u8 type[3]; 22 u8 type[3];
23 } pior; 23 } pior;
24 24
25 struct nv50_disp_chan *chan[17]; 25 struct nv50_disp_chan *chan[21];
26}; 26};
27 27
28void nv50_disp_super_1(struct nv50_disp *); 28void nv50_disp_super_1(struct nv50_disp *);
diff --git a/drivers/gpu/drm/nouveau/nvkm/engine/disp/outp.c b/drivers/gpu/drm/nouveau/nvkm/engine/disp/outp.c
index 85aff85394ac..be9e7f8c3b23 100644
--- a/drivers/gpu/drm/nouveau/nvkm/engine/disp/outp.c
+++ b/drivers/gpu/drm/nouveau/nvkm/engine/disp/outp.c
@@ -62,6 +62,7 @@ nvkm_outp_xlat(struct nvkm_outp *outp, enum nvkm_ior_type *type)
62 case 0: 62 case 0:
63 switch (outp->info.type) { 63 switch (outp->info.type) {
64 case DCB_OUTPUT_ANALOG: *type = DAC; return CRT; 64 case DCB_OUTPUT_ANALOG: *type = DAC; return CRT;
65 case DCB_OUTPUT_TV : *type = DAC; return TV;
65 case DCB_OUTPUT_TMDS : *type = SOR; return TMDS; 66 case DCB_OUTPUT_TMDS : *type = SOR; return TMDS;
66 case DCB_OUTPUT_LVDS : *type = SOR; return LVDS; 67 case DCB_OUTPUT_LVDS : *type = SOR; return LVDS;
67 case DCB_OUTPUT_DP : *type = SOR; return DP; 68 case DCB_OUTPUT_DP : *type = SOR; return DP;
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bar/gf100.c b/drivers/gpu/drm/nouveau/nvkm/subdev/bar/gf100.c
index c794b2c2d21e..6d8f21290aa2 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/bar/gf100.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bar/gf100.c
@@ -129,7 +129,7 @@ gf100_bar_init(struct nvkm_bar *base)
129 129
130 if (bar->bar[0].mem) { 130 if (bar->bar[0].mem) {
131 addr = nvkm_memory_addr(bar->bar[0].mem) >> 12; 131 addr = nvkm_memory_addr(bar->bar[0].mem) >> 12;
132 nvkm_wr32(device, 0x001714, 0xc0000000 | addr); 132 nvkm_wr32(device, 0x001714, 0x80000000 | addr);
133 } 133 }
134 134
135 return 0; 135 return 0;
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/Kbuild b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/Kbuild
index 48f01e40b8fc..b768e66a472b 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/Kbuild
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/Kbuild
@@ -25,6 +25,7 @@ nvkm-y += nvkm/subdev/i2c/bit.o
25 25
26nvkm-y += nvkm/subdev/i2c/aux.o 26nvkm-y += nvkm/subdev/i2c/aux.o
27nvkm-y += nvkm/subdev/i2c/auxg94.o 27nvkm-y += nvkm/subdev/i2c/auxg94.o
28nvkm-y += nvkm/subdev/i2c/auxgf119.o
28nvkm-y += nvkm/subdev/i2c/auxgm200.o 29nvkm-y += nvkm/subdev/i2c/auxgm200.o
29 30
30nvkm-y += nvkm/subdev/i2c/anx9805.o 31nvkm-y += nvkm/subdev/i2c/anx9805.o
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.c b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.c
index d172e42dd228..4c1f547da463 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.c
@@ -117,6 +117,10 @@ int
117nvkm_i2c_aux_xfer(struct nvkm_i2c_aux *aux, bool retry, u8 type, 117nvkm_i2c_aux_xfer(struct nvkm_i2c_aux *aux, bool retry, u8 type,
118 u32 addr, u8 *data, u8 *size) 118 u32 addr, u8 *data, u8 *size)
119{ 119{
120 if (!*size && !aux->func->address_only) {
121 AUX_ERR(aux, "address-only transaction dropped");
122 return -ENOSYS;
123 }
120 return aux->func->xfer(aux, retry, type, addr, data, size); 124 return aux->func->xfer(aux, retry, type, addr, data, size);
121} 125}
122 126
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.h b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.h
index 27a4a39c87f0..9587ab456d9e 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.h
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.h
@@ -3,6 +3,7 @@
3#include "pad.h" 3#include "pad.h"
4 4
5struct nvkm_i2c_aux_func { 5struct nvkm_i2c_aux_func {
6 bool address_only;
6 int (*xfer)(struct nvkm_i2c_aux *, bool retry, u8 type, 7 int (*xfer)(struct nvkm_i2c_aux *, bool retry, u8 type,
7 u32 addr, u8 *data, u8 *size); 8 u32 addr, u8 *data, u8 *size);
8 int (*lnk_ctl)(struct nvkm_i2c_aux *, int link_nr, int link_bw, 9 int (*lnk_ctl)(struct nvkm_i2c_aux *, int link_nr, int link_bw,
@@ -17,7 +18,12 @@ void nvkm_i2c_aux_del(struct nvkm_i2c_aux **);
17int nvkm_i2c_aux_xfer(struct nvkm_i2c_aux *, bool retry, u8 type, 18int nvkm_i2c_aux_xfer(struct nvkm_i2c_aux *, bool retry, u8 type,
18 u32 addr, u8 *data, u8 *size); 19 u32 addr, u8 *data, u8 *size);
19 20
21int g94_i2c_aux_new_(const struct nvkm_i2c_aux_func *, struct nvkm_i2c_pad *,
22 int, u8, struct nvkm_i2c_aux **);
23
20int g94_i2c_aux_new(struct nvkm_i2c_pad *, int, u8, struct nvkm_i2c_aux **); 24int g94_i2c_aux_new(struct nvkm_i2c_pad *, int, u8, struct nvkm_i2c_aux **);
25int g94_i2c_aux_xfer(struct nvkm_i2c_aux *, bool, u8, u32, u8 *, u8 *);
26int gf119_i2c_aux_new(struct nvkm_i2c_pad *, int, u8, struct nvkm_i2c_aux **);
21int gm200_i2c_aux_new(struct nvkm_i2c_pad *, int, u8, struct nvkm_i2c_aux **); 27int gm200_i2c_aux_new(struct nvkm_i2c_pad *, int, u8, struct nvkm_i2c_aux **);
22 28
23#define AUX_MSG(b,l,f,a...) do { \ 29#define AUX_MSG(b,l,f,a...) do { \
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxg94.c b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxg94.c
index ab8cb196c34e..c8ab1b5741a3 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxg94.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxg94.c
@@ -72,7 +72,7 @@ g94_i2c_aux_init(struct g94_i2c_aux *aux)
72 return 0; 72 return 0;
73} 73}
74 74
75static int 75int
76g94_i2c_aux_xfer(struct nvkm_i2c_aux *obj, bool retry, 76g94_i2c_aux_xfer(struct nvkm_i2c_aux *obj, bool retry,
77 u8 type, u32 addr, u8 *data, u8 *size) 77 u8 type, u32 addr, u8 *data, u8 *size)
78{ 78{
@@ -105,9 +105,9 @@ g94_i2c_aux_xfer(struct nvkm_i2c_aux *obj, bool retry,
105 } 105 }
106 106
107 ctrl = nvkm_rd32(device, 0x00e4e4 + base); 107 ctrl = nvkm_rd32(device, 0x00e4e4 + base);
108 ctrl &= ~0x0001f0ff; 108 ctrl &= ~0x0001f1ff;
109 ctrl |= type << 12; 109 ctrl |= type << 12;
110 ctrl |= *size - 1; 110 ctrl |= (*size ? (*size - 1) : 0x00000100);
111 nvkm_wr32(device, 0x00e4e0 + base, addr); 111 nvkm_wr32(device, 0x00e4e0 + base, addr);
112 112
113 /* (maybe) retry transaction a number of times on failure... */ 113 /* (maybe) retry transaction a number of times on failure... */
@@ -160,14 +160,10 @@ out:
160 return ret < 0 ? ret : (stat & 0x000f0000) >> 16; 160 return ret < 0 ? ret : (stat & 0x000f0000) >> 16;
161} 161}
162 162
163static const struct nvkm_i2c_aux_func
164g94_i2c_aux_func = {
165 .xfer = g94_i2c_aux_xfer,
166};
167
168int 163int
169g94_i2c_aux_new(struct nvkm_i2c_pad *pad, int index, u8 drive, 164g94_i2c_aux_new_(const struct nvkm_i2c_aux_func *func,
170 struct nvkm_i2c_aux **paux) 165 struct nvkm_i2c_pad *pad, int index, u8 drive,
166 struct nvkm_i2c_aux **paux)
171{ 167{
172 struct g94_i2c_aux *aux; 168 struct g94_i2c_aux *aux;
173 169
@@ -175,8 +171,20 @@ g94_i2c_aux_new(struct nvkm_i2c_pad *pad, int index, u8 drive,
175 return -ENOMEM; 171 return -ENOMEM;
176 *paux = &aux->base; 172 *paux = &aux->base;
177 173
178 nvkm_i2c_aux_ctor(&g94_i2c_aux_func, pad, index, &aux->base); 174 nvkm_i2c_aux_ctor(func, pad, index, &aux->base);
179 aux->ch = drive; 175 aux->ch = drive;
180 aux->base.intr = 1 << aux->ch; 176 aux->base.intr = 1 << aux->ch;
181 return 0; 177 return 0;
182} 178}
179
180static const struct nvkm_i2c_aux_func
181g94_i2c_aux = {
182 .xfer = g94_i2c_aux_xfer,
183};
184
185int
186g94_i2c_aux_new(struct nvkm_i2c_pad *pad, int index, u8 drive,
187 struct nvkm_i2c_aux **paux)
188{
189 return g94_i2c_aux_new_(&g94_i2c_aux, pad, index, drive, paux);
190}
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgf119.c b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgf119.c
new file mode 100644
index 000000000000..dab40cd8fe3a
--- /dev/null
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgf119.c
@@ -0,0 +1,35 @@
1/*
2 * Copyright 2017 Red Hat Inc.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 * OTHER DEALINGS IN THE SOFTWARE.
21 */
22#include "aux.h"
23
24static const struct nvkm_i2c_aux_func
25gf119_i2c_aux = {
26 .address_only = true,
27 .xfer = g94_i2c_aux_xfer,
28};
29
30int
31gf119_i2c_aux_new(struct nvkm_i2c_pad *pad, int index, u8 drive,
32 struct nvkm_i2c_aux **paux)
33{
34 return g94_i2c_aux_new_(&gf119_i2c_aux, pad, index, drive, paux);
35}
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgm200.c b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgm200.c
index ee091fa79628..7ef60895f43a 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgm200.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/auxgm200.c
@@ -105,9 +105,9 @@ gm200_i2c_aux_xfer(struct nvkm_i2c_aux *obj, bool retry,
105 } 105 }
106 106
107 ctrl = nvkm_rd32(device, 0x00d954 + base); 107 ctrl = nvkm_rd32(device, 0x00d954 + base);
108 ctrl &= ~0x0001f0ff; 108 ctrl &= ~0x0001f1ff;
109 ctrl |= type << 12; 109 ctrl |= type << 12;
110 ctrl |= *size - 1; 110 ctrl |= (*size ? (*size - 1) : 0x00000100);
111 nvkm_wr32(device, 0x00d950 + base, addr); 111 nvkm_wr32(device, 0x00d950 + base, addr);
112 112
113 /* (maybe) retry transaction a number of times on failure... */ 113 /* (maybe) retry transaction a number of times on failure... */
@@ -162,6 +162,7 @@ out:
162 162
163static const struct nvkm_i2c_aux_func 163static const struct nvkm_i2c_aux_func
164gm200_i2c_aux_func = { 164gm200_i2c_aux_func = {
165 .address_only = true,
165 .xfer = gm200_i2c_aux_xfer, 166 .xfer = gm200_i2c_aux_xfer,
166}; 167};
167 168
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/padgf119.c b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/padgf119.c
index d53212f1aa52..3bc4d0310076 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/padgf119.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/i2c/padgf119.c
@@ -28,7 +28,7 @@
28static const struct nvkm_i2c_pad_func 28static const struct nvkm_i2c_pad_func
29gf119_i2c_pad_s_func = { 29gf119_i2c_pad_s_func = {
30 .bus_new_4 = gf119_i2c_bus_new, 30 .bus_new_4 = gf119_i2c_bus_new,
31 .aux_new_6 = g94_i2c_aux_new, 31 .aux_new_6 = gf119_i2c_aux_new,
32 .mode = g94_i2c_pad_mode, 32 .mode = g94_i2c_pad_mode,
33}; 33};
34 34
@@ -41,7 +41,7 @@ gf119_i2c_pad_s_new(struct nvkm_i2c *i2c, int id, struct nvkm_i2c_pad **ppad)
41static const struct nvkm_i2c_pad_func 41static const struct nvkm_i2c_pad_func
42gf119_i2c_pad_x_func = { 42gf119_i2c_pad_x_func = {
43 .bus_new_4 = gf119_i2c_bus_new, 43 .bus_new_4 = gf119_i2c_bus_new,
44 .aux_new_6 = g94_i2c_aux_new, 44 .aux_new_6 = gf119_i2c_aux_new,
45}; 45};
46 46
47int 47int
diff --git a/drivers/gpu/drm/radeon/radeon_kfd.c b/drivers/gpu/drm/radeon/radeon_kfd.c
index 699fe7f9b8bf..a2ab6dcdf4a2 100644
--- a/drivers/gpu/drm/radeon/radeon_kfd.c
+++ b/drivers/gpu/drm/radeon/radeon_kfd.c
@@ -184,7 +184,6 @@ void radeon_kfd_device_init(struct radeon_device *rdev)
184 if (rdev->kfd) { 184 if (rdev->kfd) {
185 struct kgd2kfd_shared_resources gpu_resources = { 185 struct kgd2kfd_shared_resources gpu_resources = {
186 .compute_vmid_bitmap = 0xFF00, 186 .compute_vmid_bitmap = 0xFF00,
187 .num_mec = 1,
188 .num_pipe_per_mec = 4, 187 .num_pipe_per_mec = 4,
189 .num_queue_per_pipe = 8 188 .num_queue_per_pipe = 8
190 }; 189 };
diff --git a/drivers/gpu/drm/rockchip/Kconfig b/drivers/gpu/drm/rockchip/Kconfig
index 50c41c0a50ef..dcc539ba85d6 100644
--- a/drivers/gpu/drm/rockchip/Kconfig
+++ b/drivers/gpu/drm/rockchip/Kconfig
@@ -5,6 +5,10 @@ config DRM_ROCKCHIP
5 select DRM_KMS_HELPER 5 select DRM_KMS_HELPER
6 select DRM_PANEL 6 select DRM_PANEL
7 select VIDEOMODE_HELPERS 7 select VIDEOMODE_HELPERS
8 select DRM_ANALOGIX_DP if ROCKCHIP_ANALOGIX_DP
9 select DRM_DW_HDMI if ROCKCHIP_DW_HDMI
10 select DRM_MIPI_DSI if ROCKCHIP_DW_MIPI_DSI
11 select SND_SOC_HDMI_CODEC if ROCKCHIP_CDN_DP && SND_SOC
8 help 12 help
9 Choose this option if you have a Rockchip soc chipset. 13 Choose this option if you have a Rockchip soc chipset.
10 This driver provides kernel mode setting and buffer 14 This driver provides kernel mode setting and buffer
@@ -12,10 +16,10 @@ config DRM_ROCKCHIP
12 2D or 3D acceleration; acceleration is performed by other 16 2D or 3D acceleration; acceleration is performed by other
13 IP found on the SoC. 17 IP found on the SoC.
14 18
19if DRM_ROCKCHIP
20
15config ROCKCHIP_ANALOGIX_DP 21config ROCKCHIP_ANALOGIX_DP
16 bool "Rockchip specific extensions for Analogix DP driver" 22 bool "Rockchip specific extensions for Analogix DP driver"
17 depends on DRM_ROCKCHIP
18 select DRM_ANALOGIX_DP
19 help 23 help
20 This selects support for Rockchip SoC specific extensions 24 This selects support for Rockchip SoC specific extensions
21 for the Analogix Core DP driver. If you want to enable DP 25 for the Analogix Core DP driver. If you want to enable DP
@@ -23,9 +27,7 @@ config ROCKCHIP_ANALOGIX_DP
23 27
24config ROCKCHIP_CDN_DP 28config ROCKCHIP_CDN_DP
25 bool "Rockchip cdn DP" 29 bool "Rockchip cdn DP"
26 depends on DRM_ROCKCHIP 30 depends on EXTCON=y || (EXTCON=m && DRM_ROCKCHIP=m)
27 depends on EXTCON
28 select SND_SOC_HDMI_CODEC if SND_SOC
29 help 31 help
30 This selects support for Rockchip SoC specific extensions 32 This selects support for Rockchip SoC specific extensions
31 for the cdn DP driver. If you want to enable Dp on 33 for the cdn DP driver. If you want to enable Dp on
@@ -34,8 +36,6 @@ config ROCKCHIP_CDN_DP
34 36
35config ROCKCHIP_DW_HDMI 37config ROCKCHIP_DW_HDMI
36 bool "Rockchip specific extensions for Synopsys DW HDMI" 38 bool "Rockchip specific extensions for Synopsys DW HDMI"
37 depends on DRM_ROCKCHIP
38 select DRM_DW_HDMI
39 help 39 help
40 This selects support for Rockchip SoC specific extensions 40 This selects support for Rockchip SoC specific extensions
41 for the Synopsys DesignWare HDMI driver. If you want to 41 for the Synopsys DesignWare HDMI driver. If you want to
@@ -44,8 +44,6 @@ config ROCKCHIP_DW_HDMI
44 44
45config ROCKCHIP_DW_MIPI_DSI 45config ROCKCHIP_DW_MIPI_DSI
46 bool "Rockchip specific extensions for Synopsys DW MIPI DSI" 46 bool "Rockchip specific extensions for Synopsys DW MIPI DSI"
47 depends on DRM_ROCKCHIP
48 select DRM_MIPI_DSI
49 help 47 help
50 This selects support for Rockchip SoC specific extensions 48 This selects support for Rockchip SoC specific extensions
51 for the Synopsys DesignWare HDMI driver. If you want to 49 for the Synopsys DesignWare HDMI driver. If you want to
@@ -54,8 +52,9 @@ config ROCKCHIP_DW_MIPI_DSI
54 52
55config ROCKCHIP_INNO_HDMI 53config ROCKCHIP_INNO_HDMI
56 bool "Rockchip specific extensions for Innosilicon HDMI" 54 bool "Rockchip specific extensions for Innosilicon HDMI"
57 depends on DRM_ROCKCHIP
58 help 55 help
59 This selects support for Rockchip SoC specific extensions 56 This selects support for Rockchip SoC specific extensions
60 for the Innosilicon HDMI driver. If you want to enable 57 for the Innosilicon HDMI driver. If you want to enable
61 HDMI on RK3036 based SoC, you should select this option. 58 HDMI on RK3036 based SoC, you should select this option.
59
60endif
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
index 5d450332c2fd..2900f1410d95 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c
@@ -500,7 +500,7 @@ static void vop_line_flag_irq_disable(struct vop *vop)
500static int vop_enable(struct drm_crtc *crtc) 500static int vop_enable(struct drm_crtc *crtc)
501{ 501{
502 struct vop *vop = to_vop(crtc); 502 struct vop *vop = to_vop(crtc);
503 int ret; 503 int ret, i;
504 504
505 ret = pm_runtime_get_sync(vop->dev); 505 ret = pm_runtime_get_sync(vop->dev);
506 if (ret < 0) { 506 if (ret < 0) {
@@ -533,6 +533,20 @@ static int vop_enable(struct drm_crtc *crtc)
533 } 533 }
534 534
535 memcpy(vop->regs, vop->regsbak, vop->len); 535 memcpy(vop->regs, vop->regsbak, vop->len);
536 /*
537 * We need to make sure that all windows are disabled before we
538 * enable the crtc. Otherwise we might try to scan from a destroyed
539 * buffer later.
540 */
541 for (i = 0; i < vop->data->win_size; i++) {
542 struct vop_win *vop_win = &vop->win[i];
543 const struct vop_win_data *win = vop_win->data;
544
545 spin_lock(&vop->reg_lock);
546 VOP_WIN_SET(vop, win, enable, 0);
547 spin_unlock(&vop->reg_lock);
548 }
549
536 vop_cfg_done(vop); 550 vop_cfg_done(vop);
537 551
538 /* 552 /*
@@ -566,28 +580,11 @@ err_put_pm_runtime:
566static void vop_crtc_disable(struct drm_crtc *crtc) 580static void vop_crtc_disable(struct drm_crtc *crtc)
567{ 581{
568 struct vop *vop = to_vop(crtc); 582 struct vop *vop = to_vop(crtc);
569 int i;
570 583
571 WARN_ON(vop->event); 584 WARN_ON(vop->event);
572 585
573 rockchip_drm_psr_deactivate(&vop->crtc); 586 rockchip_drm_psr_deactivate(&vop->crtc);
574 587
575 /*
576 * We need to make sure that all windows are disabled before we
577 * disable that crtc. Otherwise we might try to scan from a destroyed
578 * buffer later.
579 */
580 for (i = 0; i < vop->data->win_size; i++) {
581 struct vop_win *vop_win = &vop->win[i];
582 const struct vop_win_data *win = vop_win->data;
583
584 spin_lock(&vop->reg_lock);
585 VOP_WIN_SET(vop, win, enable, 0);
586 spin_unlock(&vop->reg_lock);
587 }
588
589 vop_cfg_done(vop);
590
591 drm_crtc_vblank_off(crtc); 588 drm_crtc_vblank_off(crtc);
592 589
593 /* 590 /*
@@ -682,8 +679,10 @@ static int vop_plane_atomic_check(struct drm_plane *plane,
682 * Src.x1 can be odd when do clip, but yuv plane start point 679 * Src.x1 can be odd when do clip, but yuv plane start point
683 * need align with 2 pixel. 680 * need align with 2 pixel.
684 */ 681 */
685 if (is_yuv_support(fb->format->format) && ((state->src.x1 >> 16) % 2)) 682 if (is_yuv_support(fb->format->format) && ((state->src.x1 >> 16) % 2)) {
683 DRM_ERROR("Invalid Source: Yuv format not support odd xpos\n");
686 return -EINVAL; 684 return -EINVAL;
685 }
687 686
688 return 0; 687 return 0;
689} 688}
@@ -764,7 +763,7 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
764 spin_lock(&vop->reg_lock); 763 spin_lock(&vop->reg_lock);
765 764
766 VOP_WIN_SET(vop, win, format, format); 765 VOP_WIN_SET(vop, win, format, format);
767 VOP_WIN_SET(vop, win, yrgb_vir, fb->pitches[0] >> 2); 766 VOP_WIN_SET(vop, win, yrgb_vir, DIV_ROUND_UP(fb->pitches[0], 4));
768 VOP_WIN_SET(vop, win, yrgb_mst, dma_addr); 767 VOP_WIN_SET(vop, win, yrgb_mst, dma_addr);
769 if (is_yuv_support(fb->format->format)) { 768 if (is_yuv_support(fb->format->format)) {
770 int hsub = drm_format_horz_chroma_subsampling(fb->format->format); 769 int hsub = drm_format_horz_chroma_subsampling(fb->format->format);
@@ -778,7 +777,7 @@ static void vop_plane_atomic_update(struct drm_plane *plane,
778 offset += (src->y1 >> 16) * fb->pitches[1] / vsub; 777 offset += (src->y1 >> 16) * fb->pitches[1] / vsub;
779 778
780 dma_addr = rk_uv_obj->dma_addr + offset + fb->offsets[1]; 779 dma_addr = rk_uv_obj->dma_addr + offset + fb->offsets[1];
781 VOP_WIN_SET(vop, win, uv_vir, fb->pitches[1] >> 2); 780 VOP_WIN_SET(vop, win, uv_vir, DIV_ROUND_UP(fb->pitches[1], 4));
782 VOP_WIN_SET(vop, win, uv_mst, dma_addr); 781 VOP_WIN_SET(vop, win, uv_mst, dma_addr);
783 } 782 }
784 783
diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h
index 9979fd0c2282..27eefbfcf3d0 100644
--- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h
+++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h
@@ -282,6 +282,9 @@ static inline uint16_t scl_get_bili_dn_vskip(int src_h, int dst_h,
282 282
283 act_height = (src_h + vskiplines - 1) / vskiplines; 283 act_height = (src_h + vskiplines - 1) / vskiplines;
284 284
285 if (act_height == dst_h)
286 return GET_SCL_FT_BILI_DN(src_h, dst_h) / vskiplines;
287
285 return GET_SCL_FT_BILI_DN(act_height, dst_h); 288 return GET_SCL_FT_BILI_DN(act_height, dst_h);
286} 289}
287 290
diff --git a/drivers/gpu/drm/stm/Kconfig b/drivers/gpu/drm/stm/Kconfig
index 2c4817fb0890..8fe5b184b4e8 100644
--- a/drivers/gpu/drm/stm/Kconfig
+++ b/drivers/gpu/drm/stm/Kconfig
@@ -7,7 +7,6 @@ config DRM_STM
7 select DRM_PANEL 7 select DRM_PANEL
8 select VIDEOMODE_HELPERS 8 select VIDEOMODE_HELPERS
9 select FB_PROVIDE_GET_FB_UNMAPPED_AREA 9 select FB_PROVIDE_GET_FB_UNMAPPED_AREA
10 default y
11 10
12 help 11 help
13 Enable support for the on-chip display controller on 12 Enable support for the on-chip display controller on
diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c
index 403bbd5f99a9..a12cc7ea99b6 100644
--- a/drivers/gpu/drm/vc4/vc4_crtc.c
+++ b/drivers/gpu/drm/vc4/vc4_crtc.c
@@ -520,6 +520,34 @@ static void vc4_crtc_disable(struct drm_crtc *crtc)
520 SCALER_DISPSTATX_EMPTY); 520 SCALER_DISPSTATX_EMPTY);
521} 521}
522 522
523static void vc4_crtc_update_dlist(struct drm_crtc *crtc)
524{
525 struct drm_device *dev = crtc->dev;
526 struct vc4_dev *vc4 = to_vc4_dev(dev);
527 struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc);
528 struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(crtc->state);
529
530 if (crtc->state->event) {
531 unsigned long flags;
532
533 crtc->state->event->pipe = drm_crtc_index(crtc);
534
535 WARN_ON(drm_crtc_vblank_get(crtc) != 0);
536
537 spin_lock_irqsave(&dev->event_lock, flags);
538 vc4_crtc->event = crtc->state->event;
539 crtc->state->event = NULL;
540
541 HVS_WRITE(SCALER_DISPLISTX(vc4_crtc->channel),
542 vc4_state->mm.start);
543
544 spin_unlock_irqrestore(&dev->event_lock, flags);
545 } else {
546 HVS_WRITE(SCALER_DISPLISTX(vc4_crtc->channel),
547 vc4_state->mm.start);
548 }
549}
550
523static void vc4_crtc_enable(struct drm_crtc *crtc) 551static void vc4_crtc_enable(struct drm_crtc *crtc)
524{ 552{
525 struct drm_device *dev = crtc->dev; 553 struct drm_device *dev = crtc->dev;
@@ -530,6 +558,12 @@ static void vc4_crtc_enable(struct drm_crtc *crtc)
530 558
531 require_hvs_enabled(dev); 559 require_hvs_enabled(dev);
532 560
561 /* Enable vblank irq handling before crtc is started otherwise
562 * drm_crtc_get_vblank() fails in vc4_crtc_update_dlist().
563 */
564 drm_crtc_vblank_on(crtc);
565 vc4_crtc_update_dlist(crtc);
566
533 /* Turn on the scaler, which will wait for vstart to start 567 /* Turn on the scaler, which will wait for vstart to start
534 * compositing. 568 * compositing.
535 */ 569 */
@@ -541,9 +575,6 @@ static void vc4_crtc_enable(struct drm_crtc *crtc)
541 /* Turn on the pixel valve, which will emit the vstart signal. */ 575 /* Turn on the pixel valve, which will emit the vstart signal. */
542 CRTC_WRITE(PV_V_CONTROL, 576 CRTC_WRITE(PV_V_CONTROL,
543 CRTC_READ(PV_V_CONTROL) | PV_VCONTROL_VIDEN); 577 CRTC_READ(PV_V_CONTROL) | PV_VCONTROL_VIDEN);
544
545 /* Enable vblank irq handling after crtc is started. */
546 drm_crtc_vblank_on(crtc);
547} 578}
548 579
549static bool vc4_crtc_mode_fixup(struct drm_crtc *crtc, 580static bool vc4_crtc_mode_fixup(struct drm_crtc *crtc,
@@ -598,7 +629,6 @@ static void vc4_crtc_atomic_flush(struct drm_crtc *crtc,
598{ 629{
599 struct drm_device *dev = crtc->dev; 630 struct drm_device *dev = crtc->dev;
600 struct vc4_dev *vc4 = to_vc4_dev(dev); 631 struct vc4_dev *vc4 = to_vc4_dev(dev);
601 struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc);
602 struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(crtc->state); 632 struct vc4_crtc_state *vc4_state = to_vc4_crtc_state(crtc->state);
603 struct drm_plane *plane; 633 struct drm_plane *plane;
604 bool debug_dump_regs = false; 634 bool debug_dump_regs = false;
@@ -620,25 +650,15 @@ static void vc4_crtc_atomic_flush(struct drm_crtc *crtc,
620 650
621 WARN_ON_ONCE(dlist_next - dlist_start != vc4_state->mm.size); 651 WARN_ON_ONCE(dlist_next - dlist_start != vc4_state->mm.size);
622 652
623 if (crtc->state->event) { 653 /* Only update DISPLIST if the CRTC was already running and is not
624 unsigned long flags; 654 * being disabled.
625 655 * vc4_crtc_enable() takes care of updating the dlist just after
626 crtc->state->event->pipe = drm_crtc_index(crtc); 656 * re-enabling VBLANK interrupts and before enabling the engine.
627 657 * If the CRTC is being disabled, there's no point in updating this
628 WARN_ON(drm_crtc_vblank_get(crtc) != 0); 658 * information.
629 659 */
630 spin_lock_irqsave(&dev->event_lock, flags); 660 if (crtc->state->active && old_state->active)
631 vc4_crtc->event = crtc->state->event; 661 vc4_crtc_update_dlist(crtc);
632 crtc->state->event = NULL;
633
634 HVS_WRITE(SCALER_DISPLISTX(vc4_crtc->channel),
635 vc4_state->mm.start);
636
637 spin_unlock_irqrestore(&dev->event_lock, flags);
638 } else {
639 HVS_WRITE(SCALER_DISPLISTX(vc4_crtc->channel),
640 vc4_state->mm.start);
641 }
642 662
643 if (debug_dump_regs) { 663 if (debug_dump_regs) {
644 DRM_INFO("CRTC %d HVS after:\n", drm_crtc_index(crtc)); 664 DRM_INFO("CRTC %d HVS after:\n", drm_crtc_index(crtc));
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c b/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c
index 35bf781e418e..c7056322211c 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_buffer.c
@@ -30,49 +30,49 @@
30#include <drm/ttm/ttm_placement.h> 30#include <drm/ttm/ttm_placement.h>
31#include <drm/ttm/ttm_page_alloc.h> 31#include <drm/ttm/ttm_page_alloc.h>
32 32
33static struct ttm_place vram_placement_flags = { 33static const struct ttm_place vram_placement_flags = {
34 .fpfn = 0, 34 .fpfn = 0,
35 .lpfn = 0, 35 .lpfn = 0,
36 .flags = TTM_PL_FLAG_VRAM | TTM_PL_FLAG_CACHED 36 .flags = TTM_PL_FLAG_VRAM | TTM_PL_FLAG_CACHED
37}; 37};
38 38
39static struct ttm_place vram_ne_placement_flags = { 39static const struct ttm_place vram_ne_placement_flags = {
40 .fpfn = 0, 40 .fpfn = 0,
41 .lpfn = 0, 41 .lpfn = 0,
42 .flags = TTM_PL_FLAG_VRAM | TTM_PL_FLAG_CACHED | TTM_PL_FLAG_NO_EVICT 42 .flags = TTM_PL_FLAG_VRAM | TTM_PL_FLAG_CACHED | TTM_PL_FLAG_NO_EVICT
43}; 43};
44 44
45static struct ttm_place sys_placement_flags = { 45static const struct ttm_place sys_placement_flags = {
46 .fpfn = 0, 46 .fpfn = 0,
47 .lpfn = 0, 47 .lpfn = 0,
48 .flags = TTM_PL_FLAG_SYSTEM | TTM_PL_FLAG_CACHED 48 .flags = TTM_PL_FLAG_SYSTEM | TTM_PL_FLAG_CACHED
49}; 49};
50 50
51static struct ttm_place sys_ne_placement_flags = { 51static const struct ttm_place sys_ne_placement_flags = {
52 .fpfn = 0, 52 .fpfn = 0,
53 .lpfn = 0, 53 .lpfn = 0,
54 .flags = TTM_PL_FLAG_SYSTEM | TTM_PL_FLAG_CACHED | TTM_PL_FLAG_NO_EVICT 54 .flags = TTM_PL_FLAG_SYSTEM | TTM_PL_FLAG_CACHED | TTM_PL_FLAG_NO_EVICT
55}; 55};
56 56
57static struct ttm_place gmr_placement_flags = { 57static const struct ttm_place gmr_placement_flags = {
58 .fpfn = 0, 58 .fpfn = 0,
59 .lpfn = 0, 59 .lpfn = 0,
60 .flags = VMW_PL_FLAG_GMR | TTM_PL_FLAG_CACHED 60 .flags = VMW_PL_FLAG_GMR | TTM_PL_FLAG_CACHED
61}; 61};
62 62
63static struct ttm_place gmr_ne_placement_flags = { 63static const struct ttm_place gmr_ne_placement_flags = {
64 .fpfn = 0, 64 .fpfn = 0,
65 .lpfn = 0, 65 .lpfn = 0,
66 .flags = VMW_PL_FLAG_GMR | TTM_PL_FLAG_CACHED | TTM_PL_FLAG_NO_EVICT 66 .flags = VMW_PL_FLAG_GMR | TTM_PL_FLAG_CACHED | TTM_PL_FLAG_NO_EVICT
67}; 67};
68 68
69static struct ttm_place mob_placement_flags = { 69static const struct ttm_place mob_placement_flags = {
70 .fpfn = 0, 70 .fpfn = 0,
71 .lpfn = 0, 71 .lpfn = 0,
72 .flags = VMW_PL_FLAG_MOB | TTM_PL_FLAG_CACHED 72 .flags = VMW_PL_FLAG_MOB | TTM_PL_FLAG_CACHED
73}; 73};
74 74
75static struct ttm_place mob_ne_placement_flags = { 75static const struct ttm_place mob_ne_placement_flags = {
76 .fpfn = 0, 76 .fpfn = 0,
77 .lpfn = 0, 77 .lpfn = 0,
78 .flags = VMW_PL_FLAG_MOB | TTM_PL_FLAG_CACHED | TTM_PL_FLAG_NO_EVICT 78 .flags = VMW_PL_FLAG_MOB | TTM_PL_FLAG_CACHED | TTM_PL_FLAG_NO_EVICT
@@ -85,7 +85,7 @@ struct ttm_placement vmw_vram_placement = {
85 .busy_placement = &vram_placement_flags 85 .busy_placement = &vram_placement_flags
86}; 86};
87 87
88static struct ttm_place vram_gmr_placement_flags[] = { 88static const struct ttm_place vram_gmr_placement_flags[] = {
89 { 89 {
90 .fpfn = 0, 90 .fpfn = 0,
91 .lpfn = 0, 91 .lpfn = 0,
@@ -97,7 +97,7 @@ static struct ttm_place vram_gmr_placement_flags[] = {
97 } 97 }
98}; 98};
99 99
100static struct ttm_place gmr_vram_placement_flags[] = { 100static const struct ttm_place gmr_vram_placement_flags[] = {
101 { 101 {
102 .fpfn = 0, 102 .fpfn = 0,
103 .lpfn = 0, 103 .lpfn = 0,
@@ -116,7 +116,7 @@ struct ttm_placement vmw_vram_gmr_placement = {
116 .busy_placement = &gmr_placement_flags 116 .busy_placement = &gmr_placement_flags
117}; 117};
118 118
119static struct ttm_place vram_gmr_ne_placement_flags[] = { 119static const struct ttm_place vram_gmr_ne_placement_flags[] = {
120 { 120 {
121 .fpfn = 0, 121 .fpfn = 0,
122 .lpfn = 0, 122 .lpfn = 0,
@@ -165,7 +165,7 @@ struct ttm_placement vmw_sys_ne_placement = {
165 .busy_placement = &sys_ne_placement_flags 165 .busy_placement = &sys_ne_placement_flags
166}; 166};
167 167
168static struct ttm_place evictable_placement_flags[] = { 168static const struct ttm_place evictable_placement_flags[] = {
169 { 169 {
170 .fpfn = 0, 170 .fpfn = 0,
171 .lpfn = 0, 171 .lpfn = 0,
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf.c b/drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf.c
index 99a7f4ab7d97..86178796de6c 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf.c
@@ -779,8 +779,8 @@ static int vmw_cmdbuf_space_pool(struct vmw_cmdbuf_man *man,
779 if (ret) 779 if (ret)
780 return ret; 780 return ret;
781 781
782 header->cb_header = dma_pool_alloc(man->headers, GFP_KERNEL, 782 header->cb_header = dma_pool_zalloc(man->headers, GFP_KERNEL,
783 &header->handle); 783 &header->handle);
784 if (!header->cb_header) { 784 if (!header->cb_header) {
785 ret = -ENOMEM; 785 ret = -ENOMEM;
786 goto out_no_cb_header; 786 goto out_no_cb_header;
@@ -790,7 +790,6 @@ static int vmw_cmdbuf_space_pool(struct vmw_cmdbuf_man *man,
790 cb_hdr = header->cb_header; 790 cb_hdr = header->cb_header;
791 offset = header->node.start << PAGE_SHIFT; 791 offset = header->node.start << PAGE_SHIFT;
792 header->cmd = man->map + offset; 792 header->cmd = man->map + offset;
793 memset(cb_hdr, 0, sizeof(*cb_hdr));
794 if (man->using_mob) { 793 if (man->using_mob) {
795 cb_hdr->flags = SVGA_CB_FLAG_MOB; 794 cb_hdr->flags = SVGA_CB_FLAG_MOB;
796 cb_hdr->ptr.mob.mobid = man->cmd_space->mem.start; 795 cb_hdr->ptr.mob.mobid = man->cmd_space->mem.start;
@@ -827,8 +826,8 @@ static int vmw_cmdbuf_space_inline(struct vmw_cmdbuf_man *man,
827 if (WARN_ON_ONCE(size > VMW_CMDBUF_INLINE_SIZE)) 826 if (WARN_ON_ONCE(size > VMW_CMDBUF_INLINE_SIZE))
828 return -ENOMEM; 827 return -ENOMEM;
829 828
830 dheader = dma_pool_alloc(man->dheaders, GFP_KERNEL, 829 dheader = dma_pool_zalloc(man->dheaders, GFP_KERNEL,
831 &header->handle); 830 &header->handle);
832 if (!dheader) 831 if (!dheader)
833 return -ENOMEM; 832 return -ENOMEM;
834 833
@@ -837,7 +836,6 @@ static int vmw_cmdbuf_space_inline(struct vmw_cmdbuf_man *man,
837 cb_hdr = &dheader->cb_header; 836 cb_hdr = &dheader->cb_header;
838 header->cb_header = cb_hdr; 837 header->cb_header = cb_hdr;
839 header->cmd = dheader->cmd; 838 header->cmd = dheader->cmd;
840 memset(dheader, 0, sizeof(*dheader));
841 cb_hdr->status = SVGA_CB_STATUS_NONE; 839 cb_hdr->status = SVGA_CB_STATUS_NONE;
842 cb_hdr->flags = SVGA_CB_FLAG_NONE; 840 cb_hdr->flags = SVGA_CB_FLAG_NONE;
843 cb_hdr->ptr.pa = (u64)header->handle + 841 cb_hdr->ptr.pa = (u64)header->handle +
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf_res.c b/drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf_res.c
index 1f013d45c9e9..36c7b6c839c0 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf_res.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_cmdbuf_res.c
@@ -205,7 +205,7 @@ int vmw_cmdbuf_res_add(struct vmw_cmdbuf_res_manager *man,
205 int ret; 205 int ret;
206 206
207 cres = kzalloc(sizeof(*cres), GFP_KERNEL); 207 cres = kzalloc(sizeof(*cres), GFP_KERNEL);
208 if (unlikely(cres == NULL)) 208 if (unlikely(!cres))
209 return -ENOMEM; 209 return -ENOMEM;
210 210
211 cres->hash.key = user_key | (res_type << 24); 211 cres->hash.key = user_key | (res_type << 24);
@@ -291,7 +291,7 @@ vmw_cmdbuf_res_man_create(struct vmw_private *dev_priv)
291 int ret; 291 int ret;
292 292
293 man = kzalloc(sizeof(*man), GFP_KERNEL); 293 man = kzalloc(sizeof(*man), GFP_KERNEL);
294 if (man == NULL) 294 if (!man)
295 return ERR_PTR(-ENOMEM); 295 return ERR_PTR(-ENOMEM);
296 296
297 man->dev_priv = dev_priv; 297 man->dev_priv = dev_priv;
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_context.c b/drivers/gpu/drm/vmwgfx/vmwgfx_context.c
index bcc6d4136c87..4212b3e673bc 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_context.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_context.c
@@ -210,8 +210,8 @@ static int vmw_gb_context_init(struct vmw_private *dev_priv,
210 for (i = 0; i < SVGA_COTABLE_DX10_MAX; ++i) { 210 for (i = 0; i < SVGA_COTABLE_DX10_MAX; ++i) {
211 uctx->cotables[i] = vmw_cotable_alloc(dev_priv, 211 uctx->cotables[i] = vmw_cotable_alloc(dev_priv,
212 &uctx->res, i); 212 &uctx->res, i);
213 if (unlikely(uctx->cotables[i] == NULL)) { 213 if (unlikely(IS_ERR(uctx->cotables[i]))) {
214 ret = -ENOMEM; 214 ret = PTR_ERR(uctx->cotables[i]);
215 goto out_cotables; 215 goto out_cotables;
216 } 216 }
217 } 217 }
@@ -777,7 +777,7 @@ static int vmw_context_define(struct drm_device *dev, void *data,
777 } 777 }
778 778
779 ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); 779 ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
780 if (unlikely(ctx == NULL)) { 780 if (unlikely(!ctx)) {
781 ttm_mem_global_free(vmw_mem_glob(dev_priv), 781 ttm_mem_global_free(vmw_mem_glob(dev_priv),
782 vmw_user_context_size); 782 vmw_user_context_size);
783 ret = -ENOMEM; 783 ret = -ENOMEM;
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_cotable.c b/drivers/gpu/drm/vmwgfx/vmwgfx_cotable.c
index 6c026d75c180..d87861bbe971 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_cotable.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_cotable.c
@@ -584,7 +584,7 @@ struct vmw_resource *vmw_cotable_alloc(struct vmw_private *dev_priv,
584 return ERR_PTR(ret); 584 return ERR_PTR(ret);
585 585
586 vcotbl = kzalloc(sizeof(*vcotbl), GFP_KERNEL); 586 vcotbl = kzalloc(sizeof(*vcotbl), GFP_KERNEL);
587 if (unlikely(vcotbl == NULL)) { 587 if (unlikely(!vcotbl)) {
588 ret = -ENOMEM; 588 ret = -ENOMEM;
589 goto out_no_alloc; 589 goto out_no_alloc;
590 } 590 }
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
index 4a641555b960..4436d53ae16c 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
@@ -227,7 +227,7 @@ static const struct drm_ioctl_desc vmw_ioctls[] = {
227 DRM_AUTH | DRM_RENDER_ALLOW), 227 DRM_AUTH | DRM_RENDER_ALLOW),
228}; 228};
229 229
230static struct pci_device_id vmw_pci_id_list[] = { 230static const struct pci_device_id vmw_pci_id_list[] = {
231 {0x15ad, 0x0405, PCI_ANY_ID, PCI_ANY_ID, 0, 0, VMWGFX_CHIP_SVGAII}, 231 {0x15ad, 0x0405, PCI_ANY_ID, PCI_ANY_ID, 0, 0, VMWGFX_CHIP_SVGAII},
232 {0, 0, 0} 232 {0, 0, 0}
233}; 233};
@@ -630,7 +630,7 @@ static int vmw_driver_load(struct drm_device *dev, unsigned long chipset)
630 char host_log[100] = {0}; 630 char host_log[100] = {0};
631 631
632 dev_priv = kzalloc(sizeof(*dev_priv), GFP_KERNEL); 632 dev_priv = kzalloc(sizeof(*dev_priv), GFP_KERNEL);
633 if (unlikely(dev_priv == NULL)) { 633 if (unlikely(!dev_priv)) {
634 DRM_ERROR("Failed allocating a device private struct.\n"); 634 DRM_ERROR("Failed allocating a device private struct.\n");
635 return -ENOMEM; 635 return -ENOMEM;
636 } 636 }
@@ -1035,7 +1035,7 @@ static int vmw_driver_open(struct drm_device *dev, struct drm_file *file_priv)
1035 int ret = -ENOMEM; 1035 int ret = -ENOMEM;
1036 1036
1037 vmw_fp = kzalloc(sizeof(*vmw_fp), GFP_KERNEL); 1037 vmw_fp = kzalloc(sizeof(*vmw_fp), GFP_KERNEL);
1038 if (unlikely(vmw_fp == NULL)) 1038 if (unlikely(!vmw_fp))
1039 return ret; 1039 return ret;
1040 1040
1041 vmw_fp->tfile = ttm_object_file_init(dev_priv->tdev, 10); 1041 vmw_fp->tfile = ttm_object_file_init(dev_priv->tdev, 10);
@@ -1196,7 +1196,7 @@ static int vmw_master_create(struct drm_device *dev,
1196 struct vmw_master *vmaster; 1196 struct vmw_master *vmaster;
1197 1197
1198 vmaster = kzalloc(sizeof(*vmaster), GFP_KERNEL); 1198 vmaster = kzalloc(sizeof(*vmaster), GFP_KERNEL);
1199 if (unlikely(vmaster == NULL)) 1199 if (unlikely(!vmaster))
1200 return -ENOMEM; 1200 return -ENOMEM;
1201 1201
1202 vmw_master_init(vmaster); 1202 vmw_master_init(vmaster);
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
index c7b53d987f06..2cfb3c93f42a 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_execbuf.c
@@ -264,7 +264,7 @@ static int vmw_resource_val_add(struct vmw_sw_context *sw_context,
264 } 264 }
265 265
266 node = kzalloc(sizeof(*node), GFP_KERNEL); 266 node = kzalloc(sizeof(*node), GFP_KERNEL);
267 if (unlikely(node == NULL)) { 267 if (unlikely(!node)) {
268 DRM_ERROR("Failed to allocate a resource validation " 268 DRM_ERROR("Failed to allocate a resource validation "
269 "entry.\n"); 269 "entry.\n");
270 return -ENOMEM; 270 return -ENOMEM;
@@ -452,7 +452,7 @@ static int vmw_resource_relocation_add(struct list_head *list,
452 struct vmw_resource_relocation *rel; 452 struct vmw_resource_relocation *rel;
453 453
454 rel = kmalloc(sizeof(*rel), GFP_KERNEL); 454 rel = kmalloc(sizeof(*rel), GFP_KERNEL);
455 if (unlikely(rel == NULL)) { 455 if (unlikely(!rel)) {
456 DRM_ERROR("Failed to allocate a resource relocation.\n"); 456 DRM_ERROR("Failed to allocate a resource relocation.\n");
457 return -ENOMEM; 457 return -ENOMEM;
458 } 458 }
@@ -519,7 +519,7 @@ static int vmw_cmd_invalid(struct vmw_private *dev_priv,
519 struct vmw_sw_context *sw_context, 519 struct vmw_sw_context *sw_context,
520 SVGA3dCmdHeader *header) 520 SVGA3dCmdHeader *header)
521{ 521{
522 return capable(CAP_SYS_ADMIN) ? : -EINVAL; 522 return -EINVAL;
523} 523}
524 524
525static int vmw_cmd_ok(struct vmw_private *dev_priv, 525static int vmw_cmd_ok(struct vmw_private *dev_priv,
@@ -2584,7 +2584,7 @@ static int vmw_cmd_dx_set_vertex_buffers(struct vmw_private *dev_priv,
2584 2584
2585/** 2585/**
2586 * vmw_cmd_dx_ia_set_vertex_buffers - Validate an 2586 * vmw_cmd_dx_ia_set_vertex_buffers - Validate an
2587 * SVGA_3D_CMD_DX_IA_SET_VERTEX_BUFFERS command. 2587 * SVGA_3D_CMD_DX_IA_SET_INDEX_BUFFER command.
2588 * 2588 *
2589 * @dev_priv: Pointer to a device private struct. 2589 * @dev_priv: Pointer to a device private struct.
2590 * @sw_context: The software context being used for this batch. 2590 * @sw_context: The software context being used for this batch.
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c b/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c
index 6b2708b4eafe..b8bc5bc7de7e 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_fence.c
@@ -284,7 +284,7 @@ struct vmw_fence_manager *vmw_fence_manager_init(struct vmw_private *dev_priv)
284{ 284{
285 struct vmw_fence_manager *fman = kzalloc(sizeof(*fman), GFP_KERNEL); 285 struct vmw_fence_manager *fman = kzalloc(sizeof(*fman), GFP_KERNEL);
286 286
287 if (unlikely(fman == NULL)) 287 if (unlikely(!fman))
288 return NULL; 288 return NULL;
289 289
290 fman->dev_priv = dev_priv; 290 fman->dev_priv = dev_priv;
@@ -541,7 +541,7 @@ int vmw_fence_create(struct vmw_fence_manager *fman,
541 int ret; 541 int ret;
542 542
543 fence = kzalloc(sizeof(*fence), GFP_KERNEL); 543 fence = kzalloc(sizeof(*fence), GFP_KERNEL);
544 if (unlikely(fence == NULL)) 544 if (unlikely(!fence))
545 return -ENOMEM; 545 return -ENOMEM;
546 546
547 ret = vmw_fence_obj_init(fman, fence, seqno, 547 ret = vmw_fence_obj_init(fman, fence, seqno,
@@ -606,7 +606,7 @@ int vmw_user_fence_create(struct drm_file *file_priv,
606 return ret; 606 return ret;
607 607
608 ufence = kzalloc(sizeof(*ufence), GFP_KERNEL); 608 ufence = kzalloc(sizeof(*ufence), GFP_KERNEL);
609 if (unlikely(ufence == NULL)) { 609 if (unlikely(!ufence)) {
610 ret = -ENOMEM; 610 ret = -ENOMEM;
611 goto out_no_object; 611 goto out_no_object;
612 } 612 }
@@ -966,7 +966,7 @@ int vmw_event_fence_action_queue(struct drm_file *file_priv,
966 struct vmw_fence_manager *fman = fman_from_fence(fence); 966 struct vmw_fence_manager *fman = fman_from_fence(fence);
967 967
968 eaction = kzalloc(sizeof(*eaction), GFP_KERNEL); 968 eaction = kzalloc(sizeof(*eaction), GFP_KERNEL);
969 if (unlikely(eaction == NULL)) 969 if (unlikely(!eaction))
970 return -ENOMEM; 970 return -ENOMEM;
971 971
972 eaction->event = event; 972 eaction->event = event;
@@ -1002,7 +1002,7 @@ static int vmw_event_fence_action_create(struct drm_file *file_priv,
1002 int ret; 1002 int ret;
1003 1003
1004 event = kzalloc(sizeof(*event), GFP_KERNEL); 1004 event = kzalloc(sizeof(*event), GFP_KERNEL);
1005 if (unlikely(event == NULL)) { 1005 if (unlikely(!event)) {
1006 DRM_ERROR("Failed to allocate an event.\n"); 1006 DRM_ERROR("Failed to allocate an event.\n");
1007 ret = -ENOMEM; 1007 ret = -ENOMEM;
1008 goto out_no_space; 1008 goto out_no_space;
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c b/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c
index c1900f4390a4..d2b03d4a3c86 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_gmrid_manager.c
@@ -121,7 +121,7 @@ static int vmw_gmrid_man_init(struct ttm_mem_type_manager *man,
121 struct vmwgfx_gmrid_man *gman = 121 struct vmwgfx_gmrid_man *gman =
122 kzalloc(sizeof(*gman), GFP_KERNEL); 122 kzalloc(sizeof(*gman), GFP_KERNEL);
123 123
124 if (unlikely(gman == NULL)) 124 if (unlikely(!gman))
125 return -ENOMEM; 125 return -ENOMEM;
126 126
127 spin_lock_init(&gman->lock); 127 spin_lock_init(&gman->lock);
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
index 3d94ea67a825..61e06f0e8cd3 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c
@@ -384,6 +384,12 @@ vmw_du_cursor_plane_atomic_update(struct drm_plane *plane,
384 384
385 hotspot_x = du->hotspot_x; 385 hotspot_x = du->hotspot_x;
386 hotspot_y = du->hotspot_y; 386 hotspot_y = du->hotspot_y;
387
388 if (plane->fb) {
389 hotspot_x += plane->fb->hot_x;
390 hotspot_y += plane->fb->hot_y;
391 }
392
387 du->cursor_surface = vps->surf; 393 du->cursor_surface = vps->surf;
388 du->cursor_dmabuf = vps->dmabuf; 394 du->cursor_dmabuf = vps->dmabuf;
389 395
@@ -411,6 +417,9 @@ vmw_du_cursor_plane_atomic_update(struct drm_plane *plane,
411 vmw_cursor_update_position(dev_priv, true, 417 vmw_cursor_update_position(dev_priv, true,
412 du->cursor_x + hotspot_x, 418 du->cursor_x + hotspot_x,
413 du->cursor_y + hotspot_y); 419 du->cursor_y + hotspot_y);
420
421 du->core_hotspot_x = hotspot_x - du->hotspot_x;
422 du->core_hotspot_y = hotspot_y - du->hotspot_y;
414 } else { 423 } else {
415 DRM_ERROR("Failed to update cursor image\n"); 424 DRM_ERROR("Failed to update cursor image\n");
416 } 425 }
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c b/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c
index 941bcfd131ff..b17f08fc50d3 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_mob.c
@@ -320,14 +320,14 @@ int vmw_otables_setup(struct vmw_private *dev_priv)
320 320
321 if (dev_priv->has_dx) { 321 if (dev_priv->has_dx) {
322 *otables = kmemdup(dx_tables, sizeof(dx_tables), GFP_KERNEL); 322 *otables = kmemdup(dx_tables, sizeof(dx_tables), GFP_KERNEL);
323 if (*otables == NULL) 323 if (!(*otables))
324 return -ENOMEM; 324 return -ENOMEM;
325 325
326 dev_priv->otable_batch.num_otables = ARRAY_SIZE(dx_tables); 326 dev_priv->otable_batch.num_otables = ARRAY_SIZE(dx_tables);
327 } else { 327 } else {
328 *otables = kmemdup(pre_dx_tables, sizeof(pre_dx_tables), 328 *otables = kmemdup(pre_dx_tables, sizeof(pre_dx_tables),
329 GFP_KERNEL); 329 GFP_KERNEL);
330 if (*otables == NULL) 330 if (!(*otables))
331 return -ENOMEM; 331 return -ENOMEM;
332 332
333 dev_priv->otable_batch.num_otables = ARRAY_SIZE(pre_dx_tables); 333 dev_priv->otable_batch.num_otables = ARRAY_SIZE(pre_dx_tables);
@@ -407,7 +407,7 @@ struct vmw_mob *vmw_mob_create(unsigned long data_pages)
407{ 407{
408 struct vmw_mob *mob = kzalloc(sizeof(*mob), GFP_KERNEL); 408 struct vmw_mob *mob = kzalloc(sizeof(*mob), GFP_KERNEL);
409 409
410 if (unlikely(mob == NULL)) 410 if (unlikely(!mob))
411 return NULL; 411 return NULL;
412 412
413 mob->num_pages = vmw_mob_calculate_pt_pages(data_pages); 413 mob->num_pages = vmw_mob_calculate_pt_pages(data_pages);
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_msg.c b/drivers/gpu/drm/vmwgfx/vmwgfx_msg.c
index 6063c9636d4a..97000996b8dc 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_msg.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_msg.c
@@ -244,7 +244,7 @@ static int vmw_recv_msg(struct rpc_channel *channel, void **msg,
244 244
245 reply_len = ebx; 245 reply_len = ebx;
246 reply = kzalloc(reply_len + 1, GFP_KERNEL); 246 reply = kzalloc(reply_len + 1, GFP_KERNEL);
247 if (reply == NULL) { 247 if (!reply) {
248 DRM_ERROR("Cannot allocate memory for reply\n"); 248 DRM_ERROR("Cannot allocate memory for reply\n");
249 return -ENOMEM; 249 return -ENOMEM;
250 } 250 }
@@ -340,7 +340,7 @@ int vmw_host_get_guestinfo(const char *guest_info_param,
340 340
341 msg_len = strlen(guest_info_param) + strlen("info-get ") + 1; 341 msg_len = strlen(guest_info_param) + strlen("info-get ") + 1;
342 msg = kzalloc(msg_len, GFP_KERNEL); 342 msg = kzalloc(msg_len, GFP_KERNEL);
343 if (msg == NULL) { 343 if (!msg) {
344 DRM_ERROR("Cannot allocate memory to get %s", guest_info_param); 344 DRM_ERROR("Cannot allocate memory to get %s", guest_info_param);
345 return -ENOMEM; 345 return -ENOMEM;
346 } 346 }
@@ -400,7 +400,7 @@ int vmw_host_log(const char *log)
400 400
401 msg_len = strlen(log) + strlen("log ") + 1; 401 msg_len = strlen(log) + strlen("log ") + 1;
402 msg = kzalloc(msg_len, GFP_KERNEL); 402 msg = kzalloc(msg_len, GFP_KERNEL);
403 if (msg == NULL) { 403 if (!msg) {
404 DRM_ERROR("Cannot allocate memory for log message\n"); 404 DRM_ERROR("Cannot allocate memory for log message\n");
405 return -ENOMEM; 405 return -ENOMEM;
406 } 406 }
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c b/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c
index 7d591f653dfa..a96f90f017d1 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_resource.c
@@ -446,7 +446,7 @@ int vmw_user_dmabuf_alloc(struct vmw_private *dev_priv,
446 int ret; 446 int ret;
447 447
448 user_bo = kzalloc(sizeof(*user_bo), GFP_KERNEL); 448 user_bo = kzalloc(sizeof(*user_bo), GFP_KERNEL);
449 if (unlikely(user_bo == NULL)) { 449 if (unlikely(!user_bo)) {
450 DRM_ERROR("Failed to allocate a buffer.\n"); 450 DRM_ERROR("Failed to allocate a buffer.\n");
451 return -ENOMEM; 451 return -ENOMEM;
452 } 452 }
@@ -836,7 +836,7 @@ static int vmw_resource_buf_alloc(struct vmw_resource *res,
836 } 836 }
837 837
838 backup = kzalloc(sizeof(*backup), GFP_KERNEL); 838 backup = kzalloc(sizeof(*backup), GFP_KERNEL);
839 if (unlikely(backup == NULL)) 839 if (unlikely(!backup))
840 return -ENOMEM; 840 return -ENOMEM;
841 841
842 ret = vmw_dmabuf_init(res->dev_priv, backup, res->backup_size, 842 ret = vmw_dmabuf_init(res->dev_priv, backup, res->backup_size,
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c b/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c
index 68f135c5b0d8..9b832f136813 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_shader.c
@@ -751,7 +751,7 @@ static int vmw_user_shader_alloc(struct vmw_private *dev_priv,
751 } 751 }
752 752
753 ushader = kzalloc(sizeof(*ushader), GFP_KERNEL); 753 ushader = kzalloc(sizeof(*ushader), GFP_KERNEL);
754 if (unlikely(ushader == NULL)) { 754 if (unlikely(!ushader)) {
755 ttm_mem_global_free(vmw_mem_glob(dev_priv), 755 ttm_mem_global_free(vmw_mem_glob(dev_priv),
756 vmw_user_shader_size); 756 vmw_user_shader_size);
757 ret = -ENOMEM; 757 ret = -ENOMEM;
@@ -821,7 +821,7 @@ static struct vmw_resource *vmw_shader_alloc(struct vmw_private *dev_priv,
821 } 821 }
822 822
823 shader = kzalloc(sizeof(*shader), GFP_KERNEL); 823 shader = kzalloc(sizeof(*shader), GFP_KERNEL);
824 if (unlikely(shader == NULL)) { 824 if (unlikely(!shader)) {
825 ttm_mem_global_free(vmw_mem_glob(dev_priv), 825 ttm_mem_global_free(vmw_mem_glob(dev_priv),
826 vmw_shader_size); 826 vmw_shader_size);
827 ret = -ENOMEM; 827 ret = -ENOMEM;
@@ -981,7 +981,7 @@ int vmw_compat_shader_add(struct vmw_private *dev_priv,
981 981
982 /* Allocate and pin a DMA buffer */ 982 /* Allocate and pin a DMA buffer */
983 buf = kzalloc(sizeof(*buf), GFP_KERNEL); 983 buf = kzalloc(sizeof(*buf), GFP_KERNEL);
984 if (unlikely(buf == NULL)) 984 if (unlikely(!buf))
985 return -ENOMEM; 985 return -ENOMEM;
986 986
987 ret = vmw_dmabuf_init(dev_priv, buf, size, &vmw_sys_ne_placement, 987 ret = vmw_dmabuf_init(dev_priv, buf, size, &vmw_sys_ne_placement,
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
index 50be1f034f9e..5284e8d2f7ba 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c
@@ -1640,8 +1640,8 @@ int vmw_kms_stdu_init_display(struct vmw_private *dev_priv)
1640 * something arbitrarily large and we will reject any layout 1640 * something arbitrarily large and we will reject any layout
1641 * that doesn't fit prim_bb_mem later 1641 * that doesn't fit prim_bb_mem later
1642 */ 1642 */
1643 dev->mode_config.max_width = 16384; 1643 dev->mode_config.max_width = 8192;
1644 dev->mode_config.max_height = 16384; 1644 dev->mode_config.max_height = 8192;
1645 } 1645 }
1646 1646
1647 vmw_kms_create_implicit_placement_property(dev_priv, false); 1647 vmw_kms_create_implicit_placement_property(dev_priv, false);
diff --git a/drivers/gpu/host1x/dev.c b/drivers/gpu/host1x/dev.c
index 2c58a390123a..778272514164 100644
--- a/drivers/gpu/host1x/dev.c
+++ b/drivers/gpu/host1x/dev.c
@@ -186,8 +186,13 @@ static int host1x_probe(struct platform_device *pdev)
186 return -ENOMEM; 186 return -ENOMEM;
187 187
188 err = iommu_attach_device(host->domain, &pdev->dev); 188 err = iommu_attach_device(host->domain, &pdev->dev);
189 if (err) 189 if (err == -ENODEV) {
190 iommu_domain_free(host->domain);
191 host->domain = NULL;
192 goto skip_iommu;
193 } else if (err) {
190 goto fail_free_domain; 194 goto fail_free_domain;
195 }
191 196
192 geometry = &host->domain->geometry; 197 geometry = &host->domain->geometry;
193 198
@@ -198,6 +203,7 @@ static int host1x_probe(struct platform_device *pdev)
198 host->iova_end = geometry->aperture_end; 203 host->iova_end = geometry->aperture_end;
199 } 204 }
200 205
206skip_iommu:
201 err = host1x_channel_list_init(&host->channel_list, 207 err = host1x_channel_list_init(&host->channel_list,
202 host->info->nb_channels); 208 host->info->nb_channels);
203 if (err) { 209 if (err) {
diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
index 6fd01a692197..9017dcc14502 100644
--- a/drivers/hid/hid-core.c
+++ b/drivers/hid/hid-core.c
@@ -2216,6 +2216,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
2216#if IS_ENABLED(CONFIG_HID_ORTEK) 2216#if IS_ENABLED(CONFIG_HID_ORTEK)
2217 { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_PKB1700) }, 2217 { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_PKB1700) },
2218 { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_WKB2000) }, 2218 { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_WKB2000) },
2219 { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_IHOME_IMAC_A210S) },
2219 { HID_USB_DEVICE(USB_VENDOR_ID_SKYCABLE, USB_DEVICE_ID_SKYCABLE_WIRELESS_PRESENTER) }, 2220 { HID_USB_DEVICE(USB_VENDOR_ID_SKYCABLE, USB_DEVICE_ID_SKYCABLE_WIRELESS_PRESENTER) },
2220#endif 2221#endif
2221#if IS_ENABLED(CONFIG_HID_PANTHERLORD) 2222#if IS_ENABLED(CONFIG_HID_PANTHERLORD)
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index 3d911bfd91cf..c9ba4c6db74c 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -824,6 +824,7 @@
824#define USB_VENDOR_ID_ORTEK 0x05a4 824#define USB_VENDOR_ID_ORTEK 0x05a4
825#define USB_DEVICE_ID_ORTEK_PKB1700 0x1700 825#define USB_DEVICE_ID_ORTEK_PKB1700 0x1700
826#define USB_DEVICE_ID_ORTEK_WKB2000 0x2000 826#define USB_DEVICE_ID_ORTEK_WKB2000 0x2000
827#define USB_DEVICE_ID_ORTEK_IHOME_IMAC_A210S 0x8003
827 828
828#define USB_VENDOR_ID_PLANTRONICS 0x047f 829#define USB_VENDOR_ID_PLANTRONICS 0x047f
829 830
diff --git a/drivers/hid/hid-logitech-hidpp.c b/drivers/hid/hid-logitech-hidpp.c
index 41b39464ded8..501e16a9227d 100644
--- a/drivers/hid/hid-logitech-hidpp.c
+++ b/drivers/hid/hid-logitech-hidpp.c
@@ -2732,6 +2732,9 @@ static int hidpp_initialize_battery(struct hidpp_device *hidpp)
2732 hidpp_battery_props, 2732 hidpp_battery_props,
2733 sizeof(hidpp_battery_props), 2733 sizeof(hidpp_battery_props),
2734 GFP_KERNEL); 2734 GFP_KERNEL);
2735 if (!battery_props)
2736 return -ENOMEM;
2737
2735 num_battery_props = ARRAY_SIZE(hidpp_battery_props) - 2; 2738 num_battery_props = ARRAY_SIZE(hidpp_battery_props) - 2;
2736 2739
2737 if (hidpp->capabilities & HIDPP_CAPABILITY_BATTERY_MILEAGE) 2740 if (hidpp->capabilities & HIDPP_CAPABILITY_BATTERY_MILEAGE)
diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
index f3e35e7a189d..aff20f4b6d97 100644
--- a/drivers/hid/hid-multitouch.c
+++ b/drivers/hid/hid-multitouch.c
@@ -620,16 +620,6 @@ static int mt_touch_input_mapping(struct hid_device *hdev, struct hid_input *hi,
620 return 0; 620 return 0;
621} 621}
622 622
623static int mt_touch_input_mapped(struct hid_device *hdev, struct hid_input *hi,
624 struct hid_field *field, struct hid_usage *usage,
625 unsigned long **bit, int *max)
626{
627 if (usage->type == EV_KEY || usage->type == EV_ABS)
628 set_bit(usage->type, hi->input->evbit);
629
630 return -1;
631}
632
633static int mt_compute_slot(struct mt_device *td, struct input_dev *input) 623static int mt_compute_slot(struct mt_device *td, struct input_dev *input)
634{ 624{
635 __s32 quirks = td->mtclass.quirks; 625 __s32 quirks = td->mtclass.quirks;
@@ -969,8 +959,10 @@ static int mt_input_mapped(struct hid_device *hdev, struct hid_input *hi,
969 return 0; 959 return 0;
970 960
971 if (field->application == HID_DG_TOUCHSCREEN || 961 if (field->application == HID_DG_TOUCHSCREEN ||
972 field->application == HID_DG_TOUCHPAD) 962 field->application == HID_DG_TOUCHPAD) {
973 return mt_touch_input_mapped(hdev, hi, field, usage, bit, max); 963 /* We own these mappings, tell hid-input to ignore them */
964 return -1;
965 }
974 966
975 /* let hid-core decide for the others */ 967 /* let hid-core decide for the others */
976 return 0; 968 return 0;
diff --git a/drivers/hid/hid-ortek.c b/drivers/hid/hid-ortek.c
index 6620f15fec22..8783a064cdcf 100644
--- a/drivers/hid/hid-ortek.c
+++ b/drivers/hid/hid-ortek.c
@@ -5,6 +5,7 @@
5 * 5 *
6 * Ortek PKB-1700 6 * Ortek PKB-1700
7 * Ortek WKB-2000 7 * Ortek WKB-2000
8 * iHome IMAC-A210S
8 * Skycable wireless presenter 9 * Skycable wireless presenter
9 * 10 *
10 * Copyright (c) 2010 Johnathon Harris <jmharris@gmail.com> 11 * Copyright (c) 2010 Johnathon Harris <jmharris@gmail.com>
@@ -28,10 +29,10 @@ static __u8 *ortek_report_fixup(struct hid_device *hdev, __u8 *rdesc,
28 unsigned int *rsize) 29 unsigned int *rsize)
29{ 30{
30 if (*rsize >= 56 && rdesc[54] == 0x25 && rdesc[55] == 0x01) { 31 if (*rsize >= 56 && rdesc[54] == 0x25 && rdesc[55] == 0x01) {
31 hid_info(hdev, "Fixing up logical minimum in report descriptor (Ortek)\n"); 32 hid_info(hdev, "Fixing up logical maximum in report descriptor (Ortek)\n");
32 rdesc[55] = 0x92; 33 rdesc[55] = 0x92;
33 } else if (*rsize >= 54 && rdesc[52] == 0x25 && rdesc[53] == 0x01) { 34 } else if (*rsize >= 54 && rdesc[52] == 0x25 && rdesc[53] == 0x01) {
34 hid_info(hdev, "Fixing up logical minimum in report descriptor (Skycable)\n"); 35 hid_info(hdev, "Fixing up logical maximum in report descriptor (Skycable)\n");
35 rdesc[53] = 0x65; 36 rdesc[53] = 0x65;
36 } 37 }
37 return rdesc; 38 return rdesc;
@@ -40,6 +41,7 @@ static __u8 *ortek_report_fixup(struct hid_device *hdev, __u8 *rdesc,
40static const struct hid_device_id ortek_devices[] = { 41static const struct hid_device_id ortek_devices[] = {
41 { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_PKB1700) }, 42 { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_PKB1700) },
42 { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_WKB2000) }, 43 { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_WKB2000) },
44 { HID_USB_DEVICE(USB_VENDOR_ID_ORTEK, USB_DEVICE_ID_ORTEK_IHOME_IMAC_A210S) },
43 { HID_USB_DEVICE(USB_VENDOR_ID_SKYCABLE, USB_DEVICE_ID_SKYCABLE_WIRELESS_PRESENTER) }, 45 { HID_USB_DEVICE(USB_VENDOR_ID_SKYCABLE, USB_DEVICE_ID_SKYCABLE_WIRELESS_PRESENTER) },
44 { } 46 { }
45}; 47};
diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
index 76013eb5cb7f..c008847e0b20 100644
--- a/drivers/hid/usbhid/hid-core.c
+++ b/drivers/hid/usbhid/hid-core.c
@@ -680,18 +680,21 @@ static int usbhid_open(struct hid_device *hid)
680 struct usbhid_device *usbhid = hid->driver_data; 680 struct usbhid_device *usbhid = hid->driver_data;
681 int res; 681 int res;
682 682
683 set_bit(HID_OPENED, &usbhid->iofl);
684
683 if (hid->quirks & HID_QUIRK_ALWAYS_POLL) 685 if (hid->quirks & HID_QUIRK_ALWAYS_POLL)
684 return 0; 686 return 0;
685 687
686 res = usb_autopm_get_interface(usbhid->intf); 688 res = usb_autopm_get_interface(usbhid->intf);
687 /* the device must be awake to reliably request remote wakeup */ 689 /* the device must be awake to reliably request remote wakeup */
688 if (res < 0) 690 if (res < 0) {
691 clear_bit(HID_OPENED, &usbhid->iofl);
689 return -EIO; 692 return -EIO;
693 }
690 694
691 usbhid->intf->needs_remote_wakeup = 1; 695 usbhid->intf->needs_remote_wakeup = 1;
692 696
693 set_bit(HID_RESUME_RUNNING, &usbhid->iofl); 697 set_bit(HID_RESUME_RUNNING, &usbhid->iofl);
694 set_bit(HID_OPENED, &usbhid->iofl);
695 set_bit(HID_IN_POLLING, &usbhid->iofl); 698 set_bit(HID_IN_POLLING, &usbhid->iofl);
696 699
697 res = hid_start_in(hid); 700 res = hid_start_in(hid);
@@ -727,19 +730,20 @@ static void usbhid_close(struct hid_device *hid)
727{ 730{
728 struct usbhid_device *usbhid = hid->driver_data; 731 struct usbhid_device *usbhid = hid->driver_data;
729 732
730 if (hid->quirks & HID_QUIRK_ALWAYS_POLL)
731 return;
732
733 /* 733 /*
734 * Make sure we don't restart data acquisition due to 734 * Make sure we don't restart data acquisition due to
735 * a resumption we no longer care about by avoiding racing 735 * a resumption we no longer care about by avoiding racing
736 * with hid_start_in(). 736 * with hid_start_in().
737 */ 737 */
738 spin_lock_irq(&usbhid->lock); 738 spin_lock_irq(&usbhid->lock);
739 clear_bit(HID_IN_POLLING, &usbhid->iofl);
740 clear_bit(HID_OPENED, &usbhid->iofl); 739 clear_bit(HID_OPENED, &usbhid->iofl);
740 if (!(hid->quirks & HID_QUIRK_ALWAYS_POLL))
741 clear_bit(HID_IN_POLLING, &usbhid->iofl);
741 spin_unlock_irq(&usbhid->lock); 742 spin_unlock_irq(&usbhid->lock);
742 743
744 if (hid->quirks & HID_QUIRK_ALWAYS_POLL)
745 return;
746
743 hid_cancel_delayed_stuff(usbhid); 747 hid_cancel_delayed_stuff(usbhid);
744 usb_kill_urb(usbhid->urbin); 748 usb_kill_urb(usbhid->urbin);
745 usbhid->intf->needs_remote_wakeup = 0; 749 usbhid->intf->needs_remote_wakeup = 0;
diff --git a/drivers/hv/channel.c b/drivers/hv/channel.c
index e9bf0bb87ac4..e57cc40cb768 100644
--- a/drivers/hv/channel.c
+++ b/drivers/hv/channel.c
@@ -606,6 +606,8 @@ static int vmbus_close_internal(struct vmbus_channel *channel)
606 get_order(channel->ringbuffer_pagecount * PAGE_SIZE)); 606 get_order(channel->ringbuffer_pagecount * PAGE_SIZE));
607 607
608out: 608out:
609 /* re-enable tasklet for use on re-open */
610 tasklet_enable(&channel->callback_event);
609 return ret; 611 return ret;
610} 612}
611 613
diff --git a/drivers/hwmon/applesmc.c b/drivers/hwmon/applesmc.c
index 0af7fd311979..76c34f4fde13 100644
--- a/drivers/hwmon/applesmc.c
+++ b/drivers/hwmon/applesmc.c
@@ -566,6 +566,8 @@ static int applesmc_init_smcreg_try(void)
566 if (ret) 566 if (ret)
567 return ret; 567 return ret;
568 s->fan_count = tmp[0]; 568 s->fan_count = tmp[0];
569 if (s->fan_count > 10)
570 s->fan_count = 10;
569 571
570 ret = applesmc_get_lower_bound(&s->temp_begin, "T"); 572 ret = applesmc_get_lower_bound(&s->temp_begin, "T");
571 if (ret) 573 if (ret)
@@ -811,7 +813,8 @@ static ssize_t applesmc_show_fan_speed(struct device *dev,
811 char newkey[5]; 813 char newkey[5];
812 u8 buffer[2]; 814 u8 buffer[2];
813 815
814 sprintf(newkey, fan_speed_fmt[to_option(attr)], to_index(attr)); 816 scnprintf(newkey, sizeof(newkey), fan_speed_fmt[to_option(attr)],
817 to_index(attr));
815 818
816 ret = applesmc_read_key(newkey, buffer, 2); 819 ret = applesmc_read_key(newkey, buffer, 2);
817 speed = ((buffer[0] << 8 | buffer[1]) >> 2); 820 speed = ((buffer[0] << 8 | buffer[1]) >> 2);
@@ -834,7 +837,8 @@ static ssize_t applesmc_store_fan_speed(struct device *dev,
834 if (kstrtoul(sysfsbuf, 10, &speed) < 0 || speed >= 0x4000) 837 if (kstrtoul(sysfsbuf, 10, &speed) < 0 || speed >= 0x4000)
835 return -EINVAL; /* Bigger than a 14-bit value */ 838 return -EINVAL; /* Bigger than a 14-bit value */
836 839
837 sprintf(newkey, fan_speed_fmt[to_option(attr)], to_index(attr)); 840 scnprintf(newkey, sizeof(newkey), fan_speed_fmt[to_option(attr)],
841 to_index(attr));
838 842
839 buffer[0] = (speed >> 6) & 0xff; 843 buffer[0] = (speed >> 6) & 0xff;
840 buffer[1] = (speed << 2) & 0xff; 844 buffer[1] = (speed << 2) & 0xff;
@@ -903,7 +907,7 @@ static ssize_t applesmc_show_fan_position(struct device *dev,
903 char newkey[5]; 907 char newkey[5];
904 u8 buffer[17]; 908 u8 buffer[17];
905 909
906 sprintf(newkey, FAN_ID_FMT, to_index(attr)); 910 scnprintf(newkey, sizeof(newkey), FAN_ID_FMT, to_index(attr));
907 911
908 ret = applesmc_read_key(newkey, buffer, 16); 912 ret = applesmc_read_key(newkey, buffer, 16);
909 buffer[16] = 0; 913 buffer[16] = 0;
@@ -1116,7 +1120,8 @@ static int applesmc_create_nodes(struct applesmc_node_group *groups, int num)
1116 } 1120 }
1117 for (i = 0; i < num; i++) { 1121 for (i = 0; i < num; i++) {
1118 node = &grp->nodes[i]; 1122 node = &grp->nodes[i];
1119 sprintf(node->name, grp->format, i + 1); 1123 scnprintf(node->name, sizeof(node->name), grp->format,
1124 i + 1);
1120 node->sda.index = (grp->option << 16) | (i & 0xffff); 1125 node->sda.index = (grp->option << 16) | (i & 0xffff);
1121 node->sda.dev_attr.show = grp->show; 1126 node->sda.dev_attr.show = grp->show;
1122 node->sda.dev_attr.store = grp->store; 1127 node->sda.dev_attr.store = grp->store;
diff --git a/drivers/i2c/busses/Kconfig b/drivers/i2c/busses/Kconfig
index 1006b230b236..65fa29591d21 100644
--- a/drivers/i2c/busses/Kconfig
+++ b/drivers/i2c/busses/Kconfig
@@ -983,7 +983,7 @@ config I2C_UNIPHIER_F
983 983
984config I2C_VERSATILE 984config I2C_VERSATILE
985 tristate "ARM Versatile/Realview I2C bus support" 985 tristate "ARM Versatile/Realview I2C bus support"
986 depends on ARCH_VERSATILE || ARCH_REALVIEW || ARCH_VEXPRESS || COMPILE_TEST 986 depends on ARCH_MPS2 || ARCH_VERSATILE || ARCH_REALVIEW || ARCH_VEXPRESS || COMPILE_TEST
987 select I2C_ALGOBIT 987 select I2C_ALGOBIT
988 help 988 help
989 Say yes if you want to support the I2C serial bus on ARMs Versatile 989 Say yes if you want to support the I2C serial bus on ARMs Versatile
diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c
index 2ea6d0d25a01..143a8fd582b4 100644
--- a/drivers/i2c/busses/i2c-designware-platdrv.c
+++ b/drivers/i2c/busses/i2c-designware-platdrv.c
@@ -298,6 +298,9 @@ static int dw_i2c_plat_probe(struct platform_device *pdev)
298 } 298 }
299 299
300 acpi_speed = i2c_acpi_find_bus_speed(&pdev->dev); 300 acpi_speed = i2c_acpi_find_bus_speed(&pdev->dev);
301 /* Some broken DSTDs use 1MiHz instead of 1MHz */
302 if (acpi_speed == 1048576)
303 acpi_speed = 1000000;
301 /* 304 /*
302 * Find bus speed from the "clock-frequency" device property, ACPI 305 * Find bus speed from the "clock-frequency" device property, ACPI
303 * or by using fast mode if neither is set. 306 * or by using fast mode if neither is set.
@@ -319,7 +322,8 @@ static int dw_i2c_plat_probe(struct platform_device *pdev)
319 if (dev->clk_freq != 100000 && dev->clk_freq != 400000 322 if (dev->clk_freq != 100000 && dev->clk_freq != 400000
320 && dev->clk_freq != 1000000 && dev->clk_freq != 3400000) { 323 && dev->clk_freq != 1000000 && dev->clk_freq != 3400000) {
321 dev_err(&pdev->dev, 324 dev_err(&pdev->dev,
322 "Only 100kHz, 400kHz, 1MHz and 3.4MHz supported"); 325 "%d Hz is unsupported, only 100kHz, 400kHz, 1MHz and 3.4MHz are supported\n",
326 dev->clk_freq);
323 ret = -EINVAL; 327 ret = -EINVAL;
324 goto exit_reset; 328 goto exit_reset;
325 } 329 }
diff --git a/drivers/i2c/i2c-core-acpi.c b/drivers/i2c/i2c-core-acpi.c
index 4842ec3a5451..a9126b3cda61 100644
--- a/drivers/i2c/i2c-core-acpi.c
+++ b/drivers/i2c/i2c-core-acpi.c
@@ -230,6 +230,16 @@ void i2c_acpi_register_devices(struct i2c_adapter *adap)
230 dev_warn(&adap->dev, "failed to enumerate I2C slaves\n"); 230 dev_warn(&adap->dev, "failed to enumerate I2C slaves\n");
231} 231}
232 232
233const struct acpi_device_id *
234i2c_acpi_match_device(const struct acpi_device_id *matches,
235 struct i2c_client *client)
236{
237 if (!(client && matches))
238 return NULL;
239
240 return acpi_match_device(matches, &client->dev);
241}
242
233static acpi_status i2c_acpi_lookup_speed(acpi_handle handle, u32 level, 243static acpi_status i2c_acpi_lookup_speed(acpi_handle handle, u32 level,
234 void *data, void **return_value) 244 void *data, void **return_value)
235{ 245{
@@ -289,7 +299,7 @@ u32 i2c_acpi_find_bus_speed(struct device *dev)
289} 299}
290EXPORT_SYMBOL_GPL(i2c_acpi_find_bus_speed); 300EXPORT_SYMBOL_GPL(i2c_acpi_find_bus_speed);
291 301
292static int i2c_acpi_match_adapter(struct device *dev, void *data) 302static int i2c_acpi_find_match_adapter(struct device *dev, void *data)
293{ 303{
294 struct i2c_adapter *adapter = i2c_verify_adapter(dev); 304 struct i2c_adapter *adapter = i2c_verify_adapter(dev);
295 305
@@ -299,7 +309,7 @@ static int i2c_acpi_match_adapter(struct device *dev, void *data)
299 return ACPI_HANDLE(dev) == (acpi_handle)data; 309 return ACPI_HANDLE(dev) == (acpi_handle)data;
300} 310}
301 311
302static int i2c_acpi_match_device(struct device *dev, void *data) 312static int i2c_acpi_find_match_device(struct device *dev, void *data)
303{ 313{
304 return ACPI_COMPANION(dev) == data; 314 return ACPI_COMPANION(dev) == data;
305} 315}
@@ -309,7 +319,7 @@ static struct i2c_adapter *i2c_acpi_find_adapter_by_handle(acpi_handle handle)
309 struct device *dev; 319 struct device *dev;
310 320
311 dev = bus_find_device(&i2c_bus_type, NULL, handle, 321 dev = bus_find_device(&i2c_bus_type, NULL, handle,
312 i2c_acpi_match_adapter); 322 i2c_acpi_find_match_adapter);
313 return dev ? i2c_verify_adapter(dev) : NULL; 323 return dev ? i2c_verify_adapter(dev) : NULL;
314} 324}
315 325
@@ -317,7 +327,8 @@ static struct i2c_client *i2c_acpi_find_client_by_adev(struct acpi_device *adev)
317{ 327{
318 struct device *dev; 328 struct device *dev;
319 329
320 dev = bus_find_device(&i2c_bus_type, NULL, adev, i2c_acpi_match_device); 330 dev = bus_find_device(&i2c_bus_type, NULL, adev,
331 i2c_acpi_find_match_device);
321 return dev ? i2c_verify_client(dev) : NULL; 332 return dev ? i2c_verify_client(dev) : NULL;
322} 333}
323 334
diff --git a/drivers/i2c/i2c-core-base.c b/drivers/i2c/i2c-core-base.c
index c89dac7fd2e7..12822a4b8f8f 100644
--- a/drivers/i2c/i2c-core-base.c
+++ b/drivers/i2c/i2c-core-base.c
@@ -357,6 +357,7 @@ static int i2c_device_probe(struct device *dev)
357 * Tree match table entry is supplied for the probing device. 357 * Tree match table entry is supplied for the probing device.
358 */ 358 */
359 if (!driver->id_table && 359 if (!driver->id_table &&
360 !i2c_acpi_match_device(dev->driver->acpi_match_table, client) &&
360 !i2c_of_match_device(dev->driver->of_match_table, client)) 361 !i2c_of_match_device(dev->driver->of_match_table, client))
361 return -ENODEV; 362 return -ENODEV;
362 363
diff --git a/drivers/i2c/i2c-core.h b/drivers/i2c/i2c-core.h
index 3b63f5e5b89c..3d3d9bf02101 100644
--- a/drivers/i2c/i2c-core.h
+++ b/drivers/i2c/i2c-core.h
@@ -31,9 +31,18 @@ int i2c_check_addr_validity(unsigned addr, unsigned short flags);
31int i2c_check_7bit_addr_validity_strict(unsigned short addr); 31int i2c_check_7bit_addr_validity_strict(unsigned short addr);
32 32
33#ifdef CONFIG_ACPI 33#ifdef CONFIG_ACPI
34const struct acpi_device_id *
35i2c_acpi_match_device(const struct acpi_device_id *matches,
36 struct i2c_client *client);
34void i2c_acpi_register_devices(struct i2c_adapter *adap); 37void i2c_acpi_register_devices(struct i2c_adapter *adap);
35#else /* CONFIG_ACPI */ 38#else /* CONFIG_ACPI */
36static inline void i2c_acpi_register_devices(struct i2c_adapter *adap) { } 39static inline void i2c_acpi_register_devices(struct i2c_adapter *adap) { }
40static inline const struct acpi_device_id *
41i2c_acpi_match_device(const struct acpi_device_id *matches,
42 struct i2c_client *client)
43{
44 return NULL;
45}
37#endif /* CONFIG_ACPI */ 46#endif /* CONFIG_ACPI */
38extern struct notifier_block i2c_acpi_notifier; 47extern struct notifier_block i2c_acpi_notifier;
39 48
diff --git a/drivers/i2c/muxes/Kconfig b/drivers/i2c/muxes/Kconfig
index 2c64d0e0740f..17121329bb79 100644
--- a/drivers/i2c/muxes/Kconfig
+++ b/drivers/i2c/muxes/Kconfig
@@ -83,7 +83,7 @@ config I2C_MUX_PINCTRL
83 different sets of pins at run-time. 83 different sets of pins at run-time.
84 84
85 This driver can also be built as a module. If so, the module will be 85 This driver can also be built as a module. If so, the module will be
86 called pinctrl-i2cmux. 86 called i2c-mux-pinctrl.
87 87
88config I2C_MUX_REG 88config I2C_MUX_REG
89 tristate "Register-based I2C multiplexer" 89 tristate "Register-based I2C multiplexer"
diff --git a/drivers/ide/ide-timings.c b/drivers/ide/ide-timings.c
index 0e05f75934c9..1858e3ce3993 100644
--- a/drivers/ide/ide-timings.c
+++ b/drivers/ide/ide-timings.c
@@ -104,19 +104,19 @@ u16 ide_pio_cycle_time(ide_drive_t *drive, u8 pio)
104EXPORT_SYMBOL_GPL(ide_pio_cycle_time); 104EXPORT_SYMBOL_GPL(ide_pio_cycle_time);
105 105
106#define ENOUGH(v, unit) (((v) - 1) / (unit) + 1) 106#define ENOUGH(v, unit) (((v) - 1) / (unit) + 1)
107#define EZ(v, unit) ((v) ? ENOUGH(v, unit) : 0) 107#define EZ(v, unit) ((v) ? ENOUGH((v) * 1000, unit) : 0)
108 108
109static void ide_timing_quantize(struct ide_timing *t, struct ide_timing *q, 109static void ide_timing_quantize(struct ide_timing *t, struct ide_timing *q,
110 int T, int UT) 110 int T, int UT)
111{ 111{
112 q->setup = EZ(t->setup * 1000, T); 112 q->setup = EZ(t->setup, T);
113 q->act8b = EZ(t->act8b * 1000, T); 113 q->act8b = EZ(t->act8b, T);
114 q->rec8b = EZ(t->rec8b * 1000, T); 114 q->rec8b = EZ(t->rec8b, T);
115 q->cyc8b = EZ(t->cyc8b * 1000, T); 115 q->cyc8b = EZ(t->cyc8b, T);
116 q->active = EZ(t->active * 1000, T); 116 q->active = EZ(t->active, T);
117 q->recover = EZ(t->recover * 1000, T); 117 q->recover = EZ(t->recover, T);
118 q->cycle = EZ(t->cycle * 1000, T); 118 q->cycle = EZ(t->cycle, T);
119 q->udma = EZ(t->udma * 1000, UT); 119 q->udma = EZ(t->udma, UT);
120} 120}
121 121
122void ide_timing_merge(struct ide_timing *a, struct ide_timing *b, 122void ide_timing_merge(struct ide_timing *a, struct ide_timing *b,
diff --git a/drivers/iio/accel/bmc150-accel-core.c b/drivers/iio/accel/bmc150-accel-core.c
index 6b5d3be283c4..807299dd45eb 100644
--- a/drivers/iio/accel/bmc150-accel-core.c
+++ b/drivers/iio/accel/bmc150-accel-core.c
@@ -193,7 +193,6 @@ struct bmc150_accel_data {
193 struct regmap *regmap; 193 struct regmap *regmap;
194 int irq; 194 int irq;
195 struct bmc150_accel_interrupt interrupts[BMC150_ACCEL_INTERRUPTS]; 195 struct bmc150_accel_interrupt interrupts[BMC150_ACCEL_INTERRUPTS];
196 atomic_t active_intr;
197 struct bmc150_accel_trigger triggers[BMC150_ACCEL_TRIGGERS]; 196 struct bmc150_accel_trigger triggers[BMC150_ACCEL_TRIGGERS];
198 struct mutex mutex; 197 struct mutex mutex;
199 u8 fifo_mode, watermark; 198 u8 fifo_mode, watermark;
@@ -493,11 +492,6 @@ static int bmc150_accel_set_interrupt(struct bmc150_accel_data *data, int i,
493 goto out_fix_power_state; 492 goto out_fix_power_state;
494 } 493 }
495 494
496 if (state)
497 atomic_inc(&data->active_intr);
498 else
499 atomic_dec(&data->active_intr);
500
501 return 0; 495 return 0;
502 496
503out_fix_power_state: 497out_fix_power_state:
@@ -1710,8 +1704,7 @@ static int bmc150_accel_resume(struct device *dev)
1710 struct bmc150_accel_data *data = iio_priv(indio_dev); 1704 struct bmc150_accel_data *data = iio_priv(indio_dev);
1711 1705
1712 mutex_lock(&data->mutex); 1706 mutex_lock(&data->mutex);
1713 if (atomic_read(&data->active_intr)) 1707 bmc150_accel_set_mode(data, BMC150_ACCEL_SLEEP_MODE_NORMAL, 0);
1714 bmc150_accel_set_mode(data, BMC150_ACCEL_SLEEP_MODE_NORMAL, 0);
1715 bmc150_accel_fifo_set_mode(data); 1708 bmc150_accel_fifo_set_mode(data);
1716 mutex_unlock(&data->mutex); 1709 mutex_unlock(&data->mutex);
1717 1710
diff --git a/drivers/iio/accel/st_accel_core.c b/drivers/iio/accel/st_accel_core.c
index 07d1489cd457..e44f62bf9caa 100644
--- a/drivers/iio/accel/st_accel_core.c
+++ b/drivers/iio/accel/st_accel_core.c
@@ -166,6 +166,10 @@ static const struct st_sensor_settings st_accel_sensors_settings[] = {
166 .mask_ihl = 0x02, 166 .mask_ihl = 0x02,
167 .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR, 167 .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
168 }, 168 },
169 .sim = {
170 .addr = 0x23,
171 .value = BIT(0),
172 },
169 .multi_read_bit = true, 173 .multi_read_bit = true,
170 .bootime = 2, 174 .bootime = 2,
171 }, 175 },
@@ -234,6 +238,10 @@ static const struct st_sensor_settings st_accel_sensors_settings[] = {
234 .mask_od = 0x40, 238 .mask_od = 0x40,
235 .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR, 239 .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
236 }, 240 },
241 .sim = {
242 .addr = 0x23,
243 .value = BIT(0),
244 },
237 .multi_read_bit = true, 245 .multi_read_bit = true,
238 .bootime = 2, 246 .bootime = 2,
239 }, 247 },
@@ -316,6 +324,10 @@ static const struct st_sensor_settings st_accel_sensors_settings[] = {
316 .en_mask = 0x08, 324 .en_mask = 0x08,
317 }, 325 },
318 }, 326 },
327 .sim = {
328 .addr = 0x24,
329 .value = BIT(0),
330 },
319 .multi_read_bit = false, 331 .multi_read_bit = false,
320 .bootime = 2, 332 .bootime = 2,
321 }, 333 },
@@ -379,6 +391,10 @@ static const struct st_sensor_settings st_accel_sensors_settings[] = {
379 .mask_int1 = 0x04, 391 .mask_int1 = 0x04,
380 .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR, 392 .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
381 }, 393 },
394 .sim = {
395 .addr = 0x21,
396 .value = BIT(1),
397 },
382 .multi_read_bit = true, 398 .multi_read_bit = true,
383 .bootime = 2, /* guess */ 399 .bootime = 2, /* guess */
384 }, 400 },
@@ -437,6 +453,10 @@ static const struct st_sensor_settings st_accel_sensors_settings[] = {
437 .mask_od = 0x40, 453 .mask_od = 0x40,
438 .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR, 454 .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
439 }, 455 },
456 .sim = {
457 .addr = 0x21,
458 .value = BIT(7),
459 },
440 .multi_read_bit = false, 460 .multi_read_bit = false,
441 .bootime = 2, /* guess */ 461 .bootime = 2, /* guess */
442 }, 462 },
@@ -499,6 +519,10 @@ static const struct st_sensor_settings st_accel_sensors_settings[] = {
499 .addr_ihl = 0x22, 519 .addr_ihl = 0x22,
500 .mask_ihl = 0x80, 520 .mask_ihl = 0x80,
501 }, 521 },
522 .sim = {
523 .addr = 0x23,
524 .value = BIT(0),
525 },
502 .multi_read_bit = true, 526 .multi_read_bit = true,
503 .bootime = 2, 527 .bootime = 2,
504 }, 528 },
@@ -547,6 +571,10 @@ static const struct st_sensor_settings st_accel_sensors_settings[] = {
547 .mask_int1 = 0x04, 571 .mask_int1 = 0x04,
548 .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR, 572 .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
549 }, 573 },
574 .sim = {
575 .addr = 0x21,
576 .value = BIT(1),
577 },
550 .multi_read_bit = false, 578 .multi_read_bit = false,
551 .bootime = 2, 579 .bootime = 2,
552 }, 580 },
@@ -614,6 +642,10 @@ static const struct st_sensor_settings st_accel_sensors_settings[] = {
614 .mask_ihl = 0x02, 642 .mask_ihl = 0x02,
615 .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR, 643 .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
616 }, 644 },
645 .sim = {
646 .addr = 0x23,
647 .value = BIT(0),
648 },
617 .multi_read_bit = true, 649 .multi_read_bit = true,
618 .bootime = 2, 650 .bootime = 2,
619 }, 651 },
diff --git a/drivers/iio/adc/aspeed_adc.c b/drivers/iio/adc/aspeed_adc.c
index e0ea411a0b2d..c02b23d675cb 100644
--- a/drivers/iio/adc/aspeed_adc.c
+++ b/drivers/iio/adc/aspeed_adc.c
@@ -22,6 +22,7 @@
22 22
23#include <linux/iio/iio.h> 23#include <linux/iio/iio.h>
24#include <linux/iio/driver.h> 24#include <linux/iio/driver.h>
25#include <linux/iopoll.h>
25 26
26#define ASPEED_RESOLUTION_BITS 10 27#define ASPEED_RESOLUTION_BITS 10
27#define ASPEED_CLOCKS_PER_SAMPLE 12 28#define ASPEED_CLOCKS_PER_SAMPLE 12
@@ -38,11 +39,17 @@
38 39
39#define ASPEED_ENGINE_ENABLE BIT(0) 40#define ASPEED_ENGINE_ENABLE BIT(0)
40 41
42#define ASPEED_ADC_CTRL_INIT_RDY BIT(8)
43
44#define ASPEED_ADC_INIT_POLLING_TIME 500
45#define ASPEED_ADC_INIT_TIMEOUT 500000
46
41struct aspeed_adc_model_data { 47struct aspeed_adc_model_data {
42 const char *model_name; 48 const char *model_name;
43 unsigned int min_sampling_rate; // Hz 49 unsigned int min_sampling_rate; // Hz
44 unsigned int max_sampling_rate; // Hz 50 unsigned int max_sampling_rate; // Hz
45 unsigned int vref_voltage; // mV 51 unsigned int vref_voltage; // mV
52 bool wait_init_sequence;
46}; 53};
47 54
48struct aspeed_adc_data { 55struct aspeed_adc_data {
@@ -211,6 +218,24 @@ static int aspeed_adc_probe(struct platform_device *pdev)
211 goto scaler_error; 218 goto scaler_error;
212 } 219 }
213 220
221 model_data = of_device_get_match_data(&pdev->dev);
222
223 if (model_data->wait_init_sequence) {
224 /* Enable engine in normal mode. */
225 writel(ASPEED_OPERATION_MODE_NORMAL | ASPEED_ENGINE_ENABLE,
226 data->base + ASPEED_REG_ENGINE_CONTROL);
227
228 /* Wait for initial sequence complete. */
229 ret = readl_poll_timeout(data->base + ASPEED_REG_ENGINE_CONTROL,
230 adc_engine_control_reg_val,
231 adc_engine_control_reg_val &
232 ASPEED_ADC_CTRL_INIT_RDY,
233 ASPEED_ADC_INIT_POLLING_TIME,
234 ASPEED_ADC_INIT_TIMEOUT);
235 if (ret)
236 goto scaler_error;
237 }
238
214 /* Start all channels in normal mode. */ 239 /* Start all channels in normal mode. */
215 ret = clk_prepare_enable(data->clk_scaler->clk); 240 ret = clk_prepare_enable(data->clk_scaler->clk);
216 if (ret) 241 if (ret)
@@ -274,6 +299,7 @@ static const struct aspeed_adc_model_data ast2500_model_data = {
274 .vref_voltage = 1800, // mV 299 .vref_voltage = 1800, // mV
275 .min_sampling_rate = 1, 300 .min_sampling_rate = 1,
276 .max_sampling_rate = 1000000, 301 .max_sampling_rate = 1000000,
302 .wait_init_sequence = true,
277}; 303};
278 304
279static const struct of_device_id aspeed_adc_matches[] = { 305static const struct of_device_id aspeed_adc_matches[] = {
diff --git a/drivers/iio/adc/axp288_adc.c b/drivers/iio/adc/axp288_adc.c
index 64799ad7ebad..462a99c13e7a 100644
--- a/drivers/iio/adc/axp288_adc.c
+++ b/drivers/iio/adc/axp288_adc.c
@@ -28,6 +28,8 @@
28#include <linux/iio/driver.h> 28#include <linux/iio/driver.h>
29 29
30#define AXP288_ADC_EN_MASK 0xF1 30#define AXP288_ADC_EN_MASK 0xF1
31#define AXP288_ADC_TS_PIN_GPADC 0xF2
32#define AXP288_ADC_TS_PIN_ON 0xF3
31 33
32enum axp288_adc_id { 34enum axp288_adc_id {
33 AXP288_ADC_TS, 35 AXP288_ADC_TS,
@@ -121,6 +123,26 @@ static int axp288_adc_read_channel(int *val, unsigned long address,
121 return IIO_VAL_INT; 123 return IIO_VAL_INT;
122} 124}
123 125
126static int axp288_adc_set_ts(struct regmap *regmap, unsigned int mode,
127 unsigned long address)
128{
129 int ret;
130
131 /* channels other than GPADC do not need to switch TS pin */
132 if (address != AXP288_GP_ADC_H)
133 return 0;
134
135 ret = regmap_write(regmap, AXP288_ADC_TS_PIN_CTRL, mode);
136 if (ret)
137 return ret;
138
139 /* When switching to the GPADC pin give things some time to settle */
140 if (mode == AXP288_ADC_TS_PIN_GPADC)
141 usleep_range(6000, 10000);
142
143 return 0;
144}
145
124static int axp288_adc_read_raw(struct iio_dev *indio_dev, 146static int axp288_adc_read_raw(struct iio_dev *indio_dev,
125 struct iio_chan_spec const *chan, 147 struct iio_chan_spec const *chan,
126 int *val, int *val2, long mask) 148 int *val, int *val2, long mask)
@@ -131,7 +153,16 @@ static int axp288_adc_read_raw(struct iio_dev *indio_dev,
131 mutex_lock(&indio_dev->mlock); 153 mutex_lock(&indio_dev->mlock);
132 switch (mask) { 154 switch (mask) {
133 case IIO_CHAN_INFO_RAW: 155 case IIO_CHAN_INFO_RAW:
156 if (axp288_adc_set_ts(info->regmap, AXP288_ADC_TS_PIN_GPADC,
157 chan->address)) {
158 dev_err(&indio_dev->dev, "GPADC mode\n");
159 ret = -EINVAL;
160 break;
161 }
134 ret = axp288_adc_read_channel(val, chan->address, info->regmap); 162 ret = axp288_adc_read_channel(val, chan->address, info->regmap);
163 if (axp288_adc_set_ts(info->regmap, AXP288_ADC_TS_PIN_ON,
164 chan->address))
165 dev_err(&indio_dev->dev, "TS pin restore\n");
135 break; 166 break;
136 default: 167 default:
137 ret = -EINVAL; 168 ret = -EINVAL;
@@ -141,6 +172,15 @@ static int axp288_adc_read_raw(struct iio_dev *indio_dev,
141 return ret; 172 return ret;
142} 173}
143 174
175static int axp288_adc_set_state(struct regmap *regmap)
176{
177 /* ADC should be always enabled for internal FG to function */
178 if (regmap_write(regmap, AXP288_ADC_TS_PIN_CTRL, AXP288_ADC_TS_PIN_ON))
179 return -EIO;
180
181 return regmap_write(regmap, AXP20X_ADC_EN1, AXP288_ADC_EN_MASK);
182}
183
144static const struct iio_info axp288_adc_iio_info = { 184static const struct iio_info axp288_adc_iio_info = {
145 .read_raw = &axp288_adc_read_raw, 185 .read_raw = &axp288_adc_read_raw,
146 .driver_module = THIS_MODULE, 186 .driver_module = THIS_MODULE,
@@ -169,7 +209,7 @@ static int axp288_adc_probe(struct platform_device *pdev)
169 * Set ADC to enabled state at all time, including system suspend. 209 * Set ADC to enabled state at all time, including system suspend.
170 * otherwise internal fuel gauge functionality may be affected. 210 * otherwise internal fuel gauge functionality may be affected.
171 */ 211 */
172 ret = regmap_write(info->regmap, AXP20X_ADC_EN1, AXP288_ADC_EN_MASK); 212 ret = axp288_adc_set_state(axp20x->regmap);
173 if (ret) { 213 if (ret) {
174 dev_err(&pdev->dev, "unable to enable ADC device\n"); 214 dev_err(&pdev->dev, "unable to enable ADC device\n");
175 return ret; 215 return ret;
diff --git a/drivers/iio/adc/sun4i-gpadc-iio.c b/drivers/iio/adc/sun4i-gpadc-iio.c
index 81d4c39e414a..137f577d9432 100644
--- a/drivers/iio/adc/sun4i-gpadc-iio.c
+++ b/drivers/iio/adc/sun4i-gpadc-iio.c
@@ -256,6 +256,7 @@ static int sun4i_gpadc_read(struct iio_dev *indio_dev, int channel, int *val,
256 256
257err: 257err:
258 pm_runtime_put_autosuspend(indio_dev->dev.parent); 258 pm_runtime_put_autosuspend(indio_dev->dev.parent);
259 disable_irq(irq);
259 mutex_unlock(&info->mutex); 260 mutex_unlock(&info->mutex);
260 261
261 return ret; 262 return ret;
@@ -365,7 +366,6 @@ static irqreturn_t sun4i_gpadc_temp_data_irq_handler(int irq, void *dev_id)
365 complete(&info->completion); 366 complete(&info->completion);
366 367
367out: 368out:
368 disable_irq_nosync(info->temp_data_irq);
369 return IRQ_HANDLED; 369 return IRQ_HANDLED;
370} 370}
371 371
@@ -380,7 +380,6 @@ static irqreturn_t sun4i_gpadc_fifo_data_irq_handler(int irq, void *dev_id)
380 complete(&info->completion); 380 complete(&info->completion);
381 381
382out: 382out:
383 disable_irq_nosync(info->fifo_data_irq);
384 return IRQ_HANDLED; 383 return IRQ_HANDLED;
385} 384}
386 385
diff --git a/drivers/iio/adc/vf610_adc.c b/drivers/iio/adc/vf610_adc.c
index 01fc76f7d660..c168e0db329a 100644
--- a/drivers/iio/adc/vf610_adc.c
+++ b/drivers/iio/adc/vf610_adc.c
@@ -77,7 +77,7 @@
77#define VF610_ADC_ADSTS_MASK 0x300 77#define VF610_ADC_ADSTS_MASK 0x300
78#define VF610_ADC_ADLPC_EN 0x80 78#define VF610_ADC_ADLPC_EN 0x80
79#define VF610_ADC_ADHSC_EN 0x400 79#define VF610_ADC_ADHSC_EN 0x400
80#define VF610_ADC_REFSEL_VALT 0x100 80#define VF610_ADC_REFSEL_VALT 0x800
81#define VF610_ADC_REFSEL_VBG 0x1000 81#define VF610_ADC_REFSEL_VBG 0x1000
82#define VF610_ADC_ADTRG_HARD 0x2000 82#define VF610_ADC_ADTRG_HARD 0x2000
83#define VF610_ADC_AVGS_8 0x4000 83#define VF610_ADC_AVGS_8 0x4000
diff --git a/drivers/iio/common/st_sensors/st_sensors_core.c b/drivers/iio/common/st_sensors/st_sensors_core.c
index 79c8c7cd70d5..6e6a1ecc99dd 100644
--- a/drivers/iio/common/st_sensors/st_sensors_core.c
+++ b/drivers/iio/common/st_sensors/st_sensors_core.c
@@ -550,6 +550,31 @@ out:
550} 550}
551EXPORT_SYMBOL(st_sensors_read_info_raw); 551EXPORT_SYMBOL(st_sensors_read_info_raw);
552 552
553static int st_sensors_init_interface_mode(struct iio_dev *indio_dev,
554 const struct st_sensor_settings *sensor_settings)
555{
556 struct st_sensor_data *sdata = iio_priv(indio_dev);
557 struct device_node *np = sdata->dev->of_node;
558 struct st_sensors_platform_data *pdata;
559
560 pdata = (struct st_sensors_platform_data *)sdata->dev->platform_data;
561 if (((np && of_property_read_bool(np, "spi-3wire")) ||
562 (pdata && pdata->spi_3wire)) && sensor_settings->sim.addr) {
563 int err;
564
565 err = sdata->tf->write_byte(&sdata->tb, sdata->dev,
566 sensor_settings->sim.addr,
567 sensor_settings->sim.value);
568 if (err < 0) {
569 dev_err(&indio_dev->dev,
570 "failed to init interface mode\n");
571 return err;
572 }
573 }
574
575 return 0;
576}
577
553int st_sensors_check_device_support(struct iio_dev *indio_dev, 578int st_sensors_check_device_support(struct iio_dev *indio_dev,
554 int num_sensors_list, 579 int num_sensors_list,
555 const struct st_sensor_settings *sensor_settings) 580 const struct st_sensor_settings *sensor_settings)
@@ -574,6 +599,10 @@ int st_sensors_check_device_support(struct iio_dev *indio_dev,
574 return -ENODEV; 599 return -ENODEV;
575 } 600 }
576 601
602 err = st_sensors_init_interface_mode(indio_dev, &sensor_settings[i]);
603 if (err < 0)
604 return err;
605
577 if (sensor_settings[i].wai_addr) { 606 if (sensor_settings[i].wai_addr) {
578 err = sdata->tf->read_byte(&sdata->tb, sdata->dev, 607 err = sdata->tf->read_byte(&sdata->tb, sdata->dev,
579 sensor_settings[i].wai_addr, &wai); 608 sensor_settings[i].wai_addr, &wai);
diff --git a/drivers/iio/light/tsl2563.c b/drivers/iio/light/tsl2563.c
index e7d4ea75e007..7599693f7fe9 100644
--- a/drivers/iio/light/tsl2563.c
+++ b/drivers/iio/light/tsl2563.c
@@ -626,7 +626,7 @@ static irqreturn_t tsl2563_event_handler(int irq, void *private)
626 struct tsl2563_chip *chip = iio_priv(dev_info); 626 struct tsl2563_chip *chip = iio_priv(dev_info);
627 627
628 iio_push_event(dev_info, 628 iio_push_event(dev_info,
629 IIO_UNMOD_EVENT_CODE(IIO_LIGHT, 629 IIO_UNMOD_EVENT_CODE(IIO_INTENSITY,
630 0, 630 0,
631 IIO_EV_TYPE_THRESH, 631 IIO_EV_TYPE_THRESH,
632 IIO_EV_DIR_EITHER), 632 IIO_EV_DIR_EITHER),
diff --git a/drivers/iio/pressure/st_pressure_core.c b/drivers/iio/pressure/st_pressure_core.c
index aa61ec15c139..f1bce05ffa13 100644
--- a/drivers/iio/pressure/st_pressure_core.c
+++ b/drivers/iio/pressure/st_pressure_core.c
@@ -456,7 +456,7 @@ static const struct st_sensor_settings st_press_sensors_settings[] = {
456 .mask_od = 0x40, 456 .mask_od = 0x40,
457 .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR, 457 .addr_stat_drdy = ST_SENSORS_DEFAULT_STAT_ADDR,
458 }, 458 },
459 .multi_read_bit = true, 459 .multi_read_bit = false,
460 .bootime = 2, 460 .bootime = 2,
461 }, 461 },
462}; 462};
diff --git a/drivers/infiniband/core/addr.c b/drivers/infiniband/core/addr.c
index a6cb379a4ebc..437522ca97b4 100644
--- a/drivers/infiniband/core/addr.c
+++ b/drivers/infiniband/core/addr.c
@@ -61,6 +61,7 @@ struct addr_req {
61 void (*callback)(int status, struct sockaddr *src_addr, 61 void (*callback)(int status, struct sockaddr *src_addr,
62 struct rdma_dev_addr *addr, void *context); 62 struct rdma_dev_addr *addr, void *context);
63 unsigned long timeout; 63 unsigned long timeout;
64 struct delayed_work work;
64 int status; 65 int status;
65 u32 seq; 66 u32 seq;
66}; 67};
@@ -268,6 +269,7 @@ int rdma_translate_ip(const struct sockaddr *addr,
268 return ret; 269 return ret;
269 270
270 ret = rdma_copy_addr(dev_addr, dev, NULL); 271 ret = rdma_copy_addr(dev_addr, dev, NULL);
272 dev_addr->bound_dev_if = dev->ifindex;
271 if (vlan_id) 273 if (vlan_id)
272 *vlan_id = rdma_vlan_dev_vlan_id(dev); 274 *vlan_id = rdma_vlan_dev_vlan_id(dev);
273 dev_put(dev); 275 dev_put(dev);
@@ -280,6 +282,7 @@ int rdma_translate_ip(const struct sockaddr *addr,
280 &((const struct sockaddr_in6 *)addr)->sin6_addr, 282 &((const struct sockaddr_in6 *)addr)->sin6_addr,
281 dev, 1)) { 283 dev, 1)) {
282 ret = rdma_copy_addr(dev_addr, dev, NULL); 284 ret = rdma_copy_addr(dev_addr, dev, NULL);
285 dev_addr->bound_dev_if = dev->ifindex;
283 if (vlan_id) 286 if (vlan_id)
284 *vlan_id = rdma_vlan_dev_vlan_id(dev); 287 *vlan_id = rdma_vlan_dev_vlan_id(dev);
285 break; 288 break;
@@ -293,7 +296,7 @@ int rdma_translate_ip(const struct sockaddr *addr,
293} 296}
294EXPORT_SYMBOL(rdma_translate_ip); 297EXPORT_SYMBOL(rdma_translate_ip);
295 298
296static void set_timeout(unsigned long time) 299static void set_timeout(struct delayed_work *delayed_work, unsigned long time)
297{ 300{
298 unsigned long delay; 301 unsigned long delay;
299 302
@@ -301,7 +304,7 @@ static void set_timeout(unsigned long time)
301 if ((long)delay < 0) 304 if ((long)delay < 0)
302 delay = 0; 305 delay = 0;
303 306
304 mod_delayed_work(addr_wq, &work, delay); 307 mod_delayed_work(addr_wq, delayed_work, delay);
305} 308}
306 309
307static void queue_req(struct addr_req *req) 310static void queue_req(struct addr_req *req)
@@ -316,8 +319,7 @@ static void queue_req(struct addr_req *req)
316 319
317 list_add(&req->list, &temp_req->list); 320 list_add(&req->list, &temp_req->list);
318 321
319 if (req_list.next == &req->list) 322 set_timeout(&req->work, req->timeout);
320 set_timeout(req->timeout);
321 mutex_unlock(&lock); 323 mutex_unlock(&lock);
322} 324}
323 325
@@ -405,10 +407,10 @@ static int addr4_resolve(struct sockaddr_in *src_in,
405 fl4.saddr = src_ip; 407 fl4.saddr = src_ip;
406 fl4.flowi4_oif = addr->bound_dev_if; 408 fl4.flowi4_oif = addr->bound_dev_if;
407 rt = ip_route_output_key(addr->net, &fl4); 409 rt = ip_route_output_key(addr->net, &fl4);
408 if (IS_ERR(rt)) { 410 ret = PTR_ERR_OR_ZERO(rt);
409 ret = PTR_ERR(rt); 411 if (ret)
410 goto out; 412 return ret;
411 } 413
412 src_in->sin_family = AF_INET; 414 src_in->sin_family = AF_INET;
413 src_in->sin_addr.s_addr = fl4.saddr; 415 src_in->sin_addr.s_addr = fl4.saddr;
414 416
@@ -423,8 +425,6 @@ static int addr4_resolve(struct sockaddr_in *src_in,
423 425
424 *prt = rt; 426 *prt = rt;
425 return 0; 427 return 0;
426out:
427 return ret;
428} 428}
429 429
430#if IS_ENABLED(CONFIG_IPV6) 430#if IS_ENABLED(CONFIG_IPV6)
@@ -509,6 +509,11 @@ static int addr_resolve(struct sockaddr *src_in,
509 struct dst_entry *dst; 509 struct dst_entry *dst;
510 int ret; 510 int ret;
511 511
512 if (!addr->net) {
513 pr_warn_ratelimited("%s: missing namespace\n", __func__);
514 return -EINVAL;
515 }
516
512 if (src_in->sa_family == AF_INET) { 517 if (src_in->sa_family == AF_INET) {
513 struct rtable *rt = NULL; 518 struct rtable *rt = NULL;
514 const struct sockaddr_in *dst_in4 = 519 const struct sockaddr_in *dst_in4 =
@@ -522,8 +527,12 @@ static int addr_resolve(struct sockaddr *src_in,
522 if (resolve_neigh) 527 if (resolve_neigh)
523 ret = addr_resolve_neigh(&rt->dst, dst_in, addr, seq); 528 ret = addr_resolve_neigh(&rt->dst, dst_in, addr, seq);
524 529
525 ndev = rt->dst.dev; 530 if (addr->bound_dev_if) {
526 dev_hold(ndev); 531 ndev = dev_get_by_index(addr->net, addr->bound_dev_if);
532 } else {
533 ndev = rt->dst.dev;
534 dev_hold(ndev);
535 }
527 536
528 ip_rt_put(rt); 537 ip_rt_put(rt);
529 } else { 538 } else {
@@ -539,19 +548,63 @@ static int addr_resolve(struct sockaddr *src_in,
539 if (resolve_neigh) 548 if (resolve_neigh)
540 ret = addr_resolve_neigh(dst, dst_in, addr, seq); 549 ret = addr_resolve_neigh(dst, dst_in, addr, seq);
541 550
542 ndev = dst->dev; 551 if (addr->bound_dev_if) {
543 dev_hold(ndev); 552 ndev = dev_get_by_index(addr->net, addr->bound_dev_if);
553 } else {
554 ndev = dst->dev;
555 dev_hold(ndev);
556 }
544 557
545 dst_release(dst); 558 dst_release(dst);
546 } 559 }
547 560
548 addr->bound_dev_if = ndev->ifindex; 561 if (ndev->flags & IFF_LOOPBACK) {
549 addr->net = dev_net(ndev); 562 ret = rdma_translate_ip(dst_in, addr, NULL);
563 /*
564 * Put the loopback device and get the translated
565 * device instead.
566 */
567 dev_put(ndev);
568 ndev = dev_get_by_index(addr->net, addr->bound_dev_if);
569 } else {
570 addr->bound_dev_if = ndev->ifindex;
571 }
550 dev_put(ndev); 572 dev_put(ndev);
551 573
552 return ret; 574 return ret;
553} 575}
554 576
577static void process_one_req(struct work_struct *_work)
578{
579 struct addr_req *req;
580 struct sockaddr *src_in, *dst_in;
581
582 mutex_lock(&lock);
583 req = container_of(_work, struct addr_req, work.work);
584
585 if (req->status == -ENODATA) {
586 src_in = (struct sockaddr *)&req->src_addr;
587 dst_in = (struct sockaddr *)&req->dst_addr;
588 req->status = addr_resolve(src_in, dst_in, req->addr,
589 true, req->seq);
590 if (req->status && time_after_eq(jiffies, req->timeout)) {
591 req->status = -ETIMEDOUT;
592 } else if (req->status == -ENODATA) {
593 /* requeue the work for retrying again */
594 set_timeout(&req->work, req->timeout);
595 mutex_unlock(&lock);
596 return;
597 }
598 }
599 list_del(&req->list);
600 mutex_unlock(&lock);
601
602 req->callback(req->status, (struct sockaddr *)&req->src_addr,
603 req->addr, req->context);
604 put_client(req->client);
605 kfree(req);
606}
607
555static void process_req(struct work_struct *work) 608static void process_req(struct work_struct *work)
556{ 609{
557 struct addr_req *req, *temp_req; 610 struct addr_req *req, *temp_req;
@@ -569,20 +622,23 @@ static void process_req(struct work_struct *work)
569 true, req->seq); 622 true, req->seq);
570 if (req->status && time_after_eq(jiffies, req->timeout)) 623 if (req->status && time_after_eq(jiffies, req->timeout))
571 req->status = -ETIMEDOUT; 624 req->status = -ETIMEDOUT;
572 else if (req->status == -ENODATA) 625 else if (req->status == -ENODATA) {
626 set_timeout(&req->work, req->timeout);
573 continue; 627 continue;
628 }
574 } 629 }
575 list_move_tail(&req->list, &done_list); 630 list_move_tail(&req->list, &done_list);
576 } 631 }
577 632
578 if (!list_empty(&req_list)) {
579 req = list_entry(req_list.next, struct addr_req, list);
580 set_timeout(req->timeout);
581 }
582 mutex_unlock(&lock); 633 mutex_unlock(&lock);
583 634
584 list_for_each_entry_safe(req, temp_req, &done_list, list) { 635 list_for_each_entry_safe(req, temp_req, &done_list, list) {
585 list_del(&req->list); 636 list_del(&req->list);
637 /* It is safe to cancel other work items from this work item
638 * because at a time there can be only one work item running
639 * with this single threaded work queue.
640 */
641 cancel_delayed_work(&req->work);
586 req->callback(req->status, (struct sockaddr *) &req->src_addr, 642 req->callback(req->status, (struct sockaddr *) &req->src_addr,
587 req->addr, req->context); 643 req->addr, req->context);
588 put_client(req->client); 644 put_client(req->client);
@@ -625,6 +681,7 @@ int rdma_resolve_ip(struct rdma_addr_client *client,
625 req->context = context; 681 req->context = context;
626 req->client = client; 682 req->client = client;
627 atomic_inc(&client->refcount); 683 atomic_inc(&client->refcount);
684 INIT_DELAYED_WORK(&req->work, process_one_req);
628 req->seq = (u32)atomic_inc_return(&ib_nl_addr_request_seq); 685 req->seq = (u32)atomic_inc_return(&ib_nl_addr_request_seq);
629 686
630 req->status = addr_resolve(src_in, dst_in, addr, true, req->seq); 687 req->status = addr_resolve(src_in, dst_in, addr, true, req->seq);
@@ -679,7 +736,7 @@ void rdma_addr_cancel(struct rdma_dev_addr *addr)
679 req->status = -ECANCELED; 736 req->status = -ECANCELED;
680 req->timeout = jiffies; 737 req->timeout = jiffies;
681 list_move(&req->list, &req_list); 738 list_move(&req->list, &req_list);
682 set_timeout(req->timeout); 739 set_timeout(&req->work, req->timeout);
683 break; 740 break;
684 } 741 }
685 } 742 }
@@ -785,9 +842,8 @@ static int netevent_callback(struct notifier_block *self, unsigned long event,
785 if (event == NETEVENT_NEIGH_UPDATE) { 842 if (event == NETEVENT_NEIGH_UPDATE) {
786 struct neighbour *neigh = ctx; 843 struct neighbour *neigh = ctx;
787 844
788 if (neigh->nud_state & NUD_VALID) { 845 if (neigh->nud_state & NUD_VALID)
789 set_timeout(jiffies); 846 set_timeout(&work, jiffies);
790 }
791 } 847 }
792 return 0; 848 return 0;
793} 849}
@@ -798,7 +854,7 @@ static struct notifier_block nb = {
798 854
799int addr_init(void) 855int addr_init(void)
800{ 856{
801 addr_wq = alloc_workqueue("ib_addr", WQ_MEM_RECLAIM, 0); 857 addr_wq = alloc_ordered_workqueue("ib_addr", WQ_MEM_RECLAIM);
802 if (!addr_wq) 858 if (!addr_wq)
803 return -ENOMEM; 859 return -ENOMEM;
804 860
diff --git a/drivers/infiniband/core/cma.c b/drivers/infiniband/core/cma.c
index 31bb82d8ecd7..0eb393237ba2 100644
--- a/drivers/infiniband/core/cma.c
+++ b/drivers/infiniband/core/cma.c
@@ -623,22 +623,11 @@ static inline int cma_validate_port(struct ib_device *device, u8 port,
623 if ((dev_type != ARPHRD_INFINIBAND) && rdma_protocol_ib(device, port)) 623 if ((dev_type != ARPHRD_INFINIBAND) && rdma_protocol_ib(device, port))
624 return ret; 624 return ret;
625 625
626 if (dev_type == ARPHRD_ETHER && rdma_protocol_roce(device, port)) { 626 if (dev_type == ARPHRD_ETHER && rdma_protocol_roce(device, port))
627 ndev = dev_get_by_index(&init_net, bound_if_index); 627 ndev = dev_get_by_index(&init_net, bound_if_index);
628 if (ndev && ndev->flags & IFF_LOOPBACK) { 628 else
629 pr_info("detected loopback device\n");
630 dev_put(ndev);
631
632 if (!device->get_netdev)
633 return -EOPNOTSUPP;
634
635 ndev = device->get_netdev(device, port);
636 if (!ndev)
637 return -ENODEV;
638 }
639 } else {
640 gid_type = IB_GID_TYPE_IB; 629 gid_type = IB_GID_TYPE_IB;
641 } 630
642 631
643 ret = ib_find_cached_gid_by_port(device, gid, gid_type, port, 632 ret = ib_find_cached_gid_by_port(device, gid, gid_type, port,
644 ndev, NULL); 633 ndev, NULL);
@@ -1044,6 +1033,8 @@ int rdma_init_qp_attr(struct rdma_cm_id *id, struct ib_qp_attr *qp_attr,
1044 } else 1033 } else
1045 ret = iw_cm_init_qp_attr(id_priv->cm_id.iw, qp_attr, 1034 ret = iw_cm_init_qp_attr(id_priv->cm_id.iw, qp_attr,
1046 qp_attr_mask); 1035 qp_attr_mask);
1036 qp_attr->port_num = id_priv->id.port_num;
1037 *qp_attr_mask |= IB_QP_PORT;
1047 } else 1038 } else
1048 ret = -ENOSYS; 1039 ret = -ENOSYS;
1049 1040
@@ -2569,21 +2560,6 @@ static int cma_resolve_iboe_route(struct rdma_id_private *id_priv)
2569 goto err2; 2560 goto err2;
2570 } 2561 }
2571 2562
2572 if (ndev->flags & IFF_LOOPBACK) {
2573 dev_put(ndev);
2574 if (!id_priv->id.device->get_netdev) {
2575 ret = -EOPNOTSUPP;
2576 goto err2;
2577 }
2578
2579 ndev = id_priv->id.device->get_netdev(id_priv->id.device,
2580 id_priv->id.port_num);
2581 if (!ndev) {
2582 ret = -ENODEV;
2583 goto err2;
2584 }
2585 }
2586
2587 supported_gids = roce_gid_type_mask_support(id_priv->id.device, 2563 supported_gids = roce_gid_type_mask_support(id_priv->id.device,
2588 id_priv->id.port_num); 2564 id_priv->id.port_num);
2589 gid_type = cma_route_gid_type(addr->dev_addr.network, 2565 gid_type = cma_route_gid_type(addr->dev_addr.network,
diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
index a5dfab6adf49..221468f77128 100644
--- a/drivers/infiniband/core/device.c
+++ b/drivers/infiniband/core/device.c
@@ -537,10 +537,11 @@ void ib_unregister_device(struct ib_device *device)
537 } 537 }
538 up_read(&lists_rwsem); 538 up_read(&lists_rwsem);
539 539
540 mutex_unlock(&device_mutex);
541
542 ib_device_unregister_rdmacg(device); 540 ib_device_unregister_rdmacg(device);
543 ib_device_unregister_sysfs(device); 541 ib_device_unregister_sysfs(device);
542
543 mutex_unlock(&device_mutex);
544
544 ib_cache_cleanup_one(device); 545 ib_cache_cleanup_one(device);
545 546
546 ib_security_destroy_port_pkey_list(device); 547 ib_security_destroy_port_pkey_list(device);
diff --git a/drivers/infiniband/core/roce_gid_mgmt.c b/drivers/infiniband/core/roce_gid_mgmt.c
index db958d3207ef..94a9eefb3cfc 100644
--- a/drivers/infiniband/core/roce_gid_mgmt.c
+++ b/drivers/infiniband/core/roce_gid_mgmt.c
@@ -42,6 +42,8 @@
42#include <rdma/ib_cache.h> 42#include <rdma/ib_cache.h>
43#include <rdma/ib_addr.h> 43#include <rdma/ib_addr.h>
44 44
45static struct workqueue_struct *gid_cache_wq;
46
45enum gid_op_type { 47enum gid_op_type {
46 GID_DEL = 0, 48 GID_DEL = 0,
47 GID_ADD 49 GID_ADD
@@ -560,7 +562,7 @@ static int netdevice_queue_work(struct netdev_event_work_cmd *cmds,
560 } 562 }
561 INIT_WORK(&ndev_work->work, netdevice_event_work_handler); 563 INIT_WORK(&ndev_work->work, netdevice_event_work_handler);
562 564
563 queue_work(ib_wq, &ndev_work->work); 565 queue_work(gid_cache_wq, &ndev_work->work);
564 566
565 return NOTIFY_DONE; 567 return NOTIFY_DONE;
566} 568}
@@ -693,7 +695,7 @@ static int addr_event(struct notifier_block *this, unsigned long event,
693 dev_hold(ndev); 695 dev_hold(ndev);
694 work->gid_attr.ndev = ndev; 696 work->gid_attr.ndev = ndev;
695 697
696 queue_work(ib_wq, &work->work); 698 queue_work(gid_cache_wq, &work->work);
697 699
698 return NOTIFY_DONE; 700 return NOTIFY_DONE;
699} 701}
@@ -740,6 +742,10 @@ static struct notifier_block nb_inet6addr = {
740 742
741int __init roce_gid_mgmt_init(void) 743int __init roce_gid_mgmt_init(void)
742{ 744{
745 gid_cache_wq = alloc_ordered_workqueue("gid-cache-wq", 0);
746 if (!gid_cache_wq)
747 return -ENOMEM;
748
743 register_inetaddr_notifier(&nb_inetaddr); 749 register_inetaddr_notifier(&nb_inetaddr);
744 if (IS_ENABLED(CONFIG_IPV6)) 750 if (IS_ENABLED(CONFIG_IPV6))
745 register_inet6addr_notifier(&nb_inet6addr); 751 register_inet6addr_notifier(&nb_inet6addr);
@@ -764,4 +770,5 @@ void __exit roce_gid_mgmt_cleanup(void)
764 * ib-core is removed, all physical devices have been removed, 770 * ib-core is removed, all physical devices have been removed,
765 * so no issue with remaining hardware contexts. 771 * so no issue with remaining hardware contexts.
766 */ 772 */
773 destroy_workqueue(gid_cache_wq);
767} 774}
diff --git a/drivers/infiniband/core/uverbs_cmd.c b/drivers/infiniband/core/uverbs_cmd.c
index 8ba9bfb073d1..739bd69ef1d4 100644
--- a/drivers/infiniband/core/uverbs_cmd.c
+++ b/drivers/infiniband/core/uverbs_cmd.c
@@ -1015,7 +1015,7 @@ static struct ib_ucq_object *create_cq(struct ib_uverbs_file *file,
1015 cq->uobject = &obj->uobject; 1015 cq->uobject = &obj->uobject;
1016 cq->comp_handler = ib_uverbs_comp_handler; 1016 cq->comp_handler = ib_uverbs_comp_handler;
1017 cq->event_handler = ib_uverbs_cq_event_handler; 1017 cq->event_handler = ib_uverbs_cq_event_handler;
1018 cq->cq_context = &ev_file->ev_queue; 1018 cq->cq_context = ev_file ? &ev_file->ev_queue : NULL;
1019 atomic_set(&cq->usecnt, 0); 1019 atomic_set(&cq->usecnt, 0);
1020 1020
1021 obj->uobject.object = cq; 1021 obj->uobject.object = cq;
@@ -1153,7 +1153,7 @@ ssize_t ib_uverbs_resize_cq(struct ib_uverbs_file *file,
1153 int out_len) 1153 int out_len)
1154{ 1154{
1155 struct ib_uverbs_resize_cq cmd; 1155 struct ib_uverbs_resize_cq cmd;
1156 struct ib_uverbs_resize_cq_resp resp; 1156 struct ib_uverbs_resize_cq_resp resp = {};
1157 struct ib_udata udata; 1157 struct ib_udata udata;
1158 struct ib_cq *cq; 1158 struct ib_cq *cq;
1159 int ret = -EINVAL; 1159 int ret = -EINVAL;
@@ -1296,7 +1296,6 @@ ssize_t ib_uverbs_destroy_cq(struct ib_uverbs_file *file,
1296 struct ib_uobject *uobj; 1296 struct ib_uobject *uobj;
1297 struct ib_cq *cq; 1297 struct ib_cq *cq;
1298 struct ib_ucq_object *obj; 1298 struct ib_ucq_object *obj;
1299 struct ib_uverbs_event_queue *ev_queue;
1300 int ret = -EINVAL; 1299 int ret = -EINVAL;
1301 1300
1302 if (copy_from_user(&cmd, buf, sizeof cmd)) 1301 if (copy_from_user(&cmd, buf, sizeof cmd))
@@ -1313,7 +1312,6 @@ ssize_t ib_uverbs_destroy_cq(struct ib_uverbs_file *file,
1313 */ 1312 */
1314 uverbs_uobject_get(uobj); 1313 uverbs_uobject_get(uobj);
1315 cq = uobj->object; 1314 cq = uobj->object;
1316 ev_queue = cq->cq_context;
1317 obj = container_of(cq->uobject, struct ib_ucq_object, uobject); 1315 obj = container_of(cq->uobject, struct ib_ucq_object, uobject);
1318 1316
1319 memset(&resp, 0, sizeof(resp)); 1317 memset(&resp, 0, sizeof(resp));
@@ -1524,6 +1522,7 @@ static int create_qp(struct ib_uverbs_file *file,
1524 qp->qp_type = attr.qp_type; 1522 qp->qp_type = attr.qp_type;
1525 atomic_set(&qp->usecnt, 0); 1523 atomic_set(&qp->usecnt, 0);
1526 atomic_inc(&pd->usecnt); 1524 atomic_inc(&pd->usecnt);
1525 qp->port = 0;
1527 if (attr.send_cq) 1526 if (attr.send_cq)
1528 atomic_inc(&attr.send_cq->usecnt); 1527 atomic_inc(&attr.send_cq->usecnt);
1529 if (attr.recv_cq) 1528 if (attr.recv_cq)
@@ -1935,7 +1934,8 @@ static int modify_qp(struct ib_uverbs_file *file,
1935 goto out; 1934 goto out;
1936 } 1935 }
1937 1936
1938 if (!rdma_is_port_valid(qp->device, cmd->base.port_num)) { 1937 if ((cmd->base.attr_mask & IB_QP_PORT) &&
1938 !rdma_is_port_valid(qp->device, cmd->base.port_num)) {
1939 ret = -EINVAL; 1939 ret = -EINVAL;
1940 goto release_qp; 1940 goto release_qp;
1941 } 1941 }
@@ -1963,8 +1963,9 @@ static int modify_qp(struct ib_uverbs_file *file,
1963 attr->alt_timeout = cmd->base.alt_timeout; 1963 attr->alt_timeout = cmd->base.alt_timeout;
1964 attr->rate_limit = cmd->rate_limit; 1964 attr->rate_limit = cmd->rate_limit;
1965 1965
1966 attr->ah_attr.type = rdma_ah_find_type(qp->device, 1966 if (cmd->base.attr_mask & IB_QP_AV)
1967 cmd->base.dest.port_num); 1967 attr->ah_attr.type = rdma_ah_find_type(qp->device,
1968 cmd->base.dest.port_num);
1968 if (cmd->base.dest.is_global) { 1969 if (cmd->base.dest.is_global) {
1969 rdma_ah_set_grh(&attr->ah_attr, NULL, 1970 rdma_ah_set_grh(&attr->ah_attr, NULL,
1970 cmd->base.dest.flow_label, 1971 cmd->base.dest.flow_label,
@@ -1982,8 +1983,9 @@ static int modify_qp(struct ib_uverbs_file *file,
1982 rdma_ah_set_port_num(&attr->ah_attr, 1983 rdma_ah_set_port_num(&attr->ah_attr,
1983 cmd->base.dest.port_num); 1984 cmd->base.dest.port_num);
1984 1985
1985 attr->alt_ah_attr.type = rdma_ah_find_type(qp->device, 1986 if (cmd->base.attr_mask & IB_QP_ALT_PATH)
1986 cmd->base.dest.port_num); 1987 attr->alt_ah_attr.type =
1988 rdma_ah_find_type(qp->device, cmd->base.dest.port_num);
1987 if (cmd->base.alt_dest.is_global) { 1989 if (cmd->base.alt_dest.is_global) {
1988 rdma_ah_set_grh(&attr->alt_ah_attr, NULL, 1990 rdma_ah_set_grh(&attr->alt_ah_attr, NULL,
1989 cmd->base.alt_dest.flow_label, 1991 cmd->base.alt_dest.flow_label,
@@ -2005,28 +2007,13 @@ static int modify_qp(struct ib_uverbs_file *file,
2005 rdma_ah_set_port_num(&attr->alt_ah_attr, 2007 rdma_ah_set_port_num(&attr->alt_ah_attr,
2006 cmd->base.alt_dest.port_num); 2008 cmd->base.alt_dest.port_num);
2007 2009
2008 if (qp->real_qp == qp) { 2010 ret = ib_modify_qp_with_udata(qp, attr,
2009 if (cmd->base.attr_mask & IB_QP_AV) { 2011 modify_qp_mask(qp->qp_type,
2010 ret = ib_resolve_eth_dmac(qp->device, &attr->ah_attr); 2012 cmd->base.attr_mask),
2011 if (ret) 2013 udata);
2012 goto release_qp;
2013 }
2014 ret = ib_security_modify_qp(qp,
2015 attr,
2016 modify_qp_mask(qp->qp_type,
2017 cmd->base.attr_mask),
2018 udata);
2019 } else {
2020 ret = ib_security_modify_qp(qp,
2021 attr,
2022 modify_qp_mask(qp->qp_type,
2023 cmd->base.attr_mask),
2024 NULL);
2025 }
2026 2014
2027release_qp: 2015release_qp:
2028 uobj_put_obj_read(qp); 2016 uobj_put_obj_read(qp);
2029
2030out: 2017out:
2031 kfree(attr); 2018 kfree(attr);
2032 2019
@@ -2103,7 +2090,6 @@ ssize_t ib_uverbs_destroy_qp(struct ib_uverbs_file *file,
2103 struct ib_uverbs_destroy_qp cmd; 2090 struct ib_uverbs_destroy_qp cmd;
2104 struct ib_uverbs_destroy_qp_resp resp; 2091 struct ib_uverbs_destroy_qp_resp resp;
2105 struct ib_uobject *uobj; 2092 struct ib_uobject *uobj;
2106 struct ib_qp *qp;
2107 struct ib_uqp_object *obj; 2093 struct ib_uqp_object *obj;
2108 int ret = -EINVAL; 2094 int ret = -EINVAL;
2109 2095
@@ -2117,7 +2103,6 @@ ssize_t ib_uverbs_destroy_qp(struct ib_uverbs_file *file,
2117 if (IS_ERR(uobj)) 2103 if (IS_ERR(uobj))
2118 return PTR_ERR(uobj); 2104 return PTR_ERR(uobj);
2119 2105
2120 qp = uobj->object;
2121 obj = container_of(uobj, struct ib_uqp_object, uevent.uobject); 2106 obj = container_of(uobj, struct ib_uqp_object, uevent.uobject);
2122 /* 2107 /*
2123 * Make sure we don't free the memory in remove_commit as we still 2108 * Make sure we don't free the memory in remove_commit as we still
@@ -3019,7 +3004,6 @@ int ib_uverbs_ex_destroy_wq(struct ib_uverbs_file *file,
3019{ 3004{
3020 struct ib_uverbs_ex_destroy_wq cmd = {}; 3005 struct ib_uverbs_ex_destroy_wq cmd = {};
3021 struct ib_uverbs_ex_destroy_wq_resp resp = {}; 3006 struct ib_uverbs_ex_destroy_wq_resp resp = {};
3022 struct ib_wq *wq;
3023 struct ib_uobject *uobj; 3007 struct ib_uobject *uobj;
3024 struct ib_uwq_object *obj; 3008 struct ib_uwq_object *obj;
3025 size_t required_cmd_sz; 3009 size_t required_cmd_sz;
@@ -3053,7 +3037,6 @@ int ib_uverbs_ex_destroy_wq(struct ib_uverbs_file *file,
3053 if (IS_ERR(uobj)) 3037 if (IS_ERR(uobj))
3054 return PTR_ERR(uobj); 3038 return PTR_ERR(uobj);
3055 3039
3056 wq = uobj->object;
3057 obj = container_of(uobj, struct ib_uwq_object, uevent.uobject); 3040 obj = container_of(uobj, struct ib_uwq_object, uevent.uobject);
3058 /* 3041 /*
3059 * Make sure we don't free the memory in remove_commit as we still 3042 * Make sure we don't free the memory in remove_commit as we still
@@ -3743,10 +3726,8 @@ ssize_t ib_uverbs_destroy_srq(struct ib_uverbs_file *file,
3743 struct ib_uverbs_destroy_srq cmd; 3726 struct ib_uverbs_destroy_srq cmd;
3744 struct ib_uverbs_destroy_srq_resp resp; 3727 struct ib_uverbs_destroy_srq_resp resp;
3745 struct ib_uobject *uobj; 3728 struct ib_uobject *uobj;
3746 struct ib_srq *srq;
3747 struct ib_uevent_object *obj; 3729 struct ib_uevent_object *obj;
3748 int ret = -EINVAL; 3730 int ret = -EINVAL;
3749 enum ib_srq_type srq_type;
3750 3731
3751 if (copy_from_user(&cmd, buf, sizeof cmd)) 3732 if (copy_from_user(&cmd, buf, sizeof cmd))
3752 return -EFAULT; 3733 return -EFAULT;
@@ -3756,9 +3737,7 @@ ssize_t ib_uverbs_destroy_srq(struct ib_uverbs_file *file,
3756 if (IS_ERR(uobj)) 3737 if (IS_ERR(uobj))
3757 return PTR_ERR(uobj); 3738 return PTR_ERR(uobj);
3758 3739
3759 srq = uobj->object;
3760 obj = container_of(uobj, struct ib_uevent_object, uobject); 3740 obj = container_of(uobj, struct ib_uevent_object, uobject);
3761 srq_type = srq->srq_type;
3762 /* 3741 /*
3763 * Make sure we don't free the memory in remove_commit as we still 3742 * Make sure we don't free the memory in remove_commit as we still
3764 * needs the uobject memory to create the response. 3743 * needs the uobject memory to create the response.
diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c
index 3d2609608f58..5e530d2bee44 100644
--- a/drivers/infiniband/core/uverbs_main.c
+++ b/drivers/infiniband/core/uverbs_main.c
@@ -250,6 +250,7 @@ void ib_uverbs_release_file(struct kref *ref)
250 if (atomic_dec_and_test(&file->device->refcount)) 250 if (atomic_dec_and_test(&file->device->refcount))
251 ib_uverbs_comp_dev(file->device); 251 ib_uverbs_comp_dev(file->device);
252 252
253 kobject_put(&file->device->kobj);
253 kfree(file); 254 kfree(file);
254} 255}
255 256
@@ -917,7 +918,6 @@ err:
917static int ib_uverbs_close(struct inode *inode, struct file *filp) 918static int ib_uverbs_close(struct inode *inode, struct file *filp)
918{ 919{
919 struct ib_uverbs_file *file = filp->private_data; 920 struct ib_uverbs_file *file = filp->private_data;
920 struct ib_uverbs_device *dev = file->device;
921 921
922 mutex_lock(&file->cleanup_mutex); 922 mutex_lock(&file->cleanup_mutex);
923 if (file->ucontext) { 923 if (file->ucontext) {
@@ -939,7 +939,6 @@ static int ib_uverbs_close(struct inode *inode, struct file *filp)
939 ib_uverbs_release_async_event_file); 939 ib_uverbs_release_async_event_file);
940 940
941 kref_put(&file->ref, ib_uverbs_release_file); 941 kref_put(&file->ref, ib_uverbs_release_file);
942 kobject_put(&dev->kobj);
943 942
944 return 0; 943 return 0;
945} 944}
@@ -1154,7 +1153,6 @@ static void ib_uverbs_free_hw_resources(struct ib_uverbs_device *uverbs_dev,
1154 kref_get(&file->ref); 1153 kref_get(&file->ref);
1155 mutex_unlock(&uverbs_dev->lists_mutex); 1154 mutex_unlock(&uverbs_dev->lists_mutex);
1156 1155
1157 ib_uverbs_event_handler(&file->event_handler, &event);
1158 1156
1159 mutex_lock(&file->cleanup_mutex); 1157 mutex_lock(&file->cleanup_mutex);
1160 ucontext = file->ucontext; 1158 ucontext = file->ucontext;
@@ -1171,6 +1169,7 @@ static void ib_uverbs_free_hw_resources(struct ib_uverbs_device *uverbs_dev,
1171 * for example due to freeing the resources 1169 * for example due to freeing the resources
1172 * (e.g mmput). 1170 * (e.g mmput).
1173 */ 1171 */
1172 ib_uverbs_event_handler(&file->event_handler, &event);
1174 ib_dev->disassociate_ucontext(ucontext); 1173 ib_dev->disassociate_ucontext(ucontext);
1175 mutex_lock(&file->cleanup_mutex); 1174 mutex_lock(&file->cleanup_mutex);
1176 ib_uverbs_cleanup_ucontext(file, ucontext, true); 1175 ib_uverbs_cleanup_ucontext(file, ucontext, true);
diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c
index c973a83c898b..b456e3ca1876 100644
--- a/drivers/infiniband/core/verbs.c
+++ b/drivers/infiniband/core/verbs.c
@@ -452,6 +452,19 @@ int ib_get_gids_from_rdma_hdr(const union rdma_network_hdr *hdr,
452} 452}
453EXPORT_SYMBOL(ib_get_gids_from_rdma_hdr); 453EXPORT_SYMBOL(ib_get_gids_from_rdma_hdr);
454 454
455/*
456 * This function creates ah from the incoming packet.
457 * Incoming packet has dgid of the receiver node on which this code is
458 * getting executed and, sgid contains the GID of the sender.
459 *
460 * When resolving mac address of destination, the arrived dgid is used
461 * as sgid and, sgid is used as dgid because sgid contains destinations
462 * GID whom to respond to.
463 *
464 * This is why when calling rdma_addr_find_l2_eth_by_grh() function, the
465 * position of arguments dgid and sgid do not match the order of the
466 * parameters.
467 */
455int ib_init_ah_from_wc(struct ib_device *device, u8 port_num, 468int ib_init_ah_from_wc(struct ib_device *device, u8 port_num,
456 const struct ib_wc *wc, const struct ib_grh *grh, 469 const struct ib_wc *wc, const struct ib_grh *grh,
457 struct rdma_ah_attr *ah_attr) 470 struct rdma_ah_attr *ah_attr)
@@ -507,11 +520,6 @@ int ib_init_ah_from_wc(struct ib_device *device, u8 port_num,
507 } 520 }
508 521
509 resolved_dev = dev_get_by_index(&init_net, if_index); 522 resolved_dev = dev_get_by_index(&init_net, if_index);
510 if (resolved_dev->flags & IFF_LOOPBACK) {
511 dev_put(resolved_dev);
512 resolved_dev = idev;
513 dev_hold(resolved_dev);
514 }
515 rcu_read_lock(); 523 rcu_read_lock();
516 if (resolved_dev != idev && !rdma_is_upper_dev_rcu(idev, 524 if (resolved_dev != idev && !rdma_is_upper_dev_rcu(idev,
517 resolved_dev)) 525 resolved_dev))
@@ -830,6 +838,7 @@ struct ib_qp *ib_create_qp(struct ib_pd *pd,
830 spin_lock_init(&qp->mr_lock); 838 spin_lock_init(&qp->mr_lock);
831 INIT_LIST_HEAD(&qp->rdma_mrs); 839 INIT_LIST_HEAD(&qp->rdma_mrs);
832 INIT_LIST_HEAD(&qp->sig_mrs); 840 INIT_LIST_HEAD(&qp->sig_mrs);
841 qp->port = 0;
833 842
834 if (qp_init_attr->qp_type == IB_QPT_XRC_TGT) 843 if (qp_init_attr->qp_type == IB_QPT_XRC_TGT)
835 return ib_create_xrc_qp(qp, qp_init_attr); 844 return ib_create_xrc_qp(qp, qp_init_attr);
@@ -1268,20 +1277,40 @@ out:
1268} 1277}
1269EXPORT_SYMBOL(ib_resolve_eth_dmac); 1278EXPORT_SYMBOL(ib_resolve_eth_dmac);
1270 1279
1271int ib_modify_qp(struct ib_qp *qp, 1280/**
1272 struct ib_qp_attr *qp_attr, 1281 * ib_modify_qp_with_udata - Modifies the attributes for the specified QP.
1273 int qp_attr_mask) 1282 * @qp: The QP to modify.
1283 * @attr: On input, specifies the QP attributes to modify. On output,
1284 * the current values of selected QP attributes are returned.
1285 * @attr_mask: A bit-mask used to specify which attributes of the QP
1286 * are being modified.
1287 * @udata: pointer to user's input output buffer information
1288 * are being modified.
1289 * It returns 0 on success and returns appropriate error code on error.
1290 */
1291int ib_modify_qp_with_udata(struct ib_qp *qp, struct ib_qp_attr *attr,
1292 int attr_mask, struct ib_udata *udata)
1274{ 1293{
1294 int ret;
1275 1295
1276 if (qp_attr_mask & IB_QP_AV) { 1296 if (attr_mask & IB_QP_AV) {
1277 int ret; 1297 ret = ib_resolve_eth_dmac(qp->device, &attr->ah_attr);
1278
1279 ret = ib_resolve_eth_dmac(qp->device, &qp_attr->ah_attr);
1280 if (ret) 1298 if (ret)
1281 return ret; 1299 return ret;
1282 } 1300 }
1301 ret = ib_security_modify_qp(qp, attr, attr_mask, udata);
1302 if (!ret && (attr_mask & IB_QP_PORT))
1303 qp->port = attr->port_num;
1304
1305 return ret;
1306}
1307EXPORT_SYMBOL(ib_modify_qp_with_udata);
1283 1308
1284 return ib_security_modify_qp(qp->real_qp, qp_attr, qp_attr_mask, NULL); 1309int ib_modify_qp(struct ib_qp *qp,
1310 struct ib_qp_attr *qp_attr,
1311 int qp_attr_mask)
1312{
1313 return ib_modify_qp_with_udata(qp, qp_attr, qp_attr_mask, NULL);
1285} 1314}
1286EXPORT_SYMBOL(ib_modify_qp); 1315EXPORT_SYMBOL(ib_modify_qp);
1287 1316
diff --git a/drivers/infiniband/hw/bnxt_re/bnxt_re.h b/drivers/infiniband/hw/bnxt_re/bnxt_re.h
index 08772836fded..85527532c49d 100644
--- a/drivers/infiniband/hw/bnxt_re/bnxt_re.h
+++ b/drivers/infiniband/hw/bnxt_re/bnxt_re.h
@@ -51,6 +51,8 @@
51#define BNXT_RE_PAGE_SIZE_8M BIT(23) 51#define BNXT_RE_PAGE_SIZE_8M BIT(23)
52#define BNXT_RE_PAGE_SIZE_1G BIT(30) 52#define BNXT_RE_PAGE_SIZE_1G BIT(30)
53 53
54#define BNXT_RE_MAX_MR_SIZE BIT(30)
55
54#define BNXT_RE_MAX_QPC_COUNT (64 * 1024) 56#define BNXT_RE_MAX_QPC_COUNT (64 * 1024)
55#define BNXT_RE_MAX_MRW_COUNT (64 * 1024) 57#define BNXT_RE_MAX_MRW_COUNT (64 * 1024)
56#define BNXT_RE_MAX_SRQC_COUNT (64 * 1024) 58#define BNXT_RE_MAX_SRQC_COUNT (64 * 1024)
@@ -60,6 +62,13 @@
60 62
61#define BNXT_RE_RQ_WQE_THRESHOLD 32 63#define BNXT_RE_RQ_WQE_THRESHOLD 32
62 64
65/*
66 * Setting the default ack delay value to 16, which means
67 * the default timeout is approx. 260ms(4 usec * 2 ^(timeout))
68 */
69
70#define BNXT_RE_DEFAULT_ACK_DELAY 16
71
63struct bnxt_re_work { 72struct bnxt_re_work {
64 struct work_struct work; 73 struct work_struct work;
65 unsigned long event; 74 unsigned long event;
diff --git a/drivers/infiniband/hw/bnxt_re/ib_verbs.c b/drivers/infiniband/hw/bnxt_re/ib_verbs.c
index c7bd68311d0c..f0e01b3ac711 100644
--- a/drivers/infiniband/hw/bnxt_re/ib_verbs.c
+++ b/drivers/infiniband/hw/bnxt_re/ib_verbs.c
@@ -145,10 +145,8 @@ int bnxt_re_query_device(struct ib_device *ibdev,
145 ib_attr->fw_ver = (u64)(unsigned long)(dev_attr->fw_ver); 145 ib_attr->fw_ver = (u64)(unsigned long)(dev_attr->fw_ver);
146 bnxt_qplib_get_guid(rdev->netdev->dev_addr, 146 bnxt_qplib_get_guid(rdev->netdev->dev_addr,
147 (u8 *)&ib_attr->sys_image_guid); 147 (u8 *)&ib_attr->sys_image_guid);
148 ib_attr->max_mr_size = ~0ull; 148 ib_attr->max_mr_size = BNXT_RE_MAX_MR_SIZE;
149 ib_attr->page_size_cap = BNXT_RE_PAGE_SIZE_4K | BNXT_RE_PAGE_SIZE_8K | 149 ib_attr->page_size_cap = BNXT_RE_PAGE_SIZE_4K;
150 BNXT_RE_PAGE_SIZE_64K | BNXT_RE_PAGE_SIZE_2M |
151 BNXT_RE_PAGE_SIZE_8M | BNXT_RE_PAGE_SIZE_1G;
152 150
153 ib_attr->vendor_id = rdev->en_dev->pdev->vendor; 151 ib_attr->vendor_id = rdev->en_dev->pdev->vendor;
154 ib_attr->vendor_part_id = rdev->en_dev->pdev->device; 152 ib_attr->vendor_part_id = rdev->en_dev->pdev->device;
@@ -174,9 +172,11 @@ int bnxt_re_query_device(struct ib_device *ibdev,
174 ib_attr->max_mr = dev_attr->max_mr; 172 ib_attr->max_mr = dev_attr->max_mr;
175 ib_attr->max_pd = dev_attr->max_pd; 173 ib_attr->max_pd = dev_attr->max_pd;
176 ib_attr->max_qp_rd_atom = dev_attr->max_qp_rd_atom; 174 ib_attr->max_qp_rd_atom = dev_attr->max_qp_rd_atom;
177 ib_attr->max_qp_init_rd_atom = dev_attr->max_qp_rd_atom; 175 ib_attr->max_qp_init_rd_atom = dev_attr->max_qp_init_rd_atom;
178 ib_attr->atomic_cap = IB_ATOMIC_HCA; 176 if (dev_attr->is_atomic) {
179 ib_attr->masked_atomic_cap = IB_ATOMIC_HCA; 177 ib_attr->atomic_cap = IB_ATOMIC_HCA;
178 ib_attr->masked_atomic_cap = IB_ATOMIC_HCA;
179 }
180 180
181 ib_attr->max_ee_rd_atom = 0; 181 ib_attr->max_ee_rd_atom = 0;
182 ib_attr->max_res_rd_atom = 0; 182 ib_attr->max_res_rd_atom = 0;
@@ -201,7 +201,7 @@ int bnxt_re_query_device(struct ib_device *ibdev,
201 ib_attr->max_fast_reg_page_list_len = MAX_PBL_LVL_1_PGS; 201 ib_attr->max_fast_reg_page_list_len = MAX_PBL_LVL_1_PGS;
202 202
203 ib_attr->max_pkeys = 1; 203 ib_attr->max_pkeys = 1;
204 ib_attr->local_ca_ack_delay = 0; 204 ib_attr->local_ca_ack_delay = BNXT_RE_DEFAULT_ACK_DELAY;
205 return 0; 205 return 0;
206} 206}
207 207
@@ -390,15 +390,17 @@ int bnxt_re_del_gid(struct ib_device *ibdev, u8 port_num,
390 return -EINVAL; 390 return -EINVAL;
391 ctx->refcnt--; 391 ctx->refcnt--;
392 if (!ctx->refcnt) { 392 if (!ctx->refcnt) {
393 rc = bnxt_qplib_del_sgid 393 rc = bnxt_qplib_del_sgid(sgid_tbl,
394 (sgid_tbl, 394 &sgid_tbl->tbl[ctx->idx],
395 &sgid_tbl->tbl[ctx->idx], true); 395 true);
396 if (rc) 396 if (rc) {
397 dev_err(rdev_to_dev(rdev), 397 dev_err(rdev_to_dev(rdev),
398 "Failed to remove GID: %#x", rc); 398 "Failed to remove GID: %#x", rc);
399 ctx_tbl = sgid_tbl->ctx; 399 } else {
400 ctx_tbl[ctx->idx] = NULL; 400 ctx_tbl = sgid_tbl->ctx;
401 kfree(ctx); 401 ctx_tbl[ctx->idx] = NULL;
402 kfree(ctx);
403 }
402 } 404 }
403 } else { 405 } else {
404 return -EINVAL; 406 return -EINVAL;
@@ -588,10 +590,10 @@ static int bnxt_re_create_fence_mr(struct bnxt_re_pd *pd)
588 590
589 /* Create a fence MW only for kernel consumers */ 591 /* Create a fence MW only for kernel consumers */
590 mw = bnxt_re_alloc_mw(&pd->ib_pd, IB_MW_TYPE_1, NULL); 592 mw = bnxt_re_alloc_mw(&pd->ib_pd, IB_MW_TYPE_1, NULL);
591 if (!mw) { 593 if (IS_ERR(mw)) {
592 dev_err(rdev_to_dev(rdev), 594 dev_err(rdev_to_dev(rdev),
593 "Failed to create fence-MW for PD: %p\n", pd); 595 "Failed to create fence-MW for PD: %p\n", pd);
594 rc = -EINVAL; 596 rc = PTR_ERR(mw);
595 goto fail; 597 goto fail;
596 } 598 }
597 fence->mw = mw; 599 fence->mw = mw;
@@ -612,30 +614,13 @@ int bnxt_re_dealloc_pd(struct ib_pd *ib_pd)
612 int rc; 614 int rc;
613 615
614 bnxt_re_destroy_fence_mr(pd); 616 bnxt_re_destroy_fence_mr(pd);
615 if (ib_pd->uobject && pd->dpi.dbr) {
616 struct ib_ucontext *ib_uctx = ib_pd->uobject->context;
617 struct bnxt_re_ucontext *ucntx;
618 617
619 /* Free DPI only if this is the first PD allocated by the 618 if (pd->qplib_pd.id) {
620 * application and mark the context dpi as NULL 619 rc = bnxt_qplib_dealloc_pd(&rdev->qplib_res,
621 */ 620 &rdev->qplib_res.pd_tbl,
622 ucntx = container_of(ib_uctx, struct bnxt_re_ucontext, ib_uctx); 621 &pd->qplib_pd);
623
624 rc = bnxt_qplib_dealloc_dpi(&rdev->qplib_res,
625 &rdev->qplib_res.dpi_tbl,
626 &pd->dpi);
627 if (rc) 622 if (rc)
628 dev_err(rdev_to_dev(rdev), "Failed to deallocate HW DPI"); 623 dev_err(rdev_to_dev(rdev), "Failed to deallocate HW PD");
629 /* Don't fail, continue*/
630 ucntx->dpi = NULL;
631 }
632
633 rc = bnxt_qplib_dealloc_pd(&rdev->qplib_res,
634 &rdev->qplib_res.pd_tbl,
635 &pd->qplib_pd);
636 if (rc) {
637 dev_err(rdev_to_dev(rdev), "Failed to deallocate HW PD");
638 return rc;
639 } 624 }
640 625
641 kfree(pd); 626 kfree(pd);
@@ -667,23 +652,22 @@ struct ib_pd *bnxt_re_alloc_pd(struct ib_device *ibdev,
667 if (udata) { 652 if (udata) {
668 struct bnxt_re_pd_resp resp; 653 struct bnxt_re_pd_resp resp;
669 654
670 if (!ucntx->dpi) { 655 if (!ucntx->dpi.dbr) {
671 /* Allocate DPI in alloc_pd to avoid failing of 656 /* Allocate DPI in alloc_pd to avoid failing of
672 * ibv_devinfo and family of application when DPIs 657 * ibv_devinfo and family of application when DPIs
673 * are depleted. 658 * are depleted.
674 */ 659 */
675 if (bnxt_qplib_alloc_dpi(&rdev->qplib_res.dpi_tbl, 660 if (bnxt_qplib_alloc_dpi(&rdev->qplib_res.dpi_tbl,
676 &pd->dpi, ucntx)) { 661 &ucntx->dpi, ucntx)) {
677 rc = -ENOMEM; 662 rc = -ENOMEM;
678 goto dbfail; 663 goto dbfail;
679 } 664 }
680 ucntx->dpi = &pd->dpi;
681 } 665 }
682 666
683 resp.pdid = pd->qplib_pd.id; 667 resp.pdid = pd->qplib_pd.id;
684 /* Still allow mapping this DBR to the new user PD. */ 668 /* Still allow mapping this DBR to the new user PD. */
685 resp.dpi = ucntx->dpi->dpi; 669 resp.dpi = ucntx->dpi.dpi;
686 resp.dbr = (u64)ucntx->dpi->umdbr; 670 resp.dbr = (u64)ucntx->dpi.umdbr;
687 671
688 rc = ib_copy_to_udata(udata, &resp, sizeof(resp)); 672 rc = ib_copy_to_udata(udata, &resp, sizeof(resp));
689 if (rc) { 673 if (rc) {
@@ -960,7 +944,7 @@ static int bnxt_re_init_user_qp(struct bnxt_re_dev *rdev, struct bnxt_re_pd *pd,
960 qplib_qp->rq.nmap = umem->nmap; 944 qplib_qp->rq.nmap = umem->nmap;
961 } 945 }
962 946
963 qplib_qp->dpi = cntx->dpi; 947 qplib_qp->dpi = &cntx->dpi;
964 return 0; 948 return 0;
965rqfail: 949rqfail:
966 ib_umem_release(qp->sumem); 950 ib_umem_release(qp->sumem);
@@ -1530,13 +1514,24 @@ int bnxt_re_modify_qp(struct ib_qp *ib_qp, struct ib_qp_attr *qp_attr,
1530 if (qp_attr_mask & IB_QP_MAX_QP_RD_ATOMIC) { 1514 if (qp_attr_mask & IB_QP_MAX_QP_RD_ATOMIC) {
1531 qp->qplib_qp.modify_flags |= 1515 qp->qplib_qp.modify_flags |=
1532 CMDQ_MODIFY_QP_MODIFY_MASK_MAX_RD_ATOMIC; 1516 CMDQ_MODIFY_QP_MODIFY_MASK_MAX_RD_ATOMIC;
1533 qp->qplib_qp.max_rd_atomic = qp_attr->max_rd_atomic; 1517 /* Cap the max_rd_atomic to device max */
1518 qp->qplib_qp.max_rd_atomic = min_t(u32, qp_attr->max_rd_atomic,
1519 dev_attr->max_qp_rd_atom);
1534 } 1520 }
1535 if (qp_attr_mask & IB_QP_SQ_PSN) { 1521 if (qp_attr_mask & IB_QP_SQ_PSN) {
1536 qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_SQ_PSN; 1522 qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_SQ_PSN;
1537 qp->qplib_qp.sq.psn = qp_attr->sq_psn; 1523 qp->qplib_qp.sq.psn = qp_attr->sq_psn;
1538 } 1524 }
1539 if (qp_attr_mask & IB_QP_MAX_DEST_RD_ATOMIC) { 1525 if (qp_attr_mask & IB_QP_MAX_DEST_RD_ATOMIC) {
1526 if (qp_attr->max_dest_rd_atomic >
1527 dev_attr->max_qp_init_rd_atom) {
1528 dev_err(rdev_to_dev(rdev),
1529 "max_dest_rd_atomic requested%d is > dev_max%d",
1530 qp_attr->max_dest_rd_atomic,
1531 dev_attr->max_qp_init_rd_atom);
1532 return -EINVAL;
1533 }
1534
1540 qp->qplib_qp.modify_flags |= 1535 qp->qplib_qp.modify_flags |=
1541 CMDQ_MODIFY_QP_MODIFY_MASK_MAX_DEST_RD_ATOMIC; 1536 CMDQ_MODIFY_QP_MODIFY_MASK_MAX_DEST_RD_ATOMIC;
1542 qp->qplib_qp.max_dest_rd_atomic = qp_attr->max_dest_rd_atomic; 1537 qp->qplib_qp.max_dest_rd_atomic = qp_attr->max_dest_rd_atomic;
@@ -2403,7 +2398,7 @@ struct ib_cq *bnxt_re_create_cq(struct ib_device *ibdev,
2403 } 2398 }
2404 cq->qplib_cq.sghead = cq->umem->sg_head.sgl; 2399 cq->qplib_cq.sghead = cq->umem->sg_head.sgl;
2405 cq->qplib_cq.nmap = cq->umem->nmap; 2400 cq->qplib_cq.nmap = cq->umem->nmap;
2406 cq->qplib_cq.dpi = uctx->dpi; 2401 cq->qplib_cq.dpi = &uctx->dpi;
2407 } else { 2402 } else {
2408 cq->max_cql = min_t(u32, entries, MAX_CQL_PER_POLL); 2403 cq->max_cql = min_t(u32, entries, MAX_CQL_PER_POLL);
2409 cq->cql = kcalloc(cq->max_cql, sizeof(struct bnxt_qplib_cqe), 2404 cq->cql = kcalloc(cq->max_cql, sizeof(struct bnxt_qplib_cqe),
@@ -2905,6 +2900,7 @@ int bnxt_re_poll_cq(struct ib_cq *ib_cq, int num_entries, struct ib_wc *wc)
2905 2900
2906 spin_lock_irqsave(&cq->cq_lock, flags); 2901 spin_lock_irqsave(&cq->cq_lock, flags);
2907 budget = min_t(u32, num_entries, cq->max_cql); 2902 budget = min_t(u32, num_entries, cq->max_cql);
2903 num_entries = budget;
2908 if (!cq->cql) { 2904 if (!cq->cql) {
2909 dev_err(rdev_to_dev(cq->rdev), "POLL CQ : no CQL to use"); 2905 dev_err(rdev_to_dev(cq->rdev), "POLL CQ : no CQL to use");
2910 goto exit; 2906 goto exit;
@@ -3031,6 +3027,11 @@ int bnxt_re_req_notify_cq(struct ib_cq *ib_cq,
3031 else if (ib_cqn_flags & IB_CQ_SOLICITED) 3027 else if (ib_cqn_flags & IB_CQ_SOLICITED)
3032 type = DBR_DBR_TYPE_CQ_ARMSE; 3028 type = DBR_DBR_TYPE_CQ_ARMSE;
3033 3029
3030 /* Poll to see if there are missed events */
3031 if ((ib_cqn_flags & IB_CQ_REPORT_MISSED_EVENTS) &&
3032 !(bnxt_qplib_is_cq_empty(&cq->qplib_cq)))
3033 return 1;
3034
3034 bnxt_qplib_req_notify_cq(&cq->qplib_cq, type); 3035 bnxt_qplib_req_notify_cq(&cq->qplib_cq, type);
3035 3036
3036 return 0; 3037 return 0;
@@ -3245,6 +3246,12 @@ struct ib_mr *bnxt_re_reg_user_mr(struct ib_pd *ib_pd, u64 start, u64 length,
3245 struct scatterlist *sg; 3246 struct scatterlist *sg;
3246 int entry; 3247 int entry;
3247 3248
3249 if (length > BNXT_RE_MAX_MR_SIZE) {
3250 dev_err(rdev_to_dev(rdev), "MR Size: %lld > Max supported:%ld\n",
3251 length, BNXT_RE_MAX_MR_SIZE);
3252 return ERR_PTR(-ENOMEM);
3253 }
3254
3248 mr = kzalloc(sizeof(*mr), GFP_KERNEL); 3255 mr = kzalloc(sizeof(*mr), GFP_KERNEL);
3249 if (!mr) 3256 if (!mr)
3250 return ERR_PTR(-ENOMEM); 3257 return ERR_PTR(-ENOMEM);
@@ -3388,8 +3395,26 @@ int bnxt_re_dealloc_ucontext(struct ib_ucontext *ib_uctx)
3388 struct bnxt_re_ucontext *uctx = container_of(ib_uctx, 3395 struct bnxt_re_ucontext *uctx = container_of(ib_uctx,
3389 struct bnxt_re_ucontext, 3396 struct bnxt_re_ucontext,
3390 ib_uctx); 3397 ib_uctx);
3398
3399 struct bnxt_re_dev *rdev = uctx->rdev;
3400 int rc = 0;
3401
3391 if (uctx->shpg) 3402 if (uctx->shpg)
3392 free_page((unsigned long)uctx->shpg); 3403 free_page((unsigned long)uctx->shpg);
3404
3405 if (uctx->dpi.dbr) {
3406 /* Free DPI only if this is the first PD allocated by the
3407 * application and mark the context dpi as NULL
3408 */
3409 rc = bnxt_qplib_dealloc_dpi(&rdev->qplib_res,
3410 &rdev->qplib_res.dpi_tbl,
3411 &uctx->dpi);
3412 if (rc)
3413 dev_err(rdev_to_dev(rdev), "Deallocte HW DPI failed!");
3414 /* Don't fail, continue*/
3415 uctx->dpi.dbr = NULL;
3416 }
3417
3393 kfree(uctx); 3418 kfree(uctx);
3394 return 0; 3419 return 0;
3395} 3420}
diff --git a/drivers/infiniband/hw/bnxt_re/ib_verbs.h b/drivers/infiniband/hw/bnxt_re/ib_verbs.h
index 6c160f6a5398..a0bb7e33d7ca 100644
--- a/drivers/infiniband/hw/bnxt_re/ib_verbs.h
+++ b/drivers/infiniband/hw/bnxt_re/ib_verbs.h
@@ -59,7 +59,6 @@ struct bnxt_re_pd {
59 struct bnxt_re_dev *rdev; 59 struct bnxt_re_dev *rdev;
60 struct ib_pd ib_pd; 60 struct ib_pd ib_pd;
61 struct bnxt_qplib_pd qplib_pd; 61 struct bnxt_qplib_pd qplib_pd;
62 struct bnxt_qplib_dpi dpi;
63 struct bnxt_re_fence_data fence; 62 struct bnxt_re_fence_data fence;
64}; 63};
65 64
@@ -127,7 +126,7 @@ struct bnxt_re_mw {
127struct bnxt_re_ucontext { 126struct bnxt_re_ucontext {
128 struct bnxt_re_dev *rdev; 127 struct bnxt_re_dev *rdev;
129 struct ib_ucontext ib_uctx; 128 struct ib_ucontext ib_uctx;
130 struct bnxt_qplib_dpi *dpi; 129 struct bnxt_qplib_dpi dpi;
131 void *shpg; 130 void *shpg;
132 spinlock_t sh_lock; /* protect shpg */ 131 spinlock_t sh_lock; /* protect shpg */
133}; 132};
diff --git a/drivers/infiniband/hw/bnxt_re/main.c b/drivers/infiniband/hw/bnxt_re/main.c
index 1fce5e73216b..ceae2d92fb08 100644
--- a/drivers/infiniband/hw/bnxt_re/main.c
+++ b/drivers/infiniband/hw/bnxt_re/main.c
@@ -333,6 +333,7 @@ static int bnxt_re_net_stats_ctx_alloc(struct bnxt_re_dev *rdev,
333 bnxt_re_init_hwrm_hdr(rdev, (void *)&req, HWRM_STAT_CTX_ALLOC, -1, -1); 333 bnxt_re_init_hwrm_hdr(rdev, (void *)&req, HWRM_STAT_CTX_ALLOC, -1, -1);
334 req.update_period_ms = cpu_to_le32(1000); 334 req.update_period_ms = cpu_to_le32(1000);
335 req.stats_dma_addr = cpu_to_le64(dma_map); 335 req.stats_dma_addr = cpu_to_le64(dma_map);
336 req.stat_ctx_flags = STAT_CTX_ALLOC_REQ_STAT_CTX_FLAGS_ROCE;
336 bnxt_re_fill_fw_msg(&fw_msg, (void *)&req, sizeof(req), (void *)&resp, 337 bnxt_re_fill_fw_msg(&fw_msg, (void *)&req, sizeof(req), (void *)&resp,
337 sizeof(resp), DFLT_HWRM_CMD_TIMEOUT); 338 sizeof(resp), DFLT_HWRM_CMD_TIMEOUT);
338 rc = en_dev->en_ops->bnxt_send_fw_msg(en_dev, BNXT_ROCE_ULP, &fw_msg); 339 rc = en_dev->en_ops->bnxt_send_fw_msg(en_dev, BNXT_ROCE_ULP, &fw_msg);
diff --git a/drivers/infiniband/hw/bnxt_re/qplib_fp.c b/drivers/infiniband/hw/bnxt_re/qplib_fp.c
index f05500bcdcf1..9af1514e5944 100644
--- a/drivers/infiniband/hw/bnxt_re/qplib_fp.c
+++ b/drivers/infiniband/hw/bnxt_re/qplib_fp.c
@@ -1128,6 +1128,11 @@ int bnxt_qplib_post_send(struct bnxt_qplib_qp *qp,
1128 } 1128 }
1129 /* Each SGE entry = 1 WQE size16 */ 1129 /* Each SGE entry = 1 WQE size16 */
1130 wqe_size16 = wqe->num_sge; 1130 wqe_size16 = wqe->num_sge;
1131 /* HW requires wqe size has room for atleast one SGE even if
1132 * none was supplied by ULP
1133 */
1134 if (!wqe->num_sge)
1135 wqe_size16++;
1131 } 1136 }
1132 1137
1133 /* Specifics */ 1138 /* Specifics */
@@ -1364,6 +1369,11 @@ int bnxt_qplib_post_recv(struct bnxt_qplib_qp *qp,
1364 rqe->flags = wqe->flags; 1369 rqe->flags = wqe->flags;
1365 rqe->wqe_size = wqe->num_sge + 1370 rqe->wqe_size = wqe->num_sge +
1366 ((offsetof(typeof(*rqe), data) + 15) >> 4); 1371 ((offsetof(typeof(*rqe), data) + 15) >> 4);
1372 /* HW requires wqe size has room for atleast one SGE even if none
1373 * was supplied by ULP
1374 */
1375 if (!wqe->num_sge)
1376 rqe->wqe_size++;
1367 1377
1368 /* Supply the rqe->wr_id index to the wr_id_tbl for now */ 1378 /* Supply the rqe->wr_id index to the wr_id_tbl for now */
1369 rqe->wr_id[0] = cpu_to_le32(sw_prod); 1379 rqe->wr_id[0] = cpu_to_le32(sw_prod);
@@ -1885,6 +1895,25 @@ flush_rq:
1885 return rc; 1895 return rc;
1886} 1896}
1887 1897
1898bool bnxt_qplib_is_cq_empty(struct bnxt_qplib_cq *cq)
1899{
1900 struct cq_base *hw_cqe, **hw_cqe_ptr;
1901 unsigned long flags;
1902 u32 sw_cons, raw_cons;
1903 bool rc = true;
1904
1905 spin_lock_irqsave(&cq->hwq.lock, flags);
1906 raw_cons = cq->hwq.cons;
1907 sw_cons = HWQ_CMP(raw_cons, &cq->hwq);
1908 hw_cqe_ptr = (struct cq_base **)cq->hwq.pbl_ptr;
1909 hw_cqe = &hw_cqe_ptr[CQE_PG(sw_cons)][CQE_IDX(sw_cons)];
1910
1911 /* Check for Valid bit. If the CQE is valid, return false */
1912 rc = !CQE_CMP_VALID(hw_cqe, raw_cons, cq->hwq.max_elements);
1913 spin_unlock_irqrestore(&cq->hwq.lock, flags);
1914 return rc;
1915}
1916
1888static int bnxt_qplib_cq_process_res_raweth_qp1(struct bnxt_qplib_cq *cq, 1917static int bnxt_qplib_cq_process_res_raweth_qp1(struct bnxt_qplib_cq *cq,
1889 struct cq_res_raweth_qp1 *hwcqe, 1918 struct cq_res_raweth_qp1 *hwcqe,
1890 struct bnxt_qplib_cqe **pcqe, 1919 struct bnxt_qplib_cqe **pcqe,
diff --git a/drivers/infiniband/hw/bnxt_re/qplib_fp.h b/drivers/infiniband/hw/bnxt_re/qplib_fp.h
index 36b7b7db0e3f..19176e06c98a 100644
--- a/drivers/infiniband/hw/bnxt_re/qplib_fp.h
+++ b/drivers/infiniband/hw/bnxt_re/qplib_fp.h
@@ -449,6 +449,7 @@ int bnxt_qplib_create_cq(struct bnxt_qplib_res *res, struct bnxt_qplib_cq *cq);
449int bnxt_qplib_destroy_cq(struct bnxt_qplib_res *res, struct bnxt_qplib_cq *cq); 449int bnxt_qplib_destroy_cq(struct bnxt_qplib_res *res, struct bnxt_qplib_cq *cq);
450int bnxt_qplib_poll_cq(struct bnxt_qplib_cq *cq, struct bnxt_qplib_cqe *cqe, 450int bnxt_qplib_poll_cq(struct bnxt_qplib_cq *cq, struct bnxt_qplib_cqe *cqe,
451 int num, struct bnxt_qplib_qp **qp); 451 int num, struct bnxt_qplib_qp **qp);
452bool bnxt_qplib_is_cq_empty(struct bnxt_qplib_cq *cq);
452void bnxt_qplib_req_notify_cq(struct bnxt_qplib_cq *cq, u32 arm_type); 453void bnxt_qplib_req_notify_cq(struct bnxt_qplib_cq *cq, u32 arm_type);
453void bnxt_qplib_free_nq(struct bnxt_qplib_nq *nq); 454void bnxt_qplib_free_nq(struct bnxt_qplib_nq *nq);
454int bnxt_qplib_alloc_nq(struct pci_dev *pdev, struct bnxt_qplib_nq *nq); 455int bnxt_qplib_alloc_nq(struct pci_dev *pdev, struct bnxt_qplib_nq *nq);
diff --git a/drivers/infiniband/hw/bnxt_re/qplib_sp.c b/drivers/infiniband/hw/bnxt_re/qplib_sp.c
index fde18cf0e406..ef91ab786dd4 100644
--- a/drivers/infiniband/hw/bnxt_re/qplib_sp.c
+++ b/drivers/infiniband/hw/bnxt_re/qplib_sp.c
@@ -51,6 +51,19 @@ const struct bnxt_qplib_gid bnxt_qplib_gid_zero = {{ 0, 0, 0, 0, 0, 0, 0, 0,
51 0, 0, 0, 0, 0, 0, 0, 0 } }; 51 0, 0, 0, 0, 0, 0, 0, 0 } };
52 52
53/* Device */ 53/* Device */
54
55static bool bnxt_qplib_is_atomic_cap(struct bnxt_qplib_rcfw *rcfw)
56{
57 int rc;
58 u16 pcie_ctl2;
59
60 rc = pcie_capability_read_word(rcfw->pdev, PCI_EXP_DEVCTL2,
61 &pcie_ctl2);
62 if (rc)
63 return false;
64 return !!(pcie_ctl2 & PCI_EXP_DEVCTL2_ATOMIC_REQ);
65}
66
54int bnxt_qplib_get_dev_attr(struct bnxt_qplib_rcfw *rcfw, 67int bnxt_qplib_get_dev_attr(struct bnxt_qplib_rcfw *rcfw,
55 struct bnxt_qplib_dev_attr *attr) 68 struct bnxt_qplib_dev_attr *attr)
56{ 69{
@@ -81,6 +94,8 @@ int bnxt_qplib_get_dev_attr(struct bnxt_qplib_rcfw *rcfw,
81 94
82 /* Extract the context from the side buffer */ 95 /* Extract the context from the side buffer */
83 attr->max_qp = le32_to_cpu(sb->max_qp); 96 attr->max_qp = le32_to_cpu(sb->max_qp);
97 /* max_qp value reported by FW for PF doesn't include the QP1 for PF */
98 attr->max_qp += 1;
84 attr->max_qp_rd_atom = 99 attr->max_qp_rd_atom =
85 sb->max_qp_rd_atom > BNXT_QPLIB_MAX_OUT_RD_ATOM ? 100 sb->max_qp_rd_atom > BNXT_QPLIB_MAX_OUT_RD_ATOM ?
86 BNXT_QPLIB_MAX_OUT_RD_ATOM : sb->max_qp_rd_atom; 101 BNXT_QPLIB_MAX_OUT_RD_ATOM : sb->max_qp_rd_atom;
@@ -129,6 +144,7 @@ int bnxt_qplib_get_dev_attr(struct bnxt_qplib_rcfw *rcfw,
129 attr->tqm_alloc_reqs[i * 4 + 3] = *(++tqm_alloc); 144 attr->tqm_alloc_reqs[i * 4 + 3] = *(++tqm_alloc);
130 } 145 }
131 146
147 attr->is_atomic = bnxt_qplib_is_atomic_cap(rcfw);
132bail: 148bail:
133 bnxt_qplib_rcfw_free_sbuf(rcfw, sbuf); 149 bnxt_qplib_rcfw_free_sbuf(rcfw, sbuf);
134 return rc; 150 return rc;
diff --git a/drivers/infiniband/hw/bnxt_re/qplib_sp.h b/drivers/infiniband/hw/bnxt_re/qplib_sp.h
index a543f959098b..2ce7e2a32cf0 100644
--- a/drivers/infiniband/hw/bnxt_re/qplib_sp.h
+++ b/drivers/infiniband/hw/bnxt_re/qplib_sp.h
@@ -42,6 +42,8 @@
42 42
43#define BNXT_QPLIB_RESERVED_QP_WRS 128 43#define BNXT_QPLIB_RESERVED_QP_WRS 128
44 44
45#define PCI_EXP_DEVCTL2_ATOMIC_REQ 0x0040
46
45struct bnxt_qplib_dev_attr { 47struct bnxt_qplib_dev_attr {
46 char fw_ver[32]; 48 char fw_ver[32];
47 u16 max_sgid; 49 u16 max_sgid;
@@ -70,6 +72,7 @@ struct bnxt_qplib_dev_attr {
70 u32 max_inline_data; 72 u32 max_inline_data;
71 u32 l2_db_size; 73 u32 l2_db_size;
72 u8 tqm_alloc_reqs[MAX_TQM_ALLOC_REQ]; 74 u8 tqm_alloc_reqs[MAX_TQM_ALLOC_REQ];
75 bool is_atomic;
73}; 76};
74 77
75struct bnxt_qplib_pd { 78struct bnxt_qplib_pd {
diff --git a/drivers/infiniband/hw/cxgb3/iwch_provider.c b/drivers/infiniband/hw/cxgb3/iwch_provider.c
index 29d30744d6c9..0cd0c1fa27d4 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_provider.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_provider.c
@@ -718,7 +718,7 @@ static struct ib_mr *iwch_alloc_mr(struct ib_pd *pd,
718 struct iwch_mr *mhp; 718 struct iwch_mr *mhp;
719 u32 mmid; 719 u32 mmid;
720 u32 stag = 0; 720 u32 stag = 0;
721 int ret = 0; 721 int ret = -ENOMEM;
722 722
723 if (mr_type != IB_MR_TYPE_MEM_REG || 723 if (mr_type != IB_MR_TYPE_MEM_REG ||
724 max_num_sg > T3_MAX_FASTREG_DEPTH) 724 max_num_sg > T3_MAX_FASTREG_DEPTH)
@@ -731,10 +731,8 @@ static struct ib_mr *iwch_alloc_mr(struct ib_pd *pd,
731 goto err; 731 goto err;
732 732
733 mhp->pages = kcalloc(max_num_sg, sizeof(u64), GFP_KERNEL); 733 mhp->pages = kcalloc(max_num_sg, sizeof(u64), GFP_KERNEL);
734 if (!mhp->pages) { 734 if (!mhp->pages)
735 ret = -ENOMEM;
736 goto pl_err; 735 goto pl_err;
737 }
738 736
739 mhp->rhp = rhp; 737 mhp->rhp = rhp;
740 ret = iwch_alloc_pbl(mhp, max_num_sg); 738 ret = iwch_alloc_pbl(mhp, max_num_sg);
@@ -751,7 +749,8 @@ static struct ib_mr *iwch_alloc_mr(struct ib_pd *pd,
751 mhp->attr.state = 1; 749 mhp->attr.state = 1;
752 mmid = (stag) >> 8; 750 mmid = (stag) >> 8;
753 mhp->ibmr.rkey = mhp->ibmr.lkey = stag; 751 mhp->ibmr.rkey = mhp->ibmr.lkey = stag;
754 if (insert_handle(rhp, &rhp->mmidr, mhp, mmid)) 752 ret = insert_handle(rhp, &rhp->mmidr, mhp, mmid);
753 if (ret)
755 goto err3; 754 goto err3;
756 755
757 pr_debug("%s mmid 0x%x mhp %p stag 0x%x\n", __func__, mmid, mhp, stag); 756 pr_debug("%s mmid 0x%x mhp %p stag 0x%x\n", __func__, mmid, mhp, stag);
diff --git a/drivers/infiniband/hw/cxgb4/cq.c b/drivers/infiniband/hw/cxgb4/cq.c
index e16fcaf6b5a3..be07da1997e6 100644
--- a/drivers/infiniband/hw/cxgb4/cq.c
+++ b/drivers/infiniband/hw/cxgb4/cq.c
@@ -963,6 +963,7 @@ struct ib_cq *c4iw_create_cq(struct ib_device *ibdev,
963 goto err3; 963 goto err3;
964 964
965 if (ucontext) { 965 if (ucontext) {
966 ret = -ENOMEM;
966 mm = kmalloc(sizeof *mm, GFP_KERNEL); 967 mm = kmalloc(sizeof *mm, GFP_KERNEL);
967 if (!mm) 968 if (!mm)
968 goto err4; 969 goto err4;
diff --git a/drivers/infiniband/hw/cxgb4/mem.c b/drivers/infiniband/hw/cxgb4/mem.c
index 5332f06b99ba..c2fba76becd4 100644
--- a/drivers/infiniband/hw/cxgb4/mem.c
+++ b/drivers/infiniband/hw/cxgb4/mem.c
@@ -661,7 +661,7 @@ struct ib_mr *c4iw_alloc_mr(struct ib_pd *pd,
661 rhp = php->rhp; 661 rhp = php->rhp;
662 662
663 if (mr_type != IB_MR_TYPE_MEM_REG || 663 if (mr_type != IB_MR_TYPE_MEM_REG ||
664 max_num_sg > t4_max_fr_depth(&rhp->rdev.lldi.ulptx_memwrite_dsgl && 664 max_num_sg > t4_max_fr_depth(rhp->rdev.lldi.ulptx_memwrite_dsgl &&
665 use_dsgl)) 665 use_dsgl))
666 return ERR_PTR(-EINVAL); 666 return ERR_PTR(-EINVAL);
667 667
diff --git a/drivers/infiniband/hw/cxgb4/qp.c b/drivers/infiniband/hw/cxgb4/qp.c
index bfc77596acbe..cb7fc0d35d1d 100644
--- a/drivers/infiniband/hw/cxgb4/qp.c
+++ b/drivers/infiniband/hw/cxgb4/qp.c
@@ -569,7 +569,7 @@ static int build_rdma_read(union t4_wr *wqe, struct ib_send_wr *wr, u8 *len16)
569{ 569{
570 if (wr->num_sge > 1) 570 if (wr->num_sge > 1)
571 return -EINVAL; 571 return -EINVAL;
572 if (wr->num_sge) { 572 if (wr->num_sge && wr->sg_list[0].length) {
573 wqe->read.stag_src = cpu_to_be32(rdma_wr(wr)->rkey); 573 wqe->read.stag_src = cpu_to_be32(rdma_wr(wr)->rkey);
574 wqe->read.to_src_hi = cpu_to_be32((u32)(rdma_wr(wr)->remote_addr 574 wqe->read.to_src_hi = cpu_to_be32((u32)(rdma_wr(wr)->remote_addr
575 >> 32)); 575 >> 32));
diff --git a/drivers/infiniband/hw/hfi1/chip.c b/drivers/infiniband/hw/hfi1/chip.c
index 2ba00b89df6a..94b54850ec75 100644
--- a/drivers/infiniband/hw/hfi1/chip.c
+++ b/drivers/infiniband/hw/hfi1/chip.c
@@ -12847,7 +12847,12 @@ static void remap_intr(struct hfi1_devdata *dd, int isrc, int msix_intr)
12847 /* clear from the handled mask of the general interrupt */ 12847 /* clear from the handled mask of the general interrupt */
12848 m = isrc / 64; 12848 m = isrc / 64;
12849 n = isrc % 64; 12849 n = isrc % 64;
12850 dd->gi_mask[m] &= ~((u64)1 << n); 12850 if (likely(m < CCE_NUM_INT_CSRS)) {
12851 dd->gi_mask[m] &= ~((u64)1 << n);
12852 } else {
12853 dd_dev_err(dd, "remap interrupt err\n");
12854 return;
12855 }
12851 12856
12852 /* direct the chip source to the given MSI-X interrupt */ 12857 /* direct the chip source to the given MSI-X interrupt */
12853 m = isrc / 8; 12858 m = isrc / 8;
diff --git a/drivers/infiniband/hw/hfi1/qp.c b/drivers/infiniband/hw/hfi1/qp.c
index 650305cc0373..1a7af9f60c13 100644
--- a/drivers/infiniband/hw/hfi1/qp.c
+++ b/drivers/infiniband/hw/hfi1/qp.c
@@ -647,18 +647,17 @@ void qp_iter_print(struct seq_file *s, struct qp_iter *iter)
647 qp->pid); 647 qp->pid);
648} 648}
649 649
650void *qp_priv_alloc(struct rvt_dev_info *rdi, struct rvt_qp *qp, 650void *qp_priv_alloc(struct rvt_dev_info *rdi, struct rvt_qp *qp)
651 gfp_t gfp)
652{ 651{
653 struct hfi1_qp_priv *priv; 652 struct hfi1_qp_priv *priv;
654 653
655 priv = kzalloc_node(sizeof(*priv), gfp, rdi->dparms.node); 654 priv = kzalloc_node(sizeof(*priv), GFP_KERNEL, rdi->dparms.node);
656 if (!priv) 655 if (!priv)
657 return ERR_PTR(-ENOMEM); 656 return ERR_PTR(-ENOMEM);
658 657
659 priv->owner = qp; 658 priv->owner = qp;
660 659
661 priv->s_ahg = kzalloc_node(sizeof(*priv->s_ahg), gfp, 660 priv->s_ahg = kzalloc_node(sizeof(*priv->s_ahg), GFP_KERNEL,
662 rdi->dparms.node); 661 rdi->dparms.node);
663 if (!priv->s_ahg) { 662 if (!priv->s_ahg) {
664 kfree(priv); 663 kfree(priv);
diff --git a/drivers/infiniband/hw/hfi1/qp.h b/drivers/infiniband/hw/hfi1/qp.h
index 1eb9cd7b8c19..6fe542b6a927 100644
--- a/drivers/infiniband/hw/hfi1/qp.h
+++ b/drivers/infiniband/hw/hfi1/qp.h
@@ -123,8 +123,7 @@ void hfi1_migrate_qp(struct rvt_qp *qp);
123/* 123/*
124 * Functions provided by hfi1 driver for rdmavt to use 124 * Functions provided by hfi1 driver for rdmavt to use
125 */ 125 */
126void *qp_priv_alloc(struct rvt_dev_info *rdi, struct rvt_qp *qp, 126void *qp_priv_alloc(struct rvt_dev_info *rdi, struct rvt_qp *qp);
127 gfp_t gfp);
128void qp_priv_free(struct rvt_dev_info *rdi, struct rvt_qp *qp); 127void qp_priv_free(struct rvt_dev_info *rdi, struct rvt_qp *qp);
129unsigned free_all_qps(struct rvt_dev_info *rdi); 128unsigned free_all_qps(struct rvt_dev_info *rdi);
130void notify_qp_reset(struct rvt_qp *qp); 129void notify_qp_reset(struct rvt_qp *qp);
diff --git a/drivers/infiniband/hw/hns/hns_roce_ah.c b/drivers/infiniband/hw/hns/hns_roce_ah.c
index f78a733a63ec..d545302b8ef8 100644
--- a/drivers/infiniband/hw/hns/hns_roce_ah.c
+++ b/drivers/infiniband/hw/hns/hns_roce_ah.c
@@ -64,8 +64,10 @@ struct ib_ah *hns_roce_create_ah(struct ib_pd *ibpd,
64 } else { 64 } else {
65 u8 *dmac = rdma_ah_retrieve_dmac(ah_attr); 65 u8 *dmac = rdma_ah_retrieve_dmac(ah_attr);
66 66
67 if (!dmac) 67 if (!dmac) {
68 kfree(ah);
68 return ERR_PTR(-EINVAL); 69 return ERR_PTR(-EINVAL);
70 }
69 memcpy(ah->av.mac, dmac, ETH_ALEN); 71 memcpy(ah->av.mac, dmac, ETH_ALEN);
70 } 72 }
71 73
diff --git a/drivers/infiniband/hw/hns/hns_roce_hw_v1.c b/drivers/infiniband/hw/hns/hns_roce_hw_v1.c
index 37d5d29597a4..2540b65e242c 100644
--- a/drivers/infiniband/hw/hns/hns_roce_hw_v1.c
+++ b/drivers/infiniband/hw/hns/hns_roce_hw_v1.c
@@ -228,14 +228,14 @@ int hns_roce_v1_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
228 switch (wr->opcode) { 228 switch (wr->opcode) {
229 case IB_WR_RDMA_READ: 229 case IB_WR_RDMA_READ:
230 ps_opcode = HNS_ROCE_WQE_OPCODE_RDMA_READ; 230 ps_opcode = HNS_ROCE_WQE_OPCODE_RDMA_READ;
231 set_raddr_seg(wqe, atomic_wr(wr)->remote_addr, 231 set_raddr_seg(wqe, rdma_wr(wr)->remote_addr,
232 atomic_wr(wr)->rkey); 232 rdma_wr(wr)->rkey);
233 break; 233 break;
234 case IB_WR_RDMA_WRITE: 234 case IB_WR_RDMA_WRITE:
235 case IB_WR_RDMA_WRITE_WITH_IMM: 235 case IB_WR_RDMA_WRITE_WITH_IMM:
236 ps_opcode = HNS_ROCE_WQE_OPCODE_RDMA_WRITE; 236 ps_opcode = HNS_ROCE_WQE_OPCODE_RDMA_WRITE;
237 set_raddr_seg(wqe, atomic_wr(wr)->remote_addr, 237 set_raddr_seg(wqe, rdma_wr(wr)->remote_addr,
238 atomic_wr(wr)->rkey); 238 rdma_wr(wr)->rkey);
239 break; 239 break;
240 case IB_WR_SEND: 240 case IB_WR_SEND:
241 case IB_WR_SEND_WITH_INV: 241 case IB_WR_SEND_WITH_INV:
@@ -661,9 +661,11 @@ static int hns_roce_v1_rsv_lp_qp(struct hns_roce_dev *hr_dev)
661 union ib_gid dgid; 661 union ib_gid dgid;
662 u64 subnet_prefix; 662 u64 subnet_prefix;
663 int attr_mask = 0; 663 int attr_mask = 0;
664 int i; 664 int i, j;
665 int ret; 665 int ret;
666 u8 queue_en[HNS_ROCE_V1_RESV_QP] = { 0 };
666 u8 phy_port; 667 u8 phy_port;
668 u8 port = 0;
667 u8 sl; 669 u8 sl;
668 670
669 priv = (struct hns_roce_v1_priv *)hr_dev->hw->priv; 671 priv = (struct hns_roce_v1_priv *)hr_dev->hw->priv;
@@ -709,27 +711,35 @@ static int hns_roce_v1_rsv_lp_qp(struct hns_roce_dev *hr_dev)
709 attr.rnr_retry = 7; 711 attr.rnr_retry = 7;
710 attr.timeout = 0x12; 712 attr.timeout = 0x12;
711 attr.path_mtu = IB_MTU_256; 713 attr.path_mtu = IB_MTU_256;
714 attr.ah_attr.type = RDMA_AH_ATTR_TYPE_ROCE;
712 rdma_ah_set_grh(&attr.ah_attr, NULL, 0, 0, 1, 0); 715 rdma_ah_set_grh(&attr.ah_attr, NULL, 0, 0, 1, 0);
713 rdma_ah_set_static_rate(&attr.ah_attr, 3); 716 rdma_ah_set_static_rate(&attr.ah_attr, 3);
714 717
715 subnet_prefix = cpu_to_be64(0xfe80000000000000LL); 718 subnet_prefix = cpu_to_be64(0xfe80000000000000LL);
716 for (i = 0; i < HNS_ROCE_V1_RESV_QP; i++) { 719 for (i = 0; i < HNS_ROCE_V1_RESV_QP; i++) {
720 phy_port = (i >= HNS_ROCE_MAX_PORTS) ? (i - 2) :
721 (i % HNS_ROCE_MAX_PORTS);
722 sl = i / HNS_ROCE_MAX_PORTS;
723
724 for (j = 0; j < caps->num_ports; j++) {
725 if (hr_dev->iboe.phy_port[j] == phy_port) {
726 queue_en[i] = 1;
727 port = j;
728 break;
729 }
730 }
731
732 if (!queue_en[i])
733 continue;
734
717 free_mr->mr_free_qp[i] = hns_roce_v1_create_lp_qp(hr_dev, pd); 735 free_mr->mr_free_qp[i] = hns_roce_v1_create_lp_qp(hr_dev, pd);
718 if (IS_ERR(free_mr->mr_free_qp[i])) { 736 if (!free_mr->mr_free_qp[i]) {
719 dev_err(dev, "Create loop qp failed!\n"); 737 dev_err(dev, "Create loop qp failed!\n");
720 goto create_lp_qp_failed; 738 goto create_lp_qp_failed;
721 } 739 }
722 hr_qp = free_mr->mr_free_qp[i]; 740 hr_qp = free_mr->mr_free_qp[i];
723 741
724 sl = i / caps->num_ports; 742 hr_qp->port = port;
725
726 if (caps->num_ports == HNS_ROCE_MAX_PORTS)
727 phy_port = (i >= HNS_ROCE_MAX_PORTS) ? (i - 2) :
728 (i % caps->num_ports);
729 else
730 phy_port = i % caps->num_ports;
731
732 hr_qp->port = phy_port + 1;
733 hr_qp->phy_port = phy_port; 743 hr_qp->phy_port = phy_port;
734 hr_qp->ibqp.qp_type = IB_QPT_RC; 744 hr_qp->ibqp.qp_type = IB_QPT_RC;
735 hr_qp->ibqp.device = &hr_dev->ib_dev; 745 hr_qp->ibqp.device = &hr_dev->ib_dev;
@@ -739,23 +749,22 @@ static int hns_roce_v1_rsv_lp_qp(struct hns_roce_dev *hr_dev)
739 hr_qp->ibqp.recv_cq = cq; 749 hr_qp->ibqp.recv_cq = cq;
740 hr_qp->ibqp.send_cq = cq; 750 hr_qp->ibqp.send_cq = cq;
741 751
742 rdma_ah_set_port_num(&attr.ah_attr, phy_port + 1); 752 rdma_ah_set_port_num(&attr.ah_attr, port + 1);
743 rdma_ah_set_sl(&attr.ah_attr, phy_port + 1); 753 rdma_ah_set_sl(&attr.ah_attr, sl);
744 attr.port_num = phy_port + 1; 754 attr.port_num = port + 1;
745 755
746 attr.dest_qp_num = hr_qp->qpn; 756 attr.dest_qp_num = hr_qp->qpn;
747 memcpy(rdma_ah_retrieve_dmac(&attr.ah_attr), 757 memcpy(rdma_ah_retrieve_dmac(&attr.ah_attr),
748 hr_dev->dev_addr[phy_port], 758 hr_dev->dev_addr[port],
749 MAC_ADDR_OCTET_NUM); 759 MAC_ADDR_OCTET_NUM);
750 760
751 memcpy(&dgid.raw, &subnet_prefix, sizeof(u64)); 761 memcpy(&dgid.raw, &subnet_prefix, sizeof(u64));
752 memcpy(&dgid.raw[8], hr_dev->dev_addr[phy_port], 3); 762 memcpy(&dgid.raw[8], hr_dev->dev_addr[port], 3);
753 memcpy(&dgid.raw[13], hr_dev->dev_addr[phy_port] + 3, 3); 763 memcpy(&dgid.raw[13], hr_dev->dev_addr[port] + 3, 3);
754 dgid.raw[11] = 0xff; 764 dgid.raw[11] = 0xff;
755 dgid.raw[12] = 0xfe; 765 dgid.raw[12] = 0xfe;
756 dgid.raw[8] ^= 2; 766 dgid.raw[8] ^= 2;
757 rdma_ah_set_dgid_raw(&attr.ah_attr, dgid.raw); 767 rdma_ah_set_dgid_raw(&attr.ah_attr, dgid.raw);
758 attr_mask |= IB_QP_PORT;
759 768
760 ret = hr_dev->hw->modify_qp(&hr_qp->ibqp, &attr, attr_mask, 769 ret = hr_dev->hw->modify_qp(&hr_qp->ibqp, &attr, attr_mask,
761 IB_QPS_RESET, IB_QPS_INIT); 770 IB_QPS_RESET, IB_QPS_INIT);
@@ -812,6 +821,9 @@ static void hns_roce_v1_release_lp_qp(struct hns_roce_dev *hr_dev)
812 821
813 for (i = 0; i < HNS_ROCE_V1_RESV_QP; i++) { 822 for (i = 0; i < HNS_ROCE_V1_RESV_QP; i++) {
814 hr_qp = free_mr->mr_free_qp[i]; 823 hr_qp = free_mr->mr_free_qp[i];
824 if (!hr_qp)
825 continue;
826
815 ret = hns_roce_v1_destroy_qp(&hr_qp->ibqp); 827 ret = hns_roce_v1_destroy_qp(&hr_qp->ibqp);
816 if (ret) 828 if (ret)
817 dev_err(dev, "Destroy qp %d for mr free failed(%d)!\n", 829 dev_err(dev, "Destroy qp %d for mr free failed(%d)!\n",
@@ -963,7 +975,7 @@ static void hns_roce_v1_mr_free_work_fn(struct work_struct *work)
963 msecs_to_jiffies(HNS_ROCE_V1_FREE_MR_TIMEOUT_MSECS) + jiffies; 975 msecs_to_jiffies(HNS_ROCE_V1_FREE_MR_TIMEOUT_MSECS) + jiffies;
964 int i; 976 int i;
965 int ret; 977 int ret;
966 int ne; 978 int ne = 0;
967 979
968 mr_work = container_of(work, struct hns_roce_mr_free_work, work); 980 mr_work = container_of(work, struct hns_roce_mr_free_work, work);
969 hr_mr = (struct hns_roce_mr *)mr_work->mr; 981 hr_mr = (struct hns_roce_mr *)mr_work->mr;
@@ -976,6 +988,10 @@ static void hns_roce_v1_mr_free_work_fn(struct work_struct *work)
976 988
977 for (i = 0; i < HNS_ROCE_V1_RESV_QP; i++) { 989 for (i = 0; i < HNS_ROCE_V1_RESV_QP; i++) {
978 hr_qp = free_mr->mr_free_qp[i]; 990 hr_qp = free_mr->mr_free_qp[i];
991 if (!hr_qp)
992 continue;
993 ne++;
994
979 ret = hns_roce_v1_send_lp_wqe(hr_qp); 995 ret = hns_roce_v1_send_lp_wqe(hr_qp);
980 if (ret) { 996 if (ret) {
981 dev_err(dev, 997 dev_err(dev,
@@ -985,7 +1001,6 @@ static void hns_roce_v1_mr_free_work_fn(struct work_struct *work)
985 } 1001 }
986 } 1002 }
987 1003
988 ne = HNS_ROCE_V1_RESV_QP;
989 do { 1004 do {
990 ret = hns_roce_v1_poll_cq(&mr_free_cq->ib_cq, ne, wc); 1005 ret = hns_roce_v1_poll_cq(&mr_free_cq->ib_cq, ne, wc);
991 if (ret < 0) { 1006 if (ret < 0) {
@@ -995,7 +1010,8 @@ static void hns_roce_v1_mr_free_work_fn(struct work_struct *work)
995 goto free_work; 1010 goto free_work;
996 } 1011 }
997 ne -= ret; 1012 ne -= ret;
998 msleep(HNS_ROCE_V1_FREE_MR_WAIT_VALUE); 1013 usleep_range(HNS_ROCE_V1_FREE_MR_WAIT_VALUE * 1000,
1014 (1 + HNS_ROCE_V1_FREE_MR_WAIT_VALUE) * 1000);
999 } while (ne && time_before_eq(jiffies, end)); 1015 } while (ne && time_before_eq(jiffies, end));
1000 1016
1001 if (ne != 0) 1017 if (ne != 0)
@@ -2181,7 +2197,7 @@ static int hns_roce_v1_poll_one(struct hns_roce_cq *hr_cq,
2181 } 2197 }
2182 wc->wr_id = wq->wrid[wq->tail & (wq->wqe_cnt - 1)]; 2198 wc->wr_id = wq->wrid[wq->tail & (wq->wqe_cnt - 1)];
2183 ++wq->tail; 2199 ++wq->tail;
2184 } else { 2200 } else {
2185 /* RQ conrespond to CQE */ 2201 /* RQ conrespond to CQE */
2186 wc->byte_len = le32_to_cpu(cqe->byte_cnt); 2202 wc->byte_len = le32_to_cpu(cqe->byte_cnt);
2187 opcode = roce_get_field(cqe->cqe_byte_4, 2203 opcode = roce_get_field(cqe->cqe_byte_4,
@@ -3533,10 +3549,12 @@ static int check_qp_db_process_status(struct hns_roce_dev *hr_dev,
3533 old_cnt = roce_get_field(old_send, 3549 old_cnt = roce_get_field(old_send,
3534 ROCEE_SDB_SEND_PTR_SDB_SEND_PTR_M, 3550 ROCEE_SDB_SEND_PTR_SDB_SEND_PTR_M,
3535 ROCEE_SDB_SEND_PTR_SDB_SEND_PTR_S); 3551 ROCEE_SDB_SEND_PTR_SDB_SEND_PTR_S);
3536 if (cur_cnt - old_cnt > SDB_ST_CMP_VAL) 3552 if (cur_cnt - old_cnt >
3553 SDB_ST_CMP_VAL) {
3537 success_flags = 1; 3554 success_flags = 1;
3538 else { 3555 } else {
3539 send_ptr = roce_get_field(old_send, 3556 send_ptr =
3557 roce_get_field(old_send,
3540 ROCEE_SDB_SEND_PTR_SDB_SEND_PTR_M, 3558 ROCEE_SDB_SEND_PTR_SDB_SEND_PTR_M,
3541 ROCEE_SDB_SEND_PTR_SDB_SEND_PTR_S) + 3559 ROCEE_SDB_SEND_PTR_SDB_SEND_PTR_S) +
3542 roce_get_field(sdb_retry_cnt, 3560 roce_get_field(sdb_retry_cnt,
@@ -3641,6 +3659,7 @@ static void hns_roce_v1_destroy_qp_work_fn(struct work_struct *work)
3641 struct hns_roce_dev *hr_dev; 3659 struct hns_roce_dev *hr_dev;
3642 struct hns_roce_qp *hr_qp; 3660 struct hns_roce_qp *hr_qp;
3643 struct device *dev; 3661 struct device *dev;
3662 unsigned long qpn;
3644 int ret; 3663 int ret;
3645 3664
3646 qp_work_entry = container_of(work, struct hns_roce_qp_work, work); 3665 qp_work_entry = container_of(work, struct hns_roce_qp_work, work);
@@ -3648,8 +3667,9 @@ static void hns_roce_v1_destroy_qp_work_fn(struct work_struct *work)
3648 dev = &hr_dev->pdev->dev; 3667 dev = &hr_dev->pdev->dev;
3649 priv = (struct hns_roce_v1_priv *)hr_dev->hw->priv; 3668 priv = (struct hns_roce_v1_priv *)hr_dev->hw->priv;
3650 hr_qp = qp_work_entry->qp; 3669 hr_qp = qp_work_entry->qp;
3670 qpn = hr_qp->qpn;
3651 3671
3652 dev_dbg(dev, "Schedule destroy QP(0x%lx) work.\n", hr_qp->qpn); 3672 dev_dbg(dev, "Schedule destroy QP(0x%lx) work.\n", qpn);
3653 3673
3654 qp_work_entry->sche_cnt++; 3674 qp_work_entry->sche_cnt++;
3655 3675
@@ -3660,7 +3680,7 @@ static void hns_roce_v1_destroy_qp_work_fn(struct work_struct *work)
3660 &qp_work_entry->db_wait_stage); 3680 &qp_work_entry->db_wait_stage);
3661 if (ret) { 3681 if (ret) {
3662 dev_err(dev, "Check QP(0x%lx) db process status failed!\n", 3682 dev_err(dev, "Check QP(0x%lx) db process status failed!\n",
3663 hr_qp->qpn); 3683 qpn);
3664 return; 3684 return;
3665 } 3685 }
3666 3686
@@ -3674,7 +3694,7 @@ static void hns_roce_v1_destroy_qp_work_fn(struct work_struct *work)
3674 ret = hns_roce_v1_modify_qp(&hr_qp->ibqp, NULL, 0, hr_qp->state, 3694 ret = hns_roce_v1_modify_qp(&hr_qp->ibqp, NULL, 0, hr_qp->state,
3675 IB_QPS_RESET); 3695 IB_QPS_RESET);
3676 if (ret) { 3696 if (ret) {
3677 dev_err(dev, "Modify QP(0x%lx) to RST failed!\n", hr_qp->qpn); 3697 dev_err(dev, "Modify QP(0x%lx) to RST failed!\n", qpn);
3678 return; 3698 return;
3679 } 3699 }
3680 3700
@@ -3683,14 +3703,14 @@ static void hns_roce_v1_destroy_qp_work_fn(struct work_struct *work)
3683 3703
3684 if (hr_qp->ibqp.qp_type == IB_QPT_RC) { 3704 if (hr_qp->ibqp.qp_type == IB_QPT_RC) {
3685 /* RC QP, release QPN */ 3705 /* RC QP, release QPN */
3686 hns_roce_release_range_qp(hr_dev, hr_qp->qpn, 1); 3706 hns_roce_release_range_qp(hr_dev, qpn, 1);
3687 kfree(hr_qp); 3707 kfree(hr_qp);
3688 } else 3708 } else
3689 kfree(hr_to_hr_sqp(hr_qp)); 3709 kfree(hr_to_hr_sqp(hr_qp));
3690 3710
3691 kfree(qp_work_entry); 3711 kfree(qp_work_entry);
3692 3712
3693 dev_dbg(dev, "Accomplished destroy QP(0x%lx) work.\n", hr_qp->qpn); 3713 dev_dbg(dev, "Accomplished destroy QP(0x%lx) work.\n", qpn);
3694} 3714}
3695 3715
3696int hns_roce_v1_destroy_qp(struct ib_qp *ibqp) 3716int hns_roce_v1_destroy_qp(struct ib_qp *ibqp)
diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c b/drivers/infiniband/hw/hns/hns_roce_main.c
index c3b41f95e70a..d9777b662eba 100644
--- a/drivers/infiniband/hw/hns/hns_roce_main.c
+++ b/drivers/infiniband/hw/hns/hns_roce_main.c
@@ -125,8 +125,6 @@ static int handle_en_event(struct hns_roce_dev *hr_dev, u8 port,
125 return -ENODEV; 125 return -ENODEV;
126 } 126 }
127 127
128 spin_lock_bh(&hr_dev->iboe.lock);
129
130 switch (event) { 128 switch (event) {
131 case NETDEV_UP: 129 case NETDEV_UP:
132 case NETDEV_CHANGE: 130 case NETDEV_CHANGE:
@@ -144,7 +142,6 @@ static int handle_en_event(struct hns_roce_dev *hr_dev, u8 port,
144 break; 142 break;
145 } 143 }
146 144
147 spin_unlock_bh(&hr_dev->iboe.lock);
148 return 0; 145 return 0;
149} 146}
150 147
diff --git a/drivers/infiniband/hw/i40iw/i40iw.h b/drivers/infiniband/hw/i40iw/i40iw.h
index da2eb5a281fa..9b1566468744 100644
--- a/drivers/infiniband/hw/i40iw/i40iw.h
+++ b/drivers/infiniband/hw/i40iw/i40iw.h
@@ -527,6 +527,7 @@ enum i40iw_status_code i40iw_add_mac_addr(struct i40iw_device *iwdev,
527int i40iw_modify_qp(struct ib_qp *, struct ib_qp_attr *, int, struct ib_udata *); 527int i40iw_modify_qp(struct ib_qp *, struct ib_qp_attr *, int, struct ib_udata *);
528void i40iw_cq_wq_destroy(struct i40iw_device *iwdev, struct i40iw_sc_cq *cq); 528void i40iw_cq_wq_destroy(struct i40iw_device *iwdev, struct i40iw_sc_cq *cq);
529 529
530void i40iw_cleanup_pending_cqp_op(struct i40iw_device *iwdev);
530void i40iw_rem_pdusecount(struct i40iw_pd *iwpd, struct i40iw_device *iwdev); 531void i40iw_rem_pdusecount(struct i40iw_pd *iwpd, struct i40iw_device *iwdev);
531void i40iw_add_pdusecount(struct i40iw_pd *iwpd); 532void i40iw_add_pdusecount(struct i40iw_pd *iwpd);
532void i40iw_rem_devusecount(struct i40iw_device *iwdev); 533void i40iw_rem_devusecount(struct i40iw_device *iwdev);
diff --git a/drivers/infiniband/hw/i40iw/i40iw_cm.c b/drivers/infiniband/hw/i40iw/i40iw_cm.c
index 6ae98aa7f74e..5a2fa743676c 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_cm.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_cm.c
@@ -3487,7 +3487,8 @@ static void i40iw_cm_disconn_true(struct i40iw_qp *iwqp)
3487 if (((original_hw_tcp_state == I40IW_TCP_STATE_CLOSED) || 3487 if (((original_hw_tcp_state == I40IW_TCP_STATE_CLOSED) ||
3488 (original_hw_tcp_state == I40IW_TCP_STATE_TIME_WAIT) || 3488 (original_hw_tcp_state == I40IW_TCP_STATE_TIME_WAIT) ||
3489 (last_ae == I40IW_AE_RDMAP_ROE_BAD_LLP_CLOSE) || 3489 (last_ae == I40IW_AE_RDMAP_ROE_BAD_LLP_CLOSE) ||
3490 (last_ae == I40IW_AE_LLP_CONNECTION_RESET))) { 3490 (last_ae == I40IW_AE_LLP_CONNECTION_RESET) ||
3491 iwdev->reset)) {
3491 issue_close = 1; 3492 issue_close = 1;
3492 iwqp->cm_id = NULL; 3493 iwqp->cm_id = NULL;
3493 if (!iwqp->flush_issued) { 3494 if (!iwqp->flush_issued) {
@@ -4265,6 +4266,8 @@ void i40iw_cm_disconnect_all(struct i40iw_device *iwdev)
4265 cm_node = container_of(list_node, struct i40iw_cm_node, connected_entry); 4266 cm_node = container_of(list_node, struct i40iw_cm_node, connected_entry);
4266 attr.qp_state = IB_QPS_ERR; 4267 attr.qp_state = IB_QPS_ERR;
4267 i40iw_modify_qp(&cm_node->iwqp->ibqp, &attr, IB_QP_STATE, NULL); 4268 i40iw_modify_qp(&cm_node->iwqp->ibqp, &attr, IB_QP_STATE, NULL);
4269 if (iwdev->reset)
4270 i40iw_cm_disconn(cm_node->iwqp);
4268 i40iw_rem_ref_cm_node(cm_node); 4271 i40iw_rem_ref_cm_node(cm_node);
4269 } 4272 }
4270} 4273}
diff --git a/drivers/infiniband/hw/i40iw/i40iw_ctrl.c b/drivers/infiniband/hw/i40iw/i40iw_ctrl.c
index a027e2072477..a49ff2eb6fb3 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_ctrl.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_ctrl.c
@@ -130,20 +130,32 @@ static enum i40iw_status_code i40iw_sc_parse_fpm_commit_buf(
130 u64 base = 0; 130 u64 base = 0;
131 u32 i, j; 131 u32 i, j;
132 u32 k = 0; 132 u32 k = 0;
133 u32 low;
134 133
135 /* copy base values in obj_info */ 134 /* copy base values in obj_info */
136 for (i = I40IW_HMC_IW_QP, j = 0; 135 for (i = I40IW_HMC_IW_QP, j = 0; i <= I40IW_HMC_IW_PBLE; i++, j += 8) {
137 i <= I40IW_HMC_IW_PBLE; i++, j += 8) { 136 if ((i == I40IW_HMC_IW_SRQ) ||
137 (i == I40IW_HMC_IW_FSIMC) ||
138 (i == I40IW_HMC_IW_FSIAV)) {
139 info[i].base = 0;
140 info[i].cnt = 0;
141 continue;
142 }
138 get_64bit_val(buf, j, &temp); 143 get_64bit_val(buf, j, &temp);
139 info[i].base = RS_64_1(temp, 32) * 512; 144 info[i].base = RS_64_1(temp, 32) * 512;
140 if (info[i].base > base) { 145 if (info[i].base > base) {
141 base = info[i].base; 146 base = info[i].base;
142 k = i; 147 k = i;
143 } 148 }
144 low = (u32)(temp); 149 if (i == I40IW_HMC_IW_APBVT_ENTRY) {
145 if (low) 150 info[i].cnt = 1;
146 info[i].cnt = low; 151 continue;
152 }
153 if (i == I40IW_HMC_IW_QP)
154 info[i].cnt = (u32)RS_64(temp, I40IW_QUERY_FPM_MAX_QPS);
155 else if (i == I40IW_HMC_IW_CQ)
156 info[i].cnt = (u32)RS_64(temp, I40IW_QUERY_FPM_MAX_CQS);
157 else
158 info[i].cnt = (u32)(temp);
147 } 159 }
148 size = info[k].cnt * info[k].size + info[k].base; 160 size = info[k].cnt * info[k].size + info[k].base;
149 if (size & 0x1FFFFF) 161 if (size & 0x1FFFFF)
@@ -155,6 +167,31 @@ static enum i40iw_status_code i40iw_sc_parse_fpm_commit_buf(
155} 167}
156 168
157/** 169/**
170 * i40iw_sc_decode_fpm_query() - Decode a 64 bit value into max count and size
171 * @buf: ptr to fpm query buffer
172 * @buf_idx: index into buf
173 * @info: ptr to i40iw_hmc_obj_info struct
174 * @rsrc_idx: resource index into info
175 *
176 * Decode a 64 bit value from fpm query buffer into max count and size
177 */
178static u64 i40iw_sc_decode_fpm_query(u64 *buf,
179 u32 buf_idx,
180 struct i40iw_hmc_obj_info *obj_info,
181 u32 rsrc_idx)
182{
183 u64 temp;
184 u32 size;
185
186 get_64bit_val(buf, buf_idx, &temp);
187 obj_info[rsrc_idx].max_cnt = (u32)temp;
188 size = (u32)RS_64_1(temp, 32);
189 obj_info[rsrc_idx].size = LS_64_1(1, size);
190
191 return temp;
192}
193
194/**
158 * i40iw_sc_parse_fpm_query_buf() - parses fpm query buffer 195 * i40iw_sc_parse_fpm_query_buf() - parses fpm query buffer
159 * @buf: ptr to fpm query buffer 196 * @buf: ptr to fpm query buffer
160 * @info: ptr to i40iw_hmc_obj_info struct 197 * @info: ptr to i40iw_hmc_obj_info struct
@@ -168,9 +205,9 @@ static enum i40iw_status_code i40iw_sc_parse_fpm_query_buf(
168 struct i40iw_hmc_info *hmc_info, 205 struct i40iw_hmc_info *hmc_info,
169 struct i40iw_hmc_fpm_misc *hmc_fpm_misc) 206 struct i40iw_hmc_fpm_misc *hmc_fpm_misc)
170{ 207{
171 u64 temp;
172 struct i40iw_hmc_obj_info *obj_info; 208 struct i40iw_hmc_obj_info *obj_info;
173 u32 i, j, size; 209 u64 temp;
210 u32 size;
174 u16 max_pe_sds; 211 u16 max_pe_sds;
175 212
176 obj_info = hmc_info->hmc_obj; 213 obj_info = hmc_info->hmc_obj;
@@ -185,41 +222,52 @@ static enum i40iw_status_code i40iw_sc_parse_fpm_query_buf(
185 hmc_fpm_misc->max_sds = max_pe_sds; 222 hmc_fpm_misc->max_sds = max_pe_sds;
186 hmc_info->sd_table.sd_cnt = max_pe_sds + hmc_info->first_sd_index; 223 hmc_info->sd_table.sd_cnt = max_pe_sds + hmc_info->first_sd_index;
187 224
188 for (i = I40IW_HMC_IW_QP, j = 8; 225 get_64bit_val(buf, 8, &temp);
189 i <= I40IW_HMC_IW_ARP; i++, j += 8) { 226 obj_info[I40IW_HMC_IW_QP].max_cnt = (u32)RS_64(temp, I40IW_QUERY_FPM_MAX_QPS);
190 get_64bit_val(buf, j, &temp); 227 size = (u32)RS_64_1(temp, 32);
191 if (i == I40IW_HMC_IW_QP) 228 obj_info[I40IW_HMC_IW_QP].size = LS_64_1(1, size);
192 obj_info[i].max_cnt = (u32)RS_64(temp, I40IW_QUERY_FPM_MAX_QPS);
193 else if (i == I40IW_HMC_IW_CQ)
194 obj_info[i].max_cnt = (u32)RS_64(temp, I40IW_QUERY_FPM_MAX_CQS);
195 else
196 obj_info[i].max_cnt = (u32)temp;
197 229
198 size = (u32)RS_64_1(temp, 32); 230 get_64bit_val(buf, 16, &temp);
199 obj_info[i].size = ((u64)1 << size); 231 obj_info[I40IW_HMC_IW_CQ].max_cnt = (u32)RS_64(temp, I40IW_QUERY_FPM_MAX_CQS);
200 } 232 size = (u32)RS_64_1(temp, 32);
201 for (i = I40IW_HMC_IW_MR, j = 48; 233 obj_info[I40IW_HMC_IW_CQ].size = LS_64_1(1, size);
202 i <= I40IW_HMC_IW_PBLE; i++, j += 8) { 234
203 get_64bit_val(buf, j, &temp); 235 i40iw_sc_decode_fpm_query(buf, 32, obj_info, I40IW_HMC_IW_HTE);
204 obj_info[i].max_cnt = (u32)temp; 236 i40iw_sc_decode_fpm_query(buf, 40, obj_info, I40IW_HMC_IW_ARP);
205 size = (u32)RS_64_1(temp, 32); 237
206 obj_info[i].size = LS_64_1(1, size); 238 obj_info[I40IW_HMC_IW_APBVT_ENTRY].size = 8192;
207 } 239 obj_info[I40IW_HMC_IW_APBVT_ENTRY].max_cnt = 1;
240
241 i40iw_sc_decode_fpm_query(buf, 48, obj_info, I40IW_HMC_IW_MR);
242 i40iw_sc_decode_fpm_query(buf, 56, obj_info, I40IW_HMC_IW_XF);
208 243
209 get_64bit_val(buf, 120, &temp);
210 hmc_fpm_misc->max_ceqs = (u8)RS_64(temp, I40IW_QUERY_FPM_MAX_CEQS);
211 get_64bit_val(buf, 120, &temp);
212 hmc_fpm_misc->ht_multiplier = RS_64(temp, I40IW_QUERY_FPM_HTMULTIPLIER);
213 get_64bit_val(buf, 120, &temp);
214 hmc_fpm_misc->timer_bucket = RS_64(temp, I40IW_QUERY_FPM_TIMERBUCKET);
215 get_64bit_val(buf, 64, &temp); 244 get_64bit_val(buf, 64, &temp);
245 obj_info[I40IW_HMC_IW_XFFL].max_cnt = (u32)temp;
246 obj_info[I40IW_HMC_IW_XFFL].size = 4;
216 hmc_fpm_misc->xf_block_size = RS_64(temp, I40IW_QUERY_FPM_XFBLOCKSIZE); 247 hmc_fpm_misc->xf_block_size = RS_64(temp, I40IW_QUERY_FPM_XFBLOCKSIZE);
217 if (!hmc_fpm_misc->xf_block_size) 248 if (!hmc_fpm_misc->xf_block_size)
218 return I40IW_ERR_INVALID_SIZE; 249 return I40IW_ERR_INVALID_SIZE;
250
251 i40iw_sc_decode_fpm_query(buf, 72, obj_info, I40IW_HMC_IW_Q1);
252
219 get_64bit_val(buf, 80, &temp); 253 get_64bit_val(buf, 80, &temp);
254 obj_info[I40IW_HMC_IW_Q1FL].max_cnt = (u32)temp;
255 obj_info[I40IW_HMC_IW_Q1FL].size = 4;
220 hmc_fpm_misc->q1_block_size = RS_64(temp, I40IW_QUERY_FPM_Q1BLOCKSIZE); 256 hmc_fpm_misc->q1_block_size = RS_64(temp, I40IW_QUERY_FPM_Q1BLOCKSIZE);
221 if (!hmc_fpm_misc->q1_block_size) 257 if (!hmc_fpm_misc->q1_block_size)
222 return I40IW_ERR_INVALID_SIZE; 258 return I40IW_ERR_INVALID_SIZE;
259
260 i40iw_sc_decode_fpm_query(buf, 88, obj_info, I40IW_HMC_IW_TIMER);
261
262 get_64bit_val(buf, 112, &temp);
263 obj_info[I40IW_HMC_IW_PBLE].max_cnt = (u32)temp;
264 obj_info[I40IW_HMC_IW_PBLE].size = 8;
265
266 get_64bit_val(buf, 120, &temp);
267 hmc_fpm_misc->max_ceqs = (u8)RS_64(temp, I40IW_QUERY_FPM_MAX_CEQS);
268 hmc_fpm_misc->ht_multiplier = RS_64(temp, I40IW_QUERY_FPM_HTMULTIPLIER);
269 hmc_fpm_misc->timer_bucket = RS_64(temp, I40IW_QUERY_FPM_TIMERBUCKET);
270
223 return 0; 271 return 0;
224} 272}
225 273
@@ -1970,6 +2018,8 @@ static enum i40iw_status_code i40iw_sc_ccq_destroy(struct i40iw_sc_cq *ccq,
1970 ret_code = i40iw_cqp_poll_registers(cqp, tail, 1000); 2018 ret_code = i40iw_cqp_poll_registers(cqp, tail, 1000);
1971 } 2019 }
1972 2020
2021 cqp->process_cqp_sds = i40iw_update_sds_noccq;
2022
1973 return ret_code; 2023 return ret_code;
1974} 2024}
1975 2025
@@ -3390,13 +3440,6 @@ enum i40iw_status_code i40iw_sc_init_iw_hmc(struct i40iw_sc_dev *dev, u8 hmc_fn_
3390 hmc_info->sd_table.sd_entry = virt_mem.va; 3440 hmc_info->sd_table.sd_entry = virt_mem.va;
3391 } 3441 }
3392 3442
3393 /* fill size of objects which are fixed */
3394 hmc_info->hmc_obj[I40IW_HMC_IW_XFFL].size = 4;
3395 hmc_info->hmc_obj[I40IW_HMC_IW_Q1FL].size = 4;
3396 hmc_info->hmc_obj[I40IW_HMC_IW_PBLE].size = 8;
3397 hmc_info->hmc_obj[I40IW_HMC_IW_APBVT_ENTRY].size = 8192;
3398 hmc_info->hmc_obj[I40IW_HMC_IW_APBVT_ENTRY].max_cnt = 1;
3399
3400 return ret_code; 3443 return ret_code;
3401} 3444}
3402 3445
@@ -4838,7 +4881,7 @@ void i40iw_vsi_stats_free(struct i40iw_sc_vsi *vsi)
4838{ 4881{
4839 u8 fcn_id = vsi->fcn_id; 4882 u8 fcn_id = vsi->fcn_id;
4840 4883
4841 if ((vsi->stats_fcn_id_alloc) && (fcn_id != I40IW_INVALID_FCN_ID)) 4884 if (vsi->stats_fcn_id_alloc && fcn_id < I40IW_MAX_STATS_COUNT)
4842 vsi->dev->fcn_id_array[fcn_id] = false; 4885 vsi->dev->fcn_id_array[fcn_id] = false;
4843 i40iw_hw_stats_stop_timer(vsi); 4886 i40iw_hw_stats_stop_timer(vsi);
4844} 4887}
diff --git a/drivers/infiniband/hw/i40iw/i40iw_d.h b/drivers/infiniband/hw/i40iw/i40iw_d.h
index a39ac12b6a7e..2ebaadbed379 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_d.h
+++ b/drivers/infiniband/hw/i40iw/i40iw_d.h
@@ -1507,8 +1507,8 @@ enum {
1507 I40IW_CQ0_ALIGNMENT_MASK = (256 - 1), 1507 I40IW_CQ0_ALIGNMENT_MASK = (256 - 1),
1508 I40IW_HOST_CTX_ALIGNMENT_MASK = (4 - 1), 1508 I40IW_HOST_CTX_ALIGNMENT_MASK = (4 - 1),
1509 I40IW_SHADOWAREA_MASK = (128 - 1), 1509 I40IW_SHADOWAREA_MASK = (128 - 1),
1510 I40IW_FPM_QUERY_BUF_ALIGNMENT_MASK = 0, 1510 I40IW_FPM_QUERY_BUF_ALIGNMENT_MASK = (4 - 1),
1511 I40IW_FPM_COMMIT_BUF_ALIGNMENT_MASK = 0 1511 I40IW_FPM_COMMIT_BUF_ALIGNMENT_MASK = (4 - 1)
1512}; 1512};
1513 1513
1514enum i40iw_alignment { 1514enum i40iw_alignment {
diff --git a/drivers/infiniband/hw/i40iw/i40iw_main.c b/drivers/infiniband/hw/i40iw/i40iw_main.c
index e0f47cc2effc..ae8463ff59a7 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_main.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_main.c
@@ -243,6 +243,8 @@ static void i40iw_destroy_cqp(struct i40iw_device *iwdev, bool free_hwcqp)
243 if (free_hwcqp) 243 if (free_hwcqp)
244 dev->cqp_ops->cqp_destroy(dev->cqp); 244 dev->cqp_ops->cqp_destroy(dev->cqp);
245 245
246 i40iw_cleanup_pending_cqp_op(iwdev);
247
246 i40iw_free_dma_mem(dev->hw, &cqp->sq); 248 i40iw_free_dma_mem(dev->hw, &cqp->sq);
247 kfree(cqp->scratch_array); 249 kfree(cqp->scratch_array);
248 iwdev->cqp.scratch_array = NULL; 250 iwdev->cqp.scratch_array = NULL;
@@ -274,13 +276,12 @@ static void i40iw_disable_irq(struct i40iw_sc_dev *dev,
274/** 276/**
275 * i40iw_destroy_aeq - destroy aeq 277 * i40iw_destroy_aeq - destroy aeq
276 * @iwdev: iwarp device 278 * @iwdev: iwarp device
277 * @reset: true if called before reset
278 * 279 *
279 * Issue a destroy aeq request and 280 * Issue a destroy aeq request and
280 * free the resources associated with the aeq 281 * free the resources associated with the aeq
281 * The function is called during driver unload 282 * The function is called during driver unload
282 */ 283 */
283static void i40iw_destroy_aeq(struct i40iw_device *iwdev, bool reset) 284static void i40iw_destroy_aeq(struct i40iw_device *iwdev)
284{ 285{
285 enum i40iw_status_code status = I40IW_ERR_NOT_READY; 286 enum i40iw_status_code status = I40IW_ERR_NOT_READY;
286 struct i40iw_sc_dev *dev = &iwdev->sc_dev; 287 struct i40iw_sc_dev *dev = &iwdev->sc_dev;
@@ -288,7 +289,7 @@ static void i40iw_destroy_aeq(struct i40iw_device *iwdev, bool reset)
288 289
289 if (!iwdev->msix_shared) 290 if (!iwdev->msix_shared)
290 i40iw_disable_irq(dev, iwdev->iw_msixtbl, (void *)iwdev); 291 i40iw_disable_irq(dev, iwdev->iw_msixtbl, (void *)iwdev);
291 if (reset) 292 if (iwdev->reset)
292 goto exit; 293 goto exit;
293 294
294 if (!dev->aeq_ops->aeq_destroy(&aeq->sc_aeq, 0, 1)) 295 if (!dev->aeq_ops->aeq_destroy(&aeq->sc_aeq, 0, 1))
@@ -304,19 +305,17 @@ exit:
304 * i40iw_destroy_ceq - destroy ceq 305 * i40iw_destroy_ceq - destroy ceq
305 * @iwdev: iwarp device 306 * @iwdev: iwarp device
306 * @iwceq: ceq to be destroyed 307 * @iwceq: ceq to be destroyed
307 * @reset: true if called before reset
308 * 308 *
309 * Issue a destroy ceq request and 309 * Issue a destroy ceq request and
310 * free the resources associated with the ceq 310 * free the resources associated with the ceq
311 */ 311 */
312static void i40iw_destroy_ceq(struct i40iw_device *iwdev, 312static void i40iw_destroy_ceq(struct i40iw_device *iwdev,
313 struct i40iw_ceq *iwceq, 313 struct i40iw_ceq *iwceq)
314 bool reset)
315{ 314{
316 enum i40iw_status_code status; 315 enum i40iw_status_code status;
317 struct i40iw_sc_dev *dev = &iwdev->sc_dev; 316 struct i40iw_sc_dev *dev = &iwdev->sc_dev;
318 317
319 if (reset) 318 if (iwdev->reset)
320 goto exit; 319 goto exit;
321 320
322 status = dev->ceq_ops->ceq_destroy(&iwceq->sc_ceq, 0, 1); 321 status = dev->ceq_ops->ceq_destroy(&iwceq->sc_ceq, 0, 1);
@@ -335,12 +334,11 @@ exit:
335/** 334/**
336 * i40iw_dele_ceqs - destroy all ceq's 335 * i40iw_dele_ceqs - destroy all ceq's
337 * @iwdev: iwarp device 336 * @iwdev: iwarp device
338 * @reset: true if called before reset
339 * 337 *
340 * Go through all of the device ceq's and for each ceq 338 * Go through all of the device ceq's and for each ceq
341 * disable the ceq interrupt and destroy the ceq 339 * disable the ceq interrupt and destroy the ceq
342 */ 340 */
343static void i40iw_dele_ceqs(struct i40iw_device *iwdev, bool reset) 341static void i40iw_dele_ceqs(struct i40iw_device *iwdev)
344{ 342{
345 u32 i = 0; 343 u32 i = 0;
346 struct i40iw_sc_dev *dev = &iwdev->sc_dev; 344 struct i40iw_sc_dev *dev = &iwdev->sc_dev;
@@ -349,32 +347,31 @@ static void i40iw_dele_ceqs(struct i40iw_device *iwdev, bool reset)
349 347
350 if (iwdev->msix_shared) { 348 if (iwdev->msix_shared) {
351 i40iw_disable_irq(dev, msix_vec, (void *)iwdev); 349 i40iw_disable_irq(dev, msix_vec, (void *)iwdev);
352 i40iw_destroy_ceq(iwdev, iwceq, reset); 350 i40iw_destroy_ceq(iwdev, iwceq);
353 iwceq++; 351 iwceq++;
354 i++; 352 i++;
355 } 353 }
356 354
357 for (msix_vec++; i < iwdev->ceqs_count; i++, msix_vec++, iwceq++) { 355 for (msix_vec++; i < iwdev->ceqs_count; i++, msix_vec++, iwceq++) {
358 i40iw_disable_irq(dev, msix_vec, (void *)iwceq); 356 i40iw_disable_irq(dev, msix_vec, (void *)iwceq);
359 i40iw_destroy_ceq(iwdev, iwceq, reset); 357 i40iw_destroy_ceq(iwdev, iwceq);
360 } 358 }
361} 359}
362 360
363/** 361/**
364 * i40iw_destroy_ccq - destroy control cq 362 * i40iw_destroy_ccq - destroy control cq
365 * @iwdev: iwarp device 363 * @iwdev: iwarp device
366 * @reset: true if called before reset
367 * 364 *
368 * Issue destroy ccq request and 365 * Issue destroy ccq request and
369 * free the resources associated with the ccq 366 * free the resources associated with the ccq
370 */ 367 */
371static void i40iw_destroy_ccq(struct i40iw_device *iwdev, bool reset) 368static void i40iw_destroy_ccq(struct i40iw_device *iwdev)
372{ 369{
373 struct i40iw_sc_dev *dev = &iwdev->sc_dev; 370 struct i40iw_sc_dev *dev = &iwdev->sc_dev;
374 struct i40iw_ccq *ccq = &iwdev->ccq; 371 struct i40iw_ccq *ccq = &iwdev->ccq;
375 enum i40iw_status_code status = 0; 372 enum i40iw_status_code status = 0;
376 373
377 if (!reset) 374 if (!iwdev->reset)
378 status = dev->ccq_ops->ccq_destroy(dev->ccq, 0, true); 375 status = dev->ccq_ops->ccq_destroy(dev->ccq, 0, true);
379 if (status) 376 if (status)
380 i40iw_pr_err("ccq destroy failed %d\n", status); 377 i40iw_pr_err("ccq destroy failed %d\n", status);
@@ -810,7 +807,7 @@ static enum i40iw_status_code i40iw_setup_ceqs(struct i40iw_device *iwdev,
810 iwceq->msix_idx = msix_vec->idx; 807 iwceq->msix_idx = msix_vec->idx;
811 status = i40iw_configure_ceq_vector(iwdev, iwceq, ceq_id, msix_vec); 808 status = i40iw_configure_ceq_vector(iwdev, iwceq, ceq_id, msix_vec);
812 if (status) { 809 if (status) {
813 i40iw_destroy_ceq(iwdev, iwceq, false); 810 i40iw_destroy_ceq(iwdev, iwceq);
814 break; 811 break;
815 } 812 }
816 i40iw_enable_intr(&iwdev->sc_dev, msix_vec->idx); 813 i40iw_enable_intr(&iwdev->sc_dev, msix_vec->idx);
@@ -912,7 +909,7 @@ static enum i40iw_status_code i40iw_setup_aeq(struct i40iw_device *iwdev)
912 909
913 status = i40iw_configure_aeq_vector(iwdev); 910 status = i40iw_configure_aeq_vector(iwdev);
914 if (status) { 911 if (status) {
915 i40iw_destroy_aeq(iwdev, false); 912 i40iw_destroy_aeq(iwdev);
916 return status; 913 return status;
917 } 914 }
918 915
@@ -1442,12 +1439,11 @@ static enum i40iw_status_code i40iw_save_msix_info(struct i40iw_device *iwdev,
1442/** 1439/**
1443 * i40iw_deinit_device - clean up the device resources 1440 * i40iw_deinit_device - clean up the device resources
1444 * @iwdev: iwarp device 1441 * @iwdev: iwarp device
1445 * @reset: true if called before reset
1446 * 1442 *
1447 * Destroy the ib device interface, remove the mac ip entry and ipv4/ipv6 addresses, 1443 * Destroy the ib device interface, remove the mac ip entry and ipv4/ipv6 addresses,
1448 * destroy the device queues and free the pble and the hmc objects 1444 * destroy the device queues and free the pble and the hmc objects
1449 */ 1445 */
1450static void i40iw_deinit_device(struct i40iw_device *iwdev, bool reset) 1446static void i40iw_deinit_device(struct i40iw_device *iwdev)
1451{ 1447{
1452 struct i40e_info *ldev = iwdev->ldev; 1448 struct i40e_info *ldev = iwdev->ldev;
1453 1449
@@ -1464,7 +1460,7 @@ static void i40iw_deinit_device(struct i40iw_device *iwdev, bool reset)
1464 i40iw_destroy_rdma_device(iwdev->iwibdev); 1460 i40iw_destroy_rdma_device(iwdev->iwibdev);
1465 /* fallthrough */ 1461 /* fallthrough */
1466 case IP_ADDR_REGISTERED: 1462 case IP_ADDR_REGISTERED:
1467 if (!reset) 1463 if (!iwdev->reset)
1468 i40iw_del_macip_entry(iwdev, (u8)iwdev->mac_ip_table_idx); 1464 i40iw_del_macip_entry(iwdev, (u8)iwdev->mac_ip_table_idx);
1469 /* fallthrough */ 1465 /* fallthrough */
1470 case INET_NOTIFIER: 1466 case INET_NOTIFIER:
@@ -1474,26 +1470,26 @@ static void i40iw_deinit_device(struct i40iw_device *iwdev, bool reset)
1474 unregister_inet6addr_notifier(&i40iw_inetaddr6_notifier); 1470 unregister_inet6addr_notifier(&i40iw_inetaddr6_notifier);
1475 } 1471 }
1476 /* fallthrough */ 1472 /* fallthrough */
1473 case PBLE_CHUNK_MEM:
1474 i40iw_destroy_pble_pool(dev, iwdev->pble_rsrc);
1475 /* fallthrough */
1477 case CEQ_CREATED: 1476 case CEQ_CREATED:
1478 i40iw_dele_ceqs(iwdev, reset); 1477 i40iw_dele_ceqs(iwdev);
1479 /* fallthrough */ 1478 /* fallthrough */
1480 case AEQ_CREATED: 1479 case AEQ_CREATED:
1481 i40iw_destroy_aeq(iwdev, reset); 1480 i40iw_destroy_aeq(iwdev);
1482 /* fallthrough */ 1481 /* fallthrough */
1483 case IEQ_CREATED: 1482 case IEQ_CREATED:
1484 i40iw_puda_dele_resources(&iwdev->vsi, I40IW_PUDA_RSRC_TYPE_IEQ, reset); 1483 i40iw_puda_dele_resources(&iwdev->vsi, I40IW_PUDA_RSRC_TYPE_IEQ, iwdev->reset);
1485 /* fallthrough */ 1484 /* fallthrough */
1486 case ILQ_CREATED: 1485 case ILQ_CREATED:
1487 i40iw_puda_dele_resources(&iwdev->vsi, I40IW_PUDA_RSRC_TYPE_ILQ, reset); 1486 i40iw_puda_dele_resources(&iwdev->vsi, I40IW_PUDA_RSRC_TYPE_ILQ, iwdev->reset);
1488 /* fallthrough */ 1487 /* fallthrough */
1489 case CCQ_CREATED: 1488 case CCQ_CREATED:
1490 i40iw_destroy_ccq(iwdev, reset); 1489 i40iw_destroy_ccq(iwdev);
1491 /* fallthrough */
1492 case PBLE_CHUNK_MEM:
1493 i40iw_destroy_pble_pool(dev, iwdev->pble_rsrc);
1494 /* fallthrough */ 1490 /* fallthrough */
1495 case HMC_OBJS_CREATED: 1491 case HMC_OBJS_CREATED:
1496 i40iw_del_hmc_objects(dev, dev->hmc_info, true, reset); 1492 i40iw_del_hmc_objects(dev, dev->hmc_info, true, iwdev->reset);
1497 /* fallthrough */ 1493 /* fallthrough */
1498 case CQP_CREATED: 1494 case CQP_CREATED:
1499 i40iw_destroy_cqp(iwdev, true); 1495 i40iw_destroy_cqp(iwdev, true);
@@ -1670,6 +1666,7 @@ static int i40iw_open(struct i40e_info *ldev, struct i40e_client *client)
1670 status = i40iw_hmc_init_pble(&iwdev->sc_dev, iwdev->pble_rsrc); 1666 status = i40iw_hmc_init_pble(&iwdev->sc_dev, iwdev->pble_rsrc);
1671 if (status) 1667 if (status)
1672 break; 1668 break;
1669 iwdev->init_state = PBLE_CHUNK_MEM;
1673 iwdev->virtchnl_wq = alloc_ordered_workqueue("iwvch", WQ_MEM_RECLAIM); 1670 iwdev->virtchnl_wq = alloc_ordered_workqueue("iwvch", WQ_MEM_RECLAIM);
1674 i40iw_register_notifiers(); 1671 i40iw_register_notifiers();
1675 iwdev->init_state = INET_NOTIFIER; 1672 iwdev->init_state = INET_NOTIFIER;
@@ -1693,7 +1690,7 @@ static int i40iw_open(struct i40e_info *ldev, struct i40e_client *client)
1693 } while (0); 1690 } while (0);
1694 1691
1695 i40iw_pr_err("status = %d last completion = %d\n", status, iwdev->init_state); 1692 i40iw_pr_err("status = %d last completion = %d\n", status, iwdev->init_state);
1696 i40iw_deinit_device(iwdev, false); 1693 i40iw_deinit_device(iwdev);
1697 return -ERESTART; 1694 return -ERESTART;
1698} 1695}
1699 1696
@@ -1774,9 +1771,12 @@ static void i40iw_close(struct i40e_info *ldev, struct i40e_client *client, bool
1774 iwdev = &hdl->device; 1771 iwdev = &hdl->device;
1775 iwdev->closing = true; 1772 iwdev->closing = true;
1776 1773
1774 if (reset)
1775 iwdev->reset = true;
1776
1777 i40iw_cm_disconnect_all(iwdev); 1777 i40iw_cm_disconnect_all(iwdev);
1778 destroy_workqueue(iwdev->virtchnl_wq); 1778 destroy_workqueue(iwdev->virtchnl_wq);
1779 i40iw_deinit_device(iwdev, reset); 1779 i40iw_deinit_device(iwdev);
1780} 1780}
1781 1781
1782/** 1782/**
diff --git a/drivers/infiniband/hw/i40iw/i40iw_puda.c b/drivers/infiniband/hw/i40iw/i40iw_puda.c
index db41ab40da9c..7f5583d83622 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_puda.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_puda.c
@@ -408,6 +408,9 @@ enum i40iw_status_code i40iw_puda_send(struct i40iw_sc_qp *qp,
408 set_64bit_val(wqe, 0, info->paddr); 408 set_64bit_val(wqe, 0, info->paddr);
409 set_64bit_val(wqe, 8, LS_64(info->len, I40IWQPSQ_FRAG_LEN)); 409 set_64bit_val(wqe, 8, LS_64(info->len, I40IWQPSQ_FRAG_LEN));
410 set_64bit_val(wqe, 16, header[0]); 410 set_64bit_val(wqe, 16, header[0]);
411
412 /* Ensure all data is written before writing valid bit */
413 wmb();
411 set_64bit_val(wqe, 24, header[1]); 414 set_64bit_val(wqe, 24, header[1]);
412 415
413 i40iw_debug_buf(qp->dev, I40IW_DEBUG_PUDA, "PUDA SEND WQE", wqe, 32); 416 i40iw_debug_buf(qp->dev, I40IW_DEBUG_PUDA, "PUDA SEND WQE", wqe, 32);
@@ -682,7 +685,7 @@ static enum i40iw_status_code i40iw_puda_cq_create(struct i40iw_puda_rsrc *rsrc)
682 cqsize = rsrc->cq_size * (sizeof(struct i40iw_cqe)); 685 cqsize = rsrc->cq_size * (sizeof(struct i40iw_cqe));
683 tsize = cqsize + sizeof(struct i40iw_cq_shadow_area); 686 tsize = cqsize + sizeof(struct i40iw_cq_shadow_area);
684 ret = i40iw_allocate_dma_mem(dev->hw, &rsrc->cqmem, tsize, 687 ret = i40iw_allocate_dma_mem(dev->hw, &rsrc->cqmem, tsize,
685 I40IW_CQ0_ALIGNMENT_MASK); 688 I40IW_CQ0_ALIGNMENT);
686 if (ret) 689 if (ret)
687 return ret; 690 return ret;
688 691
@@ -1411,10 +1414,10 @@ static void i40iw_ieq_handle_exception(struct i40iw_puda_rsrc *ieq,
1411 1414
1412 if (!list_empty(rxlist)) { 1415 if (!list_empty(rxlist)) {
1413 tmpbuf = (struct i40iw_puda_buf *)rxlist->next; 1416 tmpbuf = (struct i40iw_puda_buf *)rxlist->next;
1414 plist = &tmpbuf->list;
1415 while ((struct list_head *)tmpbuf != rxlist) { 1417 while ((struct list_head *)tmpbuf != rxlist) {
1416 if ((int)(buf->seqnum - tmpbuf->seqnum) < 0) 1418 if ((int)(buf->seqnum - tmpbuf->seqnum) < 0)
1417 break; 1419 break;
1420 plist = &tmpbuf->list;
1418 tmpbuf = (struct i40iw_puda_buf *)plist->next; 1421 tmpbuf = (struct i40iw_puda_buf *)plist->next;
1419 } 1422 }
1420 /* Insert buf before tmpbuf */ 1423 /* Insert buf before tmpbuf */
diff --git a/drivers/infiniband/hw/i40iw/i40iw_status.h b/drivers/infiniband/hw/i40iw/i40iw_status.h
index 91c421762f06..f7013f11d808 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_status.h
+++ b/drivers/infiniband/hw/i40iw/i40iw_status.h
@@ -62,7 +62,7 @@ enum i40iw_status_code {
62 I40IW_ERR_INVALID_ALIGNMENT = -23, 62 I40IW_ERR_INVALID_ALIGNMENT = -23,
63 I40IW_ERR_FLUSHED_QUEUE = -24, 63 I40IW_ERR_FLUSHED_QUEUE = -24,
64 I40IW_ERR_INVALID_PUSH_PAGE_INDEX = -25, 64 I40IW_ERR_INVALID_PUSH_PAGE_INDEX = -25,
65 I40IW_ERR_INVALID_IMM_DATA_SIZE = -26, 65 I40IW_ERR_INVALID_INLINE_DATA_SIZE = -26,
66 I40IW_ERR_TIMEOUT = -27, 66 I40IW_ERR_TIMEOUT = -27,
67 I40IW_ERR_OPCODE_MISMATCH = -28, 67 I40IW_ERR_OPCODE_MISMATCH = -28,
68 I40IW_ERR_CQP_COMPL_ERROR = -29, 68 I40IW_ERR_CQP_COMPL_ERROR = -29,
diff --git a/drivers/infiniband/hw/i40iw/i40iw_uk.c b/drivers/infiniband/hw/i40iw/i40iw_uk.c
index b0d3a0e8a9b5..1060725d18bc 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_uk.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_uk.c
@@ -435,7 +435,7 @@ static enum i40iw_status_code i40iw_inline_rdma_write(struct i40iw_qp_uk *qp,
435 435
436 op_info = &info->op.inline_rdma_write; 436 op_info = &info->op.inline_rdma_write;
437 if (op_info->len > I40IW_MAX_INLINE_DATA_SIZE) 437 if (op_info->len > I40IW_MAX_INLINE_DATA_SIZE)
438 return I40IW_ERR_INVALID_IMM_DATA_SIZE; 438 return I40IW_ERR_INVALID_INLINE_DATA_SIZE;
439 439
440 ret_code = i40iw_inline_data_size_to_wqesize(op_info->len, &wqe_size); 440 ret_code = i40iw_inline_data_size_to_wqesize(op_info->len, &wqe_size);
441 if (ret_code) 441 if (ret_code)
@@ -511,7 +511,7 @@ static enum i40iw_status_code i40iw_inline_send(struct i40iw_qp_uk *qp,
511 511
512 op_info = &info->op.inline_send; 512 op_info = &info->op.inline_send;
513 if (op_info->len > I40IW_MAX_INLINE_DATA_SIZE) 513 if (op_info->len > I40IW_MAX_INLINE_DATA_SIZE)
514 return I40IW_ERR_INVALID_IMM_DATA_SIZE; 514 return I40IW_ERR_INVALID_INLINE_DATA_SIZE;
515 515
516 ret_code = i40iw_inline_data_size_to_wqesize(op_info->len, &wqe_size); 516 ret_code = i40iw_inline_data_size_to_wqesize(op_info->len, &wqe_size);
517 if (ret_code) 517 if (ret_code)
@@ -784,7 +784,7 @@ static enum i40iw_status_code i40iw_cq_poll_completion(struct i40iw_cq_uk *cq,
784 get_64bit_val(cqe, 0, &qword0); 784 get_64bit_val(cqe, 0, &qword0);
785 get_64bit_val(cqe, 16, &qword2); 785 get_64bit_val(cqe, 16, &qword2);
786 786
787 info->tcp_seq_num = (u8)RS_64(qword0, I40IWCQ_TCPSEQNUM); 787 info->tcp_seq_num = (u32)RS_64(qword0, I40IWCQ_TCPSEQNUM);
788 788
789 info->qp_id = (u32)RS_64(qword2, I40IWCQ_QPID); 789 info->qp_id = (u32)RS_64(qword2, I40IWCQ_QPID);
790 790
@@ -1187,7 +1187,7 @@ enum i40iw_status_code i40iw_inline_data_size_to_wqesize(u32 data_size,
1187 u8 *wqe_size) 1187 u8 *wqe_size)
1188{ 1188{
1189 if (data_size > I40IW_MAX_INLINE_DATA_SIZE) 1189 if (data_size > I40IW_MAX_INLINE_DATA_SIZE)
1190 return I40IW_ERR_INVALID_IMM_DATA_SIZE; 1190 return I40IW_ERR_INVALID_INLINE_DATA_SIZE;
1191 1191
1192 if (data_size <= 16) 1192 if (data_size <= 16)
1193 *wqe_size = I40IW_QP_WQE_MIN_SIZE; 1193 *wqe_size = I40IW_QP_WQE_MIN_SIZE;
diff --git a/drivers/infiniband/hw/i40iw/i40iw_utils.c b/drivers/infiniband/hw/i40iw/i40iw_utils.c
index 56d986924a4c..e311ec559f4e 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_utils.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_utils.c
@@ -337,6 +337,7 @@ struct i40iw_cqp_request *i40iw_get_cqp_request(struct i40iw_cqp *cqp, bool wait
337 */ 337 */
338void i40iw_free_cqp_request(struct i40iw_cqp *cqp, struct i40iw_cqp_request *cqp_request) 338void i40iw_free_cqp_request(struct i40iw_cqp *cqp, struct i40iw_cqp_request *cqp_request)
339{ 339{
340 struct i40iw_device *iwdev = container_of(cqp, struct i40iw_device, cqp);
340 unsigned long flags; 341 unsigned long flags;
341 342
342 if (cqp_request->dynamic) { 343 if (cqp_request->dynamic) {
@@ -350,6 +351,7 @@ void i40iw_free_cqp_request(struct i40iw_cqp *cqp, struct i40iw_cqp_request *cqp
350 list_add_tail(&cqp_request->list, &cqp->cqp_avail_reqs); 351 list_add_tail(&cqp_request->list, &cqp->cqp_avail_reqs);
351 spin_unlock_irqrestore(&cqp->req_lock, flags); 352 spin_unlock_irqrestore(&cqp->req_lock, flags);
352 } 353 }
354 wake_up(&iwdev->close_wq);
353} 355}
354 356
355/** 357/**
@@ -365,6 +367,56 @@ void i40iw_put_cqp_request(struct i40iw_cqp *cqp,
365} 367}
366 368
367/** 369/**
370 * i40iw_free_pending_cqp_request -free pending cqp request objs
371 * @cqp: cqp ptr
372 * @cqp_request: to be put back in cqp list
373 */
374static void i40iw_free_pending_cqp_request(struct i40iw_cqp *cqp,
375 struct i40iw_cqp_request *cqp_request)
376{
377 struct i40iw_device *iwdev = container_of(cqp, struct i40iw_device, cqp);
378
379 if (cqp_request->waiting) {
380 cqp_request->compl_info.error = true;
381 cqp_request->request_done = true;
382 wake_up(&cqp_request->waitq);
383 }
384 i40iw_put_cqp_request(cqp, cqp_request);
385 wait_event_timeout(iwdev->close_wq,
386 !atomic_read(&cqp_request->refcount),
387 1000);
388}
389
390/**
391 * i40iw_cleanup_pending_cqp_op - clean-up cqp with no completions
392 * @iwdev: iwarp device
393 */
394void i40iw_cleanup_pending_cqp_op(struct i40iw_device *iwdev)
395{
396 struct i40iw_sc_dev *dev = &iwdev->sc_dev;
397 struct i40iw_cqp *cqp = &iwdev->cqp;
398 struct i40iw_cqp_request *cqp_request = NULL;
399 struct cqp_commands_info *pcmdinfo = NULL;
400 u32 i, pending_work, wqe_idx;
401
402 pending_work = I40IW_RING_WORK_AVAILABLE(cqp->sc_cqp.sq_ring);
403 wqe_idx = I40IW_RING_GETCURRENT_TAIL(cqp->sc_cqp.sq_ring);
404 for (i = 0; i < pending_work; i++) {
405 cqp_request = (struct i40iw_cqp_request *)(unsigned long)cqp->scratch_array[wqe_idx];
406 if (cqp_request)
407 i40iw_free_pending_cqp_request(cqp, cqp_request);
408 wqe_idx = (wqe_idx + 1) % I40IW_RING_GETSIZE(cqp->sc_cqp.sq_ring);
409 }
410
411 while (!list_empty(&dev->cqp_cmd_head)) {
412 pcmdinfo = (struct cqp_commands_info *)i40iw_remove_head(&dev->cqp_cmd_head);
413 cqp_request = container_of(pcmdinfo, struct i40iw_cqp_request, info);
414 if (cqp_request)
415 i40iw_free_pending_cqp_request(cqp, cqp_request);
416 }
417}
418
419/**
368 * i40iw_free_qp - callback after destroy cqp completes 420 * i40iw_free_qp - callback after destroy cqp completes
369 * @cqp_request: cqp request for destroy qp 421 * @cqp_request: cqp request for destroy qp
370 * @num: not used 422 * @num: not used
@@ -546,8 +598,12 @@ void i40iw_rem_ref(struct ib_qp *ibqp)
546 cqp_info->in.u.qp_destroy.scratch = (uintptr_t)cqp_request; 598 cqp_info->in.u.qp_destroy.scratch = (uintptr_t)cqp_request;
547 cqp_info->in.u.qp_destroy.remove_hash_idx = true; 599 cqp_info->in.u.qp_destroy.remove_hash_idx = true;
548 status = i40iw_handle_cqp_op(iwdev, cqp_request); 600 status = i40iw_handle_cqp_op(iwdev, cqp_request);
549 if (status) 601 if (!status)
550 i40iw_pr_err("CQP-OP Destroy QP fail"); 602 return;
603
604 i40iw_rem_pdusecount(iwqp->iwpd, iwdev);
605 i40iw_free_qp_resources(iwdev, iwqp, qp_num);
606 i40iw_rem_devusecount(iwdev);
551} 607}
552 608
553/** 609/**
diff --git a/drivers/infiniband/hw/i40iw/i40iw_verbs.c b/drivers/infiniband/hw/i40iw/i40iw_verbs.c
index 4dbe61ec7a77..02d871db7ca5 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_verbs.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_verbs.c
@@ -426,9 +426,13 @@ void i40iw_free_qp_resources(struct i40iw_device *iwdev,
426 struct i40iw_qp *iwqp, 426 struct i40iw_qp *iwqp,
427 u32 qp_num) 427 u32 qp_num)
428{ 428{
429 struct i40iw_pbl *iwpbl = &iwqp->iwpbl;
430
429 i40iw_dealloc_push_page(iwdev, &iwqp->sc_qp); 431 i40iw_dealloc_push_page(iwdev, &iwqp->sc_qp);
430 if (qp_num) 432 if (qp_num)
431 i40iw_free_resource(iwdev, iwdev->allocated_qps, qp_num); 433 i40iw_free_resource(iwdev, iwdev->allocated_qps, qp_num);
434 if (iwpbl->pbl_allocated)
435 i40iw_free_pble(iwdev->pble_rsrc, &iwpbl->pble_alloc);
432 i40iw_free_dma_mem(iwdev->sc_dev.hw, &iwqp->q2_ctx_mem); 436 i40iw_free_dma_mem(iwdev->sc_dev.hw, &iwqp->q2_ctx_mem);
433 i40iw_free_dma_mem(iwdev->sc_dev.hw, &iwqp->kqp.dma_mem); 437 i40iw_free_dma_mem(iwdev->sc_dev.hw, &iwqp->kqp.dma_mem);
434 kfree(iwqp->kqp.wrid_mem); 438 kfree(iwqp->kqp.wrid_mem);
@@ -483,7 +487,7 @@ static int i40iw_setup_virt_qp(struct i40iw_device *iwdev,
483 struct i40iw_qp *iwqp, 487 struct i40iw_qp *iwqp,
484 struct i40iw_qp_init_info *init_info) 488 struct i40iw_qp_init_info *init_info)
485{ 489{
486 struct i40iw_pbl *iwpbl = iwqp->iwpbl; 490 struct i40iw_pbl *iwpbl = &iwqp->iwpbl;
487 struct i40iw_qp_mr *qpmr = &iwpbl->qp_mr; 491 struct i40iw_qp_mr *qpmr = &iwpbl->qp_mr;
488 492
489 iwqp->page = qpmr->sq_page; 493 iwqp->page = qpmr->sq_page;
@@ -688,19 +692,22 @@ static struct ib_qp *i40iw_create_qp(struct ib_pd *ibpd,
688 ucontext = to_ucontext(ibpd->uobject->context); 692 ucontext = to_ucontext(ibpd->uobject->context);
689 693
690 if (req.user_wqe_buffers) { 694 if (req.user_wqe_buffers) {
695 struct i40iw_pbl *iwpbl;
696
691 spin_lock_irqsave( 697 spin_lock_irqsave(
692 &ucontext->qp_reg_mem_list_lock, flags); 698 &ucontext->qp_reg_mem_list_lock, flags);
693 iwqp->iwpbl = i40iw_get_pbl( 699 iwpbl = i40iw_get_pbl(
694 (unsigned long)req.user_wqe_buffers, 700 (unsigned long)req.user_wqe_buffers,
695 &ucontext->qp_reg_mem_list); 701 &ucontext->qp_reg_mem_list);
696 spin_unlock_irqrestore( 702 spin_unlock_irqrestore(
697 &ucontext->qp_reg_mem_list_lock, flags); 703 &ucontext->qp_reg_mem_list_lock, flags);
698 704
699 if (!iwqp->iwpbl) { 705 if (!iwpbl) {
700 err_code = -ENODATA; 706 err_code = -ENODATA;
701 i40iw_pr_err("no pbl info\n"); 707 i40iw_pr_err("no pbl info\n");
702 goto error; 708 goto error;
703 } 709 }
710 memcpy(&iwqp->iwpbl, iwpbl, sizeof(iwqp->iwpbl));
704 } 711 }
705 } 712 }
706 err_code = i40iw_setup_virt_qp(iwdev, iwqp, &init_info); 713 err_code = i40iw_setup_virt_qp(iwdev, iwqp, &init_info);
@@ -1161,8 +1168,10 @@ static struct ib_cq *i40iw_create_cq(struct ib_device *ibdev,
1161 memset(&req, 0, sizeof(req)); 1168 memset(&req, 0, sizeof(req));
1162 iwcq->user_mode = true; 1169 iwcq->user_mode = true;
1163 ucontext = to_ucontext(context); 1170 ucontext = to_ucontext(context);
1164 if (ib_copy_from_udata(&req, udata, sizeof(struct i40iw_create_cq_req))) 1171 if (ib_copy_from_udata(&req, udata, sizeof(struct i40iw_create_cq_req))) {
1172 err_code = -EFAULT;
1165 goto cq_free_resources; 1173 goto cq_free_resources;
1174 }
1166 1175
1167 spin_lock_irqsave(&ucontext->cq_reg_mem_list_lock, flags); 1176 spin_lock_irqsave(&ucontext->cq_reg_mem_list_lock, flags);
1168 iwpbl = i40iw_get_pbl((unsigned long)req.user_cq_buffer, 1177 iwpbl = i40iw_get_pbl((unsigned long)req.user_cq_buffer,
@@ -2063,7 +2072,7 @@ static int i40iw_dereg_mr(struct ib_mr *ib_mr)
2063 ucontext = to_ucontext(ibpd->uobject->context); 2072 ucontext = to_ucontext(ibpd->uobject->context);
2064 i40iw_del_memlist(iwmr, ucontext); 2073 i40iw_del_memlist(iwmr, ucontext);
2065 } 2074 }
2066 if (iwpbl->pbl_allocated) 2075 if (iwpbl->pbl_allocated && iwmr->type != IW_MEMREG_TYPE_QP)
2067 i40iw_free_pble(iwdev->pble_rsrc, palloc); 2076 i40iw_free_pble(iwdev->pble_rsrc, palloc);
2068 kfree(iwmr); 2077 kfree(iwmr);
2069 return 0; 2078 return 0;
diff --git a/drivers/infiniband/hw/i40iw/i40iw_verbs.h b/drivers/infiniband/hw/i40iw/i40iw_verbs.h
index 07c3fec77de6..9067443cd311 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_verbs.h
+++ b/drivers/infiniband/hw/i40iw/i40iw_verbs.h
@@ -170,7 +170,7 @@ struct i40iw_qp {
170 struct i40iw_qp_kmode kqp; 170 struct i40iw_qp_kmode kqp;
171 struct i40iw_dma_mem host_ctx; 171 struct i40iw_dma_mem host_ctx;
172 struct timer_list terminate_timer; 172 struct timer_list terminate_timer;
173 struct i40iw_pbl *iwpbl; 173 struct i40iw_pbl iwpbl;
174 struct i40iw_dma_mem q2_ctx_mem; 174 struct i40iw_dma_mem q2_ctx_mem;
175 struct i40iw_dma_mem ietf_mem; 175 struct i40iw_dma_mem ietf_mem;
176 struct completion sq_drained; 176 struct completion sq_drained;
diff --git a/drivers/infiniband/hw/mlx4/cm.c b/drivers/infiniband/hw/mlx4/cm.c
index 1e6c526450d9..fedaf8260105 100644
--- a/drivers/infiniband/hw/mlx4/cm.c
+++ b/drivers/infiniband/hw/mlx4/cm.c
@@ -323,6 +323,9 @@ int mlx4_ib_multiplex_cm_handler(struct ib_device *ibdev, int port, int slave_id
323 mad->mad_hdr.attr_id == CM_REP_ATTR_ID || 323 mad->mad_hdr.attr_id == CM_REP_ATTR_ID ||
324 mad->mad_hdr.attr_id == CM_SIDR_REQ_ATTR_ID) { 324 mad->mad_hdr.attr_id == CM_SIDR_REQ_ATTR_ID) {
325 sl_cm_id = get_local_comm_id(mad); 325 sl_cm_id = get_local_comm_id(mad);
326 id = id_map_get(ibdev, &pv_cm_id, slave_id, sl_cm_id);
327 if (id)
328 goto cont;
326 id = id_map_alloc(ibdev, slave_id, sl_cm_id); 329 id = id_map_alloc(ibdev, slave_id, sl_cm_id);
327 if (IS_ERR(id)) { 330 if (IS_ERR(id)) {
328 mlx4_ib_warn(ibdev, "%s: id{slave: %d, sl_cm_id: 0x%x} Failed to id_map_alloc\n", 331 mlx4_ib_warn(ibdev, "%s: id{slave: %d, sl_cm_id: 0x%x} Failed to id_map_alloc\n",
@@ -343,6 +346,7 @@ int mlx4_ib_multiplex_cm_handler(struct ib_device *ibdev, int port, int slave_id
343 return -EINVAL; 346 return -EINVAL;
344 } 347 }
345 348
349cont:
346 set_local_comm_id(mad, id->pv_cm_id); 350 set_local_comm_id(mad, id->pv_cm_id);
347 351
348 if (mad->mad_hdr.attr_id == CM_DREQ_ATTR_ID) 352 if (mad->mad_hdr.attr_id == CM_DREQ_ATTR_ID)
diff --git a/drivers/infiniband/hw/mlx4/cq.c b/drivers/infiniband/hw/mlx4/cq.c
index 4f5a143fc0a7..ff931c580557 100644
--- a/drivers/infiniband/hw/mlx4/cq.c
+++ b/drivers/infiniband/hw/mlx4/cq.c
@@ -102,7 +102,7 @@ static int mlx4_ib_alloc_cq_buf(struct mlx4_ib_dev *dev, struct mlx4_ib_cq_buf *
102 int err; 102 int err;
103 103
104 err = mlx4_buf_alloc(dev->dev, nent * dev->dev->caps.cqe_size, 104 err = mlx4_buf_alloc(dev->dev, nent * dev->dev->caps.cqe_size,
105 PAGE_SIZE * 2, &buf->buf, GFP_KERNEL); 105 PAGE_SIZE * 2, &buf->buf);
106 106
107 if (err) 107 if (err)
108 goto out; 108 goto out;
@@ -113,7 +113,7 @@ static int mlx4_ib_alloc_cq_buf(struct mlx4_ib_dev *dev, struct mlx4_ib_cq_buf *
113 if (err) 113 if (err)
114 goto err_buf; 114 goto err_buf;
115 115
116 err = mlx4_buf_write_mtt(dev->dev, &buf->mtt, &buf->buf, GFP_KERNEL); 116 err = mlx4_buf_write_mtt(dev->dev, &buf->mtt, &buf->buf);
117 if (err) 117 if (err)
118 goto err_mtt; 118 goto err_mtt;
119 119
@@ -219,7 +219,7 @@ struct ib_cq *mlx4_ib_create_cq(struct ib_device *ibdev,
219 219
220 uar = &to_mucontext(context)->uar; 220 uar = &to_mucontext(context)->uar;
221 } else { 221 } else {
222 err = mlx4_db_alloc(dev->dev, &cq->db, 1, GFP_KERNEL); 222 err = mlx4_db_alloc(dev->dev, &cq->db, 1);
223 if (err) 223 if (err)
224 goto err_cq; 224 goto err_cq;
225 225
diff --git a/drivers/infiniband/hw/mlx4/main.c b/drivers/infiniband/hw/mlx4/main.c
index 75b2f7d4cd95..d1b43cbbfea7 100644
--- a/drivers/infiniband/hw/mlx4/main.c
+++ b/drivers/infiniband/hw/mlx4/main.c
@@ -1155,7 +1155,7 @@ static void mlx4_ib_disassociate_ucontext(struct ib_ucontext *ibcontext)
1155 * call to mlx4_ib_vma_close. 1155 * call to mlx4_ib_vma_close.
1156 */ 1156 */
1157 put_task_struct(owning_process); 1157 put_task_struct(owning_process);
1158 msleep(1); 1158 usleep_range(1000, 2000);
1159 owning_process = get_pid_task(ibcontext->tgid, 1159 owning_process = get_pid_task(ibcontext->tgid,
1160 PIDTYPE_PID); 1160 PIDTYPE_PID);
1161 if (!owning_process || 1161 if (!owning_process ||
diff --git a/drivers/infiniband/hw/mlx4/mcg.c b/drivers/infiniband/hw/mlx4/mcg.c
index 3405e947dc1e..b73f89700ef9 100644
--- a/drivers/infiniband/hw/mlx4/mcg.c
+++ b/drivers/infiniband/hw/mlx4/mcg.c
@@ -1091,7 +1091,7 @@ static void _mlx4_ib_mcg_port_cleanup(struct mlx4_ib_demux_ctx *ctx, int destroy
1091 if (!count) 1091 if (!count)
1092 break; 1092 break;
1093 1093
1094 msleep(1); 1094 usleep_range(1000, 2000);
1095 } while (time_after(end, jiffies)); 1095 } while (time_after(end, jiffies));
1096 1096
1097 flush_workqueue(ctx->mcg_wq); 1097 flush_workqueue(ctx->mcg_wq);
diff --git a/drivers/infiniband/hw/mlx4/mlx4_ib.h b/drivers/infiniband/hw/mlx4/mlx4_ib.h
index c2b9cbf4da05..9db82e67e959 100644
--- a/drivers/infiniband/hw/mlx4/mlx4_ib.h
+++ b/drivers/infiniband/hw/mlx4/mlx4_ib.h
@@ -185,7 +185,6 @@ enum mlx4_ib_qp_flags {
185 MLX4_IB_QP_LSO = IB_QP_CREATE_IPOIB_UD_LSO, 185 MLX4_IB_QP_LSO = IB_QP_CREATE_IPOIB_UD_LSO,
186 MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK = IB_QP_CREATE_BLOCK_MULTICAST_LOOPBACK, 186 MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK = IB_QP_CREATE_BLOCK_MULTICAST_LOOPBACK,
187 MLX4_IB_QP_NETIF = IB_QP_CREATE_NETIF_QP, 187 MLX4_IB_QP_NETIF = IB_QP_CREATE_NETIF_QP,
188 MLX4_IB_QP_CREATE_USE_GFP_NOIO = IB_QP_CREATE_USE_GFP_NOIO,
189 188
190 /* Mellanox specific flags start from IB_QP_CREATE_RESERVED_START */ 189 /* Mellanox specific flags start from IB_QP_CREATE_RESERVED_START */
191 MLX4_IB_ROCE_V2_GSI_QP = MLX4_IB_QP_CREATE_ROCE_V2_GSI, 190 MLX4_IB_ROCE_V2_GSI_QP = MLX4_IB_QP_CREATE_ROCE_V2_GSI,
diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
index 996e9058e515..75c0e6c5dd56 100644
--- a/drivers/infiniband/hw/mlx4/qp.c
+++ b/drivers/infiniband/hw/mlx4/qp.c
@@ -634,8 +634,8 @@ static void mlx4_ib_free_qp_counter(struct mlx4_ib_dev *dev,
634 634
635static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd, 635static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,
636 struct ib_qp_init_attr *init_attr, 636 struct ib_qp_init_attr *init_attr,
637 struct ib_udata *udata, int sqpn, struct mlx4_ib_qp **caller_qp, 637 struct ib_udata *udata, int sqpn,
638 gfp_t gfp) 638 struct mlx4_ib_qp **caller_qp)
639{ 639{
640 int qpn; 640 int qpn;
641 int err; 641 int err;
@@ -691,14 +691,14 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,
691 if (qp_type == MLX4_IB_QPT_SMI || qp_type == MLX4_IB_QPT_GSI || 691 if (qp_type == MLX4_IB_QPT_SMI || qp_type == MLX4_IB_QPT_GSI ||
692 (qp_type & (MLX4_IB_QPT_PROXY_SMI | MLX4_IB_QPT_PROXY_SMI_OWNER | 692 (qp_type & (MLX4_IB_QPT_PROXY_SMI | MLX4_IB_QPT_PROXY_SMI_OWNER |
693 MLX4_IB_QPT_PROXY_GSI | MLX4_IB_QPT_TUN_SMI_OWNER))) { 693 MLX4_IB_QPT_PROXY_GSI | MLX4_IB_QPT_TUN_SMI_OWNER))) {
694 sqp = kzalloc(sizeof (struct mlx4_ib_sqp), gfp); 694 sqp = kzalloc(sizeof(struct mlx4_ib_sqp), GFP_KERNEL);
695 if (!sqp) 695 if (!sqp)
696 return -ENOMEM; 696 return -ENOMEM;
697 qp = &sqp->qp; 697 qp = &sqp->qp;
698 qp->pri.vid = 0xFFFF; 698 qp->pri.vid = 0xFFFF;
699 qp->alt.vid = 0xFFFF; 699 qp->alt.vid = 0xFFFF;
700 } else { 700 } else {
701 qp = kzalloc(sizeof (struct mlx4_ib_qp), gfp); 701 qp = kzalloc(sizeof(struct mlx4_ib_qp), GFP_KERNEL);
702 if (!qp) 702 if (!qp)
703 return -ENOMEM; 703 return -ENOMEM;
704 qp->pri.vid = 0xFFFF; 704 qp->pri.vid = 0xFFFF;
@@ -780,7 +780,7 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,
780 goto err; 780 goto err;
781 781
782 if (qp_has_rq(init_attr)) { 782 if (qp_has_rq(init_attr)) {
783 err = mlx4_db_alloc(dev->dev, &qp->db, 0, gfp); 783 err = mlx4_db_alloc(dev->dev, &qp->db, 0);
784 if (err) 784 if (err)
785 goto err; 785 goto err;
786 786
@@ -788,7 +788,7 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,
788 } 788 }
789 789
790 if (mlx4_buf_alloc(dev->dev, qp->buf_size, qp->buf_size, 790 if (mlx4_buf_alloc(dev->dev, qp->buf_size, qp->buf_size,
791 &qp->buf, gfp)) { 791 &qp->buf)) {
792 memcpy(&init_attr->cap, &backup_cap, 792 memcpy(&init_attr->cap, &backup_cap,
793 sizeof(backup_cap)); 793 sizeof(backup_cap));
794 err = set_kernel_sq_size(dev, &init_attr->cap, qp_type, 794 err = set_kernel_sq_size(dev, &init_attr->cap, qp_type,
@@ -797,7 +797,7 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,
797 goto err_db; 797 goto err_db;
798 798
799 if (mlx4_buf_alloc(dev->dev, qp->buf_size, 799 if (mlx4_buf_alloc(dev->dev, qp->buf_size,
800 PAGE_SIZE * 2, &qp->buf, gfp)) { 800 PAGE_SIZE * 2, &qp->buf)) {
801 err = -ENOMEM; 801 err = -ENOMEM;
802 goto err_db; 802 goto err_db;
803 } 803 }
@@ -808,20 +808,20 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,
808 if (err) 808 if (err)
809 goto err_buf; 809 goto err_buf;
810 810
811 err = mlx4_buf_write_mtt(dev->dev, &qp->mtt, &qp->buf, gfp); 811 err = mlx4_buf_write_mtt(dev->dev, &qp->mtt, &qp->buf);
812 if (err) 812 if (err)
813 goto err_mtt; 813 goto err_mtt;
814 814
815 qp->sq.wrid = kmalloc_array(qp->sq.wqe_cnt, sizeof(u64), 815 qp->sq.wrid = kmalloc_array(qp->sq.wqe_cnt, sizeof(u64),
816 gfp | __GFP_NOWARN); 816 GFP_KERNEL | __GFP_NOWARN);
817 if (!qp->sq.wrid) 817 if (!qp->sq.wrid)
818 qp->sq.wrid = __vmalloc(qp->sq.wqe_cnt * sizeof(u64), 818 qp->sq.wrid = __vmalloc(qp->sq.wqe_cnt * sizeof(u64),
819 gfp, PAGE_KERNEL); 819 GFP_KERNEL, PAGE_KERNEL);
820 qp->rq.wrid = kmalloc_array(qp->rq.wqe_cnt, sizeof(u64), 820 qp->rq.wrid = kmalloc_array(qp->rq.wqe_cnt, sizeof(u64),
821 gfp | __GFP_NOWARN); 821 GFP_KERNEL | __GFP_NOWARN);
822 if (!qp->rq.wrid) 822 if (!qp->rq.wrid)
823 qp->rq.wrid = __vmalloc(qp->rq.wqe_cnt * sizeof(u64), 823 qp->rq.wrid = __vmalloc(qp->rq.wqe_cnt * sizeof(u64),
824 gfp, PAGE_KERNEL); 824 GFP_KERNEL, PAGE_KERNEL);
825 if (!qp->sq.wrid || !qp->rq.wrid) { 825 if (!qp->sq.wrid || !qp->rq.wrid) {
826 err = -ENOMEM; 826 err = -ENOMEM;
827 goto err_wrid; 827 goto err_wrid;
@@ -859,7 +859,7 @@ static int create_qp_common(struct mlx4_ib_dev *dev, struct ib_pd *pd,
859 if (init_attr->create_flags & IB_QP_CREATE_BLOCK_MULTICAST_LOOPBACK) 859 if (init_attr->create_flags & IB_QP_CREATE_BLOCK_MULTICAST_LOOPBACK)
860 qp->flags |= MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK; 860 qp->flags |= MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK;
861 861
862 err = mlx4_qp_alloc(dev->dev, qpn, &qp->mqp, gfp); 862 err = mlx4_qp_alloc(dev->dev, qpn, &qp->mqp);
863 if (err) 863 if (err)
864 goto err_qpn; 864 goto err_qpn;
865 865
@@ -1127,10 +1127,7 @@ static struct ib_qp *_mlx4_ib_create_qp(struct ib_pd *pd,
1127 int err; 1127 int err;
1128 int sup_u_create_flags = MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK; 1128 int sup_u_create_flags = MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK;
1129 u16 xrcdn = 0; 1129 u16 xrcdn = 0;
1130 gfp_t gfp;
1131 1130
1132 gfp = (init_attr->create_flags & MLX4_IB_QP_CREATE_USE_GFP_NOIO) ?
1133 GFP_NOIO : GFP_KERNEL;
1134 /* 1131 /*
1135 * We only support LSO, vendor flag1, and multicast loopback blocking, 1132 * We only support LSO, vendor flag1, and multicast loopback blocking,
1136 * and only for kernel UD QPs. 1133 * and only for kernel UD QPs.
@@ -1140,8 +1137,7 @@ static struct ib_qp *_mlx4_ib_create_qp(struct ib_pd *pd,
1140 MLX4_IB_SRIOV_TUNNEL_QP | 1137 MLX4_IB_SRIOV_TUNNEL_QP |
1141 MLX4_IB_SRIOV_SQP | 1138 MLX4_IB_SRIOV_SQP |
1142 MLX4_IB_QP_NETIF | 1139 MLX4_IB_QP_NETIF |
1143 MLX4_IB_QP_CREATE_ROCE_V2_GSI | 1140 MLX4_IB_QP_CREATE_ROCE_V2_GSI))
1144 MLX4_IB_QP_CREATE_USE_GFP_NOIO))
1145 return ERR_PTR(-EINVAL); 1141 return ERR_PTR(-EINVAL);
1146 1142
1147 if (init_attr->create_flags & IB_QP_CREATE_NETIF_QP) { 1143 if (init_attr->create_flags & IB_QP_CREATE_NETIF_QP) {
@@ -1154,7 +1150,6 @@ static struct ib_qp *_mlx4_ib_create_qp(struct ib_pd *pd,
1154 return ERR_PTR(-EINVAL); 1150 return ERR_PTR(-EINVAL);
1155 1151
1156 if ((init_attr->create_flags & ~(MLX4_IB_SRIOV_SQP | 1152 if ((init_attr->create_flags & ~(MLX4_IB_SRIOV_SQP |
1157 MLX4_IB_QP_CREATE_USE_GFP_NOIO |
1158 MLX4_IB_QP_CREATE_ROCE_V2_GSI | 1153 MLX4_IB_QP_CREATE_ROCE_V2_GSI |
1159 MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK) && 1154 MLX4_IB_QP_BLOCK_MULTICAST_LOOPBACK) &&
1160 init_attr->qp_type != IB_QPT_UD) || 1155 init_attr->qp_type != IB_QPT_UD) ||
@@ -1179,7 +1174,7 @@ static struct ib_qp *_mlx4_ib_create_qp(struct ib_pd *pd,
1179 case IB_QPT_RC: 1174 case IB_QPT_RC:
1180 case IB_QPT_UC: 1175 case IB_QPT_UC:
1181 case IB_QPT_RAW_PACKET: 1176 case IB_QPT_RAW_PACKET:
1182 qp = kzalloc(sizeof *qp, gfp); 1177 qp = kzalloc(sizeof(*qp), GFP_KERNEL);
1183 if (!qp) 1178 if (!qp)
1184 return ERR_PTR(-ENOMEM); 1179 return ERR_PTR(-ENOMEM);
1185 qp->pri.vid = 0xFFFF; 1180 qp->pri.vid = 0xFFFF;
@@ -1188,7 +1183,7 @@ static struct ib_qp *_mlx4_ib_create_qp(struct ib_pd *pd,
1188 case IB_QPT_UD: 1183 case IB_QPT_UD:
1189 { 1184 {
1190 err = create_qp_common(to_mdev(pd->device), pd, init_attr, 1185 err = create_qp_common(to_mdev(pd->device), pd, init_attr,
1191 udata, 0, &qp, gfp); 1186 udata, 0, &qp);
1192 if (err) { 1187 if (err) {
1193 kfree(qp); 1188 kfree(qp);
1194 return ERR_PTR(err); 1189 return ERR_PTR(err);
@@ -1217,8 +1212,7 @@ static struct ib_qp *_mlx4_ib_create_qp(struct ib_pd *pd,
1217 } 1212 }
1218 1213
1219 err = create_qp_common(to_mdev(pd->device), pd, init_attr, udata, 1214 err = create_qp_common(to_mdev(pd->device), pd, init_attr, udata,
1220 sqpn, 1215 sqpn, &qp);
1221 &qp, gfp);
1222 if (err) 1216 if (err)
1223 return ERR_PTR(err); 1217 return ERR_PTR(err);
1224 1218
diff --git a/drivers/infiniband/hw/mlx4/srq.c b/drivers/infiniband/hw/mlx4/srq.c
index e32dd58937a8..0facaf5f6d23 100644
--- a/drivers/infiniband/hw/mlx4/srq.c
+++ b/drivers/infiniband/hw/mlx4/srq.c
@@ -135,14 +135,14 @@ struct ib_srq *mlx4_ib_create_srq(struct ib_pd *pd,
135 if (err) 135 if (err)
136 goto err_mtt; 136 goto err_mtt;
137 } else { 137 } else {
138 err = mlx4_db_alloc(dev->dev, &srq->db, 0, GFP_KERNEL); 138 err = mlx4_db_alloc(dev->dev, &srq->db, 0);
139 if (err) 139 if (err)
140 goto err_srq; 140 goto err_srq;
141 141
142 *srq->db.db = 0; 142 *srq->db.db = 0;
143 143
144 if (mlx4_buf_alloc(dev->dev, buf_size, PAGE_SIZE * 2, &srq->buf, 144 if (mlx4_buf_alloc(dev->dev, buf_size, PAGE_SIZE * 2,
145 GFP_KERNEL)) { 145 &srq->buf)) {
146 err = -ENOMEM; 146 err = -ENOMEM;
147 goto err_db; 147 goto err_db;
148 } 148 }
@@ -167,7 +167,7 @@ struct ib_srq *mlx4_ib_create_srq(struct ib_pd *pd,
167 if (err) 167 if (err)
168 goto err_buf; 168 goto err_buf;
169 169
170 err = mlx4_buf_write_mtt(dev->dev, &srq->mtt, &srq->buf, GFP_KERNEL); 170 err = mlx4_buf_write_mtt(dev->dev, &srq->mtt, &srq->buf);
171 if (err) 171 if (err)
172 goto err_mtt; 172 goto err_mtt;
173 173
diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c
index a7f2e60085c4..f7fcde1ff0aa 100644
--- a/drivers/infiniband/hw/mlx5/main.c
+++ b/drivers/infiniband/hw/mlx5/main.c
@@ -1085,6 +1085,12 @@ static int mlx5_ib_modify_port(struct ib_device *ibdev, u8 port, int mask,
1085 bool is_ib = (mlx5_ib_port_link_layer(ibdev, port) == 1085 bool is_ib = (mlx5_ib_port_link_layer(ibdev, port) ==
1086 IB_LINK_LAYER_INFINIBAND); 1086 IB_LINK_LAYER_INFINIBAND);
1087 1087
1088 /* CM layer calls ib_modify_port() regardless of the link layer. For
1089 * Ethernet ports, qkey violation and Port capabilities are meaningless.
1090 */
1091 if (!is_ib)
1092 return 0;
1093
1088 if (MLX5_CAP_GEN(dev->mdev, ib_virt) && is_ib) { 1094 if (MLX5_CAP_GEN(dev->mdev, ib_virt) && is_ib) {
1089 change_mask = props->clr_port_cap_mask | props->set_port_cap_mask; 1095 change_mask = props->clr_port_cap_mask | props->set_port_cap_mask;
1090 value = ~props->clr_port_cap_mask | props->set_port_cap_mask; 1096 value = ~props->clr_port_cap_mask | props->set_port_cap_mask;
diff --git a/drivers/infiniband/hw/mlx5/mr.c b/drivers/infiniband/hw/mlx5/mr.c
index 763bb5b36144..2c40a2e989d2 100644
--- a/drivers/infiniband/hw/mlx5/mr.c
+++ b/drivers/infiniband/hw/mlx5/mr.c
@@ -582,6 +582,15 @@ static void clean_keys(struct mlx5_ib_dev *dev, int c)
582 } 582 }
583} 583}
584 584
585static void mlx5_mr_cache_debugfs_cleanup(struct mlx5_ib_dev *dev)
586{
587 if (!mlx5_debugfs_root)
588 return;
589
590 debugfs_remove_recursive(dev->cache.root);
591 dev->cache.root = NULL;
592}
593
585static int mlx5_mr_cache_debugfs_init(struct mlx5_ib_dev *dev) 594static int mlx5_mr_cache_debugfs_init(struct mlx5_ib_dev *dev)
586{ 595{
587 struct mlx5_mr_cache *cache = &dev->cache; 596 struct mlx5_mr_cache *cache = &dev->cache;
@@ -600,38 +609,34 @@ static int mlx5_mr_cache_debugfs_init(struct mlx5_ib_dev *dev)
600 sprintf(ent->name, "%d", ent->order); 609 sprintf(ent->name, "%d", ent->order);
601 ent->dir = debugfs_create_dir(ent->name, cache->root); 610 ent->dir = debugfs_create_dir(ent->name, cache->root);
602 if (!ent->dir) 611 if (!ent->dir)
603 return -ENOMEM; 612 goto err;
604 613
605 ent->fsize = debugfs_create_file("size", 0600, ent->dir, ent, 614 ent->fsize = debugfs_create_file("size", 0600, ent->dir, ent,
606 &size_fops); 615 &size_fops);
607 if (!ent->fsize) 616 if (!ent->fsize)
608 return -ENOMEM; 617 goto err;
609 618
610 ent->flimit = debugfs_create_file("limit", 0600, ent->dir, ent, 619 ent->flimit = debugfs_create_file("limit", 0600, ent->dir, ent,
611 &limit_fops); 620 &limit_fops);
612 if (!ent->flimit) 621 if (!ent->flimit)
613 return -ENOMEM; 622 goto err;
614 623
615 ent->fcur = debugfs_create_u32("cur", 0400, ent->dir, 624 ent->fcur = debugfs_create_u32("cur", 0400, ent->dir,
616 &ent->cur); 625 &ent->cur);
617 if (!ent->fcur) 626 if (!ent->fcur)
618 return -ENOMEM; 627 goto err;
619 628
620 ent->fmiss = debugfs_create_u32("miss", 0600, ent->dir, 629 ent->fmiss = debugfs_create_u32("miss", 0600, ent->dir,
621 &ent->miss); 630 &ent->miss);
622 if (!ent->fmiss) 631 if (!ent->fmiss)
623 return -ENOMEM; 632 goto err;
624 } 633 }
625 634
626 return 0; 635 return 0;
627} 636err:
628 637 mlx5_mr_cache_debugfs_cleanup(dev);
629static void mlx5_mr_cache_debugfs_cleanup(struct mlx5_ib_dev *dev)
630{
631 if (!mlx5_debugfs_root)
632 return;
633 638
634 debugfs_remove_recursive(dev->cache.root); 639 return -ENOMEM;
635} 640}
636 641
637static void delay_time_func(unsigned long ctx) 642static void delay_time_func(unsigned long ctx)
@@ -692,6 +697,11 @@ int mlx5_mr_cache_init(struct mlx5_ib_dev *dev)
692 if (err) 697 if (err)
693 mlx5_ib_warn(dev, "cache debugfs failure\n"); 698 mlx5_ib_warn(dev, "cache debugfs failure\n");
694 699
700 /*
701 * We don't want to fail driver if debugfs failed to initialize,
702 * so we are not forwarding error to the user.
703 */
704
695 return 0; 705 return 0;
696} 706}
697 707
@@ -825,7 +835,7 @@ static int mr_umem_get(struct ib_pd *pd, u64 start, u64 length,
825 access_flags, 0); 835 access_flags, 0);
826 err = PTR_ERR_OR_ZERO(*umem); 836 err = PTR_ERR_OR_ZERO(*umem);
827 if (err < 0) { 837 if (err < 0) {
828 mlx5_ib_err(dev, "umem get failed (%ld)\n", PTR_ERR(umem)); 838 mlx5_ib_err(dev, "umem get failed (%d)\n", err);
829 return err; 839 return err;
830 } 840 }
831 841
@@ -1779,7 +1789,7 @@ mlx5_ib_sg_to_klms(struct mlx5_ib_mr *mr,
1779 mr->ndescs = sg_nents; 1789 mr->ndescs = sg_nents;
1780 1790
1781 for_each_sg(sgl, sg, sg_nents, i) { 1791 for_each_sg(sgl, sg, sg_nents, i) {
1782 if (unlikely(i > mr->max_descs)) 1792 if (unlikely(i >= mr->max_descs))
1783 break; 1793 break;
1784 klms[i].va = cpu_to_be64(sg_dma_address(sg) + sg_offset); 1794 klms[i].va = cpu_to_be64(sg_dma_address(sg) + sg_offset);
1785 klms[i].bcount = cpu_to_be32(sg_dma_len(sg) - sg_offset); 1795 klms[i].bcount = cpu_to_be32(sg_dma_len(sg) - sg_offset);
diff --git a/drivers/infiniband/hw/mlx5/odp.c b/drivers/infiniband/hw/mlx5/odp.c
index ae0746754008..3d701c7a4c91 100644
--- a/drivers/infiniband/hw/mlx5/odp.c
+++ b/drivers/infiniband/hw/mlx5/odp.c
@@ -939,7 +939,7 @@ static int mlx5_ib_mr_initiator_pfault_handler(
939 939
940 if (qp->ibqp.qp_type != IB_QPT_RC) { 940 if (qp->ibqp.qp_type != IB_QPT_RC) {
941 av = *wqe; 941 av = *wqe;
942 if (av->dqp_dct & be32_to_cpu(MLX5_WQE_AV_EXT)) 942 if (av->dqp_dct & cpu_to_be32(MLX5_EXTENDED_UD_AV))
943 *wqe += sizeof(struct mlx5_av); 943 *wqe += sizeof(struct mlx5_av);
944 else 944 else
945 *wqe += sizeof(struct mlx5_base_av); 945 *wqe += sizeof(struct mlx5_base_av);
diff --git a/drivers/infiniband/hw/mlx5/qp.c b/drivers/infiniband/hw/mlx5/qp.c
index 0889ff367c86..f58f8f5f3ebe 100644
--- a/drivers/infiniband/hw/mlx5/qp.c
+++ b/drivers/infiniband/hw/mlx5/qp.c
@@ -1238,6 +1238,7 @@ static int create_raw_packet_qp(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp,
1238 goto err_destroy_tis; 1238 goto err_destroy_tis;
1239 1239
1240 sq->base.container_mibqp = qp; 1240 sq->base.container_mibqp = qp;
1241 sq->base.mqp.event = mlx5_ib_qp_event;
1241 } 1242 }
1242 1243
1243 if (qp->rq.wqe_cnt) { 1244 if (qp->rq.wqe_cnt) {
diff --git a/drivers/infiniband/hw/nes/nes_hw.c b/drivers/infiniband/hw/nes/nes_hw.c
index 8f9d8b4ad583..b0adf65e4bdb 100644
--- a/drivers/infiniband/hw/nes/nes_hw.c
+++ b/drivers/infiniband/hw/nes/nes_hw.c
@@ -551,7 +551,7 @@ struct nes_adapter *nes_init_adapter(struct nes_device *nesdev, u8 hw_rev) {
551 if ((0x0F000100 == (pcs_control_status0 & 0x0F000100)) 551 if ((0x0F000100 == (pcs_control_status0 & 0x0F000100))
552 || (0x0F000100 == (pcs_control_status1 & 0x0F000100))) 552 || (0x0F000100 == (pcs_control_status1 & 0x0F000100)))
553 int_cnt++; 553 int_cnt++;
554 msleep(1); 554 usleep_range(1000, 2000);
555 } 555 }
556 if (int_cnt > 1) { 556 if (int_cnt > 1) {
557 spin_lock_irqsave(&nesadapter->phy_lock, flags); 557 spin_lock_irqsave(&nesadapter->phy_lock, flags);
@@ -592,7 +592,7 @@ struct nes_adapter *nes_init_adapter(struct nes_device *nesdev, u8 hw_rev) {
592 break; 592 break;
593 } 593 }
594 } 594 }
595 msleep(1); 595 usleep_range(1000, 2000);
596 } 596 }
597 } 597 }
598 } 598 }
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
index 2f30bda8457a..27d5e8d9f08d 100644
--- a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
+++ b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
@@ -744,7 +744,8 @@ err:
744 if (is_uctx_pd) { 744 if (is_uctx_pd) {
745 ocrdma_release_ucontext_pd(uctx); 745 ocrdma_release_ucontext_pd(uctx);
746 } else { 746 } else {
747 status = _ocrdma_dealloc_pd(dev, pd); 747 if (_ocrdma_dealloc_pd(dev, pd))
748 pr_err("%s: _ocrdma_dealloc_pd() failed\n", __func__);
748 } 749 }
749exit: 750exit:
750 return ERR_PTR(status); 751 return ERR_PTR(status);
@@ -1901,6 +1902,7 @@ struct ib_srq *ocrdma_create_srq(struct ib_pd *ibpd,
1901 goto err; 1902 goto err;
1902 1903
1903 if (udata == NULL) { 1904 if (udata == NULL) {
1905 status = -ENOMEM;
1904 srq->rqe_wr_id_tbl = kzalloc(sizeof(u64) * srq->rq.max_cnt, 1906 srq->rqe_wr_id_tbl = kzalloc(sizeof(u64) * srq->rq.max_cnt,
1905 GFP_KERNEL); 1907 GFP_KERNEL);
1906 if (srq->rqe_wr_id_tbl == NULL) 1908 if (srq->rqe_wr_id_tbl == NULL)
diff --git a/drivers/infiniband/hw/qedr/verbs.c b/drivers/infiniband/hw/qedr/verbs.c
index 548e4d1e998f..2ae71b8f1ba8 100644
--- a/drivers/infiniband/hw/qedr/verbs.c
+++ b/drivers/infiniband/hw/qedr/verbs.c
@@ -53,6 +53,14 @@
53 53
54#define DB_ADDR_SHIFT(addr) ((addr) << DB_PWM_ADDR_OFFSET_SHIFT) 54#define DB_ADDR_SHIFT(addr) ((addr) << DB_PWM_ADDR_OFFSET_SHIFT)
55 55
56static inline int qedr_ib_copy_to_udata(struct ib_udata *udata, void *src,
57 size_t len)
58{
59 size_t min_len = min_t(size_t, len, udata->outlen);
60
61 return ib_copy_to_udata(udata, src, min_len);
62}
63
56int qedr_query_pkey(struct ib_device *ibdev, u8 port, u16 index, u16 *pkey) 64int qedr_query_pkey(struct ib_device *ibdev, u8 port, u16 index, u16 *pkey)
57{ 65{
58 if (index > QEDR_ROCE_PKEY_TABLE_LEN) 66 if (index > QEDR_ROCE_PKEY_TABLE_LEN)
@@ -378,7 +386,7 @@ struct ib_ucontext *qedr_alloc_ucontext(struct ib_device *ibdev,
378 uresp.sges_per_srq_wr = dev->attr.max_srq_sge; 386 uresp.sges_per_srq_wr = dev->attr.max_srq_sge;
379 uresp.max_cqes = QEDR_MAX_CQES; 387 uresp.max_cqes = QEDR_MAX_CQES;
380 388
381 rc = ib_copy_to_udata(udata, &uresp, sizeof(uresp)); 389 rc = qedr_ib_copy_to_udata(udata, &uresp, sizeof(uresp));
382 if (rc) 390 if (rc)
383 goto err; 391 goto err;
384 392
@@ -499,7 +507,7 @@ struct ib_pd *qedr_alloc_pd(struct ib_device *ibdev,
499 507
500 uresp.pd_id = pd_id; 508 uresp.pd_id = pd_id;
501 509
502 rc = ib_copy_to_udata(udata, &uresp, sizeof(uresp)); 510 rc = qedr_ib_copy_to_udata(udata, &uresp, sizeof(uresp));
503 if (rc) { 511 if (rc) {
504 DP_ERR(dev, "copy error pd_id=0x%x.\n", pd_id); 512 DP_ERR(dev, "copy error pd_id=0x%x.\n", pd_id);
505 dev->ops->rdma_dealloc_pd(dev->rdma_ctx, pd_id); 513 dev->ops->rdma_dealloc_pd(dev->rdma_ctx, pd_id);
@@ -729,7 +737,7 @@ static int qedr_copy_cq_uresp(struct qedr_dev *dev,
729 uresp.db_offset = DB_ADDR_SHIFT(DQ_PWM_OFFSET_UCM_RDMA_CQ_CONS_32BIT); 737 uresp.db_offset = DB_ADDR_SHIFT(DQ_PWM_OFFSET_UCM_RDMA_CQ_CONS_32BIT);
730 uresp.icid = cq->icid; 738 uresp.icid = cq->icid;
731 739
732 rc = ib_copy_to_udata(udata, &uresp, sizeof(uresp)); 740 rc = qedr_ib_copy_to_udata(udata, &uresp, sizeof(uresp));
733 if (rc) 741 if (rc)
734 DP_ERR(dev, "copy error cqid=0x%x.\n", cq->icid); 742 DP_ERR(dev, "copy error cqid=0x%x.\n", cq->icid);
735 743
@@ -1238,7 +1246,7 @@ static int qedr_copy_qp_uresp(struct qedr_dev *dev,
1238 uresp.atomic_supported = dev->atomic_cap != IB_ATOMIC_NONE; 1246 uresp.atomic_supported = dev->atomic_cap != IB_ATOMIC_NONE;
1239 uresp.qp_id = qp->qp_id; 1247 uresp.qp_id = qp->qp_id;
1240 1248
1241 rc = ib_copy_to_udata(udata, &uresp, sizeof(uresp)); 1249 rc = qedr_ib_copy_to_udata(udata, &uresp, sizeof(uresp));
1242 if (rc) 1250 if (rc)
1243 DP_ERR(dev, 1251 DP_ERR(dev,
1244 "create qp: failed a copy to user space with qp icid=0x%x.\n", 1252 "create qp: failed a copy to user space with qp icid=0x%x.\n",
diff --git a/drivers/infiniband/hw/qib/qib_qp.c b/drivers/infiniband/hw/qib/qib_qp.c
index 5984981e7dd4..a343e3b5d4cb 100644
--- a/drivers/infiniband/hw/qib/qib_qp.c
+++ b/drivers/infiniband/hw/qib/qib_qp.c
@@ -104,10 +104,9 @@ const struct rvt_operation_params qib_post_parms[RVT_OPERATION_MAX] = {
104 104
105}; 105};
106 106
107static void get_map_page(struct rvt_qpn_table *qpt, struct rvt_qpn_map *map, 107static void get_map_page(struct rvt_qpn_table *qpt, struct rvt_qpn_map *map)
108 gfp_t gfp)
109{ 108{
110 unsigned long page = get_zeroed_page(gfp); 109 unsigned long page = get_zeroed_page(GFP_KERNEL);
111 110
112 /* 111 /*
113 * Free the page if someone raced with us installing it. 112 * Free the page if someone raced with us installing it.
@@ -126,7 +125,7 @@ static void get_map_page(struct rvt_qpn_table *qpt, struct rvt_qpn_map *map,
126 * zero/one for QP type IB_QPT_SMI/IB_QPT_GSI. 125 * zero/one for QP type IB_QPT_SMI/IB_QPT_GSI.
127 */ 126 */
128int qib_alloc_qpn(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt, 127int qib_alloc_qpn(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt,
129 enum ib_qp_type type, u8 port, gfp_t gfp) 128 enum ib_qp_type type, u8 port)
130{ 129{
131 u32 i, offset, max_scan, qpn; 130 u32 i, offset, max_scan, qpn;
132 struct rvt_qpn_map *map; 131 struct rvt_qpn_map *map;
@@ -160,7 +159,7 @@ int qib_alloc_qpn(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt,
160 max_scan = qpt->nmaps - !offset; 159 max_scan = qpt->nmaps - !offset;
161 for (i = 0;;) { 160 for (i = 0;;) {
162 if (unlikely(!map->page)) { 161 if (unlikely(!map->page)) {
163 get_map_page(qpt, map, gfp); 162 get_map_page(qpt, map);
164 if (unlikely(!map->page)) 163 if (unlikely(!map->page))
165 break; 164 break;
166 } 165 }
@@ -317,16 +316,16 @@ u32 qib_mtu_from_qp(struct rvt_dev_info *rdi, struct rvt_qp *qp, u32 pmtu)
317 return ib_mtu_enum_to_int(pmtu); 316 return ib_mtu_enum_to_int(pmtu);
318} 317}
319 318
320void *qib_qp_priv_alloc(struct rvt_dev_info *rdi, struct rvt_qp *qp, gfp_t gfp) 319void *qib_qp_priv_alloc(struct rvt_dev_info *rdi, struct rvt_qp *qp)
321{ 320{
322 struct qib_qp_priv *priv; 321 struct qib_qp_priv *priv;
323 322
324 priv = kzalloc(sizeof(*priv), gfp); 323 priv = kzalloc(sizeof(*priv), GFP_KERNEL);
325 if (!priv) 324 if (!priv)
326 return ERR_PTR(-ENOMEM); 325 return ERR_PTR(-ENOMEM);
327 priv->owner = qp; 326 priv->owner = qp;
328 327
329 priv->s_hdr = kzalloc(sizeof(*priv->s_hdr), gfp); 328 priv->s_hdr = kzalloc(sizeof(*priv->s_hdr), GFP_KERNEL);
330 if (!priv->s_hdr) { 329 if (!priv->s_hdr) {
331 kfree(priv); 330 kfree(priv);
332 return ERR_PTR(-ENOMEM); 331 return ERR_PTR(-ENOMEM);
diff --git a/drivers/infiniband/hw/qib/qib_verbs.h b/drivers/infiniband/hw/qib/qib_verbs.h
index da0db5485ddc..a52fc67b40d7 100644
--- a/drivers/infiniband/hw/qib/qib_verbs.h
+++ b/drivers/infiniband/hw/qib/qib_verbs.h
@@ -274,11 +274,11 @@ int qib_get_counters(struct qib_pportdata *ppd,
274 * Functions provided by qib driver for rdmavt to use 274 * Functions provided by qib driver for rdmavt to use
275 */ 275 */
276unsigned qib_free_all_qps(struct rvt_dev_info *rdi); 276unsigned qib_free_all_qps(struct rvt_dev_info *rdi);
277void *qib_qp_priv_alloc(struct rvt_dev_info *rdi, struct rvt_qp *qp, gfp_t gfp); 277void *qib_qp_priv_alloc(struct rvt_dev_info *rdi, struct rvt_qp *qp);
278void qib_qp_priv_free(struct rvt_dev_info *rdi, struct rvt_qp *qp); 278void qib_qp_priv_free(struct rvt_dev_info *rdi, struct rvt_qp *qp);
279void qib_notify_qp_reset(struct rvt_qp *qp); 279void qib_notify_qp_reset(struct rvt_qp *qp);
280int qib_alloc_qpn(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt, 280int qib_alloc_qpn(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt,
281 enum ib_qp_type type, u8 port, gfp_t gfp); 281 enum ib_qp_type type, u8 port);
282void qib_restart_rc(struct rvt_qp *qp, u32 psn, int wait); 282void qib_restart_rc(struct rvt_qp *qp, u32 psn, int wait);
283#ifdef CONFIG_DEBUG_FS 283#ifdef CONFIG_DEBUG_FS
284 284
diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_cq.c b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_cq.c
index 69bda611d313..90aa326fd7c0 100644
--- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_cq.c
+++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_cq.c
@@ -65,13 +65,28 @@ int pvrdma_req_notify_cq(struct ib_cq *ibcq,
65 struct pvrdma_dev *dev = to_vdev(ibcq->device); 65 struct pvrdma_dev *dev = to_vdev(ibcq->device);
66 struct pvrdma_cq *cq = to_vcq(ibcq); 66 struct pvrdma_cq *cq = to_vcq(ibcq);
67 u32 val = cq->cq_handle; 67 u32 val = cq->cq_handle;
68 unsigned long flags;
69 int has_data = 0;
68 70
69 val |= (notify_flags & IB_CQ_SOLICITED_MASK) == IB_CQ_SOLICITED ? 71 val |= (notify_flags & IB_CQ_SOLICITED_MASK) == IB_CQ_SOLICITED ?
70 PVRDMA_UAR_CQ_ARM_SOL : PVRDMA_UAR_CQ_ARM; 72 PVRDMA_UAR_CQ_ARM_SOL : PVRDMA_UAR_CQ_ARM;
71 73
74 spin_lock_irqsave(&cq->cq_lock, flags);
75
72 pvrdma_write_uar_cq(dev, val); 76 pvrdma_write_uar_cq(dev, val);
73 77
74 return 0; 78 if (notify_flags & IB_CQ_REPORT_MISSED_EVENTS) {
79 unsigned int head;
80
81 has_data = pvrdma_idx_ring_has_data(&cq->ring_state->rx,
82 cq->ibcq.cqe, &head);
83 if (unlikely(has_data == PVRDMA_INVALID_IDX))
84 dev_err(&dev->pdev->dev, "CQ ring state invalid\n");
85 }
86
87 spin_unlock_irqrestore(&cq->cq_lock, flags);
88
89 return has_data;
75} 90}
76 91
77/** 92/**
diff --git a/drivers/infiniband/sw/rdmavt/qp.c b/drivers/infiniband/sw/rdmavt/qp.c
index 727e81cc2c8f..8876ee7bc326 100644
--- a/drivers/infiniband/sw/rdmavt/qp.c
+++ b/drivers/infiniband/sw/rdmavt/qp.c
@@ -118,10 +118,9 @@ const int ib_rvt_state_ops[IB_QPS_ERR + 1] = {
118EXPORT_SYMBOL(ib_rvt_state_ops); 118EXPORT_SYMBOL(ib_rvt_state_ops);
119 119
120static void get_map_page(struct rvt_qpn_table *qpt, 120static void get_map_page(struct rvt_qpn_table *qpt,
121 struct rvt_qpn_map *map, 121 struct rvt_qpn_map *map)
122 gfp_t gfp)
123{ 122{
124 unsigned long page = get_zeroed_page(gfp); 123 unsigned long page = get_zeroed_page(GFP_KERNEL);
125 124
126 /* 125 /*
127 * Free the page if someone raced with us installing it. 126 * Free the page if someone raced with us installing it.
@@ -173,7 +172,7 @@ static int init_qpn_table(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt)
173 rdi->dparms.qpn_res_start, rdi->dparms.qpn_res_end); 172 rdi->dparms.qpn_res_start, rdi->dparms.qpn_res_end);
174 for (i = rdi->dparms.qpn_res_start; i <= rdi->dparms.qpn_res_end; i++) { 173 for (i = rdi->dparms.qpn_res_start; i <= rdi->dparms.qpn_res_end; i++) {
175 if (!map->page) { 174 if (!map->page) {
176 get_map_page(qpt, map, GFP_KERNEL); 175 get_map_page(qpt, map);
177 if (!map->page) { 176 if (!map->page) {
178 ret = -ENOMEM; 177 ret = -ENOMEM;
179 break; 178 break;
@@ -342,14 +341,14 @@ static inline unsigned mk_qpn(struct rvt_qpn_table *qpt,
342 * Return: The queue pair number 341 * Return: The queue pair number
343 */ 342 */
344static int alloc_qpn(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt, 343static int alloc_qpn(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt,
345 enum ib_qp_type type, u8 port_num, gfp_t gfp) 344 enum ib_qp_type type, u8 port_num)
346{ 345{
347 u32 i, offset, max_scan, qpn; 346 u32 i, offset, max_scan, qpn;
348 struct rvt_qpn_map *map; 347 struct rvt_qpn_map *map;
349 u32 ret; 348 u32 ret;
350 349
351 if (rdi->driver_f.alloc_qpn) 350 if (rdi->driver_f.alloc_qpn)
352 return rdi->driver_f.alloc_qpn(rdi, qpt, type, port_num, gfp); 351 return rdi->driver_f.alloc_qpn(rdi, qpt, type, port_num);
353 352
354 if (type == IB_QPT_SMI || type == IB_QPT_GSI) { 353 if (type == IB_QPT_SMI || type == IB_QPT_GSI) {
355 unsigned n; 354 unsigned n;
@@ -374,7 +373,7 @@ static int alloc_qpn(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt,
374 max_scan = qpt->nmaps - !offset; 373 max_scan = qpt->nmaps - !offset;
375 for (i = 0;;) { 374 for (i = 0;;) {
376 if (unlikely(!map->page)) { 375 if (unlikely(!map->page)) {
377 get_map_page(qpt, map, gfp); 376 get_map_page(qpt, map);
378 if (unlikely(!map->page)) 377 if (unlikely(!map->page))
379 break; 378 break;
380 } 379 }
@@ -672,7 +671,6 @@ struct ib_qp *rvt_create_qp(struct ib_pd *ibpd,
672 struct ib_qp *ret = ERR_PTR(-ENOMEM); 671 struct ib_qp *ret = ERR_PTR(-ENOMEM);
673 struct rvt_dev_info *rdi = ib_to_rvt(ibpd->device); 672 struct rvt_dev_info *rdi = ib_to_rvt(ibpd->device);
674 void *priv = NULL; 673 void *priv = NULL;
675 gfp_t gfp;
676 size_t sqsize; 674 size_t sqsize;
677 675
678 if (!rdi) 676 if (!rdi)
@@ -680,18 +678,9 @@ struct ib_qp *rvt_create_qp(struct ib_pd *ibpd,
680 678
681 if (init_attr->cap.max_send_sge > rdi->dparms.props.max_sge || 679 if (init_attr->cap.max_send_sge > rdi->dparms.props.max_sge ||
682 init_attr->cap.max_send_wr > rdi->dparms.props.max_qp_wr || 680 init_attr->cap.max_send_wr > rdi->dparms.props.max_qp_wr ||
683 init_attr->create_flags & ~(IB_QP_CREATE_USE_GFP_NOIO)) 681 init_attr->create_flags)
684 return ERR_PTR(-EINVAL); 682 return ERR_PTR(-EINVAL);
685 683
686 /* GFP_NOIO is applicable to RC QP's only */
687
688 if (init_attr->create_flags & IB_QP_CREATE_USE_GFP_NOIO &&
689 init_attr->qp_type != IB_QPT_RC)
690 return ERR_PTR(-EINVAL);
691
692 gfp = init_attr->create_flags & IB_QP_CREATE_USE_GFP_NOIO ?
693 GFP_NOIO : GFP_KERNEL;
694
695 /* Check receive queue parameters if no SRQ is specified. */ 684 /* Check receive queue parameters if no SRQ is specified. */
696 if (!init_attr->srq) { 685 if (!init_attr->srq) {
697 if (init_attr->cap.max_recv_sge > rdi->dparms.props.max_sge || 686 if (init_attr->cap.max_recv_sge > rdi->dparms.props.max_sge ||
@@ -719,14 +708,7 @@ struct ib_qp *rvt_create_qp(struct ib_pd *ibpd,
719 sz = sizeof(struct rvt_sge) * 708 sz = sizeof(struct rvt_sge) *
720 init_attr->cap.max_send_sge + 709 init_attr->cap.max_send_sge +
721 sizeof(struct rvt_swqe); 710 sizeof(struct rvt_swqe);
722 if (gfp == GFP_NOIO) 711 swq = vzalloc_node(sqsize * sz, rdi->dparms.node);
723 swq = __vmalloc(
724 sqsize * sz,
725 gfp | __GFP_ZERO, PAGE_KERNEL);
726 else
727 swq = vzalloc_node(
728 sqsize * sz,
729 rdi->dparms.node);
730 if (!swq) 712 if (!swq)
731 return ERR_PTR(-ENOMEM); 713 return ERR_PTR(-ENOMEM);
732 714
@@ -741,7 +723,8 @@ struct ib_qp *rvt_create_qp(struct ib_pd *ibpd,
741 } else if (init_attr->cap.max_recv_sge > 1) 723 } else if (init_attr->cap.max_recv_sge > 1)
742 sg_list_sz = sizeof(*qp->r_sg_list) * 724 sg_list_sz = sizeof(*qp->r_sg_list) *
743 (init_attr->cap.max_recv_sge - 1); 725 (init_attr->cap.max_recv_sge - 1);
744 qp = kzalloc_node(sz + sg_list_sz, gfp, rdi->dparms.node); 726 qp = kzalloc_node(sz + sg_list_sz, GFP_KERNEL,
727 rdi->dparms.node);
745 if (!qp) 728 if (!qp)
746 goto bail_swq; 729 goto bail_swq;
747 730
@@ -751,7 +734,7 @@ struct ib_qp *rvt_create_qp(struct ib_pd *ibpd,
751 kzalloc_node( 734 kzalloc_node(
752 sizeof(*qp->s_ack_queue) * 735 sizeof(*qp->s_ack_queue) *
753 rvt_max_atomic(rdi), 736 rvt_max_atomic(rdi),
754 gfp, 737 GFP_KERNEL,
755 rdi->dparms.node); 738 rdi->dparms.node);
756 if (!qp->s_ack_queue) 739 if (!qp->s_ack_queue)
757 goto bail_qp; 740 goto bail_qp;
@@ -766,7 +749,7 @@ struct ib_qp *rvt_create_qp(struct ib_pd *ibpd,
766 * Driver needs to set up it's private QP structure and do any 749 * Driver needs to set up it's private QP structure and do any
767 * initialization that is needed. 750 * initialization that is needed.
768 */ 751 */
769 priv = rdi->driver_f.qp_priv_alloc(rdi, qp, gfp); 752 priv = rdi->driver_f.qp_priv_alloc(rdi, qp);
770 if (IS_ERR(priv)) { 753 if (IS_ERR(priv)) {
771 ret = priv; 754 ret = priv;
772 goto bail_qp; 755 goto bail_qp;
@@ -786,11 +769,6 @@ struct ib_qp *rvt_create_qp(struct ib_pd *ibpd,
786 qp->r_rq.wq = vmalloc_user( 769 qp->r_rq.wq = vmalloc_user(
787 sizeof(struct rvt_rwq) + 770 sizeof(struct rvt_rwq) +
788 qp->r_rq.size * sz); 771 qp->r_rq.size * sz);
789 else if (gfp == GFP_NOIO)
790 qp->r_rq.wq = __vmalloc(
791 sizeof(struct rvt_rwq) +
792 qp->r_rq.size * sz,
793 gfp | __GFP_ZERO, PAGE_KERNEL);
794 else 772 else
795 qp->r_rq.wq = vzalloc_node( 773 qp->r_rq.wq = vzalloc_node(
796 sizeof(struct rvt_rwq) + 774 sizeof(struct rvt_rwq) +
@@ -824,7 +802,7 @@ struct ib_qp *rvt_create_qp(struct ib_pd *ibpd,
824 802
825 err = alloc_qpn(rdi, &rdi->qp_dev->qpn_table, 803 err = alloc_qpn(rdi, &rdi->qp_dev->qpn_table,
826 init_attr->qp_type, 804 init_attr->qp_type,
827 init_attr->port_num, gfp); 805 init_attr->port_num);
828 if (err < 0) { 806 if (err < 0) {
829 ret = ERR_PTR(err); 807 ret = ERR_PTR(err);
830 goto bail_rq_wq; 808 goto bail_rq_wq;
@@ -1280,9 +1258,7 @@ int rvt_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
1280 1258
1281 if (attr_mask & IB_QP_TIMEOUT) { 1259 if (attr_mask & IB_QP_TIMEOUT) {
1282 qp->timeout = attr->timeout; 1260 qp->timeout = attr->timeout;
1283 qp->timeout_jiffies = 1261 qp->timeout_jiffies = rvt_timeout_to_jiffies(qp->timeout);
1284 usecs_to_jiffies((4096UL * (1UL << qp->timeout)) /
1285 1000UL);
1286 } 1262 }
1287 1263
1288 if (attr_mask & IB_QP_QKEY) 1264 if (attr_mask & IB_QP_QKEY)
diff --git a/drivers/infiniband/sw/rxe/rxe_net.c b/drivers/infiniband/sw/rxe/rxe_net.c
index c3a140ed4df2..08f3f90d2912 100644
--- a/drivers/infiniband/sw/rxe/rxe_net.c
+++ b/drivers/infiniband/sw/rxe/rxe_net.c
@@ -441,6 +441,8 @@ static void rxe_skb_tx_dtor(struct sk_buff *skb)
441 if (unlikely(qp->need_req_skb && 441 if (unlikely(qp->need_req_skb &&
442 skb_out < RXE_INFLIGHT_SKBS_PER_QP_LOW)) 442 skb_out < RXE_INFLIGHT_SKBS_PER_QP_LOW))
443 rxe_run_task(&qp->req.task, 1); 443 rxe_run_task(&qp->req.task, 1);
444
445 rxe_drop_ref(qp);
444} 446}
445 447
446int rxe_send(struct rxe_dev *rxe, struct rxe_pkt_info *pkt, struct sk_buff *skb) 448int rxe_send(struct rxe_dev *rxe, struct rxe_pkt_info *pkt, struct sk_buff *skb)
@@ -473,6 +475,7 @@ int rxe_send(struct rxe_dev *rxe, struct rxe_pkt_info *pkt, struct sk_buff *skb)
473 return -EAGAIN; 475 return -EAGAIN;
474 } 476 }
475 477
478 rxe_add_ref(pkt->qp);
476 atomic_inc(&pkt->qp->skb_out); 479 atomic_inc(&pkt->qp->skb_out);
477 kfree_skb(skb); 480 kfree_skb(skb);
478 481
diff --git a/drivers/infiniband/sw/rxe/rxe_resp.c b/drivers/infiniband/sw/rxe/rxe_resp.c
index be944d5aa9af..a958ee918a49 100644
--- a/drivers/infiniband/sw/rxe/rxe_resp.c
+++ b/drivers/infiniband/sw/rxe/rxe_resp.c
@@ -1219,6 +1219,9 @@ void rxe_drain_req_pkts(struct rxe_qp *qp, bool notify)
1219 kfree_skb(skb); 1219 kfree_skb(skb);
1220 } 1220 }
1221 1221
1222 if (notify)
1223 return;
1224
1222 while (!qp->srq && qp->rq.queue && queue_head(qp->rq.queue)) 1225 while (!qp->srq && qp->rq.queue && queue_head(qp->rq.queue))
1223 advance_consumer(qp->rq.queue); 1226 advance_consumer(qp->rq.queue);
1224} 1227}
diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.c b/drivers/infiniband/sw/rxe/rxe_verbs.c
index 073e66783f1d..af90a7d42b96 100644
--- a/drivers/infiniband/sw/rxe/rxe_verbs.c
+++ b/drivers/infiniband/sw/rxe/rxe_verbs.c
@@ -914,6 +914,9 @@ static int rxe_post_recv(struct ib_qp *ibqp, struct ib_recv_wr *wr,
914 914
915 spin_unlock_irqrestore(&rq->producer_lock, flags); 915 spin_unlock_irqrestore(&rq->producer_lock, flags);
916 916
917 if (qp->resp.state == QP_STATE_ERROR)
918 rxe_run_task(&qp->resp.task, 1);
919
917err1: 920err1:
918 return err; 921 return err;
919} 922}
@@ -1240,6 +1243,8 @@ int rxe_register_device(struct rxe_dev *rxe)
1240 addrconf_addr_eui48((unsigned char *)&dev->node_guid, 1243 addrconf_addr_eui48((unsigned char *)&dev->node_guid,
1241 rxe->ndev->dev_addr); 1244 rxe->ndev->dev_addr);
1242 dev->dev.dma_ops = &dma_virt_ops; 1245 dev->dev.dma_ops = &dma_virt_ops;
1246 dma_coerce_mask_and_coherent(&dev->dev,
1247 dma_get_required_mask(dev->dev.parent));
1243 1248
1244 dev->uverbs_abi_ver = RXE_UVERBS_ABI_VERSION; 1249 dev->uverbs_abi_ver = RXE_UVERBS_ABI_VERSION;
1245 dev->uverbs_cmd_mask = BIT_ULL(IB_USER_VERBS_CMD_GET_CONTEXT) 1250 dev->uverbs_cmd_mask = BIT_ULL(IB_USER_VERBS_CMD_GET_CONTEXT)
diff --git a/drivers/infiniband/ulp/ipoib/ipoib.h b/drivers/infiniband/ulp/ipoib/ipoib.h
index ff50a7bd66d8..7ac25059c40f 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib.h
+++ b/drivers/infiniband/ulp/ipoib/ipoib.h
@@ -336,6 +336,7 @@ struct ipoib_dev_priv {
336 unsigned long flags; 336 unsigned long flags;
337 337
338 struct rw_semaphore vlan_rwsem; 338 struct rw_semaphore vlan_rwsem;
339 struct mutex mcast_mutex;
339 340
340 struct rb_root path_tree; 341 struct rb_root path_tree;
341 struct list_head path_list; 342 struct list_head path_list;
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
index 7cbcfdac6529..d69410c2ed97 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c
@@ -39,6 +39,7 @@
39#include <linux/vmalloc.h> 39#include <linux/vmalloc.h>
40#include <linux/moduleparam.h> 40#include <linux/moduleparam.h>
41#include <linux/sched/signal.h> 41#include <linux/sched/signal.h>
42#include <linux/sched/mm.h>
42 43
43#include "ipoib.h" 44#include "ipoib.h"
44 45
@@ -510,7 +511,6 @@ static int ipoib_cm_rx_handler(struct ib_cm_id *cm_id,
510 case IB_CM_REQ_RECEIVED: 511 case IB_CM_REQ_RECEIVED:
511 return ipoib_cm_req_handler(cm_id, event); 512 return ipoib_cm_req_handler(cm_id, event);
512 case IB_CM_DREQ_RECEIVED: 513 case IB_CM_DREQ_RECEIVED:
513 p = cm_id->context;
514 ib_send_cm_drep(cm_id, NULL, 0); 514 ib_send_cm_drep(cm_id, NULL, 0);
515 /* Fall through */ 515 /* Fall through */
516 case IB_CM_REJ_RECEIVED: 516 case IB_CM_REJ_RECEIVED:
@@ -954,7 +954,7 @@ void ipoib_cm_dev_stop(struct net_device *dev)
954 break; 954 break;
955 } 955 }
956 spin_unlock_irq(&priv->lock); 956 spin_unlock_irq(&priv->lock);
957 msleep(1); 957 usleep_range(1000, 2000);
958 ipoib_drain_cq(dev); 958 ipoib_drain_cq(dev);
959 spin_lock_irq(&priv->lock); 959 spin_lock_irq(&priv->lock);
960 } 960 }
@@ -1047,9 +1047,8 @@ static struct ib_qp *ipoib_cm_create_tx_qp(struct net_device *dev, struct ipoib_
1047 .sq_sig_type = IB_SIGNAL_ALL_WR, 1047 .sq_sig_type = IB_SIGNAL_ALL_WR,
1048 .qp_type = IB_QPT_RC, 1048 .qp_type = IB_QPT_RC,
1049 .qp_context = tx, 1049 .qp_context = tx,
1050 .create_flags = IB_QP_CREATE_USE_GFP_NOIO 1050 .create_flags = 0
1051 }; 1051 };
1052
1053 struct ib_qp *tx_qp; 1052 struct ib_qp *tx_qp;
1054 1053
1055 if (dev->features & NETIF_F_SG) 1054 if (dev->features & NETIF_F_SG)
@@ -1057,10 +1056,6 @@ static struct ib_qp *ipoib_cm_create_tx_qp(struct net_device *dev, struct ipoib_
1057 min_t(u32, priv->ca->attrs.max_sge, MAX_SKB_FRAGS + 1); 1056 min_t(u32, priv->ca->attrs.max_sge, MAX_SKB_FRAGS + 1);
1058 1057
1059 tx_qp = ib_create_qp(priv->pd, &attr); 1058 tx_qp = ib_create_qp(priv->pd, &attr);
1060 if (PTR_ERR(tx_qp) == -EINVAL) {
1061 attr.create_flags &= ~IB_QP_CREATE_USE_GFP_NOIO;
1062 tx_qp = ib_create_qp(priv->pd, &attr);
1063 }
1064 tx->max_send_sge = attr.cap.max_send_sge; 1059 tx->max_send_sge = attr.cap.max_send_sge;
1065 return tx_qp; 1060 return tx_qp;
1066} 1061}
@@ -1131,10 +1126,11 @@ static int ipoib_cm_tx_init(struct ipoib_cm_tx *p, u32 qpn,
1131 struct sa_path_rec *pathrec) 1126 struct sa_path_rec *pathrec)
1132{ 1127{
1133 struct ipoib_dev_priv *priv = ipoib_priv(p->dev); 1128 struct ipoib_dev_priv *priv = ipoib_priv(p->dev);
1129 unsigned int noio_flag;
1134 int ret; 1130 int ret;
1135 1131
1136 p->tx_ring = __vmalloc(ipoib_sendq_size * sizeof *p->tx_ring, 1132 noio_flag = memalloc_noio_save();
1137 GFP_NOIO, PAGE_KERNEL); 1133 p->tx_ring = vzalloc(ipoib_sendq_size * sizeof(*p->tx_ring));
1138 if (!p->tx_ring) { 1134 if (!p->tx_ring) {
1139 ret = -ENOMEM; 1135 ret = -ENOMEM;
1140 goto err_tx; 1136 goto err_tx;
@@ -1142,9 +1138,10 @@ static int ipoib_cm_tx_init(struct ipoib_cm_tx *p, u32 qpn,
1142 memset(p->tx_ring, 0, ipoib_sendq_size * sizeof *p->tx_ring); 1138 memset(p->tx_ring, 0, ipoib_sendq_size * sizeof *p->tx_ring);
1143 1139
1144 p->qp = ipoib_cm_create_tx_qp(p->dev, p); 1140 p->qp = ipoib_cm_create_tx_qp(p->dev, p);
1141 memalloc_noio_restore(noio_flag);
1145 if (IS_ERR(p->qp)) { 1142 if (IS_ERR(p->qp)) {
1146 ret = PTR_ERR(p->qp); 1143 ret = PTR_ERR(p->qp);
1147 ipoib_warn(priv, "failed to allocate tx qp: %d\n", ret); 1144 ipoib_warn(priv, "failed to create tx qp: %d\n", ret);
1148 goto err_qp; 1145 goto err_qp;
1149 } 1146 }
1150 1147
@@ -1206,7 +1203,7 @@ static void ipoib_cm_tx_destroy(struct ipoib_cm_tx *p)
1206 goto timeout; 1203 goto timeout;
1207 } 1204 }
1208 1205
1209 msleep(1); 1206 usleep_range(1000, 2000);
1210 } 1207 }
1211 } 1208 }
1212 1209
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_ethtool.c b/drivers/infiniband/ulp/ipoib/ipoib_ethtool.c
index 7871379342f4..184a22f48027 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_ethtool.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_ethtool.c
@@ -52,7 +52,8 @@ static const struct ipoib_stats ipoib_gstrings_stats[] = {
52 IPOIB_NETDEV_STAT(tx_bytes), 52 IPOIB_NETDEV_STAT(tx_bytes),
53 IPOIB_NETDEV_STAT(tx_errors), 53 IPOIB_NETDEV_STAT(tx_errors),
54 IPOIB_NETDEV_STAT(rx_dropped), 54 IPOIB_NETDEV_STAT(rx_dropped),
55 IPOIB_NETDEV_STAT(tx_dropped) 55 IPOIB_NETDEV_STAT(tx_dropped),
56 IPOIB_NETDEV_STAT(multicast),
56}; 57};
57 58
58#define IPOIB_GLOBAL_STATS_LEN ARRAY_SIZE(ipoib_gstrings_stats) 59#define IPOIB_GLOBAL_STATS_LEN ARRAY_SIZE(ipoib_gstrings_stats)
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_ib.c b/drivers/infiniband/ulp/ipoib/ipoib_ib.c
index efe7402f4885..2e075377242e 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_ib.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_ib.c
@@ -256,6 +256,8 @@ static void ipoib_ib_handle_rx_wc(struct net_device *dev, struct ib_wc *wc)
256 256
257 ++dev->stats.rx_packets; 257 ++dev->stats.rx_packets;
258 dev->stats.rx_bytes += skb->len; 258 dev->stats.rx_bytes += skb->len;
259 if (skb->pkt_type == PACKET_MULTICAST)
260 dev->stats.multicast++;
259 261
260 skb->dev = dev; 262 skb->dev = dev;
261 if ((dev->features & NETIF_F_RXCSUM) && 263 if ((dev->features & NETIF_F_RXCSUM) &&
@@ -709,6 +711,27 @@ static int recvs_pending(struct net_device *dev)
709 return pending; 711 return pending;
710} 712}
711 713
714static void check_qp_movement_and_print(struct ipoib_dev_priv *priv,
715 struct ib_qp *qp,
716 enum ib_qp_state new_state)
717{
718 struct ib_qp_attr qp_attr;
719 struct ib_qp_init_attr query_init_attr;
720 int ret;
721
722 ret = ib_query_qp(qp, &qp_attr, IB_QP_STATE, &query_init_attr);
723 if (ret) {
724 ipoib_warn(priv, "%s: Failed to query QP\n", __func__);
725 return;
726 }
727 /* print according to the new-state and the previous state.*/
728 if (new_state == IB_QPS_ERR && qp_attr.qp_state == IB_QPS_RESET)
729 ipoib_dbg(priv, "Failed modify QP, IB_QPS_RESET to IB_QPS_ERR, acceptable\n");
730 else
731 ipoib_warn(priv, "Failed to modify QP to state: %d from state: %d\n",
732 new_state, qp_attr.qp_state);
733}
734
712int ipoib_ib_dev_stop_default(struct net_device *dev) 735int ipoib_ib_dev_stop_default(struct net_device *dev)
713{ 736{
714 struct ipoib_dev_priv *priv = ipoib_priv(dev); 737 struct ipoib_dev_priv *priv = ipoib_priv(dev);
@@ -728,7 +751,7 @@ int ipoib_ib_dev_stop_default(struct net_device *dev)
728 */ 751 */
729 qp_attr.qp_state = IB_QPS_ERR; 752 qp_attr.qp_state = IB_QPS_ERR;
730 if (ib_modify_qp(priv->qp, &qp_attr, IB_QP_STATE)) 753 if (ib_modify_qp(priv->qp, &qp_attr, IB_QP_STATE))
731 ipoib_warn(priv, "Failed to modify QP to ERROR state\n"); 754 check_qp_movement_and_print(priv, priv->qp, IB_QPS_ERR);
732 755
733 /* Wait for all sends and receives to complete */ 756 /* Wait for all sends and receives to complete */
734 begin = jiffies; 757 begin = jiffies;
@@ -770,7 +793,7 @@ int ipoib_ib_dev_stop_default(struct net_device *dev)
770 793
771 ipoib_drain_cq(dev); 794 ipoib_drain_cq(dev);
772 795
773 msleep(1); 796 usleep_range(1000, 2000);
774 } 797 }
775 798
776 ipoib_dbg(priv, "All sends and receives done.\n"); 799 ipoib_dbg(priv, "All sends and receives done.\n");
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c
index 6e86eeee370e..6c77df34869d 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_main.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c
@@ -233,6 +233,7 @@ static netdev_features_t ipoib_fix_features(struct net_device *dev, netdev_featu
233static int ipoib_change_mtu(struct net_device *dev, int new_mtu) 233static int ipoib_change_mtu(struct net_device *dev, int new_mtu)
234{ 234{
235 struct ipoib_dev_priv *priv = ipoib_priv(dev); 235 struct ipoib_dev_priv *priv = ipoib_priv(dev);
236 int ret = 0;
236 237
237 /* dev->mtu > 2K ==> connected mode */ 238 /* dev->mtu > 2K ==> connected mode */
238 if (ipoib_cm_admin_enabled(dev)) { 239 if (ipoib_cm_admin_enabled(dev)) {
@@ -256,9 +257,34 @@ static int ipoib_change_mtu(struct net_device *dev, int new_mtu)
256 ipoib_dbg(priv, "MTU must be smaller than the underlying " 257 ipoib_dbg(priv, "MTU must be smaller than the underlying "
257 "link layer MTU - 4 (%u)\n", priv->mcast_mtu); 258 "link layer MTU - 4 (%u)\n", priv->mcast_mtu);
258 259
259 dev->mtu = min(priv->mcast_mtu, priv->admin_mtu); 260 new_mtu = min(priv->mcast_mtu, priv->admin_mtu);
260 261
261 return 0; 262 if (priv->rn_ops->ndo_change_mtu) {
263 bool carrier_status = netif_carrier_ok(dev);
264
265 netif_carrier_off(dev);
266
267 /* notify lower level on the real mtu */
268 ret = priv->rn_ops->ndo_change_mtu(dev, new_mtu);
269
270 if (carrier_status)
271 netif_carrier_on(dev);
272 } else {
273 dev->mtu = new_mtu;
274 }
275
276 return ret;
277}
278
279static void ipoib_get_stats(struct net_device *dev,
280 struct rtnl_link_stats64 *stats)
281{
282 struct ipoib_dev_priv *priv = ipoib_priv(dev);
283
284 if (priv->rn_ops->ndo_get_stats64)
285 priv->rn_ops->ndo_get_stats64(dev, stats);
286 else
287 netdev_stats_to_stats64(stats, &dev->stats);
262} 288}
263 289
264/* Called with an RCU read lock taken */ 290/* Called with an RCU read lock taken */
@@ -1534,6 +1560,7 @@ static void ipoib_flush_neighs(struct ipoib_dev_priv *priv)
1534 int i, wait_flushed = 0; 1560 int i, wait_flushed = 0;
1535 1561
1536 init_completion(&priv->ntbl.flushed); 1562 init_completion(&priv->ntbl.flushed);
1563 set_bit(IPOIB_NEIGH_TBL_FLUSH, &priv->flags);
1537 1564
1538 spin_lock_irqsave(&priv->lock, flags); 1565 spin_lock_irqsave(&priv->lock, flags);
1539 1566
@@ -1578,7 +1605,6 @@ static void ipoib_neigh_hash_uninit(struct net_device *dev)
1578 1605
1579 ipoib_dbg(priv, "ipoib_neigh_hash_uninit\n"); 1606 ipoib_dbg(priv, "ipoib_neigh_hash_uninit\n");
1580 init_completion(&priv->ntbl.deleted); 1607 init_completion(&priv->ntbl.deleted);
1581 set_bit(IPOIB_NEIGH_TBL_FLUSH, &priv->flags);
1582 1608
1583 /* Stop GC if called at init fail need to cancel work */ 1609 /* Stop GC if called at init fail need to cancel work */
1584 stopped = test_and_set_bit(IPOIB_STOP_NEIGH_GC, &priv->flags); 1610 stopped = test_and_set_bit(IPOIB_STOP_NEIGH_GC, &priv->flags);
@@ -1808,6 +1834,7 @@ static const struct net_device_ops ipoib_netdev_ops_pf = {
1808 .ndo_get_vf_stats = ipoib_get_vf_stats, 1834 .ndo_get_vf_stats = ipoib_get_vf_stats,
1809 .ndo_set_vf_guid = ipoib_set_vf_guid, 1835 .ndo_set_vf_guid = ipoib_set_vf_guid,
1810 .ndo_set_mac_address = ipoib_set_mac, 1836 .ndo_set_mac_address = ipoib_set_mac,
1837 .ndo_get_stats64 = ipoib_get_stats,
1811}; 1838};
1812 1839
1813static const struct net_device_ops ipoib_netdev_ops_vf = { 1840static const struct net_device_ops ipoib_netdev_ops_vf = {
@@ -1820,6 +1847,7 @@ static const struct net_device_ops ipoib_netdev_ops_vf = {
1820 .ndo_tx_timeout = ipoib_timeout, 1847 .ndo_tx_timeout = ipoib_timeout,
1821 .ndo_set_rx_mode = ipoib_set_mcast_list, 1848 .ndo_set_rx_mode = ipoib_set_mcast_list,
1822 .ndo_get_iflink = ipoib_get_iflink, 1849 .ndo_get_iflink = ipoib_get_iflink,
1850 .ndo_get_stats64 = ipoib_get_stats,
1823}; 1851};
1824 1852
1825void ipoib_setup_common(struct net_device *dev) 1853void ipoib_setup_common(struct net_device *dev)
@@ -1850,6 +1878,7 @@ static void ipoib_build_priv(struct net_device *dev)
1850 priv->dev = dev; 1878 priv->dev = dev;
1851 spin_lock_init(&priv->lock); 1879 spin_lock_init(&priv->lock);
1852 init_rwsem(&priv->vlan_rwsem); 1880 init_rwsem(&priv->vlan_rwsem);
1881 mutex_init(&priv->mcast_mutex);
1853 1882
1854 INIT_LIST_HEAD(&priv->path_list); 1883 INIT_LIST_HEAD(&priv->path_list);
1855 INIT_LIST_HEAD(&priv->child_intfs); 1884 INIT_LIST_HEAD(&priv->child_intfs);
@@ -2146,14 +2175,14 @@ static struct net_device *ipoib_add_port(const char *format,
2146 priv->dev->dev_id = port - 1; 2175 priv->dev->dev_id = port - 1;
2147 2176
2148 result = ib_query_port(hca, port, &attr); 2177 result = ib_query_port(hca, port, &attr);
2149 if (!result) 2178 if (result) {
2150 priv->max_ib_mtu = ib_mtu_enum_to_int(attr.max_mtu);
2151 else {
2152 printk(KERN_WARNING "%s: ib_query_port %d failed\n", 2179 printk(KERN_WARNING "%s: ib_query_port %d failed\n",
2153 hca->name, port); 2180 hca->name, port);
2154 goto device_init_failed; 2181 goto device_init_failed;
2155 } 2182 }
2156 2183
2184 priv->max_ib_mtu = ib_mtu_enum_to_int(attr.max_mtu);
2185
2157 /* MTU will be reset when mcast join happens */ 2186 /* MTU will be reset when mcast join happens */
2158 priv->dev->mtu = IPOIB_UD_MTU(priv->max_ib_mtu); 2187 priv->dev->mtu = IPOIB_UD_MTU(priv->max_ib_mtu);
2159 priv->mcast_mtu = priv->admin_mtu = priv->dev->mtu; 2188 priv->mcast_mtu = priv->admin_mtu = priv->dev->mtu;
@@ -2184,12 +2213,14 @@ static struct net_device *ipoib_add_port(const char *format,
2184 printk(KERN_WARNING "%s: ib_query_gid port %d failed (ret = %d)\n", 2213 printk(KERN_WARNING "%s: ib_query_gid port %d failed (ret = %d)\n",
2185 hca->name, port, result); 2214 hca->name, port, result);
2186 goto device_init_failed; 2215 goto device_init_failed;
2187 } else 2216 }
2188 memcpy(priv->dev->dev_addr + 4, priv->local_gid.raw, sizeof (union ib_gid)); 2217
2218 memcpy(priv->dev->dev_addr + 4, priv->local_gid.raw,
2219 sizeof(union ib_gid));
2189 set_bit(IPOIB_FLAG_DEV_ADDR_SET, &priv->flags); 2220 set_bit(IPOIB_FLAG_DEV_ADDR_SET, &priv->flags);
2190 2221
2191 result = ipoib_dev_init(priv->dev, hca, port); 2222 result = ipoib_dev_init(priv->dev, hca, port);
2192 if (result < 0) { 2223 if (result) {
2193 printk(KERN_WARNING "%s: failed to initialize port %d (ret = %d)\n", 2224 printk(KERN_WARNING "%s: failed to initialize port %d (ret = %d)\n",
2194 hca->name, port, result); 2225 hca->name, port, result);
2195 goto device_init_failed; 2226 goto device_init_failed;
@@ -2212,6 +2243,7 @@ static struct net_device *ipoib_add_port(const char *format,
2212 goto register_failed; 2243 goto register_failed;
2213 } 2244 }
2214 2245
2246 result = -ENOMEM;
2215 if (ipoib_cm_add_mode_attr(priv->dev)) 2247 if (ipoib_cm_add_mode_attr(priv->dev))
2216 goto sysfs_failed; 2248 goto sysfs_failed;
2217 if (ipoib_add_pkey_attr(priv->dev)) 2249 if (ipoib_add_pkey_attr(priv->dev))
@@ -2337,6 +2369,7 @@ static int __init ipoib_init_module(void)
2337 ipoib_sendq_size = max3(ipoib_sendq_size, 2 * MAX_SEND_CQE, IPOIB_MIN_QUEUE_SIZE); 2369 ipoib_sendq_size = max3(ipoib_sendq_size, 2 * MAX_SEND_CQE, IPOIB_MIN_QUEUE_SIZE);
2338#ifdef CONFIG_INFINIBAND_IPOIB_CM 2370#ifdef CONFIG_INFINIBAND_IPOIB_CM
2339 ipoib_max_conn_qp = min(ipoib_max_conn_qp, IPOIB_CM_MAX_CONN_QP); 2371 ipoib_max_conn_qp = min(ipoib_max_conn_qp, IPOIB_CM_MAX_CONN_QP);
2372 ipoib_max_conn_qp = max(ipoib_max_conn_qp, 0);
2340#endif 2373#endif
2341 2374
2342 /* 2375 /*
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
index 057f58e6afca..93e149efc1f5 100644
--- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
+++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c
@@ -684,15 +684,10 @@ void ipoib_mcast_start_thread(struct net_device *dev)
684int ipoib_mcast_stop_thread(struct net_device *dev) 684int ipoib_mcast_stop_thread(struct net_device *dev)
685{ 685{
686 struct ipoib_dev_priv *priv = ipoib_priv(dev); 686 struct ipoib_dev_priv *priv = ipoib_priv(dev);
687 unsigned long flags;
688 687
689 ipoib_dbg_mcast(priv, "stopping multicast thread\n"); 688 ipoib_dbg_mcast(priv, "stopping multicast thread\n");
690 689
691 spin_lock_irqsave(&priv->lock, flags); 690 cancel_delayed_work_sync(&priv->mcast_task);
692 cancel_delayed_work(&priv->mcast_task);
693 spin_unlock_irqrestore(&priv->lock, flags);
694
695 flush_workqueue(priv->wq);
696 691
697 return 0; 692 return 0;
698} 693}
@@ -748,6 +743,14 @@ void ipoib_mcast_remove_list(struct list_head *remove_list)
748{ 743{
749 struct ipoib_mcast *mcast, *tmcast; 744 struct ipoib_mcast *mcast, *tmcast;
750 745
746 /*
747 * make sure the in-flight joins have finished before we attempt
748 * to leave
749 */
750 list_for_each_entry_safe(mcast, tmcast, remove_list, list)
751 if (test_bit(IPOIB_MCAST_FLAG_BUSY, &mcast->flags))
752 wait_for_completion(&mcast->done);
753
751 list_for_each_entry_safe(mcast, tmcast, remove_list, list) { 754 list_for_each_entry_safe(mcast, tmcast, remove_list, list) {
752 ipoib_mcast_leave(mcast->dev, mcast); 755 ipoib_mcast_leave(mcast->dev, mcast);
753 ipoib_mcast_free(mcast); 756 ipoib_mcast_free(mcast);
@@ -838,6 +841,7 @@ void ipoib_mcast_dev_flush(struct net_device *dev)
838 struct ipoib_mcast *mcast, *tmcast; 841 struct ipoib_mcast *mcast, *tmcast;
839 unsigned long flags; 842 unsigned long flags;
840 843
844 mutex_lock(&priv->mcast_mutex);
841 ipoib_dbg_mcast(priv, "flushing multicast list\n"); 845 ipoib_dbg_mcast(priv, "flushing multicast list\n");
842 846
843 spin_lock_irqsave(&priv->lock, flags); 847 spin_lock_irqsave(&priv->lock, flags);
@@ -856,15 +860,8 @@ void ipoib_mcast_dev_flush(struct net_device *dev)
856 860
857 spin_unlock_irqrestore(&priv->lock, flags); 861 spin_unlock_irqrestore(&priv->lock, flags);
858 862
859 /*
860 * make sure the in-flight joins have finished before we attempt
861 * to leave
862 */
863 list_for_each_entry_safe(mcast, tmcast, &remove_list, list)
864 if (test_bit(IPOIB_MCAST_FLAG_BUSY, &mcast->flags))
865 wait_for_completion(&mcast->done);
866
867 ipoib_mcast_remove_list(&remove_list); 863 ipoib_mcast_remove_list(&remove_list);
864 mutex_unlock(&priv->mcast_mutex);
868} 865}
869 866
870static int ipoib_mcast_addr_is_valid(const u8 *addr, const u8 *broadcast) 867static int ipoib_mcast_addr_is_valid(const u8 *addr, const u8 *broadcast)
@@ -982,14 +979,6 @@ void ipoib_mcast_restart_task(struct work_struct *work)
982 netif_addr_unlock(dev); 979 netif_addr_unlock(dev);
983 local_irq_restore(flags); 980 local_irq_restore(flags);
984 981
985 /*
986 * make sure the in-flight joins have finished before we attempt
987 * to leave
988 */
989 list_for_each_entry_safe(mcast, tmcast, &remove_list, list)
990 if (test_bit(IPOIB_MCAST_FLAG_BUSY, &mcast->flags))
991 wait_for_completion(&mcast->done);
992
993 ipoib_mcast_remove_list(&remove_list); 982 ipoib_mcast_remove_list(&remove_list);
994 983
995 /* 984 /*
diff --git a/drivers/infiniband/ulp/iser/iscsi_iser.c b/drivers/infiniband/ulp/iser/iscsi_iser.c
index 5a887efb4bdf..37b33d708c2d 100644
--- a/drivers/infiniband/ulp/iser/iscsi_iser.c
+++ b/drivers/infiniband/ulp/iser/iscsi_iser.c
@@ -83,6 +83,7 @@ static struct scsi_host_template iscsi_iser_sht;
83static struct iscsi_transport iscsi_iser_transport; 83static struct iscsi_transport iscsi_iser_transport;
84static struct scsi_transport_template *iscsi_iser_scsi_transport; 84static struct scsi_transport_template *iscsi_iser_scsi_transport;
85static struct workqueue_struct *release_wq; 85static struct workqueue_struct *release_wq;
86static DEFINE_MUTEX(unbind_iser_conn_mutex);
86struct iser_global ig; 87struct iser_global ig;
87 88
88int iser_debug_level = 0; 89int iser_debug_level = 0;
@@ -550,12 +551,14 @@ iscsi_iser_conn_stop(struct iscsi_cls_conn *cls_conn, int flag)
550 */ 551 */
551 if (iser_conn) { 552 if (iser_conn) {
552 mutex_lock(&iser_conn->state_mutex); 553 mutex_lock(&iser_conn->state_mutex);
554 mutex_lock(&unbind_iser_conn_mutex);
553 iser_conn_terminate(iser_conn); 555 iser_conn_terminate(iser_conn);
554 iscsi_conn_stop(cls_conn, flag); 556 iscsi_conn_stop(cls_conn, flag);
555 557
556 /* unbind */ 558 /* unbind */
557 iser_conn->iscsi_conn = NULL; 559 iser_conn->iscsi_conn = NULL;
558 conn->dd_data = NULL; 560 conn->dd_data = NULL;
561 mutex_unlock(&unbind_iser_conn_mutex);
559 562
560 complete(&iser_conn->stop_completion); 563 complete(&iser_conn->stop_completion);
561 mutex_unlock(&iser_conn->state_mutex); 564 mutex_unlock(&iser_conn->state_mutex);
@@ -977,13 +980,21 @@ static int iscsi_iser_slave_alloc(struct scsi_device *sdev)
977 struct iser_conn *iser_conn; 980 struct iser_conn *iser_conn;
978 struct ib_device *ib_dev; 981 struct ib_device *ib_dev;
979 982
983 mutex_lock(&unbind_iser_conn_mutex);
984
980 session = starget_to_session(scsi_target(sdev))->dd_data; 985 session = starget_to_session(scsi_target(sdev))->dd_data;
981 iser_conn = session->leadconn->dd_data; 986 iser_conn = session->leadconn->dd_data;
987 if (!iser_conn) {
988 mutex_unlock(&unbind_iser_conn_mutex);
989 return -ENOTCONN;
990 }
982 ib_dev = iser_conn->ib_conn.device->ib_device; 991 ib_dev = iser_conn->ib_conn.device->ib_device;
983 992
984 if (!(ib_dev->attrs.device_cap_flags & IB_DEVICE_SG_GAPS_REG)) 993 if (!(ib_dev->attrs.device_cap_flags & IB_DEVICE_SG_GAPS_REG))
985 blk_queue_virt_boundary(sdev->request_queue, ~MASK_4K); 994 blk_queue_virt_boundary(sdev->request_queue, ~MASK_4K);
986 995
996 mutex_unlock(&unbind_iser_conn_mutex);
997
987 return 0; 998 return 0;
988} 999}
989 1000
diff --git a/drivers/infiniband/ulp/iser/iser_initiator.c b/drivers/infiniband/ulp/iser/iser_initiator.c
index 12ed62ce9ff7..2a07692007bd 100644
--- a/drivers/infiniband/ulp/iser/iser_initiator.c
+++ b/drivers/infiniband/ulp/iser/iser_initiator.c
@@ -137,8 +137,10 @@ iser_prepare_write_cmd(struct iscsi_task *task,
137 137
138 if (unsol_sz < edtl) { 138 if (unsol_sz < edtl) {
139 hdr->flags |= ISER_WSV; 139 hdr->flags |= ISER_WSV;
140 hdr->write_stag = cpu_to_be32(mem_reg->rkey); 140 if (buf_out->data_len > imm_sz) {
141 hdr->write_va = cpu_to_be64(mem_reg->sge.addr + unsol_sz); 141 hdr->write_stag = cpu_to_be32(mem_reg->rkey);
142 hdr->write_va = cpu_to_be64(mem_reg->sge.addr + unsol_sz);
143 }
142 144
143 iser_dbg("Cmd itt:%d, WRITE tags, RKEY:%#.4X " 145 iser_dbg("Cmd itt:%d, WRITE tags, RKEY:%#.4X "
144 "VA:%#llX + unsol:%d\n", 146 "VA:%#llX + unsol:%d\n",
diff --git a/drivers/infiniband/ulp/iser/iser_verbs.c b/drivers/infiniband/ulp/iser/iser_verbs.c
index c538a38c91ce..26a004e97ae0 100644
--- a/drivers/infiniband/ulp/iser/iser_verbs.c
+++ b/drivers/infiniband/ulp/iser/iser_verbs.c
@@ -708,8 +708,14 @@ iser_calc_scsi_params(struct iser_conn *iser_conn,
708 unsigned short sg_tablesize, sup_sg_tablesize; 708 unsigned short sg_tablesize, sup_sg_tablesize;
709 709
710 sg_tablesize = DIV_ROUND_UP(max_sectors * 512, SIZE_4K); 710 sg_tablesize = DIV_ROUND_UP(max_sectors * 512, SIZE_4K);
711 sup_sg_tablesize = min_t(unsigned, ISCSI_ISER_MAX_SG_TABLESIZE, 711 if (device->ib_device->attrs.device_cap_flags &
712 device->ib_device->attrs.max_fast_reg_page_list_len); 712 IB_DEVICE_MEM_MGT_EXTENSIONS)
713 sup_sg_tablesize =
714 min_t(
715 uint, ISCSI_ISER_MAX_SG_TABLESIZE,
716 device->ib_device->attrs.max_fast_reg_page_list_len);
717 else
718 sup_sg_tablesize = ISCSI_ISER_MAX_SG_TABLESIZE;
713 719
714 iser_conn->scsi_sg_tablesize = min(sg_tablesize, sup_sg_tablesize); 720 iser_conn->scsi_sg_tablesize = min(sg_tablesize, sup_sg_tablesize);
715} 721}
diff --git a/drivers/input/mouse/elan_i2c_core.c b/drivers/input/mouse/elan_i2c_core.c
index 3b616cb7c67f..714cf7f9b138 100644
--- a/drivers/input/mouse/elan_i2c_core.c
+++ b/drivers/input/mouse/elan_i2c_core.c
@@ -1248,6 +1248,10 @@ static const struct acpi_device_id elan_acpi_id[] = {
1248 { "ELAN0100", 0 }, 1248 { "ELAN0100", 0 },
1249 { "ELAN0600", 0 }, 1249 { "ELAN0600", 0 },
1250 { "ELAN0605", 0 }, 1250 { "ELAN0605", 0 },
1251 { "ELAN0608", 0 },
1252 { "ELAN0605", 0 },
1253 { "ELAN0609", 0 },
1254 { "ELAN060B", 0 },
1251 { "ELAN1000", 0 }, 1255 { "ELAN1000", 0 },
1252 { } 1256 { }
1253}; 1257};
diff --git a/drivers/input/mouse/trackpoint.c b/drivers/input/mouse/trackpoint.c
index 922ea02edcc3..20b5b21c1bba 100644
--- a/drivers/input/mouse/trackpoint.c
+++ b/drivers/input/mouse/trackpoint.c
@@ -380,8 +380,8 @@ int trackpoint_detect(struct psmouse *psmouse, bool set_properties)
380 return 0; 380 return 0;
381 381
382 if (trackpoint_read(ps2dev, TP_EXT_BTN, &button_info)) { 382 if (trackpoint_read(ps2dev, TP_EXT_BTN, &button_info)) {
383 psmouse_warn(psmouse, "failed to get extended button data\n"); 383 psmouse_warn(psmouse, "failed to get extended button data, assuming 3 buttons\n");
384 button_info = 0; 384 button_info = 0x33;
385 } 385 }
386 386
387 psmouse->private = kzalloc(sizeof(struct trackpoint_data), GFP_KERNEL); 387 psmouse->private = kzalloc(sizeof(struct trackpoint_data), GFP_KERNEL);
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index abc6ca65a47b..4ad7e5e31943 100644
--- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c
@@ -4454,6 +4454,7 @@ static int amd_ir_set_vcpu_affinity(struct irq_data *data, void *vcpu_info)
4454 /* Setting */ 4454 /* Setting */
4455 irte->hi.fields.ga_root_ptr = (pi_data->base >> 12); 4455 irte->hi.fields.ga_root_ptr = (pi_data->base >> 12);
4456 irte->hi.fields.vector = vcpu_pi_info->vector; 4456 irte->hi.fields.vector = vcpu_pi_info->vector;
4457 irte->lo.fields_vapic.ga_log_intr = 1;
4457 irte->lo.fields_vapic.guest_mode = 1; 4458 irte->lo.fields_vapic.guest_mode = 1;
4458 irte->lo.fields_vapic.ga_tag = pi_data->ga_tag; 4459 irte->lo.fields_vapic.ga_tag = pi_data->ga_tag;
4459 4460
diff --git a/drivers/iommu/amd_iommu_init.c b/drivers/iommu/amd_iommu_init.c
index 42ff9a86c102..2292a6cece76 100644
--- a/drivers/iommu/amd_iommu_init.c
+++ b/drivers/iommu/amd_iommu_init.c
@@ -2441,11 +2441,11 @@ static int __init state_next(void)
2441 break; 2441 break;
2442 case IOMMU_ACPI_FINISHED: 2442 case IOMMU_ACPI_FINISHED:
2443 early_enable_iommus(); 2443 early_enable_iommus();
2444 register_syscore_ops(&amd_iommu_syscore_ops);
2445 x86_platform.iommu_shutdown = disable_iommus; 2444 x86_platform.iommu_shutdown = disable_iommus;
2446 init_state = IOMMU_ENABLED; 2445 init_state = IOMMU_ENABLED;
2447 break; 2446 break;
2448 case IOMMU_ENABLED: 2447 case IOMMU_ENABLED:
2448 register_syscore_ops(&amd_iommu_syscore_ops);
2449 ret = amd_iommu_init_pci(); 2449 ret = amd_iommu_init_pci();
2450 init_state = ret ? IOMMU_INIT_ERROR : IOMMU_PCI_INIT; 2450 init_state = ret ? IOMMU_INIT_ERROR : IOMMU_PCI_INIT;
2451 enable_iommus_v2(); 2451 enable_iommus_v2();
diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c
index bc89b4d6c043..2d80fa8a0634 100644
--- a/drivers/iommu/arm-smmu.c
+++ b/drivers/iommu/arm-smmu.c
@@ -400,6 +400,8 @@ struct arm_smmu_device {
400 400
401 u32 cavium_id_base; /* Specific to Cavium */ 401 u32 cavium_id_base; /* Specific to Cavium */
402 402
403 spinlock_t global_sync_lock;
404
403 /* IOMMU core code handle */ 405 /* IOMMU core code handle */
404 struct iommu_device iommu; 406 struct iommu_device iommu;
405}; 407};
@@ -436,7 +438,7 @@ struct arm_smmu_domain {
436 struct arm_smmu_cfg cfg; 438 struct arm_smmu_cfg cfg;
437 enum arm_smmu_domain_stage stage; 439 enum arm_smmu_domain_stage stage;
438 struct mutex init_mutex; /* Protects smmu pointer */ 440 struct mutex init_mutex; /* Protects smmu pointer */
439 spinlock_t cb_lock; /* Serialises ATS1* ops */ 441 spinlock_t cb_lock; /* Serialises ATS1* ops and TLB syncs */
440 struct iommu_domain domain; 442 struct iommu_domain domain;
441}; 443};
442 444
@@ -602,9 +604,12 @@ static void __arm_smmu_tlb_sync(struct arm_smmu_device *smmu,
602static void arm_smmu_tlb_sync_global(struct arm_smmu_device *smmu) 604static void arm_smmu_tlb_sync_global(struct arm_smmu_device *smmu)
603{ 605{
604 void __iomem *base = ARM_SMMU_GR0(smmu); 606 void __iomem *base = ARM_SMMU_GR0(smmu);
607 unsigned long flags;
605 608
609 spin_lock_irqsave(&smmu->global_sync_lock, flags);
606 __arm_smmu_tlb_sync(smmu, base + ARM_SMMU_GR0_sTLBGSYNC, 610 __arm_smmu_tlb_sync(smmu, base + ARM_SMMU_GR0_sTLBGSYNC,
607 base + ARM_SMMU_GR0_sTLBGSTATUS); 611 base + ARM_SMMU_GR0_sTLBGSTATUS);
612 spin_unlock_irqrestore(&smmu->global_sync_lock, flags);
608} 613}
609 614
610static void arm_smmu_tlb_sync_context(void *cookie) 615static void arm_smmu_tlb_sync_context(void *cookie)
@@ -612,9 +617,12 @@ static void arm_smmu_tlb_sync_context(void *cookie)
612 struct arm_smmu_domain *smmu_domain = cookie; 617 struct arm_smmu_domain *smmu_domain = cookie;
613 struct arm_smmu_device *smmu = smmu_domain->smmu; 618 struct arm_smmu_device *smmu = smmu_domain->smmu;
614 void __iomem *base = ARM_SMMU_CB(smmu, smmu_domain->cfg.cbndx); 619 void __iomem *base = ARM_SMMU_CB(smmu, smmu_domain->cfg.cbndx);
620 unsigned long flags;
615 621
622 spin_lock_irqsave(&smmu_domain->cb_lock, flags);
616 __arm_smmu_tlb_sync(smmu, base + ARM_SMMU_CB_TLBSYNC, 623 __arm_smmu_tlb_sync(smmu, base + ARM_SMMU_CB_TLBSYNC,
617 base + ARM_SMMU_CB_TLBSTATUS); 624 base + ARM_SMMU_CB_TLBSTATUS);
625 spin_unlock_irqrestore(&smmu_domain->cb_lock, flags);
618} 626}
619 627
620static void arm_smmu_tlb_sync_vmid(void *cookie) 628static void arm_smmu_tlb_sync_vmid(void *cookie)
@@ -1511,6 +1519,12 @@ static int arm_smmu_add_device(struct device *dev)
1511 1519
1512 if (using_legacy_binding) { 1520 if (using_legacy_binding) {
1513 ret = arm_smmu_register_legacy_master(dev, &smmu); 1521 ret = arm_smmu_register_legacy_master(dev, &smmu);
1522
1523 /*
1524 * If dev->iommu_fwspec is initally NULL, arm_smmu_register_legacy_master()
1525 * will allocate/initialise a new one. Thus we need to update fwspec for
1526 * later use.
1527 */
1514 fwspec = dev->iommu_fwspec; 1528 fwspec = dev->iommu_fwspec;
1515 if (ret) 1529 if (ret)
1516 goto out_free; 1530 goto out_free;
@@ -1550,15 +1564,15 @@ static int arm_smmu_add_device(struct device *dev)
1550 1564
1551 ret = arm_smmu_master_alloc_smes(dev); 1565 ret = arm_smmu_master_alloc_smes(dev);
1552 if (ret) 1566 if (ret)
1553 goto out_free; 1567 goto out_cfg_free;
1554 1568
1555 iommu_device_link(&smmu->iommu, dev); 1569 iommu_device_link(&smmu->iommu, dev);
1556 1570
1557 return 0; 1571 return 0;
1558 1572
1573out_cfg_free:
1574 kfree(cfg);
1559out_free: 1575out_free:
1560 if (fwspec)
1561 kfree(fwspec->iommu_priv);
1562 iommu_fwspec_free(dev); 1576 iommu_fwspec_free(dev);
1563 return ret; 1577 return ret;
1564} 1578}
@@ -1925,6 +1939,7 @@ static int arm_smmu_device_cfg_probe(struct arm_smmu_device *smmu)
1925 1939
1926 smmu->num_mapping_groups = size; 1940 smmu->num_mapping_groups = size;
1927 mutex_init(&smmu->stream_map_mutex); 1941 mutex_init(&smmu->stream_map_mutex);
1942 spin_lock_init(&smmu->global_sync_lock);
1928 1943
1929 if (smmu->version < ARM_SMMU_V2 || !(id & ID0_PTFS_NO_AARCH32)) { 1944 if (smmu->version < ARM_SMMU_V2 || !(id & ID0_PTFS_NO_AARCH32)) {
1930 smmu->features |= ARM_SMMU_FEAT_FMT_AARCH32_L; 1945 smmu->features |= ARM_SMMU_FEAT_FMT_AARCH32_L;
diff --git a/drivers/iommu/io-pgtable-arm-v7s.c b/drivers/iommu/io-pgtable-arm-v7s.c
index af330f513653..d665d0dc16e8 100644
--- a/drivers/iommu/io-pgtable-arm-v7s.c
+++ b/drivers/iommu/io-pgtable-arm-v7s.c
@@ -479,6 +479,9 @@ static int arm_v7s_map(struct io_pgtable_ops *ops, unsigned long iova,
479 if (!(prot & (IOMMU_READ | IOMMU_WRITE))) 479 if (!(prot & (IOMMU_READ | IOMMU_WRITE)))
480 return 0; 480 return 0;
481 481
482 if (WARN_ON(upper_32_bits(iova) || upper_32_bits(paddr)))
483 return -ERANGE;
484
482 ret = __arm_v7s_map(data, iova, paddr, size, prot, 1, data->pgd); 485 ret = __arm_v7s_map(data, iova, paddr, size, prot, 1, data->pgd);
483 /* 486 /*
484 * Synchronise all PTE updates for the new mapping before there's 487 * Synchronise all PTE updates for the new mapping before there's
@@ -659,6 +662,9 @@ static int arm_v7s_unmap(struct io_pgtable_ops *ops, unsigned long iova,
659 struct arm_v7s_io_pgtable *data = io_pgtable_ops_to_data(ops); 662 struct arm_v7s_io_pgtable *data = io_pgtable_ops_to_data(ops);
660 size_t unmapped; 663 size_t unmapped;
661 664
665 if (WARN_ON(upper_32_bits(iova)))
666 return 0;
667
662 unmapped = __arm_v7s_unmap(data, iova, size, 1, data->pgd); 668 unmapped = __arm_v7s_unmap(data, iova, size, 1, data->pgd);
663 if (unmapped) 669 if (unmapped)
664 io_pgtable_tlb_sync(&data->iop); 670 io_pgtable_tlb_sync(&data->iop);
diff --git a/drivers/iommu/io-pgtable-arm.c b/drivers/iommu/io-pgtable-arm.c
index b182039862c5..e8018a308868 100644
--- a/drivers/iommu/io-pgtable-arm.c
+++ b/drivers/iommu/io-pgtable-arm.c
@@ -452,6 +452,10 @@ static int arm_lpae_map(struct io_pgtable_ops *ops, unsigned long iova,
452 if (!(iommu_prot & (IOMMU_READ | IOMMU_WRITE))) 452 if (!(iommu_prot & (IOMMU_READ | IOMMU_WRITE)))
453 return 0; 453 return 0;
454 454
455 if (WARN_ON(iova >= (1ULL << data->iop.cfg.ias) ||
456 paddr >= (1ULL << data->iop.cfg.oas)))
457 return -ERANGE;
458
455 prot = arm_lpae_prot_to_pte(data, iommu_prot); 459 prot = arm_lpae_prot_to_pte(data, iommu_prot);
456 ret = __arm_lpae_map(data, iova, paddr, size, prot, lvl, ptep); 460 ret = __arm_lpae_map(data, iova, paddr, size, prot, lvl, ptep);
457 /* 461 /*
@@ -610,6 +614,9 @@ static int arm_lpae_unmap(struct io_pgtable_ops *ops, unsigned long iova,
610 arm_lpae_iopte *ptep = data->pgd; 614 arm_lpae_iopte *ptep = data->pgd;
611 int lvl = ARM_LPAE_START_LVL(data); 615 int lvl = ARM_LPAE_START_LVL(data);
612 616
617 if (WARN_ON(iova >= (1ULL << data->iop.cfg.ias)))
618 return 0;
619
613 unmapped = __arm_lpae_unmap(data, iova, size, lvl, ptep); 620 unmapped = __arm_lpae_unmap(data, iova, size, lvl, ptep);
614 if (unmapped) 621 if (unmapped)
615 io_pgtable_tlb_sync(&data->iop); 622 io_pgtable_tlb_sync(&data->iop);
diff --git a/drivers/iommu/io-pgtable.h b/drivers/iommu/io-pgtable.h
index 524263a7ae6f..a3e667077b14 100644
--- a/drivers/iommu/io-pgtable.h
+++ b/drivers/iommu/io-pgtable.h
@@ -158,14 +158,12 @@ void free_io_pgtable_ops(struct io_pgtable_ops *ops);
158 * @fmt: The page table format. 158 * @fmt: The page table format.
159 * @cookie: An opaque token provided by the IOMMU driver and passed back to 159 * @cookie: An opaque token provided by the IOMMU driver and passed back to
160 * any callback routines. 160 * any callback routines.
161 * @tlb_sync_pending: Private flag for optimising out redundant syncs.
162 * @cfg: A copy of the page table configuration. 161 * @cfg: A copy of the page table configuration.
163 * @ops: The page table operations in use for this set of page tables. 162 * @ops: The page table operations in use for this set of page tables.
164 */ 163 */
165struct io_pgtable { 164struct io_pgtable {
166 enum io_pgtable_fmt fmt; 165 enum io_pgtable_fmt fmt;
167 void *cookie; 166 void *cookie;
168 bool tlb_sync_pending;
169 struct io_pgtable_cfg cfg; 167 struct io_pgtable_cfg cfg;
170 struct io_pgtable_ops ops; 168 struct io_pgtable_ops ops;
171}; 169};
@@ -175,22 +173,17 @@ struct io_pgtable {
175static inline void io_pgtable_tlb_flush_all(struct io_pgtable *iop) 173static inline void io_pgtable_tlb_flush_all(struct io_pgtable *iop)
176{ 174{
177 iop->cfg.tlb->tlb_flush_all(iop->cookie); 175 iop->cfg.tlb->tlb_flush_all(iop->cookie);
178 iop->tlb_sync_pending = true;
179} 176}
180 177
181static inline void io_pgtable_tlb_add_flush(struct io_pgtable *iop, 178static inline void io_pgtable_tlb_add_flush(struct io_pgtable *iop,
182 unsigned long iova, size_t size, size_t granule, bool leaf) 179 unsigned long iova, size_t size, size_t granule, bool leaf)
183{ 180{
184 iop->cfg.tlb->tlb_add_flush(iova, size, granule, leaf, iop->cookie); 181 iop->cfg.tlb->tlb_add_flush(iova, size, granule, leaf, iop->cookie);
185 iop->tlb_sync_pending = true;
186} 182}
187 183
188static inline void io_pgtable_tlb_sync(struct io_pgtable *iop) 184static inline void io_pgtable_tlb_sync(struct io_pgtable *iop)
189{ 185{
190 if (iop->tlb_sync_pending) { 186 iop->cfg.tlb->tlb_sync(iop->cookie);
191 iop->cfg.tlb->tlb_sync(iop->cookie);
192 iop->tlb_sync_pending = false;
193 }
194} 187}
195 188
196/** 189/**
diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c
index 5d14cd15198d..91c6d367ab35 100644
--- a/drivers/iommu/mtk_iommu.c
+++ b/drivers/iommu/mtk_iommu.c
@@ -129,6 +129,7 @@ static void mtk_iommu_tlb_add_flush_nosync(unsigned long iova, size_t size,
129 writel_relaxed(iova, data->base + REG_MMU_INVLD_START_A); 129 writel_relaxed(iova, data->base + REG_MMU_INVLD_START_A);
130 writel_relaxed(iova + size - 1, data->base + REG_MMU_INVLD_END_A); 130 writel_relaxed(iova + size - 1, data->base + REG_MMU_INVLD_END_A);
131 writel_relaxed(F_MMU_INV_RANGE, data->base + REG_MMU_INVALIDATE); 131 writel_relaxed(F_MMU_INV_RANGE, data->base + REG_MMU_INVALIDATE);
132 data->tlb_flush_active = true;
132} 133}
133 134
134static void mtk_iommu_tlb_sync(void *cookie) 135static void mtk_iommu_tlb_sync(void *cookie)
@@ -137,6 +138,10 @@ static void mtk_iommu_tlb_sync(void *cookie)
137 int ret; 138 int ret;
138 u32 tmp; 139 u32 tmp;
139 140
141 /* Avoid timing out if there's nothing to wait for */
142 if (!data->tlb_flush_active)
143 return;
144
140 ret = readl_poll_timeout_atomic(data->base + REG_MMU_CPE_DONE, tmp, 145 ret = readl_poll_timeout_atomic(data->base + REG_MMU_CPE_DONE, tmp,
141 tmp != 0, 10, 100000); 146 tmp != 0, 10, 100000);
142 if (ret) { 147 if (ret) {
@@ -146,6 +151,7 @@ static void mtk_iommu_tlb_sync(void *cookie)
146 } 151 }
147 /* Clear the CPE status */ 152 /* Clear the CPE status */
148 writel_relaxed(0, data->base + REG_MMU_CPE_DONE); 153 writel_relaxed(0, data->base + REG_MMU_CPE_DONE);
154 data->tlb_flush_active = false;
149} 155}
150 156
151static const struct iommu_gather_ops mtk_iommu_gather_ops = { 157static const struct iommu_gather_ops mtk_iommu_gather_ops = {
diff --git a/drivers/iommu/mtk_iommu.h b/drivers/iommu/mtk_iommu.h
index 2a28eadeea0e..c06cc91b5d9a 100644
--- a/drivers/iommu/mtk_iommu.h
+++ b/drivers/iommu/mtk_iommu.h
@@ -47,6 +47,7 @@ struct mtk_iommu_data {
47 struct iommu_group *m4u_group; 47 struct iommu_group *m4u_group;
48 struct mtk_smi_iommu smi_imu; /* SMI larb iommu info */ 48 struct mtk_smi_iommu smi_imu; /* SMI larb iommu info */
49 bool enable_4GB; 49 bool enable_4GB;
50 bool tlb_flush_active;
50 51
51 struct iommu_device iommu; 52 struct iommu_device iommu;
52}; 53};
diff --git a/drivers/irqchip/irq-atmel-aic-common.c b/drivers/irqchip/irq-atmel-aic-common.c
index 28b26c80f4cf..072bd227b6c6 100644
--- a/drivers/irqchip/irq-atmel-aic-common.c
+++ b/drivers/irqchip/irq-atmel-aic-common.c
@@ -137,14 +137,14 @@ static void __init aic_common_ext_irq_of_init(struct irq_domain *domain)
137#define AT91_RTC_IMR 0x28 137#define AT91_RTC_IMR 0x28
138#define AT91_RTC_IRQ_MASK 0x1f 138#define AT91_RTC_IRQ_MASK 0x1f
139 139
140void __init aic_common_rtc_irq_fixup(struct device_node *root) 140void __init aic_common_rtc_irq_fixup(void)
141{ 141{
142 struct device_node *np; 142 struct device_node *np;
143 void __iomem *regs; 143 void __iomem *regs;
144 144
145 np = of_find_compatible_node(root, NULL, "atmel,at91rm9200-rtc"); 145 np = of_find_compatible_node(NULL, NULL, "atmel,at91rm9200-rtc");
146 if (!np) 146 if (!np)
147 np = of_find_compatible_node(root, NULL, 147 np = of_find_compatible_node(NULL, NULL,
148 "atmel,at91sam9x5-rtc"); 148 "atmel,at91sam9x5-rtc");
149 149
150 if (!np) 150 if (!np)
@@ -165,7 +165,7 @@ void __init aic_common_rtc_irq_fixup(struct device_node *root)
165#define AT91_RTT_ALMIEN (1 << 16) /* Alarm Interrupt Enable */ 165#define AT91_RTT_ALMIEN (1 << 16) /* Alarm Interrupt Enable */
166#define AT91_RTT_RTTINCIEN (1 << 17) /* Real Time Timer Increment Interrupt Enable */ 166#define AT91_RTT_RTTINCIEN (1 << 17) /* Real Time Timer Increment Interrupt Enable */
167 167
168void __init aic_common_rtt_irq_fixup(struct device_node *root) 168void __init aic_common_rtt_irq_fixup(void)
169{ 169{
170 struct device_node *np; 170 struct device_node *np;
171 void __iomem *regs; 171 void __iomem *regs;
@@ -196,11 +196,10 @@ static void __init aic_common_irq_fixup(const struct of_device_id *matches)
196 return; 196 return;
197 197
198 match = of_match_node(matches, root); 198 match = of_match_node(matches, root);
199 of_node_put(root);
200 199
201 if (match) { 200 if (match) {
202 void (*fixup)(struct device_node *) = match->data; 201 void (*fixup)(void) = match->data;
203 fixup(root); 202 fixup();
204 } 203 }
205 204
206 of_node_put(root); 205 of_node_put(root);
diff --git a/drivers/irqchip/irq-atmel-aic-common.h b/drivers/irqchip/irq-atmel-aic-common.h
index af60376d50de..242e62c1851e 100644
--- a/drivers/irqchip/irq-atmel-aic-common.h
+++ b/drivers/irqchip/irq-atmel-aic-common.h
@@ -33,8 +33,8 @@ struct irq_domain *__init aic_common_of_init(struct device_node *node,
33 const char *name, int nirqs, 33 const char *name, int nirqs,
34 const struct of_device_id *matches); 34 const struct of_device_id *matches);
35 35
36void __init aic_common_rtc_irq_fixup(struct device_node *root); 36void __init aic_common_rtc_irq_fixup(void);
37 37
38void __init aic_common_rtt_irq_fixup(struct device_node *root); 38void __init aic_common_rtt_irq_fixup(void);
39 39
40#endif /* __IRQ_ATMEL_AIC_COMMON_H */ 40#endif /* __IRQ_ATMEL_AIC_COMMON_H */
diff --git a/drivers/irqchip/irq-atmel-aic.c b/drivers/irqchip/irq-atmel-aic.c
index 37f952dd9fc9..bb1ad451392f 100644
--- a/drivers/irqchip/irq-atmel-aic.c
+++ b/drivers/irqchip/irq-atmel-aic.c
@@ -209,20 +209,20 @@ static const struct irq_domain_ops aic_irq_ops = {
209 .xlate = aic_irq_domain_xlate, 209 .xlate = aic_irq_domain_xlate,
210}; 210};
211 211
212static void __init at91rm9200_aic_irq_fixup(struct device_node *root) 212static void __init at91rm9200_aic_irq_fixup(void)
213{ 213{
214 aic_common_rtc_irq_fixup(root); 214 aic_common_rtc_irq_fixup();
215} 215}
216 216
217static void __init at91sam9260_aic_irq_fixup(struct device_node *root) 217static void __init at91sam9260_aic_irq_fixup(void)
218{ 218{
219 aic_common_rtt_irq_fixup(root); 219 aic_common_rtt_irq_fixup();
220} 220}
221 221
222static void __init at91sam9g45_aic_irq_fixup(struct device_node *root) 222static void __init at91sam9g45_aic_irq_fixup(void)
223{ 223{
224 aic_common_rtc_irq_fixup(root); 224 aic_common_rtc_irq_fixup();
225 aic_common_rtt_irq_fixup(root); 225 aic_common_rtt_irq_fixup();
226} 226}
227 227
228static const struct of_device_id aic_irq_fixups[] __initconst = { 228static const struct of_device_id aic_irq_fixups[] __initconst = {
diff --git a/drivers/irqchip/irq-atmel-aic5.c b/drivers/irqchip/irq-atmel-aic5.c
index c04ee9a23d09..6acad2ea0fb3 100644
--- a/drivers/irqchip/irq-atmel-aic5.c
+++ b/drivers/irqchip/irq-atmel-aic5.c
@@ -305,9 +305,9 @@ static const struct irq_domain_ops aic5_irq_ops = {
305 .xlate = aic5_irq_domain_xlate, 305 .xlate = aic5_irq_domain_xlate,
306}; 306};
307 307
308static void __init sama5d3_aic_irq_fixup(struct device_node *root) 308static void __init sama5d3_aic_irq_fixup(void)
309{ 309{
310 aic_common_rtc_irq_fixup(root); 310 aic_common_rtc_irq_fixup();
311} 311}
312 312
313static const struct of_device_id aic5_irq_fixups[] __initconst = { 313static const struct of_device_id aic5_irq_fixups[] __initconst = {
diff --git a/drivers/irqchip/irq-brcmstb-l2.c b/drivers/irqchip/irq-brcmstb-l2.c
index bddf169c4b37..b009b916a292 100644
--- a/drivers/irqchip/irq-brcmstb-l2.c
+++ b/drivers/irqchip/irq-brcmstb-l2.c
@@ -189,6 +189,7 @@ static int __init brcmstb_l2_intc_of_init(struct device_node *np,
189 189
190 ct->chip.irq_suspend = brcmstb_l2_intc_suspend; 190 ct->chip.irq_suspend = brcmstb_l2_intc_suspend;
191 ct->chip.irq_resume = brcmstb_l2_intc_resume; 191 ct->chip.irq_resume = brcmstb_l2_intc_resume;
192 ct->chip.irq_pm_shutdown = brcmstb_l2_intc_suspend;
192 193
193 if (data->can_wake) { 194 if (data->can_wake) {
194 /* This IRQ chip can wake the system, set all child interrupts 195 /* This IRQ chip can wake the system, set all child interrupts
diff --git a/drivers/irqchip/irq-digicolor.c b/drivers/irqchip/irq-digicolor.c
index dad85e74c37c..3aae015469a5 100644
--- a/drivers/irqchip/irq-digicolor.c
+++ b/drivers/irqchip/irq-digicolor.c
@@ -71,7 +71,7 @@ static void __init digicolor_set_gc(void __iomem *reg_base, unsigned irq_base,
71static int __init digicolor_of_init(struct device_node *node, 71static int __init digicolor_of_init(struct device_node *node,
72 struct device_node *parent) 72 struct device_node *parent)
73{ 73{
74 static void __iomem *reg_base; 74 void __iomem *reg_base;
75 unsigned int clr = IRQ_NOREQUEST | IRQ_NOPROBE | IRQ_NOAUTOEN; 75 unsigned int clr = IRQ_NOREQUEST | IRQ_NOPROBE | IRQ_NOAUTOEN;
76 struct regmap *ucregs; 76 struct regmap *ucregs;
77 int ret; 77 int ret;
diff --git a/drivers/irqchip/irq-gic-realview.c b/drivers/irqchip/irq-gic-realview.c
index 54c296401525..18d58d2b4ffe 100644
--- a/drivers/irqchip/irq-gic-realview.c
+++ b/drivers/irqchip/irq-gic-realview.c
@@ -43,7 +43,7 @@ static const struct of_device_id syscon_pldset_of_match[] = {
43static int __init 43static int __init
44realview_gic_of_init(struct device_node *node, struct device_node *parent) 44realview_gic_of_init(struct device_node *node, struct device_node *parent)
45{ 45{
46 static struct regmap *map; 46 struct regmap *map;
47 struct device_node *np; 47 struct device_node *np;
48 const struct of_device_id *gic_id; 48 const struct of_device_id *gic_id;
49 u32 pld1_ctrl; 49 u32 pld1_ctrl;
diff --git a/drivers/irqchip/irq-gic-v3-its-platform-msi.c b/drivers/irqchip/irq-gic-v3-its-platform-msi.c
index 249240d9a425..833a90fe33ae 100644
--- a/drivers/irqchip/irq-gic-v3-its-platform-msi.c
+++ b/drivers/irqchip/irq-gic-v3-its-platform-msi.c
@@ -43,6 +43,7 @@ static int of_pmsi_get_dev_id(struct irq_domain *domain, struct device *dev,
43 *dev_id = args.args[0]; 43 *dev_id = args.args[0];
44 break; 44 break;
45 } 45 }
46 index++;
46 } while (!ret); 47 } while (!ret);
47 48
48 return ret; 49 return ret;
diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
index 68932873eebc..284738add89b 100644
--- a/drivers/irqchip/irq-gic-v3-its.c
+++ b/drivers/irqchip/irq-gic-v3-its.c
@@ -1835,7 +1835,7 @@ static int __init its_of_probe(struct device_node *node)
1835 1835
1836#define ACPI_GICV3_ITS_MEM_SIZE (SZ_128K) 1836#define ACPI_GICV3_ITS_MEM_SIZE (SZ_128K)
1837 1837
1838#if defined(CONFIG_ACPI_NUMA) && (ACPI_CA_VERSION >= 0x20170531) 1838#ifdef CONFIG_ACPI_NUMA
1839struct its_srat_map { 1839struct its_srat_map {
1840 /* numa node id */ 1840 /* numa node id */
1841 u32 numa_node; 1841 u32 numa_node;
@@ -1843,7 +1843,7 @@ struct its_srat_map {
1843 u32 its_id; 1843 u32 its_id;
1844}; 1844};
1845 1845
1846static struct its_srat_map its_srat_maps[MAX_NUMNODES] __initdata; 1846static struct its_srat_map *its_srat_maps __initdata;
1847static int its_in_srat __initdata; 1847static int its_in_srat __initdata;
1848 1848
1849static int __init acpi_get_its_numa_node(u32 its_id) 1849static int __init acpi_get_its_numa_node(u32 its_id)
@@ -1857,6 +1857,12 @@ static int __init acpi_get_its_numa_node(u32 its_id)
1857 return NUMA_NO_NODE; 1857 return NUMA_NO_NODE;
1858} 1858}
1859 1859
1860static int __init gic_acpi_match_srat_its(struct acpi_subtable_header *header,
1861 const unsigned long end)
1862{
1863 return 0;
1864}
1865
1860static int __init gic_acpi_parse_srat_its(struct acpi_subtable_header *header, 1866static int __init gic_acpi_parse_srat_its(struct acpi_subtable_header *header,
1861 const unsigned long end) 1867 const unsigned long end)
1862{ 1868{
@@ -1873,12 +1879,6 @@ static int __init gic_acpi_parse_srat_its(struct acpi_subtable_header *header,
1873 return -EINVAL; 1879 return -EINVAL;
1874 } 1880 }
1875 1881
1876 if (its_in_srat >= MAX_NUMNODES) {
1877 pr_err("SRAT: ITS affinity exceeding max count[%d]\n",
1878 MAX_NUMNODES);
1879 return -EINVAL;
1880 }
1881
1882 node = acpi_map_pxm_to_node(its_affinity->proximity_domain); 1882 node = acpi_map_pxm_to_node(its_affinity->proximity_domain);
1883 1883
1884 if (node == NUMA_NO_NODE || node >= MAX_NUMNODES) { 1884 if (node == NUMA_NO_NODE || node >= MAX_NUMNODES) {
@@ -1897,14 +1897,37 @@ static int __init gic_acpi_parse_srat_its(struct acpi_subtable_header *header,
1897 1897
1898static void __init acpi_table_parse_srat_its(void) 1898static void __init acpi_table_parse_srat_its(void)
1899{ 1899{
1900 int count;
1901
1902 count = acpi_table_parse_entries(ACPI_SIG_SRAT,
1903 sizeof(struct acpi_table_srat),
1904 ACPI_SRAT_TYPE_GIC_ITS_AFFINITY,
1905 gic_acpi_match_srat_its, 0);
1906 if (count <= 0)
1907 return;
1908
1909 its_srat_maps = kmalloc(count * sizeof(struct its_srat_map),
1910 GFP_KERNEL);
1911 if (!its_srat_maps) {
1912 pr_warn("SRAT: Failed to allocate memory for its_srat_maps!\n");
1913 return;
1914 }
1915
1900 acpi_table_parse_entries(ACPI_SIG_SRAT, 1916 acpi_table_parse_entries(ACPI_SIG_SRAT,
1901 sizeof(struct acpi_table_srat), 1917 sizeof(struct acpi_table_srat),
1902 ACPI_SRAT_TYPE_GIC_ITS_AFFINITY, 1918 ACPI_SRAT_TYPE_GIC_ITS_AFFINITY,
1903 gic_acpi_parse_srat_its, 0); 1919 gic_acpi_parse_srat_its, 0);
1904} 1920}
1921
1922/* free the its_srat_maps after ITS probing */
1923static void __init acpi_its_srat_maps_free(void)
1924{
1925 kfree(its_srat_maps);
1926}
1905#else 1927#else
1906static void __init acpi_table_parse_srat_its(void) { } 1928static void __init acpi_table_parse_srat_its(void) { }
1907static int __init acpi_get_its_numa_node(u32 its_id) { return NUMA_NO_NODE; } 1929static int __init acpi_get_its_numa_node(u32 its_id) { return NUMA_NO_NODE; }
1930static void __init acpi_its_srat_maps_free(void) { }
1908#endif 1931#endif
1909 1932
1910static int __init gic_acpi_parse_madt_its(struct acpi_subtable_header *header, 1933static int __init gic_acpi_parse_madt_its(struct acpi_subtable_header *header,
@@ -1951,6 +1974,7 @@ static void __init its_acpi_probe(void)
1951 acpi_table_parse_srat_its(); 1974 acpi_table_parse_srat_its();
1952 acpi_table_parse_madt(ACPI_MADT_TYPE_GENERIC_TRANSLATOR, 1975 acpi_table_parse_madt(ACPI_MADT_TYPE_GENERIC_TRANSLATOR,
1953 gic_acpi_parse_madt_its, 0); 1976 gic_acpi_parse_madt_its, 0);
1977 acpi_its_srat_maps_free();
1954} 1978}
1955#else 1979#else
1956static void __init its_acpi_probe(void) { } 1980static void __init its_acpi_probe(void) { }
diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c
index dbffb7ab6203..984c3ecfd22c 100644
--- a/drivers/irqchip/irq-gic-v3.c
+++ b/drivers/irqchip/irq-gic-v3.c
@@ -353,6 +353,8 @@ static asmlinkage void __exception_irq_entry gic_handle_irq(struct pt_regs *regs
353 353
354 if (static_key_true(&supports_deactivate)) 354 if (static_key_true(&supports_deactivate))
355 gic_write_eoir(irqnr); 355 gic_write_eoir(irqnr);
356 else
357 isb();
356 358
357 err = handle_domain_irq(gic_data.domain, irqnr, regs); 359 err = handle_domain_irq(gic_data.domain, irqnr, regs);
358 if (err) { 360 if (err) {
@@ -640,11 +642,16 @@ static void gic_smp_init(void)
640static int gic_set_affinity(struct irq_data *d, const struct cpumask *mask_val, 642static int gic_set_affinity(struct irq_data *d, const struct cpumask *mask_val,
641 bool force) 643 bool force)
642{ 644{
643 unsigned int cpu = cpumask_any_and(mask_val, cpu_online_mask); 645 unsigned int cpu;
644 void __iomem *reg; 646 void __iomem *reg;
645 int enabled; 647 int enabled;
646 u64 val; 648 u64 val;
647 649
650 if (force)
651 cpu = cpumask_first(mask_val);
652 else
653 cpu = cpumask_any_and(mask_val, cpu_online_mask);
654
648 if (cpu >= nr_cpu_ids) 655 if (cpu >= nr_cpu_ids)
649 return -EINVAL; 656 return -EINVAL;
650 657
@@ -831,8 +838,11 @@ static int gic_irq_domain_alloc(struct irq_domain *domain, unsigned int virq,
831 if (ret) 838 if (ret)
832 return ret; 839 return ret;
833 840
834 for (i = 0; i < nr_irqs; i++) 841 for (i = 0; i < nr_irqs; i++) {
835 gic_irq_domain_map(domain, virq + i, hwirq + i); 842 ret = gic_irq_domain_map(domain, virq + i, hwirq + i);
843 if (ret)
844 return ret;
845 }
836 846
837 return 0; 847 return 0;
838} 848}
diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c
index 1b1df4f770bd..d3e7c43718b8 100644
--- a/drivers/irqchip/irq-gic.c
+++ b/drivers/irqchip/irq-gic.c
@@ -361,6 +361,7 @@ static void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
361 if (likely(irqnr > 15 && irqnr < 1020)) { 361 if (likely(irqnr > 15 && irqnr < 1020)) {
362 if (static_key_true(&supports_deactivate)) 362 if (static_key_true(&supports_deactivate))
363 writel_relaxed(irqstat, cpu_base + GIC_CPU_EOI); 363 writel_relaxed(irqstat, cpu_base + GIC_CPU_EOI);
364 isb();
364 handle_domain_irq(gic->domain, irqnr, regs); 365 handle_domain_irq(gic->domain, irqnr, regs);
365 continue; 366 continue;
366 } 367 }
@@ -401,10 +402,12 @@ static void gic_handle_cascade_irq(struct irq_desc *desc)
401 goto out; 402 goto out;
402 403
403 cascade_irq = irq_find_mapping(chip_data->domain, gic_irq); 404 cascade_irq = irq_find_mapping(chip_data->domain, gic_irq);
404 if (unlikely(gic_irq < 32 || gic_irq > 1020)) 405 if (unlikely(gic_irq < 32 || gic_irq > 1020)) {
405 handle_bad_irq(desc); 406 handle_bad_irq(desc);
406 else 407 } else {
408 isb();
407 generic_handle_irq(cascade_irq); 409 generic_handle_irq(cascade_irq);
410 }
408 411
409 out: 412 out:
410 chained_irq_exit(chip, desc); 413 chained_irq_exit(chip, desc);
@@ -1027,8 +1030,11 @@ static int gic_irq_domain_alloc(struct irq_domain *domain, unsigned int virq,
1027 if (ret) 1030 if (ret)
1028 return ret; 1031 return ret;
1029 1032
1030 for (i = 0; i < nr_irqs; i++) 1033 for (i = 0; i < nr_irqs; i++) {
1031 gic_irq_domain_map(domain, virq + i, hwirq + i); 1034 ret = gic_irq_domain_map(domain, virq + i, hwirq + i);
1035 if (ret)
1036 return ret;
1037 }
1032 1038
1033 return 0; 1039 return 0;
1034} 1040}
diff --git a/drivers/irqchip/irq-mips-cpu.c b/drivers/irqchip/irq-mips-cpu.c
index 0a8ed1c05518..14461cbfab2f 100644
--- a/drivers/irqchip/irq-mips-cpu.c
+++ b/drivers/irqchip/irq-mips-cpu.c
@@ -154,7 +154,7 @@ asmlinkage void __weak plat_irq_dispatch(void)
154static int mips_cpu_intc_map(struct irq_domain *d, unsigned int irq, 154static int mips_cpu_intc_map(struct irq_domain *d, unsigned int irq,
155 irq_hw_number_t hw) 155 irq_hw_number_t hw)
156{ 156{
157 static struct irq_chip *chip; 157 struct irq_chip *chip;
158 158
159 if (hw < 2 && cpu_has_mipsmt) { 159 if (hw < 2 && cpu_has_mipsmt) {
160 /* Software interrupts are used for MT/CMT IPI */ 160 /* Software interrupts are used for MT/CMT IPI */
diff --git a/drivers/irqchip/irq-mips-gic.c b/drivers/irqchip/irq-mips-gic.c
index 832ebf4062f7..6ab1d3afec02 100644
--- a/drivers/irqchip/irq-mips-gic.c
+++ b/drivers/irqchip/irq-mips-gic.c
@@ -950,7 +950,6 @@ static void __init __gic_init(unsigned long gic_base_addr,
950 &gic_irq_domain_ops, NULL); 950 &gic_irq_domain_ops, NULL);
951 if (!gic_irq_domain) 951 if (!gic_irq_domain)
952 panic("Failed to add GIC IRQ domain"); 952 panic("Failed to add GIC IRQ domain");
953 gic_irq_domain->name = "mips-gic-irq";
954 953
955 gic_ipi_domain = irq_domain_add_hierarchy(gic_irq_domain, 954 gic_ipi_domain = irq_domain_add_hierarchy(gic_irq_domain,
956 IRQ_DOMAIN_FLAG_IPI_PER_CPU, 955 IRQ_DOMAIN_FLAG_IPI_PER_CPU,
@@ -959,7 +958,6 @@ static void __init __gic_init(unsigned long gic_base_addr,
959 if (!gic_ipi_domain) 958 if (!gic_ipi_domain)
960 panic("Failed to add GIC IPI domain"); 959 panic("Failed to add GIC IPI domain");
961 960
962 gic_ipi_domain->name = "mips-gic-ipi";
963 irq_domain_update_bus_token(gic_ipi_domain, DOMAIN_BUS_IPI); 961 irq_domain_update_bus_token(gic_ipi_domain, DOMAIN_BUS_IPI);
964 962
965 if (node && 963 if (node &&
diff --git a/drivers/isdn/divert/isdn_divert.c b/drivers/isdn/divert/isdn_divert.c
index 060d357f107f..6f423bc49d0d 100644
--- a/drivers/isdn/divert/isdn_divert.c
+++ b/drivers/isdn/divert/isdn_divert.c
@@ -485,18 +485,19 @@ static int isdn_divert_icall(isdn_ctrl *ic)
485 cs->deflect_dest[0] = '\0'; 485 cs->deflect_dest[0] = '\0';
486 retval = 4; /* only proceed */ 486 retval = 4; /* only proceed */
487 } 487 }
488 sprintf(cs->info, "%d 0x%lx %s %s %s %s 0x%x 0x%x %d %d %s\n", 488 snprintf(cs->info, sizeof(cs->info),
489 cs->akt_state, 489 "%d 0x%lx %s %s %s %s 0x%x 0x%x %d %d %s\n",
490 cs->divert_id, 490 cs->akt_state,
491 divert_if.drv_to_name(cs->ics.driver), 491 cs->divert_id,
492 (ic->command == ISDN_STAT_ICALLW) ? "1" : "0", 492 divert_if.drv_to_name(cs->ics.driver),
493 cs->ics.parm.setup.phone, 493 (ic->command == ISDN_STAT_ICALLW) ? "1" : "0",
494 cs->ics.parm.setup.eazmsn, 494 cs->ics.parm.setup.phone,
495 cs->ics.parm.setup.si1, 495 cs->ics.parm.setup.eazmsn,
496 cs->ics.parm.setup.si2, 496 cs->ics.parm.setup.si1,
497 cs->ics.parm.setup.screen, 497 cs->ics.parm.setup.si2,
498 dv->rule.waittime, 498 cs->ics.parm.setup.screen,
499 cs->deflect_dest); 499 dv->rule.waittime,
500 cs->deflect_dest);
500 if ((dv->rule.action == DEFLECT_REPORT) || 501 if ((dv->rule.action == DEFLECT_REPORT) ||
501 (dv->rule.action == DEFLECT_REJECT)) { 502 (dv->rule.action == DEFLECT_REJECT)) {
502 put_info_buffer(cs->info); 503 put_info_buffer(cs->info);
diff --git a/drivers/isdn/hardware/avm/c4.c b/drivers/isdn/hardware/avm/c4.c
index 40c7e2cf423b..034cabac699d 100644
--- a/drivers/isdn/hardware/avm/c4.c
+++ b/drivers/isdn/hardware/avm/c4.c
@@ -42,7 +42,7 @@ static char *revision = "$Revision: 1.1.2.2 $";
42 42
43static bool suppress_pollack; 43static bool suppress_pollack;
44 44
45static struct pci_device_id c4_pci_tbl[] = { 45static const struct pci_device_id c4_pci_tbl[] = {
46 { PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_21285, PCI_VENDOR_ID_AVM, PCI_DEVICE_ID_AVM_C4, 0, 0, (unsigned long)4 }, 46 { PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_21285, PCI_VENDOR_ID_AVM, PCI_DEVICE_ID_AVM_C4, 0, 0, (unsigned long)4 },
47 { PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_21285, PCI_VENDOR_ID_AVM, PCI_DEVICE_ID_AVM_C2, 0, 0, (unsigned long)2 }, 47 { PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_21285, PCI_VENDOR_ID_AVM, PCI_DEVICE_ID_AVM_C2, 0, 0, (unsigned long)2 },
48 { } /* Terminating entry */ 48 { } /* Terminating entry */
diff --git a/drivers/isdn/hardware/eicon/divasmain.c b/drivers/isdn/hardware/eicon/divasmain.c
index 8b7ad4f1ab01..b2023e08dcd2 100644
--- a/drivers/isdn/hardware/eicon/divasmain.c
+++ b/drivers/isdn/hardware/eicon/divasmain.c
@@ -110,7 +110,7 @@ typedef struct _diva_os_thread_dpc {
110/* 110/*
111 This table should be sorted by PCI device ID 111 This table should be sorted by PCI device ID
112*/ 112*/
113static struct pci_device_id divas_pci_tbl[] = { 113static const struct pci_device_id divas_pci_tbl[] = {
114 /* Diva Server BRI-2M PCI 0xE010 */ 114 /* Diva Server BRI-2M PCI 0xE010 */
115 { PCI_VDEVICE(EICON, PCI_DEVICE_ID_EICON_MAESTRA), 115 { PCI_VDEVICE(EICON, PCI_DEVICE_ID_EICON_MAESTRA),
116 CARDTYPE_MAESTRA_PCI }, 116 CARDTYPE_MAESTRA_PCI },
diff --git a/drivers/isdn/hardware/mISDN/avmfritz.c b/drivers/isdn/hardware/mISDN/avmfritz.c
index e3fa1cd64470..dce6632daae1 100644
--- a/drivers/isdn/hardware/mISDN/avmfritz.c
+++ b/drivers/isdn/hardware/mISDN/avmfritz.c
@@ -1142,7 +1142,7 @@ fritz_remove_pci(struct pci_dev *pdev)
1142 pr_info("%s: drvdata already removed\n", __func__); 1142 pr_info("%s: drvdata already removed\n", __func__);
1143} 1143}
1144 1144
1145static struct pci_device_id fcpci_ids[] = { 1145static const struct pci_device_id fcpci_ids[] = {
1146 { PCI_VENDOR_ID_AVM, PCI_DEVICE_ID_AVM_A1, PCI_ANY_ID, PCI_ANY_ID, 1146 { PCI_VENDOR_ID_AVM, PCI_DEVICE_ID_AVM_A1, PCI_ANY_ID, PCI_ANY_ID,
1147 0, 0, (unsigned long) "Fritz!Card PCI"}, 1147 0, 0, (unsigned long) "Fritz!Card PCI"},
1148 { PCI_VENDOR_ID_AVM, PCI_DEVICE_ID_AVM_A1_V2, PCI_ANY_ID, PCI_ANY_ID, 1148 { PCI_VENDOR_ID_AVM, PCI_DEVICE_ID_AVM_A1_V2, PCI_ANY_ID, PCI_ANY_ID,
diff --git a/drivers/isdn/hardware/mISDN/hfcmulti.c b/drivers/isdn/hardware/mISDN/hfcmulti.c
index aea0c9616ea5..3cf07b8ced1c 100644
--- a/drivers/isdn/hardware/mISDN/hfcmulti.c
+++ b/drivers/isdn/hardware/mISDN/hfcmulti.c
@@ -5348,7 +5348,7 @@ static const struct hm_map hfcm_map[] = {
5348 5348
5349#undef H 5349#undef H
5350#define H(x) ((unsigned long)&hfcm_map[x]) 5350#define H(x) ((unsigned long)&hfcm_map[x])
5351static struct pci_device_id hfmultipci_ids[] = { 5351static const struct pci_device_id hfmultipci_ids[] = {
5352 5352
5353 /* Cards with HFC-4S Chip */ 5353 /* Cards with HFC-4S Chip */
5354 { PCI_VENDOR_ID_CCD, PCI_DEVICE_ID_CCD_HFC4S, PCI_VENDOR_ID_CCD, 5354 { PCI_VENDOR_ID_CCD, PCI_DEVICE_ID_CCD_HFC4S, PCI_VENDOR_ID_CCD,
diff --git a/drivers/isdn/hardware/mISDN/hfcpci.c b/drivers/isdn/hardware/mISDN/hfcpci.c
index 5dc246d71c16..d2e401a8090e 100644
--- a/drivers/isdn/hardware/mISDN/hfcpci.c
+++ b/drivers/isdn/hardware/mISDN/hfcpci.c
@@ -2161,7 +2161,7 @@ static const struct _hfc_map hfc_map[] =
2161 {}, 2161 {},
2162}; 2162};
2163 2163
2164static struct pci_device_id hfc_ids[] = 2164static const struct pci_device_id hfc_ids[] =
2165{ 2165{
2166 { PCI_VDEVICE(CCD, PCI_DEVICE_ID_CCD_2BD0), 2166 { PCI_VDEVICE(CCD, PCI_DEVICE_ID_CCD_2BD0),
2167 (unsigned long) &hfc_map[0] }, 2167 (unsigned long) &hfc_map[0] },
diff --git a/drivers/isdn/hardware/mISDN/netjet.c b/drivers/isdn/hardware/mISDN/netjet.c
index afde4edef9ae..6a6d848bd18e 100644
--- a/drivers/isdn/hardware/mISDN/netjet.c
+++ b/drivers/isdn/hardware/mISDN/netjet.c
@@ -1137,7 +1137,7 @@ static void nj_remove(struct pci_dev *pdev)
1137/* We cannot select cards with PCI_SUB... IDs, since here are cards with 1137/* We cannot select cards with PCI_SUB... IDs, since here are cards with
1138 * SUB IDs set to PCI_ANY_ID, so we need to match all and reject 1138 * SUB IDs set to PCI_ANY_ID, so we need to match all and reject
1139 * known other cards which not work with this driver - see probe function */ 1139 * known other cards which not work with this driver - see probe function */
1140static struct pci_device_id nj_pci_ids[] = { 1140static const struct pci_device_id nj_pci_ids[] = {
1141 { PCI_VENDOR_ID_TIGERJET, PCI_DEVICE_ID_TIGERJET_300, 1141 { PCI_VENDOR_ID_TIGERJET, PCI_DEVICE_ID_TIGERJET_300,
1142 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, 1142 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0},
1143 { } 1143 { }
diff --git a/drivers/isdn/hardware/mISDN/w6692.c b/drivers/isdn/hardware/mISDN/w6692.c
index 3052c836b89f..d80072fef434 100644
--- a/drivers/isdn/hardware/mISDN/w6692.c
+++ b/drivers/isdn/hardware/mISDN/w6692.c
@@ -1398,7 +1398,7 @@ w6692_remove_pci(struct pci_dev *pdev)
1398 pr_notice("%s: drvdata already removed\n", __func__); 1398 pr_notice("%s: drvdata already removed\n", __func__);
1399} 1399}
1400 1400
1401static struct pci_device_id w6692_ids[] = { 1401static const struct pci_device_id w6692_ids[] = {
1402 { PCI_VENDOR_ID_DYNALINK, PCI_DEVICE_ID_DYNALINK_IS64PH, 1402 { PCI_VENDOR_ID_DYNALINK, PCI_DEVICE_ID_DYNALINK_IS64PH,
1403 PCI_ANY_ID, PCI_ANY_ID, 0, 0, (ulong)&w6692_map[0]}, 1403 PCI_ANY_ID, PCI_ANY_ID, 0, 0, (ulong)&w6692_map[0]},
1404 { PCI_VENDOR_ID_WINBOND2, PCI_DEVICE_ID_WINBOND2_6692, 1404 { PCI_VENDOR_ID_WINBOND2, PCI_DEVICE_ID_WINBOND2_6692,
diff --git a/drivers/isdn/hisax/config.c b/drivers/isdn/hisax/config.c
index c7d68675b028..7108bdb8742e 100644
--- a/drivers/isdn/hisax/config.c
+++ b/drivers/isdn/hisax/config.c
@@ -1909,7 +1909,7 @@ static void EChannel_proc_rcv(struct hisax_d_if *d_if)
1909#ifdef CONFIG_PCI 1909#ifdef CONFIG_PCI
1910#include <linux/pci.h> 1910#include <linux/pci.h>
1911 1911
1912static struct pci_device_id hisax_pci_tbl[] __used = { 1912static const struct pci_device_id hisax_pci_tbl[] __used = {
1913#ifdef CONFIG_HISAX_FRITZPCI 1913#ifdef CONFIG_HISAX_FRITZPCI
1914 {PCI_VDEVICE(AVM, PCI_DEVICE_ID_AVM_A1) }, 1914 {PCI_VDEVICE(AVM, PCI_DEVICE_ID_AVM_A1) },
1915#endif 1915#endif
diff --git a/drivers/isdn/hisax/hfc4s8s_l1.c b/drivers/isdn/hisax/hfc4s8s_l1.c
index 90f051ce0259..9090cc1e1f29 100644
--- a/drivers/isdn/hisax/hfc4s8s_l1.c
+++ b/drivers/isdn/hisax/hfc4s8s_l1.c
@@ -86,7 +86,7 @@ typedef struct {
86 char *device_name; 86 char *device_name;
87} hfc4s8s_param; 87} hfc4s8s_param;
88 88
89static struct pci_device_id hfc4s8s_ids[] = { 89static const struct pci_device_id hfc4s8s_ids[] = {
90 {.vendor = PCI_VENDOR_ID_CCD, 90 {.vendor = PCI_VENDOR_ID_CCD,
91 .device = PCI_DEVICE_ID_4S, 91 .device = PCI_DEVICE_ID_4S,
92 .subvendor = 0x1397, 92 .subvendor = 0x1397,
diff --git a/drivers/isdn/hisax/hisax_fcpcipnp.c b/drivers/isdn/hisax/hisax_fcpcipnp.c
index 5a9f39ed1d5d..e4f7573ba9bf 100644
--- a/drivers/isdn/hisax/hisax_fcpcipnp.c
+++ b/drivers/isdn/hisax/hisax_fcpcipnp.c
@@ -52,7 +52,7 @@ module_param(debug, int, 0);
52MODULE_AUTHOR("Kai Germaschewski <kai.germaschewski@gmx.de>/Karsten Keil <kkeil@suse.de>"); 52MODULE_AUTHOR("Kai Germaschewski <kai.germaschewski@gmx.de>/Karsten Keil <kkeil@suse.de>");
53MODULE_DESCRIPTION("AVM Fritz!PCI/PnP ISDN driver"); 53MODULE_DESCRIPTION("AVM Fritz!PCI/PnP ISDN driver");
54 54
55static struct pci_device_id fcpci_ids[] = { 55static const struct pci_device_id fcpci_ids[] = {
56 { .vendor = PCI_VENDOR_ID_AVM, 56 { .vendor = PCI_VENDOR_ID_AVM,
57 .device = PCI_DEVICE_ID_AVM_A1, 57 .device = PCI_DEVICE_ID_AVM_A1,
58 .subvendor = PCI_ANY_ID, 58 .subvendor = PCI_ANY_ID,
diff --git a/drivers/isdn/hysdn/hysdn_proclog.c b/drivers/isdn/hysdn/hysdn_proclog.c
index 7b5fd8fb1761..aaca0b3d662e 100644
--- a/drivers/isdn/hysdn/hysdn_proclog.c
+++ b/drivers/isdn/hysdn/hysdn_proclog.c
@@ -44,7 +44,6 @@ struct procdata {
44 char log_name[15]; /* log filename */ 44 char log_name[15]; /* log filename */
45 struct log_data *log_head, *log_tail; /* head and tail for queue */ 45 struct log_data *log_head, *log_tail; /* head and tail for queue */
46 int if_used; /* open count for interface */ 46 int if_used; /* open count for interface */
47 int volatile del_lock; /* lock for delete operations */
48 unsigned char logtmp[LOG_MAX_LINELEN]; 47 unsigned char logtmp[LOG_MAX_LINELEN];
49 wait_queue_head_t rd_queue; 48 wait_queue_head_t rd_queue;
50}; 49};
@@ -102,7 +101,6 @@ put_log_buffer(hysdn_card *card, char *cp)
102{ 101{
103 struct log_data *ib; 102 struct log_data *ib;
104 struct procdata *pd = card->proclog; 103 struct procdata *pd = card->proclog;
105 int i;
106 unsigned long flags; 104 unsigned long flags;
107 105
108 if (!pd) 106 if (!pd)
@@ -126,21 +124,21 @@ put_log_buffer(hysdn_card *card, char *cp)
126 else 124 else
127 pd->log_tail->next = ib; /* follows existing messages */ 125 pd->log_tail->next = ib; /* follows existing messages */
128 pd->log_tail = ib; /* new tail */ 126 pd->log_tail = ib; /* new tail */
129 i = pd->del_lock++; /* get lock state */
130 spin_unlock_irqrestore(&card->hysdn_lock, flags);
131 127
132 /* delete old entrys */ 128 /* delete old entrys */
133 if (!i) 129 while (pd->log_head->next) {
134 while (pd->log_head->next) { 130 if ((pd->log_head->usage_cnt <= 0) &&
135 if ((pd->log_head->usage_cnt <= 0) && 131 (pd->log_head->next->usage_cnt <= 0)) {
136 (pd->log_head->next->usage_cnt <= 0)) { 132 ib = pd->log_head;
137 ib = pd->log_head; 133 pd->log_head = pd->log_head->next;
138 pd->log_head = pd->log_head->next; 134 kfree(ib);
139 kfree(ib); 135 } else {
140 } else 136 break;
141 break; 137 }
142 } /* pd->log_head->next */ 138 } /* pd->log_head->next */
143 pd->del_lock--; /* release lock level */ 139
140 spin_unlock_irqrestore(&card->hysdn_lock, flags);
141
144 wake_up_interruptible(&(pd->rd_queue)); /* announce new entry */ 142 wake_up_interruptible(&(pd->rd_queue)); /* announce new entry */
145} /* put_log_buffer */ 143} /* put_log_buffer */
146 144
diff --git a/drivers/isdn/i4l/isdn_common.c b/drivers/isdn/i4l/isdn_common.c
index 89b09c51ab7c..38a5bb764c7b 100644
--- a/drivers/isdn/i4l/isdn_common.c
+++ b/drivers/isdn/i4l/isdn_common.c
@@ -1376,6 +1376,7 @@ isdn_ioctl(struct file *file, uint cmd, ulong arg)
1376 if (arg) { 1376 if (arg) {
1377 if (copy_from_user(bname, argp, sizeof(bname) - 1)) 1377 if (copy_from_user(bname, argp, sizeof(bname) - 1))
1378 return -EFAULT; 1378 return -EFAULT;
1379 bname[sizeof(bname)-1] = 0;
1379 } else 1380 } else
1380 return -EINVAL; 1381 return -EINVAL;
1381 ret = mutex_lock_interruptible(&dev->mtx); 1382 ret = mutex_lock_interruptible(&dev->mtx);
diff --git a/drivers/isdn/i4l/isdn_net.c b/drivers/isdn/i4l/isdn_net.c
index c151c6daa67e..f63a110b7bcb 100644
--- a/drivers/isdn/i4l/isdn_net.c
+++ b/drivers/isdn/i4l/isdn_net.c
@@ -2611,10 +2611,9 @@ isdn_net_newslave(char *parm)
2611 char newname[10]; 2611 char newname[10];
2612 2612
2613 if (p) { 2613 if (p) {
2614 /* Slave-Name MUST not be empty */ 2614 /* Slave-Name MUST not be empty or overflow 'newname' */
2615 if (!strlen(p + 1)) 2615 if (strscpy(newname, p + 1, sizeof(newname)) <= 0)
2616 return NULL; 2616 return NULL;
2617 strcpy(newname, p + 1);
2618 *p = 0; 2617 *p = 0;
2619 /* Master must already exist */ 2618 /* Master must already exist */
2620 if (!(n = isdn_net_findif(parm))) 2619 if (!(n = isdn_net_findif(parm)))
diff --git a/drivers/isdn/mISDN/fsm.c b/drivers/isdn/mISDN/fsm.c
index 78fc5d5e9051..92e6570b1143 100644
--- a/drivers/isdn/mISDN/fsm.c
+++ b/drivers/isdn/mISDN/fsm.c
@@ -26,7 +26,7 @@
26 26
27#define FSM_TIMER_DEBUG 0 27#define FSM_TIMER_DEBUG 0
28 28
29void 29int
30mISDN_FsmNew(struct Fsm *fsm, 30mISDN_FsmNew(struct Fsm *fsm,
31 struct FsmNode *fnlist, int fncount) 31 struct FsmNode *fnlist, int fncount)
32{ 32{
@@ -34,6 +34,8 @@ mISDN_FsmNew(struct Fsm *fsm,
34 34
35 fsm->jumpmatrix = kzalloc(sizeof(FSMFNPTR) * fsm->state_count * 35 fsm->jumpmatrix = kzalloc(sizeof(FSMFNPTR) * fsm->state_count *
36 fsm->event_count, GFP_KERNEL); 36 fsm->event_count, GFP_KERNEL);
37 if (fsm->jumpmatrix == NULL)
38 return -ENOMEM;
37 39
38 for (i = 0; i < fncount; i++) 40 for (i = 0; i < fncount; i++)
39 if ((fnlist[i].state >= fsm->state_count) || 41 if ((fnlist[i].state >= fsm->state_count) ||
@@ -45,6 +47,7 @@ mISDN_FsmNew(struct Fsm *fsm,
45 } else 47 } else
46 fsm->jumpmatrix[fsm->state_count * fnlist[i].event + 48 fsm->jumpmatrix[fsm->state_count * fnlist[i].event +
47 fnlist[i].state] = (FSMFNPTR) fnlist[i].routine; 49 fnlist[i].state] = (FSMFNPTR) fnlist[i].routine;
50 return 0;
48} 51}
49EXPORT_SYMBOL(mISDN_FsmNew); 52EXPORT_SYMBOL(mISDN_FsmNew);
50 53
diff --git a/drivers/isdn/mISDN/fsm.h b/drivers/isdn/mISDN/fsm.h
index 928f5be192c1..e1def8490221 100644
--- a/drivers/isdn/mISDN/fsm.h
+++ b/drivers/isdn/mISDN/fsm.h
@@ -55,7 +55,7 @@ struct FsmTimer {
55 void *arg; 55 void *arg;
56}; 56};
57 57
58extern void mISDN_FsmNew(struct Fsm *, struct FsmNode *, int); 58extern int mISDN_FsmNew(struct Fsm *, struct FsmNode *, int);
59extern void mISDN_FsmFree(struct Fsm *); 59extern void mISDN_FsmFree(struct Fsm *);
60extern int mISDN_FsmEvent(struct FsmInst *, int , void *); 60extern int mISDN_FsmEvent(struct FsmInst *, int , void *);
61extern void mISDN_FsmChangeState(struct FsmInst *, int); 61extern void mISDN_FsmChangeState(struct FsmInst *, int);
diff --git a/drivers/isdn/mISDN/layer1.c b/drivers/isdn/mISDN/layer1.c
index bebc57b72138..3192b0eb3944 100644
--- a/drivers/isdn/mISDN/layer1.c
+++ b/drivers/isdn/mISDN/layer1.c
@@ -414,8 +414,7 @@ l1_init(u_int *deb)
414 l1fsm_s.event_count = L1_EVENT_COUNT; 414 l1fsm_s.event_count = L1_EVENT_COUNT;
415 l1fsm_s.strEvent = strL1Event; 415 l1fsm_s.strEvent = strL1Event;
416 l1fsm_s.strState = strL1SState; 416 l1fsm_s.strState = strL1SState;
417 mISDN_FsmNew(&l1fsm_s, L1SFnList, ARRAY_SIZE(L1SFnList)); 417 return mISDN_FsmNew(&l1fsm_s, L1SFnList, ARRAY_SIZE(L1SFnList));
418 return 0;
419} 418}
420 419
421void 420void
diff --git a/drivers/isdn/mISDN/layer2.c b/drivers/isdn/mISDN/layer2.c
index 7243a6746f8b..9ff0903a0e89 100644
--- a/drivers/isdn/mISDN/layer2.c
+++ b/drivers/isdn/mISDN/layer2.c
@@ -2247,15 +2247,26 @@ static struct Bprotocol X75SLP = {
2247int 2247int
2248Isdnl2_Init(u_int *deb) 2248Isdnl2_Init(u_int *deb)
2249{ 2249{
2250 int res;
2250 debug = deb; 2251 debug = deb;
2251 mISDN_register_Bprotocol(&X75SLP); 2252 mISDN_register_Bprotocol(&X75SLP);
2252 l2fsm.state_count = L2_STATE_COUNT; 2253 l2fsm.state_count = L2_STATE_COUNT;
2253 l2fsm.event_count = L2_EVENT_COUNT; 2254 l2fsm.event_count = L2_EVENT_COUNT;
2254 l2fsm.strEvent = strL2Event; 2255 l2fsm.strEvent = strL2Event;
2255 l2fsm.strState = strL2State; 2256 l2fsm.strState = strL2State;
2256 mISDN_FsmNew(&l2fsm, L2FnList, ARRAY_SIZE(L2FnList)); 2257 res = mISDN_FsmNew(&l2fsm, L2FnList, ARRAY_SIZE(L2FnList));
2257 TEIInit(deb); 2258 if (res)
2259 goto error;
2260 res = TEIInit(deb);
2261 if (res)
2262 goto error_fsm;
2258 return 0; 2263 return 0;
2264
2265error_fsm:
2266 mISDN_FsmFree(&l2fsm);
2267error:
2268 mISDN_unregister_Bprotocol(&X75SLP);
2269 return res;
2259} 2270}
2260 2271
2261void 2272void
diff --git a/drivers/isdn/mISDN/tei.c b/drivers/isdn/mISDN/tei.c
index 908127efccf8..12d9e5f4beb1 100644
--- a/drivers/isdn/mISDN/tei.c
+++ b/drivers/isdn/mISDN/tei.c
@@ -1387,23 +1387,37 @@ create_teimanager(struct mISDNdevice *dev)
1387 1387
1388int TEIInit(u_int *deb) 1388int TEIInit(u_int *deb)
1389{ 1389{
1390 int res;
1390 debug = deb; 1391 debug = deb;
1391 teifsmu.state_count = TEI_STATE_COUNT; 1392 teifsmu.state_count = TEI_STATE_COUNT;
1392 teifsmu.event_count = TEI_EVENT_COUNT; 1393 teifsmu.event_count = TEI_EVENT_COUNT;
1393 teifsmu.strEvent = strTeiEvent; 1394 teifsmu.strEvent = strTeiEvent;
1394 teifsmu.strState = strTeiState; 1395 teifsmu.strState = strTeiState;
1395 mISDN_FsmNew(&teifsmu, TeiFnListUser, ARRAY_SIZE(TeiFnListUser)); 1396 res = mISDN_FsmNew(&teifsmu, TeiFnListUser, ARRAY_SIZE(TeiFnListUser));
1397 if (res)
1398 goto error;
1396 teifsmn.state_count = TEI_STATE_COUNT; 1399 teifsmn.state_count = TEI_STATE_COUNT;
1397 teifsmn.event_count = TEI_EVENT_COUNT; 1400 teifsmn.event_count = TEI_EVENT_COUNT;
1398 teifsmn.strEvent = strTeiEvent; 1401 teifsmn.strEvent = strTeiEvent;
1399 teifsmn.strState = strTeiState; 1402 teifsmn.strState = strTeiState;
1400 mISDN_FsmNew(&teifsmn, TeiFnListNet, ARRAY_SIZE(TeiFnListNet)); 1403 res = mISDN_FsmNew(&teifsmn, TeiFnListNet, ARRAY_SIZE(TeiFnListNet));
1404 if (res)
1405 goto error_smn;
1401 deactfsm.state_count = DEACT_STATE_COUNT; 1406 deactfsm.state_count = DEACT_STATE_COUNT;
1402 deactfsm.event_count = DEACT_EVENT_COUNT; 1407 deactfsm.event_count = DEACT_EVENT_COUNT;
1403 deactfsm.strEvent = strDeactEvent; 1408 deactfsm.strEvent = strDeactEvent;
1404 deactfsm.strState = strDeactState; 1409 deactfsm.strState = strDeactState;
1405 mISDN_FsmNew(&deactfsm, DeactFnList, ARRAY_SIZE(DeactFnList)); 1410 res = mISDN_FsmNew(&deactfsm, DeactFnList, ARRAY_SIZE(DeactFnList));
1411 if (res)
1412 goto error_deact;
1406 return 0; 1413 return 0;
1414
1415error_deact:
1416 mISDN_FsmFree(&teifsmn);
1417error_smn:
1418 mISDN_FsmFree(&teifsmu);
1419error:
1420 return res;
1407} 1421}
1408 1422
1409void TEIFree(void) 1423void TEIFree(void)
diff --git a/drivers/lightnvm/pblk-rb.c b/drivers/lightnvm/pblk-rb.c
index 5ecc154f6831..9bc32578a766 100644
--- a/drivers/lightnvm/pblk-rb.c
+++ b/drivers/lightnvm/pblk-rb.c
@@ -657,7 +657,7 @@ try:
657 * be directed to disk. 657 * be directed to disk.
658 */ 658 */
659int pblk_rb_copy_to_bio(struct pblk_rb *rb, struct bio *bio, sector_t lba, 659int pblk_rb_copy_to_bio(struct pblk_rb *rb, struct bio *bio, sector_t lba,
660 struct ppa_addr ppa, int bio_iter) 660 struct ppa_addr ppa, int bio_iter, bool advanced_bio)
661{ 661{
662 struct pblk *pblk = container_of(rb, struct pblk, rwb); 662 struct pblk *pblk = container_of(rb, struct pblk, rwb);
663 struct pblk_rb_entry *entry; 663 struct pblk_rb_entry *entry;
@@ -694,7 +694,7 @@ int pblk_rb_copy_to_bio(struct pblk_rb *rb, struct bio *bio, sector_t lba,
694 * filled with data from the cache). If part of the data resides on the 694 * filled with data from the cache). If part of the data resides on the
695 * media, we will read later on 695 * media, we will read later on
696 */ 696 */
697 if (unlikely(!bio->bi_iter.bi_idx)) 697 if (unlikely(!advanced_bio))
698 bio_advance(bio, bio_iter * PBLK_EXPOSED_PAGE_SIZE); 698 bio_advance(bio, bio_iter * PBLK_EXPOSED_PAGE_SIZE);
699 699
700 data = bio_data(bio); 700 data = bio_data(bio);
diff --git a/drivers/lightnvm/pblk-read.c b/drivers/lightnvm/pblk-read.c
index 4e5c48f3de62..d682e89e6493 100644
--- a/drivers/lightnvm/pblk-read.c
+++ b/drivers/lightnvm/pblk-read.c
@@ -26,7 +26,7 @@
26 */ 26 */
27static int pblk_read_from_cache(struct pblk *pblk, struct bio *bio, 27static int pblk_read_from_cache(struct pblk *pblk, struct bio *bio,
28 sector_t lba, struct ppa_addr ppa, 28 sector_t lba, struct ppa_addr ppa,
29 int bio_iter) 29 int bio_iter, bool advanced_bio)
30{ 30{
31#ifdef CONFIG_NVM_DEBUG 31#ifdef CONFIG_NVM_DEBUG
32 /* Callers must ensure that the ppa points to a cache address */ 32 /* Callers must ensure that the ppa points to a cache address */
@@ -34,7 +34,8 @@ static int pblk_read_from_cache(struct pblk *pblk, struct bio *bio,
34 BUG_ON(!pblk_addr_in_cache(ppa)); 34 BUG_ON(!pblk_addr_in_cache(ppa));
35#endif 35#endif
36 36
37 return pblk_rb_copy_to_bio(&pblk->rwb, bio, lba, ppa, bio_iter); 37 return pblk_rb_copy_to_bio(&pblk->rwb, bio, lba, ppa,
38 bio_iter, advanced_bio);
38} 39}
39 40
40static void pblk_read_ppalist_rq(struct pblk *pblk, struct nvm_rq *rqd, 41static void pblk_read_ppalist_rq(struct pblk *pblk, struct nvm_rq *rqd,
@@ -44,7 +45,7 @@ static void pblk_read_ppalist_rq(struct pblk *pblk, struct nvm_rq *rqd,
44 struct ppa_addr ppas[PBLK_MAX_REQ_ADDRS]; 45 struct ppa_addr ppas[PBLK_MAX_REQ_ADDRS];
45 sector_t blba = pblk_get_lba(bio); 46 sector_t blba = pblk_get_lba(bio);
46 int nr_secs = rqd->nr_ppas; 47 int nr_secs = rqd->nr_ppas;
47 int advanced_bio = 0; 48 bool advanced_bio = false;
48 int i, j = 0; 49 int i, j = 0;
49 50
50 /* logic error: lba out-of-bounds. Ignore read request */ 51 /* logic error: lba out-of-bounds. Ignore read request */
@@ -62,19 +63,26 @@ static void pblk_read_ppalist_rq(struct pblk *pblk, struct nvm_rq *rqd,
62retry: 63retry:
63 if (pblk_ppa_empty(p)) { 64 if (pblk_ppa_empty(p)) {
64 WARN_ON(test_and_set_bit(i, read_bitmap)); 65 WARN_ON(test_and_set_bit(i, read_bitmap));
65 continue; 66
67 if (unlikely(!advanced_bio)) {
68 bio_advance(bio, (i) * PBLK_EXPOSED_PAGE_SIZE);
69 advanced_bio = true;
70 }
71
72 goto next;
66 } 73 }
67 74
68 /* Try to read from write buffer. The address is later checked 75 /* Try to read from write buffer. The address is later checked
69 * on the write buffer to prevent retrieving overwritten data. 76 * on the write buffer to prevent retrieving overwritten data.
70 */ 77 */
71 if (pblk_addr_in_cache(p)) { 78 if (pblk_addr_in_cache(p)) {
72 if (!pblk_read_from_cache(pblk, bio, lba, p, i)) { 79 if (!pblk_read_from_cache(pblk, bio, lba, p, i,
80 advanced_bio)) {
73 pblk_lookup_l2p_seq(pblk, &p, lba, 1); 81 pblk_lookup_l2p_seq(pblk, &p, lba, 1);
74 goto retry; 82 goto retry;
75 } 83 }
76 WARN_ON(test_and_set_bit(i, read_bitmap)); 84 WARN_ON(test_and_set_bit(i, read_bitmap));
77 advanced_bio = 1; 85 advanced_bio = true;
78#ifdef CONFIG_NVM_DEBUG 86#ifdef CONFIG_NVM_DEBUG
79 atomic_long_inc(&pblk->cache_reads); 87 atomic_long_inc(&pblk->cache_reads);
80#endif 88#endif
@@ -83,6 +91,7 @@ retry:
83 rqd->ppa_list[j++] = p; 91 rqd->ppa_list[j++] = p;
84 } 92 }
85 93
94next:
86 if (advanced_bio) 95 if (advanced_bio)
87 bio_advance(bio, PBLK_EXPOSED_PAGE_SIZE); 96 bio_advance(bio, PBLK_EXPOSED_PAGE_SIZE);
88 } 97 }
@@ -282,7 +291,7 @@ retry:
282 * write buffer to prevent retrieving overwritten data. 291 * write buffer to prevent retrieving overwritten data.
283 */ 292 */
284 if (pblk_addr_in_cache(ppa)) { 293 if (pblk_addr_in_cache(ppa)) {
285 if (!pblk_read_from_cache(pblk, bio, lba, ppa, 0)) { 294 if (!pblk_read_from_cache(pblk, bio, lba, ppa, 0, 1)) {
286 pblk_lookup_l2p_seq(pblk, &ppa, lba, 1); 295 pblk_lookup_l2p_seq(pblk, &ppa, lba, 1);
287 goto retry; 296 goto retry;
288 } 297 }
diff --git a/drivers/lightnvm/pblk.h b/drivers/lightnvm/pblk.h
index 0c5692cc2f60..67e623bd5c2d 100644
--- a/drivers/lightnvm/pblk.h
+++ b/drivers/lightnvm/pblk.h
@@ -670,7 +670,7 @@ unsigned int pblk_rb_read_to_bio_list(struct pblk_rb *rb, struct bio *bio,
670 struct list_head *list, 670 struct list_head *list,
671 unsigned int max); 671 unsigned int max);
672int pblk_rb_copy_to_bio(struct pblk_rb *rb, struct bio *bio, sector_t lba, 672int pblk_rb_copy_to_bio(struct pblk_rb *rb, struct bio *bio, sector_t lba,
673 struct ppa_addr ppa, int bio_iter); 673 struct ppa_addr ppa, int bio_iter, bool advanced_bio);
674unsigned int pblk_rb_read_commit(struct pblk_rb *rb, unsigned int entries); 674unsigned int pblk_rb_read_commit(struct pblk_rb *rb, unsigned int entries);
675 675
676unsigned int pblk_rb_sync_init(struct pblk_rb *rb, unsigned long *flags); 676unsigned int pblk_rb_sync_init(struct pblk_rb *rb, unsigned long *flags);
diff --git a/drivers/mailbox/pcc.c b/drivers/mailbox/pcc.c
index ac91fd0d62c6..cbca5e51b975 100644
--- a/drivers/mailbox/pcc.c
+++ b/drivers/mailbox/pcc.c
@@ -92,7 +92,7 @@ static struct mbox_controller pcc_mbox_ctrl = {};
92 */ 92 */
93static struct mbox_chan *get_pcc_channel(int id) 93static struct mbox_chan *get_pcc_channel(int id)
94{ 94{
95 if (id < 0 || id > pcc_mbox_ctrl.num_chans) 95 if (id < 0 || id >= pcc_mbox_ctrl.num_chans)
96 return ERR_PTR(-ENOENT); 96 return ERR_PTR(-ENOENT);
97 97
98 return &pcc_mbox_channels[id]; 98 return &pcc_mbox_channels[id];
diff --git a/drivers/md/bitmap.c b/drivers/md/bitmap.c
index f4eace5ea184..40f3cd7eab0f 100644
--- a/drivers/md/bitmap.c
+++ b/drivers/md/bitmap.c
@@ -156,7 +156,8 @@ static int read_sb_page(struct mddev *mddev, loff_t offset,
156 156
157 rdev_for_each(rdev, mddev) { 157 rdev_for_each(rdev, mddev) {
158 if (! test_bit(In_sync, &rdev->flags) 158 if (! test_bit(In_sync, &rdev->flags)
159 || test_bit(Faulty, &rdev->flags)) 159 || test_bit(Faulty, &rdev->flags)
160 || test_bit(Bitmap_sync, &rdev->flags))
160 continue; 161 continue;
161 162
162 target = offset + index * (PAGE_SIZE/512); 163 target = offset + index * (PAGE_SIZE/512);
diff --git a/drivers/md/dm-bufio.c b/drivers/md/dm-bufio.c
index 850ff6c67994..44f4a8ac95bd 100644
--- a/drivers/md/dm-bufio.c
+++ b/drivers/md/dm-bufio.c
@@ -1258,8 +1258,7 @@ EXPORT_SYMBOL_GPL(dm_bufio_write_dirty_buffers_async);
1258 */ 1258 */
1259int dm_bufio_write_dirty_buffers(struct dm_bufio_client *c) 1259int dm_bufio_write_dirty_buffers(struct dm_bufio_client *c)
1260{ 1260{
1261 blk_status_t a; 1261 int a, f;
1262 int f;
1263 unsigned long buffers_processed = 0; 1262 unsigned long buffers_processed = 0;
1264 struct dm_buffer *b, *tmp; 1263 struct dm_buffer *b, *tmp;
1265 1264
diff --git a/drivers/md/dm-integrity.c b/drivers/md/dm-integrity.c
index 1b224aa9cf15..3acce09bba35 100644
--- a/drivers/md/dm-integrity.c
+++ b/drivers/md/dm-integrity.c
@@ -1587,16 +1587,18 @@ retry:
1587 if (likely(ic->mode == 'J')) { 1587 if (likely(ic->mode == 'J')) {
1588 if (dio->write) { 1588 if (dio->write) {
1589 unsigned next_entry, i, pos; 1589 unsigned next_entry, i, pos;
1590 unsigned ws, we; 1590 unsigned ws, we, range_sectors;
1591 1591
1592 dio->range.n_sectors = min(dio->range.n_sectors, ic->free_sectors); 1592 dio->range.n_sectors = min(dio->range.n_sectors,
1593 ic->free_sectors << ic->sb->log2_sectors_per_block);
1593 if (unlikely(!dio->range.n_sectors)) 1594 if (unlikely(!dio->range.n_sectors))
1594 goto sleep; 1595 goto sleep;
1595 ic->free_sectors -= dio->range.n_sectors; 1596 range_sectors = dio->range.n_sectors >> ic->sb->log2_sectors_per_block;
1597 ic->free_sectors -= range_sectors;
1596 journal_section = ic->free_section; 1598 journal_section = ic->free_section;
1597 journal_entry = ic->free_section_entry; 1599 journal_entry = ic->free_section_entry;
1598 1600
1599 next_entry = ic->free_section_entry + dio->range.n_sectors; 1601 next_entry = ic->free_section_entry + range_sectors;
1600 ic->free_section_entry = next_entry % ic->journal_section_entries; 1602 ic->free_section_entry = next_entry % ic->journal_section_entries;
1601 ic->free_section += next_entry / ic->journal_section_entries; 1603 ic->free_section += next_entry / ic->journal_section_entries;
1602 ic->n_uncommitted_sections += next_entry / ic->journal_section_entries; 1604 ic->n_uncommitted_sections += next_entry / ic->journal_section_entries;
@@ -1727,6 +1729,8 @@ static void pad_uncommitted(struct dm_integrity_c *ic)
1727 wraparound_section(ic, &ic->free_section); 1729 wraparound_section(ic, &ic->free_section);
1728 ic->n_uncommitted_sections++; 1730 ic->n_uncommitted_sections++;
1729 } 1731 }
1732 WARN_ON(ic->journal_sections * ic->journal_section_entries !=
1733 (ic->n_uncommitted_sections + ic->n_committed_sections) * ic->journal_section_entries + ic->free_sectors);
1730} 1734}
1731 1735
1732static void integrity_commit(struct work_struct *w) 1736static void integrity_commit(struct work_struct *w)
@@ -1821,6 +1825,9 @@ static void do_journal_write(struct dm_integrity_c *ic, unsigned write_start,
1821{ 1825{
1822 unsigned i, j, n; 1826 unsigned i, j, n;
1823 struct journal_completion comp; 1827 struct journal_completion comp;
1828 struct blk_plug plug;
1829
1830 blk_start_plug(&plug);
1824 1831
1825 comp.ic = ic; 1832 comp.ic = ic;
1826 comp.in_flight = (atomic_t)ATOMIC_INIT(1); 1833 comp.in_flight = (atomic_t)ATOMIC_INIT(1);
@@ -1945,6 +1952,8 @@ skip_io:
1945 1952
1946 dm_bufio_write_dirty_buffers_async(ic->bufio); 1953 dm_bufio_write_dirty_buffers_async(ic->bufio);
1947 1954
1955 blk_finish_plug(&plug);
1956
1948 complete_journal_op(&comp); 1957 complete_journal_op(&comp);
1949 wait_for_completion_io(&comp.comp); 1958 wait_for_completion_io(&comp.comp);
1950 1959
@@ -3019,6 +3028,11 @@ static int dm_integrity_ctr(struct dm_target *ti, unsigned argc, char **argv)
3019 ti->error = "Block size doesn't match the information in superblock"; 3028 ti->error = "Block size doesn't match the information in superblock";
3020 goto bad; 3029 goto bad;
3021 } 3030 }
3031 if (!le32_to_cpu(ic->sb->journal_sections)) {
3032 r = -EINVAL;
3033 ti->error = "Corrupted superblock, journal_sections is 0";
3034 goto bad;
3035 }
3022 /* make sure that ti->max_io_len doesn't overflow */ 3036 /* make sure that ti->max_io_len doesn't overflow */
3023 if (ic->sb->log2_interleave_sectors < MIN_LOG2_INTERLEAVE_SECTORS || 3037 if (ic->sb->log2_interleave_sectors < MIN_LOG2_INTERLEAVE_SECTORS ||
3024 ic->sb->log2_interleave_sectors > MAX_LOG2_INTERLEAVE_SECTORS) { 3038 ic->sb->log2_interleave_sectors > MAX_LOG2_INTERLEAVE_SECTORS) {
diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c
index 2e10c2f13a34..5bfe285ea9d1 100644
--- a/drivers/md/dm-raid.c
+++ b/drivers/md/dm-raid.c
@@ -208,6 +208,7 @@ struct raid_dev {
208#define RT_FLAG_RS_BITMAP_LOADED 2 208#define RT_FLAG_RS_BITMAP_LOADED 2
209#define RT_FLAG_UPDATE_SBS 3 209#define RT_FLAG_UPDATE_SBS 3
210#define RT_FLAG_RESHAPE_RS 4 210#define RT_FLAG_RESHAPE_RS 4
211#define RT_FLAG_RS_SUSPENDED 5
211 212
212/* Array elements of 64 bit needed for rebuild/failed disk bits */ 213/* Array elements of 64 bit needed for rebuild/failed disk bits */
213#define DISKS_ARRAY_ELEMS ((MAX_RAID_DEVICES + (sizeof(uint64_t) * 8 - 1)) / sizeof(uint64_t) / 8) 214#define DISKS_ARRAY_ELEMS ((MAX_RAID_DEVICES + (sizeof(uint64_t) * 8 - 1)) / sizeof(uint64_t) / 8)
@@ -564,9 +565,10 @@ static const char *raid10_md_layout_to_format(int layout)
564 if (__raid10_near_copies(layout) > 1) 565 if (__raid10_near_copies(layout) > 1)
565 return "near"; 566 return "near";
566 567
567 WARN_ON(__raid10_far_copies(layout) < 2); 568 if (__raid10_far_copies(layout) > 1)
569 return "far";
568 570
569 return "far"; 571 return "unknown";
570} 572}
571 573
572/* Return md raid10 algorithm for @name */ 574/* Return md raid10 algorithm for @name */
@@ -2540,11 +2542,6 @@ static int analyse_superblocks(struct dm_target *ti, struct raid_set *rs)
2540 if (!freshest) 2542 if (!freshest)
2541 return 0; 2543 return 0;
2542 2544
2543 if (validate_raid_redundancy(rs)) {
2544 rs->ti->error = "Insufficient redundancy to activate array";
2545 return -EINVAL;
2546 }
2547
2548 /* 2545 /*
2549 * Validation of the freshest device provides the source of 2546 * Validation of the freshest device provides the source of
2550 * validation for the remaining devices. 2547 * validation for the remaining devices.
@@ -2553,6 +2550,11 @@ static int analyse_superblocks(struct dm_target *ti, struct raid_set *rs)
2553 if (super_validate(rs, freshest)) 2550 if (super_validate(rs, freshest))
2554 return -EINVAL; 2551 return -EINVAL;
2555 2552
2553 if (validate_raid_redundancy(rs)) {
2554 rs->ti->error = "Insufficient redundancy to activate array";
2555 return -EINVAL;
2556 }
2557
2556 rdev_for_each(rdev, mddev) 2558 rdev_for_each(rdev, mddev)
2557 if (!test_bit(Journal, &rdev->flags) && 2559 if (!test_bit(Journal, &rdev->flags) &&
2558 rdev != freshest && 2560 rdev != freshest &&
@@ -3168,6 +3170,7 @@ static int raid_ctr(struct dm_target *ti, unsigned int argc, char **argv)
3168 } 3170 }
3169 3171
3170 mddev_suspend(&rs->md); 3172 mddev_suspend(&rs->md);
3173 set_bit(RT_FLAG_RS_SUSPENDED, &rs->runtime_flags);
3171 3174
3172 /* Try to adjust the raid4/5/6 stripe cache size to the stripe size */ 3175 /* Try to adjust the raid4/5/6 stripe cache size to the stripe size */
3173 if (rs_is_raid456(rs)) { 3176 if (rs_is_raid456(rs)) {
@@ -3625,7 +3628,7 @@ static void raid_postsuspend(struct dm_target *ti)
3625{ 3628{
3626 struct raid_set *rs = ti->private; 3629 struct raid_set *rs = ti->private;
3627 3630
3628 if (!rs->md.suspended) 3631 if (!test_and_set_bit(RT_FLAG_RS_SUSPENDED, &rs->runtime_flags))
3629 mddev_suspend(&rs->md); 3632 mddev_suspend(&rs->md);
3630 3633
3631 rs->md.ro = 1; 3634 rs->md.ro = 1;
@@ -3759,7 +3762,7 @@ static int rs_start_reshape(struct raid_set *rs)
3759 return r; 3762 return r;
3760 3763
3761 /* Need to be resumed to be able to start reshape, recovery is frozen until raid_resume() though */ 3764 /* Need to be resumed to be able to start reshape, recovery is frozen until raid_resume() though */
3762 if (mddev->suspended) 3765 if (test_and_clear_bit(RT_FLAG_RS_SUSPENDED, &rs->runtime_flags))
3763 mddev_resume(mddev); 3766 mddev_resume(mddev);
3764 3767
3765 /* 3768 /*
@@ -3786,8 +3789,8 @@ static int rs_start_reshape(struct raid_set *rs)
3786 } 3789 }
3787 3790
3788 /* Suspend because a resume will happen in raid_resume() */ 3791 /* Suspend because a resume will happen in raid_resume() */
3789 if (!mddev->suspended) 3792 set_bit(RT_FLAG_RS_SUSPENDED, &rs->runtime_flags);
3790 mddev_suspend(mddev); 3793 mddev_suspend(mddev);
3791 3794
3792 /* 3795 /*
3793 * Now reshape got set up, update superblocks to 3796 * Now reshape got set up, update superblocks to
@@ -3883,13 +3886,13 @@ static void raid_resume(struct dm_target *ti)
3883 if (!(rs->ctr_flags & RESUME_STAY_FROZEN_FLAGS)) 3886 if (!(rs->ctr_flags & RESUME_STAY_FROZEN_FLAGS))
3884 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); 3887 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery);
3885 3888
3886 if (mddev->suspended) 3889 if (test_and_clear_bit(RT_FLAG_RS_SUSPENDED, &rs->runtime_flags))
3887 mddev_resume(mddev); 3890 mddev_resume(mddev);
3888} 3891}
3889 3892
3890static struct target_type raid_target = { 3893static struct target_type raid_target = {
3891 .name = "raid", 3894 .name = "raid",
3892 .version = {1, 11, 1}, 3895 .version = {1, 12, 1},
3893 .module = THIS_MODULE, 3896 .module = THIS_MODULE,
3894 .ctr = raid_ctr, 3897 .ctr = raid_ctr,
3895 .dtr = raid_dtr, 3898 .dtr = raid_dtr,
diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
index a39bcd9b982a..28a4071cdf85 100644
--- a/drivers/md/dm-table.c
+++ b/drivers/md/dm-table.c
@@ -20,6 +20,7 @@
20#include <linux/atomic.h> 20#include <linux/atomic.h>
21#include <linux/blk-mq.h> 21#include <linux/blk-mq.h>
22#include <linux/mount.h> 22#include <linux/mount.h>
23#include <linux/dax.h>
23 24
24#define DM_MSG_PREFIX "table" 25#define DM_MSG_PREFIX "table"
25 26
@@ -1630,6 +1631,37 @@ static bool dm_table_supports_flush(struct dm_table *t, unsigned long flush)
1630 return false; 1631 return false;
1631} 1632}
1632 1633
1634static int device_dax_write_cache_enabled(struct dm_target *ti,
1635 struct dm_dev *dev, sector_t start,
1636 sector_t len, void *data)
1637{
1638 struct dax_device *dax_dev = dev->dax_dev;
1639
1640 if (!dax_dev)
1641 return false;
1642
1643 if (dax_write_cache_enabled(dax_dev))
1644 return true;
1645 return false;
1646}
1647
1648static int dm_table_supports_dax_write_cache(struct dm_table *t)
1649{
1650 struct dm_target *ti;
1651 unsigned i;
1652
1653 for (i = 0; i < dm_table_get_num_targets(t); i++) {
1654 ti = dm_table_get_target(t, i);
1655
1656 if (ti->type->iterate_devices &&
1657 ti->type->iterate_devices(ti,
1658 device_dax_write_cache_enabled, NULL))
1659 return true;
1660 }
1661
1662 return false;
1663}
1664
1633static int device_is_nonrot(struct dm_target *ti, struct dm_dev *dev, 1665static int device_is_nonrot(struct dm_target *ti, struct dm_dev *dev,
1634 sector_t start, sector_t len, void *data) 1666 sector_t start, sector_t len, void *data)
1635{ 1667{
@@ -1785,6 +1817,9 @@ void dm_table_set_restrictions(struct dm_table *t, struct request_queue *q,
1785 } 1817 }
1786 blk_queue_write_cache(q, wc, fua); 1818 blk_queue_write_cache(q, wc, fua);
1787 1819
1820 if (dm_table_supports_dax_write_cache(t))
1821 dax_write_cache(t->md->dax_dev, true);
1822
1788 /* Ensure that all underlying devices are non-rotational. */ 1823 /* Ensure that all underlying devices are non-rotational. */
1789 if (dm_table_all_devices_attribute(t, device_is_nonrot)) 1824 if (dm_table_all_devices_attribute(t, device_is_nonrot))
1790 queue_flag_set_unlocked(QUEUE_FLAG_NONROT, q); 1825 queue_flag_set_unlocked(QUEUE_FLAG_NONROT, q);
diff --git a/drivers/md/dm-verity-fec.c b/drivers/md/dm-verity-fec.c
index 504ba3fa328b..e13f90832b6b 100644
--- a/drivers/md/dm-verity-fec.c
+++ b/drivers/md/dm-verity-fec.c
@@ -308,19 +308,14 @@ static int fec_alloc_bufs(struct dm_verity *v, struct dm_verity_fec_io *fio)
308{ 308{
309 unsigned n; 309 unsigned n;
310 310
311 if (!fio->rs) { 311 if (!fio->rs)
312 fio->rs = mempool_alloc(v->fec->rs_pool, 0); 312 fio->rs = mempool_alloc(v->fec->rs_pool, GFP_NOIO);
313 if (unlikely(!fio->rs)) {
314 DMERR("failed to allocate RS");
315 return -ENOMEM;
316 }
317 }
318 313
319 fec_for_each_prealloc_buffer(n) { 314 fec_for_each_prealloc_buffer(n) {
320 if (fio->bufs[n]) 315 if (fio->bufs[n])
321 continue; 316 continue;
322 317
323 fio->bufs[n] = mempool_alloc(v->fec->prealloc_pool, GFP_NOIO); 318 fio->bufs[n] = mempool_alloc(v->fec->prealloc_pool, GFP_NOWAIT);
324 if (unlikely(!fio->bufs[n])) { 319 if (unlikely(!fio->bufs[n])) {
325 DMERR("failed to allocate FEC buffer"); 320 DMERR("failed to allocate FEC buffer");
326 return -ENOMEM; 321 return -ENOMEM;
@@ -332,22 +327,16 @@ static int fec_alloc_bufs(struct dm_verity *v, struct dm_verity_fec_io *fio)
332 if (fio->bufs[n]) 327 if (fio->bufs[n])
333 continue; 328 continue;
334 329
335 fio->bufs[n] = mempool_alloc(v->fec->extra_pool, GFP_NOIO); 330 fio->bufs[n] = mempool_alloc(v->fec->extra_pool, GFP_NOWAIT);
336 /* we can manage with even one buffer if necessary */ 331 /* we can manage with even one buffer if necessary */
337 if (unlikely(!fio->bufs[n])) 332 if (unlikely(!fio->bufs[n]))
338 break; 333 break;
339 } 334 }
340 fio->nbufs = n; 335 fio->nbufs = n;
341 336
342 if (!fio->output) { 337 if (!fio->output)
343 fio->output = mempool_alloc(v->fec->output_pool, GFP_NOIO); 338 fio->output = mempool_alloc(v->fec->output_pool, GFP_NOIO);
344 339
345 if (!fio->output) {
346 DMERR("failed to allocate FEC page");
347 return -ENOMEM;
348 }
349 }
350
351 return 0; 340 return 0;
352} 341}
353 342
diff --git a/drivers/md/dm-zoned-metadata.c b/drivers/md/dm-zoned-metadata.c
index 884ff7c170a0..a4fa2ada6883 100644
--- a/drivers/md/dm-zoned-metadata.c
+++ b/drivers/md/dm-zoned-metadata.c
@@ -624,7 +624,7 @@ static int dmz_write_sb(struct dmz_metadata *zmd, unsigned int set)
624 624
625 ret = dmz_rdwr_block(zmd, REQ_OP_WRITE, block, mblk->page); 625 ret = dmz_rdwr_block(zmd, REQ_OP_WRITE, block, mblk->page);
626 if (ret == 0) 626 if (ret == 0)
627 ret = blkdev_issue_flush(zmd->dev->bdev, GFP_KERNEL, NULL); 627 ret = blkdev_issue_flush(zmd->dev->bdev, GFP_NOIO, NULL);
628 628
629 return ret; 629 return ret;
630} 630}
@@ -658,7 +658,7 @@ static int dmz_write_dirty_mblocks(struct dmz_metadata *zmd,
658 658
659 /* Flush drive cache (this will also sync data) */ 659 /* Flush drive cache (this will also sync data) */
660 if (ret == 0) 660 if (ret == 0)
661 ret = blkdev_issue_flush(zmd->dev->bdev, GFP_KERNEL, NULL); 661 ret = blkdev_issue_flush(zmd->dev->bdev, GFP_NOIO, NULL);
662 662
663 return ret; 663 return ret;
664} 664}
@@ -722,7 +722,7 @@ int dmz_flush_metadata(struct dmz_metadata *zmd)
722 722
723 /* If there are no dirty metadata blocks, just flush the device cache */ 723 /* If there are no dirty metadata blocks, just flush the device cache */
724 if (list_empty(&write_list)) { 724 if (list_empty(&write_list)) {
725 ret = blkdev_issue_flush(zmd->dev->bdev, GFP_KERNEL, NULL); 725 ret = blkdev_issue_flush(zmd->dev->bdev, GFP_NOIO, NULL);
726 goto out; 726 goto out;
727 } 727 }
728 728
@@ -927,7 +927,7 @@ static int dmz_recover_mblocks(struct dmz_metadata *zmd, unsigned int dst_set)
927 (zmd->nr_meta_zones << zmd->dev->zone_nr_blocks_shift); 927 (zmd->nr_meta_zones << zmd->dev->zone_nr_blocks_shift);
928 } 928 }
929 929
930 page = alloc_page(GFP_KERNEL); 930 page = alloc_page(GFP_NOIO);
931 if (!page) 931 if (!page)
932 return -ENOMEM; 932 return -ENOMEM;
933 933
@@ -1183,7 +1183,7 @@ static int dmz_update_zone(struct dmz_metadata *zmd, struct dm_zone *zone)
1183 1183
1184 /* Get zone information from disk */ 1184 /* Get zone information from disk */
1185 ret = blkdev_report_zones(zmd->dev->bdev, dmz_start_sect(zmd, zone), 1185 ret = blkdev_report_zones(zmd->dev->bdev, dmz_start_sect(zmd, zone),
1186 &blkz, &nr_blkz, GFP_KERNEL); 1186 &blkz, &nr_blkz, GFP_NOIO);
1187 if (ret) { 1187 if (ret) {
1188 dmz_dev_err(zmd->dev, "Get zone %u report failed", 1188 dmz_dev_err(zmd->dev, "Get zone %u report failed",
1189 dmz_id(zmd, zone)); 1189 dmz_id(zmd, zone));
@@ -1257,7 +1257,7 @@ static int dmz_reset_zone(struct dmz_metadata *zmd, struct dm_zone *zone)
1257 1257
1258 ret = blkdev_reset_zones(dev->bdev, 1258 ret = blkdev_reset_zones(dev->bdev,
1259 dmz_start_sect(zmd, zone), 1259 dmz_start_sect(zmd, zone),
1260 dev->zone_nr_sectors, GFP_KERNEL); 1260 dev->zone_nr_sectors, GFP_NOIO);
1261 if (ret) { 1261 if (ret) {
1262 dmz_dev_err(dev, "Reset zone %u failed %d", 1262 dmz_dev_err(dev, "Reset zone %u failed %d",
1263 dmz_id(zmd, zone), ret); 1263 dmz_id(zmd, zone), ret);
diff --git a/drivers/md/dm-zoned-reclaim.c b/drivers/md/dm-zoned-reclaim.c
index 05c0a126f5c8..44a119e12f1a 100644
--- a/drivers/md/dm-zoned-reclaim.c
+++ b/drivers/md/dm-zoned-reclaim.c
@@ -75,7 +75,7 @@ static int dmz_reclaim_align_wp(struct dmz_reclaim *zrc, struct dm_zone *zone,
75 nr_blocks = block - wp_block; 75 nr_blocks = block - wp_block;
76 ret = blkdev_issue_zeroout(zrc->dev->bdev, 76 ret = blkdev_issue_zeroout(zrc->dev->bdev,
77 dmz_start_sect(zmd, zone) + dmz_blk2sect(wp_block), 77 dmz_start_sect(zmd, zone) + dmz_blk2sect(wp_block),
78 dmz_blk2sect(nr_blocks), GFP_NOFS, false); 78 dmz_blk2sect(nr_blocks), GFP_NOIO, 0);
79 if (ret) { 79 if (ret) {
80 dmz_dev_err(zrc->dev, 80 dmz_dev_err(zrc->dev,
81 "Align zone %u wp %llu to %llu (wp+%u) blocks failed %d", 81 "Align zone %u wp %llu to %llu (wp+%u) blocks failed %d",
diff --git a/drivers/md/dm-zoned-target.c b/drivers/md/dm-zoned-target.c
index 2b538fa817f4..b08bbbd4d902 100644
--- a/drivers/md/dm-zoned-target.c
+++ b/drivers/md/dm-zoned-target.c
@@ -541,7 +541,7 @@ static void dmz_queue_chunk_work(struct dmz_target *dmz, struct bio *bio)
541 int ret; 541 int ret;
542 542
543 /* Create a new chunk work */ 543 /* Create a new chunk work */
544 cw = kmalloc(sizeof(struct dm_chunk_work), GFP_NOFS); 544 cw = kmalloc(sizeof(struct dm_chunk_work), GFP_NOIO);
545 if (!cw) 545 if (!cw)
546 goto out; 546 goto out;
547 547
@@ -588,7 +588,7 @@ static int dmz_map(struct dm_target *ti, struct bio *bio)
588 588
589 bio->bi_bdev = dev->bdev; 589 bio->bi_bdev = dev->bdev;
590 590
591 if (!nr_sectors && (bio_op(bio) != REQ_OP_FLUSH) && (bio_op(bio) != REQ_OP_WRITE)) 591 if (!nr_sectors && bio_op(bio) != REQ_OP_WRITE)
592 return DM_MAPIO_REMAPPED; 592 return DM_MAPIO_REMAPPED;
593 593
594 /* The BIO should be block aligned */ 594 /* The BIO should be block aligned */
@@ -603,7 +603,7 @@ static int dmz_map(struct dm_target *ti, struct bio *bio)
603 bioctx->status = BLK_STS_OK; 603 bioctx->status = BLK_STS_OK;
604 604
605 /* Set the BIO pending in the flush list */ 605 /* Set the BIO pending in the flush list */
606 if (bio_op(bio) == REQ_OP_FLUSH || (!nr_sectors && bio_op(bio) == REQ_OP_WRITE)) { 606 if (!nr_sectors && bio_op(bio) == REQ_OP_WRITE) {
607 spin_lock(&dmz->flush_lock); 607 spin_lock(&dmz->flush_lock);
608 bio_list_add(&dmz->flush_list, bio); 608 bio_list_add(&dmz->flush_list, bio);
609 spin_unlock(&dmz->flush_lock); 609 spin_unlock(&dmz->flush_lock);
@@ -785,7 +785,7 @@ static int dmz_ctr(struct dm_target *ti, unsigned int argc, char **argv)
785 785
786 /* Chunk BIO work */ 786 /* Chunk BIO work */
787 mutex_init(&dmz->chunk_lock); 787 mutex_init(&dmz->chunk_lock);
788 INIT_RADIX_TREE(&dmz->chunk_rxtree, GFP_NOFS); 788 INIT_RADIX_TREE(&dmz->chunk_rxtree, GFP_KERNEL);
789 dmz->chunk_wq = alloc_workqueue("dmz_cwq_%s", WQ_MEM_RECLAIM | WQ_UNBOUND, 789 dmz->chunk_wq = alloc_workqueue("dmz_cwq_%s", WQ_MEM_RECLAIM | WQ_UNBOUND,
790 0, dev->name); 790 0, dev->name);
791 if (!dmz->chunk_wq) { 791 if (!dmz->chunk_wq) {
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 8cdca0296749..b01e458d31e9 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -2287,7 +2287,7 @@ static void export_array(struct mddev *mddev)
2287 2287
2288static bool set_in_sync(struct mddev *mddev) 2288static bool set_in_sync(struct mddev *mddev)
2289{ 2289{
2290 WARN_ON_ONCE(!spin_is_locked(&mddev->lock)); 2290 WARN_ON_ONCE(NR_CPUS != 1 && !spin_is_locked(&mddev->lock));
2291 if (!mddev->in_sync) { 2291 if (!mddev->in_sync) {
2292 mddev->sync_checkers++; 2292 mddev->sync_checkers++;
2293 spin_unlock(&mddev->lock); 2293 spin_unlock(&mddev->lock);
@@ -7996,7 +7996,7 @@ bool md_write_start(struct mddev *mddev, struct bio *bi)
7996 if (mddev->safemode == 1) 7996 if (mddev->safemode == 1)
7997 mddev->safemode = 0; 7997 mddev->safemode = 0;
7998 /* sync_checkers is always 0 when writes_pending is in per-cpu mode */ 7998 /* sync_checkers is always 0 when writes_pending is in per-cpu mode */
7999 if (mddev->in_sync || !mddev->sync_checkers) { 7999 if (mddev->in_sync || mddev->sync_checkers) {
8000 spin_lock(&mddev->lock); 8000 spin_lock(&mddev->lock);
8001 if (mddev->in_sync) { 8001 if (mddev->in_sync) {
8002 mddev->in_sync = 0; 8002 mddev->in_sync = 0;
@@ -8656,6 +8656,9 @@ void md_check_recovery(struct mddev *mddev)
8656 if (mddev_trylock(mddev)) { 8656 if (mddev_trylock(mddev)) {
8657 int spares = 0; 8657 int spares = 0;
8658 8658
8659 if (!mddev->external && mddev->safemode == 1)
8660 mddev->safemode = 0;
8661
8659 if (mddev->ro) { 8662 if (mddev->ro) {
8660 struct md_rdev *rdev; 8663 struct md_rdev *rdev;
8661 if (!mddev->external && mddev->in_sync) 8664 if (!mddev->external && mddev->in_sync)
diff --git a/drivers/md/md.h b/drivers/md/md.h
index 991f0fe2dcc6..09db03455801 100644
--- a/drivers/md/md.h
+++ b/drivers/md/md.h
@@ -134,7 +134,9 @@ enum flag_bits {
134 Faulty, /* device is known to have a fault */ 134 Faulty, /* device is known to have a fault */
135 In_sync, /* device is in_sync with rest of array */ 135 In_sync, /* device is in_sync with rest of array */
136 Bitmap_sync, /* ..actually, not quite In_sync. Need a 136 Bitmap_sync, /* ..actually, not quite In_sync. Need a
137 * bitmap-based recovery to get fully in sync 137 * bitmap-based recovery to get fully in sync.
138 * The bit is only meaningful before device
139 * has been passed to pers->hot_add_disk.
138 */ 140 */
139 WriteMostly, /* Avoid reading if at all possible */ 141 WriteMostly, /* Avoid reading if at all possible */
140 AutoDetected, /* added by auto-detect */ 142 AutoDetected, /* added by auto-detect */
@@ -729,58 +731,4 @@ static inline void mddev_check_write_zeroes(struct mddev *mddev, struct bio *bio
729 !bdev_get_queue(bio->bi_bdev)->limits.max_write_zeroes_sectors) 731 !bdev_get_queue(bio->bi_bdev)->limits.max_write_zeroes_sectors)
730 mddev->queue->limits.max_write_zeroes_sectors = 0; 732 mddev->queue->limits.max_write_zeroes_sectors = 0;
731} 733}
732
733/* Maximum size of each resync request */
734#define RESYNC_BLOCK_SIZE (64*1024)
735#define RESYNC_PAGES ((RESYNC_BLOCK_SIZE + PAGE_SIZE-1) / PAGE_SIZE)
736
737/* for managing resync I/O pages */
738struct resync_pages {
739 unsigned idx; /* for get/put page from the pool */
740 void *raid_bio;
741 struct page *pages[RESYNC_PAGES];
742};
743
744static inline int resync_alloc_pages(struct resync_pages *rp,
745 gfp_t gfp_flags)
746{
747 int i;
748
749 for (i = 0; i < RESYNC_PAGES; i++) {
750 rp->pages[i] = alloc_page(gfp_flags);
751 if (!rp->pages[i])
752 goto out_free;
753 }
754
755 return 0;
756
757out_free:
758 while (--i >= 0)
759 put_page(rp->pages[i]);
760 return -ENOMEM;
761}
762
763static inline void resync_free_pages(struct resync_pages *rp)
764{
765 int i;
766
767 for (i = 0; i < RESYNC_PAGES; i++)
768 put_page(rp->pages[i]);
769}
770
771static inline void resync_get_all_pages(struct resync_pages *rp)
772{
773 int i;
774
775 for (i = 0; i < RESYNC_PAGES; i++)
776 get_page(rp->pages[i]);
777}
778
779static inline struct page *resync_fetch_page(struct resync_pages *rp,
780 unsigned idx)
781{
782 if (WARN_ON_ONCE(idx >= RESYNC_PAGES))
783 return NULL;
784 return rp->pages[idx];
785}
786#endif /* _MD_MD_H */ 734#endif /* _MD_MD_H */
diff --git a/drivers/md/raid1-10.c b/drivers/md/raid1-10.c
new file mode 100644
index 000000000000..9f2670b45f31
--- /dev/null
+++ b/drivers/md/raid1-10.c
@@ -0,0 +1,81 @@
1/* Maximum size of each resync request */
2#define RESYNC_BLOCK_SIZE (64*1024)
3#define RESYNC_PAGES ((RESYNC_BLOCK_SIZE + PAGE_SIZE-1) / PAGE_SIZE)
4
5/* for managing resync I/O pages */
6struct resync_pages {
7 void *raid_bio;
8 struct page *pages[RESYNC_PAGES];
9};
10
11static inline int resync_alloc_pages(struct resync_pages *rp,
12 gfp_t gfp_flags)
13{
14 int i;
15
16 for (i = 0; i < RESYNC_PAGES; i++) {
17 rp->pages[i] = alloc_page(gfp_flags);
18 if (!rp->pages[i])
19 goto out_free;
20 }
21
22 return 0;
23
24out_free:
25 while (--i >= 0)
26 put_page(rp->pages[i]);
27 return -ENOMEM;
28}
29
30static inline void resync_free_pages(struct resync_pages *rp)
31{
32 int i;
33
34 for (i = 0; i < RESYNC_PAGES; i++)
35 put_page(rp->pages[i]);
36}
37
38static inline void resync_get_all_pages(struct resync_pages *rp)
39{
40 int i;
41
42 for (i = 0; i < RESYNC_PAGES; i++)
43 get_page(rp->pages[i]);
44}
45
46static inline struct page *resync_fetch_page(struct resync_pages *rp,
47 unsigned idx)
48{
49 if (WARN_ON_ONCE(idx >= RESYNC_PAGES))
50 return NULL;
51 return rp->pages[idx];
52}
53
54/*
55 * 'strct resync_pages' stores actual pages used for doing the resync
56 * IO, and it is per-bio, so make .bi_private points to it.
57 */
58static inline struct resync_pages *get_resync_pages(struct bio *bio)
59{
60 return bio->bi_private;
61}
62
63/* generally called after bio_reset() for reseting bvec */
64static void md_bio_reset_resync_pages(struct bio *bio, struct resync_pages *rp,
65 int size)
66{
67 int idx = 0;
68
69 /* initialize bvec table again */
70 do {
71 struct page *page = resync_fetch_page(rp, idx);
72 int len = min_t(int, size, PAGE_SIZE);
73
74 /*
75 * won't fail because the vec table is big
76 * enough to hold all these pages
77 */
78 bio_add_page(bio, page, len, 0);
79 size -= len;
80 } while (idx++ < RESYNC_PAGES && size > 0);
81}
diff --git a/drivers/md/raid1.c b/drivers/md/raid1.c
index 3febfc8391fb..f50958ded9f0 100644
--- a/drivers/md/raid1.c
+++ b/drivers/md/raid1.c
@@ -81,14 +81,7 @@ static void lower_barrier(struct r1conf *conf, sector_t sector_nr);
81#define raid1_log(md, fmt, args...) \ 81#define raid1_log(md, fmt, args...) \
82 do { if ((md)->queue) blk_add_trace_msg((md)->queue, "raid1 " fmt, ##args); } while (0) 82 do { if ((md)->queue) blk_add_trace_msg((md)->queue, "raid1 " fmt, ##args); } while (0)
83 83
84/* 84#include "raid1-10.c"
85 * 'strct resync_pages' stores actual pages used for doing the resync
86 * IO, and it is per-bio, so make .bi_private points to it.
87 */
88static inline struct resync_pages *get_resync_pages(struct bio *bio)
89{
90 return bio->bi_private;
91}
92 85
93/* 86/*
94 * for resync bio, r1bio pointer can be retrieved from the per-bio 87 * for resync bio, r1bio pointer can be retrieved from the per-bio
@@ -170,7 +163,6 @@ static void * r1buf_pool_alloc(gfp_t gfp_flags, void *data)
170 resync_get_all_pages(rp); 163 resync_get_all_pages(rp);
171 } 164 }
172 165
173 rp->idx = 0;
174 rp->raid_bio = r1_bio; 166 rp->raid_bio = r1_bio;
175 bio->bi_private = rp; 167 bio->bi_private = rp;
176 } 168 }
@@ -492,10 +484,6 @@ static void raid1_end_write_request(struct bio *bio)
492 } 484 }
493 485
494 if (behind) { 486 if (behind) {
495 /* we release behind master bio when all write are done */
496 if (r1_bio->behind_master_bio == bio)
497 to_put = NULL;
498
499 if (test_bit(WriteMostly, &rdev->flags)) 487 if (test_bit(WriteMostly, &rdev->flags))
500 atomic_dec(&r1_bio->behind_remaining); 488 atomic_dec(&r1_bio->behind_remaining);
501 489
@@ -802,8 +790,7 @@ static void flush_bio_list(struct r1conf *conf, struct bio *bio)
802 bio->bi_next = NULL; 790 bio->bi_next = NULL;
803 bio->bi_bdev = rdev->bdev; 791 bio->bi_bdev = rdev->bdev;
804 if (test_bit(Faulty, &rdev->flags)) { 792 if (test_bit(Faulty, &rdev->flags)) {
805 bio->bi_status = BLK_STS_IOERR; 793 bio_io_error(bio);
806 bio_endio(bio);
807 } else if (unlikely((bio_op(bio) == REQ_OP_DISCARD) && 794 } else if (unlikely((bio_op(bio) == REQ_OP_DISCARD) &&
808 !blk_queue_discard(bdev_get_queue(bio->bi_bdev)))) 795 !blk_queue_discard(bdev_get_queue(bio->bi_bdev))))
809 /* Just ignore it */ 796 /* Just ignore it */
@@ -1088,7 +1075,7 @@ static void unfreeze_array(struct r1conf *conf)
1088 wake_up(&conf->wait_barrier); 1075 wake_up(&conf->wait_barrier);
1089} 1076}
1090 1077
1091static struct bio *alloc_behind_master_bio(struct r1bio *r1_bio, 1078static void alloc_behind_master_bio(struct r1bio *r1_bio,
1092 struct bio *bio) 1079 struct bio *bio)
1093{ 1080{
1094 int size = bio->bi_iter.bi_size; 1081 int size = bio->bi_iter.bi_size;
@@ -1098,11 +1085,13 @@ static struct bio *alloc_behind_master_bio(struct r1bio *r1_bio,
1098 1085
1099 behind_bio = bio_alloc_mddev(GFP_NOIO, vcnt, r1_bio->mddev); 1086 behind_bio = bio_alloc_mddev(GFP_NOIO, vcnt, r1_bio->mddev);
1100 if (!behind_bio) 1087 if (!behind_bio)
1101 goto fail; 1088 return;
1102 1089
1103 /* discard op, we don't support writezero/writesame yet */ 1090 /* discard op, we don't support writezero/writesame yet */
1104 if (!bio_has_data(bio)) 1091 if (!bio_has_data(bio)) {
1092 behind_bio->bi_iter.bi_size = size;
1105 goto skip_copy; 1093 goto skip_copy;
1094 }
1106 1095
1107 while (i < vcnt && size) { 1096 while (i < vcnt && size) {
1108 struct page *page; 1097 struct page *page;
@@ -1123,14 +1112,13 @@ skip_copy:
1123 r1_bio->behind_master_bio = behind_bio;; 1112 r1_bio->behind_master_bio = behind_bio;;
1124 set_bit(R1BIO_BehindIO, &r1_bio->state); 1113 set_bit(R1BIO_BehindIO, &r1_bio->state);
1125 1114
1126 return behind_bio; 1115 return;
1127 1116
1128free_pages: 1117free_pages:
1129 pr_debug("%dB behind alloc failed, doing sync I/O\n", 1118 pr_debug("%dB behind alloc failed, doing sync I/O\n",
1130 bio->bi_iter.bi_size); 1119 bio->bi_iter.bi_size);
1131 bio_free_pages(behind_bio); 1120 bio_free_pages(behind_bio);
1132fail: 1121 bio_put(behind_bio);
1133 return behind_bio;
1134} 1122}
1135 1123
1136struct raid1_plug_cb { 1124struct raid1_plug_cb {
@@ -1483,7 +1471,7 @@ static void raid1_write_request(struct mddev *mddev, struct bio *bio,
1483 (atomic_read(&bitmap->behind_writes) 1471 (atomic_read(&bitmap->behind_writes)
1484 < mddev->bitmap_info.max_write_behind) && 1472 < mddev->bitmap_info.max_write_behind) &&
1485 !waitqueue_active(&bitmap->behind_wait)) { 1473 !waitqueue_active(&bitmap->behind_wait)) {
1486 mbio = alloc_behind_master_bio(r1_bio, bio); 1474 alloc_behind_master_bio(r1_bio, bio);
1487 } 1475 }
1488 1476
1489 bitmap_startwrite(bitmap, r1_bio->sector, 1477 bitmap_startwrite(bitmap, r1_bio->sector,
@@ -1493,14 +1481,11 @@ static void raid1_write_request(struct mddev *mddev, struct bio *bio,
1493 first_clone = 0; 1481 first_clone = 0;
1494 } 1482 }
1495 1483
1496 if (!mbio) { 1484 if (r1_bio->behind_master_bio)
1497 if (r1_bio->behind_master_bio) 1485 mbio = bio_clone_fast(r1_bio->behind_master_bio,
1498 mbio = bio_clone_fast(r1_bio->behind_master_bio, 1486 GFP_NOIO, mddev->bio_set);
1499 GFP_NOIO, 1487 else
1500 mddev->bio_set); 1488 mbio = bio_clone_fast(bio, GFP_NOIO, mddev->bio_set);
1501 else
1502 mbio = bio_clone_fast(bio, GFP_NOIO, mddev->bio_set);
1503 }
1504 1489
1505 if (r1_bio->behind_master_bio) { 1490 if (r1_bio->behind_master_bio) {
1506 if (test_bit(WriteMostly, &conf->mirrors[i].rdev->flags)) 1491 if (test_bit(WriteMostly, &conf->mirrors[i].rdev->flags))
@@ -2086,10 +2071,7 @@ static void process_checks(struct r1bio *r1_bio)
2086 /* Fix variable parts of all bios */ 2071 /* Fix variable parts of all bios */
2087 vcnt = (r1_bio->sectors + PAGE_SIZE / 512 - 1) >> (PAGE_SHIFT - 9); 2072 vcnt = (r1_bio->sectors + PAGE_SIZE / 512 - 1) >> (PAGE_SHIFT - 9);
2088 for (i = 0; i < conf->raid_disks * 2; i++) { 2073 for (i = 0; i < conf->raid_disks * 2; i++) {
2089 int j;
2090 int size;
2091 blk_status_t status; 2074 blk_status_t status;
2092 struct bio_vec *bi;
2093 struct bio *b = r1_bio->bios[i]; 2075 struct bio *b = r1_bio->bios[i];
2094 struct resync_pages *rp = get_resync_pages(b); 2076 struct resync_pages *rp = get_resync_pages(b);
2095 if (b->bi_end_io != end_sync_read) 2077 if (b->bi_end_io != end_sync_read)
@@ -2098,8 +2080,6 @@ static void process_checks(struct r1bio *r1_bio)
2098 status = b->bi_status; 2080 status = b->bi_status;
2099 bio_reset(b); 2081 bio_reset(b);
2100 b->bi_status = status; 2082 b->bi_status = status;
2101 b->bi_vcnt = vcnt;
2102 b->bi_iter.bi_size = r1_bio->sectors << 9;
2103 b->bi_iter.bi_sector = r1_bio->sector + 2083 b->bi_iter.bi_sector = r1_bio->sector +
2104 conf->mirrors[i].rdev->data_offset; 2084 conf->mirrors[i].rdev->data_offset;
2105 b->bi_bdev = conf->mirrors[i].rdev->bdev; 2085 b->bi_bdev = conf->mirrors[i].rdev->bdev;
@@ -2107,15 +2087,8 @@ static void process_checks(struct r1bio *r1_bio)
2107 rp->raid_bio = r1_bio; 2087 rp->raid_bio = r1_bio;
2108 b->bi_private = rp; 2088 b->bi_private = rp;
2109 2089
2110 size = b->bi_iter.bi_size; 2090 /* initialize bvec table again */
2111 bio_for_each_segment_all(bi, b, j) { 2091 md_bio_reset_resync_pages(b, rp, r1_bio->sectors << 9);
2112 bi->bv_offset = 0;
2113 if (size > PAGE_SIZE)
2114 bi->bv_len = PAGE_SIZE;
2115 else
2116 bi->bv_len = size;
2117 size -= PAGE_SIZE;
2118 }
2119 } 2092 }
2120 for (primary = 0; primary < conf->raid_disks * 2; primary++) 2093 for (primary = 0; primary < conf->raid_disks * 2; primary++)
2121 if (r1_bio->bios[primary]->bi_end_io == end_sync_read && 2094 if (r1_bio->bios[primary]->bi_end_io == end_sync_read &&
@@ -2366,8 +2339,6 @@ static int narrow_write_error(struct r1bio *r1_bio, int i)
2366 wbio = bio_clone_fast(r1_bio->behind_master_bio, 2339 wbio = bio_clone_fast(r1_bio->behind_master_bio,
2367 GFP_NOIO, 2340 GFP_NOIO,
2368 mddev->bio_set); 2341 mddev->bio_set);
2369 /* We really need a _all clone */
2370 wbio->bi_iter = (struct bvec_iter){ 0 };
2371 } else { 2342 } else {
2372 wbio = bio_clone_fast(r1_bio->master_bio, GFP_NOIO, 2343 wbio = bio_clone_fast(r1_bio->master_bio, GFP_NOIO,
2373 mddev->bio_set); 2344 mddev->bio_set);
@@ -2619,6 +2590,7 @@ static sector_t raid1_sync_request(struct mddev *mddev, sector_t sector_nr,
2619 int good_sectors = RESYNC_SECTORS; 2590 int good_sectors = RESYNC_SECTORS;
2620 int min_bad = 0; /* number of sectors that are bad in all devices */ 2591 int min_bad = 0; /* number of sectors that are bad in all devices */
2621 int idx = sector_to_idx(sector_nr); 2592 int idx = sector_to_idx(sector_nr);
2593 int page_idx = 0;
2622 2594
2623 if (!conf->r1buf_pool) 2595 if (!conf->r1buf_pool)
2624 if (init_resync(conf)) 2596 if (init_resync(conf))
@@ -2846,7 +2818,7 @@ static sector_t raid1_sync_request(struct mddev *mddev, sector_t sector_nr,
2846 bio = r1_bio->bios[i]; 2818 bio = r1_bio->bios[i];
2847 rp = get_resync_pages(bio); 2819 rp = get_resync_pages(bio);
2848 if (bio->bi_end_io) { 2820 if (bio->bi_end_io) {
2849 page = resync_fetch_page(rp, rp->idx++); 2821 page = resync_fetch_page(rp, page_idx);
2850 2822
2851 /* 2823 /*
2852 * won't fail because the vec table is big 2824 * won't fail because the vec table is big
@@ -2858,7 +2830,7 @@ static sector_t raid1_sync_request(struct mddev *mddev, sector_t sector_nr,
2858 nr_sectors += len>>9; 2830 nr_sectors += len>>9;
2859 sector_nr += len>>9; 2831 sector_nr += len>>9;
2860 sync_blocks -= (len>>9); 2832 sync_blocks -= (len>>9);
2861 } while (get_resync_pages(r1_bio->bios[disk]->bi_private)->idx < RESYNC_PAGES); 2833 } while (++page_idx < RESYNC_PAGES);
2862 2834
2863 r1_bio->sectors = nr_sectors; 2835 r1_bio->sectors = nr_sectors;
2864 2836
diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
index 5026e7ad51d3..f55d4cc085f6 100644
--- a/drivers/md/raid10.c
+++ b/drivers/md/raid10.c
@@ -110,14 +110,7 @@ static void end_reshape(struct r10conf *conf);
110#define raid10_log(md, fmt, args...) \ 110#define raid10_log(md, fmt, args...) \
111 do { if ((md)->queue) blk_add_trace_msg((md)->queue, "raid10 " fmt, ##args); } while (0) 111 do { if ((md)->queue) blk_add_trace_msg((md)->queue, "raid10 " fmt, ##args); } while (0)
112 112
113/* 113#include "raid1-10.c"
114 * 'strct resync_pages' stores actual pages used for doing the resync
115 * IO, and it is per-bio, so make .bi_private points to it.
116 */
117static inline struct resync_pages *get_resync_pages(struct bio *bio)
118{
119 return bio->bi_private;
120}
121 114
122/* 115/*
123 * for resync bio, r10bio pointer can be retrieved from the per-bio 116 * for resync bio, r10bio pointer can be retrieved from the per-bio
@@ -221,7 +214,6 @@ static void * r10buf_pool_alloc(gfp_t gfp_flags, void *data)
221 resync_get_all_pages(rp); 214 resync_get_all_pages(rp);
222 } 215 }
223 216
224 rp->idx = 0;
225 rp->raid_bio = r10_bio; 217 rp->raid_bio = r10_bio;
226 bio->bi_private = rp; 218 bio->bi_private = rp;
227 if (rbio) { 219 if (rbio) {
@@ -913,8 +905,7 @@ static void flush_pending_writes(struct r10conf *conf)
913 bio->bi_next = NULL; 905 bio->bi_next = NULL;
914 bio->bi_bdev = rdev->bdev; 906 bio->bi_bdev = rdev->bdev;
915 if (test_bit(Faulty, &rdev->flags)) { 907 if (test_bit(Faulty, &rdev->flags)) {
916 bio->bi_status = BLK_STS_IOERR; 908 bio_io_error(bio);
917 bio_endio(bio);
918 } else if (unlikely((bio_op(bio) == REQ_OP_DISCARD) && 909 } else if (unlikely((bio_op(bio) == REQ_OP_DISCARD) &&
919 !blk_queue_discard(bdev_get_queue(bio->bi_bdev)))) 910 !blk_queue_discard(bdev_get_queue(bio->bi_bdev))))
920 /* Just ignore it */ 911 /* Just ignore it */
@@ -1098,8 +1089,7 @@ static void raid10_unplug(struct blk_plug_cb *cb, bool from_schedule)
1098 bio->bi_next = NULL; 1089 bio->bi_next = NULL;
1099 bio->bi_bdev = rdev->bdev; 1090 bio->bi_bdev = rdev->bdev;
1100 if (test_bit(Faulty, &rdev->flags)) { 1091 if (test_bit(Faulty, &rdev->flags)) {
1101 bio->bi_status = BLK_STS_IOERR; 1092 bio_io_error(bio);
1102 bio_endio(bio);
1103 } else if (unlikely((bio_op(bio) == REQ_OP_DISCARD) && 1093 } else if (unlikely((bio_op(bio) == REQ_OP_DISCARD) &&
1104 !blk_queue_discard(bdev_get_queue(bio->bi_bdev)))) 1094 !blk_queue_discard(bdev_get_queue(bio->bi_bdev))))
1105 /* Just ignore it */ 1095 /* Just ignore it */
@@ -2087,8 +2077,8 @@ static void sync_request_write(struct mddev *mddev, struct r10bio *r10_bio)
2087 rp = get_resync_pages(tbio); 2077 rp = get_resync_pages(tbio);
2088 bio_reset(tbio); 2078 bio_reset(tbio);
2089 2079
2090 tbio->bi_vcnt = vcnt; 2080 md_bio_reset_resync_pages(tbio, rp, fbio->bi_iter.bi_size);
2091 tbio->bi_iter.bi_size = fbio->bi_iter.bi_size; 2081
2092 rp->raid_bio = r10_bio; 2082 rp->raid_bio = r10_bio;
2093 tbio->bi_private = rp; 2083 tbio->bi_private = rp;
2094 tbio->bi_iter.bi_sector = r10_bio->devs[i].addr; 2084 tbio->bi_iter.bi_sector = r10_bio->devs[i].addr;
@@ -2853,6 +2843,7 @@ static sector_t raid10_sync_request(struct mddev *mddev, sector_t sector_nr,
2853 sector_t sectors_skipped = 0; 2843 sector_t sectors_skipped = 0;
2854 int chunks_skipped = 0; 2844 int chunks_skipped = 0;
2855 sector_t chunk_mask = conf->geo.chunk_mask; 2845 sector_t chunk_mask = conf->geo.chunk_mask;
2846 int page_idx = 0;
2856 2847
2857 if (!conf->r10buf_pool) 2848 if (!conf->r10buf_pool)
2858 if (init_resync(conf)) 2849 if (init_resync(conf))
@@ -3355,7 +3346,7 @@ static sector_t raid10_sync_request(struct mddev *mddev, sector_t sector_nr,
3355 break; 3346 break;
3356 for (bio= biolist ; bio ; bio=bio->bi_next) { 3347 for (bio= biolist ; bio ; bio=bio->bi_next) {
3357 struct resync_pages *rp = get_resync_pages(bio); 3348 struct resync_pages *rp = get_resync_pages(bio);
3358 page = resync_fetch_page(rp, rp->idx++); 3349 page = resync_fetch_page(rp, page_idx);
3359 /* 3350 /*
3360 * won't fail because the vec table is big enough 3351 * won't fail because the vec table is big enough
3361 * to hold all these pages 3352 * to hold all these pages
@@ -3364,7 +3355,7 @@ static sector_t raid10_sync_request(struct mddev *mddev, sector_t sector_nr,
3364 } 3355 }
3365 nr_sectors += len>>9; 3356 nr_sectors += len>>9;
3366 sector_nr += len>>9; 3357 sector_nr += len>>9;
3367 } while (get_resync_pages(biolist)->idx < RESYNC_PAGES); 3358 } while (++page_idx < RESYNC_PAGES);
3368 r10_bio->sectors = nr_sectors; 3359 r10_bio->sectors = nr_sectors;
3369 3360
3370 while (biolist) { 3361 while (biolist) {
diff --git a/drivers/md/raid5-cache.c b/drivers/md/raid5-cache.c
index bfa1e907c472..2dcbafa8e66c 100644
--- a/drivers/md/raid5-cache.c
+++ b/drivers/md/raid5-cache.c
@@ -236,9 +236,10 @@ struct r5l_io_unit {
236 bool need_split_bio; 236 bool need_split_bio;
237 struct bio *split_bio; 237 struct bio *split_bio;
238 238
239 unsigned int has_flush:1; /* include flush request */ 239 unsigned int has_flush:1; /* include flush request */
240 unsigned int has_fua:1; /* include fua request */ 240 unsigned int has_fua:1; /* include fua request */
241 unsigned int has_null_flush:1; /* include empty flush request */ 241 unsigned int has_null_flush:1; /* include null flush request */
242 unsigned int has_flush_payload:1; /* include flush payload */
242 /* 243 /*
243 * io isn't sent yet, flush/fua request can only be submitted till it's 244 * io isn't sent yet, flush/fua request can only be submitted till it's
244 * the first IO in running_ios list 245 * the first IO in running_ios list
@@ -571,6 +572,8 @@ static void r5l_log_endio(struct bio *bio)
571 struct r5l_io_unit *io_deferred; 572 struct r5l_io_unit *io_deferred;
572 struct r5l_log *log = io->log; 573 struct r5l_log *log = io->log;
573 unsigned long flags; 574 unsigned long flags;
575 bool has_null_flush;
576 bool has_flush_payload;
574 577
575 if (bio->bi_status) 578 if (bio->bi_status)
576 md_error(log->rdev->mddev, log->rdev); 579 md_error(log->rdev->mddev, log->rdev);
@@ -580,6 +583,16 @@ static void r5l_log_endio(struct bio *bio)
580 583
581 spin_lock_irqsave(&log->io_list_lock, flags); 584 spin_lock_irqsave(&log->io_list_lock, flags);
582 __r5l_set_io_unit_state(io, IO_UNIT_IO_END); 585 __r5l_set_io_unit_state(io, IO_UNIT_IO_END);
586
587 /*
588 * if the io doesn't not have null_flush or flush payload,
589 * it is not safe to access it after releasing io_list_lock.
590 * Therefore, it is necessary to check the condition with
591 * the lock held.
592 */
593 has_null_flush = io->has_null_flush;
594 has_flush_payload = io->has_flush_payload;
595
583 if (log->need_cache_flush && !list_empty(&io->stripe_list)) 596 if (log->need_cache_flush && !list_empty(&io->stripe_list))
584 r5l_move_to_end_ios(log); 597 r5l_move_to_end_ios(log);
585 else 598 else
@@ -600,19 +613,23 @@ static void r5l_log_endio(struct bio *bio)
600 if (log->need_cache_flush) 613 if (log->need_cache_flush)
601 md_wakeup_thread(log->rdev->mddev->thread); 614 md_wakeup_thread(log->rdev->mddev->thread);
602 615
603 if (io->has_null_flush) { 616 /* finish flush only io_unit and PAYLOAD_FLUSH only io_unit */
617 if (has_null_flush) {
604 struct bio *bi; 618 struct bio *bi;
605 619
606 WARN_ON(bio_list_empty(&io->flush_barriers)); 620 WARN_ON(bio_list_empty(&io->flush_barriers));
607 while ((bi = bio_list_pop(&io->flush_barriers)) != NULL) { 621 while ((bi = bio_list_pop(&io->flush_barriers)) != NULL) {
608 bio_endio(bi); 622 bio_endio(bi);
609 atomic_dec(&io->pending_stripe); 623 if (atomic_dec_and_test(&io->pending_stripe)) {
624 __r5l_stripe_write_finished(io);
625 return;
626 }
610 } 627 }
611 } 628 }
612 629 /* decrease pending_stripe for flush payload */
613 /* finish flush only io_unit and PAYLOAD_FLUSH only io_unit */ 630 if (has_flush_payload)
614 if (atomic_read(&io->pending_stripe) == 0) 631 if (atomic_dec_and_test(&io->pending_stripe))
615 __r5l_stripe_write_finished(io); 632 __r5l_stripe_write_finished(io);
616} 633}
617 634
618static void r5l_do_submit_io(struct r5l_log *log, struct r5l_io_unit *io) 635static void r5l_do_submit_io(struct r5l_log *log, struct r5l_io_unit *io)
@@ -881,6 +898,11 @@ static void r5l_append_flush_payload(struct r5l_log *log, sector_t sect)
881 payload->size = cpu_to_le32(sizeof(__le64)); 898 payload->size = cpu_to_le32(sizeof(__le64));
882 payload->flush_stripes[0] = cpu_to_le64(sect); 899 payload->flush_stripes[0] = cpu_to_le64(sect);
883 io->meta_offset += meta_size; 900 io->meta_offset += meta_size;
901 /* multiple flush payloads count as one pending_stripe */
902 if (!io->has_flush_payload) {
903 io->has_flush_payload = 1;
904 atomic_inc(&io->pending_stripe);
905 }
884 mutex_unlock(&log->io_mutex); 906 mutex_unlock(&log->io_mutex);
885} 907}
886 908
@@ -2540,23 +2562,32 @@ static ssize_t r5c_journal_mode_show(struct mddev *mddev, char *page)
2540 */ 2562 */
2541int r5c_journal_mode_set(struct mddev *mddev, int mode) 2563int r5c_journal_mode_set(struct mddev *mddev, int mode)
2542{ 2564{
2543 struct r5conf *conf = mddev->private; 2565 struct r5conf *conf;
2544 struct r5l_log *log = conf->log; 2566 int err;
2545
2546 if (!log)
2547 return -ENODEV;
2548 2567
2549 if (mode < R5C_JOURNAL_MODE_WRITE_THROUGH || 2568 if (mode < R5C_JOURNAL_MODE_WRITE_THROUGH ||
2550 mode > R5C_JOURNAL_MODE_WRITE_BACK) 2569 mode > R5C_JOURNAL_MODE_WRITE_BACK)
2551 return -EINVAL; 2570 return -EINVAL;
2552 2571
2572 err = mddev_lock(mddev);
2573 if (err)
2574 return err;
2575 conf = mddev->private;
2576 if (!conf || !conf->log) {
2577 mddev_unlock(mddev);
2578 return -ENODEV;
2579 }
2580
2553 if (raid5_calc_degraded(conf) > 0 && 2581 if (raid5_calc_degraded(conf) > 0 &&
2554 mode == R5C_JOURNAL_MODE_WRITE_BACK) 2582 mode == R5C_JOURNAL_MODE_WRITE_BACK) {
2583 mddev_unlock(mddev);
2555 return -EINVAL; 2584 return -EINVAL;
2585 }
2556 2586
2557 mddev_suspend(mddev); 2587 mddev_suspend(mddev);
2558 conf->log->r5c_journal_mode = mode; 2588 conf->log->r5c_journal_mode = mode;
2559 mddev_resume(mddev); 2589 mddev_resume(mddev);
2590 mddev_unlock(mddev);
2560 2591
2561 pr_debug("md/raid:%s: setting r5c cache mode to %d: %s\n", 2592 pr_debug("md/raid:%s: setting r5c cache mode to %d: %s\n",
2562 mdname(mddev), mode, r5c_journal_mode_str[mode]); 2593 mdname(mddev), mode, r5c_journal_mode_str[mode]);
diff --git a/drivers/md/raid5-ppl.c b/drivers/md/raid5-ppl.c
index 77cce3573aa8..44ad5baf3206 100644
--- a/drivers/md/raid5-ppl.c
+++ b/drivers/md/raid5-ppl.c
@@ -1150,7 +1150,7 @@ int ppl_init_log(struct r5conf *conf)
1150 goto err; 1150 goto err;
1151 } 1151 }
1152 1152
1153 ppl_conf->bs = bioset_create(conf->raid_disks, 0, 0); 1153 ppl_conf->bs = bioset_create(conf->raid_disks, 0, BIOSET_NEED_BVECS);
1154 if (!ppl_conf->bs) { 1154 if (!ppl_conf->bs) {
1155 ret = -ENOMEM; 1155 ret = -ENOMEM;
1156 goto err; 1156 goto err;
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index 2ceb338b094b..0fc2748aaf95 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -3381,9 +3381,8 @@ handle_failed_stripe(struct r5conf *conf, struct stripe_head *sh,
3381 sh->dev[i].sector + STRIPE_SECTORS) { 3381 sh->dev[i].sector + STRIPE_SECTORS) {
3382 struct bio *nextbi = r5_next_bio(bi, sh->dev[i].sector); 3382 struct bio *nextbi = r5_next_bio(bi, sh->dev[i].sector);
3383 3383
3384 bi->bi_status = BLK_STS_IOERR;
3385 md_write_end(conf->mddev); 3384 md_write_end(conf->mddev);
3386 bio_endio(bi); 3385 bio_io_error(bi);
3387 bi = nextbi; 3386 bi = nextbi;
3388 } 3387 }
3389 if (bitmap_end) 3388 if (bitmap_end)
@@ -3403,9 +3402,8 @@ handle_failed_stripe(struct r5conf *conf, struct stripe_head *sh,
3403 sh->dev[i].sector + STRIPE_SECTORS) { 3402 sh->dev[i].sector + STRIPE_SECTORS) {
3404 struct bio *bi2 = r5_next_bio(bi, sh->dev[i].sector); 3403 struct bio *bi2 = r5_next_bio(bi, sh->dev[i].sector);
3405 3404
3406 bi->bi_status = BLK_STS_IOERR;
3407 md_write_end(conf->mddev); 3405 md_write_end(conf->mddev);
3408 bio_endio(bi); 3406 bio_io_error(bi);
3409 bi = bi2; 3407 bi = bi2;
3410 } 3408 }
3411 3409
@@ -3429,8 +3427,7 @@ handle_failed_stripe(struct r5conf *conf, struct stripe_head *sh,
3429 struct bio *nextbi = 3427 struct bio *nextbi =
3430 r5_next_bio(bi, sh->dev[i].sector); 3428 r5_next_bio(bi, sh->dev[i].sector);
3431 3429
3432 bi->bi_status = BLK_STS_IOERR; 3430 bio_io_error(bi);
3433 bio_endio(bi);
3434 bi = nextbi; 3431 bi = nextbi;
3435 } 3432 }
3436 } 3433 }
@@ -6237,6 +6234,8 @@ static void raid5_do_work(struct work_struct *work)
6237 pr_debug("%d stripes handled\n", handled); 6234 pr_debug("%d stripes handled\n", handled);
6238 6235
6239 spin_unlock_irq(&conf->device_lock); 6236 spin_unlock_irq(&conf->device_lock);
6237
6238 async_tx_issue_pending_all();
6240 blk_finish_plug(&plug); 6239 blk_finish_plug(&plug);
6241 6240
6242 pr_debug("--- raid5worker inactive\n"); 6241 pr_debug("--- raid5worker inactive\n");
@@ -7951,12 +7950,10 @@ static void end_reshape(struct r5conf *conf)
7951{ 7950{
7952 7951
7953 if (!test_bit(MD_RECOVERY_INTR, &conf->mddev->recovery)) { 7952 if (!test_bit(MD_RECOVERY_INTR, &conf->mddev->recovery)) {
7954 struct md_rdev *rdev;
7955 7953
7956 spin_lock_irq(&conf->device_lock); 7954 spin_lock_irq(&conf->device_lock);
7957 conf->previous_raid_disks = conf->raid_disks; 7955 conf->previous_raid_disks = conf->raid_disks;
7958 rdev_for_each(rdev, conf->mddev) 7956 md_finish_reshape(conf->mddev);
7959 rdev->data_offset = rdev->new_data_offset;
7960 smp_wmb(); 7957 smp_wmb();
7961 conf->reshape_progress = MaxSector; 7958 conf->reshape_progress = MaxSector;
7962 conf->mddev->reshape_position = MaxSector; 7959 conf->mddev->reshape_position = MaxSector;
diff --git a/drivers/media/cec/cec-adap.c b/drivers/media/cec/cec-adap.c
index bf45977b2823..d596b601ff42 100644
--- a/drivers/media/cec/cec-adap.c
+++ b/drivers/media/cec/cec-adap.c
@@ -559,7 +559,7 @@ EXPORT_SYMBOL_GPL(cec_transmit_done);
559 559
560void cec_transmit_attempt_done(struct cec_adapter *adap, u8 status) 560void cec_transmit_attempt_done(struct cec_adapter *adap, u8 status)
561{ 561{
562 switch (status) { 562 switch (status & ~CEC_TX_STATUS_MAX_RETRIES) {
563 case CEC_TX_STATUS_OK: 563 case CEC_TX_STATUS_OK:
564 cec_transmit_done(adap, status, 0, 0, 0, 0); 564 cec_transmit_done(adap, status, 0, 0, 0, 0);
565 return; 565 return;
diff --git a/drivers/media/cec/cec-notifier.c b/drivers/media/cec/cec-notifier.c
index 74dc1c32080e..08b619d0ea1e 100644
--- a/drivers/media/cec/cec-notifier.c
+++ b/drivers/media/cec/cec-notifier.c
@@ -87,6 +87,9 @@ EXPORT_SYMBOL_GPL(cec_notifier_put);
87 87
88void cec_notifier_set_phys_addr(struct cec_notifier *n, u16 pa) 88void cec_notifier_set_phys_addr(struct cec_notifier *n, u16 pa)
89{ 89{
90 if (n == NULL)
91 return;
92
90 mutex_lock(&n->lock); 93 mutex_lock(&n->lock);
91 n->phys_addr = pa; 94 n->phys_addr = pa;
92 if (n->callback) 95 if (n->callback)
@@ -100,6 +103,9 @@ void cec_notifier_set_phys_addr_from_edid(struct cec_notifier *n,
100{ 103{
101 u16 pa = CEC_PHYS_ADDR_INVALID; 104 u16 pa = CEC_PHYS_ADDR_INVALID;
102 105
106 if (n == NULL)
107 return;
108
103 if (edid && edid->extensions) 109 if (edid && edid->extensions)
104 pa = cec_get_edid_phys_addr((const u8 *)edid, 110 pa = cec_get_edid_phys_addr((const u8 *)edid,
105 EDID_LENGTH * (edid->extensions + 1), NULL); 111 EDID_LENGTH * (edid->extensions + 1), NULL);
diff --git a/drivers/media/dvb-core/dvb_ca_en50221.c b/drivers/media/dvb-core/dvb_ca_en50221.c
index af694f2066a2..17970cdd55fa 100644
--- a/drivers/media/dvb-core/dvb_ca_en50221.c
+++ b/drivers/media/dvb-core/dvb_ca_en50221.c
@@ -349,7 +349,8 @@ static int dvb_ca_en50221_link_init(struct dvb_ca_private *ca, int slot)
349 /* read the buffer size from the CAM */ 349 /* read the buffer size from the CAM */
350 if ((ret = ca->pub->write_cam_control(ca->pub, slot, CTRLIF_COMMAND, IRQEN | CMDREG_SR)) != 0) 350 if ((ret = ca->pub->write_cam_control(ca->pub, slot, CTRLIF_COMMAND, IRQEN | CMDREG_SR)) != 0)
351 return ret; 351 return ret;
352 if ((ret = dvb_ca_en50221_wait_if_status(ca, slot, STATUSREG_DA, HZ / 10)) != 0) 352 ret = dvb_ca_en50221_wait_if_status(ca, slot, STATUSREG_DA, HZ);
353 if (ret != 0)
353 return ret; 354 return ret;
354 if ((ret = dvb_ca_en50221_read_data(ca, slot, buf, 2)) != 2) 355 if ((ret = dvb_ca_en50221_read_data(ca, slot, buf, 2)) != 2)
355 return -EIO; 356 return -EIO;
@@ -644,72 +645,101 @@ static int dvb_ca_en50221_read_data(struct dvb_ca_private *ca, int slot,
644 } 645 }
645 buf_free = dvb_ringbuffer_free(&ca->slot_info[slot].rx_buffer); 646 buf_free = dvb_ringbuffer_free(&ca->slot_info[slot].rx_buffer);
646 647
647 if (buf_free < (ca->slot_info[slot].link_buf_size + DVB_RINGBUFFER_PKTHDRSIZE)) { 648 if (buf_free < (ca->slot_info[slot].link_buf_size +
649 DVB_RINGBUFFER_PKTHDRSIZE)) {
648 status = -EAGAIN; 650 status = -EAGAIN;
649 goto exit; 651 goto exit;
650 } 652 }
651 } 653 }
652 654
653 /* check if there is data available */ 655 if (ca->pub->read_data &&
654 if ((status = ca->pub->read_cam_control(ca->pub, slot, CTRLIF_STATUS)) < 0) 656 (ca->slot_info[slot].slot_state != DVB_CA_SLOTSTATE_LINKINIT)) {
655 goto exit; 657 if (ebuf == NULL)
656 if (!(status & STATUSREG_DA)) { 658 status = ca->pub->read_data(ca->pub, slot, buf,
657 /* no data */ 659 sizeof(buf));
658 status = 0; 660 else
659 goto exit; 661 status = ca->pub->read_data(ca->pub, slot, buf, ecount);
660 } 662 if (status < 0)
661 663 return status;
662 /* read the amount of data */ 664 bytes_read = status;
663 if ((status = ca->pub->read_cam_control(ca->pub, slot, CTRLIF_SIZE_HIGH)) < 0) 665 if (status == 0)
664 goto exit; 666 goto exit;
665 bytes_read = status << 8; 667 } else {
666 if ((status = ca->pub->read_cam_control(ca->pub, slot, CTRLIF_SIZE_LOW)) < 0)
667 goto exit;
668 bytes_read |= status;
669 668
670 /* check it will fit */ 669 /* check if there is data available */
671 if (ebuf == NULL) { 670 status = ca->pub->read_cam_control(ca->pub, slot,
672 if (bytes_read > ca->slot_info[slot].link_buf_size) { 671 CTRLIF_STATUS);
673 pr_err("dvb_ca adapter %d: CAM tried to send a buffer larger than the link buffer size (%i > %i)!\n", 672 if (status < 0)
674 ca->dvbdev->adapter->num, bytes_read,
675 ca->slot_info[slot].link_buf_size);
676 ca->slot_info[slot].slot_state = DVB_CA_SLOTSTATE_LINKINIT;
677 status = -EIO;
678 goto exit; 673 goto exit;
679 } 674 if (!(status & STATUSREG_DA)) {
680 if (bytes_read < 2) { 675 /* no data */
681 pr_err("dvb_ca adapter %d: CAM sent a buffer that was less than 2 bytes!\n", 676 status = 0;
682 ca->dvbdev->adapter->num);
683 ca->slot_info[slot].slot_state = DVB_CA_SLOTSTATE_LINKINIT;
684 status = -EIO;
685 goto exit; 677 goto exit;
686 } 678 }
687 } else { 679
688 if (bytes_read > ecount) { 680 /* read the amount of data */
689 pr_err("dvb_ca adapter %d: CAM tried to send a buffer larger than the ecount size!\n", 681 status = ca->pub->read_cam_control(ca->pub, slot,
690 ca->dvbdev->adapter->num); 682 CTRLIF_SIZE_HIGH);
691 status = -EIO; 683 if (status < 0)
684 goto exit;
685 bytes_read = status << 8;
686 status = ca->pub->read_cam_control(ca->pub, slot,
687 CTRLIF_SIZE_LOW);
688 if (status < 0)
692 goto exit; 689 goto exit;
690 bytes_read |= status;
691
692 /* check it will fit */
693 if (ebuf == NULL) {
694 if (bytes_read > ca->slot_info[slot].link_buf_size) {
695 pr_err("dvb_ca adapter %d: CAM tried to send a buffer larger than the link buffer size (%i > %i)!\n",
696 ca->dvbdev->adapter->num, bytes_read,
697 ca->slot_info[slot].link_buf_size);
698 ca->slot_info[slot].slot_state =
699 DVB_CA_SLOTSTATE_LINKINIT;
700 status = -EIO;
701 goto exit;
702 }
703 if (bytes_read < 2) {
704 pr_err("dvb_ca adapter %d: CAM sent a buffer that was less than 2 bytes!\n",
705 ca->dvbdev->adapter->num);
706 ca->slot_info[slot].slot_state =
707 DVB_CA_SLOTSTATE_LINKINIT;
708 status = -EIO;
709 goto exit;
710 }
711 } else {
712 if (bytes_read > ecount) {
713 pr_err("dvb_ca adapter %d: CAM tried to send a buffer larger than the ecount size!\n",
714 ca->dvbdev->adapter->num);
715 status = -EIO;
716 goto exit;
717 }
693 } 718 }
694 }
695 719
696 /* fill the buffer */ 720 /* fill the buffer */
697 for (i = 0; i < bytes_read; i++) { 721 for (i = 0; i < bytes_read; i++) {
698 /* read byte and check */ 722 /* read byte and check */
699 if ((status = ca->pub->read_cam_control(ca->pub, slot, CTRLIF_DATA)) < 0) 723 status = ca->pub->read_cam_control(ca->pub, slot,
700 goto exit; 724 CTRLIF_DATA);
725 if (status < 0)
726 goto exit;
701 727
702 /* OK, store it in the buffer */ 728 /* OK, store it in the buffer */
703 buf[i] = status; 729 buf[i] = status;
704 } 730 }
705 731
706 /* check for read error (RE should now be 0) */ 732 /* check for read error (RE should now be 0) */
707 if ((status = ca->pub->read_cam_control(ca->pub, slot, CTRLIF_STATUS)) < 0) 733 status = ca->pub->read_cam_control(ca->pub, slot,
708 goto exit; 734 CTRLIF_STATUS);
709 if (status & STATUSREG_RE) { 735 if (status < 0)
710 ca->slot_info[slot].slot_state = DVB_CA_SLOTSTATE_LINKINIT; 736 goto exit;
711 status = -EIO; 737 if (status & STATUSREG_RE) {
712 goto exit; 738 ca->slot_info[slot].slot_state =
739 DVB_CA_SLOTSTATE_LINKINIT;
740 status = -EIO;
741 goto exit;
742 }
713 } 743 }
714 744
715 /* OK, add it to the receive buffer, or copy into external buffer if supplied */ 745 /* OK, add it to the receive buffer, or copy into external buffer if supplied */
@@ -762,6 +792,10 @@ static int dvb_ca_en50221_write_data(struct dvb_ca_private *ca, int slot,
762 if (bytes_write > ca->slot_info[slot].link_buf_size) 792 if (bytes_write > ca->slot_info[slot].link_buf_size)
763 return -EINVAL; 793 return -EINVAL;
764 794
795 if (ca->pub->write_data &&
796 (ca->slot_info[slot].slot_state != DVB_CA_SLOTSTATE_LINKINIT))
797 return ca->pub->write_data(ca->pub, slot, buf, bytes_write);
798
765 /* it is possible we are dealing with a single buffer implementation, 799 /* it is possible we are dealing with a single buffer implementation,
766 thus if there is data available for read or if there is even a read 800 thus if there is data available for read or if there is even a read
767 already in progress, we do nothing but awake the kernel thread to 801 already in progress, we do nothing but awake the kernel thread to
@@ -1176,7 +1210,8 @@ static int dvb_ca_en50221_thread(void *data)
1176 1210
1177 pr_err("dvb_ca adapter %d: DVB CAM link initialisation failed :(\n", 1211 pr_err("dvb_ca adapter %d: DVB CAM link initialisation failed :(\n",
1178 ca->dvbdev->adapter->num); 1212 ca->dvbdev->adapter->num);
1179 ca->slot_info[slot].slot_state = DVB_CA_SLOTSTATE_INVALID; 1213 ca->slot_info[slot].slot_state =
1214 DVB_CA_SLOTSTATE_UNINITIALISED;
1180 dvb_ca_en50221_thread_update_delay(ca); 1215 dvb_ca_en50221_thread_update_delay(ca);
1181 break; 1216 break;
1182 } 1217 }
diff --git a/drivers/media/dvb-core/dvb_ca_en50221.h b/drivers/media/dvb-core/dvb_ca_en50221.h
index 1e4bbbd34d91..82617bac0875 100644
--- a/drivers/media/dvb-core/dvb_ca_en50221.h
+++ b/drivers/media/dvb-core/dvb_ca_en50221.h
@@ -41,6 +41,8 @@
41 * @write_attribute_mem: function for writing attribute memory on the CAM 41 * @write_attribute_mem: function for writing attribute memory on the CAM
42 * @read_cam_control: function for reading the control interface on the CAM 42 * @read_cam_control: function for reading the control interface on the CAM
43 * @write_cam_control: function for reading the control interface on the CAM 43 * @write_cam_control: function for reading the control interface on the CAM
44 * @read_data: function for reading data (block mode)
45 * @write_data: function for writing data (block mode)
44 * @slot_reset: function to reset the CAM slot 46 * @slot_reset: function to reset the CAM slot
45 * @slot_shutdown: function to shutdown a CAM slot 47 * @slot_shutdown: function to shutdown a CAM slot
46 * @slot_ts_enable: function to enable the Transport Stream on a CAM slot 48 * @slot_ts_enable: function to enable the Transport Stream on a CAM slot
@@ -66,6 +68,11 @@ struct dvb_ca_en50221 {
66 int (*write_cam_control)(struct dvb_ca_en50221 *ca, 68 int (*write_cam_control)(struct dvb_ca_en50221 *ca,
67 int slot, u8 address, u8 value); 69 int slot, u8 address, u8 value);
68 70
71 int (*read_data)(struct dvb_ca_en50221 *ca,
72 int slot, u8 *ebuf, int ecount);
73 int (*write_data)(struct dvb_ca_en50221 *ca,
74 int slot, u8 *ebuf, int ecount);
75
69 int (*slot_reset)(struct dvb_ca_en50221 *ca, int slot); 76 int (*slot_reset)(struct dvb_ca_en50221 *ca, int slot);
70 int (*slot_shutdown)(struct dvb_ca_en50221 *ca, int slot); 77 int (*slot_shutdown)(struct dvb_ca_en50221 *ca, int slot);
71 int (*slot_ts_enable)(struct dvb_ca_en50221 *ca, int slot); 78 int (*slot_ts_enable)(struct dvb_ca_en50221 *ca, int slot);
diff --git a/drivers/media/dvb-frontends/cxd2841er.c b/drivers/media/dvb-frontends/cxd2841er.c
index 08f67d60a7d9..12bff778c97f 100644
--- a/drivers/media/dvb-frontends/cxd2841er.c
+++ b/drivers/media/dvb-frontends/cxd2841er.c
@@ -3279,7 +3279,10 @@ static int cxd2841er_get_frontend(struct dvb_frontend *fe,
3279 else if (priv->state == STATE_ACTIVE_TC) 3279 else if (priv->state == STATE_ACTIVE_TC)
3280 cxd2841er_read_status_tc(fe, &status); 3280 cxd2841er_read_status_tc(fe, &status);
3281 3281
3282 cxd2841er_read_signal_strength(fe); 3282 if (priv->state == STATE_ACTIVE_TC || priv->state == STATE_ACTIVE_S)
3283 cxd2841er_read_signal_strength(fe);
3284 else
3285 p->strength.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
3283 3286
3284 if (status & FE_HAS_LOCK) { 3287 if (status & FE_HAS_LOCK) {
3285 cxd2841er_read_snr(fe); 3288 cxd2841er_read_snr(fe);
diff --git a/drivers/media/dvb-frontends/drx39xyj/drx_driver.h b/drivers/media/dvb-frontends/drx39xyj/drx_driver.h
index 4442e478db72..cd69e187ba7a 100644
--- a/drivers/media/dvb-frontends/drx39xyj/drx_driver.h
+++ b/drivers/media/dvb-frontends/drx39xyj/drx_driver.h
@@ -307,7 +307,7 @@ int drxbsp_tuner_default_i2c_write_read(struct tuner_instance *tuner,
307* \def DRX_UNKNOWN 307* \def DRX_UNKNOWN
308* \brief Generic UNKNOWN value for DRX enumerated types. 308* \brief Generic UNKNOWN value for DRX enumerated types.
309* 309*
310* Used to indicate that the parameter value is unknown or not yet initalized. 310* Used to indicate that the parameter value is unknown or not yet initialized.
311*/ 311*/
312#ifndef DRX_UNKNOWN 312#ifndef DRX_UNKNOWN
313#define DRX_UNKNOWN (254) 313#define DRX_UNKNOWN (254)
@@ -450,19 +450,6 @@ MACROS
450 ((u8)((((u16)x)>>8)&0xFF)) 450 ((u8)((((u16)x)>>8)&0xFF))
451 451
452/** 452/**
453* \brief Macro to sign extend signed 9 bit value to signed 16 bit value
454*/
455#define DRX_S9TOS16(x) ((((u16)x)&0x100) ? ((s16)((u16)(x)|0xFF00)) : (x))
456
457/**
458* \brief Macro to sign extend signed 9 bit value to signed 16 bit value
459*/
460#define DRX_S24TODRXFREQ(x) ((((u32) x) & 0x00800000UL) ? \
461 ((s32) \
462 (((u32) x) | 0xFF000000)) : \
463 ((s32) x))
464
465/**
466* \brief Macro to convert 16 bit register value to a s32 453* \brief Macro to convert 16 bit register value to a s32
467*/ 454*/
468#define DRX_U16TODRXFREQ(x) ((x & 0x8000) ? \ 455#define DRX_U16TODRXFREQ(x) ((x & 0x8000) ? \
diff --git a/drivers/media/dvb-frontends/lnbh25.c b/drivers/media/dvb-frontends/lnbh25.c
index ef3021e964be..cb486e879fdd 100644
--- a/drivers/media/dvb-frontends/lnbh25.c
+++ b/drivers/media/dvb-frontends/lnbh25.c
@@ -76,8 +76,8 @@ static int lnbh25_read_vmon(struct lnbh25_priv *priv)
76 return ret; 76 return ret;
77 } 77 }
78 } 78 }
79 print_hex_dump_bytes("lnbh25_read_vmon: ", 79 dev_dbg(&priv->i2c->dev, "%s(): %*ph\n",
80 DUMP_PREFIX_OFFSET, status, sizeof(status)); 80 __func__, (int) sizeof(status), status);
81 if ((status[0] & (LNBH25_STATUS_OFL | LNBH25_STATUS_VMON)) != 0) { 81 if ((status[0] & (LNBH25_STATUS_OFL | LNBH25_STATUS_VMON)) != 0) {
82 dev_err(&priv->i2c->dev, 82 dev_err(&priv->i2c->dev,
83 "%s(): voltage in failure state, status reg 0x%x\n", 83 "%s(): voltage in failure state, status reg 0x%x\n",
@@ -178,7 +178,7 @@ struct dvb_frontend *lnbh25_attach(struct dvb_frontend *fe,
178 fe->ops.release_sec = lnbh25_release; 178 fe->ops.release_sec = lnbh25_release;
179 fe->ops.set_voltage = lnbh25_set_voltage; 179 fe->ops.set_voltage = lnbh25_set_voltage;
180 180
181 dev_err(&i2c->dev, "%s(): attached at I2C addr 0x%02x\n", 181 dev_info(&i2c->dev, "%s(): attached at I2C addr 0x%02x\n",
182 __func__, priv->i2c_address); 182 __func__, priv->i2c_address);
183 return fe; 183 return fe;
184} 184}
diff --git a/drivers/media/dvb-frontends/stv0367.c b/drivers/media/dvb-frontends/stv0367.c
index e726c2e00460..8ac0f598978d 100644
--- a/drivers/media/dvb-frontends/stv0367.c
+++ b/drivers/media/dvb-frontends/stv0367.c
@@ -25,6 +25,8 @@
25#include <linux/slab.h> 25#include <linux/slab.h>
26#include <linux/i2c.h> 26#include <linux/i2c.h>
27 27
28#include "dvb_math.h"
29
28#include "stv0367.h" 30#include "stv0367.h"
29#include "stv0367_defs.h" 31#include "stv0367_defs.h"
30#include "stv0367_regs.h" 32#include "stv0367_regs.h"
@@ -1437,7 +1439,7 @@ static int stv0367ter_get_frontend(struct dvb_frontend *fe,
1437 return 0; 1439 return 0;
1438} 1440}
1439 1441
1440static int stv0367ter_read_snr(struct dvb_frontend *fe, u16 *snr) 1442static u32 stv0367ter_snr_readreg(struct dvb_frontend *fe)
1441{ 1443{
1442 struct stv0367_state *state = fe->demodulator_priv; 1444 struct stv0367_state *state = fe->demodulator_priv;
1443 u32 snru32 = 0; 1445 u32 snru32 = 0;
@@ -1453,10 +1455,16 @@ static int stv0367ter_read_snr(struct dvb_frontend *fe, u16 *snr)
1453 1455
1454 cpt++; 1456 cpt++;
1455 } 1457 }
1456
1457 snru32 /= 10;/*average on 10 values*/ 1458 snru32 /= 10;/*average on 10 values*/
1458 1459
1459 *snr = snru32 / 1000; 1460 return snru32;
1461}
1462
1463static int stv0367ter_read_snr(struct dvb_frontend *fe, u16 *snr)
1464{
1465 u32 snrval = stv0367ter_snr_readreg(fe);
1466
1467 *snr = snrval / 1000;
1460 1468
1461 return 0; 1469 return 0;
1462} 1470}
@@ -1501,7 +1509,8 @@ static int stv0367ter_read_status(struct dvb_frontend *fe,
1501 *status = 0; 1509 *status = 0;
1502 1510
1503 if (stv0367_readbits(state, F367TER_LK)) { 1511 if (stv0367_readbits(state, F367TER_LK)) {
1504 *status |= FE_HAS_LOCK; 1512 *status = FE_HAS_SIGNAL | FE_HAS_CARRIER | FE_HAS_VITERBI
1513 | FE_HAS_SYNC | FE_HAS_LOCK;
1505 dprintk("%s: stv0367 has locked\n", __func__); 1514 dprintk("%s: stv0367 has locked\n", __func__);
1506 } 1515 }
1507 1516
@@ -2149,6 +2158,18 @@ static int stv0367cab_read_status(struct dvb_frontend *fe,
2149 2158
2150 *status = 0; 2159 *status = 0;
2151 2160
2161 if (state->cab_state->state > FE_CAB_NOSIGNAL)
2162 *status |= FE_HAS_SIGNAL;
2163
2164 if (state->cab_state->state > FE_CAB_NOCARRIER)
2165 *status |= FE_HAS_CARRIER;
2166
2167 if (state->cab_state->state >= FE_CAB_DEMODOK)
2168 *status |= FE_HAS_VITERBI;
2169
2170 if (state->cab_state->state >= FE_CAB_DATAOK)
2171 *status |= FE_HAS_SYNC;
2172
2152 if (stv0367_readbits(state, (state->cab_state->qamfec_status_reg ? 2173 if (stv0367_readbits(state, (state->cab_state->qamfec_status_reg ?
2153 state->cab_state->qamfec_status_reg : F367CAB_QAMFEC_LOCK))) { 2174 state->cab_state->qamfec_status_reg : F367CAB_QAMFEC_LOCK))) {
2154 *status |= FE_HAS_LOCK; 2175 *status |= FE_HAS_LOCK;
@@ -2702,51 +2723,61 @@ static int stv0367cab_read_strength(struct dvb_frontend *fe, u16 *strength)
2702 return 0; 2723 return 0;
2703} 2724}
2704 2725
2705static int stv0367cab_read_snr(struct dvb_frontend *fe, u16 *snr) 2726static int stv0367cab_snr_power(struct dvb_frontend *fe)
2706{ 2727{
2707 struct stv0367_state *state = fe->demodulator_priv; 2728 struct stv0367_state *state = fe->demodulator_priv;
2708 u32 noisepercentage;
2709 enum stv0367cab_mod QAMSize; 2729 enum stv0367cab_mod QAMSize;
2710 u32 regval = 0, temp = 0;
2711 int power, i;
2712 2730
2713 QAMSize = stv0367_readbits(state, F367CAB_QAM_MODE); 2731 QAMSize = stv0367_readbits(state, F367CAB_QAM_MODE);
2714 switch (QAMSize) { 2732 switch (QAMSize) {
2715 case FE_CAB_MOD_QAM4: 2733 case FE_CAB_MOD_QAM4:
2716 power = 21904; 2734 return 21904;
2717 break;
2718 case FE_CAB_MOD_QAM16: 2735 case FE_CAB_MOD_QAM16:
2719 power = 20480; 2736 return 20480;
2720 break;
2721 case FE_CAB_MOD_QAM32: 2737 case FE_CAB_MOD_QAM32:
2722 power = 23040; 2738 return 23040;
2723 break;
2724 case FE_CAB_MOD_QAM64: 2739 case FE_CAB_MOD_QAM64:
2725 power = 21504; 2740 return 21504;
2726 break;
2727 case FE_CAB_MOD_QAM128: 2741 case FE_CAB_MOD_QAM128:
2728 power = 23616; 2742 return 23616;
2729 break;
2730 case FE_CAB_MOD_QAM256: 2743 case FE_CAB_MOD_QAM256:
2731 power = 21760; 2744 return 21760;
2732 break;
2733 case FE_CAB_MOD_QAM512:
2734 power = 1;
2735 break;
2736 case FE_CAB_MOD_QAM1024: 2745 case FE_CAB_MOD_QAM1024:
2737 power = 21280; 2746 return 21280;
2738 break;
2739 default: 2747 default:
2740 power = 1;
2741 break; 2748 break;
2742 } 2749 }
2743 2750
2751 return 1;
2752}
2753
2754static int stv0367cab_snr_readreg(struct dvb_frontend *fe, int avgdiv)
2755{
2756 struct stv0367_state *state = fe->demodulator_priv;
2757 u32 regval = 0;
2758 int i;
2759
2744 for (i = 0; i < 10; i++) { 2760 for (i = 0; i < 10; i++) {
2745 regval += (stv0367_readbits(state, F367CAB_SNR_LO) 2761 regval += (stv0367_readbits(state, F367CAB_SNR_LO)
2746 + 256 * stv0367_readbits(state, F367CAB_SNR_HI)); 2762 + 256 * stv0367_readbits(state, F367CAB_SNR_HI));
2747 } 2763 }
2748 2764
2749 regval /= 10; /*for average over 10 times in for loop above*/ 2765 if (avgdiv)
2766 regval /= 10;
2767
2768 return regval;
2769}
2770
2771static int stv0367cab_read_snr(struct dvb_frontend *fe, u16 *snr)
2772{
2773 struct stv0367_state *state = fe->demodulator_priv;
2774 u32 noisepercentage;
2775 u32 regval = 0, temp = 0;
2776 int power;
2777
2778 power = stv0367cab_snr_power(fe);
2779 regval = stv0367cab_snr_readreg(fe, 1);
2780
2750 if (regval != 0) { 2781 if (regval != 0) {
2751 temp = power 2782 temp = power
2752 * (1 << (3 + stv0367_readbits(state, F367CAB_SNR_PER))); 2783 * (1 << (3 + stv0367_readbits(state, F367CAB_SNR_PER)));
@@ -2980,21 +3011,117 @@ static int stv0367ddb_set_frontend(struct dvb_frontend *fe)
2980 return -EINVAL; 3011 return -EINVAL;
2981} 3012}
2982 3013
3014static void stv0367ddb_read_signal_strength(struct dvb_frontend *fe)
3015{
3016 struct stv0367_state *state = fe->demodulator_priv;
3017 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
3018 s32 signalstrength;
3019
3020 switch (state->activedemod) {
3021 case demod_cab:
3022 signalstrength = stv0367cab_get_rf_lvl(state) * 1000;
3023 break;
3024 default:
3025 p->strength.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
3026 return;
3027 }
3028
3029 p->strength.stat[0].scale = FE_SCALE_DECIBEL;
3030 p->strength.stat[0].uvalue = signalstrength;
3031}
3032
3033static void stv0367ddb_read_snr(struct dvb_frontend *fe)
3034{
3035 struct stv0367_state *state = fe->demodulator_priv;
3036 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
3037 int cab_pwr;
3038 u32 regval, tmpval, snrval = 0;
3039
3040 switch (state->activedemod) {
3041 case demod_ter:
3042 snrval = stv0367ter_snr_readreg(fe);
3043 break;
3044 case demod_cab:
3045 cab_pwr = stv0367cab_snr_power(fe);
3046 regval = stv0367cab_snr_readreg(fe, 0);
3047
3048 /* prevent division by zero */
3049 if (!regval) {
3050 snrval = 0;
3051 break;
3052 }
3053
3054 tmpval = (cab_pwr * 320) / regval;
3055 snrval = ((tmpval != 0) ? (intlog2(tmpval) / 5581) : 0);
3056 break;
3057 default:
3058 p->cnr.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
3059 return;
3060 }
3061
3062 p->cnr.stat[0].scale = FE_SCALE_DECIBEL;
3063 p->cnr.stat[0].uvalue = snrval;
3064}
3065
3066static void stv0367ddb_read_ucblocks(struct dvb_frontend *fe)
3067{
3068 struct stv0367_state *state = fe->demodulator_priv;
3069 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
3070 u32 ucblocks = 0;
3071
3072 switch (state->activedemod) {
3073 case demod_ter:
3074 stv0367ter_read_ucblocks(fe, &ucblocks);
3075 break;
3076 case demod_cab:
3077 stv0367cab_read_ucblcks(fe, &ucblocks);
3078 break;
3079 default:
3080 p->block_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
3081 return;
3082 }
3083
3084 p->block_error.stat[0].scale = FE_SCALE_COUNTER;
3085 p->block_error.stat[0].uvalue = ucblocks;
3086}
3087
2983static int stv0367ddb_read_status(struct dvb_frontend *fe, 3088static int stv0367ddb_read_status(struct dvb_frontend *fe,
2984 enum fe_status *status) 3089 enum fe_status *status)
2985{ 3090{
2986 struct stv0367_state *state = fe->demodulator_priv; 3091 struct stv0367_state *state = fe->demodulator_priv;
3092 struct dtv_frontend_properties *p = &fe->dtv_property_cache;
3093 int ret;
2987 3094
2988 switch (state->activedemod) { 3095 switch (state->activedemod) {
2989 case demod_ter: 3096 case demod_ter:
2990 return stv0367ter_read_status(fe, status); 3097 ret = stv0367ter_read_status(fe, status);
3098 break;
2991 case demod_cab: 3099 case demod_cab:
2992 return stv0367cab_read_status(fe, status); 3100 ret = stv0367cab_read_status(fe, status);
2993 default:
2994 break; 3101 break;
3102 default:
3103 return 0;
2995 } 3104 }
2996 3105
2997 return -EINVAL; 3106 /* stop and report on *_read_status failure */
3107 if (ret)
3108 return ret;
3109
3110 stv0367ddb_read_signal_strength(fe);
3111
3112 /* read carrier/noise when a carrier is detected */
3113 if (*status & FE_HAS_CARRIER)
3114 stv0367ddb_read_snr(fe);
3115 else
3116 p->cnr.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
3117
3118 /* read uncorrected blocks on FE_HAS_LOCK */
3119 if (*status & FE_HAS_LOCK)
3120 stv0367ddb_read_ucblocks(fe);
3121 else
3122 p->block_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
3123
3124 return 0;
2998} 3125}
2999 3126
3000static int stv0367ddb_get_frontend(struct dvb_frontend *fe, 3127static int stv0367ddb_get_frontend(struct dvb_frontend *fe,
@@ -3035,6 +3162,7 @@ static int stv0367ddb_sleep(struct dvb_frontend *fe)
3035static int stv0367ddb_init(struct stv0367_state *state) 3162static int stv0367ddb_init(struct stv0367_state *state)
3036{ 3163{
3037 struct stv0367ter_state *ter_state = state->ter_state; 3164 struct stv0367ter_state *ter_state = state->ter_state;
3165 struct dtv_frontend_properties *p = &state->fe.dtv_property_cache;
3038 3166
3039 stv0367_writereg(state, R367TER_TOPCTRL, 0x10); 3167 stv0367_writereg(state, R367TER_TOPCTRL, 0x10);
3040 3168
@@ -3109,6 +3237,13 @@ static int stv0367ddb_init(struct stv0367_state *state)
3109 ter_state->first_lock = 0; 3237 ter_state->first_lock = 0;
3110 ter_state->unlock_counter = 2; 3238 ter_state->unlock_counter = 2;
3111 3239
3240 p->strength.len = 1;
3241 p->strength.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
3242 p->cnr.len = 1;
3243 p->cnr.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
3244 p->block_error.len = 1;
3245 p->block_error.stat[0].scale = FE_SCALE_NOT_AVAILABLE;
3246
3112 return 0; 3247 return 0;
3113} 3248}
3114 3249
@@ -3126,15 +3261,12 @@ static const struct dvb_frontend_ops stv0367ddb_ops = {
3126 0x400 |/* FE_CAN_QAM_4 */ 3261 0x400 |/* FE_CAN_QAM_4 */
3127 FE_CAN_QAM_16 | FE_CAN_QAM_32 | 3262 FE_CAN_QAM_16 | FE_CAN_QAM_32 |
3128 FE_CAN_QAM_64 | FE_CAN_QAM_128 | 3263 FE_CAN_QAM_64 | FE_CAN_QAM_128 |
3129 FE_CAN_QAM_256 | FE_CAN_FEC_AUTO | 3264 FE_CAN_QAM_256 | FE_CAN_QAM_AUTO |
3130 /* DVB-T */ 3265 /* DVB-T */
3131 FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | 3266 FE_CAN_FEC_1_2 | FE_CAN_FEC_2_3 | FE_CAN_FEC_3_4 |
3132 FE_CAN_FEC_3_4 | FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | 3267 FE_CAN_FEC_5_6 | FE_CAN_FEC_7_8 | FE_CAN_FEC_AUTO |
3133 FE_CAN_FEC_AUTO | 3268 FE_CAN_QPSK | FE_CAN_TRANSMISSION_MODE_AUTO |
3134 FE_CAN_QPSK | FE_CAN_QAM_16 | FE_CAN_QAM_64 | 3269 FE_CAN_RECOVER | FE_CAN_INVERSION_AUTO |
3135 FE_CAN_QAM_128 | FE_CAN_QAM_256 | FE_CAN_QAM_AUTO |
3136 FE_CAN_TRANSMISSION_MODE_AUTO | FE_CAN_RECOVER |
3137 FE_CAN_INVERSION_AUTO |
3138 FE_CAN_MUTE_TS 3270 FE_CAN_MUTE_TS
3139 }, 3271 },
3140 .release = stv0367_release, 3272 .release = stv0367_release,
diff --git a/drivers/media/i2c/et8ek8/et8ek8_driver.c b/drivers/media/i2c/et8ek8/et8ek8_driver.c
index 6e313d5243a0..f39f5179dd95 100644
--- a/drivers/media/i2c/et8ek8/et8ek8_driver.c
+++ b/drivers/media/i2c/et8ek8/et8ek8_driver.c
@@ -1496,7 +1496,6 @@ MODULE_DEVICE_TABLE(i2c, et8ek8_id_table);
1496static const struct dev_pm_ops et8ek8_pm_ops = { 1496static const struct dev_pm_ops et8ek8_pm_ops = {
1497 SET_SYSTEM_SLEEP_PM_OPS(et8ek8_suspend, et8ek8_resume) 1497 SET_SYSTEM_SLEEP_PM_OPS(et8ek8_suspend, et8ek8_resume)
1498}; 1498};
1499MODULE_DEVICE_TABLE(of, et8ek8_of_table);
1500 1499
1501static struct i2c_driver et8ek8_i2c_driver = { 1500static struct i2c_driver et8ek8_i2c_driver = {
1502 .driver = { 1501 .driver = {
diff --git a/drivers/media/i2c/tvp5150.c b/drivers/media/i2c/tvp5150.c
index 9da4bf4f2c7a..7b79a7498751 100644
--- a/drivers/media/i2c/tvp5150.c
+++ b/drivers/media/i2c/tvp5150.c
@@ -659,7 +659,7 @@ static int tvp5150_set_vbi(struct v4l2_subdev *sd,
659 struct tvp5150 *decoder = to_tvp5150(sd); 659 struct tvp5150 *decoder = to_tvp5150(sd);
660 v4l2_std_id std = decoder->norm; 660 v4l2_std_id std = decoder->norm;
661 u8 reg; 661 u8 reg;
662 int pos=0; 662 int pos = 0;
663 663
664 if (std == V4L2_STD_ALL) { 664 if (std == V4L2_STD_ALL) {
665 dev_err(sd->dev, "VBI can't be configured without knowing number of lines\n"); 665 dev_err(sd->dev, "VBI can't be configured without knowing number of lines\n");
@@ -669,33 +669,30 @@ static int tvp5150_set_vbi(struct v4l2_subdev *sd,
669 line += 3; 669 line += 3;
670 } 670 }
671 671
672 if (line<6||line>27) 672 if (line < 6 || line > 27)
673 return 0; 673 return 0;
674 674
675 while (regs->reg != (u16)-1 ) { 675 while (regs->reg != (u16)-1) {
676 if ((type & regs->type.vbi_type) && 676 if ((type & regs->type.vbi_type) &&
677 (line>=regs->type.ini_line) && 677 (line >= regs->type.ini_line) &&
678 (line<=regs->type.end_line)) { 678 (line <= regs->type.end_line))
679 type=regs->type.vbi_type;
680 break; 679 break;
681 }
682 680
683 regs++; 681 regs++;
684 pos++; 682 pos++;
685 } 683 }
684
686 if (regs->reg == (u16)-1) 685 if (regs->reg == (u16)-1)
687 return 0; 686 return 0;
688 687
689 type=pos | (flags & 0xf0); 688 type = pos | (flags & 0xf0);
690 reg=((line-6)<<1)+TVP5150_LINE_MODE_INI; 689 reg = ((line - 6) << 1) + TVP5150_LINE_MODE_INI;
691 690
692 if (fields&1) { 691 if (fields & 1)
693 tvp5150_write(sd, reg, type); 692 tvp5150_write(sd, reg, type);
694 }
695 693
696 if (fields&2) { 694 if (fields & 2)
697 tvp5150_write(sd, reg+1, type); 695 tvp5150_write(sd, reg + 1, type);
698 }
699 696
700 return type; 697 return type;
701} 698}
diff --git a/drivers/media/pci/ddbridge/ddbridge-core.c b/drivers/media/pci/ddbridge/ddbridge-core.c
index 9420479bee9a..cd1723e79a07 100644
--- a/drivers/media/pci/ddbridge/ddbridge-core.c
+++ b/drivers/media/pci/ddbridge/ddbridge-core.c
@@ -17,6 +17,8 @@
17 * http://www.gnu.org/copyleft/gpl.html 17 * http://www.gnu.org/copyleft/gpl.html
18 */ 18 */
19 19
20#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
21
20#include <linux/module.h> 22#include <linux/module.h>
21#include <linux/init.h> 23#include <linux/init.h>
22#include <linux/interrupt.h> 24#include <linux/interrupt.h>
@@ -114,6 +116,19 @@ static int i2c_write_reg(struct i2c_adapter *adap, u8 adr,
114 return i2c_write(adap, adr, msg, 2); 116 return i2c_write(adap, adr, msg, 2);
115} 117}
116 118
119static inline u32 safe_ddbreadl(struct ddb *dev, u32 adr)
120{
121 u32 val = ddbreadl(adr);
122
123 /* (ddb)readl returns (uint)-1 (all bits set) on failure, catch that */
124 if (val == ~0) {
125 dev_err(&dev->pdev->dev, "ddbreadl failure, adr=%08x\n", adr);
126 return 0;
127 }
128
129 return val;
130}
131
117static int ddb_i2c_cmd(struct ddb_i2c *i2c, u32 adr, u32 cmd) 132static int ddb_i2c_cmd(struct ddb_i2c *i2c, u32 adr, u32 cmd)
118{ 133{
119 struct ddb *dev = i2c->dev; 134 struct ddb *dev = i2c->dev;
@@ -124,10 +139,10 @@ static int ddb_i2c_cmd(struct ddb_i2c *i2c, u32 adr, u32 cmd)
124 ddbwritel((adr << 9) | cmd, i2c->regs + I2C_COMMAND); 139 ddbwritel((adr << 9) | cmd, i2c->regs + I2C_COMMAND);
125 stat = wait_event_timeout(i2c->wq, i2c->done == 1, HZ); 140 stat = wait_event_timeout(i2c->wq, i2c->done == 1, HZ);
126 if (stat == 0) { 141 if (stat == 0) {
127 printk(KERN_ERR "I2C timeout\n"); 142 dev_err(&dev->pdev->dev, "I2C timeout\n");
128 { /* MSI debugging*/ 143 { /* MSI debugging*/
129 u32 istat = ddbreadl(INTERRUPT_STATUS); 144 u32 istat = ddbreadl(INTERRUPT_STATUS);
130 printk(KERN_ERR "IRS %08x\n", istat); 145 dev_err(&dev->pdev->dev, "IRS %08x\n", istat);
131 ddbwritel(istat, INTERRUPT_ACK); 146 ddbwritel(istat, INTERRUPT_ACK);
132 } 147 }
133 return -EIO; 148 return -EIO;
@@ -533,7 +548,7 @@ static u32 ddb_input_avail(struct ddb_input *input)
533 off = (stat & 0x7ff) << 7; 548 off = (stat & 0x7ff) << 7;
534 549
535 if (ctrl & 4) { 550 if (ctrl & 4) {
536 printk(KERN_ERR "IA %d %d %08x\n", idx, off, ctrl); 551 dev_err(&dev->pdev->dev, "IA %d %d %08x\n", idx, off, ctrl);
537 ddbwritel(input->stat, DMA_BUFFER_ACK(input->nr)); 552 ddbwritel(input->stat, DMA_BUFFER_ACK(input->nr));
538 return 0; 553 return 0;
539 } 554 }
@@ -611,6 +626,7 @@ static int demod_attach_drxk(struct ddb_input *input)
611 struct i2c_adapter *i2c = &input->port->i2c->adap; 626 struct i2c_adapter *i2c = &input->port->i2c->adap;
612 struct dvb_frontend *fe; 627 struct dvb_frontend *fe;
613 struct drxk_config config; 628 struct drxk_config config;
629 struct device *dev = &input->port->dev->pdev->dev;
614 630
615 memset(&config, 0, sizeof(config)); 631 memset(&config, 0, sizeof(config));
616 config.microcode_name = "drxk_a3.mc"; 632 config.microcode_name = "drxk_a3.mc";
@@ -619,7 +635,7 @@ static int demod_attach_drxk(struct ddb_input *input)
619 635
620 fe = input->fe = dvb_attach(drxk_attach, &config, i2c); 636 fe = input->fe = dvb_attach(drxk_attach, &config, i2c);
621 if (!input->fe) { 637 if (!input->fe) {
622 printk(KERN_ERR "No DRXK found!\n"); 638 dev_err(dev, "No DRXK found!\n");
623 return -ENODEV; 639 return -ENODEV;
624 } 640 }
625 fe->sec_priv = input; 641 fe->sec_priv = input;
@@ -632,12 +648,13 @@ static int tuner_attach_tda18271(struct ddb_input *input)
632{ 648{
633 struct i2c_adapter *i2c = &input->port->i2c->adap; 649 struct i2c_adapter *i2c = &input->port->i2c->adap;
634 struct dvb_frontend *fe; 650 struct dvb_frontend *fe;
651 struct device *dev = &input->port->dev->pdev->dev;
635 652
636 if (input->fe->ops.i2c_gate_ctrl) 653 if (input->fe->ops.i2c_gate_ctrl)
637 input->fe->ops.i2c_gate_ctrl(input->fe, 1); 654 input->fe->ops.i2c_gate_ctrl(input->fe, 1);
638 fe = dvb_attach(tda18271c2dd_attach, input->fe, i2c, 0x60); 655 fe = dvb_attach(tda18271c2dd_attach, input->fe, i2c, 0x60);
639 if (!fe) { 656 if (!fe) {
640 printk(KERN_ERR "No TDA18271 found!\n"); 657 dev_err(dev, "No TDA18271 found!\n");
641 return -ENODEV; 658 return -ENODEV;
642 } 659 }
643 if (input->fe->ops.i2c_gate_ctrl) 660 if (input->fe->ops.i2c_gate_ctrl)
@@ -670,13 +687,14 @@ static struct stv0367_config ddb_stv0367_config[] = {
670static int demod_attach_stv0367(struct ddb_input *input) 687static int demod_attach_stv0367(struct ddb_input *input)
671{ 688{
672 struct i2c_adapter *i2c = &input->port->i2c->adap; 689 struct i2c_adapter *i2c = &input->port->i2c->adap;
690 struct device *dev = &input->port->dev->pdev->dev;
673 691
674 /* attach frontend */ 692 /* attach frontend */
675 input->fe = dvb_attach(stv0367ddb_attach, 693 input->fe = dvb_attach(stv0367ddb_attach,
676 &ddb_stv0367_config[(input->nr & 1)], i2c); 694 &ddb_stv0367_config[(input->nr & 1)], i2c);
677 695
678 if (!input->fe) { 696 if (!input->fe) {
679 printk(KERN_ERR "stv0367ddb_attach failed (not found?)\n"); 697 dev_err(dev, "stv0367ddb_attach failed (not found?)\n");
680 return -ENODEV; 698 return -ENODEV;
681 } 699 }
682 700
@@ -690,17 +708,19 @@ static int demod_attach_stv0367(struct ddb_input *input)
690static int tuner_tda18212_ping(struct ddb_input *input, unsigned short adr) 708static int tuner_tda18212_ping(struct ddb_input *input, unsigned short adr)
691{ 709{
692 struct i2c_adapter *adapter = &input->port->i2c->adap; 710 struct i2c_adapter *adapter = &input->port->i2c->adap;
711 struct device *dev = &input->port->dev->pdev->dev;
712
693 u8 tda_id[2]; 713 u8 tda_id[2];
694 u8 subaddr = 0x00; 714 u8 subaddr = 0x00;
695 715
696 printk(KERN_DEBUG "stv0367-tda18212 tuner ping\n"); 716 dev_dbg(dev, "stv0367-tda18212 tuner ping\n");
697 if (input->fe->ops.i2c_gate_ctrl) 717 if (input->fe->ops.i2c_gate_ctrl)
698 input->fe->ops.i2c_gate_ctrl(input->fe, 1); 718 input->fe->ops.i2c_gate_ctrl(input->fe, 1);
699 719
700 if (i2c_read_regs(adapter, adr, subaddr, tda_id, sizeof(tda_id)) < 0) 720 if (i2c_read_regs(adapter, adr, subaddr, tda_id, sizeof(tda_id)) < 0)
701 printk(KERN_DEBUG "tda18212 ping 1 fail\n"); 721 dev_dbg(dev, "tda18212 ping 1 fail\n");
702 if (i2c_read_regs(adapter, adr, subaddr, tda_id, sizeof(tda_id)) < 0) 722 if (i2c_read_regs(adapter, adr, subaddr, tda_id, sizeof(tda_id)) < 0)
703 printk(KERN_DEBUG "tda18212 ping 2 fail\n"); 723 dev_warn(dev, "tda18212 ping failed, expect problems\n");
704 724
705 if (input->fe->ops.i2c_gate_ctrl) 725 if (input->fe->ops.i2c_gate_ctrl)
706 input->fe->ops.i2c_gate_ctrl(input->fe, 0); 726 input->fe->ops.i2c_gate_ctrl(input->fe, 0);
@@ -711,6 +731,7 @@ static int tuner_tda18212_ping(struct ddb_input *input, unsigned short adr)
711static int demod_attach_cxd28xx(struct ddb_input *input, int par, int osc24) 731static int demod_attach_cxd28xx(struct ddb_input *input, int par, int osc24)
712{ 732{
713 struct i2c_adapter *i2c = &input->port->i2c->adap; 733 struct i2c_adapter *i2c = &input->port->i2c->adap;
734 struct device *dev = &input->port->dev->pdev->dev;
714 struct cxd2841er_config cfg; 735 struct cxd2841er_config cfg;
715 736
716 /* the cxd2841er driver expects 8bit/shifted I2C addresses */ 737 /* the cxd2841er driver expects 8bit/shifted I2C addresses */
@@ -728,7 +749,7 @@ static int demod_attach_cxd28xx(struct ddb_input *input, int par, int osc24)
728 input->fe = dvb_attach(cxd2841er_attach_t_c, &cfg, i2c); 749 input->fe = dvb_attach(cxd2841er_attach_t_c, &cfg, i2c);
729 750
730 if (!input->fe) { 751 if (!input->fe) {
731 printk(KERN_ERR "No Sony CXD28xx found!\n"); 752 dev_err(dev, "No Sony CXD28xx found!\n");
732 return -ENODEV; 753 return -ENODEV;
733 } 754 }
734 755
@@ -742,6 +763,7 @@ static int demod_attach_cxd28xx(struct ddb_input *input, int par, int osc24)
742static int tuner_attach_tda18212(struct ddb_input *input, u32 porttype) 763static int tuner_attach_tda18212(struct ddb_input *input, u32 porttype)
743{ 764{
744 struct i2c_adapter *adapter = &input->port->i2c->adap; 765 struct i2c_adapter *adapter = &input->port->i2c->adap;
766 struct device *dev = &input->port->dev->pdev->dev;
745 struct i2c_client *client; 767 struct i2c_client *client;
746 struct tda18212_config config = { 768 struct tda18212_config config = {
747 .fe = input->fe, 769 .fe = input->fe,
@@ -786,7 +808,7 @@ static int tuner_attach_tda18212(struct ddb_input *input, u32 porttype)
786 808
787 return 0; 809 return 0;
788err: 810err:
789 printk(KERN_INFO "TDA18212 tuner not found. Device is not fully operational.\n"); 811 dev_warn(dev, "TDA18212 tuner not found. Device is not fully operational.\n");
790 return -ENODEV; 812 return -ENODEV;
791} 813}
792 814
@@ -847,19 +869,20 @@ static struct stv6110x_config stv6110b = {
847static int demod_attach_stv0900(struct ddb_input *input, int type) 869static int demod_attach_stv0900(struct ddb_input *input, int type)
848{ 870{
849 struct i2c_adapter *i2c = &input->port->i2c->adap; 871 struct i2c_adapter *i2c = &input->port->i2c->adap;
872 struct device *dev = &input->port->dev->pdev->dev;
850 struct stv090x_config *feconf = type ? &stv0900_aa : &stv0900; 873 struct stv090x_config *feconf = type ? &stv0900_aa : &stv0900;
851 874
852 input->fe = dvb_attach(stv090x_attach, feconf, i2c, 875 input->fe = dvb_attach(stv090x_attach, feconf, i2c,
853 (input->nr & 1) ? STV090x_DEMODULATOR_1 876 (input->nr & 1) ? STV090x_DEMODULATOR_1
854 : STV090x_DEMODULATOR_0); 877 : STV090x_DEMODULATOR_0);
855 if (!input->fe) { 878 if (!input->fe) {
856 printk(KERN_ERR "No STV0900 found!\n"); 879 dev_err(dev, "No STV0900 found!\n");
857 return -ENODEV; 880 return -ENODEV;
858 } 881 }
859 if (!dvb_attach(lnbh24_attach, input->fe, i2c, 0, 882 if (!dvb_attach(lnbh24_attach, input->fe, i2c, 0,
860 0, (input->nr & 1) ? 883 0, (input->nr & 1) ?
861 (0x09 - type) : (0x0b - type))) { 884 (0x09 - type) : (0x0b - type))) {
862 printk(KERN_ERR "No LNBH24 found!\n"); 885 dev_err(dev, "No LNBH24 found!\n");
863 return -ENODEV; 886 return -ENODEV;
864 } 887 }
865 return 0; 888 return 0;
@@ -868,6 +891,7 @@ static int demod_attach_stv0900(struct ddb_input *input, int type)
868static int tuner_attach_stv6110(struct ddb_input *input, int type) 891static int tuner_attach_stv6110(struct ddb_input *input, int type)
869{ 892{
870 struct i2c_adapter *i2c = &input->port->i2c->adap; 893 struct i2c_adapter *i2c = &input->port->i2c->adap;
894 struct device *dev = &input->port->dev->pdev->dev;
871 struct stv090x_config *feconf = type ? &stv0900_aa : &stv0900; 895 struct stv090x_config *feconf = type ? &stv0900_aa : &stv0900;
872 struct stv6110x_config *tunerconf = (input->nr & 1) ? 896 struct stv6110x_config *tunerconf = (input->nr & 1) ?
873 &stv6110b : &stv6110a; 897 &stv6110b : &stv6110a;
@@ -875,10 +899,10 @@ static int tuner_attach_stv6110(struct ddb_input *input, int type)
875 899
876 ctl = dvb_attach(stv6110x_attach, input->fe, tunerconf, i2c); 900 ctl = dvb_attach(stv6110x_attach, input->fe, tunerconf, i2c);
877 if (!ctl) { 901 if (!ctl) {
878 printk(KERN_ERR "No STV6110X found!\n"); 902 dev_err(dev, "No STV6110X found!\n");
879 return -ENODEV; 903 return -ENODEV;
880 } 904 }
881 printk(KERN_INFO "attach tuner input %d adr %02x\n", 905 dev_info(dev, "attach tuner input %d adr %02x\n",
882 input->nr, tunerconf->addr); 906 input->nr, tunerconf->addr);
883 907
884 feconf->tuner_init = ctl->tuner_init; 908 feconf->tuner_init = ctl->tuner_init;
@@ -1009,13 +1033,14 @@ static int dvb_input_attach(struct ddb_input *input)
1009 struct ddb_port *port = input->port; 1033 struct ddb_port *port = input->port;
1010 struct dvb_adapter *adap = &input->adap; 1034 struct dvb_adapter *adap = &input->adap;
1011 struct dvb_demux *dvbdemux = &input->demux; 1035 struct dvb_demux *dvbdemux = &input->demux;
1036 struct device *dev = &input->port->dev->pdev->dev;
1012 int sony_osc24 = 0, sony_tspar = 0; 1037 int sony_osc24 = 0, sony_tspar = 0;
1013 1038
1014 ret = dvb_register_adapter(adap, "DDBridge", THIS_MODULE, 1039 ret = dvb_register_adapter(adap, "DDBridge", THIS_MODULE,
1015 &input->port->dev->pdev->dev, 1040 &input->port->dev->pdev->dev,
1016 adapter_nr); 1041 adapter_nr);
1017 if (ret < 0) { 1042 if (ret < 0) {
1018 printk(KERN_ERR "ddbridge: Could not register adapter.Check if you enabled enough adapters in dvb-core!\n"); 1043 dev_err(dev, "Could not register adapter. Check if you enabled enough adapters in dvb-core!\n");
1019 return ret; 1044 return ret;
1020 } 1045 }
1021 input->attached = 1; 1046 input->attached = 1;
@@ -1241,9 +1266,9 @@ static void input_tasklet(unsigned long data)
1241 1266
1242 if (input->port->class == DDB_PORT_TUNER) { 1267 if (input->port->class == DDB_PORT_TUNER) {
1243 if (4&ddbreadl(DMA_BUFFER_CONTROL(input->nr))) 1268 if (4&ddbreadl(DMA_BUFFER_CONTROL(input->nr)))
1244 printk(KERN_ERR "Overflow input %d\n", input->nr); 1269 dev_err(&dev->pdev->dev, "Overflow input %d\n", input->nr);
1245 while (input->cbuf != ((input->stat >> 11) & 0x1f) 1270 while (input->cbuf != ((input->stat >> 11) & 0x1f)
1246 || (4&ddbreadl(DMA_BUFFER_CONTROL(input->nr)))) { 1271 || (4 & safe_ddbreadl(dev, DMA_BUFFER_CONTROL(input->nr)))) {
1247 dvb_dmx_swfilter_packets(&input->demux, 1272 dvb_dmx_swfilter_packets(&input->demux,
1248 input->vbuf[input->cbuf], 1273 input->vbuf[input->cbuf],
1249 input->dma_buf_size / 188); 1274 input->dma_buf_size / 188);
@@ -1280,6 +1305,7 @@ static struct cxd2099_cfg cxd_cfg = {
1280 .adr = 0x40, 1305 .adr = 0x40,
1281 .polarity = 1, 1306 .polarity = 1,
1282 .clock_mode = 1, 1307 .clock_mode = 1,
1308 .max_i2c = 512,
1283}; 1309};
1284 1310
1285static int ddb_ci_attach(struct ddb_port *port) 1311static int ddb_ci_attach(struct ddb_port *port)
@@ -1310,6 +1336,7 @@ static int ddb_ci_attach(struct ddb_port *port)
1310 1336
1311static int ddb_port_attach(struct ddb_port *port) 1337static int ddb_port_attach(struct ddb_port *port)
1312{ 1338{
1339 struct device *dev = &port->dev->pdev->dev;
1313 int ret = 0; 1340 int ret = 0;
1314 1341
1315 switch (port->class) { 1342 switch (port->class) {
@@ -1326,7 +1353,7 @@ static int ddb_port_attach(struct ddb_port *port)
1326 break; 1353 break;
1327 } 1354 }
1328 if (ret < 0) 1355 if (ret < 0)
1329 printk(KERN_ERR "port_attach on port %d failed\n", port->nr); 1356 dev_err(dev, "port_attach on port %d failed\n", port->nr);
1330 return ret; 1357 return ret;
1331} 1358}
1332 1359
@@ -1377,6 +1404,7 @@ static void ddb_ports_detach(struct ddb *dev)
1377static int init_xo2(struct ddb_port *port) 1404static int init_xo2(struct ddb_port *port)
1378{ 1405{
1379 struct i2c_adapter *i2c = &port->i2c->adap; 1406 struct i2c_adapter *i2c = &port->i2c->adap;
1407 struct device *dev = &port->dev->pdev->dev;
1380 u8 val, data[2]; 1408 u8 val, data[2];
1381 int res; 1409 int res;
1382 1410
@@ -1385,7 +1413,7 @@ static int init_xo2(struct ddb_port *port)
1385 return res; 1413 return res;
1386 1414
1387 if (data[0] != 0x01) { 1415 if (data[0] != 0x01) {
1388 pr_info("Port %d: invalid XO2\n", port->nr); 1416 dev_info(dev, "Port %d: invalid XO2\n", port->nr);
1389 return -1; 1417 return -1;
1390 } 1418 }
1391 1419
@@ -1511,7 +1539,7 @@ static void ddb_port_probe(struct ddb_port *port)
1511 port->class = DDB_PORT_CI; 1539 port->class = DDB_PORT_CI;
1512 ddbwritel(I2C_SPEED_400, port->i2c->regs + I2C_TIMING); 1540 ddbwritel(I2C_SPEED_400, port->i2c->regs + I2C_TIMING);
1513 } else if (port_has_xo2(port, &xo2_type, &xo2_id)) { 1541 } else if (port_has_xo2(port, &xo2_type, &xo2_id)) {
1514 printk(KERN_INFO "Port %d (TAB %d): XO2 type: %d, id: %d\n", 1542 dev_dbg(&dev->pdev->dev, "Port %d (TAB %d): XO2 type: %d, id: %d\n",
1515 port->nr, port->nr+1, xo2_type, xo2_id); 1543 port->nr, port->nr+1, xo2_type, xo2_id);
1516 1544
1517 ddbwritel(I2C_SPEED_400, port->i2c->regs + I2C_TIMING); 1545 ddbwritel(I2C_SPEED_400, port->i2c->regs + I2C_TIMING);
@@ -1556,10 +1584,10 @@ static void ddb_port_probe(struct ddb_port *port)
1556 } 1584 }
1557 break; 1585 break;
1558 case DDB_XO2_TYPE_CI: 1586 case DDB_XO2_TYPE_CI:
1559 printk(KERN_INFO "DuoFlex CI modules not supported\n"); 1587 dev_info(&dev->pdev->dev, "DuoFlex CI modules not supported\n");
1560 break; 1588 break;
1561 default: 1589 default:
1562 printk(KERN_INFO "Unknown XO2 DuoFlex module\n"); 1590 dev_info(&dev->pdev->dev, "Unknown XO2 DuoFlex module\n");
1563 break; 1591 break;
1564 } 1592 }
1565 } else if (port_has_cxd28xx(port, &cxd_id)) { 1593 } else if (port_has_cxd28xx(port, &cxd_id)) {
@@ -1611,7 +1639,7 @@ static void ddb_port_probe(struct ddb_port *port)
1611 ddbwritel(I2C_SPEED_100, port->i2c->regs + I2C_TIMING); 1639 ddbwritel(I2C_SPEED_100, port->i2c->regs + I2C_TIMING);
1612 } 1640 }
1613 1641
1614 printk(KERN_INFO "Port %d (TAB %d): %s\n", 1642 dev_info(&dev->pdev->dev, "Port %d (TAB %d): %s\n",
1615 port->nr, port->nr+1, modname); 1643 port->nr, port->nr+1, modname);
1616} 1644}
1617 1645
@@ -1765,7 +1793,7 @@ static int flashio(struct ddb *dev, u8 *wbuf, u32 wlen, u8 *rbuf, u32 rlen)
1765 wbuf += 4; 1793 wbuf += 4;
1766 wlen -= 4; 1794 wlen -= 4;
1767 ddbwritel(data, SPI_DATA); 1795 ddbwritel(data, SPI_DATA);
1768 while (ddbreadl(SPI_CONTROL) & 0x0004) 1796 while (safe_ddbreadl(dev, SPI_CONTROL) & 0x0004)
1769 ; 1797 ;
1770 } 1798 }
1771 1799
@@ -1785,7 +1813,7 @@ static int flashio(struct ddb *dev, u8 *wbuf, u32 wlen, u8 *rbuf, u32 rlen)
1785 if (shift) 1813 if (shift)
1786 data <<= shift; 1814 data <<= shift;
1787 ddbwritel(data, SPI_DATA); 1815 ddbwritel(data, SPI_DATA);
1788 while (ddbreadl(SPI_CONTROL) & 0x0004) 1816 while (safe_ddbreadl(dev, SPI_CONTROL) & 0x0004)
1789 ; 1817 ;
1790 1818
1791 if (!rlen) { 1819 if (!rlen) {
@@ -1797,7 +1825,7 @@ static int flashio(struct ddb *dev, u8 *wbuf, u32 wlen, u8 *rbuf, u32 rlen)
1797 1825
1798 while (rlen > 4) { 1826 while (rlen > 4) {
1799 ddbwritel(0xffffffff, SPI_DATA); 1827 ddbwritel(0xffffffff, SPI_DATA);
1800 while (ddbreadl(SPI_CONTROL) & 0x0004) 1828 while (safe_ddbreadl(dev, SPI_CONTROL) & 0x0004)
1801 ; 1829 ;
1802 data = ddbreadl(SPI_DATA); 1830 data = ddbreadl(SPI_DATA);
1803 *(u32 *) rbuf = swab32(data); 1831 *(u32 *) rbuf = swab32(data);
@@ -1806,7 +1834,7 @@ static int flashio(struct ddb *dev, u8 *wbuf, u32 wlen, u8 *rbuf, u32 rlen)
1806 } 1834 }
1807 ddbwritel(0x0003 | ((rlen << (8 + 3)) & 0x1F00), SPI_CONTROL); 1835 ddbwritel(0x0003 | ((rlen << (8 + 3)) & 0x1F00), SPI_CONTROL);
1808 ddbwritel(0xffffffff, SPI_DATA); 1836 ddbwritel(0xffffffff, SPI_DATA);
1809 while (ddbreadl(SPI_CONTROL) & 0x0004) 1837 while (safe_ddbreadl(dev, SPI_CONTROL) & 0x0004)
1810 ; 1838 ;
1811 1839
1812 data = ddbreadl(SPI_DATA); 1840 data = ddbreadl(SPI_DATA);
@@ -1993,7 +2021,7 @@ static int ddb_probe(struct pci_dev *pdev, const struct pci_device_id *id)
1993 dev->pdev = pdev; 2021 dev->pdev = pdev;
1994 pci_set_drvdata(pdev, dev); 2022 pci_set_drvdata(pdev, dev);
1995 dev->info = (struct ddb_info *) id->driver_data; 2023 dev->info = (struct ddb_info *) id->driver_data;
1996 printk(KERN_INFO "DDBridge driver detected: %s\n", dev->info->name); 2024 dev_info(&pdev->dev, "Detected %s\n", dev->info->name);
1997 2025
1998 dev->regs = ioremap(pci_resource_start(dev->pdev, 0), 2026 dev->regs = ioremap(pci_resource_start(dev->pdev, 0),
1999 pci_resource_len(dev->pdev, 0)); 2027 pci_resource_len(dev->pdev, 0));
@@ -2001,13 +2029,13 @@ static int ddb_probe(struct pci_dev *pdev, const struct pci_device_id *id)
2001 stat = -ENOMEM; 2029 stat = -ENOMEM;
2002 goto fail; 2030 goto fail;
2003 } 2031 }
2004 printk(KERN_INFO "HW %08x FW %08x\n", ddbreadl(0), ddbreadl(4)); 2032 dev_info(&pdev->dev, "HW %08x FW %08x\n", ddbreadl(0), ddbreadl(4));
2005 2033
2006#ifdef CONFIG_PCI_MSI 2034#ifdef CONFIG_PCI_MSI
2007 if (pci_msi_enabled()) 2035 if (pci_msi_enabled())
2008 stat = pci_enable_msi(dev->pdev); 2036 stat = pci_enable_msi(dev->pdev);
2009 if (stat) { 2037 if (stat) {
2010 printk(KERN_INFO ": MSI not available.\n"); 2038 dev_info(&pdev->dev, "MSI not available.\n");
2011 } else { 2039 } else {
2012 irq_flag = 0; 2040 irq_flag = 0;
2013 dev->msi = 1; 2041 dev->msi = 1;
@@ -2040,7 +2068,7 @@ static int ddb_probe(struct pci_dev *pdev, const struct pci_device_id *id)
2040 goto fail1; 2068 goto fail1;
2041 ddb_ports_init(dev); 2069 ddb_ports_init(dev);
2042 if (ddb_buffers_alloc(dev) < 0) { 2070 if (ddb_buffers_alloc(dev) < 0) {
2043 printk(KERN_INFO ": Could not allocate buffer memory\n"); 2071 dev_err(&pdev->dev, "Could not allocate buffer memory\n");
2044 goto fail2; 2072 goto fail2;
2045 } 2073 }
2046 if (ddb_ports_attach(dev) < 0) 2074 if (ddb_ports_attach(dev) < 0)
@@ -2050,19 +2078,19 @@ static int ddb_probe(struct pci_dev *pdev, const struct pci_device_id *id)
2050 2078
2051fail3: 2079fail3:
2052 ddb_ports_detach(dev); 2080 ddb_ports_detach(dev);
2053 printk(KERN_ERR "fail3\n"); 2081 dev_err(&pdev->dev, "fail3\n");
2054 ddb_ports_release(dev); 2082 ddb_ports_release(dev);
2055fail2: 2083fail2:
2056 printk(KERN_ERR "fail2\n"); 2084 dev_err(&pdev->dev, "fail2\n");
2057 ddb_buffers_free(dev); 2085 ddb_buffers_free(dev);
2058fail1: 2086fail1:
2059 printk(KERN_ERR "fail1\n"); 2087 dev_err(&pdev->dev, "fail1\n");
2060 if (dev->msi) 2088 if (dev->msi)
2061 pci_disable_msi(dev->pdev); 2089 pci_disable_msi(dev->pdev);
2062 if (stat == 0) 2090 if (stat == 0)
2063 free_irq(dev->pdev->irq, dev); 2091 free_irq(dev->pdev->irq, dev);
2064fail: 2092fail:
2065 printk(KERN_ERR "fail\n"); 2093 dev_err(&pdev->dev, "fail\n");
2066 ddb_unmap(dev); 2094 ddb_unmap(dev);
2067 pci_set_drvdata(pdev, NULL); 2095 pci_set_drvdata(pdev, NULL);
2068 pci_disable_device(pdev); 2096 pci_disable_device(pdev);
@@ -2242,7 +2270,7 @@ static __init int module_init_ddbridge(void)
2242{ 2270{
2243 int ret; 2271 int ret;
2244 2272
2245 printk(KERN_INFO "Digital Devices PCIE bridge driver, Copyright (C) 2010-11 Digital Devices GmbH\n"); 2273 pr_info("Digital Devices PCIE bridge driver, Copyright (C) 2010-11 Digital Devices GmbH\n");
2246 2274
2247 ret = ddb_class_create(); 2275 ret = ddb_class_create();
2248 if (ret < 0) 2276 if (ret < 0)
diff --git a/drivers/media/pci/ngene/ngene-core.c b/drivers/media/pci/ngene/ngene-core.c
index ce69e648b663..8c92cb7f7e72 100644
--- a/drivers/media/pci/ngene/ngene-core.c
+++ b/drivers/media/pci/ngene/ngene-core.c
@@ -336,9 +336,9 @@ int ngene_command(struct ngene *dev, struct ngene_command *com)
336{ 336{
337 int result; 337 int result;
338 338
339 down(&dev->cmd_mutex); 339 mutex_lock(&dev->cmd_mutex);
340 result = ngene_command_mutex(dev, com); 340 result = ngene_command_mutex(dev, com);
341 up(&dev->cmd_mutex); 341 mutex_unlock(&dev->cmd_mutex);
342 return result; 342 return result;
343} 343}
344 344
@@ -560,7 +560,6 @@ static int ngene_command_stream_control(struct ngene *dev, u8 stream,
560 u16 BsSPI = ((stream & 1) ? 0x9800 : 0x9700); 560 u16 BsSPI = ((stream & 1) ? 0x9800 : 0x9700);
561 u16 BsSDO = 0x9B00; 561 u16 BsSDO = 0x9B00;
562 562
563 down(&dev->stream_mutex);
564 memset(&com, 0, sizeof(com)); 563 memset(&com, 0, sizeof(com));
565 com.cmd.hdr.Opcode = CMD_CONTROL; 564 com.cmd.hdr.Opcode = CMD_CONTROL;
566 com.cmd.hdr.Length = sizeof(struct FW_STREAM_CONTROL) - 2; 565 com.cmd.hdr.Length = sizeof(struct FW_STREAM_CONTROL) - 2;
@@ -586,17 +585,13 @@ static int ngene_command_stream_control(struct ngene *dev, u8 stream,
586 chan->State = KSSTATE_ACQUIRE; 585 chan->State = KSSTATE_ACQUIRE;
587 chan->HWState = HWSTATE_STOP; 586 chan->HWState = HWSTATE_STOP;
588 spin_unlock_irq(&chan->state_lock); 587 spin_unlock_irq(&chan->state_lock);
589 if (ngene_command(dev, &com) < 0) { 588 if (ngene_command(dev, &com) < 0)
590 up(&dev->stream_mutex);
591 return -1; 589 return -1;
592 }
593 /* clear_buffers(chan); */ 590 /* clear_buffers(chan); */
594 flush_buffers(chan); 591 flush_buffers(chan);
595 up(&dev->stream_mutex);
596 return 0; 592 return 0;
597 } 593 }
598 spin_unlock_irq(&chan->state_lock); 594 spin_unlock_irq(&chan->state_lock);
599 up(&dev->stream_mutex);
600 return 0; 595 return 0;
601 } 596 }
602 597
@@ -692,11 +687,9 @@ static int ngene_command_stream_control(struct ngene *dev, u8 stream,
692 chan->HWState = HWSTATE_STARTUP; 687 chan->HWState = HWSTATE_STARTUP;
693 spin_unlock_irq(&chan->state_lock); 688 spin_unlock_irq(&chan->state_lock);
694 689
695 if (ngene_command(dev, &com) < 0) { 690 if (ngene_command(dev, &com) < 0)
696 up(&dev->stream_mutex);
697 return -1; 691 return -1;
698 } 692
699 up(&dev->stream_mutex);
700 return 0; 693 return 0;
701} 694}
702 695
@@ -750,8 +743,11 @@ void set_transfer(struct ngene_channel *chan, int state)
750 /* else printk(KERN_INFO DEVICE_NAME ": lock=%08x\n", 743 /* else printk(KERN_INFO DEVICE_NAME ": lock=%08x\n",
751 ngreadl(0x9310)); */ 744 ngreadl(0x9310)); */
752 745
746 mutex_lock(&dev->stream_mutex);
753 ret = ngene_command_stream_control(dev, chan->number, 747 ret = ngene_command_stream_control(dev, chan->number,
754 control, mode, flags); 748 control, mode, flags);
749 mutex_unlock(&dev->stream_mutex);
750
755 if (!ret) 751 if (!ret)
756 chan->running = state; 752 chan->running = state;
757 else 753 else
@@ -1283,7 +1279,7 @@ static int ngene_load_firm(struct ngene *dev)
1283 1279
1284static void ngene_stop(struct ngene *dev) 1280static void ngene_stop(struct ngene *dev)
1285{ 1281{
1286 down(&dev->cmd_mutex); 1282 mutex_destroy(&dev->cmd_mutex);
1287 i2c_del_adapter(&(dev->channel[0].i2c_adapter)); 1283 i2c_del_adapter(&(dev->channel[0].i2c_adapter));
1288 i2c_del_adapter(&(dev->channel[1].i2c_adapter)); 1284 i2c_del_adapter(&(dev->channel[1].i2c_adapter));
1289 ngwritel(0, NGENE_INT_ENABLE); 1285 ngwritel(0, NGENE_INT_ENABLE);
@@ -1346,10 +1342,10 @@ static int ngene_start(struct ngene *dev)
1346 init_waitqueue_head(&dev->cmd_wq); 1342 init_waitqueue_head(&dev->cmd_wq);
1347 init_waitqueue_head(&dev->tx_wq); 1343 init_waitqueue_head(&dev->tx_wq);
1348 init_waitqueue_head(&dev->rx_wq); 1344 init_waitqueue_head(&dev->rx_wq);
1349 sema_init(&dev->cmd_mutex, 1); 1345 mutex_init(&dev->cmd_mutex);
1350 sema_init(&dev->stream_mutex, 1); 1346 mutex_init(&dev->stream_mutex);
1351 sema_init(&dev->pll_mutex, 1); 1347 sema_init(&dev->pll_mutex, 1);
1352 sema_init(&dev->i2c_switch_mutex, 1); 1348 mutex_init(&dev->i2c_switch_mutex);
1353 spin_lock_init(&dev->cmd_lock); 1349 spin_lock_init(&dev->cmd_lock);
1354 for (i = 0; i < MAX_STREAM; i++) 1350 for (i = 0; i < MAX_STREAM; i++)
1355 spin_lock_init(&dev->channel[i].state_lock); 1351 spin_lock_init(&dev->channel[i].state_lock);
@@ -1606,10 +1602,10 @@ static void ngene_unlink(struct ngene *dev)
1606 com.in_len = 3; 1602 com.in_len = 3;
1607 com.out_len = 1; 1603 com.out_len = 1;
1608 1604
1609 down(&dev->cmd_mutex); 1605 mutex_lock(&dev->cmd_mutex);
1610 ngwritel(0, NGENE_INT_ENABLE); 1606 ngwritel(0, NGENE_INT_ENABLE);
1611 ngene_command_mutex(dev, &com); 1607 ngene_command_mutex(dev, &com);
1612 up(&dev->cmd_mutex); 1608 mutex_unlock(&dev->cmd_mutex);
1613} 1609}
1614 1610
1615void ngene_shutdown(struct pci_dev *pdev) 1611void ngene_shutdown(struct pci_dev *pdev)
diff --git a/drivers/media/pci/ngene/ngene-i2c.c b/drivers/media/pci/ngene/ngene-i2c.c
index cf39fcf54adf..fbf36353c701 100644
--- a/drivers/media/pci/ngene/ngene-i2c.c
+++ b/drivers/media/pci/ngene/ngene-i2c.c
@@ -118,7 +118,7 @@ static int ngene_i2c_master_xfer(struct i2c_adapter *adapter,
118 (struct ngene_channel *)i2c_get_adapdata(adapter); 118 (struct ngene_channel *)i2c_get_adapdata(adapter);
119 struct ngene *dev = chan->dev; 119 struct ngene *dev = chan->dev;
120 120
121 down(&dev->i2c_switch_mutex); 121 mutex_lock(&dev->i2c_switch_mutex);
122 ngene_i2c_set_bus(dev, chan->number); 122 ngene_i2c_set_bus(dev, chan->number);
123 123
124 if (num == 2 && msg[1].flags & I2C_M_RD && !(msg[0].flags & I2C_M_RD)) 124 if (num == 2 && msg[1].flags & I2C_M_RD && !(msg[0].flags & I2C_M_RD))
@@ -136,11 +136,11 @@ static int ngene_i2c_master_xfer(struct i2c_adapter *adapter,
136 msg[0].buf, msg[0].len, 0)) 136 msg[0].buf, msg[0].len, 0))
137 goto done; 137 goto done;
138 138
139 up(&dev->i2c_switch_mutex); 139 mutex_unlock(&dev->i2c_switch_mutex);
140 return -EIO; 140 return -EIO;
141 141
142done: 142done:
143 up(&dev->i2c_switch_mutex); 143 mutex_unlock(&dev->i2c_switch_mutex);
144 return num; 144 return num;
145} 145}
146 146
diff --git a/drivers/media/pci/ngene/ngene.h b/drivers/media/pci/ngene/ngene.h
index 10d8f74c4f0a..7c7cd217333d 100644
--- a/drivers/media/pci/ngene/ngene.h
+++ b/drivers/media/pci/ngene/ngene.h
@@ -762,10 +762,10 @@ struct ngene {
762 762
763 wait_queue_head_t cmd_wq; 763 wait_queue_head_t cmd_wq;
764 int cmd_done; 764 int cmd_done;
765 struct semaphore cmd_mutex; 765 struct mutex cmd_mutex;
766 struct semaphore stream_mutex; 766 struct mutex stream_mutex;
767 struct semaphore pll_mutex; 767 struct semaphore pll_mutex;
768 struct semaphore i2c_switch_mutex; 768 struct mutex i2c_switch_mutex;
769 int i2c_current_channel; 769 int i2c_current_channel;
770 int i2c_current_bus; 770 int i2c_current_bus;
771 spinlock_t cmd_lock; 771 spinlock_t cmd_lock;
diff --git a/drivers/media/pci/tw5864/tw5864-video.c b/drivers/media/pci/tw5864/tw5864-video.c
index 2a044be729da..e7bd2b8484e3 100644
--- a/drivers/media/pci/tw5864/tw5864-video.c
+++ b/drivers/media/pci/tw5864/tw5864-video.c
@@ -545,6 +545,7 @@ static int tw5864_fmt_vid_cap(struct file *file, void *priv,
545 switch (input->std) { 545 switch (input->std) {
546 default: 546 default:
547 WARN_ON_ONCE(1); 547 WARN_ON_ONCE(1);
548 return -EINVAL;
548 case STD_NTSC: 549 case STD_NTSC:
549 f->fmt.pix.height = 480; 550 f->fmt.pix.height = 480;
550 break; 551 break;
diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
index 1313cd533436..fb1fa0b82077 100644
--- a/drivers/media/platform/Kconfig
+++ b/drivers/media/platform/Kconfig
@@ -475,8 +475,8 @@ config VIDEO_QCOM_VENUS
475 tristate "Qualcomm Venus V4L2 encoder/decoder driver" 475 tristate "Qualcomm Venus V4L2 encoder/decoder driver"
476 depends on VIDEO_DEV && VIDEO_V4L2 && HAS_DMA 476 depends on VIDEO_DEV && VIDEO_V4L2 && HAS_DMA
477 depends on (ARCH_QCOM && IOMMU_DMA) || COMPILE_TEST 477 depends on (ARCH_QCOM && IOMMU_DMA) || COMPILE_TEST
478 select QCOM_MDT_LOADER if (ARM || ARM64) 478 select QCOM_MDT_LOADER if ARCH_QCOM
479 select QCOM_SCM if (ARM || ARM64) 479 select QCOM_SCM if ARCH_QCOM
480 select VIDEOBUF2_DMA_SG 480 select VIDEOBUF2_DMA_SG
481 select V4L2_MEM2MEM_DEV 481 select V4L2_MEM2MEM_DEV
482 ---help--- 482 ---help---
diff --git a/drivers/media/platform/coda/coda-bit.c b/drivers/media/platform/coda/coda-bit.c
index 25cbf9e5ac5a..bba1eb43b5d8 100644
--- a/drivers/media/platform/coda/coda-bit.c
+++ b/drivers/media/platform/coda/coda-bit.c
@@ -393,8 +393,8 @@ static int coda_alloc_framebuffers(struct coda_ctx *ctx,
393 int ret; 393 int ret;
394 int i; 394 int i;
395 395
396 if (ctx->codec && (ctx->codec->src_fourcc == V4L2_PIX_FMT_H264 || 396 if (ctx->codec->src_fourcc == V4L2_PIX_FMT_H264 ||
397 ctx->codec->dst_fourcc == V4L2_PIX_FMT_H264)) { 397 ctx->codec->dst_fourcc == V4L2_PIX_FMT_H264) {
398 width = round_up(q_data->width, 16); 398 width = round_up(q_data->width, 16);
399 height = round_up(q_data->height, 16); 399 height = round_up(q_data->height, 16);
400 } else { 400 } else {
@@ -2198,7 +2198,7 @@ static void coda_finish_decode(struct coda_ctx *ctx)
2198 ctx->display_idx = display_idx; 2198 ctx->display_idx = display_idx;
2199} 2199}
2200 2200
2201static void coda_error_decode(struct coda_ctx *ctx) 2201static void coda_decode_timeout(struct coda_ctx *ctx)
2202{ 2202{
2203 struct vb2_v4l2_buffer *dst_buf; 2203 struct vb2_v4l2_buffer *dst_buf;
2204 2204
@@ -2223,7 +2223,7 @@ const struct coda_context_ops coda_bit_decode_ops = {
2223 .start_streaming = coda_start_decoding, 2223 .start_streaming = coda_start_decoding,
2224 .prepare_run = coda_prepare_decode, 2224 .prepare_run = coda_prepare_decode,
2225 .finish_run = coda_finish_decode, 2225 .finish_run = coda_finish_decode,
2226 .error_run = coda_error_decode, 2226 .run_timeout = coda_decode_timeout,
2227 .seq_end_work = coda_seq_end_work, 2227 .seq_end_work = coda_seq_end_work,
2228 .release = coda_bit_release, 2228 .release = coda_bit_release,
2229}; 2229};
diff --git a/drivers/media/platform/coda/coda-common.c b/drivers/media/platform/coda/coda-common.c
index f92cc7df58fb..829c7895a98a 100644
--- a/drivers/media/platform/coda/coda-common.c
+++ b/drivers/media/platform/coda/coda-common.c
@@ -1164,8 +1164,8 @@ static void coda_pic_run_work(struct work_struct *work)
1164 1164
1165 coda_hw_reset(ctx); 1165 coda_hw_reset(ctx);
1166 1166
1167 if (ctx->ops->error_run) 1167 if (ctx->ops->run_timeout)
1168 ctx->ops->error_run(ctx); 1168 ctx->ops->run_timeout(ctx);
1169 } else if (!ctx->aborting) { 1169 } else if (!ctx->aborting) {
1170 ctx->ops->finish_run(ctx); 1170 ctx->ops->finish_run(ctx);
1171 } 1171 }
diff --git a/drivers/media/platform/coda/coda.h b/drivers/media/platform/coda/coda.h
index 40fe22f0d757..c5f504d8cf67 100644
--- a/drivers/media/platform/coda/coda.h
+++ b/drivers/media/platform/coda/coda.h
@@ -183,7 +183,7 @@ struct coda_context_ops {
183 int (*start_streaming)(struct coda_ctx *ctx); 183 int (*start_streaming)(struct coda_ctx *ctx);
184 int (*prepare_run)(struct coda_ctx *ctx); 184 int (*prepare_run)(struct coda_ctx *ctx);
185 void (*finish_run)(struct coda_ctx *ctx); 185 void (*finish_run)(struct coda_ctx *ctx);
186 void (*error_run)(struct coda_ctx *ctx); 186 void (*run_timeout)(struct coda_ctx *ctx);
187 void (*seq_end_work)(struct work_struct *work); 187 void (*seq_end_work)(struct work_struct *work);
188 void (*release)(struct coda_ctx *ctx); 188 void (*release)(struct coda_ctx *ctx);
189}; 189};
diff --git a/drivers/media/platform/davinci/ccdc_hw_device.h b/drivers/media/platform/davinci/ccdc_hw_device.h
index 8f6688a7a111..f1b521045d64 100644
--- a/drivers/media/platform/davinci/ccdc_hw_device.h
+++ b/drivers/media/platform/davinci/ccdc_hw_device.h
@@ -42,16 +42,6 @@ struct ccdc_hw_ops {
42 int (*set_hw_if_params) (struct vpfe_hw_if_param *param); 42 int (*set_hw_if_params) (struct vpfe_hw_if_param *param);
43 /* get interface parameters */ 43 /* get interface parameters */
44 int (*get_hw_if_params) (struct vpfe_hw_if_param *param); 44 int (*get_hw_if_params) (struct vpfe_hw_if_param *param);
45 /*
46 * Pointer to function to set parameters. Used
47 * for implementing VPFE_S_CCDC_PARAMS
48 */
49 int (*set_params) (void *params);
50 /*
51 * Pointer to function to get parameter. Used
52 * for implementing VPFE_G_CCDC_PARAMS
53 */
54 int (*get_params) (void *params);
55 /* Pointer to function to configure ccdc */ 45 /* Pointer to function to configure ccdc */
56 int (*configure) (void); 46 int (*configure) (void);
57 47
diff --git a/drivers/media/platform/davinci/dm355_ccdc.c b/drivers/media/platform/davinci/dm355_ccdc.c
index 73db166dc338..6d492dc4c3a9 100644
--- a/drivers/media/platform/davinci/dm355_ccdc.c
+++ b/drivers/media/platform/davinci/dm355_ccdc.c
@@ -17,12 +17,7 @@
17 * This module is for configuring DM355 CCD controller of VPFE to capture 17 * This module is for configuring DM355 CCD controller of VPFE to capture
18 * Raw yuv or Bayer RGB data from a decoder. CCDC has several modules 18 * Raw yuv or Bayer RGB data from a decoder. CCDC has several modules
19 * such as Defect Pixel Correction, Color Space Conversion etc to 19 * such as Defect Pixel Correction, Color Space Conversion etc to
20 * pre-process the Bayer RGB data, before writing it to SDRAM. This 20 * pre-process the Bayer RGB data, before writing it to SDRAM.
21 * module also allows application to configure individual
22 * module parameters through VPFE_CMD_S_CCDC_RAW_PARAMS IOCTL.
23 * To do so, application include dm355_ccdc.h and vpfe_capture.h header
24 * files. The setparams() API is called by vpfe_capture driver
25 * to configure module parameters
26 * 21 *
27 * TODO: 1) Raw bayer parameter settings and bayer capture 22 * TODO: 1) Raw bayer parameter settings and bayer capture
28 * 2) Split module parameter structure to module specific ioctl structs 23 * 2) Split module parameter structure to module specific ioctl structs
@@ -260,90 +255,6 @@ static void ccdc_setwin(struct v4l2_rect *image_win,
260 dev_dbg(ccdc_cfg.dev, "\nEnd of ccdc_setwin..."); 255 dev_dbg(ccdc_cfg.dev, "\nEnd of ccdc_setwin...");
261} 256}
262 257
263static int validate_ccdc_param(struct ccdc_config_params_raw *ccdcparam)
264{
265 if (ccdcparam->datasft < CCDC_DATA_NO_SHIFT ||
266 ccdcparam->datasft > CCDC_DATA_SHIFT_6BIT) {
267 dev_dbg(ccdc_cfg.dev, "Invalid value of data shift\n");
268 return -EINVAL;
269 }
270
271 if (ccdcparam->mfilt1 < CCDC_NO_MEDIAN_FILTER1 ||
272 ccdcparam->mfilt1 > CCDC_MEDIAN_FILTER1) {
273 dev_dbg(ccdc_cfg.dev, "Invalid value of median filter1\n");
274 return -EINVAL;
275 }
276
277 if (ccdcparam->mfilt2 < CCDC_NO_MEDIAN_FILTER2 ||
278 ccdcparam->mfilt2 > CCDC_MEDIAN_FILTER2) {
279 dev_dbg(ccdc_cfg.dev, "Invalid value of median filter2\n");
280 return -EINVAL;
281 }
282
283 if ((ccdcparam->med_filt_thres < 0) ||
284 (ccdcparam->med_filt_thres > CCDC_MED_FILT_THRESH)) {
285 dev_dbg(ccdc_cfg.dev,
286 "Invalid value of median filter threshold\n");
287 return -EINVAL;
288 }
289
290 if (ccdcparam->data_sz < CCDC_DATA_16BITS ||
291 ccdcparam->data_sz > CCDC_DATA_8BITS) {
292 dev_dbg(ccdc_cfg.dev, "Invalid value of data size\n");
293 return -EINVAL;
294 }
295
296 if (ccdcparam->alaw.enable) {
297 if (ccdcparam->alaw.gamma_wd < CCDC_GAMMA_BITS_13_4 ||
298 ccdcparam->alaw.gamma_wd > CCDC_GAMMA_BITS_09_0) {
299 dev_dbg(ccdc_cfg.dev, "Invalid value of ALAW\n");
300 return -EINVAL;
301 }
302 }
303
304 if (ccdcparam->blk_clamp.b_clamp_enable) {
305 if (ccdcparam->blk_clamp.sample_pixel < CCDC_SAMPLE_1PIXELS ||
306 ccdcparam->blk_clamp.sample_pixel > CCDC_SAMPLE_16PIXELS) {
307 dev_dbg(ccdc_cfg.dev,
308 "Invalid value of sample pixel\n");
309 return -EINVAL;
310 }
311 if (ccdcparam->blk_clamp.sample_ln < CCDC_SAMPLE_1LINES ||
312 ccdcparam->blk_clamp.sample_ln > CCDC_SAMPLE_16LINES) {
313 dev_dbg(ccdc_cfg.dev,
314 "Invalid value of sample lines\n");
315 return -EINVAL;
316 }
317 }
318 return 0;
319}
320
321/* Parameter operations */
322static int ccdc_set_params(void __user *params)
323{
324 struct ccdc_config_params_raw ccdc_raw_params;
325 int x;
326
327 /* only raw module parameters can be set through the IOCTL */
328 if (ccdc_cfg.if_type != VPFE_RAW_BAYER)
329 return -EINVAL;
330
331 x = copy_from_user(&ccdc_raw_params, params, sizeof(ccdc_raw_params));
332 if (x) {
333 dev_dbg(ccdc_cfg.dev, "ccdc_set_params: error in copying ccdcparams, %d\n",
334 x);
335 return -EFAULT;
336 }
337
338 if (!validate_ccdc_param(&ccdc_raw_params)) {
339 memcpy(&ccdc_cfg.bayer.config_params,
340 &ccdc_raw_params,
341 sizeof(ccdc_raw_params));
342 return 0;
343 }
344 return -EINVAL;
345}
346
347/* This function will configure CCDC for YCbCr video capture */ 258/* This function will configure CCDC for YCbCr video capture */
348static void ccdc_config_ycbcr(void) 259static void ccdc_config_ycbcr(void)
349{ 260{
@@ -939,7 +850,6 @@ static struct ccdc_hw_device ccdc_hw_dev = {
939 .enable = ccdc_enable, 850 .enable = ccdc_enable,
940 .enable_out_to_sdram = ccdc_enable_output_to_sdram, 851 .enable_out_to_sdram = ccdc_enable_output_to_sdram,
941 .set_hw_if_params = ccdc_set_hw_if_params, 852 .set_hw_if_params = ccdc_set_hw_if_params,
942 .set_params = ccdc_set_params,
943 .configure = ccdc_configure, 853 .configure = ccdc_configure,
944 .set_buftype = ccdc_set_buftype, 854 .set_buftype = ccdc_set_buftype,
945 .get_buftype = ccdc_get_buftype, 855 .get_buftype = ccdc_get_buftype,
diff --git a/drivers/media/platform/davinci/dm644x_ccdc.c b/drivers/media/platform/davinci/dm644x_ccdc.c
index 740fbc7a8c14..3b2d8a9317b8 100644
--- a/drivers/media/platform/davinci/dm644x_ccdc.c
+++ b/drivers/media/platform/davinci/dm644x_ccdc.c
@@ -17,13 +17,9 @@
17 * This module is for configuring CCD controller of DM6446 VPFE to capture 17 * This module is for configuring CCD controller of DM6446 VPFE to capture
18 * Raw yuv or Bayer RGB data from a decoder. CCDC has several modules 18 * Raw yuv or Bayer RGB data from a decoder. CCDC has several modules
19 * such as Defect Pixel Correction, Color Space Conversion etc to 19 * such as Defect Pixel Correction, Color Space Conversion etc to
20 * pre-process the Raw Bayer RGB data, before writing it to SDRAM. This 20 * pre-process the Raw Bayer RGB data, before writing it to SDRAM.
21 * module also allows application to configure individual 21 * This file is named DM644x so that other variants such DM6443
22 * module parameters through VPFE_CMD_S_CCDC_RAW_PARAMS IOCTL. 22 * may be supported using the same module.
23 * To do so, application includes dm644x_ccdc.h and vpfe_capture.h header
24 * files. The setparams() API is called by vpfe_capture driver
25 * to configure module parameters. This file is named DM644x so that other
26 * variants such DM6443 may be supported using the same module.
27 * 23 *
28 * TODO: Test Raw bayer parameter settings and bayer capture 24 * TODO: Test Raw bayer parameter settings and bayer capture
29 * Split module parameter structure to module specific ioctl structs 25 * Split module parameter structure to module specific ioctl structs
@@ -216,96 +212,8 @@ static void ccdc_readregs(void)
216 dev_notice(ccdc_cfg.dev, "\nReading 0x%x to VERT_LINES...\n", val); 212 dev_notice(ccdc_cfg.dev, "\nReading 0x%x to VERT_LINES...\n", val);
217} 213}
218 214
219static int validate_ccdc_param(struct ccdc_config_params_raw *ccdcparam)
220{
221 if (ccdcparam->alaw.enable) {
222 u8 max_gamma = ccdc_gamma_width_max_bit(ccdcparam->alaw.gamma_wd);
223 u8 max_data = ccdc_data_size_max_bit(ccdcparam->data_sz);
224
225 if ((ccdcparam->alaw.gamma_wd > CCDC_GAMMA_BITS_09_0) ||
226 (ccdcparam->alaw.gamma_wd < CCDC_GAMMA_BITS_15_6) ||
227 (max_gamma > max_data)) {
228 dev_dbg(ccdc_cfg.dev, "\nInvalid data line select");
229 return -1;
230 }
231 }
232 return 0;
233}
234
235static int ccdc_update_raw_params(struct ccdc_config_params_raw *raw_params)
236{
237 struct ccdc_config_params_raw *config_params =
238 &ccdc_cfg.bayer.config_params;
239 unsigned int *fpc_virtaddr = NULL;
240 unsigned int *fpc_physaddr = NULL;
241
242 memcpy(config_params, raw_params, sizeof(*raw_params));
243 /*
244 * allocate memory for fault pixel table and copy the user
245 * values to the table
246 */
247 if (!config_params->fault_pxl.enable)
248 return 0;
249
250 fpc_physaddr = (unsigned int *)config_params->fault_pxl.fpc_table_addr;
251 fpc_virtaddr = (unsigned int *)phys_to_virt(
252 (unsigned long)fpc_physaddr);
253 /*
254 * Allocate memory for FPC table if current
255 * FPC table buffer is not big enough to
256 * accommodate FPC Number requested
257 */
258 if (raw_params->fault_pxl.fp_num != config_params->fault_pxl.fp_num) {
259 if (fpc_physaddr != NULL) {
260 free_pages((unsigned long)fpc_virtaddr,
261 get_order
262 (config_params->fault_pxl.fp_num *
263 FP_NUM_BYTES));
264 }
265
266 /* Allocate memory for FPC table */
267 fpc_virtaddr =
268 (unsigned int *)__get_free_pages(GFP_KERNEL | GFP_DMA,
269 get_order(raw_params->
270 fault_pxl.fp_num *
271 FP_NUM_BYTES));
272
273 if (fpc_virtaddr == NULL) {
274 dev_dbg(ccdc_cfg.dev,
275 "\nUnable to allocate memory for FPC");
276 return -EFAULT;
277 }
278 fpc_physaddr =
279 (unsigned int *)virt_to_phys((void *)fpc_virtaddr);
280 }
281
282 /* Copy number of fault pixels and FPC table */
283 config_params->fault_pxl.fp_num = raw_params->fault_pxl.fp_num;
284 if (copy_from_user(fpc_virtaddr,
285 (void __user *)raw_params->fault_pxl.fpc_table_addr,
286 config_params->fault_pxl.fp_num * FP_NUM_BYTES)) {
287 dev_dbg(ccdc_cfg.dev, "\n copy_from_user failed");
288 return -EFAULT;
289 }
290 config_params->fault_pxl.fpc_table_addr = (unsigned long)fpc_physaddr;
291 return 0;
292}
293
294static int ccdc_close(struct device *dev) 215static int ccdc_close(struct device *dev)
295{ 216{
296 struct ccdc_config_params_raw *config_params =
297 &ccdc_cfg.bayer.config_params;
298 unsigned int *fpc_physaddr = NULL, *fpc_virtaddr = NULL;
299
300 fpc_physaddr = (unsigned int *)config_params->fault_pxl.fpc_table_addr;
301
302 if (fpc_physaddr != NULL) {
303 fpc_virtaddr = (unsigned int *)
304 phys_to_virt((unsigned long)fpc_physaddr);
305 free_pages((unsigned long)fpc_virtaddr,
306 get_order(config_params->fault_pxl.fp_num *
307 FP_NUM_BYTES));
308 }
309 return 0; 217 return 0;
310} 218}
311 219
@@ -339,29 +247,6 @@ static void ccdc_sbl_reset(void)
339 vpss_clear_wbl_overflow(VPSS_PCR_CCDC_WBL_O); 247 vpss_clear_wbl_overflow(VPSS_PCR_CCDC_WBL_O);
340} 248}
341 249
342/* Parameter operations */
343static int ccdc_set_params(void __user *params)
344{
345 struct ccdc_config_params_raw ccdc_raw_params;
346 int x;
347
348 if (ccdc_cfg.if_type != VPFE_RAW_BAYER)
349 return -EINVAL;
350
351 x = copy_from_user(&ccdc_raw_params, params, sizeof(ccdc_raw_params));
352 if (x) {
353 dev_dbg(ccdc_cfg.dev, "ccdc_set_params: error in copyingccdc params, %d\n",
354 x);
355 return -EFAULT;
356 }
357
358 if (!validate_ccdc_param(&ccdc_raw_params)) {
359 if (!ccdc_update_raw_params(&ccdc_raw_params))
360 return 0;
361 }
362 return -EINVAL;
363}
364
365/* 250/*
366 * ccdc_config_ycbcr() 251 * ccdc_config_ycbcr()
367 * This function will configure CCDC for YCbCr video capture 252 * This function will configure CCDC for YCbCr video capture
@@ -489,32 +374,6 @@ static void ccdc_config_black_compense(struct ccdc_black_compensation *bcomp)
489 regw(val, CCDC_BLKCMP); 374 regw(val, CCDC_BLKCMP);
490} 375}
491 376
492static void ccdc_config_fpc(struct ccdc_fault_pixel *fpc)
493{
494 u32 val;
495
496 /* Initially disable FPC */
497 val = CCDC_FPC_DISABLE;
498 regw(val, CCDC_FPC);
499
500 if (!fpc->enable)
501 return;
502
503 /* Configure Fault pixel if needed */
504 regw(fpc->fpc_table_addr, CCDC_FPC_ADDR);
505 dev_dbg(ccdc_cfg.dev, "\nWriting 0x%lx to FPC_ADDR...\n",
506 (fpc->fpc_table_addr));
507 /* Write the FPC params with FPC disable */
508 val = fpc->fp_num & CCDC_FPC_FPC_NUM_MASK;
509 regw(val, CCDC_FPC);
510
511 dev_dbg(ccdc_cfg.dev, "\nWriting 0x%x to FPC...\n", val);
512 /* read the FPC register */
513 val = regr(CCDC_FPC) | CCDC_FPC_ENABLE;
514 regw(val, CCDC_FPC);
515 dev_dbg(ccdc_cfg.dev, "\nWriting 0x%x to FPC...\n", val);
516}
517
518/* 377/*
519 * ccdc_config_raw() 378 * ccdc_config_raw()
520 * This function will configure CCDC for Raw capture mode 379 * This function will configure CCDC for Raw capture mode
@@ -569,9 +428,6 @@ static void ccdc_config_raw(void)
569 /* Configure Black level compensation */ 428 /* Configure Black level compensation */
570 ccdc_config_black_compense(&config_params->blk_comp); 429 ccdc_config_black_compense(&config_params->blk_comp);
571 430
572 /* Configure Fault Pixel Correction */
573 ccdc_config_fpc(&config_params->fault_pxl);
574
575 /* If data size is 8 bit then pack the data */ 431 /* If data size is 8 bit then pack the data */
576 if ((config_params->data_sz == CCDC_DATA_8BITS) || 432 if ((config_params->data_sz == CCDC_DATA_8BITS) ||
577 config_params->alaw.enable) 433 config_params->alaw.enable)
@@ -929,7 +785,6 @@ static struct ccdc_hw_device ccdc_hw_dev = {
929 .reset = ccdc_sbl_reset, 785 .reset = ccdc_sbl_reset,
930 .enable = ccdc_enable, 786 .enable = ccdc_enable,
931 .set_hw_if_params = ccdc_set_hw_if_params, 787 .set_hw_if_params = ccdc_set_hw_if_params,
932 .set_params = ccdc_set_params,
933 .configure = ccdc_configure, 788 .configure = ccdc_configure,
934 .set_buftype = ccdc_set_buftype, 789 .set_buftype = ccdc_set_buftype,
935 .get_buftype = ccdc_get_buftype, 790 .get_buftype = ccdc_get_buftype,
diff --git a/drivers/media/platform/davinci/vpfe_capture.c b/drivers/media/platform/davinci/vpfe_capture.c
index e3fe3e0635aa..b1bf4a7e8eb7 100644
--- a/drivers/media/platform/davinci/vpfe_capture.c
+++ b/drivers/media/platform/davinci/vpfe_capture.c
@@ -281,45 +281,6 @@ void vpfe_unregister_ccdc_device(struct ccdc_hw_device *dev)
281EXPORT_SYMBOL(vpfe_unregister_ccdc_device); 281EXPORT_SYMBOL(vpfe_unregister_ccdc_device);
282 282
283/* 283/*
284 * vpfe_get_ccdc_image_format - Get image parameters based on CCDC settings
285 */
286static int vpfe_get_ccdc_image_format(struct vpfe_device *vpfe_dev,
287 struct v4l2_format *f)
288{
289 struct v4l2_rect image_win;
290 enum ccdc_buftype buf_type;
291 enum ccdc_frmfmt frm_fmt;
292
293 memset(f, 0, sizeof(*f));
294 f->type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
295 ccdc_dev->hw_ops.get_image_window(&image_win);
296 f->fmt.pix.width = image_win.width;
297 f->fmt.pix.height = image_win.height;
298 f->fmt.pix.bytesperline = ccdc_dev->hw_ops.get_line_length();
299 f->fmt.pix.sizeimage = f->fmt.pix.bytesperline *
300 f->fmt.pix.height;
301 buf_type = ccdc_dev->hw_ops.get_buftype();
302 f->fmt.pix.pixelformat = ccdc_dev->hw_ops.get_pixel_format();
303 frm_fmt = ccdc_dev->hw_ops.get_frame_format();
304 if (frm_fmt == CCDC_FRMFMT_PROGRESSIVE)
305 f->fmt.pix.field = V4L2_FIELD_NONE;
306 else if (frm_fmt == CCDC_FRMFMT_INTERLACED) {
307 if (buf_type == CCDC_BUFTYPE_FLD_INTERLEAVED)
308 f->fmt.pix.field = V4L2_FIELD_INTERLACED;
309 else if (buf_type == CCDC_BUFTYPE_FLD_SEPARATED)
310 f->fmt.pix.field = V4L2_FIELD_SEQ_TB;
311 else {
312 v4l2_err(&vpfe_dev->v4l2_dev, "Invalid buf_type\n");
313 return -EINVAL;
314 }
315 } else {
316 v4l2_err(&vpfe_dev->v4l2_dev, "Invalid frm_fmt\n");
317 return -EINVAL;
318 }
319 return 0;
320}
321
322/*
323 * vpfe_config_ccdc_image_format() 284 * vpfe_config_ccdc_image_format()
324 * For a pix format, configure ccdc to setup the capture 285 * For a pix format, configure ccdc to setup the capture
325 */ 286 */
@@ -1697,59 +1658,6 @@ unlock_out:
1697 return ret; 1658 return ret;
1698} 1659}
1699 1660
1700
1701static long vpfe_param_handler(struct file *file, void *priv,
1702 bool valid_prio, unsigned int cmd, void *param)
1703{
1704 struct vpfe_device *vpfe_dev = video_drvdata(file);
1705 int ret;
1706
1707 v4l2_dbg(2, debug, &vpfe_dev->v4l2_dev, "vpfe_param_handler\n");
1708
1709 if (vpfe_dev->started) {
1710 /* only allowed if streaming is not started */
1711 v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev,
1712 "device already started\n");
1713 return -EBUSY;
1714 }
1715
1716 ret = mutex_lock_interruptible(&vpfe_dev->lock);
1717 if (ret)
1718 return ret;
1719
1720 switch (cmd) {
1721 case VPFE_CMD_S_CCDC_RAW_PARAMS:
1722 v4l2_warn(&vpfe_dev->v4l2_dev,
1723 "VPFE_CMD_S_CCDC_RAW_PARAMS: experimental ioctl\n");
1724 if (ccdc_dev->hw_ops.set_params) {
1725 ret = ccdc_dev->hw_ops.set_params(param);
1726 if (ret) {
1727 v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev,
1728 "Error setting parameters in CCDC\n");
1729 goto unlock_out;
1730 }
1731 ret = vpfe_get_ccdc_image_format(vpfe_dev,
1732 &vpfe_dev->fmt);
1733 if (ret < 0) {
1734 v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev,
1735 "Invalid image format at CCDC\n");
1736 goto unlock_out;
1737 }
1738 } else {
1739 ret = -EINVAL;
1740 v4l2_dbg(1, debug, &vpfe_dev->v4l2_dev,
1741 "VPFE_CMD_S_CCDC_RAW_PARAMS not supported\n");
1742 }
1743 break;
1744 default:
1745 ret = -ENOTTY;
1746 }
1747unlock_out:
1748 mutex_unlock(&vpfe_dev->lock);
1749 return ret;
1750}
1751
1752
1753/* vpfe capture ioctl operations */ 1661/* vpfe capture ioctl operations */
1754static const struct v4l2_ioctl_ops vpfe_ioctl_ops = { 1662static const struct v4l2_ioctl_ops vpfe_ioctl_ops = {
1755 .vidioc_querycap = vpfe_querycap, 1663 .vidioc_querycap = vpfe_querycap,
@@ -1772,7 +1680,6 @@ static const struct v4l2_ioctl_ops vpfe_ioctl_ops = {
1772 .vidioc_cropcap = vpfe_cropcap, 1680 .vidioc_cropcap = vpfe_cropcap,
1773 .vidioc_g_selection = vpfe_g_selection, 1681 .vidioc_g_selection = vpfe_g_selection,
1774 .vidioc_s_selection = vpfe_s_selection, 1682 .vidioc_s_selection = vpfe_s_selection,
1775 .vidioc_default = vpfe_param_handler,
1776}; 1683};
1777 1684
1778static struct vpfe_device *vpfe_initialize(void) 1685static struct vpfe_device *vpfe_initialize(void)
diff --git a/drivers/media/platform/davinci/vpif_capture.c b/drivers/media/platform/davinci/vpif_capture.c
index d78580f9e431..4be6554c56c5 100644
--- a/drivers/media/platform/davinci/vpif_capture.c
+++ b/drivers/media/platform/davinci/vpif_capture.c
@@ -1719,7 +1719,6 @@ vpif_unregister:
1719 */ 1719 */
1720static int vpif_remove(struct platform_device *device) 1720static int vpif_remove(struct platform_device *device)
1721{ 1721{
1722 struct common_obj *common;
1723 struct channel_obj *ch; 1722 struct channel_obj *ch;
1724 int i; 1723 int i;
1725 1724
@@ -1730,7 +1729,6 @@ static int vpif_remove(struct platform_device *device)
1730 for (i = 0; i < VPIF_CAPTURE_MAX_DEVICES; i++) { 1729 for (i = 0; i < VPIF_CAPTURE_MAX_DEVICES; i++) {
1731 /* Get the pointer to the channel object */ 1730 /* Get the pointer to the channel object */
1732 ch = vpif_obj.dev[i]; 1731 ch = vpif_obj.dev[i];
1733 common = &ch->common[VPIF_VIDEO_INDEX];
1734 /* Unregister video device */ 1732 /* Unregister video device */
1735 video_unregister_device(&ch->video_dev); 1733 video_unregister_device(&ch->video_dev);
1736 kfree(vpif_obj.dev[i]); 1734 kfree(vpif_obj.dev[i]);
diff --git a/drivers/media/platform/davinci/vpif_display.c b/drivers/media/platform/davinci/vpif_display.c
index b5ac6ce626b3..bf982bf86542 100644
--- a/drivers/media/platform/davinci/vpif_display.c
+++ b/drivers/media/platform/davinci/vpif_display.c
@@ -1339,7 +1339,6 @@ vpif_unregister:
1339 */ 1339 */
1340static int vpif_remove(struct platform_device *device) 1340static int vpif_remove(struct platform_device *device)
1341{ 1341{
1342 struct common_obj *common;
1343 struct channel_obj *ch; 1342 struct channel_obj *ch;
1344 int i; 1343 int i;
1345 1344
@@ -1350,7 +1349,6 @@ static int vpif_remove(struct platform_device *device)
1350 for (i = 0; i < VPIF_DISPLAY_MAX_DEVICES; i++) { 1349 for (i = 0; i < VPIF_DISPLAY_MAX_DEVICES; i++) {
1351 /* Get the pointer to the channel object */ 1350 /* Get the pointer to the channel object */
1352 ch = vpif_obj.dev[i]; 1351 ch = vpif_obj.dev[i];
1353 common = &ch->common[VPIF_VIDEO_INDEX];
1354 /* Unregister video device */ 1352 /* Unregister video device */
1355 video_unregister_device(&ch->video_dev); 1353 video_unregister_device(&ch->video_dev);
1356 kfree(vpif_obj.dev[i]); 1354 kfree(vpif_obj.dev[i]);
diff --git a/drivers/media/platform/omap/omap_vout_vrfb.c b/drivers/media/platform/omap/omap_vout_vrfb.c
index 92c4e1826356..45a553d4f5b2 100644
--- a/drivers/media/platform/omap/omap_vout_vrfb.c
+++ b/drivers/media/platform/omap/omap_vout_vrfb.c
@@ -16,7 +16,6 @@
16#include <media/videobuf-dma-contig.h> 16#include <media/videobuf-dma-contig.h>
17#include <media/v4l2-device.h> 17#include <media/v4l2-device.h>
18 18
19#include <linux/omap-dma.h>
20#include <video/omapvrfb.h> 19#include <video/omapvrfb.h>
21 20
22#include "omap_voutdef.h" 21#include "omap_voutdef.h"
@@ -63,7 +62,7 @@ static int omap_vout_allocate_vrfb_buffers(struct omap_vout_device *vout,
63/* 62/*
64 * Wakes up the application once the DMA transfer to VRFB space is completed. 63 * Wakes up the application once the DMA transfer to VRFB space is completed.
65 */ 64 */
66static void omap_vout_vrfb_dma_tx_callback(int lch, u16 ch_status, void *data) 65static void omap_vout_vrfb_dma_tx_callback(void *data)
67{ 66{
68 struct vid_vrfb_dma *t = (struct vid_vrfb_dma *) data; 67 struct vid_vrfb_dma *t = (struct vid_vrfb_dma *) data;
69 68
@@ -94,6 +93,7 @@ int omap_vout_setup_vrfb_bufs(struct platform_device *pdev, int vid_num,
94 int ret = 0, i, j; 93 int ret = 0, i, j;
95 struct omap_vout_device *vout; 94 struct omap_vout_device *vout;
96 struct video_device *vfd; 95 struct video_device *vfd;
96 dma_cap_mask_t mask;
97 int image_width, image_height; 97 int image_width, image_height;
98 int vrfb_num_bufs = VRFB_NUM_BUFS; 98 int vrfb_num_bufs = VRFB_NUM_BUFS;
99 struct v4l2_device *v4l2_dev = platform_get_drvdata(pdev); 99 struct v4l2_device *v4l2_dev = platform_get_drvdata(pdev);
@@ -131,18 +131,27 @@ int omap_vout_setup_vrfb_bufs(struct platform_device *pdev, int vid_num,
131 /* 131 /*
132 * Request and Initialize DMA, for DMA based VRFB transfer 132 * Request and Initialize DMA, for DMA based VRFB transfer
133 */ 133 */
134 vout->vrfb_dma_tx.dev_id = OMAP_DMA_NO_DEVICE; 134 dma_cap_zero(mask);
135 vout->vrfb_dma_tx.dma_ch = -1; 135 dma_cap_set(DMA_INTERLEAVE, mask);
136 vout->vrfb_dma_tx.req_status = DMA_CHAN_ALLOTED; 136 vout->vrfb_dma_tx.chan = dma_request_chan_by_mask(&mask);
137 ret = omap_request_dma(vout->vrfb_dma_tx.dev_id, "VRFB DMA TX", 137 if (IS_ERR(vout->vrfb_dma_tx.chan)) {
138 omap_vout_vrfb_dma_tx_callback,
139 (void *) &vout->vrfb_dma_tx, &vout->vrfb_dma_tx.dma_ch);
140 if (ret < 0) {
141 vout->vrfb_dma_tx.req_status = DMA_CHAN_NOT_ALLOTED; 138 vout->vrfb_dma_tx.req_status = DMA_CHAN_NOT_ALLOTED;
139 } else {
140 size_t xt_size = sizeof(struct dma_interleaved_template) +
141 sizeof(struct data_chunk);
142
143 vout->vrfb_dma_tx.xt = kzalloc(xt_size, GFP_KERNEL);
144 if (!vout->vrfb_dma_tx.xt) {
145 dma_release_channel(vout->vrfb_dma_tx.chan);
146 vout->vrfb_dma_tx.req_status = DMA_CHAN_NOT_ALLOTED;
147 }
148 }
149
150 if (vout->vrfb_dma_tx.req_status == DMA_CHAN_NOT_ALLOTED)
142 dev_info(&pdev->dev, 151 dev_info(&pdev->dev,
143 ": failed to allocate DMA Channel for video%d\n", 152 ": failed to allocate DMA Channel for video%d\n",
144 vfd->minor); 153 vfd->minor);
145 } 154
146 init_waitqueue_head(&vout->vrfb_dma_tx.wait); 155 init_waitqueue_head(&vout->vrfb_dma_tx.wait);
147 156
148 /* statically allocated the VRFB buffer is done through 157 /* statically allocated the VRFB buffer is done through
@@ -177,7 +186,9 @@ void omap_vout_release_vrfb(struct omap_vout_device *vout)
177 186
178 if (vout->vrfb_dma_tx.req_status == DMA_CHAN_ALLOTED) { 187 if (vout->vrfb_dma_tx.req_status == DMA_CHAN_ALLOTED) {
179 vout->vrfb_dma_tx.req_status = DMA_CHAN_NOT_ALLOTED; 188 vout->vrfb_dma_tx.req_status = DMA_CHAN_NOT_ALLOTED;
180 omap_free_dma(vout->vrfb_dma_tx.dma_ch); 189 kfree(vout->vrfb_dma_tx.xt);
190 dmaengine_terminate_sync(vout->vrfb_dma_tx.chan);
191 dma_release_channel(vout->vrfb_dma_tx.chan);
181 } 192 }
182} 193}
183 194
@@ -219,70 +230,84 @@ int omap_vout_vrfb_buffer_setup(struct omap_vout_device *vout,
219} 230}
220 231
221int omap_vout_prepare_vrfb(struct omap_vout_device *vout, 232int omap_vout_prepare_vrfb(struct omap_vout_device *vout,
222 struct videobuf_buffer *vb) 233 struct videobuf_buffer *vb)
223{ 234{
224 dma_addr_t dmabuf; 235 struct dma_async_tx_descriptor *tx;
225 struct vid_vrfb_dma *tx; 236 enum dma_ctrl_flags flags;
237 struct dma_chan *chan = vout->vrfb_dma_tx.chan;
238 struct dma_device *dmadev = chan->device;
239 struct dma_interleaved_template *xt = vout->vrfb_dma_tx.xt;
240 dma_cookie_t cookie;
241 enum dma_status status;
226 enum dss_rotation rotation; 242 enum dss_rotation rotation;
227 u32 dest_frame_index = 0, src_element_index = 0; 243 size_t dst_icg;
228 u32 dest_element_index = 0, src_frame_index = 0; 244 u32 pixsize;
229 u32 elem_count = 0, frame_count = 0, pixsize = 2;
230 245
231 if (!is_rotation_enabled(vout)) 246 if (!is_rotation_enabled(vout))
232 return 0; 247 return 0;
233 248
234 dmabuf = vout->buf_phy_addr[vb->i];
235 /* If rotation is enabled, copy input buffer into VRFB 249 /* If rotation is enabled, copy input buffer into VRFB
236 * memory space using DMA. We are copying input buffer 250 * memory space using DMA. We are copying input buffer
237 * into VRFB memory space of desired angle and DSS will 251 * into VRFB memory space of desired angle and DSS will
238 * read image VRFB memory for 0 degree angle 252 * read image VRFB memory for 0 degree angle
239 */ 253 */
254
240 pixsize = vout->bpp * vout->vrfb_bpp; 255 pixsize = vout->bpp * vout->vrfb_bpp;
241 /* 256 dst_icg = ((MAX_PIXELS_PER_LINE * pixsize) -
242 * DMA transfer in double index mode 257 (vout->pix.width * vout->bpp)) + 1;
243 */ 258
259 xt->src_start = vout->buf_phy_addr[vb->i];
260 xt->dst_start = vout->vrfb_context[vb->i].paddr[0];
261
262 xt->numf = vout->pix.height;
263 xt->frame_size = 1;
264 xt->sgl[0].size = vout->pix.width * vout->bpp;
265 xt->sgl[0].icg = dst_icg;
266
267 xt->dir = DMA_MEM_TO_MEM;
268 xt->src_sgl = false;
269 xt->src_inc = true;
270 xt->dst_sgl = true;
271 xt->dst_inc = true;
272
273 tx = dmadev->device_prep_interleaved_dma(chan, xt, flags);
274 if (tx == NULL) {
275 pr_err("%s: DMA interleaved prep error\n", __func__);
276 return -EINVAL;
277 }
244 278
245 /* Frame index */ 279 tx->callback = omap_vout_vrfb_dma_tx_callback;
246 dest_frame_index = ((MAX_PIXELS_PER_LINE * pixsize) - 280 tx->callback_param = &vout->vrfb_dma_tx;
247 (vout->pix.width * vout->bpp)) + 1; 281
248 282 cookie = dmaengine_submit(tx);
249 /* Source and destination parameters */ 283 if (dma_submit_error(cookie)) {
250 src_element_index = 0; 284 pr_err("%s: dmaengine_submit failed (%d)\n", __func__, cookie);
251 src_frame_index = 0; 285 return -EINVAL;
252 dest_element_index = 1; 286 }
253 /* Number of elements per frame */
254 elem_count = vout->pix.width * vout->bpp;
255 frame_count = vout->pix.height;
256 tx = &vout->vrfb_dma_tx;
257 tx->tx_status = 0;
258 omap_set_dma_transfer_params(tx->dma_ch, OMAP_DMA_DATA_TYPE_S32,
259 (elem_count / 4), frame_count, OMAP_DMA_SYNC_ELEMENT,
260 tx->dev_id, 0x0);
261 /* src_port required only for OMAP1 */
262 omap_set_dma_src_params(tx->dma_ch, 0, OMAP_DMA_AMODE_POST_INC,
263 dmabuf, src_element_index, src_frame_index);
264 /*set dma source burst mode for VRFB */
265 omap_set_dma_src_burst_mode(tx->dma_ch, OMAP_DMA_DATA_BURST_16);
266 rotation = calc_rotation(vout);
267 287
268 /* dest_port required only for OMAP1 */ 288 vout->vrfb_dma_tx.tx_status = 0;
269 omap_set_dma_dest_params(tx->dma_ch, 0, OMAP_DMA_AMODE_DOUBLE_IDX, 289 dma_async_issue_pending(chan);
270 vout->vrfb_context[vb->i].paddr[0], dest_element_index,
271 dest_frame_index);
272 /*set dma dest burst mode for VRFB */
273 omap_set_dma_dest_burst_mode(tx->dma_ch, OMAP_DMA_DATA_BURST_16);
274 omap_dma_set_global_params(DMA_DEFAULT_ARB_RATE, 0x20, 0);
275 290
276 omap_start_dma(tx->dma_ch); 291 wait_event_interruptible_timeout(vout->vrfb_dma_tx.wait,
277 wait_event_interruptible_timeout(tx->wait, tx->tx_status == 1, 292 vout->vrfb_dma_tx.tx_status == 1,
278 VRFB_TX_TIMEOUT); 293 VRFB_TX_TIMEOUT);
279 294
280 if (tx->tx_status == 0) { 295 status = dma_async_is_tx_complete(chan, cookie, NULL, NULL);
281 omap_stop_dma(tx->dma_ch); 296
297 if (vout->vrfb_dma_tx.tx_status == 0) {
298 pr_err("%s: Timeout while waiting for DMA\n", __func__);
299 dmaengine_terminate_sync(chan);
300 return -EINVAL;
301 } else if (status != DMA_COMPLETE) {
302 pr_err("%s: DMA completion %s status\n", __func__,
303 status == DMA_ERROR ? "error" : "busy");
304 dmaengine_terminate_sync(chan);
282 return -EINVAL; 305 return -EINVAL;
283 } 306 }
307
284 /* Store buffers physical address into an array. Addresses 308 /* Store buffers physical address into an array. Addresses
285 * from this array will be used to configure DSS */ 309 * from this array will be used to configure DSS */
310 rotation = calc_rotation(vout);
286 vout->queued_buf_addr[vb->i] = (u8 *) 311 vout->queued_buf_addr[vb->i] = (u8 *)
287 vout->vrfb_context[vb->i].paddr[rotation]; 312 vout->vrfb_context[vb->i].paddr[rotation];
288 return 0; 313 return 0;
diff --git a/drivers/media/platform/omap/omap_voutdef.h b/drivers/media/platform/omap/omap_voutdef.h
index 80c79fabdf95..56b630b1c8b4 100644
--- a/drivers/media/platform/omap/omap_voutdef.h
+++ b/drivers/media/platform/omap/omap_voutdef.h
@@ -14,6 +14,7 @@
14#include <media/v4l2-ctrls.h> 14#include <media/v4l2-ctrls.h>
15#include <video/omapfb_dss.h> 15#include <video/omapfb_dss.h>
16#include <video/omapvrfb.h> 16#include <video/omapvrfb.h>
17#include <linux/dmaengine.h>
17 18
18#define YUYV_BPP 2 19#define YUYV_BPP 2
19#define RGB565_BPP 2 20#define RGB565_BPP 2
@@ -81,8 +82,9 @@ enum vout_rotaion_type {
81 * for VRFB hidden buffer 82 * for VRFB hidden buffer
82 */ 83 */
83struct vid_vrfb_dma { 84struct vid_vrfb_dma {
84 int dev_id; 85 struct dma_chan *chan;
85 int dma_ch; 86 struct dma_interleaved_template *xt;
87
86 int req_status; 88 int req_status;
87 int tx_status; 89 int tx_status;
88 wait_queue_head_t wait; 90 wait_queue_head_t wait;
diff --git a/drivers/media/platform/qcom/venus/core.c b/drivers/media/platform/qcom/venus/core.c
index 776d2bae6979..41eef376eb2d 100644
--- a/drivers/media/platform/qcom/venus/core.c
+++ b/drivers/media/platform/qcom/venus/core.c
@@ -76,7 +76,7 @@ static void venus_sys_error_handler(struct work_struct *work)
76 hfi_core_deinit(core, true); 76 hfi_core_deinit(core, true);
77 hfi_destroy(core); 77 hfi_destroy(core);
78 mutex_lock(&core->lock); 78 mutex_lock(&core->lock);
79 venus_shutdown(&core->dev_fw); 79 venus_shutdown(core->dev);
80 80
81 pm_runtime_put_sync(core->dev); 81 pm_runtime_put_sync(core->dev);
82 82
@@ -84,7 +84,7 @@ static void venus_sys_error_handler(struct work_struct *work)
84 84
85 pm_runtime_get_sync(core->dev); 85 pm_runtime_get_sync(core->dev);
86 86
87 ret |= venus_boot(core->dev, &core->dev_fw, core->res->fwname); 87 ret |= venus_boot(core->dev, core->res->fwname);
88 88
89 ret |= hfi_core_resume(core, true); 89 ret |= hfi_core_resume(core, true);
90 90
@@ -137,7 +137,7 @@ static int venus_clks_enable(struct venus_core *core)
137 137
138 return 0; 138 return 0;
139err: 139err:
140 while (--i) 140 while (i--)
141 clk_disable_unprepare(core->clks[i]); 141 clk_disable_unprepare(core->clks[i]);
142 142
143 return ret; 143 return ret;
@@ -207,7 +207,7 @@ static int venus_probe(struct platform_device *pdev)
207 if (ret < 0) 207 if (ret < 0)
208 goto err_runtime_disable; 208 goto err_runtime_disable;
209 209
210 ret = venus_boot(dev, &core->dev_fw, core->res->fwname); 210 ret = venus_boot(dev, core->res->fwname);
211 if (ret) 211 if (ret)
212 goto err_runtime_disable; 212 goto err_runtime_disable;
213 213
@@ -238,7 +238,7 @@ err_dev_unregister:
238err_core_deinit: 238err_core_deinit:
239 hfi_core_deinit(core, false); 239 hfi_core_deinit(core, false);
240err_venus_shutdown: 240err_venus_shutdown:
241 venus_shutdown(&core->dev_fw); 241 venus_shutdown(dev);
242err_runtime_disable: 242err_runtime_disable:
243 pm_runtime_set_suspended(dev); 243 pm_runtime_set_suspended(dev);
244 pm_runtime_disable(dev); 244 pm_runtime_disable(dev);
@@ -259,7 +259,7 @@ static int venus_remove(struct platform_device *pdev)
259 WARN_ON(ret); 259 WARN_ON(ret);
260 260
261 hfi_destroy(core); 261 hfi_destroy(core);
262 venus_shutdown(&core->dev_fw); 262 venus_shutdown(dev);
263 of_platform_depopulate(dev); 263 of_platform_depopulate(dev);
264 264
265 pm_runtime_put_sync(dev); 265 pm_runtime_put_sync(dev);
@@ -270,8 +270,7 @@ static int venus_remove(struct platform_device *pdev)
270 return ret; 270 return ret;
271} 271}
272 272
273#ifdef CONFIG_PM 273static __maybe_unused int venus_runtime_suspend(struct device *dev)
274static int venus_runtime_suspend(struct device *dev)
275{ 274{
276 struct venus_core *core = dev_get_drvdata(dev); 275 struct venus_core *core = dev_get_drvdata(dev);
277 int ret; 276 int ret;
@@ -283,7 +282,7 @@ static int venus_runtime_suspend(struct device *dev)
283 return ret; 282 return ret;
284} 283}
285 284
286static int venus_runtime_resume(struct device *dev) 285static __maybe_unused int venus_runtime_resume(struct device *dev)
287{ 286{
288 struct venus_core *core = dev_get_drvdata(dev); 287 struct venus_core *core = dev_get_drvdata(dev);
289 int ret; 288 int ret;
@@ -302,7 +301,6 @@ err_clks_disable:
302 venus_clks_disable(core); 301 venus_clks_disable(core);
303 return ret; 302 return ret;
304} 303}
305#endif
306 304
307static const struct dev_pm_ops venus_pm_ops = { 305static const struct dev_pm_ops venus_pm_ops = {
308 SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, 306 SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
diff --git a/drivers/media/platform/qcom/venus/core.h b/drivers/media/platform/qcom/venus/core.h
index e542700eee32..cba092bcb76d 100644
--- a/drivers/media/platform/qcom/venus/core.h
+++ b/drivers/media/platform/qcom/venus/core.h
@@ -101,7 +101,6 @@ struct venus_core {
101 struct device *dev; 101 struct device *dev;
102 struct device *dev_dec; 102 struct device *dev_dec;
103 struct device *dev_enc; 103 struct device *dev_enc;
104 struct device dev_fw;
105 struct mutex lock; 104 struct mutex lock;
106 struct list_head instances; 105 struct list_head instances;
107 atomic_t insts_count; 106 atomic_t insts_count;
diff --git a/drivers/media/platform/qcom/venus/firmware.c b/drivers/media/platform/qcom/venus/firmware.c
index 1b1a4f355918..521d4b36c090 100644
--- a/drivers/media/platform/qcom/venus/firmware.c
+++ b/drivers/media/platform/qcom/venus/firmware.c
@@ -12,97 +12,87 @@
12 * 12 *
13 */ 13 */
14 14
15#include <linux/dma-mapping.h> 15#include <linux/device.h>
16#include <linux/firmware.h> 16#include <linux/firmware.h>
17#include <linux/kernel.h> 17#include <linux/kernel.h>
18#include <linux/io.h>
18#include <linux/of.h> 19#include <linux/of.h>
19#include <linux/of_reserved_mem.h> 20#include <linux/of_address.h>
20#include <linux/slab.h>
21#include <linux/qcom_scm.h> 21#include <linux/qcom_scm.h>
22#include <linux/sizes.h>
22#include <linux/soc/qcom/mdt_loader.h> 23#include <linux/soc/qcom/mdt_loader.h>
23 24
24#include "firmware.h" 25#include "firmware.h"
25 26
26#define VENUS_PAS_ID 9 27#define VENUS_PAS_ID 9
27#define VENUS_FW_MEM_SIZE SZ_8M 28#define VENUS_FW_MEM_SIZE (6 * SZ_1M)
28 29
29static void device_release_dummy(struct device *dev) 30int venus_boot(struct device *dev, const char *fwname)
30{
31 of_reserved_mem_device_release(dev);
32}
33
34int venus_boot(struct device *parent, struct device *fw_dev, const char *fwname)
35{ 31{
36 const struct firmware *mdt; 32 const struct firmware *mdt;
33 struct device_node *node;
37 phys_addr_t mem_phys; 34 phys_addr_t mem_phys;
35 struct resource r;
38 ssize_t fw_size; 36 ssize_t fw_size;
39 size_t mem_size; 37 size_t mem_size;
40 void *mem_va; 38 void *mem_va;
41 int ret; 39 int ret;
42 40
43 if (!qcom_scm_is_available()) 41 if (!IS_ENABLED(CONFIG_QCOM_MDT_LOADER) || !qcom_scm_is_available())
44 return -EPROBE_DEFER; 42 return -EPROBE_DEFER;
45 43
46 fw_dev->parent = parent; 44 node = of_parse_phandle(dev->of_node, "memory-region", 0);
47 fw_dev->release = device_release_dummy; 45 if (!node) {
46 dev_err(dev, "no memory-region specified\n");
47 return -EINVAL;
48 }
48 49
49 ret = dev_set_name(fw_dev, "%s:%s", dev_name(parent), "firmware"); 50 ret = of_address_to_resource(node, 0, &r);
50 if (ret) 51 if (ret)
51 return ret; 52 return ret;
52 53
53 ret = device_register(fw_dev); 54 mem_phys = r.start;
54 if (ret < 0) 55 mem_size = resource_size(&r);
55 return ret;
56 56
57 ret = of_reserved_mem_device_init_by_idx(fw_dev, parent->of_node, 0); 57 if (mem_size < VENUS_FW_MEM_SIZE)
58 if (ret) 58 return -EINVAL;
59 goto err_unreg_device;
60 59
61 mem_size = VENUS_FW_MEM_SIZE; 60 mem_va = memremap(r.start, mem_size, MEMREMAP_WC);
62
63 mem_va = dmam_alloc_coherent(fw_dev, mem_size, &mem_phys, GFP_KERNEL);
64 if (!mem_va) { 61 if (!mem_va) {
65 ret = -ENOMEM; 62 dev_err(dev, "unable to map memory region: %pa+%zx\n",
66 goto err_unreg_device; 63 &r.start, mem_size);
64 return -ENOMEM;
67 } 65 }
68 66
69 ret = request_firmware(&mdt, fwname, fw_dev); 67 ret = request_firmware(&mdt, fwname, dev);
70 if (ret < 0) 68 if (ret < 0)
71 goto err_unreg_device; 69 goto err_unmap;
72 70
73 fw_size = qcom_mdt_get_size(mdt); 71 fw_size = qcom_mdt_get_size(mdt);
74 if (fw_size < 0) { 72 if (fw_size < 0) {
75 ret = fw_size; 73 ret = fw_size;
76 release_firmware(mdt); 74 release_firmware(mdt);
77 goto err_unreg_device; 75 goto err_unmap;
78 } 76 }
79 77
80 ret = qcom_mdt_load(fw_dev, mdt, fwname, VENUS_PAS_ID, mem_va, mem_phys, 78 ret = qcom_mdt_load(dev, mdt, fwname, VENUS_PAS_ID, mem_va, mem_phys,
81 mem_size); 79 mem_size);
82 80
83 release_firmware(mdt); 81 release_firmware(mdt);
84 82
85 if (ret) 83 if (ret)
86 goto err_unreg_device; 84 goto err_unmap;
87 85
88 ret = qcom_scm_pas_auth_and_reset(VENUS_PAS_ID); 86 ret = qcom_scm_pas_auth_and_reset(VENUS_PAS_ID);
89 if (ret) 87 if (ret)
90 goto err_unreg_device; 88 goto err_unmap;
91
92 return 0;
93 89
94err_unreg_device: 90err_unmap:
95 device_unregister(fw_dev); 91 memunmap(mem_va);
96 return ret; 92 return ret;
97} 93}
98 94
99int venus_shutdown(struct device *fw_dev) 95int venus_shutdown(struct device *dev)
100{ 96{
101 int ret; 97 return qcom_scm_pas_shutdown(VENUS_PAS_ID);
102
103 ret = qcom_scm_pas_shutdown(VENUS_PAS_ID);
104 device_unregister(fw_dev);
105 memset(fw_dev, 0, sizeof(*fw_dev));
106
107 return ret;
108} 98}
diff --git a/drivers/media/platform/qcom/venus/firmware.h b/drivers/media/platform/qcom/venus/firmware.h
index f81a98979798..428efb56d339 100644
--- a/drivers/media/platform/qcom/venus/firmware.h
+++ b/drivers/media/platform/qcom/venus/firmware.h
@@ -16,8 +16,7 @@
16 16
17struct device; 17struct device;
18 18
19int venus_boot(struct device *parent, struct device *fw_dev, 19int venus_boot(struct device *dev, const char *fwname);
20 const char *fwname); 20int venus_shutdown(struct device *dev);
21int venus_shutdown(struct device *fw_dev);
22 21
23#endif 22#endif
diff --git a/drivers/media/platform/qcom/venus/hfi_msgs.c b/drivers/media/platform/qcom/venus/hfi_msgs.c
index f8841713e417..a681ae5381d6 100644
--- a/drivers/media/platform/qcom/venus/hfi_msgs.c
+++ b/drivers/media/platform/qcom/venus/hfi_msgs.c
@@ -239,11 +239,12 @@ static void hfi_sys_init_done(struct venus_core *core, struct venus_inst *inst,
239 break; 239 break;
240 } 240 }
241 241
242 if (!error) { 242 if (error)
243 rem_bytes -= read_bytes; 243 break;
244 data += read_bytes; 244
245 num_properties--; 245 rem_bytes -= read_bytes;
246 } 246 data += read_bytes;
247 num_properties--;
247 } 248 }
248 249
249err_no_prop: 250err_no_prop:
diff --git a/drivers/media/platform/sti/bdisp/bdisp-debug.c b/drivers/media/platform/sti/bdisp/bdisp-debug.c
index 7af66860d624..2cc289e4dea1 100644
--- a/drivers/media/platform/sti/bdisp/bdisp-debug.c
+++ b/drivers/media/platform/sti/bdisp/bdisp-debug.c
@@ -104,7 +104,7 @@ static void bdisp_dbg_dump_ins(struct seq_file *s, u32 val)
104 if (val & BLT_INS_IRQ) 104 if (val & BLT_INS_IRQ)
105 seq_puts(s, "IRQ - "); 105 seq_puts(s, "IRQ - ");
106 106
107 seq_puts(s, "\n"); 107 seq_putc(s, '\n');
108} 108}
109 109
110static void bdisp_dbg_dump_tty(struct seq_file *s, u32 val) 110static void bdisp_dbg_dump_tty(struct seq_file *s, u32 val)
@@ -153,7 +153,7 @@ static void bdisp_dbg_dump_tty(struct seq_file *s, u32 val)
153 if (val & BLT_TTY_BIG_END) 153 if (val & BLT_TTY_BIG_END)
154 seq_puts(s, "BigEndian - "); 154 seq_puts(s, "BigEndian - ");
155 155
156 seq_puts(s, "\n"); 156 seq_putc(s, '\n');
157} 157}
158 158
159static void bdisp_dbg_dump_xy(struct seq_file *s, u32 val, char *name) 159static void bdisp_dbg_dump_xy(struct seq_file *s, u32 val, char *name)
@@ -230,7 +230,7 @@ static void bdisp_dbg_dump_sty(struct seq_file *s,
230 seq_puts(s, "BigEndian - "); 230 seq_puts(s, "BigEndian - ");
231 231
232done: 232done:
233 seq_puts(s, "\n"); 233 seq_putc(s, '\n');
234} 234}
235 235
236static void bdisp_dbg_dump_fctl(struct seq_file *s, u32 val) 236static void bdisp_dbg_dump_fctl(struct seq_file *s, u32 val)
@@ -247,7 +247,7 @@ static void bdisp_dbg_dump_fctl(struct seq_file *s, u32 val)
247 else if ((val & BLT_FCTL_HV_SCALE) == BLT_FCTL_HV_SAMPLE) 247 else if ((val & BLT_FCTL_HV_SCALE) == BLT_FCTL_HV_SAMPLE)
248 seq_puts(s, "Sample Chroma"); 248 seq_puts(s, "Sample Chroma");
249 249
250 seq_puts(s, "\n"); 250 seq_putc(s, '\n');
251} 251}
252 252
253static void bdisp_dbg_dump_rsf(struct seq_file *s, u32 val, char *name) 253static void bdisp_dbg_dump_rsf(struct seq_file *s, u32 val, char *name)
@@ -266,7 +266,7 @@ static void bdisp_dbg_dump_rsf(struct seq_file *s, u32 val, char *name)
266 seq_printf(s, "V: %d(6.10) / scale~%dx0.1", inc, 1024 * 10 / inc); 266 seq_printf(s, "V: %d(6.10) / scale~%dx0.1", inc, 1024 * 10 / inc);
267 267
268done: 268done:
269 seq_puts(s, "\n"); 269 seq_putc(s, '\n');
270} 270}
271 271
272static void bdisp_dbg_dump_rzi(struct seq_file *s, u32 val, char *name) 272static void bdisp_dbg_dump_rzi(struct seq_file *s, u32 val, char *name)
@@ -281,7 +281,7 @@ static void bdisp_dbg_dump_rzi(struct seq_file *s, u32 val, char *name)
281 seq_printf(s, "V: init=%d repeat=%d", val & 0x3FF, (val >> 12) & 7); 281 seq_printf(s, "V: init=%d repeat=%d", val & 0x3FF, (val >> 12) & 7);
282 282
283done: 283done:
284 seq_puts(s, "\n"); 284 seq_putc(s, '\n');
285} 285}
286 286
287static void bdisp_dbg_dump_ivmx(struct seq_file *s, 287static void bdisp_dbg_dump_ivmx(struct seq_file *s,
@@ -293,7 +293,7 @@ static void bdisp_dbg_dump_ivmx(struct seq_file *s,
293 seq_printf(s, "IVMX3\t0x%08X\t", c3); 293 seq_printf(s, "IVMX3\t0x%08X\t", c3);
294 294
295 if (!c0 && !c1 && !c2 && !c3) { 295 if (!c0 && !c1 && !c2 && !c3) {
296 seq_puts(s, "\n"); 296 seq_putc(s, '\n');
297 return; 297 return;
298 } 298 }
299 299
diff --git a/drivers/media/platform/vimc/vimc-capture.c b/drivers/media/platform/vimc/vimc-capture.c
index 14cb32e21130..88a1e5670c72 100644
--- a/drivers/media/platform/vimc/vimc-capture.c
+++ b/drivers/media/platform/vimc/vimc-capture.c
@@ -517,21 +517,22 @@ static int vimc_cap_remove(struct platform_device *pdev)
517 return 0; 517 return 0;
518} 518}
519 519
520static const struct platform_device_id vimc_cap_driver_ids[] = {
521 {
522 .name = VIMC_CAP_DRV_NAME,
523 },
524 { }
525};
526
520static struct platform_driver vimc_cap_pdrv = { 527static struct platform_driver vimc_cap_pdrv = {
521 .probe = vimc_cap_probe, 528 .probe = vimc_cap_probe,
522 .remove = vimc_cap_remove, 529 .remove = vimc_cap_remove,
530 .id_table = vimc_cap_driver_ids,
523 .driver = { 531 .driver = {
524 .name = VIMC_CAP_DRV_NAME, 532 .name = VIMC_CAP_DRV_NAME,
525 }, 533 },
526}; 534};
527 535
528static const struct platform_device_id vimc_cap_driver_ids[] = {
529 {
530 .name = VIMC_CAP_DRV_NAME,
531 },
532 { }
533};
534
535module_platform_driver(vimc_cap_pdrv); 536module_platform_driver(vimc_cap_pdrv);
536 537
537MODULE_DEVICE_TABLE(platform, vimc_cap_driver_ids); 538MODULE_DEVICE_TABLE(platform, vimc_cap_driver_ids);
diff --git a/drivers/media/platform/vimc/vimc-debayer.c b/drivers/media/platform/vimc/vimc-debayer.c
index 35b15bd4d61d..033a131f67af 100644
--- a/drivers/media/platform/vimc/vimc-debayer.c
+++ b/drivers/media/platform/vimc/vimc-debayer.c
@@ -577,21 +577,22 @@ static int vimc_deb_remove(struct platform_device *pdev)
577 return 0; 577 return 0;
578} 578}
579 579
580static const struct platform_device_id vimc_deb_driver_ids[] = {
581 {
582 .name = VIMC_DEB_DRV_NAME,
583 },
584 { }
585};
586
580static struct platform_driver vimc_deb_pdrv = { 587static struct platform_driver vimc_deb_pdrv = {
581 .probe = vimc_deb_probe, 588 .probe = vimc_deb_probe,
582 .remove = vimc_deb_remove, 589 .remove = vimc_deb_remove,
590 .id_table = vimc_deb_driver_ids,
583 .driver = { 591 .driver = {
584 .name = VIMC_DEB_DRV_NAME, 592 .name = VIMC_DEB_DRV_NAME,
585 }, 593 },
586}; 594};
587 595
588static const struct platform_device_id vimc_deb_driver_ids[] = {
589 {
590 .name = VIMC_DEB_DRV_NAME,
591 },
592 { }
593};
594
595module_platform_driver(vimc_deb_pdrv); 596module_platform_driver(vimc_deb_pdrv);
596 597
597MODULE_DEVICE_TABLE(platform, vimc_deb_driver_ids); 598MODULE_DEVICE_TABLE(platform, vimc_deb_driver_ids);
diff --git a/drivers/media/platform/vimc/vimc-scaler.c b/drivers/media/platform/vimc/vimc-scaler.c
index fe77505d2679..0a3e086e12f3 100644
--- a/drivers/media/platform/vimc/vimc-scaler.c
+++ b/drivers/media/platform/vimc/vimc-scaler.c
@@ -431,21 +431,22 @@ static int vimc_sca_remove(struct platform_device *pdev)
431 return 0; 431 return 0;
432} 432}
433 433
434static const struct platform_device_id vimc_sca_driver_ids[] = {
435 {
436 .name = VIMC_SCA_DRV_NAME,
437 },
438 { }
439};
440
434static struct platform_driver vimc_sca_pdrv = { 441static struct platform_driver vimc_sca_pdrv = {
435 .probe = vimc_sca_probe, 442 .probe = vimc_sca_probe,
436 .remove = vimc_sca_remove, 443 .remove = vimc_sca_remove,
444 .id_table = vimc_sca_driver_ids,
437 .driver = { 445 .driver = {
438 .name = VIMC_SCA_DRV_NAME, 446 .name = VIMC_SCA_DRV_NAME,
439 }, 447 },
440}; 448};
441 449
442static const struct platform_device_id vimc_sca_driver_ids[] = {
443 {
444 .name = VIMC_SCA_DRV_NAME,
445 },
446 { }
447};
448
449module_platform_driver(vimc_sca_pdrv); 450module_platform_driver(vimc_sca_pdrv);
450 451
451MODULE_DEVICE_TABLE(platform, vimc_sca_driver_ids); 452MODULE_DEVICE_TABLE(platform, vimc_sca_driver_ids);
diff --git a/drivers/media/platform/vimc/vimc-sensor.c b/drivers/media/platform/vimc/vimc-sensor.c
index ebdbbe8c05ed..615c2b18dcfc 100644
--- a/drivers/media/platform/vimc/vimc-sensor.c
+++ b/drivers/media/platform/vimc/vimc-sensor.c
@@ -365,21 +365,22 @@ static int vimc_sen_remove(struct platform_device *pdev)
365 return 0; 365 return 0;
366} 366}
367 367
368static const struct platform_device_id vimc_sen_driver_ids[] = {
369 {
370 .name = VIMC_SEN_DRV_NAME,
371 },
372 { }
373};
374
368static struct platform_driver vimc_sen_pdrv = { 375static struct platform_driver vimc_sen_pdrv = {
369 .probe = vimc_sen_probe, 376 .probe = vimc_sen_probe,
370 .remove = vimc_sen_remove, 377 .remove = vimc_sen_remove,
378 .id_table = vimc_sen_driver_ids,
371 .driver = { 379 .driver = {
372 .name = VIMC_SEN_DRV_NAME, 380 .name = VIMC_SEN_DRV_NAME,
373 }, 381 },
374}; 382};
375 383
376static const struct platform_device_id vimc_sen_driver_ids[] = {
377 {
378 .name = VIMC_SEN_DRV_NAME,
379 },
380 { }
381};
382
383module_platform_driver(vimc_sen_pdrv); 384module_platform_driver(vimc_sen_pdrv);
384 385
385MODULE_DEVICE_TABLE(platform, vimc_sen_driver_ids); 386MODULE_DEVICE_TABLE(platform, vimc_sen_driver_ids);
diff --git a/drivers/media/radio/radio-wl1273.c b/drivers/media/radio/radio-wl1273.c
index 7240223dc15a..17e82a9a0109 100644
--- a/drivers/media/radio/radio-wl1273.c
+++ b/drivers/media/radio/radio-wl1273.c
@@ -610,10 +610,21 @@ static int wl1273_fm_start(struct wl1273_device *radio, int new_mode)
610 } 610 }
611 } 611 }
612 612
613 if (radio->rds_on) 613 if (radio->rds_on) {
614 r = core->write(core, WL1273_RDS_DATA_ENB, 1); 614 r = core->write(core, WL1273_RDS_DATA_ENB, 1);
615 else 615 if (r) {
616 dev_err(dev, "%s: RDS_DATA_ENB ON fails\n",
617 __func__);
618 goto fail;
619 }
620 } else {
616 r = core->write(core, WL1273_RDS_DATA_ENB, 0); 621 r = core->write(core, WL1273_RDS_DATA_ENB, 0);
622 if (r) {
623 dev_err(dev, "%s: RDS_DATA_ENB OFF fails\n",
624 __func__);
625 goto fail;
626 }
627 }
617 } else { 628 } else {
618 dev_warn(dev, "%s: Illegal mode.\n", __func__); 629 dev_warn(dev, "%s: Illegal mode.\n", __func__);
619 } 630 }
diff --git a/drivers/media/rc/ir-lirc-codec.c b/drivers/media/rc/ir-lirc-codec.c
index a30af91710fe..d2223c04e9ad 100644
--- a/drivers/media/rc/ir-lirc-codec.c
+++ b/drivers/media/rc/ir-lirc-codec.c
@@ -266,7 +266,7 @@ static long ir_lirc_ioctl(struct file *filep, unsigned int cmd,
266 if (!dev->rx_resolution) 266 if (!dev->rx_resolution)
267 return -ENOTTY; 267 return -ENOTTY;
268 268
269 val = dev->rx_resolution; 269 val = dev->rx_resolution / 1000;
270 break; 270 break;
271 271
272 case LIRC_SET_WIDEBAND_RECEIVER: 272 case LIRC_SET_WIDEBAND_RECEIVER:
diff --git a/drivers/media/tuners/fc0011.c b/drivers/media/tuners/fc0011.c
index 192b1c7740df..145407dee3db 100644
--- a/drivers/media/tuners/fc0011.c
+++ b/drivers/media/tuners/fc0011.c
@@ -342,6 +342,7 @@ static int fc0011_set_params(struct dvb_frontend *fe)
342 switch (vco_sel) { 342 switch (vco_sel) {
343 default: 343 default:
344 WARN_ON(1); 344 WARN_ON(1);
345 return -EINVAL;
345 case 0: 346 case 0:
346 if (vco_cal < 8) { 347 if (vco_cal < 8) {
347 regs[FC11_REG_VCOSEL] &= ~(FC11_VCOSEL_1 | FC11_VCOSEL_2); 348 regs[FC11_REG_VCOSEL] &= ~(FC11_VCOSEL_1 | FC11_VCOSEL_2);
diff --git a/drivers/media/tuners/mxl5005s.c b/drivers/media/tuners/mxl5005s.c
index 353744fee053..dd59c2c0e4a5 100644
--- a/drivers/media/tuners/mxl5005s.c
+++ b/drivers/media/tuners/mxl5005s.c
@@ -2737,8 +2737,6 @@ static u16 MXL_TuneRF(struct dvb_frontend *fe, u32 RF_Freq)
2737 status += MXL_ControlWrite(fe, TG_LO_DIVVAL, 0x0); 2737 status += MXL_ControlWrite(fe, TG_LO_DIVVAL, 0x0);
2738 status += MXL_ControlWrite(fe, TG_LO_SELVAL, 0x7); 2738 status += MXL_ControlWrite(fe, TG_LO_SELVAL, 0x7);
2739 divider_val = 2 ; 2739 divider_val = 2 ;
2740 Fmax = FmaxBin ;
2741 Fmin = FminBin ;
2742 } 2740 }
2743 2741
2744 /* TG_DIV_VAL */ 2742 /* TG_DIV_VAL */
diff --git a/drivers/media/usb/au0828/au0828-input.c b/drivers/media/usb/au0828/au0828-input.c
index 9ec919c68482..9d82ec0a4b64 100644
--- a/drivers/media/usb/au0828/au0828-input.c
+++ b/drivers/media/usb/au0828/au0828-input.c
@@ -351,7 +351,7 @@ int au0828_rc_register(struct au0828_dev *dev)
351 if (err) 351 if (err)
352 goto error; 352 goto error;
353 353
354 pr_info("Remote controller %s initalized\n", ir->name); 354 pr_info("Remote controller %s initialized\n", ir->name);
355 355
356 return 0; 356 return 0;
357 357
diff --git a/drivers/media/usb/dvb-usb-v2/lmedm04.c b/drivers/media/usb/dvb-usb-v2/lmedm04.c
index 594360a63c18..a91fdad8f8d4 100644
--- a/drivers/media/usb/dvb-usb-v2/lmedm04.c
+++ b/drivers/media/usb/dvb-usb-v2/lmedm04.c
@@ -207,15 +207,13 @@ static int lme2510_stream_restart(struct dvb_usb_device *d)
207 struct lme2510_state *st = d->priv; 207 struct lme2510_state *st = d->priv;
208 u8 all_pids[] = LME_ALL_PIDS; 208 u8 all_pids[] = LME_ALL_PIDS;
209 u8 stream_on[] = LME_ST_ON_W; 209 u8 stream_on[] = LME_ST_ON_W;
210 int ret;
211 u8 rbuff[1]; 210 u8 rbuff[1];
212 if (st->pid_off) 211 if (st->pid_off)
213 ret = lme2510_usb_talk(d, all_pids, sizeof(all_pids), 212 lme2510_usb_talk(d, all_pids, sizeof(all_pids),
214 rbuff, sizeof(rbuff)); 213 rbuff, sizeof(rbuff));
215 /*Restart Stream Command*/ 214 /*Restart Stream Command*/
216 ret = lme2510_usb_talk(d, stream_on, sizeof(stream_on), 215 return lme2510_usb_talk(d, stream_on, sizeof(stream_on),
217 rbuff, sizeof(rbuff)); 216 rbuff, sizeof(rbuff));
218 return ret;
219} 217}
220 218
221static int lme2510_enable_pid(struct dvb_usb_device *d, u8 index, u16 pid_out) 219static int lme2510_enable_pid(struct dvb_usb_device *d, u8 index, u16 pid_out)
diff --git a/drivers/media/usb/dvb-usb/dib0700_core.c b/drivers/media/usb/dvb-usb/dib0700_core.c
index 08acdd32e412..bea1b4764a66 100644
--- a/drivers/media/usb/dvb-usb/dib0700_core.c
+++ b/drivers/media/usb/dvb-usb/dib0700_core.c
@@ -215,13 +215,14 @@ static int dib0700_i2c_xfer_new(struct i2c_adapter *adap, struct i2c_msg *msg,
215 USB_CTRL_GET_TIMEOUT); 215 USB_CTRL_GET_TIMEOUT);
216 if (result < 0) { 216 if (result < 0) {
217 deb_info("i2c read error (status = %d)\n", result); 217 deb_info("i2c read error (status = %d)\n", result);
218 break; 218 goto unlock;
219 } 219 }
220 220
221 if (msg[i].len > sizeof(st->buf)) { 221 if (msg[i].len > sizeof(st->buf)) {
222 deb_info("buffer too small to fit %d bytes\n", 222 deb_info("buffer too small to fit %d bytes\n",
223 msg[i].len); 223 msg[i].len);
224 return -EIO; 224 result = -EIO;
225 goto unlock;
225 } 226 }
226 227
227 memcpy(msg[i].buf, st->buf, msg[i].len); 228 memcpy(msg[i].buf, st->buf, msg[i].len);
@@ -233,8 +234,8 @@ static int dib0700_i2c_xfer_new(struct i2c_adapter *adap, struct i2c_msg *msg,
233 /* Write request */ 234 /* Write request */
234 if (mutex_lock_interruptible(&d->usb_mutex) < 0) { 235 if (mutex_lock_interruptible(&d->usb_mutex) < 0) {
235 err("could not acquire lock"); 236 err("could not acquire lock");
236 mutex_unlock(&d->i2c_mutex); 237 result = -EINTR;
237 return -EINTR; 238 goto unlock;
238 } 239 }
239 st->buf[0] = REQUEST_NEW_I2C_WRITE; 240 st->buf[0] = REQUEST_NEW_I2C_WRITE;
240 st->buf[1] = msg[i].addr << 1; 241 st->buf[1] = msg[i].addr << 1;
@@ -247,7 +248,9 @@ static int dib0700_i2c_xfer_new(struct i2c_adapter *adap, struct i2c_msg *msg,
247 if (msg[i].len > sizeof(st->buf) - 4) { 248 if (msg[i].len > sizeof(st->buf) - 4) {
248 deb_info("i2c message to big: %d\n", 249 deb_info("i2c message to big: %d\n",
249 msg[i].len); 250 msg[i].len);
250 return -EIO; 251 mutex_unlock(&d->usb_mutex);
252 result = -EIO;
253 goto unlock;
251 } 254 }
252 255
253 /* The Actual i2c payload */ 256 /* The Actual i2c payload */
@@ -269,8 +272,11 @@ static int dib0700_i2c_xfer_new(struct i2c_adapter *adap, struct i2c_msg *msg,
269 } 272 }
270 } 273 }
271 } 274 }
275 result = i;
276
277unlock:
272 mutex_unlock(&d->i2c_mutex); 278 mutex_unlock(&d->i2c_mutex);
273 return i; 279 return result;
274} 280}
275 281
276/* 282/*
@@ -281,7 +287,7 @@ static int dib0700_i2c_xfer_legacy(struct i2c_adapter *adap,
281{ 287{
282 struct dvb_usb_device *d = i2c_get_adapdata(adap); 288 struct dvb_usb_device *d = i2c_get_adapdata(adap);
283 struct dib0700_state *st = d->priv; 289 struct dib0700_state *st = d->priv;
284 int i,len; 290 int i, len, result;
285 291
286 if (mutex_lock_interruptible(&d->i2c_mutex) < 0) 292 if (mutex_lock_interruptible(&d->i2c_mutex) < 0)
287 return -EINTR; 293 return -EINTR;
@@ -298,7 +304,8 @@ static int dib0700_i2c_xfer_legacy(struct i2c_adapter *adap,
298 if (msg[i].len > sizeof(st->buf) - 2) { 304 if (msg[i].len > sizeof(st->buf) - 2) {
299 deb_info("i2c xfer to big: %d\n", 305 deb_info("i2c xfer to big: %d\n",
300 msg[i].len); 306 msg[i].len);
301 return -EIO; 307 result = -EIO;
308 goto unlock;
302 } 309 }
303 memcpy(&st->buf[2], msg[i].buf, msg[i].len); 310 memcpy(&st->buf[2], msg[i].buf, msg[i].len);
304 311
@@ -313,13 +320,15 @@ static int dib0700_i2c_xfer_legacy(struct i2c_adapter *adap,
313 if (len <= 0) { 320 if (len <= 0) {
314 deb_info("I2C read failed on address 0x%02x\n", 321 deb_info("I2C read failed on address 0x%02x\n",
315 msg[i].addr); 322 msg[i].addr);
316 break; 323 result = -EIO;
324 goto unlock;
317 } 325 }
318 326
319 if (msg[i + 1].len > sizeof(st->buf)) { 327 if (msg[i + 1].len > sizeof(st->buf)) {
320 deb_info("i2c xfer buffer to small for %d\n", 328 deb_info("i2c xfer buffer to small for %d\n",
321 msg[i].len); 329 msg[i].len);
322 return -EIO; 330 result = -EIO;
331 goto unlock;
323 } 332 }
324 memcpy(msg[i + 1].buf, st->buf, msg[i + 1].len); 333 memcpy(msg[i + 1].buf, st->buf, msg[i + 1].len);
325 334
@@ -328,14 +337,17 @@ static int dib0700_i2c_xfer_legacy(struct i2c_adapter *adap,
328 i++; 337 i++;
329 } else { 338 } else {
330 st->buf[0] = REQUEST_I2C_WRITE; 339 st->buf[0] = REQUEST_I2C_WRITE;
331 if (dib0700_ctrl_wr(d, st->buf, msg[i].len + 2) < 0) 340 result = dib0700_ctrl_wr(d, st->buf, msg[i].len + 2);
332 break; 341 if (result < 0)
342 goto unlock;
333 } 343 }
334 } 344 }
345 result = i;
346unlock:
335 mutex_unlock(&d->usb_mutex); 347 mutex_unlock(&d->usb_mutex);
336 mutex_unlock(&d->i2c_mutex); 348 mutex_unlock(&d->i2c_mutex);
337 349
338 return i; 350 return result;
339} 351}
340 352
341static int dib0700_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msg, 353static int dib0700_i2c_xfer(struct i2c_adapter *adap, struct i2c_msg *msg,
diff --git a/drivers/media/usb/em28xx/em28xx-cards.c b/drivers/media/usb/em28xx/em28xx-cards.c
index 146341aeb782..4c57fd7929cb 100644
--- a/drivers/media/usb/em28xx/em28xx-cards.c
+++ b/drivers/media/usb/em28xx/em28xx-cards.c
@@ -1193,6 +1193,22 @@ struct em28xx_board em28xx_boards[] = {
1193 .i2c_speed = EM28XX_I2C_CLK_WAIT_ENABLE | 1193 .i2c_speed = EM28XX_I2C_CLK_WAIT_ENABLE |
1194 EM28XX_I2C_FREQ_400_KHZ, 1194 EM28XX_I2C_FREQ_400_KHZ,
1195 }, 1195 },
1196 [EM2884_BOARD_TERRATEC_H6] = {
1197 .name = "Terratec Cinergy H6 rev. 2",
1198 .has_dvb = 1,
1199 .ir_codes = RC_MAP_NEC_TERRATEC_CINERGY_XS,
1200#if 0
1201 .tuner_type = TUNER_PHILIPS_TDA8290,
1202 .tuner_addr = 0x41,
1203 .dvb_gpio = terratec_h5_digital, /* FIXME: probably wrong */
1204 .tuner_gpio = terratec_h5_gpio,
1205#else
1206 .tuner_type = TUNER_ABSENT,
1207#endif
1208 .def_i2c_bus = 1,
1209 .i2c_speed = EM28XX_I2C_CLK_WAIT_ENABLE |
1210 EM28XX_I2C_FREQ_400_KHZ,
1211 },
1196 [EM2884_BOARD_HAUPPAUGE_WINTV_HVR_930C] = { 1212 [EM2884_BOARD_HAUPPAUGE_WINTV_HVR_930C] = {
1197 .name = "Hauppauge WinTV HVR 930C", 1213 .name = "Hauppauge WinTV HVR 930C",
1198 .has_dvb = 1, 1214 .has_dvb = 1,
@@ -2496,6 +2512,8 @@ struct usb_device_id em28xx_id_table[] = {
2496 .driver_info = EM2884_BOARD_TERRATEC_H5 }, 2512 .driver_info = EM2884_BOARD_TERRATEC_H5 },
2497 { USB_DEVICE(0x0ccd, 0x10b6), /* H5 Rev. 3 */ 2513 { USB_DEVICE(0x0ccd, 0x10b6), /* H5 Rev. 3 */
2498 .driver_info = EM2884_BOARD_TERRATEC_H5 }, 2514 .driver_info = EM2884_BOARD_TERRATEC_H5 },
2515 { USB_DEVICE(0x0ccd, 0x10b2), /* H6 */
2516 .driver_info = EM2884_BOARD_TERRATEC_H6 },
2499 { USB_DEVICE(0x0ccd, 0x0084), 2517 { USB_DEVICE(0x0ccd, 0x0084),
2500 .driver_info = EM2860_BOARD_TERRATEC_AV350 }, 2518 .driver_info = EM2860_BOARD_TERRATEC_AV350 },
2501 { USB_DEVICE(0x0ccd, 0x0096), 2519 { USB_DEVICE(0x0ccd, 0x0096),
diff --git a/drivers/media/usb/em28xx/em28xx-dvb.c b/drivers/media/usb/em28xx/em28xx-dvb.c
index 82edd37f0d73..4a7db623fe29 100644
--- a/drivers/media/usb/em28xx/em28xx-dvb.c
+++ b/drivers/media/usb/em28xx/em28xx-dvb.c
@@ -1522,6 +1522,7 @@ static int em28xx_dvb_init(struct em28xx *dev)
1522 break; 1522 break;
1523 case EM2884_BOARD_ELGATO_EYETV_HYBRID_2008: 1523 case EM2884_BOARD_ELGATO_EYETV_HYBRID_2008:
1524 case EM2884_BOARD_CINERGY_HTC_STICK: 1524 case EM2884_BOARD_CINERGY_HTC_STICK:
1525 case EM2884_BOARD_TERRATEC_H6:
1525 terratec_htc_stick_init(dev); 1526 terratec_htc_stick_init(dev);
1526 1527
1527 /* attach demodulator */ 1528 /* attach demodulator */
diff --git a/drivers/media/usb/em28xx/em28xx-i2c.c b/drivers/media/usb/em28xx/em28xx-i2c.c
index 8c472d5adb50..60b195c157b8 100644
--- a/drivers/media/usb/em28xx/em28xx-i2c.c
+++ b/drivers/media/usb/em28xx/em28xx-i2c.c
@@ -982,8 +982,6 @@ int em28xx_i2c_register(struct em28xx *dev, unsigned bus,
982 dev_err(&dev->intf->dev, 982 dev_err(&dev->intf->dev,
983 "%s: em28xx_i2_eeprom failed! retval [%d]\n", 983 "%s: em28xx_i2_eeprom failed! retval [%d]\n",
984 __func__, retval); 984 __func__, retval);
985
986 return retval;
987 } 985 }
988 } 986 }
989 987
diff --git a/drivers/media/usb/em28xx/em28xx-input.c b/drivers/media/usb/em28xx/em28xx-input.c
index eba75736e654..ca9673917ad5 100644
--- a/drivers/media/usb/em28xx/em28xx-input.c
+++ b/drivers/media/usb/em28xx/em28xx-input.c
@@ -821,7 +821,7 @@ static int em28xx_ir_init(struct em28xx *dev)
821 if (err) 821 if (err)
822 goto error; 822 goto error;
823 823
824 dev_info(&dev->intf->dev, "Input extension successfully initalized\n"); 824 dev_info(&dev->intf->dev, "Input extension successfully initialized\n");
825 825
826 return 0; 826 return 0;
827 827
diff --git a/drivers/media/usb/em28xx/em28xx.h b/drivers/media/usb/em28xx/em28xx.h
index e8d97d5ec161..88084f24f033 100644
--- a/drivers/media/usb/em28xx/em28xx.h
+++ b/drivers/media/usb/em28xx/em28xx.h
@@ -148,6 +148,7 @@
148#define EM28178_BOARD_PLEX_PX_BCUD 98 148#define EM28178_BOARD_PLEX_PX_BCUD 98
149#define EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_DVB 99 149#define EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_DVB 99
150#define EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_01595 100 150#define EM28174_BOARD_HAUPPAUGE_WINTV_DUALHD_01595 100
151#define EM2884_BOARD_TERRATEC_H6 101
151 152
152/* Limits minimum and default number of buffers */ 153/* Limits minimum and default number of buffers */
153#define EM28XX_MIN_BUF 4 154#define EM28XX_MIN_BUF 4
diff --git a/drivers/media/usb/pulse8-cec/pulse8-cec.c b/drivers/media/usb/pulse8-cec/pulse8-cec.c
index c843070f24c1..f9ed9c950247 100644
--- a/drivers/media/usb/pulse8-cec/pulse8-cec.c
+++ b/drivers/media/usb/pulse8-cec/pulse8-cec.c
@@ -51,7 +51,7 @@ MODULE_DESCRIPTION("Pulse Eight HDMI CEC driver");
51MODULE_LICENSE("GPL"); 51MODULE_LICENSE("GPL");
52 52
53static int debug; 53static int debug;
54static int persistent_config = 1; 54static int persistent_config;
55module_param(debug, int, 0644); 55module_param(debug, int, 0644);
56module_param(persistent_config, int, 0644); 56module_param(persistent_config, int, 0644);
57MODULE_PARM_DESC(debug, "debug level (0-1)"); 57MODULE_PARM_DESC(debug, "debug level (0-1)");
diff --git a/drivers/media/usb/rainshadow-cec/rainshadow-cec.c b/drivers/media/usb/rainshadow-cec/rainshadow-cec.c
index f203699e9c1b..65692576690f 100644
--- a/drivers/media/usb/rainshadow-cec/rainshadow-cec.c
+++ b/drivers/media/usb/rainshadow-cec/rainshadow-cec.c
@@ -116,21 +116,19 @@ static void rain_irq_work_handler(struct work_struct *work)
116 116
117 while (true) { 117 while (true) {
118 unsigned long flags; 118 unsigned long flags;
119 bool exit_loop = false;
120 char data; 119 char data;
121 120
122 spin_lock_irqsave(&rain->buf_lock, flags); 121 spin_lock_irqsave(&rain->buf_lock, flags);
123 if (rain->buf_len) { 122 if (!rain->buf_len) {
124 data = rain->buf[rain->buf_rd_idx]; 123 spin_unlock_irqrestore(&rain->buf_lock, flags);
125 rain->buf_len--; 124 break;
126 rain->buf_rd_idx = (rain->buf_rd_idx + 1) & 0xff;
127 } else {
128 exit_loop = true;
129 } 125 }
130 spin_unlock_irqrestore(&rain->buf_lock, flags);
131 126
132 if (exit_loop) 127 data = rain->buf[rain->buf_rd_idx];
133 break; 128 rain->buf_len--;
129 rain->buf_rd_idx = (rain->buf_rd_idx + 1) & 0xff;
130
131 spin_unlock_irqrestore(&rain->buf_lock, flags);
134 132
135 if (!rain->cmd_started && data != '?') 133 if (!rain->cmd_started && data != '?')
136 continue; 134 continue;
diff --git a/drivers/media/usb/stkwebcam/stk-sensor.c b/drivers/media/usb/stkwebcam/stk-sensor.c
index 985af9933c7e..c1d4505f84ea 100644
--- a/drivers/media/usb/stkwebcam/stk-sensor.c
+++ b/drivers/media/usb/stkwebcam/stk-sensor.c
@@ -41,6 +41,8 @@
41 41
42/* It seems the i2c bus is controlled with these registers */ 42/* It seems the i2c bus is controlled with these registers */
43 43
44#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
45
44#include "stk-webcam.h" 46#include "stk-webcam.h"
45 47
46#define STK_IIC_BASE (0x0200) 48#define STK_IIC_BASE (0x0200)
@@ -239,8 +241,8 @@ static int stk_sensor_outb(struct stk_camera *dev, u8 reg, u8 val)
239 } while (tmpval == 0 && i < MAX_RETRIES); 241 } while (tmpval == 0 && i < MAX_RETRIES);
240 if (tmpval != STK_IIC_STAT_TX_OK) { 242 if (tmpval != STK_IIC_STAT_TX_OK) {
241 if (tmpval) 243 if (tmpval)
242 STK_ERROR("stk_sensor_outb failed, status=0x%02x\n", 244 pr_err("stk_sensor_outb failed, status=0x%02x\n",
243 tmpval); 245 tmpval);
244 return 1; 246 return 1;
245 } else 247 } else
246 return 0; 248 return 0;
@@ -262,8 +264,8 @@ static int stk_sensor_inb(struct stk_camera *dev, u8 reg, u8 *val)
262 } while (tmpval == 0 && i < MAX_RETRIES); 264 } while (tmpval == 0 && i < MAX_RETRIES);
263 if (tmpval != STK_IIC_STAT_RX_OK) { 265 if (tmpval != STK_IIC_STAT_RX_OK) {
264 if (tmpval) 266 if (tmpval)
265 STK_ERROR("stk_sensor_inb failed, status=0x%02x\n", 267 pr_err("stk_sensor_inb failed, status=0x%02x\n",
266 tmpval); 268 tmpval);
267 return 1; 269 return 1;
268 } 270 }
269 271
@@ -366,29 +368,29 @@ int stk_sensor_init(struct stk_camera *dev)
366 if (stk_camera_write_reg(dev, STK_IIC_ENABLE, STK_IIC_ENABLE_YES) 368 if (stk_camera_write_reg(dev, STK_IIC_ENABLE, STK_IIC_ENABLE_YES)
367 || stk_camera_write_reg(dev, STK_IIC_ADDR, SENSOR_ADDRESS) 369 || stk_camera_write_reg(dev, STK_IIC_ADDR, SENSOR_ADDRESS)
368 || stk_sensor_outb(dev, REG_COM7, COM7_RESET)) { 370 || stk_sensor_outb(dev, REG_COM7, COM7_RESET)) {
369 STK_ERROR("Sensor resetting failed\n"); 371 pr_err("Sensor resetting failed\n");
370 return -ENODEV; 372 return -ENODEV;
371 } 373 }
372 msleep(10); 374 msleep(10);
373 /* Read the manufacturer ID: ov = 0x7FA2 */ 375 /* Read the manufacturer ID: ov = 0x7FA2 */
374 if (stk_sensor_inb(dev, REG_MIDH, &idh) 376 if (stk_sensor_inb(dev, REG_MIDH, &idh)
375 || stk_sensor_inb(dev, REG_MIDL, &idl)) { 377 || stk_sensor_inb(dev, REG_MIDL, &idl)) {
376 STK_ERROR("Strange error reading sensor ID\n"); 378 pr_err("Strange error reading sensor ID\n");
377 return -ENODEV; 379 return -ENODEV;
378 } 380 }
379 if (idh != 0x7f || idl != 0xa2) { 381 if (idh != 0x7f || idl != 0xa2) {
380 STK_ERROR("Huh? you don't have a sensor from ovt\n"); 382 pr_err("Huh? you don't have a sensor from ovt\n");
381 return -ENODEV; 383 return -ENODEV;
382 } 384 }
383 if (stk_sensor_inb(dev, REG_PID, &idh) 385 if (stk_sensor_inb(dev, REG_PID, &idh)
384 || stk_sensor_inb(dev, REG_VER, &idl)) { 386 || stk_sensor_inb(dev, REG_VER, &idl)) {
385 STK_ERROR("Could not read sensor model\n"); 387 pr_err("Could not read sensor model\n");
386 return -ENODEV; 388 return -ENODEV;
387 } 389 }
388 stk_sensor_write_regvals(dev, ov_initvals); 390 stk_sensor_write_regvals(dev, ov_initvals);
389 msleep(10); 391 msleep(10);
390 STK_INFO("OmniVision sensor detected, id %02X%02X at address %x\n", 392 pr_info("OmniVision sensor detected, id %02X%02X at address %x\n",
391 idh, idl, SENSOR_ADDRESS); 393 idh, idl, SENSOR_ADDRESS);
392 return 0; 394 return 0;
393} 395}
394 396
@@ -520,7 +522,8 @@ int stk_sensor_configure(struct stk_camera *dev)
520 case MODE_SXGA: com7 = COM7_FMT_SXGA; 522 case MODE_SXGA: com7 = COM7_FMT_SXGA;
521 dummylines = 0; 523 dummylines = 0;
522 break; 524 break;
523 default: STK_ERROR("Unsupported mode %d\n", dev->vsettings.mode); 525 default:
526 pr_err("Unsupported mode %d\n", dev->vsettings.mode);
524 return -EFAULT; 527 return -EFAULT;
525 } 528 }
526 switch (dev->vsettings.palette) { 529 switch (dev->vsettings.palette) {
@@ -544,7 +547,8 @@ int stk_sensor_configure(struct stk_camera *dev)
544 com7 |= COM7_PBAYER; 547 com7 |= COM7_PBAYER;
545 rv = ov_fmt_bayer; 548 rv = ov_fmt_bayer;
546 break; 549 break;
547 default: STK_ERROR("Unsupported colorspace\n"); 550 default:
551 pr_err("Unsupported colorspace\n");
548 return -EFAULT; 552 return -EFAULT;
549 } 553 }
550 /*FIXME sometimes the sensor go to a bad state 554 /*FIXME sometimes the sensor go to a bad state
@@ -564,7 +568,7 @@ int stk_sensor_configure(struct stk_camera *dev)
564 switch (dev->vsettings.mode) { 568 switch (dev->vsettings.mode) {
565 case MODE_VGA: 569 case MODE_VGA:
566 if (stk_sensor_set_hw(dev, 302, 1582, 6, 486)) 570 if (stk_sensor_set_hw(dev, 302, 1582, 6, 486))
567 STK_ERROR("stk_sensor_set_hw failed (VGA)\n"); 571 pr_err("stk_sensor_set_hw failed (VGA)\n");
568 break; 572 break;
569 case MODE_SXGA: 573 case MODE_SXGA:
570 case MODE_CIF: 574 case MODE_CIF:
@@ -572,7 +576,7 @@ int stk_sensor_configure(struct stk_camera *dev)
572 case MODE_QCIF: 576 case MODE_QCIF:
573 /*FIXME These settings seem ignored by the sensor 577 /*FIXME These settings seem ignored by the sensor
574 if (stk_sensor_set_hw(dev, 220, 1500, 10, 1034)) 578 if (stk_sensor_set_hw(dev, 220, 1500, 10, 1034))
575 STK_ERROR("stk_sensor_set_hw failed (SXGA)\n"); 579 pr_err("stk_sensor_set_hw failed (SXGA)\n");
576 */ 580 */
577 break; 581 break;
578 } 582 }
diff --git a/drivers/media/usb/stkwebcam/stk-webcam.c b/drivers/media/usb/stkwebcam/stk-webcam.c
index 6e7fc36b658f..90d4a08cda31 100644
--- a/drivers/media/usb/stkwebcam/stk-webcam.c
+++ b/drivers/media/usb/stkwebcam/stk-webcam.c
@@ -18,6 +18,8 @@
18 * GNU General Public License for more details. 18 * GNU General Public License for more details.
19 */ 19 */
20 20
21#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
22
21#include <linux/module.h> 23#include <linux/module.h>
22#include <linux/init.h> 24#include <linux/init.h>
23#include <linux/kernel.h> 25#include <linux/kernel.h>
@@ -175,15 +177,15 @@ static int stk_start_stream(struct stk_camera *dev)
175 if (!is_present(dev)) 177 if (!is_present(dev))
176 return -ENODEV; 178 return -ENODEV;
177 if (!is_memallocd(dev) || !is_initialised(dev)) { 179 if (!is_memallocd(dev) || !is_initialised(dev)) {
178 STK_ERROR("FIXME: Buffers are not allocated\n"); 180 pr_err("FIXME: Buffers are not allocated\n");
179 return -EFAULT; 181 return -EFAULT;
180 } 182 }
181 ret = usb_set_interface(dev->udev, 0, 5); 183 ret = usb_set_interface(dev->udev, 0, 5);
182 184
183 if (ret < 0) 185 if (ret < 0)
184 STK_ERROR("usb_set_interface failed !\n"); 186 pr_err("usb_set_interface failed !\n");
185 if (stk_sensor_wakeup(dev)) 187 if (stk_sensor_wakeup(dev))
186 STK_ERROR("error awaking the sensor\n"); 188 pr_err("error awaking the sensor\n");
187 189
188 stk_camera_read_reg(dev, 0x0116, &value_116); 190 stk_camera_read_reg(dev, 0x0116, &value_116);
189 stk_camera_read_reg(dev, 0x0117, &value_117); 191 stk_camera_read_reg(dev, 0x0117, &value_117);
@@ -224,9 +226,9 @@ static int stk_stop_stream(struct stk_camera *dev)
224 unset_streaming(dev); 226 unset_streaming(dev);
225 227
226 if (usb_set_interface(dev->udev, 0, 0)) 228 if (usb_set_interface(dev->udev, 0, 0))
227 STK_ERROR("usb_set_interface failed !\n"); 229 pr_err("usb_set_interface failed !\n");
228 if (stk_sensor_sleep(dev)) 230 if (stk_sensor_sleep(dev))
229 STK_ERROR("error suspending the sensor\n"); 231 pr_err("error suspending the sensor\n");
230 } 232 }
231 return 0; 233 return 0;
232} 234}
@@ -313,7 +315,7 @@ static void stk_isoc_handler(struct urb *urb)
313 dev = (struct stk_camera *) urb->context; 315 dev = (struct stk_camera *) urb->context;
314 316
315 if (dev == NULL) { 317 if (dev == NULL) {
316 STK_ERROR("isoc_handler called with NULL device !\n"); 318 pr_err("isoc_handler called with NULL device !\n");
317 return; 319 return;
318 } 320 }
319 321
@@ -326,14 +328,13 @@ static void stk_isoc_handler(struct urb *urb)
326 spin_lock_irqsave(&dev->spinlock, flags); 328 spin_lock_irqsave(&dev->spinlock, flags);
327 329
328 if (urb->status != -EINPROGRESS && urb->status != 0) { 330 if (urb->status != -EINPROGRESS && urb->status != 0) {
329 STK_ERROR("isoc_handler: urb->status == %d\n", urb->status); 331 pr_err("isoc_handler: urb->status == %d\n", urb->status);
330 goto resubmit; 332 goto resubmit;
331 } 333 }
332 334
333 if (list_empty(&dev->sio_avail)) { 335 if (list_empty(&dev->sio_avail)) {
334 /*FIXME Stop streaming after a while */ 336 /*FIXME Stop streaming after a while */
335 (void) (printk_ratelimit() && 337 pr_err_ratelimited("isoc_handler without available buffer!\n");
336 STK_ERROR("isoc_handler without available buffer!\n"));
337 goto resubmit; 338 goto resubmit;
338 } 339 }
339 fb = list_first_entry(&dev->sio_avail, 340 fb = list_first_entry(&dev->sio_avail,
@@ -343,8 +344,8 @@ static void stk_isoc_handler(struct urb *urb)
343 for (i = 0; i < urb->number_of_packets; i++) { 344 for (i = 0; i < urb->number_of_packets; i++) {
344 if (urb->iso_frame_desc[i].status != 0) { 345 if (urb->iso_frame_desc[i].status != 0) {
345 if (urb->iso_frame_desc[i].status != -EXDEV) 346 if (urb->iso_frame_desc[i].status != -EXDEV)
346 STK_ERROR("Frame %d has error %d\n", i, 347 pr_err("Frame %d has error %d\n",
347 urb->iso_frame_desc[i].status); 348 i, urb->iso_frame_desc[i].status);
348 continue; 349 continue;
349 } 350 }
350 framelen = urb->iso_frame_desc[i].actual_length; 351 framelen = urb->iso_frame_desc[i].actual_length;
@@ -368,9 +369,8 @@ static void stk_isoc_handler(struct urb *urb)
368 /* This marks a new frame */ 369 /* This marks a new frame */
369 if (fb->v4lbuf.bytesused != 0 370 if (fb->v4lbuf.bytesused != 0
370 && fb->v4lbuf.bytesused != dev->frame_size) { 371 && fb->v4lbuf.bytesused != dev->frame_size) {
371 (void) (printk_ratelimit() && 372 pr_err_ratelimited("frame %d, bytesused=%d, skipping\n",
372 STK_ERROR("frame %d, bytesused=%d, skipping\n", 373 i, fb->v4lbuf.bytesused);
373 i, fb->v4lbuf.bytesused));
374 fb->v4lbuf.bytesused = 0; 374 fb->v4lbuf.bytesused = 0;
375 fill = fb->buffer; 375 fill = fb->buffer;
376 } else if (fb->v4lbuf.bytesused == dev->frame_size) { 376 } else if (fb->v4lbuf.bytesused == dev->frame_size) {
@@ -395,8 +395,7 @@ static void stk_isoc_handler(struct urb *urb)
395 395
396 /* Our buffer is full !!! */ 396 /* Our buffer is full !!! */
397 if (framelen + fb->v4lbuf.bytesused > dev->frame_size) { 397 if (framelen + fb->v4lbuf.bytesused > dev->frame_size) {
398 (void) (printk_ratelimit() && 398 pr_err_ratelimited("Frame buffer overflow, lost sync\n");
399 STK_ERROR("Frame buffer overflow, lost sync\n"));
400 /*FIXME Do something here? */ 399 /*FIXME Do something here? */
401 continue; 400 continue;
402 } 401 }
@@ -414,8 +413,8 @@ resubmit:
414 urb->dev = dev->udev; 413 urb->dev = dev->udev;
415 ret = usb_submit_urb(urb, GFP_ATOMIC); 414 ret = usb_submit_urb(urb, GFP_ATOMIC);
416 if (ret != 0) { 415 if (ret != 0) {
417 STK_ERROR("Error (%d) re-submitting urb in stk_isoc_handler.\n", 416 pr_err("Error (%d) re-submitting urb in stk_isoc_handler\n",
418 ret); 417 ret);
419 } 418 }
420} 419}
421 420
@@ -433,32 +432,31 @@ static int stk_prepare_iso(struct stk_camera *dev)
433 udev = dev->udev; 432 udev = dev->udev;
434 433
435 if (dev->isobufs) 434 if (dev->isobufs)
436 STK_ERROR("isobufs already allocated. Bad\n"); 435 pr_err("isobufs already allocated. Bad\n");
437 else 436 else
438 dev->isobufs = kcalloc(MAX_ISO_BUFS, sizeof(*dev->isobufs), 437 dev->isobufs = kcalloc(MAX_ISO_BUFS, sizeof(*dev->isobufs),
439 GFP_KERNEL); 438 GFP_KERNEL);
440 if (dev->isobufs == NULL) { 439 if (dev->isobufs == NULL) {
441 STK_ERROR("Unable to allocate iso buffers\n"); 440 pr_err("Unable to allocate iso buffers\n");
442 return -ENOMEM; 441 return -ENOMEM;
443 } 442 }
444 for (i = 0; i < MAX_ISO_BUFS; i++) { 443 for (i = 0; i < MAX_ISO_BUFS; i++) {
445 if (dev->isobufs[i].data == NULL) { 444 if (dev->isobufs[i].data == NULL) {
446 kbuf = kzalloc(ISO_BUFFER_SIZE, GFP_KERNEL); 445 kbuf = kzalloc(ISO_BUFFER_SIZE, GFP_KERNEL);
447 if (kbuf == NULL) { 446 if (kbuf == NULL) {
448 STK_ERROR("Failed to allocate iso buffer %d\n", 447 pr_err("Failed to allocate iso buffer %d\n", i);
449 i);
450 goto isobufs_out; 448 goto isobufs_out;
451 } 449 }
452 dev->isobufs[i].data = kbuf; 450 dev->isobufs[i].data = kbuf;
453 } else 451 } else
454 STK_ERROR("isobuf data already allocated\n"); 452 pr_err("isobuf data already allocated\n");
455 if (dev->isobufs[i].urb == NULL) { 453 if (dev->isobufs[i].urb == NULL) {
456 urb = usb_alloc_urb(ISO_FRAMES_PER_DESC, GFP_KERNEL); 454 urb = usb_alloc_urb(ISO_FRAMES_PER_DESC, GFP_KERNEL);
457 if (urb == NULL) 455 if (urb == NULL)
458 goto isobufs_out; 456 goto isobufs_out;
459 dev->isobufs[i].urb = urb; 457 dev->isobufs[i].urb = urb;
460 } else { 458 } else {
461 STK_ERROR("Killing URB\n"); 459 pr_err("Killing URB\n");
462 usb_kill_urb(dev->isobufs[i].urb); 460 usb_kill_urb(dev->isobufs[i].urb);
463 urb = dev->isobufs[i].urb; 461 urb = dev->isobufs[i].urb;
464 } 462 }
@@ -567,7 +565,7 @@ static int stk_prepare_sio_buffers(struct stk_camera *dev, unsigned n_sbufs)
567{ 565{
568 int i; 566 int i;
569 if (dev->sio_bufs != NULL) 567 if (dev->sio_bufs != NULL)
570 STK_ERROR("sio_bufs already allocated\n"); 568 pr_err("sio_bufs already allocated\n");
571 else { 569 else {
572 dev->sio_bufs = kzalloc(n_sbufs * sizeof(struct stk_sio_buffer), 570 dev->sio_bufs = kzalloc(n_sbufs * sizeof(struct stk_sio_buffer),
573 GFP_KERNEL); 571 GFP_KERNEL);
@@ -690,7 +688,7 @@ static ssize_t stk_read(struct file *fp, char __user *buf,
690 spin_lock_irqsave(&dev->spinlock, flags); 688 spin_lock_irqsave(&dev->spinlock, flags);
691 if (list_empty(&dev->sio_full)) { 689 if (list_empty(&dev->sio_full)) {
692 spin_unlock_irqrestore(&dev->spinlock, flags); 690 spin_unlock_irqrestore(&dev->spinlock, flags);
693 STK_ERROR("BUG: No siobufs ready\n"); 691 pr_err("BUG: No siobufs ready\n");
694 return 0; 692 return 0;
695 } 693 }
696 sbuf = list_first_entry(&dev->sio_full, struct stk_sio_buffer, list); 694 sbuf = list_first_entry(&dev->sio_full, struct stk_sio_buffer, list);
@@ -907,7 +905,7 @@ static int stk_vidioc_g_fmt_vid_cap(struct file *filp,
907 stk_sizes[i].m != dev->vsettings.mode; i++) 905 stk_sizes[i].m != dev->vsettings.mode; i++)
908 ; 906 ;
909 if (i == ARRAY_SIZE(stk_sizes)) { 907 if (i == ARRAY_SIZE(stk_sizes)) {
910 STK_ERROR("ERROR: mode invalid\n"); 908 pr_err("ERROR: mode invalid\n");
911 return -EINVAL; 909 return -EINVAL;
912 } 910 }
913 pix_format->width = stk_sizes[i].w; 911 pix_format->width = stk_sizes[i].w;
@@ -985,7 +983,7 @@ static int stk_setup_format(struct stk_camera *dev)
985 stk_sizes[i].m != dev->vsettings.mode) 983 stk_sizes[i].m != dev->vsettings.mode)
986 i++; 984 i++;
987 if (i == ARRAY_SIZE(stk_sizes)) { 985 if (i == ARRAY_SIZE(stk_sizes)) {
988 STK_ERROR("Something is broken in %s\n", __func__); 986 pr_err("Something is broken in %s\n", __func__);
989 return -EFAULT; 987 return -EFAULT;
990 } 988 }
991 /* This registers controls some timings, not sure of what. */ 989 /* This registers controls some timings, not sure of what. */
@@ -1241,7 +1239,7 @@ static void stk_v4l_dev_release(struct video_device *vd)
1241 struct stk_camera *dev = vdev_to_camera(vd); 1239 struct stk_camera *dev = vdev_to_camera(vd);
1242 1240
1243 if (dev->sio_bufs != NULL || dev->isobufs != NULL) 1241 if (dev->sio_bufs != NULL || dev->isobufs != NULL)
1244 STK_ERROR("We are leaking memory\n"); 1242 pr_err("We are leaking memory\n");
1245 usb_put_intf(dev->interface); 1243 usb_put_intf(dev->interface);
1246 kfree(dev); 1244 kfree(dev);
1247} 1245}
@@ -1264,10 +1262,10 @@ static int stk_register_video_device(struct stk_camera *dev)
1264 video_set_drvdata(&dev->vdev, dev); 1262 video_set_drvdata(&dev->vdev, dev);
1265 err = video_register_device(&dev->vdev, VFL_TYPE_GRABBER, -1); 1263 err = video_register_device(&dev->vdev, VFL_TYPE_GRABBER, -1);
1266 if (err) 1264 if (err)
1267 STK_ERROR("v4l registration failed\n"); 1265 pr_err("v4l registration failed\n");
1268 else 1266 else
1269 STK_INFO("Syntek USB2.0 Camera is now controlling device %s\n", 1267 pr_info("Syntek USB2.0 Camera is now controlling device %s\n",
1270 video_device_node_name(&dev->vdev)); 1268 video_device_node_name(&dev->vdev));
1271 return err; 1269 return err;
1272} 1270}
1273 1271
@@ -1288,7 +1286,7 @@ static int stk_camera_probe(struct usb_interface *interface,
1288 1286
1289 dev = kzalloc(sizeof(struct stk_camera), GFP_KERNEL); 1287 dev = kzalloc(sizeof(struct stk_camera), GFP_KERNEL);
1290 if (dev == NULL) { 1288 if (dev == NULL) {
1291 STK_ERROR("Out of memory !\n"); 1289 pr_err("Out of memory !\n");
1292 return -ENOMEM; 1290 return -ENOMEM;
1293 } 1291 }
1294 err = v4l2_device_register(&interface->dev, &dev->v4l2_dev); 1292 err = v4l2_device_register(&interface->dev, &dev->v4l2_dev);
@@ -1352,7 +1350,7 @@ static int stk_camera_probe(struct usb_interface *interface,
1352 } 1350 }
1353 } 1351 }
1354 if (!dev->isoc_ep) { 1352 if (!dev->isoc_ep) {
1355 STK_ERROR("Could not find isoc-in endpoint"); 1353 pr_err("Could not find isoc-in endpoint\n");
1356 err = -ENODEV; 1354 err = -ENODEV;
1357 goto error; 1355 goto error;
1358 } 1356 }
@@ -1387,8 +1385,8 @@ static void stk_camera_disconnect(struct usb_interface *interface)
1387 1385
1388 wake_up_interruptible(&dev->wait_frame); 1386 wake_up_interruptible(&dev->wait_frame);
1389 1387
1390 STK_INFO("Syntek USB2.0 Camera release resources device %s\n", 1388 pr_info("Syntek USB2.0 Camera release resources device %s\n",
1391 video_device_node_name(&dev->vdev)); 1389 video_device_node_name(&dev->vdev));
1392 1390
1393 video_unregister_device(&dev->vdev); 1391 video_unregister_device(&dev->vdev);
1394 v4l2_ctrl_handler_free(&dev->hdl); 1392 v4l2_ctrl_handler_free(&dev->hdl);
diff --git a/drivers/media/usb/stkwebcam/stk-webcam.h b/drivers/media/usb/stkwebcam/stk-webcam.h
index 0284120ce246..5cecbdc97573 100644
--- a/drivers/media/usb/stkwebcam/stk-webcam.h
+++ b/drivers/media/usb/stkwebcam/stk-webcam.h
@@ -31,12 +31,6 @@
31#define ISO_MAX_FRAME_SIZE 3 * 1024 31#define ISO_MAX_FRAME_SIZE 3 * 1024
32#define ISO_BUFFER_SIZE (ISO_FRAMES_PER_DESC * ISO_MAX_FRAME_SIZE) 32#define ISO_BUFFER_SIZE (ISO_FRAMES_PER_DESC * ISO_MAX_FRAME_SIZE)
33 33
34
35#define PREFIX "stkwebcam: "
36#define STK_INFO(str, args...) printk(KERN_INFO PREFIX str, ##args)
37#define STK_ERROR(str, args...) printk(KERN_ERR PREFIX str, ##args)
38#define STK_WARNING(str, args...) printk(KERN_WARNING PREFIX str, ##args)
39
40struct stk_iso_buf { 34struct stk_iso_buf {
41 void *data; 35 void *data;
42 int length; 36 int length;
diff --git a/drivers/media/v4l2-core/tuner-core.c b/drivers/media/v4l2-core/tuner-core.c
index e48b7c032c95..8db45dfc271b 100644
--- a/drivers/media/v4l2-core/tuner-core.c
+++ b/drivers/media/v4l2-core/tuner-core.c
@@ -43,8 +43,6 @@
43 43
44#define UNSET (-1U) 44#define UNSET (-1U)
45 45
46#define PREFIX (t->i2c->dev.driver->name)
47
48/* 46/*
49 * Driver modprobe parameters 47 * Driver modprobe parameters
50 */ 48 */
diff --git a/drivers/memory/atmel-ebi.c b/drivers/memory/atmel-ebi.c
index 99e644cda4d1..ebf69ff48ae2 100644
--- a/drivers/memory/atmel-ebi.c
+++ b/drivers/memory/atmel-ebi.c
@@ -72,7 +72,7 @@ struct atmel_smc_timing_xlate {
72 { .name = nm, .converter = atmel_smc_cs_conf_set_pulse, .shift = pos} 72 { .name = nm, .converter = atmel_smc_cs_conf_set_pulse, .shift = pos}
73 73
74#define ATMEL_SMC_CYCLE_XLATE(nm, pos) \ 74#define ATMEL_SMC_CYCLE_XLATE(nm, pos) \
75 { .name = nm, .converter = atmel_smc_cs_conf_set_setup, .shift = pos} 75 { .name = nm, .converter = atmel_smc_cs_conf_set_cycle, .shift = pos}
76 76
77static void at91sam9_ebi_get_config(struct atmel_ebi_dev *ebid, 77static void at91sam9_ebi_get_config(struct atmel_ebi_dev *ebid,
78 struct atmel_ebi_dev_config *conf) 78 struct atmel_ebi_dev_config *conf)
@@ -120,12 +120,14 @@ static int atmel_ebi_xslate_smc_timings(struct atmel_ebi_dev *ebid,
120 if (!ret) { 120 if (!ret) {
121 required = true; 121 required = true;
122 ncycles = DIV_ROUND_UP(val, clk_period_ns); 122 ncycles = DIV_ROUND_UP(val, clk_period_ns);
123 if (ncycles > ATMEL_SMC_MODE_TDF_MAX || 123 if (ncycles > ATMEL_SMC_MODE_TDF_MAX) {
124 ncycles < ATMEL_SMC_MODE_TDF_MIN) {
125 ret = -EINVAL; 124 ret = -EINVAL;
126 goto out; 125 goto out;
127 } 126 }
128 127
128 if (ncycles < ATMEL_SMC_MODE_TDF_MIN)
129 ncycles = ATMEL_SMC_MODE_TDF_MIN;
130
129 smcconf->mode |= ATMEL_SMC_MODE_TDF(ncycles); 131 smcconf->mode |= ATMEL_SMC_MODE_TDF(ncycles);
130 } 132 }
131 133
@@ -263,7 +265,7 @@ static int atmel_ebi_xslate_smc_config(struct atmel_ebi_dev *ebid,
263 } 265 }
264 266
265 ret = atmel_ebi_xslate_smc_timings(ebid, np, &conf->smcconf); 267 ret = atmel_ebi_xslate_smc_timings(ebid, np, &conf->smcconf);
266 if (ret) 268 if (ret < 0)
267 return -EINVAL; 269 return -EINVAL;
268 270
269 if ((ret > 0 && !required) || (!ret && required)) { 271 if ((ret > 0 && !required) || (!ret && required)) {
diff --git a/drivers/mfd/atmel-smc.c b/drivers/mfd/atmel-smc.c
index 954cf0f66a31..20cc0ea470fa 100644
--- a/drivers/mfd/atmel-smc.c
+++ b/drivers/mfd/atmel-smc.c
@@ -206,7 +206,7 @@ EXPORT_SYMBOL_GPL(atmel_smc_cs_conf_set_pulse);
206 * parameter 206 * parameter
207 * 207 *
208 * This function encodes the @ncycles value as described in the datasheet 208 * This function encodes the @ncycles value as described in the datasheet
209 * (section "SMC Pulse Register"), and then stores the result in the 209 * (section "SMC Cycle Register"), and then stores the result in the
210 * @conf->setup field at @shift position. 210 * @conf->setup field at @shift position.
211 * 211 *
212 * Returns -EINVAL if @shift is invalid, -ERANGE if @ncycles does not fit in 212 * Returns -EINVAL if @shift is invalid, -ERANGE if @ncycles does not fit in
diff --git a/drivers/mfd/da9062-core.c b/drivers/mfd/da9062-core.c
index fbe0f245ce8e..fe1811523e4a 100644
--- a/drivers/mfd/da9062-core.c
+++ b/drivers/mfd/da9062-core.c
@@ -645,6 +645,9 @@ static const struct regmap_range da9062_aa_readable_ranges[] = {
645 .range_min = DA9062AA_VLDO1_B, 645 .range_min = DA9062AA_VLDO1_B,
646 .range_max = DA9062AA_VLDO4_B, 646 .range_max = DA9062AA_VLDO4_B,
647 }, { 647 }, {
648 .range_min = DA9062AA_BBAT_CONT,
649 .range_max = DA9062AA_BBAT_CONT,
650 }, {
648 .range_min = DA9062AA_INTERFACE, 651 .range_min = DA9062AA_INTERFACE,
649 .range_max = DA9062AA_CONFIG_E, 652 .range_max = DA9062AA_CONFIG_E,
650 }, { 653 }, {
@@ -721,6 +724,9 @@ static const struct regmap_range da9062_aa_writeable_ranges[] = {
721 .range_min = DA9062AA_VLDO1_B, 724 .range_min = DA9062AA_VLDO1_B,
722 .range_max = DA9062AA_VLDO4_B, 725 .range_max = DA9062AA_VLDO4_B,
723 }, { 726 }, {
727 .range_min = DA9062AA_BBAT_CONT,
728 .range_max = DA9062AA_BBAT_CONT,
729 }, {
724 .range_min = DA9062AA_GP_ID_0, 730 .range_min = DA9062AA_GP_ID_0,
725 .range_max = DA9062AA_GP_ID_19, 731 .range_max = DA9062AA_GP_ID_19,
726 }, 732 },
diff --git a/drivers/misc/mei/pci-me.c b/drivers/misc/mei/pci-me.c
index 8621a198a2ce..bac33311f55a 100644
--- a/drivers/misc/mei/pci-me.c
+++ b/drivers/misc/mei/pci-me.c
@@ -216,6 +216,12 @@ static int mei_me_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
216 pci_set_drvdata(pdev, dev); 216 pci_set_drvdata(pdev, dev);
217 217
218 /* 218 /*
219 * MEI requires to resume from runtime suspend mode
220 * in order to perform link reset flow upon system suspend.
221 */
222 pdev->dev_flags |= PCI_DEV_FLAGS_NEEDS_RESUME;
223
224 /*
219 * For not wake-able HW runtime pm framework 225 * For not wake-able HW runtime pm framework
220 * can't be used on pci device level. 226 * can't be used on pci device level.
221 * Use domain runtime pm callbacks instead. 227 * Use domain runtime pm callbacks instead.
diff --git a/drivers/misc/mei/pci-txe.c b/drivers/misc/mei/pci-txe.c
index f811cd524468..e38a5f144373 100644
--- a/drivers/misc/mei/pci-txe.c
+++ b/drivers/misc/mei/pci-txe.c
@@ -138,6 +138,12 @@ static int mei_txe_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
138 pci_set_drvdata(pdev, dev); 138 pci_set_drvdata(pdev, dev);
139 139
140 /* 140 /*
141 * MEI requires to resume from runtime suspend mode
142 * in order to perform link reset flow upon system suspend.
143 */
144 pdev->dev_flags |= PCI_DEV_FLAGS_NEEDS_RESUME;
145
146 /*
141 * For not wake-able HW runtime pm framework 147 * For not wake-able HW runtime pm framework
142 * can't be used on pci device level. 148 * can't be used on pci device level.
143 * Use domain runtime pm callbacks instead. 149 * Use domain runtime pm callbacks instead.
diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c
index 8ac59dc80f23..f1bbfd389367 100644
--- a/drivers/mmc/core/block.c
+++ b/drivers/mmc/core/block.c
@@ -2170,6 +2170,9 @@ static void mmc_blk_remove_req(struct mmc_blk_data *md)
2170 * from being accepted. 2170 * from being accepted.
2171 */ 2171 */
2172 card = md->queue.card; 2172 card = md->queue.card;
2173 spin_lock_irq(md->queue.queue->queue_lock);
2174 queue_flag_set(QUEUE_FLAG_BYPASS, md->queue.queue);
2175 spin_unlock_irq(md->queue.queue->queue_lock);
2173 blk_set_queue_dying(md->queue.queue); 2176 blk_set_queue_dying(md->queue.queue);
2174 mmc_cleanup_queue(&md->queue); 2177 mmc_cleanup_queue(&md->queue);
2175 if (md->disk->flags & GENHD_FL_UP) { 2178 if (md->disk->flags & GENHD_FL_UP) {
diff --git a/drivers/mmc/core/mmc.c b/drivers/mmc/core/mmc.c
index 4ffea14b7eb6..2bae69e39544 100644
--- a/drivers/mmc/core/mmc.c
+++ b/drivers/mmc/core/mmc.c
@@ -1289,7 +1289,7 @@ out_err:
1289static int mmc_select_hs400es(struct mmc_card *card) 1289static int mmc_select_hs400es(struct mmc_card *card)
1290{ 1290{
1291 struct mmc_host *host = card->host; 1291 struct mmc_host *host = card->host;
1292 int err = 0; 1292 int err = -EINVAL;
1293 u8 val; 1293 u8 val;
1294 1294
1295 if (!(host->caps & MMC_CAP_8_BIT_DATA)) { 1295 if (!(host->caps & MMC_CAP_8_BIT_DATA)) {
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index a9dfb26972f2..250dc6ec4c82 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -2957,7 +2957,7 @@ static struct dw_mci_board *dw_mci_parse_dt(struct dw_mci *host)
2957 } 2957 }
2958 2958
2959 /* find out number of slots supported */ 2959 /* find out number of slots supported */
2960 if (device_property_read_u32(dev, "num-slots", &pdata->num_slots)) 2960 if (!device_property_read_u32(dev, "num-slots", &pdata->num_slots))
2961 dev_info(dev, "'num-slots' was deprecated.\n"); 2961 dev_info(dev, "'num-slots' was deprecated.\n");
2962 2962
2963 if (device_property_read_u32(dev, "fifo-depth", &pdata->fifo_depth)) 2963 if (device_property_read_u32(dev, "fifo-depth", &pdata->fifo_depth))
diff --git a/drivers/mmc/host/omap_hsmmc.c b/drivers/mmc/host/omap_hsmmc.c
index 7c12f3715676..2ab4788d021f 100644
--- a/drivers/mmc/host/omap_hsmmc.c
+++ b/drivers/mmc/host/omap_hsmmc.c
@@ -356,9 +356,6 @@ static int omap_hsmmc_set_power(struct omap_hsmmc_host *host, int power_on,
356 struct mmc_host *mmc = host->mmc; 356 struct mmc_host *mmc = host->mmc;
357 int ret = 0; 357 int ret = 0;
358 358
359 if (mmc_pdata(host)->set_power)
360 return mmc_pdata(host)->set_power(host->dev, power_on, vdd);
361
362 /* 359 /*
363 * If we don't see a Vcc regulator, assume it's a fixed 360 * If we don't see a Vcc regulator, assume it's a fixed
364 * voltage always-on regulator. 361 * voltage always-on regulator.
@@ -366,9 +363,6 @@ static int omap_hsmmc_set_power(struct omap_hsmmc_host *host, int power_on,
366 if (IS_ERR(mmc->supply.vmmc)) 363 if (IS_ERR(mmc->supply.vmmc))
367 return 0; 364 return 0;
368 365
369 if (mmc_pdata(host)->before_set_reg)
370 mmc_pdata(host)->before_set_reg(host->dev, power_on, vdd);
371
372 ret = omap_hsmmc_set_pbias(host, false, 0); 366 ret = omap_hsmmc_set_pbias(host, false, 0);
373 if (ret) 367 if (ret)
374 return ret; 368 return ret;
@@ -400,9 +394,6 @@ static int omap_hsmmc_set_power(struct omap_hsmmc_host *host, int power_on,
400 return ret; 394 return ret;
401 } 395 }
402 396
403 if (mmc_pdata(host)->after_set_reg)
404 mmc_pdata(host)->after_set_reg(host->dev, power_on, vdd);
405
406 return 0; 397 return 0;
407 398
408err_set_voltage: 399err_set_voltage:
@@ -469,8 +460,6 @@ static int omap_hsmmc_reg_get(struct omap_hsmmc_host *host)
469 int ret; 460 int ret;
470 struct mmc_host *mmc = host->mmc; 461 struct mmc_host *mmc = host->mmc;
471 462
472 if (mmc_pdata(host)->set_power)
473 return 0;
474 463
475 ret = mmc_regulator_get_supply(mmc); 464 ret = mmc_regulator_get_supply(mmc);
476 if (ret == -EPROBE_DEFER) 465 if (ret == -EPROBE_DEFER)
@@ -2097,7 +2086,7 @@ static int omap_hsmmc_probe(struct platform_device *pdev)
2097 mmc->max_seg_size = mmc->max_req_size; 2086 mmc->max_seg_size = mmc->max_req_size;
2098 2087
2099 mmc->caps |= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED | 2088 mmc->caps |= MMC_CAP_MMC_HIGHSPEED | MMC_CAP_SD_HIGHSPEED |
2100 MMC_CAP_WAIT_WHILE_BUSY | MMC_CAP_ERASE; 2089 MMC_CAP_WAIT_WHILE_BUSY | MMC_CAP_ERASE | MMC_CAP_CMD23;
2101 2090
2102 mmc->caps |= mmc_pdata(host)->caps; 2091 mmc->caps |= mmc_pdata(host)->caps;
2103 if (mmc->caps & MMC_CAP_8_BIT_DATA) 2092 if (mmc->caps & MMC_CAP_8_BIT_DATA)
diff --git a/drivers/mmc/host/sdhci-of-at91.c b/drivers/mmc/host/sdhci-of-at91.c
index 7611fd679f1a..1485530c3592 100644
--- a/drivers/mmc/host/sdhci-of-at91.c
+++ b/drivers/mmc/host/sdhci-of-at91.c
@@ -31,6 +31,7 @@
31 31
32#define SDMMC_MC1R 0x204 32#define SDMMC_MC1R 0x204
33#define SDMMC_MC1R_DDR BIT(3) 33#define SDMMC_MC1R_DDR BIT(3)
34#define SDMMC_MC1R_FCD BIT(7)
34#define SDMMC_CACR 0x230 35#define SDMMC_CACR 0x230
35#define SDMMC_CACR_CAPWREN BIT(0) 36#define SDMMC_CACR_CAPWREN BIT(0)
36#define SDMMC_CACR_KEY (0x46 << 8) 37#define SDMMC_CACR_KEY (0x46 << 8)
@@ -43,6 +44,15 @@ struct sdhci_at91_priv {
43 struct clk *mainck; 44 struct clk *mainck;
44}; 45};
45 46
47static void sdhci_at91_set_force_card_detect(struct sdhci_host *host)
48{
49 u8 mc1r;
50
51 mc1r = readb(host->ioaddr + SDMMC_MC1R);
52 mc1r |= SDMMC_MC1R_FCD;
53 writeb(mc1r, host->ioaddr + SDMMC_MC1R);
54}
55
46static void sdhci_at91_set_clock(struct sdhci_host *host, unsigned int clock) 56static void sdhci_at91_set_clock(struct sdhci_host *host, unsigned int clock)
47{ 57{
48 u16 clk; 58 u16 clk;
@@ -110,10 +120,18 @@ void sdhci_at91_set_uhs_signaling(struct sdhci_host *host, unsigned int timing)
110 sdhci_set_uhs_signaling(host, timing); 120 sdhci_set_uhs_signaling(host, timing);
111} 121}
112 122
123static void sdhci_at91_reset(struct sdhci_host *host, u8 mask)
124{
125 sdhci_reset(host, mask);
126
127 if (host->mmc->caps & MMC_CAP_NONREMOVABLE)
128 sdhci_at91_set_force_card_detect(host);
129}
130
113static const struct sdhci_ops sdhci_at91_sama5d2_ops = { 131static const struct sdhci_ops sdhci_at91_sama5d2_ops = {
114 .set_clock = sdhci_at91_set_clock, 132 .set_clock = sdhci_at91_set_clock,
115 .set_bus_width = sdhci_set_bus_width, 133 .set_bus_width = sdhci_set_bus_width,
116 .reset = sdhci_reset, 134 .reset = sdhci_at91_reset,
117 .set_uhs_signaling = sdhci_at91_set_uhs_signaling, 135 .set_uhs_signaling = sdhci_at91_set_uhs_signaling,
118 .set_power = sdhci_at91_set_power, 136 .set_power = sdhci_at91_set_power,
119}; 137};
@@ -324,6 +342,21 @@ static int sdhci_at91_probe(struct platform_device *pdev)
324 host->quirks &= ~SDHCI_QUIRK_BROKEN_CARD_DETECTION; 342 host->quirks &= ~SDHCI_QUIRK_BROKEN_CARD_DETECTION;
325 } 343 }
326 344
345 /*
346 * If the device attached to the MMC bus is not removable, it is safer
347 * to set the Force Card Detect bit. People often don't connect the
348 * card detect signal and use this pin for another purpose. If the card
349 * detect pin is not muxed to SDHCI controller, a default value is
350 * used. This value can be different from a SoC revision to another
351 * one. Problems come when this default value is not card present. To
352 * avoid this case, if the device is non removable then the card
353 * detection procedure using the SDMCC_CD signal is bypassed.
354 * This bit is reset when a software reset for all command is performed
355 * so we need to implement our own reset function to set back this bit.
356 */
357 if (host->mmc->caps & MMC_CAP_NONREMOVABLE)
358 sdhci_at91_set_force_card_detect(host);
359
327 pm_runtime_put_autosuspend(&pdev->dev); 360 pm_runtime_put_autosuspend(&pdev->dev);
328 361
329 return 0; 362 return 0;
diff --git a/drivers/mmc/host/sunxi-mmc.c b/drivers/mmc/host/sunxi-mmc.c
index d6fa2214aaae..0fb4e4c119e1 100644
--- a/drivers/mmc/host/sunxi-mmc.c
+++ b/drivers/mmc/host/sunxi-mmc.c
@@ -793,8 +793,12 @@ static int sunxi_mmc_clk_set_rate(struct sunxi_mmc_host *host,
793 } 793 }
794 mmc_writel(host, REG_CLKCR, rval); 794 mmc_writel(host, REG_CLKCR, rval);
795 795
796 if (host->cfg->needs_new_timings) 796 if (host->cfg->needs_new_timings) {
797 mmc_writel(host, REG_SD_NTSR, SDXC_2X_TIMING_MODE); 797 /* Don't touch the delay bits */
798 rval = mmc_readl(host, REG_SD_NTSR);
799 rval |= SDXC_2X_TIMING_MODE;
800 mmc_writel(host, REG_SD_NTSR, rval);
801 }
798 802
799 ret = sunxi_mmc_clk_set_phase(host, ios, rate); 803 ret = sunxi_mmc_clk_set_phase(host, ios, rate);
800 if (ret) 804 if (ret)
diff --git a/drivers/mtd/mtd_blkdevs.c b/drivers/mtd/mtd_blkdevs.c
index f336a9b85576..9ec8f033ac5f 100644
--- a/drivers/mtd/mtd_blkdevs.c
+++ b/drivers/mtd/mtd_blkdevs.c
@@ -113,6 +113,7 @@ static blk_status_t do_blktrans_request(struct mtd_blktrans_ops *tr,
113 for (; nsect > 0; nsect--, block++, buf += tr->blksize) 113 for (; nsect > 0; nsect--, block++, buf += tr->blksize)
114 if (tr->writesect(dev, block, buf)) 114 if (tr->writesect(dev, block, buf))
115 return BLK_STS_IOERR; 115 return BLK_STS_IOERR;
116 return BLK_STS_OK;
116 default: 117 default:
117 return BLK_STS_IOERR; 118 return BLK_STS_IOERR;
118 } 119 }
diff --git a/drivers/mtd/nand/atmel/nand-controller.c b/drivers/mtd/nand/atmel/nand-controller.c
index d922a88e407f..2c8baa0c2c4e 100644
--- a/drivers/mtd/nand/atmel/nand-controller.c
+++ b/drivers/mtd/nand/atmel/nand-controller.c
@@ -1201,7 +1201,7 @@ static int atmel_smc_nand_prepare_smcconf(struct atmel_nand *nand,
1201 * tRC < 30ns implies EDO mode. This controller does not support this 1201 * tRC < 30ns implies EDO mode. This controller does not support this
1202 * mode. 1202 * mode.
1203 */ 1203 */
1204 if (conf->timings.sdr.tRC_min < 30) 1204 if (conf->timings.sdr.tRC_min < 30000)
1205 return -ENOTSUPP; 1205 return -ENOTSUPP;
1206 1206
1207 atmel_smc_cs_conf_init(smcconf); 1207 atmel_smc_cs_conf_init(smcconf);
diff --git a/drivers/mtd/nand/atmel/pmecc.c b/drivers/mtd/nand/atmel/pmecc.c
index 55a8ee5306ea..8c210a5776bc 100644
--- a/drivers/mtd/nand/atmel/pmecc.c
+++ b/drivers/mtd/nand/atmel/pmecc.c
@@ -945,6 +945,7 @@ struct atmel_pmecc *devm_atmel_pmecc_get(struct device *userdev)
945 */ 945 */
946 struct platform_device *pdev = to_platform_device(userdev); 946 struct platform_device *pdev = to_platform_device(userdev);
947 const struct atmel_pmecc_caps *caps; 947 const struct atmel_pmecc_caps *caps;
948 const struct of_device_id *match;
948 949
949 /* No PMECC engine available. */ 950 /* No PMECC engine available. */
950 if (!of_property_read_bool(userdev->of_node, 951 if (!of_property_read_bool(userdev->of_node,
@@ -953,21 +954,11 @@ struct atmel_pmecc *devm_atmel_pmecc_get(struct device *userdev)
953 954
954 caps = &at91sam9g45_caps; 955 caps = &at91sam9g45_caps;
955 956
956 /* 957 /* Find the caps associated to the NAND dev node. */
957 * Try to find the NFC subnode and extract the associated caps 958 match = of_match_node(atmel_pmecc_legacy_match,
958 * from there. 959 userdev->of_node);
959 */ 960 if (match && match->data)
960 np = of_find_compatible_node(userdev->of_node, NULL, 961 caps = match->data;
961 "atmel,sama5d3-nfc");
962 if (np) {
963 const struct of_device_id *match;
964
965 match = of_match_node(atmel_pmecc_legacy_match, np);
966 if (match && match->data)
967 caps = match->data;
968
969 of_node_put(np);
970 }
971 962
972 pmecc = atmel_pmecc_create(pdev, caps, 1, 2); 963 pmecc = atmel_pmecc_create(pdev, caps, 1, 2);
973 } 964 }
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index 5fa5ddc94834..c6c18b82f8f4 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -65,8 +65,14 @@ static int nand_ooblayout_ecc_sp(struct mtd_info *mtd, int section,
65 65
66 if (!section) { 66 if (!section) {
67 oobregion->offset = 0; 67 oobregion->offset = 0;
68 oobregion->length = 4; 68 if (mtd->oobsize == 16)
69 oobregion->length = 4;
70 else
71 oobregion->length = 3;
69 } else { 72 } else {
73 if (mtd->oobsize == 8)
74 return -ERANGE;
75
70 oobregion->offset = 6; 76 oobregion->offset = 6;
71 oobregion->length = ecc->total - 4; 77 oobregion->length = ecc->total - 4;
72 } 78 }
@@ -1125,7 +1131,9 @@ static int nand_setup_data_interface(struct nand_chip *chip, int chipnr)
1125 * Ensure the timing mode has been changed on the chip side 1131 * Ensure the timing mode has been changed on the chip side
1126 * before changing timings on the controller side. 1132 * before changing timings on the controller side.
1127 */ 1133 */
1128 if (chip->onfi_version) { 1134 if (chip->onfi_version &&
1135 (le16_to_cpu(chip->onfi_params.opt_cmd) &
1136 ONFI_OPT_CMD_SET_GET_FEATURES)) {
1129 u8 tmode_param[ONFI_SUBFEATURE_PARAM_LEN] = { 1137 u8 tmode_param[ONFI_SUBFEATURE_PARAM_LEN] = {
1130 chip->onfi_timing_mode_default, 1138 chip->onfi_timing_mode_default,
1131 }; 1139 };
@@ -2741,7 +2749,6 @@ static int nand_write_page_syndrome(struct mtd_info *mtd,
2741 * @buf: the data to write 2749 * @buf: the data to write
2742 * @oob_required: must write chip->oob_poi to OOB 2750 * @oob_required: must write chip->oob_poi to OOB
2743 * @page: page number to write 2751 * @page: page number to write
2744 * @cached: cached programming
2745 * @raw: use _raw version of write_page 2752 * @raw: use _raw version of write_page
2746 */ 2753 */
2747static int nand_write_page(struct mtd_info *mtd, struct nand_chip *chip, 2754static int nand_write_page(struct mtd_info *mtd, struct nand_chip *chip,
diff --git a/drivers/mtd/nand/nand_timings.c b/drivers/mtd/nand/nand_timings.c
index f06312df3669..7e36d7d13c26 100644
--- a/drivers/mtd/nand/nand_timings.c
+++ b/drivers/mtd/nand/nand_timings.c
@@ -311,9 +311,9 @@ int onfi_init_data_interface(struct nand_chip *chip,
311 struct nand_sdr_timings *timings = &iface->timings.sdr; 311 struct nand_sdr_timings *timings = &iface->timings.sdr;
312 312
313 /* microseconds -> picoseconds */ 313 /* microseconds -> picoseconds */
314 timings->tPROG_max = 1000000UL * le16_to_cpu(params->t_prog); 314 timings->tPROG_max = 1000000ULL * le16_to_cpu(params->t_prog);
315 timings->tBERS_max = 1000000UL * le16_to_cpu(params->t_bers); 315 timings->tBERS_max = 1000000ULL * le16_to_cpu(params->t_bers);
316 timings->tR_max = 1000000UL * le16_to_cpu(params->t_r); 316 timings->tR_max = 1000000ULL * le16_to_cpu(params->t_r);
317 317
318 /* nanoseconds -> picoseconds */ 318 /* nanoseconds -> picoseconds */
319 timings->tCCS_min = 1000UL * le16_to_cpu(params->t_ccs); 319 timings->tCCS_min = 1000UL * le16_to_cpu(params->t_ccs);
diff --git a/drivers/mtd/nand/sunxi_nand.c b/drivers/mtd/nand/sunxi_nand.c
index d0b6f8f9f297..6abd142b1324 100644
--- a/drivers/mtd/nand/sunxi_nand.c
+++ b/drivers/mtd/nand/sunxi_nand.c
@@ -1728,6 +1728,10 @@ static int sunxi_nfc_setup_data_interface(struct mtd_info *mtd, int csline,
1728 */ 1728 */
1729 chip->clk_rate = NSEC_PER_SEC / min_clk_period; 1729 chip->clk_rate = NSEC_PER_SEC / min_clk_period;
1730 real_clk_rate = clk_round_rate(nfc->mod_clk, chip->clk_rate); 1730 real_clk_rate = clk_round_rate(nfc->mod_clk, chip->clk_rate);
1731 if (real_clk_rate <= 0) {
1732 dev_err(nfc->dev, "Unable to round clk %lu\n", chip->clk_rate);
1733 return -EINVAL;
1734 }
1731 1735
1732 /* 1736 /*
1733 * ONFI specification 3.1, paragraph 4.15.2 dictates that EDO data 1737 * ONFI specification 3.1, paragraph 4.15.2 dictates that EDO data
diff --git a/drivers/mux/Kconfig b/drivers/mux/Kconfig
index 7c754a0f14bb..19e4e904c9bf 100644
--- a/drivers/mux/Kconfig
+++ b/drivers/mux/Kconfig
@@ -2,20 +2,11 @@
2# Multiplexer devices 2# Multiplexer devices
3# 3#
4 4
5menuconfig MULTIPLEXER 5config MULTIPLEXER
6 tristate "Multiplexer subsystem" 6 tristate
7 help
8 Multiplexer controller subsystem. Multiplexers are used in a
9 variety of settings, and this subsystem abstracts their use
10 so that the rest of the kernel sees a common interface. When
11 multiple parallel multiplexers are controlled by one single
12 multiplexer controller, this subsystem also coordinates the
13 multiplexer accesses.
14
15 To compile the subsystem as a module, choose M here: the module will
16 be called mux-core.
17 7
18if MULTIPLEXER 8menu "Multiplexer drivers"
9 depends on MULTIPLEXER
19 10
20config MUX_ADG792A 11config MUX_ADG792A
21 tristate "Analog Devices ADG792A/ADG792G Multiplexers" 12 tristate "Analog Devices ADG792A/ADG792G Multiplexers"
@@ -56,4 +47,4 @@ config MUX_MMIO
56 To compile the driver as a module, choose M here: the module will 47 To compile the driver as a module, choose M here: the module will
57 be called mux-mmio. 48 be called mux-mmio.
58 49
59endif 50endmenu
diff --git a/drivers/mux/mux-core.c b/drivers/mux/mux-core.c
index 90b8995f07cb..2fe96c470112 100644
--- a/drivers/mux/mux-core.c
+++ b/drivers/mux/mux-core.c
@@ -46,7 +46,7 @@ static int __init mux_init(void)
46 46
47static void __exit mux_exit(void) 47static void __exit mux_exit(void)
48{ 48{
49 class_register(&mux_class); 49 class_unregister(&mux_class);
50 ida_destroy(&mux_ida); 50 ida_destroy(&mux_ida);
51} 51}
52 52
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index 14ff622190a5..fc63992ab0e0 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -1569,7 +1569,8 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
1569 new_slave->delay = 0; 1569 new_slave->delay = 0;
1570 new_slave->link_failure_count = 0; 1570 new_slave->link_failure_count = 0;
1571 1571
1572 if (bond_update_speed_duplex(new_slave)) 1572 if (bond_update_speed_duplex(new_slave) &&
1573 bond_needs_speed_duplex(bond))
1573 new_slave->link = BOND_LINK_DOWN; 1574 new_slave->link = BOND_LINK_DOWN;
1574 1575
1575 new_slave->last_rx = jiffies - 1576 new_slave->last_rx = jiffies -
@@ -2050,6 +2051,7 @@ static int bond_miimon_inspect(struct bonding *bond)
2050 continue; 2051 continue;
2051 2052
2052 bond_propose_link_state(slave, BOND_LINK_FAIL); 2053 bond_propose_link_state(slave, BOND_LINK_FAIL);
2054 commit++;
2053 slave->delay = bond->params.downdelay; 2055 slave->delay = bond->params.downdelay;
2054 if (slave->delay) { 2056 if (slave->delay) {
2055 netdev_info(bond->dev, "link status down for %sinterface %s, disabling it in %d ms\n", 2057 netdev_info(bond->dev, "link status down for %sinterface %s, disabling it in %d ms\n",
@@ -2088,6 +2090,7 @@ static int bond_miimon_inspect(struct bonding *bond)
2088 continue; 2090 continue;
2089 2091
2090 bond_propose_link_state(slave, BOND_LINK_BACK); 2092 bond_propose_link_state(slave, BOND_LINK_BACK);
2093 commit++;
2091 slave->delay = bond->params.updelay; 2094 slave->delay = bond->params.updelay;
2092 2095
2093 if (slave->delay) { 2096 if (slave->delay) {
@@ -2138,11 +2141,13 @@ static void bond_miimon_commit(struct bonding *bond)
2138 continue; 2141 continue;
2139 2142
2140 case BOND_LINK_UP: 2143 case BOND_LINK_UP:
2141 if (bond_update_speed_duplex(slave)) { 2144 if (bond_update_speed_duplex(slave) &&
2145 bond_needs_speed_duplex(bond)) {
2142 slave->link = BOND_LINK_DOWN; 2146 slave->link = BOND_LINK_DOWN;
2143 netdev_warn(bond->dev, 2147 if (net_ratelimit())
2144 "failed to get link speed/duplex for %s\n", 2148 netdev_warn(bond->dev,
2145 slave->dev->name); 2149 "failed to get link speed/duplex for %s\n",
2150 slave->dev->name);
2146 continue; 2151 continue;
2147 } 2152 }
2148 bond_set_slave_link_state(slave, BOND_LINK_UP, 2153 bond_set_slave_link_state(slave, BOND_LINK_UP,
@@ -4596,7 +4601,7 @@ static int bond_check_params(struct bond_params *params)
4596 } 4601 }
4597 ad_user_port_key = valptr->value; 4602 ad_user_port_key = valptr->value;
4598 4603
4599 if (bond_mode == BOND_MODE_TLB) { 4604 if ((bond_mode == BOND_MODE_TLB) || (bond_mode == BOND_MODE_ALB)) {
4600 bond_opt_initstr(&newval, "default"); 4605 bond_opt_initstr(&newval, "default");
4601 valptr = bond_opt_parse(bond_opt_get(BOND_OPT_TLB_DYNAMIC_LB), 4606 valptr = bond_opt_parse(bond_opt_get(BOND_OPT_TLB_DYNAMIC_LB),
4602 &newval); 4607 &newval);
diff --git a/drivers/net/dsa/b53/b53_common.c b/drivers/net/dsa/b53/b53_common.c
index e68d368e20ac..7f36d3e3c98b 100644
--- a/drivers/net/dsa/b53/b53_common.c
+++ b/drivers/net/dsa/b53/b53_common.c
@@ -1665,6 +1665,7 @@ static const struct b53_chip_data b53_switch_chips[] = {
1665 .dev_name = "BCM53125", 1665 .dev_name = "BCM53125",
1666 .vlans = 4096, 1666 .vlans = 4096,
1667 .enabled_ports = 0xff, 1667 .enabled_ports = 0xff,
1668 .arl_entries = 4,
1668 .cpu_port = B53_CPU_PORT, 1669 .cpu_port = B53_CPU_PORT,
1669 .vta_regs = B53_VTA_REGS, 1670 .vta_regs = B53_VTA_REGS,
1670 .duplex_reg = B53_DUPLEX_STAT_GE, 1671 .duplex_reg = B53_DUPLEX_STAT_GE,
diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
index 1e46418a3b74..264b281eb86b 100644
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
@@ -625,6 +625,44 @@ static void mt7530_adjust_link(struct dsa_switch *ds, int port,
625 * all finished. 625 * all finished.
626 */ 626 */
627 mt7623_pad_clk_setup(ds); 627 mt7623_pad_clk_setup(ds);
628 } else {
629 u16 lcl_adv = 0, rmt_adv = 0;
630 u8 flowctrl;
631 u32 mcr = PMCR_USERP_LINK | PMCR_FORCE_MODE;
632
633 switch (phydev->speed) {
634 case SPEED_1000:
635 mcr |= PMCR_FORCE_SPEED_1000;
636 break;
637 case SPEED_100:
638 mcr |= PMCR_FORCE_SPEED_100;
639 break;
640 };
641
642 if (phydev->link)
643 mcr |= PMCR_FORCE_LNK;
644
645 if (phydev->duplex) {
646 mcr |= PMCR_FORCE_FDX;
647
648 if (phydev->pause)
649 rmt_adv = LPA_PAUSE_CAP;
650 if (phydev->asym_pause)
651 rmt_adv |= LPA_PAUSE_ASYM;
652
653 if (phydev->advertising & ADVERTISED_Pause)
654 lcl_adv |= ADVERTISE_PAUSE_CAP;
655 if (phydev->advertising & ADVERTISED_Asym_Pause)
656 lcl_adv |= ADVERTISE_PAUSE_ASYM;
657
658 flowctrl = mii_resolve_flowctrl_fdx(lcl_adv, rmt_adv);
659
660 if (flowctrl & FLOW_CTRL_TX)
661 mcr |= PMCR_TX_FC_EN;
662 if (flowctrl & FLOW_CTRL_RX)
663 mcr |= PMCR_RX_FC_EN;
664 }
665 mt7530_write(priv, MT7530_PMCR_P(port), mcr);
628 } 666 }
629} 667}
630 668
diff --git a/drivers/net/dsa/mt7530.h b/drivers/net/dsa/mt7530.h
index b83d76b99802..74db9822eb40 100644
--- a/drivers/net/dsa/mt7530.h
+++ b/drivers/net/dsa/mt7530.h
@@ -151,6 +151,7 @@ enum mt7530_stp_state {
151#define PMCR_TX_FC_EN BIT(5) 151#define PMCR_TX_FC_EN BIT(5)
152#define PMCR_RX_FC_EN BIT(4) 152#define PMCR_RX_FC_EN BIT(4)
153#define PMCR_FORCE_SPEED_1000 BIT(3) 153#define PMCR_FORCE_SPEED_1000 BIT(3)
154#define PMCR_FORCE_SPEED_100 BIT(2)
154#define PMCR_FORCE_FDX BIT(1) 155#define PMCR_FORCE_FDX BIT(1)
155#define PMCR_FORCE_LNK BIT(0) 156#define PMCR_FORCE_LNK BIT(0)
156#define PMCR_COMMON_LINK (PMCR_IFG_XMIT(1) | PMCR_MAC_MODE | \ 157#define PMCR_COMMON_LINK (PMCR_IFG_XMIT(1) | PMCR_MAC_MODE | \
diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
index 53b088166c28..5bcdd33101b0 100644
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
@@ -3178,6 +3178,7 @@ static const struct mv88e6xxx_ops mv88e6390x_ops = {
3178 .port_set_jumbo_size = mv88e6165_port_set_jumbo_size, 3178 .port_set_jumbo_size = mv88e6165_port_set_jumbo_size,
3179 .port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting, 3179 .port_egress_rate_limiting = mv88e6097_port_egress_rate_limiting,
3180 .port_pause_limit = mv88e6390_port_pause_limit, 3180 .port_pause_limit = mv88e6390_port_pause_limit,
3181 .port_set_cmode = mv88e6390x_port_set_cmode,
3181 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit, 3182 .port_disable_learn_limit = mv88e6xxx_port_disable_learn_limit,
3182 .port_disable_pri_override = mv88e6xxx_port_disable_pri_override, 3183 .port_disable_pri_override = mv88e6xxx_port_disable_pri_override,
3183 .stats_snapshot = mv88e6390_g1_stats_snapshot, 3184 .stats_snapshot = mv88e6390_g1_stats_snapshot,
diff --git a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
index d3906f6b01bd..1d307f2def2d 100644
--- a/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
+++ b/drivers/net/ethernet/apm/xgene/xgene_enet_main.c
@@ -1787,14 +1787,16 @@ static int xgene_enet_get_resources(struct xgene_enet_pdata *pdata)
1787 1787
1788 pdata->clk = devm_clk_get(&pdev->dev, NULL); 1788 pdata->clk = devm_clk_get(&pdev->dev, NULL);
1789 if (IS_ERR(pdata->clk)) { 1789 if (IS_ERR(pdata->clk)) {
1790 /* Abort if the clock is defined but couldn't be retrived. 1790 if (pdata->phy_mode != PHY_INTERFACE_MODE_SGMII) {
1791 * Always abort if the clock is missing on DT system as 1791 /* Abort if the clock is defined but couldn't be
1792 * the driver can't cope with this case. 1792 * retrived. Always abort if the clock is missing on
1793 */ 1793 * DT system as the driver can't cope with this case.
1794 if (PTR_ERR(pdata->clk) != -ENOENT || dev->of_node) 1794 */
1795 return PTR_ERR(pdata->clk); 1795 if (PTR_ERR(pdata->clk) != -ENOENT || dev->of_node)
1796 /* Firmware may have set up the clock already. */ 1796 return PTR_ERR(pdata->clk);
1797 dev_info(dev, "clocks have been setup already\n"); 1797 /* Firmware may have set up the clock already. */
1798 dev_info(dev, "clocks have been setup already\n");
1799 }
1798 } 1800 }
1799 1801
1800 if (pdata->phy_mode != PHY_INTERFACE_MODE_XGMII) 1802 if (pdata->phy_mode != PHY_INTERFACE_MODE_XGMII)
diff --git a/drivers/net/ethernet/aurora/nb8800.c b/drivers/net/ethernet/aurora/nb8800.c
index 041cfb7952f8..e94159507847 100644
--- a/drivers/net/ethernet/aurora/nb8800.c
+++ b/drivers/net/ethernet/aurora/nb8800.c
@@ -609,7 +609,7 @@ static void nb8800_mac_config(struct net_device *dev)
609 mac_mode |= HALF_DUPLEX; 609 mac_mode |= HALF_DUPLEX;
610 610
611 if (gigabit) { 611 if (gigabit) {
612 if (priv->phy_mode == PHY_INTERFACE_MODE_RGMII) 612 if (phy_interface_is_rgmii(dev->phydev))
613 mac_mode |= RGMII_MODE; 613 mac_mode |= RGMII_MODE;
614 614
615 mac_mode |= GMAC_MODE; 615 mac_mode |= GMAC_MODE;
@@ -1268,11 +1268,10 @@ static int nb8800_tangox_init(struct net_device *dev)
1268 break; 1268 break;
1269 1269
1270 case PHY_INTERFACE_MODE_RGMII: 1270 case PHY_INTERFACE_MODE_RGMII:
1271 pad_mode = PAD_MODE_RGMII; 1271 case PHY_INTERFACE_MODE_RGMII_ID:
1272 break; 1272 case PHY_INTERFACE_MODE_RGMII_RXID:
1273
1274 case PHY_INTERFACE_MODE_RGMII_TXID: 1273 case PHY_INTERFACE_MODE_RGMII_TXID:
1275 pad_mode = PAD_MODE_RGMII | PAD_MODE_GTX_CLK_DELAY; 1274 pad_mode = PAD_MODE_RGMII;
1276 break; 1275 break;
1277 1276
1278 default: 1277 default:
diff --git a/drivers/net/ethernet/broadcom/b44.c b/drivers/net/ethernet/broadcom/b44.c
index f411936b744c..a1125d10c825 100644
--- a/drivers/net/ethernet/broadcom/b44.c
+++ b/drivers/net/ethernet/broadcom/b44.c
@@ -2368,6 +2368,7 @@ static int b44_init_one(struct ssb_device *sdev,
2368 bp->msg_enable = netif_msg_init(b44_debug, B44_DEF_MSG_ENABLE); 2368 bp->msg_enable = netif_msg_init(b44_debug, B44_DEF_MSG_ENABLE);
2369 2369
2370 spin_lock_init(&bp->lock); 2370 spin_lock_init(&bp->lock);
2371 u64_stats_init(&bp->hw_stats.syncp);
2371 2372
2372 bp->rx_pending = B44_DEF_RX_RING_PENDING; 2373 bp->rx_pending = B44_DEF_RX_RING_PENDING;
2373 bp->tx_pending = B44_DEF_TX_RING_PENDING; 2374 bp->tx_pending = B44_DEF_TX_RING_PENDING;
diff --git a/drivers/net/ethernet/broadcom/bcmsysport.c b/drivers/net/ethernet/broadcom/bcmsysport.c
index 5333601f855f..dc3052751bc1 100644
--- a/drivers/net/ethernet/broadcom/bcmsysport.c
+++ b/drivers/net/ethernet/broadcom/bcmsysport.c
@@ -449,6 +449,10 @@ static void bcm_sysport_get_stats(struct net_device *dev,
449 p = (char *)&dev->stats; 449 p = (char *)&dev->stats;
450 else 450 else
451 p = (char *)priv; 451 p = (char *)priv;
452
453 if (priv->is_lite && !bcm_sysport_lite_stat_valid(s->type))
454 continue;
455
452 p += s->stat_offset; 456 p += s->stat_offset;
453 data[j] = *(unsigned long *)p; 457 data[j] = *(unsigned long *)p;
454 j++; 458 j++;
diff --git a/drivers/net/ethernet/broadcom/bgmac-platform.c b/drivers/net/ethernet/broadcom/bgmac-platform.c
index 73aca97a96bc..d937083db9a4 100644
--- a/drivers/net/ethernet/broadcom/bgmac-platform.c
+++ b/drivers/net/ethernet/broadcom/bgmac-platform.c
@@ -50,11 +50,14 @@ static u32 platform_bgmac_idm_read(struct bgmac *bgmac, u16 offset)
50 50
51static void platform_bgmac_idm_write(struct bgmac *bgmac, u16 offset, u32 value) 51static void platform_bgmac_idm_write(struct bgmac *bgmac, u16 offset, u32 value)
52{ 52{
53 return writel(value, bgmac->plat.idm_base + offset); 53 writel(value, bgmac->plat.idm_base + offset);
54} 54}
55 55
56static bool platform_bgmac_clk_enabled(struct bgmac *bgmac) 56static bool platform_bgmac_clk_enabled(struct bgmac *bgmac)
57{ 57{
58 if (!bgmac->plat.idm_base)
59 return true;
60
58 if ((bgmac_idm_read(bgmac, BCMA_IOCTL) & BGMAC_CLK_EN) != BGMAC_CLK_EN) 61 if ((bgmac_idm_read(bgmac, BCMA_IOCTL) & BGMAC_CLK_EN) != BGMAC_CLK_EN)
59 return false; 62 return false;
60 if (bgmac_idm_read(bgmac, BCMA_RESET_CTL) & BCMA_RESET_CTL_RESET) 63 if (bgmac_idm_read(bgmac, BCMA_RESET_CTL) & BCMA_RESET_CTL_RESET)
@@ -66,6 +69,9 @@ static void platform_bgmac_clk_enable(struct bgmac *bgmac, u32 flags)
66{ 69{
67 u32 val; 70 u32 val;
68 71
72 if (!bgmac->plat.idm_base)
73 return;
74
69 /* The Reset Control register only contains a single bit to show if the 75 /* The Reset Control register only contains a single bit to show if the
70 * controller is currently in reset. Do a sanity check here, just in 76 * controller is currently in reset. Do a sanity check here, just in
71 * case the bootloader happened to leave the device in reset. 77 * case the bootloader happened to leave the device in reset.
@@ -180,6 +186,7 @@ static int bgmac_probe(struct platform_device *pdev)
180 bgmac->feature_flags |= BGMAC_FEAT_CMDCFG_SR_REV4; 186 bgmac->feature_flags |= BGMAC_FEAT_CMDCFG_SR_REV4;
181 bgmac->feature_flags |= BGMAC_FEAT_TX_MASK_SETUP; 187 bgmac->feature_flags |= BGMAC_FEAT_TX_MASK_SETUP;
182 bgmac->feature_flags |= BGMAC_FEAT_RX_MASK_SETUP; 188 bgmac->feature_flags |= BGMAC_FEAT_RX_MASK_SETUP;
189 bgmac->feature_flags |= BGMAC_FEAT_IDM_MASK;
183 190
184 bgmac->dev = &pdev->dev; 191 bgmac->dev = &pdev->dev;
185 bgmac->dma_dev = &pdev->dev; 192 bgmac->dma_dev = &pdev->dev;
@@ -207,15 +214,13 @@ static int bgmac_probe(struct platform_device *pdev)
207 return PTR_ERR(bgmac->plat.base); 214 return PTR_ERR(bgmac->plat.base);
208 215
209 regs = platform_get_resource_byname(pdev, IORESOURCE_MEM, "idm_base"); 216 regs = platform_get_resource_byname(pdev, IORESOURCE_MEM, "idm_base");
210 if (!regs) { 217 if (regs) {
211 dev_err(&pdev->dev, "Unable to obtain idm resource\n"); 218 bgmac->plat.idm_base = devm_ioremap_resource(&pdev->dev, regs);
212 return -EINVAL; 219 if (IS_ERR(bgmac->plat.idm_base))
220 return PTR_ERR(bgmac->plat.idm_base);
221 bgmac->feature_flags &= ~BGMAC_FEAT_IDM_MASK;
213 } 222 }
214 223
215 bgmac->plat.idm_base = devm_ioremap_resource(&pdev->dev, regs);
216 if (IS_ERR(bgmac->plat.idm_base))
217 return PTR_ERR(bgmac->plat.idm_base);
218
219 regs = platform_get_resource_byname(pdev, IORESOURCE_MEM, "nicpm_base"); 224 regs = platform_get_resource_byname(pdev, IORESOURCE_MEM, "nicpm_base");
220 if (regs) { 225 if (regs) {
221 bgmac->plat.nicpm_base = devm_ioremap_resource(&pdev->dev, 226 bgmac->plat.nicpm_base = devm_ioremap_resource(&pdev->dev,
diff --git a/drivers/net/ethernet/broadcom/bgmac.c b/drivers/net/ethernet/broadcom/bgmac.c
index ba4d2e145bb9..48d672b204a4 100644
--- a/drivers/net/ethernet/broadcom/bgmac.c
+++ b/drivers/net/ethernet/broadcom/bgmac.c
@@ -622,9 +622,11 @@ static int bgmac_dma_alloc(struct bgmac *bgmac)
622 BUILD_BUG_ON(BGMAC_MAX_TX_RINGS > ARRAY_SIZE(ring_base)); 622 BUILD_BUG_ON(BGMAC_MAX_TX_RINGS > ARRAY_SIZE(ring_base));
623 BUILD_BUG_ON(BGMAC_MAX_RX_RINGS > ARRAY_SIZE(ring_base)); 623 BUILD_BUG_ON(BGMAC_MAX_RX_RINGS > ARRAY_SIZE(ring_base));
624 624
625 if (!(bgmac_idm_read(bgmac, BCMA_IOST) & BCMA_IOST_DMA64)) { 625 if (!(bgmac->feature_flags & BGMAC_FEAT_IDM_MASK)) {
626 dev_err(bgmac->dev, "Core does not report 64-bit DMA\n"); 626 if (!(bgmac_idm_read(bgmac, BCMA_IOST) & BCMA_IOST_DMA64)) {
627 return -ENOTSUPP; 627 dev_err(bgmac->dev, "Core does not report 64-bit DMA\n");
628 return -ENOTSUPP;
629 }
628 } 630 }
629 631
630 for (i = 0; i < BGMAC_MAX_TX_RINGS; i++) { 632 for (i = 0; i < BGMAC_MAX_TX_RINGS; i++) {
@@ -855,9 +857,11 @@ static void bgmac_mac_speed(struct bgmac *bgmac)
855static void bgmac_miiconfig(struct bgmac *bgmac) 857static void bgmac_miiconfig(struct bgmac *bgmac)
856{ 858{
857 if (bgmac->feature_flags & BGMAC_FEAT_FORCE_SPEED_2500) { 859 if (bgmac->feature_flags & BGMAC_FEAT_FORCE_SPEED_2500) {
858 bgmac_idm_write(bgmac, BCMA_IOCTL, 860 if (!(bgmac->feature_flags & BGMAC_FEAT_IDM_MASK)) {
859 bgmac_idm_read(bgmac, BCMA_IOCTL) | 0x40 | 861 bgmac_idm_write(bgmac, BCMA_IOCTL,
860 BGMAC_BCMA_IOCTL_SW_CLKEN); 862 bgmac_idm_read(bgmac, BCMA_IOCTL) |
863 0x40 | BGMAC_BCMA_IOCTL_SW_CLKEN);
864 }
861 bgmac->mac_speed = SPEED_2500; 865 bgmac->mac_speed = SPEED_2500;
862 bgmac->mac_duplex = DUPLEX_FULL; 866 bgmac->mac_duplex = DUPLEX_FULL;
863 bgmac_mac_speed(bgmac); 867 bgmac_mac_speed(bgmac);
@@ -874,11 +878,36 @@ static void bgmac_miiconfig(struct bgmac *bgmac)
874 } 878 }
875} 879}
876 880
881static void bgmac_chip_reset_idm_config(struct bgmac *bgmac)
882{
883 u32 iost;
884
885 iost = bgmac_idm_read(bgmac, BCMA_IOST);
886 if (bgmac->feature_flags & BGMAC_FEAT_IOST_ATTACHED)
887 iost &= ~BGMAC_BCMA_IOST_ATTACHED;
888
889 /* 3GMAC: for BCM4707 & BCM47094, only do core reset at bgmac_probe() */
890 if (!(bgmac->feature_flags & BGMAC_FEAT_NO_RESET)) {
891 u32 flags = 0;
892
893 if (iost & BGMAC_BCMA_IOST_ATTACHED) {
894 flags = BGMAC_BCMA_IOCTL_SW_CLKEN;
895 if (!bgmac->has_robosw)
896 flags |= BGMAC_BCMA_IOCTL_SW_RESET;
897 }
898 bgmac_clk_enable(bgmac, flags);
899 }
900
901 if (iost & BGMAC_BCMA_IOST_ATTACHED && !bgmac->has_robosw)
902 bgmac_idm_write(bgmac, BCMA_IOCTL,
903 bgmac_idm_read(bgmac, BCMA_IOCTL) &
904 ~BGMAC_BCMA_IOCTL_SW_RESET);
905}
906
877/* http://bcm-v4.sipsolutions.net/mac-gbit/gmac/chipreset */ 907/* http://bcm-v4.sipsolutions.net/mac-gbit/gmac/chipreset */
878static void bgmac_chip_reset(struct bgmac *bgmac) 908static void bgmac_chip_reset(struct bgmac *bgmac)
879{ 909{
880 u32 cmdcfg_sr; 910 u32 cmdcfg_sr;
881 u32 iost;
882 int i; 911 int i;
883 912
884 if (bgmac_clk_enabled(bgmac)) { 913 if (bgmac_clk_enabled(bgmac)) {
@@ -899,20 +928,8 @@ static void bgmac_chip_reset(struct bgmac *bgmac)
899 /* TODO: Clear software multicast filter list */ 928 /* TODO: Clear software multicast filter list */
900 } 929 }
901 930
902 iost = bgmac_idm_read(bgmac, BCMA_IOST); 931 if (!(bgmac->feature_flags & BGMAC_FEAT_IDM_MASK))
903 if (bgmac->feature_flags & BGMAC_FEAT_IOST_ATTACHED) 932 bgmac_chip_reset_idm_config(bgmac);
904 iost &= ~BGMAC_BCMA_IOST_ATTACHED;
905
906 /* 3GMAC: for BCM4707 & BCM47094, only do core reset at bgmac_probe() */
907 if (!(bgmac->feature_flags & BGMAC_FEAT_NO_RESET)) {
908 u32 flags = 0;
909 if (iost & BGMAC_BCMA_IOST_ATTACHED) {
910 flags = BGMAC_BCMA_IOCTL_SW_CLKEN;
911 if (!bgmac->has_robosw)
912 flags |= BGMAC_BCMA_IOCTL_SW_RESET;
913 }
914 bgmac_clk_enable(bgmac, flags);
915 }
916 933
917 /* Request Misc PLL for corerev > 2 */ 934 /* Request Misc PLL for corerev > 2 */
918 if (bgmac->feature_flags & BGMAC_FEAT_MISC_PLL_REQ) { 935 if (bgmac->feature_flags & BGMAC_FEAT_MISC_PLL_REQ) {
@@ -970,11 +987,6 @@ static void bgmac_chip_reset(struct bgmac *bgmac)
970 BGMAC_CHIPCTL_7_IF_TYPE_RGMII); 987 BGMAC_CHIPCTL_7_IF_TYPE_RGMII);
971 } 988 }
972 989
973 if (iost & BGMAC_BCMA_IOST_ATTACHED && !bgmac->has_robosw)
974 bgmac_idm_write(bgmac, BCMA_IOCTL,
975 bgmac_idm_read(bgmac, BCMA_IOCTL) &
976 ~BGMAC_BCMA_IOCTL_SW_RESET);
977
978 /* http://bcm-v4.sipsolutions.net/mac-gbit/gmac/gmac_reset 990 /* http://bcm-v4.sipsolutions.net/mac-gbit/gmac/gmac_reset
979 * Specs don't say about using BGMAC_CMDCFG_SR, but in this routine 991 * Specs don't say about using BGMAC_CMDCFG_SR, but in this routine
980 * BGMAC_CMDCFG is read _after_ putting chip in a reset. So it has to 992 * BGMAC_CMDCFG is read _after_ putting chip in a reset. So it has to
@@ -1497,8 +1509,10 @@ int bgmac_enet_probe(struct bgmac *bgmac)
1497 bgmac_clk_enable(bgmac, 0); 1509 bgmac_clk_enable(bgmac, 0);
1498 1510
1499 /* This seems to be fixing IRQ by assigning OOB #6 to the core */ 1511 /* This seems to be fixing IRQ by assigning OOB #6 to the core */
1500 if (bgmac->feature_flags & BGMAC_FEAT_IRQ_ID_OOB_6) 1512 if (!(bgmac->feature_flags & BGMAC_FEAT_IDM_MASK)) {
1501 bgmac_idm_write(bgmac, BCMA_OOB_SEL_OUT_A30, 0x86); 1513 if (bgmac->feature_flags & BGMAC_FEAT_IRQ_ID_OOB_6)
1514 bgmac_idm_write(bgmac, BCMA_OOB_SEL_OUT_A30, 0x86);
1515 }
1502 1516
1503 bgmac_chip_reset(bgmac); 1517 bgmac_chip_reset(bgmac);
1504 1518
diff --git a/drivers/net/ethernet/broadcom/bgmac.h b/drivers/net/ethernet/broadcom/bgmac.h
index c1818766c501..443d57b10264 100644
--- a/drivers/net/ethernet/broadcom/bgmac.h
+++ b/drivers/net/ethernet/broadcom/bgmac.h
@@ -425,6 +425,7 @@
425#define BGMAC_FEAT_CC4_IF_SW_TYPE BIT(17) 425#define BGMAC_FEAT_CC4_IF_SW_TYPE BIT(17)
426#define BGMAC_FEAT_CC4_IF_SW_TYPE_RGMII BIT(18) 426#define BGMAC_FEAT_CC4_IF_SW_TYPE_RGMII BIT(18)
427#define BGMAC_FEAT_CC7_IF_TYPE_RGMII BIT(19) 427#define BGMAC_FEAT_CC7_IF_TYPE_RGMII BIT(19)
428#define BGMAC_FEAT_IDM_MASK BIT(20)
428 429
429struct bgmac_slot_info { 430struct bgmac_slot_info {
430 union { 431 union {
diff --git a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c
index 43423744fdfa..1e33abde4a3e 100644
--- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c
+++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c
@@ -2886,7 +2886,7 @@ static int bnx2x_test_nvram_tbl(struct bnx2x *bp,
2886 2886
2887static int bnx2x_test_nvram(struct bnx2x *bp) 2887static int bnx2x_test_nvram(struct bnx2x *bp)
2888{ 2888{
2889 const struct crc_pair nvram_tbl[] = { 2889 static const struct crc_pair nvram_tbl[] = {
2890 { 0, 0x14 }, /* bootstrap */ 2890 { 0, 0x14 }, /* bootstrap */
2891 { 0x14, 0xec }, /* dir */ 2891 { 0x14, 0xec }, /* dir */
2892 { 0x100, 0x350 }, /* manuf_info */ 2892 { 0x100, 0x350 }, /* manuf_info */
@@ -2895,7 +2895,7 @@ static int bnx2x_test_nvram(struct bnx2x *bp)
2895 { 0x708, 0x70 }, /* manuf_key_info */ 2895 { 0x708, 0x70 }, /* manuf_key_info */
2896 { 0, 0 } 2896 { 0, 0 }
2897 }; 2897 };
2898 const struct crc_pair nvram_tbl2[] = { 2898 static const struct crc_pair nvram_tbl2[] = {
2899 { 0x7e8, 0x350 }, /* manuf_info2 */ 2899 { 0x7e8, 0x350 }, /* manuf_info2 */
2900 { 0xb38, 0xf0 }, /* feature_info */ 2900 { 0xb38, 0xf0 }, /* feature_info */
2901 { 0, 0 } 2901 { 0, 0 }
@@ -3162,7 +3162,8 @@ static void bnx2x_get_strings(struct net_device *dev, u32 stringset, u8 *buf)
3162 if (is_multi(bp)) { 3162 if (is_multi(bp)) {
3163 for_each_eth_queue(bp, i) { 3163 for_each_eth_queue(bp, i) {
3164 memset(queue_name, 0, sizeof(queue_name)); 3164 memset(queue_name, 0, sizeof(queue_name));
3165 sprintf(queue_name, "%d", i); 3165 snprintf(queue_name, sizeof(queue_name),
3166 "%d", i);
3166 for (j = 0; j < BNX2X_NUM_Q_STATS; j++) 3167 for (j = 0; j < BNX2X_NUM_Q_STATS; j++)
3167 snprintf(buf + (k + j)*ETH_GSTRING_LEN, 3168 snprintf(buf + (k + j)*ETH_GSTRING_LEN,
3168 ETH_GSTRING_LEN, 3169 ETH_GSTRING_LEN,
diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
index daca1c9d254b..a981c4ee9d72 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
@@ -1202,12 +1202,21 @@ static struct enet_cb *bcmgenet_get_txcb(struct bcmgenet_priv *priv,
1202 return tx_cb_ptr; 1202 return tx_cb_ptr;
1203} 1203}
1204 1204
1205/* Simple helper to free a control block's resources */ 1205static struct enet_cb *bcmgenet_put_txcb(struct bcmgenet_priv *priv,
1206static void bcmgenet_free_cb(struct enet_cb *cb) 1206 struct bcmgenet_tx_ring *ring)
1207{ 1207{
1208 dev_kfree_skb_any(cb->skb); 1208 struct enet_cb *tx_cb_ptr;
1209 cb->skb = NULL; 1209
1210 dma_unmap_addr_set(cb, dma_addr, 0); 1210 tx_cb_ptr = ring->cbs;
1211 tx_cb_ptr += ring->write_ptr - ring->cb_ptr;
1212
1213 /* Rewinding local write pointer */
1214 if (ring->write_ptr == ring->cb_ptr)
1215 ring->write_ptr = ring->end_ptr;
1216 else
1217 ring->write_ptr--;
1218
1219 return tx_cb_ptr;
1211} 1220}
1212 1221
1213static inline void bcmgenet_rx_ring16_int_disable(struct bcmgenet_rx_ring *ring) 1222static inline void bcmgenet_rx_ring16_int_disable(struct bcmgenet_rx_ring *ring)
@@ -1260,18 +1269,72 @@ static inline void bcmgenet_tx_ring_int_disable(struct bcmgenet_tx_ring *ring)
1260 INTRL2_CPU_MASK_SET); 1269 INTRL2_CPU_MASK_SET);
1261} 1270}
1262 1271
1272/* Simple helper to free a transmit control block's resources
1273 * Returns an skb when the last transmit control block associated with the
1274 * skb is freed. The skb should be freed by the caller if necessary.
1275 */
1276static struct sk_buff *bcmgenet_free_tx_cb(struct device *dev,
1277 struct enet_cb *cb)
1278{
1279 struct sk_buff *skb;
1280
1281 skb = cb->skb;
1282
1283 if (skb) {
1284 cb->skb = NULL;
1285 if (cb == GENET_CB(skb)->first_cb)
1286 dma_unmap_single(dev, dma_unmap_addr(cb, dma_addr),
1287 dma_unmap_len(cb, dma_len),
1288 DMA_TO_DEVICE);
1289 else
1290 dma_unmap_page(dev, dma_unmap_addr(cb, dma_addr),
1291 dma_unmap_len(cb, dma_len),
1292 DMA_TO_DEVICE);
1293 dma_unmap_addr_set(cb, dma_addr, 0);
1294
1295 if (cb == GENET_CB(skb)->last_cb)
1296 return skb;
1297
1298 } else if (dma_unmap_addr(cb, dma_addr)) {
1299 dma_unmap_page(dev,
1300 dma_unmap_addr(cb, dma_addr),
1301 dma_unmap_len(cb, dma_len),
1302 DMA_TO_DEVICE);
1303 dma_unmap_addr_set(cb, dma_addr, 0);
1304 }
1305
1306 return 0;
1307}
1308
1309/* Simple helper to free a receive control block's resources */
1310static struct sk_buff *bcmgenet_free_rx_cb(struct device *dev,
1311 struct enet_cb *cb)
1312{
1313 struct sk_buff *skb;
1314
1315 skb = cb->skb;
1316 cb->skb = NULL;
1317
1318 if (dma_unmap_addr(cb, dma_addr)) {
1319 dma_unmap_single(dev, dma_unmap_addr(cb, dma_addr),
1320 dma_unmap_len(cb, dma_len), DMA_FROM_DEVICE);
1321 dma_unmap_addr_set(cb, dma_addr, 0);
1322 }
1323
1324 return skb;
1325}
1326
1263/* Unlocked version of the reclaim routine */ 1327/* Unlocked version of the reclaim routine */
1264static unsigned int __bcmgenet_tx_reclaim(struct net_device *dev, 1328static unsigned int __bcmgenet_tx_reclaim(struct net_device *dev,
1265 struct bcmgenet_tx_ring *ring) 1329 struct bcmgenet_tx_ring *ring)
1266{ 1330{
1267 struct bcmgenet_priv *priv = netdev_priv(dev); 1331 struct bcmgenet_priv *priv = netdev_priv(dev);
1268 struct device *kdev = &priv->pdev->dev; 1332 unsigned int txbds_processed = 0;
1269 struct enet_cb *tx_cb_ptr;
1270 unsigned int pkts_compl = 0;
1271 unsigned int bytes_compl = 0; 1333 unsigned int bytes_compl = 0;
1272 unsigned int c_index; 1334 unsigned int pkts_compl = 0;
1273 unsigned int txbds_ready; 1335 unsigned int txbds_ready;
1274 unsigned int txbds_processed = 0; 1336 unsigned int c_index;
1337 struct sk_buff *skb;
1275 1338
1276 /* Clear status before servicing to reduce spurious interrupts */ 1339 /* Clear status before servicing to reduce spurious interrupts */
1277 if (ring->index == DESC_INDEX) 1340 if (ring->index == DESC_INDEX)
@@ -1292,21 +1355,12 @@ static unsigned int __bcmgenet_tx_reclaim(struct net_device *dev,
1292 1355
1293 /* Reclaim transmitted buffers */ 1356 /* Reclaim transmitted buffers */
1294 while (txbds_processed < txbds_ready) { 1357 while (txbds_processed < txbds_ready) {
1295 tx_cb_ptr = &priv->tx_cbs[ring->clean_ptr]; 1358 skb = bcmgenet_free_tx_cb(&priv->pdev->dev,
1296 if (tx_cb_ptr->skb) { 1359 &priv->tx_cbs[ring->clean_ptr]);
1360 if (skb) {
1297 pkts_compl++; 1361 pkts_compl++;
1298 bytes_compl += GENET_CB(tx_cb_ptr->skb)->bytes_sent; 1362 bytes_compl += GENET_CB(skb)->bytes_sent;
1299 dma_unmap_single(kdev, 1363 dev_kfree_skb_any(skb);
1300 dma_unmap_addr(tx_cb_ptr, dma_addr),
1301 dma_unmap_len(tx_cb_ptr, dma_len),
1302 DMA_TO_DEVICE);
1303 bcmgenet_free_cb(tx_cb_ptr);
1304 } else if (dma_unmap_addr(tx_cb_ptr, dma_addr)) {
1305 dma_unmap_page(kdev,
1306 dma_unmap_addr(tx_cb_ptr, dma_addr),
1307 dma_unmap_len(tx_cb_ptr, dma_len),
1308 DMA_TO_DEVICE);
1309 dma_unmap_addr_set(tx_cb_ptr, dma_addr, 0);
1310 } 1364 }
1311 1365
1312 txbds_processed++; 1366 txbds_processed++;
@@ -1380,95 +1434,6 @@ static void bcmgenet_tx_reclaim_all(struct net_device *dev)
1380 bcmgenet_tx_reclaim(dev, &priv->tx_rings[DESC_INDEX]); 1434 bcmgenet_tx_reclaim(dev, &priv->tx_rings[DESC_INDEX]);
1381} 1435}
1382 1436
1383/* Transmits a single SKB (either head of a fragment or a single SKB)
1384 * caller must hold priv->lock
1385 */
1386static int bcmgenet_xmit_single(struct net_device *dev,
1387 struct sk_buff *skb,
1388 u16 dma_desc_flags,
1389 struct bcmgenet_tx_ring *ring)
1390{
1391 struct bcmgenet_priv *priv = netdev_priv(dev);
1392 struct device *kdev = &priv->pdev->dev;
1393 struct enet_cb *tx_cb_ptr;
1394 unsigned int skb_len;
1395 dma_addr_t mapping;
1396 u32 length_status;
1397 int ret;
1398
1399 tx_cb_ptr = bcmgenet_get_txcb(priv, ring);
1400
1401 if (unlikely(!tx_cb_ptr))
1402 BUG();
1403
1404 tx_cb_ptr->skb = skb;
1405
1406 skb_len = skb_headlen(skb);
1407
1408 mapping = dma_map_single(kdev, skb->data, skb_len, DMA_TO_DEVICE);
1409 ret = dma_mapping_error(kdev, mapping);
1410 if (ret) {
1411 priv->mib.tx_dma_failed++;
1412 netif_err(priv, tx_err, dev, "Tx DMA map failed\n");
1413 dev_kfree_skb(skb);
1414 return ret;
1415 }
1416
1417 dma_unmap_addr_set(tx_cb_ptr, dma_addr, mapping);
1418 dma_unmap_len_set(tx_cb_ptr, dma_len, skb_len);
1419 length_status = (skb_len << DMA_BUFLENGTH_SHIFT) | dma_desc_flags |
1420 (priv->hw_params->qtag_mask << DMA_TX_QTAG_SHIFT) |
1421 DMA_TX_APPEND_CRC;
1422
1423 if (skb->ip_summed == CHECKSUM_PARTIAL)
1424 length_status |= DMA_TX_DO_CSUM;
1425
1426 dmadesc_set(priv, tx_cb_ptr->bd_addr, mapping, length_status);
1427
1428 return 0;
1429}
1430
1431/* Transmit a SKB fragment */
1432static int bcmgenet_xmit_frag(struct net_device *dev,
1433 skb_frag_t *frag,
1434 u16 dma_desc_flags,
1435 struct bcmgenet_tx_ring *ring)
1436{
1437 struct bcmgenet_priv *priv = netdev_priv(dev);
1438 struct device *kdev = &priv->pdev->dev;
1439 struct enet_cb *tx_cb_ptr;
1440 unsigned int frag_size;
1441 dma_addr_t mapping;
1442 int ret;
1443
1444 tx_cb_ptr = bcmgenet_get_txcb(priv, ring);
1445
1446 if (unlikely(!tx_cb_ptr))
1447 BUG();
1448
1449 tx_cb_ptr->skb = NULL;
1450
1451 frag_size = skb_frag_size(frag);
1452
1453 mapping = skb_frag_dma_map(kdev, frag, 0, frag_size, DMA_TO_DEVICE);
1454 ret = dma_mapping_error(kdev, mapping);
1455 if (ret) {
1456 priv->mib.tx_dma_failed++;
1457 netif_err(priv, tx_err, dev, "%s: Tx DMA map failed\n",
1458 __func__);
1459 return ret;
1460 }
1461
1462 dma_unmap_addr_set(tx_cb_ptr, dma_addr, mapping);
1463 dma_unmap_len_set(tx_cb_ptr, dma_len, frag_size);
1464
1465 dmadesc_set(priv, tx_cb_ptr->bd_addr, mapping,
1466 (frag_size << DMA_BUFLENGTH_SHIFT) | dma_desc_flags |
1467 (priv->hw_params->qtag_mask << DMA_TX_QTAG_SHIFT));
1468
1469 return 0;
1470}
1471
1472/* Reallocate the SKB to put enough headroom in front of it and insert 1437/* Reallocate the SKB to put enough headroom in front of it and insert
1473 * the transmit checksum offsets in the descriptors 1438 * the transmit checksum offsets in the descriptors
1474 */ 1439 */
@@ -1535,11 +1500,16 @@ static struct sk_buff *bcmgenet_put_tx_csum(struct net_device *dev,
1535static netdev_tx_t bcmgenet_xmit(struct sk_buff *skb, struct net_device *dev) 1500static netdev_tx_t bcmgenet_xmit(struct sk_buff *skb, struct net_device *dev)
1536{ 1501{
1537 struct bcmgenet_priv *priv = netdev_priv(dev); 1502 struct bcmgenet_priv *priv = netdev_priv(dev);
1503 struct device *kdev = &priv->pdev->dev;
1538 struct bcmgenet_tx_ring *ring = NULL; 1504 struct bcmgenet_tx_ring *ring = NULL;
1505 struct enet_cb *tx_cb_ptr;
1539 struct netdev_queue *txq; 1506 struct netdev_queue *txq;
1540 unsigned long flags = 0; 1507 unsigned long flags = 0;
1541 int nr_frags, index; 1508 int nr_frags, index;
1542 u16 dma_desc_flags; 1509 dma_addr_t mapping;
1510 unsigned int size;
1511 skb_frag_t *frag;
1512 u32 len_stat;
1543 int ret; 1513 int ret;
1544 int i; 1514 int i;
1545 1515
@@ -1592,29 +1562,53 @@ static netdev_tx_t bcmgenet_xmit(struct sk_buff *skb, struct net_device *dev)
1592 } 1562 }
1593 } 1563 }
1594 1564
1595 dma_desc_flags = DMA_SOP; 1565 for (i = 0; i <= nr_frags; i++) {
1596 if (nr_frags == 0) 1566 tx_cb_ptr = bcmgenet_get_txcb(priv, ring);
1597 dma_desc_flags |= DMA_EOP;
1598 1567
1599 /* Transmit single SKB or head of fragment list */ 1568 if (unlikely(!tx_cb_ptr))
1600 ret = bcmgenet_xmit_single(dev, skb, dma_desc_flags, ring); 1569 BUG();
1601 if (ret) { 1570
1602 ret = NETDEV_TX_OK; 1571 if (!i) {
1603 goto out; 1572 /* Transmit single SKB or head of fragment list */
1604 } 1573 GENET_CB(skb)->first_cb = tx_cb_ptr;
1574 size = skb_headlen(skb);
1575 mapping = dma_map_single(kdev, skb->data, size,
1576 DMA_TO_DEVICE);
1577 } else {
1578 /* xmit fragment */
1579 frag = &skb_shinfo(skb)->frags[i - 1];
1580 size = skb_frag_size(frag);
1581 mapping = skb_frag_dma_map(kdev, frag, 0, size,
1582 DMA_TO_DEVICE);
1583 }
1605 1584
1606 /* xmit fragment */ 1585 ret = dma_mapping_error(kdev, mapping);
1607 for (i = 0; i < nr_frags; i++) {
1608 ret = bcmgenet_xmit_frag(dev,
1609 &skb_shinfo(skb)->frags[i],
1610 (i == nr_frags - 1) ? DMA_EOP : 0,
1611 ring);
1612 if (ret) { 1586 if (ret) {
1587 priv->mib.tx_dma_failed++;
1588 netif_err(priv, tx_err, dev, "Tx DMA map failed\n");
1613 ret = NETDEV_TX_OK; 1589 ret = NETDEV_TX_OK;
1614 goto out; 1590 goto out_unmap_frags;
1591 }
1592 dma_unmap_addr_set(tx_cb_ptr, dma_addr, mapping);
1593 dma_unmap_len_set(tx_cb_ptr, dma_len, size);
1594
1595 tx_cb_ptr->skb = skb;
1596
1597 len_stat = (size << DMA_BUFLENGTH_SHIFT) |
1598 (priv->hw_params->qtag_mask << DMA_TX_QTAG_SHIFT);
1599
1600 if (!i) {
1601 len_stat |= DMA_TX_APPEND_CRC | DMA_SOP;
1602 if (skb->ip_summed == CHECKSUM_PARTIAL)
1603 len_stat |= DMA_TX_DO_CSUM;
1615 } 1604 }
1605 if (i == nr_frags)
1606 len_stat |= DMA_EOP;
1607
1608 dmadesc_set(priv, tx_cb_ptr->bd_addr, mapping, len_stat);
1616 } 1609 }
1617 1610
1611 GENET_CB(skb)->last_cb = tx_cb_ptr;
1618 skb_tx_timestamp(skb); 1612 skb_tx_timestamp(skb);
1619 1613
1620 /* Decrement total BD count and advance our write pointer */ 1614 /* Decrement total BD count and advance our write pointer */
@@ -1635,6 +1629,19 @@ out:
1635 spin_unlock_irqrestore(&ring->lock, flags); 1629 spin_unlock_irqrestore(&ring->lock, flags);
1636 1630
1637 return ret; 1631 return ret;
1632
1633out_unmap_frags:
1634 /* Back up for failed control block mapping */
1635 bcmgenet_put_txcb(priv, ring);
1636
1637 /* Unmap successfully mapped control blocks */
1638 while (i-- > 0) {
1639 tx_cb_ptr = bcmgenet_put_txcb(priv, ring);
1640 bcmgenet_free_tx_cb(kdev, tx_cb_ptr);
1641 }
1642
1643 dev_kfree_skb(skb);
1644 goto out;
1638} 1645}
1639 1646
1640static struct sk_buff *bcmgenet_rx_refill(struct bcmgenet_priv *priv, 1647static struct sk_buff *bcmgenet_rx_refill(struct bcmgenet_priv *priv,
@@ -1666,14 +1673,12 @@ static struct sk_buff *bcmgenet_rx_refill(struct bcmgenet_priv *priv,
1666 } 1673 }
1667 1674
1668 /* Grab the current Rx skb from the ring and DMA-unmap it */ 1675 /* Grab the current Rx skb from the ring and DMA-unmap it */
1669 rx_skb = cb->skb; 1676 rx_skb = bcmgenet_free_rx_cb(kdev, cb);
1670 if (likely(rx_skb))
1671 dma_unmap_single(kdev, dma_unmap_addr(cb, dma_addr),
1672 priv->rx_buf_len, DMA_FROM_DEVICE);
1673 1677
1674 /* Put the new Rx skb on the ring */ 1678 /* Put the new Rx skb on the ring */
1675 cb->skb = skb; 1679 cb->skb = skb;
1676 dma_unmap_addr_set(cb, dma_addr, mapping); 1680 dma_unmap_addr_set(cb, dma_addr, mapping);
1681 dma_unmap_len_set(cb, dma_len, priv->rx_buf_len);
1677 dmadesc_set_addr(priv, cb->bd_addr, mapping); 1682 dmadesc_set_addr(priv, cb->bd_addr, mapping);
1678 1683
1679 /* Return the current Rx skb to caller */ 1684 /* Return the current Rx skb to caller */
@@ -1880,22 +1885,16 @@ static int bcmgenet_alloc_rx_buffers(struct bcmgenet_priv *priv,
1880 1885
1881static void bcmgenet_free_rx_buffers(struct bcmgenet_priv *priv) 1886static void bcmgenet_free_rx_buffers(struct bcmgenet_priv *priv)
1882{ 1887{
1883 struct device *kdev = &priv->pdev->dev; 1888 struct sk_buff *skb;
1884 struct enet_cb *cb; 1889 struct enet_cb *cb;
1885 int i; 1890 int i;
1886 1891
1887 for (i = 0; i < priv->num_rx_bds; i++) { 1892 for (i = 0; i < priv->num_rx_bds; i++) {
1888 cb = &priv->rx_cbs[i]; 1893 cb = &priv->rx_cbs[i];
1889 1894
1890 if (dma_unmap_addr(cb, dma_addr)) { 1895 skb = bcmgenet_free_rx_cb(&priv->pdev->dev, cb);
1891 dma_unmap_single(kdev, 1896 if (skb)
1892 dma_unmap_addr(cb, dma_addr), 1897 dev_kfree_skb_any(skb);
1893 priv->rx_buf_len, DMA_FROM_DEVICE);
1894 dma_unmap_addr_set(cb, dma_addr, 0);
1895 }
1896
1897 if (cb->skb)
1898 bcmgenet_free_cb(cb);
1899 } 1898 }
1900} 1899}
1901 1900
@@ -2479,8 +2478,10 @@ static int bcmgenet_dma_teardown(struct bcmgenet_priv *priv)
2479 2478
2480static void bcmgenet_fini_dma(struct bcmgenet_priv *priv) 2479static void bcmgenet_fini_dma(struct bcmgenet_priv *priv)
2481{ 2480{
2482 int i;
2483 struct netdev_queue *txq; 2481 struct netdev_queue *txq;
2482 struct sk_buff *skb;
2483 struct enet_cb *cb;
2484 int i;
2484 2485
2485 bcmgenet_fini_rx_napi(priv); 2486 bcmgenet_fini_rx_napi(priv);
2486 bcmgenet_fini_tx_napi(priv); 2487 bcmgenet_fini_tx_napi(priv);
@@ -2489,10 +2490,10 @@ static void bcmgenet_fini_dma(struct bcmgenet_priv *priv)
2489 bcmgenet_dma_teardown(priv); 2490 bcmgenet_dma_teardown(priv);
2490 2491
2491 for (i = 0; i < priv->num_tx_bds; i++) { 2492 for (i = 0; i < priv->num_tx_bds; i++) {
2492 if (priv->tx_cbs[i].skb != NULL) { 2493 cb = priv->tx_cbs + i;
2493 dev_kfree_skb(priv->tx_cbs[i].skb); 2494 skb = bcmgenet_free_tx_cb(&priv->pdev->dev, cb);
2494 priv->tx_cbs[i].skb = NULL; 2495 if (skb)
2495 } 2496 dev_kfree_skb(skb);
2496 } 2497 }
2497 2498
2498 for (i = 0; i < priv->hw_params->tx_queues; i++) { 2499 for (i = 0; i < priv->hw_params->tx_queues; i++) {
@@ -3668,7 +3669,7 @@ static int bcmgenet_resume(struct device *d)
3668 3669
3669 phy_init_hw(priv->phydev); 3670 phy_init_hw(priv->phydev);
3670 /* Speed settings must be restored */ 3671 /* Speed settings must be restored */
3671 bcmgenet_mii_config(priv->dev); 3672 bcmgenet_mii_config(priv->dev, false);
3672 3673
3673 /* disable ethernet MAC while updating its registers */ 3674 /* disable ethernet MAC while updating its registers */
3674 umac_enable_set(priv, CMD_TX_EN | CMD_RX_EN, false); 3675 umac_enable_set(priv, CMD_TX_EN | CMD_RX_EN, false);
diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.h b/drivers/net/ethernet/broadcom/genet/bcmgenet.h
index efd07020b89f..3a34fdba5301 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.h
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.h
@@ -544,6 +544,8 @@ struct bcmgenet_hw_params {
544}; 544};
545 545
546struct bcmgenet_skb_cb { 546struct bcmgenet_skb_cb {
547 struct enet_cb *first_cb; /* First control block of SKB */
548 struct enet_cb *last_cb; /* Last control block of SKB */
547 unsigned int bytes_sent; /* bytes on the wire (no TSB) */ 549 unsigned int bytes_sent; /* bytes on the wire (no TSB) */
548}; 550};
549 551
@@ -696,7 +698,7 @@ GENET_IO_MACRO(rbuf, GENET_RBUF_OFF);
696 698
697/* MDIO routines */ 699/* MDIO routines */
698int bcmgenet_mii_init(struct net_device *dev); 700int bcmgenet_mii_init(struct net_device *dev);
699int bcmgenet_mii_config(struct net_device *dev); 701int bcmgenet_mii_config(struct net_device *dev, bool init);
700int bcmgenet_mii_probe(struct net_device *dev); 702int bcmgenet_mii_probe(struct net_device *dev);
701void bcmgenet_mii_exit(struct net_device *dev); 703void bcmgenet_mii_exit(struct net_device *dev);
702void bcmgenet_mii_reset(struct net_device *dev); 704void bcmgenet_mii_reset(struct net_device *dev);
diff --git a/drivers/net/ethernet/broadcom/genet/bcmmii.c b/drivers/net/ethernet/broadcom/genet/bcmmii.c
index 071fcbd14e6a..30cb97b4a1d7 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmmii.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c
@@ -238,7 +238,7 @@ static void bcmgenet_moca_phy_setup(struct bcmgenet_priv *priv)
238 bcmgenet_fixed_phy_link_update); 238 bcmgenet_fixed_phy_link_update);
239} 239}
240 240
241int bcmgenet_mii_config(struct net_device *dev) 241int bcmgenet_mii_config(struct net_device *dev, bool init)
242{ 242{
243 struct bcmgenet_priv *priv = netdev_priv(dev); 243 struct bcmgenet_priv *priv = netdev_priv(dev);
244 struct phy_device *phydev = priv->phydev; 244 struct phy_device *phydev = priv->phydev;
@@ -327,7 +327,8 @@ int bcmgenet_mii_config(struct net_device *dev)
327 bcmgenet_ext_writel(priv, reg, EXT_RGMII_OOB_CTRL); 327 bcmgenet_ext_writel(priv, reg, EXT_RGMII_OOB_CTRL);
328 } 328 }
329 329
330 dev_info_once(kdev, "configuring instance for %s\n", phy_name); 330 if (init)
331 dev_info(kdev, "configuring instance for %s\n", phy_name);
331 332
332 return 0; 333 return 0;
333} 334}
@@ -375,7 +376,7 @@ int bcmgenet_mii_probe(struct net_device *dev)
375 * PHY speed which is needed for bcmgenet_mii_config() to configure 376 * PHY speed which is needed for bcmgenet_mii_config() to configure
376 * things appropriately. 377 * things appropriately.
377 */ 378 */
378 ret = bcmgenet_mii_config(dev); 379 ret = bcmgenet_mii_config(dev, true);
379 if (ret) { 380 if (ret) {
380 phy_disconnect(priv->phydev); 381 phy_disconnect(priv->phydev);
381 return ret; 382 return ret;
diff --git a/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c b/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c
index 28ecda3d3404..ebd353bc78ff 100644
--- a/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c
+++ b/drivers/net/ethernet/cavium/liquidio/lio_ethtool.c
@@ -335,7 +335,7 @@ lio_ethtool_get_channels(struct net_device *dev,
335 335
336static int lio_get_eeprom_len(struct net_device *netdev) 336static int lio_get_eeprom_len(struct net_device *netdev)
337{ 337{
338 u8 buf[128]; 338 u8 buf[192];
339 struct lio *lio = GET_LIO(netdev); 339 struct lio *lio = GET_LIO(netdev);
340 struct octeon_device *oct_dev = lio->oct_dev; 340 struct octeon_device *oct_dev = lio->oct_dev;
341 struct octeon_board_info *board_info; 341 struct octeon_board_info *board_info;
diff --git a/drivers/net/ethernet/cavium/thunder/thunder_bgx.c b/drivers/net/ethernet/cavium/thunder/thunder_bgx.c
index a0ca68ce3fbb..5e5c4d7796b8 100644
--- a/drivers/net/ethernet/cavium/thunder/thunder_bgx.c
+++ b/drivers/net/ethernet/cavium/thunder/thunder_bgx.c
@@ -292,11 +292,30 @@ static void bgx_sgmii_change_link_state(struct lmac *lmac)
292 u64 cmr_cfg; 292 u64 cmr_cfg;
293 u64 port_cfg = 0; 293 u64 port_cfg = 0;
294 u64 misc_ctl = 0; 294 u64 misc_ctl = 0;
295 bool tx_en, rx_en;
295 296
296 cmr_cfg = bgx_reg_read(bgx, lmac->lmacid, BGX_CMRX_CFG); 297 cmr_cfg = bgx_reg_read(bgx, lmac->lmacid, BGX_CMRX_CFG);
297 cmr_cfg &= ~CMR_EN; 298 tx_en = cmr_cfg & CMR_PKT_TX_EN;
299 rx_en = cmr_cfg & CMR_PKT_RX_EN;
300 cmr_cfg &= ~(CMR_PKT_RX_EN | CMR_PKT_TX_EN);
298 bgx_reg_write(bgx, lmac->lmacid, BGX_CMRX_CFG, cmr_cfg); 301 bgx_reg_write(bgx, lmac->lmacid, BGX_CMRX_CFG, cmr_cfg);
299 302
303 /* Wait for BGX RX to be idle */
304 if (bgx_poll_reg(bgx, lmac->lmacid, BGX_GMP_GMI_PRTX_CFG,
305 GMI_PORT_CFG_RX_IDLE, false)) {
306 dev_err(&bgx->pdev->dev, "BGX%d LMAC%d GMI RX not idle\n",
307 bgx->bgx_id, lmac->lmacid);
308 return;
309 }
310
311 /* Wait for BGX TX to be idle */
312 if (bgx_poll_reg(bgx, lmac->lmacid, BGX_GMP_GMI_PRTX_CFG,
313 GMI_PORT_CFG_TX_IDLE, false)) {
314 dev_err(&bgx->pdev->dev, "BGX%d LMAC%d GMI TX not idle\n",
315 bgx->bgx_id, lmac->lmacid);
316 return;
317 }
318
300 port_cfg = bgx_reg_read(bgx, lmac->lmacid, BGX_GMP_GMI_PRTX_CFG); 319 port_cfg = bgx_reg_read(bgx, lmac->lmacid, BGX_GMP_GMI_PRTX_CFG);
301 misc_ctl = bgx_reg_read(bgx, lmac->lmacid, BGX_GMP_PCS_MISCX_CTL); 320 misc_ctl = bgx_reg_read(bgx, lmac->lmacid, BGX_GMP_PCS_MISCX_CTL);
302 321
@@ -347,10 +366,8 @@ static void bgx_sgmii_change_link_state(struct lmac *lmac)
347 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_PCS_MISCX_CTL, misc_ctl); 366 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_PCS_MISCX_CTL, misc_ctl);
348 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_PRTX_CFG, port_cfg); 367 bgx_reg_write(bgx, lmac->lmacid, BGX_GMP_GMI_PRTX_CFG, port_cfg);
349 368
350 port_cfg = bgx_reg_read(bgx, lmac->lmacid, BGX_GMP_GMI_PRTX_CFG); 369 /* Restore CMR config settings */
351 370 cmr_cfg |= (rx_en ? CMR_PKT_RX_EN : 0) | (tx_en ? CMR_PKT_TX_EN : 0);
352 /* Re-enable lmac */
353 cmr_cfg |= CMR_EN;
354 bgx_reg_write(bgx, lmac->lmacid, BGX_CMRX_CFG, cmr_cfg); 371 bgx_reg_write(bgx, lmac->lmacid, BGX_CMRX_CFG, cmr_cfg);
355 372
356 if (bgx->is_rgx && (cmr_cfg & (CMR_PKT_RX_EN | CMR_PKT_TX_EN))) 373 if (bgx->is_rgx && (cmr_cfg & (CMR_PKT_RX_EN | CMR_PKT_TX_EN)))
@@ -1008,7 +1025,7 @@ static void bgx_print_qlm_mode(struct bgx *bgx, u8 lmacid)
1008{ 1025{
1009 struct device *dev = &bgx->pdev->dev; 1026 struct device *dev = &bgx->pdev->dev;
1010 struct lmac *lmac; 1027 struct lmac *lmac;
1011 char str[20]; 1028 char str[27];
1012 1029
1013 if (!bgx->is_dlm && lmacid) 1030 if (!bgx->is_dlm && lmacid)
1014 return; 1031 return;
diff --git a/drivers/net/ethernet/cavium/thunder/thunder_bgx.h b/drivers/net/ethernet/cavium/thunder/thunder_bgx.h
index 6b7fe6fdd13b..23acdc5ab896 100644
--- a/drivers/net/ethernet/cavium/thunder/thunder_bgx.h
+++ b/drivers/net/ethernet/cavium/thunder/thunder_bgx.h
@@ -170,6 +170,8 @@
170#define GMI_PORT_CFG_DUPLEX BIT_ULL(2) 170#define GMI_PORT_CFG_DUPLEX BIT_ULL(2)
171#define GMI_PORT_CFG_SLOT_TIME BIT_ULL(3) 171#define GMI_PORT_CFG_SLOT_TIME BIT_ULL(3)
172#define GMI_PORT_CFG_SPEED_MSB BIT_ULL(8) 172#define GMI_PORT_CFG_SPEED_MSB BIT_ULL(8)
173#define GMI_PORT_CFG_RX_IDLE BIT_ULL(12)
174#define GMI_PORT_CFG_TX_IDLE BIT_ULL(13)
173#define BGX_GMP_GMI_RXX_JABBER 0x38038 175#define BGX_GMP_GMI_RXX_JABBER 0x38038
174#define BGX_GMP_GMI_TXX_THRESH 0x38210 176#define BGX_GMP_GMI_TXX_THRESH 0x38210
175#define BGX_GMP_GMI_TXX_APPEND 0x38218 177#define BGX_GMP_GMI_TXX_APPEND 0x38218
diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
index ef4be781fd05..09ea62ee96d3 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4.h
@@ -529,6 +529,7 @@ enum { /* adapter flags */
529 USING_SOFT_PARAMS = (1 << 6), 529 USING_SOFT_PARAMS = (1 << 6),
530 MASTER_PF = (1 << 7), 530 MASTER_PF = (1 << 7),
531 FW_OFLD_CONN = (1 << 9), 531 FW_OFLD_CONN = (1 << 9),
532 ROOT_NO_RELAXED_ORDERING = (1 << 10),
532}; 533};
533 534
534enum { 535enum {
diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
index e403fa18f1b1..33bb8678833a 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
@@ -4654,11 +4654,6 @@ static void print_port_info(const struct net_device *dev)
4654 dev->name, adap->params.vpd.id, adap->name, buf); 4654 dev->name, adap->params.vpd.id, adap->name, buf);
4655} 4655}
4656 4656
4657static void enable_pcie_relaxed_ordering(struct pci_dev *dev)
4658{
4659 pcie_capability_set_word(dev, PCI_EXP_DEVCTL, PCI_EXP_DEVCTL_RELAX_EN);
4660}
4661
4662/* 4657/*
4663 * Free the following resources: 4658 * Free the following resources:
4664 * - memory used for tables 4659 * - memory used for tables
@@ -4908,7 +4903,6 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
4908 } 4903 }
4909 4904
4910 pci_enable_pcie_error_reporting(pdev); 4905 pci_enable_pcie_error_reporting(pdev);
4911 enable_pcie_relaxed_ordering(pdev);
4912 pci_set_master(pdev); 4906 pci_set_master(pdev);
4913 pci_save_state(pdev); 4907 pci_save_state(pdev);
4914 4908
@@ -4947,6 +4941,23 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
4947 adapter->msg_enable = DFLT_MSG_ENABLE; 4941 adapter->msg_enable = DFLT_MSG_ENABLE;
4948 memset(adapter->chan_map, 0xff, sizeof(adapter->chan_map)); 4942 memset(adapter->chan_map, 0xff, sizeof(adapter->chan_map));
4949 4943
4944 /* If possible, we use PCIe Relaxed Ordering Attribute to deliver
4945 * Ingress Packet Data to Free List Buffers in order to allow for
4946 * chipset performance optimizations between the Root Complex and
4947 * Memory Controllers. (Messages to the associated Ingress Queue
4948 * notifying new Packet Placement in the Free Lists Buffers will be
4949 * send without the Relaxed Ordering Attribute thus guaranteeing that
4950 * all preceding PCIe Transaction Layer Packets will be processed
4951 * first.) But some Root Complexes have various issues with Upstream
4952 * Transaction Layer Packets with the Relaxed Ordering Attribute set.
4953 * The PCIe devices which under the Root Complexes will be cleared the
4954 * Relaxed Ordering bit in the configuration space, So we check our
4955 * PCIe configuration space to see if it's flagged with advice against
4956 * using Relaxed Ordering.
4957 */
4958 if (!pcie_relaxed_ordering_enabled(pdev))
4959 adapter->flags |= ROOT_NO_RELAXED_ORDERING;
4960
4950 spin_lock_init(&adapter->stats_lock); 4961 spin_lock_init(&adapter->stats_lock);
4951 spin_lock_init(&adapter->tid_release_lock); 4962 spin_lock_init(&adapter->tid_release_lock);
4952 spin_lock_init(&adapter->win0_lock); 4963 spin_lock_init(&adapter->win0_lock);
diff --git a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ptp.c b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ptp.c
index 50517cfd9671..9f9d6cae39d5 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ptp.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/cxgb4_ptp.c
@@ -441,7 +441,8 @@ void cxgb4_ptp_init(struct adapter *adapter)
441 441
442 adapter->ptp_clock = ptp_clock_register(&adapter->ptp_clock_info, 442 adapter->ptp_clock = ptp_clock_register(&adapter->ptp_clock_info,
443 &adapter->pdev->dev); 443 &adapter->pdev->dev);
444 if (!adapter->ptp_clock) { 444 if (IS_ERR_OR_NULL(adapter->ptp_clock)) {
445 adapter->ptp_clock = NULL;
445 dev_err(adapter->pdev_dev, 446 dev_err(adapter->pdev_dev,
446 "PTP %s Clock registration has failed\n", __func__); 447 "PTP %s Clock registration has failed\n", __func__);
447 return; 448 return;
diff --git a/drivers/net/ethernet/chelsio/cxgb4/sge.c b/drivers/net/ethernet/chelsio/cxgb4/sge.c
index ede12209f20b..4ef68f69b58c 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/sge.c
+++ b/drivers/net/ethernet/chelsio/cxgb4/sge.c
@@ -2719,6 +2719,7 @@ int t4_sge_alloc_rxq(struct adapter *adap, struct sge_rspq *iq, bool fwevtq,
2719 struct fw_iq_cmd c; 2719 struct fw_iq_cmd c;
2720 struct sge *s = &adap->sge; 2720 struct sge *s = &adap->sge;
2721 struct port_info *pi = netdev_priv(dev); 2721 struct port_info *pi = netdev_priv(dev);
2722 int relaxed = !(adap->flags & ROOT_NO_RELAXED_ORDERING);
2722 2723
2723 /* Size needs to be multiple of 16, including status entry. */ 2724 /* Size needs to be multiple of 16, including status entry. */
2724 iq->size = roundup(iq->size, 16); 2725 iq->size = roundup(iq->size, 16);
@@ -2772,8 +2773,8 @@ int t4_sge_alloc_rxq(struct adapter *adap, struct sge_rspq *iq, bool fwevtq,
2772 2773
2773 flsz = fl->size / 8 + s->stat_len / sizeof(struct tx_desc); 2774 flsz = fl->size / 8 + s->stat_len / sizeof(struct tx_desc);
2774 c.iqns_to_fl0congen |= htonl(FW_IQ_CMD_FL0PACKEN_F | 2775 c.iqns_to_fl0congen |= htonl(FW_IQ_CMD_FL0PACKEN_F |
2775 FW_IQ_CMD_FL0FETCHRO_F | 2776 FW_IQ_CMD_FL0FETCHRO_V(relaxed) |
2776 FW_IQ_CMD_FL0DATARO_F | 2777 FW_IQ_CMD_FL0DATARO_V(relaxed) |
2777 FW_IQ_CMD_FL0PADEN_F); 2778 FW_IQ_CMD_FL0PADEN_F);
2778 if (cong >= 0) 2779 if (cong >= 0)
2779 c.iqns_to_fl0congen |= 2780 c.iqns_to_fl0congen |=
diff --git a/drivers/net/ethernet/chelsio/cxgb4/t4_pci_id_tbl.h b/drivers/net/ethernet/chelsio/cxgb4/t4_pci_id_tbl.h
index 99987d8e437e..aa28299aef5f 100644
--- a/drivers/net/ethernet/chelsio/cxgb4/t4_pci_id_tbl.h
+++ b/drivers/net/ethernet/chelsio/cxgb4/t4_pci_id_tbl.h
@@ -174,6 +174,8 @@ CH_PCI_DEVICE_ID_TABLE_DEFINE_BEGIN
174 CH_PCI_ID_TABLE_FENTRY(0x50a0), /* Custom T540-CR */ 174 CH_PCI_ID_TABLE_FENTRY(0x50a0), /* Custom T540-CR */
175 CH_PCI_ID_TABLE_FENTRY(0x50a1), /* Custom T540-CR */ 175 CH_PCI_ID_TABLE_FENTRY(0x50a1), /* Custom T540-CR */
176 CH_PCI_ID_TABLE_FENTRY(0x50a2), /* Custom T540-KR4 */ 176 CH_PCI_ID_TABLE_FENTRY(0x50a2), /* Custom T540-KR4 */
177 CH_PCI_ID_TABLE_FENTRY(0x50a3), /* Custom T580-KR4 */
178 CH_PCI_ID_TABLE_FENTRY(0x50a4), /* Custom 2x T540-CR */
177 179
178 /* T6 adapters: 180 /* T6 adapters:
179 */ 181 */
diff --git a/drivers/net/ethernet/chelsio/cxgb4vf/adapter.h b/drivers/net/ethernet/chelsio/cxgb4vf/adapter.h
index 109bc630408b..08c6ddb84a04 100644
--- a/drivers/net/ethernet/chelsio/cxgb4vf/adapter.h
+++ b/drivers/net/ethernet/chelsio/cxgb4vf/adapter.h
@@ -408,6 +408,7 @@ enum { /* adapter flags */
408 USING_MSI = (1UL << 1), 408 USING_MSI = (1UL << 1),
409 USING_MSIX = (1UL << 2), 409 USING_MSIX = (1UL << 2),
410 QUEUES_BOUND = (1UL << 3), 410 QUEUES_BOUND = (1UL << 3),
411 ROOT_NO_RELAXED_ORDERING = (1UL << 4),
411}; 412};
412 413
413/* 414/*
diff --git a/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c b/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
index ac7a150c54e9..2b85b874fd0d 100644
--- a/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
+++ b/drivers/net/ethernet/chelsio/cxgb4vf/cxgb4vf_main.c
@@ -2888,6 +2888,24 @@ static int cxgb4vf_pci_probe(struct pci_dev *pdev,
2888 */ 2888 */
2889 adapter->name = pci_name(pdev); 2889 adapter->name = pci_name(pdev);
2890 adapter->msg_enable = DFLT_MSG_ENABLE; 2890 adapter->msg_enable = DFLT_MSG_ENABLE;
2891
2892 /* If possible, we use PCIe Relaxed Ordering Attribute to deliver
2893 * Ingress Packet Data to Free List Buffers in order to allow for
2894 * chipset performance optimizations between the Root Complex and
2895 * Memory Controllers. (Messages to the associated Ingress Queue
2896 * notifying new Packet Placement in the Free Lists Buffers will be
2897 * send without the Relaxed Ordering Attribute thus guaranteeing that
2898 * all preceding PCIe Transaction Layer Packets will be processed
2899 * first.) But some Root Complexes have various issues with Upstream
2900 * Transaction Layer Packets with the Relaxed Ordering Attribute set.
2901 * The PCIe devices which under the Root Complexes will be cleared the
2902 * Relaxed Ordering bit in the configuration space, So we check our
2903 * PCIe configuration space to see if it's flagged with advice against
2904 * using Relaxed Ordering.
2905 */
2906 if (!pcie_relaxed_ordering_enabled(pdev))
2907 adapter->flags |= ROOT_NO_RELAXED_ORDERING;
2908
2891 err = adap_init0(adapter); 2909 err = adap_init0(adapter);
2892 if (err) 2910 if (err)
2893 goto err_unmap_bar; 2911 goto err_unmap_bar;
diff --git a/drivers/net/ethernet/chelsio/cxgb4vf/sge.c b/drivers/net/ethernet/chelsio/cxgb4vf/sge.c
index e37dde2ba97f..05498e7f2840 100644
--- a/drivers/net/ethernet/chelsio/cxgb4vf/sge.c
+++ b/drivers/net/ethernet/chelsio/cxgb4vf/sge.c
@@ -2205,6 +2205,7 @@ int t4vf_sge_alloc_rxq(struct adapter *adapter, struct sge_rspq *rspq,
2205 struct port_info *pi = netdev_priv(dev); 2205 struct port_info *pi = netdev_priv(dev);
2206 struct fw_iq_cmd cmd, rpl; 2206 struct fw_iq_cmd cmd, rpl;
2207 int ret, iqandst, flsz = 0; 2207 int ret, iqandst, flsz = 0;
2208 int relaxed = !(adapter->flags & ROOT_NO_RELAXED_ORDERING);
2208 2209
2209 /* 2210 /*
2210 * If we're using MSI interrupts and we're not initializing the 2211 * If we're using MSI interrupts and we're not initializing the
@@ -2300,6 +2301,8 @@ int t4vf_sge_alloc_rxq(struct adapter *adapter, struct sge_rspq *rspq,
2300 cpu_to_be32( 2301 cpu_to_be32(
2301 FW_IQ_CMD_FL0HOSTFCMODE_V(SGE_HOSTFCMODE_NONE) | 2302 FW_IQ_CMD_FL0HOSTFCMODE_V(SGE_HOSTFCMODE_NONE) |
2302 FW_IQ_CMD_FL0PACKEN_F | 2303 FW_IQ_CMD_FL0PACKEN_F |
2304 FW_IQ_CMD_FL0FETCHRO_V(relaxed) |
2305 FW_IQ_CMD_FL0DATARO_V(relaxed) |
2303 FW_IQ_CMD_FL0PADEN_F); 2306 FW_IQ_CMD_FL0PADEN_F);
2304 2307
2305 /* In T6, for egress queue type FL there is internal overhead 2308 /* In T6, for egress queue type FL there is internal overhead
diff --git a/drivers/net/ethernet/faraday/ftgmac100.c b/drivers/net/ethernet/faraday/ftgmac100.c
index 95bf5e89cfd1..34dae51effd4 100644
--- a/drivers/net/ethernet/faraday/ftgmac100.c
+++ b/drivers/net/ethernet/faraday/ftgmac100.c
@@ -125,7 +125,7 @@ static int ftgmac100_reset_mac(struct ftgmac100 *priv, u32 maccr)
125 iowrite32(maccr, priv->base + FTGMAC100_OFFSET_MACCR); 125 iowrite32(maccr, priv->base + FTGMAC100_OFFSET_MACCR);
126 iowrite32(maccr | FTGMAC100_MACCR_SW_RST, 126 iowrite32(maccr | FTGMAC100_MACCR_SW_RST,
127 priv->base + FTGMAC100_OFFSET_MACCR); 127 priv->base + FTGMAC100_OFFSET_MACCR);
128 for (i = 0; i < 50; i++) { 128 for (i = 0; i < 200; i++) {
129 unsigned int maccr; 129 unsigned int maccr;
130 130
131 maccr = ioread32(priv->base + FTGMAC100_OFFSET_MACCR); 131 maccr = ioread32(priv->base + FTGMAC100_OFFSET_MACCR);
@@ -392,7 +392,7 @@ static int ftgmac100_alloc_rx_buf(struct ftgmac100 *priv, unsigned int entry,
392 struct net_device *netdev = priv->netdev; 392 struct net_device *netdev = priv->netdev;
393 struct sk_buff *skb; 393 struct sk_buff *skb;
394 dma_addr_t map; 394 dma_addr_t map;
395 int err; 395 int err = 0;
396 396
397 skb = netdev_alloc_skb_ip_align(netdev, RX_BUF_SIZE); 397 skb = netdev_alloc_skb_ip_align(netdev, RX_BUF_SIZE);
398 if (unlikely(!skb)) { 398 if (unlikely(!skb)) {
@@ -428,7 +428,7 @@ static int ftgmac100_alloc_rx_buf(struct ftgmac100 *priv, unsigned int entry,
428 else 428 else
429 rxdes->rxdes0 = 0; 429 rxdes->rxdes0 = 0;
430 430
431 return 0; 431 return err;
432} 432}
433 433
434static unsigned int ftgmac100_next_rx_pointer(struct ftgmac100 *priv, 434static unsigned int ftgmac100_next_rx_pointer(struct ftgmac100 *priv,
@@ -1682,6 +1682,7 @@ static int ftgmac100_setup_mdio(struct net_device *netdev)
1682 priv->mii_bus->name = "ftgmac100_mdio"; 1682 priv->mii_bus->name = "ftgmac100_mdio";
1683 snprintf(priv->mii_bus->id, MII_BUS_ID_SIZE, "%s-%d", 1683 snprintf(priv->mii_bus->id, MII_BUS_ID_SIZE, "%s-%d",
1684 pdev->name, pdev->id); 1684 pdev->name, pdev->id);
1685 priv->mii_bus->parent = priv->dev;
1685 priv->mii_bus->priv = priv->netdev; 1686 priv->mii_bus->priv = priv->netdev;
1686 priv->mii_bus->read = ftgmac100_mdiobus_read; 1687 priv->mii_bus->read = ftgmac100_mdiobus_read;
1687 priv->mii_bus->write = ftgmac100_mdiobus_write; 1688 priv->mii_bus->write = ftgmac100_mdiobus_write;
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c b/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c
index ff864a187d5a..a37166ee577b 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_ae_adapt.c
@@ -776,8 +776,9 @@ void hns_ae_update_led_status(struct hnae_handle *handle)
776 776
777 assert(handle); 777 assert(handle);
778 mac_cb = hns_get_mac_cb(handle); 778 mac_cb = hns_get_mac_cb(handle);
779 if (!mac_cb->cpld_ctrl) 779 if (mac_cb->media_type != HNAE_MEDIA_TYPE_FIBER)
780 return; 780 return;
781
781 hns_set_led_opt(mac_cb); 782 hns_set_led_opt(mac_cb);
782} 783}
783 784
diff --git a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c
index 7a8addda726e..408b63faf9a8 100644
--- a/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c
+++ b/drivers/net/ethernet/hisilicon/hns/hns_dsaf_misc.c
@@ -53,6 +53,34 @@ static u32 dsaf_read_sub(struct dsaf_device *dsaf_dev, u32 reg)
53 return ret; 53 return ret;
54} 54}
55 55
56static void hns_dsaf_acpi_ledctrl_by_port(struct hns_mac_cb *mac_cb, u8 op_type,
57 u32 link, u32 port, u32 act)
58{
59 union acpi_object *obj;
60 union acpi_object obj_args[3], argv4;
61
62 obj_args[0].integer.type = ACPI_TYPE_INTEGER;
63 obj_args[0].integer.value = link;
64 obj_args[1].integer.type = ACPI_TYPE_INTEGER;
65 obj_args[1].integer.value = port;
66 obj_args[2].integer.type = ACPI_TYPE_INTEGER;
67 obj_args[2].integer.value = act;
68
69 argv4.type = ACPI_TYPE_PACKAGE;
70 argv4.package.count = 3;
71 argv4.package.elements = obj_args;
72
73 obj = acpi_evaluate_dsm(ACPI_HANDLE(mac_cb->dev),
74 &hns_dsaf_acpi_dsm_guid, 0, op_type, &argv4);
75 if (!obj) {
76 dev_warn(mac_cb->dev, "ledctrl fail, link:%d port:%d act:%d!\n",
77 link, port, act);
78 return;
79 }
80
81 ACPI_FREE(obj);
82}
83
56static void hns_cpld_set_led(struct hns_mac_cb *mac_cb, int link_status, 84static void hns_cpld_set_led(struct hns_mac_cb *mac_cb, int link_status,
57 u16 speed, int data) 85 u16 speed, int data)
58{ 86{
@@ -93,6 +121,18 @@ static void hns_cpld_set_led(struct hns_mac_cb *mac_cb, int link_status,
93 } 121 }
94} 122}
95 123
124static void hns_cpld_set_led_acpi(struct hns_mac_cb *mac_cb, int link_status,
125 u16 speed, int data)
126{
127 if (!mac_cb) {
128 pr_err("cpld_led_set mac_cb is null!\n");
129 return;
130 }
131
132 hns_dsaf_acpi_ledctrl_by_port(mac_cb, HNS_OP_LED_SET_FUNC,
133 link_status, mac_cb->mac_id, data);
134}
135
96static void cpld_led_reset(struct hns_mac_cb *mac_cb) 136static void cpld_led_reset(struct hns_mac_cb *mac_cb)
97{ 137{
98 if (!mac_cb || !mac_cb->cpld_ctrl) 138 if (!mac_cb || !mac_cb->cpld_ctrl)
@@ -103,6 +143,20 @@ static void cpld_led_reset(struct hns_mac_cb *mac_cb)
103 mac_cb->cpld_led_value = CPLD_LED_DEFAULT_VALUE; 143 mac_cb->cpld_led_value = CPLD_LED_DEFAULT_VALUE;
104} 144}
105 145
146static void cpld_led_reset_acpi(struct hns_mac_cb *mac_cb)
147{
148 if (!mac_cb) {
149 pr_err("cpld_led_reset mac_cb is null!\n");
150 return;
151 }
152
153 if (mac_cb->media_type != HNAE_MEDIA_TYPE_FIBER)
154 return;
155
156 hns_dsaf_acpi_ledctrl_by_port(mac_cb, HNS_OP_LED_SET_FUNC,
157 0, mac_cb->mac_id, 0);
158}
159
106static int cpld_set_led_id(struct hns_mac_cb *mac_cb, 160static int cpld_set_led_id(struct hns_mac_cb *mac_cb,
107 enum hnae_led_state status) 161 enum hnae_led_state status)
108{ 162{
@@ -604,8 +658,8 @@ struct dsaf_misc_op *hns_misc_op_get(struct dsaf_device *dsaf_dev)
604 658
605 misc_op->cfg_serdes_loopback = hns_mac_config_sds_loopback; 659 misc_op->cfg_serdes_loopback = hns_mac_config_sds_loopback;
606 } else if (is_acpi_node(dsaf_dev->dev->fwnode)) { 660 } else if (is_acpi_node(dsaf_dev->dev->fwnode)) {
607 misc_op->cpld_set_led = hns_cpld_set_led; 661 misc_op->cpld_set_led = hns_cpld_set_led_acpi;
608 misc_op->cpld_reset_led = cpld_led_reset; 662 misc_op->cpld_reset_led = cpld_led_reset_acpi;
609 misc_op->cpld_set_led_id = cpld_set_led_id; 663 misc_op->cpld_set_led_id = cpld_set_led_id;
610 664
611 misc_op->dsaf_reset = hns_dsaf_rst_acpi; 665 misc_op->dsaf_reset = hns_dsaf_rst_acpi;
diff --git a/drivers/net/ethernet/ibm/ibmvnic.c b/drivers/net/ethernet/ibm/ibmvnic.c
index a3e694679635..c45e8e3b82d3 100644
--- a/drivers/net/ethernet/ibm/ibmvnic.c
+++ b/drivers/net/ethernet/ibm/ibmvnic.c
@@ -111,6 +111,7 @@ static void send_request_map(struct ibmvnic_adapter *, dma_addr_t, __be32, u8);
111static void send_request_unmap(struct ibmvnic_adapter *, u8); 111static void send_request_unmap(struct ibmvnic_adapter *, u8);
112static void send_login(struct ibmvnic_adapter *adapter); 112static void send_login(struct ibmvnic_adapter *adapter);
113static void send_cap_queries(struct ibmvnic_adapter *adapter); 113static void send_cap_queries(struct ibmvnic_adapter *adapter);
114static int init_sub_crqs(struct ibmvnic_adapter *);
114static int init_sub_crq_irqs(struct ibmvnic_adapter *adapter); 115static int init_sub_crq_irqs(struct ibmvnic_adapter *adapter);
115static int ibmvnic_init(struct ibmvnic_adapter *); 116static int ibmvnic_init(struct ibmvnic_adapter *);
116static void release_crq_queue(struct ibmvnic_adapter *); 117static void release_crq_queue(struct ibmvnic_adapter *);
@@ -651,6 +652,7 @@ static int ibmvnic_login(struct net_device *netdev)
651 struct ibmvnic_adapter *adapter = netdev_priv(netdev); 652 struct ibmvnic_adapter *adapter = netdev_priv(netdev);
652 unsigned long timeout = msecs_to_jiffies(30000); 653 unsigned long timeout = msecs_to_jiffies(30000);
653 struct device *dev = &adapter->vdev->dev; 654 struct device *dev = &adapter->vdev->dev;
655 int rc;
654 656
655 do { 657 do {
656 if (adapter->renegotiate) { 658 if (adapter->renegotiate) {
@@ -664,6 +666,18 @@ static int ibmvnic_login(struct net_device *netdev)
664 dev_err(dev, "Capabilities query timeout\n"); 666 dev_err(dev, "Capabilities query timeout\n");
665 return -1; 667 return -1;
666 } 668 }
669 rc = init_sub_crqs(adapter);
670 if (rc) {
671 dev_err(dev,
672 "Initialization of SCRQ's failed\n");
673 return -1;
674 }
675 rc = init_sub_crq_irqs(adapter);
676 if (rc) {
677 dev_err(dev,
678 "Initialization of SCRQ's irqs failed\n");
679 return -1;
680 }
667 } 681 }
668 682
669 reinit_completion(&adapter->init_done); 683 reinit_completion(&adapter->init_done);
@@ -3004,7 +3018,6 @@ static void handle_request_cap_rsp(union ibmvnic_crq *crq,
3004 *req_value, 3018 *req_value,
3005 (long int)be64_to_cpu(crq->request_capability_rsp. 3019 (long int)be64_to_cpu(crq->request_capability_rsp.
3006 number), name); 3020 number), name);
3007 release_sub_crqs(adapter);
3008 *req_value = be64_to_cpu(crq->request_capability_rsp.number); 3021 *req_value = be64_to_cpu(crq->request_capability_rsp.number);
3009 ibmvnic_send_req_caps(adapter, 1); 3022 ibmvnic_send_req_caps(adapter, 1);
3010 return; 3023 return;
diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
index b936febc315a..2194960d5855 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
@@ -1113,6 +1113,8 @@ int i40e_setup_tx_descriptors(struct i40e_ring *tx_ring)
1113 if (!tx_ring->tx_bi) 1113 if (!tx_ring->tx_bi)
1114 goto err; 1114 goto err;
1115 1115
1116 u64_stats_init(&tx_ring->syncp);
1117
1116 /* round up to nearest 4K */ 1118 /* round up to nearest 4K */
1117 tx_ring->size = tx_ring->count * sizeof(struct i40e_tx_desc); 1119 tx_ring->size = tx_ring->count * sizeof(struct i40e_tx_desc);
1118 /* add u32 for head writeback, align after this takes care of 1120 /* add u32 for head writeback, align after this takes care of
diff --git a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
index 084c53582793..032f8ac06357 100644
--- a/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
+++ b/drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c
@@ -2988,6 +2988,8 @@ int ixgbevf_setup_tx_resources(struct ixgbevf_ring *tx_ring)
2988 if (!tx_ring->tx_buffer_info) 2988 if (!tx_ring->tx_buffer_info)
2989 goto err; 2989 goto err;
2990 2990
2991 u64_stats_init(&tx_ring->syncp);
2992
2991 /* round up to nearest 4K */ 2993 /* round up to nearest 4K */
2992 tx_ring->size = tx_ring->count * sizeof(union ixgbe_adv_tx_desc); 2994 tx_ring->size = tx_ring->count * sizeof(union ixgbe_adv_tx_desc);
2993 tx_ring->size = ALIGN(tx_ring->size, 4096); 2995 tx_ring->size = ALIGN(tx_ring->size, 4096);
@@ -3046,6 +3048,8 @@ int ixgbevf_setup_rx_resources(struct ixgbevf_ring *rx_ring)
3046 if (!rx_ring->rx_buffer_info) 3048 if (!rx_ring->rx_buffer_info)
3047 goto err; 3049 goto err;
3048 3050
3051 u64_stats_init(&rx_ring->syncp);
3052
3049 /* Round up to nearest 4K */ 3053 /* Round up to nearest 4K */
3050 rx_ring->size = rx_ring->count * sizeof(union ixgbe_adv_rx_desc); 3054 rx_ring->size = rx_ring->count * sizeof(union ixgbe_adv_rx_desc);
3051 rx_ring->size = ALIGN(rx_ring->size, 4096); 3055 rx_ring->size = ALIGN(rx_ring->size, 4096);
diff --git a/drivers/net/ethernet/marvell/mv643xx_eth.c b/drivers/net/ethernet/marvell/mv643xx_eth.c
index 5794d98d946f..9c94ea9b2b80 100644
--- a/drivers/net/ethernet/marvell/mv643xx_eth.c
+++ b/drivers/net/ethernet/marvell/mv643xx_eth.c
@@ -2734,7 +2734,7 @@ static int mv643xx_eth_shared_of_add_port(struct platform_device *pdev,
2734 ppd.shared = pdev; 2734 ppd.shared = pdev;
2735 2735
2736 memset(&res, 0, sizeof(res)); 2736 memset(&res, 0, sizeof(res));
2737 if (!of_irq_to_resource(pnp, 0, &res)) { 2737 if (of_irq_to_resource(pnp, 0, &res) <= 0) {
2738 dev_err(&pdev->dev, "missing interrupt on %s\n", pnp->name); 2738 dev_err(&pdev->dev, "missing interrupt on %s\n", pnp->name);
2739 return -EINVAL; 2739 return -EINVAL;
2740 } 2740 }
diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
index b3d0c2e6347a..e588a0cdb074 100644
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -22,6 +22,7 @@
22#include <linux/if_vlan.h> 22#include <linux/if_vlan.h>
23#include <linux/reset.h> 23#include <linux/reset.h>
24#include <linux/tcp.h> 24#include <linux/tcp.h>
25#include <linux/interrupt.h>
25 26
26#include "mtk_eth_soc.h" 27#include "mtk_eth_soc.h"
27 28
@@ -947,6 +948,10 @@ static int mtk_poll_rx(struct napi_struct *napi, int budget,
947 RX_DMA_FPORT_MASK; 948 RX_DMA_FPORT_MASK;
948 mac--; 949 mac--;
949 950
951 if (unlikely(mac < 0 || mac >= MTK_MAC_COUNT ||
952 !eth->netdev[mac]))
953 goto release_desc;
954
950 netdev = eth->netdev[mac]; 955 netdev = eth->netdev[mac];
951 956
952 if (unlikely(test_bit(MTK_RESETTING, &eth->state))) 957 if (unlikely(test_bit(MTK_RESETTING, &eth->state)))
diff --git a/drivers/net/ethernet/mellanox/mlx4/alloc.c b/drivers/net/ethernet/mellanox/mlx4/alloc.c
index 249a4584401a..b651c1210555 100644
--- a/drivers/net/ethernet/mellanox/mlx4/alloc.c
+++ b/drivers/net/ethernet/mellanox/mlx4/alloc.c
@@ -283,7 +283,7 @@ int mlx4_zone_add_one(struct mlx4_zone_allocator *zone_alloc,
283} 283}
284 284
285/* Should be called under a lock */ 285/* Should be called under a lock */
286static int __mlx4_zone_remove_one_entry(struct mlx4_zone_entry *entry) 286static void __mlx4_zone_remove_one_entry(struct mlx4_zone_entry *entry)
287{ 287{
288 struct mlx4_zone_allocator *zone_alloc = entry->allocator; 288 struct mlx4_zone_allocator *zone_alloc = entry->allocator;
289 289
@@ -315,8 +315,6 @@ static int __mlx4_zone_remove_one_entry(struct mlx4_zone_entry *entry)
315 } 315 }
316 zone_alloc->mask = mask; 316 zone_alloc->mask = mask;
317 } 317 }
318
319 return 0;
320} 318}
321 319
322void mlx4_zone_allocator_destroy(struct mlx4_zone_allocator *zone_alloc) 320void mlx4_zone_allocator_destroy(struct mlx4_zone_allocator *zone_alloc)
@@ -457,7 +455,7 @@ struct mlx4_bitmap *mlx4_zone_get_bitmap(struct mlx4_zone_allocator *zones, u32
457int mlx4_zone_remove_one(struct mlx4_zone_allocator *zones, u32 uid) 455int mlx4_zone_remove_one(struct mlx4_zone_allocator *zones, u32 uid)
458{ 456{
459 struct mlx4_zone_entry *zone; 457 struct mlx4_zone_entry *zone;
460 int res; 458 int res = 0;
461 459
462 spin_lock(&zones->lock); 460 spin_lock(&zones->lock);
463 461
@@ -468,7 +466,7 @@ int mlx4_zone_remove_one(struct mlx4_zone_allocator *zones, u32 uid)
468 goto out; 466 goto out;
469 } 467 }
470 468
471 res = __mlx4_zone_remove_one_entry(zone); 469 __mlx4_zone_remove_one_entry(zone);
472 470
473out: 471out:
474 spin_unlock(&zones->lock); 472 spin_unlock(&zones->lock);
@@ -578,7 +576,7 @@ out:
578} 576}
579 577
580static int mlx4_buf_direct_alloc(struct mlx4_dev *dev, int size, 578static int mlx4_buf_direct_alloc(struct mlx4_dev *dev, int size,
581 struct mlx4_buf *buf, gfp_t gfp) 579 struct mlx4_buf *buf)
582{ 580{
583 dma_addr_t t; 581 dma_addr_t t;
584 582
@@ -587,7 +585,7 @@ static int mlx4_buf_direct_alloc(struct mlx4_dev *dev, int size,
587 buf->page_shift = get_order(size) + PAGE_SHIFT; 585 buf->page_shift = get_order(size) + PAGE_SHIFT;
588 buf->direct.buf = 586 buf->direct.buf =
589 dma_zalloc_coherent(&dev->persist->pdev->dev, 587 dma_zalloc_coherent(&dev->persist->pdev->dev,
590 size, &t, gfp); 588 size, &t, GFP_KERNEL);
591 if (!buf->direct.buf) 589 if (!buf->direct.buf)
592 return -ENOMEM; 590 return -ENOMEM;
593 591
@@ -607,10 +605,10 @@ static int mlx4_buf_direct_alloc(struct mlx4_dev *dev, int size,
607 * multiple pages, so we don't require too much contiguous memory. 605 * multiple pages, so we don't require too much contiguous memory.
608 */ 606 */
609int mlx4_buf_alloc(struct mlx4_dev *dev, int size, int max_direct, 607int mlx4_buf_alloc(struct mlx4_dev *dev, int size, int max_direct,
610 struct mlx4_buf *buf, gfp_t gfp) 608 struct mlx4_buf *buf)
611{ 609{
612 if (size <= max_direct) { 610 if (size <= max_direct) {
613 return mlx4_buf_direct_alloc(dev, size, buf, gfp); 611 return mlx4_buf_direct_alloc(dev, size, buf);
614 } else { 612 } else {
615 dma_addr_t t; 613 dma_addr_t t;
616 int i; 614 int i;
@@ -620,14 +618,14 @@ int mlx4_buf_alloc(struct mlx4_dev *dev, int size, int max_direct,
620 buf->npages = buf->nbufs; 618 buf->npages = buf->nbufs;
621 buf->page_shift = PAGE_SHIFT; 619 buf->page_shift = PAGE_SHIFT;
622 buf->page_list = kcalloc(buf->nbufs, sizeof(*buf->page_list), 620 buf->page_list = kcalloc(buf->nbufs, sizeof(*buf->page_list),
623 gfp); 621 GFP_KERNEL);
624 if (!buf->page_list) 622 if (!buf->page_list)
625 return -ENOMEM; 623 return -ENOMEM;
626 624
627 for (i = 0; i < buf->nbufs; ++i) { 625 for (i = 0; i < buf->nbufs; ++i) {
628 buf->page_list[i].buf = 626 buf->page_list[i].buf =
629 dma_zalloc_coherent(&dev->persist->pdev->dev, 627 dma_zalloc_coherent(&dev->persist->pdev->dev,
630 PAGE_SIZE, &t, gfp); 628 PAGE_SIZE, &t, GFP_KERNEL);
631 if (!buf->page_list[i].buf) 629 if (!buf->page_list[i].buf)
632 goto err_free; 630 goto err_free;
633 631
@@ -663,12 +661,11 @@ void mlx4_buf_free(struct mlx4_dev *dev, int size, struct mlx4_buf *buf)
663} 661}
664EXPORT_SYMBOL_GPL(mlx4_buf_free); 662EXPORT_SYMBOL_GPL(mlx4_buf_free);
665 663
666static struct mlx4_db_pgdir *mlx4_alloc_db_pgdir(struct device *dma_device, 664static struct mlx4_db_pgdir *mlx4_alloc_db_pgdir(struct device *dma_device)
667 gfp_t gfp)
668{ 665{
669 struct mlx4_db_pgdir *pgdir; 666 struct mlx4_db_pgdir *pgdir;
670 667
671 pgdir = kzalloc(sizeof *pgdir, gfp); 668 pgdir = kzalloc(sizeof(*pgdir), GFP_KERNEL);
672 if (!pgdir) 669 if (!pgdir)
673 return NULL; 670 return NULL;
674 671
@@ -676,7 +673,7 @@ static struct mlx4_db_pgdir *mlx4_alloc_db_pgdir(struct device *dma_device,
676 pgdir->bits[0] = pgdir->order0; 673 pgdir->bits[0] = pgdir->order0;
677 pgdir->bits[1] = pgdir->order1; 674 pgdir->bits[1] = pgdir->order1;
678 pgdir->db_page = dma_alloc_coherent(dma_device, PAGE_SIZE, 675 pgdir->db_page = dma_alloc_coherent(dma_device, PAGE_SIZE,
679 &pgdir->db_dma, gfp); 676 &pgdir->db_dma, GFP_KERNEL);
680 if (!pgdir->db_page) { 677 if (!pgdir->db_page) {
681 kfree(pgdir); 678 kfree(pgdir);
682 return NULL; 679 return NULL;
@@ -716,7 +713,7 @@ found:
716 return 0; 713 return 0;
717} 714}
718 715
719int mlx4_db_alloc(struct mlx4_dev *dev, struct mlx4_db *db, int order, gfp_t gfp) 716int mlx4_db_alloc(struct mlx4_dev *dev, struct mlx4_db *db, int order)
720{ 717{
721 struct mlx4_priv *priv = mlx4_priv(dev); 718 struct mlx4_priv *priv = mlx4_priv(dev);
722 struct mlx4_db_pgdir *pgdir; 719 struct mlx4_db_pgdir *pgdir;
@@ -728,7 +725,7 @@ int mlx4_db_alloc(struct mlx4_dev *dev, struct mlx4_db *db, int order, gfp_t gfp
728 if (!mlx4_alloc_db_from_pgdir(pgdir, db, order)) 725 if (!mlx4_alloc_db_from_pgdir(pgdir, db, order))
729 goto out; 726 goto out;
730 727
731 pgdir = mlx4_alloc_db_pgdir(&dev->persist->pdev->dev, gfp); 728 pgdir = mlx4_alloc_db_pgdir(&dev->persist->pdev->dev);
732 if (!pgdir) { 729 if (!pgdir) {
733 ret = -ENOMEM; 730 ret = -ENOMEM;
734 goto out; 731 goto out;
@@ -780,13 +777,13 @@ int mlx4_alloc_hwq_res(struct mlx4_dev *dev, struct mlx4_hwq_resources *wqres,
780{ 777{
781 int err; 778 int err;
782 779
783 err = mlx4_db_alloc(dev, &wqres->db, 1, GFP_KERNEL); 780 err = mlx4_db_alloc(dev, &wqres->db, 1);
784 if (err) 781 if (err)
785 return err; 782 return err;
786 783
787 *wqres->db.db = 0; 784 *wqres->db.db = 0;
788 785
789 err = mlx4_buf_direct_alloc(dev, size, &wqres->buf, GFP_KERNEL); 786 err = mlx4_buf_direct_alloc(dev, size, &wqres->buf);
790 if (err) 787 if (err)
791 goto err_db; 788 goto err_db;
792 789
@@ -795,7 +792,7 @@ int mlx4_alloc_hwq_res(struct mlx4_dev *dev, struct mlx4_hwq_resources *wqres,
795 if (err) 792 if (err)
796 goto err_buf; 793 goto err_buf;
797 794
798 err = mlx4_buf_write_mtt(dev, &wqres->mtt, &wqres->buf, GFP_KERNEL); 795 err = mlx4_buf_write_mtt(dev, &wqres->mtt, &wqres->buf);
799 if (err) 796 if (err)
800 goto err_mtt; 797 goto err_mtt;
801 798
diff --git a/drivers/net/ethernet/mellanox/mlx4/cq.c b/drivers/net/ethernet/mellanox/mlx4/cq.c
index fa6d2354a0e9..c56a511b918e 100644
--- a/drivers/net/ethernet/mellanox/mlx4/cq.c
+++ b/drivers/net/ethernet/mellanox/mlx4/cq.c
@@ -224,11 +224,11 @@ int __mlx4_cq_alloc_icm(struct mlx4_dev *dev, int *cqn)
224 if (*cqn == -1) 224 if (*cqn == -1)
225 return -ENOMEM; 225 return -ENOMEM;
226 226
227 err = mlx4_table_get(dev, &cq_table->table, *cqn, GFP_KERNEL); 227 err = mlx4_table_get(dev, &cq_table->table, *cqn);
228 if (err) 228 if (err)
229 goto err_out; 229 goto err_out;
230 230
231 err = mlx4_table_get(dev, &cq_table->cmpt_table, *cqn, GFP_KERNEL); 231 err = mlx4_table_get(dev, &cq_table->cmpt_table, *cqn);
232 if (err) 232 if (err)
233 goto err_put; 233 goto err_put;
234 return 0; 234 return 0;
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c b/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
index c751a1d434ad..3d4e4a5d00d1 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
@@ -223,6 +223,7 @@ static void mlx4_en_get_wol(struct net_device *netdev,
223 struct ethtool_wolinfo *wol) 223 struct ethtool_wolinfo *wol)
224{ 224{
225 struct mlx4_en_priv *priv = netdev_priv(netdev); 225 struct mlx4_en_priv *priv = netdev_priv(netdev);
226 struct mlx4_caps *caps = &priv->mdev->dev->caps;
226 int err = 0; 227 int err = 0;
227 u64 config = 0; 228 u64 config = 0;
228 u64 mask; 229 u64 mask;
@@ -235,24 +236,24 @@ static void mlx4_en_get_wol(struct net_device *netdev,
235 mask = (priv->port == 1) ? MLX4_DEV_CAP_FLAG_WOL_PORT1 : 236 mask = (priv->port == 1) ? MLX4_DEV_CAP_FLAG_WOL_PORT1 :
236 MLX4_DEV_CAP_FLAG_WOL_PORT2; 237 MLX4_DEV_CAP_FLAG_WOL_PORT2;
237 238
238 if (!(priv->mdev->dev->caps.flags & mask)) { 239 if (!(caps->flags & mask)) {
239 wol->supported = 0; 240 wol->supported = 0;
240 wol->wolopts = 0; 241 wol->wolopts = 0;
241 return; 242 return;
242 } 243 }
243 244
245 if (caps->wol_port[priv->port])
246 wol->supported = WAKE_MAGIC;
247 else
248 wol->supported = 0;
249
244 err = mlx4_wol_read(priv->mdev->dev, &config, priv->port); 250 err = mlx4_wol_read(priv->mdev->dev, &config, priv->port);
245 if (err) { 251 if (err) {
246 en_err(priv, "Failed to get WoL information\n"); 252 en_err(priv, "Failed to get WoL information\n");
247 return; 253 return;
248 } 254 }
249 255
250 if (config & MLX4_EN_WOL_MAGIC) 256 if ((config & MLX4_EN_WOL_ENABLED) && (config & MLX4_EN_WOL_MAGIC))
251 wol->supported = WAKE_MAGIC;
252 else
253 wol->supported = 0;
254
255 if (config & MLX4_EN_WOL_ENABLED)
256 wol->wolopts = WAKE_MAGIC; 257 wol->wolopts = WAKE_MAGIC;
257 else 258 else
258 wol->wolopts = 0; 259 wol->wolopts = 0;
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_rx.c b/drivers/net/ethernet/mellanox/mlx4/en_rx.c
index e5fb89505a13..bf1638044a7a 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_rx.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_rx.c
@@ -574,16 +574,21 @@ static inline __wsum get_fixed_vlan_csum(__wsum hw_checksum,
574 * header, the HW adds it. To address that, we are subtracting the pseudo 574 * header, the HW adds it. To address that, we are subtracting the pseudo
575 * header checksum from the checksum value provided by the HW. 575 * header checksum from the checksum value provided by the HW.
576 */ 576 */
577static void get_fixed_ipv4_csum(__wsum hw_checksum, struct sk_buff *skb, 577static int get_fixed_ipv4_csum(__wsum hw_checksum, struct sk_buff *skb,
578 struct iphdr *iph) 578 struct iphdr *iph)
579{ 579{
580 __u16 length_for_csum = 0; 580 __u16 length_for_csum = 0;
581 __wsum csum_pseudo_header = 0; 581 __wsum csum_pseudo_header = 0;
582 __u8 ipproto = iph->protocol;
583
584 if (unlikely(ipproto == IPPROTO_SCTP))
585 return -1;
582 586
583 length_for_csum = (be16_to_cpu(iph->tot_len) - (iph->ihl << 2)); 587 length_for_csum = (be16_to_cpu(iph->tot_len) - (iph->ihl << 2));
584 csum_pseudo_header = csum_tcpudp_nofold(iph->saddr, iph->daddr, 588 csum_pseudo_header = csum_tcpudp_nofold(iph->saddr, iph->daddr,
585 length_for_csum, iph->protocol, 0); 589 length_for_csum, ipproto, 0);
586 skb->csum = csum_sub(hw_checksum, csum_pseudo_header); 590 skb->csum = csum_sub(hw_checksum, csum_pseudo_header);
591 return 0;
587} 592}
588 593
589#if IS_ENABLED(CONFIG_IPV6) 594#if IS_ENABLED(CONFIG_IPV6)
@@ -594,17 +599,20 @@ static void get_fixed_ipv4_csum(__wsum hw_checksum, struct sk_buff *skb,
594static int get_fixed_ipv6_csum(__wsum hw_checksum, struct sk_buff *skb, 599static int get_fixed_ipv6_csum(__wsum hw_checksum, struct sk_buff *skb,
595 struct ipv6hdr *ipv6h) 600 struct ipv6hdr *ipv6h)
596{ 601{
602 __u8 nexthdr = ipv6h->nexthdr;
597 __wsum csum_pseudo_hdr = 0; 603 __wsum csum_pseudo_hdr = 0;
598 604
599 if (unlikely(ipv6h->nexthdr == IPPROTO_FRAGMENT || 605 if (unlikely(nexthdr == IPPROTO_FRAGMENT ||
600 ipv6h->nexthdr == IPPROTO_HOPOPTS)) 606 nexthdr == IPPROTO_HOPOPTS ||
607 nexthdr == IPPROTO_SCTP))
601 return -1; 608 return -1;
602 hw_checksum = csum_add(hw_checksum, (__force __wsum)htons(ipv6h->nexthdr)); 609 hw_checksum = csum_add(hw_checksum, (__force __wsum)htons(nexthdr));
603 610
604 csum_pseudo_hdr = csum_partial(&ipv6h->saddr, 611 csum_pseudo_hdr = csum_partial(&ipv6h->saddr,
605 sizeof(ipv6h->saddr) + sizeof(ipv6h->daddr), 0); 612 sizeof(ipv6h->saddr) + sizeof(ipv6h->daddr), 0);
606 csum_pseudo_hdr = csum_add(csum_pseudo_hdr, (__force __wsum)ipv6h->payload_len); 613 csum_pseudo_hdr = csum_add(csum_pseudo_hdr, (__force __wsum)ipv6h->payload_len);
607 csum_pseudo_hdr = csum_add(csum_pseudo_hdr, (__force __wsum)ntohs(ipv6h->nexthdr)); 614 csum_pseudo_hdr = csum_add(csum_pseudo_hdr,
615 (__force __wsum)htons(nexthdr));
608 616
609 skb->csum = csum_sub(hw_checksum, csum_pseudo_hdr); 617 skb->csum = csum_sub(hw_checksum, csum_pseudo_hdr);
610 skb->csum = csum_add(skb->csum, csum_partial(ipv6h, sizeof(struct ipv6hdr), 0)); 618 skb->csum = csum_add(skb->csum, csum_partial(ipv6h, sizeof(struct ipv6hdr), 0));
@@ -627,11 +635,10 @@ static int check_csum(struct mlx4_cqe *cqe, struct sk_buff *skb, void *va,
627 } 635 }
628 636
629 if (cqe->status & cpu_to_be16(MLX4_CQE_STATUS_IPV4)) 637 if (cqe->status & cpu_to_be16(MLX4_CQE_STATUS_IPV4))
630 get_fixed_ipv4_csum(hw_checksum, skb, hdr); 638 return get_fixed_ipv4_csum(hw_checksum, skb, hdr);
631#if IS_ENABLED(CONFIG_IPV6) 639#if IS_ENABLED(CONFIG_IPV6)
632 else if (cqe->status & cpu_to_be16(MLX4_CQE_STATUS_IPV6)) 640 if (cqe->status & cpu_to_be16(MLX4_CQE_STATUS_IPV6))
633 if (unlikely(get_fixed_ipv6_csum(hw_checksum, skb, hdr))) 641 return get_fixed_ipv6_csum(hw_checksum, skb, hdr);
634 return -1;
635#endif 642#endif
636 return 0; 643 return 0;
637} 644}
@@ -1042,7 +1049,7 @@ static int mlx4_en_config_rss_qp(struct mlx4_en_priv *priv, int qpn,
1042 if (!context) 1049 if (!context)
1043 return -ENOMEM; 1050 return -ENOMEM;
1044 1051
1045 err = mlx4_qp_alloc(mdev->dev, qpn, qp, GFP_KERNEL); 1052 err = mlx4_qp_alloc(mdev->dev, qpn, qp);
1046 if (err) { 1053 if (err) {
1047 en_err(priv, "Failed to allocate qp #%x\n", qpn); 1054 en_err(priv, "Failed to allocate qp #%x\n", qpn);
1048 goto out; 1055 goto out;
@@ -1086,7 +1093,7 @@ int mlx4_en_create_drop_qp(struct mlx4_en_priv *priv)
1086 en_err(priv, "Failed reserving drop qpn\n"); 1093 en_err(priv, "Failed reserving drop qpn\n");
1087 return err; 1094 return err;
1088 } 1095 }
1089 err = mlx4_qp_alloc(priv->mdev->dev, qpn, &priv->drop_qp, GFP_KERNEL); 1096 err = mlx4_qp_alloc(priv->mdev->dev, qpn, &priv->drop_qp);
1090 if (err) { 1097 if (err) {
1091 en_err(priv, "Failed allocating drop qp\n"); 1098 en_err(priv, "Failed allocating drop qp\n");
1092 mlx4_qp_release_range(priv->mdev->dev, qpn, 1); 1099 mlx4_qp_release_range(priv->mdev->dev, qpn, 1);
@@ -1158,8 +1165,7 @@ int mlx4_en_config_rss_steer(struct mlx4_en_priv *priv)
1158 } 1165 }
1159 1166
1160 /* Configure RSS indirection qp */ 1167 /* Configure RSS indirection qp */
1161 err = mlx4_qp_alloc(mdev->dev, priv->base_qpn, rss_map->indir_qp, 1168 err = mlx4_qp_alloc(mdev->dev, priv->base_qpn, rss_map->indir_qp);
1162 GFP_KERNEL);
1163 if (err) { 1169 if (err) {
1164 en_err(priv, "Failed to allocate RSS indirection QP\n"); 1170 en_err(priv, "Failed to allocate RSS indirection QP\n");
1165 goto rss_err; 1171 goto rss_err;
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_tx.c b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
index 4f3a9b27ce4a..73faa3d77921 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_tx.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
@@ -111,7 +111,7 @@ int mlx4_en_create_tx_ring(struct mlx4_en_priv *priv,
111 goto err_hwq_res; 111 goto err_hwq_res;
112 } 112 }
113 113
114 err = mlx4_qp_alloc(mdev->dev, ring->qpn, &ring->sp_qp, GFP_KERNEL); 114 err = mlx4_qp_alloc(mdev->dev, ring->qpn, &ring->sp_qp);
115 if (err) { 115 if (err) {
116 en_err(priv, "Failed allocating qp %d\n", ring->qpn); 116 en_err(priv, "Failed allocating qp %d\n", ring->qpn);
117 goto err_reserve; 117 goto err_reserve;
diff --git a/drivers/net/ethernet/mellanox/mlx4/fw.c b/drivers/net/ethernet/mellanox/mlx4/fw.c
index 37e84a59e751..041c0ed65929 100644
--- a/drivers/net/ethernet/mellanox/mlx4/fw.c
+++ b/drivers/net/ethernet/mellanox/mlx4/fw.c
@@ -159,8 +159,9 @@ static void dump_dev_cap_flags2(struct mlx4_dev *dev, u64 flags)
159 [32] = "Loopback source checks support", 159 [32] = "Loopback source checks support",
160 [33] = "RoCEv2 support", 160 [33] = "RoCEv2 support",
161 [34] = "DMFS Sniffer support (UC & MC)", 161 [34] = "DMFS Sniffer support (UC & MC)",
162 [35] = "QinQ VST mode support", 162 [35] = "Diag counters per port",
163 [36] = "sl to vl mapping table change event support" 163 [36] = "QinQ VST mode support",
164 [37] = "sl to vl mapping table change event support",
164 }; 165 };
165 int i; 166 int i;
166 167
@@ -764,6 +765,7 @@ int mlx4_QUERY_DEV_CAP(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
764#define QUERY_DEV_CAP_CQ_TS_SUPPORT_OFFSET 0x3e 765#define QUERY_DEV_CAP_CQ_TS_SUPPORT_OFFSET 0x3e
765#define QUERY_DEV_CAP_MAX_PKEY_OFFSET 0x3f 766#define QUERY_DEV_CAP_MAX_PKEY_OFFSET 0x3f
766#define QUERY_DEV_CAP_EXT_FLAGS_OFFSET 0x40 767#define QUERY_DEV_CAP_EXT_FLAGS_OFFSET 0x40
768#define QUERY_DEV_CAP_WOL_OFFSET 0x43
767#define QUERY_DEV_CAP_FLAGS_OFFSET 0x44 769#define QUERY_DEV_CAP_FLAGS_OFFSET 0x44
768#define QUERY_DEV_CAP_RSVD_UAR_OFFSET 0x48 770#define QUERY_DEV_CAP_RSVD_UAR_OFFSET 0x48
769#define QUERY_DEV_CAP_UAR_SZ_OFFSET 0x49 771#define QUERY_DEV_CAP_UAR_SZ_OFFSET 0x49
@@ -920,6 +922,9 @@ int mlx4_QUERY_DEV_CAP(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
920 MLX4_GET(ext_flags, outbox, QUERY_DEV_CAP_EXT_FLAGS_OFFSET); 922 MLX4_GET(ext_flags, outbox, QUERY_DEV_CAP_EXT_FLAGS_OFFSET);
921 MLX4_GET(flags, outbox, QUERY_DEV_CAP_FLAGS_OFFSET); 923 MLX4_GET(flags, outbox, QUERY_DEV_CAP_FLAGS_OFFSET);
922 dev_cap->flags = flags | (u64)ext_flags << 32; 924 dev_cap->flags = flags | (u64)ext_flags << 32;
925 MLX4_GET(field, outbox, QUERY_DEV_CAP_WOL_OFFSET);
926 dev_cap->wol_port[1] = !!(field & 0x20);
927 dev_cap->wol_port[2] = !!(field & 0x40);
923 MLX4_GET(field, outbox, QUERY_DEV_CAP_RSVD_UAR_OFFSET); 928 MLX4_GET(field, outbox, QUERY_DEV_CAP_RSVD_UAR_OFFSET);
924 dev_cap->reserved_uars = field >> 4; 929 dev_cap->reserved_uars = field >> 4;
925 MLX4_GET(field, outbox, QUERY_DEV_CAP_UAR_SZ_OFFSET); 930 MLX4_GET(field, outbox, QUERY_DEV_CAP_UAR_SZ_OFFSET);
diff --git a/drivers/net/ethernet/mellanox/mlx4/fw.h b/drivers/net/ethernet/mellanox/mlx4/fw.h
index 5343a0599253..b52ba01aa486 100644
--- a/drivers/net/ethernet/mellanox/mlx4/fw.h
+++ b/drivers/net/ethernet/mellanox/mlx4/fw.h
@@ -129,6 +129,7 @@ struct mlx4_dev_cap {
129 u32 dmfs_high_rate_qpn_range; 129 u32 dmfs_high_rate_qpn_range;
130 struct mlx4_rate_limit_caps rl_caps; 130 struct mlx4_rate_limit_caps rl_caps;
131 struct mlx4_port_cap port_cap[MLX4_MAX_PORTS + 1]; 131 struct mlx4_port_cap port_cap[MLX4_MAX_PORTS + 1];
132 bool wol_port[MLX4_MAX_PORTS + 1];
132}; 133};
133 134
134struct mlx4_func_cap { 135struct mlx4_func_cap {
diff --git a/drivers/net/ethernet/mellanox/mlx4/icm.c b/drivers/net/ethernet/mellanox/mlx4/icm.c
index e1f9e7cebf8f..5a7816e7c7b4 100644
--- a/drivers/net/ethernet/mellanox/mlx4/icm.c
+++ b/drivers/net/ethernet/mellanox/mlx4/icm.c
@@ -251,8 +251,7 @@ int mlx4_UNMAP_ICM_AUX(struct mlx4_dev *dev)
251 MLX4_CMD_TIME_CLASS_B, MLX4_CMD_NATIVE); 251 MLX4_CMD_TIME_CLASS_B, MLX4_CMD_NATIVE);
252} 252}
253 253
254int mlx4_table_get(struct mlx4_dev *dev, struct mlx4_icm_table *table, u32 obj, 254int mlx4_table_get(struct mlx4_dev *dev, struct mlx4_icm_table *table, u32 obj)
255 gfp_t gfp)
256{ 255{
257 u32 i = (obj & (table->num_obj - 1)) / 256 u32 i = (obj & (table->num_obj - 1)) /
258 (MLX4_TABLE_CHUNK_SIZE / table->obj_size); 257 (MLX4_TABLE_CHUNK_SIZE / table->obj_size);
@@ -266,7 +265,7 @@ int mlx4_table_get(struct mlx4_dev *dev, struct mlx4_icm_table *table, u32 obj,
266 } 265 }
267 266
268 table->icm[i] = mlx4_alloc_icm(dev, MLX4_TABLE_CHUNK_SIZE >> PAGE_SHIFT, 267 table->icm[i] = mlx4_alloc_icm(dev, MLX4_TABLE_CHUNK_SIZE >> PAGE_SHIFT,
269 (table->lowmem ? gfp : GFP_HIGHUSER) | 268 (table->lowmem ? GFP_KERNEL : GFP_HIGHUSER) |
270 __GFP_NOWARN, table->coherent); 269 __GFP_NOWARN, table->coherent);
271 if (!table->icm[i]) { 270 if (!table->icm[i]) {
272 ret = -ENOMEM; 271 ret = -ENOMEM;
@@ -363,7 +362,7 @@ int mlx4_table_get_range(struct mlx4_dev *dev, struct mlx4_icm_table *table,
363 u32 i; 362 u32 i;
364 363
365 for (i = start; i <= end; i += inc) { 364 for (i = start; i <= end; i += inc) {
366 err = mlx4_table_get(dev, table, i, GFP_KERNEL); 365 err = mlx4_table_get(dev, table, i);
367 if (err) 366 if (err)
368 goto fail; 367 goto fail;
369 } 368 }
diff --git a/drivers/net/ethernet/mellanox/mlx4/icm.h b/drivers/net/ethernet/mellanox/mlx4/icm.h
index 0c7364550150..dee67fa39107 100644
--- a/drivers/net/ethernet/mellanox/mlx4/icm.h
+++ b/drivers/net/ethernet/mellanox/mlx4/icm.h
@@ -71,8 +71,7 @@ struct mlx4_icm *mlx4_alloc_icm(struct mlx4_dev *dev, int npages,
71 gfp_t gfp_mask, int coherent); 71 gfp_t gfp_mask, int coherent);
72void mlx4_free_icm(struct mlx4_dev *dev, struct mlx4_icm *icm, int coherent); 72void mlx4_free_icm(struct mlx4_dev *dev, struct mlx4_icm *icm, int coherent);
73 73
74int mlx4_table_get(struct mlx4_dev *dev, struct mlx4_icm_table *table, u32 obj, 74int mlx4_table_get(struct mlx4_dev *dev, struct mlx4_icm_table *table, u32 obj);
75 gfp_t gfp);
76void mlx4_table_put(struct mlx4_dev *dev, struct mlx4_icm_table *table, u32 obj); 75void mlx4_table_put(struct mlx4_dev *dev, struct mlx4_icm_table *table, u32 obj);
77int mlx4_table_get_range(struct mlx4_dev *dev, struct mlx4_icm_table *table, 76int mlx4_table_get_range(struct mlx4_dev *dev, struct mlx4_icm_table *table,
78 u32 start, u32 end); 77 u32 start, u32 end);
diff --git a/drivers/net/ethernet/mellanox/mlx4/main.c b/drivers/net/ethernet/mellanox/mlx4/main.c
index a27c9c13a36e..5fe5cdc51357 100644
--- a/drivers/net/ethernet/mellanox/mlx4/main.c
+++ b/drivers/net/ethernet/mellanox/mlx4/main.c
@@ -424,13 +424,15 @@ static int mlx4_dev_cap(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
424 dev->caps.stat_rate_support = dev_cap->stat_rate_support; 424 dev->caps.stat_rate_support = dev_cap->stat_rate_support;
425 dev->caps.max_gso_sz = dev_cap->max_gso_sz; 425 dev->caps.max_gso_sz = dev_cap->max_gso_sz;
426 dev->caps.max_rss_tbl_sz = dev_cap->max_rss_tbl_sz; 426 dev->caps.max_rss_tbl_sz = dev_cap->max_rss_tbl_sz;
427 dev->caps.wol_port[1] = dev_cap->wol_port[1];
428 dev->caps.wol_port[2] = dev_cap->wol_port[2];
427 429
428 /* Save uar page shift */ 430 /* Save uar page shift */
429 if (!mlx4_is_slave(dev)) { 431 if (!mlx4_is_slave(dev)) {
430 /* Virtual PCI function needs to determine UAR page size from 432 /* Virtual PCI function needs to determine UAR page size from
431 * firmware. Only master PCI function can set the uar page size 433 * firmware. Only master PCI function can set the uar page size
432 */ 434 */
433 if (enable_4k_uar) 435 if (enable_4k_uar || !dev->persist->num_vfs)
434 dev->uar_page_shift = DEFAULT_UAR_PAGE_SHIFT; 436 dev->uar_page_shift = DEFAULT_UAR_PAGE_SHIFT;
435 else 437 else
436 dev->uar_page_shift = PAGE_SHIFT; 438 dev->uar_page_shift = PAGE_SHIFT;
@@ -2275,7 +2277,7 @@ static int mlx4_init_hca(struct mlx4_dev *dev)
2275 2277
2276 dev->caps.max_fmr_maps = (1 << (32 - ilog2(dev->caps.num_mpts))) - 1; 2278 dev->caps.max_fmr_maps = (1 << (32 - ilog2(dev->caps.num_mpts))) - 1;
2277 2279
2278 if (enable_4k_uar) { 2280 if (enable_4k_uar || !dev->persist->num_vfs) {
2279 init_hca.log_uar_sz = ilog2(dev->caps.num_uars) + 2281 init_hca.log_uar_sz = ilog2(dev->caps.num_uars) +
2280 PAGE_SHIFT - DEFAULT_UAR_PAGE_SHIFT; 2282 PAGE_SHIFT - DEFAULT_UAR_PAGE_SHIFT;
2281 init_hca.uar_page_sz = DEFAULT_UAR_PAGE_SHIFT - 12; 2283 init_hca.uar_page_sz = DEFAULT_UAR_PAGE_SHIFT - 12;
diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4.h b/drivers/net/ethernet/mellanox/mlx4/mlx4.h
index 30616cd0140d..706d7f21ac5c 100644
--- a/drivers/net/ethernet/mellanox/mlx4/mlx4.h
+++ b/drivers/net/ethernet/mellanox/mlx4/mlx4.h
@@ -969,7 +969,7 @@ void mlx4_cleanup_cq_table(struct mlx4_dev *dev);
969void mlx4_cleanup_qp_table(struct mlx4_dev *dev); 969void mlx4_cleanup_qp_table(struct mlx4_dev *dev);
970void mlx4_cleanup_srq_table(struct mlx4_dev *dev); 970void mlx4_cleanup_srq_table(struct mlx4_dev *dev);
971void mlx4_cleanup_mcg_table(struct mlx4_dev *dev); 971void mlx4_cleanup_mcg_table(struct mlx4_dev *dev);
972int __mlx4_qp_alloc_icm(struct mlx4_dev *dev, int qpn, gfp_t gfp); 972int __mlx4_qp_alloc_icm(struct mlx4_dev *dev, int qpn);
973void __mlx4_qp_free_icm(struct mlx4_dev *dev, int qpn); 973void __mlx4_qp_free_icm(struct mlx4_dev *dev, int qpn);
974int __mlx4_cq_alloc_icm(struct mlx4_dev *dev, int *cqn); 974int __mlx4_cq_alloc_icm(struct mlx4_dev *dev, int *cqn);
975void __mlx4_cq_free_icm(struct mlx4_dev *dev, int cqn); 975void __mlx4_cq_free_icm(struct mlx4_dev *dev, int cqn);
@@ -977,7 +977,7 @@ int __mlx4_srq_alloc_icm(struct mlx4_dev *dev, int *srqn);
977void __mlx4_srq_free_icm(struct mlx4_dev *dev, int srqn); 977void __mlx4_srq_free_icm(struct mlx4_dev *dev, int srqn);
978int __mlx4_mpt_reserve(struct mlx4_dev *dev); 978int __mlx4_mpt_reserve(struct mlx4_dev *dev);
979void __mlx4_mpt_release(struct mlx4_dev *dev, u32 index); 979void __mlx4_mpt_release(struct mlx4_dev *dev, u32 index);
980int __mlx4_mpt_alloc_icm(struct mlx4_dev *dev, u32 index, gfp_t gfp); 980int __mlx4_mpt_alloc_icm(struct mlx4_dev *dev, u32 index);
981void __mlx4_mpt_free_icm(struct mlx4_dev *dev, u32 index); 981void __mlx4_mpt_free_icm(struct mlx4_dev *dev, u32 index);
982u32 __mlx4_alloc_mtt_range(struct mlx4_dev *dev, int order); 982u32 __mlx4_alloc_mtt_range(struct mlx4_dev *dev, int order);
983void __mlx4_free_mtt_range(struct mlx4_dev *dev, u32 first_seg, int order); 983void __mlx4_free_mtt_range(struct mlx4_dev *dev, u32 first_seg, int order);
diff --git a/drivers/net/ethernet/mellanox/mlx4/mr.c b/drivers/net/ethernet/mellanox/mlx4/mr.c
index ce852ca22a96..24282cd017d3 100644
--- a/drivers/net/ethernet/mellanox/mlx4/mr.c
+++ b/drivers/net/ethernet/mellanox/mlx4/mr.c
@@ -479,14 +479,14 @@ static void mlx4_mpt_release(struct mlx4_dev *dev, u32 index)
479 __mlx4_mpt_release(dev, index); 479 __mlx4_mpt_release(dev, index);
480} 480}
481 481
482int __mlx4_mpt_alloc_icm(struct mlx4_dev *dev, u32 index, gfp_t gfp) 482int __mlx4_mpt_alloc_icm(struct mlx4_dev *dev, u32 index)
483{ 483{
484 struct mlx4_mr_table *mr_table = &mlx4_priv(dev)->mr_table; 484 struct mlx4_mr_table *mr_table = &mlx4_priv(dev)->mr_table;
485 485
486 return mlx4_table_get(dev, &mr_table->dmpt_table, index, gfp); 486 return mlx4_table_get(dev, &mr_table->dmpt_table, index);
487} 487}
488 488
489static int mlx4_mpt_alloc_icm(struct mlx4_dev *dev, u32 index, gfp_t gfp) 489static int mlx4_mpt_alloc_icm(struct mlx4_dev *dev, u32 index)
490{ 490{
491 u64 param = 0; 491 u64 param = 0;
492 492
@@ -497,7 +497,7 @@ static int mlx4_mpt_alloc_icm(struct mlx4_dev *dev, u32 index, gfp_t gfp)
497 MLX4_CMD_TIME_CLASS_A, 497 MLX4_CMD_TIME_CLASS_A,
498 MLX4_CMD_WRAPPED); 498 MLX4_CMD_WRAPPED);
499 } 499 }
500 return __mlx4_mpt_alloc_icm(dev, index, gfp); 500 return __mlx4_mpt_alloc_icm(dev, index);
501} 501}
502 502
503void __mlx4_mpt_free_icm(struct mlx4_dev *dev, u32 index) 503void __mlx4_mpt_free_icm(struct mlx4_dev *dev, u32 index)
@@ -629,7 +629,7 @@ int mlx4_mr_enable(struct mlx4_dev *dev, struct mlx4_mr *mr)
629 struct mlx4_mpt_entry *mpt_entry; 629 struct mlx4_mpt_entry *mpt_entry;
630 int err; 630 int err;
631 631
632 err = mlx4_mpt_alloc_icm(dev, key_to_hw_index(mr->key), GFP_KERNEL); 632 err = mlx4_mpt_alloc_icm(dev, key_to_hw_index(mr->key));
633 if (err) 633 if (err)
634 return err; 634 return err;
635 635
@@ -787,14 +787,13 @@ int mlx4_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
787EXPORT_SYMBOL_GPL(mlx4_write_mtt); 787EXPORT_SYMBOL_GPL(mlx4_write_mtt);
788 788
789int mlx4_buf_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt, 789int mlx4_buf_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
790 struct mlx4_buf *buf, gfp_t gfp) 790 struct mlx4_buf *buf)
791{ 791{
792 u64 *page_list; 792 u64 *page_list;
793 int err; 793 int err;
794 int i; 794 int i;
795 795
796 page_list = kmalloc(buf->npages * sizeof *page_list, 796 page_list = kcalloc(buf->npages, sizeof(*page_list), GFP_KERNEL);
797 gfp);
798 if (!page_list) 797 if (!page_list)
799 return -ENOMEM; 798 return -ENOMEM;
800 799
@@ -841,7 +840,7 @@ int mlx4_mw_enable(struct mlx4_dev *dev, struct mlx4_mw *mw)
841 struct mlx4_mpt_entry *mpt_entry; 840 struct mlx4_mpt_entry *mpt_entry;
842 int err; 841 int err;
843 842
844 err = mlx4_mpt_alloc_icm(dev, key_to_hw_index(mw->key), GFP_KERNEL); 843 err = mlx4_mpt_alloc_icm(dev, key_to_hw_index(mw->key));
845 if (err) 844 if (err)
846 return err; 845 return err;
847 846
diff --git a/drivers/net/ethernet/mellanox/mlx4/qp.c b/drivers/net/ethernet/mellanox/mlx4/qp.c
index 5a310d313e94..26747212526b 100644
--- a/drivers/net/ethernet/mellanox/mlx4/qp.c
+++ b/drivers/net/ethernet/mellanox/mlx4/qp.c
@@ -301,29 +301,29 @@ void mlx4_qp_release_range(struct mlx4_dev *dev, int base_qpn, int cnt)
301} 301}
302EXPORT_SYMBOL_GPL(mlx4_qp_release_range); 302EXPORT_SYMBOL_GPL(mlx4_qp_release_range);
303 303
304int __mlx4_qp_alloc_icm(struct mlx4_dev *dev, int qpn, gfp_t gfp) 304int __mlx4_qp_alloc_icm(struct mlx4_dev *dev, int qpn)
305{ 305{
306 struct mlx4_priv *priv = mlx4_priv(dev); 306 struct mlx4_priv *priv = mlx4_priv(dev);
307 struct mlx4_qp_table *qp_table = &priv->qp_table; 307 struct mlx4_qp_table *qp_table = &priv->qp_table;
308 int err; 308 int err;
309 309
310 err = mlx4_table_get(dev, &qp_table->qp_table, qpn, gfp); 310 err = mlx4_table_get(dev, &qp_table->qp_table, qpn);
311 if (err) 311 if (err)
312 goto err_out; 312 goto err_out;
313 313
314 err = mlx4_table_get(dev, &qp_table->auxc_table, qpn, gfp); 314 err = mlx4_table_get(dev, &qp_table->auxc_table, qpn);
315 if (err) 315 if (err)
316 goto err_put_qp; 316 goto err_put_qp;
317 317
318 err = mlx4_table_get(dev, &qp_table->altc_table, qpn, gfp); 318 err = mlx4_table_get(dev, &qp_table->altc_table, qpn);
319 if (err) 319 if (err)
320 goto err_put_auxc; 320 goto err_put_auxc;
321 321
322 err = mlx4_table_get(dev, &qp_table->rdmarc_table, qpn, gfp); 322 err = mlx4_table_get(dev, &qp_table->rdmarc_table, qpn);
323 if (err) 323 if (err)
324 goto err_put_altc; 324 goto err_put_altc;
325 325
326 err = mlx4_table_get(dev, &qp_table->cmpt_table, qpn, gfp); 326 err = mlx4_table_get(dev, &qp_table->cmpt_table, qpn);
327 if (err) 327 if (err)
328 goto err_put_rdmarc; 328 goto err_put_rdmarc;
329 329
@@ -345,7 +345,7 @@ err_out:
345 return err; 345 return err;
346} 346}
347 347
348static int mlx4_qp_alloc_icm(struct mlx4_dev *dev, int qpn, gfp_t gfp) 348static int mlx4_qp_alloc_icm(struct mlx4_dev *dev, int qpn)
349{ 349{
350 u64 param = 0; 350 u64 param = 0;
351 351
@@ -355,7 +355,7 @@ static int mlx4_qp_alloc_icm(struct mlx4_dev *dev, int qpn, gfp_t gfp)
355 MLX4_CMD_ALLOC_RES, MLX4_CMD_TIME_CLASS_A, 355 MLX4_CMD_ALLOC_RES, MLX4_CMD_TIME_CLASS_A,
356 MLX4_CMD_WRAPPED); 356 MLX4_CMD_WRAPPED);
357 } 357 }
358 return __mlx4_qp_alloc_icm(dev, qpn, gfp); 358 return __mlx4_qp_alloc_icm(dev, qpn);
359} 359}
360 360
361void __mlx4_qp_free_icm(struct mlx4_dev *dev, int qpn) 361void __mlx4_qp_free_icm(struct mlx4_dev *dev, int qpn)
@@ -397,7 +397,7 @@ struct mlx4_qp *mlx4_qp_lookup(struct mlx4_dev *dev, u32 qpn)
397 return qp; 397 return qp;
398} 398}
399 399
400int mlx4_qp_alloc(struct mlx4_dev *dev, int qpn, struct mlx4_qp *qp, gfp_t gfp) 400int mlx4_qp_alloc(struct mlx4_dev *dev, int qpn, struct mlx4_qp *qp)
401{ 401{
402 struct mlx4_priv *priv = mlx4_priv(dev); 402 struct mlx4_priv *priv = mlx4_priv(dev);
403 struct mlx4_qp_table *qp_table = &priv->qp_table; 403 struct mlx4_qp_table *qp_table = &priv->qp_table;
@@ -408,7 +408,7 @@ int mlx4_qp_alloc(struct mlx4_dev *dev, int qpn, struct mlx4_qp *qp, gfp_t gfp)
408 408
409 qp->qpn = qpn; 409 qp->qpn = qpn;
410 410
411 err = mlx4_qp_alloc_icm(dev, qpn, gfp); 411 err = mlx4_qp_alloc_icm(dev, qpn);
412 if (err) 412 if (err)
413 return err; 413 return err;
414 414
diff --git a/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c b/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c
index 812783865205..215e21c3dc8a 100644
--- a/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c
+++ b/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c
@@ -1822,7 +1822,7 @@ static int qp_alloc_res(struct mlx4_dev *dev, int slave, int op, int cmd,
1822 return err; 1822 return err;
1823 1823
1824 if (!fw_reserved(dev, qpn)) { 1824 if (!fw_reserved(dev, qpn)) {
1825 err = __mlx4_qp_alloc_icm(dev, qpn, GFP_KERNEL); 1825 err = __mlx4_qp_alloc_icm(dev, qpn);
1826 if (err) { 1826 if (err) {
1827 res_abort_move(dev, slave, RES_QP, qpn); 1827 res_abort_move(dev, slave, RES_QP, qpn);
1828 return err; 1828 return err;
@@ -1909,7 +1909,7 @@ static int mpt_alloc_res(struct mlx4_dev *dev, int slave, int op, int cmd,
1909 if (err) 1909 if (err)
1910 return err; 1910 return err;
1911 1911
1912 err = __mlx4_mpt_alloc_icm(dev, mpt->key, GFP_KERNEL); 1912 err = __mlx4_mpt_alloc_icm(dev, mpt->key);
1913 if (err) { 1913 if (err) {
1914 res_abort_move(dev, slave, RES_MPT, id); 1914 res_abort_move(dev, slave, RES_MPT, id);
1915 return err; 1915 return err;
diff --git a/drivers/net/ethernet/mellanox/mlx4/srq.c b/drivers/net/ethernet/mellanox/mlx4/srq.c
index f44d089e2ca6..bedf52126824 100644
--- a/drivers/net/ethernet/mellanox/mlx4/srq.c
+++ b/drivers/net/ethernet/mellanox/mlx4/srq.c
@@ -100,11 +100,11 @@ int __mlx4_srq_alloc_icm(struct mlx4_dev *dev, int *srqn)
100 if (*srqn == -1) 100 if (*srqn == -1)
101 return -ENOMEM; 101 return -ENOMEM;
102 102
103 err = mlx4_table_get(dev, &srq_table->table, *srqn, GFP_KERNEL); 103 err = mlx4_table_get(dev, &srq_table->table, *srqn);
104 if (err) 104 if (err)
105 goto err_out; 105 goto err_out;
106 106
107 err = mlx4_table_get(dev, &srq_table->cmpt_table, *srqn, GFP_KERNEL); 107 err = mlx4_table_get(dev, &srq_table->cmpt_table, *srqn);
108 if (err) 108 if (err)
109 goto err_put; 109 goto err_put;
110 return 0; 110 return 0;
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/cmd.c b/drivers/net/ethernet/mellanox/mlx5/core/cmd.c
index f5a2c605749f..31cbe5e86a01 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/cmd.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/cmd.c
@@ -786,6 +786,10 @@ static void cb_timeout_handler(struct work_struct *work)
786 mlx5_cmd_comp_handler(dev, 1UL << ent->idx, true); 786 mlx5_cmd_comp_handler(dev, 1UL << ent->idx, true);
787} 787}
788 788
789static void free_msg(struct mlx5_core_dev *dev, struct mlx5_cmd_msg *msg);
790static void mlx5_free_cmd_msg(struct mlx5_core_dev *dev,
791 struct mlx5_cmd_msg *msg);
792
789static void cmd_work_handler(struct work_struct *work) 793static void cmd_work_handler(struct work_struct *work)
790{ 794{
791 struct mlx5_cmd_work_ent *ent = container_of(work, struct mlx5_cmd_work_ent, work); 795 struct mlx5_cmd_work_ent *ent = container_of(work, struct mlx5_cmd_work_ent, work);
@@ -796,17 +800,28 @@ static void cmd_work_handler(struct work_struct *work)
796 struct semaphore *sem; 800 struct semaphore *sem;
797 unsigned long flags; 801 unsigned long flags;
798 bool poll_cmd = ent->polling; 802 bool poll_cmd = ent->polling;
803 int alloc_ret;
799 804
800 805
801 sem = ent->page_queue ? &cmd->pages_sem : &cmd->sem; 806 sem = ent->page_queue ? &cmd->pages_sem : &cmd->sem;
802 down(sem); 807 down(sem);
803 if (!ent->page_queue) { 808 if (!ent->page_queue) {
804 ent->idx = alloc_ent(cmd); 809 alloc_ret = alloc_ent(cmd);
805 if (ent->idx < 0) { 810 if (alloc_ret < 0) {
806 mlx5_core_err(dev, "failed to allocate command entry\n"); 811 mlx5_core_err(dev, "failed to allocate command entry\n");
812 if (ent->callback) {
813 ent->callback(-EAGAIN, ent->context);
814 mlx5_free_cmd_msg(dev, ent->out);
815 free_msg(dev, ent->in);
816 free_cmd(ent);
817 } else {
818 ent->ret = -EAGAIN;
819 complete(&ent->done);
820 }
807 up(sem); 821 up(sem);
808 return; 822 return;
809 } 823 }
824 ent->idx = alloc_ret;
810 } else { 825 } else {
811 ent->idx = cmd->max_reg_cmds; 826 ent->idx = cmd->max_reg_cmds;
812 spin_lock_irqsave(&cmd->alloc_lock, flags); 827 spin_lock_irqsave(&cmd->alloc_lock, flags);
@@ -967,7 +982,7 @@ static int mlx5_cmd_invoke(struct mlx5_core_dev *dev, struct mlx5_cmd_msg *in,
967 982
968 err = wait_func(dev, ent); 983 err = wait_func(dev, ent);
969 if (err == -ETIMEDOUT) 984 if (err == -ETIMEDOUT)
970 goto out_free; 985 goto out;
971 986
972 ds = ent->ts2 - ent->ts1; 987 ds = ent->ts2 - ent->ts1;
973 op = MLX5_GET(mbox_in, in->first.data, opcode); 988 op = MLX5_GET(mbox_in, in->first.data, opcode);
@@ -1430,6 +1445,7 @@ void mlx5_cmd_comp_handler(struct mlx5_core_dev *dev, u64 vec, bool forced)
1430 mlx5_core_err(dev, "Command completion arrived after timeout (entry idx = %d).\n", 1445 mlx5_core_err(dev, "Command completion arrived after timeout (entry idx = %d).\n",
1431 ent->idx); 1446 ent->idx);
1432 free_ent(cmd, ent->idx); 1447 free_ent(cmd, ent->idx);
1448 free_cmd(ent);
1433 } 1449 }
1434 continue; 1450 continue;
1435 } 1451 }
@@ -1488,7 +1504,8 @@ void mlx5_cmd_comp_handler(struct mlx5_core_dev *dev, u64 vec, bool forced)
1488 free_msg(dev, ent->in); 1504 free_msg(dev, ent->in);
1489 1505
1490 err = err ? err : ent->status; 1506 err = err ? err : ent->status;
1491 free_cmd(ent); 1507 if (!forced)
1508 free_cmd(ent);
1492 callback(err, context); 1509 callback(err, context);
1493 } else { 1510 } else {
1494 complete(&ent->done); 1511 complete(&ent->done);
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/ethernet/mellanox/mlx5/core/en.h
index e1b7ddfecd01..0039b4725405 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en.h
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h
@@ -266,6 +266,14 @@ struct mlx5e_dcbx {
266}; 266};
267#endif 267#endif
268 268
269#define MAX_PIN_NUM 8
270struct mlx5e_pps {
271 u8 pin_caps[MAX_PIN_NUM];
272 struct work_struct out_work;
273 u64 start[MAX_PIN_NUM];
274 u8 enabled;
275};
276
269struct mlx5e_tstamp { 277struct mlx5e_tstamp {
270 rwlock_t lock; 278 rwlock_t lock;
271 struct cyclecounter cycles; 279 struct cyclecounter cycles;
@@ -277,7 +285,7 @@ struct mlx5e_tstamp {
277 struct mlx5_core_dev *mdev; 285 struct mlx5_core_dev *mdev;
278 struct ptp_clock *ptp; 286 struct ptp_clock *ptp;
279 struct ptp_clock_info ptp_info; 287 struct ptp_clock_info ptp_info;
280 u8 *pps_pin_caps; 288 struct mlx5e_pps pps_info;
281}; 289};
282 290
283enum { 291enum {
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_clock.c b/drivers/net/ethernet/mellanox/mlx5/core/en_clock.c
index 66f432385dbb..84dd63e74041 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_clock.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_clock.c
@@ -53,6 +53,15 @@ enum {
53 MLX5E_EVENT_MODE_ONCE_TILL_ARM = 0x2, 53 MLX5E_EVENT_MODE_ONCE_TILL_ARM = 0x2,
54}; 54};
55 55
56enum {
57 MLX5E_MTPPS_FS_ENABLE = BIT(0x0),
58 MLX5E_MTPPS_FS_PATTERN = BIT(0x2),
59 MLX5E_MTPPS_FS_PIN_MODE = BIT(0x3),
60 MLX5E_MTPPS_FS_TIME_STAMP = BIT(0x4),
61 MLX5E_MTPPS_FS_OUT_PULSE_DURATION = BIT(0x5),
62 MLX5E_MTPPS_FS_ENH_OUT_PER_ADJ = BIT(0x7),
63};
64
56void mlx5e_fill_hwstamp(struct mlx5e_tstamp *tstamp, u64 timestamp, 65void mlx5e_fill_hwstamp(struct mlx5e_tstamp *tstamp, u64 timestamp,
57 struct skb_shared_hwtstamps *hwts) 66 struct skb_shared_hwtstamps *hwts)
58{ 67{
@@ -73,17 +82,46 @@ static u64 mlx5e_read_internal_timer(const struct cyclecounter *cc)
73 return mlx5_read_internal_timer(tstamp->mdev) & cc->mask; 82 return mlx5_read_internal_timer(tstamp->mdev) & cc->mask;
74} 83}
75 84
85static void mlx5e_pps_out(struct work_struct *work)
86{
87 struct mlx5e_pps *pps_info = container_of(work, struct mlx5e_pps,
88 out_work);
89 struct mlx5e_tstamp *tstamp = container_of(pps_info, struct mlx5e_tstamp,
90 pps_info);
91 u32 in[MLX5_ST_SZ_DW(mtpps_reg)] = {0};
92 unsigned long flags;
93 int i;
94
95 for (i = 0; i < tstamp->ptp_info.n_pins; i++) {
96 u64 tstart;
97
98 write_lock_irqsave(&tstamp->lock, flags);
99 tstart = tstamp->pps_info.start[i];
100 tstamp->pps_info.start[i] = 0;
101 write_unlock_irqrestore(&tstamp->lock, flags);
102 if (!tstart)
103 continue;
104
105 MLX5_SET(mtpps_reg, in, pin, i);
106 MLX5_SET64(mtpps_reg, in, time_stamp, tstart);
107 MLX5_SET(mtpps_reg, in, field_select, MLX5E_MTPPS_FS_TIME_STAMP);
108 mlx5_set_mtpps(tstamp->mdev, in, sizeof(in));
109 }
110}
111
76static void mlx5e_timestamp_overflow(struct work_struct *work) 112static void mlx5e_timestamp_overflow(struct work_struct *work)
77{ 113{
78 struct delayed_work *dwork = to_delayed_work(work); 114 struct delayed_work *dwork = to_delayed_work(work);
79 struct mlx5e_tstamp *tstamp = container_of(dwork, struct mlx5e_tstamp, 115 struct mlx5e_tstamp *tstamp = container_of(dwork, struct mlx5e_tstamp,
80 overflow_work); 116 overflow_work);
117 struct mlx5e_priv *priv = container_of(tstamp, struct mlx5e_priv, tstamp);
81 unsigned long flags; 118 unsigned long flags;
82 119
83 write_lock_irqsave(&tstamp->lock, flags); 120 write_lock_irqsave(&tstamp->lock, flags);
84 timecounter_read(&tstamp->clock); 121 timecounter_read(&tstamp->clock);
85 write_unlock_irqrestore(&tstamp->lock, flags); 122 write_unlock_irqrestore(&tstamp->lock, flags);
86 schedule_delayed_work(&tstamp->overflow_work, tstamp->overflow_period); 123 queue_delayed_work(priv->wq, &tstamp->overflow_work,
124 msecs_to_jiffies(tstamp->overflow_period * 1000));
87} 125}
88 126
89int mlx5e_hwstamp_set(struct mlx5e_priv *priv, struct ifreq *ifr) 127int mlx5e_hwstamp_set(struct mlx5e_priv *priv, struct ifreq *ifr)
@@ -213,18 +251,6 @@ static int mlx5e_ptp_adjfreq(struct ptp_clock_info *ptp, s32 delta)
213 int neg_adj = 0; 251 int neg_adj = 0;
214 struct mlx5e_tstamp *tstamp = container_of(ptp, struct mlx5e_tstamp, 252 struct mlx5e_tstamp *tstamp = container_of(ptp, struct mlx5e_tstamp,
215 ptp_info); 253 ptp_info);
216 struct mlx5e_priv *priv =
217 container_of(tstamp, struct mlx5e_priv, tstamp);
218
219 if (MLX5_CAP_GEN(priv->mdev, pps_modify)) {
220 u32 in[MLX5_ST_SZ_DW(mtpps_reg)] = {0};
221
222 /* For future use need to add a loop for finding all 1PPS out pins */
223 MLX5_SET(mtpps_reg, in, pin_mode, MLX5E_PIN_MODE_OUT);
224 MLX5_SET(mtpps_reg, in, out_periodic_adjustment, delta & 0xFFFF);
225
226 mlx5_set_mtpps(priv->mdev, in, sizeof(in));
227 }
228 254
229 if (delta < 0) { 255 if (delta < 0) {
230 neg_adj = 1; 256 neg_adj = 1;
@@ -253,12 +279,13 @@ static int mlx5e_extts_configure(struct ptp_clock_info *ptp,
253 struct mlx5e_priv *priv = 279 struct mlx5e_priv *priv =
254 container_of(tstamp, struct mlx5e_priv, tstamp); 280 container_of(tstamp, struct mlx5e_priv, tstamp);
255 u32 in[MLX5_ST_SZ_DW(mtpps_reg)] = {0}; 281 u32 in[MLX5_ST_SZ_DW(mtpps_reg)] = {0};
282 u32 field_select = 0;
283 u8 pin_mode = 0;
256 u8 pattern = 0; 284 u8 pattern = 0;
257 int pin = -1; 285 int pin = -1;
258 int err = 0; 286 int err = 0;
259 287
260 if (!MLX5_CAP_GEN(priv->mdev, pps) || 288 if (!MLX5_PPS_CAP(priv->mdev))
261 !MLX5_CAP_GEN(priv->mdev, pps_modify))
262 return -EOPNOTSUPP; 289 return -EOPNOTSUPP;
263 290
264 if (rq->extts.index >= tstamp->ptp_info.n_pins) 291 if (rq->extts.index >= tstamp->ptp_info.n_pins)
@@ -268,15 +295,21 @@ static int mlx5e_extts_configure(struct ptp_clock_info *ptp,
268 pin = ptp_find_pin(tstamp->ptp, PTP_PF_EXTTS, rq->extts.index); 295 pin = ptp_find_pin(tstamp->ptp, PTP_PF_EXTTS, rq->extts.index);
269 if (pin < 0) 296 if (pin < 0)
270 return -EBUSY; 297 return -EBUSY;
298 pin_mode = MLX5E_PIN_MODE_IN;
299 pattern = !!(rq->extts.flags & PTP_FALLING_EDGE);
300 field_select = MLX5E_MTPPS_FS_PIN_MODE |
301 MLX5E_MTPPS_FS_PATTERN |
302 MLX5E_MTPPS_FS_ENABLE;
303 } else {
304 pin = rq->extts.index;
305 field_select = MLX5E_MTPPS_FS_ENABLE;
271 } 306 }
272 307
273 if (rq->extts.flags & PTP_FALLING_EDGE)
274 pattern = 1;
275
276 MLX5_SET(mtpps_reg, in, pin, pin); 308 MLX5_SET(mtpps_reg, in, pin, pin);
277 MLX5_SET(mtpps_reg, in, pin_mode, MLX5E_PIN_MODE_IN); 309 MLX5_SET(mtpps_reg, in, pin_mode, pin_mode);
278 MLX5_SET(mtpps_reg, in, pattern, pattern); 310 MLX5_SET(mtpps_reg, in, pattern, pattern);
279 MLX5_SET(mtpps_reg, in, enable, on); 311 MLX5_SET(mtpps_reg, in, enable, on);
312 MLX5_SET(mtpps_reg, in, field_select, field_select);
280 313
281 err = mlx5_set_mtpps(priv->mdev, in, sizeof(in)); 314 err = mlx5_set_mtpps(priv->mdev, in, sizeof(in));
282 if (err) 315 if (err)
@@ -295,14 +328,18 @@ static int mlx5e_perout_configure(struct ptp_clock_info *ptp,
295 struct mlx5e_priv *priv = 328 struct mlx5e_priv *priv =
296 container_of(tstamp, struct mlx5e_priv, tstamp); 329 container_of(tstamp, struct mlx5e_priv, tstamp);
297 u32 in[MLX5_ST_SZ_DW(mtpps_reg)] = {0}; 330 u32 in[MLX5_ST_SZ_DW(mtpps_reg)] = {0};
298 u64 nsec_now, nsec_delta, time_stamp; 331 u64 nsec_now, nsec_delta, time_stamp = 0;
299 u64 cycles_now, cycles_delta; 332 u64 cycles_now, cycles_delta;
300 struct timespec64 ts; 333 struct timespec64 ts;
301 unsigned long flags; 334 unsigned long flags;
335 u32 field_select = 0;
336 u8 pin_mode = 0;
337 u8 pattern = 0;
302 int pin = -1; 338 int pin = -1;
339 int err = 0;
303 s64 ns; 340 s64 ns;
304 341
305 if (!MLX5_CAP_GEN(priv->mdev, pps_modify)) 342 if (!MLX5_PPS_CAP(priv->mdev))
306 return -EOPNOTSUPP; 343 return -EOPNOTSUPP;
307 344
308 if (rq->perout.index >= tstamp->ptp_info.n_pins) 345 if (rq->perout.index >= tstamp->ptp_info.n_pins)
@@ -313,32 +350,60 @@ static int mlx5e_perout_configure(struct ptp_clock_info *ptp,
313 rq->perout.index); 350 rq->perout.index);
314 if (pin < 0) 351 if (pin < 0)
315 return -EBUSY; 352 return -EBUSY;
316 }
317 353
318 ts.tv_sec = rq->perout.period.sec; 354 pin_mode = MLX5E_PIN_MODE_OUT;
319 ts.tv_nsec = rq->perout.period.nsec; 355 pattern = MLX5E_OUT_PATTERN_PERIODIC;
320 ns = timespec64_to_ns(&ts); 356 ts.tv_sec = rq->perout.period.sec;
321 if (on) 357 ts.tv_nsec = rq->perout.period.nsec;
358 ns = timespec64_to_ns(&ts);
359
322 if ((ns >> 1) != 500000000LL) 360 if ((ns >> 1) != 500000000LL)
323 return -EINVAL; 361 return -EINVAL;
324 ts.tv_sec = rq->perout.start.sec; 362
325 ts.tv_nsec = rq->perout.start.nsec; 363 ts.tv_sec = rq->perout.start.sec;
326 ns = timespec64_to_ns(&ts); 364 ts.tv_nsec = rq->perout.start.nsec;
327 cycles_now = mlx5_read_internal_timer(tstamp->mdev); 365 ns = timespec64_to_ns(&ts);
328 write_lock_irqsave(&tstamp->lock, flags); 366 cycles_now = mlx5_read_internal_timer(tstamp->mdev);
329 nsec_now = timecounter_cyc2time(&tstamp->clock, cycles_now); 367 write_lock_irqsave(&tstamp->lock, flags);
330 nsec_delta = ns - nsec_now; 368 nsec_now = timecounter_cyc2time(&tstamp->clock, cycles_now);
331 cycles_delta = div64_u64(nsec_delta << tstamp->cycles.shift, 369 nsec_delta = ns - nsec_now;
332 tstamp->cycles.mult); 370 cycles_delta = div64_u64(nsec_delta << tstamp->cycles.shift,
333 write_unlock_irqrestore(&tstamp->lock, flags); 371 tstamp->cycles.mult);
334 time_stamp = cycles_now + cycles_delta; 372 write_unlock_irqrestore(&tstamp->lock, flags);
373 time_stamp = cycles_now + cycles_delta;
374 field_select = MLX5E_MTPPS_FS_PIN_MODE |
375 MLX5E_MTPPS_FS_PATTERN |
376 MLX5E_MTPPS_FS_ENABLE |
377 MLX5E_MTPPS_FS_TIME_STAMP;
378 } else {
379 pin = rq->perout.index;
380 field_select = MLX5E_MTPPS_FS_ENABLE;
381 }
382
335 MLX5_SET(mtpps_reg, in, pin, pin); 383 MLX5_SET(mtpps_reg, in, pin, pin);
336 MLX5_SET(mtpps_reg, in, pin_mode, MLX5E_PIN_MODE_OUT); 384 MLX5_SET(mtpps_reg, in, pin_mode, pin_mode);
337 MLX5_SET(mtpps_reg, in, pattern, MLX5E_OUT_PATTERN_PERIODIC); 385 MLX5_SET(mtpps_reg, in, pattern, pattern);
338 MLX5_SET(mtpps_reg, in, enable, on); 386 MLX5_SET(mtpps_reg, in, enable, on);
339 MLX5_SET64(mtpps_reg, in, time_stamp, time_stamp); 387 MLX5_SET64(mtpps_reg, in, time_stamp, time_stamp);
388 MLX5_SET(mtpps_reg, in, field_select, field_select);
389
390 err = mlx5_set_mtpps(priv->mdev, in, sizeof(in));
391 if (err)
392 return err;
340 393
341 return mlx5_set_mtpps(priv->mdev, in, sizeof(in)); 394 return mlx5_set_mtppse(priv->mdev, pin, 0,
395 MLX5E_EVENT_MODE_REPETETIVE & on);
396}
397
398static int mlx5e_pps_configure(struct ptp_clock_info *ptp,
399 struct ptp_clock_request *rq,
400 int on)
401{
402 struct mlx5e_tstamp *tstamp =
403 container_of(ptp, struct mlx5e_tstamp, ptp_info);
404
405 tstamp->pps_info.enabled = !!on;
406 return 0;
342} 407}
343 408
344static int mlx5e_ptp_enable(struct ptp_clock_info *ptp, 409static int mlx5e_ptp_enable(struct ptp_clock_info *ptp,
@@ -350,6 +415,8 @@ static int mlx5e_ptp_enable(struct ptp_clock_info *ptp,
350 return mlx5e_extts_configure(ptp, rq, on); 415 return mlx5e_extts_configure(ptp, rq, on);
351 case PTP_CLK_REQ_PEROUT: 416 case PTP_CLK_REQ_PEROUT:
352 return mlx5e_perout_configure(ptp, rq, on); 417 return mlx5e_perout_configure(ptp, rq, on);
418 case PTP_CLK_REQ_PPS:
419 return mlx5e_pps_configure(ptp, rq, on);
353 default: 420 default:
354 return -EOPNOTSUPP; 421 return -EOPNOTSUPP;
355 } 422 }
@@ -395,6 +462,7 @@ static int mlx5e_init_pin_config(struct mlx5e_tstamp *tstamp)
395 return -ENOMEM; 462 return -ENOMEM;
396 tstamp->ptp_info.enable = mlx5e_ptp_enable; 463 tstamp->ptp_info.enable = mlx5e_ptp_enable;
397 tstamp->ptp_info.verify = mlx5e_ptp_verify; 464 tstamp->ptp_info.verify = mlx5e_ptp_verify;
465 tstamp->ptp_info.pps = 1;
398 466
399 for (i = 0; i < tstamp->ptp_info.n_pins; i++) { 467 for (i = 0; i < tstamp->ptp_info.n_pins; i++) {
400 snprintf(tstamp->ptp_info.pin_config[i].name, 468 snprintf(tstamp->ptp_info.pin_config[i].name,
@@ -422,22 +490,56 @@ static void mlx5e_get_pps_caps(struct mlx5e_priv *priv,
422 tstamp->ptp_info.n_per_out = MLX5_GET(mtpps_reg, out, 490 tstamp->ptp_info.n_per_out = MLX5_GET(mtpps_reg, out,
423 cap_max_num_of_pps_out_pins); 491 cap_max_num_of_pps_out_pins);
424 492
425 tstamp->pps_pin_caps[0] = MLX5_GET(mtpps_reg, out, cap_pin_0_mode); 493 tstamp->pps_info.pin_caps[0] = MLX5_GET(mtpps_reg, out, cap_pin_0_mode);
426 tstamp->pps_pin_caps[1] = MLX5_GET(mtpps_reg, out, cap_pin_1_mode); 494 tstamp->pps_info.pin_caps[1] = MLX5_GET(mtpps_reg, out, cap_pin_1_mode);
427 tstamp->pps_pin_caps[2] = MLX5_GET(mtpps_reg, out, cap_pin_2_mode); 495 tstamp->pps_info.pin_caps[2] = MLX5_GET(mtpps_reg, out, cap_pin_2_mode);
428 tstamp->pps_pin_caps[3] = MLX5_GET(mtpps_reg, out, cap_pin_3_mode); 496 tstamp->pps_info.pin_caps[3] = MLX5_GET(mtpps_reg, out, cap_pin_3_mode);
429 tstamp->pps_pin_caps[4] = MLX5_GET(mtpps_reg, out, cap_pin_4_mode); 497 tstamp->pps_info.pin_caps[4] = MLX5_GET(mtpps_reg, out, cap_pin_4_mode);
430 tstamp->pps_pin_caps[5] = MLX5_GET(mtpps_reg, out, cap_pin_5_mode); 498 tstamp->pps_info.pin_caps[5] = MLX5_GET(mtpps_reg, out, cap_pin_5_mode);
431 tstamp->pps_pin_caps[6] = MLX5_GET(mtpps_reg, out, cap_pin_6_mode); 499 tstamp->pps_info.pin_caps[6] = MLX5_GET(mtpps_reg, out, cap_pin_6_mode);
432 tstamp->pps_pin_caps[7] = MLX5_GET(mtpps_reg, out, cap_pin_7_mode); 500 tstamp->pps_info.pin_caps[7] = MLX5_GET(mtpps_reg, out, cap_pin_7_mode);
433} 501}
434 502
435void mlx5e_pps_event_handler(struct mlx5e_priv *priv, 503void mlx5e_pps_event_handler(struct mlx5e_priv *priv,
436 struct ptp_clock_event *event) 504 struct ptp_clock_event *event)
437{ 505{
506 struct net_device *netdev = priv->netdev;
438 struct mlx5e_tstamp *tstamp = &priv->tstamp; 507 struct mlx5e_tstamp *tstamp = &priv->tstamp;
508 struct timespec64 ts;
509 u64 nsec_now, nsec_delta;
510 u64 cycles_now, cycles_delta;
511 int pin = event->index;
512 s64 ns;
513 unsigned long flags;
439 514
440 ptp_clock_event(tstamp->ptp, event); 515 switch (tstamp->ptp_info.pin_config[pin].func) {
516 case PTP_PF_EXTTS:
517 if (tstamp->pps_info.enabled) {
518 event->type = PTP_CLOCK_PPSUSR;
519 event->pps_times.ts_real = ns_to_timespec64(event->timestamp);
520 } else {
521 event->type = PTP_CLOCK_EXTTS;
522 }
523 ptp_clock_event(tstamp->ptp, event);
524 break;
525 case PTP_PF_PEROUT:
526 mlx5e_ptp_gettime(&tstamp->ptp_info, &ts);
527 cycles_now = mlx5_read_internal_timer(tstamp->mdev);
528 ts.tv_sec += 1;
529 ts.tv_nsec = 0;
530 ns = timespec64_to_ns(&ts);
531 write_lock_irqsave(&tstamp->lock, flags);
532 nsec_now = timecounter_cyc2time(&tstamp->clock, cycles_now);
533 nsec_delta = ns - nsec_now;
534 cycles_delta = div64_u64(nsec_delta << tstamp->cycles.shift,
535 tstamp->cycles.mult);
536 tstamp->pps_info.start[pin] = cycles_now + cycles_delta;
537 queue_work(priv->wq, &tstamp->pps_info.out_work);
538 write_unlock_irqrestore(&tstamp->lock, flags);
539 break;
540 default:
541 netdev_err(netdev, "%s: Unhandled event\n", __func__);
542 }
441} 543}
442 544
443void mlx5e_timestamp_init(struct mlx5e_priv *priv) 545void mlx5e_timestamp_init(struct mlx5e_priv *priv)
@@ -473,9 +575,10 @@ void mlx5e_timestamp_init(struct mlx5e_priv *priv)
473 do_div(ns, NSEC_PER_SEC / 2 / HZ); 575 do_div(ns, NSEC_PER_SEC / 2 / HZ);
474 tstamp->overflow_period = ns; 576 tstamp->overflow_period = ns;
475 577
578 INIT_WORK(&tstamp->pps_info.out_work, mlx5e_pps_out);
476 INIT_DELAYED_WORK(&tstamp->overflow_work, mlx5e_timestamp_overflow); 579 INIT_DELAYED_WORK(&tstamp->overflow_work, mlx5e_timestamp_overflow);
477 if (tstamp->overflow_period) 580 if (tstamp->overflow_period)
478 schedule_delayed_work(&tstamp->overflow_work, 0); 581 queue_delayed_work(priv->wq, &tstamp->overflow_work, 0);
479 else 582 else
480 mlx5_core_warn(priv->mdev, "invalid overflow period, overflow_work is not scheduled\n"); 583 mlx5_core_warn(priv->mdev, "invalid overflow period, overflow_work is not scheduled\n");
481 584
@@ -484,16 +587,10 @@ void mlx5e_timestamp_init(struct mlx5e_priv *priv)
484 snprintf(tstamp->ptp_info.name, 16, "mlx5 ptp"); 587 snprintf(tstamp->ptp_info.name, 16, "mlx5 ptp");
485 588
486 /* Initialize 1PPS data structures */ 589 /* Initialize 1PPS data structures */
487#define MAX_PIN_NUM 8 590 if (MLX5_PPS_CAP(priv->mdev))
488 tstamp->pps_pin_caps = kzalloc(sizeof(u8) * MAX_PIN_NUM, GFP_KERNEL); 591 mlx5e_get_pps_caps(priv, tstamp);
489 if (tstamp->pps_pin_caps) { 592 if (tstamp->ptp_info.n_pins)
490 if (MLX5_CAP_GEN(priv->mdev, pps)) 593 mlx5e_init_pin_config(tstamp);
491 mlx5e_get_pps_caps(priv, tstamp);
492 if (tstamp->ptp_info.n_pins)
493 mlx5e_init_pin_config(tstamp);
494 } else {
495 mlx5_core_warn(priv->mdev, "1PPS initialization failed\n");
496 }
497 594
498 tstamp->ptp = ptp_clock_register(&tstamp->ptp_info, 595 tstamp->ptp = ptp_clock_register(&tstamp->ptp_info,
499 &priv->mdev->pdev->dev); 596 &priv->mdev->pdev->dev);
@@ -516,8 +613,7 @@ void mlx5e_timestamp_cleanup(struct mlx5e_priv *priv)
516 priv->tstamp.ptp = NULL; 613 priv->tstamp.ptp = NULL;
517 } 614 }
518 615
519 kfree(tstamp->pps_pin_caps); 616 cancel_work_sync(&tstamp->pps_info.out_work);
520 kfree(tstamp->ptp_info.pin_config);
521
522 cancel_delayed_work_sync(&tstamp->overflow_work); 617 cancel_delayed_work_sync(&tstamp->overflow_work);
618 kfree(tstamp->ptp_info.pin_config);
523} 619}
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c b/drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c
index bdd82c9b3992..eafc59280ada 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c
@@ -276,7 +276,7 @@ static void add_rule_to_list(struct mlx5e_priv *priv,
276 276
277static bool outer_header_zero(u32 *match_criteria) 277static bool outer_header_zero(u32 *match_criteria)
278{ 278{
279 int size = MLX5_ST_SZ_BYTES(fte_match_param); 279 int size = MLX5_FLD_SZ_BYTES(fte_match_param, outer_headers);
280 char *outer_headers_c = MLX5_ADDR_OF(fte_match_param, match_criteria, 280 char *outer_headers_c = MLX5_ADDR_OF(fte_match_param, match_criteria,
281 outer_headers); 281 outer_headers);
282 282
@@ -320,7 +320,7 @@ add_ethtool_flow_rule(struct mlx5e_priv *priv,
320 320
321 spec->match_criteria_enable = (!outer_header_zero(spec->match_criteria)); 321 spec->match_criteria_enable = (!outer_header_zero(spec->match_criteria));
322 flow_act.flow_tag = MLX5_FS_DEFAULT_FLOW_TAG; 322 flow_act.flow_tag = MLX5_FS_DEFAULT_FLOW_TAG;
323 rule = mlx5_add_flow_rules(ft, spec, &flow_act, dst, 1); 323 rule = mlx5_add_flow_rules(ft, spec, &flow_act, dst, dst ? 1 : 0);
324 if (IS_ERR(rule)) { 324 if (IS_ERR(rule)) {
325 err = PTR_ERR(rule); 325 err = PTR_ERR(rule);
326 netdev_err(priv->netdev, "%s: failed to add ethtool steering rule: %d\n", 326 netdev_err(priv->netdev, "%s: failed to add ethtool steering rule: %d\n",
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
index 1eac5003084f..57f31fa478ce 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
@@ -377,7 +377,6 @@ static void mlx5e_async_event(struct mlx5_core_dev *mdev, void *vpriv,
377 break; 377 break;
378 case MLX5_DEV_EVENT_PPS: 378 case MLX5_DEV_EVENT_PPS:
379 eqe = (struct mlx5_eqe *)param; 379 eqe = (struct mlx5_eqe *)param;
380 ptp_event.type = PTP_CLOCK_EXTTS;
381 ptp_event.index = eqe->data.pps.pin; 380 ptp_event.index = eqe->data.pps.pin;
382 ptp_event.timestamp = 381 ptp_event.timestamp =
383 timecounter_cyc2time(&priv->tstamp.clock, 382 timecounter_cyc2time(&priv->tstamp.clock,
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eq.c b/drivers/net/ethernet/mellanox/mlx5/core/eq.c
index af51a5d2b912..52b9a64cd3a2 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/eq.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/eq.c
@@ -698,7 +698,7 @@ int mlx5_start_eqs(struct mlx5_core_dev *dev)
698 else 698 else
699 mlx5_core_dbg(dev, "port_module_event is not set\n"); 699 mlx5_core_dbg(dev, "port_module_event is not set\n");
700 700
701 if (MLX5_CAP_GEN(dev, pps)) 701 if (MLX5_PPS_CAP(dev))
702 async_event_mask |= (1ull << MLX5_EVENT_TYPE_PPS_EVENT); 702 async_event_mask |= (1ull << MLX5_EVENT_TYPE_PPS_EVENT);
703 703
704 if (MLX5_CAP_GEN(dev, fpga)) 704 if (MLX5_CAP_GEN(dev, fpga))
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c
index 89bfda419efe..8b18cc9ec026 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c
@@ -1668,7 +1668,8 @@ void mlx5_eswitch_disable_sriov(struct mlx5_eswitch *esw)
1668 int i; 1668 int i;
1669 1669
1670 if (!esw || !MLX5_CAP_GEN(esw->dev, vport_group_manager) || 1670 if (!esw || !MLX5_CAP_GEN(esw->dev, vport_group_manager) ||
1671 MLX5_CAP_GEN(esw->dev, port_type) != MLX5_CAP_PORT_TYPE_ETH) 1671 MLX5_CAP_GEN(esw->dev, port_type) != MLX5_CAP_PORT_TYPE_ETH ||
1672 esw->mode == SRIOV_NONE)
1672 return; 1673 return;
1673 1674
1674 esw_info(esw->dev, "disable SRIOV: active vports(%d) mode(%d)\n", 1675 esw_info(esw->dev, "disable SRIOV: active vports(%d) mode(%d)\n",
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c b/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
index 1ee5bce85901..85298051a3e4 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/ipoib/ipoib.c
@@ -178,8 +178,6 @@ out:
178 178
179static void mlx5i_destroy_underlay_qp(struct mlx5_core_dev *mdev, struct mlx5_core_qp *qp) 179static void mlx5i_destroy_underlay_qp(struct mlx5_core_dev *mdev, struct mlx5_core_qp *qp)
180{ 180{
181 mlx5_fs_remove_rx_underlay_qpn(mdev, qp->qpn);
182
183 mlx5_core_destroy_qp(mdev, qp); 181 mlx5_core_destroy_qp(mdev, qp);
184} 182}
185 183
@@ -194,8 +192,6 @@ static int mlx5i_init_tx(struct mlx5e_priv *priv)
194 return err; 192 return err;
195 } 193 }
196 194
197 mlx5_fs_add_rx_underlay_qpn(priv->mdev, ipriv->qp.qpn);
198
199 err = mlx5e_create_tis(priv->mdev, 0 /* tc */, ipriv->qp.qpn, &priv->tisn[0]); 195 err = mlx5e_create_tis(priv->mdev, 0 /* tc */, ipriv->qp.qpn, &priv->tisn[0]);
200 if (err) { 196 if (err) {
201 mlx5_core_warn(priv->mdev, "create tis failed, %d\n", err); 197 mlx5_core_warn(priv->mdev, "create tis failed, %d\n", err);
@@ -253,6 +249,7 @@ static void mlx5i_destroy_flow_steering(struct mlx5e_priv *priv)
253 249
254static int mlx5i_init_rx(struct mlx5e_priv *priv) 250static int mlx5i_init_rx(struct mlx5e_priv *priv)
255{ 251{
252 struct mlx5i_priv *ipriv = priv->ppriv;
256 int err; 253 int err;
257 254
258 err = mlx5e_create_indirect_rqt(priv); 255 err = mlx5e_create_indirect_rqt(priv);
@@ -271,12 +268,18 @@ static int mlx5i_init_rx(struct mlx5e_priv *priv)
271 if (err) 268 if (err)
272 goto err_destroy_indirect_tirs; 269 goto err_destroy_indirect_tirs;
273 270
274 err = mlx5i_create_flow_steering(priv); 271 err = mlx5_fs_add_rx_underlay_qpn(priv->mdev, ipriv->qp.qpn);
275 if (err) 272 if (err)
276 goto err_destroy_direct_tirs; 273 goto err_destroy_direct_tirs;
277 274
275 err = mlx5i_create_flow_steering(priv);
276 if (err)
277 goto err_remove_rx_underlay_qpn;
278
278 return 0; 279 return 0;
279 280
281err_remove_rx_underlay_qpn:
282 mlx5_fs_remove_rx_underlay_qpn(priv->mdev, ipriv->qp.qpn);
280err_destroy_direct_tirs: 283err_destroy_direct_tirs:
281 mlx5e_destroy_direct_tirs(priv); 284 mlx5e_destroy_direct_tirs(priv);
282err_destroy_indirect_tirs: 285err_destroy_indirect_tirs:
@@ -290,6 +293,9 @@ err_destroy_indirect_rqts:
290 293
291static void mlx5i_cleanup_rx(struct mlx5e_priv *priv) 294static void mlx5i_cleanup_rx(struct mlx5e_priv *priv)
292{ 295{
296 struct mlx5i_priv *ipriv = priv->ppriv;
297
298 mlx5_fs_remove_rx_underlay_qpn(priv->mdev, ipriv->qp.qpn);
293 mlx5i_destroy_flow_steering(priv); 299 mlx5i_destroy_flow_steering(priv);
294 mlx5e_destroy_direct_tirs(priv); 300 mlx5e_destroy_direct_tirs(priv);
295 mlx5e_destroy_indirect_tirs(priv); 301 mlx5e_destroy_indirect_tirs(priv);
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/lag.c b/drivers/net/ethernet/mellanox/mlx5/core/lag.c
index a3a836bdcfd2..f26f97fe4666 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/lag.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/lag.c
@@ -162,22 +162,17 @@ static bool mlx5_lag_is_bonded(struct mlx5_lag *ldev)
162static void mlx5_infer_tx_affinity_mapping(struct lag_tracker *tracker, 162static void mlx5_infer_tx_affinity_mapping(struct lag_tracker *tracker,
163 u8 *port1, u8 *port2) 163 u8 *port1, u8 *port2)
164{ 164{
165 if (tracker->tx_type == NETDEV_LAG_TX_TYPE_ACTIVEBACKUP) { 165 *port1 = 1;
166 if (tracker->netdev_state[0].tx_enabled) { 166 *port2 = 2;
167 *port1 = 1; 167 if (!tracker->netdev_state[0].tx_enabled ||
168 *port2 = 1; 168 !tracker->netdev_state[0].link_up) {
169 } else { 169 *port1 = 2;
170 *port1 = 2; 170 return;
171 *port2 = 2;
172 }
173 } else {
174 *port1 = 1;
175 *port2 = 2;
176 if (!tracker->netdev_state[0].link_up)
177 *port1 = 2;
178 else if (!tracker->netdev_state[1].link_up)
179 *port2 = 1;
180 } 171 }
172
173 if (!tracker->netdev_state[1].tx_enabled ||
174 !tracker->netdev_state[1].link_up)
175 *port2 = 1;
181} 176}
182 177
183static void mlx5_activate_lag(struct mlx5_lag *ldev, 178static void mlx5_activate_lag(struct mlx5_lag *ldev,
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h b/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
index 6a3d6bef7dd4..6a263e8d883a 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
+++ b/drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h
@@ -154,6 +154,11 @@ int mlx5_set_mtpps(struct mlx5_core_dev *mdev, u32 *mtpps, u32 mtpps_size);
154int mlx5_query_mtppse(struct mlx5_core_dev *mdev, u8 pin, u8 *arm, u8 *mode); 154int mlx5_query_mtppse(struct mlx5_core_dev *mdev, u8 pin, u8 *arm, u8 *mode);
155int mlx5_set_mtppse(struct mlx5_core_dev *mdev, u8 pin, u8 arm, u8 mode); 155int mlx5_set_mtppse(struct mlx5_core_dev *mdev, u8 pin, u8 arm, u8 mode);
156 156
157#define MLX5_PPS_CAP(mdev) (MLX5_CAP_GEN((mdev), pps) && \
158 MLX5_CAP_GEN((mdev), pps_modify) && \
159 MLX5_CAP_MCAM_FEATURE((mdev), mtpps_fs) && \
160 MLX5_CAP_MCAM_FEATURE((mdev), mtpps_enh_out_per_adj))
161
157int mlx5_firmware_flash(struct mlx5_core_dev *dev, const struct firmware *fw); 162int mlx5_firmware_flash(struct mlx5_core_dev *dev, const struct firmware *fw);
158 163
159void mlx5e_init(void); 164void mlx5e_init(void);
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/sriov.c b/drivers/net/ethernet/mellanox/mlx5/core/sriov.c
index bcdf7779c48d..bf99d40e30b4 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/sriov.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/sriov.c
@@ -88,7 +88,11 @@ static void mlx5_device_disable_sriov(struct mlx5_core_dev *dev)
88 int vf; 88 int vf;
89 89
90 if (!sriov->enabled_vfs) 90 if (!sriov->enabled_vfs)
91#ifdef CONFIG_MLX5_CORE_EN
92 goto disable_sriov_resources;
93#else
91 return; 94 return;
95#endif
92 96
93 for (vf = 0; vf < sriov->num_vfs; vf++) { 97 for (vf = 0; vf < sriov->num_vfs; vf++) {
94 if (!sriov->vfs_ctx[vf].enabled) 98 if (!sriov->vfs_ctx[vf].enabled)
@@ -103,6 +107,7 @@ static void mlx5_device_disable_sriov(struct mlx5_core_dev *dev)
103 } 107 }
104 108
105#ifdef CONFIG_MLX5_CORE_EN 109#ifdef CONFIG_MLX5_CORE_EN
110disable_sriov_resources:
106 mlx5_eswitch_disable_sriov(dev->priv.eswitch); 111 mlx5_eswitch_disable_sriov(dev->priv.eswitch);
107#endif 112#endif
108 113
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
index 383fef5a8e24..4b2e0fd7d51e 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c
@@ -1512,6 +1512,10 @@ mlxsw_sp_nexthop_group_mac_update(struct mlxsw_sp *mlxsw_sp,
1512static int mlxsw_sp_fib_entry_update(struct mlxsw_sp *mlxsw_sp, 1512static int mlxsw_sp_fib_entry_update(struct mlxsw_sp *mlxsw_sp,
1513 struct mlxsw_sp_fib_entry *fib_entry); 1513 struct mlxsw_sp_fib_entry *fib_entry);
1514 1514
1515static bool
1516mlxsw_sp_fib_node_entry_is_first(const struct mlxsw_sp_fib_node *fib_node,
1517 const struct mlxsw_sp_fib_entry *fib_entry);
1518
1515static int 1519static int
1516mlxsw_sp_nexthop_fib_entries_update(struct mlxsw_sp *mlxsw_sp, 1520mlxsw_sp_nexthop_fib_entries_update(struct mlxsw_sp *mlxsw_sp,
1517 struct mlxsw_sp_nexthop_group *nh_grp) 1521 struct mlxsw_sp_nexthop_group *nh_grp)
@@ -1520,6 +1524,9 @@ mlxsw_sp_nexthop_fib_entries_update(struct mlxsw_sp *mlxsw_sp,
1520 int err; 1524 int err;
1521 1525
1522 list_for_each_entry(fib_entry, &nh_grp->fib_list, nexthop_group_node) { 1526 list_for_each_entry(fib_entry, &nh_grp->fib_list, nexthop_group_node) {
1527 if (!mlxsw_sp_fib_node_entry_is_first(fib_entry->fib_node,
1528 fib_entry))
1529 continue;
1523 err = mlxsw_sp_fib_entry_update(mlxsw_sp, fib_entry); 1530 err = mlxsw_sp_fib_entry_update(mlxsw_sp, fib_entry);
1524 if (err) 1531 if (err)
1525 return err; 1532 return err;
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
index 656b2d3f1bee..5eb1606765c5 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
@@ -626,8 +626,8 @@ static int mlxsw_sp_port_attr_br_flags_set(struct mlxsw_sp_port *mlxsw_sp_port,
626 626
627 bridge_port = mlxsw_sp_bridge_port_find(mlxsw_sp_port->mlxsw_sp->bridge, 627 bridge_port = mlxsw_sp_bridge_port_find(mlxsw_sp_port->mlxsw_sp->bridge,
628 orig_dev); 628 orig_dev);
629 if (WARN_ON(!bridge_port)) 629 if (!bridge_port)
630 return -EINVAL; 630 return 0;
631 631
632 err = mlxsw_sp_bridge_port_flood_table_set(mlxsw_sp_port, bridge_port, 632 err = mlxsw_sp_bridge_port_flood_table_set(mlxsw_sp_port, bridge_port,
633 MLXSW_SP_FLOOD_TYPE_UC, 633 MLXSW_SP_FLOOD_TYPE_UC,
@@ -711,8 +711,8 @@ static int mlxsw_sp_port_attr_mc_router_set(struct mlxsw_sp_port *mlxsw_sp_port,
711 711
712 bridge_port = mlxsw_sp_bridge_port_find(mlxsw_sp_port->mlxsw_sp->bridge, 712 bridge_port = mlxsw_sp_bridge_port_find(mlxsw_sp_port->mlxsw_sp->bridge,
713 orig_dev); 713 orig_dev);
714 if (WARN_ON(!bridge_port)) 714 if (!bridge_port)
715 return -EINVAL; 715 return 0;
716 716
717 if (!bridge_port->bridge_device->multicast_enabled) 717 if (!bridge_port->bridge_device->multicast_enabled)
718 return 0; 718 return 0;
@@ -1283,15 +1283,15 @@ static int mlxsw_sp_port_mdb_add(struct mlxsw_sp_port *mlxsw_sp_port,
1283 return 0; 1283 return 0;
1284 1284
1285 bridge_port = mlxsw_sp_bridge_port_find(mlxsw_sp->bridge, orig_dev); 1285 bridge_port = mlxsw_sp_bridge_port_find(mlxsw_sp->bridge, orig_dev);
1286 if (WARN_ON(!bridge_port)) 1286 if (!bridge_port)
1287 return -EINVAL; 1287 return 0;
1288 1288
1289 bridge_device = bridge_port->bridge_device; 1289 bridge_device = bridge_port->bridge_device;
1290 mlxsw_sp_port_vlan = mlxsw_sp_port_vlan_find_by_bridge(mlxsw_sp_port, 1290 mlxsw_sp_port_vlan = mlxsw_sp_port_vlan_find_by_bridge(mlxsw_sp_port,
1291 bridge_device, 1291 bridge_device,
1292 mdb->vid); 1292 mdb->vid);
1293 if (WARN_ON(!mlxsw_sp_port_vlan)) 1293 if (!mlxsw_sp_port_vlan)
1294 return -EINVAL; 1294 return 0;
1295 1295
1296 fid_index = mlxsw_sp_fid_index(mlxsw_sp_port_vlan->fid); 1296 fid_index = mlxsw_sp_fid_index(mlxsw_sp_port_vlan->fid);
1297 1297
@@ -1407,15 +1407,15 @@ static int mlxsw_sp_port_mdb_del(struct mlxsw_sp_port *mlxsw_sp_port,
1407 int err = 0; 1407 int err = 0;
1408 1408
1409 bridge_port = mlxsw_sp_bridge_port_find(mlxsw_sp->bridge, orig_dev); 1409 bridge_port = mlxsw_sp_bridge_port_find(mlxsw_sp->bridge, orig_dev);
1410 if (WARN_ON(!bridge_port)) 1410 if (!bridge_port)
1411 return -EINVAL; 1411 return 0;
1412 1412
1413 bridge_device = bridge_port->bridge_device; 1413 bridge_device = bridge_port->bridge_device;
1414 mlxsw_sp_port_vlan = mlxsw_sp_port_vlan_find_by_bridge(mlxsw_sp_port, 1414 mlxsw_sp_port_vlan = mlxsw_sp_port_vlan_find_by_bridge(mlxsw_sp_port,
1415 bridge_device, 1415 bridge_device,
1416 mdb->vid); 1416 mdb->vid);
1417 if (WARN_ON(!mlxsw_sp_port_vlan)) 1417 if (!mlxsw_sp_port_vlan)
1418 return -EINVAL; 1418 return 0;
1419 1419
1420 fid_index = mlxsw_sp_fid_index(mlxsw_sp_port_vlan->fid); 1420 fid_index = mlxsw_sp_fid_index(mlxsw_sp_port_vlan->fid);
1421 1421
@@ -1974,6 +1974,17 @@ static void mlxsw_sp_fdb_fini(struct mlxsw_sp *mlxsw_sp)
1974 1974
1975} 1975}
1976 1976
1977static void mlxsw_sp_mids_fini(struct mlxsw_sp *mlxsw_sp)
1978{
1979 struct mlxsw_sp_mid *mid, *tmp;
1980
1981 list_for_each_entry_safe(mid, tmp, &mlxsw_sp->bridge->mids_list, list) {
1982 list_del(&mid->list);
1983 clear_bit(mid->mid, mlxsw_sp->bridge->mids_bitmap);
1984 kfree(mid);
1985 }
1986}
1987
1977int mlxsw_sp_switchdev_init(struct mlxsw_sp *mlxsw_sp) 1988int mlxsw_sp_switchdev_init(struct mlxsw_sp *mlxsw_sp)
1978{ 1989{
1979 struct mlxsw_sp_bridge *bridge; 1990 struct mlxsw_sp_bridge *bridge;
@@ -1996,7 +2007,7 @@ int mlxsw_sp_switchdev_init(struct mlxsw_sp *mlxsw_sp)
1996void mlxsw_sp_switchdev_fini(struct mlxsw_sp *mlxsw_sp) 2007void mlxsw_sp_switchdev_fini(struct mlxsw_sp *mlxsw_sp)
1997{ 2008{
1998 mlxsw_sp_fdb_fini(mlxsw_sp); 2009 mlxsw_sp_fdb_fini(mlxsw_sp);
1999 WARN_ON(!list_empty(&mlxsw_sp->bridge->mids_list)); 2010 mlxsw_sp_mids_fini(mlxsw_sp);
2000 WARN_ON(!list_empty(&mlxsw_sp->bridge->bridges_list)); 2011 WARN_ON(!list_empty(&mlxsw_sp->bridge->bridges_list));
2001 kfree(mlxsw_sp->bridge); 2012 kfree(mlxsw_sp->bridge);
2002} 2013}
diff --git a/drivers/net/ethernet/netronome/nfp/flower/cmsg.c b/drivers/net/ethernet/netronome/nfp/flower/cmsg.c
index dd7fa9cf225f..b0837b58c3a1 100644
--- a/drivers/net/ethernet/netronome/nfp/flower/cmsg.c
+++ b/drivers/net/ethernet/netronome/nfp/flower/cmsg.c
@@ -115,14 +115,10 @@ nfp_flower_cmsg_portmod_rx(struct nfp_app *app, struct sk_buff *skb)
115 return; 115 return;
116 } 116 }
117 117
118 if (link) { 118 if (link)
119 netif_carrier_on(netdev); 119 netif_carrier_on(netdev);
120 rtnl_lock(); 120 else
121 dev_set_mtu(netdev, be16_to_cpu(msg->mtu));
122 rtnl_unlock();
123 } else {
124 netif_carrier_off(netdev); 121 netif_carrier_off(netdev);
125 }
126 rcu_read_unlock(); 122 rcu_read_unlock();
127} 123}
128 124
diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
index 18750ff0ede6..9f77ce038a4a 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
+++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
@@ -513,6 +513,7 @@ nfp_net_tx_ring_init(struct nfp_net_tx_ring *tx_ring,
513 tx_ring->idx = idx; 513 tx_ring->idx = idx;
514 tx_ring->r_vec = r_vec; 514 tx_ring->r_vec = r_vec;
515 tx_ring->is_xdp = is_xdp; 515 tx_ring->is_xdp = is_xdp;
516 u64_stats_init(&tx_ring->r_vec->tx_sync);
516 517
517 tx_ring->qcidx = tx_ring->idx * nn->stride_tx; 518 tx_ring->qcidx = tx_ring->idx * nn->stride_tx;
518 tx_ring->qcp_q = nn->tx_bar + NFP_QCP_QUEUE_OFF(tx_ring->qcidx); 519 tx_ring->qcp_q = nn->tx_bar + NFP_QCP_QUEUE_OFF(tx_ring->qcidx);
@@ -532,6 +533,7 @@ nfp_net_rx_ring_init(struct nfp_net_rx_ring *rx_ring,
532 533
533 rx_ring->idx = idx; 534 rx_ring->idx = idx;
534 rx_ring->r_vec = r_vec; 535 rx_ring->r_vec = r_vec;
536 u64_stats_init(&rx_ring->r_vec->rx_sync);
535 537
536 rx_ring->fl_qcidx = rx_ring->idx * nn->stride_rx; 538 rx_ring->fl_qcidx = rx_ring->idx * nn->stride_rx;
537 rx_ring->qcp_fl = nn->rx_bar + NFP_QCP_QUEUE_OFF(rx_ring->fl_qcidx); 539 rx_ring->qcp_fl = nn->rx_bar + NFP_QCP_QUEUE_OFF(rx_ring->fl_qcidx);
@@ -906,8 +908,7 @@ static int nfp_net_tx(struct sk_buff *skb, struct net_device *netdev)
906 return NETDEV_TX_OK; 908 return NETDEV_TX_OK;
907 909
908err_unmap: 910err_unmap:
909 --f; 911 while (--f >= 0) {
910 while (f >= 0) {
911 frag = &skb_shinfo(skb)->frags[f]; 912 frag = &skb_shinfo(skb)->frags[f];
912 dma_unmap_page(dp->dev, tx_ring->txbufs[wr_idx].dma_addr, 913 dma_unmap_page(dp->dev, tx_ring->txbufs[wr_idx].dma_addr,
913 skb_frag_size(frag), DMA_TO_DEVICE); 914 skb_frag_size(frag), DMA_TO_DEVICE);
diff --git a/drivers/net/ethernet/qlogic/netxen/netxen_nic_hw.c b/drivers/net/ethernet/qlogic/netxen/netxen_nic_hw.c
index 66ff15d08bad..0a66389c06c2 100644
--- a/drivers/net/ethernet/qlogic/netxen/netxen_nic_hw.c
+++ b/drivers/net/ethernet/qlogic/netxen/netxen_nic_hw.c
@@ -2311,7 +2311,7 @@ netxen_md_rdqueue(struct netxen_adapter *adapter,
2311 loop_cnt++) { 2311 loop_cnt++) {
2312 NX_WR_DUMP_REG(select_addr, adapter->ahw.pci_base0, queue_id); 2312 NX_WR_DUMP_REG(select_addr, adapter->ahw.pci_base0, queue_id);
2313 read_addr = queueEntry->read_addr; 2313 read_addr = queueEntry->read_addr;
2314 for (k = 0; k < read_cnt; k--) { 2314 for (k = 0; k < read_cnt; k++) {
2315 NX_RD_DUMP_REG(read_addr, adapter->ahw.pci_base0, 2315 NX_RD_DUMP_REG(read_addr, adapter->ahw.pci_base0,
2316 &read_value); 2316 &read_value);
2317 *data_buff++ = read_value; 2317 *data_buff++ = read_value;
diff --git a/drivers/net/ethernet/qlogic/qed/qed_mcp.c b/drivers/net/ethernet/qlogic/qed/qed_mcp.c
index 9da91045d167..3eb241657368 100644
--- a/drivers/net/ethernet/qlogic/qed/qed_mcp.c
+++ b/drivers/net/ethernet/qlogic/qed/qed_mcp.c
@@ -253,7 +253,7 @@ int qed_mcp_cmd_init(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt)
253 size = MFW_DRV_MSG_MAX_DWORDS(p_info->mfw_mb_length) * sizeof(u32); 253 size = MFW_DRV_MSG_MAX_DWORDS(p_info->mfw_mb_length) * sizeof(u32);
254 p_info->mfw_mb_cur = kzalloc(size, GFP_KERNEL); 254 p_info->mfw_mb_cur = kzalloc(size, GFP_KERNEL);
255 p_info->mfw_mb_shadow = kzalloc(size, GFP_KERNEL); 255 p_info->mfw_mb_shadow = kzalloc(size, GFP_KERNEL);
256 if (!p_info->mfw_mb_shadow || !p_info->mfw_mb_addr) 256 if (!p_info->mfw_mb_cur || !p_info->mfw_mb_shadow)
257 goto err; 257 goto err;
258 258
259 return 0; 259 return 0;
diff --git a/drivers/net/ethernet/qualcomm/emac/emac.c b/drivers/net/ethernet/qualcomm/emac/emac.c
index 746d94e28470..60850bfa3d32 100644
--- a/drivers/net/ethernet/qualcomm/emac/emac.c
+++ b/drivers/net/ethernet/qualcomm/emac/emac.c
@@ -766,11 +766,13 @@ static void emac_shutdown(struct platform_device *pdev)
766 struct emac_adapter *adpt = netdev_priv(netdev); 766 struct emac_adapter *adpt = netdev_priv(netdev);
767 struct emac_sgmii *sgmii = &adpt->phy; 767 struct emac_sgmii *sgmii = &adpt->phy;
768 768
769 /* Closing the SGMII turns off its interrupts */ 769 if (netdev->flags & IFF_UP) {
770 sgmii->close(adpt); 770 /* Closing the SGMII turns off its interrupts */
771 sgmii->close(adpt);
771 772
772 /* Resetting the MAC turns off all DMA and its interrupts */ 773 /* Resetting the MAC turns off all DMA and its interrupts */
773 emac_mac_reset(adpt); 774 emac_mac_reset(adpt);
775 }
774} 776}
775 777
776static struct platform_driver emac_platform_driver = { 778static struct platform_driver emac_platform_driver = {
diff --git a/drivers/net/ethernet/sfc/mcdi_port.c b/drivers/net/ethernet/sfc/mcdi_port.c
index c905971c5f3a..990a63d7fcb7 100644
--- a/drivers/net/ethernet/sfc/mcdi_port.c
+++ b/drivers/net/ethernet/sfc/mcdi_port.c
@@ -938,7 +938,6 @@ enum efx_stats_action {
938static int efx_mcdi_mac_stats(struct efx_nic *efx, 938static int efx_mcdi_mac_stats(struct efx_nic *efx,
939 enum efx_stats_action action, int clear) 939 enum efx_stats_action action, int clear)
940{ 940{
941 struct efx_ef10_nic_data *nic_data = efx->nic_data;
942 MCDI_DECLARE_BUF(inbuf, MC_CMD_MAC_STATS_IN_LEN); 941 MCDI_DECLARE_BUF(inbuf, MC_CMD_MAC_STATS_IN_LEN);
943 int rc; 942 int rc;
944 int change = action == EFX_STATS_PULL ? 0 : 1; 943 int change = action == EFX_STATS_PULL ? 0 : 1;
@@ -960,7 +959,12 @@ static int efx_mcdi_mac_stats(struct efx_nic *efx,
960 MAC_STATS_IN_PERIODIC_NOEVENT, 1, 959 MAC_STATS_IN_PERIODIC_NOEVENT, 1,
961 MAC_STATS_IN_PERIOD_MS, period); 960 MAC_STATS_IN_PERIOD_MS, period);
962 MCDI_SET_DWORD(inbuf, MAC_STATS_IN_DMA_LEN, dma_len); 961 MCDI_SET_DWORD(inbuf, MAC_STATS_IN_DMA_LEN, dma_len);
963 MCDI_SET_DWORD(inbuf, MAC_STATS_IN_PORT_ID, nic_data->vport_id); 962
963 if (efx_nic_rev(efx) >= EFX_REV_HUNT_A0) {
964 struct efx_ef10_nic_data *nic_data = efx->nic_data;
965
966 MCDI_SET_DWORD(inbuf, MAC_STATS_IN_PORT_ID, nic_data->vport_id);
967 }
964 968
965 rc = efx_mcdi_rpc_quiet(efx, MC_CMD_MAC_STATS, inbuf, sizeof(inbuf), 969 rc = efx_mcdi_rpc_quiet(efx, MC_CMD_MAC_STATS, inbuf, sizeof(inbuf),
966 NULL, 0, NULL); 970 NULL, 0, NULL);
diff --git a/drivers/net/ethernet/sgi/ioc3-eth.c b/drivers/net/ethernet/sgi/ioc3-eth.c
index b607936e1b3e..9c0488e0f08e 100644
--- a/drivers/net/ethernet/sgi/ioc3-eth.c
+++ b/drivers/net/ethernet/sgi/ioc3-eth.c
@@ -90,17 +90,13 @@ struct ioc3_private {
90 spinlock_t ioc3_lock; 90 spinlock_t ioc3_lock;
91 struct mii_if_info mii; 91 struct mii_if_info mii;
92 92
93 struct net_device *dev;
93 struct pci_dev *pdev; 94 struct pci_dev *pdev;
94 95
95 /* Members used by autonegotiation */ 96 /* Members used by autonegotiation */
96 struct timer_list ioc3_timer; 97 struct timer_list ioc3_timer;
97}; 98};
98 99
99static inline struct net_device *priv_netdev(struct ioc3_private *dev)
100{
101 return (void *)dev - ((sizeof(struct net_device) + 31) & ~31);
102}
103
104static int ioc3_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); 100static int ioc3_ioctl(struct net_device *dev, struct ifreq *rq, int cmd);
105static void ioc3_set_multicast_list(struct net_device *dev); 101static void ioc3_set_multicast_list(struct net_device *dev);
106static int ioc3_start_xmit(struct sk_buff *skb, struct net_device *dev); 102static int ioc3_start_xmit(struct sk_buff *skb, struct net_device *dev);
@@ -427,7 +423,7 @@ static void ioc3_get_eaddr_nic(struct ioc3_private *ip)
427 nic[i] = nic_read_byte(ioc3); 423 nic[i] = nic_read_byte(ioc3);
428 424
429 for (i = 2; i < 8; i++) 425 for (i = 2; i < 8; i++)
430 priv_netdev(ip)->dev_addr[i - 2] = nic[i]; 426 ip->dev->dev_addr[i - 2] = nic[i];
431} 427}
432 428
433/* 429/*
@@ -439,7 +435,7 @@ static void ioc3_get_eaddr(struct ioc3_private *ip)
439{ 435{
440 ioc3_get_eaddr_nic(ip); 436 ioc3_get_eaddr_nic(ip);
441 437
442 printk("Ethernet address is %pM.\n", priv_netdev(ip)->dev_addr); 438 printk("Ethernet address is %pM.\n", ip->dev->dev_addr);
443} 439}
444 440
445static void __ioc3_set_mac_address(struct net_device *dev) 441static void __ioc3_set_mac_address(struct net_device *dev)
@@ -790,13 +786,12 @@ static void ioc3_timer(unsigned long data)
790 */ 786 */
791static int ioc3_mii_init(struct ioc3_private *ip) 787static int ioc3_mii_init(struct ioc3_private *ip)
792{ 788{
793 struct net_device *dev = priv_netdev(ip);
794 int i, found = 0, res = 0; 789 int i, found = 0, res = 0;
795 int ioc3_phy_workaround = 1; 790 int ioc3_phy_workaround = 1;
796 u16 word; 791 u16 word;
797 792
798 for (i = 0; i < 32; i++) { 793 for (i = 0; i < 32; i++) {
799 word = ioc3_mdio_read(dev, i, MII_PHYSID1); 794 word = ioc3_mdio_read(ip->dev, i, MII_PHYSID1);
800 795
801 if (word != 0xffff && word != 0x0000) { 796 if (word != 0xffff && word != 0x0000) {
802 found = 1; 797 found = 1;
@@ -1276,6 +1271,7 @@ static int ioc3_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
1276 SET_NETDEV_DEV(dev, &pdev->dev); 1271 SET_NETDEV_DEV(dev, &pdev->dev);
1277 1272
1278 ip = netdev_priv(dev); 1273 ip = netdev_priv(dev);
1274 ip->dev = dev;
1279 1275
1280 dev->irq = pdev->irq; 1276 dev->irq = pdev->irq;
1281 1277
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac1000_dma.c b/drivers/net/ethernet/stmicro/stmmac/dwmac1000_dma.c
index 22cf6353ba04..7ecf549c7f1c 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac1000_dma.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac1000_dma.c
@@ -205,7 +205,7 @@ static void dwmac1000_dump_dma_regs(void __iomem *ioaddr, u32 *reg_space)
205{ 205{
206 int i; 206 int i;
207 207
208 for (i = 0; i < 23; i++) 208 for (i = 0; i < NUM_DWMAC1000_DMA_REGS; i++)
209 if ((i < 12) || (i > 17)) 209 if ((i < 12) || (i > 17))
210 reg_space[DMA_BUS_MODE / 4 + i] = 210 reg_space[DMA_BUS_MODE / 4 + i] =
211 readl(ioaddr + DMA_BUS_MODE + i * 4); 211 readl(ioaddr + DMA_BUS_MODE + i * 4);
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac100_dma.c b/drivers/net/ethernet/stmicro/stmmac/dwmac100_dma.c
index eef2f222ce9a..6502b9aa3bf5 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac100_dma.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac100_dma.c
@@ -70,7 +70,7 @@ static void dwmac100_dump_dma_regs(void __iomem *ioaddr, u32 *reg_space)
70{ 70{
71 int i; 71 int i;
72 72
73 for (i = 0; i < 9; i++) 73 for (i = 0; i < NUM_DWMAC100_DMA_REGS; i++)
74 reg_space[DMA_BUS_MODE / 4 + i] = 74 reg_space[DMA_BUS_MODE / 4 + i] =
75 readl(ioaddr + DMA_BUS_MODE + i * 4); 75 readl(ioaddr + DMA_BUS_MODE + i * 4);
76 76
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
index f233bf8b4ebb..c4407e8e39a3 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac4_core.c
@@ -117,7 +117,7 @@ static void dwmac4_tx_queue_routing(struct mac_device_info *hw,
117 void __iomem *ioaddr = hw->pcsr; 117 void __iomem *ioaddr = hw->pcsr;
118 u32 value; 118 u32 value;
119 119
120 const struct stmmac_rx_routing route_possibilities[] = { 120 static const struct stmmac_rx_routing route_possibilities[] = {
121 { GMAC_RXQCTRL_AVCPQ_MASK, GMAC_RXQCTRL_AVCPQ_SHIFT }, 121 { GMAC_RXQCTRL_AVCPQ_MASK, GMAC_RXQCTRL_AVCPQ_SHIFT },
122 { GMAC_RXQCTRL_PTPQ_MASK, GMAC_RXQCTRL_PTPQ_SHIFT }, 122 { GMAC_RXQCTRL_PTPQ_MASK, GMAC_RXQCTRL_PTPQ_SHIFT },
123 { GMAC_RXQCTRL_DCBCPQ_MASK, GMAC_RXQCTRL_DCBCPQ_SHIFT }, 123 { GMAC_RXQCTRL_DCBCPQ_MASK, GMAC_RXQCTRL_DCBCPQ_SHIFT },
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac_dma.h b/drivers/net/ethernet/stmicro/stmmac/dwmac_dma.h
index 9091df86723a..adc54006f884 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac_dma.h
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac_dma.h
@@ -136,6 +136,9 @@
136#define DMA_STATUS_TI 0x00000001 /* Transmit Interrupt */ 136#define DMA_STATUS_TI 0x00000001 /* Transmit Interrupt */
137#define DMA_CONTROL_FTF 0x00100000 /* Flush transmit FIFO */ 137#define DMA_CONTROL_FTF 0x00100000 /* Flush transmit FIFO */
138 138
139#define NUM_DWMAC100_DMA_REGS 9
140#define NUM_DWMAC1000_DMA_REGS 23
141
139void dwmac_enable_dma_transmission(void __iomem *ioaddr); 142void dwmac_enable_dma_transmission(void __iomem *ioaddr);
140void dwmac_enable_dma_irq(void __iomem *ioaddr, u32 chan); 143void dwmac_enable_dma_irq(void __iomem *ioaddr, u32 chan);
141void dwmac_disable_dma_irq(void __iomem *ioaddr, u32 chan); 144void dwmac_disable_dma_irq(void __iomem *ioaddr, u32 chan);
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
index babb39c646ff..af30b4857c3b 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c
@@ -33,6 +33,8 @@
33#define MAC100_ETHTOOL_NAME "st_mac100" 33#define MAC100_ETHTOOL_NAME "st_mac100"
34#define GMAC_ETHTOOL_NAME "st_gmac" 34#define GMAC_ETHTOOL_NAME "st_gmac"
35 35
36#define ETHTOOL_DMA_OFFSET 55
37
36struct stmmac_stats { 38struct stmmac_stats {
37 char stat_string[ETH_GSTRING_LEN]; 39 char stat_string[ETH_GSTRING_LEN];
38 int sizeof_stat; 40 int sizeof_stat;
@@ -442,6 +444,9 @@ static void stmmac_ethtool_gregs(struct net_device *dev,
442 444
443 priv->hw->mac->dump_regs(priv->hw, reg_space); 445 priv->hw->mac->dump_regs(priv->hw, reg_space);
444 priv->hw->dma->dump_regs(priv->ioaddr, reg_space); 446 priv->hw->dma->dump_regs(priv->ioaddr, reg_space);
447 /* Copy DMA registers to where ethtool expects them */
448 memcpy(&reg_space[ETHTOOL_DMA_OFFSET], &reg_space[DMA_BUS_MODE / 4],
449 NUM_DWMAC1000_DMA_REGS * 4);
445} 450}
446 451
447static void 452static void
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 1853f7ff6657..1763e48c84e2 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -4120,8 +4120,15 @@ int stmmac_dvr_probe(struct device *device,
4120 if ((phyaddr >= 0) && (phyaddr <= 31)) 4120 if ((phyaddr >= 0) && (phyaddr <= 31))
4121 priv->plat->phy_addr = phyaddr; 4121 priv->plat->phy_addr = phyaddr;
4122 4122
4123 if (priv->plat->stmmac_rst) 4123 if (priv->plat->stmmac_rst) {
4124 ret = reset_control_assert(priv->plat->stmmac_rst);
4124 reset_control_deassert(priv->plat->stmmac_rst); 4125 reset_control_deassert(priv->plat->stmmac_rst);
4126 /* Some reset controllers have only reset callback instead of
4127 * assert + deassert callbacks pair.
4128 */
4129 if (ret == -ENOTSUPP)
4130 reset_control_reset(priv->plat->stmmac_rst);
4131 }
4125 4132
4126 /* Init MAC and get the capabilities */ 4133 /* Init MAC and get the capabilities */
4127 ret = stmmac_hw_init(priv); 4134 ret = stmmac_hw_init(priv);
diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
index db157a47000c..72ec711fcba2 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c
@@ -204,6 +204,7 @@ int stmmac_mdio_register(struct net_device *ndev)
204 struct stmmac_priv *priv = netdev_priv(ndev); 204 struct stmmac_priv *priv = netdev_priv(ndev);
205 struct stmmac_mdio_bus_data *mdio_bus_data = priv->plat->mdio_bus_data; 205 struct stmmac_mdio_bus_data *mdio_bus_data = priv->plat->mdio_bus_data;
206 struct device_node *mdio_node = priv->plat->mdio_node; 206 struct device_node *mdio_node = priv->plat->mdio_node;
207 struct device *dev = ndev->dev.parent;
207 int addr, found; 208 int addr, found;
208 209
209 if (!mdio_bus_data) 210 if (!mdio_bus_data)
@@ -237,7 +238,7 @@ int stmmac_mdio_register(struct net_device *ndev)
237 else 238 else
238 err = mdiobus_register(new_bus); 239 err = mdiobus_register(new_bus);
239 if (err != 0) { 240 if (err != 0) {
240 netdev_err(ndev, "Cannot register the MDIO bus\n"); 241 dev_err(dev, "Cannot register the MDIO bus\n");
241 goto bus_register_fail; 242 goto bus_register_fail;
242 } 243 }
243 244
@@ -285,14 +286,12 @@ int stmmac_mdio_register(struct net_device *ndev)
285 irq_str = irq_num; 286 irq_str = irq_num;
286 break; 287 break;
287 } 288 }
288 netdev_info(ndev, "PHY ID %08x at %d IRQ %s (%s)%s\n", 289 phy_attached_info(phydev);
289 phydev->phy_id, addr, irq_str, phydev_name(phydev),
290 act ? " active" : "");
291 found = 1; 290 found = 1;
292 } 291 }
293 292
294 if (!found && !mdio_node) { 293 if (!found && !mdio_node) {
295 netdev_warn(ndev, "No PHY found\n"); 294 dev_warn(dev, "No PHY found\n");
296 mdiobus_unregister(new_bus); 295 mdiobus_unregister(new_bus);
297 mdiobus_free(new_bus); 296 mdiobus_free(new_bus);
298 return -ENODEV; 297 return -ENODEV;
diff --git a/drivers/net/ethernet/sun/niu.c b/drivers/net/ethernet/sun/niu.c
index 46cb7f8955a2..4bb04aaf9650 100644
--- a/drivers/net/ethernet/sun/niu.c
+++ b/drivers/net/ethernet/sun/niu.c
@@ -9532,7 +9532,7 @@ static struct niu_parent *niu_get_parent(struct niu *np,
9532 p = niu_new_parent(np, id, ptype); 9532 p = niu_new_parent(np, id, ptype);
9533 9533
9534 if (p) { 9534 if (p) {
9535 char port_name[6]; 9535 char port_name[8];
9536 int err; 9536 int err;
9537 9537
9538 sprintf(port_name, "port%d", port); 9538 sprintf(port_name, "port%d", port);
@@ -9553,7 +9553,7 @@ static void niu_put_parent(struct niu *np)
9553{ 9553{
9554 struct niu_parent *p = np->parent; 9554 struct niu_parent *p = np->parent;
9555 u8 port = np->port; 9555 u8 port = np->port;
9556 char port_name[6]; 9556 char port_name[8];
9557 9557
9558 BUG_ON(!p || p->ports[port] != np); 9558 BUG_ON(!p || p->ports[port] != np);
9559 9559
diff --git a/drivers/net/ethernet/sun/sunhme.h b/drivers/net/ethernet/sun/sunhme.h
index 3af540adb3c5..fca1bca7f69d 100644
--- a/drivers/net/ethernet/sun/sunhme.h
+++ b/drivers/net/ethernet/sun/sunhme.h
@@ -13,9 +13,9 @@
13/* Happy Meal global registers. */ 13/* Happy Meal global registers. */
14#define GREG_SWRESET 0x000UL /* Software Reset */ 14#define GREG_SWRESET 0x000UL /* Software Reset */
15#define GREG_CFG 0x004UL /* Config Register */ 15#define GREG_CFG 0x004UL /* Config Register */
16#define GREG_STAT 0x108UL /* Status */ 16#define GREG_STAT 0x100UL /* Status */
17#define GREG_IMASK 0x10cUL /* Interrupt Mask */ 17#define GREG_IMASK 0x104UL /* Interrupt Mask */
18#define GREG_REG_SIZE 0x110UL 18#define GREG_REG_SIZE 0x108UL
19 19
20/* Global reset register. */ 20/* Global reset register. */
21#define GREG_RESET_ETX 0x01 21#define GREG_RESET_ETX 0x01
diff --git a/drivers/net/ethernet/tehuti/tehuti.c b/drivers/net/ethernet/tehuti/tehuti.c
index 711fbbbc4b1f..163d8d16bc24 100644
--- a/drivers/net/ethernet/tehuti/tehuti.c
+++ b/drivers/net/ethernet/tehuti/tehuti.c
@@ -654,6 +654,8 @@ static int bdx_ioctl_priv(struct net_device *ndev, struct ifreq *ifr, int cmd)
654 RET(-EFAULT); 654 RET(-EFAULT);
655 } 655 }
656 DBG("%d 0x%x 0x%x\n", data[0], data[1], data[2]); 656 DBG("%d 0x%x 0x%x\n", data[0], data[1], data[2]);
657 } else {
658 return -EOPNOTSUPP;
657 } 659 }
658 660
659 if (!capable(CAP_SYS_RAWIO)) 661 if (!capable(CAP_SYS_RAWIO))
diff --git a/drivers/net/ethernet/ti/cpsw.c b/drivers/net/ethernet/ti/cpsw.c
index 1850e348f555..badd0a8caeb9 100644
--- a/drivers/net/ethernet/ti/cpsw.c
+++ b/drivers/net/ethernet/ti/cpsw.c
@@ -3089,6 +3089,31 @@ static int cpsw_probe(struct platform_device *pdev)
3089 cpsw->quirk_irq = true; 3089 cpsw->quirk_irq = true;
3090 } 3090 }
3091 3091
3092 ndev->features |= NETIF_F_HW_VLAN_CTAG_FILTER;
3093
3094 ndev->netdev_ops = &cpsw_netdev_ops;
3095 ndev->ethtool_ops = &cpsw_ethtool_ops;
3096 netif_napi_add(ndev, &cpsw->napi_rx, cpsw_rx_poll, CPSW_POLL_WEIGHT);
3097 netif_tx_napi_add(ndev, &cpsw->napi_tx, cpsw_tx_poll, CPSW_POLL_WEIGHT);
3098 cpsw_split_res(ndev);
3099
3100 /* register the network device */
3101 SET_NETDEV_DEV(ndev, &pdev->dev);
3102 ret = register_netdev(ndev);
3103 if (ret) {
3104 dev_err(priv->dev, "error registering net device\n");
3105 ret = -ENODEV;
3106 goto clean_ale_ret;
3107 }
3108
3109 if (cpsw->data.dual_emac) {
3110 ret = cpsw_probe_dual_emac(priv);
3111 if (ret) {
3112 cpsw_err(priv, probe, "error probe slave 2 emac interface\n");
3113 goto clean_unregister_netdev_ret;
3114 }
3115 }
3116
3092 /* Grab RX and TX IRQs. Note that we also have RX_THRESHOLD and 3117 /* Grab RX and TX IRQs. Note that we also have RX_THRESHOLD and
3093 * MISC IRQs which are always kept disabled with this driver so 3118 * MISC IRQs which are always kept disabled with this driver so
3094 * we will not request them. 3119 * we will not request them.
@@ -3127,33 +3152,9 @@ static int cpsw_probe(struct platform_device *pdev)
3127 goto clean_ale_ret; 3152 goto clean_ale_ret;
3128 } 3153 }
3129 3154
3130 ndev->features |= NETIF_F_HW_VLAN_CTAG_FILTER;
3131
3132 ndev->netdev_ops = &cpsw_netdev_ops;
3133 ndev->ethtool_ops = &cpsw_ethtool_ops;
3134 netif_napi_add(ndev, &cpsw->napi_rx, cpsw_rx_poll, CPSW_POLL_WEIGHT);
3135 netif_tx_napi_add(ndev, &cpsw->napi_tx, cpsw_tx_poll, CPSW_POLL_WEIGHT);
3136 cpsw_split_res(ndev);
3137
3138 /* register the network device */
3139 SET_NETDEV_DEV(ndev, &pdev->dev);
3140 ret = register_netdev(ndev);
3141 if (ret) {
3142 dev_err(priv->dev, "error registering net device\n");
3143 ret = -ENODEV;
3144 goto clean_ale_ret;
3145 }
3146
3147 cpsw_notice(priv, probe, 3155 cpsw_notice(priv, probe,
3148 "initialized device (regs %pa, irq %d, pool size %d)\n", 3156 "initialized device (regs %pa, irq %d, pool size %d)\n",
3149 &ss_res->start, ndev->irq, dma_params.descs_pool_size); 3157 &ss_res->start, ndev->irq, dma_params.descs_pool_size);
3150 if (cpsw->data.dual_emac) {
3151 ret = cpsw_probe_dual_emac(priv);
3152 if (ret) {
3153 cpsw_err(priv, probe, "error probe slave 2 emac interface\n");
3154 goto clean_unregister_netdev_ret;
3155 }
3156 }
3157 3158
3158 pm_runtime_put(&pdev->dev); 3159 pm_runtime_put(&pdev->dev);
3159 3160
diff --git a/drivers/net/ethernet/ti/cpts.c b/drivers/net/ethernet/ti/cpts.c
index 32279d21c836..c2121d214f08 100644
--- a/drivers/net/ethernet/ti/cpts.c
+++ b/drivers/net/ethernet/ti/cpts.c
@@ -31,9 +31,18 @@
31 31
32#include "cpts.h" 32#include "cpts.h"
33 33
34#define CPTS_SKB_TX_WORK_TIMEOUT 1 /* jiffies */
35
36struct cpts_skb_cb_data {
37 unsigned long tmo;
38};
39
34#define cpts_read32(c, r) readl_relaxed(&c->reg->r) 40#define cpts_read32(c, r) readl_relaxed(&c->reg->r)
35#define cpts_write32(c, v, r) writel_relaxed(v, &c->reg->r) 41#define cpts_write32(c, v, r) writel_relaxed(v, &c->reg->r)
36 42
43static int cpts_match(struct sk_buff *skb, unsigned int ptp_class,
44 u16 ts_seqid, u8 ts_msgtype);
45
37static int event_expired(struct cpts_event *event) 46static int event_expired(struct cpts_event *event)
38{ 47{
39 return time_after(jiffies, event->tmo); 48 return time_after(jiffies, event->tmo);
@@ -77,6 +86,47 @@ static int cpts_purge_events(struct cpts *cpts)
77 return removed ? 0 : -1; 86 return removed ? 0 : -1;
78} 87}
79 88
89static bool cpts_match_tx_ts(struct cpts *cpts, struct cpts_event *event)
90{
91 struct sk_buff *skb, *tmp;
92 u16 seqid;
93 u8 mtype;
94 bool found = false;
95
96 mtype = (event->high >> MESSAGE_TYPE_SHIFT) & MESSAGE_TYPE_MASK;
97 seqid = (event->high >> SEQUENCE_ID_SHIFT) & SEQUENCE_ID_MASK;
98
99 /* no need to grab txq.lock as access is always done under cpts->lock */
100 skb_queue_walk_safe(&cpts->txq, skb, tmp) {
101 struct skb_shared_hwtstamps ssh;
102 unsigned int class = ptp_classify_raw(skb);
103 struct cpts_skb_cb_data *skb_cb =
104 (struct cpts_skb_cb_data *)skb->cb;
105
106 if (cpts_match(skb, class, seqid, mtype)) {
107 u64 ns = timecounter_cyc2time(&cpts->tc, event->low);
108
109 memset(&ssh, 0, sizeof(ssh));
110 ssh.hwtstamp = ns_to_ktime(ns);
111 skb_tstamp_tx(skb, &ssh);
112 found = true;
113 __skb_unlink(skb, &cpts->txq);
114 dev_consume_skb_any(skb);
115 dev_dbg(cpts->dev, "match tx timestamp mtype %u seqid %04x\n",
116 mtype, seqid);
117 } else if (time_after(jiffies, skb_cb->tmo)) {
118 /* timeout any expired skbs over 1s */
119 dev_dbg(cpts->dev,
120 "expiring tx timestamp mtype %u seqid %04x\n",
121 mtype, seqid);
122 __skb_unlink(skb, &cpts->txq);
123 dev_consume_skb_any(skb);
124 }
125 }
126
127 return found;
128}
129
80/* 130/*
81 * Returns zero if matching event type was found. 131 * Returns zero if matching event type was found.
82 */ 132 */
@@ -101,9 +151,15 @@ static int cpts_fifo_read(struct cpts *cpts, int match)
101 event->low = lo; 151 event->low = lo;
102 type = event_type(event); 152 type = event_type(event);
103 switch (type) { 153 switch (type) {
154 case CPTS_EV_TX:
155 if (cpts_match_tx_ts(cpts, event)) {
156 /* if the new event matches an existing skb,
157 * then don't queue it
158 */
159 break;
160 }
104 case CPTS_EV_PUSH: 161 case CPTS_EV_PUSH:
105 case CPTS_EV_RX: 162 case CPTS_EV_RX:
106 case CPTS_EV_TX:
107 list_del_init(&event->list); 163 list_del_init(&event->list);
108 list_add_tail(&event->list, &cpts->events); 164 list_add_tail(&event->list, &cpts->events);
109 break; 165 break;
@@ -224,6 +280,24 @@ static int cpts_ptp_enable(struct ptp_clock_info *ptp,
224 return -EOPNOTSUPP; 280 return -EOPNOTSUPP;
225} 281}
226 282
283static long cpts_overflow_check(struct ptp_clock_info *ptp)
284{
285 struct cpts *cpts = container_of(ptp, struct cpts, info);
286 unsigned long delay = cpts->ov_check_period;
287 struct timespec64 ts;
288 unsigned long flags;
289
290 spin_lock_irqsave(&cpts->lock, flags);
291 ts = ns_to_timespec64(timecounter_read(&cpts->tc));
292
293 if (!skb_queue_empty(&cpts->txq))
294 delay = CPTS_SKB_TX_WORK_TIMEOUT;
295 spin_unlock_irqrestore(&cpts->lock, flags);
296
297 pr_debug("cpts overflow check at %lld.%09lu\n", ts.tv_sec, ts.tv_nsec);
298 return (long)delay;
299}
300
227static struct ptp_clock_info cpts_info = { 301static struct ptp_clock_info cpts_info = {
228 .owner = THIS_MODULE, 302 .owner = THIS_MODULE,
229 .name = "CTPS timer", 303 .name = "CTPS timer",
@@ -236,18 +310,9 @@ static struct ptp_clock_info cpts_info = {
236 .gettime64 = cpts_ptp_gettime, 310 .gettime64 = cpts_ptp_gettime,
237 .settime64 = cpts_ptp_settime, 311 .settime64 = cpts_ptp_settime,
238 .enable = cpts_ptp_enable, 312 .enable = cpts_ptp_enable,
313 .do_aux_work = cpts_overflow_check,
239}; 314};
240 315
241static void cpts_overflow_check(struct work_struct *work)
242{
243 struct timespec64 ts;
244 struct cpts *cpts = container_of(work, struct cpts, overflow_work.work);
245
246 cpts_ptp_gettime(&cpts->info, &ts);
247 pr_debug("cpts overflow check at %lld.%09lu\n", ts.tv_sec, ts.tv_nsec);
248 schedule_delayed_work(&cpts->overflow_work, cpts->ov_check_period);
249}
250
251static int cpts_match(struct sk_buff *skb, unsigned int ptp_class, 316static int cpts_match(struct sk_buff *skb, unsigned int ptp_class,
252 u16 ts_seqid, u8 ts_msgtype) 317 u16 ts_seqid, u8 ts_msgtype)
253{ 318{
@@ -299,7 +364,7 @@ static u64 cpts_find_ts(struct cpts *cpts, struct sk_buff *skb, int ev_type)
299 return 0; 364 return 0;
300 365
301 spin_lock_irqsave(&cpts->lock, flags); 366 spin_lock_irqsave(&cpts->lock, flags);
302 cpts_fifo_read(cpts, CPTS_EV_PUSH); 367 cpts_fifo_read(cpts, -1);
303 list_for_each_safe(this, next, &cpts->events) { 368 list_for_each_safe(this, next, &cpts->events) {
304 event = list_entry(this, struct cpts_event, list); 369 event = list_entry(this, struct cpts_event, list);
305 if (event_expired(event)) { 370 if (event_expired(event)) {
@@ -317,6 +382,19 @@ static u64 cpts_find_ts(struct cpts *cpts, struct sk_buff *skb, int ev_type)
317 break; 382 break;
318 } 383 }
319 } 384 }
385
386 if (ev_type == CPTS_EV_TX && !ns) {
387 struct cpts_skb_cb_data *skb_cb =
388 (struct cpts_skb_cb_data *)skb->cb;
389 /* Not found, add frame to queue for processing later.
390 * The periodic FIFO check will handle this.
391 */
392 skb_get(skb);
393 /* get the timestamp for timeouts */
394 skb_cb->tmo = jiffies + msecs_to_jiffies(100);
395 __skb_queue_tail(&cpts->txq, skb);
396 ptp_schedule_worker(cpts->clock, 0);
397 }
320 spin_unlock_irqrestore(&cpts->lock, flags); 398 spin_unlock_irqrestore(&cpts->lock, flags);
321 399
322 return ns; 400 return ns;
@@ -358,6 +436,7 @@ int cpts_register(struct cpts *cpts)
358{ 436{
359 int err, i; 437 int err, i;
360 438
439 skb_queue_head_init(&cpts->txq);
361 INIT_LIST_HEAD(&cpts->events); 440 INIT_LIST_HEAD(&cpts->events);
362 INIT_LIST_HEAD(&cpts->pool); 441 INIT_LIST_HEAD(&cpts->pool);
363 for (i = 0; i < CPTS_MAX_EVENTS; i++) 442 for (i = 0; i < CPTS_MAX_EVENTS; i++)
@@ -378,7 +457,7 @@ int cpts_register(struct cpts *cpts)
378 } 457 }
379 cpts->phc_index = ptp_clock_index(cpts->clock); 458 cpts->phc_index = ptp_clock_index(cpts->clock);
380 459
381 schedule_delayed_work(&cpts->overflow_work, cpts->ov_check_period); 460 ptp_schedule_worker(cpts->clock, cpts->ov_check_period);
382 return 0; 461 return 0;
383 462
384err_ptp: 463err_ptp:
@@ -392,14 +471,15 @@ void cpts_unregister(struct cpts *cpts)
392 if (WARN_ON(!cpts->clock)) 471 if (WARN_ON(!cpts->clock))
393 return; 472 return;
394 473
395 cancel_delayed_work_sync(&cpts->overflow_work);
396
397 ptp_clock_unregister(cpts->clock); 474 ptp_clock_unregister(cpts->clock);
398 cpts->clock = NULL; 475 cpts->clock = NULL;
399 476
400 cpts_write32(cpts, 0, int_enable); 477 cpts_write32(cpts, 0, int_enable);
401 cpts_write32(cpts, 0, control); 478 cpts_write32(cpts, 0, control);
402 479
480 /* Drop all packet */
481 skb_queue_purge(&cpts->txq);
482
403 clk_disable(cpts->refclk); 483 clk_disable(cpts->refclk);
404} 484}
405EXPORT_SYMBOL_GPL(cpts_unregister); 485EXPORT_SYMBOL_GPL(cpts_unregister);
@@ -476,7 +556,6 @@ struct cpts *cpts_create(struct device *dev, void __iomem *regs,
476 cpts->dev = dev; 556 cpts->dev = dev;
477 cpts->reg = (struct cpsw_cpts __iomem *)regs; 557 cpts->reg = (struct cpsw_cpts __iomem *)regs;
478 spin_lock_init(&cpts->lock); 558 spin_lock_init(&cpts->lock);
479 INIT_DELAYED_WORK(&cpts->overflow_work, cpts_overflow_check);
480 559
481 ret = cpts_of_parse(cpts, node); 560 ret = cpts_of_parse(cpts, node);
482 if (ret) 561 if (ret)
diff --git a/drivers/net/ethernet/ti/cpts.h b/drivers/net/ethernet/ti/cpts.h
index 01ea82ba9cdc..73d73faf0f38 100644
--- a/drivers/net/ethernet/ti/cpts.h
+++ b/drivers/net/ethernet/ti/cpts.h
@@ -119,13 +119,13 @@ struct cpts {
119 u32 cc_mult; /* for the nominal frequency */ 119 u32 cc_mult; /* for the nominal frequency */
120 struct cyclecounter cc; 120 struct cyclecounter cc;
121 struct timecounter tc; 121 struct timecounter tc;
122 struct delayed_work overflow_work;
123 int phc_index; 122 int phc_index;
124 struct clk *refclk; 123 struct clk *refclk;
125 struct list_head events; 124 struct list_head events;
126 struct list_head pool; 125 struct list_head pool;
127 struct cpts_event pool_data[CPTS_MAX_EVENTS]; 126 struct cpts_event pool_data[CPTS_MAX_EVENTS];
128 unsigned long ov_check_period; 127 unsigned long ov_check_period;
128 struct sk_buff_head txq;
129}; 129};
130 130
131void cpts_rx_timestamp(struct cpts *cpts, struct sk_buff *skb); 131void cpts_rx_timestamp(struct cpts *cpts, struct sk_buff *skb);
diff --git a/drivers/net/ethernet/toshiba/tc35815.c b/drivers/net/ethernet/toshiba/tc35815.c
index d9db8a06afd2..cce9c9ed46aa 100644
--- a/drivers/net/ethernet/toshiba/tc35815.c
+++ b/drivers/net/ethernet/toshiba/tc35815.c
@@ -1338,7 +1338,7 @@ static int tc35815_send_packet(struct sk_buff *skb, struct net_device *dev)
1338static void tc35815_fatal_error_interrupt(struct net_device *dev, u32 status) 1338static void tc35815_fatal_error_interrupt(struct net_device *dev, u32 status)
1339{ 1339{
1340 static int count; 1340 static int count;
1341 printk(KERN_WARNING "%s: Fatal Error Intterrupt (%#x):", 1341 printk(KERN_WARNING "%s: Fatal Error Interrupt (%#x):",
1342 dev->name, status); 1342 dev->name, status);
1343 if (status & Int_IntPCI) 1343 if (status & Int_IntPCI)
1344 printk(" IntPCI"); 1344 printk(" IntPCI");
diff --git a/drivers/net/geneve.c b/drivers/net/geneve.c
index de8156c6b292..2bbda71818ad 100644
--- a/drivers/net/geneve.c
+++ b/drivers/net/geneve.c
@@ -1091,7 +1091,7 @@ static int geneve_validate(struct nlattr *tb[], struct nlattr *data[],
1091 if (data[IFLA_GENEVE_ID]) { 1091 if (data[IFLA_GENEVE_ID]) {
1092 __u32 vni = nla_get_u32(data[IFLA_GENEVE_ID]); 1092 __u32 vni = nla_get_u32(data[IFLA_GENEVE_ID]);
1093 1093
1094 if (vni >= GENEVE_VID_MASK) 1094 if (vni >= GENEVE_N_VID)
1095 return -ERANGE; 1095 return -ERANGE;
1096 } 1096 }
1097 1097
diff --git a/drivers/net/gtp.c b/drivers/net/gtp.c
index 1542e837fdfa..f38e32a7ec9c 100644
--- a/drivers/net/gtp.c
+++ b/drivers/net/gtp.c
@@ -364,7 +364,7 @@ static int gtp_dev_init(struct net_device *dev)
364 364
365 gtp->dev = dev; 365 gtp->dev = dev;
366 366
367 dev->tstats = alloc_percpu(struct pcpu_sw_netstats); 367 dev->tstats = netdev_alloc_pcpu_stats(struct pcpu_sw_netstats);
368 if (!dev->tstats) 368 if (!dev->tstats)
369 return -ENOMEM; 369 return -ENOMEM;
370 370
diff --git a/drivers/net/hyperv/hyperv_net.h b/drivers/net/hyperv/hyperv_net.h
index d6c25580f8dd..12cc64bfcff8 100644
--- a/drivers/net/hyperv/hyperv_net.h
+++ b/drivers/net/hyperv/hyperv_net.h
@@ -765,7 +765,8 @@ struct netvsc_device {
765 u32 max_chn; 765 u32 max_chn;
766 u32 num_chn; 766 u32 num_chn;
767 767
768 refcount_t sc_offered; 768 atomic_t open_chn;
769 wait_queue_head_t subchan_open;
769 770
770 struct rndis_device *extension; 771 struct rndis_device *extension;
771 772
diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
index 0a9167dd72fb..d18c3326a1f7 100644
--- a/drivers/net/hyperv/netvsc.c
+++ b/drivers/net/hyperv/netvsc.c
@@ -78,6 +78,7 @@ static struct netvsc_device *alloc_net_device(void)
78 net_device->max_pkt = RNDIS_MAX_PKT_DEFAULT; 78 net_device->max_pkt = RNDIS_MAX_PKT_DEFAULT;
79 net_device->pkt_align = RNDIS_PKT_ALIGN_DEFAULT; 79 net_device->pkt_align = RNDIS_PKT_ALIGN_DEFAULT;
80 init_completion(&net_device->channel_init_wait); 80 init_completion(&net_device->channel_init_wait);
81 init_waitqueue_head(&net_device->subchan_open);
81 82
82 return net_device; 83 return net_device;
83} 84}
@@ -1302,6 +1303,8 @@ int netvsc_device_add(struct hv_device *device,
1302 struct netvsc_channel *nvchan = &net_device->chan_table[i]; 1303 struct netvsc_channel *nvchan = &net_device->chan_table[i];
1303 1304
1304 nvchan->channel = device->channel; 1305 nvchan->channel = device->channel;
1306 u64_stats_init(&nvchan->tx_stats.syncp);
1307 u64_stats_init(&nvchan->rx_stats.syncp);
1305 } 1308 }
1306 1309
1307 /* Enable NAPI handler before init callbacks */ 1310 /* Enable NAPI handler before init callbacks */
diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c
index 63c98bbbc596..0d78727f1a14 100644
--- a/drivers/net/hyperv/netvsc_drv.c
+++ b/drivers/net/hyperv/netvsc_drv.c
@@ -315,14 +315,34 @@ static u32 init_page_array(void *hdr, u32 len, struct sk_buff *skb,
315 return slots_used; 315 return slots_used;
316} 316}
317 317
318/* Estimate number of page buffers neede to transmit 318static int count_skb_frag_slots(struct sk_buff *skb)
319 * Need at most 2 for RNDIS header plus skb body and fragments. 319{
320 */ 320 int i, frags = skb_shinfo(skb)->nr_frags;
321static unsigned int netvsc_get_slots(const struct sk_buff *skb) 321 int pages = 0;
322
323 for (i = 0; i < frags; i++) {
324 skb_frag_t *frag = skb_shinfo(skb)->frags + i;
325 unsigned long size = skb_frag_size(frag);
326 unsigned long offset = frag->page_offset;
327
328 /* Skip unused frames from start of page */
329 offset &= ~PAGE_MASK;
330 pages += PFN_UP(offset + size);
331 }
332 return pages;
333}
334
335static int netvsc_get_slots(struct sk_buff *skb)
322{ 336{
323 return PFN_UP(offset_in_page(skb->data) + skb_headlen(skb)) 337 char *data = skb->data;
324 + skb_shinfo(skb)->nr_frags 338 unsigned int offset = offset_in_page(data);
325 + 2; 339 unsigned int len = skb_headlen(skb);
340 int slots;
341 int frag_slots;
342
343 slots = DIV_ROUND_UP(offset + len, PAGE_SIZE);
344 frag_slots = count_skb_frag_slots(skb);
345 return slots + frag_slots;
326} 346}
327 347
328static u32 net_checksum_info(struct sk_buff *skb) 348static u32 net_checksum_info(struct sk_buff *skb)
@@ -360,18 +380,21 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net)
360 struct hv_page_buffer page_buf[MAX_PAGE_BUFFER_COUNT]; 380 struct hv_page_buffer page_buf[MAX_PAGE_BUFFER_COUNT];
361 struct hv_page_buffer *pb = page_buf; 381 struct hv_page_buffer *pb = page_buf;
362 382
363 /* We can only transmit MAX_PAGE_BUFFER_COUNT number 383 /* We will atmost need two pages to describe the rndis
384 * header. We can only transmit MAX_PAGE_BUFFER_COUNT number
364 * of pages in a single packet. If skb is scattered around 385 * of pages in a single packet. If skb is scattered around
365 * more pages we try linearizing it. 386 * more pages we try linearizing it.
366 */ 387 */
367 num_data_pgs = netvsc_get_slots(skb); 388
389 num_data_pgs = netvsc_get_slots(skb) + 2;
390
368 if (unlikely(num_data_pgs > MAX_PAGE_BUFFER_COUNT)) { 391 if (unlikely(num_data_pgs > MAX_PAGE_BUFFER_COUNT)) {
369 ++net_device_ctx->eth_stats.tx_scattered; 392 ++net_device_ctx->eth_stats.tx_scattered;
370 393
371 if (skb_linearize(skb)) 394 if (skb_linearize(skb))
372 goto no_memory; 395 goto no_memory;
373 396
374 num_data_pgs = netvsc_get_slots(skb); 397 num_data_pgs = netvsc_get_slots(skb) + 2;
375 if (num_data_pgs > MAX_PAGE_BUFFER_COUNT) { 398 if (num_data_pgs > MAX_PAGE_BUFFER_COUNT) {
376 ++net_device_ctx->eth_stats.tx_too_big; 399 ++net_device_ctx->eth_stats.tx_too_big;
377 goto drop; 400 goto drop;
diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
index 85c00e1c52b6..d6308ffda53e 100644
--- a/drivers/net/hyperv/rndis_filter.c
+++ b/drivers/net/hyperv/rndis_filter.c
@@ -1048,8 +1048,8 @@ static void netvsc_sc_open(struct vmbus_channel *new_sc)
1048 else 1048 else
1049 netif_napi_del(&nvchan->napi); 1049 netif_napi_del(&nvchan->napi);
1050 1050
1051 if (refcount_dec_and_test(&nvscdev->sc_offered)) 1051 atomic_inc(&nvscdev->open_chn);
1052 complete(&nvscdev->channel_init_wait); 1052 wake_up(&nvscdev->subchan_open);
1053} 1053}
1054 1054
1055int rndis_filter_device_add(struct hv_device *dev, 1055int rndis_filter_device_add(struct hv_device *dev,
@@ -1090,8 +1090,6 @@ int rndis_filter_device_add(struct hv_device *dev,
1090 net_device->max_chn = 1; 1090 net_device->max_chn = 1;
1091 net_device->num_chn = 1; 1091 net_device->num_chn = 1;
1092 1092
1093 refcount_set(&net_device->sc_offered, 0);
1094
1095 net_device->extension = rndis_device; 1093 net_device->extension = rndis_device;
1096 rndis_device->ndev = net; 1094 rndis_device->ndev = net;
1097 1095
@@ -1221,11 +1219,11 @@ int rndis_filter_device_add(struct hv_device *dev,
1221 rndis_device->ind_table[i] = ethtool_rxfh_indir_default(i, 1219 rndis_device->ind_table[i] = ethtool_rxfh_indir_default(i,
1222 net_device->num_chn); 1220 net_device->num_chn);
1223 1221
1222 atomic_set(&net_device->open_chn, 1);
1224 num_rss_qs = net_device->num_chn - 1; 1223 num_rss_qs = net_device->num_chn - 1;
1225 if (num_rss_qs == 0) 1224 if (num_rss_qs == 0)
1226 return 0; 1225 return 0;
1227 1226
1228 refcount_set(&net_device->sc_offered, num_rss_qs);
1229 vmbus_set_sc_create_callback(dev->channel, netvsc_sc_open); 1227 vmbus_set_sc_create_callback(dev->channel, netvsc_sc_open);
1230 1228
1231 init_packet = &net_device->channel_init_pkt; 1229 init_packet = &net_device->channel_init_pkt;
@@ -1242,15 +1240,19 @@ int rndis_filter_device_add(struct hv_device *dev,
1242 if (ret) 1240 if (ret)
1243 goto out; 1241 goto out;
1244 1242
1243 wait_for_completion(&net_device->channel_init_wait);
1245 if (init_packet->msg.v5_msg.subchn_comp.status != NVSP_STAT_SUCCESS) { 1244 if (init_packet->msg.v5_msg.subchn_comp.status != NVSP_STAT_SUCCESS) {
1246 ret = -ENODEV; 1245 ret = -ENODEV;
1247 goto out; 1246 goto out;
1248 } 1247 }
1249 wait_for_completion(&net_device->channel_init_wait);
1250 1248
1251 net_device->num_chn = 1 + 1249 net_device->num_chn = 1 +
1252 init_packet->msg.v5_msg.subchn_comp.num_subchannels; 1250 init_packet->msg.v5_msg.subchn_comp.num_subchannels;
1253 1251
1252 /* wait for all sub channels to open */
1253 wait_event(net_device->subchan_open,
1254 atomic_read(&net_device->open_chn) == net_device->num_chn);
1255
1254 /* ignore failues from setting rss parameters, still have channels */ 1256 /* ignore failues from setting rss parameters, still have channels */
1255 rndis_filter_set_rss_param(rndis_device, netvsc_hash_key, 1257 rndis_filter_set_rss_param(rndis_device, netvsc_hash_key,
1256 net_device->num_chn); 1258 net_device->num_chn);
diff --git a/drivers/net/ipvlan/ipvlan_main.c b/drivers/net/ipvlan/ipvlan_main.c
index f37e3c1fd4e7..8dab74a81303 100644
--- a/drivers/net/ipvlan/ipvlan_main.c
+++ b/drivers/net/ipvlan/ipvlan_main.c
@@ -192,7 +192,7 @@ static int ipvlan_init(struct net_device *dev)
192 192
193 netdev_lockdep_set_classes(dev); 193 netdev_lockdep_set_classes(dev);
194 194
195 ipvlan->pcpu_stats = alloc_percpu(struct ipvl_pcpu_stats); 195 ipvlan->pcpu_stats = netdev_alloc_pcpu_stats(struct ipvl_pcpu_stats);
196 if (!ipvlan->pcpu_stats) 196 if (!ipvlan->pcpu_stats)
197 return -ENOMEM; 197 return -ENOMEM;
198 198
diff --git a/drivers/net/irda/mcs7780.c b/drivers/net/irda/mcs7780.c
index 6f6ed75b63c9..765de3bedb88 100644
--- a/drivers/net/irda/mcs7780.c
+++ b/drivers/net/irda/mcs7780.c
@@ -141,9 +141,19 @@ static int mcs_set_reg(struct mcs_cb *mcs, __u16 reg, __u16 val)
141static int mcs_get_reg(struct mcs_cb *mcs, __u16 reg, __u16 * val) 141static int mcs_get_reg(struct mcs_cb *mcs, __u16 reg, __u16 * val)
142{ 142{
143 struct usb_device *dev = mcs->usbdev; 143 struct usb_device *dev = mcs->usbdev;
144 int ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), MCS_RDREQ, 144 void *dmabuf;
145 MCS_RD_RTYPE, 0, reg, val, 2, 145 int ret;
146 msecs_to_jiffies(MCS_CTRL_TIMEOUT)); 146
147 dmabuf = kmalloc(sizeof(__u16), GFP_KERNEL);
148 if (!dmabuf)
149 return -ENOMEM;
150
151 ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0), MCS_RDREQ,
152 MCS_RD_RTYPE, 0, reg, dmabuf, 2,
153 msecs_to_jiffies(MCS_CTRL_TIMEOUT));
154
155 memcpy(val, dmabuf, sizeof(__u16));
156 kfree(dmabuf);
147 157
148 return ret; 158 return ret;
149} 159}
diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
index 2dda72004a7d..928fd892f167 100644
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -7,7 +7,16 @@ menuconfig MDIO_DEVICE
7 help 7 help
8 MDIO devices and driver infrastructure code. 8 MDIO devices and driver infrastructure code.
9 9
10if MDIO_DEVICE 10config MDIO_BUS
11 tristate
12 default m if PHYLIB=m
13 default MDIO_DEVICE
14 help
15 This internal symbol is used for link time dependencies and it
16 reflects whether the mdio_bus/mdio_device code is built as a
17 loadable module or built-in.
18
19if MDIO_BUS
11 20
12config MDIO_BCM_IPROC 21config MDIO_BCM_IPROC
13 tristate "Broadcom iProc MDIO bus controller" 22 tristate "Broadcom iProc MDIO bus controller"
@@ -28,7 +37,6 @@ config MDIO_BCM_UNIMAC
28 37
29config MDIO_BITBANG 38config MDIO_BITBANG
30 tristate "Bitbanged MDIO buses" 39 tristate "Bitbanged MDIO buses"
31 depends on !(MDIO_DEVICE=y && PHYLIB=m)
32 help 40 help
33 This module implements the MDIO bus protocol in software, 41 This module implements the MDIO bus protocol in software,
34 for use by low level drivers that export the ability to 42 for use by low level drivers that export the ability to
@@ -127,7 +135,6 @@ config MDIO_THUNDER
127 tristate "ThunderX SOCs MDIO buses" 135 tristate "ThunderX SOCs MDIO buses"
128 depends on 64BIT 136 depends on 64BIT
129 depends on PCI 137 depends on PCI
130 depends on !(MDIO_DEVICE=y && PHYLIB=m)
131 select MDIO_CAVIUM 138 select MDIO_CAVIUM
132 help 139 help
133 This driver supports the MDIO interfaces found on Cavium 140 This driver supports the MDIO interfaces found on Cavium
diff --git a/drivers/net/phy/mdio-mux.c b/drivers/net/phy/mdio-mux.c
index 00755b6a42cf..c608e1dfaf09 100644
--- a/drivers/net/phy/mdio-mux.c
+++ b/drivers/net/phy/mdio-mux.c
@@ -135,8 +135,8 @@ int mdio_mux_init(struct device *dev,
135 for_each_available_child_of_node(dev->of_node, child_bus_node) { 135 for_each_available_child_of_node(dev->of_node, child_bus_node) {
136 int v; 136 int v;
137 137
138 v = of_mdio_parse_addr(dev, child_bus_node); 138 r = of_property_read_u32(child_bus_node, "reg", &v);
139 if (v < 0) { 139 if (r) {
140 dev_err(dev, 140 dev_err(dev,
141 "Error: Failed to find reg for child %s\n", 141 "Error: Failed to find reg for child %s\n",
142 of_node_full_name(child_bus_node)); 142 of_node_full_name(child_bus_node));
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index d0626bf5c540..5068c582d502 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -749,6 +749,9 @@ void phy_stop_machine(struct phy_device *phydev)
749 if (phydev->state > PHY_UP && phydev->state != PHY_HALTED) 749 if (phydev->state > PHY_UP && phydev->state != PHY_HALTED)
750 phydev->state = PHY_UP; 750 phydev->state = PHY_UP;
751 mutex_unlock(&phydev->lock); 751 mutex_unlock(&phydev->lock);
752
753 /* Now we can run the state machine synchronously */
754 phy_state_machine(&phydev->state_queue.work);
752} 755}
753 756
754/** 757/**
diff --git a/drivers/net/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c
index 13028833bee3..a404552555d4 100644
--- a/drivers/net/ppp/ppp_generic.c
+++ b/drivers/net/ppp/ppp_generic.c
@@ -120,6 +120,7 @@ struct ppp {
120 int n_channels; /* how many channels are attached 54 */ 120 int n_channels; /* how many channels are attached 54 */
121 spinlock_t rlock; /* lock for receive side 58 */ 121 spinlock_t rlock; /* lock for receive side 58 */
122 spinlock_t wlock; /* lock for transmit side 5c */ 122 spinlock_t wlock; /* lock for transmit side 5c */
123 int *xmit_recursion __percpu; /* xmit recursion detect */
123 int mru; /* max receive unit 60 */ 124 int mru; /* max receive unit 60 */
124 unsigned int flags; /* control bits 64 */ 125 unsigned int flags; /* control bits 64 */
125 unsigned int xstate; /* transmit state bits 68 */ 126 unsigned int xstate; /* transmit state bits 68 */
@@ -1025,6 +1026,7 @@ static int ppp_dev_configure(struct net *src_net, struct net_device *dev,
1025 struct ppp *ppp = netdev_priv(dev); 1026 struct ppp *ppp = netdev_priv(dev);
1026 int indx; 1027 int indx;
1027 int err; 1028 int err;
1029 int cpu;
1028 1030
1029 ppp->dev = dev; 1031 ppp->dev = dev;
1030 ppp->ppp_net = src_net; 1032 ppp->ppp_net = src_net;
@@ -1039,6 +1041,15 @@ static int ppp_dev_configure(struct net *src_net, struct net_device *dev,
1039 INIT_LIST_HEAD(&ppp->channels); 1041 INIT_LIST_HEAD(&ppp->channels);
1040 spin_lock_init(&ppp->rlock); 1042 spin_lock_init(&ppp->rlock);
1041 spin_lock_init(&ppp->wlock); 1043 spin_lock_init(&ppp->wlock);
1044
1045 ppp->xmit_recursion = alloc_percpu(int);
1046 if (!ppp->xmit_recursion) {
1047 err = -ENOMEM;
1048 goto err1;
1049 }
1050 for_each_possible_cpu(cpu)
1051 (*per_cpu_ptr(ppp->xmit_recursion, cpu)) = 0;
1052
1042#ifdef CONFIG_PPP_MULTILINK 1053#ifdef CONFIG_PPP_MULTILINK
1043 ppp->minseq = -1; 1054 ppp->minseq = -1;
1044 skb_queue_head_init(&ppp->mrq); 1055 skb_queue_head_init(&ppp->mrq);
@@ -1050,11 +1061,15 @@ static int ppp_dev_configure(struct net *src_net, struct net_device *dev,
1050 1061
1051 err = ppp_unit_register(ppp, conf->unit, conf->ifname_is_set); 1062 err = ppp_unit_register(ppp, conf->unit, conf->ifname_is_set);
1052 if (err < 0) 1063 if (err < 0)
1053 return err; 1064 goto err2;
1054 1065
1055 conf->file->private_data = &ppp->file; 1066 conf->file->private_data = &ppp->file;
1056 1067
1057 return 0; 1068 return 0;
1069err2:
1070 free_percpu(ppp->xmit_recursion);
1071err1:
1072 return err;
1058} 1073}
1059 1074
1060static const struct nla_policy ppp_nl_policy[IFLA_PPP_MAX + 1] = { 1075static const struct nla_policy ppp_nl_policy[IFLA_PPP_MAX + 1] = {
@@ -1400,18 +1415,16 @@ static void __ppp_xmit_process(struct ppp *ppp)
1400 ppp_xmit_unlock(ppp); 1415 ppp_xmit_unlock(ppp);
1401} 1416}
1402 1417
1403static DEFINE_PER_CPU(int, ppp_xmit_recursion);
1404
1405static void ppp_xmit_process(struct ppp *ppp) 1418static void ppp_xmit_process(struct ppp *ppp)
1406{ 1419{
1407 local_bh_disable(); 1420 local_bh_disable();
1408 1421
1409 if (unlikely(__this_cpu_read(ppp_xmit_recursion))) 1422 if (unlikely(*this_cpu_ptr(ppp->xmit_recursion)))
1410 goto err; 1423 goto err;
1411 1424
1412 __this_cpu_inc(ppp_xmit_recursion); 1425 (*this_cpu_ptr(ppp->xmit_recursion))++;
1413 __ppp_xmit_process(ppp); 1426 __ppp_xmit_process(ppp);
1414 __this_cpu_dec(ppp_xmit_recursion); 1427 (*this_cpu_ptr(ppp->xmit_recursion))--;
1415 1428
1416 local_bh_enable(); 1429 local_bh_enable();
1417 1430
@@ -1902,23 +1915,23 @@ static void __ppp_channel_push(struct channel *pch)
1902 spin_unlock(&pch->downl); 1915 spin_unlock(&pch->downl);
1903 /* see if there is anything from the attached unit to be sent */ 1916 /* see if there is anything from the attached unit to be sent */
1904 if (skb_queue_empty(&pch->file.xq)) { 1917 if (skb_queue_empty(&pch->file.xq)) {
1905 read_lock(&pch->upl);
1906 ppp = pch->ppp; 1918 ppp = pch->ppp;
1907 if (ppp) 1919 if (ppp)
1908 __ppp_xmit_process(ppp); 1920 __ppp_xmit_process(ppp);
1909 read_unlock(&pch->upl);
1910 } 1921 }
1911} 1922}
1912 1923
1913static void ppp_channel_push(struct channel *pch) 1924static void ppp_channel_push(struct channel *pch)
1914{ 1925{
1915 local_bh_disable(); 1926 read_lock_bh(&pch->upl);
1916 1927 if (pch->ppp) {
1917 __this_cpu_inc(ppp_xmit_recursion); 1928 (*this_cpu_ptr(pch->ppp->xmit_recursion))++;
1918 __ppp_channel_push(pch); 1929 __ppp_channel_push(pch);
1919 __this_cpu_dec(ppp_xmit_recursion); 1930 (*this_cpu_ptr(pch->ppp->xmit_recursion))--;
1920 1931 } else {
1921 local_bh_enable(); 1932 __ppp_channel_push(pch);
1933 }
1934 read_unlock_bh(&pch->upl);
1922} 1935}
1923 1936
1924/* 1937/*
@@ -3057,6 +3070,7 @@ static void ppp_destroy_interface(struct ppp *ppp)
3057#endif /* CONFIG_PPP_FILTER */ 3070#endif /* CONFIG_PPP_FILTER */
3058 3071
3059 kfree_skb(ppp->xmit_pending); 3072 kfree_skb(ppp->xmit_pending);
3073 free_percpu(ppp->xmit_recursion);
3060 3074
3061 free_netdev(ppp->dev); 3075 free_netdev(ppp->dev);
3062} 3076}
diff --git a/drivers/net/ppp/pptp.c b/drivers/net/ppp/pptp.c
index eac499c58aa7..6dde9a0cfe76 100644
--- a/drivers/net/ppp/pptp.c
+++ b/drivers/net/ppp/pptp.c
@@ -131,7 +131,6 @@ static void del_chan(struct pppox_sock *sock)
131 clear_bit(sock->proto.pptp.src_addr.call_id, callid_bitmap); 131 clear_bit(sock->proto.pptp.src_addr.call_id, callid_bitmap);
132 RCU_INIT_POINTER(callid_sock[sock->proto.pptp.src_addr.call_id], NULL); 132 RCU_INIT_POINTER(callid_sock[sock->proto.pptp.src_addr.call_id], NULL);
133 spin_unlock(&chan_lock); 133 spin_unlock(&chan_lock);
134 synchronize_rcu();
135} 134}
136 135
137static int pptp_xmit(struct ppp_channel *chan, struct sk_buff *skb) 136static int pptp_xmit(struct ppp_channel *chan, struct sk_buff *skb)
@@ -520,6 +519,7 @@ static int pptp_release(struct socket *sock)
520 519
521 po = pppox_sk(sk); 520 po = pppox_sk(sk);
522 del_chan(po); 521 del_chan(po);
522 synchronize_rcu();
523 523
524 pppox_unbind_sock(sk); 524 pppox_unbind_sock(sk);
525 sk->sk_state = PPPOX_DEAD; 525 sk->sk_state = PPPOX_DEAD;
diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
index 464570409796..ae53e899259f 100644
--- a/drivers/net/team/team.c
+++ b/drivers/net/team/team.c
@@ -60,11 +60,11 @@ static struct team_port *team_port_get_rtnl(const struct net_device *dev)
60static int __set_port_dev_addr(struct net_device *port_dev, 60static int __set_port_dev_addr(struct net_device *port_dev,
61 const unsigned char *dev_addr) 61 const unsigned char *dev_addr)
62{ 62{
63 struct sockaddr addr; 63 struct sockaddr_storage addr;
64 64
65 memcpy(addr.sa_data, dev_addr, port_dev->addr_len); 65 memcpy(addr.__data, dev_addr, port_dev->addr_len);
66 addr.sa_family = port_dev->type; 66 addr.ss_family = port_dev->type;
67 return dev_set_mac_address(port_dev, &addr); 67 return dev_set_mac_address(port_dev, (struct sockaddr *)&addr);
68} 68}
69 69
70static int team_port_set_orig_dev_addr(struct team_port *port) 70static int team_port_set_orig_dev_addr(struct team_port *port)
diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index 3d4c24572ecd..0a2c0a42283f 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -1879,6 +1879,9 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr)
1879 1879
1880err_detach: 1880err_detach:
1881 tun_detach_all(dev); 1881 tun_detach_all(dev);
1882 /* register_netdevice() already called tun_free_netdev() */
1883 goto err_free_dev;
1884
1882err_free_flow: 1885err_free_flow:
1883 tun_flow_uninit(tun); 1886 tun_flow_uninit(tun);
1884 security_tun_dev_free_security(tun->security); 1887 security_tun_dev_free_security(tun->security);
@@ -2598,8 +2601,16 @@ static int __init tun_init(void)
2598 goto err_misc; 2601 goto err_misc;
2599 } 2602 }
2600 2603
2601 register_netdevice_notifier(&tun_notifier_block); 2604 ret = register_netdevice_notifier(&tun_notifier_block);
2605 if (ret) {
2606 pr_err("Can't register netdevice notifier\n");
2607 goto err_notifier;
2608 }
2609
2602 return 0; 2610 return 0;
2611
2612err_notifier:
2613 misc_deregister(&tun_miscdev);
2603err_misc: 2614err_misc:
2604 rtnl_link_unregister(&tun_link_ops); 2615 rtnl_link_unregister(&tun_link_ops);
2605err_linkops: 2616err_linkops:
diff --git a/drivers/net/usb/asix.h b/drivers/net/usb/asix.h
index d1092421aaa7..9a4171b90947 100644
--- a/drivers/net/usb/asix.h
+++ b/drivers/net/usb/asix.h
@@ -209,6 +209,7 @@ void asix_write_cmd_async(struct usbnet *dev, u8 cmd, u16 value,
209int asix_rx_fixup_internal(struct usbnet *dev, struct sk_buff *skb, 209int asix_rx_fixup_internal(struct usbnet *dev, struct sk_buff *skb,
210 struct asix_rx_fixup_info *rx); 210 struct asix_rx_fixup_info *rx);
211int asix_rx_fixup_common(struct usbnet *dev, struct sk_buff *skb); 211int asix_rx_fixup_common(struct usbnet *dev, struct sk_buff *skb);
212void asix_rx_fixup_common_free(struct asix_common_private *dp);
212 213
213struct sk_buff *asix_tx_fixup(struct usbnet *dev, struct sk_buff *skb, 214struct sk_buff *asix_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
214 gfp_t flags); 215 gfp_t flags);
diff --git a/drivers/net/usb/asix_common.c b/drivers/net/usb/asix_common.c
index 7847436c441e..522d2900cd1d 100644
--- a/drivers/net/usb/asix_common.c
+++ b/drivers/net/usb/asix_common.c
@@ -75,6 +75,27 @@ void asix_write_cmd_async(struct usbnet *dev, u8 cmd, u16 value, u16 index,
75 value, index, data, size); 75 value, index, data, size);
76} 76}
77 77
78static void reset_asix_rx_fixup_info(struct asix_rx_fixup_info *rx)
79{
80 /* Reset the variables that have a lifetime outside of
81 * asix_rx_fixup_internal() so that future processing starts from a
82 * known set of initial conditions.
83 */
84
85 if (rx->ax_skb) {
86 /* Discard any incomplete Ethernet frame in the netdev buffer */
87 kfree_skb(rx->ax_skb);
88 rx->ax_skb = NULL;
89 }
90
91 /* Assume the Data header 32-bit word is at the start of the current
92 * or next URB socket buffer so reset all the state variables.
93 */
94 rx->remaining = 0;
95 rx->split_head = false;
96 rx->header = 0;
97}
98
78int asix_rx_fixup_internal(struct usbnet *dev, struct sk_buff *skb, 99int asix_rx_fixup_internal(struct usbnet *dev, struct sk_buff *skb,
79 struct asix_rx_fixup_info *rx) 100 struct asix_rx_fixup_info *rx)
80{ 101{
@@ -99,15 +120,7 @@ int asix_rx_fixup_internal(struct usbnet *dev, struct sk_buff *skb,
99 if (size != ((~rx->header >> 16) & 0x7ff)) { 120 if (size != ((~rx->header >> 16) & 0x7ff)) {
100 netdev_err(dev->net, "asix_rx_fixup() Data Header synchronisation was lost, remaining %d\n", 121 netdev_err(dev->net, "asix_rx_fixup() Data Header synchronisation was lost, remaining %d\n",
101 rx->remaining); 122 rx->remaining);
102 if (rx->ax_skb) { 123 reset_asix_rx_fixup_info(rx);
103 kfree_skb(rx->ax_skb);
104 rx->ax_skb = NULL;
105 /* Discard the incomplete netdev Ethernet frame
106 * and assume the Data header is at the start of
107 * the current URB socket buffer.
108 */
109 }
110 rx->remaining = 0;
111 } 124 }
112 } 125 }
113 126
@@ -139,11 +152,13 @@ int asix_rx_fixup_internal(struct usbnet *dev, struct sk_buff *skb,
139 if (size != ((~rx->header >> 16) & 0x7ff)) { 152 if (size != ((~rx->header >> 16) & 0x7ff)) {
140 netdev_err(dev->net, "asix_rx_fixup() Bad Header Length 0x%x, offset %d\n", 153 netdev_err(dev->net, "asix_rx_fixup() Bad Header Length 0x%x, offset %d\n",
141 rx->header, offset); 154 rx->header, offset);
155 reset_asix_rx_fixup_info(rx);
142 return 0; 156 return 0;
143 } 157 }
144 if (size > dev->net->mtu + ETH_HLEN + VLAN_HLEN) { 158 if (size > dev->net->mtu + ETH_HLEN + VLAN_HLEN) {
145 netdev_dbg(dev->net, "asix_rx_fixup() Bad RX Length %d\n", 159 netdev_dbg(dev->net, "asix_rx_fixup() Bad RX Length %d\n",
146 size); 160 size);
161 reset_asix_rx_fixup_info(rx);
147 return 0; 162 return 0;
148 } 163 }
149 164
@@ -168,8 +183,10 @@ int asix_rx_fixup_internal(struct usbnet *dev, struct sk_buff *skb,
168 if (rx->ax_skb) { 183 if (rx->ax_skb) {
169 skb_put_data(rx->ax_skb, skb->data + offset, 184 skb_put_data(rx->ax_skb, skb->data + offset,
170 copy_length); 185 copy_length);
171 if (!rx->remaining) 186 if (!rx->remaining) {
172 usbnet_skb_return(dev, rx->ax_skb); 187 usbnet_skb_return(dev, rx->ax_skb);
188 rx->ax_skb = NULL;
189 }
173 } 190 }
174 191
175 offset += (copy_length + 1) & 0xfffe; 192 offset += (copy_length + 1) & 0xfffe;
@@ -178,6 +195,7 @@ int asix_rx_fixup_internal(struct usbnet *dev, struct sk_buff *skb,
178 if (skb->len != offset) { 195 if (skb->len != offset) {
179 netdev_err(dev->net, "asix_rx_fixup() Bad SKB Length %d, %d\n", 196 netdev_err(dev->net, "asix_rx_fixup() Bad SKB Length %d, %d\n",
180 skb->len, offset); 197 skb->len, offset);
198 reset_asix_rx_fixup_info(rx);
181 return 0; 199 return 0;
182 } 200 }
183 201
@@ -192,6 +210,21 @@ int asix_rx_fixup_common(struct usbnet *dev, struct sk_buff *skb)
192 return asix_rx_fixup_internal(dev, skb, rx); 210 return asix_rx_fixup_internal(dev, skb, rx);
193} 211}
194 212
213void asix_rx_fixup_common_free(struct asix_common_private *dp)
214{
215 struct asix_rx_fixup_info *rx;
216
217 if (!dp)
218 return;
219
220 rx = &dp->rx_fixup_info;
221
222 if (rx->ax_skb) {
223 kfree_skb(rx->ax_skb);
224 rx->ax_skb = NULL;
225 }
226}
227
195struct sk_buff *asix_tx_fixup(struct usbnet *dev, struct sk_buff *skb, 228struct sk_buff *asix_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
196 gfp_t flags) 229 gfp_t flags)
197{ 230{
diff --git a/drivers/net/usb/asix_devices.c b/drivers/net/usb/asix_devices.c
index a3aa0a27dfe5..b2ff88e69a81 100644
--- a/drivers/net/usb/asix_devices.c
+++ b/drivers/net/usb/asix_devices.c
@@ -764,6 +764,7 @@ static int ax88772_bind(struct usbnet *dev, struct usb_interface *intf)
764 764
765static void ax88772_unbind(struct usbnet *dev, struct usb_interface *intf) 765static void ax88772_unbind(struct usbnet *dev, struct usb_interface *intf)
766{ 766{
767 asix_rx_fixup_common_free(dev->driver_priv);
767 kfree(dev->driver_priv); 768 kfree(dev->driver_priv);
768} 769}
769 770
diff --git a/drivers/net/usb/cdc_ncm.c b/drivers/net/usb/cdc_ncm.c
index d103a1d4fb36..8f572b9f3625 100644
--- a/drivers/net/usb/cdc_ncm.c
+++ b/drivers/net/usb/cdc_ncm.c
@@ -768,8 +768,10 @@ int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_
768 u8 *buf; 768 u8 *buf;
769 int len; 769 int len;
770 int temp; 770 int temp;
771 int err;
771 u8 iface_no; 772 u8 iface_no;
772 struct usb_cdc_parsed_header hdr; 773 struct usb_cdc_parsed_header hdr;
774 u16 curr_ntb_format;
773 775
774 ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); 776 ctx = kzalloc(sizeof(*ctx), GFP_KERNEL);
775 if (!ctx) 777 if (!ctx)
@@ -874,6 +876,32 @@ int cdc_ncm_bind_common(struct usbnet *dev, struct usb_interface *intf, u8 data_
874 goto error2; 876 goto error2;
875 } 877 }
876 878
879 /*
880 * Some Huawei devices have been observed to come out of reset in NDP32 mode.
881 * Let's check if this is the case, and set the device to NDP16 mode again if
882 * needed.
883 */
884 if (ctx->drvflags & CDC_NCM_FLAG_RESET_NTB16) {
885 err = usbnet_read_cmd(dev, USB_CDC_GET_NTB_FORMAT,
886 USB_TYPE_CLASS | USB_DIR_IN | USB_RECIP_INTERFACE,
887 0, iface_no, &curr_ntb_format, 2);
888 if (err < 0) {
889 goto error2;
890 }
891
892 if (curr_ntb_format == USB_CDC_NCM_NTB32_FORMAT) {
893 dev_info(&intf->dev, "resetting NTB format to 16-bit");
894 err = usbnet_write_cmd(dev, USB_CDC_SET_NTB_FORMAT,
895 USB_TYPE_CLASS | USB_DIR_OUT
896 | USB_RECIP_INTERFACE,
897 USB_CDC_NCM_NTB16_FORMAT,
898 iface_no, NULL, 0);
899
900 if (err < 0)
901 goto error2;
902 }
903 }
904
877 cdc_ncm_find_endpoints(dev, ctx->data); 905 cdc_ncm_find_endpoints(dev, ctx->data);
878 cdc_ncm_find_endpoints(dev, ctx->control); 906 cdc_ncm_find_endpoints(dev, ctx->control);
879 if (!dev->in || !dev->out || !dev->status) { 907 if (!dev->in || !dev->out || !dev->status) {
diff --git a/drivers/net/usb/huawei_cdc_ncm.c b/drivers/net/usb/huawei_cdc_ncm.c
index 2680a65cd5e4..63f28908afda 100644
--- a/drivers/net/usb/huawei_cdc_ncm.c
+++ b/drivers/net/usb/huawei_cdc_ncm.c
@@ -80,6 +80,12 @@ static int huawei_cdc_ncm_bind(struct usbnet *usbnet_dev,
80 * be at the end of the frame. 80 * be at the end of the frame.
81 */ 81 */
82 drvflags |= CDC_NCM_FLAG_NDP_TO_END; 82 drvflags |= CDC_NCM_FLAG_NDP_TO_END;
83
84 /* Additionally, it has been reported that some Huawei E3372H devices, with
85 * firmware version 21.318.01.00.541, come out of reset in NTB32 format mode, hence
86 * needing to be set to the NTB16 one again.
87 */
88 drvflags |= CDC_NCM_FLAG_RESET_NTB16;
83 ret = cdc_ncm_bind_common(usbnet_dev, intf, 1, drvflags); 89 ret = cdc_ncm_bind_common(usbnet_dev, intf, 1, drvflags);
84 if (ret) 90 if (ret)
85 goto err; 91 goto err;
diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c
index 5833f7e2a127..b99a7fb09f8e 100644
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
@@ -2367,9 +2367,6 @@ static int lan78xx_reset(struct lan78xx_net *dev)
2367 /* Init LTM */ 2367 /* Init LTM */
2368 lan78xx_init_ltm(dev); 2368 lan78xx_init_ltm(dev);
2369 2369
2370 dev->net->hard_header_len += TX_OVERHEAD;
2371 dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len;
2372
2373 if (dev->udev->speed == USB_SPEED_SUPER) { 2370 if (dev->udev->speed == USB_SPEED_SUPER) {
2374 buf = DEFAULT_BURST_CAP_SIZE / SS_USB_PKT_SIZE; 2371 buf = DEFAULT_BURST_CAP_SIZE / SS_USB_PKT_SIZE;
2375 dev->rx_urb_size = DEFAULT_BURST_CAP_SIZE; 2372 dev->rx_urb_size = DEFAULT_BURST_CAP_SIZE;
@@ -2855,16 +2852,19 @@ static int lan78xx_bind(struct lan78xx_net *dev, struct usb_interface *intf)
2855 return ret; 2852 return ret;
2856 } 2853 }
2857 2854
2855 dev->net->hard_header_len += TX_OVERHEAD;
2856 dev->hard_mtu = dev->net->mtu + dev->net->hard_header_len;
2857
2858 /* Init all registers */ 2858 /* Init all registers */
2859 ret = lan78xx_reset(dev); 2859 ret = lan78xx_reset(dev);
2860 2860
2861 lan78xx_mdio_init(dev); 2861 ret = lan78xx_mdio_init(dev);
2862 2862
2863 dev->net->flags |= IFF_MULTICAST; 2863 dev->net->flags |= IFF_MULTICAST;
2864 2864
2865 pdata->wol = WAKE_MAGIC; 2865 pdata->wol = WAKE_MAGIC;
2866 2866
2867 return 0; 2867 return ret;
2868} 2868}
2869 2869
2870static void lan78xx_unbind(struct lan78xx_net *dev, struct usb_interface *intf) 2870static void lan78xx_unbind(struct lan78xx_net *dev, struct usb_interface *intf)
@@ -3525,11 +3525,11 @@ static int lan78xx_probe(struct usb_interface *intf,
3525 udev = interface_to_usbdev(intf); 3525 udev = interface_to_usbdev(intf);
3526 udev = usb_get_dev(udev); 3526 udev = usb_get_dev(udev);
3527 3527
3528 ret = -ENOMEM;
3529 netdev = alloc_etherdev(sizeof(struct lan78xx_net)); 3528 netdev = alloc_etherdev(sizeof(struct lan78xx_net));
3530 if (!netdev) { 3529 if (!netdev) {
3531 dev_err(&intf->dev, "Error: OOM\n"); 3530 dev_err(&intf->dev, "Error: OOM\n");
3532 goto out1; 3531 ret = -ENOMEM;
3532 goto out1;
3533 } 3533 }
3534 3534
3535 /* netdev_printk() needs this */ 3535 /* netdev_printk() needs this */
@@ -3610,7 +3610,7 @@ static int lan78xx_probe(struct usb_interface *intf,
3610 ret = register_netdev(netdev); 3610 ret = register_netdev(netdev);
3611 if (ret != 0) { 3611 if (ret != 0) {
3612 netif_err(dev, probe, netdev, "couldn't register the device\n"); 3612 netif_err(dev, probe, netdev, "couldn't register the device\n");
3613 goto out2; 3613 goto out3;
3614 } 3614 }
3615 3615
3616 usb_set_intfdata(intf, dev); 3616 usb_set_intfdata(intf, dev);
diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
index 5894e3c9468f..8c3733608271 100644
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@ -1175,6 +1175,7 @@ static const struct usb_device_id products[] = {
1175 {QMI_FIXED_INTF(0x19d2, 0x1428, 2)}, /* Telewell TW-LTE 4G v2 */ 1175 {QMI_FIXED_INTF(0x19d2, 0x1428, 2)}, /* Telewell TW-LTE 4G v2 */
1176 {QMI_FIXED_INTF(0x19d2, 0x2002, 4)}, /* ZTE (Vodafone) K3765-Z */ 1176 {QMI_FIXED_INTF(0x19d2, 0x2002, 4)}, /* ZTE (Vodafone) K3765-Z */
1177 {QMI_FIXED_INTF(0x2001, 0x7e19, 4)}, /* D-Link DWM-221 B1 */ 1177 {QMI_FIXED_INTF(0x2001, 0x7e19, 4)}, /* D-Link DWM-221 B1 */
1178 {QMI_FIXED_INTF(0x2001, 0x7e35, 4)}, /* D-Link DWM-222 */
1178 {QMI_FIXED_INTF(0x0f3d, 0x68a2, 8)}, /* Sierra Wireless MC7700 */ 1179 {QMI_FIXED_INTF(0x0f3d, 0x68a2, 8)}, /* Sierra Wireless MC7700 */
1179 {QMI_FIXED_INTF(0x114f, 0x68a2, 8)}, /* Sierra Wireless MC7750 */ 1180 {QMI_FIXED_INTF(0x114f, 0x68a2, 8)}, /* Sierra Wireless MC7750 */
1180 {QMI_FIXED_INTF(0x1199, 0x68a2, 8)}, /* Sierra Wireless MC7710 in QMI mode */ 1181 {QMI_FIXED_INTF(0x1199, 0x68a2, 8)}, /* Sierra Wireless MC7710 in QMI mode */
@@ -1340,10 +1341,14 @@ static int qmi_wwan_probe(struct usb_interface *intf,
1340static void qmi_wwan_disconnect(struct usb_interface *intf) 1341static void qmi_wwan_disconnect(struct usb_interface *intf)
1341{ 1342{
1342 struct usbnet *dev = usb_get_intfdata(intf); 1343 struct usbnet *dev = usb_get_intfdata(intf);
1343 struct qmi_wwan_state *info = (void *)&dev->data; 1344 struct qmi_wwan_state *info;
1344 struct list_head *iter; 1345 struct list_head *iter;
1345 struct net_device *ldev; 1346 struct net_device *ldev;
1346 1347
1348 /* called twice if separate control and data intf */
1349 if (!dev)
1350 return;
1351 info = (void *)&dev->data;
1347 if (info->flags & QMI_WWAN_FLAG_MUX) { 1352 if (info->flags & QMI_WWAN_FLAG_MUX) {
1348 if (!rtnl_trylock()) { 1353 if (!rtnl_trylock()) {
1349 restart_syscall(); 1354 restart_syscall();
diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
index 2dfca96a63b6..340c13484e5c 100644
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
@@ -898,6 +898,7 @@ static const struct ethtool_ops smsc95xx_ethtool_ops = {
898 .set_wol = smsc95xx_ethtool_set_wol, 898 .set_wol = smsc95xx_ethtool_set_wol,
899 .get_link_ksettings = smsc95xx_get_link_ksettings, 899 .get_link_ksettings = smsc95xx_get_link_ksettings,
900 .set_link_ksettings = smsc95xx_set_link_ksettings, 900 .set_link_ksettings = smsc95xx_set_link_ksettings,
901 .get_ts_info = ethtool_op_get_ts_info,
901}; 902};
902 903
903static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd) 904static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd)
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c
index 99a26a9efec1..98f17b05c68b 100644
--- a/drivers/net/virtio_net.c
+++ b/drivers/net/virtio_net.c
@@ -889,21 +889,20 @@ static int add_recvbuf_mergeable(struct virtnet_info *vi,
889 889
890 buf = (char *)page_address(alloc_frag->page) + alloc_frag->offset; 890 buf = (char *)page_address(alloc_frag->page) + alloc_frag->offset;
891 buf += headroom; /* advance address leaving hole at front of pkt */ 891 buf += headroom; /* advance address leaving hole at front of pkt */
892 ctx = (void *)(unsigned long)len;
893 get_page(alloc_frag->page); 892 get_page(alloc_frag->page);
894 alloc_frag->offset += len + headroom; 893 alloc_frag->offset += len + headroom;
895 hole = alloc_frag->size - alloc_frag->offset; 894 hole = alloc_frag->size - alloc_frag->offset;
896 if (hole < len + headroom) { 895 if (hole < len + headroom) {
897 /* To avoid internal fragmentation, if there is very likely not 896 /* To avoid internal fragmentation, if there is very likely not
898 * enough space for another buffer, add the remaining space to 897 * enough space for another buffer, add the remaining space to
899 * the current buffer. This extra space is not included in 898 * the current buffer.
900 * the truesize stored in ctx.
901 */ 899 */
902 len += hole; 900 len += hole;
903 alloc_frag->offset += hole; 901 alloc_frag->offset += hole;
904 } 902 }
905 903
906 sg_init_one(rq->sg, buf, len); 904 sg_init_one(rq->sg, buf, len);
905 ctx = (void *)(unsigned long)len;
907 err = virtqueue_add_inbuf_ctx(rq->vq, rq->sg, 1, buf, ctx, gfp); 906 err = virtqueue_add_inbuf_ctx(rq->vq, rq->sg, 1, buf, ctx, gfp);
908 if (err < 0) 907 if (err < 0)
909 put_page(virt_to_head_page(buf)); 908 put_page(virt_to_head_page(buf));
@@ -2743,9 +2742,9 @@ module_init(virtio_net_driver_init);
2743 2742
2744static __exit void virtio_net_driver_exit(void) 2743static __exit void virtio_net_driver_exit(void)
2745{ 2744{
2745 unregister_virtio_driver(&virtio_net_driver);
2746 cpuhp_remove_multi_state(CPUHP_VIRT_NET_DEAD); 2746 cpuhp_remove_multi_state(CPUHP_VIRT_NET_DEAD);
2747 cpuhp_remove_multi_state(virtionet_online); 2747 cpuhp_remove_multi_state(virtionet_online);
2748 unregister_virtio_driver(&virtio_net_driver);
2749} 2748}
2750module_exit(virtio_net_driver_exit); 2749module_exit(virtio_net_driver_exit);
2751 2750
diff --git a/drivers/net/vmxnet3/vmxnet3_int.h b/drivers/net/vmxnet3/vmxnet3_int.h
index ba1c9f93592b..9c51b8be0038 100644
--- a/drivers/net/vmxnet3/vmxnet3_int.h
+++ b/drivers/net/vmxnet3/vmxnet3_int.h
@@ -311,7 +311,7 @@ struct vmxnet3_intr {
311 u8 num_intrs; /* # of intr vectors */ 311 u8 num_intrs; /* # of intr vectors */
312 u8 event_intr_idx; /* idx of the intr vector for event */ 312 u8 event_intr_idx; /* idx of the intr vector for event */
313 u8 mod_levels[VMXNET3_LINUX_MAX_MSIX_VECT]; /* moderation level */ 313 u8 mod_levels[VMXNET3_LINUX_MAX_MSIX_VECT]; /* moderation level */
314 char event_msi_vector_name[IFNAMSIZ+11]; 314 char event_msi_vector_name[IFNAMSIZ+17];
315#ifdef CONFIG_PCI_MSI 315#ifdef CONFIG_PCI_MSI
316 struct msix_entry msix_entries[VMXNET3_LINUX_MAX_MSIX_VECT]; 316 struct msix_entry msix_entries[VMXNET3_LINUX_MAX_MSIX_VECT];
317#endif 317#endif
diff --git a/drivers/net/vxlan.c b/drivers/net/vxlan.c
index 96aa7e6cf214..e17baac70f43 100644
--- a/drivers/net/vxlan.c
+++ b/drivers/net/vxlan.c
@@ -623,6 +623,7 @@ static struct sk_buff **vxlan_gro_receive(struct sock *sk,
623 623
624out: 624out:
625 skb_gro_remcsum_cleanup(skb, &grc); 625 skb_gro_remcsum_cleanup(skb, &grc);
626 skb->remcsum_offload = 0;
626 NAPI_GRO_CB(skb)->flush |= flush; 627 NAPI_GRO_CB(skb)->flush |= flush;
627 628
628 return pp; 629 return pp;
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
index 2153e8062b4c..5cc3a07dda9e 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
@@ -214,7 +214,7 @@ static netdev_tx_t brcmf_netdev_start_xmit(struct sk_buff *skb,
214 214
215 /* Make sure there's enough writeable headroom */ 215 /* Make sure there's enough writeable headroom */
216 if (skb_headroom(skb) < drvr->hdrlen || skb_header_cloned(skb)) { 216 if (skb_headroom(skb) < drvr->hdrlen || skb_header_cloned(skb)) {
217 head_delta = drvr->hdrlen - skb_headroom(skb); 217 head_delta = max_t(int, drvr->hdrlen - skb_headroom(skb), 0);
218 218
219 brcmf_dbg(INFO, "%s: insufficient headroom (%d)\n", 219 brcmf_dbg(INFO, "%s: insufficient headroom (%d)\n",
220 brcmf_ifname(ifp), head_delta); 220 brcmf_ifname(ifp), head_delta);
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
index d21258d277ce..f1b60740e020 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
@@ -159,8 +159,10 @@ void brcmf_feat_attach(struct brcmf_pub *drvr)
159 159
160 brcmf_feat_firmware_capabilities(ifp); 160 brcmf_feat_firmware_capabilities(ifp);
161 memset(&gscan_cfg, 0, sizeof(gscan_cfg)); 161 memset(&gscan_cfg, 0, sizeof(gscan_cfg));
162 brcmf_feat_iovar_data_set(ifp, BRCMF_FEAT_GSCAN, "pfn_gscan_cfg", 162 if (drvr->bus_if->chip != BRCM_CC_43430_CHIP_ID)
163 &gscan_cfg, sizeof(gscan_cfg)); 163 brcmf_feat_iovar_data_set(ifp, BRCMF_FEAT_GSCAN,
164 "pfn_gscan_cfg",
165 &gscan_cfg, sizeof(gscan_cfg));
164 brcmf_feat_iovar_int_get(ifp, BRCMF_FEAT_PNO, "pfn"); 166 brcmf_feat_iovar_int_get(ifp, BRCMF_FEAT_PNO, "pfn");
165 if (drvr->bus_if->wowl_supported) 167 if (drvr->bus_if->wowl_supported)
166 brcmf_feat_iovar_int_get(ifp, BRCMF_FEAT_WOWL, "wowl"); 168 brcmf_feat_iovar_int_get(ifp, BRCMF_FEAT_WOWL, "wowl");
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
index fbcbb4325936..f3556122c6ac 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
@@ -2053,12 +2053,13 @@ static int brcmf_sdio_txpkt_hdalign(struct brcmf_sdio *bus, struct sk_buff *pkt)
2053 atomic_inc(&stats->pktcow_failed); 2053 atomic_inc(&stats->pktcow_failed);
2054 return -ENOMEM; 2054 return -ENOMEM;
2055 } 2055 }
2056 head_pad = 0;
2056 } 2057 }
2057 skb_push(pkt, head_pad); 2058 skb_push(pkt, head_pad);
2058 dat_buf = (u8 *)(pkt->data); 2059 dat_buf = (u8 *)(pkt->data);
2059 } 2060 }
2060 memset(dat_buf, 0, head_pad + bus->tx_hdrlen); 2061 memset(dat_buf, 0, head_pad + bus->tx_hdrlen);
2061 return 0; 2062 return head_pad;
2062} 2063}
2063 2064
2064/** 2065/**
@@ -4174,11 +4175,6 @@ struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev)
4174 goto fail; 4175 goto fail;
4175 } 4176 }
4176 4177
4177 /* allocate scatter-gather table. sg support
4178 * will be disabled upon allocation failure.
4179 */
4180 brcmf_sdiod_sgtable_alloc(bus->sdiodev);
4181
4182 /* Query the F2 block size, set roundup accordingly */ 4178 /* Query the F2 block size, set roundup accordingly */
4183 bus->blocksize = bus->sdiodev->func[2]->cur_blksize; 4179 bus->blocksize = bus->sdiodev->func[2]->cur_blksize;
4184 bus->roundup = min(max_roundup, bus->blocksize); 4180 bus->roundup = min(max_roundup, bus->blocksize);
diff --git a/drivers/net/wireless/intel/iwlwifi/cfg/9000.c b/drivers/net/wireless/intel/iwlwifi/cfg/9000.c
index b4ecd1fe1374..97208ce19f92 100644
--- a/drivers/net/wireless/intel/iwlwifi/cfg/9000.c
+++ b/drivers/net/wireless/intel/iwlwifi/cfg/9000.c
@@ -154,7 +154,7 @@ static const struct iwl_tt_params iwl9000_tt_params = {
154const struct iwl_cfg iwl9160_2ac_cfg = { 154const struct iwl_cfg iwl9160_2ac_cfg = {
155 .name = "Intel(R) Dual Band Wireless AC 9160", 155 .name = "Intel(R) Dual Band Wireless AC 9160",
156 .fw_name_pre = IWL9260A_FW_PRE, 156 .fw_name_pre = IWL9260A_FW_PRE,
157 .fw_name_pre_next_step = IWL9260B_FW_PRE, 157 .fw_name_pre_b_or_c_step = IWL9260B_FW_PRE,
158 IWL_DEVICE_9000, 158 IWL_DEVICE_9000,
159 .ht_params = &iwl9000_ht_params, 159 .ht_params = &iwl9000_ht_params,
160 .nvm_ver = IWL9000_NVM_VERSION, 160 .nvm_ver = IWL9000_NVM_VERSION,
@@ -165,7 +165,7 @@ const struct iwl_cfg iwl9160_2ac_cfg = {
165const struct iwl_cfg iwl9260_2ac_cfg = { 165const struct iwl_cfg iwl9260_2ac_cfg = {
166 .name = "Intel(R) Dual Band Wireless AC 9260", 166 .name = "Intel(R) Dual Band Wireless AC 9260",
167 .fw_name_pre = IWL9260A_FW_PRE, 167 .fw_name_pre = IWL9260A_FW_PRE,
168 .fw_name_pre_next_step = IWL9260B_FW_PRE, 168 .fw_name_pre_b_or_c_step = IWL9260B_FW_PRE,
169 IWL_DEVICE_9000, 169 IWL_DEVICE_9000,
170 .ht_params = &iwl9000_ht_params, 170 .ht_params = &iwl9000_ht_params,
171 .nvm_ver = IWL9000_NVM_VERSION, 171 .nvm_ver = IWL9000_NVM_VERSION,
@@ -176,7 +176,7 @@ const struct iwl_cfg iwl9260_2ac_cfg = {
176const struct iwl_cfg iwl9270_2ac_cfg = { 176const struct iwl_cfg iwl9270_2ac_cfg = {
177 .name = "Intel(R) Dual Band Wireless AC 9270", 177 .name = "Intel(R) Dual Band Wireless AC 9270",
178 .fw_name_pre = IWL9260A_FW_PRE, 178 .fw_name_pre = IWL9260A_FW_PRE,
179 .fw_name_pre_next_step = IWL9260B_FW_PRE, 179 .fw_name_pre_b_or_c_step = IWL9260B_FW_PRE,
180 IWL_DEVICE_9000, 180 IWL_DEVICE_9000,
181 .ht_params = &iwl9000_ht_params, 181 .ht_params = &iwl9000_ht_params,
182 .nvm_ver = IWL9000_NVM_VERSION, 182 .nvm_ver = IWL9000_NVM_VERSION,
@@ -186,8 +186,8 @@ const struct iwl_cfg iwl9270_2ac_cfg = {
186 186
187const struct iwl_cfg iwl9460_2ac_cfg = { 187const struct iwl_cfg iwl9460_2ac_cfg = {
188 .name = "Intel(R) Dual Band Wireless AC 9460", 188 .name = "Intel(R) Dual Band Wireless AC 9460",
189 .fw_name_pre = IWL9000_FW_PRE, 189 .fw_name_pre = IWL9260A_FW_PRE,
190 .fw_name_pre_rf_next_step = IWL9000RFB_FW_PRE, 190 .fw_name_pre_b_or_c_step = IWL9260B_FW_PRE,
191 IWL_DEVICE_9000, 191 IWL_DEVICE_9000,
192 .ht_params = &iwl9000_ht_params, 192 .ht_params = &iwl9000_ht_params,
193 .nvm_ver = IWL9000_NVM_VERSION, 193 .nvm_ver = IWL9000_NVM_VERSION,
@@ -198,8 +198,8 @@ const struct iwl_cfg iwl9460_2ac_cfg = {
198 198
199const struct iwl_cfg iwl9560_2ac_cfg = { 199const struct iwl_cfg iwl9560_2ac_cfg = {
200 .name = "Intel(R) Dual Band Wireless AC 9560", 200 .name = "Intel(R) Dual Band Wireless AC 9560",
201 .fw_name_pre = IWL9000_FW_PRE, 201 .fw_name_pre = IWL9260A_FW_PRE,
202 .fw_name_pre_rf_next_step = IWL9000RFB_FW_PRE, 202 .fw_name_pre_b_or_c_step = IWL9260B_FW_PRE,
203 IWL_DEVICE_9000, 203 IWL_DEVICE_9000,
204 .ht_params = &iwl9000_ht_params, 204 .ht_params = &iwl9000_ht_params,
205 .nvm_ver = IWL9000_NVM_VERSION, 205 .nvm_ver = IWL9000_NVM_VERSION,
diff --git a/drivers/net/wireless/intel/iwlwifi/dvm/tx.c b/drivers/net/wireless/intel/iwlwifi/dvm/tx.c
index adaa2f0097cc..fb40ddfced99 100644
--- a/drivers/net/wireless/intel/iwlwifi/dvm/tx.c
+++ b/drivers/net/wireless/intel/iwlwifi/dvm/tx.c
@@ -1189,11 +1189,11 @@ void iwlagn_rx_reply_tx(struct iwl_priv *priv, struct iwl_rx_cmd_buffer *rxb)
1189 next_reclaimed; 1189 next_reclaimed;
1190 IWL_DEBUG_TX_REPLY(priv, "Next reclaimed packet:%d\n", 1190 IWL_DEBUG_TX_REPLY(priv, "Next reclaimed packet:%d\n",
1191 next_reclaimed); 1191 next_reclaimed);
1192 iwlagn_check_ratid_empty(priv, sta_id, tid);
1192 } 1193 }
1193 1194
1194 iwl_trans_reclaim(priv->trans, txq_id, ssn, &skbs); 1195 iwl_trans_reclaim(priv->trans, txq_id, ssn, &skbs);
1195 1196
1196 iwlagn_check_ratid_empty(priv, sta_id, tid);
1197 freed = 0; 1197 freed = 0;
1198 1198
1199 /* process frames */ 1199 /* process frames */
diff --git a/drivers/net/wireless/intel/iwlwifi/fw/file.h b/drivers/net/wireless/intel/iwlwifi/fw/file.h
index 0fa8c473f1e2..c73a6438ce8f 100644
--- a/drivers/net/wireless/intel/iwlwifi/fw/file.h
+++ b/drivers/net/wireless/intel/iwlwifi/fw/file.h
@@ -328,6 +328,7 @@ typedef unsigned int __bitwise iwl_ucode_tlv_capa_t;
328 * @IWL_UCODE_TLV_CAPA_TX_POWER_ACK: reduced TX power API has larger 328 * @IWL_UCODE_TLV_CAPA_TX_POWER_ACK: reduced TX power API has larger
329 * command size (command version 4) that supports toggling ACK TX 329 * command size (command version 4) that supports toggling ACK TX
330 * power reduction. 330 * power reduction.
331 * @IWL_UCODE_TLV_CAPA_MLME_OFFLOAD: supports MLME offload
331 * 332 *
332 * @NUM_IWL_UCODE_TLV_CAPA: number of bits used 333 * @NUM_IWL_UCODE_TLV_CAPA: number of bits used
333 */ 334 */
@@ -373,6 +374,7 @@ enum iwl_ucode_tlv_capa {
373 IWL_UCODE_TLV_CAPA_EXTEND_SHARED_MEM_CFG = (__force iwl_ucode_tlv_capa_t)80, 374 IWL_UCODE_TLV_CAPA_EXTEND_SHARED_MEM_CFG = (__force iwl_ucode_tlv_capa_t)80,
374 IWL_UCODE_TLV_CAPA_LQM_SUPPORT = (__force iwl_ucode_tlv_capa_t)81, 375 IWL_UCODE_TLV_CAPA_LQM_SUPPORT = (__force iwl_ucode_tlv_capa_t)81,
375 IWL_UCODE_TLV_CAPA_TX_POWER_ACK = (__force iwl_ucode_tlv_capa_t)84, 376 IWL_UCODE_TLV_CAPA_TX_POWER_ACK = (__force iwl_ucode_tlv_capa_t)84,
377 IWL_UCODE_TLV_CAPA_MLME_OFFLOAD = (__force iwl_ucode_tlv_capa_t)96,
376 378
377 NUM_IWL_UCODE_TLV_CAPA 379 NUM_IWL_UCODE_TLV_CAPA
378#ifdef __CHECKER__ 380#ifdef __CHECKER__
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-config.h b/drivers/net/wireless/intel/iwlwifi/iwl-config.h
index c52623cb7c2a..d19c74827fbb 100644
--- a/drivers/net/wireless/intel/iwlwifi/iwl-config.h
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-config.h
@@ -276,10 +276,10 @@ struct iwl_pwr_tx_backoff {
276 * @fw_name_pre: Firmware filename prefix. The api version and extension 276 * @fw_name_pre: Firmware filename prefix. The api version and extension
277 * (.ucode) will be added to filename before loading from disk. The 277 * (.ucode) will be added to filename before loading from disk. The
278 * filename is constructed as fw_name_pre<api>.ucode. 278 * filename is constructed as fw_name_pre<api>.ucode.
279 * @fw_name_pre_next_step: same as @fw_name_pre, only for next step 279 * @fw_name_pre_b_or_c_step: same as @fw_name_pre, only for b or c steps
280 * (if supported) 280 * (if supported)
281 * @fw_name_pre_rf_next_step: same as @fw_name_pre_next_step, only for rf next 281 * @fw_name_pre_rf_next_step: same as @fw_name_pre_b_or_c_step, only for rf
282 * step. Supported only in integrated solutions. 282 * next step. Supported only in integrated solutions.
283 * @ucode_api_max: Highest version of uCode API supported by driver. 283 * @ucode_api_max: Highest version of uCode API supported by driver.
284 * @ucode_api_min: Lowest version of uCode API supported by driver. 284 * @ucode_api_min: Lowest version of uCode API supported by driver.
285 * @max_inst_size: The maximal length of the fw inst section 285 * @max_inst_size: The maximal length of the fw inst section
@@ -330,7 +330,7 @@ struct iwl_cfg {
330 /* params specific to an individual device within a device family */ 330 /* params specific to an individual device within a device family */
331 const char *name; 331 const char *name;
332 const char *fw_name_pre; 332 const char *fw_name_pre;
333 const char *fw_name_pre_next_step; 333 const char *fw_name_pre_b_or_c_step;
334 const char *fw_name_pre_rf_next_step; 334 const char *fw_name_pre_rf_next_step;
335 /* params not likely to change within a device family */ 335 /* params not likely to change within a device family */
336 const struct iwl_base_params *base_params; 336 const struct iwl_base_params *base_params;
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-devtrace.h b/drivers/net/wireless/intel/iwlwifi/iwl-devtrace.h
index 545d14b0bc92..f5c1127253cb 100644
--- a/drivers/net/wireless/intel/iwlwifi/iwl-devtrace.h
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-devtrace.h
@@ -55,8 +55,8 @@ static inline bool iwl_trace_data(struct sk_buff *skb)
55 /* also account for the RFC 1042 header, of course */ 55 /* also account for the RFC 1042 header, of course */
56 offs += 6; 56 offs += 6;
57 57
58 return skb->len > offs + 2 && 58 return skb->len <= offs + 2 ||
59 *(__be16 *)(skb->data + offs) == cpu_to_be16(ETH_P_PAE); 59 *(__be16 *)(skb->data + offs) != cpu_to_be16(ETH_P_PAE);
60} 60}
61 61
62static inline size_t iwl_rx_trace_len(const struct iwl_trans *trans, 62static inline size_t iwl_rx_trace_len(const struct iwl_trans *trans,
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c
index 6fdb5921e17f..4e0f86fe0a6f 100644
--- a/drivers/net/wireless/intel/iwlwifi/iwl-drv.c
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-drv.c
@@ -216,8 +216,9 @@ static int iwl_request_firmware(struct iwl_drv *drv, bool first)
216 const char *fw_pre_name; 216 const char *fw_pre_name;
217 217
218 if (drv->trans->cfg->device_family == IWL_DEVICE_FAMILY_9000 && 218 if (drv->trans->cfg->device_family == IWL_DEVICE_FAMILY_9000 &&
219 CSR_HW_REV_STEP(drv->trans->hw_rev) == SILICON_B_STEP) 219 (CSR_HW_REV_STEP(drv->trans->hw_rev) == SILICON_B_STEP ||
220 fw_pre_name = cfg->fw_name_pre_next_step; 220 CSR_HW_REV_STEP(drv->trans->hw_rev) == SILICON_C_STEP))
221 fw_pre_name = cfg->fw_name_pre_b_or_c_step;
221 else if (drv->trans->cfg->integrated && 222 else if (drv->trans->cfg->integrated &&
222 CSR_HW_RFID_STEP(drv->trans->hw_rf_id) == SILICON_B_STEP && 223 CSR_HW_RFID_STEP(drv->trans->hw_rf_id) == SILICON_B_STEP &&
223 cfg->fw_name_pre_rf_next_step) 224 cfg->fw_name_pre_rf_next_step)
diff --git a/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c b/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
index 5c08f4d40f6a..3ee6767392b6 100644
--- a/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
+++ b/drivers/net/wireless/intel/iwlwifi/iwl-nvm-parse.c
@@ -785,7 +785,8 @@ iwl_parse_nvm_mcc_info(struct device *dev, const struct iwl_cfg *cfg,
785 int num_of_ch, __le32 *channels, u16 fw_mcc) 785 int num_of_ch, __le32 *channels, u16 fw_mcc)
786{ 786{
787 int ch_idx; 787 int ch_idx;
788 u16 ch_flags, prev_ch_flags = 0; 788 u16 ch_flags;
789 u32 reg_rule_flags, prev_reg_rule_flags = 0;
789 const u8 *nvm_chan = cfg->ext_nvm ? 790 const u8 *nvm_chan = cfg->ext_nvm ?
790 iwl_ext_nvm_channels : iwl_nvm_channels; 791 iwl_ext_nvm_channels : iwl_nvm_channels;
791 struct ieee80211_regdomain *regd; 792 struct ieee80211_regdomain *regd;
@@ -834,8 +835,11 @@ iwl_parse_nvm_mcc_info(struct device *dev, const struct iwl_cfg *cfg,
834 continue; 835 continue;
835 } 836 }
836 837
838 reg_rule_flags = iwl_nvm_get_regdom_bw_flags(nvm_chan, ch_idx,
839 ch_flags, cfg);
840
837 /* we can't continue the same rule */ 841 /* we can't continue the same rule */
838 if (ch_idx == 0 || prev_ch_flags != ch_flags || 842 if (ch_idx == 0 || prev_reg_rule_flags != reg_rule_flags ||
839 center_freq - prev_center_freq > 20) { 843 center_freq - prev_center_freq > 20) {
840 valid_rules++; 844 valid_rules++;
841 new_rule = true; 845 new_rule = true;
@@ -854,18 +858,17 @@ iwl_parse_nvm_mcc_info(struct device *dev, const struct iwl_cfg *cfg,
854 rule->power_rule.max_eirp = 858 rule->power_rule.max_eirp =
855 DBM_TO_MBM(IWL_DEFAULT_MAX_TX_POWER); 859 DBM_TO_MBM(IWL_DEFAULT_MAX_TX_POWER);
856 860
857 rule->flags = iwl_nvm_get_regdom_bw_flags(nvm_chan, ch_idx, 861 rule->flags = reg_rule_flags;
858 ch_flags, cfg);
859 862
860 /* rely on auto-calculation to merge BW of contiguous chans */ 863 /* rely on auto-calculation to merge BW of contiguous chans */
861 rule->flags |= NL80211_RRF_AUTO_BW; 864 rule->flags |= NL80211_RRF_AUTO_BW;
862 rule->freq_range.max_bandwidth_khz = 0; 865 rule->freq_range.max_bandwidth_khz = 0;
863 866
864 prev_ch_flags = ch_flags;
865 prev_center_freq = center_freq; 867 prev_center_freq = center_freq;
868 prev_reg_rule_flags = reg_rule_flags;
866 869
867 IWL_DEBUG_DEV(dev, IWL_DL_LAR, 870 IWL_DEBUG_DEV(dev, IWL_DL_LAR,
868 "Ch. %d [%sGHz] %s%s%s%s%s%s%s%s%s(0x%02x): Ad-Hoc %ssupported\n", 871 "Ch. %d [%sGHz] %s%s%s%s%s%s%s%s%s(0x%02x) reg_flags 0x%x: %s\n",
869 center_freq, 872 center_freq,
870 band == NL80211_BAND_5GHZ ? "5.2" : "2.4", 873 band == NL80211_BAND_5GHZ ? "5.2" : "2.4",
871 CHECK_AND_PRINT_I(VALID), 874 CHECK_AND_PRINT_I(VALID),
@@ -877,10 +880,10 @@ iwl_parse_nvm_mcc_info(struct device *dev, const struct iwl_cfg *cfg,
877 CHECK_AND_PRINT_I(160MHZ), 880 CHECK_AND_PRINT_I(160MHZ),
878 CHECK_AND_PRINT_I(INDOOR_ONLY), 881 CHECK_AND_PRINT_I(INDOOR_ONLY),
879 CHECK_AND_PRINT_I(GO_CONCURRENT), 882 CHECK_AND_PRINT_I(GO_CONCURRENT),
880 ch_flags, 883 ch_flags, reg_rule_flags,
881 ((ch_flags & NVM_CHANNEL_ACTIVE) && 884 ((ch_flags & NVM_CHANNEL_ACTIVE) &&
882 !(ch_flags & NVM_CHANNEL_RADAR)) 885 !(ch_flags & NVM_CHANNEL_RADAR))
883 ? "" : "not "); 886 ? "Ad-Hoc" : "");
884 } 887 }
885 888
886 regd->n_reg_rules = valid_rules; 889 regd->n_reg_rules = valid_rules;
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
index 79e7a7a285dc..82863e9273eb 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/fw.c
@@ -1275,8 +1275,10 @@ static int iwl_mvm_sar_get_wgds_table(struct iwl_mvm *mvm)
1275 1275
1276 entry = &wifi_pkg->package.elements[idx++]; 1276 entry = &wifi_pkg->package.elements[idx++];
1277 if ((entry->type != ACPI_TYPE_INTEGER) || 1277 if ((entry->type != ACPI_TYPE_INTEGER) ||
1278 (entry->integer.value > U8_MAX)) 1278 (entry->integer.value > U8_MAX)) {
1279 return -EINVAL; 1279 ret = -EINVAL;
1280 goto out_free;
1281 }
1280 1282
1281 mvm->geo_profiles[i].values[j] = entry->integer.value; 1283 mvm->geo_profiles[i].values[j] = entry->integer.value;
1282 } 1284 }
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
index bcde1ba0f1c8..ce901be5fba8 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
@@ -1084,7 +1084,13 @@ int __iwl_mvm_mac_start(struct iwl_mvm *mvm)
1084 1084
1085 lockdep_assert_held(&mvm->mutex); 1085 lockdep_assert_held(&mvm->mutex);
1086 1086
1087 if (test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)) { 1087 if (test_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED, &mvm->status)) {
1088 /*
1089 * Now convert the HW_RESTART_REQUESTED flag to IN_HW_RESTART
1090 * so later code will - from now on - see that we're doing it.
1091 */
1092 set_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status);
1093 clear_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED, &mvm->status);
1088 /* Clean up some internal and mac80211 state on restart */ 1094 /* Clean up some internal and mac80211 state on restart */
1089 iwl_mvm_restart_cleanup(mvm); 1095 iwl_mvm_restart_cleanup(mvm);
1090 } else { 1096 } else {
@@ -2591,8 +2597,18 @@ static void iwl_mvm_purge_deferred_tx_frames(struct iwl_mvm *mvm,
2591 spin_lock_bh(&mvm_sta->lock); 2597 spin_lock_bh(&mvm_sta->lock);
2592 for (i = 0; i <= IWL_MAX_TID_COUNT; i++) { 2598 for (i = 0; i <= IWL_MAX_TID_COUNT; i++) {
2593 tid_data = &mvm_sta->tid_data[i]; 2599 tid_data = &mvm_sta->tid_data[i];
2594 while ((skb = __skb_dequeue(&tid_data->deferred_tx_frames))) 2600
2601 while ((skb = __skb_dequeue(&tid_data->deferred_tx_frames))) {
2602 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
2603
2604 /*
2605 * The first deferred frame should've stopped the MAC
2606 * queues, so we should never get a second deferred
2607 * frame for the RA/TID.
2608 */
2609 iwl_mvm_start_mac_queues(mvm, info->hw_queue);
2595 ieee80211_free_txskb(mvm->hw, skb); 2610 ieee80211_free_txskb(mvm->hw, skb);
2611 }
2596 } 2612 }
2597 spin_unlock_bh(&mvm_sta->lock); 2613 spin_unlock_bh(&mvm_sta->lock);
2598} 2614}
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
index eaacfaf37206..ddd8719f27b8 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/mvm.h
@@ -1090,6 +1090,7 @@ struct iwl_mvm {
1090 * @IWL_MVM_STATUS_HW_RFKILL: HW RF-kill is asserted 1090 * @IWL_MVM_STATUS_HW_RFKILL: HW RF-kill is asserted
1091 * @IWL_MVM_STATUS_HW_CTKILL: CT-kill is active 1091 * @IWL_MVM_STATUS_HW_CTKILL: CT-kill is active
1092 * @IWL_MVM_STATUS_ROC_RUNNING: remain-on-channel is running 1092 * @IWL_MVM_STATUS_ROC_RUNNING: remain-on-channel is running
1093 * @IWL_MVM_STATUS_HW_RESTART_REQUESTED: HW restart was requested
1093 * @IWL_MVM_STATUS_IN_HW_RESTART: HW restart is active 1094 * @IWL_MVM_STATUS_IN_HW_RESTART: HW restart is active
1094 * @IWL_MVM_STATUS_IN_D0I3: NIC is in D0i3 1095 * @IWL_MVM_STATUS_IN_D0I3: NIC is in D0i3
1095 * @IWL_MVM_STATUS_ROC_AUX_RUNNING: AUX remain-on-channel is running 1096 * @IWL_MVM_STATUS_ROC_AUX_RUNNING: AUX remain-on-channel is running
@@ -1101,6 +1102,7 @@ enum iwl_mvm_status {
1101 IWL_MVM_STATUS_HW_RFKILL, 1102 IWL_MVM_STATUS_HW_RFKILL,
1102 IWL_MVM_STATUS_HW_CTKILL, 1103 IWL_MVM_STATUS_HW_CTKILL,
1103 IWL_MVM_STATUS_ROC_RUNNING, 1104 IWL_MVM_STATUS_ROC_RUNNING,
1105 IWL_MVM_STATUS_HW_RESTART_REQUESTED,
1104 IWL_MVM_STATUS_IN_HW_RESTART, 1106 IWL_MVM_STATUS_IN_HW_RESTART,
1105 IWL_MVM_STATUS_IN_D0I3, 1107 IWL_MVM_STATUS_IN_D0I3,
1106 IWL_MVM_STATUS_ROC_AUX_RUNNING, 1108 IWL_MVM_STATUS_ROC_AUX_RUNNING,
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
index 4d1188b8736a..9c175d5e9d67 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/ops.c
@@ -1235,9 +1235,8 @@ void iwl_mvm_nic_restart(struct iwl_mvm *mvm, bool fw_error)
1235 */ 1235 */
1236 if (!mvm->fw_restart && fw_error) { 1236 if (!mvm->fw_restart && fw_error) {
1237 iwl_mvm_fw_dbg_collect_desc(mvm, &iwl_mvm_dump_desc_assert, 1237 iwl_mvm_fw_dbg_collect_desc(mvm, &iwl_mvm_dump_desc_assert,
1238 NULL); 1238 NULL);
1239 } else if (test_and_set_bit(IWL_MVM_STATUS_IN_HW_RESTART, 1239 } else if (test_bit(IWL_MVM_STATUS_IN_HW_RESTART, &mvm->status)) {
1240 &mvm->status)) {
1241 struct iwl_mvm_reprobe *reprobe; 1240 struct iwl_mvm_reprobe *reprobe;
1242 1241
1243 IWL_ERR(mvm, 1242 IWL_ERR(mvm,
@@ -1268,6 +1267,7 @@ void iwl_mvm_nic_restart(struct iwl_mvm *mvm, bool fw_error)
1268 1267
1269 if (fw_error && mvm->fw_restart > 0) 1268 if (fw_error && mvm->fw_restart > 0)
1270 mvm->fw_restart--; 1269 mvm->fw_restart--;
1270 set_bit(IWL_MVM_STATUS_HW_RESTART_REQUESTED, &mvm->status);
1271 ieee80211_restart_hw(mvm->hw); 1271 ieee80211_restart_hw(mvm->hw);
1272 } 1272 }
1273} 1273}
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rs.c b/drivers/net/wireless/intel/iwlwifi/mvm/rs.c
index 65beca3a457a..8999a1199d60 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/rs.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/rs.c
@@ -1291,7 +1291,7 @@ void iwl_mvm_rs_tx_status(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
1291 * first index into rate scale table. 1291 * first index into rate scale table.
1292 */ 1292 */
1293 if (info->flags & IEEE80211_TX_STAT_AMPDU) { 1293 if (info->flags & IEEE80211_TX_STAT_AMPDU) {
1294 rs_collect_tpc_data(mvm, lq_sta, curr_tbl, lq_rate.index, 1294 rs_collect_tpc_data(mvm, lq_sta, curr_tbl, tx_resp_rate.index,
1295 info->status.ampdu_len, 1295 info->status.ampdu_len,
1296 info->status.ampdu_ack_len, 1296 info->status.ampdu_ack_len,
1297 reduced_txp); 1297 reduced_txp);
@@ -1312,7 +1312,7 @@ void iwl_mvm_rs_tx_status(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
1312 if (info->status.ampdu_ack_len == 0) 1312 if (info->status.ampdu_ack_len == 0)
1313 info->status.ampdu_len = 1; 1313 info->status.ampdu_len = 1;
1314 1314
1315 rs_collect_tlc_data(mvm, lq_sta, curr_tbl, lq_rate.index, 1315 rs_collect_tlc_data(mvm, lq_sta, curr_tbl, tx_resp_rate.index,
1316 info->status.ampdu_len, 1316 info->status.ampdu_len,
1317 info->status.ampdu_ack_len); 1317 info->status.ampdu_ack_len);
1318 1318
@@ -1348,11 +1348,11 @@ void iwl_mvm_rs_tx_status(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
1348 continue; 1348 continue;
1349 1349
1350 rs_collect_tpc_data(mvm, lq_sta, tmp_tbl, 1350 rs_collect_tpc_data(mvm, lq_sta, tmp_tbl,
1351 lq_rate.index, 1, 1351 tx_resp_rate.index, 1,
1352 i < retries ? 0 : legacy_success, 1352 i < retries ? 0 : legacy_success,
1353 reduced_txp); 1353 reduced_txp);
1354 rs_collect_tlc_data(mvm, lq_sta, tmp_tbl, 1354 rs_collect_tlc_data(mvm, lq_sta, tmp_tbl,
1355 lq_rate.index, 1, 1355 tx_resp_rate.index, 1,
1356 i < retries ? 0 : legacy_success); 1356 i < retries ? 0 : legacy_success);
1357 } 1357 }
1358 1358
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
index f3e608196369..71c8b800ffa9 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c
@@ -636,9 +636,9 @@ static bool iwl_mvm_reorder(struct iwl_mvm *mvm,
636 636
637 baid_data = rcu_dereference(mvm->baid_map[baid]); 637 baid_data = rcu_dereference(mvm->baid_map[baid]);
638 if (!baid_data) { 638 if (!baid_data) {
639 WARN(!(reorder & IWL_RX_MPDU_REORDER_BA_OLD_SN), 639 IWL_DEBUG_RX(mvm,
640 "Received baid %d, but no data exists for this BAID\n", 640 "Got valid BAID but no baid allocated, bypass the re-ordering buffer. Baid %d reorder 0x%x\n",
641 baid); 641 baid, reorder);
642 return false; 642 return false;
643 } 643 }
644 644
@@ -759,7 +759,9 @@ static void iwl_mvm_agg_rx_received(struct iwl_mvm *mvm,
759 759
760 data = rcu_dereference(mvm->baid_map[baid]); 760 data = rcu_dereference(mvm->baid_map[baid]);
761 if (!data) { 761 if (!data) {
762 WARN_ON(!(reorder_data & IWL_RX_MPDU_REORDER_BA_OLD_SN)); 762 IWL_DEBUG_RX(mvm,
763 "Got valid BAID but no baid allocated, bypass the re-ordering buffer. Baid %d reorder 0x%x\n",
764 baid, reorder_data);
763 goto out; 765 goto out;
764 } 766 }
765 767
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/sta.c b/drivers/net/wireless/intel/iwlwifi/mvm/sta.c
index 4df5f13fcdae..027ee5e72172 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/sta.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/sta.c
@@ -121,7 +121,8 @@ int iwl_mvm_sta_send_to_fw(struct iwl_mvm *mvm, struct ieee80211_sta *sta,
121 .mac_id_n_color = cpu_to_le32(mvm_sta->mac_id_n_color), 121 .mac_id_n_color = cpu_to_le32(mvm_sta->mac_id_n_color),
122 .add_modify = update ? 1 : 0, 122 .add_modify = update ? 1 : 0,
123 .station_flags_msk = cpu_to_le32(STA_FLG_FAT_EN_MSK | 123 .station_flags_msk = cpu_to_le32(STA_FLG_FAT_EN_MSK |
124 STA_FLG_MIMO_EN_MSK), 124 STA_FLG_MIMO_EN_MSK |
125 STA_FLG_RTS_MIMO_PROT),
125 .tid_disable_tx = cpu_to_le16(mvm_sta->tid_disable_agg), 126 .tid_disable_tx = cpu_to_le16(mvm_sta->tid_disable_agg),
126 }; 127 };
127 int ret; 128 int ret;
@@ -277,9 +278,21 @@ static void iwl_mvm_rx_agg_session_expired(unsigned long data)
277 278
278 /* Timer expired */ 279 /* Timer expired */
279 sta = rcu_dereference(ba_data->mvm->fw_id_to_mac_id[ba_data->sta_id]); 280 sta = rcu_dereference(ba_data->mvm->fw_id_to_mac_id[ba_data->sta_id]);
281
282 /*
283 * sta should be valid unless the following happens:
284 * The firmware asserts which triggers a reconfig flow, but
285 * the reconfig fails before we set the pointer to sta into
286 * the fw_id_to_mac_id pointer table. Mac80211 can't stop
287 * A-MDPU and hence the timer continues to run. Then, the
288 * timer expires and sta is NULL.
289 */
290 if (!sta)
291 goto unlock;
292
280 mvm_sta = iwl_mvm_sta_from_mac80211(sta); 293 mvm_sta = iwl_mvm_sta_from_mac80211(sta);
281 ieee80211_stop_rx_ba_session_offl(mvm_sta->vif, 294 ieee80211_rx_ba_timer_expired(mvm_sta->vif,
282 sta->addr, ba_data->tid); 295 sta->addr, ba_data->tid);
283unlock: 296unlock:
284 rcu_read_unlock(); 297 rcu_read_unlock();
285} 298}
@@ -2015,7 +2028,8 @@ int iwl_mvm_send_add_bcast_sta(struct iwl_mvm *mvm, struct ieee80211_vif *vif)
2015 IWL_MAX_TID_COUNT, 2028 IWL_MAX_TID_COUNT,
2016 wdg_timeout); 2029 wdg_timeout);
2017 2030
2018 if (vif->type == NL80211_IFTYPE_AP) 2031 if (vif->type == NL80211_IFTYPE_AP ||
2032 vif->type == NL80211_IFTYPE_ADHOC)
2019 mvm->probe_queue = queue; 2033 mvm->probe_queue = queue;
2020 else if (vif->type == NL80211_IFTYPE_P2P_DEVICE) 2034 else if (vif->type == NL80211_IFTYPE_P2P_DEVICE)
2021 mvm->p2p_dev_queue = queue; 2035 mvm->p2p_dev_queue = queue;
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
index 60360ed73f26..5fcc9dd6be56 100644
--- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
+++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
@@ -185,8 +185,14 @@ static u16 iwl_mvm_tx_csum(struct iwl_mvm *mvm, struct sk_buff *skb,
185 else 185 else
186 udp_hdr(skb)->check = 0; 186 udp_hdr(skb)->check = 0;
187 187
188 /* mac header len should include IV, size is in words */ 188 /*
189 if (info->control.hw_key) 189 * mac header len should include IV, size is in words unless
190 * the IV is added by the firmware like in WEP.
191 * In new Tx API, the IV is always added by the firmware.
192 */
193 if (!iwl_mvm_has_new_tx_api(mvm) && info->control.hw_key &&
194 info->control.hw_key->cipher != WLAN_CIPHER_SUITE_WEP40 &&
195 info->control.hw_key->cipher != WLAN_CIPHER_SUITE_WEP104)
190 mh_len += info->control.hw_key->iv_len; 196 mh_len += info->control.hw_key->iv_len;
191 mh_len /= 2; 197 mh_len /= 2;
192 offload_assist |= mh_len << TX_CMD_OFFLD_MH_SIZE; 198 offload_assist |= mh_len << TX_CMD_OFFLD_MH_SIZE;
@@ -1815,6 +1821,8 @@ void iwl_mvm_rx_ba_notif(struct iwl_mvm *mvm, struct iwl_rx_cmd_buffer *rxb)
1815 struct iwl_mvm_tid_data *tid_data; 1821 struct iwl_mvm_tid_data *tid_data;
1816 struct iwl_mvm_sta *mvmsta; 1822 struct iwl_mvm_sta *mvmsta;
1817 1823
1824 ba_info.flags = IEEE80211_TX_STAT_AMPDU;
1825
1818 if (iwl_mvm_has_new_tx_api(mvm)) { 1826 if (iwl_mvm_has_new_tx_api(mvm)) {
1819 struct iwl_mvm_compressed_ba_notif *ba_res = 1827 struct iwl_mvm_compressed_ba_notif *ba_res =
1820 (void *)pkt->data; 1828 (void *)pkt->data;
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
index f16c1bb9bf94..84f4ba01e14f 100644
--- a/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/drv.c
@@ -510,9 +510,17 @@ static const struct pci_device_id iwl_hw_card_ids[] = {
510 510
511/* 9000 Series */ 511/* 9000 Series */
512 {IWL_PCI_DEVICE(0x271B, 0x0010, iwl9160_2ac_cfg)}, 512 {IWL_PCI_DEVICE(0x271B, 0x0010, iwl9160_2ac_cfg)},
513 {IWL_PCI_DEVICE(0x271B, 0x0014, iwl9160_2ac_cfg)},
514 {IWL_PCI_DEVICE(0x271B, 0x0210, iwl9160_2ac_cfg)},
513 {IWL_PCI_DEVICE(0x2526, 0x0000, iwl9260_2ac_cfg)}, 515 {IWL_PCI_DEVICE(0x2526, 0x0000, iwl9260_2ac_cfg)},
514 {IWL_PCI_DEVICE(0x2526, 0x0010, iwl9260_2ac_cfg)}, 516 {IWL_PCI_DEVICE(0x2526, 0x0010, iwl9260_2ac_cfg)},
517 {IWL_PCI_DEVICE(0x2526, 0x0014, iwl9260_2ac_cfg)},
518 {IWL_PCI_DEVICE(0x2526, 0xA014, iwl9260_2ac_cfg)},
519 {IWL_PCI_DEVICE(0x2526, 0x4010, iwl9260_2ac_cfg)},
520 {IWL_PCI_DEVICE(0x2526, 0x0210, iwl9260_2ac_cfg)},
521 {IWL_PCI_DEVICE(0x2526, 0x0214, iwl9260_2ac_cfg)},
515 {IWL_PCI_DEVICE(0x2526, 0x1410, iwl9270_2ac_cfg)}, 522 {IWL_PCI_DEVICE(0x2526, 0x1410, iwl9270_2ac_cfg)},
523 {IWL_PCI_DEVICE(0x2526, 0x1610, iwl9270_2ac_cfg)},
516 {IWL_PCI_DEVICE(0x9DF0, 0x0A10, iwl9460_2ac_cfg)}, 524 {IWL_PCI_DEVICE(0x9DF0, 0x0A10, iwl9460_2ac_cfg)},
517 {IWL_PCI_DEVICE(0x9DF0, 0x0010, iwl9460_2ac_cfg)}, 525 {IWL_PCI_DEVICE(0x9DF0, 0x0010, iwl9460_2ac_cfg)},
518 {IWL_PCI_DEVICE(0x9DF0, 0x0210, iwl9460_2ac_cfg)}, 526 {IWL_PCI_DEVICE(0x9DF0, 0x0210, iwl9460_2ac_cfg)},
@@ -527,10 +535,22 @@ static const struct pci_device_id iwl_hw_card_ids[] = {
527 {IWL_PCI_DEVICE(0x9DF0, 0x2A10, iwl9460_2ac_cfg)}, 535 {IWL_PCI_DEVICE(0x9DF0, 0x2A10, iwl9460_2ac_cfg)},
528 {IWL_PCI_DEVICE(0x30DC, 0x0060, iwl9460_2ac_cfg)}, 536 {IWL_PCI_DEVICE(0x30DC, 0x0060, iwl9460_2ac_cfg)},
529 {IWL_PCI_DEVICE(0x2526, 0x0060, iwl9460_2ac_cfg)}, 537 {IWL_PCI_DEVICE(0x2526, 0x0060, iwl9460_2ac_cfg)},
538 {IWL_PCI_DEVICE(0x2526, 0x0260, iwl9460_2ac_cfg)},
539 {IWL_PCI_DEVICE(0x2526, 0x0064, iwl9460_2ac_cfg)},
540 {IWL_PCI_DEVICE(0x2526, 0x00A4, iwl9460_2ac_cfg)},
541 {IWL_PCI_DEVICE(0x2526, 0x40A4, iwl9460_2ac_cfg)},
542 {IWL_PCI_DEVICE(0x2526, 0x02A4, iwl9460_2ac_cfg)},
543 {IWL_PCI_DEVICE(0x2526, 0x00A0, iwl9460_2ac_cfg)},
544 {IWL_PCI_DEVICE(0x2526, 0x02A0, iwl9460_2ac_cfg)},
530 {IWL_PCI_DEVICE(0x9DF0, 0x0060, iwl9460_2ac_cfg)}, 545 {IWL_PCI_DEVICE(0x9DF0, 0x0060, iwl9460_2ac_cfg)},
531 {IWL_PCI_DEVICE(0xA370, 0x0060, iwl9460_2ac_cfg)}, 546 {IWL_PCI_DEVICE(0xA370, 0x0060, iwl9460_2ac_cfg)},
532 {IWL_PCI_DEVICE(0x31DC, 0x0060, iwl9460_2ac_cfg)}, 547 {IWL_PCI_DEVICE(0x31DC, 0x0060, iwl9460_2ac_cfg)},
533 {IWL_PCI_DEVICE(0x2526, 0x0030, iwl9560_2ac_cfg)}, 548 {IWL_PCI_DEVICE(0x2526, 0x0030, iwl9560_2ac_cfg)},
549 {IWL_PCI_DEVICE(0x2526, 0x4030, iwl9560_2ac_cfg)},
550 {IWL_PCI_DEVICE(0x2526, 0x0230, iwl9560_2ac_cfg)},
551 {IWL_PCI_DEVICE(0x2526, 0x0234, iwl9560_2ac_cfg)},
552 {IWL_PCI_DEVICE(0x2526, 0x0238, iwl9560_2ac_cfg)},
553 {IWL_PCI_DEVICE(0x2526, 0x023C, iwl9560_2ac_cfg)},
534 {IWL_PCI_DEVICE(0x9DF0, 0x0030, iwl9560_2ac_cfg)}, 554 {IWL_PCI_DEVICE(0x9DF0, 0x0030, iwl9560_2ac_cfg)},
535 {IWL_PCI_DEVICE(0xA370, 0x0030, iwl9560_2ac_cfg)}, 555 {IWL_PCI_DEVICE(0xA370, 0x0030, iwl9560_2ac_cfg)},
536 {IWL_PCI_DEVICE(0x31DC, 0x0030, iwl9560_2ac_cfg)}, 556 {IWL_PCI_DEVICE(0x31DC, 0x0030, iwl9560_2ac_cfg)},
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
index 92b3a55d0fbc..f95eec52508e 100644
--- a/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/trans.c
@@ -3150,7 +3150,8 @@ struct iwl_trans *iwl_trans_pcie_alloc(struct pci_dev *pdev,
3150 init_waitqueue_head(&trans_pcie->d0i3_waitq); 3150 init_waitqueue_head(&trans_pcie->d0i3_waitq);
3151 3151
3152 if (trans_pcie->msix_enabled) { 3152 if (trans_pcie->msix_enabled) {
3153 if (iwl_pcie_init_msix_handler(pdev, trans_pcie)) 3153 ret = iwl_pcie_init_msix_handler(pdev, trans_pcie);
3154 if (ret)
3154 goto out_no_pci; 3155 goto out_no_pci;
3155 } else { 3156 } else {
3156 ret = iwl_pcie_alloc_ict(trans); 3157 ret = iwl_pcie_alloc_ict(trans);
diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/tx.c b/drivers/net/wireless/intel/iwlwifi/pcie/tx.c
index de50418adae5..034bdb4a0b06 100644
--- a/drivers/net/wireless/intel/iwlwifi/pcie/tx.c
+++ b/drivers/net/wireless/intel/iwlwifi/pcie/tx.c
@@ -298,6 +298,9 @@ void iwl_pcie_txq_check_wrptrs(struct iwl_trans *trans)
298 for (i = 0; i < trans->cfg->base_params->num_of_queues; i++) { 298 for (i = 0; i < trans->cfg->base_params->num_of_queues; i++) {
299 struct iwl_txq *txq = trans_pcie->txq[i]; 299 struct iwl_txq *txq = trans_pcie->txq[i];
300 300
301 if (!test_bit(i, trans_pcie->queue_used))
302 continue;
303
301 spin_lock_bh(&txq->lock); 304 spin_lock_bh(&txq->lock);
302 if (txq->need_update) { 305 if (txq->need_update) {
303 iwl_pcie_txq_inc_wr_ptr(trans, txq); 306 iwl_pcie_txq_inc_wr_ptr(trans, txq);
diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
index 6e2e760d98b1..0b75def39c6c 100644
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
@@ -5704,7 +5704,7 @@ static void rt2800_init_freq_calibration(struct rt2x00_dev *rt2x00dev)
5704 5704
5705static void rt2800_init_bbp_5592_glrt(struct rt2x00_dev *rt2x00dev) 5705static void rt2800_init_bbp_5592_glrt(struct rt2x00_dev *rt2x00dev)
5706{ 5706{
5707 const u8 glrt_table[] = { 5707 static const u8 glrt_table[] = {
5708 0xE0, 0x1F, 0X38, 0x32, 0x08, 0x28, 0x19, 0x0A, 0xFF, 0x00, /* 128 ~ 137 */ 5708 0xE0, 0x1F, 0X38, 0x32, 0x08, 0x28, 0x19, 0x0A, 0xFF, 0x00, /* 128 ~ 137 */
5709 0x16, 0x10, 0x10, 0x0B, 0x36, 0x2C, 0x26, 0x24, 0x42, 0x36, /* 138 ~ 147 */ 5709 0x16, 0x10, 0x10, 0x0B, 0x36, 0x2C, 0x26, 0x24, 0x42, 0x36, /* 138 ~ 147 */
5710 0x30, 0x2D, 0x4C, 0x46, 0x3D, 0x40, 0x3E, 0x42, 0x3D, 0x40, /* 148 ~ 157 */ 5710 0x30, 0x2D, 0x4C, 0x46, 0x3D, 0x40, 0x3E, 0x42, 0x3D, 0x40, /* 148 ~ 157 */
diff --git a/drivers/net/wireless/realtek/rtlwifi/rtl8723be/hw.c b/drivers/net/wireless/realtek/rtlwifi/rtl8723be/hw.c
index 2a7ad5ffe997..cd5dc6dcb19f 100644
--- a/drivers/net/wireless/realtek/rtlwifi/rtl8723be/hw.c
+++ b/drivers/net/wireless/realtek/rtlwifi/rtl8723be/hw.c
@@ -846,9 +846,6 @@ static bool _rtl8723be_init_mac(struct ieee80211_hw *hw)
846 return false; 846 return false;
847 } 847 }
848 848
849 if (rtlpriv->cfg->ops->get_btc_status())
850 rtlpriv->btcoexist.btc_ops->btc_power_on_setting(rtlpriv);
851
852 bytetmp = rtl_read_byte(rtlpriv, REG_MULTI_FUNC_CTRL); 849 bytetmp = rtl_read_byte(rtlpriv, REG_MULTI_FUNC_CTRL);
853 rtl_write_byte(rtlpriv, REG_MULTI_FUNC_CTRL, bytetmp | BIT(3)); 850 rtl_write_byte(rtlpriv, REG_MULTI_FUNC_CTRL, bytetmp | BIT(3));
854 851
diff --git a/drivers/net/wireless/realtek/rtlwifi/wifi.h b/drivers/net/wireless/realtek/rtlwifi/wifi.h
index fb1ebb01133f..70723e67b7d7 100644
--- a/drivers/net/wireless/realtek/rtlwifi/wifi.h
+++ b/drivers/net/wireless/realtek/rtlwifi/wifi.h
@@ -2547,7 +2547,6 @@ struct bt_coexist_info {
2547struct rtl_btc_ops { 2547struct rtl_btc_ops {
2548 void (*btc_init_variables) (struct rtl_priv *rtlpriv); 2548 void (*btc_init_variables) (struct rtl_priv *rtlpriv);
2549 void (*btc_init_hal_vars) (struct rtl_priv *rtlpriv); 2549 void (*btc_init_hal_vars) (struct rtl_priv *rtlpriv);
2550 void (*btc_power_on_setting)(struct rtl_priv *rtlpriv);
2551 void (*btc_init_hw_config) (struct rtl_priv *rtlpriv); 2550 void (*btc_init_hw_config) (struct rtl_priv *rtlpriv);
2552 void (*btc_ips_notify) (struct rtl_priv *rtlpriv, u8 type); 2551 void (*btc_ips_notify) (struct rtl_priv *rtlpriv, u8 type);
2553 void (*btc_lps_notify)(struct rtl_priv *rtlpriv, u8 type); 2552 void (*btc_lps_notify)(struct rtl_priv *rtlpriv, u8 type);
diff --git a/drivers/nvdimm/core.c b/drivers/nvdimm/core.c
index 7cd99b1f8596..75bc08c6838c 100644
--- a/drivers/nvdimm/core.c
+++ b/drivers/nvdimm/core.c
@@ -421,14 +421,15 @@ static void set_badblock(struct badblocks *bb, sector_t s, int num)
421static void __add_badblock_range(struct badblocks *bb, u64 ns_offset, u64 len) 421static void __add_badblock_range(struct badblocks *bb, u64 ns_offset, u64 len)
422{ 422{
423 const unsigned int sector_size = 512; 423 const unsigned int sector_size = 512;
424 sector_t start_sector; 424 sector_t start_sector, end_sector;
425 u64 num_sectors; 425 u64 num_sectors;
426 u32 rem; 426 u32 rem;
427 427
428 start_sector = div_u64(ns_offset, sector_size); 428 start_sector = div_u64(ns_offset, sector_size);
429 num_sectors = div_u64_rem(len, sector_size, &rem); 429 end_sector = div_u64_rem(ns_offset + len, sector_size, &rem);
430 if (rem) 430 if (rem)
431 num_sectors++; 431 end_sector++;
432 num_sectors = end_sector - start_sector;
432 433
433 if (unlikely(num_sectors > (u64)INT_MAX)) { 434 if (unlikely(num_sectors > (u64)INT_MAX)) {
434 u64 remaining = num_sectors; 435 u64 remaining = num_sectors;
diff --git a/drivers/nvme/host/core.c b/drivers/nvme/host/core.c
index cb96f4a7ae3a..37046ac2c441 100644
--- a/drivers/nvme/host/core.c
+++ b/drivers/nvme/host/core.c
@@ -336,7 +336,7 @@ static int nvme_get_stream_params(struct nvme_ctrl *ctrl,
336 336
337 c.directive.opcode = nvme_admin_directive_recv; 337 c.directive.opcode = nvme_admin_directive_recv;
338 c.directive.nsid = cpu_to_le32(nsid); 338 c.directive.nsid = cpu_to_le32(nsid);
339 c.directive.numd = sizeof(*s); 339 c.directive.numd = cpu_to_le32((sizeof(*s) >> 2) - 1);
340 c.directive.doper = NVME_DIR_RCV_ST_OP_PARAM; 340 c.directive.doper = NVME_DIR_RCV_ST_OP_PARAM;
341 c.directive.dtype = NVME_DIR_STREAMS; 341 c.directive.dtype = NVME_DIR_STREAMS;
342 342
@@ -1509,7 +1509,7 @@ static void nvme_set_queue_limits(struct nvme_ctrl *ctrl,
1509 blk_queue_write_cache(q, vwc, vwc); 1509 blk_queue_write_cache(q, vwc, vwc);
1510} 1510}
1511 1511
1512static void nvme_configure_apst(struct nvme_ctrl *ctrl) 1512static int nvme_configure_apst(struct nvme_ctrl *ctrl)
1513{ 1513{
1514 /* 1514 /*
1515 * APST (Autonomous Power State Transition) lets us program a 1515 * APST (Autonomous Power State Transition) lets us program a
@@ -1538,16 +1538,16 @@ static void nvme_configure_apst(struct nvme_ctrl *ctrl)
1538 * then don't do anything. 1538 * then don't do anything.
1539 */ 1539 */
1540 if (!ctrl->apsta) 1540 if (!ctrl->apsta)
1541 return; 1541 return 0;
1542 1542
1543 if (ctrl->npss > 31) { 1543 if (ctrl->npss > 31) {
1544 dev_warn(ctrl->device, "NPSS is invalid; not using APST\n"); 1544 dev_warn(ctrl->device, "NPSS is invalid; not using APST\n");
1545 return; 1545 return 0;
1546 } 1546 }
1547 1547
1548 table = kzalloc(sizeof(*table), GFP_KERNEL); 1548 table = kzalloc(sizeof(*table), GFP_KERNEL);
1549 if (!table) 1549 if (!table)
1550 return; 1550 return 0;
1551 1551
1552 if (!ctrl->apst_enabled || ctrl->ps_max_latency_us == 0) { 1552 if (!ctrl->apst_enabled || ctrl->ps_max_latency_us == 0) {
1553 /* Turn off APST. */ 1553 /* Turn off APST. */
@@ -1629,6 +1629,7 @@ static void nvme_configure_apst(struct nvme_ctrl *ctrl)
1629 dev_err(ctrl->device, "failed to set APST feature (%d)\n", ret); 1629 dev_err(ctrl->device, "failed to set APST feature (%d)\n", ret);
1630 1630
1631 kfree(table); 1631 kfree(table);
1632 return ret;
1632} 1633}
1633 1634
1634static void nvme_set_latency_tolerance(struct device *dev, s32 val) 1635static void nvme_set_latency_tolerance(struct device *dev, s32 val)
@@ -1835,13 +1836,16 @@ int nvme_init_identify(struct nvme_ctrl *ctrl)
1835 * In fabrics we need to verify the cntlid matches the 1836 * In fabrics we need to verify the cntlid matches the
1836 * admin connect 1837 * admin connect
1837 */ 1838 */
1838 if (ctrl->cntlid != le16_to_cpu(id->cntlid)) 1839 if (ctrl->cntlid != le16_to_cpu(id->cntlid)) {
1839 ret = -EINVAL; 1840 ret = -EINVAL;
1841 goto out_free;
1842 }
1840 1843
1841 if (!ctrl->opts->discovery_nqn && !ctrl->kas) { 1844 if (!ctrl->opts->discovery_nqn && !ctrl->kas) {
1842 dev_err(ctrl->device, 1845 dev_err(ctrl->device,
1843 "keep-alive support is mandatory for fabrics\n"); 1846 "keep-alive support is mandatory for fabrics\n");
1844 ret = -EINVAL; 1847 ret = -EINVAL;
1848 goto out_free;
1845 } 1849 }
1846 } else { 1850 } else {
1847 ctrl->cntlid = le16_to_cpu(id->cntlid); 1851 ctrl->cntlid = le16_to_cpu(id->cntlid);
@@ -1856,11 +1860,20 @@ int nvme_init_identify(struct nvme_ctrl *ctrl)
1856 else if (!ctrl->apst_enabled && prev_apst_enabled) 1860 else if (!ctrl->apst_enabled && prev_apst_enabled)
1857 dev_pm_qos_hide_latency_tolerance(ctrl->device); 1861 dev_pm_qos_hide_latency_tolerance(ctrl->device);
1858 1862
1859 nvme_configure_apst(ctrl); 1863 ret = nvme_configure_apst(ctrl);
1860 nvme_configure_directives(ctrl); 1864 if (ret < 0)
1865 return ret;
1866
1867 ret = nvme_configure_directives(ctrl);
1868 if (ret < 0)
1869 return ret;
1861 1870
1862 ctrl->identified = true; 1871 ctrl->identified = true;
1863 1872
1873 return 0;
1874
1875out_free:
1876 kfree(id);
1864 return ret; 1877 return ret;
1865} 1878}
1866EXPORT_SYMBOL_GPL(nvme_init_identify); 1879EXPORT_SYMBOL_GPL(nvme_init_identify);
@@ -1995,15 +2008,20 @@ static ssize_t wwid_show(struct device *dev, struct device_attribute *attr,
1995 int serial_len = sizeof(ctrl->serial); 2008 int serial_len = sizeof(ctrl->serial);
1996 int model_len = sizeof(ctrl->model); 2009 int model_len = sizeof(ctrl->model);
1997 2010
2011 if (!uuid_is_null(&ns->uuid))
2012 return sprintf(buf, "uuid.%pU\n", &ns->uuid);
2013
1998 if (memchr_inv(ns->nguid, 0, sizeof(ns->nguid))) 2014 if (memchr_inv(ns->nguid, 0, sizeof(ns->nguid)))
1999 return sprintf(buf, "eui.%16phN\n", ns->nguid); 2015 return sprintf(buf, "eui.%16phN\n", ns->nguid);
2000 2016
2001 if (memchr_inv(ns->eui, 0, sizeof(ns->eui))) 2017 if (memchr_inv(ns->eui, 0, sizeof(ns->eui)))
2002 return sprintf(buf, "eui.%8phN\n", ns->eui); 2018 return sprintf(buf, "eui.%8phN\n", ns->eui);
2003 2019
2004 while (ctrl->serial[serial_len - 1] == ' ') 2020 while (serial_len > 0 && (ctrl->serial[serial_len - 1] == ' ' ||
2021 ctrl->serial[serial_len - 1] == '\0'))
2005 serial_len--; 2022 serial_len--;
2006 while (ctrl->model[model_len - 1] == ' ') 2023 while (model_len > 0 && (ctrl->model[model_len - 1] == ' ' ||
2024 ctrl->model[model_len - 1] == '\0'))
2007 model_len--; 2025 model_len--;
2008 2026
2009 return sprintf(buf, "nvme.%04x-%*phN-%*phN-%08x\n", ctrl->vid, 2027 return sprintf(buf, "nvme.%04x-%*phN-%*phN-%08x\n", ctrl->vid,
@@ -2709,7 +2727,8 @@ void nvme_kill_queues(struct nvme_ctrl *ctrl)
2709 mutex_lock(&ctrl->namespaces_mutex); 2727 mutex_lock(&ctrl->namespaces_mutex);
2710 2728
2711 /* Forcibly unquiesce queues to avoid blocking dispatch */ 2729 /* Forcibly unquiesce queues to avoid blocking dispatch */
2712 blk_mq_unquiesce_queue(ctrl->admin_q); 2730 if (ctrl->admin_q)
2731 blk_mq_unquiesce_queue(ctrl->admin_q);
2713 2732
2714 list_for_each_entry(ns, &ctrl->namespaces, list) { 2733 list_for_each_entry(ns, &ctrl->namespaces, list) {
2715 /* 2734 /*
diff --git a/drivers/nvme/host/fabrics.c b/drivers/nvme/host/fabrics.c
index 2e582a240943..5f5cd306f76d 100644
--- a/drivers/nvme/host/fabrics.c
+++ b/drivers/nvme/host/fabrics.c
@@ -794,7 +794,8 @@ static int nvmf_check_allowed_opts(struct nvmf_ctrl_options *opts,
794 int i; 794 int i;
795 795
796 for (i = 0; i < ARRAY_SIZE(opt_tokens); i++) { 796 for (i = 0; i < ARRAY_SIZE(opt_tokens); i++) {
797 if (opt_tokens[i].token & ~allowed_opts) { 797 if ((opt_tokens[i].token & opts->mask) &&
798 (opt_tokens[i].token & ~allowed_opts)) {
798 pr_warn("invalid parameter '%s'\n", 799 pr_warn("invalid parameter '%s'\n",
799 opt_tokens[i].pattern); 800 opt_tokens[i].pattern);
800 } 801 }
diff --git a/drivers/nvme/host/fc.c b/drivers/nvme/host/fc.c
index d666ada39a9b..5c2a08ef08ba 100644
--- a/drivers/nvme/host/fc.c
+++ b/drivers/nvme/host/fc.c
@@ -1888,7 +1888,7 @@ nvme_fc_start_fcp_op(struct nvme_fc_ctrl *ctrl, struct nvme_fc_queue *queue,
1888 * the target device is present 1888 * the target device is present
1889 */ 1889 */
1890 if (ctrl->rport->remoteport.port_state != FC_OBJSTATE_ONLINE) 1890 if (ctrl->rport->remoteport.port_state != FC_OBJSTATE_ONLINE)
1891 return BLK_STS_IOERR; 1891 goto busy;
1892 1892
1893 if (!nvme_fc_ctrl_get(ctrl)) 1893 if (!nvme_fc_ctrl_get(ctrl))
1894 return BLK_STS_IOERR; 1894 return BLK_STS_IOERR;
@@ -1958,22 +1958,25 @@ nvme_fc_start_fcp_op(struct nvme_fc_ctrl *ctrl, struct nvme_fc_queue *queue,
1958 queue->lldd_handle, &op->fcp_req); 1958 queue->lldd_handle, &op->fcp_req);
1959 1959
1960 if (ret) { 1960 if (ret) {
1961 if (op->rq) /* normal request */ 1961 if (!(op->flags & FCOP_FLAGS_AEN))
1962 nvme_fc_unmap_data(ctrl, op->rq, op); 1962 nvme_fc_unmap_data(ctrl, op->rq, op);
1963 /* else - aen. no cleanup needed */
1964 1963
1965 nvme_fc_ctrl_put(ctrl); 1964 nvme_fc_ctrl_put(ctrl);
1966 1965
1967 if (ret != -EBUSY) 1966 if (ctrl->rport->remoteport.port_state == FC_OBJSTATE_ONLINE &&
1967 ret != -EBUSY)
1968 return BLK_STS_IOERR; 1968 return BLK_STS_IOERR;
1969 1969
1970 if (op->rq) 1970 goto busy;
1971 blk_mq_delay_run_hw_queue(queue->hctx, NVMEFC_QUEUE_DELAY);
1972
1973 return BLK_STS_RESOURCE;
1974 } 1971 }
1975 1972
1976 return BLK_STS_OK; 1973 return BLK_STS_OK;
1974
1975busy:
1976 if (!(op->flags & FCOP_FLAGS_AEN) && queue->hctx)
1977 blk_mq_delay_run_hw_queue(queue->hctx, NVMEFC_QUEUE_DELAY);
1978
1979 return BLK_STS_RESOURCE;
1977} 1980}
1978 1981
1979static blk_status_t 1982static blk_status_t
@@ -2802,66 +2805,70 @@ out_fail:
2802 return ERR_PTR(ret); 2805 return ERR_PTR(ret);
2803} 2806}
2804 2807
2805enum {
2806 FCT_TRADDR_ERR = 0,
2807 FCT_TRADDR_WWNN = 1 << 0,
2808 FCT_TRADDR_WWPN = 1 << 1,
2809};
2810 2808
2811struct nvmet_fc_traddr { 2809struct nvmet_fc_traddr {
2812 u64 nn; 2810 u64 nn;
2813 u64 pn; 2811 u64 pn;
2814}; 2812};
2815 2813
2816static const match_table_t traddr_opt_tokens = {
2817 { FCT_TRADDR_WWNN, "nn-%s" },
2818 { FCT_TRADDR_WWPN, "pn-%s" },
2819 { FCT_TRADDR_ERR, NULL }
2820};
2821
2822static int 2814static int
2823nvme_fc_parse_address(struct nvmet_fc_traddr *traddr, char *buf) 2815__nvme_fc_parse_u64(substring_t *sstr, u64 *val)
2824{ 2816{
2825 substring_t args[MAX_OPT_ARGS];
2826 char *options, *o, *p;
2827 int token, ret = 0;
2828 u64 token64; 2817 u64 token64;
2829 2818
2830 options = o = kstrdup(buf, GFP_KERNEL); 2819 if (match_u64(sstr, &token64))
2831 if (!options) 2820 return -EINVAL;
2832 return -ENOMEM; 2821 *val = token64;
2833 2822
2834 while ((p = strsep(&o, ":\n")) != NULL) { 2823 return 0;
2835 if (!*p) 2824}
2836 continue;
2837 2825
2838 token = match_token(p, traddr_opt_tokens, args); 2826/*
2839 switch (token) { 2827 * This routine validates and extracts the WWN's from the TRADDR string.
2840 case FCT_TRADDR_WWNN: 2828 * As kernel parsers need the 0x to determine number base, universally
2841 if (match_u64(args, &token64)) { 2829 * build string to parse with 0x prefix before parsing name strings.
2842 ret = -EINVAL; 2830 */
2843 goto out; 2831static int
2844 } 2832nvme_fc_parse_traddr(struct nvmet_fc_traddr *traddr, char *buf, size_t blen)
2845 traddr->nn = token64; 2833{
2846 break; 2834 char name[2 + NVME_FC_TRADDR_HEXNAMELEN + 1];
2847 case FCT_TRADDR_WWPN: 2835 substring_t wwn = { name, &name[sizeof(name)-1] };
2848 if (match_u64(args, &token64)) { 2836 int nnoffset, pnoffset;
2849 ret = -EINVAL; 2837
2850 goto out; 2838 /* validate it string one of the 2 allowed formats */
2851 } 2839 if (strnlen(buf, blen) == NVME_FC_TRADDR_MAXLENGTH &&
2852 traddr->pn = token64; 2840 !strncmp(buf, "nn-0x", NVME_FC_TRADDR_OXNNLEN) &&
2853 break; 2841 !strncmp(&buf[NVME_FC_TRADDR_MAX_PN_OFFSET],
2854 default: 2842 "pn-0x", NVME_FC_TRADDR_OXNNLEN)) {
2855 pr_warn("unknown traddr token or missing value '%s'\n", 2843 nnoffset = NVME_FC_TRADDR_OXNNLEN;
2856 p); 2844 pnoffset = NVME_FC_TRADDR_MAX_PN_OFFSET +
2857 ret = -EINVAL; 2845 NVME_FC_TRADDR_OXNNLEN;
2858 goto out; 2846 } else if ((strnlen(buf, blen) == NVME_FC_TRADDR_MINLENGTH &&
2859 } 2847 !strncmp(buf, "nn-", NVME_FC_TRADDR_NNLEN) &&
2860 } 2848 !strncmp(&buf[NVME_FC_TRADDR_MIN_PN_OFFSET],
2849 "pn-", NVME_FC_TRADDR_NNLEN))) {
2850 nnoffset = NVME_FC_TRADDR_NNLEN;
2851 pnoffset = NVME_FC_TRADDR_MIN_PN_OFFSET + NVME_FC_TRADDR_NNLEN;
2852 } else
2853 goto out_einval;
2861 2854
2862out: 2855 name[0] = '0';
2863 kfree(options); 2856 name[1] = 'x';
2864 return ret; 2857 name[2 + NVME_FC_TRADDR_HEXNAMELEN] = 0;
2858
2859 memcpy(&name[2], &buf[nnoffset], NVME_FC_TRADDR_HEXNAMELEN);
2860 if (__nvme_fc_parse_u64(&wwn, &traddr->nn))
2861 goto out_einval;
2862
2863 memcpy(&name[2], &buf[pnoffset], NVME_FC_TRADDR_HEXNAMELEN);
2864 if (__nvme_fc_parse_u64(&wwn, &traddr->pn))
2865 goto out_einval;
2866
2867 return 0;
2868
2869out_einval:
2870 pr_warn("%s: bad traddr string\n", __func__);
2871 return -EINVAL;
2865} 2872}
2866 2873
2867static struct nvme_ctrl * 2874static struct nvme_ctrl *
@@ -2875,11 +2882,11 @@ nvme_fc_create_ctrl(struct device *dev, struct nvmf_ctrl_options *opts)
2875 unsigned long flags; 2882 unsigned long flags;
2876 int ret; 2883 int ret;
2877 2884
2878 ret = nvme_fc_parse_address(&raddr, opts->traddr); 2885 ret = nvme_fc_parse_traddr(&raddr, opts->traddr, NVMF_TRADDR_SIZE);
2879 if (ret || !raddr.nn || !raddr.pn) 2886 if (ret || !raddr.nn || !raddr.pn)
2880 return ERR_PTR(-EINVAL); 2887 return ERR_PTR(-EINVAL);
2881 2888
2882 ret = nvme_fc_parse_address(&laddr, opts->host_traddr); 2889 ret = nvme_fc_parse_traddr(&laddr, opts->host_traddr, NVMF_TRADDR_SIZE);
2883 if (ret || !laddr.nn || !laddr.pn) 2890 if (ret || !laddr.nn || !laddr.pn)
2884 return ERR_PTR(-EINVAL); 2891 return ERR_PTR(-EINVAL);
2885 2892
diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
index d10d2f279d19..925467b31a33 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -539,7 +539,7 @@ static void nvme_dif_complete(u32 p, u32 v, struct t10_pi_tuple *pi)
539} 539}
540#endif 540#endif
541 541
542static bool nvme_setup_prps(struct nvme_dev *dev, struct request *req) 542static blk_status_t nvme_setup_prps(struct nvme_dev *dev, struct request *req)
543{ 543{
544 struct nvme_iod *iod = blk_mq_rq_to_pdu(req); 544 struct nvme_iod *iod = blk_mq_rq_to_pdu(req);
545 struct dma_pool *pool; 545 struct dma_pool *pool;
@@ -556,7 +556,7 @@ static bool nvme_setup_prps(struct nvme_dev *dev, struct request *req)
556 556
557 length -= (page_size - offset); 557 length -= (page_size - offset);
558 if (length <= 0) 558 if (length <= 0)
559 return true; 559 return BLK_STS_OK;
560 560
561 dma_len -= (page_size - offset); 561 dma_len -= (page_size - offset);
562 if (dma_len) { 562 if (dma_len) {
@@ -569,7 +569,7 @@ static bool nvme_setup_prps(struct nvme_dev *dev, struct request *req)
569 569
570 if (length <= page_size) { 570 if (length <= page_size) {
571 iod->first_dma = dma_addr; 571 iod->first_dma = dma_addr;
572 return true; 572 return BLK_STS_OK;
573 } 573 }
574 574
575 nprps = DIV_ROUND_UP(length, page_size); 575 nprps = DIV_ROUND_UP(length, page_size);
@@ -585,7 +585,7 @@ static bool nvme_setup_prps(struct nvme_dev *dev, struct request *req)
585 if (!prp_list) { 585 if (!prp_list) {
586 iod->first_dma = dma_addr; 586 iod->first_dma = dma_addr;
587 iod->npages = -1; 587 iod->npages = -1;
588 return false; 588 return BLK_STS_RESOURCE;
589 } 589 }
590 list[0] = prp_list; 590 list[0] = prp_list;
591 iod->first_dma = prp_dma; 591 iod->first_dma = prp_dma;
@@ -595,7 +595,7 @@ static bool nvme_setup_prps(struct nvme_dev *dev, struct request *req)
595 __le64 *old_prp_list = prp_list; 595 __le64 *old_prp_list = prp_list;
596 prp_list = dma_pool_alloc(pool, GFP_ATOMIC, &prp_dma); 596 prp_list = dma_pool_alloc(pool, GFP_ATOMIC, &prp_dma);
597 if (!prp_list) 597 if (!prp_list)
598 return false; 598 return BLK_STS_RESOURCE;
599 list[iod->npages++] = prp_list; 599 list[iod->npages++] = prp_list;
600 prp_list[0] = old_prp_list[i - 1]; 600 prp_list[0] = old_prp_list[i - 1];
601 old_prp_list[i - 1] = cpu_to_le64(prp_dma); 601 old_prp_list[i - 1] = cpu_to_le64(prp_dma);
@@ -609,13 +609,29 @@ static bool nvme_setup_prps(struct nvme_dev *dev, struct request *req)
609 break; 609 break;
610 if (dma_len > 0) 610 if (dma_len > 0)
611 continue; 611 continue;
612 BUG_ON(dma_len < 0); 612 if (unlikely(dma_len < 0))
613 goto bad_sgl;
613 sg = sg_next(sg); 614 sg = sg_next(sg);
614 dma_addr = sg_dma_address(sg); 615 dma_addr = sg_dma_address(sg);
615 dma_len = sg_dma_len(sg); 616 dma_len = sg_dma_len(sg);
616 } 617 }
617 618
618 return true; 619 return BLK_STS_OK;
620
621 bad_sgl:
622 if (WARN_ONCE(1, "Invalid SGL for payload:%d nents:%d\n",
623 blk_rq_payload_bytes(req), iod->nents)) {
624 for_each_sg(iod->sg, sg, iod->nents, i) {
625 dma_addr_t phys = sg_phys(sg);
626 pr_warn("sg[%d] phys_addr:%pad offset:%d length:%d "
627 "dma_address:%pad dma_length:%d\n", i, &phys,
628 sg->offset, sg->length,
629 &sg_dma_address(sg),
630 sg_dma_len(sg));
631 }
632 }
633 return BLK_STS_IOERR;
634
619} 635}
620 636
621static blk_status_t nvme_map_data(struct nvme_dev *dev, struct request *req, 637static blk_status_t nvme_map_data(struct nvme_dev *dev, struct request *req,
@@ -637,7 +653,8 @@ static blk_status_t nvme_map_data(struct nvme_dev *dev, struct request *req,
637 DMA_ATTR_NO_WARN)) 653 DMA_ATTR_NO_WARN))
638 goto out; 654 goto out;
639 655
640 if (!nvme_setup_prps(dev, req)) 656 ret = nvme_setup_prps(dev, req);
657 if (ret != BLK_STS_OK)
641 goto out_unmap; 658 goto out_unmap;
642 659
643 ret = BLK_STS_IOERR; 660 ret = BLK_STS_IOERR;
@@ -784,6 +801,7 @@ static inline void nvme_handle_cqe(struct nvme_queue *nvmeq,
784 return; 801 return;
785 } 802 }
786 803
804 nvmeq->cqe_seen = 1;
787 req = blk_mq_tag_to_rq(*nvmeq->tags, cqe->command_id); 805 req = blk_mq_tag_to_rq(*nvmeq->tags, cqe->command_id);
788 nvme_end_request(req, cqe->status, cqe->result); 806 nvme_end_request(req, cqe->status, cqe->result);
789} 807}
@@ -813,10 +831,8 @@ static void nvme_process_cq(struct nvme_queue *nvmeq)
813 consumed++; 831 consumed++;
814 } 832 }
815 833
816 if (consumed) { 834 if (consumed)
817 nvme_ring_cq_doorbell(nvmeq); 835 nvme_ring_cq_doorbell(nvmeq);
818 nvmeq->cqe_seen = 1;
819 }
820} 836}
821 837
822static irqreturn_t nvme_irq(int irq, void *data) 838static irqreturn_t nvme_irq(int irq, void *data)
@@ -1541,11 +1557,9 @@ static inline void nvme_release_cmb(struct nvme_dev *dev)
1541 if (dev->cmb) { 1557 if (dev->cmb) {
1542 iounmap(dev->cmb); 1558 iounmap(dev->cmb);
1543 dev->cmb = NULL; 1559 dev->cmb = NULL;
1544 if (dev->cmbsz) { 1560 sysfs_remove_file_from_group(&dev->ctrl.device->kobj,
1545 sysfs_remove_file_from_group(&dev->ctrl.device->kobj, 1561 &dev_attr_cmb.attr, NULL);
1546 &dev_attr_cmb.attr, NULL); 1562 dev->cmbsz = 0;
1547 dev->cmbsz = 0;
1548 }
1549 } 1563 }
1550} 1564}
1551 1565
@@ -1602,7 +1616,7 @@ static void nvme_free_host_mem(struct nvme_dev *dev)
1602static int nvme_alloc_host_mem(struct nvme_dev *dev, u64 min, u64 preferred) 1616static int nvme_alloc_host_mem(struct nvme_dev *dev, u64 min, u64 preferred)
1603{ 1617{
1604 struct nvme_host_mem_buf_desc *descs; 1618 struct nvme_host_mem_buf_desc *descs;
1605 u32 chunk_size, max_entries; 1619 u32 chunk_size, max_entries, len;
1606 int i = 0; 1620 int i = 0;
1607 void **bufs; 1621 void **bufs;
1608 u64 size = 0, tmp; 1622 u64 size = 0, tmp;
@@ -1621,10 +1635,10 @@ retry:
1621 if (!bufs) 1635 if (!bufs)
1622 goto out_free_descs; 1636 goto out_free_descs;
1623 1637
1624 for (size = 0; size < preferred; size += chunk_size) { 1638 for (size = 0; size < preferred; size += len) {
1625 u32 len = min_t(u64, chunk_size, preferred - size);
1626 dma_addr_t dma_addr; 1639 dma_addr_t dma_addr;
1627 1640
1641 len = min_t(u64, chunk_size, preferred - size);
1628 bufs[i] = dma_alloc_attrs(dev->dev, len, &dma_addr, GFP_KERNEL, 1642 bufs[i] = dma_alloc_attrs(dev->dev, len, &dma_addr, GFP_KERNEL,
1629 DMA_ATTR_NO_KERNEL_MAPPING | DMA_ATTR_NO_WARN); 1643 DMA_ATTR_NO_KERNEL_MAPPING | DMA_ATTR_NO_WARN);
1630 if (!bufs[i]) 1644 if (!bufs[i])
@@ -1936,16 +1950,14 @@ static int nvme_pci_enable(struct nvme_dev *dev)
1936 1950
1937 /* 1951 /*
1938 * CMBs can currently only exist on >=1.2 PCIe devices. We only 1952 * CMBs can currently only exist on >=1.2 PCIe devices. We only
1939 * populate sysfs if a CMB is implemented. Note that we add the 1953 * populate sysfs if a CMB is implemented. Since nvme_dev_attrs_group
1940 * CMB attribute to the nvme_ctrl kobj which removes the need to remove 1954 * has no name we can pass NULL as final argument to
1941 * it on exit. Since nvme_dev_attrs_group has no name we can pass 1955 * sysfs_add_file_to_group.
1942 * NULL as final argument to sysfs_add_file_to_group.
1943 */ 1956 */
1944 1957
1945 if (readl(dev->bar + NVME_REG_VS) >= NVME_VS(1, 2, 0)) { 1958 if (readl(dev->bar + NVME_REG_VS) >= NVME_VS(1, 2, 0)) {
1946 dev->cmb = nvme_map_cmb(dev); 1959 dev->cmb = nvme_map_cmb(dev);
1947 1960 if (dev->cmb) {
1948 if (dev->cmbsz) {
1949 if (sysfs_add_file_to_group(&dev->ctrl.device->kobj, 1961 if (sysfs_add_file_to_group(&dev->ctrl.device->kobj,
1950 &dev_attr_cmb.attr, NULL)) 1962 &dev_attr_cmb.attr, NULL))
1951 dev_warn(dev->ctrl.device, 1963 dev_warn(dev->ctrl.device,
@@ -2282,7 +2294,7 @@ static int nvme_probe(struct pci_dev *pdev, const struct pci_device_id *id)
2282 2294
2283 result = nvme_dev_map(dev); 2295 result = nvme_dev_map(dev);
2284 if (result) 2296 if (result)
2285 goto free; 2297 goto put_pci;
2286 2298
2287 INIT_WORK(&dev->ctrl.reset_work, nvme_reset_work); 2299 INIT_WORK(&dev->ctrl.reset_work, nvme_reset_work);
2288 INIT_WORK(&dev->remove_work, nvme_remove_dead_ctrl_work); 2300 INIT_WORK(&dev->remove_work, nvme_remove_dead_ctrl_work);
@@ -2291,7 +2303,7 @@ static int nvme_probe(struct pci_dev *pdev, const struct pci_device_id *id)
2291 2303
2292 result = nvme_setup_prp_pools(dev); 2304 result = nvme_setup_prp_pools(dev);
2293 if (result) 2305 if (result)
2294 goto put_pci; 2306 goto unmap;
2295 2307
2296 quirks |= check_dell_samsung_bug(pdev); 2308 quirks |= check_dell_samsung_bug(pdev);
2297 2309
@@ -2308,9 +2320,10 @@ static int nvme_probe(struct pci_dev *pdev, const struct pci_device_id *id)
2308 2320
2309 release_pools: 2321 release_pools:
2310 nvme_release_prp_pools(dev); 2322 nvme_release_prp_pools(dev);
2323 unmap:
2324 nvme_dev_unmap(dev);
2311 put_pci: 2325 put_pci:
2312 put_device(dev->dev); 2326 put_device(dev->dev);
2313 nvme_dev_unmap(dev);
2314 free: 2327 free:
2315 kfree(dev->queues); 2328 kfree(dev->queues);
2316 kfree(dev); 2329 kfree(dev);
@@ -2466,6 +2479,9 @@ static const struct pci_device_id nvme_id_table[] = {
2466 { PCI_VDEVICE(INTEL, 0x0a54), 2479 { PCI_VDEVICE(INTEL, 0x0a54),
2467 .driver_data = NVME_QUIRK_STRIPE_SIZE | 2480 .driver_data = NVME_QUIRK_STRIPE_SIZE |
2468 NVME_QUIRK_DEALLOCATE_ZEROES, }, 2481 NVME_QUIRK_DEALLOCATE_ZEROES, },
2482 { PCI_VDEVICE(INTEL, 0x0a55),
2483 .driver_data = NVME_QUIRK_STRIPE_SIZE |
2484 NVME_QUIRK_DEALLOCATE_ZEROES, },
2469 { PCI_VDEVICE(INTEL, 0xf1a5), /* Intel 600P/P3100 */ 2485 { PCI_VDEVICE(INTEL, 0xf1a5), /* Intel 600P/P3100 */
2470 .driver_data = NVME_QUIRK_NO_DEEPEST_PS }, 2486 .driver_data = NVME_QUIRK_NO_DEEPEST_PS },
2471 { PCI_VDEVICE(INTEL, 0x5845), /* Qemu emulated controller */ 2487 { PCI_VDEVICE(INTEL, 0x5845), /* Qemu emulated controller */
diff --git a/drivers/nvme/target/admin-cmd.c b/drivers/nvme/target/admin-cmd.c
index 35f930db3c02..a53bb6635b83 100644
--- a/drivers/nvme/target/admin-cmd.c
+++ b/drivers/nvme/target/admin-cmd.c
@@ -168,11 +168,21 @@ out:
168 nvmet_req_complete(req, status); 168 nvmet_req_complete(req, status);
169} 169}
170 170
171static void copy_and_pad(char *dst, int dst_len, const char *src, int src_len)
172{
173 int len = min(src_len, dst_len);
174
175 memcpy(dst, src, len);
176 if (dst_len > len)
177 memset(dst + len, ' ', dst_len - len);
178}
179
171static void nvmet_execute_identify_ctrl(struct nvmet_req *req) 180static void nvmet_execute_identify_ctrl(struct nvmet_req *req)
172{ 181{
173 struct nvmet_ctrl *ctrl = req->sq->ctrl; 182 struct nvmet_ctrl *ctrl = req->sq->ctrl;
174 struct nvme_id_ctrl *id; 183 struct nvme_id_ctrl *id;
175 u16 status = 0; 184 u16 status = 0;
185 const char model[] = "Linux";
176 186
177 id = kzalloc(sizeof(*id), GFP_KERNEL); 187 id = kzalloc(sizeof(*id), GFP_KERNEL);
178 if (!id) { 188 if (!id) {
@@ -184,14 +194,10 @@ static void nvmet_execute_identify_ctrl(struct nvmet_req *req)
184 id->vid = 0; 194 id->vid = 0;
185 id->ssvid = 0; 195 id->ssvid = 0;
186 196
187 memset(id->sn, ' ', sizeof(id->sn)); 197 bin2hex(id->sn, &ctrl->subsys->serial,
188 snprintf(id->sn, sizeof(id->sn), "%llx", ctrl->serial); 198 min(sizeof(ctrl->subsys->serial), sizeof(id->sn) / 2));
189 199 copy_and_pad(id->mn, sizeof(id->mn), model, sizeof(model) - 1);
190 memset(id->mn, ' ', sizeof(id->mn)); 200 copy_and_pad(id->fr, sizeof(id->fr), UTS_RELEASE, strlen(UTS_RELEASE));
191 strncpy((char *)id->mn, "Linux", sizeof(id->mn));
192
193 memset(id->fr, ' ', sizeof(id->fr));
194 strncpy((char *)id->fr, UTS_RELEASE, sizeof(id->fr));
195 201
196 id->rab = 6; 202 id->rab = 6;
197 203
diff --git a/drivers/nvme/target/configfs.c b/drivers/nvme/target/configfs.c
index a358ecd93e11..0a0067e771f5 100644
--- a/drivers/nvme/target/configfs.c
+++ b/drivers/nvme/target/configfs.c
@@ -650,7 +650,7 @@ out_unlock:
650 650
651CONFIGFS_ATTR(nvmet_subsys_, attr_allow_any_host); 651CONFIGFS_ATTR(nvmet_subsys_, attr_allow_any_host);
652 652
653static ssize_t nvmet_subsys_version_show(struct config_item *item, 653static ssize_t nvmet_subsys_attr_version_show(struct config_item *item,
654 char *page) 654 char *page)
655{ 655{
656 struct nvmet_subsys *subsys = to_subsys(item); 656 struct nvmet_subsys *subsys = to_subsys(item);
@@ -666,7 +666,7 @@ static ssize_t nvmet_subsys_version_show(struct config_item *item,
666 (int)NVME_MINOR(subsys->ver)); 666 (int)NVME_MINOR(subsys->ver));
667} 667}
668 668
669static ssize_t nvmet_subsys_version_store(struct config_item *item, 669static ssize_t nvmet_subsys_attr_version_store(struct config_item *item,
670 const char *page, size_t count) 670 const char *page, size_t count)
671{ 671{
672 struct nvmet_subsys *subsys = to_subsys(item); 672 struct nvmet_subsys *subsys = to_subsys(item);
@@ -684,11 +684,33 @@ static ssize_t nvmet_subsys_version_store(struct config_item *item,
684 684
685 return count; 685 return count;
686} 686}
687CONFIGFS_ATTR(nvmet_subsys_, version); 687CONFIGFS_ATTR(nvmet_subsys_, attr_version);
688
689static ssize_t nvmet_subsys_attr_serial_show(struct config_item *item,
690 char *page)
691{
692 struct nvmet_subsys *subsys = to_subsys(item);
693
694 return snprintf(page, PAGE_SIZE, "%llx\n", subsys->serial);
695}
696
697static ssize_t nvmet_subsys_attr_serial_store(struct config_item *item,
698 const char *page, size_t count)
699{
700 struct nvmet_subsys *subsys = to_subsys(item);
701
702 down_write(&nvmet_config_sem);
703 sscanf(page, "%llx\n", &subsys->serial);
704 up_write(&nvmet_config_sem);
705
706 return count;
707}
708CONFIGFS_ATTR(nvmet_subsys_, attr_serial);
688 709
689static struct configfs_attribute *nvmet_subsys_attrs[] = { 710static struct configfs_attribute *nvmet_subsys_attrs[] = {
690 &nvmet_subsys_attr_attr_allow_any_host, 711 &nvmet_subsys_attr_attr_allow_any_host,
691 &nvmet_subsys_attr_version, 712 &nvmet_subsys_attr_attr_version,
713 &nvmet_subsys_attr_attr_serial,
692 NULL, 714 NULL,
693}; 715};
694 716
diff --git a/drivers/nvme/target/core.c b/drivers/nvme/target/core.c
index b5b4ac103748..f4b02bb4a1a8 100644
--- a/drivers/nvme/target/core.c
+++ b/drivers/nvme/target/core.c
@@ -767,9 +767,6 @@ u16 nvmet_alloc_ctrl(const char *subsysnqn, const char *hostnqn,
767 memcpy(ctrl->subsysnqn, subsysnqn, NVMF_NQN_SIZE); 767 memcpy(ctrl->subsysnqn, subsysnqn, NVMF_NQN_SIZE);
768 memcpy(ctrl->hostnqn, hostnqn, NVMF_NQN_SIZE); 768 memcpy(ctrl->hostnqn, hostnqn, NVMF_NQN_SIZE);
769 769
770 /* generate a random serial number as our controllers are ephemeral: */
771 get_random_bytes(&ctrl->serial, sizeof(ctrl->serial));
772
773 kref_init(&ctrl->ref); 770 kref_init(&ctrl->ref);
774 ctrl->subsys = subsys; 771 ctrl->subsys = subsys;
775 772
@@ -928,6 +925,8 @@ struct nvmet_subsys *nvmet_subsys_alloc(const char *subsysnqn,
928 return NULL; 925 return NULL;
929 926
930 subsys->ver = NVME_VS(1, 3, 0); /* NVMe 1.3.0 */ 927 subsys->ver = NVME_VS(1, 3, 0); /* NVMe 1.3.0 */
928 /* generate a random serial number as our controllers are ephemeral: */
929 get_random_bytes(&subsys->serial, sizeof(subsys->serial));
931 930
932 switch (type) { 931 switch (type) {
933 case NVME_NQN_NVME: 932 case NVME_NQN_NVME:
diff --git a/drivers/nvme/target/fc.c b/drivers/nvme/target/fc.c
index 1e6dcc241b3c..309c84aa7595 100644
--- a/drivers/nvme/target/fc.c
+++ b/drivers/nvme/target/fc.c
@@ -114,6 +114,11 @@ struct nvmet_fc_tgtport {
114 struct kref ref; 114 struct kref ref;
115}; 115};
116 116
117struct nvmet_fc_defer_fcp_req {
118 struct list_head req_list;
119 struct nvmefc_tgt_fcp_req *fcp_req;
120};
121
117struct nvmet_fc_tgt_queue { 122struct nvmet_fc_tgt_queue {
118 bool ninetypercent; 123 bool ninetypercent;
119 u16 qid; 124 u16 qid;
@@ -132,6 +137,8 @@ struct nvmet_fc_tgt_queue {
132 struct nvmet_fc_tgt_assoc *assoc; 137 struct nvmet_fc_tgt_assoc *assoc;
133 struct nvmet_fc_fcp_iod *fod; /* array of fcp_iods */ 138 struct nvmet_fc_fcp_iod *fod; /* array of fcp_iods */
134 struct list_head fod_list; 139 struct list_head fod_list;
140 struct list_head pending_cmd_list;
141 struct list_head avail_defer_list;
135 struct workqueue_struct *work_q; 142 struct workqueue_struct *work_q;
136 struct kref ref; 143 struct kref ref;
137} __aligned(sizeof(unsigned long long)); 144} __aligned(sizeof(unsigned long long));
@@ -223,6 +230,8 @@ static void nvmet_fc_tgt_q_put(struct nvmet_fc_tgt_queue *queue);
223static int nvmet_fc_tgt_q_get(struct nvmet_fc_tgt_queue *queue); 230static int nvmet_fc_tgt_q_get(struct nvmet_fc_tgt_queue *queue);
224static void nvmet_fc_tgtport_put(struct nvmet_fc_tgtport *tgtport); 231static void nvmet_fc_tgtport_put(struct nvmet_fc_tgtport *tgtport);
225static int nvmet_fc_tgtport_get(struct nvmet_fc_tgtport *tgtport); 232static int nvmet_fc_tgtport_get(struct nvmet_fc_tgtport *tgtport);
233static void nvmet_fc_handle_fcp_rqst(struct nvmet_fc_tgtport *tgtport,
234 struct nvmet_fc_fcp_iod *fod);
226 235
227 236
228/* *********************** FC-NVME DMA Handling **************************** */ 237/* *********************** FC-NVME DMA Handling **************************** */
@@ -385,7 +394,7 @@ nvmet_fc_free_ls_iodlist(struct nvmet_fc_tgtport *tgtport)
385static struct nvmet_fc_ls_iod * 394static struct nvmet_fc_ls_iod *
386nvmet_fc_alloc_ls_iod(struct nvmet_fc_tgtport *tgtport) 395nvmet_fc_alloc_ls_iod(struct nvmet_fc_tgtport *tgtport)
387{ 396{
388 static struct nvmet_fc_ls_iod *iod; 397 struct nvmet_fc_ls_iod *iod;
389 unsigned long flags; 398 unsigned long flags;
390 399
391 spin_lock_irqsave(&tgtport->lock, flags); 400 spin_lock_irqsave(&tgtport->lock, flags);
@@ -462,10 +471,10 @@ nvmet_fc_destroy_fcp_iodlist(struct nvmet_fc_tgtport *tgtport,
462static struct nvmet_fc_fcp_iod * 471static struct nvmet_fc_fcp_iod *
463nvmet_fc_alloc_fcp_iod(struct nvmet_fc_tgt_queue *queue) 472nvmet_fc_alloc_fcp_iod(struct nvmet_fc_tgt_queue *queue)
464{ 473{
465 static struct nvmet_fc_fcp_iod *fod; 474 struct nvmet_fc_fcp_iod *fod;
466 unsigned long flags; 475
476 lockdep_assert_held(&queue->qlock);
467 477
468 spin_lock_irqsave(&queue->qlock, flags);
469 fod = list_first_entry_or_null(&queue->fod_list, 478 fod = list_first_entry_or_null(&queue->fod_list,
470 struct nvmet_fc_fcp_iod, fcp_list); 479 struct nvmet_fc_fcp_iod, fcp_list);
471 if (fod) { 480 if (fod) {
@@ -477,17 +486,37 @@ nvmet_fc_alloc_fcp_iod(struct nvmet_fc_tgt_queue *queue)
477 * will "inherit" that reference. 486 * will "inherit" that reference.
478 */ 487 */
479 } 488 }
480 spin_unlock_irqrestore(&queue->qlock, flags);
481 return fod; 489 return fod;
482} 490}
483 491
484 492
485static void 493static void
494nvmet_fc_queue_fcp_req(struct nvmet_fc_tgtport *tgtport,
495 struct nvmet_fc_tgt_queue *queue,
496 struct nvmefc_tgt_fcp_req *fcpreq)
497{
498 struct nvmet_fc_fcp_iod *fod = fcpreq->nvmet_fc_private;
499
500 /*
501 * put all admin cmds on hw queue id 0. All io commands go to
502 * the respective hw queue based on a modulo basis
503 */
504 fcpreq->hwqid = queue->qid ?
505 ((queue->qid - 1) % tgtport->ops->max_hw_queues) : 0;
506
507 if (tgtport->ops->target_features & NVMET_FCTGTFEAT_CMD_IN_ISR)
508 queue_work_on(queue->cpu, queue->work_q, &fod->work);
509 else
510 nvmet_fc_handle_fcp_rqst(tgtport, fod);
511}
512
513static void
486nvmet_fc_free_fcp_iod(struct nvmet_fc_tgt_queue *queue, 514nvmet_fc_free_fcp_iod(struct nvmet_fc_tgt_queue *queue,
487 struct nvmet_fc_fcp_iod *fod) 515 struct nvmet_fc_fcp_iod *fod)
488{ 516{
489 struct nvmefc_tgt_fcp_req *fcpreq = fod->fcpreq; 517 struct nvmefc_tgt_fcp_req *fcpreq = fod->fcpreq;
490 struct nvmet_fc_tgtport *tgtport = fod->tgtport; 518 struct nvmet_fc_tgtport *tgtport = fod->tgtport;
519 struct nvmet_fc_defer_fcp_req *deferfcp;
491 unsigned long flags; 520 unsigned long flags;
492 521
493 fc_dma_sync_single_for_cpu(tgtport->dev, fod->rspdma, 522 fc_dma_sync_single_for_cpu(tgtport->dev, fod->rspdma,
@@ -495,21 +524,56 @@ nvmet_fc_free_fcp_iod(struct nvmet_fc_tgt_queue *queue,
495 524
496 fcpreq->nvmet_fc_private = NULL; 525 fcpreq->nvmet_fc_private = NULL;
497 526
498 spin_lock_irqsave(&queue->qlock, flags);
499 list_add_tail(&fod->fcp_list, &fod->queue->fod_list);
500 fod->active = false; 527 fod->active = false;
501 fod->abort = false; 528 fod->abort = false;
502 fod->aborted = false; 529 fod->aborted = false;
503 fod->writedataactive = false; 530 fod->writedataactive = false;
504 fod->fcpreq = NULL; 531 fod->fcpreq = NULL;
532
533 tgtport->ops->fcp_req_release(&tgtport->fc_target_port, fcpreq);
534
535 spin_lock_irqsave(&queue->qlock, flags);
536 deferfcp = list_first_entry_or_null(&queue->pending_cmd_list,
537 struct nvmet_fc_defer_fcp_req, req_list);
538 if (!deferfcp) {
539 list_add_tail(&fod->fcp_list, &fod->queue->fod_list);
540 spin_unlock_irqrestore(&queue->qlock, flags);
541
542 /* Release reference taken at queue lookup and fod allocation */
543 nvmet_fc_tgt_q_put(queue);
544 return;
545 }
546
547 /* Re-use the fod for the next pending cmd that was deferred */
548 list_del(&deferfcp->req_list);
549
550 fcpreq = deferfcp->fcp_req;
551
552 /* deferfcp can be reused for another IO at a later date */
553 list_add_tail(&deferfcp->req_list, &queue->avail_defer_list);
554
505 spin_unlock_irqrestore(&queue->qlock, flags); 555 spin_unlock_irqrestore(&queue->qlock, flags);
506 556
557 /* Save NVME CMD IO in fod */
558 memcpy(&fod->cmdiubuf, fcpreq->rspaddr, fcpreq->rsplen);
559
560 /* Setup new fcpreq to be processed */
561 fcpreq->rspaddr = NULL;
562 fcpreq->rsplen = 0;
563 fcpreq->nvmet_fc_private = fod;
564 fod->fcpreq = fcpreq;
565 fod->active = true;
566
567 /* inform LLDD IO is now being processed */
568 tgtport->ops->defer_rcv(&tgtport->fc_target_port, fcpreq);
569
570 /* Submit deferred IO for processing */
571 nvmet_fc_queue_fcp_req(tgtport, queue, fcpreq);
572
507 /* 573 /*
508 * release the reference taken at queue lookup and fod allocation 574 * Leave the queue lookup get reference taken when
575 * fod was originally allocated.
509 */ 576 */
510 nvmet_fc_tgt_q_put(queue);
511
512 tgtport->ops->fcp_req_release(&tgtport->fc_target_port, fcpreq);
513} 577}
514 578
515static int 579static int
@@ -569,6 +633,8 @@ nvmet_fc_alloc_target_queue(struct nvmet_fc_tgt_assoc *assoc,
569 queue->port = assoc->tgtport->port; 633 queue->port = assoc->tgtport->port;
570 queue->cpu = nvmet_fc_queue_to_cpu(assoc->tgtport, qid); 634 queue->cpu = nvmet_fc_queue_to_cpu(assoc->tgtport, qid);
571 INIT_LIST_HEAD(&queue->fod_list); 635 INIT_LIST_HEAD(&queue->fod_list);
636 INIT_LIST_HEAD(&queue->avail_defer_list);
637 INIT_LIST_HEAD(&queue->pending_cmd_list);
572 atomic_set(&queue->connected, 0); 638 atomic_set(&queue->connected, 0);
573 atomic_set(&queue->sqtail, 0); 639 atomic_set(&queue->sqtail, 0);
574 atomic_set(&queue->rsn, 1); 640 atomic_set(&queue->rsn, 1);
@@ -638,6 +704,7 @@ nvmet_fc_delete_target_queue(struct nvmet_fc_tgt_queue *queue)
638{ 704{
639 struct nvmet_fc_tgtport *tgtport = queue->assoc->tgtport; 705 struct nvmet_fc_tgtport *tgtport = queue->assoc->tgtport;
640 struct nvmet_fc_fcp_iod *fod = queue->fod; 706 struct nvmet_fc_fcp_iod *fod = queue->fod;
707 struct nvmet_fc_defer_fcp_req *deferfcp, *tempptr;
641 unsigned long flags; 708 unsigned long flags;
642 int i, writedataactive; 709 int i, writedataactive;
643 bool disconnect; 710 bool disconnect;
@@ -666,6 +733,36 @@ nvmet_fc_delete_target_queue(struct nvmet_fc_tgt_queue *queue)
666 } 733 }
667 } 734 }
668 } 735 }
736
737 /* Cleanup defer'ed IOs in queue */
738 list_for_each_entry_safe(deferfcp, tempptr, &queue->avail_defer_list,
739 req_list) {
740 list_del(&deferfcp->req_list);
741 kfree(deferfcp);
742 }
743
744 for (;;) {
745 deferfcp = list_first_entry_or_null(&queue->pending_cmd_list,
746 struct nvmet_fc_defer_fcp_req, req_list);
747 if (!deferfcp)
748 break;
749
750 list_del(&deferfcp->req_list);
751 spin_unlock_irqrestore(&queue->qlock, flags);
752
753 tgtport->ops->defer_rcv(&tgtport->fc_target_port,
754 deferfcp->fcp_req);
755
756 tgtport->ops->fcp_abort(&tgtport->fc_target_port,
757 deferfcp->fcp_req);
758
759 tgtport->ops->fcp_req_release(&tgtport->fc_target_port,
760 deferfcp->fcp_req);
761
762 kfree(deferfcp);
763
764 spin_lock_irqsave(&queue->qlock, flags);
765 }
669 spin_unlock_irqrestore(&queue->qlock, flags); 766 spin_unlock_irqrestore(&queue->qlock, flags);
670 767
671 flush_workqueue(queue->work_q); 768 flush_workqueue(queue->work_q);
@@ -1174,14 +1271,14 @@ nvmet_fc_ls_create_association(struct nvmet_fc_tgtport *tgtport,
1174 */ 1271 */
1175 if (iod->rqstdatalen < FCNVME_LSDESC_CRA_RQST_MINLEN) 1272 if (iod->rqstdatalen < FCNVME_LSDESC_CRA_RQST_MINLEN)
1176 ret = VERR_CR_ASSOC_LEN; 1273 ret = VERR_CR_ASSOC_LEN;
1177 else if (rqst->desc_list_len < 1274 else if (be32_to_cpu(rqst->desc_list_len) <
1178 cpu_to_be32(FCNVME_LSDESC_CRA_RQST_MIN_LISTLEN)) 1275 FCNVME_LSDESC_CRA_RQST_MIN_LISTLEN)
1179 ret = VERR_CR_ASSOC_RQST_LEN; 1276 ret = VERR_CR_ASSOC_RQST_LEN;
1180 else if (rqst->assoc_cmd.desc_tag != 1277 else if (rqst->assoc_cmd.desc_tag !=
1181 cpu_to_be32(FCNVME_LSDESC_CREATE_ASSOC_CMD)) 1278 cpu_to_be32(FCNVME_LSDESC_CREATE_ASSOC_CMD))
1182 ret = VERR_CR_ASSOC_CMD; 1279 ret = VERR_CR_ASSOC_CMD;
1183 else if (rqst->assoc_cmd.desc_len < 1280 else if (be32_to_cpu(rqst->assoc_cmd.desc_len) <
1184 cpu_to_be32(FCNVME_LSDESC_CRA_CMD_DESC_MIN_DESCLEN)) 1281 FCNVME_LSDESC_CRA_CMD_DESC_MIN_DESCLEN)
1185 ret = VERR_CR_ASSOC_CMD_LEN; 1282 ret = VERR_CR_ASSOC_CMD_LEN;
1186 else if (!rqst->assoc_cmd.ersp_ratio || 1283 else if (!rqst->assoc_cmd.ersp_ratio ||
1187 (be16_to_cpu(rqst->assoc_cmd.ersp_ratio) >= 1284 (be16_to_cpu(rqst->assoc_cmd.ersp_ratio) >=
@@ -2172,11 +2269,38 @@ nvmet_fc_handle_fcp_rqst_work(struct work_struct *work)
2172 * Pass a FC-NVME FCP CMD IU received from the FC link to the nvmet-fc 2269 * Pass a FC-NVME FCP CMD IU received from the FC link to the nvmet-fc
2173 * layer for processing. 2270 * layer for processing.
2174 * 2271 *
2175 * The nvmet-fc layer will copy cmd payload to an internal structure for 2272 * The nvmet_fc layer allocates a local job structure (struct
2176 * processing. As such, upon completion of the routine, the LLDD may 2273 * nvmet_fc_fcp_iod) from the queue for the io and copies the
2177 * immediately free/reuse the CMD IU buffer passed in the call. 2274 * CMD IU buffer to the job structure. As such, on a successful
2275 * completion (returns 0), the LLDD may immediately free/reuse
2276 * the CMD IU buffer passed in the call.
2277 *
2278 * However, in some circumstances, due to the packetized nature of FC
2279 * and the api of the FC LLDD which may issue a hw command to send the
2280 * response, but the LLDD may not get the hw completion for that command
2281 * and upcall the nvmet_fc layer before a new command may be
2282 * asynchronously received - its possible for a command to be received
2283 * before the LLDD and nvmet_fc have recycled the job structure. It gives
2284 * the appearance of more commands received than fits in the sq.
2285 * To alleviate this scenario, a temporary queue is maintained in the
2286 * transport for pending LLDD requests waiting for a queue job structure.
2287 * In these "overrun" cases, a temporary queue element is allocated
2288 * the LLDD request and CMD iu buffer information remembered, and the
2289 * routine returns a -EOVERFLOW status. Subsequently, when a queue job
2290 * structure is freed, it is immediately reallocated for anything on the
2291 * pending request list. The LLDDs defer_rcv() callback is called,
2292 * informing the LLDD that it may reuse the CMD IU buffer, and the io
2293 * is then started normally with the transport.
2178 * 2294 *
2179 * If this routine returns error, the lldd should abort the exchange. 2295 * The LLDD, when receiving an -EOVERFLOW completion status, is to treat
2296 * the completion as successful but must not reuse the CMD IU buffer
2297 * until the LLDD's defer_rcv() callback has been called for the
2298 * corresponding struct nvmefc_tgt_fcp_req pointer.
2299 *
2300 * If there is any other condition in which an error occurs, the
2301 * transport will return a non-zero status indicating the error.
2302 * In all cases other than -EOVERFLOW, the transport has not accepted the
2303 * request and the LLDD should abort the exchange.
2180 * 2304 *
2181 * @target_port: pointer to the (registered) target port the FCP CMD IU 2305 * @target_port: pointer to the (registered) target port the FCP CMD IU
2182 * was received on. 2306 * was received on.
@@ -2194,6 +2318,8 @@ nvmet_fc_rcv_fcp_req(struct nvmet_fc_target_port *target_port,
2194 struct nvme_fc_cmd_iu *cmdiu = cmdiubuf; 2318 struct nvme_fc_cmd_iu *cmdiu = cmdiubuf;
2195 struct nvmet_fc_tgt_queue *queue; 2319 struct nvmet_fc_tgt_queue *queue;
2196 struct nvmet_fc_fcp_iod *fod; 2320 struct nvmet_fc_fcp_iod *fod;
2321 struct nvmet_fc_defer_fcp_req *deferfcp;
2322 unsigned long flags;
2197 2323
2198 /* validate iu, so the connection id can be used to find the queue */ 2324 /* validate iu, so the connection id can be used to find the queue */
2199 if ((cmdiubuf_len != sizeof(*cmdiu)) || 2325 if ((cmdiubuf_len != sizeof(*cmdiu)) ||
@@ -2214,29 +2340,60 @@ nvmet_fc_rcv_fcp_req(struct nvmet_fc_target_port *target_port,
2214 * when the fod is freed. 2340 * when the fod is freed.
2215 */ 2341 */
2216 2342
2343 spin_lock_irqsave(&queue->qlock, flags);
2344
2217 fod = nvmet_fc_alloc_fcp_iod(queue); 2345 fod = nvmet_fc_alloc_fcp_iod(queue);
2218 if (!fod) { 2346 if (fod) {
2347 spin_unlock_irqrestore(&queue->qlock, flags);
2348
2349 fcpreq->nvmet_fc_private = fod;
2350 fod->fcpreq = fcpreq;
2351
2352 memcpy(&fod->cmdiubuf, cmdiubuf, cmdiubuf_len);
2353
2354 nvmet_fc_queue_fcp_req(tgtport, queue, fcpreq);
2355
2356 return 0;
2357 }
2358
2359 if (!tgtport->ops->defer_rcv) {
2360 spin_unlock_irqrestore(&queue->qlock, flags);
2219 /* release the queue lookup reference */ 2361 /* release the queue lookup reference */
2220 nvmet_fc_tgt_q_put(queue); 2362 nvmet_fc_tgt_q_put(queue);
2221 return -ENOENT; 2363 return -ENOENT;
2222 } 2364 }
2223 2365
2224 fcpreq->nvmet_fc_private = fod; 2366 deferfcp = list_first_entry_or_null(&queue->avail_defer_list,
2225 fod->fcpreq = fcpreq; 2367 struct nvmet_fc_defer_fcp_req, req_list);
2226 /* 2368 if (deferfcp) {
2227 * put all admin cmds on hw queue id 0. All io commands go to 2369 /* Just re-use one that was previously allocated */
2228 * the respective hw queue based on a modulo basis 2370 list_del(&deferfcp->req_list);
2229 */ 2371 } else {
2230 fcpreq->hwqid = queue->qid ? 2372 spin_unlock_irqrestore(&queue->qlock, flags);
2231 ((queue->qid - 1) % tgtport->ops->max_hw_queues) : 0;
2232 memcpy(&fod->cmdiubuf, cmdiubuf, cmdiubuf_len);
2233 2373
2234 if (tgtport->ops->target_features & NVMET_FCTGTFEAT_CMD_IN_ISR) 2374 /* Now we need to dynamically allocate one */
2235 queue_work_on(queue->cpu, queue->work_q, &fod->work); 2375 deferfcp = kmalloc(sizeof(*deferfcp), GFP_KERNEL);
2236 else 2376 if (!deferfcp) {
2237 nvmet_fc_handle_fcp_rqst(tgtport, fod); 2377 /* release the queue lookup reference */
2378 nvmet_fc_tgt_q_put(queue);
2379 return -ENOMEM;
2380 }
2381 spin_lock_irqsave(&queue->qlock, flags);
2382 }
2238 2383
2239 return 0; 2384 /* For now, use rspaddr / rsplen to save payload information */
2385 fcpreq->rspaddr = cmdiubuf;
2386 fcpreq->rsplen = cmdiubuf_len;
2387 deferfcp->fcp_req = fcpreq;
2388
2389 /* defer processing till a fod becomes available */
2390 list_add_tail(&deferfcp->req_list, &queue->pending_cmd_list);
2391
2392 /* NOTE: the queue lookup reference is still valid */
2393
2394 spin_unlock_irqrestore(&queue->qlock, flags);
2395
2396 return -EOVERFLOW;
2240} 2397}
2241EXPORT_SYMBOL_GPL(nvmet_fc_rcv_fcp_req); 2398EXPORT_SYMBOL_GPL(nvmet_fc_rcv_fcp_req);
2242 2399
@@ -2293,66 +2450,70 @@ nvmet_fc_rcv_fcp_abort(struct nvmet_fc_target_port *target_port,
2293} 2450}
2294EXPORT_SYMBOL_GPL(nvmet_fc_rcv_fcp_abort); 2451EXPORT_SYMBOL_GPL(nvmet_fc_rcv_fcp_abort);
2295 2452
2296enum {
2297 FCT_TRADDR_ERR = 0,
2298 FCT_TRADDR_WWNN = 1 << 0,
2299 FCT_TRADDR_WWPN = 1 << 1,
2300};
2301 2453
2302struct nvmet_fc_traddr { 2454struct nvmet_fc_traddr {
2303 u64 nn; 2455 u64 nn;
2304 u64 pn; 2456 u64 pn;
2305}; 2457};
2306 2458
2307static const match_table_t traddr_opt_tokens = {
2308 { FCT_TRADDR_WWNN, "nn-%s" },
2309 { FCT_TRADDR_WWPN, "pn-%s" },
2310 { FCT_TRADDR_ERR, NULL }
2311};
2312
2313static int 2459static int
2314nvmet_fc_parse_traddr(struct nvmet_fc_traddr *traddr, char *buf) 2460__nvme_fc_parse_u64(substring_t *sstr, u64 *val)
2315{ 2461{
2316 substring_t args[MAX_OPT_ARGS];
2317 char *options, *o, *p;
2318 int token, ret = 0;
2319 u64 token64; 2462 u64 token64;
2320 2463
2321 options = o = kstrdup(buf, GFP_KERNEL); 2464 if (match_u64(sstr, &token64))
2322 if (!options) 2465 return -EINVAL;
2323 return -ENOMEM; 2466 *val = token64;
2324 2467
2325 while ((p = strsep(&o, ":\n")) != NULL) { 2468 return 0;
2326 if (!*p) 2469}
2327 continue;
2328 2470
2329 token = match_token(p, traddr_opt_tokens, args); 2471/*
2330 switch (token) { 2472 * This routine validates and extracts the WWN's from the TRADDR string.
2331 case FCT_TRADDR_WWNN: 2473 * As kernel parsers need the 0x to determine number base, universally
2332 if (match_u64(args, &token64)) { 2474 * build string to parse with 0x prefix before parsing name strings.
2333 ret = -EINVAL; 2475 */
2334 goto out; 2476static int
2335 } 2477nvme_fc_parse_traddr(struct nvmet_fc_traddr *traddr, char *buf, size_t blen)
2336 traddr->nn = token64; 2478{
2337 break; 2479 char name[2 + NVME_FC_TRADDR_HEXNAMELEN + 1];
2338 case FCT_TRADDR_WWPN: 2480 substring_t wwn = { name, &name[sizeof(name)-1] };
2339 if (match_u64(args, &token64)) { 2481 int nnoffset, pnoffset;
2340 ret = -EINVAL; 2482
2341 goto out; 2483 /* validate it string one of the 2 allowed formats */
2342 } 2484 if (strnlen(buf, blen) == NVME_FC_TRADDR_MAXLENGTH &&
2343 traddr->pn = token64; 2485 !strncmp(buf, "nn-0x", NVME_FC_TRADDR_OXNNLEN) &&
2344 break; 2486 !strncmp(&buf[NVME_FC_TRADDR_MAX_PN_OFFSET],
2345 default: 2487 "pn-0x", NVME_FC_TRADDR_OXNNLEN)) {
2346 pr_warn("unknown traddr token or missing value '%s'\n", 2488 nnoffset = NVME_FC_TRADDR_OXNNLEN;
2347 p); 2489 pnoffset = NVME_FC_TRADDR_MAX_PN_OFFSET +
2348 ret = -EINVAL; 2490 NVME_FC_TRADDR_OXNNLEN;
2349 goto out; 2491 } else if ((strnlen(buf, blen) == NVME_FC_TRADDR_MINLENGTH &&
2350 } 2492 !strncmp(buf, "nn-", NVME_FC_TRADDR_NNLEN) &&
2351 } 2493 !strncmp(&buf[NVME_FC_TRADDR_MIN_PN_OFFSET],
2494 "pn-", NVME_FC_TRADDR_NNLEN))) {
2495 nnoffset = NVME_FC_TRADDR_NNLEN;
2496 pnoffset = NVME_FC_TRADDR_MIN_PN_OFFSET + NVME_FC_TRADDR_NNLEN;
2497 } else
2498 goto out_einval;
2499
2500 name[0] = '0';
2501 name[1] = 'x';
2502 name[2 + NVME_FC_TRADDR_HEXNAMELEN] = 0;
2503
2504 memcpy(&name[2], &buf[nnoffset], NVME_FC_TRADDR_HEXNAMELEN);
2505 if (__nvme_fc_parse_u64(&wwn, &traddr->nn))
2506 goto out_einval;
2507
2508 memcpy(&name[2], &buf[pnoffset], NVME_FC_TRADDR_HEXNAMELEN);
2509 if (__nvme_fc_parse_u64(&wwn, &traddr->pn))
2510 goto out_einval;
2352 2511
2353out: 2512 return 0;
2354 kfree(options); 2513
2355 return ret; 2514out_einval:
2515 pr_warn("%s: bad traddr string\n", __func__);
2516 return -EINVAL;
2356} 2517}
2357 2518
2358static int 2519static int
@@ -2370,7 +2531,8 @@ nvmet_fc_add_port(struct nvmet_port *port)
2370 2531
2371 /* map the traddr address info to a target port */ 2532 /* map the traddr address info to a target port */
2372 2533
2373 ret = nvmet_fc_parse_traddr(&traddr, port->disc_addr.traddr); 2534 ret = nvme_fc_parse_traddr(&traddr, port->disc_addr.traddr,
2535 sizeof(port->disc_addr.traddr));
2374 if (ret) 2536 if (ret)
2375 return ret; 2537 return ret;
2376 2538
diff --git a/drivers/nvme/target/nvmet.h b/drivers/nvme/target/nvmet.h
index 747bbdb4f9c6..e3b244c7e443 100644
--- a/drivers/nvme/target/nvmet.h
+++ b/drivers/nvme/target/nvmet.h
@@ -112,7 +112,6 @@ struct nvmet_ctrl {
112 112
113 struct mutex lock; 113 struct mutex lock;
114 u64 cap; 114 u64 cap;
115 u64 serial;
116 u32 cc; 115 u32 cc;
117 u32 csts; 116 u32 csts;
118 117
@@ -152,6 +151,7 @@ struct nvmet_subsys {
152 u16 max_qid; 151 u16 max_qid;
153 152
154 u64 ver; 153 u64 ver;
154 u64 serial;
155 char *subsysnqn; 155 char *subsysnqn;
156 156
157 struct config_group group; 157 struct config_group group;
diff --git a/drivers/nvmem/rockchip-efuse.c b/drivers/nvmem/rockchip-efuse.c
index a0d4ede9b8fc..63e3eb55f3ac 100644
--- a/drivers/nvmem/rockchip-efuse.c
+++ b/drivers/nvmem/rockchip-efuse.c
@@ -170,7 +170,7 @@ static const struct of_device_id rockchip_efuse_match[] = {
170 .data = (void *)&rockchip_rk3288_efuse_read, 170 .data = (void *)&rockchip_rk3288_efuse_read,
171 }, 171 },
172 { 172 {
173 .compatible = "rockchip,rk322x-efuse", 173 .compatible = "rockchip,rk3228-efuse",
174 .data = (void *)&rockchip_rk3288_efuse_read, 174 .data = (void *)&rockchip_rk3288_efuse_read,
175 }, 175 },
176 { 176 {
diff --git a/drivers/of/device.c b/drivers/of/device.c
index 28c38c756f92..e0a28ea341fe 100644
--- a/drivers/of/device.c
+++ b/drivers/of/device.c
@@ -89,6 +89,7 @@ int of_dma_configure(struct device *dev, struct device_node *np)
89 bool coherent; 89 bool coherent;
90 unsigned long offset; 90 unsigned long offset;
91 const struct iommu_ops *iommu; 91 const struct iommu_ops *iommu;
92 u64 mask;
92 93
93 /* 94 /*
94 * Set default coherent_dma_mask to 32 bit. Drivers are expected to 95 * Set default coherent_dma_mask to 32 bit. Drivers are expected to
@@ -134,10 +135,9 @@ int of_dma_configure(struct device *dev, struct device_node *np)
134 * Limit coherent and dma mask based on size and default mask 135 * Limit coherent and dma mask based on size and default mask
135 * set by the driver. 136 * set by the driver.
136 */ 137 */
137 dev->coherent_dma_mask = min(dev->coherent_dma_mask, 138 mask = DMA_BIT_MASK(ilog2(dma_addr + size - 1) + 1);
138 DMA_BIT_MASK(ilog2(dma_addr + size))); 139 dev->coherent_dma_mask &= mask;
139 *dev->dma_mask = min((*dev->dma_mask), 140 *dev->dma_mask &= mask;
140 DMA_BIT_MASK(ilog2(dma_addr + size)));
141 141
142 coherent = of_dma_is_coherent(np); 142 coherent = of_dma_is_coherent(np);
143 dev_dbg(dev, "device is%sdma coherent\n", 143 dev_dbg(dev, "device is%sdma coherent\n",
diff --git a/drivers/of/irq.c b/drivers/of/irq.c
index 6ce72aa65425..ab21c846eb27 100644
--- a/drivers/of/irq.c
+++ b/drivers/of/irq.c
@@ -476,7 +476,7 @@ int of_irq_to_resource_table(struct device_node *dev, struct resource *res,
476 int i; 476 int i;
477 477
478 for (i = 0; i < nr_irqs; i++, res++) 478 for (i = 0; i < nr_irqs; i++, res++)
479 if (!of_irq_to_resource(dev, i, res)) 479 if (of_irq_to_resource(dev, i, res) <= 0)
480 break; 480 break;
481 481
482 return i; 482 return i;
diff --git a/drivers/of/property.c b/drivers/of/property.c
index eda50b4be934..067f9fab7b77 100644
--- a/drivers/of/property.c
+++ b/drivers/of/property.c
@@ -708,6 +708,15 @@ struct device_node *of_graph_get_port_parent(struct device_node *node)
708{ 708{
709 unsigned int depth; 709 unsigned int depth;
710 710
711 if (!node)
712 return NULL;
713
714 /*
715 * Preserve usecount for passed in node as of_get_next_parent()
716 * will do of_node_put() on it.
717 */
718 of_node_get(node);
719
711 /* Walk 3 levels up only if there is 'ports' node. */ 720 /* Walk 3 levels up only if there is 'ports' node. */
712 for (depth = 3; depth && node; depth--) { 721 for (depth = 3; depth && node; depth--) {
713 node = of_get_next_parent(node); 722 node = of_get_next_parent(node);
@@ -728,12 +737,16 @@ EXPORT_SYMBOL(of_graph_get_port_parent);
728struct device_node *of_graph_get_remote_port_parent( 737struct device_node *of_graph_get_remote_port_parent(
729 const struct device_node *node) 738 const struct device_node *node)
730{ 739{
731 struct device_node *np; 740 struct device_node *np, *pp;
732 741
733 /* Get remote endpoint node. */ 742 /* Get remote endpoint node. */
734 np = of_graph_get_remote_endpoint(node); 743 np = of_graph_get_remote_endpoint(node);
735 744
736 return of_graph_get_port_parent(np); 745 pp = of_graph_get_port_parent(np);
746
747 of_node_put(np);
748
749 return pp;
737} 750}
738EXPORT_SYMBOL(of_graph_get_remote_port_parent); 751EXPORT_SYMBOL(of_graph_get_remote_port_parent);
739 752
diff --git a/drivers/parisc/dino.c b/drivers/parisc/dino.c
index 5c63b920b471..ed92c1254cff 100644
--- a/drivers/parisc/dino.c
+++ b/drivers/parisc/dino.c
@@ -956,7 +956,7 @@ static int __init dino_probe(struct parisc_device *dev)
956 956
957 dino_dev->hba.dev = dev; 957 dino_dev->hba.dev = dev;
958 dino_dev->hba.base_addr = ioremap_nocache(hpa, 4096); 958 dino_dev->hba.base_addr = ioremap_nocache(hpa, 4096);
959 dino_dev->hba.lmmio_space_offset = 0; /* CPU addrs == bus addrs */ 959 dino_dev->hba.lmmio_space_offset = PCI_F_EXTEND;
960 spin_lock_init(&dino_dev->dinosaur_pen); 960 spin_lock_init(&dino_dev->dinosaur_pen);
961 dino_dev->hba.iommu = ccio_get_iommu(dev); 961 dino_dev->hba.iommu = ccio_get_iommu(dev);
962 962
diff --git a/drivers/parisc/pdc_stable.c b/drivers/parisc/pdc_stable.c
index 055f83fddc18..b1ff46fe4547 100644
--- a/drivers/parisc/pdc_stable.c
+++ b/drivers/parisc/pdc_stable.c
@@ -333,11 +333,11 @@ pdcspath_hwpath_write(struct pdcspath_entry *entry, const char *buf, size_t coun
333 333
334 /* Update the symlink to the real device */ 334 /* Update the symlink to the real device */
335 sysfs_remove_link(&entry->kobj, "device"); 335 sysfs_remove_link(&entry->kobj, "device");
336 write_unlock(&entry->rw_lock);
337
336 ret = sysfs_create_link(&entry->kobj, &entry->dev->kobj, "device"); 338 ret = sysfs_create_link(&entry->kobj, &entry->dev->kobj, "device");
337 WARN_ON(ret); 339 WARN_ON(ret);
338 340
339 write_unlock(&entry->rw_lock);
340
341 printk(KERN_INFO PDCS_PREFIX ": changed \"%s\" path to \"%s\"\n", 341 printk(KERN_INFO PDCS_PREFIX ": changed \"%s\" path to \"%s\"\n",
342 entry->name, buf); 342 entry->name, buf);
343 343
@@ -954,7 +954,7 @@ static struct attribute *pdcs_subsys_attrs[] = {
954 NULL, 954 NULL,
955}; 955};
956 956
957static struct attribute_group pdcs_attr_group = { 957static const struct attribute_group pdcs_attr_group = {
958 .attrs = pdcs_subsys_attrs, 958 .attrs = pdcs_subsys_attrs,
959}; 959};
960 960
@@ -998,6 +998,7 @@ pdcs_register_pathentries(void)
998 /* kobject is now registered */ 998 /* kobject is now registered */
999 write_lock(&entry->rw_lock); 999 write_lock(&entry->rw_lock);
1000 entry->ready = 2; 1000 entry->ready = 2;
1001 write_unlock(&entry->rw_lock);
1001 1002
1002 /* Add a nice symlink to the real device */ 1003 /* Add a nice symlink to the real device */
1003 if (entry->dev) { 1004 if (entry->dev) {
@@ -1005,7 +1006,6 @@ pdcs_register_pathentries(void)
1005 WARN_ON(err); 1006 WARN_ON(err);
1006 } 1007 }
1007 1008
1008 write_unlock(&entry->rw_lock);
1009 kobject_uevent(&entry->kobj, KOBJ_ADD); 1009 kobject_uevent(&entry->kobj, KOBJ_ADD);
1010 } 1010 }
1011 1011
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index af0cc3456dc1..fdf65a6c13f6 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -514,7 +514,7 @@ EXPORT_SYMBOL(pci_find_resource);
514 */ 514 */
515struct pci_dev *pci_find_pcie_root_port(struct pci_dev *dev) 515struct pci_dev *pci_find_pcie_root_port(struct pci_dev *dev)
516{ 516{
517 struct pci_dev *bridge, *highest_pcie_bridge = NULL; 517 struct pci_dev *bridge, *highest_pcie_bridge = dev;
518 518
519 bridge = pci_upstream_bridge(dev); 519 bridge = pci_upstream_bridge(dev);
520 while (bridge && pci_is_pcie(bridge)) { 520 while (bridge && pci_is_pcie(bridge)) {
@@ -4260,6 +4260,41 @@ int pci_reset_function(struct pci_dev *dev)
4260EXPORT_SYMBOL_GPL(pci_reset_function); 4260EXPORT_SYMBOL_GPL(pci_reset_function);
4261 4261
4262/** 4262/**
4263 * pci_reset_function_locked - quiesce and reset a PCI device function
4264 * @dev: PCI device to reset
4265 *
4266 * Some devices allow an individual function to be reset without affecting
4267 * other functions in the same device. The PCI device must be responsive
4268 * to PCI config space in order to use this function.
4269 *
4270 * This function does not just reset the PCI portion of a device, but
4271 * clears all the state associated with the device. This function differs
4272 * from __pci_reset_function() in that it saves and restores device state
4273 * over the reset. It also differs from pci_reset_function() in that it
4274 * requires the PCI device lock to be held.
4275 *
4276 * Returns 0 if the device function was successfully reset or negative if the
4277 * device doesn't support resetting a single function.
4278 */
4279int pci_reset_function_locked(struct pci_dev *dev)
4280{
4281 int rc;
4282
4283 rc = pci_probe_reset_function(dev);
4284 if (rc)
4285 return rc;
4286
4287 pci_dev_save_and_disable(dev);
4288
4289 rc = __pci_reset_function_locked(dev);
4290
4291 pci_dev_restore(dev);
4292
4293 return rc;
4294}
4295EXPORT_SYMBOL_GPL(pci_reset_function_locked);
4296
4297/**
4263 * pci_try_reset_function - quiesce and reset a PCI device function 4298 * pci_try_reset_function - quiesce and reset a PCI device function
4264 * @dev: PCI device to reset 4299 * @dev: PCI device to reset
4265 * 4300 *
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index c31310db0404..e6a917b4acd3 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -1762,6 +1762,48 @@ static void pci_configure_extended_tags(struct pci_dev *dev)
1762 PCI_EXP_DEVCTL_EXT_TAG); 1762 PCI_EXP_DEVCTL_EXT_TAG);
1763} 1763}
1764 1764
1765/**
1766 * pcie_relaxed_ordering_enabled - Probe for PCIe relaxed ordering enable
1767 * @dev: PCI device to query
1768 *
1769 * Returns true if the device has enabled relaxed ordering attribute.
1770 */
1771bool pcie_relaxed_ordering_enabled(struct pci_dev *dev)
1772{
1773 u16 v;
1774
1775 pcie_capability_read_word(dev, PCI_EXP_DEVCTL, &v);
1776
1777 return !!(v & PCI_EXP_DEVCTL_RELAX_EN);
1778}
1779EXPORT_SYMBOL(pcie_relaxed_ordering_enabled);
1780
1781static void pci_configure_relaxed_ordering(struct pci_dev *dev)
1782{
1783 struct pci_dev *root;
1784
1785 /* PCI_EXP_DEVICE_RELAX_EN is RsvdP in VFs */
1786 if (dev->is_virtfn)
1787 return;
1788
1789 if (!pcie_relaxed_ordering_enabled(dev))
1790 return;
1791
1792 /*
1793 * For now, we only deal with Relaxed Ordering issues with Root
1794 * Ports. Peer-to-Peer DMA is another can of worms.
1795 */
1796 root = pci_find_pcie_root_port(dev);
1797 if (!root)
1798 return;
1799
1800 if (root->dev_flags & PCI_DEV_FLAGS_NO_RELAXED_ORDERING) {
1801 pcie_capability_clear_word(dev, PCI_EXP_DEVCTL,
1802 PCI_EXP_DEVCTL_RELAX_EN);
1803 dev_info(&dev->dev, "Disable Relaxed Ordering because the Root Port didn't support it\n");
1804 }
1805}
1806
1765static void pci_configure_device(struct pci_dev *dev) 1807static void pci_configure_device(struct pci_dev *dev)
1766{ 1808{
1767 struct hotplug_params hpp; 1809 struct hotplug_params hpp;
@@ -1769,6 +1811,7 @@ static void pci_configure_device(struct pci_dev *dev)
1769 1811
1770 pci_configure_mps(dev); 1812 pci_configure_mps(dev);
1771 pci_configure_extended_tags(dev); 1813 pci_configure_extended_tags(dev);
1814 pci_configure_relaxed_ordering(dev);
1772 1815
1773 memset(&hpp, 0, sizeof(hpp)); 1816 memset(&hpp, 0, sizeof(hpp));
1774 ret = pci_get_hp_params(dev, &hpp); 1817 ret = pci_get_hp_params(dev, &hpp);
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 6967c6b4cf6b..140760403f36 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -4016,6 +4016,95 @@ DECLARE_PCI_FIXUP_CLASS_EARLY(0x1797, 0x6869, PCI_CLASS_NOT_DEFINED, 8,
4016 quirk_tw686x_class); 4016 quirk_tw686x_class);
4017 4017
4018/* 4018/*
4019 * Some devices have problems with Transaction Layer Packets with the Relaxed
4020 * Ordering Attribute set. Such devices should mark themselves and other
4021 * Device Drivers should check before sending TLPs with RO set.
4022 */
4023static void quirk_relaxedordering_disable(struct pci_dev *dev)
4024{
4025 dev->dev_flags |= PCI_DEV_FLAGS_NO_RELAXED_ORDERING;
4026 dev_info(&dev->dev, "Disable Relaxed Ordering Attributes to avoid PCIe Completion erratum\n");
4027}
4028
4029/*
4030 * Intel Xeon processors based on Broadwell/Haswell microarchitecture Root
4031 * Complex has a Flow Control Credit issue which can cause performance
4032 * problems with Upstream Transaction Layer Packets with Relaxed Ordering set.
4033 */
4034DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f01, PCI_CLASS_NOT_DEFINED, 8,
4035 quirk_relaxedordering_disable);
4036DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f02, PCI_CLASS_NOT_DEFINED, 8,
4037 quirk_relaxedordering_disable);
4038DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f03, PCI_CLASS_NOT_DEFINED, 8,
4039 quirk_relaxedordering_disable);
4040DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f04, PCI_CLASS_NOT_DEFINED, 8,
4041 quirk_relaxedordering_disable);
4042DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f05, PCI_CLASS_NOT_DEFINED, 8,
4043 quirk_relaxedordering_disable);
4044DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f06, PCI_CLASS_NOT_DEFINED, 8,
4045 quirk_relaxedordering_disable);
4046DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f07, PCI_CLASS_NOT_DEFINED, 8,
4047 quirk_relaxedordering_disable);
4048DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f08, PCI_CLASS_NOT_DEFINED, 8,
4049 quirk_relaxedordering_disable);
4050DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f09, PCI_CLASS_NOT_DEFINED, 8,
4051 quirk_relaxedordering_disable);
4052DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f0a, PCI_CLASS_NOT_DEFINED, 8,
4053 quirk_relaxedordering_disable);
4054DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f0b, PCI_CLASS_NOT_DEFINED, 8,
4055 quirk_relaxedordering_disable);
4056DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f0c, PCI_CLASS_NOT_DEFINED, 8,
4057 quirk_relaxedordering_disable);
4058DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f0d, PCI_CLASS_NOT_DEFINED, 8,
4059 quirk_relaxedordering_disable);
4060DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x6f0e, PCI_CLASS_NOT_DEFINED, 8,
4061 quirk_relaxedordering_disable);
4062DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f01, PCI_CLASS_NOT_DEFINED, 8,
4063 quirk_relaxedordering_disable);
4064DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f02, PCI_CLASS_NOT_DEFINED, 8,
4065 quirk_relaxedordering_disable);
4066DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f03, PCI_CLASS_NOT_DEFINED, 8,
4067 quirk_relaxedordering_disable);
4068DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f04, PCI_CLASS_NOT_DEFINED, 8,
4069 quirk_relaxedordering_disable);
4070DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f05, PCI_CLASS_NOT_DEFINED, 8,
4071 quirk_relaxedordering_disable);
4072DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f06, PCI_CLASS_NOT_DEFINED, 8,
4073 quirk_relaxedordering_disable);
4074DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f07, PCI_CLASS_NOT_DEFINED, 8,
4075 quirk_relaxedordering_disable);
4076DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f08, PCI_CLASS_NOT_DEFINED, 8,
4077 quirk_relaxedordering_disable);
4078DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f09, PCI_CLASS_NOT_DEFINED, 8,
4079 quirk_relaxedordering_disable);
4080DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f0a, PCI_CLASS_NOT_DEFINED, 8,
4081 quirk_relaxedordering_disable);
4082DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f0b, PCI_CLASS_NOT_DEFINED, 8,
4083 quirk_relaxedordering_disable);
4084DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f0c, PCI_CLASS_NOT_DEFINED, 8,
4085 quirk_relaxedordering_disable);
4086DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f0d, PCI_CLASS_NOT_DEFINED, 8,
4087 quirk_relaxedordering_disable);
4088DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_INTEL, 0x2f0e, PCI_CLASS_NOT_DEFINED, 8,
4089 quirk_relaxedordering_disable);
4090
4091/*
4092 * The AMD ARM A1100 (AKA "SEATTLE") SoC has a bug in its PCIe Root Complex
4093 * where Upstream Transaction Layer Packets with the Relaxed Ordering
4094 * Attribute clear are allowed to bypass earlier TLPs with Relaxed Ordering
4095 * set. This is a violation of the PCIe 3.0 Transaction Ordering Rules
4096 * outlined in Section 2.4.1 (PCI Express(r) Base Specification Revision 3.0
4097 * November 10, 2010). As a result, on this platform we can't use Relaxed
4098 * Ordering for Upstream TLPs.
4099 */
4100DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_AMD, 0x1a00, PCI_CLASS_NOT_DEFINED, 8,
4101 quirk_relaxedordering_disable);
4102DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_AMD, 0x1a01, PCI_CLASS_NOT_DEFINED, 8,
4103 quirk_relaxedordering_disable);
4104DECLARE_PCI_FIXUP_CLASS_EARLY(PCI_VENDOR_ID_AMD, 0x1a02, PCI_CLASS_NOT_DEFINED, 8,
4105 quirk_relaxedordering_disable);
4106
4107/*
4019 * Per PCIe r3.0, sec 2.2.9, "Completion headers must supply the same 4108 * Per PCIe r3.0, sec 2.2.9, "Completion headers must supply the same
4020 * values for the Attribute as were supplied in the header of the 4109 * values for the Attribute as were supplied in the header of the
4021 * corresponding Request, except as explicitly allowed when IDO is used." 4110 * corresponding Request, except as explicitly allowed when IDO is used."
diff --git a/drivers/perf/arm_pmu.c b/drivers/perf/arm_pmu.c
index dc459eb1246b..1c5e0f333779 100644
--- a/drivers/perf/arm_pmu.c
+++ b/drivers/perf/arm_pmu.c
@@ -569,22 +569,41 @@ int armpmu_request_irq(struct arm_pmu *armpmu, int cpu)
569 if (irq != other_irq) { 569 if (irq != other_irq) {
570 pr_warn("mismatched PPIs detected.\n"); 570 pr_warn("mismatched PPIs detected.\n");
571 err = -EINVAL; 571 err = -EINVAL;
572 goto err_out;
572 } 573 }
573 } else { 574 } else {
574 err = request_irq(irq, handler, 575 struct arm_pmu_platdata *platdata = armpmu_get_platdata(armpmu);
575 IRQF_NOBALANCING | IRQF_NO_THREAD, "arm-pmu", 576 unsigned long irq_flags;
577
578 err = irq_force_affinity(irq, cpumask_of(cpu));
579
580 if (err && num_possible_cpus() > 1) {
581 pr_warn("unable to set irq affinity (irq=%d, cpu=%u)\n",
582 irq, cpu);
583 goto err_out;
584 }
585
586 if (platdata && platdata->irq_flags) {
587 irq_flags = platdata->irq_flags;
588 } else {
589 irq_flags = IRQF_PERCPU |
590 IRQF_NOBALANCING |
591 IRQF_NO_THREAD;
592 }
593
594 err = request_irq(irq, handler, irq_flags, "arm-pmu",
576 per_cpu_ptr(&hw_events->percpu_pmu, cpu)); 595 per_cpu_ptr(&hw_events->percpu_pmu, cpu));
577 } 596 }
578 597
579 if (err) { 598 if (err)
580 pr_err("unable to request IRQ%d for ARM PMU counters\n", 599 goto err_out;
581 irq);
582 return err;
583 }
584 600
585 cpumask_set_cpu(cpu, &armpmu->active_irqs); 601 cpumask_set_cpu(cpu, &armpmu->active_irqs);
586
587 return 0; 602 return 0;
603
604err_out:
605 pr_err("unable to request IRQ%d for ARM PMU counters\n", irq);
606 return err;
588} 607}
589 608
590int armpmu_request_irqs(struct arm_pmu *armpmu) 609int armpmu_request_irqs(struct arm_pmu *armpmu)
@@ -628,12 +647,6 @@ static int arm_perf_starting_cpu(unsigned int cpu, struct hlist_node *node)
628 enable_percpu_irq(irq, IRQ_TYPE_NONE); 647 enable_percpu_irq(irq, IRQ_TYPE_NONE);
629 return 0; 648 return 0;
630 } 649 }
631
632 if (irq_force_affinity(irq, cpumask_of(cpu)) &&
633 num_possible_cpus() > 1) {
634 pr_warn("unable to set irq affinity (irq=%d, cpu=%u)\n",
635 irq, cpu);
636 }
637 } 650 }
638 651
639 return 0; 652 return 0;
diff --git a/drivers/perf/arm_pmu_platform.c b/drivers/perf/arm_pmu_platform.c
index 69255f53057a..4eafa7a42e52 100644
--- a/drivers/perf/arm_pmu_platform.c
+++ b/drivers/perf/arm_pmu_platform.c
@@ -131,8 +131,8 @@ static int pmu_parse_irqs(struct arm_pmu *pmu)
131 } 131 }
132 132
133 if (!pmu_has_irq_affinity(pdev->dev.of_node)) { 133 if (!pmu_has_irq_affinity(pdev->dev.of_node)) {
134 pr_warn("no interrupt-affinity property for %s, guessing.\n", 134 pr_warn("no interrupt-affinity property for %pOF, guessing.\n",
135 of_node_full_name(pdev->dev.of_node)); 135 pdev->dev.of_node);
136 } 136 }
137 137
138 /* 138 /*
@@ -211,7 +211,7 @@ int arm_pmu_device_probe(struct platform_device *pdev,
211 } 211 }
212 212
213 if (ret) { 213 if (ret) {
214 pr_info("%s: failed to probe PMU!\n", of_node_full_name(node)); 214 pr_info("%pOF: failed to probe PMU!\n", node);
215 goto out_free; 215 goto out_free;
216 } 216 }
217 217
@@ -228,8 +228,7 @@ int arm_pmu_device_probe(struct platform_device *pdev,
228out_free_irqs: 228out_free_irqs:
229 armpmu_free_irqs(pmu); 229 armpmu_free_irqs(pmu);
230out_free: 230out_free:
231 pr_info("%s: failed to register PMU devices!\n", 231 pr_info("%pOF: failed to register PMU devices!\n", node);
232 of_node_full_name(node));
233 armpmu_free(pmu); 232 armpmu_free(pmu);
234 return ret; 233 return ret;
235} 234}
diff --git a/drivers/perf/qcom_l2_pmu.c b/drivers/perf/qcom_l2_pmu.c
index c259848228b4..b242cce10468 100644
--- a/drivers/perf/qcom_l2_pmu.c
+++ b/drivers/perf/qcom_l2_pmu.c
@@ -546,6 +546,7 @@ static int l2_cache_event_init(struct perf_event *event)
546 } 546 }
547 547
548 if ((event != event->group_leader) && 548 if ((event != event->group_leader) &&
549 !is_software_event(event->group_leader) &&
549 (L2_EVT_GROUP(event->group_leader->attr.config) == 550 (L2_EVT_GROUP(event->group_leader->attr.config) ==
550 L2_EVT_GROUP(event->attr.config))) { 551 L2_EVT_GROUP(event->attr.config))) {
551 dev_dbg_ratelimited(&l2cache_pmu->pdev->dev, 552 dev_dbg_ratelimited(&l2cache_pmu->pdev->dev,
@@ -558,6 +559,7 @@ static int l2_cache_event_init(struct perf_event *event)
558 list_for_each_entry(sibling, &event->group_leader->sibling_list, 559 list_for_each_entry(sibling, &event->group_leader->sibling_list,
559 group_entry) { 560 group_entry) {
560 if ((sibling != event) && 561 if ((sibling != event) &&
562 !is_software_event(sibling) &&
561 (L2_EVT_GROUP(sibling->attr.config) == 563 (L2_EVT_GROUP(sibling->attr.config) ==
562 L2_EVT_GROUP(event->attr.config))) { 564 L2_EVT_GROUP(event->attr.config))) {
563 dev_dbg_ratelimited(&l2cache_pmu->pdev->dev, 565 dev_dbg_ratelimited(&l2cache_pmu->pdev->dev,
diff --git a/drivers/phy/broadcom/Kconfig b/drivers/phy/broadcom/Kconfig
index 37371b89b14f..64fc59c3ae6d 100644
--- a/drivers/phy/broadcom/Kconfig
+++ b/drivers/phy/broadcom/Kconfig
@@ -30,8 +30,8 @@ config PHY_BCM_NS_USB3
30 tristate "Broadcom Northstar USB 3.0 PHY Driver" 30 tristate "Broadcom Northstar USB 3.0 PHY Driver"
31 depends on ARCH_BCM_IPROC || COMPILE_TEST 31 depends on ARCH_BCM_IPROC || COMPILE_TEST
32 depends on HAS_IOMEM && OF 32 depends on HAS_IOMEM && OF
33 depends on MDIO_BUS
33 select GENERIC_PHY 34 select GENERIC_PHY
34 select MDIO_DEVICE
35 help 35 help
36 Enable this to support Broadcom USB 3.0 PHY connected to the USB 36 Enable this to support Broadcom USB 3.0 PHY connected to the USB
37 controller on Northstar family. 37 controller on Northstar family.
diff --git a/drivers/pinctrl/intel/pinctrl-cherryview.c b/drivers/pinctrl/intel/pinctrl-cherryview.c
index 20f1b4493994..04e929fd0ffe 100644
--- a/drivers/pinctrl/intel/pinctrl-cherryview.c
+++ b/drivers/pinctrl/intel/pinctrl-cherryview.c
@@ -1548,6 +1548,13 @@ static const struct dmi_system_id chv_no_valid_mask[] = {
1548 }, 1548 },
1549 }, 1549 },
1550 { 1550 {
1551 .ident = "HP Chromebook 11 G5 (Setzer)",
1552 .matches = {
1553 DMI_MATCH(DMI_SYS_VENDOR, "HP"),
1554 DMI_MATCH(DMI_PRODUCT_NAME, "Setzer"),
1555 },
1556 },
1557 {
1551 .ident = "Acer Chromebook R11 (Cyan)", 1558 .ident = "Acer Chromebook R11 (Cyan)",
1552 .matches = { 1559 .matches = {
1553 DMI_MATCH(DMI_SYS_VENDOR, "GOOGLE"), 1560 DMI_MATCH(DMI_SYS_VENDOR, "GOOGLE"),
diff --git a/drivers/pinctrl/intel/pinctrl-merrifield.c b/drivers/pinctrl/intel/pinctrl-merrifield.c
index 4d4ef42a39b5..86c4b3fab7b0 100644
--- a/drivers/pinctrl/intel/pinctrl-merrifield.c
+++ b/drivers/pinctrl/intel/pinctrl-merrifield.c
@@ -343,9 +343,9 @@ static const struct pinctrl_pin_desc mrfld_pins[] = {
343 343
344static const unsigned int mrfld_sdio_pins[] = { 50, 51, 52, 53, 54, 55, 56 }; 344static const unsigned int mrfld_sdio_pins[] = { 50, 51, 52, 53, 54, 55, 56 };
345static const unsigned int mrfld_spi5_pins[] = { 90, 91, 92, 93, 94, 95, 96 }; 345static const unsigned int mrfld_spi5_pins[] = { 90, 91, 92, 93, 94, 95, 96 };
346static const unsigned int mrfld_uart0_pins[] = { 124, 125, 126, 127 }; 346static const unsigned int mrfld_uart0_pins[] = { 115, 116, 117, 118 };
347static const unsigned int mrfld_uart1_pins[] = { 128, 129, 130, 131 }; 347static const unsigned int mrfld_uart1_pins[] = { 119, 120, 121, 122 };
348static const unsigned int mrfld_uart2_pins[] = { 132, 133, 134, 135 }; 348static const unsigned int mrfld_uart2_pins[] = { 123, 124, 125, 126 };
349static const unsigned int mrfld_pwm0_pins[] = { 144 }; 349static const unsigned int mrfld_pwm0_pins[] = { 144 };
350static const unsigned int mrfld_pwm1_pins[] = { 145 }; 350static const unsigned int mrfld_pwm1_pins[] = { 145 };
351static const unsigned int mrfld_pwm2_pins[] = { 132 }; 351static const unsigned int mrfld_pwm2_pins[] = { 132 };
diff --git a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
index f024e25787fc..0c6d7812d6fd 100644
--- a/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
+++ b/drivers/pinctrl/mvebu/pinctrl-armada-37xx.c
@@ -37,7 +37,7 @@
37#define IRQ_STATUS 0x10 37#define IRQ_STATUS 0x10
38#define IRQ_WKUP 0x18 38#define IRQ_WKUP 0x18
39 39
40#define NB_FUNCS 2 40#define NB_FUNCS 3
41#define GPIO_PER_REG 32 41#define GPIO_PER_REG 32
42 42
43/** 43/**
@@ -126,6 +126,16 @@ struct armada_37xx_pinctrl {
126 .funcs = {_func1, "gpio"} \ 126 .funcs = {_func1, "gpio"} \
127 } 127 }
128 128
129#define PIN_GRP_GPIO_3(_name, _start, _nr, _mask, _v1, _v2, _v3, _f1, _f2) \
130 { \
131 .name = _name, \
132 .start_pin = _start, \
133 .npins = _nr, \
134 .reg_mask = _mask, \
135 .val = {_v1, _v2, _v3}, \
136 .funcs = {_f1, _f2, "gpio"} \
137 }
138
129#define PIN_GRP_EXTRA(_name, _start, _nr, _mask, _v1, _v2, _start2, _nr2, \ 139#define PIN_GRP_EXTRA(_name, _start, _nr, _mask, _v1, _v2, _start2, _nr2, \
130 _f1, _f2) \ 140 _f1, _f2) \
131 { \ 141 { \
@@ -171,12 +181,13 @@ static struct armada_37xx_pin_group armada_37xx_sb_groups[] = {
171 PIN_GRP_GPIO("usb32_drvvbus0", 0, 1, BIT(0), "drvbus"), 181 PIN_GRP_GPIO("usb32_drvvbus0", 0, 1, BIT(0), "drvbus"),
172 PIN_GRP_GPIO("usb2_drvvbus1", 1, 1, BIT(1), "drvbus"), 182 PIN_GRP_GPIO("usb2_drvvbus1", 1, 1, BIT(1), "drvbus"),
173 PIN_GRP_GPIO("sdio_sb", 24, 6, BIT(2), "sdio"), 183 PIN_GRP_GPIO("sdio_sb", 24, 6, BIT(2), "sdio"),
174 PIN_GRP_EXTRA("rgmii", 6, 12, BIT(3), 0, BIT(3), 23, 1, "mii", "gpio"), 184 PIN_GRP_GPIO("rgmii", 6, 12, BIT(3), "mii"),
175 PIN_GRP_GPIO("pcie1", 3, 2, BIT(4), "pcie"), 185 PIN_GRP_GPIO("pcie1", 3, 2, BIT(4), "pcie"),
176 PIN_GRP_GPIO("ptp", 20, 3, BIT(5), "ptp"), 186 PIN_GRP_GPIO("ptp", 20, 3, BIT(5), "ptp"),
177 PIN_GRP("ptp_clk", 21, 1, BIT(6), "ptp", "mii"), 187 PIN_GRP("ptp_clk", 21, 1, BIT(6), "ptp", "mii"),
178 PIN_GRP("ptp_trig", 22, 1, BIT(7), "ptp", "mii"), 188 PIN_GRP("ptp_trig", 22, 1, BIT(7), "ptp", "mii"),
179 PIN_GRP("mii_col", 23, 1, BIT(8), "mii", "mii_err"), 189 PIN_GRP_GPIO_3("mii_col", 23, 1, BIT(8) | BIT(14), 0, BIT(8), BIT(14),
190 "mii", "mii_err"),
180}; 191};
181 192
182const struct armada_37xx_pin_data armada_37xx_pin_nb = { 193const struct armada_37xx_pin_data armada_37xx_pin_nb = {
@@ -187,7 +198,7 @@ const struct armada_37xx_pin_data armada_37xx_pin_nb = {
187}; 198};
188 199
189const struct armada_37xx_pin_data armada_37xx_pin_sb = { 200const struct armada_37xx_pin_data armada_37xx_pin_sb = {
190 .nr_pins = 29, 201 .nr_pins = 30,
191 .name = "GPIO2", 202 .name = "GPIO2",
192 .groups = armada_37xx_sb_groups, 203 .groups = armada_37xx_sb_groups,
193 .ngroups = ARRAY_SIZE(armada_37xx_sb_groups), 204 .ngroups = ARRAY_SIZE(armada_37xx_sb_groups),
@@ -208,7 +219,7 @@ static int armada_37xx_get_func_reg(struct armada_37xx_pin_group *grp,
208{ 219{
209 int f; 220 int f;
210 221
211 for (f = 0; f < NB_FUNCS; f++) 222 for (f = 0; (f < NB_FUNCS) && grp->funcs[f]; f++)
212 if (!strcmp(grp->funcs[f], func)) 223 if (!strcmp(grp->funcs[f], func))
213 return f; 224 return f;
214 225
@@ -795,7 +806,7 @@ static int armada_37xx_fill_group(struct armada_37xx_pinctrl *info)
795 for (j = 0; j < grp->extra_npins; j++) 806 for (j = 0; j < grp->extra_npins; j++)
796 grp->pins[i+j] = grp->extra_pin + j; 807 grp->pins[i+j] = grp->extra_pin + j;
797 808
798 for (f = 0; f < NB_FUNCS; f++) { 809 for (f = 0; (f < NB_FUNCS) && grp->funcs[f]; f++) {
799 int ret; 810 int ret;
800 /* check for unique functions and count groups */ 811 /* check for unique functions and count groups */
801 ret = armada_37xx_add_function(info->funcs, &funcsize, 812 ret = armada_37xx_add_function(info->funcs, &funcsize,
@@ -847,7 +858,7 @@ static int armada_37xx_fill_func(struct armada_37xx_pinctrl *info)
847 struct armada_37xx_pin_group *gp = &info->groups[g]; 858 struct armada_37xx_pin_group *gp = &info->groups[g];
848 int f; 859 int f;
849 860
850 for (f = 0; f < NB_FUNCS; f++) { 861 for (f = 0; (f < NB_FUNCS) && gp->funcs[f]; f++) {
851 if (strcmp(gp->funcs[f], name) == 0) { 862 if (strcmp(gp->funcs[f], name) == 0) {
852 *groups = gp->name; 863 *groups = gp->name;
853 groups++; 864 groups++;
diff --git a/drivers/pinctrl/stm32/Kconfig b/drivers/pinctrl/stm32/Kconfig
index 3b8026fca057..7e1fe39a56a5 100644
--- a/drivers/pinctrl/stm32/Kconfig
+++ b/drivers/pinctrl/stm32/Kconfig
@@ -6,29 +6,30 @@ config PINCTRL_STM32
6 select PINMUX 6 select PINMUX
7 select GENERIC_PINCONF 7 select GENERIC_PINCONF
8 select GPIOLIB 8 select GPIOLIB
9 select IRQ_DOMAIN_HIERARCHY
9 select MFD_SYSCON 10 select MFD_SYSCON
10 11
11config PINCTRL_STM32F429 12config PINCTRL_STM32F429
12 bool "STMicroelectronics STM32F429 pin control" if COMPILE_TEST && !MACH_STM32F429 13 bool "STMicroelectronics STM32F429 pin control" if COMPILE_TEST && !MACH_STM32F429
13 depends on OF && IRQ_DOMAIN_HIERARCHY 14 depends on OF
14 default MACH_STM32F429 15 default MACH_STM32F429
15 select PINCTRL_STM32 16 select PINCTRL_STM32
16 17
17config PINCTRL_STM32F469 18config PINCTRL_STM32F469
18 bool "STMicroelectronics STM32F469 pin control" if COMPILE_TEST && !MACH_STM32F469 19 bool "STMicroelectronics STM32F469 pin control" if COMPILE_TEST && !MACH_STM32F469
19 depends on OF && IRQ_DOMAIN_HIERARCHY 20 depends on OF
20 default MACH_STM32F469 21 default MACH_STM32F469
21 select PINCTRL_STM32 22 select PINCTRL_STM32
22 23
23config PINCTRL_STM32F746 24config PINCTRL_STM32F746
24 bool "STMicroelectronics STM32F746 pin control" if COMPILE_TEST && !MACH_STM32F746 25 bool "STMicroelectronics STM32F746 pin control" if COMPILE_TEST && !MACH_STM32F746
25 depends on OF && IRQ_DOMAIN_HIERARCHY 26 depends on OF
26 default MACH_STM32F746 27 default MACH_STM32F746
27 select PINCTRL_STM32 28 select PINCTRL_STM32
28 29
29config PINCTRL_STM32H743 30config PINCTRL_STM32H743
30 bool "STMicroelectronics STM32H743 pin control" if COMPILE_TEST && !MACH_STM32H743 31 bool "STMicroelectronics STM32H743 pin control" if COMPILE_TEST && !MACH_STM32H743
31 depends on OF && IRQ_DOMAIN_HIERARCHY 32 depends on OF
32 default MACH_STM32H743 33 default MACH_STM32H743
33 select PINCTRL_STM32 34 select PINCTRL_STM32
34endif 35endif
diff --git a/drivers/pinctrl/sunxi/pinctrl-sun4i-a10.c b/drivers/pinctrl/sunxi/pinctrl-sun4i-a10.c
index 159580c04b14..47a392bc73c8 100644
--- a/drivers/pinctrl/sunxi/pinctrl-sun4i-a10.c
+++ b/drivers/pinctrl/sunxi/pinctrl-sun4i-a10.c
@@ -918,6 +918,7 @@ static const struct sunxi_desc_pin sun4i_a10_pins[] = {
918 SUNXI_FUNCTION_VARIANT(0x3, "emac", /* ETXD1 */ 918 SUNXI_FUNCTION_VARIANT(0x3, "emac", /* ETXD1 */
919 PINCTRL_SUN7I_A20), 919 PINCTRL_SUN7I_A20),
920 SUNXI_FUNCTION(0x4, "keypad"), /* IN6 */ 920 SUNXI_FUNCTION(0x4, "keypad"), /* IN6 */
921 SUNXI_FUNCTION(0x5, "sim"), /* DET */
921 SUNXI_FUNCTION_IRQ(0x6, 16), /* EINT16 */ 922 SUNXI_FUNCTION_IRQ(0x6, 16), /* EINT16 */
922 SUNXI_FUNCTION(0x7, "csi1")), /* D16 */ 923 SUNXI_FUNCTION(0x7, "csi1")), /* D16 */
923 SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 17), 924 SUNXI_PIN(SUNXI_PINCTRL_PIN(H, 17),
diff --git a/drivers/pinctrl/uniphier/pinctrl-uniphier-pro4.c b/drivers/pinctrl/uniphier/pinctrl-uniphier-pro4.c
index a433a306a2d0..c75e094b2d90 100644
--- a/drivers/pinctrl/uniphier/pinctrl-uniphier-pro4.c
+++ b/drivers/pinctrl/uniphier/pinctrl-uniphier-pro4.c
@@ -1084,7 +1084,7 @@ static const unsigned usb1_pins[] = {182, 183};
1084static const int usb1_muxvals[] = {0, 0}; 1084static const int usb1_muxvals[] = {0, 0};
1085static const unsigned usb2_pins[] = {184, 185}; 1085static const unsigned usb2_pins[] = {184, 185};
1086static const int usb2_muxvals[] = {0, 0}; 1086static const int usb2_muxvals[] = {0, 0};
1087static const unsigned usb3_pins[] = {186, 187}; 1087static const unsigned usb3_pins[] = {187, 188};
1088static const int usb3_muxvals[] = {0, 0}; 1088static const int usb3_muxvals[] = {0, 0};
1089static const unsigned port_range0_pins[] = { 1089static const unsigned port_range0_pins[] = {
1090 300, 301, 302, 303, 304, 305, 306, 307, /* PORT0x */ 1090 300, 301, 302, 303, 304, 305, 306, 307, /* PORT0x */
diff --git a/drivers/pinctrl/zte/pinctrl-zx.c b/drivers/pinctrl/zte/pinctrl-zx.c
index 787e3967bd5c..f828ee340a98 100644
--- a/drivers/pinctrl/zte/pinctrl-zx.c
+++ b/drivers/pinctrl/zte/pinctrl-zx.c
@@ -64,10 +64,8 @@ static int zx_set_mux(struct pinctrl_dev *pctldev, unsigned int func_selector,
64 struct zx_pinctrl_soc_info *info = zpctl->info; 64 struct zx_pinctrl_soc_info *info = zpctl->info;
65 const struct pinctrl_pin_desc *pindesc = info->pins + group_selector; 65 const struct pinctrl_pin_desc *pindesc = info->pins + group_selector;
66 struct zx_pin_data *data = pindesc->drv_data; 66 struct zx_pin_data *data = pindesc->drv_data;
67 struct zx_mux_desc *mux = data->muxes; 67 struct zx_mux_desc *mux;
68 u32 mask = (1 << data->width) - 1; 68 u32 mask, offset, bitpos;
69 u32 offset = data->offset;
70 u32 bitpos = data->bitpos;
71 struct function_desc *func; 69 struct function_desc *func;
72 unsigned long flags; 70 unsigned long flags;
73 u32 val, mval; 71 u32 val, mval;
@@ -76,6 +74,11 @@ static int zx_set_mux(struct pinctrl_dev *pctldev, unsigned int func_selector,
76 if (!data) 74 if (!data)
77 return -EINVAL; 75 return -EINVAL;
78 76
77 mux = data->muxes;
78 mask = (1 << data->width) - 1;
79 offset = data->offset;
80 bitpos = data->bitpos;
81
79 func = pinmux_generic_get_function(pctldev, func_selector); 82 func = pinmux_generic_get_function(pctldev, func_selector);
80 if (!func) 83 if (!func)
81 return -EINVAL; 84 return -EINVAL;
diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig
index b04860703740..80b87954f6dd 100644
--- a/drivers/platform/x86/Kconfig
+++ b/drivers/platform/x86/Kconfig
@@ -675,6 +675,7 @@ config PEAQ_WMI
675 tristate "PEAQ 2-in-1 WMI hotkey driver" 675 tristate "PEAQ 2-in-1 WMI hotkey driver"
676 depends on ACPI_WMI 676 depends on ACPI_WMI
677 depends on INPUT 677 depends on INPUT
678 select INPUT_POLLDEV
678 help 679 help
679 Say Y here if you want to support WMI-based hotkeys on PEAQ 2-in-1s. 680 Say Y here if you want to support WMI-based hotkeys on PEAQ 2-in-1s.
680 681
diff --git a/drivers/platform/x86/dell-wmi.c b/drivers/platform/x86/dell-wmi.c
index f8978464df31..dad8f4afa17c 100644
--- a/drivers/platform/x86/dell-wmi.c
+++ b/drivers/platform/x86/dell-wmi.c
@@ -626,7 +626,7 @@ static void dell_wmi_input_destroy(struct wmi_device *wdev)
626 * WMI Interface Version 8 4 <version> 626 * WMI Interface Version 8 4 <version>
627 * WMI buffer length 12 4 4096 627 * WMI buffer length 12 4 4096
628 */ 628 */
629static int __init dell_wmi_check_descriptor_buffer(void) 629static int dell_wmi_check_descriptor_buffer(void)
630{ 630{
631 struct acpi_buffer out = { ACPI_ALLOCATE_BUFFER, NULL }; 631 struct acpi_buffer out = { ACPI_ALLOCATE_BUFFER, NULL };
632 union acpi_object *obj; 632 union acpi_object *obj;
@@ -717,9 +717,15 @@ static int dell_wmi_events_set_enabled(bool enable)
717 717
718static int dell_wmi_probe(struct wmi_device *wdev) 718static int dell_wmi_probe(struct wmi_device *wdev)
719{ 719{
720 int err;
721
720 struct dell_wmi_priv *priv = devm_kzalloc( 722 struct dell_wmi_priv *priv = devm_kzalloc(
721 &wdev->dev, sizeof(struct dell_wmi_priv), GFP_KERNEL); 723 &wdev->dev, sizeof(struct dell_wmi_priv), GFP_KERNEL);
722 724
725 err = dell_wmi_check_descriptor_buffer();
726 if (err)
727 return err;
728
723 dev_set_drvdata(&wdev->dev, priv); 729 dev_set_drvdata(&wdev->dev, priv);
724 730
725 return dell_wmi_input_setup(wdev); 731 return dell_wmi_input_setup(wdev);
@@ -749,10 +755,6 @@ static int __init dell_wmi_init(void)
749{ 755{
750 int err; 756 int err;
751 757
752 err = dell_wmi_check_descriptor_buffer();
753 if (err)
754 return err;
755
756 dmi_check_system(dell_wmi_smbios_list); 758 dmi_check_system(dell_wmi_smbios_list);
757 759
758 if (wmi_requires_smbios_request) { 760 if (wmi_requires_smbios_request) {
diff --git a/drivers/platform/x86/intel-vbtn.c b/drivers/platform/x86/intel-vbtn.c
index 61f106377661..480926786cb8 100644
--- a/drivers/platform/x86/intel-vbtn.c
+++ b/drivers/platform/x86/intel-vbtn.c
@@ -36,8 +36,8 @@ static const struct acpi_device_id intel_vbtn_ids[] = {
36 36
37/* In theory, these are HID usages. */ 37/* In theory, these are HID usages. */
38static const struct key_entry intel_vbtn_keymap[] = { 38static const struct key_entry intel_vbtn_keymap[] = {
39 { KE_IGNORE, 0xC0, { KEY_POWER } }, /* power key press */ 39 { KE_KEY, 0xC0, { KEY_POWER } }, /* power key press */
40 { KE_KEY, 0xC1, { KEY_POWER } }, /* power key release */ 40 { KE_IGNORE, 0xC1, { KEY_POWER } }, /* power key release */
41 { KE_KEY, 0xC4, { KEY_VOLUMEUP } }, /* volume-up key press */ 41 { KE_KEY, 0xC4, { KEY_VOLUMEUP } }, /* volume-up key press */
42 { KE_IGNORE, 0xC5, { KEY_VOLUMEUP } }, /* volume-up key release */ 42 { KE_IGNORE, 0xC5, { KEY_VOLUMEUP } }, /* volume-up key release */
43 { KE_KEY, 0xC6, { KEY_VOLUMEDOWN } }, /* volume-down key press */ 43 { KE_KEY, 0xC6, { KEY_VOLUMEDOWN } }, /* volume-down key press */
diff --git a/drivers/platform/x86/wmi.c b/drivers/platform/x86/wmi.c
index 1a764e311e11..e32ba575e8d9 100644
--- a/drivers/platform/x86/wmi.c
+++ b/drivers/platform/x86/wmi.c
@@ -1252,12 +1252,12 @@ static int __init acpi_wmi_init(void)
1252 1252
1253 return 0; 1253 return 0;
1254 1254
1255err_unreg_class:
1256 class_unregister(&wmi_bus_class);
1257
1258err_unreg_bus: 1255err_unreg_bus:
1259 bus_unregister(&wmi_bus_type); 1256 bus_unregister(&wmi_bus_type);
1260 1257
1258err_unreg_class:
1259 class_unregister(&wmi_bus_class);
1260
1261 return error; 1261 return error;
1262} 1262}
1263 1263
diff --git a/drivers/ptp/ptp_clock.c b/drivers/ptp/ptp_clock.c
index b77435783ef3..7eacc1c4b3b1 100644
--- a/drivers/ptp/ptp_clock.c
+++ b/drivers/ptp/ptp_clock.c
@@ -28,6 +28,7 @@
28#include <linux/slab.h> 28#include <linux/slab.h>
29#include <linux/syscalls.h> 29#include <linux/syscalls.h>
30#include <linux/uaccess.h> 30#include <linux/uaccess.h>
31#include <uapi/linux/sched/types.h>
31 32
32#include "ptp_private.h" 33#include "ptp_private.h"
33 34
@@ -184,6 +185,19 @@ static void delete_ptp_clock(struct posix_clock *pc)
184 kfree(ptp); 185 kfree(ptp);
185} 186}
186 187
188static void ptp_aux_kworker(struct kthread_work *work)
189{
190 struct ptp_clock *ptp = container_of(work, struct ptp_clock,
191 aux_work.work);
192 struct ptp_clock_info *info = ptp->info;
193 long delay;
194
195 delay = info->do_aux_work(info);
196
197 if (delay >= 0)
198 kthread_queue_delayed_work(ptp->kworker, &ptp->aux_work, delay);
199}
200
187/* public interface */ 201/* public interface */
188 202
189struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info, 203struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info,
@@ -217,6 +231,20 @@ struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info,
217 mutex_init(&ptp->pincfg_mux); 231 mutex_init(&ptp->pincfg_mux);
218 init_waitqueue_head(&ptp->tsev_wq); 232 init_waitqueue_head(&ptp->tsev_wq);
219 233
234 if (ptp->info->do_aux_work) {
235 char *worker_name = kasprintf(GFP_KERNEL, "ptp%d", ptp->index);
236
237 kthread_init_delayed_work(&ptp->aux_work, ptp_aux_kworker);
238 ptp->kworker = kthread_create_worker(0, worker_name ?
239 worker_name : info->name);
240 kfree(worker_name);
241 if (IS_ERR(ptp->kworker)) {
242 err = PTR_ERR(ptp->kworker);
243 pr_err("failed to create ptp aux_worker %d\n", err);
244 goto kworker_err;
245 }
246 }
247
220 err = ptp_populate_pin_groups(ptp); 248 err = ptp_populate_pin_groups(ptp);
221 if (err) 249 if (err)
222 goto no_pin_groups; 250 goto no_pin_groups;
@@ -259,6 +287,9 @@ no_pps:
259no_device: 287no_device:
260 ptp_cleanup_pin_groups(ptp); 288 ptp_cleanup_pin_groups(ptp);
261no_pin_groups: 289no_pin_groups:
290 if (ptp->kworker)
291 kthread_destroy_worker(ptp->kworker);
292kworker_err:
262 mutex_destroy(&ptp->tsevq_mux); 293 mutex_destroy(&ptp->tsevq_mux);
263 mutex_destroy(&ptp->pincfg_mux); 294 mutex_destroy(&ptp->pincfg_mux);
264 ida_simple_remove(&ptp_clocks_map, index); 295 ida_simple_remove(&ptp_clocks_map, index);
@@ -274,6 +305,11 @@ int ptp_clock_unregister(struct ptp_clock *ptp)
274 ptp->defunct = 1; 305 ptp->defunct = 1;
275 wake_up_interruptible(&ptp->tsev_wq); 306 wake_up_interruptible(&ptp->tsev_wq);
276 307
308 if (ptp->kworker) {
309 kthread_cancel_delayed_work_sync(&ptp->aux_work);
310 kthread_destroy_worker(ptp->kworker);
311 }
312
277 /* Release the clock's resources. */ 313 /* Release the clock's resources. */
278 if (ptp->pps_source) 314 if (ptp->pps_source)
279 pps_unregister_source(ptp->pps_source); 315 pps_unregister_source(ptp->pps_source);
@@ -339,6 +375,12 @@ int ptp_find_pin(struct ptp_clock *ptp,
339} 375}
340EXPORT_SYMBOL(ptp_find_pin); 376EXPORT_SYMBOL(ptp_find_pin);
341 377
378int ptp_schedule_worker(struct ptp_clock *ptp, unsigned long delay)
379{
380 return kthread_mod_delayed_work(ptp->kworker, &ptp->aux_work, delay);
381}
382EXPORT_SYMBOL(ptp_schedule_worker);
383
342/* module operations */ 384/* module operations */
343 385
344static void __exit ptp_exit(void) 386static void __exit ptp_exit(void)
diff --git a/drivers/ptp/ptp_private.h b/drivers/ptp/ptp_private.h
index d95888974d0c..b86f1bfecd6f 100644
--- a/drivers/ptp/ptp_private.h
+++ b/drivers/ptp/ptp_private.h
@@ -22,6 +22,7 @@
22 22
23#include <linux/cdev.h> 23#include <linux/cdev.h>
24#include <linux/device.h> 24#include <linux/device.h>
25#include <linux/kthread.h>
25#include <linux/mutex.h> 26#include <linux/mutex.h>
26#include <linux/posix-clock.h> 27#include <linux/posix-clock.h>
27#include <linux/ptp_clock.h> 28#include <linux/ptp_clock.h>
@@ -56,6 +57,8 @@ struct ptp_clock {
56 struct attribute_group pin_attr_group; 57 struct attribute_group pin_attr_group;
57 /* 1st entry is a pointer to the real group, 2nd is NULL terminator */ 58 /* 1st entry is a pointer to the real group, 2nd is NULL terminator */
58 const struct attribute_group *pin_attr_groups[2]; 59 const struct attribute_group *pin_attr_groups[2];
60 struct kthread_worker *kworker;
61 struct kthread_delayed_work aux_work;
59}; 62};
60 63
61/* 64/*
diff --git a/drivers/rtc/rtc-ds1307.c b/drivers/rtc/rtc-ds1307.c
index 4fac49e55d47..4b43aa62fbc7 100644
--- a/drivers/rtc/rtc-ds1307.c
+++ b/drivers/rtc/rtc-ds1307.c
@@ -1301,7 +1301,6 @@ static void ds1307_clks_register(struct ds1307 *ds1307)
1301static const struct regmap_config regmap_config = { 1301static const struct regmap_config regmap_config = {
1302 .reg_bits = 8, 1302 .reg_bits = 8,
1303 .val_bits = 8, 1303 .val_bits = 8,
1304 .max_register = 0x12,
1305}; 1304};
1306 1305
1307static int ds1307_probe(struct i2c_client *client, 1306static int ds1307_probe(struct i2c_client *client,
diff --git a/drivers/s390/cio/chp.c b/drivers/s390/cio/chp.c
index 7e0d4f724dda..432fc40990bd 100644
--- a/drivers/s390/cio/chp.c
+++ b/drivers/s390/cio/chp.c
@@ -559,6 +559,7 @@ static void chp_process_crw(struct crw *crw0, struct crw *crw1,
559 chpid.id = crw0->rsid; 559 chpid.id = crw0->rsid;
560 switch (crw0->erc) { 560 switch (crw0->erc) {
561 case CRW_ERC_IPARM: /* Path has come. */ 561 case CRW_ERC_IPARM: /* Path has come. */
562 case CRW_ERC_INIT:
562 if (!chp_is_registered(chpid)) 563 if (!chp_is_registered(chpid))
563 chp_new(chpid); 564 chp_new(chpid);
564 chsc_chp_online(chpid); 565 chsc_chp_online(chpid);
diff --git a/drivers/s390/net/qeth_l3_main.c b/drivers/s390/net/qeth_l3_main.c
index 8975cd321390..d42e758518ed 100644
--- a/drivers/s390/net/qeth_l3_main.c
+++ b/drivers/s390/net/qeth_l3_main.c
@@ -2512,7 +2512,7 @@ static void qeth_l3_fill_header(struct qeth_card *card, struct qeth_hdr *hdr,
2512 struct rtable *rt = (struct rtable *) dst; 2512 struct rtable *rt = (struct rtable *) dst;
2513 __be32 *pkey = &ip_hdr(skb)->daddr; 2513 __be32 *pkey = &ip_hdr(skb)->daddr;
2514 2514
2515 if (rt->rt_gateway) 2515 if (rt && rt->rt_gateway)
2516 pkey = &rt->rt_gateway; 2516 pkey = &rt->rt_gateway;
2517 2517
2518 /* IPv4 */ 2518 /* IPv4 */
@@ -2523,7 +2523,7 @@ static void qeth_l3_fill_header(struct qeth_card *card, struct qeth_hdr *hdr,
2523 struct rt6_info *rt = (struct rt6_info *) dst; 2523 struct rt6_info *rt = (struct rt6_info *) dst;
2524 struct in6_addr *pkey = &ipv6_hdr(skb)->daddr; 2524 struct in6_addr *pkey = &ipv6_hdr(skb)->daddr;
2525 2525
2526 if (!ipv6_addr_any(&rt->rt6i_gateway)) 2526 if (rt && !ipv6_addr_any(&rt->rt6i_gateway))
2527 pkey = &rt->rt6i_gateway; 2527 pkey = &rt->rt6i_gateway;
2528 2528
2529 /* IPv6 */ 2529 /* IPv6 */
diff --git a/drivers/sbus/char/display7seg.c b/drivers/sbus/char/display7seg.c
index 04efed171c88..f32765d3cbd8 100644
--- a/drivers/sbus/char/display7seg.c
+++ b/drivers/sbus/char/display7seg.c
@@ -212,8 +212,8 @@ static int d7s_probe(struct platform_device *op)
212 212
213 writeb(regs, p->regs); 213 writeb(regs, p->regs);
214 214
215 printk(KERN_INFO PFX "7-Segment Display%s at [%s:0x%llx] %s\n", 215 printk(KERN_INFO PFX "7-Segment Display%pOF at [%s:0x%llx] %s\n",
216 op->dev.of_node->full_name, 216 op->dev.of_node,
217 (regs & D7S_FLIP) ? " (FLIPPED)" : "", 217 (regs & D7S_FLIP) ? " (FLIPPED)" : "",
218 op->resource[0].start, 218 op->resource[0].start,
219 sol_compat ? "in sol_compat mode" : ""); 219 sol_compat ? "in sol_compat mode" : "");
diff --git a/drivers/sbus/char/flash.c b/drivers/sbus/char/flash.c
index 216f923161d1..a610b8d3d11f 100644
--- a/drivers/sbus/char/flash.c
+++ b/drivers/sbus/char/flash.c
@@ -181,8 +181,8 @@ static int flash_probe(struct platform_device *op)
181 } 181 }
182 flash.busy = 0; 182 flash.busy = 0;
183 183
184 printk(KERN_INFO "%s: OBP Flash, RD %lx[%lx] WR %lx[%lx]\n", 184 printk(KERN_INFO "%pOF: OBP Flash, RD %lx[%lx] WR %lx[%lx]\n",
185 op->dev.of_node->full_name, 185 op->dev.of_node,
186 flash.read_base, flash.read_size, 186 flash.read_base, flash.read_size,
187 flash.write_base, flash.write_size); 187 flash.write_base, flash.write_size);
188 188
diff --git a/drivers/sbus/char/uctrl.c b/drivers/sbus/char/uctrl.c
index 57696fc0b482..0a5013350acd 100644
--- a/drivers/sbus/char/uctrl.c
+++ b/drivers/sbus/char/uctrl.c
@@ -379,8 +379,8 @@ static int uctrl_probe(struct platform_device *op)
379 } 379 }
380 380
381 sbus_writel(UCTRL_INTR_RXNE_REQ|UCTRL_INTR_RXNE_MSK, &p->regs->uctrl_intr); 381 sbus_writel(UCTRL_INTR_RXNE_REQ|UCTRL_INTR_RXNE_MSK, &p->regs->uctrl_intr);
382 printk(KERN_INFO "%s: uctrl regs[0x%p] (irq %d)\n", 382 printk(KERN_INFO "%pOF: uctrl regs[0x%p] (irq %d)\n",
383 op->dev.of_node->full_name, p->regs, p->irq); 383 op->dev.of_node, p->regs, p->irq);
384 uctrl_get_event_status(p); 384 uctrl_get_event_status(p);
385 uctrl_get_external_status(p); 385 uctrl_get_external_status(p);
386 386
diff --git a/drivers/scsi/Kconfig b/drivers/scsi/Kconfig
index d384f4f86c26..d145e0d90227 100644
--- a/drivers/scsi/Kconfig
+++ b/drivers/scsi/Kconfig
@@ -47,6 +47,17 @@ config SCSI_NETLINK
47 default n 47 default n
48 depends on NET 48 depends on NET
49 49
50config SCSI_MQ_DEFAULT
51 bool "SCSI: use blk-mq I/O path by default"
52 depends on SCSI
53 ---help---
54 This option enables the new blk-mq based I/O path for SCSI
55 devices by default. With the option the scsi_mod.use_blk_mq
56 module/boot option defaults to Y, without it to N, but it can
57 still be overridden either way.
58
59 If unsure say N.
60
50config SCSI_PROC_FS 61config SCSI_PROC_FS
51 bool "legacy /proc/scsi/ support" 62 bool "legacy /proc/scsi/ support"
52 depends on SCSI && PROC_FS 63 depends on SCSI && PROC_FS
@@ -1230,6 +1241,8 @@ config SCSI_LPFC
1230 tristate "Emulex LightPulse Fibre Channel Support" 1241 tristate "Emulex LightPulse Fibre Channel Support"
1231 depends on PCI && SCSI 1242 depends on PCI && SCSI
1232 depends on SCSI_FC_ATTRS 1243 depends on SCSI_FC_ATTRS
1244 depends on NVME_TARGET_FC || NVME_TARGET_FC=n
1245 depends on NVME_FC || NVME_FC=n
1233 select CRC_T10DIF 1246 select CRC_T10DIF
1234 ---help--- 1247 ---help---
1235 This lpfc driver supports the Emulex LightPulse 1248 This lpfc driver supports the Emulex LightPulse
diff --git a/drivers/scsi/aacraid/aachba.c b/drivers/scsi/aacraid/aachba.c
index 707ee2f5954d..a1a2c71e1626 100644
--- a/drivers/scsi/aacraid/aachba.c
+++ b/drivers/scsi/aacraid/aachba.c
@@ -549,7 +549,9 @@ static void get_container_name_callback(void *context, struct fib * fibptr)
549 if ((le32_to_cpu(get_name_reply->status) == CT_OK) 549 if ((le32_to_cpu(get_name_reply->status) == CT_OK)
550 && (get_name_reply->data[0] != '\0')) { 550 && (get_name_reply->data[0] != '\0')) {
551 char *sp = get_name_reply->data; 551 char *sp = get_name_reply->data;
552 sp[sizeof(((struct aac_get_name_resp *)NULL)->data)] = '\0'; 552 int data_size = FIELD_SIZEOF(struct aac_get_name_resp, data);
553
554 sp[data_size - 1] = '\0';
553 while (*sp == ' ') 555 while (*sp == ' ')
554 ++sp; 556 ++sp;
555 if (*sp) { 557 if (*sp) {
@@ -579,12 +581,15 @@ static void get_container_name_callback(void *context, struct fib * fibptr)
579static int aac_get_container_name(struct scsi_cmnd * scsicmd) 581static int aac_get_container_name(struct scsi_cmnd * scsicmd)
580{ 582{
581 int status; 583 int status;
584 int data_size;
582 struct aac_get_name *dinfo; 585 struct aac_get_name *dinfo;
583 struct fib * cmd_fibcontext; 586 struct fib * cmd_fibcontext;
584 struct aac_dev * dev; 587 struct aac_dev * dev;
585 588
586 dev = (struct aac_dev *)scsicmd->device->host->hostdata; 589 dev = (struct aac_dev *)scsicmd->device->host->hostdata;
587 590
591 data_size = FIELD_SIZEOF(struct aac_get_name_resp, data);
592
588 cmd_fibcontext = aac_fib_alloc_tag(dev, scsicmd); 593 cmd_fibcontext = aac_fib_alloc_tag(dev, scsicmd);
589 594
590 aac_fib_init(cmd_fibcontext); 595 aac_fib_init(cmd_fibcontext);
@@ -593,7 +598,7 @@ static int aac_get_container_name(struct scsi_cmnd * scsicmd)
593 dinfo->command = cpu_to_le32(VM_ContainerConfig); 598 dinfo->command = cpu_to_le32(VM_ContainerConfig);
594 dinfo->type = cpu_to_le32(CT_READ_NAME); 599 dinfo->type = cpu_to_le32(CT_READ_NAME);
595 dinfo->cid = cpu_to_le32(scmd_id(scsicmd)); 600 dinfo->cid = cpu_to_le32(scmd_id(scsicmd));
596 dinfo->count = cpu_to_le32(sizeof(((struct aac_get_name_resp *)NULL)->data)); 601 dinfo->count = cpu_to_le32(data_size - 1);
597 602
598 status = aac_fib_send(ContainerCommand, 603 status = aac_fib_send(ContainerCommand,
599 cmd_fibcontext, 604 cmd_fibcontext,
@@ -3198,10 +3203,11 @@ static int query_disk(struct aac_dev *dev, void __user *arg)
3198 return -EBUSY; 3203 return -EBUSY;
3199 if (copy_from_user(&qd, arg, sizeof (struct aac_query_disk))) 3204 if (copy_from_user(&qd, arg, sizeof (struct aac_query_disk)))
3200 return -EFAULT; 3205 return -EFAULT;
3201 if (qd.cnum == -1) 3206 if (qd.cnum == -1) {
3207 if (qd.id < 0 || qd.id >= dev->maximum_num_containers)
3208 return -EINVAL;
3202 qd.cnum = qd.id; 3209 qd.cnum = qd.id;
3203 else if ((qd.bus == -1) && (qd.id == -1) && (qd.lun == -1)) 3210 } else if ((qd.bus == -1) && (qd.id == -1) && (qd.lun == -1)) {
3204 {
3205 if (qd.cnum < 0 || qd.cnum >= dev->maximum_num_containers) 3211 if (qd.cnum < 0 || qd.cnum >= dev->maximum_num_containers)
3206 return -EINVAL; 3212 return -EINVAL;
3207 qd.instance = dev->scsi_host_ptr->host_no; 3213 qd.instance = dev->scsi_host_ptr->host_no;
diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h
index d31a9bc2ba69..ee2667e20e42 100644
--- a/drivers/scsi/aacraid/aacraid.h
+++ b/drivers/scsi/aacraid/aacraid.h
@@ -2274,7 +2274,7 @@ struct aac_get_name_resp {
2274 __le32 parm3; 2274 __le32 parm3;
2275 __le32 parm4; 2275 __le32 parm4;
2276 __le32 parm5; 2276 __le32 parm5;
2277 u8 data[16]; 2277 u8 data[17];
2278}; 2278};
2279 2279
2280#define CT_CID_TO_32BITS_UID 165 2280#define CT_CID_TO_32BITS_UID 165
diff --git a/drivers/scsi/aic7xxx/Makefile b/drivers/scsi/aic7xxx/Makefile
index 741d81861d17..07b60a780c06 100644
--- a/drivers/scsi/aic7xxx/Makefile
+++ b/drivers/scsi/aic7xxx/Makefile
@@ -55,9 +55,9 @@ aicasm-7xxx-opts-$(CONFIG_AIC7XXX_REG_PRETTY_PRINT) := \
55 55
56ifeq ($(CONFIG_AIC7XXX_BUILD_FIRMWARE),y) 56ifeq ($(CONFIG_AIC7XXX_BUILD_FIRMWARE),y)
57$(obj)/aic7xxx_seq.h: $(src)/aic7xxx.seq $(src)/aic7xxx.reg $(obj)/aicasm/aicasm 57$(obj)/aic7xxx_seq.h: $(src)/aic7xxx.seq $(src)/aic7xxx.reg $(obj)/aicasm/aicasm
58 $(obj)/aicasm/aicasm -I$(src) -r $(obj)/aic7xxx_reg.h \ 58 $(obj)/aicasm/aicasm -I$(srctree)/$(src) -r $(obj)/aic7xxx_reg.h \
59 $(aicasm-7xxx-opts-y) -o $(obj)/aic7xxx_seq.h \ 59 $(aicasm-7xxx-opts-y) -o $(obj)/aic7xxx_seq.h \
60 $(src)/aic7xxx.seq 60 $(srctree)/$(src)/aic7xxx.seq
61 61
62$(aic7xxx-gen-y): $(obj)/aic7xxx_seq.h 62$(aic7xxx-gen-y): $(obj)/aic7xxx_seq.h
63else 63else
@@ -72,14 +72,14 @@ aicasm-79xx-opts-$(CONFIG_AIC79XX_REG_PRETTY_PRINT) := \
72 72
73ifeq ($(CONFIG_AIC79XX_BUILD_FIRMWARE),y) 73ifeq ($(CONFIG_AIC79XX_BUILD_FIRMWARE),y)
74$(obj)/aic79xx_seq.h: $(src)/aic79xx.seq $(src)/aic79xx.reg $(obj)/aicasm/aicasm 74$(obj)/aic79xx_seq.h: $(src)/aic79xx.seq $(src)/aic79xx.reg $(obj)/aicasm/aicasm
75 $(obj)/aicasm/aicasm -I$(src) -r $(obj)/aic79xx_reg.h \ 75 $(obj)/aicasm/aicasm -I$(srctree)/$(src) -r $(obj)/aic79xx_reg.h \
76 $(aicasm-79xx-opts-y) -o $(obj)/aic79xx_seq.h \ 76 $(aicasm-79xx-opts-y) -o $(obj)/aic79xx_seq.h \
77 $(src)/aic79xx.seq 77 $(srctree)/$(src)/aic79xx.seq
78 78
79$(aic79xx-gen-y): $(obj)/aic79xx_seq.h 79$(aic79xx-gen-y): $(obj)/aic79xx_seq.h
80else 80else
81$(obj)/aic79xx_reg_print.c: $(src)/aic79xx_reg_print.c_shipped 81$(obj)/aic79xx_reg_print.c: $(src)/aic79xx_reg_print.c_shipped
82endif 82endif
83 83
84$(obj)/aicasm/aicasm: $(src)/aicasm/*.[chyl] 84$(obj)/aicasm/aicasm: $(srctree)/$(src)/aicasm/*.[chyl]
85 $(MAKE) -C $(src)/aicasm 85 $(MAKE) -C $(srctree)/$(src)/aicasm OUTDIR=$(shell pwd)/$(obj)/aicasm/
diff --git a/drivers/scsi/aic7xxx/aicasm/Makefile b/drivers/scsi/aic7xxx/aicasm/Makefile
index b98c5c1056c3..45e2d49c1fff 100644
--- a/drivers/scsi/aic7xxx/aicasm/Makefile
+++ b/drivers/scsi/aic7xxx/aicasm/Makefile
@@ -1,19 +1,21 @@
1PROG= aicasm 1PROG= aicasm
2 2
3OUTDIR ?= ./
4
3.SUFFIXES= .l .y .c .h 5.SUFFIXES= .l .y .c .h
4 6
5CSRCS= aicasm.c aicasm_symbol.c 7CSRCS= aicasm.c aicasm_symbol.c
6YSRCS= aicasm_gram.y aicasm_macro_gram.y 8YSRCS= aicasm_gram.y aicasm_macro_gram.y
7LSRCS= aicasm_scan.l aicasm_macro_scan.l 9LSRCS= aicasm_scan.l aicasm_macro_scan.l
8 10
9GENHDRS= aicdb.h $(YSRCS:.y=.h) 11GENHDRS= $(addprefix ${OUTDIR}/,aicdb.h $(YSRCS:.y=.h))
10GENSRCS= $(YSRCS:.y=.c) $(LSRCS:.l=.c) 12GENSRCS= $(addprefix ${OUTDIR}/,$(YSRCS:.y=.c) $(LSRCS:.l=.c))
11 13
12SRCS= ${CSRCS} ${GENSRCS} 14SRCS= ${CSRCS} ${GENSRCS}
13LIBS= -ldb 15LIBS= -ldb
14clean-files:= ${GENSRCS} ${GENHDRS} $(YSRCS:.y=.output) $(PROG) 16clean-files:= ${GENSRCS} ${GENHDRS} $(YSRCS:.y=.output) $(PROG)
15# Override default kernel CFLAGS. This is a userland app. 17# Override default kernel CFLAGS. This is a userland app.
16AICASM_CFLAGS:= -I/usr/include -I. 18AICASM_CFLAGS:= -I/usr/include -I. -I$(OUTDIR)
17LEX= flex 19LEX= flex
18YACC= bison 20YACC= bison
19YFLAGS= -d 21YFLAGS= -d
@@ -32,22 +34,25 @@ YFLAGS+= -t -v
32LFLAGS= -d 34LFLAGS= -d
33endif 35endif
34 36
35$(PROG): ${GENHDRS} $(SRCS) 37$(PROG): $(OUTDIR) ${GENHDRS} $(SRCS)
36 $(AICASM_CC) $(AICASM_CFLAGS) $(SRCS) -o $(PROG) $(LIBS) 38 $(AICASM_CC) $(AICASM_CFLAGS) $(SRCS) -o $(OUTDIR)/$(PROG) $(LIBS)
39
40$(OUTDIR):
41 mkdir -p $(OUTDIR)
37 42
38aicdb.h: 43$(OUTDIR)/aicdb.h:
39 @if [ -e "/usr/include/db4/db_185.h" ]; then \ 44 @if [ -e "/usr/include/db4/db_185.h" ]; then \
40 echo "#include <db4/db_185.h>" > aicdb.h; \ 45 echo "#include <db4/db_185.h>" > $@; \
41 elif [ -e "/usr/include/db3/db_185.h" ]; then \ 46 elif [ -e "/usr/include/db3/db_185.h" ]; then \
42 echo "#include <db3/db_185.h>" > aicdb.h; \ 47 echo "#include <db3/db_185.h>" > $@; \
43 elif [ -e "/usr/include/db2/db_185.h" ]; then \ 48 elif [ -e "/usr/include/db2/db_185.h" ]; then \
44 echo "#include <db2/db_185.h>" > aicdb.h; \ 49 echo "#include <db2/db_185.h>" > $@; \
45 elif [ -e "/usr/include/db1/db_185.h" ]; then \ 50 elif [ -e "/usr/include/db1/db_185.h" ]; then \
46 echo "#include <db1/db_185.h>" > aicdb.h; \ 51 echo "#include <db1/db_185.h>" > $@; \
47 elif [ -e "/usr/include/db/db_185.h" ]; then \ 52 elif [ -e "/usr/include/db/db_185.h" ]; then \
48 echo "#include <db/db_185.h>" > aicdb.h; \ 53 echo "#include <db/db_185.h>" > $@; \
49 elif [ -e "/usr/include/db_185.h" ]; then \ 54 elif [ -e "/usr/include/db_185.h" ]; then \
50 echo "#include <db_185.h>" > aicdb.h; \ 55 echo "#include <db_185.h>" > $@; \
51 else \ 56 else \
52 echo "*** Install db development libraries"; \ 57 echo "*** Install db development libraries"; \
53 fi 58 fi
@@ -58,23 +63,23 @@ clean:
58# Create a dependency chain in generated files 63# Create a dependency chain in generated files
59# to avoid concurrent invocations of the single 64# to avoid concurrent invocations of the single
60# rule that builds them all. 65# rule that builds them all.
61aicasm_gram.c: aicasm_gram.h 66$(OUTDIR)/aicasm_gram.c: $(OUTDIR)/aicasm_gram.h
62aicasm_gram.c aicasm_gram.h: aicasm_gram.y 67$(OUTDIR)/aicasm_gram.c $(OUTDIR)/aicasm_gram.h: aicasm_gram.y
63 $(YACC) $(YFLAGS) -b $(<:.y=) $< 68 $(YACC) $(YFLAGS) -b $(<:.y=) $<
64 mv $(<:.y=).tab.c $(<:.y=.c) 69 mv $(<:.y=).tab.c $(OUTDIR)/$(<:.y=.c)
65 mv $(<:.y=).tab.h $(<:.y=.h) 70 mv $(<:.y=).tab.h $(OUTDIR)/$(<:.y=.h)
66 71
67# Create a dependency chain in generated files 72# Create a dependency chain in generated files
68# to avoid concurrent invocations of the single 73# to avoid concurrent invocations of the single
69# rule that builds them all. 74# rule that builds them all.
70aicasm_macro_gram.c: aicasm_macro_gram.h 75$(OUTDIR)/aicasm_macro_gram.c: $(OUTDIR)/aicasm_macro_gram.h
71aicasm_macro_gram.c aicasm_macro_gram.h: aicasm_macro_gram.y 76$(OUTDIR)/aicasm_macro_gram.c $(OUTDIR)/aicasm_macro_gram.h: aicasm_macro_gram.y
72 $(YACC) $(YFLAGS) -b $(<:.y=) -p mm $< 77 $(YACC) $(YFLAGS) -b $(<:.y=) -p mm $<
73 mv $(<:.y=).tab.c $(<:.y=.c) 78 mv $(<:.y=).tab.c $(OUTDIR)/$(<:.y=.c)
74 mv $(<:.y=).tab.h $(<:.y=.h) 79 mv $(<:.y=).tab.h $(OUTDIR)/$(<:.y=.h)
75 80
76aicasm_scan.c: aicasm_scan.l 81$(OUTDIR)/aicasm_scan.c: aicasm_scan.l
77 $(LEX) $(LFLAGS) -o$@ $< 82 $(LEX) $(LFLAGS) -o $@ $<
78 83
79aicasm_macro_scan.c: aicasm_macro_scan.l 84$(OUTDIR)/aicasm_macro_scan.c: aicasm_macro_scan.l
80 $(LEX) $(LFLAGS) -Pmm -o$@ $< 85 $(LEX) $(LFLAGS) -Pmm -o $@ $<
diff --git a/drivers/scsi/bnx2fc/bnx2fc_fcoe.c b/drivers/scsi/bnx2fc/bnx2fc_fcoe.c
index 7dfe709a7138..6844ba361616 100644
--- a/drivers/scsi/bnx2fc/bnx2fc_fcoe.c
+++ b/drivers/scsi/bnx2fc/bnx2fc_fcoe.c
@@ -2624,12 +2624,11 @@ static struct fcoe_transport bnx2fc_transport = {
2624}; 2624};
2625 2625
2626/** 2626/**
2627 * bnx2fc_percpu_thread_create - Create a receive thread for an 2627 * bnx2fc_cpu_online - Create a receive thread for an online CPU
2628 * online CPU
2629 * 2628 *
2630 * @cpu: cpu index for the online cpu 2629 * @cpu: cpu index for the online cpu
2631 */ 2630 */
2632static void bnx2fc_percpu_thread_create(unsigned int cpu) 2631static int bnx2fc_cpu_online(unsigned int cpu)
2633{ 2632{
2634 struct bnx2fc_percpu_s *p; 2633 struct bnx2fc_percpu_s *p;
2635 struct task_struct *thread; 2634 struct task_struct *thread;
@@ -2639,15 +2638,17 @@ static void bnx2fc_percpu_thread_create(unsigned int cpu)
2639 thread = kthread_create_on_node(bnx2fc_percpu_io_thread, 2638 thread = kthread_create_on_node(bnx2fc_percpu_io_thread,
2640 (void *)p, cpu_to_node(cpu), 2639 (void *)p, cpu_to_node(cpu),
2641 "bnx2fc_thread/%d", cpu); 2640 "bnx2fc_thread/%d", cpu);
2641 if (IS_ERR(thread))
2642 return PTR_ERR(thread);
2643
2642 /* bind thread to the cpu */ 2644 /* bind thread to the cpu */
2643 if (likely(!IS_ERR(thread))) { 2645 kthread_bind(thread, cpu);
2644 kthread_bind(thread, cpu); 2646 p->iothread = thread;
2645 p->iothread = thread; 2647 wake_up_process(thread);
2646 wake_up_process(thread); 2648 return 0;
2647 }
2648} 2649}
2649 2650
2650static void bnx2fc_percpu_thread_destroy(unsigned int cpu) 2651static int bnx2fc_cpu_offline(unsigned int cpu)
2651{ 2652{
2652 struct bnx2fc_percpu_s *p; 2653 struct bnx2fc_percpu_s *p;
2653 struct task_struct *thread; 2654 struct task_struct *thread;
@@ -2661,7 +2662,6 @@ static void bnx2fc_percpu_thread_destroy(unsigned int cpu)
2661 thread = p->iothread; 2662 thread = p->iothread;
2662 p->iothread = NULL; 2663 p->iothread = NULL;
2663 2664
2664
2665 /* Free all work in the list */ 2665 /* Free all work in the list */
2666 list_for_each_entry_safe(work, tmp, &p->work_list, list) { 2666 list_for_each_entry_safe(work, tmp, &p->work_list, list) {
2667 list_del_init(&work->list); 2667 list_del_init(&work->list);
@@ -2673,20 +2673,6 @@ static void bnx2fc_percpu_thread_destroy(unsigned int cpu)
2673 2673
2674 if (thread) 2674 if (thread)
2675 kthread_stop(thread); 2675 kthread_stop(thread);
2676}
2677
2678
2679static int bnx2fc_cpu_online(unsigned int cpu)
2680{
2681 printk(PFX "CPU %x online: Create Rx thread\n", cpu);
2682 bnx2fc_percpu_thread_create(cpu);
2683 return 0;
2684}
2685
2686static int bnx2fc_cpu_dead(unsigned int cpu)
2687{
2688 printk(PFX "CPU %x offline: Remove Rx thread\n", cpu);
2689 bnx2fc_percpu_thread_destroy(cpu);
2690 return 0; 2676 return 0;
2691} 2677}
2692 2678
@@ -2761,30 +2747,16 @@ static int __init bnx2fc_mod_init(void)
2761 spin_lock_init(&p->fp_work_lock); 2747 spin_lock_init(&p->fp_work_lock);
2762 } 2748 }
2763 2749
2764 get_online_cpus(); 2750 rc = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "scsi/bnx2fc:online",
2765 2751 bnx2fc_cpu_online, bnx2fc_cpu_offline);
2766 for_each_online_cpu(cpu)
2767 bnx2fc_percpu_thread_create(cpu);
2768
2769 rc = cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN,
2770 "scsi/bnx2fc:online",
2771 bnx2fc_cpu_online, NULL);
2772 if (rc < 0) 2752 if (rc < 0)
2773 goto stop_threads; 2753 goto stop_thread;
2774 bnx2fc_online_state = rc; 2754 bnx2fc_online_state = rc;
2775 2755
2776 cpuhp_setup_state_nocalls(CPUHP_SCSI_BNX2FC_DEAD, "scsi/bnx2fc:dead",
2777 NULL, bnx2fc_cpu_dead);
2778 put_online_cpus();
2779
2780 cnic_register_driver(CNIC_ULP_FCOE, &bnx2fc_cnic_cb); 2756 cnic_register_driver(CNIC_ULP_FCOE, &bnx2fc_cnic_cb);
2781
2782 return 0; 2757 return 0;
2783 2758
2784stop_threads: 2759stop_thread:
2785 for_each_online_cpu(cpu)
2786 bnx2fc_percpu_thread_destroy(cpu);
2787 put_online_cpus();
2788 kthread_stop(l2_thread); 2760 kthread_stop(l2_thread);
2789free_wq: 2761free_wq:
2790 destroy_workqueue(bnx2fc_wq); 2762 destroy_workqueue(bnx2fc_wq);
@@ -2803,7 +2775,6 @@ static void __exit bnx2fc_mod_exit(void)
2803 struct fcoe_percpu_s *bg; 2775 struct fcoe_percpu_s *bg;
2804 struct task_struct *l2_thread; 2776 struct task_struct *l2_thread;
2805 struct sk_buff *skb; 2777 struct sk_buff *skb;
2806 unsigned int cpu = 0;
2807 2778
2808 /* 2779 /*
2809 * NOTE: Since cnic calls register_driver routine rtnl_lock, 2780 * NOTE: Since cnic calls register_driver routine rtnl_lock,
@@ -2844,16 +2815,7 @@ static void __exit bnx2fc_mod_exit(void)
2844 if (l2_thread) 2815 if (l2_thread)
2845 kthread_stop(l2_thread); 2816 kthread_stop(l2_thread);
2846 2817
2847 get_online_cpus(); 2818 cpuhp_remove_state(bnx2fc_online_state);
2848 /* Destroy per cpu threads */
2849 for_each_online_cpu(cpu) {
2850 bnx2fc_percpu_thread_destroy(cpu);
2851 }
2852
2853 cpuhp_remove_state_nocalls(bnx2fc_online_state);
2854 cpuhp_remove_state_nocalls(CPUHP_SCSI_BNX2FC_DEAD);
2855
2856 put_online_cpus();
2857 2819
2858 destroy_workqueue(bnx2fc_wq); 2820 destroy_workqueue(bnx2fc_wq);
2859 /* 2821 /*
diff --git a/drivers/scsi/bnx2fc/bnx2fc_hwi.c b/drivers/scsi/bnx2fc/bnx2fc_hwi.c
index 913c750205ce..26de61d65a4d 100644
--- a/drivers/scsi/bnx2fc/bnx2fc_hwi.c
+++ b/drivers/scsi/bnx2fc/bnx2fc_hwi.c
@@ -1008,6 +1008,28 @@ static struct bnx2fc_work *bnx2fc_alloc_work(struct bnx2fc_rport *tgt, u16 wqe)
1008 return work; 1008 return work;
1009} 1009}
1010 1010
1011/* Pending work request completion */
1012static void bnx2fc_pending_work(struct bnx2fc_rport *tgt, unsigned int wqe)
1013{
1014 unsigned int cpu = wqe % num_possible_cpus();
1015 struct bnx2fc_percpu_s *fps;
1016 struct bnx2fc_work *work;
1017
1018 fps = &per_cpu(bnx2fc_percpu, cpu);
1019 spin_lock_bh(&fps->fp_work_lock);
1020 if (fps->iothread) {
1021 work = bnx2fc_alloc_work(tgt, wqe);
1022 if (work) {
1023 list_add_tail(&work->list, &fps->work_list);
1024 wake_up_process(fps->iothread);
1025 spin_unlock_bh(&fps->fp_work_lock);
1026 return;
1027 }
1028 }
1029 spin_unlock_bh(&fps->fp_work_lock);
1030 bnx2fc_process_cq_compl(tgt, wqe);
1031}
1032
1011int bnx2fc_process_new_cqes(struct bnx2fc_rport *tgt) 1033int bnx2fc_process_new_cqes(struct bnx2fc_rport *tgt)
1012{ 1034{
1013 struct fcoe_cqe *cq; 1035 struct fcoe_cqe *cq;
@@ -1042,28 +1064,7 @@ int bnx2fc_process_new_cqes(struct bnx2fc_rport *tgt)
1042 /* Unsolicited event notification */ 1064 /* Unsolicited event notification */
1043 bnx2fc_process_unsol_compl(tgt, wqe); 1065 bnx2fc_process_unsol_compl(tgt, wqe);
1044 } else { 1066 } else {
1045 /* Pending work request completion */ 1067 bnx2fc_pending_work(tgt, wqe);
1046 struct bnx2fc_work *work = NULL;
1047 struct bnx2fc_percpu_s *fps = NULL;
1048 unsigned int cpu = wqe % num_possible_cpus();
1049
1050 fps = &per_cpu(bnx2fc_percpu, cpu);
1051 spin_lock_bh(&fps->fp_work_lock);
1052 if (unlikely(!fps->iothread))
1053 goto unlock;
1054
1055 work = bnx2fc_alloc_work(tgt, wqe);
1056 if (work)
1057 list_add_tail(&work->list,
1058 &fps->work_list);
1059unlock:
1060 spin_unlock_bh(&fps->fp_work_lock);
1061
1062 /* Pending work request completion */
1063 if (fps->iothread && work)
1064 wake_up_process(fps->iothread);
1065 else
1066 bnx2fc_process_cq_compl(tgt, wqe);
1067 num_free_sqes++; 1068 num_free_sqes++;
1068 } 1069 }
1069 cqe++; 1070 cqe++;
diff --git a/drivers/scsi/bnx2i/bnx2i_init.c b/drivers/scsi/bnx2i/bnx2i_init.c
index 86afc002814c..4ebcda8d9500 100644
--- a/drivers/scsi/bnx2i/bnx2i_init.c
+++ b/drivers/scsi/bnx2i/bnx2i_init.c
@@ -404,12 +404,11 @@ int bnx2i_get_stats(void *handle)
404 404
405 405
406/** 406/**
407 * bnx2i_percpu_thread_create - Create a receive thread for an 407 * bnx2i_cpu_online - Create a receive thread for an online CPU
408 * online CPU
409 * 408 *
410 * @cpu: cpu index for the online cpu 409 * @cpu: cpu index for the online cpu
411 */ 410 */
412static void bnx2i_percpu_thread_create(unsigned int cpu) 411static int bnx2i_cpu_online(unsigned int cpu)
413{ 412{
414 struct bnx2i_percpu_s *p; 413 struct bnx2i_percpu_s *p;
415 struct task_struct *thread; 414 struct task_struct *thread;
@@ -419,16 +418,17 @@ static void bnx2i_percpu_thread_create(unsigned int cpu)
419 thread = kthread_create_on_node(bnx2i_percpu_io_thread, (void *)p, 418 thread = kthread_create_on_node(bnx2i_percpu_io_thread, (void *)p,
420 cpu_to_node(cpu), 419 cpu_to_node(cpu),
421 "bnx2i_thread/%d", cpu); 420 "bnx2i_thread/%d", cpu);
421 if (IS_ERR(thread))
422 return PTR_ERR(thread);
423
422 /* bind thread to the cpu */ 424 /* bind thread to the cpu */
423 if (likely(!IS_ERR(thread))) { 425 kthread_bind(thread, cpu);
424 kthread_bind(thread, cpu); 426 p->iothread = thread;
425 p->iothread = thread; 427 wake_up_process(thread);
426 wake_up_process(thread); 428 return 0;
427 }
428} 429}
429 430
430 431static int bnx2i_cpu_offline(unsigned int cpu)
431static void bnx2i_percpu_thread_destroy(unsigned int cpu)
432{ 432{
433 struct bnx2i_percpu_s *p; 433 struct bnx2i_percpu_s *p;
434 struct task_struct *thread; 434 struct task_struct *thread;
@@ -451,19 +451,6 @@ static void bnx2i_percpu_thread_destroy(unsigned int cpu)
451 spin_unlock_bh(&p->p_work_lock); 451 spin_unlock_bh(&p->p_work_lock);
452 if (thread) 452 if (thread)
453 kthread_stop(thread); 453 kthread_stop(thread);
454}
455
456static int bnx2i_cpu_online(unsigned int cpu)
457{
458 pr_info("bnx2i: CPU %x online: Create Rx thread\n", cpu);
459 bnx2i_percpu_thread_create(cpu);
460 return 0;
461}
462
463static int bnx2i_cpu_dead(unsigned int cpu)
464{
465 pr_info("CPU %x offline: Remove Rx thread\n", cpu);
466 bnx2i_percpu_thread_destroy(cpu);
467 return 0; 454 return 0;
468} 455}
469 456
@@ -511,27 +498,14 @@ static int __init bnx2i_mod_init(void)
511 p->iothread = NULL; 498 p->iothread = NULL;
512 } 499 }
513 500
514 get_online_cpus(); 501 err = cpuhp_setup_state(CPUHP_AP_ONLINE_DYN, "scsi/bnx2i:online",
515 502 bnx2i_cpu_online, bnx2i_cpu_offline);
516 for_each_online_cpu(cpu)
517 bnx2i_percpu_thread_create(cpu);
518
519 err = cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN,
520 "scsi/bnx2i:online",
521 bnx2i_cpu_online, NULL);
522 if (err < 0) 503 if (err < 0)
523 goto remove_threads; 504 goto unreg_driver;
524 bnx2i_online_state = err; 505 bnx2i_online_state = err;
525
526 cpuhp_setup_state_nocalls(CPUHP_SCSI_BNX2I_DEAD, "scsi/bnx2i:dead",
527 NULL, bnx2i_cpu_dead);
528 put_online_cpus();
529 return 0; 506 return 0;
530 507
531remove_threads: 508unreg_driver:
532 for_each_online_cpu(cpu)
533 bnx2i_percpu_thread_destroy(cpu);
534 put_online_cpus();
535 cnic_unregister_driver(CNIC_ULP_ISCSI); 509 cnic_unregister_driver(CNIC_ULP_ISCSI);
536unreg_xport: 510unreg_xport:
537 iscsi_unregister_transport(&bnx2i_iscsi_transport); 511 iscsi_unregister_transport(&bnx2i_iscsi_transport);
@@ -551,7 +525,6 @@ out:
551static void __exit bnx2i_mod_exit(void) 525static void __exit bnx2i_mod_exit(void)
552{ 526{
553 struct bnx2i_hba *hba; 527 struct bnx2i_hba *hba;
554 unsigned cpu = 0;
555 528
556 mutex_lock(&bnx2i_dev_lock); 529 mutex_lock(&bnx2i_dev_lock);
557 while (!list_empty(&adapter_list)) { 530 while (!list_empty(&adapter_list)) {
@@ -569,14 +542,7 @@ static void __exit bnx2i_mod_exit(void)
569 } 542 }
570 mutex_unlock(&bnx2i_dev_lock); 543 mutex_unlock(&bnx2i_dev_lock);
571 544
572 get_online_cpus(); 545 cpuhp_remove_state(bnx2i_online_state);
573
574 for_each_online_cpu(cpu)
575 bnx2i_percpu_thread_destroy(cpu);
576
577 cpuhp_remove_state_nocalls(bnx2i_online_state);
578 cpuhp_remove_state_nocalls(CPUHP_SCSI_BNX2I_DEAD);
579 put_online_cpus();
580 546
581 iscsi_unregister_transport(&bnx2i_iscsi_transport); 547 iscsi_unregister_transport(&bnx2i_iscsi_transport);
582 cnic_unregister_driver(CNIC_ULP_ISCSI); 548 cnic_unregister_driver(CNIC_ULP_ISCSI);
diff --git a/drivers/scsi/csiostor/csio_hw.c b/drivers/scsi/csiostor/csio_hw.c
index 2029ad225121..5be0086142ca 100644
--- a/drivers/scsi/csiostor/csio_hw.c
+++ b/drivers/scsi/csiostor/csio_hw.c
@@ -3845,8 +3845,10 @@ csio_hw_start(struct csio_hw *hw)
3845 3845
3846 if (csio_is_hw_ready(hw)) 3846 if (csio_is_hw_ready(hw))
3847 return 0; 3847 return 0;
3848 else 3848 else if (csio_match_state(hw, csio_hws_uninit))
3849 return -EINVAL; 3849 return -EINVAL;
3850 else
3851 return -ENODEV;
3850} 3852}
3851 3853
3852int 3854int
diff --git a/drivers/scsi/csiostor/csio_init.c b/drivers/scsi/csiostor/csio_init.c
index ea0c31086cc6..dcd074169aa9 100644
--- a/drivers/scsi/csiostor/csio_init.c
+++ b/drivers/scsi/csiostor/csio_init.c
@@ -969,10 +969,14 @@ static int csio_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
969 969
970 pci_set_drvdata(pdev, hw); 970 pci_set_drvdata(pdev, hw);
971 971
972 if (csio_hw_start(hw) != 0) { 972 rv = csio_hw_start(hw);
973 dev_err(&pdev->dev, 973 if (rv) {
974 "Failed to start FW, continuing in debug mode.\n"); 974 if (rv == -EINVAL) {
975 return 0; 975 dev_err(&pdev->dev,
976 "Failed to start FW, continuing in debug mode.\n");
977 return 0;
978 }
979 goto err_lnode_exit;
976 } 980 }
977 981
978 sprintf(hw->fwrev_str, "%u.%u.%u.%u\n", 982 sprintf(hw->fwrev_str, "%u.%u.%u.%u\n",
diff --git a/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c b/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c
index a69a9ac836f5..1d02cf9fe06c 100644
--- a/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c
+++ b/drivers/scsi/cxgbi/cxgb4i/cxgb4i.c
@@ -1635,6 +1635,9 @@ static int init_act_open(struct cxgbi_sock *csk)
1635 goto rel_resource; 1635 goto rel_resource;
1636 } 1636 }
1637 1637
1638 if (!(n->nud_state & NUD_VALID))
1639 neigh_event_send(n, NULL);
1640
1638 csk->atid = cxgb4_alloc_atid(lldi->tids, csk); 1641 csk->atid = cxgb4_alloc_atid(lldi->tids, csk);
1639 if (csk->atid < 0) { 1642 if (csk->atid < 0) {
1640 pr_err("%s, NO atid available.\n", ndev->name); 1643 pr_err("%s, NO atid available.\n", ndev->name);
diff --git a/drivers/scsi/cxgbi/libcxgbi.c b/drivers/scsi/cxgbi/libcxgbi.c
index e4c83b7c96a8..1a4cfa562a60 100644
--- a/drivers/scsi/cxgbi/libcxgbi.c
+++ b/drivers/scsi/cxgbi/libcxgbi.c
@@ -2128,6 +2128,13 @@ void cxgbi_cleanup_task(struct iscsi_task *task)
2128 struct iscsi_tcp_task *tcp_task = task->dd_data; 2128 struct iscsi_tcp_task *tcp_task = task->dd_data;
2129 struct cxgbi_task_data *tdata = iscsi_task_cxgbi_data(task); 2129 struct cxgbi_task_data *tdata = iscsi_task_cxgbi_data(task);
2130 2130
2131 if (!tcp_task || !tdata || (tcp_task->dd_data != tdata)) {
2132 pr_info("task 0x%p,0x%p, tcp_task 0x%p, tdata 0x%p/0x%p.\n",
2133 task, task->sc, tcp_task,
2134 tcp_task ? tcp_task->dd_data : NULL, tdata);
2135 return;
2136 }
2137
2131 log_debug(1 << CXGBI_DBG_ISCSI, 2138 log_debug(1 << CXGBI_DBG_ISCSI,
2132 "task 0x%p, skb 0x%p, itt 0x%x.\n", 2139 "task 0x%p, skb 0x%p, itt 0x%x.\n",
2133 task, tdata->skb, task->hdr_itt); 2140 task, tdata->skb, task->hdr_itt);
diff --git a/drivers/scsi/hpsa.c b/drivers/scsi/hpsa.c
index 8914eab84337..4f7cdb28bd38 100644
--- a/drivers/scsi/hpsa.c
+++ b/drivers/scsi/hpsa.c
@@ -938,7 +938,7 @@ static struct scsi_host_template hpsa_driver_template = {
938#endif 938#endif
939 .sdev_attrs = hpsa_sdev_attrs, 939 .sdev_attrs = hpsa_sdev_attrs,
940 .shost_attrs = hpsa_shost_attrs, 940 .shost_attrs = hpsa_shost_attrs,
941 .max_sectors = 8192, 941 .max_sectors = 1024,
942 .no_write_same = 1, 942 .no_write_same = 1,
943}; 943};
944 944
diff --git a/drivers/scsi/ipr.c b/drivers/scsi/ipr.c
index b0c68d24db01..da5bdbdcce52 100644
--- a/drivers/scsi/ipr.c
+++ b/drivers/scsi/ipr.c
@@ -3351,6 +3351,16 @@ static void ipr_worker_thread(struct work_struct *work)
3351 return; 3351 return;
3352 } 3352 }
3353 3353
3354 if (ioa_cfg->scsi_unblock) {
3355 ioa_cfg->scsi_unblock = 0;
3356 ioa_cfg->scsi_blocked = 0;
3357 spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags);
3358 scsi_unblock_requests(ioa_cfg->host);
3359 spin_lock_irqsave(ioa_cfg->host->host_lock, lock_flags);
3360 if (ioa_cfg->scsi_blocked)
3361 scsi_block_requests(ioa_cfg->host);
3362 }
3363
3354 if (!ioa_cfg->scan_enabled) { 3364 if (!ioa_cfg->scan_enabled) {
3355 spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags); 3365 spin_unlock_irqrestore(ioa_cfg->host->host_lock, lock_flags);
3356 return; 3366 return;
@@ -7211,9 +7221,8 @@ static int ipr_ioa_bringdown_done(struct ipr_cmnd *ipr_cmd)
7211 ENTER; 7221 ENTER;
7212 if (!ioa_cfg->hrrq[IPR_INIT_HRRQ].removing_ioa) { 7222 if (!ioa_cfg->hrrq[IPR_INIT_HRRQ].removing_ioa) {
7213 ipr_trace; 7223 ipr_trace;
7214 spin_unlock_irq(ioa_cfg->host->host_lock); 7224 ioa_cfg->scsi_unblock = 1;
7215 scsi_unblock_requests(ioa_cfg->host); 7225 schedule_work(&ioa_cfg->work_q);
7216 spin_lock_irq(ioa_cfg->host->host_lock);
7217 } 7226 }
7218 7227
7219 ioa_cfg->in_reset_reload = 0; 7228 ioa_cfg->in_reset_reload = 0;
@@ -7287,13 +7296,7 @@ static int ipr_ioa_reset_done(struct ipr_cmnd *ipr_cmd)
7287 list_add_tail(&ipr_cmd->queue, &ipr_cmd->hrrq->hrrq_free_q); 7296 list_add_tail(&ipr_cmd->queue, &ipr_cmd->hrrq->hrrq_free_q);
7288 wake_up_all(&ioa_cfg->reset_wait_q); 7297 wake_up_all(&ioa_cfg->reset_wait_q);
7289 7298
7290 spin_unlock(ioa_cfg->host->host_lock); 7299 ioa_cfg->scsi_unblock = 1;
7291 scsi_unblock_requests(ioa_cfg->host);
7292 spin_lock(ioa_cfg->host->host_lock);
7293
7294 if (!ioa_cfg->hrrq[IPR_INIT_HRRQ].allow_cmds)
7295 scsi_block_requests(ioa_cfg->host);
7296
7297 schedule_work(&ioa_cfg->work_q); 7300 schedule_work(&ioa_cfg->work_q);
7298 LEAVE; 7301 LEAVE;
7299 return IPR_RC_JOB_RETURN; 7302 return IPR_RC_JOB_RETURN;
@@ -9249,8 +9252,11 @@ static void _ipr_initiate_ioa_reset(struct ipr_ioa_cfg *ioa_cfg,
9249 spin_unlock(&ioa_cfg->hrrq[i]._lock); 9252 spin_unlock(&ioa_cfg->hrrq[i]._lock);
9250 } 9253 }
9251 wmb(); 9254 wmb();
9252 if (!ioa_cfg->hrrq[IPR_INIT_HRRQ].removing_ioa) 9255 if (!ioa_cfg->hrrq[IPR_INIT_HRRQ].removing_ioa) {
9256 ioa_cfg->scsi_unblock = 0;
9257 ioa_cfg->scsi_blocked = 1;
9253 scsi_block_requests(ioa_cfg->host); 9258 scsi_block_requests(ioa_cfg->host);
9259 }
9254 9260
9255 ipr_cmd = ipr_get_free_ipr_cmnd(ioa_cfg); 9261 ipr_cmd = ipr_get_free_ipr_cmnd(ioa_cfg);
9256 ioa_cfg->reset_cmd = ipr_cmd; 9262 ioa_cfg->reset_cmd = ipr_cmd;
@@ -9306,9 +9312,8 @@ static void ipr_initiate_ioa_reset(struct ipr_ioa_cfg *ioa_cfg,
9306 wake_up_all(&ioa_cfg->reset_wait_q); 9312 wake_up_all(&ioa_cfg->reset_wait_q);
9307 9313
9308 if (!ioa_cfg->hrrq[IPR_INIT_HRRQ].removing_ioa) { 9314 if (!ioa_cfg->hrrq[IPR_INIT_HRRQ].removing_ioa) {
9309 spin_unlock_irq(ioa_cfg->host->host_lock); 9315 ioa_cfg->scsi_unblock = 1;
9310 scsi_unblock_requests(ioa_cfg->host); 9316 schedule_work(&ioa_cfg->work_q);
9311 spin_lock_irq(ioa_cfg->host->host_lock);
9312 } 9317 }
9313 return; 9318 return;
9314 } else { 9319 } else {
diff --git a/drivers/scsi/ipr.h b/drivers/scsi/ipr.h
index e98a87a65335..c7f0e9e3cd7d 100644
--- a/drivers/scsi/ipr.h
+++ b/drivers/scsi/ipr.h
@@ -1488,6 +1488,8 @@ struct ipr_ioa_cfg {
1488 u8 cfg_locked:1; 1488 u8 cfg_locked:1;
1489 u8 clear_isr:1; 1489 u8 clear_isr:1;
1490 u8 probe_done:1; 1490 u8 probe_done:1;
1491 u8 scsi_unblock:1;
1492 u8 scsi_blocked:1;
1491 1493
1492 u8 revid; 1494 u8 revid;
1493 1495
diff --git a/drivers/scsi/lpfc/lpfc_attr.c b/drivers/scsi/lpfc/lpfc_attr.c
index 4ed48ed38e79..7ee1a94c0b33 100644
--- a/drivers/scsi/lpfc/lpfc_attr.c
+++ b/drivers/scsi/lpfc/lpfc_attr.c
@@ -205,8 +205,10 @@ lpfc_nvme_info_show(struct device *dev, struct device_attribute *attr,
205 atomic_read(&tgtp->xmt_ls_rsp_error)); 205 atomic_read(&tgtp->xmt_ls_rsp_error));
206 206
207 len += snprintf(buf+len, PAGE_SIZE-len, 207 len += snprintf(buf+len, PAGE_SIZE-len,
208 "FCP: Rcv %08x Release %08x Drop %08x\n", 208 "FCP: Rcv %08x Defer %08x Release %08x "
209 "Drop %08x\n",
209 atomic_read(&tgtp->rcv_fcp_cmd_in), 210 atomic_read(&tgtp->rcv_fcp_cmd_in),
211 atomic_read(&tgtp->rcv_fcp_cmd_defer),
210 atomic_read(&tgtp->xmt_fcp_release), 212 atomic_read(&tgtp->xmt_fcp_release),
211 atomic_read(&tgtp->rcv_fcp_cmd_drop)); 213 atomic_read(&tgtp->rcv_fcp_cmd_drop));
212 214
diff --git a/drivers/scsi/lpfc/lpfc_debugfs.c b/drivers/scsi/lpfc/lpfc_debugfs.c
index 5cc8b0f7d885..744f3f395b64 100644
--- a/drivers/scsi/lpfc/lpfc_debugfs.c
+++ b/drivers/scsi/lpfc/lpfc_debugfs.c
@@ -782,8 +782,11 @@ lpfc_debugfs_nvmestat_data(struct lpfc_vport *vport, char *buf, int size)
782 atomic_read(&tgtp->xmt_ls_rsp_error)); 782 atomic_read(&tgtp->xmt_ls_rsp_error));
783 783
784 len += snprintf(buf + len, size - len, 784 len += snprintf(buf + len, size - len,
785 "FCP: Rcv %08x Drop %08x\n", 785 "FCP: Rcv %08x Defer %08x Release %08x "
786 "Drop %08x\n",
786 atomic_read(&tgtp->rcv_fcp_cmd_in), 787 atomic_read(&tgtp->rcv_fcp_cmd_in),
788 atomic_read(&tgtp->rcv_fcp_cmd_defer),
789 atomic_read(&tgtp->xmt_fcp_release),
787 atomic_read(&tgtp->rcv_fcp_cmd_drop)); 790 atomic_read(&tgtp->rcv_fcp_cmd_drop));
788 791
789 if (atomic_read(&tgtp->rcv_fcp_cmd_in) != 792 if (atomic_read(&tgtp->rcv_fcp_cmd_in) !=
diff --git a/drivers/scsi/lpfc/lpfc_nvmet.c b/drivers/scsi/lpfc/lpfc_nvmet.c
index fbeec344c6cc..bbbd0f84160d 100644
--- a/drivers/scsi/lpfc/lpfc_nvmet.c
+++ b/drivers/scsi/lpfc/lpfc_nvmet.c
@@ -841,12 +841,31 @@ lpfc_nvmet_xmt_fcp_release(struct nvmet_fc_target_port *tgtport,
841 lpfc_nvmet_ctxbuf_post(phba, ctxp->ctxbuf); 841 lpfc_nvmet_ctxbuf_post(phba, ctxp->ctxbuf);
842} 842}
843 843
844static void
845lpfc_nvmet_defer_rcv(struct nvmet_fc_target_port *tgtport,
846 struct nvmefc_tgt_fcp_req *rsp)
847{
848 struct lpfc_nvmet_tgtport *tgtp;
849 struct lpfc_nvmet_rcv_ctx *ctxp =
850 container_of(rsp, struct lpfc_nvmet_rcv_ctx, ctx.fcp_req);
851 struct rqb_dmabuf *nvmebuf = ctxp->rqb_buffer;
852 struct lpfc_hba *phba = ctxp->phba;
853
854 lpfc_nvmeio_data(phba, "NVMET DEFERRCV: xri x%x sz %d CPU %02x\n",
855 ctxp->oxid, ctxp->size, smp_processor_id());
856
857 tgtp = phba->targetport->private;
858 atomic_inc(&tgtp->rcv_fcp_cmd_defer);
859 lpfc_rq_buf_free(phba, &nvmebuf->hbuf); /* repost */
860}
861
844static struct nvmet_fc_target_template lpfc_tgttemplate = { 862static struct nvmet_fc_target_template lpfc_tgttemplate = {
845 .targetport_delete = lpfc_nvmet_targetport_delete, 863 .targetport_delete = lpfc_nvmet_targetport_delete,
846 .xmt_ls_rsp = lpfc_nvmet_xmt_ls_rsp, 864 .xmt_ls_rsp = lpfc_nvmet_xmt_ls_rsp,
847 .fcp_op = lpfc_nvmet_xmt_fcp_op, 865 .fcp_op = lpfc_nvmet_xmt_fcp_op,
848 .fcp_abort = lpfc_nvmet_xmt_fcp_abort, 866 .fcp_abort = lpfc_nvmet_xmt_fcp_abort,
849 .fcp_req_release = lpfc_nvmet_xmt_fcp_release, 867 .fcp_req_release = lpfc_nvmet_xmt_fcp_release,
868 .defer_rcv = lpfc_nvmet_defer_rcv,
850 869
851 .max_hw_queues = 1, 870 .max_hw_queues = 1,
852 .max_sgl_segments = LPFC_NVMET_DEFAULT_SEGS, 871 .max_sgl_segments = LPFC_NVMET_DEFAULT_SEGS,
@@ -1504,6 +1523,17 @@ lpfc_nvmet_unsol_fcp_buffer(struct lpfc_hba *phba,
1504 return; 1523 return;
1505 } 1524 }
1506 1525
1526 /* Processing of FCP command is deferred */
1527 if (rc == -EOVERFLOW) {
1528 lpfc_nvmeio_data(phba,
1529 "NVMET RCV BUSY: xri x%x sz %d from %06x\n",
1530 oxid, size, sid);
1531 /* defer reposting rcv buffer till .defer_rcv callback */
1532 ctxp->rqb_buffer = nvmebuf;
1533 atomic_inc(&tgtp->rcv_fcp_cmd_out);
1534 return;
1535 }
1536
1507 atomic_inc(&tgtp->rcv_fcp_cmd_drop); 1537 atomic_inc(&tgtp->rcv_fcp_cmd_drop);
1508 lpfc_printf_log(phba, KERN_ERR, LOG_NVME_IOERR, 1538 lpfc_printf_log(phba, KERN_ERR, LOG_NVME_IOERR,
1509 "6159 FCP Drop IO x%x: err x%x: x%x x%x x%x\n", 1539 "6159 FCP Drop IO x%x: err x%x: x%x x%x x%x\n",
diff --git a/drivers/scsi/lpfc/lpfc_nvmet.h b/drivers/scsi/lpfc/lpfc_nvmet.h
index e675ef17be08..48a76788b003 100644
--- a/drivers/scsi/lpfc/lpfc_nvmet.h
+++ b/drivers/scsi/lpfc/lpfc_nvmet.h
@@ -49,6 +49,7 @@ struct lpfc_nvmet_tgtport {
49 atomic_t rcv_fcp_cmd_in; 49 atomic_t rcv_fcp_cmd_in;
50 atomic_t rcv_fcp_cmd_out; 50 atomic_t rcv_fcp_cmd_out;
51 atomic_t rcv_fcp_cmd_drop; 51 atomic_t rcv_fcp_cmd_drop;
52 atomic_t rcv_fcp_cmd_defer;
52 atomic_t xmt_fcp_release; 53 atomic_t xmt_fcp_release;
53 54
54 /* Stats counters - lpfc_nvmet_xmt_fcp_op */ 55 /* Stats counters - lpfc_nvmet_xmt_fcp_op */
diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c
index 316c3df0c3fd..71c4746341ea 100644
--- a/drivers/scsi/megaraid/megaraid_sas_base.c
+++ b/drivers/scsi/megaraid/megaraid_sas_base.c
@@ -6228,8 +6228,8 @@ static int megasas_probe_one(struct pci_dev *pdev,
6228fail_start_aen: 6228fail_start_aen:
6229fail_io_attach: 6229fail_io_attach:
6230 megasas_mgmt_info.count--; 6230 megasas_mgmt_info.count--;
6231 megasas_mgmt_info.instance[megasas_mgmt_info.max_index] = NULL;
6232 megasas_mgmt_info.max_index--; 6231 megasas_mgmt_info.max_index--;
6232 megasas_mgmt_info.instance[megasas_mgmt_info.max_index] = NULL;
6233 6233
6234 instance->instancet->disable_intr(instance); 6234 instance->instancet->disable_intr(instance);
6235 megasas_destroy_irqs(instance); 6235 megasas_destroy_irqs(instance);
diff --git a/drivers/scsi/megaraid/megaraid_sas_fusion.c b/drivers/scsi/megaraid/megaraid_sas_fusion.c
index f990ab4d45e1..985510628f56 100644
--- a/drivers/scsi/megaraid/megaraid_sas_fusion.c
+++ b/drivers/scsi/megaraid/megaraid_sas_fusion.c
@@ -425,7 +425,7 @@ static int megasas_create_sg_sense_fusion(struct megasas_instance *instance)
425int 425int
426megasas_alloc_cmdlist_fusion(struct megasas_instance *instance) 426megasas_alloc_cmdlist_fusion(struct megasas_instance *instance)
427{ 427{
428 u32 max_mpt_cmd, i; 428 u32 max_mpt_cmd, i, j;
429 struct fusion_context *fusion; 429 struct fusion_context *fusion;
430 430
431 fusion = instance->ctrl_context; 431 fusion = instance->ctrl_context;
@@ -450,11 +450,15 @@ megasas_alloc_cmdlist_fusion(struct megasas_instance *instance)
450 fusion->cmd_list[i] = kzalloc(sizeof(struct megasas_cmd_fusion), 450 fusion->cmd_list[i] = kzalloc(sizeof(struct megasas_cmd_fusion),
451 GFP_KERNEL); 451 GFP_KERNEL);
452 if (!fusion->cmd_list[i]) { 452 if (!fusion->cmd_list[i]) {
453 for (j = 0; j < i; j++)
454 kfree(fusion->cmd_list[j]);
455 kfree(fusion->cmd_list);
453 dev_err(&instance->pdev->dev, 456 dev_err(&instance->pdev->dev,
454 "Failed from %s %d\n", __func__, __LINE__); 457 "Failed from %s %d\n", __func__, __LINE__);
455 return -ENOMEM; 458 return -ENOMEM;
456 } 459 }
457 } 460 }
461
458 return 0; 462 return 0;
459} 463}
460int 464int
diff --git a/drivers/scsi/qedf/qedf.h b/drivers/scsi/qedf/qedf.h
index 4d038926a455..351f06dfc5a0 100644
--- a/drivers/scsi/qedf/qedf.h
+++ b/drivers/scsi/qedf/qedf.h
@@ -528,7 +528,8 @@ struct fip_vlan {
528#define QEDF_WRITE (1 << 0) 528#define QEDF_WRITE (1 << 0)
529#define MAX_FIBRE_LUNS 0xffffffff 529#define MAX_FIBRE_LUNS 0xffffffff
530 530
531#define QEDF_MAX_NUM_CQS 8 531#define MIN_NUM_CPUS_MSIX(x) min_t(u32, x->dev_info.num_cqs, \
532 num_online_cpus())
532 533
533/* 534/*
534 * PCI function probe defines 535 * PCI function probe defines
diff --git a/drivers/scsi/qedf/qedf_main.c b/drivers/scsi/qedf/qedf_main.c
index 7786c97e033f..1d13c9ca517d 100644
--- a/drivers/scsi/qedf/qedf_main.c
+++ b/drivers/scsi/qedf/qedf_main.c
@@ -2760,11 +2760,9 @@ static int qedf_set_fcoe_pf_param(struct qedf_ctx *qedf)
2760 * we allocation is the minimum off: 2760 * we allocation is the minimum off:
2761 * 2761 *
2762 * Number of CPUs 2762 * Number of CPUs
2763 * Number of MSI-X vectors 2763 * Number allocated by qed for our PCI function
2764 * Max number allocated in hardware (QEDF_MAX_NUM_CQS)
2765 */ 2764 */
2766 qedf->num_queues = min((unsigned int)QEDF_MAX_NUM_CQS, 2765 qedf->num_queues = MIN_NUM_CPUS_MSIX(qedf);
2767 num_online_cpus());
2768 2766
2769 QEDF_INFO(&(qedf->dbg_ctx), QEDF_LOG_DISC, "Number of CQs is %d.\n", 2767 QEDF_INFO(&(qedf->dbg_ctx), QEDF_LOG_DISC, "Number of CQs is %d.\n",
2770 qedf->num_queues); 2768 qedf->num_queues);
@@ -2962,6 +2960,13 @@ static int __qedf_probe(struct pci_dev *pdev, int mode)
2962 goto err1; 2960 goto err1;
2963 } 2961 }
2964 2962
2963 /* Learn information crucial for qedf to progress */
2964 rc = qed_ops->fill_dev_info(qedf->cdev, &qedf->dev_info);
2965 if (rc) {
2966 QEDF_ERR(&(qedf->dbg_ctx), "Failed to dev info.\n");
2967 goto err1;
2968 }
2969
2965 /* queue allocation code should come here 2970 /* queue allocation code should come here
2966 * order should be 2971 * order should be
2967 * slowpath_start 2972 * slowpath_start
@@ -2977,13 +2982,6 @@ static int __qedf_probe(struct pci_dev *pdev, int mode)
2977 } 2982 }
2978 qed_ops->common->update_pf_params(qedf->cdev, &qedf->pf_params); 2983 qed_ops->common->update_pf_params(qedf->cdev, &qedf->pf_params);
2979 2984
2980 /* Learn information crucial for qedf to progress */
2981 rc = qed_ops->fill_dev_info(qedf->cdev, &qedf->dev_info);
2982 if (rc) {
2983 QEDF_ERR(&(qedf->dbg_ctx), "Failed to dev info.\n");
2984 goto err1;
2985 }
2986
2987 /* Record BDQ producer doorbell addresses */ 2985 /* Record BDQ producer doorbell addresses */
2988 qedf->bdq_primary_prod = qedf->dev_info.primary_dbq_rq_addr; 2986 qedf->bdq_primary_prod = qedf->dev_info.primary_dbq_rq_addr;
2989 qedf->bdq_secondary_prod = qedf->dev_info.secondary_bdq_rq_addr; 2987 qedf->bdq_secondary_prod = qedf->dev_info.secondary_bdq_rq_addr;
diff --git a/drivers/scsi/qedi/Kconfig b/drivers/scsi/qedi/Kconfig
index 21331453db7b..2ff753ce6e27 100644
--- a/drivers/scsi/qedi/Kconfig
+++ b/drivers/scsi/qedi/Kconfig
@@ -5,6 +5,7 @@ config QEDI
5 select SCSI_ISCSI_ATTRS 5 select SCSI_ISCSI_ATTRS
6 select QED_LL2 6 select QED_LL2
7 select QED_ISCSI 7 select QED_ISCSI
8 select ISCSI_BOOT_SYSFS
8 ---help--- 9 ---help---
9 This driver supports iSCSI offload for the QLogic FastLinQ 10 This driver supports iSCSI offload for the QLogic FastLinQ
10 41000 Series Converged Network Adapters. 11 41000 Series Converged Network Adapters.
diff --git a/drivers/scsi/qedi/qedi_iscsi.c b/drivers/scsi/qedi/qedi_iscsi.c
index 80edd28b635f..37da9a8b43b1 100644
--- a/drivers/scsi/qedi/qedi_iscsi.c
+++ b/drivers/scsi/qedi/qedi_iscsi.c
@@ -824,7 +824,7 @@ qedi_ep_connect(struct Scsi_Host *shost, struct sockaddr *dst_addr,
824 u32 iscsi_cid = QEDI_CID_RESERVED; 824 u32 iscsi_cid = QEDI_CID_RESERVED;
825 u16 len = 0; 825 u16 len = 0;
826 char *buf = NULL; 826 char *buf = NULL;
827 int ret; 827 int ret, tmp;
828 828
829 if (!shost) { 829 if (!shost) {
830 ret = -ENXIO; 830 ret = -ENXIO;
@@ -940,10 +940,10 @@ qedi_ep_connect(struct Scsi_Host *shost, struct sockaddr *dst_addr,
940 940
941ep_rel_conn: 941ep_rel_conn:
942 qedi->ep_tbl[iscsi_cid] = NULL; 942 qedi->ep_tbl[iscsi_cid] = NULL;
943 ret = qedi_ops->release_conn(qedi->cdev, qedi_ep->handle); 943 tmp = qedi_ops->release_conn(qedi->cdev, qedi_ep->handle);
944 if (ret) 944 if (tmp)
945 QEDI_WARN(&qedi->dbg_ctx, "release_conn returned %d\n", 945 QEDI_WARN(&qedi->dbg_ctx, "release_conn returned %d\n",
946 ret); 946 tmp);
947ep_free_sq: 947ep_free_sq:
948 qedi_free_sq(qedi, qedi_ep); 948 qedi_free_sq(qedi, qedi_ep);
949ep_conn_exit: 949ep_conn_exit:
diff --git a/drivers/scsi/qla2xxx/qla_tmpl.c b/drivers/scsi/qla2xxx/qla_tmpl.c
index 33142610882f..b18646d6057f 100644
--- a/drivers/scsi/qla2xxx/qla_tmpl.c
+++ b/drivers/scsi/qla2xxx/qla_tmpl.c
@@ -401,9 +401,6 @@ qla27xx_fwdt_entry_t263(struct scsi_qla_host *vha,
401 for (i = 0; i < vha->hw->max_req_queues; i++) { 401 for (i = 0; i < vha->hw->max_req_queues; i++) {
402 struct req_que *req = vha->hw->req_q_map[i]; 402 struct req_que *req = vha->hw->req_q_map[i];
403 403
404 if (!test_bit(i, vha->hw->req_qid_map))
405 continue;
406
407 if (req || !buf) { 404 if (req || !buf) {
408 length = req ? 405 length = req ?
409 req->length : REQUEST_ENTRY_CNT_24XX; 406 req->length : REQUEST_ENTRY_CNT_24XX;
@@ -418,9 +415,6 @@ qla27xx_fwdt_entry_t263(struct scsi_qla_host *vha,
418 for (i = 0; i < vha->hw->max_rsp_queues; i++) { 415 for (i = 0; i < vha->hw->max_rsp_queues; i++) {
419 struct rsp_que *rsp = vha->hw->rsp_q_map[i]; 416 struct rsp_que *rsp = vha->hw->rsp_q_map[i];
420 417
421 if (!test_bit(i, vha->hw->rsp_qid_map))
422 continue;
423
424 if (rsp || !buf) { 418 if (rsp || !buf) {
425 length = rsp ? 419 length = rsp ?
426 rsp->length : RESPONSE_ENTRY_CNT_MQ; 420 rsp->length : RESPONSE_ENTRY_CNT_MQ;
@@ -660,9 +654,6 @@ qla27xx_fwdt_entry_t274(struct scsi_qla_host *vha,
660 for (i = 0; i < vha->hw->max_req_queues; i++) { 654 for (i = 0; i < vha->hw->max_req_queues; i++) {
661 struct req_que *req = vha->hw->req_q_map[i]; 655 struct req_que *req = vha->hw->req_q_map[i];
662 656
663 if (!test_bit(i, vha->hw->req_qid_map))
664 continue;
665
666 if (req || !buf) { 657 if (req || !buf) {
667 qla27xx_insert16(i, buf, len); 658 qla27xx_insert16(i, buf, len);
668 qla27xx_insert16(1, buf, len); 659 qla27xx_insert16(1, buf, len);
@@ -675,9 +666,6 @@ qla27xx_fwdt_entry_t274(struct scsi_qla_host *vha,
675 for (i = 0; i < vha->hw->max_rsp_queues; i++) { 666 for (i = 0; i < vha->hw->max_rsp_queues; i++) {
676 struct rsp_que *rsp = vha->hw->rsp_q_map[i]; 667 struct rsp_que *rsp = vha->hw->rsp_q_map[i];
677 668
678 if (!test_bit(i, vha->hw->rsp_qid_map))
679 continue;
680
681 if (rsp || !buf) { 669 if (rsp || !buf) {
682 qla27xx_insert16(i, buf, len); 670 qla27xx_insert16(i, buf, len);
683 qla27xx_insert16(1, buf, len); 671 qla27xx_insert16(1, buf, len);
diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
index b20da0d27ad7..3f82ea1b72dc 100644
--- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c
+++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c
@@ -500,7 +500,6 @@ static int tcm_qla2xxx_handle_cmd(scsi_qla_host_t *vha, struct qla_tgt_cmd *cmd,
500static void tcm_qla2xxx_handle_data_work(struct work_struct *work) 500static void tcm_qla2xxx_handle_data_work(struct work_struct *work)
501{ 501{
502 struct qla_tgt_cmd *cmd = container_of(work, struct qla_tgt_cmd, work); 502 struct qla_tgt_cmd *cmd = container_of(work, struct qla_tgt_cmd, work);
503 unsigned long flags;
504 503
505 /* 504 /*
506 * Ensure that the complete FCP WRITE payload has been received. 505 * Ensure that the complete FCP WRITE payload has been received.
@@ -508,17 +507,6 @@ static void tcm_qla2xxx_handle_data_work(struct work_struct *work)
508 */ 507 */
509 cmd->cmd_in_wq = 0; 508 cmd->cmd_in_wq = 0;
510 509
511 spin_lock_irqsave(&cmd->cmd_lock, flags);
512 cmd->data_work = 1;
513 if (cmd->aborted) {
514 cmd->data_work_free = 1;
515 spin_unlock_irqrestore(&cmd->cmd_lock, flags);
516
517 tcm_qla2xxx_free_cmd(cmd);
518 return;
519 }
520 spin_unlock_irqrestore(&cmd->cmd_lock, flags);
521
522 cmd->qpair->tgt_counters.qla_core_ret_ctio++; 510 cmd->qpair->tgt_counters.qla_core_ret_ctio++;
523 if (!cmd->write_data_transferred) { 511 if (!cmd->write_data_transferred) {
524 /* 512 /*
@@ -765,31 +753,13 @@ static void tcm_qla2xxx_queue_tm_rsp(struct se_cmd *se_cmd)
765 qlt_xmit_tm_rsp(mcmd); 753 qlt_xmit_tm_rsp(mcmd);
766} 754}
767 755
768#define DATA_WORK_NOT_FREE(_cmd) (_cmd->data_work && !_cmd->data_work_free)
769static void tcm_qla2xxx_aborted_task(struct se_cmd *se_cmd) 756static void tcm_qla2xxx_aborted_task(struct se_cmd *se_cmd)
770{ 757{
771 struct qla_tgt_cmd *cmd = container_of(se_cmd, 758 struct qla_tgt_cmd *cmd = container_of(se_cmd,
772 struct qla_tgt_cmd, se_cmd); 759 struct qla_tgt_cmd, se_cmd);
773 unsigned long flags;
774 760
775 if (qlt_abort_cmd(cmd)) 761 if (qlt_abort_cmd(cmd))
776 return; 762 return;
777
778 spin_lock_irqsave(&cmd->cmd_lock, flags);
779 if ((cmd->state == QLA_TGT_STATE_NEW)||
780 ((cmd->state == QLA_TGT_STATE_DATA_IN) &&
781 DATA_WORK_NOT_FREE(cmd))) {
782 cmd->data_work_free = 1;
783 spin_unlock_irqrestore(&cmd->cmd_lock, flags);
784 /*
785 * cmd has not reached fw, Use this trigger to free it.
786 */
787 tcm_qla2xxx_free_cmd(cmd);
788 return;
789 }
790 spin_unlock_irqrestore(&cmd->cmd_lock, flags);
791 return;
792
793} 763}
794 764
795static void tcm_qla2xxx_clear_sess_lookup(struct tcm_qla2xxx_lport *, 765static void tcm_qla2xxx_clear_sess_lookup(struct tcm_qla2xxx_lport *,
diff --git a/drivers/scsi/scsi.c b/drivers/scsi/scsi.c
index 3d38c6d463b8..1bf274e3b2b6 100644
--- a/drivers/scsi/scsi.c
+++ b/drivers/scsi/scsi.c
@@ -800,7 +800,11 @@ MODULE_LICENSE("GPL");
800module_param(scsi_logging_level, int, S_IRUGO|S_IWUSR); 800module_param(scsi_logging_level, int, S_IRUGO|S_IWUSR);
801MODULE_PARM_DESC(scsi_logging_level, "a bit mask of logging levels"); 801MODULE_PARM_DESC(scsi_logging_level, "a bit mask of logging levels");
802 802
803#ifdef CONFIG_SCSI_MQ_DEFAULT
803bool scsi_use_blk_mq = true; 804bool scsi_use_blk_mq = true;
805#else
806bool scsi_use_blk_mq = false;
807#endif
804module_param_named(use_blk_mq, scsi_use_blk_mq, bool, S_IWUSR | S_IRUGO); 808module_param_named(use_blk_mq, scsi_use_blk_mq, bool, S_IWUSR | S_IRUGO);
805 809
806static int __init init_scsi(void) 810static int __init init_scsi(void)
diff --git a/drivers/scsi/scsi_transport_fc.c b/drivers/scsi/scsi_transport_fc.c
index 7e24aa30c3b0..892fbd9800d9 100644
--- a/drivers/scsi/scsi_transport_fc.c
+++ b/drivers/scsi/scsi_transport_fc.c
@@ -1286,7 +1286,7 @@ store_fc_vport_delete(struct device *dev, struct device_attribute *attr,
1286 unsigned long flags; 1286 unsigned long flags;
1287 1287
1288 spin_lock_irqsave(shost->host_lock, flags); 1288 spin_lock_irqsave(shost->host_lock, flags);
1289 if (vport->flags & (FC_VPORT_DEL | FC_VPORT_CREATING)) { 1289 if (vport->flags & (FC_VPORT_DEL | FC_VPORT_CREATING | FC_VPORT_DELETING)) {
1290 spin_unlock_irqrestore(shost->host_lock, flags); 1290 spin_unlock_irqrestore(shost->host_lock, flags);
1291 return -EBUSY; 1291 return -EBUSY;
1292 } 1292 }
@@ -2430,8 +2430,10 @@ fc_remove_host(struct Scsi_Host *shost)
2430 spin_lock_irqsave(shost->host_lock, flags); 2430 spin_lock_irqsave(shost->host_lock, flags);
2431 2431
2432 /* Remove any vports */ 2432 /* Remove any vports */
2433 list_for_each_entry_safe(vport, next_vport, &fc_host->vports, peers) 2433 list_for_each_entry_safe(vport, next_vport, &fc_host->vports, peers) {
2434 vport->flags |= FC_VPORT_DELETING;
2434 fc_queue_work(shost, &vport->vport_delete_work); 2435 fc_queue_work(shost, &vport->vport_delete_work);
2436 }
2435 2437
2436 /* Remove any remote ports */ 2438 /* Remove any remote ports */
2437 list_for_each_entry_safe(rport, next_rport, 2439 list_for_each_entry_safe(rport, next_rport,
diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index bea36adeee17..e2647f2d4430 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -1277,6 +1277,9 @@ static void sd_uninit_command(struct scsi_cmnd *SCpnt)
1277{ 1277{
1278 struct request *rq = SCpnt->request; 1278 struct request *rq = SCpnt->request;
1279 1279
1280 if (SCpnt->flags & SCMD_ZONE_WRITE_LOCK)
1281 sd_zbc_write_unlock_zone(SCpnt);
1282
1280 if (rq->rq_flags & RQF_SPECIAL_PAYLOAD) 1283 if (rq->rq_flags & RQF_SPECIAL_PAYLOAD)
1281 __free_page(rq->special_vec.bv_page); 1284 __free_page(rq->special_vec.bv_page);
1282 1285
diff --git a/drivers/scsi/sd_zbc.c b/drivers/scsi/sd_zbc.c
index 96855df9f49d..8aa54779aac1 100644
--- a/drivers/scsi/sd_zbc.c
+++ b/drivers/scsi/sd_zbc.c
@@ -294,6 +294,9 @@ int sd_zbc_write_lock_zone(struct scsi_cmnd *cmd)
294 test_and_set_bit(zno, sdkp->zones_wlock)) 294 test_and_set_bit(zno, sdkp->zones_wlock))
295 return BLKPREP_DEFER; 295 return BLKPREP_DEFER;
296 296
297 WARN_ON_ONCE(cmd->flags & SCMD_ZONE_WRITE_LOCK);
298 cmd->flags |= SCMD_ZONE_WRITE_LOCK;
299
297 return BLKPREP_OK; 300 return BLKPREP_OK;
298} 301}
299 302
@@ -302,9 +305,10 @@ void sd_zbc_write_unlock_zone(struct scsi_cmnd *cmd)
302 struct request *rq = cmd->request; 305 struct request *rq = cmd->request;
303 struct scsi_disk *sdkp = scsi_disk(rq->rq_disk); 306 struct scsi_disk *sdkp = scsi_disk(rq->rq_disk);
304 307
305 if (sdkp->zones_wlock) { 308 if (sdkp->zones_wlock && cmd->flags & SCMD_ZONE_WRITE_LOCK) {
306 unsigned int zno = sd_zbc_zone_no(sdkp, blk_rq_pos(rq)); 309 unsigned int zno = sd_zbc_zone_no(sdkp, blk_rq_pos(rq));
307 WARN_ON_ONCE(!test_bit(zno, sdkp->zones_wlock)); 310 WARN_ON_ONCE(!test_bit(zno, sdkp->zones_wlock));
311 cmd->flags &= ~SCMD_ZONE_WRITE_LOCK;
308 clear_bit_unlock(zno, sdkp->zones_wlock); 312 clear_bit_unlock(zno, sdkp->zones_wlock);
309 smp_mb__after_atomic(); 313 smp_mb__after_atomic();
310 } 314 }
@@ -335,9 +339,6 @@ void sd_zbc_complete(struct scsi_cmnd *cmd,
335 case REQ_OP_WRITE_ZEROES: 339 case REQ_OP_WRITE_ZEROES:
336 case REQ_OP_WRITE_SAME: 340 case REQ_OP_WRITE_SAME:
337 341
338 /* Unlock the zone */
339 sd_zbc_write_unlock_zone(cmd);
340
341 if (result && 342 if (result &&
342 sshdr->sense_key == ILLEGAL_REQUEST && 343 sshdr->sense_key == ILLEGAL_REQUEST &&
343 sshdr->asc == 0x21) 344 sshdr->asc == 0x21)
diff --git a/drivers/scsi/ses.c b/drivers/scsi/ses.c
index f1cdf32d7514..8927f9f54ad9 100644
--- a/drivers/scsi/ses.c
+++ b/drivers/scsi/ses.c
@@ -99,7 +99,7 @@ static int ses_recv_diag(struct scsi_device *sdev, int page_code,
99 99
100 ret = scsi_execute_req(sdev, cmd, DMA_FROM_DEVICE, buf, bufflen, 100 ret = scsi_execute_req(sdev, cmd, DMA_FROM_DEVICE, buf, bufflen,
101 NULL, SES_TIMEOUT, SES_RETRIES, NULL); 101 NULL, SES_TIMEOUT, SES_RETRIES, NULL);
102 if (unlikely(!ret)) 102 if (unlikely(ret))
103 return ret; 103 return ret;
104 104
105 recv_page_code = ((unsigned char *)buf)[0]; 105 recv_page_code = ((unsigned char *)buf)[0];
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
index 1e82d4128a84..d7ff71e0c85c 100644
--- a/drivers/scsi/sg.c
+++ b/drivers/scsi/sg.c
@@ -751,32 +751,6 @@ sg_new_write(Sg_fd *sfp, struct file *file, const char __user *buf,
751 return count; 751 return count;
752} 752}
753 753
754static bool sg_is_valid_dxfer(sg_io_hdr_t *hp)
755{
756 switch (hp->dxfer_direction) {
757 case SG_DXFER_NONE:
758 if (hp->dxferp || hp->dxfer_len > 0)
759 return false;
760 return true;
761 case SG_DXFER_FROM_DEV:
762 if (hp->dxfer_len < 0)
763 return false;
764 return true;
765 case SG_DXFER_TO_DEV:
766 case SG_DXFER_TO_FROM_DEV:
767 if (!hp->dxferp || hp->dxfer_len == 0)
768 return false;
769 return true;
770 case SG_DXFER_UNKNOWN:
771 if ((!hp->dxferp && hp->dxfer_len) ||
772 (hp->dxferp && hp->dxfer_len == 0))
773 return false;
774 return true;
775 default:
776 return false;
777 }
778}
779
780static int 754static int
781sg_common_write(Sg_fd * sfp, Sg_request * srp, 755sg_common_write(Sg_fd * sfp, Sg_request * srp,
782 unsigned char *cmnd, int timeout, int blocking) 756 unsigned char *cmnd, int timeout, int blocking)
@@ -797,7 +771,7 @@ sg_common_write(Sg_fd * sfp, Sg_request * srp,
797 "sg_common_write: scsi opcode=0x%02x, cmd_size=%d\n", 771 "sg_common_write: scsi opcode=0x%02x, cmd_size=%d\n",
798 (int) cmnd[0], (int) hp->cmd_len)); 772 (int) cmnd[0], (int) hp->cmd_len));
799 773
800 if (!sg_is_valid_dxfer(hp)) 774 if (hp->dxfer_len >= SZ_256M)
801 return -EINVAL; 775 return -EINVAL;
802 776
803 k = sg_start_req(srp, cmnd); 777 k = sg_start_req(srp, cmnd);
diff --git a/drivers/scsi/smartpqi/smartpqi.h b/drivers/scsi/smartpqi/smartpqi.h
index 07ec8a8877de..e164ffade38a 100644
--- a/drivers/scsi/smartpqi/smartpqi.h
+++ b/drivers/scsi/smartpqi/smartpqi.h
@@ -690,7 +690,7 @@ struct pqi_config_table_heartbeat {
690 690
691#define PQI_MAX_OUTSTANDING_REQUESTS ((u32)~0) 691#define PQI_MAX_OUTSTANDING_REQUESTS ((u32)~0)
692#define PQI_MAX_OUTSTANDING_REQUESTS_KDUMP 32 692#define PQI_MAX_OUTSTANDING_REQUESTS_KDUMP 32
693#define PQI_MAX_TRANSFER_SIZE (4 * 1024U * 1024U) 693#define PQI_MAX_TRANSFER_SIZE (1024U * 1024U)
694#define PQI_MAX_TRANSFER_SIZE_KDUMP (512 * 1024U) 694#define PQI_MAX_TRANSFER_SIZE_KDUMP (512 * 1024U)
695 695
696#define RAID_MAP_MAX_ENTRIES 1024 696#define RAID_MAP_MAX_ENTRIES 1024
diff --git a/drivers/scsi/st.c b/drivers/scsi/st.c
index 8e5013d9cad4..94e402ed30f6 100644
--- a/drivers/scsi/st.c
+++ b/drivers/scsi/st.c
@@ -4299,11 +4299,11 @@ static int st_probe(struct device *dev)
4299 kref_init(&tpnt->kref); 4299 kref_init(&tpnt->kref);
4300 tpnt->disk = disk; 4300 tpnt->disk = disk;
4301 disk->private_data = &tpnt->driver; 4301 disk->private_data = &tpnt->driver;
4302 disk->queue = SDp->request_queue;
4303 /* SCSI tape doesn't register this gendisk via add_disk(). Manually 4302 /* SCSI tape doesn't register this gendisk via add_disk(). Manually
4304 * take queue reference that release_disk() expects. */ 4303 * take queue reference that release_disk() expects. */
4305 if (!blk_get_queue(disk->queue)) 4304 if (!blk_get_queue(SDp->request_queue))
4306 goto out_put_disk; 4305 goto out_put_disk;
4306 disk->queue = SDp->request_queue;
4307 tpnt->driver = &st_template; 4307 tpnt->driver = &st_template;
4308 4308
4309 tpnt->device = SDp; 4309 tpnt->device = SDp;
diff --git a/drivers/soc/imx/gpcv2.c b/drivers/soc/imx/gpcv2.c
index 3039072911a5..afc7ecc3c187 100644
--- a/drivers/soc/imx/gpcv2.c
+++ b/drivers/soc/imx/gpcv2.c
@@ -200,16 +200,11 @@ static int imx7_pgc_domain_probe(struct platform_device *pdev)
200 200
201 domain->dev = &pdev->dev; 201 domain->dev = &pdev->dev;
202 202
203 ret = pm_genpd_init(&domain->genpd, NULL, true);
204 if (ret) {
205 dev_err(domain->dev, "Failed to init power domain\n");
206 return ret;
207 }
208
209 domain->regulator = devm_regulator_get_optional(domain->dev, "power"); 203 domain->regulator = devm_regulator_get_optional(domain->dev, "power");
210 if (IS_ERR(domain->regulator)) { 204 if (IS_ERR(domain->regulator)) {
211 if (PTR_ERR(domain->regulator) != -ENODEV) { 205 if (PTR_ERR(domain->regulator) != -ENODEV) {
212 dev_err(domain->dev, "Failed to get domain's regulator\n"); 206 if (PTR_ERR(domain->regulator) != -EPROBE_DEFER)
207 dev_err(domain->dev, "Failed to get domain's regulator\n");
213 return PTR_ERR(domain->regulator); 208 return PTR_ERR(domain->regulator);
214 } 209 }
215 } else { 210 } else {
@@ -217,6 +212,12 @@ static int imx7_pgc_domain_probe(struct platform_device *pdev)
217 domain->voltage, domain->voltage); 212 domain->voltage, domain->voltage);
218 } 213 }
219 214
215 ret = pm_genpd_init(&domain->genpd, NULL, true);
216 if (ret) {
217 dev_err(domain->dev, "Failed to init power domain\n");
218 return ret;
219 }
220
220 ret = of_genpd_add_provider_simple(domain->dev->of_node, 221 ret = of_genpd_add_provider_simple(domain->dev->of_node,
221 &domain->genpd); 222 &domain->genpd);
222 if (ret) { 223 if (ret) {
diff --git a/drivers/soc/ti/knav_qmss_queue.c b/drivers/soc/ti/knav_qmss_queue.c
index 279e7c5551dd..39225de9d7f1 100644
--- a/drivers/soc/ti/knav_qmss_queue.c
+++ b/drivers/soc/ti/knav_qmss_queue.c
@@ -745,6 +745,9 @@ void *knav_pool_create(const char *name,
745 bool slot_found; 745 bool slot_found;
746 int ret; 746 int ret;
747 747
748 if (!kdev)
749 return ERR_PTR(-EPROBE_DEFER);
750
748 if (!kdev->dev) 751 if (!kdev->dev)
749 return ERR_PTR(-ENODEV); 752 return ERR_PTR(-ENODEV);
750 753
diff --git a/drivers/soc/ti/ti_sci_pm_domains.c b/drivers/soc/ti/ti_sci_pm_domains.c
index b0b283810e72..de31b9389e2e 100644
--- a/drivers/soc/ti/ti_sci_pm_domains.c
+++ b/drivers/soc/ti/ti_sci_pm_domains.c
@@ -176,6 +176,8 @@ static int ti_sci_pm_domain_probe(struct platform_device *pdev)
176 176
177 ti_sci_pd->dev = dev; 177 ti_sci_pd->dev = dev;
178 178
179 ti_sci_pd->pd.name = "ti_sci_pd";
180
179 ti_sci_pd->pd.attach_dev = ti_sci_pd_attach_dev; 181 ti_sci_pd->pd.attach_dev = ti_sci_pd_attach_dev;
180 ti_sci_pd->pd.detach_dev = ti_sci_pd_detach_dev; 182 ti_sci_pd->pd.detach_dev = ti_sci_pd_detach_dev;
181 183
diff --git a/drivers/soc/zte/Kconfig b/drivers/soc/zte/Kconfig
index 20bde38ce2f9..e9d750c510cd 100644
--- a/drivers/soc/zte/Kconfig
+++ b/drivers/soc/zte/Kconfig
@@ -2,6 +2,7 @@
2# ZTE SoC drivers 2# ZTE SoC drivers
3# 3#
4menuconfig SOC_ZTE 4menuconfig SOC_ZTE
5 depends on ARCH_ZX || COMPILE_TEST
5 bool "ZTE SoC driver support" 6 bool "ZTE SoC driver support"
6 7
7if SOC_ZTE 8if SOC_ZTE
diff --git a/drivers/spmi/spmi-pmic-arb.c b/drivers/spmi/spmi-pmic-arb.c
index 2afe3597982e..f4b7a98a7913 100644
--- a/drivers/spmi/spmi-pmic-arb.c
+++ b/drivers/spmi/spmi-pmic-arb.c
@@ -134,7 +134,6 @@ struct apid_data {
134 * @spmic: SPMI controller object 134 * @spmic: SPMI controller object
135 * @ver_ops: version dependent operations. 135 * @ver_ops: version dependent operations.
136 * @ppid_to_apid in-memory copy of PPID -> channel (APID) mapping table. 136 * @ppid_to_apid in-memory copy of PPID -> channel (APID) mapping table.
137 * v2 only.
138 */ 137 */
139struct spmi_pmic_arb { 138struct spmi_pmic_arb {
140 void __iomem *rd_base; 139 void __iomem *rd_base;
@@ -1016,6 +1015,13 @@ static int spmi_pmic_arb_probe(struct platform_device *pdev)
1016 goto err_put_ctrl; 1015 goto err_put_ctrl;
1017 } 1016 }
1018 1017
1018 pa->ppid_to_apid = devm_kcalloc(&ctrl->dev, PMIC_ARB_MAX_PPID,
1019 sizeof(*pa->ppid_to_apid), GFP_KERNEL);
1020 if (!pa->ppid_to_apid) {
1021 err = -ENOMEM;
1022 goto err_put_ctrl;
1023 }
1024
1019 hw_ver = readl_relaxed(core + PMIC_ARB_VERSION); 1025 hw_ver = readl_relaxed(core + PMIC_ARB_VERSION);
1020 1026
1021 if (hw_ver < PMIC_ARB_VERSION_V2_MIN) { 1027 if (hw_ver < PMIC_ARB_VERSION_V2_MIN) {
@@ -1048,15 +1054,6 @@ static int spmi_pmic_arb_probe(struct platform_device *pdev)
1048 err = PTR_ERR(pa->wr_base); 1054 err = PTR_ERR(pa->wr_base);
1049 goto err_put_ctrl; 1055 goto err_put_ctrl;
1050 } 1056 }
1051
1052 pa->ppid_to_apid = devm_kcalloc(&ctrl->dev,
1053 PMIC_ARB_MAX_PPID,
1054 sizeof(*pa->ppid_to_apid),
1055 GFP_KERNEL);
1056 if (!pa->ppid_to_apid) {
1057 err = -ENOMEM;
1058 goto err_put_ctrl;
1059 }
1060 } 1057 }
1061 1058
1062 dev_info(&ctrl->dev, "PMIC arbiter version %s (0x%x)\n", 1059 dev_info(&ctrl->dev, "PMIC arbiter version %s (0x%x)\n",
diff --git a/drivers/spmi/spmi.c b/drivers/spmi/spmi.c
index 2b9b0941d9eb..6d23226e5f69 100644
--- a/drivers/spmi/spmi.c
+++ b/drivers/spmi/spmi.c
@@ -365,11 +365,23 @@ static int spmi_drv_remove(struct device *dev)
365 return 0; 365 return 0;
366} 366}
367 367
368static int spmi_drv_uevent(struct device *dev, struct kobj_uevent_env *env)
369{
370 int ret;
371
372 ret = of_device_uevent_modalias(dev, env);
373 if (ret != -ENODEV)
374 return ret;
375
376 return 0;
377}
378
368static struct bus_type spmi_bus_type = { 379static struct bus_type spmi_bus_type = {
369 .name = "spmi", 380 .name = "spmi",
370 .match = spmi_device_match, 381 .match = spmi_device_match,
371 .probe = spmi_drv_probe, 382 .probe = spmi_drv_probe,
372 .remove = spmi_drv_remove, 383 .remove = spmi_drv_remove,
384 .uevent = spmi_drv_uevent,
373}; 385};
374 386
375/** 387/**
diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
index 268d4e6ef48a..ef28a1cb64ae 100644
--- a/drivers/staging/Kconfig
+++ b/drivers/staging/Kconfig
@@ -110,4 +110,6 @@ source "drivers/staging/ccree/Kconfig"
110 110
111source "drivers/staging/typec/Kconfig" 111source "drivers/staging/typec/Kconfig"
112 112
113source "drivers/staging/vboxvideo/Kconfig"
114
113endif # STAGING 115endif # STAGING
diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile
index b93e6f5f0f6e..2918580bdb9e 100644
--- a/drivers/staging/Makefile
+++ b/drivers/staging/Makefile
@@ -44,3 +44,4 @@ obj-$(CONFIG_KS7010) += ks7010/
44obj-$(CONFIG_GREYBUS) += greybus/ 44obj-$(CONFIG_GREYBUS) += greybus/
45obj-$(CONFIG_BCM2835_VCHIQ) += vc04_services/ 45obj-$(CONFIG_BCM2835_VCHIQ) += vc04_services/
46obj-$(CONFIG_CRYPTO_DEV_CCREE) += ccree/ 46obj-$(CONFIG_CRYPTO_DEV_CCREE) += ccree/
47obj-$(CONFIG_DRM_VBOXVIDEO) += vboxvideo/
diff --git a/drivers/staging/comedi/comedi_fops.c b/drivers/staging/comedi/comedi_fops.c
index ca11be21f64b..34ca7823255d 100644
--- a/drivers/staging/comedi/comedi_fops.c
+++ b/drivers/staging/comedi/comedi_fops.c
@@ -2396,6 +2396,7 @@ static ssize_t comedi_write(struct file *file, const char __user *buf,
2396 continue; 2396 continue;
2397 } 2397 }
2398 2398
2399 set_current_state(TASK_RUNNING);
2399 wp = async->buf_write_ptr; 2400 wp = async->buf_write_ptr;
2400 n1 = min(n, async->prealloc_bufsz - wp); 2401 n1 = min(n, async->prealloc_bufsz - wp);
2401 n2 = n - n1; 2402 n2 = n - n1;
@@ -2528,6 +2529,8 @@ static ssize_t comedi_read(struct file *file, char __user *buf, size_t nbytes,
2528 } 2529 }
2529 continue; 2530 continue;
2530 } 2531 }
2532
2533 set_current_state(TASK_RUNNING);
2531 rp = async->buf_read_ptr; 2534 rp = async->buf_read_ptr;
2532 n1 = min(n, async->prealloc_bufsz - rp); 2535 n1 = min(n, async->prealloc_bufsz - rp);
2533 n2 = n - n1; 2536 n2 = n - n1;
diff --git a/drivers/staging/comedi/drivers/ni_mio_common.c b/drivers/staging/comedi/drivers/ni_mio_common.c
index b2e382888981..2f7bfc1c59e5 100644
--- a/drivers/staging/comedi/drivers/ni_mio_common.c
+++ b/drivers/staging/comedi/drivers/ni_mio_common.c
@@ -3116,8 +3116,7 @@ static void ni_ao_cmd_set_update(struct comedi_device *dev,
3116 /* following line: 2-1 per STC */ 3116 /* following line: 2-1 per STC */
3117 ni_stc_writel(dev, 1, NISTC_AO_UI_LOADA_REG); 3117 ni_stc_writel(dev, 1, NISTC_AO_UI_LOADA_REG);
3118 ni_stc_writew(dev, NISTC_AO_CMD1_UI_LOAD, NISTC_AO_CMD1_REG); 3118 ni_stc_writew(dev, NISTC_AO_CMD1_UI_LOAD, NISTC_AO_CMD1_REG);
3119 /* following line: N-1 per STC */ 3119 ni_stc_writel(dev, trigvar, NISTC_AO_UI_LOADA_REG);
3120 ni_stc_writel(dev, trigvar - 1, NISTC_AO_UI_LOADA_REG);
3121 } else { /* TRIG_EXT */ 3120 } else { /* TRIG_EXT */
3122 /* FIXME: assert scan_begin_arg != 0, ret failure otherwise */ 3121 /* FIXME: assert scan_begin_arg != 0, ret failure otherwise */
3123 devpriv->ao_cmd2 |= NISTC_AO_CMD2_BC_GATE_ENA; 3122 devpriv->ao_cmd2 |= NISTC_AO_CMD2_BC_GATE_ENA;
diff --git a/drivers/staging/iio/resolver/ad2s1210.c b/drivers/staging/iio/resolver/ad2s1210.c
index a6a8393d6664..3e00df74b18c 100644
--- a/drivers/staging/iio/resolver/ad2s1210.c
+++ b/drivers/staging/iio/resolver/ad2s1210.c
@@ -472,7 +472,7 @@ static int ad2s1210_read_raw(struct iio_dev *indio_dev,
472 long m) 472 long m)
473{ 473{
474 struct ad2s1210_state *st = iio_priv(indio_dev); 474 struct ad2s1210_state *st = iio_priv(indio_dev);
475 bool negative; 475 u16 negative;
476 int ret = 0; 476 int ret = 0;
477 u16 pos; 477 u16 pos;
478 s16 vel; 478 s16 vel;
diff --git a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c
index 85b242ec5f9b..8fc191d99927 100644
--- a/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c
+++ b/drivers/staging/lustre/lnet/klnds/o2iblnd/o2iblnd_cb.c
@@ -1640,8 +1640,13 @@ kiblnd_send(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg)
1640 ibmsg = tx->tx_msg; 1640 ibmsg = tx->tx_msg;
1641 ibmsg->ibm_u.immediate.ibim_hdr = *hdr; 1641 ibmsg->ibm_u.immediate.ibim_hdr = *hdr;
1642 1642
1643 copy_from_iter(&ibmsg->ibm_u.immediate.ibim_payload, IBLND_MSG_SIZE, 1643 rc = copy_from_iter(&ibmsg->ibm_u.immediate.ibim_payload, payload_nob,
1644 &from); 1644 &from);
1645 if (rc != payload_nob) {
1646 kiblnd_pool_free_node(&tx->tx_pool->tpo_pool, &tx->tx_list);
1647 return -EFAULT;
1648 }
1649
1645 nob = offsetof(struct kib_immediate_msg, ibim_payload[payload_nob]); 1650 nob = offsetof(struct kib_immediate_msg, ibim_payload[payload_nob]);
1646 kiblnd_init_tx_msg(ni, tx, IBLND_MSG_IMMEDIATE, nob); 1651 kiblnd_init_tx_msg(ni, tx, IBLND_MSG_IMMEDIATE, nob);
1647 1652
@@ -1741,8 +1746,14 @@ kiblnd_recv(struct lnet_ni *ni, void *private, struct lnet_msg *lntmsg,
1741 break; 1746 break;
1742 } 1747 }
1743 1748
1744 copy_to_iter(&rxmsg->ibm_u.immediate.ibim_payload, 1749 rc = copy_to_iter(&rxmsg->ibm_u.immediate.ibim_payload, rlen,
1745 IBLND_MSG_SIZE, to); 1750 to);
1751 if (rc != rlen) {
1752 rc = -EFAULT;
1753 break;
1754 }
1755
1756 rc = 0;
1746 lnet_finalize(ni, lntmsg, 0); 1757 lnet_finalize(ni, lntmsg, 0);
1747 break; 1758 break;
1748 1759
diff --git a/drivers/staging/media/atomisp/i2c/ap1302.h b/drivers/staging/media/atomisp/i2c/ap1302.h
index 9341232c580d..4d0b181a9671 100644
--- a/drivers/staging/media/atomisp/i2c/ap1302.h
+++ b/drivers/staging/media/atomisp/i2c/ap1302.h
@@ -158,8 +158,8 @@ struct ap1302_res_struct {
158}; 158};
159 159
160struct ap1302_context_res { 160struct ap1302_context_res {
161 s32 res_num; 161 u32 res_num;
162 s32 cur_res; 162 u32 cur_res;
163 struct ap1302_res_struct *res_table; 163 struct ap1302_res_struct *res_table;
164}; 164};
165 165
diff --git a/drivers/staging/media/atomisp/i2c/gc0310.h b/drivers/staging/media/atomisp/i2c/gc0310.h
index f31eb277f542..7d8a0aeecb6c 100644
--- a/drivers/staging/media/atomisp/i2c/gc0310.h
+++ b/drivers/staging/media/atomisp/i2c/gc0310.h
@@ -454,6 +454,6 @@ struct gc0310_resolution gc0310_res_video[] = {
454#define N_RES_VIDEO (ARRAY_SIZE(gc0310_res_video)) 454#define N_RES_VIDEO (ARRAY_SIZE(gc0310_res_video))
455 455
456static struct gc0310_resolution *gc0310_res = gc0310_res_preview; 456static struct gc0310_resolution *gc0310_res = gc0310_res_preview;
457static int N_RES = N_RES_PREVIEW; 457static unsigned long N_RES = N_RES_PREVIEW;
458#endif 458#endif
459 459
diff --git a/drivers/staging/media/atomisp/i2c/gc2235.h b/drivers/staging/media/atomisp/i2c/gc2235.h
index ccbc757045a5..7c3d994180cc 100644
--- a/drivers/staging/media/atomisp/i2c/gc2235.h
+++ b/drivers/staging/media/atomisp/i2c/gc2235.h
@@ -668,5 +668,5 @@ struct gc2235_resolution gc2235_res_video[] = {
668#define N_RES_VIDEO (ARRAY_SIZE(gc2235_res_video)) 668#define N_RES_VIDEO (ARRAY_SIZE(gc2235_res_video))
669 669
670static struct gc2235_resolution *gc2235_res = gc2235_res_preview; 670static struct gc2235_resolution *gc2235_res = gc2235_res_preview;
671static int N_RES = N_RES_PREVIEW; 671static unsigned long N_RES = N_RES_PREVIEW;
672#endif 672#endif
diff --git a/drivers/staging/media/atomisp/i2c/imx/imx.h b/drivers/staging/media/atomisp/i2c/imx/imx.h
index 36b3f3a5a41f..41b4133ca995 100644
--- a/drivers/staging/media/atomisp/i2c/imx/imx.h
+++ b/drivers/staging/media/atomisp/i2c/imx/imx.h
@@ -480,7 +480,7 @@ struct imx_device {
480 struct imx_vcm *vcm_driver; 480 struct imx_vcm *vcm_driver;
481 struct imx_otp *otp_driver; 481 struct imx_otp *otp_driver;
482 const struct imx_resolution *curr_res_table; 482 const struct imx_resolution *curr_res_table;
483 int entries_curr_table; 483 unsigned long entries_curr_table;
484 const struct firmware *fw; 484 const struct firmware *fw;
485 struct imx_reg_addr *reg_addr; 485 struct imx_reg_addr *reg_addr;
486 const struct imx_reg *param_hold; 486 const struct imx_reg *param_hold;
diff --git a/drivers/staging/media/atomisp/i2c/ov2680.h b/drivers/staging/media/atomisp/i2c/ov2680.h
index 944fe8e3bcbf..ab8907e6c9ef 100644
--- a/drivers/staging/media/atomisp/i2c/ov2680.h
+++ b/drivers/staging/media/atomisp/i2c/ov2680.h
@@ -934,7 +934,6 @@ static struct ov2680_resolution ov2680_res_video[] = {
934#define N_RES_VIDEO (ARRAY_SIZE(ov2680_res_video)) 934#define N_RES_VIDEO (ARRAY_SIZE(ov2680_res_video))
935 935
936static struct ov2680_resolution *ov2680_res = ov2680_res_preview; 936static struct ov2680_resolution *ov2680_res = ov2680_res_preview;
937static int N_RES = N_RES_PREVIEW; 937static unsigned long N_RES = N_RES_PREVIEW;
938
939 938
940#endif 939#endif
diff --git a/drivers/staging/media/atomisp/i2c/ov2722.h b/drivers/staging/media/atomisp/i2c/ov2722.h
index b0d40965d89e..73ecb1679718 100644
--- a/drivers/staging/media/atomisp/i2c/ov2722.h
+++ b/drivers/staging/media/atomisp/i2c/ov2722.h
@@ -1263,5 +1263,5 @@ struct ov2722_resolution ov2722_res_video[] = {
1263#define N_RES_VIDEO (ARRAY_SIZE(ov2722_res_video)) 1263#define N_RES_VIDEO (ARRAY_SIZE(ov2722_res_video))
1264 1264
1265static struct ov2722_resolution *ov2722_res = ov2722_res_preview; 1265static struct ov2722_resolution *ov2722_res = ov2722_res_preview;
1266static int N_RES = N_RES_PREVIEW; 1266static unsigned long N_RES = N_RES_PREVIEW;
1267#endif 1267#endif
diff --git a/drivers/staging/media/atomisp/i2c/ov5693/ov5693.h b/drivers/staging/media/atomisp/i2c/ov5693/ov5693.h
index d88ac1777d86..8c2e6794463b 100644
--- a/drivers/staging/media/atomisp/i2c/ov5693/ov5693.h
+++ b/drivers/staging/media/atomisp/i2c/ov5693/ov5693.h
@@ -1377,5 +1377,5 @@ struct ov5693_resolution ov5693_res_video[] = {
1377#define N_RES_VIDEO (ARRAY_SIZE(ov5693_res_video)) 1377#define N_RES_VIDEO (ARRAY_SIZE(ov5693_res_video))
1378 1378
1379static struct ov5693_resolution *ov5693_res = ov5693_res_preview; 1379static struct ov5693_resolution *ov5693_res = ov5693_res_preview;
1380static int N_RES = N_RES_PREVIEW; 1380static unsigned long N_RES = N_RES_PREVIEW;
1381#endif 1381#endif
diff --git a/drivers/staging/media/atomisp/i2c/ov8858.h b/drivers/staging/media/atomisp/i2c/ov8858.h
index 9be6a0e63861..d3fde200c013 100644
--- a/drivers/staging/media/atomisp/i2c/ov8858.h
+++ b/drivers/staging/media/atomisp/i2c/ov8858.h
@@ -266,7 +266,7 @@ struct ov8858_device {
266 const struct ov8858_reg *regs; 266 const struct ov8858_reg *regs;
267 struct ov8858_vcm *vcm_driver; 267 struct ov8858_vcm *vcm_driver;
268 const struct ov8858_resolution *curr_res_table; 268 const struct ov8858_resolution *curr_res_table;
269 int entries_curr_table; 269 unsigned long entries_curr_table;
270 270
271 struct v4l2_ctrl_handler ctrl_handler; 271 struct v4l2_ctrl_handler ctrl_handler;
272 struct v4l2_ctrl *run_mode; 272 struct v4l2_ctrl *run_mode;
diff --git a/drivers/staging/media/atomisp/i2c/ov8858_btns.h b/drivers/staging/media/atomisp/i2c/ov8858_btns.h
index 09e3cdc1a394..f9a3cf8fbf1a 100644
--- a/drivers/staging/media/atomisp/i2c/ov8858_btns.h
+++ b/drivers/staging/media/atomisp/i2c/ov8858_btns.h
@@ -266,7 +266,7 @@ struct ov8858_device {
266 const struct ov8858_reg *regs; 266 const struct ov8858_reg *regs;
267 struct ov8858_vcm *vcm_driver; 267 struct ov8858_vcm *vcm_driver;
268 const struct ov8858_resolution *curr_res_table; 268 const struct ov8858_resolution *curr_res_table;
269 int entries_curr_table; 269 unsigned long entries_curr_table;
270 270
271 struct v4l2_ctrl_handler ctrl_handler; 271 struct v4l2_ctrl_handler ctrl_handler;
272 struct v4l2_ctrl *run_mode; 272 struct v4l2_ctrl *run_mode;
diff --git a/drivers/staging/media/atomisp/pci/atomisp2/Makefile b/drivers/staging/media/atomisp/pci/atomisp2/Makefile
index 726eaa293c55..2bd98f0667ec 100644
--- a/drivers/staging/media/atomisp/pci/atomisp2/Makefile
+++ b/drivers/staging/media/atomisp/pci/atomisp2/Makefile
@@ -354,7 +354,9 @@ ccflags-y += $(INCLUDES) $(DEFINES) -fno-common
354 354
355# HACK! While this driver is in bad shape, don't enable several warnings 355# HACK! While this driver is in bad shape, don't enable several warnings
356# that would be otherwise enabled with W=1 356# that would be otherwise enabled with W=1
357ccflags-y += -Wno-unused-const-variable -Wno-missing-prototypes \ 357ccflags-y += $(call cc-disable-warning, implicit-fallthrough)
358 -Wno-unused-but-set-variable -Wno-missing-declarations \ 358ccflags-y += $(call cc-disable-warning, missing-prototypes)
359 -Wno-suggest-attribute=format -Wno-missing-prototypes \ 359ccflags-y += $(call cc-disable-warning, missing-declarations)
360 -Wno-implicit-fallthrough 360ccflags-y += $(call cc-disable-warning, suggest-attribute=format)
361ccflags-y += $(call cc-disable-warning, unused-const-variable)
362ccflags-y += $(call cc-disable-warning, unused-but-set-variable)
diff --git a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_internal.h b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_internal.h
index d3667132851b..c8e0c4fe3717 100644
--- a/drivers/staging/media/atomisp/pci/atomisp2/atomisp_internal.h
+++ b/drivers/staging/media/atomisp/pci/atomisp2/atomisp_internal.h
@@ -275,7 +275,7 @@ struct atomisp_device {
275 */ 275 */
276 struct mutex streamoff_mutex; 276 struct mutex streamoff_mutex;
277 277
278 int input_cnt; 278 unsigned int input_cnt;
279 struct atomisp_input_subdev inputs[ATOM_ISP_MAX_INPUTS]; 279 struct atomisp_input_subdev inputs[ATOM_ISP_MAX_INPUTS];
280 struct v4l2_subdev *flash; 280 struct v4l2_subdev *flash;
281 struct v4l2_subdev *motor; 281 struct v4l2_subdev *motor;
diff --git a/drivers/staging/media/cxd2099/cxd2099.c b/drivers/staging/media/cxd2099/cxd2099.c
index 370ecb959543..f28916ea69f1 100644
--- a/drivers/staging/media/cxd2099/cxd2099.c
+++ b/drivers/staging/media/cxd2099/cxd2099.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * cxd2099.c: Driver for the CXD2099AR Common Interface Controller 2 * cxd2099.c: Driver for the CXD2099AR Common Interface Controller
3 * 3 *
4 * Copyright (C) 2010-2011 Digital Devices GmbH 4 * Copyright (C) 2010-2013 Digital Devices GmbH
5 * 5 *
6 * 6 *
7 * This program is free software; you can redistribute it and/or 7 * This program is free software; you can redistribute it and/or
@@ -33,7 +33,10 @@
33 33
34#include "cxd2099.h" 34#include "cxd2099.h"
35 35
36#define MAX_BUFFER_SIZE 248 36/* comment this line to deactivate the cxd2099ar buffer mode */
37#define BUFFER_MODE 1
38
39static int read_data(struct dvb_ca_en50221 *ca, int slot, u8 *ebuf, int ecount);
37 40
38struct cxd { 41struct cxd {
39 struct dvb_ca_en50221 en; 42 struct dvb_ca_en50221 en;
@@ -48,6 +51,7 @@ struct cxd {
48 int mode; 51 int mode;
49 int ready; 52 int ready;
50 int dr; 53 int dr;
54 int write_busy;
51 int slot_stat; 55 int slot_stat;
52 56
53 u8 amem[1024]; 57 u8 amem[1024];
@@ -55,6 +59,9 @@ struct cxd {
55 59
56 int cammode; 60 int cammode;
57 struct mutex lock; 61 struct mutex lock;
62
63 u8 rbuf[1028];
64 u8 wbuf[1028];
58}; 65};
59 66
60static int i2c_write_reg(struct i2c_adapter *adapter, u8 adr, 67static int i2c_write_reg(struct i2c_adapter *adapter, u8 adr,
@@ -73,7 +80,7 @@ static int i2c_write_reg(struct i2c_adapter *adapter, u8 adr,
73} 80}
74 81
75static int i2c_write(struct i2c_adapter *adapter, u8 adr, 82static int i2c_write(struct i2c_adapter *adapter, u8 adr,
76 u8 *data, u8 len) 83 u8 *data, u16 len)
77{ 84{
78 struct i2c_msg msg = {.addr = adr, .flags = 0, .buf = data, .len = len}; 85 struct i2c_msg msg = {.addr = adr, .flags = 0, .buf = data, .len = len};
79 86
@@ -100,12 +107,12 @@ static int i2c_read_reg(struct i2c_adapter *adapter, u8 adr,
100} 107}
101 108
102static int i2c_read(struct i2c_adapter *adapter, u8 adr, 109static int i2c_read(struct i2c_adapter *adapter, u8 adr,
103 u8 reg, u8 *data, u8 n) 110 u8 reg, u8 *data, u16 n)
104{ 111{
105 struct i2c_msg msgs[2] = {{.addr = adr, .flags = 0, 112 struct i2c_msg msgs[2] = {{.addr = adr, .flags = 0,
106 .buf = &reg, .len = 1}, 113 .buf = &reg, .len = 1},
107 {.addr = adr, .flags = I2C_M_RD, 114 {.addr = adr, .flags = I2C_M_RD,
108 .buf = data, .len = n} }; 115 .buf = data, .len = n} };
109 116
110 if (i2c_transfer(adapter, msgs, 2) != 2) { 117 if (i2c_transfer(adapter, msgs, 2) != 2) {
111 dev_err(&adapter->dev, "error in i2c_read\n"); 118 dev_err(&adapter->dev, "error in i2c_read\n");
@@ -114,14 +121,26 @@ static int i2c_read(struct i2c_adapter *adapter, u8 adr,
114 return 0; 121 return 0;
115} 122}
116 123
117static int read_block(struct cxd *ci, u8 adr, u8 *data, u8 n) 124static int read_block(struct cxd *ci, u8 adr, u8 *data, u16 n)
118{ 125{
119 int status; 126 int status = 0;
120 127
121 status = i2c_write_reg(ci->i2c, ci->cfg.adr, 0, adr); 128 if (ci->lastaddress != adr)
129 status = i2c_write_reg(ci->i2c, ci->cfg.adr, 0, adr);
122 if (!status) { 130 if (!status) {
123 ci->lastaddress = adr; 131 ci->lastaddress = adr;
124 status = i2c_read(ci->i2c, ci->cfg.adr, 1, data, n); 132
133 while (n) {
134 int len = n;
135
136 if (ci->cfg.max_i2c && (len > ci->cfg.max_i2c))
137 len = ci->cfg.max_i2c;
138 status = i2c_read(ci->i2c, ci->cfg.adr, 1, data, len);
139 if (status)
140 return status;
141 data += len;
142 n -= len;
143 }
125 } 144 }
126 return status; 145 return status;
127} 146}
@@ -182,16 +201,16 @@ static int write_io(struct cxd *ci, u16 address, u8 val)
182 201
183static int write_regm(struct cxd *ci, u8 reg, u8 val, u8 mask) 202static int write_regm(struct cxd *ci, u8 reg, u8 val, u8 mask)
184{ 203{
185 int status; 204 int status = 0;
186 205
187 status = i2c_write_reg(ci->i2c, ci->cfg.adr, 0, reg); 206 if (ci->lastaddress != reg)
207 status = i2c_write_reg(ci->i2c, ci->cfg.adr, 0, reg);
188 if (!status && reg >= 6 && reg <= 8 && mask != 0xff) 208 if (!status && reg >= 6 && reg <= 8 && mask != 0xff)
189 status = i2c_read_reg(ci->i2c, ci->cfg.adr, 1, &ci->regs[reg]); 209 status = i2c_read_reg(ci->i2c, ci->cfg.adr, 1, &ci->regs[reg]);
210 ci->lastaddress = reg;
190 ci->regs[reg] = (ci->regs[reg] & (~mask)) | val; 211 ci->regs[reg] = (ci->regs[reg] & (~mask)) | val;
191 if (!status) { 212 if (!status)
192 ci->lastaddress = reg;
193 status = i2c_write_reg(ci->i2c, ci->cfg.adr, 1, ci->regs[reg]); 213 status = i2c_write_reg(ci->i2c, ci->cfg.adr, 1, ci->regs[reg]);
194 }
195 if (reg == 0x20) 214 if (reg == 0x20)
196 ci->regs[reg] &= 0x7f; 215 ci->regs[reg] &= 0x7f;
197 return status; 216 return status;
@@ -203,16 +222,29 @@ static int write_reg(struct cxd *ci, u8 reg, u8 val)
203} 222}
204 223
205#ifdef BUFFER_MODE 224#ifdef BUFFER_MODE
206static int write_block(struct cxd *ci, u8 adr, u8 *data, int n) 225static int write_block(struct cxd *ci, u8 adr, u8 *data, u16 n)
207{ 226{
208 int status; 227 int status = 0;
209 u8 buf[256] = {1}; 228 u8 *buf = ci->wbuf;
210 229
211 status = i2c_write_reg(ci->i2c, ci->cfg.adr, 0, adr); 230 if (ci->lastaddress != adr)
212 if (!status) { 231 status = i2c_write_reg(ci->i2c, ci->cfg.adr, 0, adr);
213 ci->lastaddress = adr; 232 if (status)
214 memcpy(buf + 1, data, n); 233 return status;
215 status = i2c_write(ci->i2c, ci->cfg.adr, buf, n + 1); 234
235 ci->lastaddress = adr;
236 buf[0] = 1;
237 while (n) {
238 int len = n;
239
240 if (ci->cfg.max_i2c && (len + 1 > ci->cfg.max_i2c))
241 len = ci->cfg.max_i2c - 1;
242 memcpy(buf + 1, data, len);
243 status = i2c_write(ci->i2c, ci->cfg.adr, buf, len + 1);
244 if (status)
245 return status;
246 n -= len;
247 data += len;
216 } 248 }
217 return status; 249 return status;
218} 250}
@@ -238,6 +270,8 @@ static void set_mode(struct cxd *ci, int mode)
238 270
239static void cam_mode(struct cxd *ci, int mode) 271static void cam_mode(struct cxd *ci, int mode)
240{ 272{
273 u8 dummy;
274
241 if (mode == ci->cammode) 275 if (mode == ci->cammode)
242 return; 276 return;
243 277
@@ -246,16 +280,15 @@ static void cam_mode(struct cxd *ci, int mode)
246 write_regm(ci, 0x20, 0x80, 0x80); 280 write_regm(ci, 0x20, 0x80, 0x80);
247 break; 281 break;
248 case 0x01: 282 case 0x01:
249#ifdef BUFFER_MODE
250 if (!ci->en.read_data) 283 if (!ci->en.read_data)
251 return; 284 return;
285 ci->write_busy = 0;
252 dev_info(&ci->i2c->dev, "enable cam buffer mode\n"); 286 dev_info(&ci->i2c->dev, "enable cam buffer mode\n");
253 /* write_reg(ci, 0x0d, 0x00); */ 287 write_reg(ci, 0x0d, 0x00);
254 /* write_reg(ci, 0x0e, 0x01); */ 288 write_reg(ci, 0x0e, 0x01);
255 write_regm(ci, 0x08, 0x40, 0x40); 289 write_regm(ci, 0x08, 0x40, 0x40);
256 /* read_reg(ci, 0x12, &dummy); */ 290 read_reg(ci, 0x12, &dummy);
257 write_regm(ci, 0x08, 0x80, 0x80); 291 write_regm(ci, 0x08, 0x80, 0x80);
258#endif
259 break; 292 break;
260 default: 293 default:
261 break; 294 break;
@@ -325,7 +358,10 @@ static int init(struct cxd *ci)
325 if (status < 0) 358 if (status < 0)
326 break; 359 break;
327 360
328 if (ci->cfg.clock_mode) { 361 if (ci->cfg.clock_mode == 2) {
362 /* bitrate*2^13/ 72000 */
363 u32 reg = ((ci->cfg.bitrate << 13) + 71999) / 72000;
364
329 if (ci->cfg.polarity) { 365 if (ci->cfg.polarity) {
330 status = write_reg(ci, 0x09, 0x6f); 366 status = write_reg(ci, 0x09, 0x6f);
331 if (status < 0) 367 if (status < 0)
@@ -335,6 +371,25 @@ static int init(struct cxd *ci)
335 if (status < 0) 371 if (status < 0)
336 break; 372 break;
337 } 373 }
374 status = write_reg(ci, 0x20, 0x08);
375 if (status < 0)
376 break;
377 status = write_reg(ci, 0x21, (reg >> 8) & 0xff);
378 if (status < 0)
379 break;
380 status = write_reg(ci, 0x22, reg & 0xff);
381 if (status < 0)
382 break;
383 } else if (ci->cfg.clock_mode == 1) {
384 if (ci->cfg.polarity) {
385 status = write_reg(ci, 0x09, 0x6f); /* D */
386 if (status < 0)
387 break;
388 } else {
389 status = write_reg(ci, 0x09, 0x6d);
390 if (status < 0)
391 break;
392 }
338 status = write_reg(ci, 0x20, 0x68); 393 status = write_reg(ci, 0x20, 0x68);
339 if (status < 0) 394 if (status < 0)
340 break; 395 break;
@@ -346,7 +401,7 @@ static int init(struct cxd *ci)
346 break; 401 break;
347 } else { 402 } else {
348 if (ci->cfg.polarity) { 403 if (ci->cfg.polarity) {
349 status = write_reg(ci, 0x09, 0x4f); 404 status = write_reg(ci, 0x09, 0x4f); /* C */
350 if (status < 0) 405 if (status < 0)
351 break; 406 break;
352 } else { 407 } else {
@@ -354,7 +409,6 @@ static int init(struct cxd *ci)
354 if (status < 0) 409 if (status < 0)
355 break; 410 break;
356 } 411 }
357
358 status = write_reg(ci, 0x20, 0x28); 412 status = write_reg(ci, 0x20, 0x28);
359 if (status < 0) 413 if (status < 0)
360 break; 414 break;
@@ -401,7 +455,6 @@ static int read_attribute_mem(struct dvb_ca_en50221 *ca,
401 set_mode(ci, 1); 455 set_mode(ci, 1);
402 read_pccard(ci, address, &val, 1); 456 read_pccard(ci, address, &val, 1);
403 mutex_unlock(&ci->lock); 457 mutex_unlock(&ci->lock);
404 /* printk(KERN_INFO "%02x:%02x\n", address,val); */
405 return val; 458 return val;
406} 459}
407 460
@@ -446,6 +499,9 @@ static int slot_reset(struct dvb_ca_en50221 *ca, int slot)
446{ 499{
447 struct cxd *ci = ca->data; 500 struct cxd *ci = ca->data;
448 501
502 if (ci->cammode)
503 read_data(ca, slot, ci->rbuf, 0);
504
449 mutex_lock(&ci->lock); 505 mutex_lock(&ci->lock);
450 cam_mode(ci, 0); 506 cam_mode(ci, 0);
451 write_reg(ci, 0x00, 0x21); 507 write_reg(ci, 0x00, 0x21);
@@ -465,7 +521,6 @@ static int slot_reset(struct dvb_ca_en50221 *ca, int slot)
465 } 521 }
466 } 522 }
467 mutex_unlock(&ci->lock); 523 mutex_unlock(&ci->lock);
468 /* msleep(500); */
469 return 0; 524 return 0;
470} 525}
471 526
@@ -474,11 +529,19 @@ static int slot_shutdown(struct dvb_ca_en50221 *ca, int slot)
474 struct cxd *ci = ca->data; 529 struct cxd *ci = ca->data;
475 530
476 dev_info(&ci->i2c->dev, "%s\n", __func__); 531 dev_info(&ci->i2c->dev, "%s\n", __func__);
532 if (ci->cammode)
533 read_data(ca, slot, ci->rbuf, 0);
477 mutex_lock(&ci->lock); 534 mutex_lock(&ci->lock);
535 write_reg(ci, 0x00, 0x21);
536 write_reg(ci, 0x06, 0x1F);
537 msleep(300);
538
478 write_regm(ci, 0x09, 0x08, 0x08); 539 write_regm(ci, 0x09, 0x08, 0x08);
479 write_regm(ci, 0x20, 0x80, 0x80); /* Reset CAM Mode */ 540 write_regm(ci, 0x20, 0x80, 0x80); /* Reset CAM Mode */
480 write_regm(ci, 0x06, 0x07, 0x07); /* Clear IO Mode */ 541 write_regm(ci, 0x06, 0x07, 0x07); /* Clear IO Mode */
542
481 ci->mode = -1; 543 ci->mode = -1;
544 ci->write_busy = 0;
482 mutex_unlock(&ci->lock); 545 mutex_unlock(&ci->lock);
483 return 0; 546 return 0;
484} 547}
@@ -490,9 +553,7 @@ static int slot_ts_enable(struct dvb_ca_en50221 *ca, int slot)
490 mutex_lock(&ci->lock); 553 mutex_lock(&ci->lock);
491 write_regm(ci, 0x09, 0x00, 0x08); 554 write_regm(ci, 0x09, 0x00, 0x08);
492 set_mode(ci, 0); 555 set_mode(ci, 0);
493#ifdef BUFFER_MODE
494 cam_mode(ci, 1); 556 cam_mode(ci, 1);
495#endif
496 mutex_unlock(&ci->lock); 557 mutex_unlock(&ci->lock);
497 return 0; 558 return 0;
498} 559}
@@ -506,12 +567,10 @@ static int campoll(struct cxd *ci)
506 return 0; 567 return 0;
507 write_reg(ci, 0x05, istat); 568 write_reg(ci, 0x05, istat);
508 569
509 if (istat & 0x40) { 570 if (istat & 0x40)
510 ci->dr = 1; 571 ci->dr = 1;
511 dev_info(&ci->i2c->dev, "DR\n");
512 }
513 if (istat & 0x20) 572 if (istat & 0x20)
514 dev_info(&ci->i2c->dev, "WC\n"); 573 ci->write_busy = 0;
515 574
516 if (istat & 2) { 575 if (istat & 2) {
517 u8 slotstat; 576 u8 slotstat;
@@ -519,7 +578,8 @@ static int campoll(struct cxd *ci)
519 read_reg(ci, 0x01, &slotstat); 578 read_reg(ci, 0x01, &slotstat);
520 if (!(2 & slotstat)) { 579 if (!(2 & slotstat)) {
521 if (!ci->slot_stat) { 580 if (!ci->slot_stat) {
522 ci->slot_stat = DVB_CA_EN50221_POLL_CAM_PRESENT; 581 ci->slot_stat |=
582 DVB_CA_EN50221_POLL_CAM_PRESENT;
523 write_regm(ci, 0x03, 0x08, 0x08); 583 write_regm(ci, 0x03, 0x08, 0x08);
524 } 584 }
525 585
@@ -531,8 +591,8 @@ static int campoll(struct cxd *ci)
531 ci->ready = 0; 591 ci->ready = 0;
532 } 592 }
533 } 593 }
534 if (istat & 8 && 594 if ((istat & 8) &&
535 ci->slot_stat == DVB_CA_EN50221_POLL_CAM_PRESENT) { 595 (ci->slot_stat == DVB_CA_EN50221_POLL_CAM_PRESENT)) {
536 ci->ready = 1; 596 ci->ready = 1;
537 ci->slot_stat |= DVB_CA_EN50221_POLL_CAM_READY; 597 ci->slot_stat |= DVB_CA_EN50221_POLL_CAM_READY;
538 } 598 }
@@ -553,7 +613,6 @@ static int poll_slot_status(struct dvb_ca_en50221 *ca, int slot, int open)
553 return ci->slot_stat; 613 return ci->slot_stat;
554} 614}
555 615
556#ifdef BUFFER_MODE
557static int read_data(struct dvb_ca_en50221 *ca, int slot, u8 *ebuf, int ecount) 616static int read_data(struct dvb_ca_en50221 *ca, int slot, u8 *ebuf, int ecount)
558{ 617{
559 struct cxd *ci = ca->data; 618 struct cxd *ci = ca->data;
@@ -564,30 +623,38 @@ static int read_data(struct dvb_ca_en50221 *ca, int slot, u8 *ebuf, int ecount)
564 campoll(ci); 623 campoll(ci);
565 mutex_unlock(&ci->lock); 624 mutex_unlock(&ci->lock);
566 625
567 dev_info(&ci->i2c->dev, "%s\n", __func__);
568 if (!ci->dr) 626 if (!ci->dr)
569 return 0; 627 return 0;
570 628
571 mutex_lock(&ci->lock); 629 mutex_lock(&ci->lock);
572 read_reg(ci, 0x0f, &msb); 630 read_reg(ci, 0x0f, &msb);
573 read_reg(ci, 0x10, &lsb); 631 read_reg(ci, 0x10, &lsb);
574 len = (msb << 8) | lsb; 632 len = ((u16)msb << 8) | lsb;
633 if (len > ecount || len < 2) {
634 /* read it anyway or cxd may hang */
635 read_block(ci, 0x12, ci->rbuf, len);
636 mutex_unlock(&ci->lock);
637 return -EIO;
638 }
575 read_block(ci, 0x12, ebuf, len); 639 read_block(ci, 0x12, ebuf, len);
576 ci->dr = 0; 640 ci->dr = 0;
577 mutex_unlock(&ci->lock); 641 mutex_unlock(&ci->lock);
578
579 return len; 642 return len;
580} 643}
581 644
645#ifdef BUFFER_MODE
646
582static int write_data(struct dvb_ca_en50221 *ca, int slot, u8 *ebuf, int ecount) 647static int write_data(struct dvb_ca_en50221 *ca, int slot, u8 *ebuf, int ecount)
583{ 648{
584 struct cxd *ci = ca->data; 649 struct cxd *ci = ca->data;
585 650
651 if (ci->write_busy)
652 return -EAGAIN;
586 mutex_lock(&ci->lock); 653 mutex_lock(&ci->lock);
587 dev_info(&ci->i2c->dev, "%s %d\n", __func__, ecount);
588 write_reg(ci, 0x0d, ecount >> 8); 654 write_reg(ci, 0x0d, ecount >> 8);
589 write_reg(ci, 0x0e, ecount & 0xff); 655 write_reg(ci, 0x0e, ecount & 0xff);
590 write_block(ci, 0x11, ebuf, ecount); 656 write_block(ci, 0x11, ebuf, ecount);
657 ci->write_busy = 1;
591 mutex_unlock(&ci->lock); 658 mutex_unlock(&ci->lock);
592 return ecount; 659 return ecount;
593} 660}
diff --git a/drivers/staging/media/cxd2099/cxd2099.h b/drivers/staging/media/cxd2099/cxd2099.h
index 0eb607c5b423..f4b29b1d6eb8 100644
--- a/drivers/staging/media/cxd2099/cxd2099.h
+++ b/drivers/staging/media/cxd2099/cxd2099.h
@@ -30,8 +30,10 @@
30struct cxd2099_cfg { 30struct cxd2099_cfg {
31 u32 bitrate; 31 u32 bitrate;
32 u8 adr; 32 u8 adr;
33 u8 polarity:1; 33 u8 polarity;
34 u8 clock_mode:1; 34 u8 clock_mode;
35
36 u32 max_i2c;
35}; 37};
36 38
37#if defined(CONFIG_DVB_CXD2099) || \ 39#if defined(CONFIG_DVB_CXD2099) || \
diff --git a/drivers/staging/rtl8188eu/core/rtw_cmd.c b/drivers/staging/rtl8188eu/core/rtw_cmd.c
index 002d09159896..a69007ef77bf 100644
--- a/drivers/staging/rtl8188eu/core/rtw_cmd.c
+++ b/drivers/staging/rtl8188eu/core/rtw_cmd.c
@@ -132,7 +132,7 @@ void rtw_free_cmd_obj(struct cmd_obj *pcmd)
132 kfree(pcmd->parmbuf); 132 kfree(pcmd->parmbuf);
133 } 133 }
134 134
135 if (!pcmd->rsp) { 135 if (pcmd->rsp) {
136 if (pcmd->rspsz != 0) { 136 if (pcmd->rspsz != 0) {
137 /* free rsp in cmd_obj */ 137 /* free rsp in cmd_obj */
138 kfree(pcmd->rsp); 138 kfree(pcmd->rsp);
diff --git a/drivers/staging/rtl8188eu/os_dep/usb_intf.c b/drivers/staging/rtl8188eu/os_dep/usb_intf.c
index 963235fd7292..d283341cfe43 100644
--- a/drivers/staging/rtl8188eu/os_dep/usb_intf.c
+++ b/drivers/staging/rtl8188eu/os_dep/usb_intf.c
@@ -43,6 +43,7 @@ static struct usb_device_id rtw_usb_id_tbl[] = {
43 {USB_DEVICE(0x2001, 0x330F)}, /* DLink DWA-125 REV D1 */ 43 {USB_DEVICE(0x2001, 0x330F)}, /* DLink DWA-125 REV D1 */
44 {USB_DEVICE(0x2001, 0x3310)}, /* Dlink DWA-123 REV D1 */ 44 {USB_DEVICE(0x2001, 0x3310)}, /* Dlink DWA-123 REV D1 */
45 {USB_DEVICE(0x2001, 0x3311)}, /* DLink GO-USB-N150 REV B1 */ 45 {USB_DEVICE(0x2001, 0x3311)}, /* DLink GO-USB-N150 REV B1 */
46 {USB_DEVICE(0x2357, 0x010c)}, /* TP-Link TL-WN722N v2 */
46 {USB_DEVICE(0x0df6, 0x0076)}, /* Sitecom N150 v2 */ 47 {USB_DEVICE(0x0df6, 0x0076)}, /* Sitecom N150 v2 */
47 {} /* Terminating entry */ 48 {} /* Terminating entry */
48}; 49};
diff --git a/drivers/staging/sm750fb/ddk750_chip.c b/drivers/staging/sm750fb/ddk750_chip.c
index 944dd25924be..4754f7a20684 100644
--- a/drivers/staging/sm750fb/ddk750_chip.c
+++ b/drivers/staging/sm750fb/ddk750_chip.c
@@ -40,7 +40,7 @@ static unsigned int get_mxclk_freq(void)
40 40
41 pll_reg = peek32(MXCLK_PLL_CTRL); 41 pll_reg = peek32(MXCLK_PLL_CTRL);
42 M = (pll_reg & PLL_CTRL_M_MASK) >> PLL_CTRL_M_SHIFT; 42 M = (pll_reg & PLL_CTRL_M_MASK) >> PLL_CTRL_M_SHIFT;
43 N = (pll_reg & PLL_CTRL_N_MASK) >> PLL_CTRL_M_SHIFT; 43 N = (pll_reg & PLL_CTRL_N_MASK) >> PLL_CTRL_N_SHIFT;
44 OD = (pll_reg & PLL_CTRL_OD_MASK) >> PLL_CTRL_OD_SHIFT; 44 OD = (pll_reg & PLL_CTRL_OD_MASK) >> PLL_CTRL_OD_SHIFT;
45 POD = (pll_reg & PLL_CTRL_POD_MASK) >> PLL_CTRL_POD_SHIFT; 45 POD = (pll_reg & PLL_CTRL_POD_MASK) >> PLL_CTRL_POD_SHIFT;
46 46
diff --git a/drivers/staging/sm750fb/sm750.c b/drivers/staging/sm750fb/sm750.c
index 3aa4128703d5..67207b0554cd 100644
--- a/drivers/staging/sm750fb/sm750.c
+++ b/drivers/staging/sm750fb/sm750.c
@@ -1053,6 +1053,26 @@ release_fb:
1053 return err; 1053 return err;
1054} 1054}
1055 1055
1056static int lynxfb_kick_out_firmware_fb(struct pci_dev *pdev)
1057{
1058 struct apertures_struct *ap;
1059 bool primary = false;
1060
1061 ap = alloc_apertures(1);
1062 if (!ap)
1063 return -ENOMEM;
1064
1065 ap->ranges[0].base = pci_resource_start(pdev, 0);
1066 ap->ranges[0].size = pci_resource_len(pdev, 0);
1067#ifdef CONFIG_X86
1068 primary = pdev->resource[PCI_ROM_RESOURCE].flags &
1069 IORESOURCE_ROM_SHADOW;
1070#endif
1071 remove_conflicting_framebuffers(ap, "sm750_fb1", primary);
1072 kfree(ap);
1073 return 0;
1074}
1075
1056static int lynxfb_pci_probe(struct pci_dev *pdev, 1076static int lynxfb_pci_probe(struct pci_dev *pdev,
1057 const struct pci_device_id *ent) 1077 const struct pci_device_id *ent)
1058{ 1078{
@@ -1061,6 +1081,10 @@ static int lynxfb_pci_probe(struct pci_dev *pdev,
1061 int fbidx; 1081 int fbidx;
1062 int err; 1082 int err;
1063 1083
1084 err = lynxfb_kick_out_firmware_fb(pdev);
1085 if (err)
1086 return err;
1087
1064 /* enable device */ 1088 /* enable device */
1065 err = pcim_enable_device(pdev); 1089 err = pcim_enable_device(pdev);
1066 if (err) 1090 if (err)
diff --git a/drivers/staging/speakup/main.c b/drivers/staging/speakup/main.c
index 82e5de248947..67956e24779c 100644
--- a/drivers/staging/speakup/main.c
+++ b/drivers/staging/speakup/main.c
@@ -2314,6 +2314,7 @@ static void __exit speakup_exit(void)
2314 mutex_lock(&spk_mutex); 2314 mutex_lock(&spk_mutex);
2315 synth_release(); 2315 synth_release();
2316 mutex_unlock(&spk_mutex); 2316 mutex_unlock(&spk_mutex);
2317 spk_ttyio_unregister_ldisc();
2317 2318
2318 speakup_kobj_exit(); 2319 speakup_kobj_exit();
2319 2320
@@ -2376,6 +2377,7 @@ static int __init speakup_init(void)
2376 if (err) 2377 if (err)
2377 goto error_kobjects; 2378 goto error_kobjects;
2378 2379
2380 spk_ttyio_register_ldisc();
2379 synth_init(synth_name); 2381 synth_init(synth_name);
2380 speakup_register_devsynth(); 2382 speakup_register_devsynth();
2381 /* 2383 /*
diff --git a/drivers/staging/speakup/spk_priv.h b/drivers/staging/speakup/spk_priv.h
index 87b6a0a4c54d..046040ac074c 100644
--- a/drivers/staging/speakup/spk_priv.h
+++ b/drivers/staging/speakup/spk_priv.h
@@ -48,6 +48,8 @@ void spk_stop_serial_interrupt(void);
48int spk_wait_for_xmitr(struct spk_synth *in_synth); 48int spk_wait_for_xmitr(struct spk_synth *in_synth);
49void spk_serial_release(void); 49void spk_serial_release(void);
50void spk_ttyio_release(void); 50void spk_ttyio_release(void);
51void spk_ttyio_register_ldisc(void);
52void spk_ttyio_unregister_ldisc(void);
51 53
52void synth_buffer_skip_nonlatin1(void); 54void synth_buffer_skip_nonlatin1(void);
53u16 synth_buffer_getc(void); 55u16 synth_buffer_getc(void);
diff --git a/drivers/staging/speakup/spk_ttyio.c b/drivers/staging/speakup/spk_ttyio.c
index ed8e96b06ead..fe340b07c482 100644
--- a/drivers/staging/speakup/spk_ttyio.c
+++ b/drivers/staging/speakup/spk_ttyio.c
@@ -154,12 +154,6 @@ static int spk_ttyio_initialise_ldisc(struct spk_synth *synth)
154 struct ktermios tmp_termios; 154 struct ktermios tmp_termios;
155 dev_t dev; 155 dev_t dev;
156 156
157 ret = tty_register_ldisc(N_SPEAKUP, &spk_ttyio_ldisc_ops);
158 if (ret) {
159 pr_err("Error registering line discipline.\n");
160 return ret;
161 }
162
163 ret = get_dev_to_use(synth, &dev); 157 ret = get_dev_to_use(synth, &dev);
164 if (ret) 158 if (ret)
165 return ret; 159 return ret;
@@ -196,10 +190,24 @@ static int spk_ttyio_initialise_ldisc(struct spk_synth *synth)
196 tty_unlock(tty); 190 tty_unlock(tty);
197 191
198 ret = tty_set_ldisc(tty, N_SPEAKUP); 192 ret = tty_set_ldisc(tty, N_SPEAKUP);
193 if (ret)
194 pr_err("speakup: Failed to set N_SPEAKUP on tty\n");
199 195
200 return ret; 196 return ret;
201} 197}
202 198
199void spk_ttyio_register_ldisc(void)
200{
201 if (tty_register_ldisc(N_SPEAKUP, &spk_ttyio_ldisc_ops))
202 pr_warn("speakup: Error registering line discipline. Most synths won't work.\n");
203}
204
205void spk_ttyio_unregister_ldisc(void)
206{
207 if (tty_unregister_ldisc(N_SPEAKUP))
208 pr_warn("speakup: Couldn't unregister ldisc\n");
209}
210
203static int spk_ttyio_out(struct spk_synth *in_synth, const char ch) 211static int spk_ttyio_out(struct spk_synth *in_synth, const char ch)
204{ 212{
205 if (in_synth->alive && speakup_tty && speakup_tty->ops->write) { 213 if (in_synth->alive && speakup_tty && speakup_tty->ops->write) {
@@ -300,7 +308,7 @@ void spk_ttyio_release(void)
300 308
301 tty_ldisc_flush(speakup_tty); 309 tty_ldisc_flush(speakup_tty);
302 tty_unlock(speakup_tty); 310 tty_unlock(speakup_tty);
303 tty_ldisc_release(speakup_tty); 311 tty_release_struct(speakup_tty, speakup_tty->index);
304} 312}
305EXPORT_SYMBOL_GPL(spk_ttyio_release); 313EXPORT_SYMBOL_GPL(spk_ttyio_release);
306 314
diff --git a/drivers/staging/vboxvideo/Kconfig b/drivers/staging/vboxvideo/Kconfig
new file mode 100644
index 000000000000..a52746f9a670
--- /dev/null
+++ b/drivers/staging/vboxvideo/Kconfig
@@ -0,0 +1,12 @@
1config DRM_VBOXVIDEO
2 tristate "Virtual Box Graphics Card"
3 depends on DRM && X86 && PCI
4 select DRM_KMS_HELPER
5 help
6 This is a KMS driver for the virtual Graphics Card used in
7 Virtual Box virtual machines.
8
9 Although it is possible to builtin this module, it is advised
10 to build this driver as a module, so that it can be updated
11 independently of the kernel. Select M to built this driver as a
12 module and add support for these devices via drm/kms interfaces.
diff --git a/drivers/staging/vboxvideo/Makefile b/drivers/staging/vboxvideo/Makefile
new file mode 100644
index 000000000000..2d0b3bc7ad73
--- /dev/null
+++ b/drivers/staging/vboxvideo/Makefile
@@ -0,0 +1,7 @@
1ccflags-y := -Iinclude/drm
2
3vboxvideo-y := hgsmi_base.o modesetting.o vbva_base.o \
4 vbox_drv.o vbox_fb.o vbox_hgsmi.o vbox_irq.o vbox_main.o \
5 vbox_mode.o vbox_prime.o vbox_ttm.o
6
7obj-$(CONFIG_DRM_VBOXVIDEO) += vboxvideo.o
diff --git a/drivers/staging/vboxvideo/TODO b/drivers/staging/vboxvideo/TODO
new file mode 100644
index 000000000000..ce764309b079
--- /dev/null
+++ b/drivers/staging/vboxvideo/TODO
@@ -0,0 +1,9 @@
1TODO:
2-Move the driver over to the atomic API
3-Stop using old load / unload drm_driver hooks
4-Get a full review from the drm-maintainers on dri-devel done on this driver
5-Extend this TODO with the results of that review
6
7Please send any patches to Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
8Hans de Goede <hdegoede@redhat.com> and
9Michael Thayer <michael.thayer@oracle.com>.
diff --git a/drivers/staging/vboxvideo/hgsmi_base.c b/drivers/staging/vboxvideo/hgsmi_base.c
new file mode 100644
index 000000000000..15ff5f42e2cd
--- /dev/null
+++ b/drivers/staging/vboxvideo/hgsmi_base.c
@@ -0,0 +1,246 @@
1/*
2 * Copyright (C) 2006-2017 Oracle Corporation
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 * OTHER DEALINGS IN THE SOFTWARE.
21 */
22
23#include "vbox_drv.h"
24#include "vbox_err.h"
25#include "vboxvideo_guest.h"
26#include "vboxvideo_vbe.h"
27#include "hgsmi_channels.h"
28#include "hgsmi_ch_setup.h"
29
30/**
31 * Inform the host of the location of the host flags in VRAM via an HGSMI cmd.
32 * @param ctx the context of the guest heap to use.
33 * @param location the offset chosen for the flags within guest VRAM.
34 * @returns 0 on success, -errno on failure
35 */
36int hgsmi_report_flags_location(struct gen_pool *ctx, u32 location)
37{
38 struct hgsmi_buffer_location *p;
39
40 p = hgsmi_buffer_alloc(ctx, sizeof(*p), HGSMI_CH_HGSMI,
41 HGSMI_CC_HOST_FLAGS_LOCATION);
42 if (!p)
43 return -ENOMEM;
44
45 p->buf_location = location;
46 p->buf_len = sizeof(struct hgsmi_host_flags);
47
48 hgsmi_buffer_submit(ctx, p);
49 hgsmi_buffer_free(ctx, p);
50
51 return 0;
52}
53
54/**
55 * Notify the host of HGSMI-related guest capabilities via an HGSMI command.
56 * @param ctx the context of the guest heap to use.
57 * @param caps the capabilities to report, see vbva_caps.
58 * @returns 0 on success, -errno on failure
59 */
60int hgsmi_send_caps_info(struct gen_pool *ctx, u32 caps)
61{
62 struct vbva_caps *p;
63
64 p = hgsmi_buffer_alloc(ctx, sizeof(*p), HGSMI_CH_VBVA, VBVA_INFO_CAPS);
65 if (!p)
66 return -ENOMEM;
67
68 p->rc = VERR_NOT_IMPLEMENTED;
69 p->caps = caps;
70
71 hgsmi_buffer_submit(ctx, p);
72
73 WARN_ON_ONCE(RT_FAILURE(p->rc));
74
75 hgsmi_buffer_free(ctx, p);
76
77 return 0;
78}
79
80int hgsmi_test_query_conf(struct gen_pool *ctx)
81{
82 u32 value = 0;
83 int ret;
84
85 ret = hgsmi_query_conf(ctx, U32_MAX, &value);
86 if (ret)
87 return ret;
88
89 return value == U32_MAX ? 0 : -EIO;
90}
91
92/**
93 * Query the host for an HGSMI configuration parameter via an HGSMI command.
94 * @param ctx the context containing the heap used
95 * @param index the index of the parameter to query,
96 * @see vbva_conf32::index
97 * @param value_ret where to store the value of the parameter on success
98 * @returns 0 on success, -errno on failure
99 */
100int hgsmi_query_conf(struct gen_pool *ctx, u32 index, u32 *value_ret)
101{
102 struct vbva_conf32 *p;
103
104 p = hgsmi_buffer_alloc(ctx, sizeof(*p), HGSMI_CH_VBVA,
105 VBVA_QUERY_CONF32);
106 if (!p)
107 return -ENOMEM;
108
109 p->index = index;
110 p->value = U32_MAX;
111
112 hgsmi_buffer_submit(ctx, p);
113
114 *value_ret = p->value;
115
116 hgsmi_buffer_free(ctx, p);
117
118 return 0;
119}
120
121/**
122 * Pass the host a new mouse pointer shape via an HGSMI command.
123 *
124 * @param ctx the context containing the heap to be used
125 * @param flags cursor flags, @see VMMDevReqMousePointer::flags
126 * @param hot_x horizontal position of the hot spot
127 * @param hot_y vertical position of the hot spot
128 * @param width width in pixels of the cursor
129 * @param height height in pixels of the cursor
130 * @param pixels pixel data, @see VMMDevReqMousePointer for the format
131 * @param len size in bytes of the pixel data
132 * @returns 0 on success, -errno on failure
133 */
134int hgsmi_update_pointer_shape(struct gen_pool *ctx, u32 flags,
135 u32 hot_x, u32 hot_y, u32 width, u32 height,
136 u8 *pixels, u32 len)
137{
138 struct vbva_mouse_pointer_shape *p;
139 u32 pixel_len = 0;
140 int rc;
141
142 if (flags & VBOX_MOUSE_POINTER_SHAPE) {
143 /*
144 * Size of the pointer data:
145 * sizeof (AND mask) + sizeof (XOR_MASK)
146 */
147 pixel_len = ((((width + 7) / 8) * height + 3) & ~3) +
148 width * 4 * height;
149 if (pixel_len > len)
150 return -EINVAL;
151
152 /*
153 * If shape is supplied, then always create the pointer visible.
154 * See comments in 'vboxUpdatePointerShape'
155 */
156 flags |= VBOX_MOUSE_POINTER_VISIBLE;
157 }
158
159 p = hgsmi_buffer_alloc(ctx, sizeof(*p) + pixel_len, HGSMI_CH_VBVA,
160 VBVA_MOUSE_POINTER_SHAPE);
161 if (!p)
162 return -ENOMEM;
163
164 p->result = VINF_SUCCESS;
165 p->flags = flags;
166 p->hot_X = hot_x;
167 p->hot_y = hot_y;
168 p->width = width;
169 p->height = height;
170 if (pixel_len)
171 memcpy(p->data, pixels, pixel_len);
172
173 hgsmi_buffer_submit(ctx, p);
174
175 switch (p->result) {
176 case VINF_SUCCESS:
177 rc = 0;
178 break;
179 case VERR_NO_MEMORY:
180 rc = -ENOMEM;
181 break;
182 case VERR_NOT_SUPPORTED:
183 rc = -EBUSY;
184 break;
185 default:
186 rc = -EINVAL;
187 }
188
189 hgsmi_buffer_free(ctx, p);
190
191 return rc;
192}
193
194/**
195 * Report the guest cursor position. The host may wish to use this information
196 * to re-position its own cursor (though this is currently unlikely). The
197 * current host cursor position is returned.
198 * @param ctx The context containing the heap used.
199 * @param report_position Are we reporting a position?
200 * @param x Guest cursor X position.
201 * @param y Guest cursor Y position.
202 * @param x_host Host cursor X position is stored here. Optional.
203 * @param y_host Host cursor Y position is stored here. Optional.
204 * @returns 0 on success, -errno on failure
205 */
206int hgsmi_cursor_position(struct gen_pool *ctx, bool report_position,
207 u32 x, u32 y, u32 *x_host, u32 *y_host)
208{
209 struct vbva_cursor_position *p;
210
211 p = hgsmi_buffer_alloc(ctx, sizeof(*p), HGSMI_CH_VBVA,
212 VBVA_CURSOR_POSITION);
213 if (!p)
214 return -ENOMEM;
215
216 p->report_position = report_position;
217 p->x = x;
218 p->y = y;
219
220 hgsmi_buffer_submit(ctx, p);
221
222 *x_host = p->x;
223 *y_host = p->y;
224
225 hgsmi_buffer_free(ctx, p);
226
227 return 0;
228}
229
230/**
231 * @todo Mouse pointer position to be read from VMMDev memory, address of the
232 * memory region can be queried from VMMDev via an IOCTL. This VMMDev memory
233 * region will contain host information which is needed by the guest.
234 *
235 * Reading will not cause a switch to the host.
236 *
237 * Have to take into account:
238 * * synchronization: host must write to the memory only from EMT,
239 * large structures must be read under flag, which tells the host
240 * that the guest is currently reading the memory (OWNER flag?).
241 * * guest writes: may be allocate a page for the host info and make
242 * the page readonly for the guest.
243 * * the information should be available only for additions drivers.
244 * * VMMDev additions driver will inform the host which version of the info
245 * it expects, host must support all versions.
246 */
diff --git a/drivers/staging/vboxvideo/hgsmi_ch_setup.h b/drivers/staging/vboxvideo/hgsmi_ch_setup.h
new file mode 100644
index 000000000000..8e6d9e11a69c
--- /dev/null
+++ b/drivers/staging/vboxvideo/hgsmi_ch_setup.h
@@ -0,0 +1,66 @@
1/*
2 * Copyright (C) 2006-2017 Oracle Corporation
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 * OTHER DEALINGS IN THE SOFTWARE.
21 */
22
23#ifndef __HGSMI_CH_SETUP_H__
24#define __HGSMI_CH_SETUP_H__
25
26/*
27 * Tell the host the location of hgsmi_host_flags structure, where the host
28 * can write information about pending buffers, etc, and which can be quickly
29 * polled by the guest without a need to port IO.
30 */
31#define HGSMI_CC_HOST_FLAGS_LOCATION 0
32
33struct hgsmi_buffer_location {
34 u32 buf_location;
35 u32 buf_len;
36} __packed;
37
38/* HGSMI setup and configuration data structures. */
39/* host->guest commands pending, should be accessed under FIFO lock only */
40#define HGSMIHOSTFLAGS_COMMANDS_PENDING 0x01u
41/* IRQ is fired, should be accessed under VGAState::lock only */
42#define HGSMIHOSTFLAGS_IRQ 0x02u
43/* vsync interrupt flag, should be accessed under VGAState::lock only */
44#define HGSMIHOSTFLAGS_VSYNC 0x10u
45/** monitor hotplug flag, should be accessed under VGAState::lock only */
46#define HGSMIHOSTFLAGS_HOTPLUG 0x20u
47/**
48 * Cursor capability state change flag, should be accessed under
49 * VGAState::lock only. @see vbva_conf32.
50 */
51#define HGSMIHOSTFLAGS_CURSOR_CAPABILITIES 0x40u
52
53struct hgsmi_host_flags {
54 /*
55 * Host flags can be accessed and modified in multiple threads
56 * concurrently, e.g. CrOpenGL HGCM and GUI threads when completing
57 * HGSMI 3D and Video Accel respectively, EMT thread when dealing with
58 * HGSMI command processing, etc.
59 * Besides settings/cleaning flags atomically, some flags have their
60 * own special sync restrictions, see comments for flags above.
61 */
62 u32 host_flags;
63 u32 reserved[3];
64} __packed;
65
66#endif
diff --git a/drivers/staging/vboxvideo/hgsmi_channels.h b/drivers/staging/vboxvideo/hgsmi_channels.h
new file mode 100644
index 000000000000..a2a34b2167b4
--- /dev/null
+++ b/drivers/staging/vboxvideo/hgsmi_channels.h
@@ -0,0 +1,53 @@
1/*
2 * Copyright (C) 2006-2017 Oracle Corporation
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 * OTHER DEALINGS IN THE SOFTWARE.
21 */
22
23#ifndef __HGSMI_CHANNELS_H__
24#define __HGSMI_CHANNELS_H__
25
26/*
27 * Each channel has an 8 bit identifier. There are a number of predefined
28 * (hardcoded) channels.
29 *
30 * HGSMI_CH_HGSMI channel can be used to map a string channel identifier
31 * to a free 16 bit numerical value. values are allocated in range
32 * [HGSMI_CH_STRING_FIRST;HGSMI_CH_STRING_LAST].
33 */
34
35/* A reserved channel value */
36#define HGSMI_CH_RESERVED 0x00
37/* HGCMI: setup and configuration */
38#define HGSMI_CH_HGSMI 0x01
39/* Graphics: VBVA */
40#define HGSMI_CH_VBVA 0x02
41/* Graphics: Seamless with a single guest region */
42#define HGSMI_CH_SEAMLESS 0x03
43/* Graphics: Seamless with separate host windows */
44#define HGSMI_CH_SEAMLESS2 0x04
45/* Graphics: OpenGL HW acceleration */
46#define HGSMI_CH_OPENGL 0x05
47
48/* The first channel index to be used for string mappings (inclusive) */
49#define HGSMI_CH_STRING_FIRST 0x20
50/* The last channel index for string mappings (inclusive) */
51#define HGSMI_CH_STRING_LAST 0xff
52
53#endif
diff --git a/drivers/staging/vboxvideo/hgsmi_defs.h b/drivers/staging/vboxvideo/hgsmi_defs.h
new file mode 100644
index 000000000000..5b21fb974d20
--- /dev/null
+++ b/drivers/staging/vboxvideo/hgsmi_defs.h
@@ -0,0 +1,92 @@
1/*
2 * Copyright (C) 2006-2017 Oracle Corporation
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 * OTHER DEALINGS IN THE SOFTWARE.
21 */
22
23#ifndef __HGSMI_DEFS_H__
24#define __HGSMI_DEFS_H__
25
26/* Buffer sequence type mask. */
27#define HGSMI_BUFFER_HEADER_F_SEQ_MASK 0x03
28/* Single buffer, not a part of a sequence. */
29#define HGSMI_BUFFER_HEADER_F_SEQ_SINGLE 0x00
30/* The first buffer in a sequence. */
31#define HGSMI_BUFFER_HEADER_F_SEQ_START 0x01
32/* A middle buffer in a sequence. */
33#define HGSMI_BUFFER_HEADER_F_SEQ_CONTINUE 0x02
34/* The last buffer in a sequence. */
35#define HGSMI_BUFFER_HEADER_F_SEQ_END 0x03
36
37/* 16 bytes buffer header. */
38struct hgsmi_buffer_header {
39 u32 data_size; /* Size of data that follows the header. */
40 u8 flags; /* HGSMI_BUFFER_HEADER_F_* */
41 u8 channel; /* The channel the data must be routed to. */
42 u16 channel_info; /* Opaque to the HGSMI, used by the channel. */
43
44 union {
45 /* Opaque placeholder to make the union 8 bytes. */
46 u8 header_data[8];
47
48 /* HGSMI_BUFFER_HEADER_F_SEQ_SINGLE */
49 struct {
50 u32 reserved1; /* A reserved field, initialize to 0. */
51 u32 reserved2; /* A reserved field, initialize to 0. */
52 } buffer;
53
54 /* HGSMI_BUFFER_HEADER_F_SEQ_START */
55 struct {
56 /* Must be the same for all buffers in the sequence. */
57 u32 sequence_number;
58 /* The total size of the sequence. */
59 u32 sequence_size;
60 } sequence_start;
61
62 /*
63 * HGSMI_BUFFER_HEADER_F_SEQ_CONTINUE and
64 * HGSMI_BUFFER_HEADER_F_SEQ_END
65 */
66 struct {
67 /* Must be the same for all buffers in the sequence. */
68 u32 sequence_number;
69 /* Data offset in the entire sequence. */
70 u32 sequence_offset;
71 } sequence_continue;
72 } u;
73} __packed;
74
75/* 8 bytes buffer tail. */
76struct hgsmi_buffer_tail {
77 /* Reserved, must be initialized to 0. */
78 u32 reserved;
79 /*
80 * One-at-a-Time Hash: http://www.burtleburtle.net/bob/hash/doobs.html
81 * Over the header, offset and for first 4 bytes of the tail.
82 */
83 u32 checksum;
84} __packed;
85
86/*
87 * The size of the array of channels. Array indexes are u8.
88 * Note: the value must not be changed.
89 */
90#define HGSMI_NUMBER_OF_CHANNELS 0x100
91
92#endif
diff --git a/drivers/staging/vboxvideo/modesetting.c b/drivers/staging/vboxvideo/modesetting.c
new file mode 100644
index 000000000000..7616b8aab23a
--- /dev/null
+++ b/drivers/staging/vboxvideo/modesetting.c
@@ -0,0 +1,142 @@
1/*
2 * Copyright (C) 2006-2017 Oracle Corporation
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 * OTHER DEALINGS IN THE SOFTWARE.
21 */
22
23#include "vbox_drv.h"
24#include "vbox_err.h"
25#include "vboxvideo_guest.h"
26#include "vboxvideo_vbe.h"
27#include "hgsmi_channels.h"
28
29/**
30 * Set a video mode via an HGSMI request. The views must have been
31 * initialised first using @a VBoxHGSMISendViewInfo and if the mode is being
32 * set on the first display then it must be set first using registers.
33 * @param ctx The context containing the heap to use
34 * @param display The screen number
35 * @param origin_x The horizontal displacement relative to the first scrn
36 * @param origin_y The vertical displacement relative to the first screen
37 * @param start_offset The offset of the visible area of the framebuffer
38 * relative to the framebuffer start
39 * @param pitch The offset in bytes between the starts of two adjecent
40 * scan lines in video RAM
41 * @param width The mode width
42 * @param height The mode height
43 * @param bpp The colour depth of the mode
44 * @param flags Flags
45 */
46void hgsmi_process_display_info(struct gen_pool *ctx, u32 display,
47 s32 origin_x, s32 origin_y, u32 start_offset,
48 u32 pitch, u32 width, u32 height,
49 u16 bpp, u16 flags)
50{
51 struct vbva_infoscreen *p;
52
53 p = hgsmi_buffer_alloc(ctx, sizeof(*p), HGSMI_CH_VBVA,
54 VBVA_INFO_SCREEN);
55 if (!p)
56 return;
57
58 p->view_index = display;
59 p->origin_x = origin_x;
60 p->origin_y = origin_y;
61 p->start_offset = start_offset;
62 p->line_size = pitch;
63 p->width = width;
64 p->height = height;
65 p->bits_per_pixel = bpp;
66 p->flags = flags;
67
68 hgsmi_buffer_submit(ctx, p);
69 hgsmi_buffer_free(ctx, p);
70}
71
72/**
73 * Report the rectangle relative to which absolute pointer events should be
74 * expressed. This information remains valid until the next VBVA resize event
75 * for any screen, at which time it is reset to the bounding rectangle of all
76 * virtual screens.
77 * @param ctx The context containing the heap to use.
78 * @param origin_x Upper left X co-ordinate relative to the first screen.
79 * @param origin_y Upper left Y co-ordinate relative to the first screen.
80 * @param width Rectangle width.
81 * @param height Rectangle height.
82 * @returns 0 on success, -errno on failure
83 */
84int hgsmi_update_input_mapping(struct gen_pool *ctx, s32 origin_x, s32 origin_y,
85 u32 width, u32 height)
86{
87 struct vbva_report_input_mapping *p;
88
89 p = hgsmi_buffer_alloc(ctx, sizeof(*p), HGSMI_CH_VBVA,
90 VBVA_REPORT_INPUT_MAPPING);
91 if (!p)
92 return -ENOMEM;
93
94 p->x = origin_x;
95 p->y = origin_y;
96 p->cx = width;
97 p->cy = height;
98
99 hgsmi_buffer_submit(ctx, p);
100 hgsmi_buffer_free(ctx, p);
101
102 return 0;
103}
104
105/**
106 * Get most recent video mode hints.
107 * @param ctx The context containing the heap to use.
108 * @param screens The number of screens to query hints for, starting at 0.
109 * @param hints Array of vbva_modehint structures for receiving the hints.
110 * @returns 0 on success, -errno on failure
111 */
112int hgsmi_get_mode_hints(struct gen_pool *ctx, unsigned int screens,
113 struct vbva_modehint *hints)
114{
115 struct vbva_query_mode_hints *p;
116 size_t size;
117
118 if (WARN_ON(!hints))
119 return -EINVAL;
120
121 size = screens * sizeof(struct vbva_modehint);
122 p = hgsmi_buffer_alloc(ctx, sizeof(*p) + size, HGSMI_CH_VBVA,
123 VBVA_QUERY_MODE_HINTS);
124 if (!p)
125 return -ENOMEM;
126
127 p->hints_queried_count = screens;
128 p->hint_structure_guest_size = sizeof(struct vbva_modehint);
129 p->rc = VERR_NOT_SUPPORTED;
130
131 hgsmi_buffer_submit(ctx, p);
132
133 if (RT_FAILURE(p->rc)) {
134 hgsmi_buffer_free(ctx, p);
135 return -EIO;
136 }
137
138 memcpy(hints, ((u8 *)p) + sizeof(struct vbva_query_mode_hints), size);
139 hgsmi_buffer_free(ctx, p);
140
141 return 0;
142}
diff --git a/drivers/staging/vboxvideo/vbox_drv.c b/drivers/staging/vboxvideo/vbox_drv.c
new file mode 100644
index 000000000000..92ae1560a16d
--- /dev/null
+++ b/drivers/staging/vboxvideo/vbox_drv.c
@@ -0,0 +1,286 @@
1/*
2 * Copyright (C) 2013-2017 Oracle Corporation
3 * This file is based on ast_drv.c
4 * Copyright 2012 Red Hat Inc.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the
8 * "Software"), to deal in the Software without restriction, including
9 * without limitation the rights to use, copy, modify, merge, publish,
10 * distribute, sub license, and/or sell copies of the Software, and to
11 * permit persons to whom the Software is furnished to do so, subject to
12 * the following conditions:
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
17 * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
18 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20 * USE OR OTHER DEALINGS IN THE SOFTWARE.
21 *
22 * The above copyright notice and this permission notice (including the
23 * next paragraph) shall be included in all copies or substantial portions
24 * of the Software.
25 *
26 * Authors: Dave Airlie <airlied@redhat.com>
27 * Michael Thayer <michael.thayer@oracle.com,
28 * Hans de Goede <hdegoede@redhat.com>
29 */
30#include <linux/module.h>
31#include <linux/console.h>
32#include <linux/vt_kern.h>
33
34#include <drm/drmP.h>
35#include <drm/drm_crtc_helper.h>
36
37#include "vbox_drv.h"
38
39int vbox_modeset = -1;
40
41MODULE_PARM_DESC(modeset, "Disable/Enable modesetting");
42module_param_named(modeset, vbox_modeset, int, 0400);
43
44static struct drm_driver driver;
45
46static const struct pci_device_id pciidlist[] = {
47 { 0x80ee, 0xbeef, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
48 { 0, 0, 0},
49};
50MODULE_DEVICE_TABLE(pci, pciidlist);
51
52static int vbox_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
53{
54 return drm_get_pci_dev(pdev, ent, &driver);
55}
56
57static void vbox_pci_remove(struct pci_dev *pdev)
58{
59 struct drm_device *dev = pci_get_drvdata(pdev);
60
61 drm_put_dev(dev);
62}
63
64static int vbox_drm_freeze(struct drm_device *dev)
65{
66 struct vbox_private *vbox = dev->dev_private;
67
68 drm_kms_helper_poll_disable(dev);
69
70 pci_save_state(dev->pdev);
71
72 drm_fb_helper_set_suspend_unlocked(&vbox->fbdev->helper, true);
73
74 return 0;
75}
76
77static int vbox_drm_thaw(struct drm_device *dev)
78{
79 struct vbox_private *vbox = dev->dev_private;
80
81 drm_mode_config_reset(dev);
82 drm_helper_resume_force_mode(dev);
83 drm_fb_helper_set_suspend_unlocked(&vbox->fbdev->helper, false);
84
85 return 0;
86}
87
88static int vbox_drm_resume(struct drm_device *dev)
89{
90 int ret;
91
92 if (pci_enable_device(dev->pdev))
93 return -EIO;
94
95 ret = vbox_drm_thaw(dev);
96 if (ret)
97 return ret;
98
99 drm_kms_helper_poll_enable(dev);
100
101 return 0;
102}
103
104static int vbox_pm_suspend(struct device *dev)
105{
106 struct pci_dev *pdev = to_pci_dev(dev);
107 struct drm_device *ddev = pci_get_drvdata(pdev);
108 int error;
109
110 error = vbox_drm_freeze(ddev);
111 if (error)
112 return error;
113
114 pci_disable_device(pdev);
115 pci_set_power_state(pdev, PCI_D3hot);
116
117 return 0;
118}
119
120static int vbox_pm_resume(struct device *dev)
121{
122 struct drm_device *ddev = pci_get_drvdata(to_pci_dev(dev));
123
124 return vbox_drm_resume(ddev);
125}
126
127static int vbox_pm_freeze(struct device *dev)
128{
129 struct pci_dev *pdev = to_pci_dev(dev);
130 struct drm_device *ddev = pci_get_drvdata(pdev);
131
132 if (!ddev || !ddev->dev_private)
133 return -ENODEV;
134
135 return vbox_drm_freeze(ddev);
136}
137
138static int vbox_pm_thaw(struct device *dev)
139{
140 struct drm_device *ddev = pci_get_drvdata(to_pci_dev(dev));
141
142 return vbox_drm_thaw(ddev);
143}
144
145static int vbox_pm_poweroff(struct device *dev)
146{
147 struct drm_device *ddev = pci_get_drvdata(to_pci_dev(dev));
148
149 return vbox_drm_freeze(ddev);
150}
151
152static const struct dev_pm_ops vbox_pm_ops = {
153 .suspend = vbox_pm_suspend,
154 .resume = vbox_pm_resume,
155 .freeze = vbox_pm_freeze,
156 .thaw = vbox_pm_thaw,
157 .poweroff = vbox_pm_poweroff,
158 .restore = vbox_pm_resume,
159};
160
161static struct pci_driver vbox_pci_driver = {
162 .name = DRIVER_NAME,
163 .id_table = pciidlist,
164 .probe = vbox_pci_probe,
165 .remove = vbox_pci_remove,
166 .driver.pm = &vbox_pm_ops,
167};
168
169static const struct file_operations vbox_fops = {
170 .owner = THIS_MODULE,
171 .open = drm_open,
172 .release = drm_release,
173 .unlocked_ioctl = drm_ioctl,
174 .mmap = vbox_mmap,
175 .poll = drm_poll,
176#ifdef CONFIG_COMPAT
177 .compat_ioctl = drm_compat_ioctl,
178#endif
179 .read = drm_read,
180};
181
182static int vbox_master_set(struct drm_device *dev,
183 struct drm_file *file_priv, bool from_open)
184{
185 struct vbox_private *vbox = dev->dev_private;
186
187 /*
188 * We do not yet know whether the new owner can handle hotplug, so we
189 * do not advertise dynamic modes on the first query and send a
190 * tentative hotplug notification after that to see if they query again.
191 */
192 vbox->initial_mode_queried = false;
193
194 mutex_lock(&vbox->hw_mutex);
195 /*
196 * Disable VBVA when someone releases master in case the next person
197 * tries tries to do VESA.
198 */
199 /** @todo work out if anyone is likely to and whether it will work. */
200 /*
201 * Update: we also disable it because if the new master does not do
202 * dirty rectangle reporting (e.g. old versions of Plymouth) then at
203 * least the first screen will still be updated. We enable it as soon
204 * as we receive a dirty rectangle report.
205 */
206 vbox_disable_accel(vbox);
207 mutex_unlock(&vbox->hw_mutex);
208
209 return 0;
210}
211
212static void vbox_master_drop(struct drm_device *dev, struct drm_file *file_priv)
213{
214 struct vbox_private *vbox = dev->dev_private;
215
216 /* See vbox_master_set() */
217 vbox->initial_mode_queried = false;
218
219 mutex_lock(&vbox->hw_mutex);
220 vbox_disable_accel(vbox);
221 mutex_unlock(&vbox->hw_mutex);
222}
223
224static struct drm_driver driver = {
225 .driver_features =
226 DRIVER_MODESET | DRIVER_GEM | DRIVER_HAVE_IRQ | DRIVER_IRQ_SHARED |
227 DRIVER_PRIME,
228 .dev_priv_size = 0,
229
230 .load = vbox_driver_load,
231 .unload = vbox_driver_unload,
232 .lastclose = vbox_driver_lastclose,
233 .master_set = vbox_master_set,
234 .master_drop = vbox_master_drop,
235 .set_busid = drm_pci_set_busid,
236
237 .fops = &vbox_fops,
238 .irq_handler = vbox_irq_handler,
239 .name = DRIVER_NAME,
240 .desc = DRIVER_DESC,
241 .date = DRIVER_DATE,
242 .major = DRIVER_MAJOR,
243 .minor = DRIVER_MINOR,
244 .patchlevel = DRIVER_PATCHLEVEL,
245
246 .gem_free_object = vbox_gem_free_object,
247 .dumb_create = vbox_dumb_create,
248 .dumb_map_offset = vbox_dumb_mmap_offset,
249 .dumb_destroy = drm_gem_dumb_destroy,
250 .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
251 .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
252 .gem_prime_export = drm_gem_prime_export,
253 .gem_prime_import = drm_gem_prime_import,
254 .gem_prime_pin = vbox_gem_prime_pin,
255 .gem_prime_unpin = vbox_gem_prime_unpin,
256 .gem_prime_get_sg_table = vbox_gem_prime_get_sg_table,
257 .gem_prime_import_sg_table = vbox_gem_prime_import_sg_table,
258 .gem_prime_vmap = vbox_gem_prime_vmap,
259 .gem_prime_vunmap = vbox_gem_prime_vunmap,
260 .gem_prime_mmap = vbox_gem_prime_mmap,
261};
262
263static int __init vbox_init(void)
264{
265#ifdef CONFIG_VGA_CONSOLE
266 if (vgacon_text_force() && vbox_modeset == -1)
267 return -EINVAL;
268#endif
269
270 if (vbox_modeset == 0)
271 return -EINVAL;
272
273 return drm_pci_init(&driver, &vbox_pci_driver);
274}
275
276static void __exit vbox_exit(void)
277{
278 drm_pci_exit(&driver, &vbox_pci_driver);
279}
280
281module_init(vbox_init);
282module_exit(vbox_exit);
283
284MODULE_AUTHOR("Oracle Corporation");
285MODULE_DESCRIPTION(DRIVER_DESC);
286MODULE_LICENSE("GPL and additional rights");
diff --git a/drivers/staging/vboxvideo/vbox_drv.h b/drivers/staging/vboxvideo/vbox_drv.h
new file mode 100644
index 000000000000..4b9302703b36
--- /dev/null
+++ b/drivers/staging/vboxvideo/vbox_drv.h
@@ -0,0 +1,296 @@
1/*
2 * Copyright (C) 2013-2017 Oracle Corporation
3 * This file is based on ast_drv.h
4 * Copyright 2012 Red Hat Inc.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the
8 * "Software"), to deal in the Software without restriction, including
9 * without limitation the rights to use, copy, modify, merge, publish,
10 * distribute, sub license, and/or sell copies of the Software, and to
11 * permit persons to whom the Software is furnished to do so, subject to
12 * the following conditions:
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
17 * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
18 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20 * USE OR OTHER DEALINGS IN THE SOFTWARE.
21 *
22 * The above copyright notice and this permission notice (including the
23 * next paragraph) shall be included in all copies or substantial portions
24 * of the Software.
25 *
26 * Authors: Dave Airlie <airlied@redhat.com>
27 * Michael Thayer <michael.thayer@oracle.com,
28 * Hans de Goede <hdegoede@redhat.com>
29 */
30#ifndef __VBOX_DRV_H__
31#define __VBOX_DRV_H__
32
33#include <linux/genalloc.h>
34#include <linux/io.h>
35#include <linux/string.h>
36#include <linux/version.h>
37
38#include <drm/drmP.h>
39#include <drm/drm_encoder.h>
40#include <drm/drm_fb_helper.h>
41#include <drm/drm_gem.h>
42
43#include <drm/ttm/ttm_bo_api.h>
44#include <drm/ttm/ttm_bo_driver.h>
45#include <drm/ttm/ttm_placement.h>
46#include <drm/ttm/ttm_memory.h>
47#include <drm/ttm/ttm_module.h>
48
49#include "vboxvideo_guest.h"
50#include "vboxvideo_vbe.h"
51#include "hgsmi_ch_setup.h"
52
53#define DRIVER_NAME "vboxvideo"
54#define DRIVER_DESC "Oracle VM VirtualBox Graphics Card"
55#define DRIVER_DATE "20130823"
56
57#define DRIVER_MAJOR 1
58#define DRIVER_MINOR 0
59#define DRIVER_PATCHLEVEL 0
60
61#define VBOX_MAX_CURSOR_WIDTH 64
62#define VBOX_MAX_CURSOR_HEIGHT 64
63#define CURSOR_PIXEL_COUNT (VBOX_MAX_CURSOR_WIDTH * VBOX_MAX_CURSOR_HEIGHT)
64#define CURSOR_DATA_SIZE (CURSOR_PIXEL_COUNT * 4 + CURSOR_PIXEL_COUNT / 8)
65
66#define VBOX_MAX_SCREENS 32
67
68#define GUEST_HEAP_OFFSET(vbox) ((vbox)->full_vram_size - \
69 VBVA_ADAPTER_INFORMATION_SIZE)
70#define GUEST_HEAP_SIZE VBVA_ADAPTER_INFORMATION_SIZE
71#define GUEST_HEAP_USABLE_SIZE (VBVA_ADAPTER_INFORMATION_SIZE - \
72 sizeof(struct hgsmi_host_flags))
73#define HOST_FLAGS_OFFSET GUEST_HEAP_USABLE_SIZE
74
75struct vbox_fbdev;
76
77struct vbox_private {
78 struct drm_device *dev;
79
80 u8 __iomem *guest_heap;
81 u8 __iomem *vbva_buffers;
82 struct gen_pool *guest_pool;
83 struct vbva_buf_ctx *vbva_info;
84 bool any_pitch;
85 u32 num_crtcs;
86 /** Amount of available VRAM, including space used for buffers. */
87 u32 full_vram_size;
88 /** Amount of available VRAM, not including space used for buffers. */
89 u32 available_vram_size;
90 /** Array of structures for receiving mode hints. */
91 struct vbva_modehint *last_mode_hints;
92
93 struct vbox_fbdev *fbdev;
94
95 int fb_mtrr;
96
97 struct {
98 struct drm_global_reference mem_global_ref;
99 struct ttm_bo_global_ref bo_global_ref;
100 struct ttm_bo_device bdev;
101 } ttm;
102
103 struct mutex hw_mutex; /* protects modeset and accel/vbva accesses */
104 /**
105 * We decide whether or not user-space supports display hot-plug
106 * depending on whether they react to a hot-plug event after the initial
107 * mode query.
108 */
109 bool initial_mode_queried;
110 struct work_struct hotplug_work;
111 u32 input_mapping_width;
112 u32 input_mapping_height;
113 /**
114 * Is user-space using an X.Org-style layout of one large frame-buffer
115 * encompassing all screen ones or is the fbdev console active?
116 */
117 bool single_framebuffer;
118 u32 cursor_width;
119 u32 cursor_height;
120 u32 cursor_hot_x;
121 u32 cursor_hot_y;
122 size_t cursor_data_size;
123 u8 cursor_data[CURSOR_DATA_SIZE];
124};
125
126#undef CURSOR_PIXEL_COUNT
127#undef CURSOR_DATA_SIZE
128
129int vbox_driver_load(struct drm_device *dev, unsigned long flags);
130void vbox_driver_unload(struct drm_device *dev);
131void vbox_driver_lastclose(struct drm_device *dev);
132
133struct vbox_gem_object;
134
135struct vbox_connector {
136 struct drm_connector base;
137 char name[32];
138 struct vbox_crtc *vbox_crtc;
139 struct {
140 u16 width;
141 u16 height;
142 bool disconnected;
143 } mode_hint;
144};
145
146struct vbox_crtc {
147 struct drm_crtc base;
148 bool blanked;
149 bool disconnected;
150 unsigned int crtc_id;
151 u32 fb_offset;
152 bool cursor_enabled;
153 u16 x_hint;
154 u16 y_hint;
155};
156
157struct vbox_encoder {
158 struct drm_encoder base;
159};
160
161struct vbox_framebuffer {
162 struct drm_framebuffer base;
163 struct drm_gem_object *obj;
164};
165
166struct vbox_fbdev {
167 struct drm_fb_helper helper;
168 struct vbox_framebuffer afb;
169 int size;
170 struct ttm_bo_kmap_obj mapping;
171 int x1, y1, x2, y2; /* dirty rect */
172 spinlock_t dirty_lock;
173};
174
175#define to_vbox_crtc(x) container_of(x, struct vbox_crtc, base)
176#define to_vbox_connector(x) container_of(x, struct vbox_connector, base)
177#define to_vbox_encoder(x) container_of(x, struct vbox_encoder, base)
178#define to_vbox_framebuffer(x) container_of(x, struct vbox_framebuffer, base)
179
180int vbox_mode_init(struct drm_device *dev);
181void vbox_mode_fini(struct drm_device *dev);
182
183#define DRM_MODE_FB_CMD drm_mode_fb_cmd2
184#define CRTC_FB(crtc) ((crtc)->primary->fb)
185
186void vbox_enable_accel(struct vbox_private *vbox);
187void vbox_disable_accel(struct vbox_private *vbox);
188void vbox_report_caps(struct vbox_private *vbox);
189
190void vbox_framebuffer_dirty_rectangles(struct drm_framebuffer *fb,
191 struct drm_clip_rect *rects,
192 unsigned int num_rects);
193
194int vbox_framebuffer_init(struct drm_device *dev,
195 struct vbox_framebuffer *vbox_fb,
196 const struct DRM_MODE_FB_CMD *mode_cmd,
197 struct drm_gem_object *obj);
198
199int vbox_fbdev_init(struct drm_device *dev);
200void vbox_fbdev_fini(struct drm_device *dev);
201void vbox_fbdev_set_base(struct vbox_private *vbox, unsigned long gpu_addr);
202
203struct vbox_bo {
204 struct ttm_buffer_object bo;
205 struct ttm_placement placement;
206 struct ttm_bo_kmap_obj kmap;
207 struct drm_gem_object gem;
208 struct ttm_place placements[3];
209 int pin_count;
210};
211
212#define gem_to_vbox_bo(gobj) container_of((gobj), struct vbox_bo, gem)
213
214static inline struct vbox_bo *vbox_bo(struct ttm_buffer_object *bo)
215{
216 return container_of(bo, struct vbox_bo, bo);
217}
218
219#define to_vbox_obj(x) container_of(x, struct vbox_gem_object, base)
220
221int vbox_dumb_create(struct drm_file *file,
222 struct drm_device *dev,
223 struct drm_mode_create_dumb *args);
224
225void vbox_gem_free_object(struct drm_gem_object *obj);
226int vbox_dumb_mmap_offset(struct drm_file *file,
227 struct drm_device *dev,
228 u32 handle, u64 *offset);
229
230#define DRM_FILE_PAGE_OFFSET (0x10000000ULL >> PAGE_SHIFT)
231
232int vbox_mm_init(struct vbox_private *vbox);
233void vbox_mm_fini(struct vbox_private *vbox);
234
235int vbox_bo_create(struct drm_device *dev, int size, int align,
236 u32 flags, struct vbox_bo **pvboxbo);
237
238int vbox_gem_create(struct drm_device *dev,
239 u32 size, bool iskernel, struct drm_gem_object **obj);
240
241int vbox_bo_pin(struct vbox_bo *bo, u32 pl_flag, u64 *gpu_addr);
242int vbox_bo_unpin(struct vbox_bo *bo);
243
244static inline int vbox_bo_reserve(struct vbox_bo *bo, bool no_wait)
245{
246 int ret;
247
248 ret = ttm_bo_reserve(&bo->bo, true, no_wait, NULL);
249 if (ret) {
250 if (ret != -ERESTARTSYS && ret != -EBUSY)
251 DRM_ERROR("reserve failed %p\n", bo);
252 return ret;
253 }
254 return 0;
255}
256
257static inline void vbox_bo_unreserve(struct vbox_bo *bo)
258{
259 ttm_bo_unreserve(&bo->bo);
260}
261
262void vbox_ttm_placement(struct vbox_bo *bo, int domain);
263int vbox_bo_push_sysram(struct vbox_bo *bo);
264int vbox_mmap(struct file *filp, struct vm_area_struct *vma);
265
266/* vbox_prime.c */
267int vbox_gem_prime_pin(struct drm_gem_object *obj);
268void vbox_gem_prime_unpin(struct drm_gem_object *obj);
269struct sg_table *vbox_gem_prime_get_sg_table(struct drm_gem_object *obj);
270struct drm_gem_object *vbox_gem_prime_import_sg_table(
271 struct drm_device *dev, struct dma_buf_attachment *attach,
272 struct sg_table *table);
273void *vbox_gem_prime_vmap(struct drm_gem_object *obj);
274void vbox_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr);
275int vbox_gem_prime_mmap(struct drm_gem_object *obj,
276 struct vm_area_struct *area);
277
278/* vbox_irq.c */
279int vbox_irq_init(struct vbox_private *vbox);
280void vbox_irq_fini(struct vbox_private *vbox);
281void vbox_report_hotplug(struct vbox_private *vbox);
282irqreturn_t vbox_irq_handler(int irq, void *arg);
283
284/* vbox_hgsmi.c */
285void *hgsmi_buffer_alloc(struct gen_pool *guest_pool, size_t size,
286 u8 channel, u16 channel_info);
287void hgsmi_buffer_free(struct gen_pool *guest_pool, void *buf);
288int hgsmi_buffer_submit(struct gen_pool *guest_pool, void *buf);
289
290static inline void vbox_write_ioport(u16 index, u16 data)
291{
292 outw(index, VBE_DISPI_IOPORT_INDEX);
293 outw(data, VBE_DISPI_IOPORT_DATA);
294}
295
296#endif
diff --git a/drivers/staging/vboxvideo/vbox_err.h b/drivers/staging/vboxvideo/vbox_err.h
new file mode 100644
index 000000000000..562db8630eb0
--- /dev/null
+++ b/drivers/staging/vboxvideo/vbox_err.h
@@ -0,0 +1,50 @@
1/*
2 * Copyright (C) 2017 Oracle Corporation
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 * OTHER DEALINGS IN THE SOFTWARE.
21 */
22
23#ifndef __VBOX_ERR_H__
24#define __VBOX_ERR_H__
25
26/**
27 * @name VirtualBox virtual-hardware error macros
28 * @{
29 */
30
31#define VINF_SUCCESS 0
32#define VERR_INVALID_PARAMETER (-2)
33#define VERR_INVALID_POINTER (-6)
34#define VERR_NO_MEMORY (-8)
35#define VERR_NOT_IMPLEMENTED (-12)
36#define VERR_INVALID_FUNCTION (-36)
37#define VERR_NOT_SUPPORTED (-37)
38#define VERR_TOO_MUCH_DATA (-42)
39#define VERR_INVALID_STATE (-79)
40#define VERR_OUT_OF_RESOURCES (-80)
41#define VERR_ALREADY_EXISTS (-105)
42#define VERR_INTERNAL_ERROR (-225)
43
44#define RT_SUCCESS_NP(rc) ((int)(rc) >= VINF_SUCCESS)
45#define RT_SUCCESS(rc) (likely(RT_SUCCESS_NP(rc)))
46#define RT_FAILURE(rc) (unlikely(!RT_SUCCESS_NP(rc)))
47
48/** @} */
49
50#endif
diff --git a/drivers/staging/vboxvideo/vbox_fb.c b/drivers/staging/vboxvideo/vbox_fb.c
new file mode 100644
index 000000000000..35f6d9f8c203
--- /dev/null
+++ b/drivers/staging/vboxvideo/vbox_fb.c
@@ -0,0 +1,412 @@
1/*
2 * Copyright (C) 2013-2017 Oracle Corporation
3 * This file is based on ast_fb.c
4 * Copyright 2012 Red Hat Inc.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the
8 * "Software"), to deal in the Software without restriction, including
9 * without limitation the rights to use, copy, modify, merge, publish,
10 * distribute, sub license, and/or sell copies of the Software, and to
11 * permit persons to whom the Software is furnished to do so, subject to
12 * the following conditions:
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
17 * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
18 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20 * USE OR OTHER DEALINGS IN THE SOFTWARE.
21 *
22 * The above copyright notice and this permission notice (including the
23 * next paragraph) shall be included in all copies or substantial portions
24 * of the Software.
25 *
26 * Authors: Dave Airlie <airlied@redhat.com>
27 * Michael Thayer <michael.thayer@oracle.com,
28 */
29#include <linux/module.h>
30#include <linux/kernel.h>
31#include <linux/errno.h>
32#include <linux/string.h>
33#include <linux/mm.h>
34#include <linux/tty.h>
35#include <linux/sysrq.h>
36#include <linux/delay.h>
37#include <linux/fb.h>
38#include <linux/init.h>
39
40#include <drm/drmP.h>
41#include <drm/drm_crtc.h>
42#include <drm/drm_fb_helper.h>
43#include <drm/drm_crtc_helper.h>
44
45#include "vbox_drv.h"
46#include "vboxvideo.h"
47
48#define VBOX_DIRTY_DELAY (HZ / 30)
49/**
50 * Tell the host about dirty rectangles to update.
51 */
52static void vbox_dirty_update(struct vbox_fbdev *fbdev,
53 int x, int y, int width, int height)
54{
55 struct drm_gem_object *obj;
56 struct vbox_bo *bo;
57 int ret = -EBUSY;
58 bool store_for_later = false;
59 int x2, y2;
60 unsigned long flags;
61 struct drm_clip_rect rect;
62
63 obj = fbdev->afb.obj;
64 bo = gem_to_vbox_bo(obj);
65
66 /*
67 * try and reserve the BO, if we fail with busy
68 * then the BO is being moved and we should
69 * store up the damage until later.
70 */
71 if (drm_can_sleep())
72 ret = vbox_bo_reserve(bo, true);
73 if (ret) {
74 if (ret != -EBUSY)
75 return;
76
77 store_for_later = true;
78 }
79
80 x2 = x + width - 1;
81 y2 = y + height - 1;
82 spin_lock_irqsave(&fbdev->dirty_lock, flags);
83
84 if (fbdev->y1 < y)
85 y = fbdev->y1;
86 if (fbdev->y2 > y2)
87 y2 = fbdev->y2;
88 if (fbdev->x1 < x)
89 x = fbdev->x1;
90 if (fbdev->x2 > x2)
91 x2 = fbdev->x2;
92
93 if (store_for_later) {
94 fbdev->x1 = x;
95 fbdev->x2 = x2;
96 fbdev->y1 = y;
97 fbdev->y2 = y2;
98 spin_unlock_irqrestore(&fbdev->dirty_lock, flags);
99 return;
100 }
101
102 fbdev->x1 = INT_MAX;
103 fbdev->y1 = INT_MAX;
104 fbdev->x2 = 0;
105 fbdev->y2 = 0;
106
107 spin_unlock_irqrestore(&fbdev->dirty_lock, flags);
108
109 /*
110 * Not sure why the original code subtracted 1 here, but I will keep
111 * it that way to avoid unnecessary differences.
112 */
113 rect.x1 = x;
114 rect.x2 = x2 + 1;
115 rect.y1 = y;
116 rect.y2 = y2 + 1;
117 vbox_framebuffer_dirty_rectangles(&fbdev->afb.base, &rect, 1);
118
119 vbox_bo_unreserve(bo);
120}
121
122#ifdef CONFIG_FB_DEFERRED_IO
123static void vbox_deferred_io(struct fb_info *info, struct list_head *pagelist)
124{
125 struct vbox_fbdev *fbdev = info->par;
126 unsigned long start, end, min, max;
127 struct page *page;
128 int y1, y2;
129
130 min = ULONG_MAX;
131 max = 0;
132 list_for_each_entry(page, pagelist, lru) {
133 start = page->index << PAGE_SHIFT;
134 end = start + PAGE_SIZE - 1;
135 min = min(min, start);
136 max = max(max, end);
137 }
138
139 if (min < max) {
140 y1 = min / info->fix.line_length;
141 y2 = (max / info->fix.line_length) + 1;
142 DRM_INFO("%s: Calling dirty update: 0, %d, %d, %d\n",
143 __func__, y1, info->var.xres, y2 - y1 - 1);
144 vbox_dirty_update(fbdev, 0, y1, info->var.xres, y2 - y1 - 1);
145 }
146}
147
148static struct fb_deferred_io vbox_defio = {
149 .delay = VBOX_DIRTY_DELAY,
150 .deferred_io = vbox_deferred_io,
151};
152#endif
153
154static void vbox_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
155{
156 struct vbox_fbdev *fbdev = info->par;
157
158 sys_fillrect(info, rect);
159 vbox_dirty_update(fbdev, rect->dx, rect->dy, rect->width, rect->height);
160}
161
162static void vbox_copyarea(struct fb_info *info, const struct fb_copyarea *area)
163{
164 struct vbox_fbdev *fbdev = info->par;
165
166 sys_copyarea(info, area);
167 vbox_dirty_update(fbdev, area->dx, area->dy, area->width, area->height);
168}
169
170static void vbox_imageblit(struct fb_info *info, const struct fb_image *image)
171{
172 struct vbox_fbdev *fbdev = info->par;
173
174 sys_imageblit(info, image);
175 vbox_dirty_update(fbdev, image->dx, image->dy, image->width,
176 image->height);
177}
178
179static struct fb_ops vboxfb_ops = {
180 .owner = THIS_MODULE,
181 .fb_check_var = drm_fb_helper_check_var,
182 .fb_set_par = drm_fb_helper_set_par,
183 .fb_fillrect = vbox_fillrect,
184 .fb_copyarea = vbox_copyarea,
185 .fb_imageblit = vbox_imageblit,
186 .fb_pan_display = drm_fb_helper_pan_display,
187 .fb_blank = drm_fb_helper_blank,
188 .fb_setcmap = drm_fb_helper_setcmap,
189 .fb_debug_enter = drm_fb_helper_debug_enter,
190 .fb_debug_leave = drm_fb_helper_debug_leave,
191};
192
193static int vboxfb_create_object(struct vbox_fbdev *fbdev,
194 struct DRM_MODE_FB_CMD *mode_cmd,
195 struct drm_gem_object **gobj_p)
196{
197 struct drm_device *dev = fbdev->helper.dev;
198 u32 size;
199 struct drm_gem_object *gobj;
200 u32 pitch = mode_cmd->pitches[0];
201 int ret;
202
203 size = pitch * mode_cmd->height;
204 ret = vbox_gem_create(dev, size, true, &gobj);
205 if (ret)
206 return ret;
207
208 *gobj_p = gobj;
209
210 return 0;
211}
212
213static int vboxfb_create(struct drm_fb_helper *helper,
214 struct drm_fb_helper_surface_size *sizes)
215{
216 struct vbox_fbdev *fbdev =
217 container_of(helper, struct vbox_fbdev, helper);
218 struct drm_device *dev = fbdev->helper.dev;
219 struct DRM_MODE_FB_CMD mode_cmd;
220 struct drm_framebuffer *fb;
221 struct fb_info *info;
222 struct device *device = &dev->pdev->dev;
223 struct drm_gem_object *gobj;
224 struct vbox_bo *bo;
225 int size, ret;
226 u32 pitch;
227
228 mode_cmd.width = sizes->surface_width;
229 mode_cmd.height = sizes->surface_height;
230 pitch = mode_cmd.width * ((sizes->surface_bpp + 7) / 8);
231 mode_cmd.pixel_format = drm_mode_legacy_fb_format(sizes->surface_bpp,
232 sizes->surface_depth);
233 mode_cmd.pitches[0] = pitch;
234
235 size = pitch * mode_cmd.height;
236
237 ret = vboxfb_create_object(fbdev, &mode_cmd, &gobj);
238 if (ret) {
239 DRM_ERROR("failed to create fbcon backing object %d\n", ret);
240 return ret;
241 }
242
243 ret = vbox_framebuffer_init(dev, &fbdev->afb, &mode_cmd, gobj);
244 if (ret)
245 return ret;
246
247 bo = gem_to_vbox_bo(gobj);
248
249 ret = vbox_bo_reserve(bo, false);
250 if (ret)
251 return ret;
252
253 ret = vbox_bo_pin(bo, TTM_PL_FLAG_VRAM, NULL);
254 if (ret) {
255 vbox_bo_unreserve(bo);
256 return ret;
257 }
258
259 ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.num_pages, &bo->kmap);
260 vbox_bo_unreserve(bo);
261 if (ret) {
262 DRM_ERROR("failed to kmap fbcon\n");
263 return ret;
264 }
265
266 info = framebuffer_alloc(0, device);
267 if (!info)
268 return -ENOMEM;
269 info->par = fbdev;
270
271 fbdev->size = size;
272
273 fb = &fbdev->afb.base;
274 fbdev->helper.fb = fb;
275 fbdev->helper.fbdev = info;
276
277 strcpy(info->fix.id, "vboxdrmfb");
278
279 /*
280 * The last flag forces a mode set on VT switches even if the kernel
281 * does not think it is needed.
282 */
283 info->flags = FBINFO_DEFAULT | FBINFO_CAN_FORCE_OUTPUT |
284 FBINFO_MISC_ALWAYS_SETPAR;
285 info->fbops = &vboxfb_ops;
286
287 ret = fb_alloc_cmap(&info->cmap, 256, 0);
288 if (ret)
289 return -ENOMEM;
290
291 /*
292 * This seems to be done for safety checking that the framebuffer
293 * is not registered twice by different drivers.
294 */
295 info->apertures = alloc_apertures(1);
296 if (!info->apertures)
297 return -ENOMEM;
298 info->apertures->ranges[0].base = pci_resource_start(dev->pdev, 0);
299 info->apertures->ranges[0].size = pci_resource_len(dev->pdev, 0);
300
301 drm_fb_helper_fill_fix(info, fb->pitches[0], fb->format->depth);
302 drm_fb_helper_fill_var(info, &fbdev->helper, sizes->fb_width,
303 sizes->fb_height);
304
305 info->screen_base = bo->kmap.virtual;
306 info->screen_size = size;
307
308#ifdef CONFIG_FB_DEFERRED_IO
309 info->fbdefio = &vbox_defio;
310 fb_deferred_io_init(info);
311#endif
312
313 info->pixmap.flags = FB_PIXMAP_SYSTEM;
314
315 DRM_DEBUG_KMS("allocated %dx%d\n", fb->width, fb->height);
316
317 return 0;
318}
319
320static void vbox_fb_gamma_set(struct drm_crtc *crtc, u16 red, u16 green,
321 u16 blue, int regno)
322{
323}
324
325static void vbox_fb_gamma_get(struct drm_crtc *crtc, u16 *red, u16 *green,
326 u16 *blue, int regno)
327{
328 *red = regno;
329 *green = regno;
330 *blue = regno;
331}
332
333static struct drm_fb_helper_funcs vbox_fb_helper_funcs = {
334 .gamma_set = vbox_fb_gamma_set,
335 .gamma_get = vbox_fb_gamma_get,
336 .fb_probe = vboxfb_create,
337};
338
339void vbox_fbdev_fini(struct drm_device *dev)
340{
341 struct vbox_private *vbox = dev->dev_private;
342 struct vbox_fbdev *fbdev = vbox->fbdev;
343 struct vbox_framebuffer *afb = &fbdev->afb;
344
345 drm_fb_helper_unregister_fbi(&fbdev->helper);
346
347 if (afb->obj) {
348 struct vbox_bo *bo = gem_to_vbox_bo(afb->obj);
349
350 if (!vbox_bo_reserve(bo, false)) {
351 if (bo->kmap.virtual)
352 ttm_bo_kunmap(&bo->kmap);
353 /*
354 * QXL does this, but is it really needed before
355 * freeing?
356 */
357 if (bo->pin_count)
358 vbox_bo_unpin(bo);
359 vbox_bo_unreserve(bo);
360 }
361 drm_gem_object_unreference_unlocked(afb->obj);
362 afb->obj = NULL;
363 }
364 drm_fb_helper_fini(&fbdev->helper);
365
366 drm_framebuffer_unregister_private(&afb->base);
367 drm_framebuffer_cleanup(&afb->base);
368}
369
370int vbox_fbdev_init(struct drm_device *dev)
371{
372 struct vbox_private *vbox = dev->dev_private;
373 struct vbox_fbdev *fbdev;
374 int ret;
375
376 fbdev = devm_kzalloc(dev->dev, sizeof(*fbdev), GFP_KERNEL);
377 if (!fbdev)
378 return -ENOMEM;
379
380 vbox->fbdev = fbdev;
381 spin_lock_init(&fbdev->dirty_lock);
382
383 drm_fb_helper_prepare(dev, &fbdev->helper, &vbox_fb_helper_funcs);
384 ret = drm_fb_helper_init(dev, &fbdev->helper, vbox->num_crtcs);
385 if (ret)
386 return ret;
387
388 ret = drm_fb_helper_single_add_all_connectors(&fbdev->helper);
389 if (ret)
390 goto err_fini;
391
392 /* disable all the possible outputs/crtcs before entering KMS mode */
393 drm_helper_disable_unused_functions(dev);
394
395 ret = drm_fb_helper_initial_config(&fbdev->helper, 32);
396 if (ret)
397 goto err_fini;
398
399 return 0;
400
401err_fini:
402 drm_fb_helper_fini(&fbdev->helper);
403 return ret;
404}
405
406void vbox_fbdev_set_base(struct vbox_private *vbox, unsigned long gpu_addr)
407{
408 struct fb_info *fbdev = vbox->fbdev->helper.fbdev;
409
410 fbdev->fix.smem_start = fbdev->apertures->ranges[0].base + gpu_addr;
411 fbdev->fix.smem_len = vbox->available_vram_size - gpu_addr;
412}
diff --git a/drivers/staging/vboxvideo/vbox_hgsmi.c b/drivers/staging/vboxvideo/vbox_hgsmi.c
new file mode 100644
index 000000000000..822fd31121cb
--- /dev/null
+++ b/drivers/staging/vboxvideo/vbox_hgsmi.c
@@ -0,0 +1,115 @@
1/*
2 * Copyright (C) 2017 Oracle Corporation
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the
6 * "Software"), to deal in the Software without restriction, including
7 * without limitation the rights to use, copy, modify, merge, publish,
8 * distribute, sub license, and/or sell copies of the Software, and to
9 * permit persons to whom the Software is furnished to do so, subject to
10 * the following conditions:
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
15 * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
16 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
17 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
18 * USE OR OTHER DEALINGS IN THE SOFTWARE.
19 *
20 * The above copyright notice and this permission notice (including the
21 * next paragraph) shall be included in all copies or substantial portions
22 * of the Software.
23 *
24 * Authors: Hans de Goede <hdegoede@redhat.com>
25 */
26
27#include "vbox_drv.h"
28#include "vboxvideo_vbe.h"
29#include "hgsmi_defs.h"
30
31/* One-at-a-Time Hash from http://www.burtleburtle.net/bob/hash/doobs.html */
32static u32 hgsmi_hash_process(u32 hash, const u8 *data, int size)
33{
34 while (size--) {
35 hash += *data++;
36 hash += (hash << 10);
37 hash ^= (hash >> 6);
38 }
39
40 return hash;
41}
42
43static u32 hgsmi_hash_end(u32 hash)
44{
45 hash += (hash << 3);
46 hash ^= (hash >> 11);
47 hash += (hash << 15);
48
49 return hash;
50}
51
52/* Not really a checksum but that is the naming used in all vbox code */
53static u32 hgsmi_checksum(u32 offset,
54 const struct hgsmi_buffer_header *header,
55 const struct hgsmi_buffer_tail *tail)
56{
57 u32 checksum;
58
59 checksum = hgsmi_hash_process(0, (u8 *)&offset, sizeof(offset));
60 checksum = hgsmi_hash_process(checksum, (u8 *)header, sizeof(*header));
61 /* 4 -> Do not checksum the checksum itself */
62 checksum = hgsmi_hash_process(checksum, (u8 *)tail, 4);
63
64 return hgsmi_hash_end(checksum);
65}
66
67void *hgsmi_buffer_alloc(struct gen_pool *guest_pool, size_t size,
68 u8 channel, u16 channel_info)
69{
70 struct hgsmi_buffer_header *h;
71 struct hgsmi_buffer_tail *t;
72 size_t total_size;
73 dma_addr_t offset;
74
75 total_size = size + sizeof(*h) + sizeof(*t);
76 h = gen_pool_dma_alloc(guest_pool, total_size, &offset);
77 if (!h)
78 return NULL;
79
80 t = (struct hgsmi_buffer_tail *)((u8 *)h + sizeof(*h) + size);
81
82 h->flags = HGSMI_BUFFER_HEADER_F_SEQ_SINGLE;
83 h->data_size = size;
84 h->channel = channel;
85 h->channel_info = channel_info;
86 memset(&h->u.header_data, 0, sizeof(h->u.header_data));
87
88 t->reserved = 0;
89 t->checksum = hgsmi_checksum(offset, h, t);
90
91 return (u8 *)h + sizeof(*h);
92}
93
94void hgsmi_buffer_free(struct gen_pool *guest_pool, void *buf)
95{
96 struct hgsmi_buffer_header *h =
97 (struct hgsmi_buffer_header *)((u8 *)buf - sizeof(*h));
98 size_t total_size = h->data_size + sizeof(*h) +
99 sizeof(struct hgsmi_buffer_tail);
100
101 gen_pool_free(guest_pool, (unsigned long)h, total_size);
102}
103
104int hgsmi_buffer_submit(struct gen_pool *guest_pool, void *buf)
105{
106 phys_addr_t offset;
107
108 offset = gen_pool_virt_to_phys(guest_pool, (unsigned long)buf -
109 sizeof(struct hgsmi_buffer_header));
110 outl(offset, VGA_PORT_HGSMI_GUEST);
111 /* Make the compiler aware that the host has changed memory. */
112 mb();
113
114 return 0;
115}
diff --git a/drivers/staging/vboxvideo/vbox_irq.c b/drivers/staging/vboxvideo/vbox_irq.c
new file mode 100644
index 000000000000..3ca8bec62ac4
--- /dev/null
+++ b/drivers/staging/vboxvideo/vbox_irq.c
@@ -0,0 +1,197 @@
1/*
2 * Copyright (C) 2016-2017 Oracle Corporation
3 * This file is based on qxl_irq.c
4 * Copyright 2013 Red Hat Inc.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"),
8 * to deal in the Software without restriction, including without limitation
9 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
10 * and/or sell copies of the Software, and to permit persons to whom the
11 * Software is furnished to do so, subject to the following conditions:
12 *
13 * The above copyright notice and this permission notice shall be included in
14 * all copies or substantial portions of the Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
20 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22 * OTHER DEALINGS IN THE SOFTWARE.
23 *
24 * Authors: Dave Airlie
25 * Alon Levy
26 * Michael Thayer <michael.thayer@oracle.com,
27 * Hans de Goede <hdegoede@redhat.com>
28 */
29
30#include <drm/drm_crtc_helper.h>
31
32#include "vbox_drv.h"
33#include "vboxvideo.h"
34
35static void vbox_clear_irq(void)
36{
37 outl((u32)~0, VGA_PORT_HGSMI_HOST);
38}
39
40static u32 vbox_get_flags(struct vbox_private *vbox)
41{
42 return readl(vbox->guest_heap + HOST_FLAGS_OFFSET);
43}
44
45void vbox_report_hotplug(struct vbox_private *vbox)
46{
47 schedule_work(&vbox->hotplug_work);
48}
49
50irqreturn_t vbox_irq_handler(int irq, void *arg)
51{
52 struct drm_device *dev = (struct drm_device *)arg;
53 struct vbox_private *vbox = (struct vbox_private *)dev->dev_private;
54 u32 host_flags = vbox_get_flags(vbox);
55
56 if (!(host_flags & HGSMIHOSTFLAGS_IRQ))
57 return IRQ_NONE;
58
59 /*
60 * Due to a bug in the initial host implementation of hot-plug irqs,
61 * the hot-plug and cursor capability flags were never cleared.
62 * Fortunately we can tell when they would have been set by checking
63 * that the VSYNC flag is not set.
64 */
65 if (host_flags &
66 (HGSMIHOSTFLAGS_HOTPLUG | HGSMIHOSTFLAGS_CURSOR_CAPABILITIES) &&
67 !(host_flags & HGSMIHOSTFLAGS_VSYNC))
68 vbox_report_hotplug(vbox);
69
70 vbox_clear_irq();
71
72 return IRQ_HANDLED;
73}
74
75/**
76 * Check that the position hints provided by the host are suitable for GNOME
77 * shell (i.e. all screens disjoint and hints for all enabled screens) and if
78 * not replace them with default ones. Providing valid hints improves the
79 * chances that we will get a known screen layout for pointer mapping.
80 */
81static void validate_or_set_position_hints(struct vbox_private *vbox)
82{
83 struct vbva_modehint *hintsi, *hintsj;
84 bool valid = true;
85 u16 currentx = 0;
86 int i, j;
87
88 for (i = 0; i < vbox->num_crtcs; ++i) {
89 for (j = 0; j < i; ++j) {
90 hintsi = &vbox->last_mode_hints[i];
91 hintsj = &vbox->last_mode_hints[j];
92
93 if (hintsi->enabled && hintsj->enabled) {
94 if (hintsi->dx >= 0xffff ||
95 hintsi->dy >= 0xffff ||
96 hintsj->dx >= 0xffff ||
97 hintsj->dy >= 0xffff ||
98 (hintsi->dx <
99 hintsj->dx + (hintsj->cx & 0x8fff) &&
100 hintsi->dx + (hintsi->cx & 0x8fff) >
101 hintsj->dx) ||
102 (hintsi->dy <
103 hintsj->dy + (hintsj->cy & 0x8fff) &&
104 hintsi->dy + (hintsi->cy & 0x8fff) >
105 hintsj->dy))
106 valid = false;
107 }
108 }
109 }
110 if (!valid)
111 for (i = 0; i < vbox->num_crtcs; ++i) {
112 if (vbox->last_mode_hints[i].enabled) {
113 vbox->last_mode_hints[i].dx = currentx;
114 vbox->last_mode_hints[i].dy = 0;
115 currentx +=
116 vbox->last_mode_hints[i].cx & 0x8fff;
117 }
118 }
119}
120
121/**
122 * Query the host for the most recent video mode hints.
123 */
124static void vbox_update_mode_hints(struct vbox_private *vbox)
125{
126 struct drm_device *dev = vbox->dev;
127 struct drm_connector *connector;
128 struct vbox_connector *vbox_conn;
129 struct vbva_modehint *hints;
130 u16 flags;
131 bool disconnected;
132 unsigned int crtc_id;
133 int ret;
134
135 ret = hgsmi_get_mode_hints(vbox->guest_pool, vbox->num_crtcs,
136 vbox->last_mode_hints);
137 if (ret) {
138 DRM_ERROR("vboxvideo: hgsmi_get_mode_hints failed: %d\n", ret);
139 return;
140 }
141
142 validate_or_set_position_hints(vbox);
143 drm_modeset_lock_all(dev);
144 list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
145 vbox_conn = to_vbox_connector(connector);
146
147 hints = &vbox->last_mode_hints[vbox_conn->vbox_crtc->crtc_id];
148 if (hints->magic != VBVAMODEHINT_MAGIC)
149 continue;
150
151 disconnected = !(hints->enabled);
152 crtc_id = vbox_conn->vbox_crtc->crtc_id;
153 vbox_conn->mode_hint.width = hints->cx & 0x8fff;
154 vbox_conn->mode_hint.height = hints->cy & 0x8fff;
155 vbox_conn->vbox_crtc->x_hint = hints->dx;
156 vbox_conn->vbox_crtc->y_hint = hints->dy;
157 vbox_conn->mode_hint.disconnected = disconnected;
158
159 if (vbox_conn->vbox_crtc->disconnected == disconnected)
160 continue;
161
162 if (disconnected)
163 flags = VBVA_SCREEN_F_ACTIVE | VBVA_SCREEN_F_DISABLED;
164 else
165 flags = VBVA_SCREEN_F_ACTIVE | VBVA_SCREEN_F_BLANK;
166
167 hgsmi_process_display_info(vbox->guest_pool, crtc_id, 0, 0, 0,
168 hints->cx * 4, hints->cx,
169 hints->cy, 0, flags);
170
171 vbox_conn->vbox_crtc->disconnected = disconnected;
172 }
173 drm_modeset_unlock_all(dev);
174}
175
176static void vbox_hotplug_worker(struct work_struct *work)
177{
178 struct vbox_private *vbox = container_of(work, struct vbox_private,
179 hotplug_work);
180
181 vbox_update_mode_hints(vbox);
182 drm_kms_helper_hotplug_event(vbox->dev);
183}
184
185int vbox_irq_init(struct vbox_private *vbox)
186{
187 INIT_WORK(&vbox->hotplug_work, vbox_hotplug_worker);
188 vbox_update_mode_hints(vbox);
189
190 return drm_irq_install(vbox->dev, vbox->dev->pdev->irq);
191}
192
193void vbox_irq_fini(struct vbox_private *vbox)
194{
195 drm_irq_uninstall(vbox->dev);
196 flush_work(&vbox->hotplug_work);
197}
diff --git a/drivers/staging/vboxvideo/vbox_main.c b/drivers/staging/vboxvideo/vbox_main.c
new file mode 100644
index 000000000000..d0c6ec75a3c7
--- /dev/null
+++ b/drivers/staging/vboxvideo/vbox_main.c
@@ -0,0 +1,534 @@
1/*
2 * Copyright (C) 2013-2017 Oracle Corporation
3 * This file is based on ast_main.c
4 * Copyright 2012 Red Hat Inc.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the
8 * "Software"), to deal in the Software without restriction, including
9 * without limitation the rights to use, copy, modify, merge, publish,
10 * distribute, sub license, and/or sell copies of the Software, and to
11 * permit persons to whom the Software is furnished to do so, subject to
12 * the following conditions:
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
17 * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
18 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20 * USE OR OTHER DEALINGS IN THE SOFTWARE.
21 *
22 * The above copyright notice and this permission notice (including the
23 * next paragraph) shall be included in all copies or substantial portions
24 * of the Software.
25 *
26 * Authors: Dave Airlie <airlied@redhat.com>,
27 * Michael Thayer <michael.thayer@oracle.com,
28 * Hans de Goede <hdegoede@redhat.com>
29 */
30#include <drm/drm_fb_helper.h>
31#include <drm/drm_crtc_helper.h>
32
33#include "vbox_drv.h"
34#include "vbox_err.h"
35#include "vboxvideo_guest.h"
36#include "vboxvideo_vbe.h"
37
38static void vbox_user_framebuffer_destroy(struct drm_framebuffer *fb)
39{
40 struct vbox_framebuffer *vbox_fb = to_vbox_framebuffer(fb);
41
42 if (vbox_fb->obj)
43 drm_gem_object_unreference_unlocked(vbox_fb->obj);
44
45 drm_framebuffer_cleanup(fb);
46 kfree(fb);
47}
48
49void vbox_enable_accel(struct vbox_private *vbox)
50{
51 unsigned int i;
52 struct vbva_buffer *vbva;
53
54 if (!vbox->vbva_info || !vbox->vbva_buffers) {
55 /* Should never happen... */
56 DRM_ERROR("vboxvideo: failed to set up VBVA.\n");
57 return;
58 }
59
60 for (i = 0; i < vbox->num_crtcs; ++i) {
61 if (vbox->vbva_info[i].vbva)
62 continue;
63
64 vbva = (void *)vbox->vbva_buffers + i * VBVA_MIN_BUFFER_SIZE;
65 if (!vbva_enable(&vbox->vbva_info[i],
66 vbox->guest_pool, vbva, i)) {
67 /* very old host or driver error. */
68 DRM_ERROR("vboxvideo: vbva_enable failed\n");
69 return;
70 }
71 }
72}
73
74void vbox_disable_accel(struct vbox_private *vbox)
75{
76 unsigned int i;
77
78 for (i = 0; i < vbox->num_crtcs; ++i)
79 vbva_disable(&vbox->vbva_info[i], vbox->guest_pool, i);
80}
81
82void vbox_report_caps(struct vbox_private *vbox)
83{
84 u32 caps = VBVACAPS_DISABLE_CURSOR_INTEGRATION |
85 VBVACAPS_IRQ | VBVACAPS_USE_VBVA_ONLY;
86
87 if (vbox->initial_mode_queried)
88 caps |= VBVACAPS_VIDEO_MODE_HINTS;
89
90 hgsmi_send_caps_info(vbox->guest_pool, caps);
91}
92
93/**
94 * Send information about dirty rectangles to VBVA. If necessary we enable
95 * VBVA first, as this is normally disabled after a change of master in case
96 * the new master does not send dirty rectangle information (is this even
97 * allowed?)
98 */
99void vbox_framebuffer_dirty_rectangles(struct drm_framebuffer *fb,
100 struct drm_clip_rect *rects,
101 unsigned int num_rects)
102{
103 struct vbox_private *vbox = fb->dev->dev_private;
104 struct drm_crtc *crtc;
105 unsigned int i;
106
107 mutex_lock(&vbox->hw_mutex);
108 list_for_each_entry(crtc, &fb->dev->mode_config.crtc_list, head) {
109 if (CRTC_FB(crtc) != fb)
110 continue;
111
112 vbox_enable_accel(vbox);
113
114 for (i = 0; i < num_rects; ++i) {
115 struct vbva_cmd_hdr cmd_hdr;
116 unsigned int crtc_id = to_vbox_crtc(crtc)->crtc_id;
117
118 if ((rects[i].x1 > crtc->x + crtc->hwmode.hdisplay) ||
119 (rects[i].y1 > crtc->y + crtc->hwmode.vdisplay) ||
120 (rects[i].x2 < crtc->x) ||
121 (rects[i].y2 < crtc->y))
122 continue;
123
124 cmd_hdr.x = (s16)rects[i].x1;
125 cmd_hdr.y = (s16)rects[i].y1;
126 cmd_hdr.w = (u16)rects[i].x2 - rects[i].x1;
127 cmd_hdr.h = (u16)rects[i].y2 - rects[i].y1;
128
129 if (!vbva_buffer_begin_update(&vbox->vbva_info[crtc_id],
130 vbox->guest_pool))
131 continue;
132
133 vbva_write(&vbox->vbva_info[crtc_id], vbox->guest_pool,
134 &cmd_hdr, sizeof(cmd_hdr));
135 vbva_buffer_end_update(&vbox->vbva_info[crtc_id]);
136 }
137 }
138 mutex_unlock(&vbox->hw_mutex);
139}
140
141static int vbox_user_framebuffer_dirty(struct drm_framebuffer *fb,
142 struct drm_file *file_priv,
143 unsigned int flags, unsigned int color,
144 struct drm_clip_rect *rects,
145 unsigned int num_rects)
146{
147 vbox_framebuffer_dirty_rectangles(fb, rects, num_rects);
148
149 return 0;
150}
151
152static const struct drm_framebuffer_funcs vbox_fb_funcs = {
153 .destroy = vbox_user_framebuffer_destroy,
154 .dirty = vbox_user_framebuffer_dirty,
155};
156
157int vbox_framebuffer_init(struct drm_device *dev,
158 struct vbox_framebuffer *vbox_fb,
159 const struct DRM_MODE_FB_CMD *mode_cmd,
160 struct drm_gem_object *obj)
161{
162 int ret;
163
164 drm_helper_mode_fill_fb_struct(dev, &vbox_fb->base, mode_cmd);
165 vbox_fb->obj = obj;
166 ret = drm_framebuffer_init(dev, &vbox_fb->base, &vbox_fb_funcs);
167 if (ret) {
168 DRM_ERROR("framebuffer init failed %d\n", ret);
169 return ret;
170 }
171
172 return 0;
173}
174
175static struct drm_framebuffer *vbox_user_framebuffer_create(
176 struct drm_device *dev,
177 struct drm_file *filp,
178 const struct drm_mode_fb_cmd2 *mode_cmd)
179{
180 struct drm_gem_object *obj;
181 struct vbox_framebuffer *vbox_fb;
182 int ret = -ENOMEM;
183
184 obj = drm_gem_object_lookup(filp, mode_cmd->handles[0]);
185 if (!obj)
186 return ERR_PTR(-ENOENT);
187
188 vbox_fb = kzalloc(sizeof(*vbox_fb), GFP_KERNEL);
189 if (!vbox_fb)
190 goto err_unref_obj;
191
192 ret = vbox_framebuffer_init(dev, vbox_fb, mode_cmd, obj);
193 if (ret)
194 goto err_free_vbox_fb;
195
196 return &vbox_fb->base;
197
198err_free_vbox_fb:
199 kfree(vbox_fb);
200err_unref_obj:
201 drm_gem_object_unreference_unlocked(obj);
202 return ERR_PTR(ret);
203}
204
205static const struct drm_mode_config_funcs vbox_mode_funcs = {
206 .fb_create = vbox_user_framebuffer_create,
207};
208
209static int vbox_accel_init(struct vbox_private *vbox)
210{
211 unsigned int i;
212
213 vbox->vbva_info = devm_kcalloc(vbox->dev->dev, vbox->num_crtcs,
214 sizeof(*vbox->vbva_info), GFP_KERNEL);
215 if (!vbox->vbva_info)
216 return -ENOMEM;
217
218 /* Take a command buffer for each screen from the end of usable VRAM. */
219 vbox->available_vram_size -= vbox->num_crtcs * VBVA_MIN_BUFFER_SIZE;
220
221 vbox->vbva_buffers = pci_iomap_range(vbox->dev->pdev, 0,
222 vbox->available_vram_size,
223 vbox->num_crtcs *
224 VBVA_MIN_BUFFER_SIZE);
225 if (!vbox->vbva_buffers)
226 return -ENOMEM;
227
228 for (i = 0; i < vbox->num_crtcs; ++i)
229 vbva_setup_buffer_context(&vbox->vbva_info[i],
230 vbox->available_vram_size +
231 i * VBVA_MIN_BUFFER_SIZE,
232 VBVA_MIN_BUFFER_SIZE);
233
234 return 0;
235}
236
237static void vbox_accel_fini(struct vbox_private *vbox)
238{
239 vbox_disable_accel(vbox);
240 pci_iounmap(vbox->dev->pdev, vbox->vbva_buffers);
241}
242
243/** Do we support the 4.3 plus mode hint reporting interface? */
244static bool have_hgsmi_mode_hints(struct vbox_private *vbox)
245{
246 u32 have_hints, have_cursor;
247 int ret;
248
249 ret = hgsmi_query_conf(vbox->guest_pool,
250 VBOX_VBVA_CONF32_MODE_HINT_REPORTING,
251 &have_hints);
252 if (ret)
253 return false;
254
255 ret = hgsmi_query_conf(vbox->guest_pool,
256 VBOX_VBVA_CONF32_GUEST_CURSOR_REPORTING,
257 &have_cursor);
258 if (ret)
259 return false;
260
261 return have_hints == VINF_SUCCESS && have_cursor == VINF_SUCCESS;
262}
263
264static bool vbox_check_supported(u16 id)
265{
266 u16 dispi_id;
267
268 vbox_write_ioport(VBE_DISPI_INDEX_ID, id);
269 dispi_id = inw(VBE_DISPI_IOPORT_DATA);
270
271 return dispi_id == id;
272}
273
274/**
275 * Set up our heaps and data exchange buffers in VRAM before handing the rest
276 * to the memory manager.
277 */
278static int vbox_hw_init(struct vbox_private *vbox)
279{
280 int ret = -ENOMEM;
281
282 vbox->full_vram_size = inl(VBE_DISPI_IOPORT_DATA);
283 vbox->any_pitch = vbox_check_supported(VBE_DISPI_ID_ANYX);
284
285 DRM_INFO("VRAM %08x\n", vbox->full_vram_size);
286
287 /* Map guest-heap at end of vram */
288 vbox->guest_heap =
289 pci_iomap_range(vbox->dev->pdev, 0, GUEST_HEAP_OFFSET(vbox),
290 GUEST_HEAP_SIZE);
291 if (!vbox->guest_heap)
292 return -ENOMEM;
293
294 /* Create guest-heap mem-pool use 2^4 = 16 byte chunks */
295 vbox->guest_pool = gen_pool_create(4, -1);
296 if (!vbox->guest_pool)
297 goto err_unmap_guest_heap;
298
299 ret = gen_pool_add_virt(vbox->guest_pool,
300 (unsigned long)vbox->guest_heap,
301 GUEST_HEAP_OFFSET(vbox),
302 GUEST_HEAP_USABLE_SIZE, -1);
303 if (ret)
304 goto err_destroy_guest_pool;
305
306 ret = hgsmi_test_query_conf(vbox->guest_pool);
307 if (ret) {
308 DRM_ERROR("vboxvideo: hgsmi_test_query_conf failed\n");
309 goto err_destroy_guest_pool;
310 }
311
312 /* Reduce available VRAM size to reflect the guest heap. */
313 vbox->available_vram_size = GUEST_HEAP_OFFSET(vbox);
314 /* Linux drm represents monitors as a 32-bit array. */
315 hgsmi_query_conf(vbox->guest_pool, VBOX_VBVA_CONF32_MONITOR_COUNT,
316 &vbox->num_crtcs);
317 vbox->num_crtcs = clamp_t(u32, vbox->num_crtcs, 1, VBOX_MAX_SCREENS);
318
319 if (!have_hgsmi_mode_hints(vbox)) {
320 ret = -ENOTSUPP;
321 goto err_destroy_guest_pool;
322 }
323
324 vbox->last_mode_hints = devm_kcalloc(vbox->dev->dev, vbox->num_crtcs,
325 sizeof(struct vbva_modehint),
326 GFP_KERNEL);
327 if (!vbox->last_mode_hints) {
328 ret = -ENOMEM;
329 goto err_destroy_guest_pool;
330 }
331
332 ret = vbox_accel_init(vbox);
333 if (ret)
334 goto err_destroy_guest_pool;
335
336 return 0;
337
338err_destroy_guest_pool:
339 gen_pool_destroy(vbox->guest_pool);
340err_unmap_guest_heap:
341 pci_iounmap(vbox->dev->pdev, vbox->guest_heap);
342 return ret;
343}
344
345static void vbox_hw_fini(struct vbox_private *vbox)
346{
347 vbox_accel_fini(vbox);
348 gen_pool_destroy(vbox->guest_pool);
349 pci_iounmap(vbox->dev->pdev, vbox->guest_heap);
350}
351
352int vbox_driver_load(struct drm_device *dev, unsigned long flags)
353{
354 struct vbox_private *vbox;
355 int ret = 0;
356
357 if (!vbox_check_supported(VBE_DISPI_ID_HGSMI))
358 return -ENODEV;
359
360 vbox = devm_kzalloc(dev->dev, sizeof(*vbox), GFP_KERNEL);
361 if (!vbox)
362 return -ENOMEM;
363
364 dev->dev_private = vbox;
365 vbox->dev = dev;
366
367 mutex_init(&vbox->hw_mutex);
368
369 ret = vbox_hw_init(vbox);
370 if (ret)
371 return ret;
372
373 ret = vbox_mm_init(vbox);
374 if (ret)
375 goto err_hw_fini;
376
377 drm_mode_config_init(dev);
378
379 dev->mode_config.funcs = (void *)&vbox_mode_funcs;
380 dev->mode_config.min_width = 64;
381 dev->mode_config.min_height = 64;
382 dev->mode_config.preferred_depth = 24;
383 dev->mode_config.max_width = VBE_DISPI_MAX_XRES;
384 dev->mode_config.max_height = VBE_DISPI_MAX_YRES;
385
386 ret = vbox_mode_init(dev);
387 if (ret)
388 goto err_drm_mode_cleanup;
389
390 ret = vbox_irq_init(vbox);
391 if (ret)
392 goto err_mode_fini;
393
394 ret = vbox_fbdev_init(dev);
395 if (ret)
396 goto err_irq_fini;
397
398 return 0;
399
400err_irq_fini:
401 vbox_irq_fini(vbox);
402err_mode_fini:
403 vbox_mode_fini(dev);
404err_drm_mode_cleanup:
405 drm_mode_config_cleanup(dev);
406 vbox_mm_fini(vbox);
407err_hw_fini:
408 vbox_hw_fini(vbox);
409 return ret;
410}
411
412void vbox_driver_unload(struct drm_device *dev)
413{
414 struct vbox_private *vbox = dev->dev_private;
415
416 vbox_fbdev_fini(dev);
417 vbox_irq_fini(vbox);
418 vbox_mode_fini(dev);
419 drm_mode_config_cleanup(dev);
420 vbox_mm_fini(vbox);
421 vbox_hw_fini(vbox);
422}
423
424/**
425 * @note this is described in the DRM framework documentation. AST does not
426 * have it, but we get an oops on driver unload if it is not present.
427 */
428void vbox_driver_lastclose(struct drm_device *dev)
429{
430 struct vbox_private *vbox = dev->dev_private;
431
432 if (vbox->fbdev)
433 drm_fb_helper_restore_fbdev_mode_unlocked(&vbox->fbdev->helper);
434}
435
436int vbox_gem_create(struct drm_device *dev,
437 u32 size, bool iskernel, struct drm_gem_object **obj)
438{
439 struct vbox_bo *vboxbo;
440 int ret;
441
442 *obj = NULL;
443
444 size = roundup(size, PAGE_SIZE);
445 if (size == 0)
446 return -EINVAL;
447
448 ret = vbox_bo_create(dev, size, 0, 0, &vboxbo);
449 if (ret) {
450 if (ret != -ERESTARTSYS)
451 DRM_ERROR("failed to allocate GEM object\n");
452 return ret;
453 }
454
455 *obj = &vboxbo->gem;
456
457 return 0;
458}
459
460int vbox_dumb_create(struct drm_file *file,
461 struct drm_device *dev, struct drm_mode_create_dumb *args)
462{
463 int ret;
464 struct drm_gem_object *gobj;
465 u32 handle;
466
467 args->pitch = args->width * ((args->bpp + 7) / 8);
468 args->size = args->pitch * args->height;
469
470 ret = vbox_gem_create(dev, args->size, false, &gobj);
471 if (ret)
472 return ret;
473
474 ret = drm_gem_handle_create(file, gobj, &handle);
475 drm_gem_object_unreference_unlocked(gobj);
476 if (ret)
477 return ret;
478
479 args->handle = handle;
480
481 return 0;
482}
483
484static void vbox_bo_unref(struct vbox_bo **bo)
485{
486 struct ttm_buffer_object *tbo;
487
488 if ((*bo) == NULL)
489 return;
490
491 tbo = &((*bo)->bo);
492 ttm_bo_unref(&tbo);
493 if (!tbo)
494 *bo = NULL;
495}
496
497void vbox_gem_free_object(struct drm_gem_object *obj)
498{
499 struct vbox_bo *vbox_bo = gem_to_vbox_bo(obj);
500
501 vbox_bo_unref(&vbox_bo);
502}
503
504static inline u64 vbox_bo_mmap_offset(struct vbox_bo *bo)
505{
506 return drm_vma_node_offset_addr(&bo->bo.vma_node);
507}
508
509int
510vbox_dumb_mmap_offset(struct drm_file *file,
511 struct drm_device *dev,
512 u32 handle, u64 *offset)
513{
514 struct drm_gem_object *obj;
515 int ret;
516 struct vbox_bo *bo;
517
518 mutex_lock(&dev->struct_mutex);
519 obj = drm_gem_object_lookup(file, handle);
520 if (!obj) {
521 ret = -ENOENT;
522 goto out_unlock;
523 }
524
525 bo = gem_to_vbox_bo(obj);
526 *offset = vbox_bo_mmap_offset(bo);
527
528 drm_gem_object_unreference(obj);
529 ret = 0;
530
531out_unlock:
532 mutex_unlock(&dev->struct_mutex);
533 return ret;
534}
diff --git a/drivers/staging/vboxvideo/vbox_mode.c b/drivers/staging/vboxvideo/vbox_mode.c
new file mode 100644
index 000000000000..f2b85f3256fa
--- /dev/null
+++ b/drivers/staging/vboxvideo/vbox_mode.c
@@ -0,0 +1,877 @@
1/*
2 * Copyright (C) 2013-2017 Oracle Corporation
3 * This file is based on ast_mode.c
4 * Copyright 2012 Red Hat Inc.
5 * Parts based on xf86-video-ast
6 * Copyright (c) 2005 ASPEED Technology Inc.
7 *
8 * Permission is hereby granted, free of charge, to any person obtaining a
9 * copy of this software and associated documentation files (the
10 * "Software"), to deal in the Software without restriction, including
11 * without limitation the rights to use, copy, modify, merge, publish,
12 * distribute, sub license, and/or sell copies of the Software, and to
13 * permit persons to whom the Software is furnished to do so, subject to
14 * the following conditions:
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
19 * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
20 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
21 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
22 * USE OR OTHER DEALINGS IN THE SOFTWARE.
23 *
24 * The above copyright notice and this permission notice (including the
25 * next paragraph) shall be included in all copies or substantial portions
26 * of the Software.
27 *
28 */
29/*
30 * Authors: Dave Airlie <airlied@redhat.com>
31 * Michael Thayer <michael.thayer@oracle.com,
32 * Hans de Goede <hdegoede@redhat.com>
33 */
34#include <linux/export.h>
35#include <drm/drm_crtc_helper.h>
36#include <drm/drm_plane_helper.h>
37
38#include "vbox_drv.h"
39#include "vboxvideo.h"
40#include "hgsmi_channels.h"
41
42static int vbox_cursor_set2(struct drm_crtc *crtc, struct drm_file *file_priv,
43 u32 handle, u32 width, u32 height,
44 s32 hot_x, s32 hot_y);
45static int vbox_cursor_move(struct drm_crtc *crtc, int x, int y);
46
47/**
48 * Set a graphics mode. Poke any required values into registers, do an HGSMI
49 * mode set and tell the host we support advanced graphics functions.
50 */
51static void vbox_do_modeset(struct drm_crtc *crtc,
52 const struct drm_display_mode *mode)
53{
54 struct vbox_crtc *vbox_crtc = to_vbox_crtc(crtc);
55 struct vbox_private *vbox;
56 int width, height, bpp, pitch;
57 unsigned int crtc_id;
58 u16 flags;
59 s32 x_offset, y_offset;
60
61 vbox = crtc->dev->dev_private;
62 width = mode->hdisplay ? mode->hdisplay : 640;
63 height = mode->vdisplay ? mode->vdisplay : 480;
64 crtc_id = vbox_crtc->crtc_id;
65 bpp = crtc->enabled ? CRTC_FB(crtc)->format->cpp[0] * 8 : 32;
66 pitch = crtc->enabled ? CRTC_FB(crtc)->pitches[0] : width * bpp / 8;
67 x_offset = vbox->single_framebuffer ? crtc->x : vbox_crtc->x_hint;
68 y_offset = vbox->single_framebuffer ? crtc->y : vbox_crtc->y_hint;
69
70 /*
71 * This is the old way of setting graphics modes. It assumed one screen
72 * and a frame-buffer at the start of video RAM. On older versions of
73 * VirtualBox, certain parts of the code still assume that the first
74 * screen is programmed this way, so try to fake it.
75 */
76 if (vbox_crtc->crtc_id == 0 && crtc->enabled &&
77 vbox_crtc->fb_offset / pitch < 0xffff - crtc->y &&
78 vbox_crtc->fb_offset % (bpp / 8) == 0) {
79 vbox_write_ioport(VBE_DISPI_INDEX_XRES, width);
80 vbox_write_ioport(VBE_DISPI_INDEX_YRES, height);
81 vbox_write_ioport(VBE_DISPI_INDEX_VIRT_WIDTH, pitch * 8 / bpp);
82 vbox_write_ioport(VBE_DISPI_INDEX_BPP,
83 CRTC_FB(crtc)->format->cpp[0] * 8);
84 vbox_write_ioport(VBE_DISPI_INDEX_ENABLE, VBE_DISPI_ENABLED);
85 vbox_write_ioport(
86 VBE_DISPI_INDEX_X_OFFSET,
87 vbox_crtc->fb_offset % pitch / bpp * 8 + crtc->x);
88 vbox_write_ioport(VBE_DISPI_INDEX_Y_OFFSET,
89 vbox_crtc->fb_offset / pitch + crtc->y);
90 }
91
92 flags = VBVA_SCREEN_F_ACTIVE;
93 flags |= (crtc->enabled && !vbox_crtc->blanked) ?
94 0 : VBVA_SCREEN_F_BLANK;
95 flags |= vbox_crtc->disconnected ? VBVA_SCREEN_F_DISABLED : 0;
96 hgsmi_process_display_info(vbox->guest_pool, vbox_crtc->crtc_id,
97 x_offset, y_offset,
98 crtc->x * bpp / 8 + crtc->y * pitch,
99 pitch, width, height,
100 vbox_crtc->blanked ? 0 : bpp, flags);
101}
102
103static int vbox_set_view(struct drm_crtc *crtc)
104{
105 struct vbox_crtc *vbox_crtc = to_vbox_crtc(crtc);
106 struct vbox_private *vbox = crtc->dev->dev_private;
107 struct vbva_infoview *p;
108
109 /*
110 * Tell the host about the view. This design originally targeted the
111 * Windows XP driver architecture and assumed that each screen would
112 * have a dedicated frame buffer with the command buffer following it,
113 * the whole being a "view". The host works out which screen a command
114 * buffer belongs to by checking whether it is in the first view, then
115 * whether it is in the second and so on. The first match wins. We
116 * cheat around this by making the first view be the managed memory
117 * plus the first command buffer, the second the same plus the second
118 * buffer and so on.
119 */
120 p = hgsmi_buffer_alloc(vbox->guest_pool, sizeof(*p),
121 HGSMI_CH_VBVA, VBVA_INFO_VIEW);
122 if (!p)
123 return -ENOMEM;
124
125 p->view_index = vbox_crtc->crtc_id;
126 p->view_offset = vbox_crtc->fb_offset;
127 p->view_size = vbox->available_vram_size - vbox_crtc->fb_offset +
128 vbox_crtc->crtc_id * VBVA_MIN_BUFFER_SIZE;
129 p->max_screen_size = vbox->available_vram_size - vbox_crtc->fb_offset;
130
131 hgsmi_buffer_submit(vbox->guest_pool, p);
132 hgsmi_buffer_free(vbox->guest_pool, p);
133
134 return 0;
135}
136
137static void vbox_crtc_load_lut(struct drm_crtc *crtc)
138{
139}
140
141static void vbox_crtc_dpms(struct drm_crtc *crtc, int mode)
142{
143 struct vbox_crtc *vbox_crtc = to_vbox_crtc(crtc);
144 struct vbox_private *vbox = crtc->dev->dev_private;
145
146 switch (mode) {
147 case DRM_MODE_DPMS_ON:
148 vbox_crtc->blanked = false;
149 break;
150 case DRM_MODE_DPMS_STANDBY:
151 case DRM_MODE_DPMS_SUSPEND:
152 case DRM_MODE_DPMS_OFF:
153 vbox_crtc->blanked = true;
154 break;
155 }
156
157 mutex_lock(&vbox->hw_mutex);
158 vbox_do_modeset(crtc, &crtc->hwmode);
159 mutex_unlock(&vbox->hw_mutex);
160}
161
162static bool vbox_crtc_mode_fixup(struct drm_crtc *crtc,
163 const struct drm_display_mode *mode,
164 struct drm_display_mode *adjusted_mode)
165{
166 return true;
167}
168
169/*
170 * Try to map the layout of virtual screens to the range of the input device.
171 * Return true if we need to re-set the crtc modes due to screen offset
172 * changes.
173 */
174static bool vbox_set_up_input_mapping(struct vbox_private *vbox)
175{
176 struct drm_crtc *crtci;
177 struct drm_connector *connectori;
178 struct drm_framebuffer *fb1 = NULL;
179 bool single_framebuffer = true;
180 bool old_single_framebuffer = vbox->single_framebuffer;
181 u16 width = 0, height = 0;
182
183 /*
184 * Are we using an X.Org-style single large frame-buffer for all crtcs?
185 * If so then screen layout can be deduced from the crtc offsets.
186 * Same fall-back if this is the fbdev frame-buffer.
187 */
188 list_for_each_entry(crtci, &vbox->dev->mode_config.crtc_list, head) {
189 if (!fb1) {
190 fb1 = CRTC_FB(crtci);
191 if (to_vbox_framebuffer(fb1) == &vbox->fbdev->afb)
192 break;
193 } else if (CRTC_FB(crtci) && fb1 != CRTC_FB(crtci)) {
194 single_framebuffer = false;
195 }
196 }
197 if (single_framebuffer) {
198 list_for_each_entry(crtci, &vbox->dev->mode_config.crtc_list,
199 head) {
200 if (to_vbox_crtc(crtci)->crtc_id != 0)
201 continue;
202
203 vbox->single_framebuffer = true;
204 vbox->input_mapping_width = CRTC_FB(crtci)->width;
205 vbox->input_mapping_height = CRTC_FB(crtci)->height;
206 return old_single_framebuffer !=
207 vbox->single_framebuffer;
208 }
209 }
210 /* Otherwise calculate the total span of all screens. */
211 list_for_each_entry(connectori, &vbox->dev->mode_config.connector_list,
212 head) {
213 struct vbox_connector *vbox_connector =
214 to_vbox_connector(connectori);
215 struct vbox_crtc *vbox_crtc = vbox_connector->vbox_crtc;
216
217 width = max_t(u16, width, vbox_crtc->x_hint +
218 vbox_connector->mode_hint.width);
219 height = max_t(u16, height, vbox_crtc->y_hint +
220 vbox_connector->mode_hint.height);
221 }
222
223 vbox->single_framebuffer = false;
224 vbox->input_mapping_width = width;
225 vbox->input_mapping_height = height;
226
227 return old_single_framebuffer != vbox->single_framebuffer;
228}
229
230static int vbox_crtc_do_set_base(struct drm_crtc *crtc,
231 struct drm_framebuffer *old_fb, int x, int y)
232{
233 struct vbox_private *vbox = crtc->dev->dev_private;
234 struct vbox_crtc *vbox_crtc = to_vbox_crtc(crtc);
235 struct drm_gem_object *obj;
236 struct vbox_framebuffer *vbox_fb;
237 struct vbox_bo *bo;
238 int ret;
239 u64 gpu_addr;
240
241 /* Unpin the previous fb. */
242 if (old_fb) {
243 vbox_fb = to_vbox_framebuffer(old_fb);
244 obj = vbox_fb->obj;
245 bo = gem_to_vbox_bo(obj);
246 ret = vbox_bo_reserve(bo, false);
247 if (ret)
248 return ret;
249
250 vbox_bo_unpin(bo);
251 vbox_bo_unreserve(bo);
252 }
253
254 vbox_fb = to_vbox_framebuffer(CRTC_FB(crtc));
255 obj = vbox_fb->obj;
256 bo = gem_to_vbox_bo(obj);
257
258 ret = vbox_bo_reserve(bo, false);
259 if (ret)
260 return ret;
261
262 ret = vbox_bo_pin(bo, TTM_PL_FLAG_VRAM, &gpu_addr);
263 if (ret) {
264 vbox_bo_unreserve(bo);
265 return ret;
266 }
267
268 if (&vbox->fbdev->afb == vbox_fb)
269 vbox_fbdev_set_base(vbox, gpu_addr);
270 vbox_bo_unreserve(bo);
271
272 /* vbox_set_start_address_crt1(crtc, (u32)gpu_addr); */
273 vbox_crtc->fb_offset = gpu_addr;
274 if (vbox_set_up_input_mapping(vbox)) {
275 struct drm_crtc *crtci;
276
277 list_for_each_entry(crtci, &vbox->dev->mode_config.crtc_list,
278 head) {
279 vbox_set_view(crtc);
280 vbox_do_modeset(crtci, &crtci->mode);
281 }
282 }
283
284 return 0;
285}
286
287static int vbox_crtc_mode_set_base(struct drm_crtc *crtc, int x, int y,
288 struct drm_framebuffer *old_fb)
289{
290 return vbox_crtc_do_set_base(crtc, old_fb, x, y);
291}
292
293static int vbox_crtc_mode_set(struct drm_crtc *crtc,
294 struct drm_display_mode *mode,
295 struct drm_display_mode *adjusted_mode,
296 int x, int y, struct drm_framebuffer *old_fb)
297{
298 struct vbox_private *vbox = crtc->dev->dev_private;
299 int ret;
300
301 vbox_crtc_mode_set_base(crtc, x, y, old_fb);
302
303 mutex_lock(&vbox->hw_mutex);
304 ret = vbox_set_view(crtc);
305 if (!ret)
306 vbox_do_modeset(crtc, mode);
307 hgsmi_update_input_mapping(vbox->guest_pool, 0, 0,
308 vbox->input_mapping_width,
309 vbox->input_mapping_height);
310 mutex_unlock(&vbox->hw_mutex);
311
312 return ret;
313}
314
315static void vbox_crtc_disable(struct drm_crtc *crtc)
316{
317}
318
319static void vbox_crtc_prepare(struct drm_crtc *crtc)
320{
321}
322
323static void vbox_crtc_commit(struct drm_crtc *crtc)
324{
325}
326
327static const struct drm_crtc_helper_funcs vbox_crtc_helper_funcs = {
328 .dpms = vbox_crtc_dpms,
329 .mode_fixup = vbox_crtc_mode_fixup,
330 .mode_set = vbox_crtc_mode_set,
331 /* .mode_set_base = vbox_crtc_mode_set_base, */
332 .disable = vbox_crtc_disable,
333 .load_lut = vbox_crtc_load_lut,
334 .prepare = vbox_crtc_prepare,
335 .commit = vbox_crtc_commit,
336};
337
338static void vbox_crtc_reset(struct drm_crtc *crtc)
339{
340}
341
342static void vbox_crtc_destroy(struct drm_crtc *crtc)
343{
344 drm_crtc_cleanup(crtc);
345 kfree(crtc);
346}
347
348static const struct drm_crtc_funcs vbox_crtc_funcs = {
349 .cursor_move = vbox_cursor_move,
350 .cursor_set2 = vbox_cursor_set2,
351 .reset = vbox_crtc_reset,
352 .set_config = drm_crtc_helper_set_config,
353 /* .gamma_set = vbox_crtc_gamma_set, */
354 .destroy = vbox_crtc_destroy,
355};
356
357static struct vbox_crtc *vbox_crtc_init(struct drm_device *dev, unsigned int i)
358{
359 struct vbox_crtc *vbox_crtc;
360
361 vbox_crtc = kzalloc(sizeof(*vbox_crtc), GFP_KERNEL);
362 if (!vbox_crtc)
363 return NULL;
364
365 vbox_crtc->crtc_id = i;
366
367 drm_crtc_init(dev, &vbox_crtc->base, &vbox_crtc_funcs);
368 drm_mode_crtc_set_gamma_size(&vbox_crtc->base, 256);
369 drm_crtc_helper_add(&vbox_crtc->base, &vbox_crtc_helper_funcs);
370
371 return vbox_crtc;
372}
373
374static void vbox_encoder_destroy(struct drm_encoder *encoder)
375{
376 drm_encoder_cleanup(encoder);
377 kfree(encoder);
378}
379
380static struct drm_encoder *vbox_best_single_encoder(struct drm_connector
381 *connector)
382{
383 int enc_id = connector->encoder_ids[0];
384
385 /* pick the encoder ids */
386 if (enc_id)
387 return drm_encoder_find(connector->dev, enc_id);
388
389 return NULL;
390}
391
392static const struct drm_encoder_funcs vbox_enc_funcs = {
393 .destroy = vbox_encoder_destroy,
394};
395
396static void vbox_encoder_dpms(struct drm_encoder *encoder, int mode)
397{
398}
399
400static bool vbox_mode_fixup(struct drm_encoder *encoder,
401 const struct drm_display_mode *mode,
402 struct drm_display_mode *adjusted_mode)
403{
404 return true;
405}
406
407static void vbox_encoder_mode_set(struct drm_encoder *encoder,
408 struct drm_display_mode *mode,
409 struct drm_display_mode *adjusted_mode)
410{
411}
412
413static void vbox_encoder_prepare(struct drm_encoder *encoder)
414{
415}
416
417static void vbox_encoder_commit(struct drm_encoder *encoder)
418{
419}
420
421static const struct drm_encoder_helper_funcs vbox_enc_helper_funcs = {
422 .dpms = vbox_encoder_dpms,
423 .mode_fixup = vbox_mode_fixup,
424 .prepare = vbox_encoder_prepare,
425 .commit = vbox_encoder_commit,
426 .mode_set = vbox_encoder_mode_set,
427};
428
429static struct drm_encoder *vbox_encoder_init(struct drm_device *dev,
430 unsigned int i)
431{
432 struct vbox_encoder *vbox_encoder;
433
434 vbox_encoder = kzalloc(sizeof(*vbox_encoder), GFP_KERNEL);
435 if (!vbox_encoder)
436 return NULL;
437
438 drm_encoder_init(dev, &vbox_encoder->base, &vbox_enc_funcs,
439 DRM_MODE_ENCODER_DAC, NULL);
440 drm_encoder_helper_add(&vbox_encoder->base, &vbox_enc_helper_funcs);
441
442 vbox_encoder->base.possible_crtcs = 1 << i;
443 return &vbox_encoder->base;
444}
445
446/**
447 * Generate EDID data with a mode-unique serial number for the virtual
448 * monitor to try to persuade Unity that different modes correspond to
449 * different monitors and it should not try to force the same resolution on
450 * them.
451 */
452static void vbox_set_edid(struct drm_connector *connector, int width,
453 int height)
454{
455 enum { EDID_SIZE = 128 };
456 unsigned char edid[EDID_SIZE] = {
457 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, /* header */
458 0x58, 0x58, /* manufacturer (VBX) */
459 0x00, 0x00, /* product code */
460 0x00, 0x00, 0x00, 0x00, /* serial number goes here */
461 0x01, /* week of manufacture */
462 0x00, /* year of manufacture */
463 0x01, 0x03, /* EDID version */
464 0x80, /* capabilities - digital */
465 0x00, /* horiz. res in cm, zero for projectors */
466 0x00, /* vert. res in cm */
467 0x78, /* display gamma (120 == 2.2). */
468 0xEE, /* features (standby, suspend, off, RGB, std */
469 /* colour space, preferred timing mode) */
470 0xEE, 0x91, 0xA3, 0x54, 0x4C, 0x99, 0x26, 0x0F, 0x50, 0x54,
471 /* chromaticity for standard colour space. */
472 0x00, 0x00, 0x00, /* no default timings */
473 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
474 0x01, 0x01,
475 0x01, 0x01, 0x01, 0x01, /* no standard timings */
476 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x06, 0x00, 0x02, 0x02,
477 0x02, 0x02,
478 /* descriptor block 1 goes below */
479 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
480 /* descriptor block 2, monitor ranges */
481 0x00, 0x00, 0x00, 0xFD, 0x00,
482 0x00, 0xC8, 0x00, 0xC8, 0x64, 0x00, 0x0A, 0x20, 0x20, 0x20,
483 0x20, 0x20,
484 /* 0-200Hz vertical, 0-200KHz horizontal, 1000MHz pixel clock */
485 0x20,
486 /* descriptor block 3, monitor name */
487 0x00, 0x00, 0x00, 0xFC, 0x00,
488 'V', 'B', 'O', 'X', ' ', 'm', 'o', 'n', 'i', 't', 'o', 'r',
489 '\n',
490 /* descriptor block 4: dummy data */
491 0x00, 0x00, 0x00, 0x10, 0x00,
492 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20,
493 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
494 0x20,
495 0x00, /* number of extensions */
496 0x00 /* checksum goes here */
497 };
498 int clock = (width + 6) * (height + 6) * 60 / 10000;
499 unsigned int i, sum = 0;
500
501 edid[12] = width & 0xff;
502 edid[13] = width >> 8;
503 edid[14] = height & 0xff;
504 edid[15] = height >> 8;
505 edid[54] = clock & 0xff;
506 edid[55] = clock >> 8;
507 edid[56] = width & 0xff;
508 edid[58] = (width >> 4) & 0xf0;
509 edid[59] = height & 0xff;
510 edid[61] = (height >> 4) & 0xf0;
511 for (i = 0; i < EDID_SIZE - 1; ++i)
512 sum += edid[i];
513 edid[EDID_SIZE - 1] = (0x100 - (sum & 0xFF)) & 0xFF;
514 drm_mode_connector_update_edid_property(connector, (struct edid *)edid);
515}
516
517static int vbox_get_modes(struct drm_connector *connector)
518{
519 struct vbox_connector *vbox_connector = NULL;
520 struct drm_display_mode *mode = NULL;
521 struct vbox_private *vbox = NULL;
522 unsigned int num_modes = 0;
523 int preferred_width, preferred_height;
524
525 vbox_connector = to_vbox_connector(connector);
526 vbox = connector->dev->dev_private;
527 /*
528 * Heuristic: we do not want to tell the host that we support dynamic
529 * resizing unless we feel confident that the user space client using
530 * the video driver can handle hot-plug events. So the first time modes
531 * are queried after a "master" switch we tell the host that we do not,
532 * and immediately after we send the client a hot-plug notification as
533 * a test to see if they will respond and query again.
534 * That is also the reason why capabilities are reported to the host at
535 * this place in the code rather than elsewhere.
536 * We need to report the flags location before reporting the IRQ
537 * capability.
538 */
539 hgsmi_report_flags_location(vbox->guest_pool, GUEST_HEAP_OFFSET(vbox) +
540 HOST_FLAGS_OFFSET);
541 if (vbox_connector->vbox_crtc->crtc_id == 0)
542 vbox_report_caps(vbox);
543 if (!vbox->initial_mode_queried) {
544 if (vbox_connector->vbox_crtc->crtc_id == 0) {
545 vbox->initial_mode_queried = true;
546 vbox_report_hotplug(vbox);
547 }
548 return drm_add_modes_noedid(connector, 800, 600);
549 }
550 num_modes = drm_add_modes_noedid(connector, 2560, 1600);
551 preferred_width = vbox_connector->mode_hint.width ?
552 vbox_connector->mode_hint.width : 1024;
553 preferred_height = vbox_connector->mode_hint.height ?
554 vbox_connector->mode_hint.height : 768;
555 mode = drm_cvt_mode(connector->dev, preferred_width, preferred_height,
556 60, false, false, false);
557 if (mode) {
558 mode->type |= DRM_MODE_TYPE_PREFERRED;
559 drm_mode_probed_add(connector, mode);
560 ++num_modes;
561 }
562 vbox_set_edid(connector, preferred_width, preferred_height);
563 drm_object_property_set_value(
564 &connector->base, vbox->dev->mode_config.suggested_x_property,
565 vbox_connector->vbox_crtc->x_hint);
566 drm_object_property_set_value(
567 &connector->base, vbox->dev->mode_config.suggested_y_property,
568 vbox_connector->vbox_crtc->y_hint);
569
570 return num_modes;
571}
572
573static int vbox_mode_valid(struct drm_connector *connector,
574 struct drm_display_mode *mode)
575{
576 return MODE_OK;
577}
578
579static void vbox_connector_destroy(struct drm_connector *connector)
580{
581 struct vbox_connector *vbox_connector;
582
583 vbox_connector = to_vbox_connector(connector);
584 drm_connector_unregister(connector);
585 drm_connector_cleanup(connector);
586 kfree(connector);
587}
588
589static enum drm_connector_status
590vbox_connector_detect(struct drm_connector *connector, bool force)
591{
592 struct vbox_connector *vbox_connector;
593
594 vbox_connector = to_vbox_connector(connector);
595
596 return vbox_connector->mode_hint.disconnected ?
597 connector_status_disconnected : connector_status_connected;
598}
599
600static int vbox_fill_modes(struct drm_connector *connector, u32 max_x,
601 u32 max_y)
602{
603 struct vbox_connector *vbox_connector;
604 struct drm_device *dev;
605 struct drm_display_mode *mode, *iterator;
606
607 vbox_connector = to_vbox_connector(connector);
608 dev = vbox_connector->base.dev;
609 list_for_each_entry_safe(mode, iterator, &connector->modes, head) {
610 list_del(&mode->head);
611 drm_mode_destroy(dev, mode);
612 }
613
614 return drm_helper_probe_single_connector_modes(connector, max_x, max_y);
615}
616
617static const struct drm_connector_helper_funcs vbox_connector_helper_funcs = {
618 .mode_valid = vbox_mode_valid,
619 .get_modes = vbox_get_modes,
620 .best_encoder = vbox_best_single_encoder,
621};
622
623static const struct drm_connector_funcs vbox_connector_funcs = {
624 .dpms = drm_helper_connector_dpms,
625 .detect = vbox_connector_detect,
626 .fill_modes = vbox_fill_modes,
627 .destroy = vbox_connector_destroy,
628};
629
630static int vbox_connector_init(struct drm_device *dev,
631 struct vbox_crtc *vbox_crtc,
632 struct drm_encoder *encoder)
633{
634 struct vbox_connector *vbox_connector;
635 struct drm_connector *connector;
636
637 vbox_connector = kzalloc(sizeof(*vbox_connector), GFP_KERNEL);
638 if (!vbox_connector)
639 return -ENOMEM;
640
641 connector = &vbox_connector->base;
642 vbox_connector->vbox_crtc = vbox_crtc;
643
644 drm_connector_init(dev, connector, &vbox_connector_funcs,
645 DRM_MODE_CONNECTOR_VGA);
646 drm_connector_helper_add(connector, &vbox_connector_helper_funcs);
647
648 connector->interlace_allowed = 0;
649 connector->doublescan_allowed = 0;
650
651 drm_mode_create_suggested_offset_properties(dev);
652 drm_object_attach_property(&connector->base,
653 dev->mode_config.suggested_x_property, -1);
654 drm_object_attach_property(&connector->base,
655 dev->mode_config.suggested_y_property, -1);
656 drm_connector_register(connector);
657
658 drm_mode_connector_attach_encoder(connector, encoder);
659
660 return 0;
661}
662
663int vbox_mode_init(struct drm_device *dev)
664{
665 struct vbox_private *vbox = dev->dev_private;
666 struct drm_encoder *encoder;
667 struct vbox_crtc *vbox_crtc;
668 unsigned int i;
669 int ret;
670
671 /* vbox_cursor_init(dev); */
672 for (i = 0; i < vbox->num_crtcs; ++i) {
673 vbox_crtc = vbox_crtc_init(dev, i);
674 if (!vbox_crtc)
675 return -ENOMEM;
676 encoder = vbox_encoder_init(dev, i);
677 if (!encoder)
678 return -ENOMEM;
679 ret = vbox_connector_init(dev, vbox_crtc, encoder);
680 if (ret)
681 return ret;
682 }
683
684 return 0;
685}
686
687void vbox_mode_fini(struct drm_device *dev)
688{
689 /* vbox_cursor_fini(dev); */
690}
691
692/**
693 * Copy the ARGB image and generate the mask, which is needed in case the host
694 * does not support ARGB cursors. The mask is a 1BPP bitmap with the bit set
695 * if the corresponding alpha value in the ARGB image is greater than 0xF0.
696 */
697static void copy_cursor_image(u8 *src, u8 *dst, u32 width, u32 height,
698 size_t mask_size)
699{
700 size_t line_size = (width + 7) / 8;
701 u32 i, j;
702
703 memcpy(dst + mask_size, src, width * height * 4);
704 for (i = 0; i < height; ++i)
705 for (j = 0; j < width; ++j)
706 if (((u32 *)src)[i * width + j] > 0xf0000000)
707 dst[i * line_size + j / 8] |= (0x80 >> (j % 8));
708}
709
710static int vbox_cursor_set2(struct drm_crtc *crtc, struct drm_file *file_priv,
711 u32 handle, u32 width, u32 height,
712 s32 hot_x, s32 hot_y)
713{
714 struct vbox_private *vbox = crtc->dev->dev_private;
715 struct vbox_crtc *vbox_crtc = to_vbox_crtc(crtc);
716 struct ttm_bo_kmap_obj uobj_map;
717 size_t data_size, mask_size;
718 struct drm_gem_object *obj;
719 u32 flags, caps = 0;
720 struct vbox_bo *bo;
721 bool src_isiomem;
722 u8 *dst = NULL;
723 u8 *src;
724 int ret;
725
726 /*
727 * Re-set this regularly as in 5.0.20 and earlier the information was
728 * lost on save and restore.
729 */
730 hgsmi_update_input_mapping(vbox->guest_pool, 0, 0,
731 vbox->input_mapping_width,
732 vbox->input_mapping_height);
733 if (!handle) {
734 bool cursor_enabled = false;
735 struct drm_crtc *crtci;
736
737 /* Hide cursor. */
738 vbox_crtc->cursor_enabled = false;
739 list_for_each_entry(crtci, &vbox->dev->mode_config.crtc_list,
740 head) {
741 if (to_vbox_crtc(crtci)->cursor_enabled)
742 cursor_enabled = true;
743 }
744
745 if (!cursor_enabled)
746 hgsmi_update_pointer_shape(vbox->guest_pool, 0, 0, 0,
747 0, 0, NULL, 0);
748 return 0;
749 }
750
751 vbox_crtc->cursor_enabled = true;
752
753 if (width > VBOX_MAX_CURSOR_WIDTH || height > VBOX_MAX_CURSOR_HEIGHT ||
754 width == 0 || height == 0)
755 return -EINVAL;
756
757 ret = hgsmi_query_conf(vbox->guest_pool,
758 VBOX_VBVA_CONF32_CURSOR_CAPABILITIES, &caps);
759 if (ret)
760 return ret;
761
762 if (!(caps & VBOX_VBVA_CURSOR_CAPABILITY_HARDWARE)) {
763 /*
764 * -EINVAL means cursor_set2() not supported, -EAGAIN means
765 * retry at once.
766 */
767 return -EBUSY;
768 }
769
770 obj = drm_gem_object_lookup(file_priv, handle);
771 if (!obj) {
772 DRM_ERROR("Cannot find cursor object %x for crtc\n", handle);
773 return -ENOENT;
774 }
775
776 bo = gem_to_vbox_bo(obj);
777 ret = vbox_bo_reserve(bo, false);
778 if (ret)
779 goto out_unref_obj;
780
781 /*
782 * The mask must be calculated based on the alpha
783 * channel, one bit per ARGB word, and must be 32-bit
784 * padded.
785 */
786 mask_size = ((width + 7) / 8 * height + 3) & ~3;
787 data_size = width * height * 4 + mask_size;
788 vbox->cursor_hot_x = min_t(u32, max(hot_x, 0), width);
789 vbox->cursor_hot_y = min_t(u32, max(hot_y, 0), height);
790 vbox->cursor_width = width;
791 vbox->cursor_height = height;
792 vbox->cursor_data_size = data_size;
793 dst = vbox->cursor_data;
794
795 ret = ttm_bo_kmap(&bo->bo, 0, bo->bo.num_pages, &uobj_map);
796 if (ret) {
797 vbox->cursor_data_size = 0;
798 goto out_unreserve_bo;
799 }
800
801 src = ttm_kmap_obj_virtual(&uobj_map, &src_isiomem);
802 if (src_isiomem) {
803 DRM_ERROR("src cursor bo not in main memory\n");
804 ret = -EIO;
805 goto out_unmap_bo;
806 }
807
808 copy_cursor_image(src, dst, width, height, mask_size);
809
810 flags = VBOX_MOUSE_POINTER_VISIBLE | VBOX_MOUSE_POINTER_SHAPE |
811 VBOX_MOUSE_POINTER_ALPHA;
812 ret = hgsmi_update_pointer_shape(vbox->guest_pool, flags,
813 vbox->cursor_hot_x, vbox->cursor_hot_y,
814 width, height, dst, data_size);
815out_unmap_bo:
816 ttm_bo_kunmap(&uobj_map);
817out_unreserve_bo:
818 vbox_bo_unreserve(bo);
819out_unref_obj:
820 drm_gem_object_unreference_unlocked(obj);
821
822 return ret;
823}
824
825static int vbox_cursor_move(struct drm_crtc *crtc, int x, int y)
826{
827 struct vbox_private *vbox = crtc->dev->dev_private;
828 u32 flags = VBOX_MOUSE_POINTER_VISIBLE |
829 VBOX_MOUSE_POINTER_SHAPE | VBOX_MOUSE_POINTER_ALPHA;
830 s32 crtc_x =
831 vbox->single_framebuffer ? crtc->x : to_vbox_crtc(crtc)->x_hint;
832 s32 crtc_y =
833 vbox->single_framebuffer ? crtc->y : to_vbox_crtc(crtc)->y_hint;
834 u32 host_x, host_y;
835 u32 hot_x = 0;
836 u32 hot_y = 0;
837 int ret;
838
839 /*
840 * We compare these to unsigned later and don't
841 * need to handle negative.
842 */
843 if (x + crtc_x < 0 || y + crtc_y < 0 || vbox->cursor_data_size == 0)
844 return 0;
845
846 ret = hgsmi_cursor_position(vbox->guest_pool, true, x + crtc_x,
847 y + crtc_y, &host_x, &host_y);
848
849 /*
850 * The only reason we have vbox_cursor_move() is that some older clients
851 * might use DRM_IOCTL_MODE_CURSOR instead of DRM_IOCTL_MODE_CURSOR2 and
852 * use DRM_MODE_CURSOR_MOVE to set the hot-spot.
853 *
854 * However VirtualBox 5.0.20 and earlier has a bug causing it to return
855 * 0,0 as host cursor location after a save and restore.
856 *
857 * To work around this we ignore a 0, 0 return, since missing the odd
858 * time when it legitimately happens is not going to hurt much.
859 */
860 if (ret || (host_x == 0 && host_y == 0))
861 return ret;
862
863 if (x + crtc_x < host_x)
864 hot_x = min(host_x - x - crtc_x, vbox->cursor_width);
865 if (y + crtc_y < host_y)
866 hot_y = min(host_y - y - crtc_y, vbox->cursor_height);
867
868 if (hot_x == vbox->cursor_hot_x && hot_y == vbox->cursor_hot_y)
869 return 0;
870
871 vbox->cursor_hot_x = hot_x;
872 vbox->cursor_hot_y = hot_y;
873
874 return hgsmi_update_pointer_shape(vbox->guest_pool, flags,
875 hot_x, hot_y, vbox->cursor_width, vbox->cursor_height,
876 vbox->cursor_data, vbox->cursor_data_size);
877}
diff --git a/drivers/staging/vboxvideo/vbox_prime.c b/drivers/staging/vboxvideo/vbox_prime.c
new file mode 100644
index 000000000000..b7453e427a1d
--- /dev/null
+++ b/drivers/staging/vboxvideo/vbox_prime.c
@@ -0,0 +1,74 @@
1/*
2 * Copyright (C) 2017 Oracle Corporation
3 * Copyright 2017 Canonical
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
11 *
12 * The above copyright notice and this permission notice shall be included in
13 * all copies or substantial portions of the Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
18 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
19 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
20 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
21 * OTHER DEALINGS IN THE SOFTWARE.
22 *
23 * Authors: Andreas Pokorny
24 */
25
26#include "vbox_drv.h"
27
28/*
29 * Based on qxl_prime.c:
30 * Empty Implementations as there should not be any other driver for a virtual
31 * device that might share buffers with vboxvideo
32 */
33
34int vbox_gem_prime_pin(struct drm_gem_object *obj)
35{
36 WARN_ONCE(1, "not implemented");
37 return -ENOSYS;
38}
39
40void vbox_gem_prime_unpin(struct drm_gem_object *obj)
41{
42 WARN_ONCE(1, "not implemented");
43}
44
45struct sg_table *vbox_gem_prime_get_sg_table(struct drm_gem_object *obj)
46{
47 WARN_ONCE(1, "not implemented");
48 return ERR_PTR(-ENOSYS);
49}
50
51struct drm_gem_object *vbox_gem_prime_import_sg_table(
52 struct drm_device *dev, struct dma_buf_attachment *attach,
53 struct sg_table *table)
54{
55 WARN_ONCE(1, "not implemented");
56 return ERR_PTR(-ENOSYS);
57}
58
59void *vbox_gem_prime_vmap(struct drm_gem_object *obj)
60{
61 WARN_ONCE(1, "not implemented");
62 return ERR_PTR(-ENOSYS);
63}
64
65void vbox_gem_prime_vunmap(struct drm_gem_object *obj, void *vaddr)
66{
67 WARN_ONCE(1, "not implemented");
68}
69
70int vbox_gem_prime_mmap(struct drm_gem_object *obj, struct vm_area_struct *area)
71{
72 WARN_ONCE(1, "not implemented");
73 return -ENOSYS;
74}
diff --git a/drivers/staging/vboxvideo/vbox_ttm.c b/drivers/staging/vboxvideo/vbox_ttm.c
new file mode 100644
index 000000000000..34a905d40735
--- /dev/null
+++ b/drivers/staging/vboxvideo/vbox_ttm.c
@@ -0,0 +1,472 @@
1/*
2 * Copyright (C) 2013-2017 Oracle Corporation
3 * This file is based on ast_ttm.c
4 * Copyright 2012 Red Hat Inc.
5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the
8 * "Software"), to deal in the Software without restriction, including
9 * without limitation the rights to use, copy, modify, merge, publish,
10 * distribute, sub license, and/or sell copies of the Software, and to
11 * permit persons to whom the Software is furnished to do so, subject to
12 * the following conditions:
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
17 * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
18 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20 * USE OR OTHER DEALINGS IN THE SOFTWARE.
21 *
22 * The above copyright notice and this permission notice (including the
23 * next paragraph) shall be included in all copies or substantial portions
24 * of the Software.
25 *
26 *
27 * Authors: Dave Airlie <airlied@redhat.com>
28 * Michael Thayer <michael.thayer@oracle.com>
29 */
30#include "vbox_drv.h"
31#include <ttm/ttm_page_alloc.h>
32
33static inline struct vbox_private *vbox_bdev(struct ttm_bo_device *bd)
34{
35 return container_of(bd, struct vbox_private, ttm.bdev);
36}
37
38static int vbox_ttm_mem_global_init(struct drm_global_reference *ref)
39{
40 return ttm_mem_global_init(ref->object);
41}
42
43static void vbox_ttm_mem_global_release(struct drm_global_reference *ref)
44{
45 ttm_mem_global_release(ref->object);
46}
47
48/**
49 * Adds the vbox memory manager object/structures to the global memory manager.
50 */
51static int vbox_ttm_global_init(struct vbox_private *vbox)
52{
53 struct drm_global_reference *global_ref;
54 int ret;
55
56 global_ref = &vbox->ttm.mem_global_ref;
57 global_ref->global_type = DRM_GLOBAL_TTM_MEM;
58 global_ref->size = sizeof(struct ttm_mem_global);
59 global_ref->init = &vbox_ttm_mem_global_init;
60 global_ref->release = &vbox_ttm_mem_global_release;
61 ret = drm_global_item_ref(global_ref);
62 if (ret) {
63 DRM_ERROR("Failed setting up TTM memory subsystem.\n");
64 return ret;
65 }
66
67 vbox->ttm.bo_global_ref.mem_glob = vbox->ttm.mem_global_ref.object;
68 global_ref = &vbox->ttm.bo_global_ref.ref;
69 global_ref->global_type = DRM_GLOBAL_TTM_BO;
70 global_ref->size = sizeof(struct ttm_bo_global);
71 global_ref->init = &ttm_bo_global_init;
72 global_ref->release = &ttm_bo_global_release;
73
74 ret = drm_global_item_ref(global_ref);
75 if (ret) {
76 DRM_ERROR("Failed setting up TTM BO subsystem.\n");
77 drm_global_item_unref(&vbox->ttm.mem_global_ref);
78 return ret;
79 }
80
81 return 0;
82}
83
84/**
85 * Removes the vbox memory manager object from the global memory manager.
86 */
87static void vbox_ttm_global_release(struct vbox_private *vbox)
88{
89 drm_global_item_unref(&vbox->ttm.bo_global_ref.ref);
90 drm_global_item_unref(&vbox->ttm.mem_global_ref);
91}
92
93static void vbox_bo_ttm_destroy(struct ttm_buffer_object *tbo)
94{
95 struct vbox_bo *bo;
96
97 bo = container_of(tbo, struct vbox_bo, bo);
98
99 drm_gem_object_release(&bo->gem);
100 kfree(bo);
101}
102
103static bool vbox_ttm_bo_is_vbox_bo(struct ttm_buffer_object *bo)
104{
105 if (bo->destroy == &vbox_bo_ttm_destroy)
106 return true;
107
108 return false;
109}
110
111static int
112vbox_bo_init_mem_type(struct ttm_bo_device *bdev, u32 type,
113 struct ttm_mem_type_manager *man)
114{
115 switch (type) {
116 case TTM_PL_SYSTEM:
117 man->flags = TTM_MEMTYPE_FLAG_MAPPABLE;
118 man->available_caching = TTM_PL_MASK_CACHING;
119 man->default_caching = TTM_PL_FLAG_CACHED;
120 break;
121 case TTM_PL_VRAM:
122 man->func = &ttm_bo_manager_func;
123 man->flags = TTM_MEMTYPE_FLAG_FIXED | TTM_MEMTYPE_FLAG_MAPPABLE;
124 man->available_caching = TTM_PL_FLAG_UNCACHED | TTM_PL_FLAG_WC;
125 man->default_caching = TTM_PL_FLAG_WC;
126 break;
127 default:
128 DRM_ERROR("Unsupported memory type %u\n", (unsigned int)type);
129 return -EINVAL;
130 }
131
132 return 0;
133}
134
135static void
136vbox_bo_evict_flags(struct ttm_buffer_object *bo, struct ttm_placement *pl)
137{
138 struct vbox_bo *vboxbo = vbox_bo(bo);
139
140 if (!vbox_ttm_bo_is_vbox_bo(bo))
141 return;
142
143 vbox_ttm_placement(vboxbo, TTM_PL_FLAG_SYSTEM);
144 *pl = vboxbo->placement;
145}
146
147static int vbox_bo_verify_access(struct ttm_buffer_object *bo,
148 struct file *filp)
149{
150 return 0;
151}
152
153static int vbox_ttm_io_mem_reserve(struct ttm_bo_device *bdev,
154 struct ttm_mem_reg *mem)
155{
156 struct ttm_mem_type_manager *man = &bdev->man[mem->mem_type];
157 struct vbox_private *vbox = vbox_bdev(bdev);
158
159 mem->bus.addr = NULL;
160 mem->bus.offset = 0;
161 mem->bus.size = mem->num_pages << PAGE_SHIFT;
162 mem->bus.base = 0;
163 mem->bus.is_iomem = false;
164 if (!(man->flags & TTM_MEMTYPE_FLAG_MAPPABLE))
165 return -EINVAL;
166 switch (mem->mem_type) {
167 case TTM_PL_SYSTEM:
168 /* system memory */
169 return 0;
170 case TTM_PL_VRAM:
171 mem->bus.offset = mem->start << PAGE_SHIFT;
172 mem->bus.base = pci_resource_start(vbox->dev->pdev, 0);
173 mem->bus.is_iomem = true;
174 break;
175 default:
176 return -EINVAL;
177 }
178 return 0;
179}
180
181static void vbox_ttm_io_mem_free(struct ttm_bo_device *bdev,
182 struct ttm_mem_reg *mem)
183{
184}
185
186static int vbox_bo_move(struct ttm_buffer_object *bo,
187 bool evict, bool interruptible,
188 bool no_wait_gpu, struct ttm_mem_reg *new_mem)
189{
190 return ttm_bo_move_memcpy(bo, interruptible, no_wait_gpu, new_mem);
191}
192
193static void vbox_ttm_backend_destroy(struct ttm_tt *tt)
194{
195 ttm_tt_fini(tt);
196 kfree(tt);
197}
198
199static struct ttm_backend_func vbox_tt_backend_func = {
200 .destroy = &vbox_ttm_backend_destroy,
201};
202
203static struct ttm_tt *vbox_ttm_tt_create(struct ttm_bo_device *bdev,
204 unsigned long size,
205 u32 page_flags,
206 struct page *dummy_read_page)
207{
208 struct ttm_tt *tt;
209
210 tt = kzalloc(sizeof(*tt), GFP_KERNEL);
211 if (!tt)
212 return NULL;
213
214 tt->func = &vbox_tt_backend_func;
215 if (ttm_tt_init(tt, bdev, size, page_flags, dummy_read_page)) {
216 kfree(tt);
217 return NULL;
218 }
219
220 return tt;
221}
222
223static int vbox_ttm_tt_populate(struct ttm_tt *ttm)
224{
225 return ttm_pool_populate(ttm);
226}
227
228static void vbox_ttm_tt_unpopulate(struct ttm_tt *ttm)
229{
230 ttm_pool_unpopulate(ttm);
231}
232
233struct ttm_bo_driver vbox_bo_driver = {
234 .ttm_tt_create = vbox_ttm_tt_create,
235 .ttm_tt_populate = vbox_ttm_tt_populate,
236 .ttm_tt_unpopulate = vbox_ttm_tt_unpopulate,
237 .init_mem_type = vbox_bo_init_mem_type,
238 .eviction_valuable = ttm_bo_eviction_valuable,
239 .evict_flags = vbox_bo_evict_flags,
240 .move = vbox_bo_move,
241 .verify_access = vbox_bo_verify_access,
242 .io_mem_reserve = &vbox_ttm_io_mem_reserve,
243 .io_mem_free = &vbox_ttm_io_mem_free,
244 .io_mem_pfn = ttm_bo_default_io_mem_pfn,
245};
246
247int vbox_mm_init(struct vbox_private *vbox)
248{
249 int ret;
250 struct drm_device *dev = vbox->dev;
251 struct ttm_bo_device *bdev = &vbox->ttm.bdev;
252
253 ret = vbox_ttm_global_init(vbox);
254 if (ret)
255 return ret;
256
257 ret = ttm_bo_device_init(&vbox->ttm.bdev,
258 vbox->ttm.bo_global_ref.ref.object,
259 &vbox_bo_driver,
260 dev->anon_inode->i_mapping,
261 DRM_FILE_PAGE_OFFSET, true);
262 if (ret) {
263 DRM_ERROR("Error initialising bo driver; %d\n", ret);
264 goto err_ttm_global_release;
265 }
266
267 ret = ttm_bo_init_mm(bdev, TTM_PL_VRAM,
268 vbox->available_vram_size >> PAGE_SHIFT);
269 if (ret) {
270 DRM_ERROR("Failed ttm VRAM init: %d\n", ret);
271 goto err_device_release;
272 }
273
274#ifdef DRM_MTRR_WC
275 vbox->fb_mtrr = drm_mtrr_add(pci_resource_start(dev->pdev, 0),
276 pci_resource_len(dev->pdev, 0),
277 DRM_MTRR_WC);
278#else
279 vbox->fb_mtrr = arch_phys_wc_add(pci_resource_start(dev->pdev, 0),
280 pci_resource_len(dev->pdev, 0));
281#endif
282 return 0;
283
284err_device_release:
285 ttm_bo_device_release(&vbox->ttm.bdev);
286err_ttm_global_release:
287 vbox_ttm_global_release(vbox);
288 return ret;
289}
290
291void vbox_mm_fini(struct vbox_private *vbox)
292{
293#ifdef DRM_MTRR_WC
294 drm_mtrr_del(vbox->fb_mtrr,
295 pci_resource_start(vbox->dev->pdev, 0),
296 pci_resource_len(vbox->dev->pdev, 0), DRM_MTRR_WC);
297#else
298 arch_phys_wc_del(vbox->fb_mtrr);
299#endif
300 ttm_bo_device_release(&vbox->ttm.bdev);
301 vbox_ttm_global_release(vbox);
302}
303
304void vbox_ttm_placement(struct vbox_bo *bo, int domain)
305{
306 unsigned int i;
307 u32 c = 0;
308
309 bo->placement.placement = bo->placements;
310 bo->placement.busy_placement = bo->placements;
311
312 if (domain & TTM_PL_FLAG_VRAM)
313 bo->placements[c++].flags =
314 TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED | TTM_PL_FLAG_VRAM;
315 if (domain & TTM_PL_FLAG_SYSTEM)
316 bo->placements[c++].flags =
317 TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM;
318 if (!c)
319 bo->placements[c++].flags =
320 TTM_PL_MASK_CACHING | TTM_PL_FLAG_SYSTEM;
321
322 bo->placement.num_placement = c;
323 bo->placement.num_busy_placement = c;
324
325 for (i = 0; i < c; ++i) {
326 bo->placements[i].fpfn = 0;
327 bo->placements[i].lpfn = 0;
328 }
329}
330
331int vbox_bo_create(struct drm_device *dev, int size, int align,
332 u32 flags, struct vbox_bo **pvboxbo)
333{
334 struct vbox_private *vbox = dev->dev_private;
335 struct vbox_bo *vboxbo;
336 size_t acc_size;
337 int ret;
338
339 vboxbo = kzalloc(sizeof(*vboxbo), GFP_KERNEL);
340 if (!vboxbo)
341 return -ENOMEM;
342
343 ret = drm_gem_object_init(dev, &vboxbo->gem, size);
344 if (ret)
345 goto err_free_vboxbo;
346
347 vboxbo->bo.bdev = &vbox->ttm.bdev;
348
349 vbox_ttm_placement(vboxbo, TTM_PL_FLAG_VRAM | TTM_PL_FLAG_SYSTEM);
350
351 acc_size = ttm_bo_dma_acc_size(&vbox->ttm.bdev, size,
352 sizeof(struct vbox_bo));
353
354 ret = ttm_bo_init(&vbox->ttm.bdev, &vboxbo->bo, size,
355 ttm_bo_type_device, &vboxbo->placement,
356 align >> PAGE_SHIFT, false, NULL, acc_size,
357 NULL, NULL, vbox_bo_ttm_destroy);
358 if (ret)
359 goto err_free_vboxbo;
360
361 *pvboxbo = vboxbo;
362
363 return 0;
364
365err_free_vboxbo:
366 kfree(vboxbo);
367 return ret;
368}
369
370static inline u64 vbox_bo_gpu_offset(struct vbox_bo *bo)
371{
372 return bo->bo.offset;
373}
374
375int vbox_bo_pin(struct vbox_bo *bo, u32 pl_flag, u64 *gpu_addr)
376{
377 int i, ret;
378
379 if (bo->pin_count) {
380 bo->pin_count++;
381 if (gpu_addr)
382 *gpu_addr = vbox_bo_gpu_offset(bo);
383
384 return 0;
385 }
386
387 vbox_ttm_placement(bo, pl_flag);
388
389 for (i = 0; i < bo->placement.num_placement; i++)
390 bo->placements[i].flags |= TTM_PL_FLAG_NO_EVICT;
391
392 ret = ttm_bo_validate(&bo->bo, &bo->placement, false, false);
393 if (ret)
394 return ret;
395
396 bo->pin_count = 1;
397
398 if (gpu_addr)
399 *gpu_addr = vbox_bo_gpu_offset(bo);
400
401 return 0;
402}
403
404int vbox_bo_unpin(struct vbox_bo *bo)
405{
406 int i, ret;
407
408 if (!bo->pin_count) {
409 DRM_ERROR("unpin bad %p\n", bo);
410 return 0;
411 }
412 bo->pin_count--;
413 if (bo->pin_count)
414 return 0;
415
416 for (i = 0; i < bo->placement.num_placement; i++)
417 bo->placements[i].flags &= ~TTM_PL_FLAG_NO_EVICT;
418
419 ret = ttm_bo_validate(&bo->bo, &bo->placement, false, false);
420 if (ret)
421 return ret;
422
423 return 0;
424}
425
426/*
427 * Move a vbox-owned buffer object to system memory if no one else has it
428 * pinned. The caller must have pinned it previously, and this call will
429 * release the caller's pin.
430 */
431int vbox_bo_push_sysram(struct vbox_bo *bo)
432{
433 int i, ret;
434
435 if (!bo->pin_count) {
436 DRM_ERROR("unpin bad %p\n", bo);
437 return 0;
438 }
439 bo->pin_count--;
440 if (bo->pin_count)
441 return 0;
442
443 if (bo->kmap.virtual)
444 ttm_bo_kunmap(&bo->kmap);
445
446 vbox_ttm_placement(bo, TTM_PL_FLAG_SYSTEM);
447
448 for (i = 0; i < bo->placement.num_placement; i++)
449 bo->placements[i].flags |= TTM_PL_FLAG_NO_EVICT;
450
451 ret = ttm_bo_validate(&bo->bo, &bo->placement, false, false);
452 if (ret) {
453 DRM_ERROR("pushing to VRAM failed\n");
454 return ret;
455 }
456
457 return 0;
458}
459
460int vbox_mmap(struct file *filp, struct vm_area_struct *vma)
461{
462 struct drm_file *file_priv;
463 struct vbox_private *vbox;
464
465 if (unlikely(vma->vm_pgoff < DRM_FILE_PAGE_OFFSET))
466 return -EINVAL;
467
468 file_priv = filp->private_data;
469 vbox = file_priv->minor->dev->dev_private;
470
471 return ttm_bo_mmap(filp, vma, &vbox->ttm.bdev);
472}
diff --git a/drivers/staging/vboxvideo/vboxvideo.h b/drivers/staging/vboxvideo/vboxvideo.h
new file mode 100644
index 000000000000..d835d75d761c
--- /dev/null
+++ b/drivers/staging/vboxvideo/vboxvideo.h
@@ -0,0 +1,491 @@
1/*
2 * Copyright (C) 2006-2016 Oracle Corporation
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the
6 * "Software"), to deal in the Software without restriction, including
7 * without limitation the rights to use, copy, modify, merge, publish,
8 * distribute, sub license, and/or sell copies of the Software, and to
9 * permit persons to whom the Software is furnished to do so, subject to
10 * the following conditions:
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14 * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
15 * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
16 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
17 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
18 * USE OR OTHER DEALINGS IN THE SOFTWARE.
19 *
20 * The above copyright notice and this permission notice shall be included in
21 * all copies or substantial portions of the Software.
22 */
23
24#ifndef __VBOXVIDEO_H__
25#define __VBOXVIDEO_H__
26
27/*
28 * This should be in sync with monitorCount <xsd:maxInclusive value="64"/> in
29 * src/VBox/Main/xml/VirtualBox-settings-common.xsd
30 */
31#define VBOX_VIDEO_MAX_SCREENS 64
32
33/*
34 * The last 4096 bytes of the guest VRAM contains the generic info for all
35 * DualView chunks: sizes and offsets of chunks. This is filled by miniport.
36 *
37 * Last 4096 bytes of each chunk contain chunk specific data: framebuffer info,
38 * etc. This is used exclusively by the corresponding instance of a display
39 * driver.
40 *
41 * The VRAM layout:
42 * Last 4096 bytes - Adapter information area.
43 * 4096 bytes aligned miniport heap (value specified in the config rouded up).
44 * Slack - what left after dividing the VRAM.
45 * 4096 bytes aligned framebuffers:
46 * last 4096 bytes of each framebuffer is the display information area.
47 *
48 * The Virtual Graphics Adapter information in the guest VRAM is stored by the
49 * guest video driver using structures prepended by VBOXVIDEOINFOHDR.
50 *
51 * When the guest driver writes dword 0 to the VBE_DISPI_INDEX_VBOX_VIDEO
52 * the host starts to process the info. The first element at the start of
53 * the 4096 bytes region should be normally be a LINK that points to
54 * actual information chain. That way the guest driver can have some
55 * fixed layout of the information memory block and just rewrite
56 * the link to point to relevant memory chain.
57 *
58 * The processing stops at the END element.
59 *
60 * The host can access the memory only when the port IO is processed.
61 * All data that will be needed later must be copied from these 4096 bytes.
62 * But other VRAM can be used by host until the mode is disabled.
63 *
64 * The guest driver writes dword 0xffffffff to the VBE_DISPI_INDEX_VBOX_VIDEO
65 * to disable the mode.
66 *
67 * VBE_DISPI_INDEX_VBOX_VIDEO is used to read the configuration information
68 * from the host and issue commands to the host.
69 *
70 * The guest writes the VBE_DISPI_INDEX_VBOX_VIDEO index register, the the
71 * following operations with the VBE data register can be performed:
72 *
73 * Operation Result
74 * write 16 bit value NOP
75 * read 16 bit value count of monitors
76 * write 32 bit value set the vbox cmd value and the cmd processed by the host
77 * read 32 bit value result of the last vbox command is returned
78 */
79
80/**
81 * VBVA command header.
82 *
83 * @todo Where does this fit in?
84 */
85struct vbva_cmd_hdr {
86 /** Coordinates of affected rectangle. */
87 s16 x;
88 s16 y;
89 u16 w;
90 u16 h;
91} __packed;
92
93/** @name VBVA ring defines.
94 *
95 * The VBVA ring buffer is suitable for transferring large (< 2GB) amount of
96 * data. For example big bitmaps which do not fit to the buffer.
97 *
98 * Guest starts writing to the buffer by initializing a record entry in the
99 * records queue. VBVA_F_RECORD_PARTIAL indicates that the record is being
100 * written. As data is written to the ring buffer, the guest increases
101 * free_offset.
102 *
103 * The host reads the records on flushes and processes all completed records.
104 * When host encounters situation when only a partial record presents and
105 * len_and_flags & ~VBVA_F_RECORD_PARTIAL >= VBVA_RING_BUFFER_SIZE -
106 * VBVA_RING_BUFFER_THRESHOLD, the host fetched all record data and updates
107 * data_offset. After that on each flush the host continues fetching the data
108 * until the record is completed.
109 *
110 */
111#define VBVA_RING_BUFFER_SIZE (4194304 - 1024)
112#define VBVA_RING_BUFFER_THRESHOLD (4096)
113
114#define VBVA_MAX_RECORDS (64)
115
116#define VBVA_F_MODE_ENABLED 0x00000001u
117#define VBVA_F_MODE_VRDP 0x00000002u
118#define VBVA_F_MODE_VRDP_RESET 0x00000004u
119#define VBVA_F_MODE_VRDP_ORDER_MASK 0x00000008u
120
121#define VBVA_F_STATE_PROCESSING 0x00010000u
122
123#define VBVA_F_RECORD_PARTIAL 0x80000000u
124
125/**
126 * VBVA record.
127 */
128struct vbva_record {
129 /** The length of the record. Changed by guest. */
130 u32 len_and_flags;
131} __packed;
132
133/*
134 * The minimum HGSMI heap size is PAGE_SIZE (4096 bytes) and is a restriction of
135 * the runtime heapsimple API. Use minimum 2 pages here, because the info area
136 * also may contain other data (for example hgsmi_host_flags structure).
137 */
138#define VBVA_ADAPTER_INFORMATION_SIZE 65536
139#define VBVA_MIN_BUFFER_SIZE 65536
140
141/* The value for port IO to let the adapter to interpret the adapter memory. */
142#define VBOX_VIDEO_DISABLE_ADAPTER_MEMORY 0xFFFFFFFF
143
144/* The value for port IO to let the adapter to interpret the adapter memory. */
145#define VBOX_VIDEO_INTERPRET_ADAPTER_MEMORY 0x00000000
146
147/* The value for port IO to let the adapter to interpret the display memory.
148 * The display number is encoded in low 16 bits.
149 */
150#define VBOX_VIDEO_INTERPRET_DISPLAY_MEMORY_BASE 0x00010000
151
152struct vbva_host_flags {
153 u32 host_events;
154 u32 supported_orders;
155} __packed;
156
157struct vbva_buffer {
158 struct vbva_host_flags host_flags;
159
160 /* The offset where the data start in the buffer. */
161 u32 data_offset;
162 /* The offset where next data must be placed in the buffer. */
163 u32 free_offset;
164
165 /* The queue of record descriptions. */
166 struct vbva_record records[VBVA_MAX_RECORDS];
167 u32 record_first_index;
168 u32 record_free_index;
169
170 /* Space to leave free when large partial records are transferred. */
171 u32 partial_write_tresh;
172
173 u32 data_len;
174 /* variable size for the rest of the vbva_buffer area in VRAM. */
175 u8 data[0];
176} __packed;
177
178#define VBVA_MAX_RECORD_SIZE (128 * 1024 * 1024)
179
180/* guest->host commands */
181#define VBVA_QUERY_CONF32 1
182#define VBVA_SET_CONF32 2
183#define VBVA_INFO_VIEW 3
184#define VBVA_INFO_HEAP 4
185#define VBVA_FLUSH 5
186#define VBVA_INFO_SCREEN 6
187#define VBVA_ENABLE 7
188#define VBVA_MOUSE_POINTER_SHAPE 8
189/* informs host about HGSMI caps. see vbva_caps below */
190#define VBVA_INFO_CAPS 12
191/* configures scanline, see VBVASCANLINECFG below */
192#define VBVA_SCANLINE_CFG 13
193/* requests scanline info, see VBVASCANLINEINFO below */
194#define VBVA_SCANLINE_INFO 14
195/* inform host about VBVA Command submission */
196#define VBVA_CMDVBVA_SUBMIT 16
197/* inform host about VBVA Command submission */
198#define VBVA_CMDVBVA_FLUSH 17
199/* G->H DMA command */
200#define VBVA_CMDVBVA_CTL 18
201/* Query most recent mode hints sent */
202#define VBVA_QUERY_MODE_HINTS 19
203/**
204 * Report the guest virtual desktop position and size for mapping host and
205 * guest pointer positions.
206 */
207#define VBVA_REPORT_INPUT_MAPPING 20
208/** Report the guest cursor position and query the host position. */
209#define VBVA_CURSOR_POSITION 21
210
211/* host->guest commands */
212#define VBVAHG_EVENT 1
213#define VBVAHG_DISPLAY_CUSTOM 2
214
215/* vbva_conf32::index */
216#define VBOX_VBVA_CONF32_MONITOR_COUNT 0
217#define VBOX_VBVA_CONF32_HOST_HEAP_SIZE 1
218/**
219 * Returns VINF_SUCCESS if the host can report mode hints via VBVA.
220 * Set value to VERR_NOT_SUPPORTED before calling.
221 */
222#define VBOX_VBVA_CONF32_MODE_HINT_REPORTING 2
223/**
224 * Returns VINF_SUCCESS if the host can report guest cursor enabled status via
225 * VBVA. Set value to VERR_NOT_SUPPORTED before calling.
226 */
227#define VBOX_VBVA_CONF32_GUEST_CURSOR_REPORTING 3
228/**
229 * Returns the currently available host cursor capabilities. Available if
230 * vbva_conf32::VBOX_VBVA_CONF32_GUEST_CURSOR_REPORTING returns success.
231 * @see VMMDevReqMouseStatus::mouseFeatures.
232 */
233#define VBOX_VBVA_CONF32_CURSOR_CAPABILITIES 4
234/** Returns the supported flags in vbva_infoscreen::flags. */
235#define VBOX_VBVA_CONF32_SCREEN_FLAGS 5
236/** Returns the max size of VBVA record. */
237#define VBOX_VBVA_CONF32_MAX_RECORD_SIZE 6
238
239struct vbva_conf32 {
240 u32 index;
241 u32 value;
242} __packed;
243
244/** Reserved for historical reasons. */
245#define VBOX_VBVA_CURSOR_CAPABILITY_RESERVED0 BIT(0)
246/**
247 * Guest cursor capability: can the host show a hardware cursor at the host
248 * pointer location?
249 */
250#define VBOX_VBVA_CURSOR_CAPABILITY_HARDWARE BIT(1)
251/** Reserved for historical reasons. */
252#define VBOX_VBVA_CURSOR_CAPABILITY_RESERVED2 BIT(2)
253/** Reserved for historical reasons. Must always be unset. */
254#define VBOX_VBVA_CURSOR_CAPABILITY_RESERVED3 BIT(3)
255/** Reserved for historical reasons. */
256#define VBOX_VBVA_CURSOR_CAPABILITY_RESERVED4 BIT(4)
257/** Reserved for historical reasons. */
258#define VBOX_VBVA_CURSOR_CAPABILITY_RESERVED5 BIT(5)
259
260struct vbva_infoview {
261 /* Index of the screen, assigned by the guest. */
262 u32 view_index;
263
264 /* The screen offset in VRAM, the framebuffer starts here. */
265 u32 view_offset;
266
267 /* The size of the VRAM memory that can be used for the view. */
268 u32 view_size;
269
270 /* The recommended maximum size of the VRAM memory for the screen. */
271 u32 max_screen_size;
272} __packed;
273
274struct vbva_flush {
275 u32 reserved;
276} __packed;
277
278/* vbva_infoscreen::flags */
279#define VBVA_SCREEN_F_NONE 0x0000
280#define VBVA_SCREEN_F_ACTIVE 0x0001
281/**
282 * The virtual monitor has been disabled by the guest and should be removed
283 * by the host and ignored for purposes of pointer position calculation.
284 */
285#define VBVA_SCREEN_F_DISABLED 0x0002
286/**
287 * The virtual monitor has been blanked by the guest and should be blacked
288 * out by the host using width, height, etc values from the vbva_infoscreen
289 * request.
290 */
291#define VBVA_SCREEN_F_BLANK 0x0004
292/**
293 * The virtual monitor has been blanked by the guest and should be blacked
294 * out by the host using the previous mode values for width. height, etc.
295 */
296#define VBVA_SCREEN_F_BLANK2 0x0008
297
298struct vbva_infoscreen {
299 /* Which view contains the screen. */
300 u32 view_index;
301
302 /* Physical X origin relative to the primary screen. */
303 s32 origin_x;
304
305 /* Physical Y origin relative to the primary screen. */
306 s32 origin_y;
307
308 /* Offset of visible framebuffer relative to the framebuffer start. */
309 u32 start_offset;
310
311 /* The scan line size in bytes. */
312 u32 line_size;
313
314 /* Width of the screen. */
315 u32 width;
316
317 /* Height of the screen. */
318 u32 height;
319
320 /* Color depth. */
321 u16 bits_per_pixel;
322
323 /* VBVA_SCREEN_F_* */
324 u16 flags;
325} __packed;
326
327/* vbva_enable::flags */
328#define VBVA_F_NONE 0x00000000
329#define VBVA_F_ENABLE 0x00000001
330#define VBVA_F_DISABLE 0x00000002
331/* extended VBVA to be used with WDDM */
332#define VBVA_F_EXTENDED 0x00000004
333/* vbva offset is absolute VRAM offset */
334#define VBVA_F_ABSOFFSET 0x00000008
335
336struct vbva_enable {
337 u32 flags;
338 u32 offset;
339 s32 result;
340} __packed;
341
342struct vbva_enable_ex {
343 struct vbva_enable base;
344 u32 screen_id;
345} __packed;
346
347struct vbva_mouse_pointer_shape {
348 /* The host result. */
349 s32 result;
350
351 /* VBOX_MOUSE_POINTER_* bit flags. */
352 u32 flags;
353
354 /* X coordinate of the hot spot. */
355 u32 hot_X;
356
357 /* Y coordinate of the hot spot. */
358 u32 hot_y;
359
360 /* Width of the pointer in pixels. */
361 u32 width;
362
363 /* Height of the pointer in scanlines. */
364 u32 height;
365
366 /* Pointer data.
367 *
368 ****
369 * The data consists of 1 bpp AND mask followed by 32 bpp XOR (color)
370 * mask.
371 *
372 * For pointers without alpha channel the XOR mask pixels are 32 bit
373 * values: (lsb)BGR0(msb). For pointers with alpha channel the XOR mask
374 * consists of (lsb)BGRA(msb) 32 bit values.
375 *
376 * Guest driver must create the AND mask for pointers with alpha chan.,
377 * so if host does not support alpha, the pointer could be displayed as
378 * a normal color pointer. The AND mask can be constructed from alpha
379 * values. For example alpha value >= 0xf0 means bit 0 in the AND mask.
380 *
381 * The AND mask is 1 bpp bitmap with byte aligned scanlines. Size of AND
382 * mask, therefore, is and_len = (width + 7) / 8 * height. The padding
383 * bits at the end of any scanline are undefined.
384 *
385 * The XOR mask follows the AND mask on the next 4 bytes aligned offset:
386 * u8 *xor = and + (and_len + 3) & ~3
387 * Bytes in the gap between the AND and the XOR mask are undefined.
388 * XOR mask scanlines have no gap between them and size of XOR mask is:
389 * xor_len = width * 4 * height.
390 ****
391 *
392 * Preallocate 4 bytes for accessing actual data as p->data.
393 */
394 u8 data[4];
395} __packed;
396
397/**
398 * @name vbva_mouse_pointer_shape::flags
399 * @note The VBOX_MOUSE_POINTER_* flags are used in the guest video driver,
400 * values must be <= 0x8000 and must not be changed. (try make more sense
401 * of this, please).
402 * @{
403 */
404
405/** pointer is visible */
406#define VBOX_MOUSE_POINTER_VISIBLE 0x0001
407/** pointer has alpha channel */
408#define VBOX_MOUSE_POINTER_ALPHA 0x0002
409/** pointerData contains new pointer shape */
410#define VBOX_MOUSE_POINTER_SHAPE 0x0004
411
412/** @} */
413
414/*
415 * The guest driver can handle asynch guest cmd completion by reading the
416 * command offset from io port.
417 */
418#define VBVACAPS_COMPLETEGCMD_BY_IOREAD 0x00000001
419/* the guest driver can handle video adapter IRQs */
420#define VBVACAPS_IRQ 0x00000002
421/** The guest can read video mode hints sent via VBVA. */
422#define VBVACAPS_VIDEO_MODE_HINTS 0x00000004
423/** The guest can switch to a software cursor on demand. */
424#define VBVACAPS_DISABLE_CURSOR_INTEGRATION 0x00000008
425/** The guest does not depend on host handling the VBE registers. */
426#define VBVACAPS_USE_VBVA_ONLY 0x00000010
427
428struct vbva_caps {
429 s32 rc;
430 u32 caps;
431} __packed;
432
433/** Query the most recent mode hints received from the host. */
434struct vbva_query_mode_hints {
435 /** The maximum number of screens to return hints for. */
436 u16 hints_queried_count;
437 /** The size of the mode hint structures directly following this one. */
438 u16 hint_structure_guest_size;
439 /** Return code for the operation. Initialise to VERR_NOT_SUPPORTED. */
440 s32 rc;
441} __packed;
442
443/**
444 * Structure in which a mode hint is returned. The guest allocates an array
445 * of these immediately after the vbva_query_mode_hints structure.
446 * To accommodate future extensions, the vbva_query_mode_hints structure
447 * specifies the size of the vbva_modehint structures allocated by the guest,
448 * and the host only fills out structure elements which fit into that size. The
449 * host should fill any unused members (e.g. dx, dy) or structure space on the
450 * end with ~0. The whole structure can legally be set to ~0 to skip a screen.
451 */
452struct vbva_modehint {
453 u32 magic;
454 u32 cx;
455 u32 cy;
456 u32 bpp; /* Which has never been used... */
457 u32 display;
458 u32 dx; /**< X offset into the virtual frame-buffer. */
459 u32 dy; /**< Y offset into the virtual frame-buffer. */
460 u32 enabled; /* Not flags. Add new members for new flags. */
461} __packed;
462
463#define VBVAMODEHINT_MAGIC 0x0801add9u
464
465/**
466 * Report the rectangle relative to which absolute pointer events should be
467 * expressed. This information remains valid until the next VBVA resize event
468 * for any screen, at which time it is reset to the bounding rectangle of all
469 * virtual screens and must be re-set.
470 * @see VBVA_REPORT_INPUT_MAPPING.
471 */
472struct vbva_report_input_mapping {
473 s32 x; /**< Upper left X co-ordinate relative to the first screen. */
474 s32 y; /**< Upper left Y co-ordinate relative to the first screen. */
475 u32 cx; /**< Rectangle width. */
476 u32 cy; /**< Rectangle height. */
477} __packed;
478
479/**
480 * Report the guest cursor position and query the host one. The host may wish
481 * to use the guest information to re-position its own cursor (though this is
482 * currently unlikely).
483 * @see VBVA_CURSOR_POSITION
484 */
485struct vbva_cursor_position {
486 u32 report_position; /**< Are we reporting a position? */
487 u32 x; /**< Guest cursor X position */
488 u32 y; /**< Guest cursor Y position */
489} __packed;
490
491#endif
diff --git a/drivers/staging/vboxvideo/vboxvideo_guest.h b/drivers/staging/vboxvideo/vboxvideo_guest.h
new file mode 100644
index 000000000000..d09da841711a
--- /dev/null
+++ b/drivers/staging/vboxvideo/vboxvideo_guest.h
@@ -0,0 +1,95 @@
1/*
2 * Copyright (C) 2006-2017 Oracle Corporation
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 * OTHER DEALINGS IN THE SOFTWARE.
21 */
22
23#ifndef __VBOXVIDEO_GUEST_H__
24#define __VBOXVIDEO_GUEST_H__
25
26#include <linux/genalloc.h>
27#include "vboxvideo.h"
28
29/**
30 * Structure grouping the context needed for sending graphics acceleration
31 * information to the host via VBVA. Each screen has its own VBVA buffer.
32 */
33struct vbva_buf_ctx {
34 /** Offset of the buffer in the VRAM section for the screen */
35 u32 buffer_offset;
36 /** Length of the buffer in bytes */
37 u32 buffer_length;
38 /** Set if we wrote to the buffer faster than the host could read it */
39 bool buffer_overflow;
40 /** VBVA record that we are currently preparing for the host, or NULL */
41 struct vbva_record *record;
42 /**
43 * Pointer to the VBVA buffer mapped into the current address space.
44 * Will be NULL if VBVA is not enabled.
45 */
46 struct vbva_buffer *vbva;
47};
48
49/**
50 * @name Base HGSMI APIs
51 * @{
52 */
53int hgsmi_report_flags_location(struct gen_pool *ctx, u32 location);
54int hgsmi_send_caps_info(struct gen_pool *ctx, u32 caps);
55int hgsmi_test_query_conf(struct gen_pool *ctx);
56int hgsmi_query_conf(struct gen_pool *ctx, u32 index, u32 *value_ret);
57int hgsmi_update_pointer_shape(struct gen_pool *ctx, u32 flags,
58 u32 hot_x, u32 hot_y, u32 width, u32 height,
59 u8 *pixels, u32 len);
60int hgsmi_cursor_position(struct gen_pool *ctx, bool report_position,
61 u32 x, u32 y, u32 *x_host, u32 *y_host);
62/** @} */
63
64/**
65 * @name VBVA APIs
66 * @{
67 */
68bool vbva_enable(struct vbva_buf_ctx *vbva_ctx, struct gen_pool *ctx,
69 struct vbva_buffer *vbva, s32 screen);
70void vbva_disable(struct vbva_buf_ctx *vbva_ctx, struct gen_pool *ctx,
71 s32 screen);
72bool vbva_buffer_begin_update(struct vbva_buf_ctx *vbva_ctx,
73 struct gen_pool *ctx);
74void vbva_buffer_end_update(struct vbva_buf_ctx *vbva_ctx);
75bool vbva_write(struct vbva_buf_ctx *vbva_ctx, struct gen_pool *ctx,
76 const void *p, u32 len);
77void vbva_setup_buffer_context(struct vbva_buf_ctx *vbva_ctx,
78 u32 buffer_offset, u32 buffer_length);
79/** @} */
80
81/**
82 * @name Modesetting APIs
83 * @{
84 */
85void hgsmi_process_display_info(struct gen_pool *ctx, u32 display,
86 s32 origin_x, s32 origin_y, u32 start_offset,
87 u32 pitch, u32 width, u32 height,
88 u16 bpp, u16 flags);
89int hgsmi_update_input_mapping(struct gen_pool *ctx, s32 origin_x, s32 origin_y,
90 u32 width, u32 height);
91int hgsmi_get_mode_hints(struct gen_pool *ctx, unsigned int screens,
92 struct vbva_modehint *hints);
93/** @} */
94
95#endif
diff --git a/drivers/staging/vboxvideo/vboxvideo_vbe.h b/drivers/staging/vboxvideo/vboxvideo_vbe.h
new file mode 100644
index 000000000000..f842f4d9c80a
--- /dev/null
+++ b/drivers/staging/vboxvideo/vboxvideo_vbe.h
@@ -0,0 +1,84 @@
1/*
2 * Copyright (C) 2006-2017 Oracle Corporation
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 * OTHER DEALINGS IN THE SOFTWARE.
21 */
22
23#ifndef __VBOXVIDEO_VBE_H__
24#define __VBOXVIDEO_VBE_H__
25
26/* GUEST <-> HOST Communication API */
27
28/**
29 * @todo FIXME: Either dynamicly ask host for this or put somewhere high in
30 * physical memory like 0xE0000000.
31 */
32
33#define VBE_DISPI_BANK_ADDRESS 0xA0000
34#define VBE_DISPI_BANK_SIZE_KB 64
35
36#define VBE_DISPI_MAX_XRES 16384
37#define VBE_DISPI_MAX_YRES 16384
38#define VBE_DISPI_MAX_BPP 32
39
40#define VBE_DISPI_IOPORT_INDEX 0x01CE
41#define VBE_DISPI_IOPORT_DATA 0x01CF
42
43#define VBE_DISPI_IOPORT_DAC_WRITE_INDEX 0x03C8
44#define VBE_DISPI_IOPORT_DAC_DATA 0x03C9
45
46#define VBE_DISPI_INDEX_ID 0x0
47#define VBE_DISPI_INDEX_XRES 0x1
48#define VBE_DISPI_INDEX_YRES 0x2
49#define VBE_DISPI_INDEX_BPP 0x3
50#define VBE_DISPI_INDEX_ENABLE 0x4
51#define VBE_DISPI_INDEX_BANK 0x5
52#define VBE_DISPI_INDEX_VIRT_WIDTH 0x6
53#define VBE_DISPI_INDEX_VIRT_HEIGHT 0x7
54#define VBE_DISPI_INDEX_X_OFFSET 0x8
55#define VBE_DISPI_INDEX_Y_OFFSET 0x9
56#define VBE_DISPI_INDEX_VBOX_VIDEO 0xa
57#define VBE_DISPI_INDEX_FB_BASE_HI 0xb
58
59#define VBE_DISPI_ID0 0xB0C0
60#define VBE_DISPI_ID1 0xB0C1
61#define VBE_DISPI_ID2 0xB0C2
62#define VBE_DISPI_ID3 0xB0C3
63#define VBE_DISPI_ID4 0xB0C4
64
65#define VBE_DISPI_ID_VBOX_VIDEO 0xBE00
66/* The VBOX interface id. Indicates support for VBVA shared memory interface. */
67#define VBE_DISPI_ID_HGSMI 0xBE01
68#define VBE_DISPI_ID_ANYX 0xBE02
69
70#define VBE_DISPI_DISABLED 0x00
71#define VBE_DISPI_ENABLED 0x01
72#define VBE_DISPI_GETCAPS 0x02
73#define VBE_DISPI_8BIT_DAC 0x20
74/**
75 * @note this definition is a BOCHS legacy, used only in the video BIOS
76 * code and ignored by the emulated hardware.
77 */
78#define VBE_DISPI_LFB_ENABLED 0x40
79#define VBE_DISPI_NOCLEARMEM 0x80
80
81#define VGA_PORT_HGSMI_HOST 0x3b0
82#define VGA_PORT_HGSMI_GUEST 0x3d0
83
84#endif
diff --git a/drivers/staging/vboxvideo/vbva_base.c b/drivers/staging/vboxvideo/vbva_base.c
new file mode 100644
index 000000000000..c10c782f94e1
--- /dev/null
+++ b/drivers/staging/vboxvideo/vbva_base.c
@@ -0,0 +1,233 @@
1/*
2 * Copyright (C) 2006-2017 Oracle Corporation
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 * OTHER DEALINGS IN THE SOFTWARE.
21 */
22
23#include "vbox_drv.h"
24#include "vbox_err.h"
25#include "vboxvideo_guest.h"
26#include "hgsmi_channels.h"
27
28/*
29 * There is a hardware ring buffer in the graphics device video RAM, formerly
30 * in the VBox VMMDev PCI memory space.
31 * All graphics commands go there serialized by vbva_buffer_begin_update.
32 * and vbva_buffer_end_update.
33 *
34 * free_offset is writing position. data_offset is reading position.
35 * free_offset == data_offset means buffer is empty.
36 * There must be always gap between data_offset and free_offset when data
37 * are in the buffer.
38 * Guest only changes free_offset, host changes data_offset.
39 */
40
41static u32 vbva_buffer_available(const struct vbva_buffer *vbva)
42{
43 s32 diff = vbva->data_offset - vbva->free_offset;
44
45 return diff > 0 ? diff : vbva->data_len + diff;
46}
47
48static void vbva_buffer_place_data_at(struct vbva_buf_ctx *vbva_ctx,
49 const void *p, u32 len, u32 offset)
50{
51 struct vbva_buffer *vbva = vbva_ctx->vbva;
52 u32 bytes_till_boundary = vbva->data_len - offset;
53 u8 *dst = &vbva->data[offset];
54 s32 diff = len - bytes_till_boundary;
55
56 if (diff <= 0) {
57 /* Chunk will not cross buffer boundary. */
58 memcpy(dst, p, len);
59 } else {
60 /* Chunk crosses buffer boundary. */
61 memcpy(dst, p, bytes_till_boundary);
62 memcpy(&vbva->data[0], (u8 *)p + bytes_till_boundary, diff);
63 }
64}
65
66static void vbva_buffer_flush(struct gen_pool *ctx)
67{
68 struct vbva_flush *p;
69
70 p = hgsmi_buffer_alloc(ctx, sizeof(*p), HGSMI_CH_VBVA, VBVA_FLUSH);
71 if (!p)
72 return;
73
74 p->reserved = 0;
75
76 hgsmi_buffer_submit(ctx, p);
77 hgsmi_buffer_free(ctx, p);
78}
79
80bool vbva_write(struct vbva_buf_ctx *vbva_ctx, struct gen_pool *ctx,
81 const void *p, u32 len)
82{
83 struct vbva_record *record;
84 struct vbva_buffer *vbva;
85 u32 available;
86
87 vbva = vbva_ctx->vbva;
88 record = vbva_ctx->record;
89
90 if (!vbva || vbva_ctx->buffer_overflow ||
91 !record || !(record->len_and_flags & VBVA_F_RECORD_PARTIAL))
92 return false;
93
94 available = vbva_buffer_available(vbva);
95
96 while (len > 0) {
97 u32 chunk = len;
98
99 if (chunk >= available) {
100 vbva_buffer_flush(ctx);
101 available = vbva_buffer_available(vbva);
102 }
103
104 if (chunk >= available) {
105 if (WARN_ON(available <= vbva->partial_write_tresh)) {
106 vbva_ctx->buffer_overflow = true;
107 return false;
108 }
109 chunk = available - vbva->partial_write_tresh;
110 }
111
112 vbva_buffer_place_data_at(vbva_ctx, p, chunk,
113 vbva->free_offset);
114
115 vbva->free_offset = (vbva->free_offset + chunk) %
116 vbva->data_len;
117 record->len_and_flags += chunk;
118 available -= chunk;
119 len -= chunk;
120 p += chunk;
121 }
122
123 return true;
124}
125
126static bool vbva_inform_host(struct vbva_buf_ctx *vbva_ctx,
127 struct gen_pool *ctx, s32 screen, bool enable)
128{
129 struct vbva_enable_ex *p;
130 bool ret;
131
132 p = hgsmi_buffer_alloc(ctx, sizeof(*p), HGSMI_CH_VBVA, VBVA_ENABLE);
133 if (!p)
134 return false;
135
136 p->base.flags = enable ? VBVA_F_ENABLE : VBVA_F_DISABLE;
137 p->base.offset = vbva_ctx->buffer_offset;
138 p->base.result = VERR_NOT_SUPPORTED;
139 if (screen >= 0) {
140 p->base.flags |= VBVA_F_EXTENDED | VBVA_F_ABSOFFSET;
141 p->screen_id = screen;
142 }
143
144 hgsmi_buffer_submit(ctx, p);
145
146 if (enable)
147 ret = RT_SUCCESS(p->base.result);
148 else
149 ret = true;
150
151 hgsmi_buffer_free(ctx, p);
152
153 return ret;
154}
155
156bool vbva_enable(struct vbva_buf_ctx *vbva_ctx, struct gen_pool *ctx,
157 struct vbva_buffer *vbva, s32 screen)
158{
159 bool ret = false;
160
161 memset(vbva, 0, sizeof(*vbva));
162 vbva->partial_write_tresh = 256;
163 vbva->data_len = vbva_ctx->buffer_length - sizeof(struct vbva_buffer);
164 vbva_ctx->vbva = vbva;
165
166 ret = vbva_inform_host(vbva_ctx, ctx, screen, true);
167 if (!ret)
168 vbva_disable(vbva_ctx, ctx, screen);
169
170 return ret;
171}
172
173void vbva_disable(struct vbva_buf_ctx *vbva_ctx, struct gen_pool *ctx,
174 s32 screen)
175{
176 vbva_ctx->buffer_overflow = false;
177 vbva_ctx->record = NULL;
178 vbva_ctx->vbva = NULL;
179
180 vbva_inform_host(vbva_ctx, ctx, screen, false);
181}
182
183bool vbva_buffer_begin_update(struct vbva_buf_ctx *vbva_ctx,
184 struct gen_pool *ctx)
185{
186 struct vbva_record *record;
187 u32 next;
188
189 if (!vbva_ctx->vbva ||
190 !(vbva_ctx->vbva->host_flags.host_events & VBVA_F_MODE_ENABLED))
191 return false;
192
193 WARN_ON(vbva_ctx->buffer_overflow || vbva_ctx->record);
194
195 next = (vbva_ctx->vbva->record_free_index + 1) % VBVA_MAX_RECORDS;
196
197 /* Flush if all slots in the records queue are used */
198 if (next == vbva_ctx->vbva->record_first_index)
199 vbva_buffer_flush(ctx);
200
201 /* If even after flush there is no place then fail the request */
202 if (next == vbva_ctx->vbva->record_first_index)
203 return false;
204
205 record = &vbva_ctx->vbva->records[vbva_ctx->vbva->record_free_index];
206 record->len_and_flags = VBVA_F_RECORD_PARTIAL;
207 vbva_ctx->vbva->record_free_index = next;
208 /* Remember which record we are using. */
209 vbva_ctx->record = record;
210
211 return true;
212}
213
214void vbva_buffer_end_update(struct vbva_buf_ctx *vbva_ctx)
215{
216 struct vbva_record *record = vbva_ctx->record;
217
218 WARN_ON(!vbva_ctx->vbva || !record ||
219 !(record->len_and_flags & VBVA_F_RECORD_PARTIAL));
220
221 /* Mark the record completed. */
222 record->len_and_flags &= ~VBVA_F_RECORD_PARTIAL;
223
224 vbva_ctx->buffer_overflow = false;
225 vbva_ctx->record = NULL;
226}
227
228void vbva_setup_buffer_context(struct vbva_buf_ctx *vbva_ctx,
229 u32 buffer_offset, u32 buffer_length)
230{
231 vbva_ctx->buffer_offset = buffer_offset;
232 vbva_ctx->buffer_length = buffer_length;
233}
diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
index 030bec855d86..314ffac50bb8 100644
--- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
+++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.c
@@ -3391,7 +3391,6 @@ static int vchiq_probe(struct platform_device *pdev)
3391 struct device_node *fw_node; 3391 struct device_node *fw_node;
3392 struct rpi_firmware *fw; 3392 struct rpi_firmware *fw;
3393 int err; 3393 int err;
3394 void *ptr_err;
3395 3394
3396 fw_node = of_parse_phandle(pdev->dev.of_node, "firmware", 0); 3395 fw_node = of_parse_phandle(pdev->dev.of_node, "firmware", 0);
3397 if (!fw_node) { 3396 if (!fw_node) {
@@ -3427,14 +3426,14 @@ static int vchiq_probe(struct platform_device *pdev)
3427 3426
3428 /* create sysfs entries */ 3427 /* create sysfs entries */
3429 vchiq_class = class_create(THIS_MODULE, DEVICE_NAME); 3428 vchiq_class = class_create(THIS_MODULE, DEVICE_NAME);
3430 ptr_err = vchiq_class; 3429 err = PTR_ERR(vchiq_class);
3431 if (IS_ERR(ptr_err)) 3430 if (IS_ERR(vchiq_class))
3432 goto failed_class_create; 3431 goto failed_class_create;
3433 3432
3434 vchiq_dev = device_create(vchiq_class, NULL, 3433 vchiq_dev = device_create(vchiq_class, NULL,
3435 vchiq_devid, NULL, "vchiq"); 3434 vchiq_devid, NULL, "vchiq");
3436 ptr_err = vchiq_dev; 3435 err = PTR_ERR(vchiq_dev);
3437 if (IS_ERR(ptr_err)) 3436 if (IS_ERR(vchiq_dev))
3438 goto failed_device_create; 3437 goto failed_device_create;
3439 3438
3440 /* create debugfs entries */ 3439 /* create debugfs entries */
@@ -3455,7 +3454,6 @@ failed_device_create:
3455 class_destroy(vchiq_class); 3454 class_destroy(vchiq_class);
3456failed_class_create: 3455failed_class_create:
3457 cdev_del(&vchiq_cdev); 3456 cdev_del(&vchiq_cdev);
3458 err = PTR_ERR(ptr_err);
3459failed_cdev_add: 3457failed_cdev_add:
3460 unregister_chrdev_region(vchiq_devid, 1); 3458 unregister_chrdev_region(vchiq_devid, 1);
3461failed_platform_init: 3459failed_platform_init:
diff --git a/drivers/target/iscsi/cxgbit/cxgbit_cm.c b/drivers/target/iscsi/cxgbit/cxgbit_cm.c
index e583dd8a418b..d4fa41be80f9 100644
--- a/drivers/target/iscsi/cxgbit/cxgbit_cm.c
+++ b/drivers/target/iscsi/cxgbit/cxgbit_cm.c
@@ -1510,11 +1510,13 @@ cxgbit_pass_open_rpl(struct cxgbit_device *cdev, struct sk_buff *skb)
1510 1510
1511 if (!cnp) { 1511 if (!cnp) {
1512 pr_info("%s stid %d lookup failure\n", __func__, stid); 1512 pr_info("%s stid %d lookup failure\n", __func__, stid);
1513 return; 1513 goto rel_skb;
1514 } 1514 }
1515 1515
1516 cxgbit_wake_up(&cnp->com.wr_wait, __func__, rpl->status); 1516 cxgbit_wake_up(&cnp->com.wr_wait, __func__, rpl->status);
1517 cxgbit_put_cnp(cnp); 1517 cxgbit_put_cnp(cnp);
1518rel_skb:
1519 __kfree_skb(skb);
1518} 1520}
1519 1521
1520static void 1522static void
@@ -1530,11 +1532,13 @@ cxgbit_close_listsrv_rpl(struct cxgbit_device *cdev, struct sk_buff *skb)
1530 1532
1531 if (!cnp) { 1533 if (!cnp) {
1532 pr_info("%s stid %d lookup failure\n", __func__, stid); 1534 pr_info("%s stid %d lookup failure\n", __func__, stid);
1533 return; 1535 goto rel_skb;
1534 } 1536 }
1535 1537
1536 cxgbit_wake_up(&cnp->com.wr_wait, __func__, rpl->status); 1538 cxgbit_wake_up(&cnp->com.wr_wait, __func__, rpl->status);
1537 cxgbit_put_cnp(cnp); 1539 cxgbit_put_cnp(cnp);
1540rel_skb:
1541 __kfree_skb(skb);
1538} 1542}
1539 1543
1540static void 1544static void
@@ -1819,12 +1823,16 @@ static void cxgbit_set_tcb_rpl(struct cxgbit_device *cdev, struct sk_buff *skb)
1819 struct tid_info *t = lldi->tids; 1823 struct tid_info *t = lldi->tids;
1820 1824
1821 csk = lookup_tid(t, tid); 1825 csk = lookup_tid(t, tid);
1822 if (unlikely(!csk)) 1826 if (unlikely(!csk)) {
1823 pr_err("can't find connection for tid %u.\n", tid); 1827 pr_err("can't find connection for tid %u.\n", tid);
1824 else 1828 goto rel_skb;
1829 } else {
1825 cxgbit_wake_up(&csk->com.wr_wait, __func__, rpl->status); 1830 cxgbit_wake_up(&csk->com.wr_wait, __func__, rpl->status);
1831 }
1826 1832
1827 cxgbit_put_csk(csk); 1833 cxgbit_put_csk(csk);
1834rel_skb:
1835 __kfree_skb(skb);
1828} 1836}
1829 1837
1830static void cxgbit_rx_data(struct cxgbit_device *cdev, struct sk_buff *skb) 1838static void cxgbit_rx_data(struct cxgbit_device *cdev, struct sk_buff *skb)
diff --git a/drivers/target/iscsi/cxgbit/cxgbit_target.c b/drivers/target/iscsi/cxgbit/cxgbit_target.c
index dda13f1af38e..514986b57c2d 100644
--- a/drivers/target/iscsi/cxgbit/cxgbit_target.c
+++ b/drivers/target/iscsi/cxgbit/cxgbit_target.c
@@ -827,7 +827,7 @@ cxgbit_put_login_tx(struct iscsi_conn *conn, struct iscsi_login *login,
827 827
828static void 828static void
829cxgbit_skb_copy_to_sg(struct sk_buff *skb, struct scatterlist *sg, 829cxgbit_skb_copy_to_sg(struct sk_buff *skb, struct scatterlist *sg,
830 unsigned int nents) 830 unsigned int nents, u32 skip)
831{ 831{
832 struct skb_seq_state st; 832 struct skb_seq_state st;
833 const u8 *buf; 833 const u8 *buf;
@@ -846,7 +846,7 @@ cxgbit_skb_copy_to_sg(struct sk_buff *skb, struct scatterlist *sg,
846 } 846 }
847 847
848 consumed += sg_pcopy_from_buffer(sg, nents, (void *)buf, 848 consumed += sg_pcopy_from_buffer(sg, nents, (void *)buf,
849 buf_len, consumed); 849 buf_len, skip + consumed);
850 } 850 }
851} 851}
852 852
@@ -912,7 +912,7 @@ cxgbit_handle_immediate_data(struct iscsi_cmd *cmd, struct iscsi_scsi_req *hdr,
912 struct scatterlist *sg = &cmd->se_cmd.t_data_sg[0]; 912 struct scatterlist *sg = &cmd->se_cmd.t_data_sg[0];
913 u32 sg_nents = max(1UL, DIV_ROUND_UP(pdu_cb->dlen, PAGE_SIZE)); 913 u32 sg_nents = max(1UL, DIV_ROUND_UP(pdu_cb->dlen, PAGE_SIZE));
914 914
915 cxgbit_skb_copy_to_sg(csk->skb, sg, sg_nents); 915 cxgbit_skb_copy_to_sg(csk->skb, sg, sg_nents, 0);
916 } 916 }
917 917
918 cmd->write_data_done += pdu_cb->dlen; 918 cmd->write_data_done += pdu_cb->dlen;
@@ -1069,11 +1069,13 @@ static int cxgbit_handle_iscsi_dataout(struct cxgbit_sock *csk)
1069 cmd->se_cmd.data_length); 1069 cmd->se_cmd.data_length);
1070 1070
1071 if (!(pdu_cb->flags & PDUCBF_RX_DATA_DDPD)) { 1071 if (!(pdu_cb->flags & PDUCBF_RX_DATA_DDPD)) {
1072 u32 skip = data_offset % PAGE_SIZE;
1073
1072 sg_off = data_offset / PAGE_SIZE; 1074 sg_off = data_offset / PAGE_SIZE;
1073 sg_start = &cmd->se_cmd.t_data_sg[sg_off]; 1075 sg_start = &cmd->se_cmd.t_data_sg[sg_off];
1074 sg_nents = max(1UL, DIV_ROUND_UP(data_len, PAGE_SIZE)); 1076 sg_nents = max(1UL, DIV_ROUND_UP(skip + data_len, PAGE_SIZE));
1075 1077
1076 cxgbit_skb_copy_to_sg(csk->skb, sg_start, sg_nents); 1078 cxgbit_skb_copy_to_sg(csk->skb, sg_start, sg_nents, skip);
1077 } 1079 }
1078 1080
1079check_payload: 1081check_payload:
diff --git a/drivers/target/iscsi/iscsi_target.c b/drivers/target/iscsi/iscsi_target.c
index 74e4975dd1b1..5001261f5d69 100644
--- a/drivers/target/iscsi/iscsi_target.c
+++ b/drivers/target/iscsi/iscsi_target.c
@@ -418,6 +418,7 @@ int iscsit_reset_np_thread(
418 return 0; 418 return 0;
419 } 419 }
420 np->np_thread_state = ISCSI_NP_THREAD_RESET; 420 np->np_thread_state = ISCSI_NP_THREAD_RESET;
421 atomic_inc(&np->np_reset_count);
421 422
422 if (np->np_thread) { 423 if (np->np_thread) {
423 spin_unlock_bh(&np->np_thread_lock); 424 spin_unlock_bh(&np->np_thread_lock);
@@ -2167,6 +2168,7 @@ iscsit_setup_text_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
2167 cmd->cmd_sn = be32_to_cpu(hdr->cmdsn); 2168 cmd->cmd_sn = be32_to_cpu(hdr->cmdsn);
2168 cmd->exp_stat_sn = be32_to_cpu(hdr->exp_statsn); 2169 cmd->exp_stat_sn = be32_to_cpu(hdr->exp_statsn);
2169 cmd->data_direction = DMA_NONE; 2170 cmd->data_direction = DMA_NONE;
2171 kfree(cmd->text_in_ptr);
2170 cmd->text_in_ptr = NULL; 2172 cmd->text_in_ptr = NULL;
2171 2173
2172 return 0; 2174 return 0;
@@ -3487,9 +3489,9 @@ iscsit_build_text_rsp(struct iscsi_cmd *cmd, struct iscsi_conn *conn,
3487 return text_length; 3489 return text_length;
3488 3490
3489 if (completed) { 3491 if (completed) {
3490 hdr->flags |= ISCSI_FLAG_CMD_FINAL; 3492 hdr->flags = ISCSI_FLAG_CMD_FINAL;
3491 } else { 3493 } else {
3492 hdr->flags |= ISCSI_FLAG_TEXT_CONTINUE; 3494 hdr->flags = ISCSI_FLAG_TEXT_CONTINUE;
3493 cmd->read_data_done += text_length; 3495 cmd->read_data_done += text_length;
3494 if (cmd->targ_xfer_tag == 0xFFFFFFFF) 3496 if (cmd->targ_xfer_tag == 0xFFFFFFFF)
3495 cmd->targ_xfer_tag = session_get_next_ttt(conn->sess); 3497 cmd->targ_xfer_tag = session_get_next_ttt(conn->sess);
diff --git a/drivers/target/iscsi/iscsi_target_login.c b/drivers/target/iscsi/iscsi_target_login.c
index e9bdc8b86e7d..dc13afbd4c88 100644
--- a/drivers/target/iscsi/iscsi_target_login.c
+++ b/drivers/target/iscsi/iscsi_target_login.c
@@ -1243,9 +1243,11 @@ static int __iscsi_target_login_thread(struct iscsi_np *np)
1243 flush_signals(current); 1243 flush_signals(current);
1244 1244
1245 spin_lock_bh(&np->np_thread_lock); 1245 spin_lock_bh(&np->np_thread_lock);
1246 if (np->np_thread_state == ISCSI_NP_THREAD_RESET) { 1246 if (atomic_dec_if_positive(&np->np_reset_count) >= 0) {
1247 np->np_thread_state = ISCSI_NP_THREAD_ACTIVE; 1247 np->np_thread_state = ISCSI_NP_THREAD_ACTIVE;
1248 spin_unlock_bh(&np->np_thread_lock);
1248 complete(&np->np_restart_comp); 1249 complete(&np->np_restart_comp);
1250 return 1;
1249 } else if (np->np_thread_state == ISCSI_NP_THREAD_SHUTDOWN) { 1251 } else if (np->np_thread_state == ISCSI_NP_THREAD_SHUTDOWN) {
1250 spin_unlock_bh(&np->np_thread_lock); 1252 spin_unlock_bh(&np->np_thread_lock);
1251 goto exit; 1253 goto exit;
@@ -1278,7 +1280,8 @@ static int __iscsi_target_login_thread(struct iscsi_np *np)
1278 goto exit; 1280 goto exit;
1279 } else if (rc < 0) { 1281 } else if (rc < 0) {
1280 spin_lock_bh(&np->np_thread_lock); 1282 spin_lock_bh(&np->np_thread_lock);
1281 if (np->np_thread_state == ISCSI_NP_THREAD_RESET) { 1283 if (atomic_dec_if_positive(&np->np_reset_count) >= 0) {
1284 np->np_thread_state = ISCSI_NP_THREAD_ACTIVE;
1282 spin_unlock_bh(&np->np_thread_lock); 1285 spin_unlock_bh(&np->np_thread_lock);
1283 complete(&np->np_restart_comp); 1286 complete(&np->np_restart_comp);
1284 iscsit_put_transport(conn->conn_transport); 1287 iscsit_put_transport(conn->conn_transport);
diff --git a/drivers/target/target_core_tpg.c b/drivers/target/target_core_tpg.c
index 36913734c6bc..02e8a5d86658 100644
--- a/drivers/target/target_core_tpg.c
+++ b/drivers/target/target_core_tpg.c
@@ -364,7 +364,7 @@ void core_tpg_del_initiator_node_acl(struct se_node_acl *acl)
364 mutex_lock(&tpg->acl_node_mutex); 364 mutex_lock(&tpg->acl_node_mutex);
365 if (acl->dynamic_node_acl) 365 if (acl->dynamic_node_acl)
366 acl->dynamic_node_acl = 0; 366 acl->dynamic_node_acl = 0;
367 list_del(&acl->acl_list); 367 list_del_init(&acl->acl_list);
368 mutex_unlock(&tpg->acl_node_mutex); 368 mutex_unlock(&tpg->acl_node_mutex);
369 369
370 target_shutdown_sessions(acl); 370 target_shutdown_sessions(acl);
@@ -548,7 +548,7 @@ int core_tpg_deregister(struct se_portal_group *se_tpg)
548 * in transport_deregister_session(). 548 * in transport_deregister_session().
549 */ 549 */
550 list_for_each_entry_safe(nacl, nacl_tmp, &node_list, acl_list) { 550 list_for_each_entry_safe(nacl, nacl_tmp, &node_list, acl_list) {
551 list_del(&nacl->acl_list); 551 list_del_init(&nacl->acl_list);
552 552
553 core_tpg_wait_for_nacl_pr_ref(nacl); 553 core_tpg_wait_for_nacl_pr_ref(nacl);
554 core_free_device_list_for_node(nacl, se_tpg); 554 core_free_device_list_for_node(nacl, se_tpg);
diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c
index 97fed9a298bd..836d552b0385 100644
--- a/drivers/target/target_core_transport.c
+++ b/drivers/target/target_core_transport.c
@@ -466,7 +466,7 @@ static void target_complete_nacl(struct kref *kref)
466 } 466 }
467 467
468 mutex_lock(&se_tpg->acl_node_mutex); 468 mutex_lock(&se_tpg->acl_node_mutex);
469 list_del(&nacl->acl_list); 469 list_del_init(&nacl->acl_list);
470 mutex_unlock(&se_tpg->acl_node_mutex); 470 mutex_unlock(&se_tpg->acl_node_mutex);
471 471
472 core_tpg_wait_for_nacl_pr_ref(nacl); 472 core_tpg_wait_for_nacl_pr_ref(nacl);
@@ -538,7 +538,7 @@ void transport_free_session(struct se_session *se_sess)
538 spin_unlock_irqrestore(&se_nacl->nacl_sess_lock, flags); 538 spin_unlock_irqrestore(&se_nacl->nacl_sess_lock, flags);
539 539
540 if (se_nacl->dynamic_stop) 540 if (se_nacl->dynamic_stop)
541 list_del(&se_nacl->acl_list); 541 list_del_init(&se_nacl->acl_list);
542 } 542 }
543 mutex_unlock(&se_tpg->acl_node_mutex); 543 mutex_unlock(&se_tpg->acl_node_mutex);
544 544
diff --git a/drivers/target/target_core_user.c b/drivers/target/target_core_user.c
index 80ee130f8253..942d094269fb 100644
--- a/drivers/target/target_core_user.c
+++ b/drivers/target/target_core_user.c
@@ -563,8 +563,6 @@ static int scatter_data_area(struct tcmu_dev *udev,
563 block_remaining); 563 block_remaining);
564 to_offset = get_block_offset_user(udev, dbi, 564 to_offset = get_block_offset_user(udev, dbi,
565 block_remaining); 565 block_remaining);
566 offset = DATA_BLOCK_SIZE - block_remaining;
567 to += offset;
568 566
569 if (*iov_cnt != 0 && 567 if (*iov_cnt != 0 &&
570 to_offset == iov_tail(*iov)) { 568 to_offset == iov_tail(*iov)) {
@@ -575,8 +573,10 @@ static int scatter_data_area(struct tcmu_dev *udev,
575 (*iov)->iov_len = copy_bytes; 573 (*iov)->iov_len = copy_bytes;
576 } 574 }
577 if (copy_data) { 575 if (copy_data) {
578 memcpy(to, from + sg->length - sg_remaining, 576 offset = DATA_BLOCK_SIZE - block_remaining;
579 copy_bytes); 577 memcpy(to + offset,
578 from + sg->length - sg_remaining,
579 copy_bytes);
580 tcmu_flush_dcache_range(to, copy_bytes); 580 tcmu_flush_dcache_range(to, copy_bytes);
581 } 581 }
582 sg_remaining -= copy_bytes; 582 sg_remaining -= copy_bytes;
@@ -637,9 +637,8 @@ static void gather_data_area(struct tcmu_dev *udev, struct tcmu_cmd *cmd,
637 copy_bytes = min_t(size_t, sg_remaining, 637 copy_bytes = min_t(size_t, sg_remaining,
638 block_remaining); 638 block_remaining);
639 offset = DATA_BLOCK_SIZE - block_remaining; 639 offset = DATA_BLOCK_SIZE - block_remaining;
640 from += offset;
641 tcmu_flush_dcache_range(from, copy_bytes); 640 tcmu_flush_dcache_range(from, copy_bytes);
642 memcpy(to + sg->length - sg_remaining, from, 641 memcpy(to + sg->length - sg_remaining, from + offset,
643 copy_bytes); 642 copy_bytes);
644 643
645 sg_remaining -= copy_bytes; 644 sg_remaining -= copy_bytes;
@@ -1433,6 +1432,8 @@ static int tcmu_update_uio_info(struct tcmu_dev *udev)
1433 if (udev->dev_config[0]) 1432 if (udev->dev_config[0])
1434 snprintf(str + used, size - used, "/%s", udev->dev_config); 1433 snprintf(str + used, size - used, "/%s", udev->dev_config);
1435 1434
1435 /* If the old string exists, free it */
1436 kfree(info->name);
1436 info->name = str; 1437 info->name = str;
1437 1438
1438 return 0; 1439 return 0;
diff --git a/drivers/thunderbolt/eeprom.c b/drivers/thunderbolt/eeprom.c
index 308b6e17c88a..fe2f00ceafc5 100644
--- a/drivers/thunderbolt/eeprom.c
+++ b/drivers/thunderbolt/eeprom.c
@@ -333,6 +333,15 @@ static int tb_drom_parse_entry_port(struct tb_switch *sw,
333 int res; 333 int res;
334 enum tb_port_type type; 334 enum tb_port_type type;
335 335
336 /*
337 * Some DROMs list more ports than the controller actually has
338 * so we skip those but allow the parser to continue.
339 */
340 if (header->index > sw->config.max_port_number) {
341 dev_info_once(&sw->dev, "ignoring unnecessary extra entries in DROM\n");
342 return 0;
343 }
344
336 port = &sw->ports[header->index]; 345 port = &sw->ports[header->index];
337 port->disabled = header->port_disabled; 346 port->disabled = header->port_disabled;
338 if (port->disabled) 347 if (port->disabled)
diff --git a/drivers/thunderbolt/icm.c b/drivers/thunderbolt/icm.c
index 8ee340290219..bdaac1ff00a5 100644
--- a/drivers/thunderbolt/icm.c
+++ b/drivers/thunderbolt/icm.c
@@ -904,7 +904,14 @@ static int icm_driver_ready(struct tb *tb)
904 904
905static int icm_suspend(struct tb *tb) 905static int icm_suspend(struct tb *tb)
906{ 906{
907 return nhi_mailbox_cmd(tb->nhi, NHI_MAILBOX_SAVE_DEVS, 0); 907 int ret;
908
909 ret = nhi_mailbox_cmd(tb->nhi, NHI_MAILBOX_SAVE_DEVS, 0);
910 if (ret)
911 tb_info(tb, "Ignoring mailbox command error (%d) in %s\n",
912 ret, __func__);
913
914 return 0;
908} 915}
909 916
910/* 917/*
diff --git a/drivers/thunderbolt/switch.c b/drivers/thunderbolt/switch.c
index ab3e8f410444..e9391bbd4036 100644
--- a/drivers/thunderbolt/switch.c
+++ b/drivers/thunderbolt/switch.c
@@ -30,7 +30,7 @@ static DEFINE_IDA(nvm_ida);
30 30
31struct nvm_auth_status { 31struct nvm_auth_status {
32 struct list_head list; 32 struct list_head list;
33 uuid_be uuid; 33 uuid_t uuid;
34 u32 status; 34 u32 status;
35}; 35};
36 36
@@ -47,7 +47,7 @@ static struct nvm_auth_status *__nvm_get_auth_status(const struct tb_switch *sw)
47 struct nvm_auth_status *st; 47 struct nvm_auth_status *st;
48 48
49 list_for_each_entry(st, &nvm_auth_status_cache, list) { 49 list_for_each_entry(st, &nvm_auth_status_cache, list) {
50 if (!uuid_be_cmp(st->uuid, *sw->uuid)) 50 if (uuid_equal(&st->uuid, sw->uuid))
51 return st; 51 return st;
52 } 52 }
53 53
@@ -281,9 +281,11 @@ static struct nvmem_device *register_nvmem(struct tb_switch *sw, int id,
281 if (active) { 281 if (active) {
282 config.name = "nvm_active"; 282 config.name = "nvm_active";
283 config.reg_read = tb_switch_nvm_read; 283 config.reg_read = tb_switch_nvm_read;
284 config.read_only = true;
284 } else { 285 } else {
285 config.name = "nvm_non_active"; 286 config.name = "nvm_non_active";
286 config.reg_write = tb_switch_nvm_write; 287 config.reg_write = tb_switch_nvm_write;
288 config.root_only = true;
287 } 289 }
288 290
289 config.id = id; 291 config.id = id;
@@ -292,7 +294,6 @@ static struct nvmem_device *register_nvmem(struct tb_switch *sw, int id,
292 config.size = size; 294 config.size = size;
293 config.dev = &sw->dev; 295 config.dev = &sw->dev;
294 config.owner = THIS_MODULE; 296 config.owner = THIS_MODULE;
295 config.root_only = true;
296 config.priv = sw; 297 config.priv = sw;
297 298
298 return nvmem_register(&config); 299 return nvmem_register(&config);
@@ -1460,7 +1461,7 @@ struct tb_sw_lookup {
1460 struct tb *tb; 1461 struct tb *tb;
1461 u8 link; 1462 u8 link;
1462 u8 depth; 1463 u8 depth;
1463 const uuid_be *uuid; 1464 const uuid_t *uuid;
1464}; 1465};
1465 1466
1466static int tb_switch_match(struct device *dev, void *data) 1467static int tb_switch_match(struct device *dev, void *data)
@@ -1517,7 +1518,7 @@ struct tb_switch *tb_switch_find_by_link_depth(struct tb *tb, u8 link, u8 depth)
1517 * Returned switch has reference count increased so the caller needs to 1518 * Returned switch has reference count increased so the caller needs to
1518 * call tb_switch_put() when done with the switch. 1519 * call tb_switch_put() when done with the switch.
1519 */ 1520 */
1520struct tb_switch *tb_switch_find_by_uuid(struct tb *tb, const uuid_be *uuid) 1521struct tb_switch *tb_switch_find_by_uuid(struct tb *tb, const uuid_t *uuid)
1521{ 1522{
1522 struct tb_sw_lookup lookup; 1523 struct tb_sw_lookup lookup;
1523 struct device *dev; 1524 struct device *dev;
diff --git a/drivers/thunderbolt/tb.h b/drivers/thunderbolt/tb.h
index 3d9f64676e58..e0deee4f1eb0 100644
--- a/drivers/thunderbolt/tb.h
+++ b/drivers/thunderbolt/tb.h
@@ -101,7 +101,7 @@ struct tb_switch {
101 struct tb_dma_port *dma_port; 101 struct tb_dma_port *dma_port;
102 struct tb *tb; 102 struct tb *tb;
103 u64 uid; 103 u64 uid;
104 uuid_be *uuid; 104 uuid_t *uuid;
105 u16 vendor; 105 u16 vendor;
106 u16 device; 106 u16 device;
107 const char *vendor_name; 107 const char *vendor_name;
@@ -407,7 +407,7 @@ void tb_sw_set_unplugged(struct tb_switch *sw);
407struct tb_switch *get_switch_at_route(struct tb_switch *sw, u64 route); 407struct tb_switch *get_switch_at_route(struct tb_switch *sw, u64 route);
408struct tb_switch *tb_switch_find_by_link_depth(struct tb *tb, u8 link, 408struct tb_switch *tb_switch_find_by_link_depth(struct tb *tb, u8 link,
409 u8 depth); 409 u8 depth);
410struct tb_switch *tb_switch_find_by_uuid(struct tb *tb, const uuid_be *uuid); 410struct tb_switch *tb_switch_find_by_uuid(struct tb *tb, const uuid_t *uuid);
411 411
412static inline unsigned int tb_switch_phy_port_from_link(unsigned int link) 412static inline unsigned int tb_switch_phy_port_from_link(unsigned int link)
413{ 413{
diff --git a/drivers/thunderbolt/tb_msgs.h b/drivers/thunderbolt/tb_msgs.h
index 85b6d33c0919..de6441e4a060 100644
--- a/drivers/thunderbolt/tb_msgs.h
+++ b/drivers/thunderbolt/tb_msgs.h
@@ -179,7 +179,7 @@ struct icm_fr_pkg_get_topology_response {
179 179
180struct icm_fr_event_device_connected { 180struct icm_fr_event_device_connected {
181 struct icm_pkg_header hdr; 181 struct icm_pkg_header hdr;
182 uuid_be ep_uuid; 182 uuid_t ep_uuid;
183 u8 connection_key; 183 u8 connection_key;
184 u8 connection_id; 184 u8 connection_id;
185 u16 link_info; 185 u16 link_info;
@@ -193,7 +193,7 @@ struct icm_fr_event_device_connected {
193 193
194struct icm_fr_pkg_approve_device { 194struct icm_fr_pkg_approve_device {
195 struct icm_pkg_header hdr; 195 struct icm_pkg_header hdr;
196 uuid_be ep_uuid; 196 uuid_t ep_uuid;
197 u8 connection_key; 197 u8 connection_key;
198 u8 connection_id; 198 u8 connection_id;
199 u16 reserved; 199 u16 reserved;
@@ -207,7 +207,7 @@ struct icm_fr_event_device_disconnected {
207 207
208struct icm_fr_pkg_add_device_key { 208struct icm_fr_pkg_add_device_key {
209 struct icm_pkg_header hdr; 209 struct icm_pkg_header hdr;
210 uuid_be ep_uuid; 210 uuid_t ep_uuid;
211 u8 connection_key; 211 u8 connection_key;
212 u8 connection_id; 212 u8 connection_id;
213 u16 reserved; 213 u16 reserved;
@@ -216,7 +216,7 @@ struct icm_fr_pkg_add_device_key {
216 216
217struct icm_fr_pkg_add_device_key_response { 217struct icm_fr_pkg_add_device_key_response {
218 struct icm_pkg_header hdr; 218 struct icm_pkg_header hdr;
219 uuid_be ep_uuid; 219 uuid_t ep_uuid;
220 u8 connection_key; 220 u8 connection_key;
221 u8 connection_id; 221 u8 connection_id;
222 u16 reserved; 222 u16 reserved;
@@ -224,7 +224,7 @@ struct icm_fr_pkg_add_device_key_response {
224 224
225struct icm_fr_pkg_challenge_device { 225struct icm_fr_pkg_challenge_device {
226 struct icm_pkg_header hdr; 226 struct icm_pkg_header hdr;
227 uuid_be ep_uuid; 227 uuid_t ep_uuid;
228 u8 connection_key; 228 u8 connection_key;
229 u8 connection_id; 229 u8 connection_id;
230 u16 reserved; 230 u16 reserved;
@@ -233,7 +233,7 @@ struct icm_fr_pkg_challenge_device {
233 233
234struct icm_fr_pkg_challenge_device_response { 234struct icm_fr_pkg_challenge_device_response {
235 struct icm_pkg_header hdr; 235 struct icm_pkg_header hdr;
236 uuid_be ep_uuid; 236 uuid_t ep_uuid;
237 u8 connection_key; 237 u8 connection_key;
238 u8 connection_id; 238 u8 connection_id;
239 u16 reserved; 239 u16 reserved;
diff --git a/drivers/tty/pty.c b/drivers/tty/pty.c
index d1399aac05a1..a6d5164c33a9 100644
--- a/drivers/tty/pty.c
+++ b/drivers/tty/pty.c
@@ -69,13 +69,8 @@ static void pty_close(struct tty_struct *tty, struct file *filp)
69#ifdef CONFIG_UNIX98_PTYS 69#ifdef CONFIG_UNIX98_PTYS
70 if (tty->driver == ptm_driver) { 70 if (tty->driver == ptm_driver) {
71 mutex_lock(&devpts_mutex); 71 mutex_lock(&devpts_mutex);
72 if (tty->link->driver_data) { 72 if (tty->link->driver_data)
73 struct path *path = tty->link->driver_data; 73 devpts_pty_kill(tty->link->driver_data);
74
75 devpts_pty_kill(path->dentry);
76 path_put(path);
77 kfree(path);
78 }
79 mutex_unlock(&devpts_mutex); 74 mutex_unlock(&devpts_mutex);
80 } 75 }
81#endif 76#endif
@@ -448,48 +443,6 @@ err:
448 return retval; 443 return retval;
449} 444}
450 445
451/**
452 * pty_open_peer - open the peer of a pty
453 * @tty: the peer of the pty being opened
454 *
455 * Open the cached dentry in tty->link, providing a safe way for userspace
456 * to get the slave end of a pty (where they have the master fd and cannot
457 * access or trust the mount namespace /dev/pts was mounted inside).
458 */
459static struct file *pty_open_peer(struct tty_struct *tty, int flags)
460{
461 if (tty->driver->subtype != PTY_TYPE_MASTER)
462 return ERR_PTR(-EIO);
463 return dentry_open(tty->link->driver_data, flags, current_cred());
464}
465
466static int pty_get_peer(struct tty_struct *tty, int flags)
467{
468 int fd = -1;
469 struct file *filp = NULL;
470 int retval = -EINVAL;
471
472 fd = get_unused_fd_flags(0);
473 if (fd < 0) {
474 retval = fd;
475 goto err;
476 }
477
478 filp = pty_open_peer(tty, flags);
479 if (IS_ERR(filp)) {
480 retval = PTR_ERR(filp);
481 goto err_put;
482 }
483
484 fd_install(fd, filp);
485 return fd;
486
487err_put:
488 put_unused_fd(fd);
489err:
490 return retval;
491}
492
493static void pty_cleanup(struct tty_struct *tty) 446static void pty_cleanup(struct tty_struct *tty)
494{ 447{
495 tty_port_put(tty->port); 448 tty_port_put(tty->port);
@@ -646,9 +599,58 @@ static inline void legacy_pty_init(void) { }
646 599
647/* Unix98 devices */ 600/* Unix98 devices */
648#ifdef CONFIG_UNIX98_PTYS 601#ifdef CONFIG_UNIX98_PTYS
649
650static struct cdev ptmx_cdev; 602static struct cdev ptmx_cdev;
651 603
604/**
605 * ptm_open_peer - open the peer of a pty
606 * @master: the open struct file of the ptmx device node
607 * @tty: the master of the pty being opened
608 * @flags: the flags for open
609 *
610 * Provide a race free way for userspace to open the slave end of a pty
611 * (where they have the master fd and cannot access or trust the mount
612 * namespace /dev/pts was mounted inside).
613 */
614int ptm_open_peer(struct file *master, struct tty_struct *tty, int flags)
615{
616 int fd = -1;
617 struct file *filp;
618 int retval = -EINVAL;
619 struct path path;
620
621 if (tty->driver != ptm_driver)
622 return -EIO;
623
624 fd = get_unused_fd_flags(0);
625 if (fd < 0) {
626 retval = fd;
627 goto err;
628 }
629
630 /* Compute the slave's path */
631 path.mnt = devpts_mntget(master, tty->driver_data);
632 if (IS_ERR(path.mnt)) {
633 retval = PTR_ERR(path.mnt);
634 goto err_put;
635 }
636 path.dentry = tty->link->driver_data;
637
638 filp = dentry_open(&path, flags, current_cred());
639 mntput(path.mnt);
640 if (IS_ERR(filp)) {
641 retval = PTR_ERR(filp);
642 goto err_put;
643 }
644
645 fd_install(fd, filp);
646 return fd;
647
648err_put:
649 put_unused_fd(fd);
650err:
651 return retval;
652}
653
652static int pty_unix98_ioctl(struct tty_struct *tty, 654static int pty_unix98_ioctl(struct tty_struct *tty,
653 unsigned int cmd, unsigned long arg) 655 unsigned int cmd, unsigned long arg)
654{ 656{
@@ -663,8 +665,6 @@ static int pty_unix98_ioctl(struct tty_struct *tty,
663 return pty_get_pktmode(tty, (int __user *)arg); 665 return pty_get_pktmode(tty, (int __user *)arg);
664 case TIOCGPTN: /* Get PT Number */ 666 case TIOCGPTN: /* Get PT Number */
665 return put_user(tty->index, (unsigned int __user *)arg); 667 return put_user(tty->index, (unsigned int __user *)arg);
666 case TIOCGPTPEER: /* Open the other end */
667 return pty_get_peer(tty, (int) arg);
668 case TIOCSIG: /* Send signal to other side of pty */ 668 case TIOCSIG: /* Send signal to other side of pty */
669 return pty_signal(tty, (int) arg); 669 return pty_signal(tty, (int) arg);
670 } 670 }
@@ -792,7 +792,6 @@ static int ptmx_open(struct inode *inode, struct file *filp)
792{ 792{
793 struct pts_fs_info *fsi; 793 struct pts_fs_info *fsi;
794 struct tty_struct *tty; 794 struct tty_struct *tty;
795 struct path *pts_path;
796 struct dentry *dentry; 795 struct dentry *dentry;
797 int retval; 796 int retval;
798 int index; 797 int index;
@@ -846,26 +845,16 @@ static int ptmx_open(struct inode *inode, struct file *filp)
846 retval = PTR_ERR(dentry); 845 retval = PTR_ERR(dentry);
847 goto err_release; 846 goto err_release;
848 } 847 }
849 /* We need to cache a fake path for TIOCGPTPEER. */ 848 tty->link->driver_data = dentry;
850 pts_path = kmalloc(sizeof(struct path), GFP_KERNEL);
851 if (!pts_path)
852 goto err_release;
853 pts_path->mnt = filp->f_path.mnt;
854 pts_path->dentry = dentry;
855 path_get(pts_path);
856 tty->link->driver_data = pts_path;
857 849
858 retval = ptm_driver->ops->open(tty, filp); 850 retval = ptm_driver->ops->open(tty, filp);
859 if (retval) 851 if (retval)
860 goto err_path_put; 852 goto err_release;
861 853
862 tty_debug_hangup(tty, "opening (count=%d)\n", tty->count); 854 tty_debug_hangup(tty, "opening (count=%d)\n", tty->count);
863 855
864 tty_unlock(tty); 856 tty_unlock(tty);
865 return 0; 857 return 0;
866err_path_put:
867 path_put(pts_path);
868 kfree(pts_path);
869err_release: 858err_release:
870 tty_unlock(tty); 859 tty_unlock(tty);
871 // This will also put-ref the fsi 860 // This will also put-ref the fsi
diff --git a/drivers/tty/serial/8250/8250_core.c b/drivers/tty/serial/8250/8250_core.c
index b5def356af63..1aab3010fbfa 100644
--- a/drivers/tty/serial/8250/8250_core.c
+++ b/drivers/tty/serial/8250/8250_core.c
@@ -1043,13 +1043,24 @@ int serial8250_register_8250_port(struct uart_8250_port *up)
1043 if (up->dl_write) 1043 if (up->dl_write)
1044 uart->dl_write = up->dl_write; 1044 uart->dl_write = up->dl_write;
1045 1045
1046 if (serial8250_isa_config != NULL) 1046 if (uart->port.type != PORT_8250_CIR) {
1047 serial8250_isa_config(0, &uart->port, 1047 if (serial8250_isa_config != NULL)
1048 &uart->capabilities); 1048 serial8250_isa_config(0, &uart->port,
1049 &uart->capabilities);
1050
1051 ret = uart_add_one_port(&serial8250_reg,
1052 &uart->port);
1053 if (ret == 0)
1054 ret = uart->port.line;
1055 } else {
1056 dev_info(uart->port.dev,
1057 "skipping CIR port at 0x%lx / 0x%llx, IRQ %d\n",
1058 uart->port.iobase,
1059 (unsigned long long)uart->port.mapbase,
1060 uart->port.irq);
1049 1061
1050 ret = uart_add_one_port(&serial8250_reg, &uart->port); 1062 ret = 0;
1051 if (ret == 0) 1063 }
1052 ret = uart->port.line;
1053 } 1064 }
1054 mutex_unlock(&serial_mutex); 1065 mutex_unlock(&serial_mutex);
1055 1066
diff --git a/drivers/tty/serial/8250/8250_exar.c b/drivers/tty/serial/8250/8250_exar.c
index b5c98e5bf524..c6360fbdf808 100644
--- a/drivers/tty/serial/8250/8250_exar.c
+++ b/drivers/tty/serial/8250/8250_exar.c
@@ -261,7 +261,7 @@ __xr17v35x_register_gpio(struct pci_dev *pcidev,
261} 261}
262 262
263static const struct property_entry exar_gpio_properties[] = { 263static const struct property_entry exar_gpio_properties[] = {
264 PROPERTY_ENTRY_U32("linux,first-pin", 0), 264 PROPERTY_ENTRY_U32("exar,first-pin", 0),
265 PROPERTY_ENTRY_U32("ngpios", 16), 265 PROPERTY_ENTRY_U32("ngpios", 16),
266 { } 266 { }
267}; 267};
@@ -326,7 +326,7 @@ static int iot2040_rs485_config(struct uart_port *port,
326} 326}
327 327
328static const struct property_entry iot2040_gpio_properties[] = { 328static const struct property_entry iot2040_gpio_properties[] = {
329 PROPERTY_ENTRY_U32("linux,first-pin", 10), 329 PROPERTY_ENTRY_U32("exar,first-pin", 10),
330 PROPERTY_ENTRY_U32("ngpios", 1), 330 PROPERTY_ENTRY_U32("ngpios", 1),
331 { } 331 { }
332}; 332};
diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c
index 8a857bb34fbb..1888d168a41c 100644
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
@@ -142,15 +142,7 @@ static struct vendor_data vendor_sbsa = {
142 .fixed_options = true, 142 .fixed_options = true,
143}; 143};
144 144
145/* 145#ifdef CONFIG_ACPI_SPCR_TABLE
146 * Erratum 44 for QDF2432v1 and QDF2400v1 SoCs describes the BUSY bit as
147 * occasionally getting stuck as 1. To avoid the potential for a hang, check
148 * TXFE == 0 instead of BUSY == 1. This may not be suitable for all UART
149 * implementations, so only do so if an affected platform is detected in
150 * parse_spcr().
151 */
152static bool qdf2400_e44_present = false;
153
154static struct vendor_data vendor_qdt_qdf2400_e44 = { 146static struct vendor_data vendor_qdt_qdf2400_e44 = {
155 .reg_offset = pl011_std_offsets, 147 .reg_offset = pl011_std_offsets,
156 .fr_busy = UART011_FR_TXFE, 148 .fr_busy = UART011_FR_TXFE,
@@ -165,6 +157,7 @@ static struct vendor_data vendor_qdt_qdf2400_e44 = {
165 .always_enabled = true, 157 .always_enabled = true,
166 .fixed_options = true, 158 .fixed_options = true,
167}; 159};
160#endif
168 161
169static u16 pl011_st_offsets[REG_ARRAY_SIZE] = { 162static u16 pl011_st_offsets[REG_ARRAY_SIZE] = {
170 [REG_DR] = UART01x_DR, 163 [REG_DR] = UART01x_DR,
@@ -2375,12 +2368,14 @@ static int __init pl011_console_match(struct console *co, char *name, int idx,
2375 resource_size_t addr; 2368 resource_size_t addr;
2376 int i; 2369 int i;
2377 2370
2378 if (strcmp(name, "qdf2400_e44") == 0) { 2371 /*
2379 pr_info_once("UART: Working around QDF2400 SoC erratum 44"); 2372 * Systems affected by the Qualcomm Technologies QDF2400 E44 erratum
2380 qdf2400_e44_present = true; 2373 * have a distinct console name, so make sure we check for that.
2381 } else if (strcmp(name, "pl011") != 0) { 2374 * The actual implementation of the erratum occurs in the probe
2375 * function.
2376 */
2377 if ((strcmp(name, "qdf2400_e44") != 0) && (strcmp(name, "pl011") != 0))
2382 return -ENODEV; 2378 return -ENODEV;
2383 }
2384 2379
2385 if (uart_parse_earlycon(options, &iotype, &addr, &options)) 2380 if (uart_parse_earlycon(options, &iotype, &addr, &options))
2386 return -ENODEV; 2381 return -ENODEV;
@@ -2734,11 +2729,17 @@ static int sbsa_uart_probe(struct platform_device *pdev)
2734 } 2729 }
2735 uap->port.irq = ret; 2730 uap->port.irq = ret;
2736 2731
2737 uap->reg_offset = vendor_sbsa.reg_offset; 2732#ifdef CONFIG_ACPI_SPCR_TABLE
2738 uap->vendor = qdf2400_e44_present ? 2733 if (qdf2400_e44_present) {
2739 &vendor_qdt_qdf2400_e44 : &vendor_sbsa; 2734 dev_info(&pdev->dev, "working around QDF2400 SoC erratum 44\n");
2735 uap->vendor = &vendor_qdt_qdf2400_e44;
2736 } else
2737#endif
2738 uap->vendor = &vendor_sbsa;
2739
2740 uap->reg_offset = uap->vendor->reg_offset;
2740 uap->fifosize = 32; 2741 uap->fifosize = 32;
2741 uap->port.iotype = vendor_sbsa.access_32b ? UPIO_MEM32 : UPIO_MEM; 2742 uap->port.iotype = uap->vendor->access_32b ? UPIO_MEM32 : UPIO_MEM;
2742 uap->port.ops = &sbsa_uart_pops; 2743 uap->port.ops = &sbsa_uart_pops;
2743 uap->fixed_baud = baudrate; 2744 uap->fixed_baud = baudrate;
2744 2745
diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c
index 343de8c384b0..898dcb091a27 100644
--- a/drivers/tty/serial/fsl_lpuart.c
+++ b/drivers/tty/serial/fsl_lpuart.c
@@ -619,6 +619,12 @@ static unsigned int lpuart32_tx_empty(struct uart_port *port)
619 TIOCSER_TEMT : 0; 619 TIOCSER_TEMT : 0;
620} 620}
621 621
622static bool lpuart_is_32(struct lpuart_port *sport)
623{
624 return sport->port.iotype == UPIO_MEM32 ||
625 sport->port.iotype == UPIO_MEM32BE;
626}
627
622static irqreturn_t lpuart_txint(int irq, void *dev_id) 628static irqreturn_t lpuart_txint(int irq, void *dev_id)
623{ 629{
624 struct lpuart_port *sport = dev_id; 630 struct lpuart_port *sport = dev_id;
@@ -627,7 +633,7 @@ static irqreturn_t lpuart_txint(int irq, void *dev_id)
627 633
628 spin_lock_irqsave(&sport->port.lock, flags); 634 spin_lock_irqsave(&sport->port.lock, flags);
629 if (sport->port.x_char) { 635 if (sport->port.x_char) {
630 if (sport->port.iotype & (UPIO_MEM32 | UPIO_MEM32BE)) 636 if (lpuart_is_32(sport))
631 lpuart32_write(&sport->port, sport->port.x_char, UARTDATA); 637 lpuart32_write(&sport->port, sport->port.x_char, UARTDATA);
632 else 638 else
633 writeb(sport->port.x_char, sport->port.membase + UARTDR); 639 writeb(sport->port.x_char, sport->port.membase + UARTDR);
@@ -635,14 +641,14 @@ static irqreturn_t lpuart_txint(int irq, void *dev_id)
635 } 641 }
636 642
637 if (uart_circ_empty(xmit) || uart_tx_stopped(&sport->port)) { 643 if (uart_circ_empty(xmit) || uart_tx_stopped(&sport->port)) {
638 if (sport->port.iotype & (UPIO_MEM32 | UPIO_MEM32BE)) 644 if (lpuart_is_32(sport))
639 lpuart32_stop_tx(&sport->port); 645 lpuart32_stop_tx(&sport->port);
640 else 646 else
641 lpuart_stop_tx(&sport->port); 647 lpuart_stop_tx(&sport->port);
642 goto out; 648 goto out;
643 } 649 }
644 650
645 if (sport->port.iotype & (UPIO_MEM32 | UPIO_MEM32BE)) 651 if (lpuart_is_32(sport))
646 lpuart32_transmit_buffer(sport); 652 lpuart32_transmit_buffer(sport);
647 else 653 else
648 lpuart_transmit_buffer(sport); 654 lpuart_transmit_buffer(sport);
@@ -1978,12 +1984,12 @@ static int __init lpuart_console_setup(struct console *co, char *options)
1978 if (options) 1984 if (options)
1979 uart_parse_options(options, &baud, &parity, &bits, &flow); 1985 uart_parse_options(options, &baud, &parity, &bits, &flow);
1980 else 1986 else
1981 if (sport->port.iotype & (UPIO_MEM32 | UPIO_MEM32BE)) 1987 if (lpuart_is_32(sport))
1982 lpuart32_console_get_options(sport, &baud, &parity, &bits); 1988 lpuart32_console_get_options(sport, &baud, &parity, &bits);
1983 else 1989 else
1984 lpuart_console_get_options(sport, &baud, &parity, &bits); 1990 lpuart_console_get_options(sport, &baud, &parity, &bits);
1985 1991
1986 if (sport->port.iotype & (UPIO_MEM32 | UPIO_MEM32BE)) 1992 if (lpuart_is_32(sport))
1987 lpuart32_setup_watermark(sport); 1993 lpuart32_setup_watermark(sport);
1988 else 1994 else
1989 lpuart_setup_watermark(sport); 1995 lpuart_setup_watermark(sport);
@@ -2118,7 +2124,7 @@ static int lpuart_probe(struct platform_device *pdev)
2118 } 2124 }
2119 sport->port.irq = ret; 2125 sport->port.irq = ret;
2120 sport->port.iotype = sdata->iotype; 2126 sport->port.iotype = sdata->iotype;
2121 if (sport->port.iotype & (UPIO_MEM32 | UPIO_MEM32BE)) 2127 if (lpuart_is_32(sport))
2122 sport->port.ops = &lpuart32_pops; 2128 sport->port.ops = &lpuart32_pops;
2123 else 2129 else
2124 sport->port.ops = &lpuart_pops; 2130 sport->port.ops = &lpuart_pops;
@@ -2145,7 +2151,7 @@ static int lpuart_probe(struct platform_device *pdev)
2145 2151
2146 platform_set_drvdata(pdev, &sport->port); 2152 platform_set_drvdata(pdev, &sport->port);
2147 2153
2148 if (sport->port.iotype & (UPIO_MEM32 | UPIO_MEM32BE)) 2154 if (lpuart_is_32(sport))
2149 lpuart_reg.cons = LPUART32_CONSOLE; 2155 lpuart_reg.cons = LPUART32_CONSOLE;
2150 else 2156 else
2151 lpuart_reg.cons = LPUART_CONSOLE; 2157 lpuart_reg.cons = LPUART_CONSOLE;
@@ -2198,7 +2204,7 @@ static int lpuart_suspend(struct device *dev)
2198 struct lpuart_port *sport = dev_get_drvdata(dev); 2204 struct lpuart_port *sport = dev_get_drvdata(dev);
2199 unsigned long temp; 2205 unsigned long temp;
2200 2206
2201 if (sport->port.iotype & (UPIO_MEM32 | UPIO_MEM32BE)) { 2207 if (lpuart_is_32(sport)) {
2202 /* disable Rx/Tx and interrupts */ 2208 /* disable Rx/Tx and interrupts */
2203 temp = lpuart32_read(&sport->port, UARTCTRL); 2209 temp = lpuart32_read(&sport->port, UARTCTRL);
2204 temp &= ~(UARTCTRL_TE | UARTCTRL_TIE | UARTCTRL_TCIE); 2210 temp &= ~(UARTCTRL_TE | UARTCTRL_TIE | UARTCTRL_TCIE);
@@ -2249,7 +2255,7 @@ static int lpuart_resume(struct device *dev)
2249 if (sport->port.suspended && !sport->port.irq_wake) 2255 if (sport->port.suspended && !sport->port.irq_wake)
2250 clk_prepare_enable(sport->clk); 2256 clk_prepare_enable(sport->clk);
2251 2257
2252 if (sport->port.iotype & (UPIO_MEM32 | UPIO_MEM32BE)) { 2258 if (lpuart_is_32(sport)) {
2253 lpuart32_setup_watermark(sport); 2259 lpuart32_setup_watermark(sport);
2254 temp = lpuart32_read(&sport->port, UARTCTRL); 2260 temp = lpuart32_read(&sport->port, UARTCTRL);
2255 temp |= (UARTCTRL_RIE | UARTCTRL_TIE | UARTCTRL_RE | 2261 temp |= (UARTCTRL_RIE | UARTCTRL_TIE | UARTCTRL_RE |
diff --git a/drivers/tty/serial/imx.c b/drivers/tty/serial/imx.c
index 9e3162bf3bd1..80934e7bd67f 100644
--- a/drivers/tty/serial/imx.c
+++ b/drivers/tty/serial/imx.c
@@ -186,11 +186,6 @@
186 186
187#define UART_NR 8 187#define UART_NR 8
188 188
189/* RX DMA buffer periods */
190#define RX_DMA_PERIODS 4
191#define RX_BUF_SIZE (PAGE_SIZE)
192
193
194/* i.MX21 type uart runs on all i.mx except i.MX1 and i.MX6q */ 189/* i.MX21 type uart runs on all i.mx except i.MX1 and i.MX6q */
195enum imx_uart_type { 190enum imx_uart_type {
196 IMX1_UART, 191 IMX1_UART,
@@ -226,7 +221,6 @@ struct imx_port {
226 struct dma_chan *dma_chan_rx, *dma_chan_tx; 221 struct dma_chan *dma_chan_rx, *dma_chan_tx;
227 struct scatterlist rx_sgl, tx_sgl[2]; 222 struct scatterlist rx_sgl, tx_sgl[2];
228 void *rx_buf; 223 void *rx_buf;
229 unsigned int rx_buf_size;
230 struct circ_buf rx_ring; 224 struct circ_buf rx_ring;
231 unsigned int rx_periods; 225 unsigned int rx_periods;
232 dma_cookie_t rx_cookie; 226 dma_cookie_t rx_cookie;
@@ -464,7 +458,7 @@ static inline void imx_transmit_buffer(struct imx_port *sport)
464 } 458 }
465 } 459 }
466 460
467 while (!uart_circ_empty(xmit) && 461 while (!uart_circ_empty(xmit) && !sport->dma_is_txing &&
468 !(readl(sport->port.membase + uts_reg(sport)) & UTS_TXFULL)) { 462 !(readl(sport->port.membase + uts_reg(sport)) & UTS_TXFULL)) {
469 /* send xmit->buf[xmit->tail] 463 /* send xmit->buf[xmit->tail]
470 * out the port here */ 464 * out the port here */
@@ -967,6 +961,8 @@ static void imx_timeout(unsigned long data)
967 } 961 }
968} 962}
969 963
964#define RX_BUF_SIZE (PAGE_SIZE)
965
970/* 966/*
971 * There are two kinds of RX DMA interrupts(such as in the MX6Q): 967 * There are two kinds of RX DMA interrupts(such as in the MX6Q):
972 * [1] the RX DMA buffer is full. 968 * [1] the RX DMA buffer is full.
@@ -1049,6 +1045,9 @@ static void dma_rx_callback(void *data)
1049 } 1045 }
1050} 1046}
1051 1047
1048/* RX DMA buffer periods */
1049#define RX_DMA_PERIODS 4
1050
1052static int start_rx_dma(struct imx_port *sport) 1051static int start_rx_dma(struct imx_port *sport)
1053{ 1052{
1054 struct scatterlist *sgl = &sport->rx_sgl; 1053 struct scatterlist *sgl = &sport->rx_sgl;
@@ -1059,8 +1058,9 @@ static int start_rx_dma(struct imx_port *sport)
1059 1058
1060 sport->rx_ring.head = 0; 1059 sport->rx_ring.head = 0;
1061 sport->rx_ring.tail = 0; 1060 sport->rx_ring.tail = 0;
1061 sport->rx_periods = RX_DMA_PERIODS;
1062 1062
1063 sg_init_one(sgl, sport->rx_buf, sport->rx_buf_size); 1063 sg_init_one(sgl, sport->rx_buf, RX_BUF_SIZE);
1064 ret = dma_map_sg(dev, sgl, 1, DMA_FROM_DEVICE); 1064 ret = dma_map_sg(dev, sgl, 1, DMA_FROM_DEVICE);
1065 if (ret == 0) { 1065 if (ret == 0) {
1066 dev_err(dev, "DMA mapping error for RX.\n"); 1066 dev_err(dev, "DMA mapping error for RX.\n");
@@ -1171,7 +1171,7 @@ static int imx_uart_dma_init(struct imx_port *sport)
1171 goto err; 1171 goto err;
1172 } 1172 }
1173 1173
1174 sport->rx_buf = kzalloc(sport->rx_buf_size, GFP_KERNEL); 1174 sport->rx_buf = kzalloc(PAGE_SIZE, GFP_KERNEL);
1175 if (!sport->rx_buf) { 1175 if (!sport->rx_buf) {
1176 ret = -ENOMEM; 1176 ret = -ENOMEM;
1177 goto err; 1177 goto err;
@@ -2036,7 +2036,6 @@ static int serial_imx_probe_dt(struct imx_port *sport,
2036{ 2036{
2037 struct device_node *np = pdev->dev.of_node; 2037 struct device_node *np = pdev->dev.of_node;
2038 int ret; 2038 int ret;
2039 u32 dma_buf_size[2];
2040 2039
2041 sport->devdata = of_device_get_match_data(&pdev->dev); 2040 sport->devdata = of_device_get_match_data(&pdev->dev);
2042 if (!sport->devdata) 2041 if (!sport->devdata)
@@ -2060,14 +2059,6 @@ static int serial_imx_probe_dt(struct imx_port *sport,
2060 if (of_get_property(np, "rts-gpios", NULL)) 2059 if (of_get_property(np, "rts-gpios", NULL))
2061 sport->have_rtsgpio = 1; 2060 sport->have_rtsgpio = 1;
2062 2061
2063 if (!of_property_read_u32_array(np, "fsl,dma-size", dma_buf_size, 2)) {
2064 sport->rx_buf_size = dma_buf_size[0] * dma_buf_size[1];
2065 sport->rx_periods = dma_buf_size[1];
2066 } else {
2067 sport->rx_buf_size = RX_BUF_SIZE;
2068 sport->rx_periods = RX_DMA_PERIODS;
2069 }
2070
2071 return 0; 2062 return 0;
2072} 2063}
2073#else 2064#else
diff --git a/drivers/tty/serial/sh-sci.c b/drivers/tty/serial/sh-sci.c
index da5ddfc14778..e08b16b070c0 100644
--- a/drivers/tty/serial/sh-sci.c
+++ b/drivers/tty/serial/sh-sci.c
@@ -1085,10 +1085,12 @@ static ssize_t rx_trigger_store(struct device *dev,
1085{ 1085{
1086 struct uart_port *port = dev_get_drvdata(dev); 1086 struct uart_port *port = dev_get_drvdata(dev);
1087 struct sci_port *sci = to_sci_port(port); 1087 struct sci_port *sci = to_sci_port(port);
1088 int ret;
1088 long r; 1089 long r;
1089 1090
1090 if (kstrtol(buf, 0, &r) == -EINVAL) 1091 ret = kstrtol(buf, 0, &r);
1091 return -EINVAL; 1092 if (ret)
1093 return ret;
1092 1094
1093 sci->rx_trigger = scif_set_rtrg(port, r); 1095 sci->rx_trigger = scif_set_rtrg(port, r);
1094 if (port->type == PORT_SCIFA || port->type == PORT_SCIFB) 1096 if (port->type == PORT_SCIFA || port->type == PORT_SCIFB)
@@ -1116,10 +1118,12 @@ static ssize_t rx_fifo_timeout_store(struct device *dev,
1116{ 1118{
1117 struct uart_port *port = dev_get_drvdata(dev); 1119 struct uart_port *port = dev_get_drvdata(dev);
1118 struct sci_port *sci = to_sci_port(port); 1120 struct sci_port *sci = to_sci_port(port);
1121 int ret;
1119 long r; 1122 long r;
1120 1123
1121 if (kstrtol(buf, 0, &r) == -EINVAL) 1124 ret = kstrtol(buf, 0, &r);
1122 return -EINVAL; 1125 if (ret)
1126 return ret;
1123 sci->rx_fifo_timeout = r; 1127 sci->rx_fifo_timeout = r;
1124 scif_set_rtrg(port, 1); 1128 scif_set_rtrg(port, 1);
1125 if (r > 0) 1129 if (r > 0)
diff --git a/drivers/tty/serial/st-asc.c b/drivers/tty/serial/st-asc.c
index f5335be344f6..6b0ca65027d0 100644
--- a/drivers/tty/serial/st-asc.c
+++ b/drivers/tty/serial/st-asc.c
@@ -758,6 +758,7 @@ static int asc_init_port(struct asc_port *ascport,
758 if (IS_ERR(ascport->pinctrl)) { 758 if (IS_ERR(ascport->pinctrl)) {
759 ret = PTR_ERR(ascport->pinctrl); 759 ret = PTR_ERR(ascport->pinctrl);
760 dev_err(&pdev->dev, "Failed to get Pinctrl: %d\n", ret); 760 dev_err(&pdev->dev, "Failed to get Pinctrl: %d\n", ret);
761 return ret;
761 } 762 }
762 763
763 ascport->states[DEFAULT] = 764 ascport->states[DEFAULT] =
diff --git a/drivers/tty/tty_io.c b/drivers/tty/tty_io.c
index 974b13d24401..10c4038c0e8d 100644
--- a/drivers/tty/tty_io.c
+++ b/drivers/tty/tty_io.c
@@ -2518,6 +2518,9 @@ long tty_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
2518 case TIOCSSERIAL: 2518 case TIOCSSERIAL:
2519 tty_warn_deprecated_flags(p); 2519 tty_warn_deprecated_flags(p);
2520 break; 2520 break;
2521 case TIOCGPTPEER:
2522 /* Special because the struct file is needed */
2523 return ptm_open_peer(file, tty, (int)arg);
2521 default: 2524 default:
2522 retval = tty_jobctrl_ioctl(tty, real_tty, file, cmd, arg); 2525 retval = tty_jobctrl_ioctl(tty, real_tty, file, cmd, arg);
2523 if (retval != -ENOIOCTLCMD) 2526 if (retval != -ENOIOCTLCMD)
diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
index 5357d83bbda2..5e056064259c 100644
--- a/drivers/usb/class/cdc-acm.c
+++ b/drivers/usb/class/cdc-acm.c
@@ -1829,6 +1829,9 @@ static const struct usb_device_id acm_ids[] = {
1829 { USB_DEVICE(0x1576, 0x03b1), /* Maretron USB100 */ 1829 { USB_DEVICE(0x1576, 0x03b1), /* Maretron USB100 */
1830 .driver_info = NO_UNION_NORMAL, /* reports zero length descriptor */ 1830 .driver_info = NO_UNION_NORMAL, /* reports zero length descriptor */
1831 }, 1831 },
1832 { USB_DEVICE(0xfff0, 0x0100), /* DATECS FP-2000 */
1833 .driver_info = NO_UNION_NORMAL, /* reports zero length descriptor */
1834 },
1832 1835
1833 { USB_DEVICE(0x2912, 0x0001), /* ATOL FPrint */ 1836 { USB_DEVICE(0x2912, 0x0001), /* ATOL FPrint */
1834 .driver_info = CLEAR_HALT_CONDITIONS, 1837 .driver_info = CLEAR_HALT_CONDITIONS,
diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c
index ab1bb3b538ac..7f277b092b5b 100644
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
@@ -1888,7 +1888,7 @@ void usb_hcd_flush_endpoint(struct usb_device *udev,
1888 /* No more submits can occur */ 1888 /* No more submits can occur */
1889 spin_lock_irq(&hcd_urb_list_lock); 1889 spin_lock_irq(&hcd_urb_list_lock);
1890rescan: 1890rescan:
1891 list_for_each_entry (urb, &ep->urb_list, urb_list) { 1891 list_for_each_entry_reverse(urb, &ep->urb_list, urb_list) {
1892 int is_in; 1892 int is_in;
1893 1893
1894 if (urb->unlinked) 1894 if (urb->unlinked)
@@ -2485,6 +2485,8 @@ void usb_hc_died (struct usb_hcd *hcd)
2485 } 2485 }
2486 if (usb_hcd_is_primary_hcd(hcd) && hcd->shared_hcd) { 2486 if (usb_hcd_is_primary_hcd(hcd) && hcd->shared_hcd) {
2487 hcd = hcd->shared_hcd; 2487 hcd = hcd->shared_hcd;
2488 clear_bit(HCD_FLAG_RH_RUNNING, &hcd->flags);
2489 set_bit(HCD_FLAG_DEAD, &hcd->flags);
2488 if (hcd->rh_registered) { 2490 if (hcd->rh_registered) {
2489 clear_bit(HCD_FLAG_POLL_RH, &hcd->flags); 2491 clear_bit(HCD_FLAG_POLL_RH, &hcd->flags);
2490 2492
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 6e6797d145dd..822f8c50e423 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -4725,7 +4725,8 @@ hub_power_remaining(struct usb_hub *hub)
4725static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus, 4725static void hub_port_connect(struct usb_hub *hub, int port1, u16 portstatus,
4726 u16 portchange) 4726 u16 portchange)
4727{ 4727{
4728 int status, i; 4728 int status = -ENODEV;
4729 int i;
4729 unsigned unit_load; 4730 unsigned unit_load;
4730 struct usb_device *hdev = hub->hdev; 4731 struct usb_device *hdev = hub->hdev;
4731 struct usb_hcd *hcd = bus_to_hcd(hdev->bus); 4732 struct usb_hcd *hcd = bus_to_hcd(hdev->bus);
@@ -4929,9 +4930,10 @@ loop:
4929 4930
4930done: 4931done:
4931 hub_port_disable(hub, port1, 1); 4932 hub_port_disable(hub, port1, 1);
4932 if (hcd->driver->relinquish_port && !hub->hdev->parent) 4933 if (hcd->driver->relinquish_port && !hub->hdev->parent) {
4933 hcd->driver->relinquish_port(hcd, port1); 4934 if (status != -ENOTCONN && status != -ENODEV)
4934 4935 hcd->driver->relinquish_port(hcd, port1);
4936 }
4935} 4937}
4936 4938
4937/* Handle physical or logical connection change events. 4939/* Handle physical or logical connection change events.
diff --git a/drivers/usb/core/quirks.c b/drivers/usb/core/quirks.c
index 3116edfcdc18..574da2b4529c 100644
--- a/drivers/usb/core/quirks.c
+++ b/drivers/usb/core/quirks.c
@@ -150,6 +150,9 @@ static const struct usb_device_id usb_quirk_list[] = {
150 /* appletouch */ 150 /* appletouch */
151 { USB_DEVICE(0x05ac, 0x021a), .driver_info = USB_QUIRK_RESET_RESUME }, 151 { USB_DEVICE(0x05ac, 0x021a), .driver_info = USB_QUIRK_RESET_RESUME },
152 152
153 /* Genesys Logic hub, internally used by Moshi USB to Ethernet Adapter */
154 { USB_DEVICE(0x05e3, 0x0616), .driver_info = USB_QUIRK_NO_LPM },
155
153 /* Avision AV600U */ 156 /* Avision AV600U */
154 { USB_DEVICE(0x0638, 0x0a13), .driver_info = 157 { USB_DEVICE(0x0638, 0x0a13), .driver_info =
155 USB_QUIRK_STRING_FETCH_255 }, 158 USB_QUIRK_STRING_FETCH_255 },
@@ -249,6 +252,7 @@ static const struct usb_device_id usb_amd_resume_quirk_list[] = {
249 { USB_DEVICE(0x093a, 0x2500), .driver_info = USB_QUIRK_RESET_RESUME }, 252 { USB_DEVICE(0x093a, 0x2500), .driver_info = USB_QUIRK_RESET_RESUME },
250 { USB_DEVICE(0x093a, 0x2510), .driver_info = USB_QUIRK_RESET_RESUME }, 253 { USB_DEVICE(0x093a, 0x2510), .driver_info = USB_QUIRK_RESET_RESUME },
251 { USB_DEVICE(0x093a, 0x2521), .driver_info = USB_QUIRK_RESET_RESUME }, 254 { USB_DEVICE(0x093a, 0x2521), .driver_info = USB_QUIRK_RESET_RESUME },
255 { USB_DEVICE(0x03f0, 0x2b4a), .driver_info = USB_QUIRK_RESET_RESUME },
252 256
253 /* Logitech Optical Mouse M90/M100 */ 257 /* Logitech Optical Mouse M90/M100 */
254 { USB_DEVICE(0x046d, 0xc05a), .driver_info = USB_QUIRK_RESET_RESUME }, 258 { USB_DEVICE(0x046d, 0xc05a), .driver_info = USB_QUIRK_RESET_RESUME },
diff --git a/drivers/usb/dwc2/gadget.c b/drivers/usb/dwc2/gadget.c
index bc3b3fda5000..c4066cd77e47 100644
--- a/drivers/usb/dwc2/gadget.c
+++ b/drivers/usb/dwc2/gadget.c
@@ -3573,6 +3573,9 @@ irq_retry:
3573 /* Report disconnection if it is not already done. */ 3573 /* Report disconnection if it is not already done. */
3574 dwc2_hsotg_disconnect(hsotg); 3574 dwc2_hsotg_disconnect(hsotg);
3575 3575
3576 /* Reset device address to zero */
3577 __bic32(hsotg->regs + DCFG, DCFG_DEVADDR_MASK);
3578
3576 if (usb_status & GOTGCTL_BSESVLD && connected) 3579 if (usb_status & GOTGCTL_BSESVLD && connected)
3577 dwc2_hsotg_core_init_disconnected(hsotg, true); 3580 dwc2_hsotg_core_init_disconnected(hsotg, true);
3578 } 3581 }
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index 326b302fc440..03474d3575ab 100644
--- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c
@@ -766,15 +766,15 @@ static int dwc3_core_init(struct dwc3 *dwc)
766 dwc->maximum_speed = USB_SPEED_HIGH; 766 dwc->maximum_speed = USB_SPEED_HIGH;
767 } 767 }
768 768
769 ret = dwc3_core_soft_reset(dwc); 769 ret = dwc3_core_get_phy(dwc);
770 if (ret) 770 if (ret)
771 goto err0; 771 goto err0;
772 772
773 ret = dwc3_phy_setup(dwc); 773 ret = dwc3_core_soft_reset(dwc);
774 if (ret) 774 if (ret)
775 goto err0; 775 goto err0;
776 776
777 ret = dwc3_core_get_phy(dwc); 777 ret = dwc3_phy_setup(dwc);
778 if (ret) 778 if (ret)
779 goto err0; 779 goto err0;
780 780
diff --git a/drivers/usb/dwc3/dwc3-omap.c b/drivers/usb/dwc3/dwc3-omap.c
index 98926504b55b..f5aaa0cf3873 100644
--- a/drivers/usb/dwc3/dwc3-omap.c
+++ b/drivers/usb/dwc3/dwc3-omap.c
@@ -512,15 +512,6 @@ static int dwc3_omap_probe(struct platform_device *pdev)
512 512
513 /* check the DMA Status */ 513 /* check the DMA Status */
514 reg = dwc3_omap_readl(omap->base, USBOTGSS_SYSCONFIG); 514 reg = dwc3_omap_readl(omap->base, USBOTGSS_SYSCONFIG);
515 irq_set_status_flags(omap->irq, IRQ_NOAUTOEN);
516 ret = devm_request_threaded_irq(dev, omap->irq, dwc3_omap_interrupt,
517 dwc3_omap_interrupt_thread, IRQF_SHARED,
518 "dwc3-omap", omap);
519 if (ret) {
520 dev_err(dev, "failed to request IRQ #%d --> %d\n",
521 omap->irq, ret);
522 goto err1;
523 }
524 515
525 ret = dwc3_omap_extcon_register(omap); 516 ret = dwc3_omap_extcon_register(omap);
526 if (ret < 0) 517 if (ret < 0)
@@ -532,8 +523,15 @@ static int dwc3_omap_probe(struct platform_device *pdev)
532 goto err1; 523 goto err1;
533 } 524 }
534 525
526 ret = devm_request_threaded_irq(dev, omap->irq, dwc3_omap_interrupt,
527 dwc3_omap_interrupt_thread, IRQF_SHARED,
528 "dwc3-omap", omap);
529 if (ret) {
530 dev_err(dev, "failed to request IRQ #%d --> %d\n",
531 omap->irq, ret);
532 goto err1;
533 }
535 dwc3_omap_enable_irqs(omap); 534 dwc3_omap_enable_irqs(omap);
536 enable_irq(omap->irq);
537 return 0; 535 return 0;
538 536
539err1: 537err1:
diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index 9e41605a276b..f064f1549333 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -191,14 +191,16 @@ void dwc3_gadget_giveback(struct dwc3_ep *dep, struct dwc3_request *req,
191 191
192 req->started = false; 192 req->started = false;
193 list_del(&req->list); 193 list_del(&req->list);
194 req->trb = NULL;
195 req->remaining = 0; 194 req->remaining = 0;
196 195
197 if (req->request.status == -EINPROGRESS) 196 if (req->request.status == -EINPROGRESS)
198 req->request.status = status; 197 req->request.status = status;
199 198
200 usb_gadget_unmap_request_by_dev(dwc->sysdev, 199 if (req->trb)
201 &req->request, req->direction); 200 usb_gadget_unmap_request_by_dev(dwc->sysdev,
201 &req->request, req->direction);
202
203 req->trb = NULL;
202 204
203 trace_dwc3_gadget_giveback(req); 205 trace_dwc3_gadget_giveback(req);
204 206
@@ -894,9 +896,40 @@ static void __dwc3_prepare_one_trb(struct dwc3_ep *dep, struct dwc3_trb *trb,
894 if (!node) { 896 if (!node) {
895 trb->ctrl = DWC3_TRBCTL_ISOCHRONOUS_FIRST; 897 trb->ctrl = DWC3_TRBCTL_ISOCHRONOUS_FIRST;
896 898
899 /*
900 * USB Specification 2.0 Section 5.9.2 states that: "If
901 * there is only a single transaction in the microframe,
902 * only a DATA0 data packet PID is used. If there are
903 * two transactions per microframe, DATA1 is used for
904 * the first transaction data packet and DATA0 is used
905 * for the second transaction data packet. If there are
906 * three transactions per microframe, DATA2 is used for
907 * the first transaction data packet, DATA1 is used for
908 * the second, and DATA0 is used for the third."
909 *
910 * IOW, we should satisfy the following cases:
911 *
912 * 1) length <= maxpacket
913 * - DATA0
914 *
915 * 2) maxpacket < length <= (2 * maxpacket)
916 * - DATA1, DATA0
917 *
918 * 3) (2 * maxpacket) < length <= (3 * maxpacket)
919 * - DATA2, DATA1, DATA0
920 */
897 if (speed == USB_SPEED_HIGH) { 921 if (speed == USB_SPEED_HIGH) {
898 struct usb_ep *ep = &dep->endpoint; 922 struct usb_ep *ep = &dep->endpoint;
899 trb->size |= DWC3_TRB_SIZE_PCM1(ep->mult - 1); 923 unsigned int mult = ep->mult - 1;
924 unsigned int maxp = usb_endpoint_maxp(ep->desc);
925
926 if (length <= (2 * maxp))
927 mult--;
928
929 if (length <= maxp)
930 mult--;
931
932 trb->size |= DWC3_TRB_SIZE_PCM1(mult);
900 } 933 }
901 } else { 934 } else {
902 trb->ctrl = DWC3_TRBCTL_ISOCHRONOUS; 935 trb->ctrl = DWC3_TRBCTL_ISOCHRONOUS;
diff --git a/drivers/usb/gadget/function/f_mass_storage.c b/drivers/usb/gadget/function/f_mass_storage.c
index e80b9c123a9d..f95bddd6513f 100644
--- a/drivers/usb/gadget/function/f_mass_storage.c
+++ b/drivers/usb/gadget/function/f_mass_storage.c
@@ -2490,7 +2490,7 @@ static int fsg_main_thread(void *common_)
2490 int i; 2490 int i;
2491 2491
2492 down_write(&common->filesem); 2492 down_write(&common->filesem);
2493 for (i = 0; i < ARRAY_SIZE(common->luns); --i) { 2493 for (i = 0; i < ARRAY_SIZE(common->luns); i++) {
2494 struct fsg_lun *curlun = common->luns[i]; 2494 struct fsg_lun *curlun = common->luns[i];
2495 if (!curlun || !fsg_lun_is_open(curlun)) 2495 if (!curlun || !fsg_lun_is_open(curlun))
2496 continue; 2496 continue;
diff --git a/drivers/usb/gadget/function/f_uac1.c b/drivers/usb/gadget/function/f_uac1.c
index 8656f84e17d9..29efbedc91f9 100644
--- a/drivers/usb/gadget/function/f_uac1.c
+++ b/drivers/usb/gadget/function/f_uac1.c
@@ -92,9 +92,9 @@ static struct uac_input_terminal_descriptor usb_out_it_desc = {
92 .bDescriptorType = USB_DT_CS_INTERFACE, 92 .bDescriptorType = USB_DT_CS_INTERFACE,
93 .bDescriptorSubtype = UAC_INPUT_TERMINAL, 93 .bDescriptorSubtype = UAC_INPUT_TERMINAL,
94 .bTerminalID = USB_OUT_IT_ID, 94 .bTerminalID = USB_OUT_IT_ID,
95 .wTerminalType = UAC_TERMINAL_STREAMING, 95 .wTerminalType = cpu_to_le16(UAC_TERMINAL_STREAMING),
96 .bAssocTerminal = 0, 96 .bAssocTerminal = 0,
97 .wChannelConfig = 0x3, 97 .wChannelConfig = cpu_to_le16(0x3),
98}; 98};
99 99
100#define IO_OUT_OT_ID 2 100#define IO_OUT_OT_ID 2
@@ -103,7 +103,7 @@ static struct uac1_output_terminal_descriptor io_out_ot_desc = {
103 .bDescriptorType = USB_DT_CS_INTERFACE, 103 .bDescriptorType = USB_DT_CS_INTERFACE,
104 .bDescriptorSubtype = UAC_OUTPUT_TERMINAL, 104 .bDescriptorSubtype = UAC_OUTPUT_TERMINAL,
105 .bTerminalID = IO_OUT_OT_ID, 105 .bTerminalID = IO_OUT_OT_ID,
106 .wTerminalType = UAC_OUTPUT_TERMINAL_SPEAKER, 106 .wTerminalType = cpu_to_le16(UAC_OUTPUT_TERMINAL_SPEAKER),
107 .bAssocTerminal = 0, 107 .bAssocTerminal = 0,
108 .bSourceID = USB_OUT_IT_ID, 108 .bSourceID = USB_OUT_IT_ID,
109}; 109};
@@ -114,9 +114,9 @@ static struct uac_input_terminal_descriptor io_in_it_desc = {
114 .bDescriptorType = USB_DT_CS_INTERFACE, 114 .bDescriptorType = USB_DT_CS_INTERFACE,
115 .bDescriptorSubtype = UAC_INPUT_TERMINAL, 115 .bDescriptorSubtype = UAC_INPUT_TERMINAL,
116 .bTerminalID = IO_IN_IT_ID, 116 .bTerminalID = IO_IN_IT_ID,
117 .wTerminalType = UAC_INPUT_TERMINAL_MICROPHONE, 117 .wTerminalType = cpu_to_le16(UAC_INPUT_TERMINAL_MICROPHONE),
118 .bAssocTerminal = 0, 118 .bAssocTerminal = 0,
119 .wChannelConfig = 0x3, 119 .wChannelConfig = cpu_to_le16(0x3),
120}; 120};
121 121
122#define USB_IN_OT_ID 4 122#define USB_IN_OT_ID 4
@@ -125,7 +125,7 @@ static struct uac1_output_terminal_descriptor usb_in_ot_desc = {
125 .bDescriptorType = USB_DT_CS_INTERFACE, 125 .bDescriptorType = USB_DT_CS_INTERFACE,
126 .bDescriptorSubtype = UAC_OUTPUT_TERMINAL, 126 .bDescriptorSubtype = UAC_OUTPUT_TERMINAL,
127 .bTerminalID = USB_IN_OT_ID, 127 .bTerminalID = USB_IN_OT_ID,
128 .wTerminalType = UAC_TERMINAL_STREAMING, 128 .wTerminalType = cpu_to_le16(UAC_TERMINAL_STREAMING),
129 .bAssocTerminal = 0, 129 .bAssocTerminal = 0,
130 .bSourceID = IO_IN_IT_ID, 130 .bSourceID = IO_IN_IT_ID,
131}; 131};
@@ -174,7 +174,7 @@ static struct uac1_as_header_descriptor as_out_header_desc = {
174 .bDescriptorSubtype = UAC_AS_GENERAL, 174 .bDescriptorSubtype = UAC_AS_GENERAL,
175 .bTerminalLink = USB_OUT_IT_ID, 175 .bTerminalLink = USB_OUT_IT_ID,
176 .bDelay = 1, 176 .bDelay = 1,
177 .wFormatTag = UAC_FORMAT_TYPE_I_PCM, 177 .wFormatTag = cpu_to_le16(UAC_FORMAT_TYPE_I_PCM),
178}; 178};
179 179
180static struct uac1_as_header_descriptor as_in_header_desc = { 180static struct uac1_as_header_descriptor as_in_header_desc = {
@@ -183,7 +183,7 @@ static struct uac1_as_header_descriptor as_in_header_desc = {
183 .bDescriptorSubtype = UAC_AS_GENERAL, 183 .bDescriptorSubtype = UAC_AS_GENERAL,
184 .bTerminalLink = USB_IN_OT_ID, 184 .bTerminalLink = USB_IN_OT_ID,
185 .bDelay = 1, 185 .bDelay = 1,
186 .wFormatTag = UAC_FORMAT_TYPE_I_PCM, 186 .wFormatTag = cpu_to_le16(UAC_FORMAT_TYPE_I_PCM),
187}; 187};
188 188
189DECLARE_UAC_FORMAT_TYPE_I_DISCRETE_DESC(1); 189DECLARE_UAC_FORMAT_TYPE_I_DISCRETE_DESC(1);
@@ -606,8 +606,8 @@ static int f_audio_bind(struct usb_configuration *c, struct usb_function *f)
606 if (status) 606 if (status)
607 goto fail; 607 goto fail;
608 608
609 audio->out_ep_maxpsize = as_out_ep_desc.wMaxPacketSize; 609 audio->out_ep_maxpsize = le16_to_cpu(as_out_ep_desc.wMaxPacketSize);
610 audio->in_ep_maxpsize = as_in_ep_desc.wMaxPacketSize; 610 audio->in_ep_maxpsize = le16_to_cpu(as_in_ep_desc.wMaxPacketSize);
611 audio->params.c_chmask = audio_opts->c_chmask; 611 audio->params.c_chmask = audio_opts->c_chmask;
612 audio->params.c_srate = audio_opts->c_srate; 612 audio->params.c_srate = audio_opts->c_srate;
613 audio->params.c_ssize = audio_opts->c_ssize; 613 audio->params.c_ssize = audio_opts->c_ssize;
diff --git a/drivers/usb/gadget/function/f_uac2.c b/drivers/usb/gadget/function/f_uac2.c
index 9082ce261e70..f05c3f3e6103 100644
--- a/drivers/usb/gadget/function/f_uac2.c
+++ b/drivers/usb/gadget/function/f_uac2.c
@@ -168,7 +168,7 @@ static struct uac2_input_terminal_descriptor usb_out_it_desc = {
168 .bAssocTerminal = 0, 168 .bAssocTerminal = 0,
169 .bCSourceID = USB_OUT_CLK_ID, 169 .bCSourceID = USB_OUT_CLK_ID,
170 .iChannelNames = 0, 170 .iChannelNames = 0,
171 .bmControls = (CONTROL_RDWR << COPY_CTRL), 171 .bmControls = cpu_to_le16(CONTROL_RDWR << COPY_CTRL),
172}; 172};
173 173
174/* Input Terminal for I/O-In */ 174/* Input Terminal for I/O-In */
@@ -182,7 +182,7 @@ static struct uac2_input_terminal_descriptor io_in_it_desc = {
182 .bAssocTerminal = 0, 182 .bAssocTerminal = 0,
183 .bCSourceID = USB_IN_CLK_ID, 183 .bCSourceID = USB_IN_CLK_ID,
184 .iChannelNames = 0, 184 .iChannelNames = 0,
185 .bmControls = (CONTROL_RDWR << COPY_CTRL), 185 .bmControls = cpu_to_le16(CONTROL_RDWR << COPY_CTRL),
186}; 186};
187 187
188/* Ouput Terminal for USB_IN */ 188/* Ouput Terminal for USB_IN */
@@ -196,7 +196,7 @@ static struct uac2_output_terminal_descriptor usb_in_ot_desc = {
196 .bAssocTerminal = 0, 196 .bAssocTerminal = 0,
197 .bSourceID = IO_IN_IT_ID, 197 .bSourceID = IO_IN_IT_ID,
198 .bCSourceID = USB_IN_CLK_ID, 198 .bCSourceID = USB_IN_CLK_ID,
199 .bmControls = (CONTROL_RDWR << COPY_CTRL), 199 .bmControls = cpu_to_le16(CONTROL_RDWR << COPY_CTRL),
200}; 200};
201 201
202/* Ouput Terminal for I/O-Out */ 202/* Ouput Terminal for I/O-Out */
@@ -210,7 +210,7 @@ static struct uac2_output_terminal_descriptor io_out_ot_desc = {
210 .bAssocTerminal = 0, 210 .bAssocTerminal = 0,
211 .bSourceID = USB_OUT_IT_ID, 211 .bSourceID = USB_OUT_IT_ID,
212 .bCSourceID = USB_OUT_CLK_ID, 212 .bCSourceID = USB_OUT_CLK_ID,
213 .bmControls = (CONTROL_RDWR << COPY_CTRL), 213 .bmControls = cpu_to_le16(CONTROL_RDWR << COPY_CTRL),
214}; 214};
215 215
216static struct uac2_ac_header_descriptor ac_hdr_desc = { 216static struct uac2_ac_header_descriptor ac_hdr_desc = {
@@ -220,9 +220,10 @@ static struct uac2_ac_header_descriptor ac_hdr_desc = {
220 .bDescriptorSubtype = UAC_MS_HEADER, 220 .bDescriptorSubtype = UAC_MS_HEADER,
221 .bcdADC = cpu_to_le16(0x200), 221 .bcdADC = cpu_to_le16(0x200),
222 .bCategory = UAC2_FUNCTION_IO_BOX, 222 .bCategory = UAC2_FUNCTION_IO_BOX,
223 .wTotalLength = sizeof in_clk_src_desc + sizeof out_clk_src_desc 223 .wTotalLength = cpu_to_le16(sizeof in_clk_src_desc
224 + sizeof usb_out_it_desc + sizeof io_in_it_desc 224 + sizeof out_clk_src_desc + sizeof usb_out_it_desc
225 + sizeof usb_in_ot_desc + sizeof io_out_ot_desc, 225 + sizeof io_in_it_desc + sizeof usb_in_ot_desc
226 + sizeof io_out_ot_desc),
226 .bmControls = 0, 227 .bmControls = 0,
227}; 228};
228 229
@@ -569,10 +570,12 @@ afunc_bind(struct usb_configuration *cfg, struct usb_function *fn)
569 return ret; 570 return ret;
570 } 571 }
571 572
572 agdev->in_ep_maxpsize = max(fs_epin_desc.wMaxPacketSize, 573 agdev->in_ep_maxpsize = max_t(u16,
573 hs_epin_desc.wMaxPacketSize); 574 le16_to_cpu(fs_epin_desc.wMaxPacketSize),
574 agdev->out_ep_maxpsize = max(fs_epout_desc.wMaxPacketSize, 575 le16_to_cpu(hs_epin_desc.wMaxPacketSize));
575 hs_epout_desc.wMaxPacketSize); 576 agdev->out_ep_maxpsize = max_t(u16,
577 le16_to_cpu(fs_epout_desc.wMaxPacketSize),
578 le16_to_cpu(hs_epout_desc.wMaxPacketSize));
576 579
577 hs_epout_desc.bEndpointAddress = fs_epout_desc.bEndpointAddress; 580 hs_epout_desc.bEndpointAddress = fs_epout_desc.bEndpointAddress;
578 hs_epin_desc.bEndpointAddress = fs_epin_desc.bEndpointAddress; 581 hs_epin_desc.bEndpointAddress = fs_epin_desc.bEndpointAddress;
diff --git a/drivers/usb/gadget/udc/Kconfig b/drivers/usb/gadget/udc/Kconfig
index 9ffb11ec9ed9..7cd5c969fcbe 100644
--- a/drivers/usb/gadget/udc/Kconfig
+++ b/drivers/usb/gadget/udc/Kconfig
@@ -192,7 +192,7 @@ config USB_RENESAS_USBHS_UDC
192config USB_RENESAS_USB3 192config USB_RENESAS_USB3
193 tristate 'Renesas USB3.0 Peripheral controller' 193 tristate 'Renesas USB3.0 Peripheral controller'
194 depends on ARCH_RENESAS || COMPILE_TEST 194 depends on ARCH_RENESAS || COMPILE_TEST
195 depends on EXTCON 195 depends on EXTCON && HAS_DMA
196 help 196 help
197 Renesas USB3.0 Peripheral controller is a USB peripheral controller 197 Renesas USB3.0 Peripheral controller is a USB peripheral controller
198 that supports super, high, and full speed USB 3.0 data transfers. 198 that supports super, high, and full speed USB 3.0 data transfers.
@@ -257,6 +257,7 @@ config USB_MV_U3D
257 257
258config USB_SNP_CORE 258config USB_SNP_CORE
259 depends on (USB_AMD5536UDC || USB_SNP_UDC_PLAT) 259 depends on (USB_AMD5536UDC || USB_SNP_UDC_PLAT)
260 depends on HAS_DMA
260 tristate 261 tristate
261 help 262 help
262 This enables core driver support for Synopsys USB 2.0 Device 263 This enables core driver support for Synopsys USB 2.0 Device
@@ -271,7 +272,7 @@ config USB_SNP_CORE
271 272
272config USB_SNP_UDC_PLAT 273config USB_SNP_UDC_PLAT
273 tristate "Synopsys USB 2.0 Device controller" 274 tristate "Synopsys USB 2.0 Device controller"
274 depends on (USB_GADGET && OF) 275 depends on USB_GADGET && OF && HAS_DMA
275 select USB_GADGET_DUALSPEED 276 select USB_GADGET_DUALSPEED
276 select USB_SNP_CORE 277 select USB_SNP_CORE
277 default ARCH_BCM_IPROC 278 default ARCH_BCM_IPROC
diff --git a/drivers/usb/gadget/udc/renesas_usb3.c b/drivers/usb/gadget/udc/renesas_usb3.c
index d8278322d5ac..e1de8fe599a3 100644
--- a/drivers/usb/gadget/udc/renesas_usb3.c
+++ b/drivers/usb/gadget/udc/renesas_usb3.c
@@ -89,6 +89,9 @@
89 89
90/* USB_COM_CON */ 90/* USB_COM_CON */
91#define USB_COM_CON_CONF BIT(24) 91#define USB_COM_CON_CONF BIT(24)
92#define USB_COM_CON_PN_WDATAIF_NL BIT(23)
93#define USB_COM_CON_PN_RDATAIF_NL BIT(22)
94#define USB_COM_CON_PN_LSTTR_PP BIT(21)
92#define USB_COM_CON_SPD_MODE BIT(17) 95#define USB_COM_CON_SPD_MODE BIT(17)
93#define USB_COM_CON_EP0_EN BIT(16) 96#define USB_COM_CON_EP0_EN BIT(16)
94#define USB_COM_CON_DEV_ADDR_SHIFT 8 97#define USB_COM_CON_DEV_ADDR_SHIFT 8
@@ -686,6 +689,9 @@ static void renesas_usb3_init_controller(struct renesas_usb3 *usb3)
686{ 689{
687 usb3_init_axi_bridge(usb3); 690 usb3_init_axi_bridge(usb3);
688 usb3_init_epc_registers(usb3); 691 usb3_init_epc_registers(usb3);
692 usb3_set_bit(usb3, USB_COM_CON_PN_WDATAIF_NL |
693 USB_COM_CON_PN_RDATAIF_NL | USB_COM_CON_PN_LSTTR_PP,
694 USB3_USB_COM_CON);
689 usb3_write(usb3, USB_OTG_IDMON, USB3_USB_OTG_INT_STA); 695 usb3_write(usb3, USB_OTG_IDMON, USB3_USB_OTG_INT_STA);
690 usb3_write(usb3, USB_OTG_IDMON, USB3_USB_OTG_INT_ENA); 696 usb3_write(usb3, USB_OTG_IDMON, USB3_USB_OTG_INT_ENA);
691 697
@@ -832,21 +838,32 @@ static struct renesas_usb3_request *usb3_get_request(struct renesas_usb3_ep
832 return usb3_req; 838 return usb3_req;
833} 839}
834 840
835static void usb3_request_done(struct renesas_usb3_ep *usb3_ep, 841static void __usb3_request_done(struct renesas_usb3_ep *usb3_ep,
836 struct renesas_usb3_request *usb3_req, int status) 842 struct renesas_usb3_request *usb3_req,
843 int status)
837{ 844{
838 struct renesas_usb3 *usb3 = usb3_ep_to_usb3(usb3_ep); 845 struct renesas_usb3 *usb3 = usb3_ep_to_usb3(usb3_ep);
839 unsigned long flags;
840 846
841 dev_dbg(usb3_to_dev(usb3), "giveback: ep%2d, %u, %u, %d\n", 847 dev_dbg(usb3_to_dev(usb3), "giveback: ep%2d, %u, %u, %d\n",
842 usb3_ep->num, usb3_req->req.length, usb3_req->req.actual, 848 usb3_ep->num, usb3_req->req.length, usb3_req->req.actual,
843 status); 849 status);
844 usb3_req->req.status = status; 850 usb3_req->req.status = status;
845 spin_lock_irqsave(&usb3->lock, flags);
846 usb3_ep->started = false; 851 usb3_ep->started = false;
847 list_del_init(&usb3_req->queue); 852 list_del_init(&usb3_req->queue);
848 spin_unlock_irqrestore(&usb3->lock, flags); 853 spin_unlock(&usb3->lock);
849 usb_gadget_giveback_request(&usb3_ep->ep, &usb3_req->req); 854 usb_gadget_giveback_request(&usb3_ep->ep, &usb3_req->req);
855 spin_lock(&usb3->lock);
856}
857
858static void usb3_request_done(struct renesas_usb3_ep *usb3_ep,
859 struct renesas_usb3_request *usb3_req, int status)
860{
861 struct renesas_usb3 *usb3 = usb3_ep_to_usb3(usb3_ep);
862 unsigned long flags;
863
864 spin_lock_irqsave(&usb3->lock, flags);
865 __usb3_request_done(usb3_ep, usb3_req, status);
866 spin_unlock_irqrestore(&usb3->lock, flags);
850} 867}
851 868
852static void usb3_irq_epc_pipe0_status_end(struct renesas_usb3 *usb3) 869static void usb3_irq_epc_pipe0_status_end(struct renesas_usb3 *usb3)
@@ -1369,7 +1386,7 @@ static int renesas_usb3_dma_free_prd(struct renesas_usb3 *usb3,
1369 1386
1370 usb3_for_each_dma(usb3, dma, i) { 1387 usb3_for_each_dma(usb3, dma, i) {
1371 if (dma->prd) { 1388 if (dma->prd) {
1372 dma_free_coherent(dev, USB3_DMA_MAX_XFER_SIZE, 1389 dma_free_coherent(dev, USB3_DMA_PRD_SIZE,
1373 dma->prd, dma->prd_dma); 1390 dma->prd, dma->prd_dma);
1374 dma->prd = NULL; 1391 dma->prd = NULL;
1375 } 1392 }
@@ -1409,12 +1426,12 @@ static void usb3_start_pipen(struct renesas_usb3_ep *usb3_ep,
1409 int ret = -EAGAIN; 1426 int ret = -EAGAIN;
1410 u32 enable_bits = 0; 1427 u32 enable_bits = 0;
1411 1428
1429 spin_lock_irqsave(&usb3->lock, flags);
1412 if (usb3_ep->halt || usb3_ep->started) 1430 if (usb3_ep->halt || usb3_ep->started)
1413 return; 1431 goto out;
1414 if (usb3_req != usb3_req_first) 1432 if (usb3_req != usb3_req_first)
1415 return; 1433 goto out;
1416 1434
1417 spin_lock_irqsave(&usb3->lock, flags);
1418 if (usb3_pn_change(usb3, usb3_ep->num) < 0) 1435 if (usb3_pn_change(usb3, usb3_ep->num) < 0)
1419 goto out; 1436 goto out;
1420 1437
diff --git a/drivers/usb/gadget/udc/snps_udc_plat.c b/drivers/usb/gadget/udc/snps_udc_plat.c
index 2e11f19e07ae..f7b4d0f159e4 100644
--- a/drivers/usb/gadget/udc/snps_udc_plat.c
+++ b/drivers/usb/gadget/udc/snps_udc_plat.c
@@ -28,7 +28,7 @@
28/* description */ 28/* description */
29#define UDC_MOD_DESCRIPTION "Synopsys UDC platform driver" 29#define UDC_MOD_DESCRIPTION "Synopsys UDC platform driver"
30 30
31void start_udc(struct udc *udc) 31static void start_udc(struct udc *udc)
32{ 32{
33 if (udc->driver) { 33 if (udc->driver) {
34 dev_info(udc->dev, "Connecting...\n"); 34 dev_info(udc->dev, "Connecting...\n");
@@ -38,7 +38,7 @@ void start_udc(struct udc *udc)
38 } 38 }
39} 39}
40 40
41void stop_udc(struct udc *udc) 41static void stop_udc(struct udc *udc)
42{ 42{
43 int tmp; 43 int tmp;
44 u32 reg; 44 u32 reg;
@@ -76,7 +76,7 @@ void stop_udc(struct udc *udc)
76 dev_info(udc->dev, "Device disconnected\n"); 76 dev_info(udc->dev, "Device disconnected\n");
77} 77}
78 78
79void udc_drd_work(struct work_struct *work) 79static void udc_drd_work(struct work_struct *work)
80{ 80{
81 struct udc *udc; 81 struct udc *udc;
82 82
diff --git a/drivers/usb/host/pci-quirks.c b/drivers/usb/host/pci-quirks.c
index a9a1e4c40480..c8f38649f749 100644
--- a/drivers/usb/host/pci-quirks.c
+++ b/drivers/usb/host/pci-quirks.c
@@ -77,6 +77,16 @@
77#define USB_INTEL_USB3_PSSEN 0xD8 77#define USB_INTEL_USB3_PSSEN 0xD8
78#define USB_INTEL_USB3PRM 0xDC 78#define USB_INTEL_USB3PRM 0xDC
79 79
80/* ASMEDIA quirk use */
81#define ASMT_DATA_WRITE0_REG 0xF8
82#define ASMT_DATA_WRITE1_REG 0xFC
83#define ASMT_CONTROL_REG 0xE0
84#define ASMT_CONTROL_WRITE_BIT 0x02
85#define ASMT_WRITEREG_CMD 0x10423
86#define ASMT_FLOWCTL_ADDR 0xFA30
87#define ASMT_FLOWCTL_DATA 0xBA
88#define ASMT_PSEUDO_DATA 0
89
80/* 90/*
81 * amd_chipset_gen values represent AMD different chipset generations 91 * amd_chipset_gen values represent AMD different chipset generations
82 */ 92 */
@@ -88,6 +98,7 @@ enum amd_chipset_gen {
88 AMD_CHIPSET_HUDSON2, 98 AMD_CHIPSET_HUDSON2,
89 AMD_CHIPSET_BOLTON, 99 AMD_CHIPSET_BOLTON,
90 AMD_CHIPSET_YANGTZE, 100 AMD_CHIPSET_YANGTZE,
101 AMD_CHIPSET_TAISHAN,
91 AMD_CHIPSET_UNKNOWN, 102 AMD_CHIPSET_UNKNOWN,
92}; 103};
93 104
@@ -131,6 +142,11 @@ static int amd_chipset_sb_type_init(struct amd_chipset_info *pinfo)
131 pinfo->sb_type.gen = AMD_CHIPSET_SB700; 142 pinfo->sb_type.gen = AMD_CHIPSET_SB700;
132 else if (rev >= 0x40 && rev <= 0x4f) 143 else if (rev >= 0x40 && rev <= 0x4f)
133 pinfo->sb_type.gen = AMD_CHIPSET_SB800; 144 pinfo->sb_type.gen = AMD_CHIPSET_SB800;
145 }
146 pinfo->smbus_dev = pci_get_device(PCI_VENDOR_ID_AMD,
147 0x145c, NULL);
148 if (pinfo->smbus_dev) {
149 pinfo->sb_type.gen = AMD_CHIPSET_TAISHAN;
134 } else { 150 } else {
135 pinfo->smbus_dev = pci_get_device(PCI_VENDOR_ID_AMD, 151 pinfo->smbus_dev = pci_get_device(PCI_VENDOR_ID_AMD,
136 PCI_DEVICE_ID_AMD_HUDSON2_SMBUS, NULL); 152 PCI_DEVICE_ID_AMD_HUDSON2_SMBUS, NULL);
@@ -250,11 +266,12 @@ int usb_hcd_amd_remote_wakeup_quirk(struct pci_dev *pdev)
250{ 266{
251 /* Make sure amd chipset type has already been initialized */ 267 /* Make sure amd chipset type has already been initialized */
252 usb_amd_find_chipset_info(); 268 usb_amd_find_chipset_info();
253 if (amd_chipset.sb_type.gen != AMD_CHIPSET_YANGTZE) 269 if (amd_chipset.sb_type.gen == AMD_CHIPSET_YANGTZE ||
254 return 0; 270 amd_chipset.sb_type.gen == AMD_CHIPSET_TAISHAN) {
255 271 dev_dbg(&pdev->dev, "QUIRK: Enable AMD remote wakeup fix\n");
256 dev_dbg(&pdev->dev, "QUIRK: Enable AMD remote wakeup fix\n"); 272 return 1;
257 return 1; 273 }
274 return 0;
258} 275}
259EXPORT_SYMBOL_GPL(usb_hcd_amd_remote_wakeup_quirk); 276EXPORT_SYMBOL_GPL(usb_hcd_amd_remote_wakeup_quirk);
260 277
@@ -412,6 +429,50 @@ void usb_amd_quirk_pll_disable(void)
412} 429}
413EXPORT_SYMBOL_GPL(usb_amd_quirk_pll_disable); 430EXPORT_SYMBOL_GPL(usb_amd_quirk_pll_disable);
414 431
432static int usb_asmedia_wait_write(struct pci_dev *pdev)
433{
434 unsigned long retry_count;
435 unsigned char value;
436
437 for (retry_count = 1000; retry_count > 0; --retry_count) {
438
439 pci_read_config_byte(pdev, ASMT_CONTROL_REG, &value);
440
441 if (value == 0xff) {
442 dev_err(&pdev->dev, "%s: check_ready ERROR", __func__);
443 return -EIO;
444 }
445
446 if ((value & ASMT_CONTROL_WRITE_BIT) == 0)
447 return 0;
448
449 usleep_range(40, 60);
450 }
451
452 dev_warn(&pdev->dev, "%s: check_write_ready timeout", __func__);
453 return -ETIMEDOUT;
454}
455
456void usb_asmedia_modifyflowcontrol(struct pci_dev *pdev)
457{
458 if (usb_asmedia_wait_write(pdev) != 0)
459 return;
460
461 /* send command and address to device */
462 pci_write_config_dword(pdev, ASMT_DATA_WRITE0_REG, ASMT_WRITEREG_CMD);
463 pci_write_config_dword(pdev, ASMT_DATA_WRITE1_REG, ASMT_FLOWCTL_ADDR);
464 pci_write_config_byte(pdev, ASMT_CONTROL_REG, ASMT_CONTROL_WRITE_BIT);
465
466 if (usb_asmedia_wait_write(pdev) != 0)
467 return;
468
469 /* send data to device */
470 pci_write_config_dword(pdev, ASMT_DATA_WRITE0_REG, ASMT_FLOWCTL_DATA);
471 pci_write_config_dword(pdev, ASMT_DATA_WRITE1_REG, ASMT_PSEUDO_DATA);
472 pci_write_config_byte(pdev, ASMT_CONTROL_REG, ASMT_CONTROL_WRITE_BIT);
473}
474EXPORT_SYMBOL_GPL(usb_asmedia_modifyflowcontrol);
475
415void usb_amd_quirk_pll_enable(void) 476void usb_amd_quirk_pll_enable(void)
416{ 477{
417 usb_amd_quirk_pll(0); 478 usb_amd_quirk_pll(0);
@@ -1096,3 +1157,23 @@ static void quirk_usb_early_handoff(struct pci_dev *pdev)
1096} 1157}
1097DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID, 1158DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID,
1098 PCI_CLASS_SERIAL_USB, 8, quirk_usb_early_handoff); 1159 PCI_CLASS_SERIAL_USB, 8, quirk_usb_early_handoff);
1160
1161bool usb_xhci_needs_pci_reset(struct pci_dev *pdev)
1162{
1163 /*
1164 * Our dear uPD72020{1,2} friend only partially resets when
1165 * asked to via the XHCI interface, and may end up doing DMA
1166 * at the wrong addresses, as it keeps the top 32bit of some
1167 * addresses from its previous programming under obscure
1168 * circumstances.
1169 * Give it a good wack at probe time. Unfortunately, this
1170 * needs to happen before we've had a chance to discover any
1171 * quirk, or the system will be in a rather bad state.
1172 */
1173 if (pdev->vendor == PCI_VENDOR_ID_RENESAS &&
1174 (pdev->device == 0x0014 || pdev->device == 0x0015))
1175 return true;
1176
1177 return false;
1178}
1179EXPORT_SYMBOL_GPL(usb_xhci_needs_pci_reset);
diff --git a/drivers/usb/host/pci-quirks.h b/drivers/usb/host/pci-quirks.h
index 0222195bd5b0..5582cbafecd4 100644
--- a/drivers/usb/host/pci-quirks.h
+++ b/drivers/usb/host/pci-quirks.h
@@ -11,13 +11,16 @@ bool usb_amd_prefetch_quirk(void);
11void usb_amd_dev_put(void); 11void usb_amd_dev_put(void);
12void usb_amd_quirk_pll_disable(void); 12void usb_amd_quirk_pll_disable(void);
13void usb_amd_quirk_pll_enable(void); 13void usb_amd_quirk_pll_enable(void);
14void usb_asmedia_modifyflowcontrol(struct pci_dev *pdev);
14void usb_enable_intel_xhci_ports(struct pci_dev *xhci_pdev); 15void usb_enable_intel_xhci_ports(struct pci_dev *xhci_pdev);
15void usb_disable_xhci_ports(struct pci_dev *xhci_pdev); 16void usb_disable_xhci_ports(struct pci_dev *xhci_pdev);
16void sb800_prefetch(struct device *dev, int on); 17void sb800_prefetch(struct device *dev, int on);
18bool usb_xhci_needs_pci_reset(struct pci_dev *pdev);
17#else 19#else
18struct pci_dev; 20struct pci_dev;
19static inline void usb_amd_quirk_pll_disable(void) {} 21static inline void usb_amd_quirk_pll_disable(void) {}
20static inline void usb_amd_quirk_pll_enable(void) {} 22static inline void usb_amd_quirk_pll_enable(void) {}
23static inline void usb_asmedia_modifyflowcontrol(struct pci_dev *pdev) {}
21static inline void usb_amd_dev_put(void) {} 24static inline void usb_amd_dev_put(void) {}
22static inline void usb_disable_xhci_ports(struct pci_dev *xhci_pdev) {} 25static inline void usb_disable_xhci_ports(struct pci_dev *xhci_pdev) {}
23static inline void sb800_prefetch(struct device *dev, int on) {} 26static inline void sb800_prefetch(struct device *dev, int on) {}
diff --git a/drivers/usb/host/xhci-hub.c b/drivers/usb/host/xhci-hub.c
index 1adae9eab831..00721e8807ab 100644
--- a/drivers/usb/host/xhci-hub.c
+++ b/drivers/usb/host/xhci-hub.c
@@ -398,14 +398,21 @@ static int xhci_stop_device(struct xhci_hcd *xhci, int slot_id, int suspend)
398 spin_lock_irqsave(&xhci->lock, flags); 398 spin_lock_irqsave(&xhci->lock, flags);
399 for (i = LAST_EP_INDEX; i > 0; i--) { 399 for (i = LAST_EP_INDEX; i > 0; i--) {
400 if (virt_dev->eps[i].ring && virt_dev->eps[i].ring->dequeue) { 400 if (virt_dev->eps[i].ring && virt_dev->eps[i].ring->dequeue) {
401 struct xhci_ep_ctx *ep_ctx;
401 struct xhci_command *command; 402 struct xhci_command *command;
403
404 ep_ctx = xhci_get_ep_ctx(xhci, virt_dev->out_ctx, i);
405
406 /* Check ep is running, required by AMD SNPS 3.1 xHC */
407 if (GET_EP_CTX_STATE(ep_ctx) != EP_STATE_RUNNING)
408 continue;
409
402 command = xhci_alloc_command(xhci, false, false, 410 command = xhci_alloc_command(xhci, false, false,
403 GFP_NOWAIT); 411 GFP_NOWAIT);
404 if (!command) { 412 if (!command) {
405 spin_unlock_irqrestore(&xhci->lock, flags); 413 spin_unlock_irqrestore(&xhci->lock, flags);
406 xhci_free_command(xhci, cmd); 414 xhci_free_command(xhci, cmd);
407 return -ENOMEM; 415 return -ENOMEM;
408
409 } 416 }
410 xhci_queue_stop_endpoint(xhci, command, slot_id, i, 417 xhci_queue_stop_endpoint(xhci, command, slot_id, i,
411 suspend); 418 suspend);
@@ -603,12 +610,14 @@ static int xhci_enter_test_mode(struct xhci_hcd *xhci,
603 610
604 /* Disable all Device Slots */ 611 /* Disable all Device Slots */
605 xhci_dbg(xhci, "Disable all slots\n"); 612 xhci_dbg(xhci, "Disable all slots\n");
613 spin_unlock_irqrestore(&xhci->lock, *flags);
606 for (i = 1; i <= HCS_MAX_SLOTS(xhci->hcs_params1); i++) { 614 for (i = 1; i <= HCS_MAX_SLOTS(xhci->hcs_params1); i++) {
607 retval = xhci_disable_slot(xhci, NULL, i); 615 retval = xhci_disable_slot(xhci, NULL, i);
608 if (retval) 616 if (retval)
609 xhci_err(xhci, "Failed to disable slot %d, %d. Enter test mode anyway\n", 617 xhci_err(xhci, "Failed to disable slot %d, %d. Enter test mode anyway\n",
610 i, retval); 618 i, retval);
611 } 619 }
620 spin_lock_irqsave(&xhci->lock, *flags);
612 /* Put all ports to the Disable state by clear PP */ 621 /* Put all ports to the Disable state by clear PP */
613 xhci_dbg(xhci, "Disable all port (PP = 0)\n"); 622 xhci_dbg(xhci, "Disable all port (PP = 0)\n");
614 /* Power off USB3 ports*/ 623 /* Power off USB3 ports*/
@@ -897,6 +906,9 @@ static u32 xhci_get_port_status(struct usb_hcd *hcd,
897 clear_bit(wIndex, &bus_state->resuming_ports); 906 clear_bit(wIndex, &bus_state->resuming_ports);
898 907
899 set_bit(wIndex, &bus_state->rexit_ports); 908 set_bit(wIndex, &bus_state->rexit_ports);
909
910 xhci_test_and_clear_bit(xhci, port_array, wIndex,
911 PORT_PLC);
900 xhci_set_link_state(xhci, port_array, wIndex, 912 xhci_set_link_state(xhci, port_array, wIndex,
901 XDEV_U0); 913 XDEV_U0);
902 914
diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
index 53882e2babbb..8071c8fdd15e 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -59,6 +59,8 @@
59#define PCI_DEVICE_ID_AMD_PROMONTORYA_2 0x43bb 59#define PCI_DEVICE_ID_AMD_PROMONTORYA_2 0x43bb
60#define PCI_DEVICE_ID_AMD_PROMONTORYA_1 0x43bc 60#define PCI_DEVICE_ID_AMD_PROMONTORYA_1 0x43bc
61 61
62#define PCI_DEVICE_ID_ASMEDIA_1042A_XHCI 0x1142
63
62static const char hcd_name[] = "xhci_hcd"; 64static const char hcd_name[] = "xhci_hcd";
63 65
64static struct hc_driver __read_mostly xhci_pci_hc_driver; 66static struct hc_driver __read_mostly xhci_pci_hc_driver;
@@ -217,6 +219,10 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
217 pdev->device == 0x1142) 219 pdev->device == 0x1142)
218 xhci->quirks |= XHCI_TRUST_TX_LENGTH; 220 xhci->quirks |= XHCI_TRUST_TX_LENGTH;
219 221
222 if (pdev->vendor == PCI_VENDOR_ID_ASMEDIA &&
223 pdev->device == PCI_DEVICE_ID_ASMEDIA_1042A_XHCI)
224 xhci->quirks |= XHCI_ASMEDIA_MODIFY_FLOWCONTROL;
225
220 if (pdev->vendor == PCI_VENDOR_ID_TI && pdev->device == 0x8241) 226 if (pdev->vendor == PCI_VENDOR_ID_TI && pdev->device == 0x8241)
221 xhci->quirks |= XHCI_LIMIT_ENDPOINT_INTERVAL_7; 227 xhci->quirks |= XHCI_LIMIT_ENDPOINT_INTERVAL_7;
222 228
@@ -278,6 +284,13 @@ static int xhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
278 284
279 driver = (struct hc_driver *)id->driver_data; 285 driver = (struct hc_driver *)id->driver_data;
280 286
287 /* For some HW implementation, a XHCI reset is just not enough... */
288 if (usb_xhci_needs_pci_reset(dev)) {
289 dev_info(&dev->dev, "Resetting\n");
290 if (pci_reset_function_locked(dev))
291 dev_warn(&dev->dev, "Reset failed");
292 }
293
281 /* Prevent runtime suspending between USB-2 and USB-3 initialization */ 294 /* Prevent runtime suspending between USB-2 and USB-3 initialization */
282 pm_runtime_get_noresume(&dev->dev); 295 pm_runtime_get_noresume(&dev->dev);
283 296
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index c50c902d009e..cc368ad2b51e 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -864,13 +864,16 @@ static void xhci_kill_endpoint_urbs(struct xhci_hcd *xhci,
864 (ep->ep_state & EP_GETTING_NO_STREAMS)) { 864 (ep->ep_state & EP_GETTING_NO_STREAMS)) {
865 int stream_id; 865 int stream_id;
866 866
867 for (stream_id = 0; stream_id < ep->stream_info->num_streams; 867 for (stream_id = 1; stream_id < ep->stream_info->num_streams;
868 stream_id++) { 868 stream_id++) {
869 ring = ep->stream_info->stream_rings[stream_id];
870 if (!ring)
871 continue;
872
869 xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb, 873 xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb,
870 "Killing URBs for slot ID %u, ep index %u, stream %u", 874 "Killing URBs for slot ID %u, ep index %u, stream %u",
871 slot_id, ep_index, stream_id + 1); 875 slot_id, ep_index, stream_id);
872 xhci_kill_ring_urbs(xhci, 876 xhci_kill_ring_urbs(xhci, ring);
873 ep->stream_info->stream_rings[stream_id]);
874 } 877 }
875 } else { 878 } else {
876 ring = ep->ring; 879 ring = ep->ring;
diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c
index 56f85df013db..b2ff1ff1a02f 100644
--- a/drivers/usb/host/xhci.c
+++ b/drivers/usb/host/xhci.c
@@ -198,6 +198,9 @@ int xhci_reset(struct xhci_hcd *xhci)
198 if (ret) 198 if (ret)
199 return ret; 199 return ret;
200 200
201 if (xhci->quirks & XHCI_ASMEDIA_MODIFY_FLOWCONTROL)
202 usb_asmedia_modifyflowcontrol(to_pci_dev(xhci_to_hcd(xhci)->self.controller));
203
201 xhci_dbg_trace(xhci, trace_xhci_dbg_init, 204 xhci_dbg_trace(xhci, trace_xhci_dbg_init,
202 "Wait for controller to be ready for doorbell rings"); 205 "Wait for controller to be ready for doorbell rings");
203 /* 206 /*
@@ -622,8 +625,10 @@ int xhci_run(struct usb_hcd *hcd)
622 if (!command) 625 if (!command)
623 return -ENOMEM; 626 return -ENOMEM;
624 627
625 xhci_queue_vendor_command(xhci, command, 0, 0, 0, 628 ret = xhci_queue_vendor_command(xhci, command, 0, 0, 0,
626 TRB_TYPE(TRB_NEC_GET_FW)); 629 TRB_TYPE(TRB_NEC_GET_FW));
630 if (ret)
631 xhci_free_command(xhci, command);
627 } 632 }
628 xhci_dbg_trace(xhci, trace_xhci_dbg_init, 633 xhci_dbg_trace(xhci, trace_xhci_dbg_init,
629 "Finished xhci_run for USB2 roothub"); 634 "Finished xhci_run for USB2 roothub");
@@ -1085,6 +1090,9 @@ int xhci_resume(struct xhci_hcd *xhci, bool hibernated)
1085 if ((xhci->quirks & XHCI_COMP_MODE_QUIRK) && !comp_timer_running) 1090 if ((xhci->quirks & XHCI_COMP_MODE_QUIRK) && !comp_timer_running)
1086 compliance_mode_recovery_timer_init(xhci); 1091 compliance_mode_recovery_timer_init(xhci);
1087 1092
1093 if (xhci->quirks & XHCI_ASMEDIA_MODIFY_FLOWCONTROL)
1094 usb_asmedia_modifyflowcontrol(to_pci_dev(hcd->self.controller));
1095
1088 /* Re-enable port polling. */ 1096 /* Re-enable port polling. */
1089 xhci_dbg(xhci, "%s: starting port polling.\n", __func__); 1097 xhci_dbg(xhci, "%s: starting port polling.\n", __func__);
1090 set_bit(HCD_FLAG_POLL_RH, &xhci->shared_hcd->flags); 1098 set_bit(HCD_FLAG_POLL_RH, &xhci->shared_hcd->flags);
diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h
index 3c6da1f93c84..e3e935291ed6 100644
--- a/drivers/usb/host/xhci.h
+++ b/drivers/usb/host/xhci.h
@@ -1820,6 +1820,7 @@ struct xhci_hcd {
1820#define XHCI_BROKEN_PORT_PED (1 << 25) 1820#define XHCI_BROKEN_PORT_PED (1 << 25)
1821#define XHCI_LIMIT_ENDPOINT_INTERVAL_7 (1 << 26) 1821#define XHCI_LIMIT_ENDPOINT_INTERVAL_7 (1 << 26)
1822#define XHCI_U2_DISABLE_WAKE (1 << 27) 1822#define XHCI_U2_DISABLE_WAKE (1 << 27)
1823#define XHCI_ASMEDIA_MODIFY_FLOWCONTROL (1 << 28)
1823 1824
1824 unsigned int num_active_eps; 1825 unsigned int num_active_eps;
1825 unsigned int limit_active_eps; 1826 unsigned int limit_active_eps;
diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
index 76decb8011eb..3344ffd5bb13 100644
--- a/drivers/usb/musb/musb_host.c
+++ b/drivers/usb/musb/musb_host.c
@@ -139,6 +139,7 @@ static void musb_h_tx_flush_fifo(struct musb_hw_ep *ep)
139 "Could not flush host TX%d fifo: csr: %04x\n", 139 "Could not flush host TX%d fifo: csr: %04x\n",
140 ep->epnum, csr)) 140 ep->epnum, csr))
141 return; 141 return;
142 mdelay(1);
142 } 143 }
143} 144}
144 145
diff --git a/drivers/usb/phy/phy-msm-usb.c b/drivers/usb/phy/phy-msm-usb.c
index 8fb86a5f458e..3d0dd2f97415 100644
--- a/drivers/usb/phy/phy-msm-usb.c
+++ b/drivers/usb/phy/phy-msm-usb.c
@@ -197,6 +197,7 @@ struct msm_otg {
197 struct regulator *v3p3; 197 struct regulator *v3p3;
198 struct regulator *v1p8; 198 struct regulator *v1p8;
199 struct regulator *vddcx; 199 struct regulator *vddcx;
200 struct regulator_bulk_data supplies[3];
200 201
201 struct reset_control *phy_rst; 202 struct reset_control *phy_rst;
202 struct reset_control *link_rst; 203 struct reset_control *link_rst;
@@ -1731,7 +1732,6 @@ static int msm_otg_reboot_notify(struct notifier_block *this,
1731 1732
1732static int msm_otg_probe(struct platform_device *pdev) 1733static int msm_otg_probe(struct platform_device *pdev)
1733{ 1734{
1734 struct regulator_bulk_data regs[3];
1735 int ret = 0; 1735 int ret = 0;
1736 struct device_node *np = pdev->dev.of_node; 1736 struct device_node *np = pdev->dev.of_node;
1737 struct msm_otg_platform_data *pdata; 1737 struct msm_otg_platform_data *pdata;
@@ -1817,17 +1817,18 @@ static int msm_otg_probe(struct platform_device *pdev)
1817 return motg->irq; 1817 return motg->irq;
1818 } 1818 }
1819 1819
1820 regs[0].supply = "vddcx"; 1820 motg->supplies[0].supply = "vddcx";
1821 regs[1].supply = "v3p3"; 1821 motg->supplies[1].supply = "v3p3";
1822 regs[2].supply = "v1p8"; 1822 motg->supplies[2].supply = "v1p8";
1823 1823
1824 ret = devm_regulator_bulk_get(motg->phy.dev, ARRAY_SIZE(regs), regs); 1824 ret = devm_regulator_bulk_get(motg->phy.dev, ARRAY_SIZE(motg->supplies),
1825 motg->supplies);
1825 if (ret) 1826 if (ret)
1826 return ret; 1827 return ret;
1827 1828
1828 motg->vddcx = regs[0].consumer; 1829 motg->vddcx = motg->supplies[0].consumer;
1829 motg->v3p3 = regs[1].consumer; 1830 motg->v3p3 = motg->supplies[1].consumer;
1830 motg->v1p8 = regs[2].consumer; 1831 motg->v1p8 = motg->supplies[2].consumer;
1831 1832
1832 clk_set_rate(motg->clk, 60000000); 1833 clk_set_rate(motg->clk, 60000000);
1833 1834
diff --git a/drivers/usb/renesas_usbhs/common.c b/drivers/usb/renesas_usbhs/common.c
index 623c51300393..f0ce304c5aaf 100644
--- a/drivers/usb/renesas_usbhs/common.c
+++ b/drivers/usb/renesas_usbhs/common.c
@@ -752,8 +752,10 @@ static int usbhsc_resume(struct device *dev)
752 struct usbhs_priv *priv = dev_get_drvdata(dev); 752 struct usbhs_priv *priv = dev_get_drvdata(dev);
753 struct platform_device *pdev = usbhs_priv_to_pdev(priv); 753 struct platform_device *pdev = usbhs_priv_to_pdev(priv);
754 754
755 if (!usbhsc_flags_has(priv, USBHSF_RUNTIME_PWCTRL)) 755 if (!usbhsc_flags_has(priv, USBHSF_RUNTIME_PWCTRL)) {
756 usbhsc_power_ctrl(priv, 1); 756 usbhsc_power_ctrl(priv, 1);
757 usbhs_mod_autonomy_mode(priv);
758 }
757 759
758 usbhs_platform_call(priv, phy_reset, pdev); 760 usbhs_platform_call(priv, phy_reset, pdev);
759 761
diff --git a/drivers/usb/renesas_usbhs/mod_gadget.c b/drivers/usb/renesas_usbhs/mod_gadget.c
index 5bc7a6138855..2c8161bcf5b5 100644
--- a/drivers/usb/renesas_usbhs/mod_gadget.c
+++ b/drivers/usb/renesas_usbhs/mod_gadget.c
@@ -37,6 +37,7 @@ struct usbhsg_gpriv;
37struct usbhsg_uep { 37struct usbhsg_uep {
38 struct usb_ep ep; 38 struct usb_ep ep;
39 struct usbhs_pipe *pipe; 39 struct usbhs_pipe *pipe;
40 spinlock_t lock; /* protect the pipe */
40 41
41 char ep_name[EP_NAME_SIZE]; 42 char ep_name[EP_NAME_SIZE];
42 43
@@ -636,10 +637,13 @@ usbhsg_ep_enable_end:
636static int usbhsg_ep_disable(struct usb_ep *ep) 637static int usbhsg_ep_disable(struct usb_ep *ep)
637{ 638{
638 struct usbhsg_uep *uep = usbhsg_ep_to_uep(ep); 639 struct usbhsg_uep *uep = usbhsg_ep_to_uep(ep);
639 struct usbhs_pipe *pipe = usbhsg_uep_to_pipe(uep); 640 struct usbhs_pipe *pipe;
641 unsigned long flags;
640 642
643 spin_lock_irqsave(&uep->lock, flags);
644 pipe = usbhsg_uep_to_pipe(uep);
641 if (!pipe) 645 if (!pipe)
642 return -EINVAL; 646 goto out;
643 647
644 usbhsg_pipe_disable(uep); 648 usbhsg_pipe_disable(uep);
645 usbhs_pipe_free(pipe); 649 usbhs_pipe_free(pipe);
@@ -647,6 +651,9 @@ static int usbhsg_ep_disable(struct usb_ep *ep)
647 uep->pipe->mod_private = NULL; 651 uep->pipe->mod_private = NULL;
648 uep->pipe = NULL; 652 uep->pipe = NULL;
649 653
654out:
655 spin_unlock_irqrestore(&uep->lock, flags);
656
650 return 0; 657 return 0;
651} 658}
652 659
@@ -696,8 +703,11 @@ static int usbhsg_ep_dequeue(struct usb_ep *ep, struct usb_request *req)
696{ 703{
697 struct usbhsg_uep *uep = usbhsg_ep_to_uep(ep); 704 struct usbhsg_uep *uep = usbhsg_ep_to_uep(ep);
698 struct usbhsg_request *ureq = usbhsg_req_to_ureq(req); 705 struct usbhsg_request *ureq = usbhsg_req_to_ureq(req);
699 struct usbhs_pipe *pipe = usbhsg_uep_to_pipe(uep); 706 struct usbhs_pipe *pipe;
707 unsigned long flags;
700 708
709 spin_lock_irqsave(&uep->lock, flags);
710 pipe = usbhsg_uep_to_pipe(uep);
701 if (pipe) 711 if (pipe)
702 usbhs_pkt_pop(pipe, usbhsg_ureq_to_pkt(ureq)); 712 usbhs_pkt_pop(pipe, usbhsg_ureq_to_pkt(ureq));
703 713
@@ -706,6 +716,7 @@ static int usbhsg_ep_dequeue(struct usb_ep *ep, struct usb_request *req)
706 * even if the pipe is NULL. 716 * even if the pipe is NULL.
707 */ 717 */
708 usbhsg_queue_pop(uep, ureq, -ECONNRESET); 718 usbhsg_queue_pop(uep, ureq, -ECONNRESET);
719 spin_unlock_irqrestore(&uep->lock, flags);
709 720
710 return 0; 721 return 0;
711} 722}
@@ -852,10 +863,10 @@ static int usbhsg_try_stop(struct usbhs_priv *priv, u32 status)
852{ 863{
853 struct usbhsg_gpriv *gpriv = usbhsg_priv_to_gpriv(priv); 864 struct usbhsg_gpriv *gpriv = usbhsg_priv_to_gpriv(priv);
854 struct usbhs_mod *mod = usbhs_mod_get_current(priv); 865 struct usbhs_mod *mod = usbhs_mod_get_current(priv);
855 struct usbhsg_uep *dcp = usbhsg_gpriv_to_dcp(gpriv); 866 struct usbhsg_uep *uep;
856 struct device *dev = usbhs_priv_to_dev(priv); 867 struct device *dev = usbhs_priv_to_dev(priv);
857 unsigned long flags; 868 unsigned long flags;
858 int ret = 0; 869 int ret = 0, i;
859 870
860 /******************** spin lock ********************/ 871 /******************** spin lock ********************/
861 usbhs_lock(priv, flags); 872 usbhs_lock(priv, flags);
@@ -887,7 +898,9 @@ static int usbhsg_try_stop(struct usbhs_priv *priv, u32 status)
887 usbhs_sys_set_test_mode(priv, 0); 898 usbhs_sys_set_test_mode(priv, 0);
888 usbhs_sys_function_ctrl(priv, 0); 899 usbhs_sys_function_ctrl(priv, 0);
889 900
890 usbhsg_ep_disable(&dcp->ep); 901 /* disable all eps */
902 usbhsg_for_each_uep_with_dcp(uep, gpriv, i)
903 usbhsg_ep_disable(&uep->ep);
891 904
892 dev_dbg(dev, "stop gadget\n"); 905 dev_dbg(dev, "stop gadget\n");
893 906
@@ -1069,6 +1082,7 @@ int usbhs_mod_gadget_probe(struct usbhs_priv *priv)
1069 ret = -ENOMEM; 1082 ret = -ENOMEM;
1070 goto usbhs_mod_gadget_probe_err_gpriv; 1083 goto usbhs_mod_gadget_probe_err_gpriv;
1071 } 1084 }
1085 spin_lock_init(&uep->lock);
1072 1086
1073 gpriv->transceiver = usb_get_phy(USB_PHY_TYPE_UNDEFINED); 1087 gpriv->transceiver = usb_get_phy(USB_PHY_TYPE_UNDEFINED);
1074 dev_info(dev, "%stransceiver found\n", 1088 dev_info(dev, "%stransceiver found\n",
diff --git a/drivers/usb/renesas_usbhs/rcar3.c b/drivers/usb/renesas_usbhs/rcar3.c
index d544b331c9f2..02b67abfc2a1 100644
--- a/drivers/usb/renesas_usbhs/rcar3.c
+++ b/drivers/usb/renesas_usbhs/rcar3.c
@@ -20,9 +20,13 @@
20/* Low Power Status register (LPSTS) */ 20/* Low Power Status register (LPSTS) */
21#define LPSTS_SUSPM 0x4000 21#define LPSTS_SUSPM 0x4000
22 22
23/* USB General control register 2 (UGCTRL2), bit[31:6] should be 0 */ 23/*
24 * USB General control register 2 (UGCTRL2)
25 * Remarks: bit[31:11] and bit[9:6] should be 0
26 */
24#define UGCTRL2_RESERVED_3 0x00000001 /* bit[3:0] should be B'0001 */ 27#define UGCTRL2_RESERVED_3 0x00000001 /* bit[3:0] should be B'0001 */
25#define UGCTRL2_USB0SEL_OTG 0x00000030 28#define UGCTRL2_USB0SEL_OTG 0x00000030
29#define UGCTRL2_VBUSSEL 0x00000400
26 30
27static void usbhs_write32(struct usbhs_priv *priv, u32 reg, u32 data) 31static void usbhs_write32(struct usbhs_priv *priv, u32 reg, u32 data)
28{ 32{
@@ -34,7 +38,8 @@ static int usbhs_rcar3_power_ctrl(struct platform_device *pdev,
34{ 38{
35 struct usbhs_priv *priv = usbhs_pdev_to_priv(pdev); 39 struct usbhs_priv *priv = usbhs_pdev_to_priv(pdev);
36 40
37 usbhs_write32(priv, UGCTRL2, UGCTRL2_RESERVED_3 | UGCTRL2_USB0SEL_OTG); 41 usbhs_write32(priv, UGCTRL2, UGCTRL2_RESERVED_3 | UGCTRL2_USB0SEL_OTG |
42 UGCTRL2_VBUSSEL);
38 43
39 if (enable) { 44 if (enable) {
40 usbhs_bset(priv, LPSTS, LPSTS_SUSPM, LPSTS_SUSPM); 45 usbhs_bset(priv, LPSTS, LPSTS_SUSPM, LPSTS_SUSPM);
diff --git a/drivers/usb/serial/cp210x.c b/drivers/usb/serial/cp210x.c
index f64e914a8985..2d945c9f975c 100644
--- a/drivers/usb/serial/cp210x.c
+++ b/drivers/usb/serial/cp210x.c
@@ -142,6 +142,7 @@ static const struct usb_device_id id_table[] = {
142 { USB_DEVICE(0x10C4, 0x8998) }, /* KCF Technologies PRN */ 142 { USB_DEVICE(0x10C4, 0x8998) }, /* KCF Technologies PRN */
143 { USB_DEVICE(0x10C4, 0x8A2A) }, /* HubZ dual ZigBee and Z-Wave dongle */ 143 { USB_DEVICE(0x10C4, 0x8A2A) }, /* HubZ dual ZigBee and Z-Wave dongle */
144 { USB_DEVICE(0x10C4, 0x8A5E) }, /* CEL EM3588 ZigBee USB Stick Long Range */ 144 { USB_DEVICE(0x10C4, 0x8A5E) }, /* CEL EM3588 ZigBee USB Stick Long Range */
145 { USB_DEVICE(0x10C4, 0x8B34) }, /* Qivicon ZigBee USB Radio Stick */
145 { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */ 146 { USB_DEVICE(0x10C4, 0xEA60) }, /* Silicon Labs factory default */
146 { USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */ 147 { USB_DEVICE(0x10C4, 0xEA61) }, /* Silicon Labs factory default */
147 { USB_DEVICE(0x10C4, 0xEA70) }, /* Silicon Labs factory default */ 148 { USB_DEVICE(0x10C4, 0xEA70) }, /* Silicon Labs factory default */
diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c
index ebe51f11105d..fe123153b1a5 100644
--- a/drivers/usb/serial/option.c
+++ b/drivers/usb/serial/option.c
@@ -2025,6 +2025,8 @@ static const struct usb_device_id option_ids[] = {
2025 { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d04, 0xff) }, /* D-Link DWM-158 */ 2025 { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7d04, 0xff) }, /* D-Link DWM-158 */
2026 { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7e19, 0xff), /* D-Link DWM-221 B1 */ 2026 { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7e19, 0xff), /* D-Link DWM-221 B1 */
2027 .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, 2027 .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
2028 { USB_DEVICE_INTERFACE_CLASS(0x2001, 0x7e35, 0xff), /* D-Link DWM-222 */
2029 .driver_info = (kernel_ulong_t)&net_intf4_blacklist },
2028 { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e01, 0xff, 0xff, 0xff) }, /* D-Link DWM-152/C1 */ 2030 { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e01, 0xff, 0xff, 0xff) }, /* D-Link DWM-152/C1 */
2029 { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e02, 0xff, 0xff, 0xff) }, /* D-Link DWM-156/C1 */ 2031 { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x3e02, 0xff, 0xff, 0xff) }, /* D-Link DWM-156/C1 */
2030 { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x7e11, 0xff, 0xff, 0xff) }, /* D-Link DWM-156/A3 */ 2032 { USB_DEVICE_AND_INTERFACE_INFO(0x07d1, 0x7e11, 0xff, 0xff, 0xff) }, /* D-Link DWM-156/A3 */
diff --git a/drivers/usb/serial/pl2303.c b/drivers/usb/serial/pl2303.c
index c9ebefd8f35f..a585b477415d 100644
--- a/drivers/usb/serial/pl2303.c
+++ b/drivers/usb/serial/pl2303.c
@@ -52,6 +52,8 @@ static const struct usb_device_id id_table[] = {
52 { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID_RSAQ5) }, 52 { USB_DEVICE(IODATA_VENDOR_ID, IODATA_PRODUCT_ID_RSAQ5) },
53 { USB_DEVICE(ATEN_VENDOR_ID, ATEN_PRODUCT_ID), 53 { USB_DEVICE(ATEN_VENDOR_ID, ATEN_PRODUCT_ID),
54 .driver_info = PL2303_QUIRK_ENDPOINT_HACK }, 54 .driver_info = PL2303_QUIRK_ENDPOINT_HACK },
55 { USB_DEVICE(ATEN_VENDOR_ID, ATEN_PRODUCT_UC485),
56 .driver_info = PL2303_QUIRK_ENDPOINT_HACK },
55 { USB_DEVICE(ATEN_VENDOR_ID, ATEN_PRODUCT_ID2) }, 57 { USB_DEVICE(ATEN_VENDOR_ID, ATEN_PRODUCT_ID2) },
56 { USB_DEVICE(ATEN_VENDOR_ID2, ATEN_PRODUCT_ID) }, 58 { USB_DEVICE(ATEN_VENDOR_ID2, ATEN_PRODUCT_ID) },
57 { USB_DEVICE(ELCOM_VENDOR_ID, ELCOM_PRODUCT_ID) }, 59 { USB_DEVICE(ELCOM_VENDOR_ID, ELCOM_PRODUCT_ID) },
diff --git a/drivers/usb/serial/pl2303.h b/drivers/usb/serial/pl2303.h
index 09d9be88209e..3b5a15d1dc0d 100644
--- a/drivers/usb/serial/pl2303.h
+++ b/drivers/usb/serial/pl2303.h
@@ -27,6 +27,7 @@
27#define ATEN_VENDOR_ID 0x0557 27#define ATEN_VENDOR_ID 0x0557
28#define ATEN_VENDOR_ID2 0x0547 28#define ATEN_VENDOR_ID2 0x0547
29#define ATEN_PRODUCT_ID 0x2008 29#define ATEN_PRODUCT_ID 0x2008
30#define ATEN_PRODUCT_UC485 0x2021
30#define ATEN_PRODUCT_ID2 0x2118 31#define ATEN_PRODUCT_ID2 0x2118
31 32
32#define IODATA_VENDOR_ID 0x04bb 33#define IODATA_VENDOR_ID 0x04bb
diff --git a/drivers/usb/storage/isd200.c b/drivers/usb/storage/isd200.c
index fba4005dd737..6a7720e66595 100644
--- a/drivers/usb/storage/isd200.c
+++ b/drivers/usb/storage/isd200.c
@@ -1529,8 +1529,11 @@ static void isd200_ata_command(struct scsi_cmnd *srb, struct us_data *us)
1529 1529
1530 /* Make sure driver was initialized */ 1530 /* Make sure driver was initialized */
1531 1531
1532 if (us->extra == NULL) 1532 if (us->extra == NULL) {
1533 usb_stor_dbg(us, "ERROR Driver not initialized\n"); 1533 usb_stor_dbg(us, "ERROR Driver not initialized\n");
1534 srb->result = DID_ERROR << 16;
1535 return;
1536 }
1534 1537
1535 scsi_set_resid(srb, 0); 1538 scsi_set_resid(srb, 0);
1536 /* scsi_bufflen might change in protocol translation to ata */ 1539 /* scsi_bufflen might change in protocol translation to ata */
diff --git a/drivers/usb/storage/unusual_uas.h b/drivers/usb/storage/unusual_uas.h
index cbea9f329e71..cde115359793 100644
--- a/drivers/usb/storage/unusual_uas.h
+++ b/drivers/usb/storage/unusual_uas.h
@@ -124,9 +124,9 @@ UNUSUAL_DEV(0x0bc2, 0xab2a, 0x0000, 0x9999,
124/* Reported-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> */ 124/* Reported-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> */
125UNUSUAL_DEV(0x13fd, 0x3940, 0x0000, 0x9999, 125UNUSUAL_DEV(0x13fd, 0x3940, 0x0000, 0x9999,
126 "Initio Corporation", 126 "Initio Corporation",
127 "", 127 "INIC-3069",
128 USB_SC_DEVICE, USB_PR_DEVICE, NULL, 128 USB_SC_DEVICE, USB_PR_DEVICE, NULL,
129 US_FL_NO_ATA_1X), 129 US_FL_NO_ATA_1X | US_FL_IGNORE_RESIDUE),
130 130
131/* Reported-by: Tom Arild Naess <tanaess@gmail.com> */ 131/* Reported-by: Tom Arild Naess <tanaess@gmail.com> */
132UNUSUAL_DEV(0x152d, 0x0539, 0x0000, 0x9999, 132UNUSUAL_DEV(0x152d, 0x0539, 0x0000, 0x9999,
diff --git a/drivers/usb/storage/usb.c b/drivers/usb/storage/usb.c
index 06615934fed1..0dceb9fa3a06 100644
--- a/drivers/usb/storage/usb.c
+++ b/drivers/usb/storage/usb.c
@@ -315,6 +315,7 @@ static int usb_stor_control_thread(void * __us)
315{ 315{
316 struct us_data *us = (struct us_data *)__us; 316 struct us_data *us = (struct us_data *)__us;
317 struct Scsi_Host *host = us_to_host(us); 317 struct Scsi_Host *host = us_to_host(us);
318 struct scsi_cmnd *srb;
318 319
319 for (;;) { 320 for (;;) {
320 usb_stor_dbg(us, "*** thread sleeping\n"); 321 usb_stor_dbg(us, "*** thread sleeping\n");
@@ -330,6 +331,7 @@ static int usb_stor_control_thread(void * __us)
330 scsi_lock(host); 331 scsi_lock(host);
331 332
332 /* When we are called with no command pending, we're done */ 333 /* When we are called with no command pending, we're done */
334 srb = us->srb;
333 if (us->srb == NULL) { 335 if (us->srb == NULL) {
334 scsi_unlock(host); 336 scsi_unlock(host);
335 mutex_unlock(&us->dev_mutex); 337 mutex_unlock(&us->dev_mutex);
@@ -398,14 +400,11 @@ static int usb_stor_control_thread(void * __us)
398 /* lock access to the state */ 400 /* lock access to the state */
399 scsi_lock(host); 401 scsi_lock(host);
400 402
401 /* indicate that the command is done */ 403 /* was the command aborted? */
402 if (us->srb->result != DID_ABORT << 16) { 404 if (us->srb->result == DID_ABORT << 16) {
403 usb_stor_dbg(us, "scsi cmd done, result=0x%x\n",
404 us->srb->result);
405 us->srb->scsi_done(us->srb);
406 } else {
407SkipForAbort: 405SkipForAbort:
408 usb_stor_dbg(us, "scsi command aborted\n"); 406 usb_stor_dbg(us, "scsi command aborted\n");
407 srb = NULL; /* Don't call srb->scsi_done() */
409 } 408 }
410 409
411 /* 410 /*
@@ -429,6 +428,13 @@ SkipForAbort:
429 428
430 /* unlock the device pointers */ 429 /* unlock the device pointers */
431 mutex_unlock(&us->dev_mutex); 430 mutex_unlock(&us->dev_mutex);
431
432 /* now that the locks are released, notify the SCSI core */
433 if (srb) {
434 usb_stor_dbg(us, "scsi cmd done, result=0x%x\n",
435 srb->result);
436 srb->scsi_done(srb);
437 }
432 } /* for (;;) */ 438 } /* for (;;) */
433 439
434 /* Wait until we are told to stop */ 440 /* Wait until we are told to stop */
diff --git a/drivers/usb/typec/ucsi/ucsi.h b/drivers/usb/typec/ucsi/ucsi.h
index 6b0d2f0918c6..8a88f45822e3 100644
--- a/drivers/usb/typec/ucsi/ucsi.h
+++ b/drivers/usb/typec/ucsi/ucsi.h
@@ -3,6 +3,7 @@
3#define __DRIVER_USB_TYPEC_UCSI_H 3#define __DRIVER_USB_TYPEC_UCSI_H
4 4
5#include <linux/bitops.h> 5#include <linux/bitops.h>
6#include <linux/device.h>
6#include <linux/types.h> 7#include <linux/types.h>
7 8
8/* -------------------------------------------------------------------------- */ 9/* -------------------------------------------------------------------------- */
diff --git a/drivers/vfio/pci/vfio_pci.c b/drivers/vfio/pci/vfio_pci.c
index 063c1ce6fa42..f041b1a6cf66 100644
--- a/drivers/vfio/pci/vfio_pci.c
+++ b/drivers/vfio/pci/vfio_pci.c
@@ -226,7 +226,14 @@ static int vfio_pci_enable(struct vfio_pci_device *vdev)
226 if (ret) 226 if (ret)
227 return ret; 227 return ret;
228 228
229 vdev->reset_works = (pci_reset_function(pdev) == 0); 229 /* If reset fails because of the device lock, fail this path entirely */
230 ret = pci_try_reset_function(pdev);
231 if (ret == -EAGAIN) {
232 pci_disable_device(pdev);
233 return ret;
234 }
235
236 vdev->reset_works = !ret;
230 pci_save_state(pdev); 237 pci_save_state(pdev);
231 vdev->pci_saved_state = pci_store_saved_state(pdev); 238 vdev->pci_saved_state = pci_store_saved_state(pdev);
232 if (!vdev->pci_saved_state) 239 if (!vdev->pci_saved_state)
diff --git a/drivers/vfio/pci/vfio_pci_config.c b/drivers/vfio/pci/vfio_pci_config.c
index 330a57024cbc..5628fe114347 100644
--- a/drivers/vfio/pci/vfio_pci_config.c
+++ b/drivers/vfio/pci/vfio_pci_config.c
@@ -839,7 +839,7 @@ static int vfio_exp_config_write(struct vfio_pci_device *vdev, int pos,
839/* Permissions for PCI Express capability */ 839/* Permissions for PCI Express capability */
840static int __init init_pci_cap_exp_perm(struct perm_bits *perm) 840static int __init init_pci_cap_exp_perm(struct perm_bits *perm)
841{ 841{
842 /* Alloc larger of two possible sizes */ 842 /* Alloc largest of possible sizes */
843 if (alloc_perm_bits(perm, PCI_CAP_EXP_ENDPOINT_SIZEOF_V2)) 843 if (alloc_perm_bits(perm, PCI_CAP_EXP_ENDPOINT_SIZEOF_V2))
844 return -ENOMEM; 844 return -ENOMEM;
845 845
@@ -1243,11 +1243,16 @@ static int vfio_cap_len(struct vfio_pci_device *vdev, u8 cap, u8 pos)
1243 vdev->extended_caps = (dword != 0); 1243 vdev->extended_caps = (dword != 0);
1244 } 1244 }
1245 1245
1246 /* length based on version */ 1246 /* length based on version and type */
1247 if ((pcie_caps_reg(pdev) & PCI_EXP_FLAGS_VERS) == 1) 1247 if ((pcie_caps_reg(pdev) & PCI_EXP_FLAGS_VERS) == 1) {
1248 if (pci_pcie_type(pdev) == PCI_EXP_TYPE_RC_END)
1249 return 0xc; /* "All Devices" only, no link */
1248 return PCI_CAP_EXP_ENDPOINT_SIZEOF_V1; 1250 return PCI_CAP_EXP_ENDPOINT_SIZEOF_V1;
1249 else 1251 } else {
1252 if (pci_pcie_type(pdev) == PCI_EXP_TYPE_RC_END)
1253 return 0x2c; /* No link */
1250 return PCI_CAP_EXP_ENDPOINT_SIZEOF_V2; 1254 return PCI_CAP_EXP_ENDPOINT_SIZEOF_V2;
1255 }
1251 case PCI_CAP_ID_HT: 1256 case PCI_CAP_ID_HT:
1252 ret = pci_read_config_byte(pdev, pos + 3, &byte); 1257 ret = pci_read_config_byte(pdev, pos + 3, &byte);
1253 if (ret) 1258 if (ret)
diff --git a/drivers/vhost/vhost.c b/drivers/vhost/vhost.c
index e4613a3c362d..9cb3f722dce1 100644
--- a/drivers/vhost/vhost.c
+++ b/drivers/vhost/vhost.c
@@ -308,7 +308,6 @@ static void vhost_vq_reset(struct vhost_dev *dev,
308 vq->avail = NULL; 308 vq->avail = NULL;
309 vq->used = NULL; 309 vq->used = NULL;
310 vq->last_avail_idx = 0; 310 vq->last_avail_idx = 0;
311 vq->last_used_event = 0;
312 vq->avail_idx = 0; 311 vq->avail_idx = 0;
313 vq->last_used_idx = 0; 312 vq->last_used_idx = 0;
314 vq->signalled_used = 0; 313 vq->signalled_used = 0;
@@ -1402,7 +1401,7 @@ long vhost_vring_ioctl(struct vhost_dev *d, int ioctl, void __user *argp)
1402 r = -EINVAL; 1401 r = -EINVAL;
1403 break; 1402 break;
1404 } 1403 }
1405 vq->last_avail_idx = vq->last_used_event = s.num; 1404 vq->last_avail_idx = s.num;
1406 /* Forget the cached index value. */ 1405 /* Forget the cached index value. */
1407 vq->avail_idx = vq->last_avail_idx; 1406 vq->avail_idx = vq->last_avail_idx;
1408 break; 1407 break;
@@ -2241,6 +2240,10 @@ static bool vhost_notify(struct vhost_dev *dev, struct vhost_virtqueue *vq)
2241 __u16 old, new; 2240 __u16 old, new;
2242 __virtio16 event; 2241 __virtio16 event;
2243 bool v; 2242 bool v;
2243 /* Flush out used index updates. This is paired
2244 * with the barrier that the Guest executes when enabling
2245 * interrupts. */
2246 smp_mb();
2244 2247
2245 if (vhost_has_feature(vq, VIRTIO_F_NOTIFY_ON_EMPTY) && 2248 if (vhost_has_feature(vq, VIRTIO_F_NOTIFY_ON_EMPTY) &&
2246 unlikely(vq->avail_idx == vq->last_avail_idx)) 2249 unlikely(vq->avail_idx == vq->last_avail_idx))
@@ -2248,10 +2251,6 @@ static bool vhost_notify(struct vhost_dev *dev, struct vhost_virtqueue *vq)
2248 2251
2249 if (!vhost_has_feature(vq, VIRTIO_RING_F_EVENT_IDX)) { 2252 if (!vhost_has_feature(vq, VIRTIO_RING_F_EVENT_IDX)) {
2250 __virtio16 flags; 2253 __virtio16 flags;
2251 /* Flush out used index updates. This is paired
2252 * with the barrier that the Guest executes when enabling
2253 * interrupts. */
2254 smp_mb();
2255 if (vhost_get_avail(vq, flags, &vq->avail->flags)) { 2254 if (vhost_get_avail(vq, flags, &vq->avail->flags)) {
2256 vq_err(vq, "Failed to get flags"); 2255 vq_err(vq, "Failed to get flags");
2257 return true; 2256 return true;
@@ -2266,26 +2265,11 @@ static bool vhost_notify(struct vhost_dev *dev, struct vhost_virtqueue *vq)
2266 if (unlikely(!v)) 2265 if (unlikely(!v))
2267 return true; 2266 return true;
2268 2267
2269 /* We're sure if the following conditions are met, there's no
2270 * need to notify guest:
2271 * 1) cached used event is ahead of new
2272 * 2) old to new updating does not cross cached used event. */
2273 if (vring_need_event(vq->last_used_event, new + vq->num, new) &&
2274 !vring_need_event(vq->last_used_event, new, old))
2275 return false;
2276
2277 /* Flush out used index updates. This is paired
2278 * with the barrier that the Guest executes when enabling
2279 * interrupts. */
2280 smp_mb();
2281
2282 if (vhost_get_avail(vq, event, vhost_used_event(vq))) { 2268 if (vhost_get_avail(vq, event, vhost_used_event(vq))) {
2283 vq_err(vq, "Failed to get used event idx"); 2269 vq_err(vq, "Failed to get used event idx");
2284 return true; 2270 return true;
2285 } 2271 }
2286 vq->last_used_event = vhost16_to_cpu(vq, event); 2272 return vring_need_event(vhost16_to_cpu(vq, event), new, old);
2287
2288 return vring_need_event(vq->last_used_event, new, old);
2289} 2273}
2290 2274
2291/* This actually signals the guest, using eventfd. */ 2275/* This actually signals the guest, using eventfd. */
diff --git a/drivers/vhost/vhost.h b/drivers/vhost/vhost.h
index f72095868b93..bb7c29b8b9fc 100644
--- a/drivers/vhost/vhost.h
+++ b/drivers/vhost/vhost.h
@@ -115,9 +115,6 @@ struct vhost_virtqueue {
115 /* Last index we used. */ 115 /* Last index we used. */
116 u16 last_used_idx; 116 u16 last_used_idx;
117 117
118 /* Last used evet we've seen */
119 u16 last_used_event;
120
121 /* Used flags */ 118 /* Used flags */
122 u16 used_flags; 119 u16 used_flags;
123 120
diff --git a/drivers/video/fbdev/efifb.c b/drivers/video/fbdev/efifb.c
index ff01bed7112f..1e784adb89b1 100644
--- a/drivers/video/fbdev/efifb.c
+++ b/drivers/video/fbdev/efifb.c
@@ -17,6 +17,7 @@
17#include <asm/efi.h> 17#include <asm/efi.h>
18 18
19static bool request_mem_succeeded = false; 19static bool request_mem_succeeded = false;
20static bool nowc = false;
20 21
21static struct fb_var_screeninfo efifb_defined = { 22static struct fb_var_screeninfo efifb_defined = {
22 .activate = FB_ACTIVATE_NOW, 23 .activate = FB_ACTIVATE_NOW,
@@ -99,6 +100,8 @@ static int efifb_setup(char *options)
99 screen_info.lfb_height = simple_strtoul(this_opt+7, NULL, 0); 100 screen_info.lfb_height = simple_strtoul(this_opt+7, NULL, 0);
100 else if (!strncmp(this_opt, "width:", 6)) 101 else if (!strncmp(this_opt, "width:", 6))
101 screen_info.lfb_width = simple_strtoul(this_opt+6, NULL, 0); 102 screen_info.lfb_width = simple_strtoul(this_opt+6, NULL, 0);
103 else if (!strcmp(this_opt, "nowc"))
104 nowc = true;
102 } 105 }
103 } 106 }
104 107
@@ -255,7 +258,10 @@ static int efifb_probe(struct platform_device *dev)
255 info->apertures->ranges[0].base = efifb_fix.smem_start; 258 info->apertures->ranges[0].base = efifb_fix.smem_start;
256 info->apertures->ranges[0].size = size_remap; 259 info->apertures->ranges[0].size = size_remap;
257 260
258 info->screen_base = ioremap_wc(efifb_fix.smem_start, efifb_fix.smem_len); 261 if (nowc)
262 info->screen_base = ioremap(efifb_fix.smem_start, efifb_fix.smem_len);
263 else
264 info->screen_base = ioremap_wc(efifb_fix.smem_start, efifb_fix.smem_len);
259 if (!info->screen_base) { 265 if (!info->screen_base) {
260 pr_err("efifb: abort, cannot ioremap video memory 0x%x @ 0x%lx\n", 266 pr_err("efifb: abort, cannot ioremap video memory 0x%x @ 0x%lx\n",
261 efifb_fix.smem_len, efifb_fix.smem_start); 267 efifb_fix.smem_len, efifb_fix.smem_start);
diff --git a/drivers/video/fbdev/imxfb.c b/drivers/video/fbdev/imxfb.c
index c166e0725be5..ba82f97fb42b 100644
--- a/drivers/video/fbdev/imxfb.c
+++ b/drivers/video/fbdev/imxfb.c
@@ -1073,20 +1073,16 @@ static int imxfb_remove(struct platform_device *pdev)
1073 imxfb_disable_controller(fbi); 1073 imxfb_disable_controller(fbi);
1074 1074
1075 unregister_framebuffer(info); 1075 unregister_framebuffer(info);
1076 1076 fb_dealloc_cmap(&info->cmap);
1077 pdata = dev_get_platdata(&pdev->dev); 1077 pdata = dev_get_platdata(&pdev->dev);
1078 if (pdata && pdata->exit) 1078 if (pdata && pdata->exit)
1079 pdata->exit(fbi->pdev); 1079 pdata->exit(fbi->pdev);
1080
1081 fb_dealloc_cmap(&info->cmap);
1082 kfree(info->pseudo_palette);
1083 framebuffer_release(info);
1084
1085 dma_free_wc(&pdev->dev, fbi->map_size, info->screen_base, 1080 dma_free_wc(&pdev->dev, fbi->map_size, info->screen_base,
1086 fbi->map_dma); 1081 fbi->map_dma);
1087
1088 iounmap(fbi->regs); 1082 iounmap(fbi->regs);
1089 release_mem_region(res->start, resource_size(res)); 1083 release_mem_region(res->start, resource_size(res));
1084 kfree(info->pseudo_palette);
1085 framebuffer_release(info);
1090 1086
1091 return 0; 1087 return 0;
1092} 1088}
diff --git a/drivers/video/fbdev/omap2/omapfb/dss/core.c b/drivers/video/fbdev/omap2/omapfb/dss/core.c
index eecf695c16f4..09e5bb013d28 100644
--- a/drivers/video/fbdev/omap2/omapfb/dss/core.c
+++ b/drivers/video/fbdev/omap2/omapfb/dss/core.c
@@ -193,7 +193,6 @@ static struct notifier_block omap_dss_pm_notif_block = {
193 193
194static int __init omap_dss_probe(struct platform_device *pdev) 194static int __init omap_dss_probe(struct platform_device *pdev)
195{ 195{
196 struct omap_dss_board_info *pdata = pdev->dev.platform_data;
197 int r; 196 int r;
198 197
199 core.pdev = pdev; 198 core.pdev = pdev;
diff --git a/drivers/virtio/virtio_balloon.c b/drivers/virtio/virtio_balloon.c
index 22caf808bfab..f0b3a0b9d42f 100644
--- a/drivers/virtio/virtio_balloon.c
+++ b/drivers/virtio/virtio_balloon.c
@@ -104,12 +104,6 @@ static u32 page_to_balloon_pfn(struct page *page)
104 return pfn * VIRTIO_BALLOON_PAGES_PER_PAGE; 104 return pfn * VIRTIO_BALLOON_PAGES_PER_PAGE;
105} 105}
106 106
107static struct page *balloon_pfn_to_page(u32 pfn)
108{
109 BUG_ON(pfn % VIRTIO_BALLOON_PAGES_PER_PAGE);
110 return pfn_to_page(pfn / VIRTIO_BALLOON_PAGES_PER_PAGE);
111}
112
113static void balloon_ack(struct virtqueue *vq) 107static void balloon_ack(struct virtqueue *vq)
114{ 108{
115 struct virtio_balloon *vb = vq->vdev->priv; 109 struct virtio_balloon *vb = vq->vdev->priv;
@@ -138,8 +132,10 @@ static void set_page_pfns(struct virtio_balloon *vb,
138{ 132{
139 unsigned int i; 133 unsigned int i;
140 134
141 /* Set balloon pfns pointing at this page. 135 /*
142 * Note that the first pfn points at start of the page. */ 136 * Set balloon pfns pointing at this page.
137 * Note that the first pfn points at start of the page.
138 */
143 for (i = 0; i < VIRTIO_BALLOON_PAGES_PER_PAGE; i++) 139 for (i = 0; i < VIRTIO_BALLOON_PAGES_PER_PAGE; i++)
144 pfns[i] = cpu_to_virtio32(vb->vdev, 140 pfns[i] = cpu_to_virtio32(vb->vdev,
145 page_to_balloon_pfn(page) + i); 141 page_to_balloon_pfn(page) + i);
@@ -182,18 +178,16 @@ static unsigned fill_balloon(struct virtio_balloon *vb, size_t num)
182 return num_allocated_pages; 178 return num_allocated_pages;
183} 179}
184 180
185static void release_pages_balloon(struct virtio_balloon *vb) 181static void release_pages_balloon(struct virtio_balloon *vb,
182 struct list_head *pages)
186{ 183{
187 unsigned int i; 184 struct page *page, *next;
188 struct page *page;
189 185
190 /* Find pfns pointing at start of each page, get pages and free them. */ 186 list_for_each_entry_safe(page, next, pages, lru) {
191 for (i = 0; i < vb->num_pfns; i += VIRTIO_BALLOON_PAGES_PER_PAGE) {
192 page = balloon_pfn_to_page(virtio32_to_cpu(vb->vdev,
193 vb->pfns[i]));
194 if (!virtio_has_feature(vb->vdev, 187 if (!virtio_has_feature(vb->vdev,
195 VIRTIO_BALLOON_F_DEFLATE_ON_OOM)) 188 VIRTIO_BALLOON_F_DEFLATE_ON_OOM))
196 adjust_managed_page_count(page, 1); 189 adjust_managed_page_count(page, 1);
190 list_del(&page->lru);
197 put_page(page); /* balloon reference */ 191 put_page(page); /* balloon reference */
198 } 192 }
199} 193}
@@ -203,6 +197,7 @@ static unsigned leak_balloon(struct virtio_balloon *vb, size_t num)
203 unsigned num_freed_pages; 197 unsigned num_freed_pages;
204 struct page *page; 198 struct page *page;
205 struct balloon_dev_info *vb_dev_info = &vb->vb_dev_info; 199 struct balloon_dev_info *vb_dev_info = &vb->vb_dev_info;
200 LIST_HEAD(pages);
206 201
207 /* We can only do one array worth at a time. */ 202 /* We can only do one array worth at a time. */
208 num = min(num, ARRAY_SIZE(vb->pfns)); 203 num = min(num, ARRAY_SIZE(vb->pfns));
@@ -216,6 +211,7 @@ static unsigned leak_balloon(struct virtio_balloon *vb, size_t num)
216 if (!page) 211 if (!page)
217 break; 212 break;
218 set_page_pfns(vb, vb->pfns + vb->num_pfns, page); 213 set_page_pfns(vb, vb->pfns + vb->num_pfns, page);
214 list_add(&page->lru, &pages);
219 vb->num_pages -= VIRTIO_BALLOON_PAGES_PER_PAGE; 215 vb->num_pages -= VIRTIO_BALLOON_PAGES_PER_PAGE;
220 } 216 }
221 217
@@ -227,7 +223,7 @@ static unsigned leak_balloon(struct virtio_balloon *vb, size_t num)
227 */ 223 */
228 if (vb->num_pfns != 0) 224 if (vb->num_pfns != 0)
229 tell_host(vb, vb->deflate_vq); 225 tell_host(vb, vb->deflate_vq);
230 release_pages_balloon(vb); 226 release_pages_balloon(vb, &pages);
231 mutex_unlock(&vb->balloon_lock); 227 mutex_unlock(&vb->balloon_lock);
232 return num_freed_pages; 228 return num_freed_pages;
233} 229}
diff --git a/drivers/w1/masters/omap_hdq.c b/drivers/w1/masters/omap_hdq.c
index 3612542b6044..83fc9aab34e8 100644
--- a/drivers/w1/masters/omap_hdq.c
+++ b/drivers/w1/masters/omap_hdq.c
@@ -704,7 +704,8 @@ static int omap_hdq_probe(struct platform_device *pdev)
704 704
705 irq = platform_get_irq(pdev, 0); 705 irq = platform_get_irq(pdev, 0);
706 if (irq < 0) { 706 if (irq < 0) {
707 ret = -ENXIO; 707 dev_dbg(&pdev->dev, "Failed to get IRQ: %d\n", irq);
708 ret = irq;
708 goto err_irq; 709 goto err_irq;
709 } 710 }
710 711
diff --git a/drivers/w1/w1.c b/drivers/w1/w1.c
index 95ea7e6b1d99..74471e7aa5cc 100644
--- a/drivers/w1/w1.c
+++ b/drivers/w1/w1.c
@@ -728,6 +728,7 @@ int w1_attach_slave_device(struct w1_master *dev, struct w1_reg_num *rn)
728 memcpy(&sl->reg_num, rn, sizeof(sl->reg_num)); 728 memcpy(&sl->reg_num, rn, sizeof(sl->reg_num));
729 atomic_set(&sl->refcnt, 1); 729 atomic_set(&sl->refcnt, 1);
730 atomic_inc(&sl->master->refcnt); 730 atomic_inc(&sl->master->refcnt);
731 dev->slave_count++;
731 732
732 /* slave modules need to be loaded in a context with unlocked mutex */ 733 /* slave modules need to be loaded in a context with unlocked mutex */
733 mutex_unlock(&dev->mutex); 734 mutex_unlock(&dev->mutex);
@@ -747,11 +748,11 @@ int w1_attach_slave_device(struct w1_master *dev, struct w1_reg_num *rn)
747 748
748 sl->family = f; 749 sl->family = f;
749 750
750
751 err = __w1_attach_slave_device(sl); 751 err = __w1_attach_slave_device(sl);
752 if (err < 0) { 752 if (err < 0) {
753 dev_err(&dev->dev, "%s: Attaching %s failed.\n", __func__, 753 dev_err(&dev->dev, "%s: Attaching %s failed.\n", __func__,
754 sl->name); 754 sl->name);
755 dev->slave_count--;
755 w1_family_put(sl->family); 756 w1_family_put(sl->family);
756 atomic_dec(&sl->master->refcnt); 757 atomic_dec(&sl->master->refcnt);
757 kfree(sl); 758 kfree(sl);
@@ -759,7 +760,6 @@ int w1_attach_slave_device(struct w1_master *dev, struct w1_reg_num *rn)
759 } 760 }
760 761
761 sl->ttl = dev->slave_ttl; 762 sl->ttl = dev->slave_ttl;
762 dev->slave_count++;
763 763
764 memcpy(msg.id.id, rn, sizeof(msg.id)); 764 memcpy(msg.id.id, rn, sizeof(msg.id));
765 msg.type = W1_SLAVE_ADD; 765 msg.type = W1_SLAVE_ADD;
diff --git a/drivers/xen/Makefile b/drivers/xen/Makefile
index 8feab810aed9..7f188b8d0c67 100644
--- a/drivers/xen/Makefile
+++ b/drivers/xen/Makefile
@@ -7,9 +7,6 @@ obj-y += xenbus/
7nostackp := $(call cc-option, -fno-stack-protector) 7nostackp := $(call cc-option, -fno-stack-protector)
8CFLAGS_features.o := $(nostackp) 8CFLAGS_features.o := $(nostackp)
9 9
10CFLAGS_efi.o += -fshort-wchar
11LDFLAGS += $(call ld-option, --no-wchar-size-warning)
12
13dom0-$(CONFIG_ARM64) += arm-device.o 10dom0-$(CONFIG_ARM64) += arm-device.o
14dom0-$(CONFIG_PCI) += pci.o 11dom0-$(CONFIG_PCI) += pci.o
15dom0-$(CONFIG_USB_SUPPORT) += dbgp.o 12dom0-$(CONFIG_USB_SUPPORT) += dbgp.o
diff --git a/drivers/xen/balloon.c b/drivers/xen/balloon.c
index 50dcb68d8070..ab609255a0f3 100644
--- a/drivers/xen/balloon.c
+++ b/drivers/xen/balloon.c
@@ -780,6 +780,9 @@ static int __init balloon_init(void)
780 } 780 }
781#endif 781#endif
782 782
783 /* Init the xen-balloon driver. */
784 xen_balloon_init();
785
783 return 0; 786 return 0;
784} 787}
785subsys_initcall(balloon_init); 788subsys_initcall(balloon_init);
diff --git a/drivers/xen/biomerge.c b/drivers/xen/biomerge.c
index 4da69dbf7dca..1bdd02a6d6ac 100644
--- a/drivers/xen/biomerge.c
+++ b/drivers/xen/biomerge.c
@@ -10,8 +10,7 @@ bool xen_biovec_phys_mergeable(const struct bio_vec *vec1,
10 unsigned long bfn1 = pfn_to_bfn(page_to_pfn(vec1->bv_page)); 10 unsigned long bfn1 = pfn_to_bfn(page_to_pfn(vec1->bv_page));
11 unsigned long bfn2 = pfn_to_bfn(page_to_pfn(vec2->bv_page)); 11 unsigned long bfn2 = pfn_to_bfn(page_to_pfn(vec2->bv_page));
12 12
13 return __BIOVEC_PHYS_MERGEABLE(vec1, vec2) && 13 return bfn1 + PFN_DOWN(vec1->bv_offset + vec1->bv_len) == bfn2;
14 ((bfn1 == bfn2) || ((bfn1+1) == bfn2));
15#else 14#else
16 /* 15 /*
17 * XXX: Add support for merging bio_vec when using different page 16 * XXX: Add support for merging bio_vec when using different page
diff --git a/drivers/xen/events/events_base.c b/drivers/xen/events/events_base.c
index b241bfa529ce..2d43118077e4 100644
--- a/drivers/xen/events/events_base.c
+++ b/drivers/xen/events/events_base.c
@@ -343,14 +343,6 @@ static void bind_evtchn_to_cpu(unsigned int chn, unsigned int cpu)
343 info->cpu = cpu; 343 info->cpu = cpu;
344} 344}
345 345
346static void xen_evtchn_mask_all(void)
347{
348 unsigned int evtchn;
349
350 for (evtchn = 0; evtchn < xen_evtchn_nr_channels(); evtchn++)
351 mask_evtchn(evtchn);
352}
353
354/** 346/**
355 * notify_remote_via_irq - send event to remote end of event channel via irq 347 * notify_remote_via_irq - send event to remote end of event channel via irq
356 * @irq: irq of event channel to send event to 348 * @irq: irq of event channel to send event to
@@ -582,7 +574,7 @@ static void shutdown_pirq(struct irq_data *data)
582 574
583static void enable_pirq(struct irq_data *data) 575static void enable_pirq(struct irq_data *data)
584{ 576{
585 startup_pirq(data); 577 enable_dynirq(data);
586} 578}
587 579
588static void disable_pirq(struct irq_data *data) 580static void disable_pirq(struct irq_data *data)
@@ -1573,7 +1565,6 @@ void xen_irq_resume(void)
1573 struct irq_info *info; 1565 struct irq_info *info;
1574 1566
1575 /* New event-channel space is not 'live' yet. */ 1567 /* New event-channel space is not 'live' yet. */
1576 xen_evtchn_mask_all();
1577 xen_evtchn_resume(); 1568 xen_evtchn_resume();
1578 1569
1579 /* No IRQ <-> event-channel mappings. */ 1570 /* No IRQ <-> event-channel mappings. */
@@ -1681,6 +1672,7 @@ module_param(fifo_events, bool, 0);
1681void __init xen_init_IRQ(void) 1672void __init xen_init_IRQ(void)
1682{ 1673{
1683 int ret = -EINVAL; 1674 int ret = -EINVAL;
1675 unsigned int evtchn;
1684 1676
1685 if (fifo_events) 1677 if (fifo_events)
1686 ret = xen_evtchn_fifo_init(); 1678 ret = xen_evtchn_fifo_init();
@@ -1692,7 +1684,8 @@ void __init xen_init_IRQ(void)
1692 BUG_ON(!evtchn_to_irq); 1684 BUG_ON(!evtchn_to_irq);
1693 1685
1694 /* No event channels are 'live' right now. */ 1686 /* No event channels are 'live' right now. */
1695 xen_evtchn_mask_all(); 1687 for (evtchn = 0; evtchn < xen_evtchn_nr_channels(); evtchn++)
1688 mask_evtchn(evtchn);
1696 1689
1697 pirq_needs_eoi = pirq_needs_eoi_flag; 1690 pirq_needs_eoi = pirq_needs_eoi_flag;
1698 1691
diff --git a/drivers/xen/grant-table.c b/drivers/xen/grant-table.c
index d6786b87e13b..2c6a9114d332 100644
--- a/drivers/xen/grant-table.c
+++ b/drivers/xen/grant-table.c
@@ -42,6 +42,7 @@
42#include <linux/delay.h> 42#include <linux/delay.h>
43#include <linux/hardirq.h> 43#include <linux/hardirq.h>
44#include <linux/workqueue.h> 44#include <linux/workqueue.h>
45#include <linux/ratelimit.h>
45 46
46#include <xen/xen.h> 47#include <xen/xen.h>
47#include <xen/interface/xen.h> 48#include <xen/interface/xen.h>
@@ -1072,8 +1073,14 @@ static int gnttab_expand(unsigned int req_entries)
1072 cur = nr_grant_frames; 1073 cur = nr_grant_frames;
1073 extra = ((req_entries + (grefs_per_grant_frame-1)) / 1074 extra = ((req_entries + (grefs_per_grant_frame-1)) /
1074 grefs_per_grant_frame); 1075 grefs_per_grant_frame);
1075 if (cur + extra > gnttab_max_grant_frames()) 1076 if (cur + extra > gnttab_max_grant_frames()) {
1077 pr_warn_ratelimited("xen/grant-table: max_grant_frames reached"
1078 " cur=%u extra=%u limit=%u"
1079 " gnttab_free_count=%u req_entries=%u\n",
1080 cur, extra, gnttab_max_grant_frames(),
1081 gnttab_free_count, req_entries);
1076 return -ENOSPC; 1082 return -ENOSPC;
1083 }
1077 1084
1078 rc = gnttab_map(cur, cur + extra - 1); 1085 rc = gnttab_map(cur, cur + extra - 1);
1079 if (rc == 0) 1086 if (rc == 0)
diff --git a/drivers/xen/xen-balloon.c b/drivers/xen/xen-balloon.c
index e7715cb62eef..e89136ab851e 100644
--- a/drivers/xen/xen-balloon.c
+++ b/drivers/xen/xen-balloon.c
@@ -59,6 +59,8 @@ static void watch_target(struct xenbus_watch *watch,
59{ 59{
60 unsigned long long new_target; 60 unsigned long long new_target;
61 int err; 61 int err;
62 static bool watch_fired;
63 static long target_diff;
62 64
63 err = xenbus_scanf(XBT_NIL, "memory", "target", "%llu", &new_target); 65 err = xenbus_scanf(XBT_NIL, "memory", "target", "%llu", &new_target);
64 if (err != 1) { 66 if (err != 1) {
@@ -69,7 +71,14 @@ static void watch_target(struct xenbus_watch *watch,
69 /* The given memory/target value is in KiB, so it needs converting to 71 /* The given memory/target value is in KiB, so it needs converting to
70 * pages. PAGE_SHIFT converts bytes to pages, hence PAGE_SHIFT - 10. 72 * pages. PAGE_SHIFT converts bytes to pages, hence PAGE_SHIFT - 10.
71 */ 73 */
72 balloon_set_new_target(new_target >> (PAGE_SHIFT - 10)); 74 new_target >>= PAGE_SHIFT - 10;
75 if (watch_fired) {
76 balloon_set_new_target(new_target - target_diff);
77 return;
78 }
79
80 watch_fired = true;
81 target_diff = new_target - balloon_stats.target_pages;
73} 82}
74static struct xenbus_watch target_watch = { 83static struct xenbus_watch target_watch = {
75 .node = "memory/target", 84 .node = "memory/target",
@@ -94,22 +103,15 @@ static struct notifier_block xenstore_notifier = {
94 .notifier_call = balloon_init_watcher, 103 .notifier_call = balloon_init_watcher,
95}; 104};
96 105
97static int __init balloon_init(void) 106void xen_balloon_init(void)
98{ 107{
99 if (!xen_domain())
100 return -ENODEV;
101
102 pr_info("Initialising balloon driver\n");
103
104 register_balloon(&balloon_dev); 108 register_balloon(&balloon_dev);
105 109
106 register_xen_selfballooning(&balloon_dev); 110 register_xen_selfballooning(&balloon_dev);
107 111
108 register_xenstore_notifier(&xenstore_notifier); 112 register_xenstore_notifier(&xenstore_notifier);
109
110 return 0;
111} 113}
112subsys_initcall(balloon_init); 114EXPORT_SYMBOL_GPL(xen_balloon_init);
113 115
114#define BALLOON_SHOW(name, format, args...) \ 116#define BALLOON_SHOW(name, format, args...) \
115 static ssize_t show_##name(struct device *dev, \ 117 static ssize_t show_##name(struct device *dev, \
diff --git a/drivers/xen/xen-selfballoon.c b/drivers/xen/xen-selfballoon.c
index 66620713242a..a67e955cacd1 100644
--- a/drivers/xen/xen-selfballoon.c
+++ b/drivers/xen/xen-selfballoon.c
@@ -151,8 +151,8 @@ static unsigned long frontswap_inertia_counter;
151static void frontswap_selfshrink(void) 151static void frontswap_selfshrink(void)
152{ 152{
153 static unsigned long cur_frontswap_pages; 153 static unsigned long cur_frontswap_pages;
154 static unsigned long last_frontswap_pages; 154 unsigned long last_frontswap_pages;
155 static unsigned long tgt_frontswap_pages; 155 unsigned long tgt_frontswap_pages;
156 156
157 last_frontswap_pages = cur_frontswap_pages; 157 last_frontswap_pages = cur_frontswap_pages;
158 cur_frontswap_pages = frontswap_curr_pages(); 158 cur_frontswap_pages = frontswap_curr_pages();
diff --git a/drivers/xen/xenbus/xenbus_xs.c b/drivers/xen/xenbus/xenbus_xs.c
index e46080214955..3e59590c7254 100644
--- a/drivers/xen/xenbus/xenbus_xs.c
+++ b/drivers/xen/xenbus/xenbus_xs.c
@@ -857,6 +857,8 @@ static int xenwatch_thread(void *unused)
857 struct list_head *ent; 857 struct list_head *ent;
858 struct xs_watch_event *event; 858 struct xs_watch_event *event;
859 859
860 xenwatch_pid = current->pid;
861
860 for (;;) { 862 for (;;) {
861 wait_event_interruptible(watch_events_waitq, 863 wait_event_interruptible(watch_events_waitq,
862 !list_empty(&watch_events)); 864 !list_empty(&watch_events));
@@ -925,7 +927,6 @@ int xs_init(void)
925 task = kthread_run(xenwatch_thread, NULL, "xenwatch"); 927 task = kthread_run(xenwatch_thread, NULL, "xenwatch");
926 if (IS_ERR(task)) 928 if (IS_ERR(task))
927 return PTR_ERR(task); 929 return PTR_ERR(task);
928 xenwatch_pid = task->pid;
929 930
930 /* shutdown watches for kexec boot */ 931 /* shutdown watches for kexec boot */
931 xs_reset_watches(); 932 xs_reset_watches();
diff --git a/drivers/xen/xenfs/super.c b/drivers/xen/xenfs/super.c
index 967f069385d0..71ddfb4cf61c 100644
--- a/drivers/xen/xenfs/super.c
+++ b/drivers/xen/xenfs/super.c
@@ -87,7 +87,6 @@ static int __init xenfs_init(void)
87 if (xen_domain()) 87 if (xen_domain())
88 return register_filesystem(&xenfs_type); 88 return register_filesystem(&xenfs_type);
89 89
90 pr_info("not registering filesystem on non-xen platform\n");
91 return 0; 90 return 0;
92} 91}
93 92
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
index 879ff9c7ffd0..6466153f2bf0 100644
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -664,8 +664,7 @@ static unsigned long randomize_stack_top(unsigned long stack_top)
664{ 664{
665 unsigned long random_variable = 0; 665 unsigned long random_variable = 0;
666 666
667 if ((current->flags & PF_RANDOMIZE) && 667 if (current->flags & PF_RANDOMIZE) {
668 !(current->personality & ADDR_NO_RANDOMIZE)) {
669 random_variable = get_random_long(); 668 random_variable = get_random_long();
670 random_variable &= STACK_RND_MASK; 669 random_variable &= STACK_RND_MASK;
671 random_variable <<= PAGE_SHIFT; 670 random_variable <<= PAGE_SHIFT;
diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c
index 080e2ebb8aa0..f45b61fe9a9a 100644
--- a/fs/btrfs/disk-io.c
+++ b/fs/btrfs/disk-io.c
@@ -3516,7 +3516,7 @@ static blk_status_t wait_dev_flush(struct btrfs_device *device)
3516 struct bio *bio = device->flush_bio; 3516 struct bio *bio = device->flush_bio;
3517 3517
3518 if (!device->flush_bio_sent) 3518 if (!device->flush_bio_sent)
3519 return 0; 3519 return BLK_STS_OK;
3520 3520
3521 device->flush_bio_sent = 0; 3521 device->flush_bio_sent = 0;
3522 wait_for_completion_io(&device->flush_wait); 3522 wait_for_completion_io(&device->flush_wait);
@@ -3563,7 +3563,7 @@ static int barrier_all_devices(struct btrfs_fs_info *info)
3563 continue; 3563 continue;
3564 3564
3565 write_dev_flush(dev); 3565 write_dev_flush(dev);
3566 dev->last_flush_error = 0; 3566 dev->last_flush_error = BLK_STS_OK;
3567 } 3567 }
3568 3568
3569 /* wait for all the barriers */ 3569 /* wait for all the barriers */
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 375f8c728d91..e3b0b4196d3d 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -4825,10 +4825,6 @@ skip_async:
4825 else 4825 else
4826 flush = BTRFS_RESERVE_NO_FLUSH; 4826 flush = BTRFS_RESERVE_NO_FLUSH;
4827 spin_lock(&space_info->lock); 4827 spin_lock(&space_info->lock);
4828 if (can_overcommit(fs_info, space_info, orig, flush, false)) {
4829 spin_unlock(&space_info->lock);
4830 break;
4831 }
4832 if (list_empty(&space_info->tickets) && 4828 if (list_empty(&space_info->tickets) &&
4833 list_empty(&space_info->priority_tickets)) { 4829 list_empty(&space_info->priority_tickets)) {
4834 spin_unlock(&space_info->lock); 4830 spin_unlock(&space_info->lock);
@@ -7589,6 +7585,10 @@ search:
7589 u64 offset; 7585 u64 offset;
7590 int cached; 7586 int cached;
7591 7587
7588 /* If the block group is read-only, we can skip it entirely. */
7589 if (unlikely(block_group->ro))
7590 continue;
7591
7592 btrfs_grab_block_group(block_group, delalloc); 7592 btrfs_grab_block_group(block_group, delalloc);
7593 search_start = block_group->key.objectid; 7593 search_start = block_group->key.objectid;
7594 7594
@@ -7624,8 +7624,6 @@ have_block_group:
7624 7624
7625 if (unlikely(block_group->cached == BTRFS_CACHE_ERROR)) 7625 if (unlikely(block_group->cached == BTRFS_CACHE_ERROR))
7626 goto loop; 7626 goto loop;
7627 if (unlikely(block_group->ro))
7628 goto loop;
7629 7627
7630 /* 7628 /*
7631 * Ok we want to try and use the cluster allocator, so 7629 * Ok we want to try and use the cluster allocator, so
@@ -7839,6 +7837,7 @@ loop:
7839 failed_alloc = false; 7837 failed_alloc = false;
7840 BUG_ON(index != get_block_group_index(block_group)); 7838 BUG_ON(index != get_block_group_index(block_group));
7841 btrfs_release_block_group(block_group, delalloc); 7839 btrfs_release_block_group(block_group, delalloc);
7840 cond_resched();
7842 } 7841 }
7843 up_read(&space_info->groups_sem); 7842 up_read(&space_info->groups_sem);
7844 7843
diff --git a/fs/btrfs/inode.c b/fs/btrfs/inode.c
index 95c212037095..24bcd5cd9cf2 100644
--- a/fs/btrfs/inode.c
+++ b/fs/btrfs/inode.c
@@ -7924,11 +7924,12 @@ err:
7924 return ret; 7924 return ret;
7925} 7925}
7926 7926
7927static inline int submit_dio_repair_bio(struct inode *inode, struct bio *bio, 7927static inline blk_status_t submit_dio_repair_bio(struct inode *inode,
7928 int mirror_num) 7928 struct bio *bio,
7929 int mirror_num)
7929{ 7930{
7930 struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb); 7931 struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
7931 int ret; 7932 blk_status_t ret;
7932 7933
7933 BUG_ON(bio_op(bio) == REQ_OP_WRITE); 7934 BUG_ON(bio_op(bio) == REQ_OP_WRITE);
7934 7935
@@ -7980,10 +7981,10 @@ static int btrfs_check_dio_repairable(struct inode *inode,
7980 return 1; 7981 return 1;
7981} 7982}
7982 7983
7983static int dio_read_error(struct inode *inode, struct bio *failed_bio, 7984static blk_status_t dio_read_error(struct inode *inode, struct bio *failed_bio,
7984 struct page *page, unsigned int pgoff, 7985 struct page *page, unsigned int pgoff,
7985 u64 start, u64 end, int failed_mirror, 7986 u64 start, u64 end, int failed_mirror,
7986 bio_end_io_t *repair_endio, void *repair_arg) 7987 bio_end_io_t *repair_endio, void *repair_arg)
7987{ 7988{
7988 struct io_failure_record *failrec; 7989 struct io_failure_record *failrec;
7989 struct extent_io_tree *io_tree = &BTRFS_I(inode)->io_tree; 7990 struct extent_io_tree *io_tree = &BTRFS_I(inode)->io_tree;
@@ -7993,18 +7994,19 @@ static int dio_read_error(struct inode *inode, struct bio *failed_bio,
7993 int read_mode = 0; 7994 int read_mode = 0;
7994 int segs; 7995 int segs;
7995 int ret; 7996 int ret;
7997 blk_status_t status;
7996 7998
7997 BUG_ON(bio_op(failed_bio) == REQ_OP_WRITE); 7999 BUG_ON(bio_op(failed_bio) == REQ_OP_WRITE);
7998 8000
7999 ret = btrfs_get_io_failure_record(inode, start, end, &failrec); 8001 ret = btrfs_get_io_failure_record(inode, start, end, &failrec);
8000 if (ret) 8002 if (ret)
8001 return ret; 8003 return errno_to_blk_status(ret);
8002 8004
8003 ret = btrfs_check_dio_repairable(inode, failed_bio, failrec, 8005 ret = btrfs_check_dio_repairable(inode, failed_bio, failrec,
8004 failed_mirror); 8006 failed_mirror);
8005 if (!ret) { 8007 if (!ret) {
8006 free_io_failure(failure_tree, io_tree, failrec); 8008 free_io_failure(failure_tree, io_tree, failrec);
8007 return -EIO; 8009 return BLK_STS_IOERR;
8008 } 8010 }
8009 8011
8010 segs = bio_segments(failed_bio); 8012 segs = bio_segments(failed_bio);
@@ -8022,13 +8024,13 @@ static int dio_read_error(struct inode *inode, struct bio *failed_bio,
8022 "Repair DIO Read Error: submitting new dio read[%#x] to this_mirror=%d, in_validation=%d\n", 8024 "Repair DIO Read Error: submitting new dio read[%#x] to this_mirror=%d, in_validation=%d\n",
8023 read_mode, failrec->this_mirror, failrec->in_validation); 8025 read_mode, failrec->this_mirror, failrec->in_validation);
8024 8026
8025 ret = submit_dio_repair_bio(inode, bio, failrec->this_mirror); 8027 status = submit_dio_repair_bio(inode, bio, failrec->this_mirror);
8026 if (ret) { 8028 if (status) {
8027 free_io_failure(failure_tree, io_tree, failrec); 8029 free_io_failure(failure_tree, io_tree, failrec);
8028 bio_put(bio); 8030 bio_put(bio);
8029 } 8031 }
8030 8032
8031 return ret; 8033 return status;
8032} 8034}
8033 8035
8034struct btrfs_retry_complete { 8036struct btrfs_retry_complete {
@@ -8065,8 +8067,8 @@ end:
8065 bio_put(bio); 8067 bio_put(bio);
8066} 8068}
8067 8069
8068static int __btrfs_correct_data_nocsum(struct inode *inode, 8070static blk_status_t __btrfs_correct_data_nocsum(struct inode *inode,
8069 struct btrfs_io_bio *io_bio) 8071 struct btrfs_io_bio *io_bio)
8070{ 8072{
8071 struct btrfs_fs_info *fs_info; 8073 struct btrfs_fs_info *fs_info;
8072 struct bio_vec bvec; 8074 struct bio_vec bvec;
@@ -8076,8 +8078,8 @@ static int __btrfs_correct_data_nocsum(struct inode *inode,
8076 unsigned int pgoff; 8078 unsigned int pgoff;
8077 u32 sectorsize; 8079 u32 sectorsize;
8078 int nr_sectors; 8080 int nr_sectors;
8079 int ret; 8081 blk_status_t ret;
8080 int err = 0; 8082 blk_status_t err = BLK_STS_OK;
8081 8083
8082 fs_info = BTRFS_I(inode)->root->fs_info; 8084 fs_info = BTRFS_I(inode)->root->fs_info;
8083 sectorsize = fs_info->sectorsize; 8085 sectorsize = fs_info->sectorsize;
@@ -8183,11 +8185,12 @@ static blk_status_t __btrfs_subio_endio_read(struct inode *inode,
8183 int csum_pos; 8185 int csum_pos;
8184 bool uptodate = (err == 0); 8186 bool uptodate = (err == 0);
8185 int ret; 8187 int ret;
8188 blk_status_t status;
8186 8189
8187 fs_info = BTRFS_I(inode)->root->fs_info; 8190 fs_info = BTRFS_I(inode)->root->fs_info;
8188 sectorsize = fs_info->sectorsize; 8191 sectorsize = fs_info->sectorsize;
8189 8192
8190 err = 0; 8193 err = BLK_STS_OK;
8191 start = io_bio->logical; 8194 start = io_bio->logical;
8192 done.inode = inode; 8195 done.inode = inode;
8193 io_bio->bio.bi_iter = io_bio->iter; 8196 io_bio->bio.bi_iter = io_bio->iter;
@@ -8209,12 +8212,12 @@ try_again:
8209 done.start = start; 8212 done.start = start;
8210 init_completion(&done.done); 8213 init_completion(&done.done);
8211 8214
8212 ret = dio_read_error(inode, &io_bio->bio, bvec.bv_page, 8215 status = dio_read_error(inode, &io_bio->bio, bvec.bv_page,
8213 pgoff, start, start + sectorsize - 1, 8216 pgoff, start, start + sectorsize - 1,
8214 io_bio->mirror_num, 8217 io_bio->mirror_num, btrfs_retry_endio,
8215 btrfs_retry_endio, &done); 8218 &done);
8216 if (ret) { 8219 if (status) {
8217 err = errno_to_blk_status(ret); 8220 err = status;
8218 goto next; 8221 goto next;
8219 } 8222 }
8220 8223
@@ -8250,7 +8253,7 @@ static blk_status_t btrfs_subio_endio_read(struct inode *inode,
8250 if (unlikely(err)) 8253 if (unlikely(err))
8251 return __btrfs_correct_data_nocsum(inode, io_bio); 8254 return __btrfs_correct_data_nocsum(inode, io_bio);
8252 else 8255 else
8253 return 0; 8256 return BLK_STS_OK;
8254 } else { 8257 } else {
8255 return __btrfs_subio_endio_read(inode, io_bio, err); 8258 return __btrfs_subio_endio_read(inode, io_bio, err);
8256 } 8259 }
@@ -8423,9 +8426,9 @@ static inline blk_status_t btrfs_lookup_and_bind_dio_csum(struct inode *inode,
8423 return 0; 8426 return 0;
8424} 8427}
8425 8428
8426static inline int __btrfs_submit_dio_bio(struct bio *bio, struct inode *inode, 8429static inline blk_status_t
8427 u64 file_offset, int skip_sum, 8430__btrfs_submit_dio_bio(struct bio *bio, struct inode *inode, u64 file_offset,
8428 int async_submit) 8431 int skip_sum, int async_submit)
8429{ 8432{
8430 struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb); 8433 struct btrfs_fs_info *fs_info = btrfs_sb(inode->i_sb);
8431 struct btrfs_dio_private *dip = bio->bi_private; 8434 struct btrfs_dio_private *dip = bio->bi_private;
@@ -8488,6 +8491,7 @@ static int btrfs_submit_direct_hook(struct btrfs_dio_private *dip,
8488 int clone_offset = 0; 8491 int clone_offset = 0;
8489 int clone_len; 8492 int clone_len;
8490 int ret; 8493 int ret;
8494 blk_status_t status;
8491 8495
8492 map_length = orig_bio->bi_iter.bi_size; 8496 map_length = orig_bio->bi_iter.bi_size;
8493 submit_len = map_length; 8497 submit_len = map_length;
@@ -8537,9 +8541,9 @@ static int btrfs_submit_direct_hook(struct btrfs_dio_private *dip,
8537 */ 8541 */
8538 atomic_inc(&dip->pending_bios); 8542 atomic_inc(&dip->pending_bios);
8539 8543
8540 ret = __btrfs_submit_dio_bio(bio, inode, file_offset, skip_sum, 8544 status = __btrfs_submit_dio_bio(bio, inode, file_offset, skip_sum,
8541 async_submit); 8545 async_submit);
8542 if (ret) { 8546 if (status) {
8543 bio_put(bio); 8547 bio_put(bio);
8544 atomic_dec(&dip->pending_bios); 8548 atomic_dec(&dip->pending_bios);
8545 goto out_err; 8549 goto out_err;
@@ -8557,9 +8561,9 @@ static int btrfs_submit_direct_hook(struct btrfs_dio_private *dip,
8557 } while (submit_len > 0); 8561 } while (submit_len > 0);
8558 8562
8559submit: 8563submit:
8560 ret = __btrfs_submit_dio_bio(bio, inode, file_offset, skip_sum, 8564 status = __btrfs_submit_dio_bio(bio, inode, file_offset, skip_sum,
8561 async_submit); 8565 async_submit);
8562 if (!ret) 8566 if (!status)
8563 return 0; 8567 return 0;
8564 8568
8565 bio_put(bio); 8569 bio_put(bio);
diff --git a/fs/btrfs/raid56.c b/fs/btrfs/raid56.c
index 208638384cd2..2cf6ba40f7c4 100644
--- a/fs/btrfs/raid56.c
+++ b/fs/btrfs/raid56.c
@@ -905,7 +905,7 @@ static void raid_write_end_io(struct bio *bio)
905 if (!atomic_dec_and_test(&rbio->stripes_pending)) 905 if (!atomic_dec_and_test(&rbio->stripes_pending))
906 return; 906 return;
907 907
908 err = 0; 908 err = BLK_STS_OK;
909 909
910 /* OK, we have read all the stripes we need to. */ 910 /* OK, we have read all the stripes we need to. */
911 max_errors = (rbio->operation == BTRFS_RBIO_PARITY_SCRUB) ? 911 max_errors = (rbio->operation == BTRFS_RBIO_PARITY_SCRUB) ?
@@ -1324,7 +1324,7 @@ write_data:
1324 return; 1324 return;
1325 1325
1326cleanup: 1326cleanup:
1327 rbio_orig_end_io(rbio, -EIO); 1327 rbio_orig_end_io(rbio, BLK_STS_IOERR);
1328} 1328}
1329 1329
1330/* 1330/*
@@ -1475,7 +1475,7 @@ static void raid_rmw_end_io(struct bio *bio)
1475 1475
1476cleanup: 1476cleanup:
1477 1477
1478 rbio_orig_end_io(rbio, -EIO); 1478 rbio_orig_end_io(rbio, BLK_STS_IOERR);
1479} 1479}
1480 1480
1481static void async_rmw_stripe(struct btrfs_raid_bio *rbio) 1481static void async_rmw_stripe(struct btrfs_raid_bio *rbio)
@@ -1579,7 +1579,7 @@ static int raid56_rmw_stripe(struct btrfs_raid_bio *rbio)
1579 return 0; 1579 return 0;
1580 1580
1581cleanup: 1581cleanup:
1582 rbio_orig_end_io(rbio, -EIO); 1582 rbio_orig_end_io(rbio, BLK_STS_IOERR);
1583 return -EIO; 1583 return -EIO;
1584 1584
1585finish: 1585finish:
@@ -1795,12 +1795,12 @@ static void __raid_recover_end_io(struct btrfs_raid_bio *rbio)
1795 void **pointers; 1795 void **pointers;
1796 int faila = -1, failb = -1; 1796 int faila = -1, failb = -1;
1797 struct page *page; 1797 struct page *page;
1798 int err; 1798 blk_status_t err;
1799 int i; 1799 int i;
1800 1800
1801 pointers = kcalloc(rbio->real_stripes, sizeof(void *), GFP_NOFS); 1801 pointers = kcalloc(rbio->real_stripes, sizeof(void *), GFP_NOFS);
1802 if (!pointers) { 1802 if (!pointers) {
1803 err = -ENOMEM; 1803 err = BLK_STS_RESOURCE;
1804 goto cleanup_io; 1804 goto cleanup_io;
1805 } 1805 }
1806 1806
@@ -1856,7 +1856,7 @@ static void __raid_recover_end_io(struct btrfs_raid_bio *rbio)
1856 * a bad data or Q stripe. 1856 * a bad data or Q stripe.
1857 * TODO, we should redo the xor here. 1857 * TODO, we should redo the xor here.
1858 */ 1858 */
1859 err = -EIO; 1859 err = BLK_STS_IOERR;
1860 goto cleanup; 1860 goto cleanup;
1861 } 1861 }
1862 /* 1862 /*
@@ -1882,7 +1882,7 @@ static void __raid_recover_end_io(struct btrfs_raid_bio *rbio)
1882 if (rbio->bbio->raid_map[failb] == RAID6_Q_STRIPE) { 1882 if (rbio->bbio->raid_map[failb] == RAID6_Q_STRIPE) {
1883 if (rbio->bbio->raid_map[faila] == 1883 if (rbio->bbio->raid_map[faila] ==
1884 RAID5_P_STRIPE) { 1884 RAID5_P_STRIPE) {
1885 err = -EIO; 1885 err = BLK_STS_IOERR;
1886 goto cleanup; 1886 goto cleanup;
1887 } 1887 }
1888 /* 1888 /*
@@ -1954,13 +1954,13 @@ pstripe:
1954 } 1954 }
1955 } 1955 }
1956 1956
1957 err = 0; 1957 err = BLK_STS_OK;
1958cleanup: 1958cleanup:
1959 kfree(pointers); 1959 kfree(pointers);
1960 1960
1961cleanup_io: 1961cleanup_io:
1962 if (rbio->operation == BTRFS_RBIO_READ_REBUILD) { 1962 if (rbio->operation == BTRFS_RBIO_READ_REBUILD) {
1963 if (err == 0) 1963 if (err == BLK_STS_OK)
1964 cache_rbio_pages(rbio); 1964 cache_rbio_pages(rbio);
1965 else 1965 else
1966 clear_bit(RBIO_CACHE_READY_BIT, &rbio->flags); 1966 clear_bit(RBIO_CACHE_READY_BIT, &rbio->flags);
@@ -1968,7 +1968,7 @@ cleanup_io:
1968 rbio_orig_end_io(rbio, err); 1968 rbio_orig_end_io(rbio, err);
1969 } else if (rbio->operation == BTRFS_RBIO_REBUILD_MISSING) { 1969 } else if (rbio->operation == BTRFS_RBIO_REBUILD_MISSING) {
1970 rbio_orig_end_io(rbio, err); 1970 rbio_orig_end_io(rbio, err);
1971 } else if (err == 0) { 1971 } else if (err == BLK_STS_OK) {
1972 rbio->faila = -1; 1972 rbio->faila = -1;
1973 rbio->failb = -1; 1973 rbio->failb = -1;
1974 1974
@@ -2005,7 +2005,7 @@ static void raid_recover_end_io(struct bio *bio)
2005 return; 2005 return;
2006 2006
2007 if (atomic_read(&rbio->error) > rbio->bbio->max_errors) 2007 if (atomic_read(&rbio->error) > rbio->bbio->max_errors)
2008 rbio_orig_end_io(rbio, -EIO); 2008 rbio_orig_end_io(rbio, BLK_STS_IOERR);
2009 else 2009 else
2010 __raid_recover_end_io(rbio); 2010 __raid_recover_end_io(rbio);
2011} 2011}
@@ -2104,7 +2104,7 @@ out:
2104cleanup: 2104cleanup:
2105 if (rbio->operation == BTRFS_RBIO_READ_REBUILD || 2105 if (rbio->operation == BTRFS_RBIO_READ_REBUILD ||
2106 rbio->operation == BTRFS_RBIO_REBUILD_MISSING) 2106 rbio->operation == BTRFS_RBIO_REBUILD_MISSING)
2107 rbio_orig_end_io(rbio, -EIO); 2107 rbio_orig_end_io(rbio, BLK_STS_IOERR);
2108 return -EIO; 2108 return -EIO;
2109} 2109}
2110 2110
@@ -2431,7 +2431,7 @@ submit_write:
2431 nr_data = bio_list_size(&bio_list); 2431 nr_data = bio_list_size(&bio_list);
2432 if (!nr_data) { 2432 if (!nr_data) {
2433 /* Every parity is right */ 2433 /* Every parity is right */
2434 rbio_orig_end_io(rbio, 0); 2434 rbio_orig_end_io(rbio, BLK_STS_OK);
2435 return; 2435 return;
2436 } 2436 }
2437 2437
@@ -2451,7 +2451,7 @@ submit_write:
2451 return; 2451 return;
2452 2452
2453cleanup: 2453cleanup:
2454 rbio_orig_end_io(rbio, -EIO); 2454 rbio_orig_end_io(rbio, BLK_STS_IOERR);
2455} 2455}
2456 2456
2457static inline int is_data_stripe(struct btrfs_raid_bio *rbio, int stripe) 2457static inline int is_data_stripe(struct btrfs_raid_bio *rbio, int stripe)
@@ -2519,7 +2519,7 @@ static void validate_rbio_for_parity_scrub(struct btrfs_raid_bio *rbio)
2519 return; 2519 return;
2520 2520
2521cleanup: 2521cleanup:
2522 rbio_orig_end_io(rbio, -EIO); 2522 rbio_orig_end_io(rbio, BLK_STS_IOERR);
2523} 2523}
2524 2524
2525/* 2525/*
@@ -2633,7 +2633,7 @@ static void raid56_parity_scrub_stripe(struct btrfs_raid_bio *rbio)
2633 return; 2633 return;
2634 2634
2635cleanup: 2635cleanup:
2636 rbio_orig_end_io(rbio, -EIO); 2636 rbio_orig_end_io(rbio, BLK_STS_IOERR);
2637 return; 2637 return;
2638 2638
2639finish: 2639finish:
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c
index f20ef211a73d..3a11ae63676e 100644
--- a/fs/btrfs/tree-log.c
+++ b/fs/btrfs/tree-log.c
@@ -2153,8 +2153,7 @@ process_leaf:
2153 u32 this_len = sizeof(*di) + name_len + data_len; 2153 u32 this_len = sizeof(*di) + name_len + data_len;
2154 char *name; 2154 char *name;
2155 2155
2156 ret = verify_dir_item(fs_info, path->nodes[0], 2156 ret = verify_dir_item(fs_info, path->nodes[0], i, di);
2157 path->slots[0], di);
2158 if (ret) { 2157 if (ret) {
2159 ret = -EIO; 2158 ret = -EIO;
2160 goto out; 2159 goto out;
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index 5eb7217738ed..bd679bc7a1a9 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -2702,7 +2702,7 @@ int btrfs_grow_device(struct btrfs_trans_handle *trans,
2702 2702
2703 mutex_lock(&fs_info->chunk_mutex); 2703 mutex_lock(&fs_info->chunk_mutex);
2704 old_total = btrfs_super_total_bytes(super_copy); 2704 old_total = btrfs_super_total_bytes(super_copy);
2705 diff = new_size - device->total_bytes; 2705 diff = round_down(new_size - device->total_bytes, fs_info->sectorsize);
2706 2706
2707 if (new_size <= device->total_bytes || 2707 if (new_size <= device->total_bytes ||
2708 device->is_tgtdev_for_dev_replace) { 2708 device->is_tgtdev_for_dev_replace) {
@@ -4406,7 +4406,7 @@ int btrfs_shrink_device(struct btrfs_device *device, u64 new_size)
4406 u64 diff; 4406 u64 diff;
4407 4407
4408 new_size = round_down(new_size, fs_info->sectorsize); 4408 new_size = round_down(new_size, fs_info->sectorsize);
4409 diff = old_size - new_size; 4409 diff = round_down(old_size - new_size, fs_info->sectorsize);
4410 4410
4411 if (device->is_tgtdev_for_dev_replace) 4411 if (device->is_tgtdev_for_dev_replace)
4412 return -EINVAL; 4412 return -EINVAL;
@@ -6212,8 +6212,8 @@ static void bbio_error(struct btrfs_bio *bbio, struct bio *bio, u64 logical)
6212 } 6212 }
6213} 6213}
6214 6214
6215int btrfs_map_bio(struct btrfs_fs_info *fs_info, struct bio *bio, 6215blk_status_t btrfs_map_bio(struct btrfs_fs_info *fs_info, struct bio *bio,
6216 int mirror_num, int async_submit) 6216 int mirror_num, int async_submit)
6217{ 6217{
6218 struct btrfs_device *dev; 6218 struct btrfs_device *dev;
6219 struct bio *first_bio = bio; 6219 struct bio *first_bio = bio;
@@ -6233,7 +6233,7 @@ int btrfs_map_bio(struct btrfs_fs_info *fs_info, struct bio *bio,
6233 &map_length, &bbio, mirror_num, 1); 6233 &map_length, &bbio, mirror_num, 1);
6234 if (ret) { 6234 if (ret) {
6235 btrfs_bio_counter_dec(fs_info); 6235 btrfs_bio_counter_dec(fs_info);
6236 return ret; 6236 return errno_to_blk_status(ret);
6237 } 6237 }
6238 6238
6239 total_devs = bbio->num_stripes; 6239 total_devs = bbio->num_stripes;
@@ -6256,7 +6256,7 @@ int btrfs_map_bio(struct btrfs_fs_info *fs_info, struct bio *bio,
6256 } 6256 }
6257 6257
6258 btrfs_bio_counter_dec(fs_info); 6258 btrfs_bio_counter_dec(fs_info);
6259 return ret; 6259 return errno_to_blk_status(ret);
6260 } 6260 }
6261 6261
6262 if (map_length < length) { 6262 if (map_length < length) {
@@ -6283,7 +6283,7 @@ int btrfs_map_bio(struct btrfs_fs_info *fs_info, struct bio *bio,
6283 dev_nr, async_submit); 6283 dev_nr, async_submit);
6284 } 6284 }
6285 btrfs_bio_counter_dec(fs_info); 6285 btrfs_bio_counter_dec(fs_info);
6286 return 0; 6286 return BLK_STS_OK;
6287} 6287}
6288 6288
6289struct btrfs_device *btrfs_find_device(struct btrfs_fs_info *fs_info, u64 devid, 6289struct btrfs_device *btrfs_find_device(struct btrfs_fs_info *fs_info, u64 devid,
diff --git a/fs/btrfs/volumes.h b/fs/btrfs/volumes.h
index 6f45fd60d15a..93277fc60930 100644
--- a/fs/btrfs/volumes.h
+++ b/fs/btrfs/volumes.h
@@ -74,7 +74,7 @@ struct btrfs_device {
74 int missing; 74 int missing;
75 int can_discard; 75 int can_discard;
76 int is_tgtdev_for_dev_replace; 76 int is_tgtdev_for_dev_replace;
77 int last_flush_error; 77 blk_status_t last_flush_error;
78 int flush_bio_sent; 78 int flush_bio_sent;
79 79
80#ifdef __BTRFS_NEED_DEVICE_DATA_ORDERED 80#ifdef __BTRFS_NEED_DEVICE_DATA_ORDERED
@@ -416,8 +416,8 @@ int btrfs_alloc_chunk(struct btrfs_trans_handle *trans,
416 struct btrfs_fs_info *fs_info, u64 type); 416 struct btrfs_fs_info *fs_info, u64 type);
417void btrfs_mapping_init(struct btrfs_mapping_tree *tree); 417void btrfs_mapping_init(struct btrfs_mapping_tree *tree);
418void btrfs_mapping_tree_free(struct btrfs_mapping_tree *tree); 418void btrfs_mapping_tree_free(struct btrfs_mapping_tree *tree);
419int btrfs_map_bio(struct btrfs_fs_info *fs_info, struct bio *bio, 419blk_status_t btrfs_map_bio(struct btrfs_fs_info *fs_info, struct bio *bio,
420 int mirror_num, int async_submit); 420 int mirror_num, int async_submit);
421int btrfs_open_devices(struct btrfs_fs_devices *fs_devices, 421int btrfs_open_devices(struct btrfs_fs_devices *fs_devices,
422 fmode_t flags, void *holder); 422 fmode_t flags, void *holder);
423int btrfs_scan_one_device(const char *path, fmode_t flags, void *holder, 423int btrfs_scan_one_device(const char *path, fmode_t flags, void *holder,
diff --git a/fs/ceph/dir.c b/fs/ceph/dir.c
index e071d23f6148..ef7240ace576 100644
--- a/fs/ceph/dir.c
+++ b/fs/ceph/dir.c
@@ -271,6 +271,11 @@ out:
271 if (ret < 0) 271 if (ret < 0)
272 err = ret; 272 err = ret;
273 dput(last); 273 dput(last);
274 /* last_name no longer match cache index */
275 if (fi->readdir_cache_idx >= 0) {
276 fi->readdir_cache_idx = -1;
277 fi->dir_release_count = 0;
278 }
274 } 279 }
275 return err; 280 return err;
276} 281}
diff --git a/fs/devpts/inode.c b/fs/devpts/inode.c
index 108df2e3602c..7eae33ffa3fc 100644
--- a/fs/devpts/inode.c
+++ b/fs/devpts/inode.c
@@ -133,6 +133,50 @@ static inline struct pts_fs_info *DEVPTS_SB(struct super_block *sb)
133 return sb->s_fs_info; 133 return sb->s_fs_info;
134} 134}
135 135
136static int devpts_ptmx_path(struct path *path)
137{
138 struct super_block *sb;
139 int err;
140
141 /* Has the devpts filesystem already been found? */
142 if (path->mnt->mnt_sb->s_magic == DEVPTS_SUPER_MAGIC)
143 return 0;
144
145 /* Is a devpts filesystem at "pts" in the same directory? */
146 err = path_pts(path);
147 if (err)
148 return err;
149
150 /* Is the path the root of a devpts filesystem? */
151 sb = path->mnt->mnt_sb;
152 if ((sb->s_magic != DEVPTS_SUPER_MAGIC) ||
153 (path->mnt->mnt_root != sb->s_root))
154 return -ENODEV;
155
156 return 0;
157}
158
159struct vfsmount *devpts_mntget(struct file *filp, struct pts_fs_info *fsi)
160{
161 struct path path;
162 int err;
163
164 path = filp->f_path;
165 path_get(&path);
166
167 err = devpts_ptmx_path(&path);
168 dput(path.dentry);
169 if (err) {
170 mntput(path.mnt);
171 path.mnt = ERR_PTR(err);
172 }
173 if (DEVPTS_SB(path.mnt->mnt_sb) != fsi) {
174 mntput(path.mnt);
175 path.mnt = ERR_PTR(-ENODEV);
176 }
177 return path.mnt;
178}
179
136struct pts_fs_info *devpts_acquire(struct file *filp) 180struct pts_fs_info *devpts_acquire(struct file *filp)
137{ 181{
138 struct pts_fs_info *result; 182 struct pts_fs_info *result;
@@ -143,27 +187,16 @@ struct pts_fs_info *devpts_acquire(struct file *filp)
143 path = filp->f_path; 187 path = filp->f_path;
144 path_get(&path); 188 path_get(&path);
145 189
146 /* Has the devpts filesystem already been found? */ 190 err = devpts_ptmx_path(&path);
147 sb = path.mnt->mnt_sb; 191 if (err) {
148 if (sb->s_magic != DEVPTS_SUPER_MAGIC) { 192 result = ERR_PTR(err);
149 /* Is a devpts filesystem at "pts" in the same directory? */ 193 goto out;
150 err = path_pts(&path);
151 if (err) {
152 result = ERR_PTR(err);
153 goto out;
154 }
155
156 /* Is the path the root of a devpts filesystem? */
157 result = ERR_PTR(-ENODEV);
158 sb = path.mnt->mnt_sb;
159 if ((sb->s_magic != DEVPTS_SUPER_MAGIC) ||
160 (path.mnt->mnt_root != sb->s_root))
161 goto out;
162 } 194 }
163 195
164 /* 196 /*
165 * pty code needs to hold extra references in case of last /dev/tty close 197 * pty code needs to hold extra references in case of last /dev/tty close
166 */ 198 */
199 sb = path.mnt->mnt_sb;
167 atomic_inc(&sb->s_active); 200 atomic_inc(&sb->s_active);
168 result = DEVPTS_SB(sb); 201 result = DEVPTS_SB(sb);
169 202
diff --git a/fs/ext2/acl.c b/fs/ext2/acl.c
index 79dafa71effd..51f0aea70cb4 100644
--- a/fs/ext2/acl.c
+++ b/fs/ext2/acl.c
@@ -175,11 +175,8 @@ ext2_get_acl(struct inode *inode, int type)
175 return acl; 175 return acl;
176} 176}
177 177
178/* 178static int
179 * inode->i_mutex: down 179__ext2_set_acl(struct inode *inode, struct posix_acl *acl, int type)
180 */
181int
182ext2_set_acl(struct inode *inode, struct posix_acl *acl, int type)
183{ 180{
184 int name_index; 181 int name_index;
185 void *value = NULL; 182 void *value = NULL;
@@ -189,13 +186,6 @@ ext2_set_acl(struct inode *inode, struct posix_acl *acl, int type)
189 switch(type) { 186 switch(type) {
190 case ACL_TYPE_ACCESS: 187 case ACL_TYPE_ACCESS:
191 name_index = EXT2_XATTR_INDEX_POSIX_ACL_ACCESS; 188 name_index = EXT2_XATTR_INDEX_POSIX_ACL_ACCESS;
192 if (acl) {
193 error = posix_acl_update_mode(inode, &inode->i_mode, &acl);
194 if (error)
195 return error;
196 inode->i_ctime = current_time(inode);
197 mark_inode_dirty(inode);
198 }
199 break; 189 break;
200 190
201 case ACL_TYPE_DEFAULT: 191 case ACL_TYPE_DEFAULT:
@@ -222,6 +212,31 @@ ext2_set_acl(struct inode *inode, struct posix_acl *acl, int type)
222} 212}
223 213
224/* 214/*
215 * inode->i_mutex: down
216 */
217int
218ext2_set_acl(struct inode *inode, struct posix_acl *acl, int type)
219{
220 int error;
221 int update_mode = 0;
222 umode_t mode = inode->i_mode;
223
224 if (type == ACL_TYPE_ACCESS && acl) {
225 error = posix_acl_update_mode(inode, &mode, &acl);
226 if (error)
227 return error;
228 update_mode = 1;
229 }
230 error = __ext2_set_acl(inode, acl, type);
231 if (!error && update_mode) {
232 inode->i_mode = mode;
233 inode->i_ctime = current_time(inode);
234 mark_inode_dirty(inode);
235 }
236 return error;
237}
238
239/*
225 * Initialize the ACLs of a new inode. Called from ext2_new_inode. 240 * Initialize the ACLs of a new inode. Called from ext2_new_inode.
226 * 241 *
227 * dir->i_mutex: down 242 * dir->i_mutex: down
@@ -238,12 +253,12 @@ ext2_init_acl(struct inode *inode, struct inode *dir)
238 return error; 253 return error;
239 254
240 if (default_acl) { 255 if (default_acl) {
241 error = ext2_set_acl(inode, default_acl, ACL_TYPE_DEFAULT); 256 error = __ext2_set_acl(inode, default_acl, ACL_TYPE_DEFAULT);
242 posix_acl_release(default_acl); 257 posix_acl_release(default_acl);
243 } 258 }
244 if (acl) { 259 if (acl) {
245 if (!error) 260 if (!error)
246 error = ext2_set_acl(inode, acl, ACL_TYPE_ACCESS); 261 error = __ext2_set_acl(inode, acl, ACL_TYPE_ACCESS);
247 posix_acl_release(acl); 262 posix_acl_release(acl);
248 } 263 }
249 return error; 264 return error;
diff --git a/fs/ext4/acl.c b/fs/ext4/acl.c
index 09441ae07a5b..46ff2229ff5e 100644
--- a/fs/ext4/acl.c
+++ b/fs/ext4/acl.c
@@ -193,13 +193,6 @@ __ext4_set_acl(handle_t *handle, struct inode *inode, int type,
193 switch (type) { 193 switch (type) {
194 case ACL_TYPE_ACCESS: 194 case ACL_TYPE_ACCESS:
195 name_index = EXT4_XATTR_INDEX_POSIX_ACL_ACCESS; 195 name_index = EXT4_XATTR_INDEX_POSIX_ACL_ACCESS;
196 if (acl) {
197 error = posix_acl_update_mode(inode, &inode->i_mode, &acl);
198 if (error)
199 return error;
200 inode->i_ctime = current_time(inode);
201 ext4_mark_inode_dirty(handle, inode);
202 }
203 break; 196 break;
204 197
205 case ACL_TYPE_DEFAULT: 198 case ACL_TYPE_DEFAULT:
@@ -221,8 +214,9 @@ __ext4_set_acl(handle_t *handle, struct inode *inode, int type,
221 value, size, xattr_flags); 214 value, size, xattr_flags);
222 215
223 kfree(value); 216 kfree(value);
224 if (!error) 217 if (!error) {
225 set_cached_acl(inode, type, acl); 218 set_cached_acl(inode, type, acl);
219 }
226 220
227 return error; 221 return error;
228} 222}
@@ -233,6 +227,8 @@ ext4_set_acl(struct inode *inode, struct posix_acl *acl, int type)
233 handle_t *handle; 227 handle_t *handle;
234 int error, credits, retries = 0; 228 int error, credits, retries = 0;
235 size_t acl_size = acl ? ext4_acl_size(acl->a_count) : 0; 229 size_t acl_size = acl ? ext4_acl_size(acl->a_count) : 0;
230 umode_t mode = inode->i_mode;
231 int update_mode = 0;
236 232
237 error = dquot_initialize(inode); 233 error = dquot_initialize(inode);
238 if (error) 234 if (error)
@@ -247,7 +243,20 @@ retry:
247 if (IS_ERR(handle)) 243 if (IS_ERR(handle))
248 return PTR_ERR(handle); 244 return PTR_ERR(handle);
249 245
246 if ((type == ACL_TYPE_ACCESS) && acl) {
247 error = posix_acl_update_mode(inode, &mode, &acl);
248 if (error)
249 goto out_stop;
250 update_mode = 1;
251 }
252
250 error = __ext4_set_acl(handle, inode, type, acl, 0 /* xattr_flags */); 253 error = __ext4_set_acl(handle, inode, type, acl, 0 /* xattr_flags */);
254 if (!error && update_mode) {
255 inode->i_mode = mode;
256 inode->i_ctime = current_time(inode);
257 ext4_mark_inode_dirty(handle, inode);
258 }
259out_stop:
251 ext4_journal_stop(handle); 260 ext4_journal_stop(handle);
252 if (error == -ENOSPC && ext4_should_retry_alloc(inode->i_sb, &retries)) 261 if (error == -ENOSPC && ext4_should_retry_alloc(inode->i_sb, &retries))
253 goto retry; 262 goto retry;
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index 9ebde0cd632e..a2bb7d2870e4 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -961,7 +961,7 @@ struct ext4_inode_info {
961 /* 961 /*
962 * i_block_group is the number of the block group which contains 962 * i_block_group is the number of the block group which contains
963 * this file's inode. Constant across the lifetime of the inode, 963 * this file's inode. Constant across the lifetime of the inode,
964 * it is ued for making block allocation decisions - we try to 964 * it is used for making block allocation decisions - we try to
965 * place a file's data blocks near its inode block, and new inodes 965 * place a file's data blocks near its inode block, and new inodes
966 * near to their parent directory's inode. 966 * near to their parent directory's inode.
967 */ 967 */
@@ -1049,10 +1049,8 @@ struct ext4_inode_info {
1049 ext4_group_t i_last_alloc_group; 1049 ext4_group_t i_last_alloc_group;
1050 1050
1051 /* allocation reservation info for delalloc */ 1051 /* allocation reservation info for delalloc */
1052 /* In case of bigalloc, these refer to clusters rather than blocks */ 1052 /* In case of bigalloc, this refer to clusters rather than blocks */
1053 unsigned int i_reserved_data_blocks; 1053 unsigned int i_reserved_data_blocks;
1054 unsigned int i_reserved_meta_blocks;
1055 unsigned int i_allocated_meta_blocks;
1056 ext4_lblk_t i_da_metadata_calc_last_lblock; 1054 ext4_lblk_t i_da_metadata_calc_last_lblock;
1057 int i_da_metadata_calc_len; 1055 int i_da_metadata_calc_len;
1058 1056
@@ -2022,7 +2020,8 @@ static inline __le16 ext4_rec_len_to_disk(unsigned len, unsigned blocksize)
2022 2020
2023#define is_dx(dir) (ext4_has_feature_dir_index((dir)->i_sb) && \ 2021#define is_dx(dir) (ext4_has_feature_dir_index((dir)->i_sb) && \
2024 ext4_test_inode_flag((dir), EXT4_INODE_INDEX)) 2022 ext4_test_inode_flag((dir), EXT4_INODE_INDEX))
2025#define EXT4_DIR_LINK_MAX(dir) (!is_dx(dir) && (dir)->i_nlink >= EXT4_LINK_MAX) 2023#define EXT4_DIR_LINK_MAX(dir) unlikely((dir)->i_nlink >= EXT4_LINK_MAX && \
2024 !(ext4_has_feature_dir_nlink((dir)->i_sb) && is_dx(dir)))
2026#define EXT4_DIR_LINK_EMPTY(dir) ((dir)->i_nlink == 2 || (dir)->i_nlink == 1) 2025#define EXT4_DIR_LINK_EMPTY(dir) ((dir)->i_nlink == 2 || (dir)->i_nlink == 1)
2027 2026
2028/* Legal values for the dx_root hash_version field: */ 2027/* Legal values for the dx_root hash_version field: */
@@ -2462,6 +2461,8 @@ extern void ext4_process_freed_data(struct super_block *sb, tid_t commit_tid);
2462int ext4_inode_is_fast_symlink(struct inode *inode); 2461int ext4_inode_is_fast_symlink(struct inode *inode);
2463struct buffer_head *ext4_getblk(handle_t *, struct inode *, ext4_lblk_t, int); 2462struct buffer_head *ext4_getblk(handle_t *, struct inode *, ext4_lblk_t, int);
2464struct buffer_head *ext4_bread(handle_t *, struct inode *, ext4_lblk_t, int); 2463struct buffer_head *ext4_bread(handle_t *, struct inode *, ext4_lblk_t, int);
2464int ext4_bread_batch(struct inode *inode, ext4_lblk_t block, int bh_count,
2465 bool wait, struct buffer_head **bhs);
2465int ext4_get_block_unwritten(struct inode *inode, sector_t iblock, 2466int ext4_get_block_unwritten(struct inode *inode, sector_t iblock,
2466 struct buffer_head *bh_result, int create); 2467 struct buffer_head *bh_result, int create);
2467int ext4_get_block(struct inode *inode, sector_t iblock, 2468int ext4_get_block(struct inode *inode, sector_t iblock,
@@ -3074,7 +3075,7 @@ extern int ext4_handle_dirty_dirent_node(handle_t *handle,
3074 struct inode *inode, 3075 struct inode *inode,
3075 struct buffer_head *bh); 3076 struct buffer_head *bh);
3076#define S_SHIFT 12 3077#define S_SHIFT 12
3077static const unsigned char ext4_type_by_mode[S_IFMT >> S_SHIFT] = { 3078static const unsigned char ext4_type_by_mode[(S_IFMT >> S_SHIFT) + 1] = {
3078 [S_IFREG >> S_SHIFT] = EXT4_FT_REG_FILE, 3079 [S_IFREG >> S_SHIFT] = EXT4_FT_REG_FILE,
3079 [S_IFDIR >> S_SHIFT] = EXT4_FT_DIR, 3080 [S_IFDIR >> S_SHIFT] = EXT4_FT_DIR,
3080 [S_IFCHR >> S_SHIFT] = EXT4_FT_CHRDEV, 3081 [S_IFCHR >> S_SHIFT] = EXT4_FT_CHRDEV,
diff --git a/fs/ext4/ext4_jbd2.h b/fs/ext4/ext4_jbd2.h
index dabad1bc8617..48143e32411c 100644
--- a/fs/ext4/ext4_jbd2.h
+++ b/fs/ext4/ext4_jbd2.h
@@ -227,6 +227,9 @@ int ext4_reserve_inode_write(handle_t *handle, struct inode *inode,
227 227
228int ext4_mark_inode_dirty(handle_t *handle, struct inode *inode); 228int ext4_mark_inode_dirty(handle_t *handle, struct inode *inode);
229 229
230int ext4_expand_extra_isize(struct inode *inode,
231 unsigned int new_extra_isize,
232 struct ext4_iloc *iloc);
230/* 233/*
231 * Wrapper functions with which ext4 calls into JBD. 234 * Wrapper functions with which ext4 calls into JBD.
232 */ 235 */
diff --git a/fs/ext4/extents.c b/fs/ext4/extents.c
index e0a8425ff74d..97f0fd06728d 100644
--- a/fs/ext4/extents.c
+++ b/fs/ext4/extents.c
@@ -4652,7 +4652,7 @@ retry:
4652 4652
4653static int ext4_alloc_file_blocks(struct file *file, ext4_lblk_t offset, 4653static int ext4_alloc_file_blocks(struct file *file, ext4_lblk_t offset,
4654 ext4_lblk_t len, loff_t new_size, 4654 ext4_lblk_t len, loff_t new_size,
4655 int flags, int mode) 4655 int flags)
4656{ 4656{
4657 struct inode *inode = file_inode(file); 4657 struct inode *inode = file_inode(file);
4658 handle_t *handle; 4658 handle_t *handle;
@@ -4815,7 +4815,7 @@ static long ext4_zero_range(struct file *file, loff_t offset,
4815 round_down(offset, 1 << blkbits) >> blkbits, 4815 round_down(offset, 1 << blkbits) >> blkbits,
4816 (round_up((offset + len), 1 << blkbits) - 4816 (round_up((offset + len), 1 << blkbits) -
4817 round_down(offset, 1 << blkbits)) >> blkbits, 4817 round_down(offset, 1 << blkbits)) >> blkbits,
4818 new_size, flags, mode); 4818 new_size, flags);
4819 if (ret) 4819 if (ret)
4820 goto out_dio; 4820 goto out_dio;
4821 4821
@@ -4841,7 +4841,7 @@ static long ext4_zero_range(struct file *file, loff_t offset,
4841 inode->i_mtime = inode->i_ctime = current_time(inode); 4841 inode->i_mtime = inode->i_ctime = current_time(inode);
4842 4842
4843 ret = ext4_alloc_file_blocks(file, lblk, max_blocks, new_size, 4843 ret = ext4_alloc_file_blocks(file, lblk, max_blocks, new_size,
4844 flags, mode); 4844 flags);
4845 up_write(&EXT4_I(inode)->i_mmap_sem); 4845 up_write(&EXT4_I(inode)->i_mmap_sem);
4846 if (ret) 4846 if (ret)
4847 goto out_dio; 4847 goto out_dio;
@@ -4976,8 +4976,7 @@ long ext4_fallocate(struct file *file, int mode, loff_t offset, loff_t len)
4976 ext4_inode_block_unlocked_dio(inode); 4976 ext4_inode_block_unlocked_dio(inode);
4977 inode_dio_wait(inode); 4977 inode_dio_wait(inode);
4978 4978
4979 ret = ext4_alloc_file_blocks(file, lblk, max_blocks, new_size, 4979 ret = ext4_alloc_file_blocks(file, lblk, max_blocks, new_size, flags);
4980 flags, mode);
4981 ext4_inode_resume_unlocked_dio(inode); 4980 ext4_inode_resume_unlocked_dio(inode);
4982 if (ret) 4981 if (ret)
4983 goto out; 4982 goto out;
@@ -5837,7 +5836,7 @@ ext4_swap_extents(handle_t *handle, struct inode *inode1,
5837 if (e1_blk > lblk1) 5836 if (e1_blk > lblk1)
5838 next1 = e1_blk; 5837 next1 = e1_blk;
5839 if (e2_blk > lblk2) 5838 if (e2_blk > lblk2)
5840 next2 = e1_blk; 5839 next2 = e2_blk;
5841 /* Do we have something to swap */ 5840 /* Do we have something to swap */
5842 if (next1 == EXT_MAX_BLOCKS || next2 == EXT_MAX_BLOCKS) 5841 if (next1 == EXT_MAX_BLOCKS || next2 == EXT_MAX_BLOCKS)
5843 goto finish; 5842 goto finish;
diff --git a/fs/ext4/file.c b/fs/ext4/file.c
index 58294c9a7e1d..0d7cf0cc9b87 100644
--- a/fs/ext4/file.c
+++ b/fs/ext4/file.c
@@ -537,6 +537,8 @@ static int ext4_find_unwritten_pgoff(struct inode *inode,
537 lastoff = page_offset(page); 537 lastoff = page_offset(page);
538 bh = head = page_buffers(page); 538 bh = head = page_buffers(page);
539 do { 539 do {
540 if (lastoff + bh->b_size <= startoff)
541 goto next;
540 if (buffer_uptodate(bh) || 542 if (buffer_uptodate(bh) ||
541 buffer_unwritten(bh)) { 543 buffer_unwritten(bh)) {
542 if (whence == SEEK_DATA) 544 if (whence == SEEK_DATA)
@@ -551,6 +553,7 @@ static int ext4_find_unwritten_pgoff(struct inode *inode,
551 unlock_page(page); 553 unlock_page(page);
552 goto out; 554 goto out;
553 } 555 }
556next:
554 lastoff += bh->b_size; 557 lastoff += bh->b_size;
555 bh = bh->b_this_page; 558 bh = bh->b_this_page;
556 } while (bh != head); 559 } while (bh != head);
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index 3c600f02673f..c774bdc22759 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -892,7 +892,7 @@ static int ext4_dio_get_block_unwritten_async(struct inode *inode,
892/* 892/*
893 * Get block function for non-AIO DIO writes when we create unwritten extent if 893 * Get block function for non-AIO DIO writes when we create unwritten extent if
894 * blocks are not allocated yet. The extent will be converted to written 894 * blocks are not allocated yet. The extent will be converted to written
895 * after IO is complete from ext4_ext_direct_IO() function. 895 * after IO is complete by ext4_direct_IO_write().
896 */ 896 */
897static int ext4_dio_get_block_unwritten_sync(struct inode *inode, 897static int ext4_dio_get_block_unwritten_sync(struct inode *inode,
898 sector_t iblock, struct buffer_head *bh_result, int create) 898 sector_t iblock, struct buffer_head *bh_result, int create)
@@ -907,7 +907,7 @@ static int ext4_dio_get_block_unwritten_sync(struct inode *inode,
907 907
908 /* 908 /*
909 * Mark inode as having pending DIO writes to unwritten extents. 909 * Mark inode as having pending DIO writes to unwritten extents.
910 * ext4_ext_direct_IO() checks this flag and converts extents to 910 * ext4_direct_IO_write() checks this flag and converts extents to
911 * written. 911 * written.
912 */ 912 */
913 if (!ret && buffer_unwritten(bh_result)) 913 if (!ret && buffer_unwritten(bh_result))
@@ -1015,6 +1015,50 @@ struct buffer_head *ext4_bread(handle_t *handle, struct inode *inode,
1015 return ERR_PTR(-EIO); 1015 return ERR_PTR(-EIO);
1016} 1016}
1017 1017
1018/* Read a contiguous batch of blocks. */
1019int ext4_bread_batch(struct inode *inode, ext4_lblk_t block, int bh_count,
1020 bool wait, struct buffer_head **bhs)
1021{
1022 int i, err;
1023
1024 for (i = 0; i < bh_count; i++) {
1025 bhs[i] = ext4_getblk(NULL, inode, block + i, 0 /* map_flags */);
1026 if (IS_ERR(bhs[i])) {
1027 err = PTR_ERR(bhs[i]);
1028 bh_count = i;
1029 goto out_brelse;
1030 }
1031 }
1032
1033 for (i = 0; i < bh_count; i++)
1034 /* Note that NULL bhs[i] is valid because of holes. */
1035 if (bhs[i] && !buffer_uptodate(bhs[i]))
1036 ll_rw_block(REQ_OP_READ, REQ_META | REQ_PRIO, 1,
1037 &bhs[i]);
1038
1039 if (!wait)
1040 return 0;
1041
1042 for (i = 0; i < bh_count; i++)
1043 if (bhs[i])
1044 wait_on_buffer(bhs[i]);
1045
1046 for (i = 0; i < bh_count; i++) {
1047 if (bhs[i] && !buffer_uptodate(bhs[i])) {
1048 err = -EIO;
1049 goto out_brelse;
1050 }
1051 }
1052 return 0;
1053
1054out_brelse:
1055 for (i = 0; i < bh_count; i++) {
1056 brelse(bhs[i]);
1057 bhs[i] = NULL;
1058 }
1059 return err;
1060}
1061
1018int ext4_walk_page_buffers(handle_t *handle, 1062int ext4_walk_page_buffers(handle_t *handle,
1019 struct buffer_head *head, 1063 struct buffer_head *head,
1020 unsigned from, 1064 unsigned from,
@@ -5658,22 +5702,16 @@ ext4_reserve_inode_write(handle_t *handle, struct inode *inode,
5658 return err; 5702 return err;
5659} 5703}
5660 5704
5661/* 5705static int __ext4_expand_extra_isize(struct inode *inode,
5662 * Expand an inode by new_extra_isize bytes. 5706 unsigned int new_extra_isize,
5663 * Returns 0 on success or negative error number on failure. 5707 struct ext4_iloc *iloc,
5664 */ 5708 handle_t *handle, int *no_expand)
5665static int ext4_expand_extra_isize(struct inode *inode,
5666 unsigned int new_extra_isize,
5667 struct ext4_iloc iloc,
5668 handle_t *handle)
5669{ 5709{
5670 struct ext4_inode *raw_inode; 5710 struct ext4_inode *raw_inode;
5671 struct ext4_xattr_ibody_header *header; 5711 struct ext4_xattr_ibody_header *header;
5712 int error;
5672 5713
5673 if (EXT4_I(inode)->i_extra_isize >= new_extra_isize) 5714 raw_inode = ext4_raw_inode(iloc);
5674 return 0;
5675
5676 raw_inode = ext4_raw_inode(&iloc);
5677 5715
5678 header = IHDR(inode, raw_inode); 5716 header = IHDR(inode, raw_inode);
5679 5717
@@ -5688,8 +5726,98 @@ static int ext4_expand_extra_isize(struct inode *inode,
5688 } 5726 }
5689 5727
5690 /* try to expand with EAs present */ 5728 /* try to expand with EAs present */
5691 return ext4_expand_extra_isize_ea(inode, new_extra_isize, 5729 error = ext4_expand_extra_isize_ea(inode, new_extra_isize,
5692 raw_inode, handle); 5730 raw_inode, handle);
5731 if (error) {
5732 /*
5733 * Inode size expansion failed; don't try again
5734 */
5735 *no_expand = 1;
5736 }
5737
5738 return error;
5739}
5740
5741/*
5742 * Expand an inode by new_extra_isize bytes.
5743 * Returns 0 on success or negative error number on failure.
5744 */
5745static int ext4_try_to_expand_extra_isize(struct inode *inode,
5746 unsigned int new_extra_isize,
5747 struct ext4_iloc iloc,
5748 handle_t *handle)
5749{
5750 int no_expand;
5751 int error;
5752
5753 if (ext4_test_inode_state(inode, EXT4_STATE_NO_EXPAND))
5754 return -EOVERFLOW;
5755
5756 /*
5757 * In nojournal mode, we can immediately attempt to expand
5758 * the inode. When journaled, we first need to obtain extra
5759 * buffer credits since we may write into the EA block
5760 * with this same handle. If journal_extend fails, then it will
5761 * only result in a minor loss of functionality for that inode.
5762 * If this is felt to be critical, then e2fsck should be run to
5763 * force a large enough s_min_extra_isize.
5764 */
5765 if (ext4_handle_valid(handle) &&
5766 jbd2_journal_extend(handle,
5767 EXT4_DATA_TRANS_BLOCKS(inode->i_sb)) != 0)
5768 return -ENOSPC;
5769
5770 if (ext4_write_trylock_xattr(inode, &no_expand) == 0)
5771 return -EBUSY;
5772
5773 error = __ext4_expand_extra_isize(inode, new_extra_isize, &iloc,
5774 handle, &no_expand);
5775 ext4_write_unlock_xattr(inode, &no_expand);
5776
5777 return error;
5778}
5779
5780int ext4_expand_extra_isize(struct inode *inode,
5781 unsigned int new_extra_isize,
5782 struct ext4_iloc *iloc)
5783{
5784 handle_t *handle;
5785 int no_expand;
5786 int error, rc;
5787
5788 if (ext4_test_inode_state(inode, EXT4_STATE_NO_EXPAND)) {
5789 brelse(iloc->bh);
5790 return -EOVERFLOW;
5791 }
5792
5793 handle = ext4_journal_start(inode, EXT4_HT_INODE,
5794 EXT4_DATA_TRANS_BLOCKS(inode->i_sb));
5795 if (IS_ERR(handle)) {
5796 error = PTR_ERR(handle);
5797 brelse(iloc->bh);
5798 return error;
5799 }
5800
5801 ext4_write_lock_xattr(inode, &no_expand);
5802
5803 BUFFER_TRACE(iloc.bh, "get_write_access");
5804 error = ext4_journal_get_write_access(handle, iloc->bh);
5805 if (error) {
5806 brelse(iloc->bh);
5807 goto out_stop;
5808 }
5809
5810 error = __ext4_expand_extra_isize(inode, new_extra_isize, iloc,
5811 handle, &no_expand);
5812
5813 rc = ext4_mark_iloc_dirty(handle, inode, iloc);
5814 if (!error)
5815 error = rc;
5816
5817 ext4_write_unlock_xattr(inode, &no_expand);
5818out_stop:
5819 ext4_journal_stop(handle);
5820 return error;
5693} 5821}
5694 5822
5695/* 5823/*
@@ -5709,44 +5837,18 @@ int ext4_mark_inode_dirty(handle_t *handle, struct inode *inode)
5709{ 5837{
5710 struct ext4_iloc iloc; 5838 struct ext4_iloc iloc;
5711 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb); 5839 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
5712 static unsigned int mnt_count; 5840 int err;
5713 int err, ret;
5714 5841
5715 might_sleep(); 5842 might_sleep();
5716 trace_ext4_mark_inode_dirty(inode, _RET_IP_); 5843 trace_ext4_mark_inode_dirty(inode, _RET_IP_);
5717 err = ext4_reserve_inode_write(handle, inode, &iloc); 5844 err = ext4_reserve_inode_write(handle, inode, &iloc);
5718 if (err) 5845 if (err)
5719 return err; 5846 return err;
5720 if (EXT4_I(inode)->i_extra_isize < sbi->s_want_extra_isize && 5847
5721 !ext4_test_inode_state(inode, EXT4_STATE_NO_EXPAND)) { 5848 if (EXT4_I(inode)->i_extra_isize < sbi->s_want_extra_isize)
5722 /* 5849 ext4_try_to_expand_extra_isize(inode, sbi->s_want_extra_isize,
5723 * In nojournal mode, we can immediately attempt to expand 5850 iloc, handle);
5724 * the inode. When journaled, we first need to obtain extra 5851
5725 * buffer credits since we may write into the EA block
5726 * with this same handle. If journal_extend fails, then it will
5727 * only result in a minor loss of functionality for that inode.
5728 * If this is felt to be critical, then e2fsck should be run to
5729 * force a large enough s_min_extra_isize.
5730 */
5731 if (!ext4_handle_valid(handle) ||
5732 jbd2_journal_extend(handle,
5733 EXT4_DATA_TRANS_BLOCKS(inode->i_sb)) == 0) {
5734 ret = ext4_expand_extra_isize(inode,
5735 sbi->s_want_extra_isize,
5736 iloc, handle);
5737 if (ret) {
5738 if (mnt_count !=
5739 le16_to_cpu(sbi->s_es->s_mnt_count)) {
5740 ext4_warning(inode->i_sb,
5741 "Unable to expand inode %lu. Delete"
5742 " some EAs or run e2fsck.",
5743 inode->i_ino);
5744 mnt_count =
5745 le16_to_cpu(sbi->s_es->s_mnt_count);
5746 }
5747 }
5748 }
5749 }
5750 return ext4_mark_iloc_dirty(handle, inode, &iloc); 5852 return ext4_mark_iloc_dirty(handle, inode, &iloc);
5751} 5853}
5752 5854
diff --git a/fs/ext4/ioctl.c b/fs/ext4/ioctl.c
index 42b3a73143cf..afb66d4ab5cf 100644
--- a/fs/ext4/ioctl.c
+++ b/fs/ext4/ioctl.c
@@ -64,18 +64,16 @@ static void swap_inode_data(struct inode *inode1, struct inode *inode2)
64 ei1 = EXT4_I(inode1); 64 ei1 = EXT4_I(inode1);
65 ei2 = EXT4_I(inode2); 65 ei2 = EXT4_I(inode2);
66 66
67 memswap(&inode1->i_flags, &inode2->i_flags, sizeof(inode1->i_flags)); 67 swap(inode1->i_flags, inode2->i_flags);
68 memswap(&inode1->i_version, &inode2->i_version, 68 swap(inode1->i_version, inode2->i_version);
69 sizeof(inode1->i_version)); 69 swap(inode1->i_blocks, inode2->i_blocks);
70 memswap(&inode1->i_blocks, &inode2->i_blocks, 70 swap(inode1->i_bytes, inode2->i_bytes);
71 sizeof(inode1->i_blocks)); 71 swap(inode1->i_atime, inode2->i_atime);
72 memswap(&inode1->i_bytes, &inode2->i_bytes, sizeof(inode1->i_bytes)); 72 swap(inode1->i_mtime, inode2->i_mtime);
73 memswap(&inode1->i_atime, &inode2->i_atime, sizeof(inode1->i_atime));
74 memswap(&inode1->i_mtime, &inode2->i_mtime, sizeof(inode1->i_mtime));
75 73
76 memswap(ei1->i_data, ei2->i_data, sizeof(ei1->i_data)); 74 memswap(ei1->i_data, ei2->i_data, sizeof(ei1->i_data));
77 memswap(&ei1->i_flags, &ei2->i_flags, sizeof(ei1->i_flags)); 75 swap(ei1->i_flags, ei2->i_flags);
78 memswap(&ei1->i_disksize, &ei2->i_disksize, sizeof(ei1->i_disksize)); 76 swap(ei1->i_disksize, ei2->i_disksize);
79 ext4_es_remove_extent(inode1, 0, EXT_MAX_BLOCKS); 77 ext4_es_remove_extent(inode1, 0, EXT_MAX_BLOCKS);
80 ext4_es_remove_extent(inode2, 0, EXT_MAX_BLOCKS); 78 ext4_es_remove_extent(inode2, 0, EXT_MAX_BLOCKS);
81 79
@@ -351,11 +349,14 @@ static int ext4_ioctl_setproject(struct file *filp, __u32 projid)
351 349
352 raw_inode = ext4_raw_inode(&iloc); 350 raw_inode = ext4_raw_inode(&iloc);
353 if (!EXT4_FITS_IN_INODE(raw_inode, ei, i_projid)) { 351 if (!EXT4_FITS_IN_INODE(raw_inode, ei, i_projid)) {
354 err = -EOVERFLOW; 352 err = ext4_expand_extra_isize(inode,
353 EXT4_SB(sb)->s_want_extra_isize,
354 &iloc);
355 if (err)
356 goto out_unlock;
357 } else {
355 brelse(iloc.bh); 358 brelse(iloc.bh);
356 goto out_unlock;
357 } 359 }
358 brelse(iloc.bh);
359 360
360 dquot_initialize(inode); 361 dquot_initialize(inode);
361 362
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index 581e357e8406..701085620cd8 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -2295,6 +2295,9 @@ static int ext4_mb_seq_groups_show(struct seq_file *seq, void *v)
2295 int err, buddy_loaded = 0; 2295 int err, buddy_loaded = 0;
2296 struct ext4_buddy e4b; 2296 struct ext4_buddy e4b;
2297 struct ext4_group_info *grinfo; 2297 struct ext4_group_info *grinfo;
2298 unsigned char blocksize_bits = min_t(unsigned char,
2299 sb->s_blocksize_bits,
2300 EXT4_MAX_BLOCK_LOG_SIZE);
2298 struct sg { 2301 struct sg {
2299 struct ext4_group_info info; 2302 struct ext4_group_info info;
2300 ext4_grpblk_t counters[EXT4_MAX_BLOCK_LOG_SIZE + 2]; 2303 ext4_grpblk_t counters[EXT4_MAX_BLOCK_LOG_SIZE + 2];
@@ -2306,8 +2309,9 @@ static int ext4_mb_seq_groups_show(struct seq_file *seq, void *v)
2306 " 2^0 2^1 2^2 2^3 2^4 2^5 2^6 " 2309 " 2^0 2^1 2^2 2^3 2^4 2^5 2^6 "
2307 " 2^7 2^8 2^9 2^10 2^11 2^12 2^13 ]\n"); 2310 " 2^7 2^8 2^9 2^10 2^11 2^12 2^13 ]\n");
2308 2311
2309 i = (sb->s_blocksize_bits + 2) * sizeof(sg.info.bb_counters[0]) + 2312 i = (blocksize_bits + 2) * sizeof(sg.info.bb_counters[0]) +
2310 sizeof(struct ext4_group_info); 2313 sizeof(struct ext4_group_info);
2314
2311 grinfo = ext4_get_group_info(sb, group); 2315 grinfo = ext4_get_group_info(sb, group);
2312 /* Load the group info in memory only if not already loaded. */ 2316 /* Load the group info in memory only if not already loaded. */
2313 if (unlikely(EXT4_MB_GRP_NEED_INIT(grinfo))) { 2317 if (unlikely(EXT4_MB_GRP_NEED_INIT(grinfo))) {
@@ -2327,7 +2331,7 @@ static int ext4_mb_seq_groups_show(struct seq_file *seq, void *v)
2327 seq_printf(seq, "#%-5u: %-5u %-5u %-5u [", group, sg.info.bb_free, 2331 seq_printf(seq, "#%-5u: %-5u %-5u %-5u [", group, sg.info.bb_free,
2328 sg.info.bb_fragments, sg.info.bb_first_free); 2332 sg.info.bb_fragments, sg.info.bb_first_free);
2329 for (i = 0; i <= 13; i++) 2333 for (i = 0; i <= 13; i++)
2330 seq_printf(seq, " %-5u", i <= sb->s_blocksize_bits + 1 ? 2334 seq_printf(seq, " %-5u", i <= blocksize_bits + 1 ?
2331 sg.info.bb_counters[i] : 0); 2335 sg.info.bb_counters[i] : 0);
2332 seq_printf(seq, " ]\n"); 2336 seq_printf(seq, " ]\n");
2333 2337
@@ -2892,8 +2896,10 @@ void ext4_process_freed_data(struct super_block *sb, tid_t commit_tid)
2892 break; 2896 break;
2893 } 2897 }
2894 2898
2895 if (discard_bio) 2899 if (discard_bio) {
2896 submit_bio_wait(discard_bio); 2900 submit_bio_wait(discard_bio);
2901 bio_put(discard_bio);
2902 }
2897 } 2903 }
2898 2904
2899 list_for_each_entry_safe(entry, tmp, &freed_data_list, efd_list) 2905 list_for_each_entry_safe(entry, tmp, &freed_data_list, efd_list)
diff --git a/fs/ext4/namei.c b/fs/ext4/namei.c
index 13f0cadb1238..c1cf020d1889 100644
--- a/fs/ext4/namei.c
+++ b/fs/ext4/namei.c
@@ -1342,13 +1342,12 @@ static struct buffer_head * ext4_find_entry (struct inode *dir,
1342 struct super_block *sb; 1342 struct super_block *sb;
1343 struct buffer_head *bh_use[NAMEI_RA_SIZE]; 1343 struct buffer_head *bh_use[NAMEI_RA_SIZE];
1344 struct buffer_head *bh, *ret = NULL; 1344 struct buffer_head *bh, *ret = NULL;
1345 ext4_lblk_t start, block, b; 1345 ext4_lblk_t start, block;
1346 const u8 *name = d_name->name; 1346 const u8 *name = d_name->name;
1347 int ra_max = 0; /* Number of bh's in the readahead 1347 size_t ra_max = 0; /* Number of bh's in the readahead
1348 buffer, bh_use[] */ 1348 buffer, bh_use[] */
1349 int ra_ptr = 0; /* Current index into readahead 1349 size_t ra_ptr = 0; /* Current index into readahead
1350 buffer */ 1350 buffer */
1351 int num = 0;
1352 ext4_lblk_t nblocks; 1351 ext4_lblk_t nblocks;
1353 int i, namelen, retval; 1352 int i, namelen, retval;
1354 struct ext4_filename fname; 1353 struct ext4_filename fname;
@@ -1411,31 +1410,17 @@ restart:
1411 if (ra_ptr >= ra_max) { 1410 if (ra_ptr >= ra_max) {
1412 /* Refill the readahead buffer */ 1411 /* Refill the readahead buffer */
1413 ra_ptr = 0; 1412 ra_ptr = 0;
1414 b = block; 1413 if (block < start)
1415 for (ra_max = 0; ra_max < NAMEI_RA_SIZE; ra_max++) { 1414 ra_max = start - block;
1416 /* 1415 else
1417 * Terminate if we reach the end of the 1416 ra_max = nblocks - block;
1418 * directory and must wrap, or if our 1417 ra_max = min(ra_max, ARRAY_SIZE(bh_use));
1419 * search has finished at this block. 1418 retval = ext4_bread_batch(dir, block, ra_max,
1420 */ 1419 false /* wait */, bh_use);
1421 if (b >= nblocks || (num && block == start)) { 1420 if (retval) {
1422 bh_use[ra_max] = NULL; 1421 ret = ERR_PTR(retval);
1423 break; 1422 ra_max = 0;
1424 } 1423 goto cleanup_and_exit;
1425 num++;
1426 bh = ext4_getblk(NULL, dir, b++, 0);
1427 if (IS_ERR(bh)) {
1428 if (ra_max == 0) {
1429 ret = bh;
1430 goto cleanup_and_exit;
1431 }
1432 break;
1433 }
1434 bh_use[ra_max] = bh;
1435 if (bh)
1436 ll_rw_block(REQ_OP_READ,
1437 REQ_META | REQ_PRIO,
1438 1, &bh);
1439 } 1424 }
1440 } 1425 }
1441 if ((bh = bh_use[ra_ptr++]) == NULL) 1426 if ((bh = bh_use[ra_ptr++]) == NULL)
@@ -2395,19 +2380,22 @@ out:
2395} 2380}
2396 2381
2397/* 2382/*
2398 * DIR_NLINK feature is set if 1) nlinks > EXT4_LINK_MAX or 2) nlinks == 2, 2383 * Set directory link count to 1 if nlinks > EXT4_LINK_MAX, or if nlinks == 2
2399 * since this indicates that nlinks count was previously 1. 2384 * since this indicates that nlinks count was previously 1 to avoid overflowing
2385 * the 16-bit i_links_count field on disk. Directories with i_nlink == 1 mean
2386 * that subdirectory link counts are not being maintained accurately.
2387 *
2388 * The caller has already checked for i_nlink overflow in case the DIR_LINK
2389 * feature is not enabled and returned -EMLINK. The is_dx() check is a proxy
2390 * for checking S_ISDIR(inode) (since the INODE_INDEX feature will not be set
2391 * on regular files) and to avoid creating huge/slow non-HTREE directories.
2400 */ 2392 */
2401static void ext4_inc_count(handle_t *handle, struct inode *inode) 2393static void ext4_inc_count(handle_t *handle, struct inode *inode)
2402{ 2394{
2403 inc_nlink(inode); 2395 inc_nlink(inode);
2404 if (is_dx(inode) && inode->i_nlink > 1) { 2396 if (is_dx(inode) &&
2405 /* limit is 16-bit i_links_count */ 2397 (inode->i_nlink > EXT4_LINK_MAX || inode->i_nlink == 2))
2406 if (inode->i_nlink >= EXT4_LINK_MAX || inode->i_nlink == 2) { 2398 set_nlink(inode, 1);
2407 set_nlink(inode, 1);
2408 ext4_set_feature_dir_nlink(inode->i_sb);
2409 }
2410 }
2411} 2399}
2412 2400
2413/* 2401/*
diff --git a/fs/ext4/resize.c b/fs/ext4/resize.c
index c3ed9021b781..035cd3f4785e 100644
--- a/fs/ext4/resize.c
+++ b/fs/ext4/resize.c
@@ -1927,7 +1927,8 @@ retry:
1927 n_desc_blocks = o_desc_blocks + 1927 n_desc_blocks = o_desc_blocks +
1928 le16_to_cpu(es->s_reserved_gdt_blocks); 1928 le16_to_cpu(es->s_reserved_gdt_blocks);
1929 n_group = n_desc_blocks * EXT4_DESC_PER_BLOCK(sb); 1929 n_group = n_desc_blocks * EXT4_DESC_PER_BLOCK(sb);
1930 n_blocks_count = n_group * EXT4_BLOCKS_PER_GROUP(sb); 1930 n_blocks_count = (ext4_fsblk_t)n_group *
1931 EXT4_BLOCKS_PER_GROUP(sb);
1931 n_group--; /* set to last group number */ 1932 n_group--; /* set to last group number */
1932 } 1933 }
1933 1934
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 0886fe82e9c4..d61a70e2193a 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -978,8 +978,6 @@ static struct inode *ext4_alloc_inode(struct super_block *sb)
978 ei->i_es_shk_nr = 0; 978 ei->i_es_shk_nr = 0;
979 ei->i_es_shrink_lblk = 0; 979 ei->i_es_shrink_lblk = 0;
980 ei->i_reserved_data_blocks = 0; 980 ei->i_reserved_data_blocks = 0;
981 ei->i_reserved_meta_blocks = 0;
982 ei->i_allocated_meta_blocks = 0;
983 ei->i_da_metadata_calc_len = 0; 981 ei->i_da_metadata_calc_len = 0;
984 ei->i_da_metadata_calc_last_lblock = 0; 982 ei->i_da_metadata_calc_last_lblock = 0;
985 spin_lock_init(&(ei->i_block_reservation_lock)); 983 spin_lock_init(&(ei->i_block_reservation_lock));
diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c
index cff4f41ced61..3dd970168448 100644
--- a/fs/ext4/xattr.c
+++ b/fs/ext4/xattr.c
@@ -317,28 +317,41 @@ static void ext4_xattr_inode_set_hash(struct inode *ea_inode, u32 hash)
317 */ 317 */
318static int ext4_xattr_inode_read(struct inode *ea_inode, void *buf, size_t size) 318static int ext4_xattr_inode_read(struct inode *ea_inode, void *buf, size_t size)
319{ 319{
320 unsigned long block = 0; 320 int blocksize = 1 << ea_inode->i_blkbits;
321 struct buffer_head *bh; 321 int bh_count = (size + blocksize - 1) >> ea_inode->i_blkbits;
322 int blocksize = ea_inode->i_sb->s_blocksize; 322 int tail_size = (size % blocksize) ?: blocksize;
323 size_t csize, copied = 0; 323 struct buffer_head *bhs_inline[8];
324 void *copy_pos = buf; 324 struct buffer_head **bhs = bhs_inline;
325 325 int i, ret;
326 while (copied < size) { 326
327 csize = (size - copied) > blocksize ? blocksize : size - copied; 327 if (bh_count > ARRAY_SIZE(bhs_inline)) {
328 bh = ext4_bread(NULL, ea_inode, block, 0); 328 bhs = kmalloc_array(bh_count, sizeof(*bhs), GFP_NOFS);
329 if (IS_ERR(bh)) 329 if (!bhs)
330 return PTR_ERR(bh); 330 return -ENOMEM;
331 if (!bh) 331 }
332 return -EFSCORRUPTED;
333 332
334 memcpy(copy_pos, bh->b_data, csize); 333 ret = ext4_bread_batch(ea_inode, 0 /* block */, bh_count,
335 brelse(bh); 334 true /* wait */, bhs);
335 if (ret)
336 goto free_bhs;
336 337
337 copy_pos += csize; 338 for (i = 0; i < bh_count; i++) {
338 block += 1; 339 /* There shouldn't be any holes in ea_inode. */
339 copied += csize; 340 if (!bhs[i]) {
341 ret = -EFSCORRUPTED;
342 goto put_bhs;
343 }
344 memcpy((char *)buf + blocksize * i, bhs[i]->b_data,
345 i < bh_count - 1 ? blocksize : tail_size);
340 } 346 }
341 return 0; 347 ret = 0;
348put_bhs:
349 for (i = 0; i < bh_count; i++)
350 brelse(bhs[i]);
351free_bhs:
352 if (bhs != bhs_inline)
353 kfree(bhs);
354 return ret;
342} 355}
343 356
344static int ext4_xattr_inode_iget(struct inode *parent, unsigned long ea_ino, 357static int ext4_xattr_inode_iget(struct inode *parent, unsigned long ea_ino,
@@ -451,6 +464,7 @@ ext4_xattr_inode_get(struct inode *inode, struct ext4_xattr_entry *entry,
451 } 464 }
452 /* Do not add ea_inode to the cache. */ 465 /* Do not add ea_inode to the cache. */
453 ea_inode_cache = NULL; 466 ea_inode_cache = NULL;
467 err = 0;
454 } else if (err) 468 } else if (err)
455 goto out; 469 goto out;
456 470
@@ -1529,7 +1543,7 @@ static int ext4_xattr_set_entry(struct ext4_xattr_info *i,
1529 /* Clear padding bytes. */ 1543 /* Clear padding bytes. */
1530 memset(val + i->value_len, 0, new_size - i->value_len); 1544 memset(val + i->value_len, 0, new_size - i->value_len);
1531 } 1545 }
1532 return 0; 1546 goto update_hash;
1533 } 1547 }
1534 1548
1535 /* Compute min_offs and last. */ 1549 /* Compute min_offs and last. */
@@ -1693,6 +1707,7 @@ static int ext4_xattr_set_entry(struct ext4_xattr_info *i,
1693 here->e_value_size = cpu_to_le32(i->value_len); 1707 here->e_value_size = cpu_to_le32(i->value_len);
1694 } 1708 }
1695 1709
1710update_hash:
1696 if (i->value) { 1711 if (i->value) {
1697 __le32 hash = 0; 1712 __le32 hash = 0;
1698 1713
@@ -1711,7 +1726,8 @@ static int ext4_xattr_set_entry(struct ext4_xattr_info *i,
1711 here->e_name_len, 1726 here->e_name_len,
1712 &crc32c_hash, 1); 1727 &crc32c_hash, 1);
1713 } else if (is_block) { 1728 } else if (is_block) {
1714 __le32 *value = s->base + min_offs - new_size; 1729 __le32 *value = s->base + le16_to_cpu(
1730 here->e_value_offs);
1715 1731
1716 hash = ext4_xattr_hash_entry(here->e_name, 1732 hash = ext4_xattr_hash_entry(here->e_name,
1717 here->e_name_len, value, 1733 here->e_name_len, value,
@@ -1815,9 +1831,6 @@ ext4_xattr_block_set(handle_t *handle, struct inode *inode,
1815 ea_bdebug(bs->bh, "modifying in-place"); 1831 ea_bdebug(bs->bh, "modifying in-place");
1816 error = ext4_xattr_set_entry(i, s, handle, inode, 1832 error = ext4_xattr_set_entry(i, s, handle, inode,
1817 true /* is_block */); 1833 true /* is_block */);
1818 if (!error)
1819 ext4_xattr_block_cache_insert(ea_block_cache,
1820 bs->bh);
1821 ext4_xattr_block_csum_set(inode, bs->bh); 1834 ext4_xattr_block_csum_set(inode, bs->bh);
1822 unlock_buffer(bs->bh); 1835 unlock_buffer(bs->bh);
1823 if (error == -EFSCORRUPTED) 1836 if (error == -EFSCORRUPTED)
@@ -1973,6 +1986,7 @@ inserted:
1973 } else if (bs->bh && s->base == bs->bh->b_data) { 1986 } else if (bs->bh && s->base == bs->bh->b_data) {
1974 /* We were modifying this block in-place. */ 1987 /* We were modifying this block in-place. */
1975 ea_bdebug(bs->bh, "keeping this block"); 1988 ea_bdebug(bs->bh, "keeping this block");
1989 ext4_xattr_block_cache_insert(ea_block_cache, bs->bh);
1976 new_bh = bs->bh; 1990 new_bh = bs->bh;
1977 get_bh(new_bh); 1991 get_bh(new_bh);
1978 } else { 1992 } else {
@@ -2625,23 +2639,21 @@ int ext4_expand_extra_isize_ea(struct inode *inode, int new_extra_isize,
2625 struct ext4_inode *raw_inode, handle_t *handle) 2639 struct ext4_inode *raw_inode, handle_t *handle)
2626{ 2640{
2627 struct ext4_xattr_ibody_header *header; 2641 struct ext4_xattr_ibody_header *header;
2628 struct buffer_head *bh = NULL; 2642 struct buffer_head *bh;
2643 struct ext4_sb_info *sbi = EXT4_SB(inode->i_sb);
2644 static unsigned int mnt_count;
2629 size_t min_offs; 2645 size_t min_offs;
2630 size_t ifree, bfree; 2646 size_t ifree, bfree;
2631 int total_ino; 2647 int total_ino;
2632 void *base, *end; 2648 void *base, *end;
2633 int error = 0, tried_min_extra_isize = 0; 2649 int error = 0, tried_min_extra_isize = 0;
2634 int s_min_extra_isize = le16_to_cpu(EXT4_SB(inode->i_sb)->s_es->s_min_extra_isize); 2650 int s_min_extra_isize = le16_to_cpu(sbi->s_es->s_min_extra_isize);
2635 int isize_diff; /* How much do we need to grow i_extra_isize */ 2651 int isize_diff; /* How much do we need to grow i_extra_isize */
2636 int no_expand;
2637
2638 if (ext4_write_trylock_xattr(inode, &no_expand) == 0)
2639 return 0;
2640 2652
2641retry: 2653retry:
2642 isize_diff = new_extra_isize - EXT4_I(inode)->i_extra_isize; 2654 isize_diff = new_extra_isize - EXT4_I(inode)->i_extra_isize;
2643 if (EXT4_I(inode)->i_extra_isize >= new_extra_isize) 2655 if (EXT4_I(inode)->i_extra_isize >= new_extra_isize)
2644 goto out; 2656 return 0;
2645 2657
2646 header = IHDR(inode, raw_inode); 2658 header = IHDR(inode, raw_inode);
2647 2659
@@ -2676,6 +2688,7 @@ retry:
2676 EXT4_ERROR_INODE(inode, "bad block %llu", 2688 EXT4_ERROR_INODE(inode, "bad block %llu",
2677 EXT4_I(inode)->i_file_acl); 2689 EXT4_I(inode)->i_file_acl);
2678 error = -EFSCORRUPTED; 2690 error = -EFSCORRUPTED;
2691 brelse(bh);
2679 goto cleanup; 2692 goto cleanup;
2680 } 2693 }
2681 base = BHDR(bh); 2694 base = BHDR(bh);
@@ -2683,11 +2696,11 @@ retry:
2683 min_offs = end - base; 2696 min_offs = end - base;
2684 bfree = ext4_xattr_free_space(BFIRST(bh), &min_offs, base, 2697 bfree = ext4_xattr_free_space(BFIRST(bh), &min_offs, base,
2685 NULL); 2698 NULL);
2699 brelse(bh);
2686 if (bfree + ifree < isize_diff) { 2700 if (bfree + ifree < isize_diff) {
2687 if (!tried_min_extra_isize && s_min_extra_isize) { 2701 if (!tried_min_extra_isize && s_min_extra_isize) {
2688 tried_min_extra_isize++; 2702 tried_min_extra_isize++;
2689 new_extra_isize = s_min_extra_isize; 2703 new_extra_isize = s_min_extra_isize;
2690 brelse(bh);
2691 goto retry; 2704 goto retry;
2692 } 2705 }
2693 error = -ENOSPC; 2706 error = -ENOSPC;
@@ -2705,7 +2718,6 @@ retry:
2705 s_min_extra_isize) { 2718 s_min_extra_isize) {
2706 tried_min_extra_isize++; 2719 tried_min_extra_isize++;
2707 new_extra_isize = s_min_extra_isize; 2720 new_extra_isize = s_min_extra_isize;
2708 brelse(bh);
2709 goto retry; 2721 goto retry;
2710 } 2722 }
2711 goto cleanup; 2723 goto cleanup;
@@ -2717,18 +2729,13 @@ shift:
2717 EXT4_GOOD_OLD_INODE_SIZE + new_extra_isize, 2729 EXT4_GOOD_OLD_INODE_SIZE + new_extra_isize,
2718 (void *)header, total_ino); 2730 (void *)header, total_ino);
2719 EXT4_I(inode)->i_extra_isize = new_extra_isize; 2731 EXT4_I(inode)->i_extra_isize = new_extra_isize;
2720 brelse(bh);
2721out:
2722 ext4_write_unlock_xattr(inode, &no_expand);
2723 return 0;
2724 2732
2725cleanup: 2733cleanup:
2726 brelse(bh); 2734 if (error && (mnt_count != le16_to_cpu(sbi->s_es->s_mnt_count))) {
2727 /* 2735 ext4_warning(inode->i_sb, "Unable to expand inode %lu. Delete some EAs or run e2fsck.",
2728 * Inode size expansion failed; don't try again 2736 inode->i_ino);
2729 */ 2737 mnt_count = le16_to_cpu(sbi->s_es->s_mnt_count);
2730 no_expand = 1; 2738 }
2731 ext4_write_unlock_xattr(inode, &no_expand);
2732 return error; 2739 return error;
2733} 2740}
2734 2741
diff --git a/fs/f2fs/acl.c b/fs/f2fs/acl.c
index a140c5e3dc54..b4b8438c42ef 100644
--- a/fs/f2fs/acl.c
+++ b/fs/f2fs/acl.c
@@ -211,7 +211,7 @@ static int __f2fs_set_acl(struct inode *inode, int type,
211 switch (type) { 211 switch (type) {
212 case ACL_TYPE_ACCESS: 212 case ACL_TYPE_ACCESS:
213 name_index = F2FS_XATTR_INDEX_POSIX_ACL_ACCESS; 213 name_index = F2FS_XATTR_INDEX_POSIX_ACL_ACCESS;
214 if (acl) { 214 if (acl && !ipage) {
215 error = posix_acl_update_mode(inode, &inode->i_mode, &acl); 215 error = posix_acl_update_mode(inode, &inode->i_mode, &acl);
216 if (error) 216 if (error)
217 return error; 217 return error;
diff --git a/fs/f2fs/checkpoint.c b/fs/f2fs/checkpoint.c
index 56bbf592e487..5b876f6d3f6b 100644
--- a/fs/f2fs/checkpoint.c
+++ b/fs/f2fs/checkpoint.c
@@ -879,6 +879,7 @@ int sync_dirty_inodes(struct f2fs_sb_info *sbi, enum inode_type type)
879 struct inode *inode; 879 struct inode *inode;
880 struct f2fs_inode_info *fi; 880 struct f2fs_inode_info *fi;
881 bool is_dir = (type == DIR_INODE); 881 bool is_dir = (type == DIR_INODE);
882 unsigned long ino = 0;
882 883
883 trace_f2fs_sync_dirty_inodes_enter(sbi->sb, is_dir, 884 trace_f2fs_sync_dirty_inodes_enter(sbi->sb, is_dir,
884 get_pages(sbi, is_dir ? 885 get_pages(sbi, is_dir ?
@@ -901,8 +902,17 @@ retry:
901 inode = igrab(&fi->vfs_inode); 902 inode = igrab(&fi->vfs_inode);
902 spin_unlock(&sbi->inode_lock[type]); 903 spin_unlock(&sbi->inode_lock[type]);
903 if (inode) { 904 if (inode) {
905 unsigned long cur_ino = inode->i_ino;
906
904 filemap_fdatawrite(inode->i_mapping); 907 filemap_fdatawrite(inode->i_mapping);
905 iput(inode); 908 iput(inode);
909 /* We need to give cpu to another writers. */
910 if (ino == cur_ino) {
911 congestion_wait(BLK_RW_ASYNC, HZ/50);
912 cond_resched();
913 } else {
914 ino = cur_ino;
915 }
906 } else { 916 } else {
907 /* 917 /*
908 * We should submit bio, since it exists several 918 * We should submit bio, since it exists several
diff --git a/fs/f2fs/file.c b/fs/f2fs/file.c
index a0e6d2c65a9e..2706130c261b 100644
--- a/fs/f2fs/file.c
+++ b/fs/f2fs/file.c
@@ -1538,7 +1538,6 @@ static int f2fs_ioc_setflags(struct file *filp, unsigned long arg)
1538 1538
1539 /* Is it quota file? Do not allow user to mess with it */ 1539 /* Is it quota file? Do not allow user to mess with it */
1540 if (IS_NOQUOTA(inode)) { 1540 if (IS_NOQUOTA(inode)) {
1541 inode_unlock(inode);
1542 ret = -EPERM; 1541 ret = -EPERM;
1543 goto unlock_out; 1542 goto unlock_out;
1544 } 1543 }
@@ -1549,9 +1548,8 @@ static int f2fs_ioc_setflags(struct file *filp, unsigned long arg)
1549 1548
1550 if ((flags ^ oldflags) & (FS_APPEND_FL | FS_IMMUTABLE_FL)) { 1549 if ((flags ^ oldflags) & (FS_APPEND_FL | FS_IMMUTABLE_FL)) {
1551 if (!capable(CAP_LINUX_IMMUTABLE)) { 1550 if (!capable(CAP_LINUX_IMMUTABLE)) {
1552 inode_unlock(inode);
1553 ret = -EPERM; 1551 ret = -EPERM;
1554 goto out; 1552 goto unlock_out;
1555 } 1553 }
1556 } 1554 }
1557 1555
@@ -1564,7 +1562,6 @@ static int f2fs_ioc_setflags(struct file *filp, unsigned long arg)
1564 f2fs_mark_inode_dirty_sync(inode, false); 1562 f2fs_mark_inode_dirty_sync(inode, false);
1565unlock_out: 1563unlock_out:
1566 inode_unlock(inode); 1564 inode_unlock(inode);
1567out:
1568 mnt_drop_write_file(filp); 1565 mnt_drop_write_file(filp);
1569 return ret; 1566 return ret;
1570} 1567}
diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c
index 9adc202fcd6f..71191d89917d 100644
--- a/fs/f2fs/sysfs.c
+++ b/fs/f2fs/sysfs.c
@@ -11,6 +11,7 @@
11 */ 11 */
12#include <linux/proc_fs.h> 12#include <linux/proc_fs.h>
13#include <linux/f2fs_fs.h> 13#include <linux/f2fs_fs.h>
14#include <linux/seq_file.h>
14 15
15#include "f2fs.h" 16#include "f2fs.h"
16#include "segment.h" 17#include "segment.h"
diff --git a/fs/fuse/file.c b/fs/fuse/file.c
index 3ee4fdc3da9e..ab60051be6e5 100644
--- a/fs/fuse/file.c
+++ b/fs/fuse/file.c
@@ -46,7 +46,7 @@ struct fuse_file *fuse_file_alloc(struct fuse_conn *fc)
46{ 46{
47 struct fuse_file *ff; 47 struct fuse_file *ff;
48 48
49 ff = kmalloc(sizeof(struct fuse_file), GFP_KERNEL); 49 ff = kzalloc(sizeof(struct fuse_file), GFP_KERNEL);
50 if (unlikely(!ff)) 50 if (unlikely(!ff))
51 return NULL; 51 return NULL;
52 52
@@ -609,7 +609,7 @@ static void fuse_aio_complete_req(struct fuse_conn *fc, struct fuse_req *req)
609 struct fuse_io_priv *io = req->io; 609 struct fuse_io_priv *io = req->io;
610 ssize_t pos = -1; 610 ssize_t pos = -1;
611 611
612 fuse_release_user_pages(req, !io->write); 612 fuse_release_user_pages(req, io->should_dirty);
613 613
614 if (io->write) { 614 if (io->write) {
615 if (req->misc.write.in.size != req->misc.write.out.size) 615 if (req->misc.write.in.size != req->misc.write.out.size)
@@ -1316,7 +1316,6 @@ ssize_t fuse_direct_io(struct fuse_io_priv *io, struct iov_iter *iter,
1316 loff_t *ppos, int flags) 1316 loff_t *ppos, int flags)
1317{ 1317{
1318 int write = flags & FUSE_DIO_WRITE; 1318 int write = flags & FUSE_DIO_WRITE;
1319 bool should_dirty = !write && iter_is_iovec(iter);
1320 int cuse = flags & FUSE_DIO_CUSE; 1319 int cuse = flags & FUSE_DIO_CUSE;
1321 struct file *file = io->file; 1320 struct file *file = io->file;
1322 struct inode *inode = file->f_mapping->host; 1321 struct inode *inode = file->f_mapping->host;
@@ -1346,6 +1345,7 @@ ssize_t fuse_direct_io(struct fuse_io_priv *io, struct iov_iter *iter,
1346 inode_unlock(inode); 1345 inode_unlock(inode);
1347 } 1346 }
1348 1347
1348 io->should_dirty = !write && iter_is_iovec(iter);
1349 while (count) { 1349 while (count) {
1350 size_t nres; 1350 size_t nres;
1351 fl_owner_t owner = current->files; 1351 fl_owner_t owner = current->files;
@@ -1360,7 +1360,7 @@ ssize_t fuse_direct_io(struct fuse_io_priv *io, struct iov_iter *iter,
1360 nres = fuse_send_read(req, io, pos, nbytes, owner); 1360 nres = fuse_send_read(req, io, pos, nbytes, owner);
1361 1361
1362 if (!io->async) 1362 if (!io->async)
1363 fuse_release_user_pages(req, should_dirty); 1363 fuse_release_user_pages(req, io->should_dirty);
1364 if (req->out.h.error) { 1364 if (req->out.h.error) {
1365 err = req->out.h.error; 1365 err = req->out.h.error;
1366 break; 1366 break;
@@ -1669,6 +1669,7 @@ err_nofile:
1669err_free: 1669err_free:
1670 fuse_request_free(req); 1670 fuse_request_free(req);
1671err: 1671err:
1672 mapping_set_error(page->mapping, error);
1672 end_page_writeback(page); 1673 end_page_writeback(page);
1673 return error; 1674 return error;
1674} 1675}
diff --git a/fs/fuse/fuse_i.h b/fs/fuse/fuse_i.h
index 1bd7ffdad593..bd4d2a3e1ec1 100644
--- a/fs/fuse/fuse_i.h
+++ b/fs/fuse/fuse_i.h
@@ -249,6 +249,7 @@ struct fuse_io_priv {
249 size_t size; 249 size_t size;
250 __u64 offset; 250 __u64 offset;
251 bool write; 251 bool write;
252 bool should_dirty;
252 int err; 253 int err;
253 struct kiocb *iocb; 254 struct kiocb *iocb;
254 struct file *file; 255 struct file *file;
diff --git a/fs/hfsplus/posix_acl.c b/fs/hfsplus/posix_acl.c
index 9b92058a1240..6bb5d7c42888 100644
--- a/fs/hfsplus/posix_acl.c
+++ b/fs/hfsplus/posix_acl.c
@@ -51,8 +51,8 @@ struct posix_acl *hfsplus_get_posix_acl(struct inode *inode, int type)
51 return acl; 51 return acl;
52} 52}
53 53
54int hfsplus_set_posix_acl(struct inode *inode, struct posix_acl *acl, 54static int __hfsplus_set_posix_acl(struct inode *inode, struct posix_acl *acl,
55 int type) 55 int type)
56{ 56{
57 int err; 57 int err;
58 char *xattr_name; 58 char *xattr_name;
@@ -64,12 +64,6 @@ int hfsplus_set_posix_acl(struct inode *inode, struct posix_acl *acl,
64 switch (type) { 64 switch (type) {
65 case ACL_TYPE_ACCESS: 65 case ACL_TYPE_ACCESS:
66 xattr_name = XATTR_NAME_POSIX_ACL_ACCESS; 66 xattr_name = XATTR_NAME_POSIX_ACL_ACCESS;
67 if (acl) {
68 err = posix_acl_update_mode(inode, &inode->i_mode, &acl);
69 if (err)
70 return err;
71 }
72 err = 0;
73 break; 67 break;
74 68
75 case ACL_TYPE_DEFAULT: 69 case ACL_TYPE_DEFAULT:
@@ -105,6 +99,18 @@ end_set_acl:
105 return err; 99 return err;
106} 100}
107 101
102int hfsplus_set_posix_acl(struct inode *inode, struct posix_acl *acl, int type)
103{
104 int err;
105
106 if (type == ACL_TYPE_ACCESS && acl) {
107 err = posix_acl_update_mode(inode, &inode->i_mode, &acl);
108 if (err)
109 return err;
110 }
111 return __hfsplus_set_posix_acl(inode, acl, type);
112}
113
108int hfsplus_init_posix_acl(struct inode *inode, struct inode *dir) 114int hfsplus_init_posix_acl(struct inode *inode, struct inode *dir)
109{ 115{
110 int err = 0; 116 int err = 0;
@@ -122,15 +128,15 @@ int hfsplus_init_posix_acl(struct inode *inode, struct inode *dir)
122 return err; 128 return err;
123 129
124 if (default_acl) { 130 if (default_acl) {
125 err = hfsplus_set_posix_acl(inode, default_acl, 131 err = __hfsplus_set_posix_acl(inode, default_acl,
126 ACL_TYPE_DEFAULT); 132 ACL_TYPE_DEFAULT);
127 posix_acl_release(default_acl); 133 posix_acl_release(default_acl);
128 } 134 }
129 135
130 if (acl) { 136 if (acl) {
131 if (!err) 137 if (!err)
132 err = hfsplus_set_posix_acl(inode, acl, 138 err = __hfsplus_set_posix_acl(inode, acl,
133 ACL_TYPE_ACCESS); 139 ACL_TYPE_ACCESS);
134 posix_acl_release(acl); 140 posix_acl_release(acl);
135 } 141 }
136 return err; 142 return err;
diff --git a/fs/iomap.c b/fs/iomap.c
index 039266128b7f..59cc98ad7577 100644
--- a/fs/iomap.c
+++ b/fs/iomap.c
@@ -278,7 +278,7 @@ iomap_dirty_actor(struct inode *inode, loff_t pos, loff_t length, void *data,
278 unsigned long bytes; /* Bytes to write to page */ 278 unsigned long bytes; /* Bytes to write to page */
279 279
280 offset = (pos & (PAGE_SIZE - 1)); 280 offset = (pos & (PAGE_SIZE - 1));
281 bytes = min_t(unsigned long, PAGE_SIZE - offset, length); 281 bytes = min_t(loff_t, PAGE_SIZE - offset, length);
282 282
283 rpage = __iomap_read_page(inode, pos); 283 rpage = __iomap_read_page(inode, pos);
284 if (IS_ERR(rpage)) 284 if (IS_ERR(rpage))
@@ -373,7 +373,7 @@ iomap_zero_range_actor(struct inode *inode, loff_t pos, loff_t count,
373 unsigned offset, bytes; 373 unsigned offset, bytes;
374 374
375 offset = pos & (PAGE_SIZE - 1); /* Within page */ 375 offset = pos & (PAGE_SIZE - 1); /* Within page */
376 bytes = min_t(unsigned, PAGE_SIZE - offset, count); 376 bytes = min_t(loff_t, PAGE_SIZE - offset, count);
377 377
378 if (IS_DAX(inode)) 378 if (IS_DAX(inode))
379 status = iomap_dax_zero(pos, offset, bytes, iomap); 379 status = iomap_dax_zero(pos, offset, bytes, iomap);
diff --git a/fs/isofs/inode.c b/fs/isofs/inode.c
index 8cf898a59730..217a5e7815da 100644
--- a/fs/isofs/inode.c
+++ b/fs/isofs/inode.c
@@ -410,7 +410,11 @@ static int parse_options(char *options, struct iso9660_options *popt)
410 if (match_int(&args[0], &option)) 410 if (match_int(&args[0], &option))
411 return 0; 411 return 0;
412 n = option; 412 n = option;
413 if (n > 99) 413 /*
414 * Track numbers are supposed to be in range 1-99, the
415 * mount option starts indexing at 0.
416 */
417 if (n >= 99)
414 return 0; 418 return 0;
415 popt->session = n + 1; 419 popt->session = n + 1;
416 break; 420 break;
@@ -543,7 +547,7 @@ static unsigned int isofs_get_last_session(struct super_block *sb, s32 session)
543 547
544 vol_desc_start=0; 548 vol_desc_start=0;
545 ms_info.addr_format=CDROM_LBA; 549 ms_info.addr_format=CDROM_LBA;
546 if(session >= 0 && session <= 99) { 550 if (session > 0) {
547 struct cdrom_tocentry Te; 551 struct cdrom_tocentry Te;
548 Te.cdte_track=session; 552 Te.cdte_track=session;
549 Te.cdte_format=CDROM_LBA; 553 Te.cdte_format=CDROM_LBA;
diff --git a/fs/jfs/acl.c b/fs/jfs/acl.c
index 7bc186f4ed4d..2e71b6e7e646 100644
--- a/fs/jfs/acl.c
+++ b/fs/jfs/acl.c
@@ -77,13 +77,6 @@ static int __jfs_set_acl(tid_t tid, struct inode *inode, int type,
77 switch (type) { 77 switch (type) {
78 case ACL_TYPE_ACCESS: 78 case ACL_TYPE_ACCESS:
79 ea_name = XATTR_NAME_POSIX_ACL_ACCESS; 79 ea_name = XATTR_NAME_POSIX_ACL_ACCESS;
80 if (acl) {
81 rc = posix_acl_update_mode(inode, &inode->i_mode, &acl);
82 if (rc)
83 return rc;
84 inode->i_ctime = current_time(inode);
85 mark_inode_dirty(inode);
86 }
87 break; 80 break;
88 case ACL_TYPE_DEFAULT: 81 case ACL_TYPE_DEFAULT:
89 ea_name = XATTR_NAME_POSIX_ACL_DEFAULT; 82 ea_name = XATTR_NAME_POSIX_ACL_DEFAULT;
@@ -115,12 +108,27 @@ int jfs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
115{ 108{
116 int rc; 109 int rc;
117 tid_t tid; 110 tid_t tid;
111 int update_mode = 0;
112 umode_t mode = inode->i_mode;
118 113
119 tid = txBegin(inode->i_sb, 0); 114 tid = txBegin(inode->i_sb, 0);
120 mutex_lock(&JFS_IP(inode)->commit_mutex); 115 mutex_lock(&JFS_IP(inode)->commit_mutex);
116 if (type == ACL_TYPE_ACCESS && acl) {
117 rc = posix_acl_update_mode(inode, &mode, &acl);
118 if (rc)
119 goto end_tx;
120 update_mode = 1;
121 }
121 rc = __jfs_set_acl(tid, inode, type, acl); 122 rc = __jfs_set_acl(tid, inode, type, acl);
122 if (!rc) 123 if (!rc) {
124 if (update_mode) {
125 inode->i_mode = mode;
126 inode->i_ctime = current_time(inode);
127 mark_inode_dirty(inode);
128 }
123 rc = txCommit(tid, 1, &inode, 0); 129 rc = txCommit(tid, 1, &inode, 0);
130 }
131end_tx:
124 txEnd(tid); 132 txEnd(tid);
125 mutex_unlock(&JFS_IP(inode)->commit_mutex); 133 mutex_unlock(&JFS_IP(inode)->commit_mutex);
126 return rc; 134 return rc;
diff --git a/fs/jfs/resize.c b/fs/jfs/resize.c
index bd9b641ada2c..7ddcb445a3d9 100644
--- a/fs/jfs/resize.c
+++ b/fs/jfs/resize.c
@@ -98,7 +98,7 @@ int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize)
98 goto out; 98 goto out;
99 } 99 }
100 100
101 VolumeSize = sb->s_bdev->bd_inode->i_size >> sb->s_blocksize_bits; 101 VolumeSize = i_size_read(sb->s_bdev->bd_inode) >> sb->s_blocksize_bits;
102 102
103 if (VolumeSize) { 103 if (VolumeSize) {
104 if (newLVSize > VolumeSize) { 104 if (newLVSize > VolumeSize) {
@@ -211,7 +211,7 @@ int jfs_extendfs(struct super_block *sb, s64 newLVSize, int newLogSize)
211 txQuiesce(sb); 211 txQuiesce(sb);
212 212
213 /* Reset size of direct inode */ 213 /* Reset size of direct inode */
214 sbi->direct_inode->i_size = sb->s_bdev->bd_inode->i_size; 214 sbi->direct_inode->i_size = i_size_read(sb->s_bdev->bd_inode);
215 215
216 if (sbi->mntflag & JFS_INLINELOG) { 216 if (sbi->mntflag & JFS_INLINELOG) {
217 /* 217 /*
diff --git a/fs/jfs/super.c b/fs/jfs/super.c
index e8aad7d87b8c..78b41e1d5c67 100644
--- a/fs/jfs/super.c
+++ b/fs/jfs/super.c
@@ -313,7 +313,7 @@ static int parse_options(char *options, struct super_block *sb, s64 *newLVSize,
313 } 313 }
314 case Opt_resize_nosize: 314 case Opt_resize_nosize:
315 { 315 {
316 *newLVSize = sb->s_bdev->bd_inode->i_size >> 316 *newLVSize = i_size_read(sb->s_bdev->bd_inode) >>
317 sb->s_blocksize_bits; 317 sb->s_blocksize_bits;
318 if (*newLVSize == 0) 318 if (*newLVSize == 0)
319 pr_err("JFS: Cannot determine volume size\n"); 319 pr_err("JFS: Cannot determine volume size\n");
@@ -579,7 +579,7 @@ static int jfs_fill_super(struct super_block *sb, void *data, int silent)
579 goto out_unload; 579 goto out_unload;
580 } 580 }
581 inode->i_ino = 0; 581 inode->i_ino = 0;
582 inode->i_size = sb->s_bdev->bd_inode->i_size; 582 inode->i_size = i_size_read(sb->s_bdev->bd_inode);
583 inode->i_mapping->a_ops = &jfs_metapage_aops; 583 inode->i_mapping->a_ops = &jfs_metapage_aops;
584 hlist_add_fake(&inode->i_hash); 584 hlist_add_fake(&inode->i_hash);
585 mapping_set_gfp_mask(inode->i_mapping, GFP_NOFS); 585 mapping_set_gfp_mask(inode->i_mapping, GFP_NOFS);
diff --git a/fs/mount.h b/fs/mount.h
index de45d9e76748..6790767d1883 100644
--- a/fs/mount.h
+++ b/fs/mount.h
@@ -16,7 +16,7 @@ struct mnt_namespace {
16 u64 event; 16 u64 event;
17 unsigned int mounts; /* # of mounts in the namespace */ 17 unsigned int mounts; /* # of mounts in the namespace */
18 unsigned int pending_mounts; 18 unsigned int pending_mounts;
19}; 19} __randomize_layout;
20 20
21struct mnt_pcp { 21struct mnt_pcp {
22 int mnt_count; 22 int mnt_count;
@@ -69,7 +69,7 @@ struct mount {
69 struct hlist_head mnt_pins; 69 struct hlist_head mnt_pins;
70 struct fs_pin mnt_umount; 70 struct fs_pin mnt_umount;
71 struct dentry *mnt_ex_mountpoint; 71 struct dentry *mnt_ex_mountpoint;
72}; 72} __randomize_layout;
73 73
74#define MNT_NS_INTERNAL ERR_PTR(-EINVAL) /* distinct from any mnt_namespace */ 74#define MNT_NS_INTERNAL ERR_PTR(-EINVAL) /* distinct from any mnt_namespace */
75 75
diff --git a/fs/namei.c b/fs/namei.c
index 88fd38d1e3e7..ddb6a7c2b3d4 100644
--- a/fs/namei.c
+++ b/fs/namei.c
@@ -524,7 +524,7 @@ struct nameidata {
524 struct inode *link_inode; 524 struct inode *link_inode;
525 unsigned root_seq; 525 unsigned root_seq;
526 int dfd; 526 int dfd;
527}; 527} __randomize_layout;
528 528
529static void set_nameidata(struct nameidata *p, int dfd, struct filename *name) 529static void set_nameidata(struct nameidata *p, int dfd, struct filename *name)
530{ 530{
diff --git a/fs/nfs/Kconfig b/fs/nfs/Kconfig
index 69d02cf8cf37..5f93cfacb3d1 100644
--- a/fs/nfs/Kconfig
+++ b/fs/nfs/Kconfig
@@ -121,6 +121,7 @@ config PNFS_FILE_LAYOUT
121config PNFS_BLOCK 121config PNFS_BLOCK
122 tristate 122 tristate
123 depends on NFS_V4_1 && BLK_DEV_DM 123 depends on NFS_V4_1 && BLK_DEV_DM
124 depends on 64BIT || LBDAF
124 default NFS_V4 125 default NFS_V4
125 126
126config PNFS_FLEXFILE_LAYOUT 127config PNFS_FLEXFILE_LAYOUT
diff --git a/fs/nfs/client.c b/fs/nfs/client.c
index ee5ddbd36088..efebe6cf4378 100644
--- a/fs/nfs/client.c
+++ b/fs/nfs/client.c
@@ -820,6 +820,7 @@ void nfs_server_copy_userdata(struct nfs_server *target, struct nfs_server *sour
820 target->caps = source->caps; 820 target->caps = source->caps;
821 target->options = source->options; 821 target->options = source->options;
822 target->auth_info = source->auth_info; 822 target->auth_info = source->auth_info;
823 target->port = source->port;
823} 824}
824EXPORT_SYMBOL_GPL(nfs_server_copy_userdata); 825EXPORT_SYMBOL_GPL(nfs_server_copy_userdata);
825 826
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 5ac484fe0dee..3522b1249019 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -2372,16 +2372,40 @@ void nfs_access_add_cache(struct inode *inode, struct nfs_access_entry *set)
2372} 2372}
2373EXPORT_SYMBOL_GPL(nfs_access_add_cache); 2373EXPORT_SYMBOL_GPL(nfs_access_add_cache);
2374 2374
2375#define NFS_MAY_READ (NFS4_ACCESS_READ)
2376#define NFS_MAY_WRITE (NFS4_ACCESS_MODIFY | \
2377 NFS4_ACCESS_EXTEND | \
2378 NFS4_ACCESS_DELETE)
2379#define NFS_FILE_MAY_WRITE (NFS4_ACCESS_MODIFY | \
2380 NFS4_ACCESS_EXTEND)
2381#define NFS_DIR_MAY_WRITE NFS_MAY_WRITE
2382#define NFS_MAY_LOOKUP (NFS4_ACCESS_LOOKUP)
2383#define NFS_MAY_EXECUTE (NFS4_ACCESS_EXECUTE)
2384static int
2385nfs_access_calc_mask(u32 access_result, umode_t umode)
2386{
2387 int mask = 0;
2388
2389 if (access_result & NFS_MAY_READ)
2390 mask |= MAY_READ;
2391 if (S_ISDIR(umode)) {
2392 if ((access_result & NFS_DIR_MAY_WRITE) == NFS_DIR_MAY_WRITE)
2393 mask |= MAY_WRITE;
2394 if ((access_result & NFS_MAY_LOOKUP) == NFS_MAY_LOOKUP)
2395 mask |= MAY_EXEC;
2396 } else if (S_ISREG(umode)) {
2397 if ((access_result & NFS_FILE_MAY_WRITE) == NFS_FILE_MAY_WRITE)
2398 mask |= MAY_WRITE;
2399 if ((access_result & NFS_MAY_EXECUTE) == NFS_MAY_EXECUTE)
2400 mask |= MAY_EXEC;
2401 } else if (access_result & NFS_MAY_WRITE)
2402 mask |= MAY_WRITE;
2403 return mask;
2404}
2405
2375void nfs_access_set_mask(struct nfs_access_entry *entry, u32 access_result) 2406void nfs_access_set_mask(struct nfs_access_entry *entry, u32 access_result)
2376{ 2407{
2377 entry->mask = 0; 2408 entry->mask = access_result;
2378 if (access_result & NFS4_ACCESS_READ)
2379 entry->mask |= MAY_READ;
2380 if (access_result &
2381 (NFS4_ACCESS_MODIFY | NFS4_ACCESS_EXTEND | NFS4_ACCESS_DELETE))
2382 entry->mask |= MAY_WRITE;
2383 if (access_result & (NFS4_ACCESS_LOOKUP|NFS4_ACCESS_EXECUTE))
2384 entry->mask |= MAY_EXEC;
2385} 2409}
2386EXPORT_SYMBOL_GPL(nfs_access_set_mask); 2410EXPORT_SYMBOL_GPL(nfs_access_set_mask);
2387 2411
@@ -2389,6 +2413,7 @@ static int nfs_do_access(struct inode *inode, struct rpc_cred *cred, int mask)
2389{ 2413{
2390 struct nfs_access_entry cache; 2414 struct nfs_access_entry cache;
2391 bool may_block = (mask & MAY_NOT_BLOCK) == 0; 2415 bool may_block = (mask & MAY_NOT_BLOCK) == 0;
2416 int cache_mask;
2392 int status; 2417 int status;
2393 2418
2394 trace_nfs_access_enter(inode); 2419 trace_nfs_access_enter(inode);
@@ -2404,7 +2429,8 @@ static int nfs_do_access(struct inode *inode, struct rpc_cred *cred, int mask)
2404 goto out; 2429 goto out;
2405 2430
2406 /* Be clever: ask server to check for all possible rights */ 2431 /* Be clever: ask server to check for all possible rights */
2407 cache.mask = MAY_EXEC | MAY_WRITE | MAY_READ; 2432 cache.mask = NFS_MAY_LOOKUP | NFS_MAY_EXECUTE
2433 | NFS_MAY_WRITE | NFS_MAY_READ;
2408 cache.cred = cred; 2434 cache.cred = cred;
2409 cache.jiffies = jiffies; 2435 cache.jiffies = jiffies;
2410 status = NFS_PROTO(inode)->access(inode, &cache); 2436 status = NFS_PROTO(inode)->access(inode, &cache);
@@ -2418,7 +2444,8 @@ static int nfs_do_access(struct inode *inode, struct rpc_cred *cred, int mask)
2418 } 2444 }
2419 nfs_access_add_cache(inode, &cache); 2445 nfs_access_add_cache(inode, &cache);
2420out_cached: 2446out_cached:
2421 if ((mask & ~cache.mask & (MAY_READ | MAY_WRITE | MAY_EXEC)) != 0) 2447 cache_mask = nfs_access_calc_mask(cache.mask, inode->i_mode);
2448 if ((mask & ~cache_mask & (MAY_READ | MAY_WRITE | MAY_EXEC)) != 0)
2422 status = -EACCES; 2449 status = -EACCES;
2423out: 2450out:
2424 trace_nfs_access_exit(inode, status); 2451 trace_nfs_access_exit(inode, status);
diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index 5713eb32a45e..af330c31f627 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -617,6 +617,8 @@ ssize_t nfs_file_write(struct kiocb *iocb, struct iov_iter *from)
617 if (result) 617 if (result)
618 goto out; 618 goto out;
619 } 619 }
620 if (iocb->ki_pos > i_size_read(inode))
621 nfs_revalidate_mapping(inode, file->f_mapping);
620 622
621 nfs_start_io_write(inode); 623 nfs_start_io_write(inode);
622 result = generic_write_checks(iocb, from); 624 result = generic_write_checks(iocb, from);
@@ -750,7 +752,7 @@ do_setlk(struct file *filp, int cmd, struct file_lock *fl, int is_local)
750 */ 752 */
751 nfs_sync_mapping(filp->f_mapping); 753 nfs_sync_mapping(filp->f_mapping);
752 if (!NFS_PROTO(inode)->have_delegation(inode, FMODE_READ)) 754 if (!NFS_PROTO(inode)->have_delegation(inode, FMODE_READ))
753 nfs_zap_mapping(inode, filp->f_mapping); 755 nfs_zap_caches(inode);
754out: 756out:
755 return status; 757 return status;
756} 758}
diff --git a/fs/nfs/filelayout/filelayout.c b/fs/nfs/filelayout/filelayout.c
index 080fc6b278bd..44c638b7876c 100644
--- a/fs/nfs/filelayout/filelayout.c
+++ b/fs/nfs/filelayout/filelayout.c
@@ -542,6 +542,10 @@ filelayout_check_deviceid(struct pnfs_layout_hdr *lo,
542 struct nfs4_file_layout_dsaddr *dsaddr; 542 struct nfs4_file_layout_dsaddr *dsaddr;
543 int status = -EINVAL; 543 int status = -EINVAL;
544 544
545 /* Is the deviceid already set? If so, we're good. */
546 if (fl->dsaddr != NULL)
547 return 0;
548
545 /* find and reference the deviceid */ 549 /* find and reference the deviceid */
546 d = nfs4_find_get_deviceid(NFS_SERVER(lo->plh_inode), &fl->deviceid, 550 d = nfs4_find_get_deviceid(NFS_SERVER(lo->plh_inode), &fl->deviceid,
547 lo->plh_lc_cred, gfp_flags); 551 lo->plh_lc_cred, gfp_flags);
@@ -553,8 +557,6 @@ filelayout_check_deviceid(struct pnfs_layout_hdr *lo,
553 if (filelayout_test_devid_unavailable(&dsaddr->id_node)) 557 if (filelayout_test_devid_unavailable(&dsaddr->id_node))
554 goto out_put; 558 goto out_put;
555 559
556 fl->dsaddr = dsaddr;
557
558 if (fl->first_stripe_index >= dsaddr->stripe_count) { 560 if (fl->first_stripe_index >= dsaddr->stripe_count) {
559 dprintk("%s Bad first_stripe_index %u\n", 561 dprintk("%s Bad first_stripe_index %u\n",
560 __func__, fl->first_stripe_index); 562 __func__, fl->first_stripe_index);
@@ -570,6 +572,13 @@ filelayout_check_deviceid(struct pnfs_layout_hdr *lo,
570 goto out_put; 572 goto out_put;
571 } 573 }
572 status = 0; 574 status = 0;
575
576 /*
577 * Atomic compare and xchange to ensure we don't scribble
578 * over a non-NULL pointer.
579 */
580 if (cmpxchg(&fl->dsaddr, NULL, dsaddr) != NULL)
581 goto out_put;
573out: 582out:
574 return status; 583 return status;
575out_put: 584out_put:
diff --git a/fs/nfs/flexfilelayout/flexfilelayout.c b/fs/nfs/flexfilelayout/flexfilelayout.c
index 1f2ac3dd0fe5..b0fa83a60754 100644
--- a/fs/nfs/flexfilelayout/flexfilelayout.c
+++ b/fs/nfs/flexfilelayout/flexfilelayout.c
@@ -1842,6 +1842,10 @@ static int ff_layout_initiate_commit(struct nfs_commit_data *data, int how)
1842 int vers, ret; 1842 int vers, ret;
1843 struct nfs_fh *fh; 1843 struct nfs_fh *fh;
1844 1844
1845 if (!lseg || !(pnfs_is_valid_lseg(lseg) ||
1846 test_bit(NFS_LSEG_LAYOUTRETURN, &lseg->pls_flags)))
1847 goto out_err;
1848
1845 idx = calc_ds_index_from_commit(lseg, data->ds_commit_index); 1849 idx = calc_ds_index_from_commit(lseg, data->ds_commit_index);
1846 ds = nfs4_ff_layout_prepare_ds(lseg, idx, true); 1850 ds = nfs4_ff_layout_prepare_ds(lseg, idx, true);
1847 if (!ds) 1851 if (!ds)
diff --git a/fs/nfs/flexfilelayout/flexfilelayoutdev.c b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
index 6df7a0cf5660..f32c58bbe556 100644
--- a/fs/nfs/flexfilelayout/flexfilelayoutdev.c
+++ b/fs/nfs/flexfilelayout/flexfilelayoutdev.c
@@ -32,6 +32,7 @@ void nfs4_ff_layout_free_deviceid(struct nfs4_ff_layout_ds *mirror_ds)
32{ 32{
33 nfs4_print_deviceid(&mirror_ds->id_node.deviceid); 33 nfs4_print_deviceid(&mirror_ds->id_node.deviceid);
34 nfs4_pnfs_ds_put(mirror_ds->ds); 34 nfs4_pnfs_ds_put(mirror_ds->ds);
35 kfree(mirror_ds->ds_versions);
35 kfree_rcu(mirror_ds, id_node.rcu); 36 kfree_rcu(mirror_ds, id_node.rcu);
36} 37}
37 38
diff --git a/fs/nfs/mount_clnt.c b/fs/nfs/mount_clnt.c
index 3efe946672be..60bad882c123 100644
--- a/fs/nfs/mount_clnt.c
+++ b/fs/nfs/mount_clnt.c
@@ -512,7 +512,7 @@ static const struct rpc_version mnt_version1 = {
512 .counts = mnt_counts, 512 .counts = mnt_counts,
513}; 513};
514 514
515static unsigned int mnt3_counts[ARRAY_SIZE(mnt_procedures)]; 515static unsigned int mnt3_counts[ARRAY_SIZE(mnt3_procedures)];
516static const struct rpc_version mnt_version3 = { 516static const struct rpc_version mnt_version3 = {
517 .number = 3, 517 .number = 3,
518 .nrprocs = ARRAY_SIZE(mnt3_procedures), 518 .nrprocs = ARRAY_SIZE(mnt3_procedures),
diff --git a/fs/nfs/nfs3proc.c b/fs/nfs/nfs3proc.c
index df4a7d3ab915..d1e87ec0df84 100644
--- a/fs/nfs/nfs3proc.c
+++ b/fs/nfs/nfs3proc.c
@@ -220,15 +220,8 @@ static int nfs3_proc_access(struct inode *inode, struct nfs_access_entry *entry)
220 220
221 status = rpc_call_sync(NFS_CLIENT(inode), &msg, 0); 221 status = rpc_call_sync(NFS_CLIENT(inode), &msg, 0);
222 nfs_refresh_inode(inode, res.fattr); 222 nfs_refresh_inode(inode, res.fattr);
223 if (status == 0) { 223 if (status == 0)
224 entry->mask = 0; 224 nfs_access_set_mask(entry, res.access);
225 if (res.access & NFS3_ACCESS_READ)
226 entry->mask |= MAY_READ;
227 if (res.access & (NFS3_ACCESS_MODIFY | NFS3_ACCESS_EXTEND | NFS3_ACCESS_DELETE))
228 entry->mask |= MAY_WRITE;
229 if (res.access & (NFS3_ACCESS_LOOKUP|NFS3_ACCESS_EXECUTE))
230 entry->mask |= MAY_EXEC;
231 }
232 nfs_free_fattr(res.fattr); 225 nfs_free_fattr(res.fattr);
233out: 226out:
234 dprintk("NFS reply access: %d\n", status); 227 dprintk("NFS reply access: %d\n", status);
diff --git a/fs/nfs/nfs4client.c b/fs/nfs/nfs4client.c
index 50566acb5469..e9bea90dc017 100644
--- a/fs/nfs/nfs4client.c
+++ b/fs/nfs/nfs4client.c
@@ -660,9 +660,6 @@ int nfs4_detect_session_trunking(struct nfs_client *clp,
660 if (!nfs4_check_server_scope(clp->cl_serverscope, res->server_scope)) 660 if (!nfs4_check_server_scope(clp->cl_serverscope, res->server_scope))
661 goto out_err; 661 goto out_err;
662 662
663 /* Session trunking passed, add the xprt */
664 rpc_clnt_xprt_switch_add_xprt(clp->cl_rpcclient, xprt);
665
666 pr_info("NFS: %s: Session trunking succeeded for %s\n", 663 pr_info("NFS: %s: Session trunking succeeded for %s\n",
667 clp->cl_hostname, 664 clp->cl_hostname,
668 xprt->address_strings[RPC_DISPLAY_ADDR]); 665 xprt->address_strings[RPC_DISPLAY_ADDR]);
diff --git a/fs/nfs/nfs4proc.c b/fs/nfs/nfs4proc.c
index a0b4e1091340..d90132642340 100644
--- a/fs/nfs/nfs4proc.c
+++ b/fs/nfs/nfs4proc.c
@@ -2236,7 +2236,7 @@ static int nfs4_opendata_access(struct rpc_cred *cred,
2236 int openflags) 2236 int openflags)
2237{ 2237{
2238 struct nfs_access_entry cache; 2238 struct nfs_access_entry cache;
2239 u32 mask; 2239 u32 mask, flags;
2240 2240
2241 /* access call failed or for some reason the server doesn't 2241 /* access call failed or for some reason the server doesn't
2242 * support any access modes -- defer access call until later */ 2242 * support any access modes -- defer access call until later */
@@ -2250,16 +2250,20 @@ static int nfs4_opendata_access(struct rpc_cred *cred,
2250 */ 2250 */
2251 if (openflags & __FMODE_EXEC) { 2251 if (openflags & __FMODE_EXEC) {
2252 /* ONLY check for exec rights */ 2252 /* ONLY check for exec rights */
2253 mask = MAY_EXEC; 2253 if (S_ISDIR(state->inode->i_mode))
2254 mask = NFS4_ACCESS_LOOKUP;
2255 else
2256 mask = NFS4_ACCESS_EXECUTE;
2254 } else if ((fmode & FMODE_READ) && !opendata->file_created) 2257 } else if ((fmode & FMODE_READ) && !opendata->file_created)
2255 mask = MAY_READ; 2258 mask = NFS4_ACCESS_READ;
2256 2259
2257 cache.cred = cred; 2260 cache.cred = cred;
2258 cache.jiffies = jiffies; 2261 cache.jiffies = jiffies;
2259 nfs_access_set_mask(&cache, opendata->o_res.access_result); 2262 nfs_access_set_mask(&cache, opendata->o_res.access_result);
2260 nfs_access_add_cache(state->inode, &cache); 2263 nfs_access_add_cache(state->inode, &cache);
2261 2264
2262 if ((mask & ~cache.mask & (MAY_READ | MAY_EXEC)) == 0) 2265 flags = NFS4_ACCESS_READ | NFS4_ACCESS_EXECUTE | NFS4_ACCESS_LOOKUP;
2266 if ((mask & ~cache.mask & flags) == 0)
2263 return 0; 2267 return 0;
2264 2268
2265 return -EACCES; 2269 return -EACCES;
@@ -2549,9 +2553,8 @@ static int nfs41_check_open_stateid(struct nfs4_state *state)
2549 clear_bit(NFS_O_RDWR_STATE, &state->flags); 2553 clear_bit(NFS_O_RDWR_STATE, &state->flags);
2550 clear_bit(NFS_OPEN_STATE, &state->flags); 2554 clear_bit(NFS_OPEN_STATE, &state->flags);
2551 stateid->type = NFS4_INVALID_STATEID_TYPE; 2555 stateid->type = NFS4_INVALID_STATEID_TYPE;
2552 }
2553 if (status != NFS_OK)
2554 return status; 2556 return status;
2557 }
2555 if (nfs_open_stateid_recover_openmode(state)) 2558 if (nfs_open_stateid_recover_openmode(state))
2556 return -NFS4ERR_OPENMODE; 2559 return -NFS4ERR_OPENMODE;
2557 return NFS_OK; 2560 return NFS_OK;
@@ -6492,7 +6495,7 @@ nfs4_retry_setlk(struct nfs4_state *state, int cmd, struct file_lock *request)
6492 set_current_state(TASK_INTERRUPTIBLE); 6495 set_current_state(TASK_INTERRUPTIBLE);
6493 spin_unlock_irqrestore(&q->lock, flags); 6496 spin_unlock_irqrestore(&q->lock, flags);
6494 6497
6495 freezable_schedule_timeout_interruptible(NFS4_LOCK_MAXTIMEOUT); 6498 freezable_schedule_timeout(NFS4_LOCK_MAXTIMEOUT);
6496 } 6499 }
6497 6500
6498 finish_wait(q, &wait); 6501 finish_wait(q, &wait);
@@ -7457,7 +7460,7 @@ static void nfs4_exchange_id_done(struct rpc_task *task, void *data)
7457 cdata->res.server_scope = NULL; 7460 cdata->res.server_scope = NULL;
7458 } 7461 }
7459 /* Save the EXCHANGE_ID verifier session trunk tests */ 7462 /* Save the EXCHANGE_ID verifier session trunk tests */
7460 memcpy(clp->cl_confirm.data, cdata->args.verifier->data, 7463 memcpy(clp->cl_confirm.data, cdata->args.verifier.data,
7461 sizeof(clp->cl_confirm.data)); 7464 sizeof(clp->cl_confirm.data));
7462 } 7465 }
7463out: 7466out:
@@ -7470,10 +7473,6 @@ static void nfs4_exchange_id_release(void *data)
7470 struct nfs41_exchange_id_data *cdata = 7473 struct nfs41_exchange_id_data *cdata =
7471 (struct nfs41_exchange_id_data *)data; 7474 (struct nfs41_exchange_id_data *)data;
7472 7475
7473 if (cdata->xprt) {
7474 xprt_put(cdata->xprt);
7475 rpc_clnt_xprt_switch_put(cdata->args.client->cl_rpcclient);
7476 }
7477 nfs_put_client(cdata->args.client); 7476 nfs_put_client(cdata->args.client);
7478 kfree(cdata->res.impl_id); 7477 kfree(cdata->res.impl_id);
7479 kfree(cdata->res.server_scope); 7478 kfree(cdata->res.server_scope);
@@ -7494,7 +7493,6 @@ static const struct rpc_call_ops nfs4_exchange_id_call_ops = {
7494static int _nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred, 7493static int _nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred,
7495 u32 sp4_how, struct rpc_xprt *xprt) 7494 u32 sp4_how, struct rpc_xprt *xprt)
7496{ 7495{
7497 nfs4_verifier verifier;
7498 struct rpc_message msg = { 7496 struct rpc_message msg = {
7499 .rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_EXCHANGE_ID], 7497 .rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_EXCHANGE_ID],
7500 .rpc_cred = cred, 7498 .rpc_cred = cred,
@@ -7503,7 +7501,7 @@ static int _nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred,
7503 .rpc_client = clp->cl_rpcclient, 7501 .rpc_client = clp->cl_rpcclient,
7504 .callback_ops = &nfs4_exchange_id_call_ops, 7502 .callback_ops = &nfs4_exchange_id_call_ops,
7505 .rpc_message = &msg, 7503 .rpc_message = &msg,
7506 .flags = RPC_TASK_ASYNC | RPC_TASK_TIMEOUT, 7504 .flags = RPC_TASK_TIMEOUT,
7507 }; 7505 };
7508 struct nfs41_exchange_id_data *calldata; 7506 struct nfs41_exchange_id_data *calldata;
7509 struct rpc_task *task; 7507 struct rpc_task *task;
@@ -7518,8 +7516,7 @@ static int _nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred,
7518 return -ENOMEM; 7516 return -ENOMEM;
7519 } 7517 }
7520 7518
7521 if (!xprt) 7519 nfs4_init_boot_verifier(clp, &calldata->args.verifier);
7522 nfs4_init_boot_verifier(clp, &verifier);
7523 7520
7524 status = nfs4_init_uniform_client_string(clp); 7521 status = nfs4_init_uniform_client_string(clp);
7525 if (status) 7522 if (status)
@@ -7558,11 +7555,9 @@ static int _nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred,
7558 if (xprt) { 7555 if (xprt) {
7559 calldata->xprt = xprt; 7556 calldata->xprt = xprt;
7560 task_setup_data.rpc_xprt = xprt; 7557 task_setup_data.rpc_xprt = xprt;
7561 task_setup_data.flags = 7558 task_setup_data.flags |= RPC_TASK_SOFTCONN;
7562 RPC_TASK_SOFT|RPC_TASK_SOFTCONN|RPC_TASK_ASYNC; 7559 memcpy(calldata->args.verifier.data, clp->cl_confirm.data,
7563 calldata->args.verifier = &clp->cl_confirm; 7560 sizeof(calldata->args.verifier.data));
7564 } else {
7565 calldata->args.verifier = &verifier;
7566 } 7561 }
7567 calldata->args.client = clp; 7562 calldata->args.client = clp;
7568#ifdef CONFIG_NFS_V4_1_MIGRATION 7563#ifdef CONFIG_NFS_V4_1_MIGRATION
@@ -7581,12 +7576,7 @@ static int _nfs4_proc_exchange_id(struct nfs_client *clp, struct rpc_cred *cred,
7581 if (IS_ERR(task)) 7576 if (IS_ERR(task))
7582 return PTR_ERR(task); 7577 return PTR_ERR(task);
7583 7578
7584 if (!xprt) { 7579 status = calldata->rpc_status;
7585 status = rpc_wait_for_completion_task(task);
7586 if (!status)
7587 status = calldata->rpc_status;
7588 } else /* session trunking test */
7589 status = calldata->rpc_status;
7590 7580
7591 rpc_put_task(task); 7581 rpc_put_task(task);
7592out: 7582out:
diff --git a/fs/nfs/nfs4xdr.c b/fs/nfs/nfs4xdr.c
index fa3eb361d4f8..37c8af003275 100644
--- a/fs/nfs/nfs4xdr.c
+++ b/fs/nfs/nfs4xdr.c
@@ -1785,7 +1785,7 @@ static void encode_exchange_id(struct xdr_stream *xdr,
1785 int len = 0; 1785 int len = 0;
1786 1786
1787 encode_op_hdr(xdr, OP_EXCHANGE_ID, decode_exchange_id_maxsz, hdr); 1787 encode_op_hdr(xdr, OP_EXCHANGE_ID, decode_exchange_id_maxsz, hdr);
1788 encode_nfs4_verifier(xdr, args->verifier); 1788 encode_nfs4_verifier(xdr, &args->verifier);
1789 1789
1790 encode_string(xdr, strlen(args->client->cl_owner_id), 1790 encode_string(xdr, strlen(args->client->cl_owner_id),
1791 args->client->cl_owner_id); 1791 args->client->cl_owner_id);
diff --git a/fs/nfs/pnfs_nfs.c b/fs/nfs/pnfs_nfs.c
index d40755a0984b..25f28fa64c57 100644
--- a/fs/nfs/pnfs_nfs.c
+++ b/fs/nfs/pnfs_nfs.c
@@ -159,13 +159,18 @@ void pnfs_generic_recover_commit_reqs(struct list_head *dst,
159{ 159{
160 struct pnfs_commit_bucket *b; 160 struct pnfs_commit_bucket *b;
161 struct pnfs_layout_segment *freeme; 161 struct pnfs_layout_segment *freeme;
162 int nwritten;
162 int i; 163 int i;
163 164
164 lockdep_assert_held(&cinfo->inode->i_lock); 165 lockdep_assert_held(&cinfo->inode->i_lock);
165restart: 166restart:
166 for (i = 0, b = cinfo->ds->buckets; i < cinfo->ds->nbuckets; i++, b++) { 167 for (i = 0, b = cinfo->ds->buckets; i < cinfo->ds->nbuckets; i++, b++) {
167 if (pnfs_generic_transfer_commit_list(&b->written, dst, 168 nwritten = pnfs_generic_transfer_commit_list(&b->written,
168 cinfo, 0)) { 169 dst, cinfo, 0);
170 if (!nwritten)
171 continue;
172 cinfo->ds->nwritten -= nwritten;
173 if (list_empty(&b->written)) {
169 freeme = b->wlseg; 174 freeme = b->wlseg;
170 b->wlseg = NULL; 175 b->wlseg = NULL;
171 spin_unlock(&cinfo->inode->i_lock); 176 spin_unlock(&cinfo->inode->i_lock);
@@ -174,7 +179,6 @@ restart:
174 goto restart; 179 goto restart;
175 } 180 }
176 } 181 }
177 cinfo->ds->nwritten = 0;
178} 182}
179EXPORT_SYMBOL_GPL(pnfs_generic_recover_commit_reqs); 183EXPORT_SYMBOL_GPL(pnfs_generic_recover_commit_reqs);
180 184
@@ -183,6 +187,7 @@ static void pnfs_generic_retry_commit(struct nfs_commit_info *cinfo, int idx)
183 struct pnfs_ds_commit_info *fl_cinfo = cinfo->ds; 187 struct pnfs_ds_commit_info *fl_cinfo = cinfo->ds;
184 struct pnfs_commit_bucket *bucket; 188 struct pnfs_commit_bucket *bucket;
185 struct pnfs_layout_segment *freeme; 189 struct pnfs_layout_segment *freeme;
190 struct list_head *pos;
186 LIST_HEAD(pages); 191 LIST_HEAD(pages);
187 int i; 192 int i;
188 193
@@ -193,6 +198,8 @@ static void pnfs_generic_retry_commit(struct nfs_commit_info *cinfo, int idx)
193 continue; 198 continue;
194 freeme = bucket->clseg; 199 freeme = bucket->clseg;
195 bucket->clseg = NULL; 200 bucket->clseg = NULL;
201 list_for_each(pos, &bucket->committing)
202 cinfo->ds->ncommitting--;
196 list_splice_init(&bucket->committing, &pages); 203 list_splice_init(&bucket->committing, &pages);
197 spin_unlock(&cinfo->inode->i_lock); 204 spin_unlock(&cinfo->inode->i_lock);
198 nfs_retry_commit(&pages, freeme, cinfo, i); 205 nfs_retry_commit(&pages, freeme, cinfo, i);
@@ -217,13 +224,6 @@ pnfs_generic_alloc_ds_commits(struct nfs_commit_info *cinfo,
217 for (i = 0; i < fl_cinfo->nbuckets; i++, bucket++) { 224 for (i = 0; i < fl_cinfo->nbuckets; i++, bucket++) {
218 if (list_empty(&bucket->committing)) 225 if (list_empty(&bucket->committing))
219 continue; 226 continue;
220 /*
221 * If the layout segment is invalid, then let
222 * pnfs_generic_retry_commit() clean up the bucket.
223 */
224 if (bucket->clseg && !pnfs_is_valid_lseg(bucket->clseg) &&
225 !test_bit(NFS_LSEG_LAYOUTRETURN, &bucket->clseg->pls_flags))
226 break;
227 data = nfs_commitdata_alloc(false); 227 data = nfs_commitdata_alloc(false);
228 if (!data) 228 if (!data)
229 break; 229 break;
@@ -243,9 +243,12 @@ void pnfs_fetch_commit_bucket_list(struct list_head *pages,
243 struct nfs_commit_info *cinfo) 243 struct nfs_commit_info *cinfo)
244{ 244{
245 struct pnfs_commit_bucket *bucket; 245 struct pnfs_commit_bucket *bucket;
246 struct list_head *pos;
246 247
247 bucket = &cinfo->ds->buckets[data->ds_commit_index]; 248 bucket = &cinfo->ds->buckets[data->ds_commit_index];
248 spin_lock(&cinfo->inode->i_lock); 249 spin_lock(&cinfo->inode->i_lock);
250 list_for_each(pos, &bucket->committing)
251 cinfo->ds->ncommitting--;
249 list_splice_init(&bucket->committing, pages); 252 list_splice_init(&bucket->committing, pages);
250 data->lseg = bucket->clseg; 253 data->lseg = bucket->clseg;
251 bucket->clseg = NULL; 254 bucket->clseg = NULL;
@@ -330,7 +333,6 @@ pnfs_generic_commit_pagelist(struct inode *inode, struct list_head *mds_pages,
330 } 333 }
331 } 334 }
332out: 335out:
333 cinfo->ds->ncommitting = 0;
334 return PNFS_ATTEMPTED; 336 return PNFS_ATTEMPTED;
335} 337}
336EXPORT_SYMBOL_GPL(pnfs_generic_commit_pagelist); 338EXPORT_SYMBOL_GPL(pnfs_generic_commit_pagelist);
diff --git a/fs/nfsd/nfs4callback.c b/fs/nfsd/nfs4callback.c
index b45083c0f9ae..49b0a9e7ff18 100644
--- a/fs/nfsd/nfs4callback.c
+++ b/fs/nfsd/nfs4callback.c
@@ -720,8 +720,8 @@ static const struct rpc_version nfs_cb_version4 = {
720 .counts = nfs4_cb_counts, 720 .counts = nfs4_cb_counts,
721}; 721};
722 722
723static const struct rpc_version *nfs_cb_version[] = { 723static const struct rpc_version *nfs_cb_version[2] = {
724 &nfs_cb_version4, 724 [1] = &nfs_cb_version4,
725}; 725};
726 726
727static const struct rpc_program cb_program; 727static const struct rpc_program cb_program;
@@ -795,7 +795,7 @@ static int setup_callback_client(struct nfs4_client *clp, struct nfs4_cb_conn *c
795 .saddress = (struct sockaddr *) &conn->cb_saddr, 795 .saddress = (struct sockaddr *) &conn->cb_saddr,
796 .timeout = &timeparms, 796 .timeout = &timeparms,
797 .program = &cb_program, 797 .program = &cb_program,
798 .version = 0, 798 .version = 1,
799 .flags = (RPC_CLNT_CREATE_NOPING | RPC_CLNT_CREATE_QUIET), 799 .flags = (RPC_CLNT_CREATE_NOPING | RPC_CLNT_CREATE_QUIET),
800 }; 800 };
801 struct rpc_clnt *client; 801 struct rpc_clnt *client;
diff --git a/fs/ocfs2/acl.c b/fs/ocfs2/acl.c
index dc22ba8c710f..e50a387959bf 100644
--- a/fs/ocfs2/acl.c
+++ b/fs/ocfs2/acl.c
@@ -240,18 +240,6 @@ int ocfs2_set_acl(handle_t *handle,
240 switch (type) { 240 switch (type) {
241 case ACL_TYPE_ACCESS: 241 case ACL_TYPE_ACCESS:
242 name_index = OCFS2_XATTR_INDEX_POSIX_ACL_ACCESS; 242 name_index = OCFS2_XATTR_INDEX_POSIX_ACL_ACCESS;
243 if (acl) {
244 umode_t mode;
245
246 ret = posix_acl_update_mode(inode, &mode, &acl);
247 if (ret)
248 return ret;
249
250 ret = ocfs2_acl_set_mode(inode, di_bh,
251 handle, mode);
252 if (ret)
253 return ret;
254 }
255 break; 243 break;
256 case ACL_TYPE_DEFAULT: 244 case ACL_TYPE_DEFAULT:
257 name_index = OCFS2_XATTR_INDEX_POSIX_ACL_DEFAULT; 245 name_index = OCFS2_XATTR_INDEX_POSIX_ACL_DEFAULT;
@@ -289,7 +277,19 @@ int ocfs2_iop_set_acl(struct inode *inode, struct posix_acl *acl, int type)
289 had_lock = ocfs2_inode_lock_tracker(inode, &bh, 1, &oh); 277 had_lock = ocfs2_inode_lock_tracker(inode, &bh, 1, &oh);
290 if (had_lock < 0) 278 if (had_lock < 0)
291 return had_lock; 279 return had_lock;
280 if (type == ACL_TYPE_ACCESS && acl) {
281 umode_t mode;
282
283 status = posix_acl_update_mode(inode, &mode, &acl);
284 if (status)
285 goto unlock;
286
287 status = ocfs2_acl_set_mode(inode, bh, NULL, mode);
288 if (status)
289 goto unlock;
290 }
292 status = ocfs2_set_acl(NULL, inode, bh, type, acl, NULL, NULL); 291 status = ocfs2_set_acl(NULL, inode, bh, type, acl, NULL, NULL);
292unlock:
293 ocfs2_inode_unlock_tracker(inode, 1, &oh, had_lock); 293 ocfs2_inode_unlock_tracker(inode, 1, &oh, had_lock);
294 brelse(bh); 294 brelse(bh);
295 return status; 295 return status;
diff --git a/fs/overlayfs/dir.c b/fs/overlayfs/dir.c
index 641d9ee97f91..48b70e6490f3 100644
--- a/fs/overlayfs/dir.c
+++ b/fs/overlayfs/dir.c
@@ -481,17 +481,30 @@ out_cleanup:
481} 481}
482 482
483static int ovl_create_or_link(struct dentry *dentry, struct inode *inode, 483static int ovl_create_or_link(struct dentry *dentry, struct inode *inode,
484 struct cattr *attr, struct dentry *hardlink) 484 struct cattr *attr, struct dentry *hardlink,
485 bool origin)
485{ 486{
486 int err; 487 int err;
487 const struct cred *old_cred; 488 const struct cred *old_cred;
488 struct cred *override_cred; 489 struct cred *override_cred;
490 struct dentry *parent = dentry->d_parent;
489 491
490 err = ovl_copy_up(dentry->d_parent); 492 err = ovl_copy_up(parent);
491 if (err) 493 if (err)
492 return err; 494 return err;
493 495
494 old_cred = ovl_override_creds(dentry->d_sb); 496 old_cred = ovl_override_creds(dentry->d_sb);
497
498 /*
499 * When linking a file with copy up origin into a new parent, mark the
500 * new parent dir "impure".
501 */
502 if (origin) {
503 err = ovl_set_impure(parent, ovl_dentry_upper(parent));
504 if (err)
505 goto out_revert_creds;
506 }
507
495 err = -ENOMEM; 508 err = -ENOMEM;
496 override_cred = prepare_creds(); 509 override_cred = prepare_creds();
497 if (override_cred) { 510 if (override_cred) {
@@ -550,7 +563,7 @@ static int ovl_create_object(struct dentry *dentry, int mode, dev_t rdev,
550 inode_init_owner(inode, dentry->d_parent->d_inode, mode); 563 inode_init_owner(inode, dentry->d_parent->d_inode, mode);
551 attr.mode = inode->i_mode; 564 attr.mode = inode->i_mode;
552 565
553 err = ovl_create_or_link(dentry, inode, &attr, NULL); 566 err = ovl_create_or_link(dentry, inode, &attr, NULL, false);
554 if (err) 567 if (err)
555 iput(inode); 568 iput(inode);
556 569
@@ -609,7 +622,8 @@ static int ovl_link(struct dentry *old, struct inode *newdir,
609 inode = d_inode(old); 622 inode = d_inode(old);
610 ihold(inode); 623 ihold(inode);
611 624
612 err = ovl_create_or_link(new, inode, NULL, ovl_dentry_upper(old)); 625 err = ovl_create_or_link(new, inode, NULL, ovl_dentry_upper(old),
626 ovl_type_origin(old));
613 if (err) 627 if (err)
614 iput(inode); 628 iput(inode);
615 629
diff --git a/fs/overlayfs/inode.c b/fs/overlayfs/inode.c
index 69f4fc26ee39..5bc71642b226 100644
--- a/fs/overlayfs/inode.c
+++ b/fs/overlayfs/inode.c
@@ -202,37 +202,38 @@ bool ovl_is_private_xattr(const char *name)
202 sizeof(OVL_XATTR_PREFIX) - 1) == 0; 202 sizeof(OVL_XATTR_PREFIX) - 1) == 0;
203} 203}
204 204
205int ovl_xattr_set(struct dentry *dentry, const char *name, const void *value, 205int ovl_xattr_set(struct dentry *dentry, struct inode *inode, const char *name,
206 size_t size, int flags) 206 const void *value, size_t size, int flags)
207{ 207{
208 int err; 208 int err;
209 struct path realpath; 209 struct dentry *upperdentry = ovl_i_dentry_upper(inode);
210 enum ovl_path_type type = ovl_path_real(dentry, &realpath); 210 struct dentry *realdentry = upperdentry ?: ovl_dentry_lower(dentry);
211 const struct cred *old_cred; 211 const struct cred *old_cred;
212 212
213 err = ovl_want_write(dentry); 213 err = ovl_want_write(dentry);
214 if (err) 214 if (err)
215 goto out; 215 goto out;
216 216
217 if (!value && !OVL_TYPE_UPPER(type)) { 217 if (!value && !upperdentry) {
218 err = vfs_getxattr(realpath.dentry, name, NULL, 0); 218 err = vfs_getxattr(realdentry, name, NULL, 0);
219 if (err < 0) 219 if (err < 0)
220 goto out_drop_write; 220 goto out_drop_write;
221 } 221 }
222 222
223 err = ovl_copy_up(dentry); 223 if (!upperdentry) {
224 if (err) 224 err = ovl_copy_up(dentry);
225 goto out_drop_write; 225 if (err)
226 goto out_drop_write;
226 227
227 if (!OVL_TYPE_UPPER(type)) 228 realdentry = ovl_dentry_upper(dentry);
228 ovl_path_upper(dentry, &realpath); 229 }
229 230
230 old_cred = ovl_override_creds(dentry->d_sb); 231 old_cred = ovl_override_creds(dentry->d_sb);
231 if (value) 232 if (value)
232 err = vfs_setxattr(realpath.dentry, name, value, size, flags); 233 err = vfs_setxattr(realdentry, name, value, size, flags);
233 else { 234 else {
234 WARN_ON(flags != XATTR_REPLACE); 235 WARN_ON(flags != XATTR_REPLACE);
235 err = vfs_removexattr(realpath.dentry, name); 236 err = vfs_removexattr(realdentry, name);
236 } 237 }
237 revert_creds(old_cred); 238 revert_creds(old_cred);
238 239
@@ -242,12 +243,13 @@ out:
242 return err; 243 return err;
243} 244}
244 245
245int ovl_xattr_get(struct dentry *dentry, const char *name, 246int ovl_xattr_get(struct dentry *dentry, struct inode *inode, const char *name,
246 void *value, size_t size) 247 void *value, size_t size)
247{ 248{
248 struct dentry *realdentry = ovl_dentry_real(dentry);
249 ssize_t res; 249 ssize_t res;
250 const struct cred *old_cred; 250 const struct cred *old_cred;
251 struct dentry *realdentry =
252 ovl_i_dentry_upper(inode) ?: ovl_dentry_lower(dentry);
251 253
252 old_cred = ovl_override_creds(dentry->d_sb); 254 old_cred = ovl_override_creds(dentry->d_sb);
253 res = vfs_getxattr(realdentry, name, value, size); 255 res = vfs_getxattr(realdentry, name, value, size);
diff --git a/fs/overlayfs/namei.c b/fs/overlayfs/namei.c
index 9bc0e580a5b3..8aef2b304b2d 100644
--- a/fs/overlayfs/namei.c
+++ b/fs/overlayfs/namei.c
@@ -397,8 +397,19 @@ int ovl_verify_index(struct dentry *index, struct path *lowerstack,
397 if (!d_inode(index)) 397 if (!d_inode(index))
398 return 0; 398 return 0;
399 399
400 err = -EISDIR; 400 /*
401 if (d_is_dir(index)) 401 * Directory index entries are going to be used for looking up
402 * redirected upper dirs by lower dir fh when decoding an overlay
403 * file handle of a merge dir. Whiteout index entries are going to be
404 * used as an indication that an exported overlay file handle should
405 * be treated as stale (i.e. after unlink of the overlay inode).
406 * We don't know the verification rules for directory and whiteout
407 * index entries, because they have not been implemented yet, so return
408 * EROFS if those entries are found to avoid corrupting an index that
409 * was created by a newer kernel.
410 */
411 err = -EROFS;
412 if (d_is_dir(index) || ovl_is_whiteout(index))
402 goto fail; 413 goto fail;
403 414
404 err = -EINVAL; 415 err = -EINVAL;
@@ -436,8 +447,8 @@ out:
436 return err; 447 return err;
437 448
438fail: 449fail:
439 pr_warn_ratelimited("overlayfs: failed to verify index (%pd2, err=%i)\n", 450 pr_warn_ratelimited("overlayfs: failed to verify index (%pd2, ftype=%x, err=%i)\n",
440 index, err); 451 index, d_inode(index)->i_mode & S_IFMT, err);
441 goto out; 452 goto out;
442} 453}
443 454
@@ -502,6 +513,7 @@ static struct dentry *ovl_lookup_index(struct dentry *dentry,
502 goto out; 513 goto out;
503 } 514 }
504 515
516 inode = d_inode(index);
505 if (d_is_negative(index)) { 517 if (d_is_negative(index)) {
506 if (upper && d_inode(origin)->i_nlink > 1) { 518 if (upper && d_inode(origin)->i_nlink > 1) {
507 pr_warn_ratelimited("overlayfs: hard link with origin but no index (ino=%lu).\n", 519 pr_warn_ratelimited("overlayfs: hard link with origin but no index (ino=%lu).\n",
@@ -511,11 +523,22 @@ static struct dentry *ovl_lookup_index(struct dentry *dentry,
511 523
512 dput(index); 524 dput(index);
513 index = NULL; 525 index = NULL;
514 } else if (upper && d_inode(index) != d_inode(upper)) { 526 } else if (upper && d_inode(upper) != inode) {
515 inode = d_inode(index); 527 pr_warn_ratelimited("overlayfs: wrong index found (index=%pd2, ino=%lu, upper ino=%lu).\n",
516 pr_warn_ratelimited("overlayfs: wrong index found (index ino: %lu, upper ino: %lu).\n", 528 index, inode->i_ino, d_inode(upper)->i_ino);
517 d_inode(index)->i_ino, 529 goto fail;
518 d_inode(upper)->i_ino); 530 } else if (ovl_dentry_weird(index) || ovl_is_whiteout(index) ||
531 ((inode->i_mode ^ d_inode(origin)->i_mode) & S_IFMT)) {
532 /*
533 * Index should always be of the same file type as origin
534 * except for the case of a whiteout index. A whiteout
535 * index should only exist if all lower aliases have been
536 * unlinked, which means that finding a lower origin on lookup
537 * whose index is a whiteout should be treated as an error.
538 */
539 pr_warn_ratelimited("overlayfs: bad index found (index=%pd2, ftype=%x, origin ftype=%x).\n",
540 index, d_inode(index)->i_mode & S_IFMT,
541 d_inode(origin)->i_mode & S_IFMT);
519 goto fail; 542 goto fail;
520 } 543 }
521 544
diff --git a/fs/overlayfs/overlayfs.h b/fs/overlayfs/overlayfs.h
index 60d26605e039..e927a62c97ae 100644
--- a/fs/overlayfs/overlayfs.h
+++ b/fs/overlayfs/overlayfs.h
@@ -47,7 +47,8 @@ enum ovl_flag {
47/* Is the real inode encoded in fid an upper inode? */ 47/* Is the real inode encoded in fid an upper inode? */
48#define OVL_FH_FLAG_PATH_UPPER (1 << 2) 48#define OVL_FH_FLAG_PATH_UPPER (1 << 2)
49 49
50#define OVL_FH_FLAG_ALL (OVL_FH_FLAG_BIG_ENDIAN | OVL_FH_FLAG_ANY_ENDIAN) 50#define OVL_FH_FLAG_ALL (OVL_FH_FLAG_BIG_ENDIAN | OVL_FH_FLAG_ANY_ENDIAN | \
51 OVL_FH_FLAG_PATH_UPPER)
51 52
52#if defined(__LITTLE_ENDIAN) 53#if defined(__LITTLE_ENDIAN)
53#define OVL_FH_FLAG_CPU_ENDIAN 0 54#define OVL_FH_FLAG_CPU_ENDIAN 0
@@ -199,6 +200,7 @@ enum ovl_path_type ovl_path_real(struct dentry *dentry, struct path *path);
199struct dentry *ovl_dentry_upper(struct dentry *dentry); 200struct dentry *ovl_dentry_upper(struct dentry *dentry);
200struct dentry *ovl_dentry_lower(struct dentry *dentry); 201struct dentry *ovl_dentry_lower(struct dentry *dentry);
201struct dentry *ovl_dentry_real(struct dentry *dentry); 202struct dentry *ovl_dentry_real(struct dentry *dentry);
203struct dentry *ovl_i_dentry_upper(struct inode *inode);
202struct inode *ovl_inode_upper(struct inode *inode); 204struct inode *ovl_inode_upper(struct inode *inode);
203struct inode *ovl_inode_lower(struct inode *inode); 205struct inode *ovl_inode_lower(struct inode *inode);
204struct inode *ovl_inode_real(struct inode *inode); 206struct inode *ovl_inode_real(struct inode *inode);
@@ -270,9 +272,9 @@ int ovl_setattr(struct dentry *dentry, struct iattr *attr);
270int ovl_getattr(const struct path *path, struct kstat *stat, 272int ovl_getattr(const struct path *path, struct kstat *stat,
271 u32 request_mask, unsigned int flags); 273 u32 request_mask, unsigned int flags);
272int ovl_permission(struct inode *inode, int mask); 274int ovl_permission(struct inode *inode, int mask);
273int ovl_xattr_set(struct dentry *dentry, const char *name, const void *value, 275int ovl_xattr_set(struct dentry *dentry, struct inode *inode, const char *name,
274 size_t size, int flags); 276 const void *value, size_t size, int flags);
275int ovl_xattr_get(struct dentry *dentry, const char *name, 277int ovl_xattr_get(struct dentry *dentry, struct inode *inode, const char *name,
276 void *value, size_t size); 278 void *value, size_t size);
277ssize_t ovl_listxattr(struct dentry *dentry, char *list, size_t size); 279ssize_t ovl_listxattr(struct dentry *dentry, char *list, size_t size);
278struct posix_acl *ovl_get_acl(struct inode *inode, int type); 280struct posix_acl *ovl_get_acl(struct inode *inode, int type);
diff --git a/fs/overlayfs/readdir.c b/fs/overlayfs/readdir.c
index 0298463cf9c3..3d424a51cabb 100644
--- a/fs/overlayfs/readdir.c
+++ b/fs/overlayfs/readdir.c
@@ -703,7 +703,10 @@ int ovl_indexdir_cleanup(struct dentry *dentry, struct vfsmount *mnt,
703 err = PTR_ERR(index); 703 err = PTR_ERR(index);
704 break; 704 break;
705 } 705 }
706 if (ovl_verify_index(index, lowerstack, numlower)) { 706 err = ovl_verify_index(index, lowerstack, numlower);
707 if (err) {
708 if (err == -EROFS)
709 break;
707 err = ovl_cleanup(dir, index); 710 err = ovl_cleanup(dir, index);
708 if (err) 711 if (err)
709 break; 712 break;
diff --git a/fs/overlayfs/super.c b/fs/overlayfs/super.c
index 44dc2d6ffe0f..d86e89f97201 100644
--- a/fs/overlayfs/super.c
+++ b/fs/overlayfs/super.c
@@ -692,7 +692,7 @@ ovl_posix_acl_xattr_get(const struct xattr_handler *handler,
692 struct dentry *dentry, struct inode *inode, 692 struct dentry *dentry, struct inode *inode,
693 const char *name, void *buffer, size_t size) 693 const char *name, void *buffer, size_t size)
694{ 694{
695 return ovl_xattr_get(dentry, handler->name, buffer, size); 695 return ovl_xattr_get(dentry, inode, handler->name, buffer, size);
696} 696}
697 697
698static int __maybe_unused 698static int __maybe_unused
@@ -742,7 +742,7 @@ ovl_posix_acl_xattr_set(const struct xattr_handler *handler,
742 return err; 742 return err;
743 } 743 }
744 744
745 err = ovl_xattr_set(dentry, handler->name, value, size, flags); 745 err = ovl_xattr_set(dentry, inode, handler->name, value, size, flags);
746 if (!err) 746 if (!err)
747 ovl_copyattr(ovl_inode_real(inode), inode); 747 ovl_copyattr(ovl_inode_real(inode), inode);
748 748
@@ -772,7 +772,7 @@ static int ovl_other_xattr_get(const struct xattr_handler *handler,
772 struct dentry *dentry, struct inode *inode, 772 struct dentry *dentry, struct inode *inode,
773 const char *name, void *buffer, size_t size) 773 const char *name, void *buffer, size_t size)
774{ 774{
775 return ovl_xattr_get(dentry, name, buffer, size); 775 return ovl_xattr_get(dentry, inode, name, buffer, size);
776} 776}
777 777
778static int ovl_other_xattr_set(const struct xattr_handler *handler, 778static int ovl_other_xattr_set(const struct xattr_handler *handler,
@@ -780,7 +780,7 @@ static int ovl_other_xattr_set(const struct xattr_handler *handler,
780 const char *name, const void *value, 780 const char *name, const void *value,
781 size_t size, int flags) 781 size_t size, int flags)
782{ 782{
783 return ovl_xattr_set(dentry, name, value, size, flags); 783 return ovl_xattr_set(dentry, inode, name, value, size, flags);
784} 784}
785 785
786static const struct xattr_handler __maybe_unused 786static const struct xattr_handler __maybe_unused
@@ -1058,10 +1058,6 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
1058 1058
1059 ufs->indexdir = ovl_workdir_create(sb, ufs, workpath.dentry, 1059 ufs->indexdir = ovl_workdir_create(sb, ufs, workpath.dentry,
1060 OVL_INDEXDIR_NAME, true); 1060 OVL_INDEXDIR_NAME, true);
1061 err = PTR_ERR(ufs->indexdir);
1062 if (IS_ERR(ufs->indexdir))
1063 goto out_put_lower_mnt;
1064
1065 if (ufs->indexdir) { 1061 if (ufs->indexdir) {
1066 /* Verify upper root is index dir origin */ 1062 /* Verify upper root is index dir origin */
1067 err = ovl_verify_origin(ufs->indexdir, ufs->upper_mnt, 1063 err = ovl_verify_origin(ufs->indexdir, ufs->upper_mnt,
@@ -1090,6 +1086,7 @@ static int ovl_fill_super(struct super_block *sb, void *data, int silent)
1090 else 1086 else
1091 sb->s_d_op = &ovl_dentry_operations; 1087 sb->s_d_op = &ovl_dentry_operations;
1092 1088
1089 err = -ENOMEM;
1093 ufs->creator_cred = cred = prepare_creds(); 1090 ufs->creator_cred = cred = prepare_creds();
1094 if (!cred) 1091 if (!cred)
1095 goto out_put_indexdir; 1092 goto out_put_indexdir;
diff --git a/fs/overlayfs/util.c b/fs/overlayfs/util.c
index c492ba75c659..f46ad75dc96a 100644
--- a/fs/overlayfs/util.c
+++ b/fs/overlayfs/util.c
@@ -157,9 +157,14 @@ struct dentry *ovl_dentry_real(struct dentry *dentry)
157 return ovl_dentry_upper(dentry) ?: ovl_dentry_lower(dentry); 157 return ovl_dentry_upper(dentry) ?: ovl_dentry_lower(dentry);
158} 158}
159 159
160struct dentry *ovl_i_dentry_upper(struct inode *inode)
161{
162 return ovl_upperdentry_dereference(OVL_I(inode));
163}
164
160struct inode *ovl_inode_upper(struct inode *inode) 165struct inode *ovl_inode_upper(struct inode *inode)
161{ 166{
162 struct dentry *upperdentry = ovl_upperdentry_dereference(OVL_I(inode)); 167 struct dentry *upperdentry = ovl_i_dentry_upper(inode);
163 168
164 return upperdentry ? d_inode(upperdentry) : NULL; 169 return upperdentry ? d_inode(upperdentry) : NULL;
165} 170}
diff --git a/fs/proc/internal.h b/fs/proc/internal.h
index 18694598bebf..aa2b89071630 100644
--- a/fs/proc/internal.h
+++ b/fs/proc/internal.h
@@ -51,7 +51,7 @@ struct proc_dir_entry {
51 spinlock_t pde_unload_lock; /* proc_fops checks and pde_users bumps */ 51 spinlock_t pde_unload_lock; /* proc_fops checks and pde_users bumps */
52 u8 namelen; 52 u8 namelen;
53 char name[]; 53 char name[];
54}; 54} __randomize_layout;
55 55
56union proc_op { 56union proc_op {
57 int (*proc_get_link)(struct dentry *, struct path *); 57 int (*proc_get_link)(struct dentry *, struct path *);
@@ -70,7 +70,7 @@ struct proc_inode {
70 struct hlist_node sysctl_inodes; 70 struct hlist_node sysctl_inodes;
71 const struct proc_ns_operations *ns_ops; 71 const struct proc_ns_operations *ns_ops;
72 struct inode vfs_inode; 72 struct inode vfs_inode;
73}; 73} __randomize_layout;
74 74
75/* 75/*
76 * General functions 76 * General functions
@@ -279,7 +279,7 @@ struct proc_maps_private {
279#ifdef CONFIG_NUMA 279#ifdef CONFIG_NUMA
280 struct mempolicy *task_mempolicy; 280 struct mempolicy *task_mempolicy;
281#endif 281#endif
282}; 282} __randomize_layout;
283 283
284struct mm_struct *proc_mem_open(struct inode *inode, unsigned int mode); 284struct mm_struct *proc_mem_open(struct inode *inode, unsigned int mode);
285 285
diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
index 8a428498d6b2..509a61668d90 100644
--- a/fs/proc/meminfo.c
+++ b/fs/proc/meminfo.c
@@ -106,13 +106,13 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
106 global_node_page_state(NR_FILE_MAPPED)); 106 global_node_page_state(NR_FILE_MAPPED));
107 show_val_kb(m, "Shmem: ", i.sharedram); 107 show_val_kb(m, "Shmem: ", i.sharedram);
108 show_val_kb(m, "Slab: ", 108 show_val_kb(m, "Slab: ",
109 global_page_state(NR_SLAB_RECLAIMABLE) + 109 global_node_page_state(NR_SLAB_RECLAIMABLE) +
110 global_page_state(NR_SLAB_UNRECLAIMABLE)); 110 global_node_page_state(NR_SLAB_UNRECLAIMABLE));
111 111
112 show_val_kb(m, "SReclaimable: ", 112 show_val_kb(m, "SReclaimable: ",
113 global_page_state(NR_SLAB_RECLAIMABLE)); 113 global_node_page_state(NR_SLAB_RECLAIMABLE));
114 show_val_kb(m, "SUnreclaim: ", 114 show_val_kb(m, "SUnreclaim: ",
115 global_page_state(NR_SLAB_UNRECLAIMABLE)); 115 global_node_page_state(NR_SLAB_UNRECLAIMABLE));
116 seq_printf(m, "KernelStack: %8lu kB\n", 116 seq_printf(m, "KernelStack: %8lu kB\n",
117 global_page_state(NR_KERNEL_STACK_KB)); 117 global_page_state(NR_KERNEL_STACK_KB));
118 show_val_kb(m, "PageTables: ", 118 show_val_kb(m, "PageTables: ",
diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
index b836fd61ed87..fe8f3265e877 100644
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -16,9 +16,10 @@
16#include <linux/mmu_notifier.h> 16#include <linux/mmu_notifier.h>
17#include <linux/page_idle.h> 17#include <linux/page_idle.h>
18#include <linux/shmem_fs.h> 18#include <linux/shmem_fs.h>
19#include <linux/uaccess.h>
19 20
20#include <asm/elf.h> 21#include <asm/elf.h>
21#include <linux/uaccess.h> 22#include <asm/tlb.h>
22#include <asm/tlbflush.h> 23#include <asm/tlbflush.h>
23#include "internal.h" 24#include "internal.h"
24 25
@@ -1008,6 +1009,7 @@ static ssize_t clear_refs_write(struct file *file, const char __user *buf,
1008 struct mm_struct *mm; 1009 struct mm_struct *mm;
1009 struct vm_area_struct *vma; 1010 struct vm_area_struct *vma;
1010 enum clear_refs_types type; 1011 enum clear_refs_types type;
1012 struct mmu_gather tlb;
1011 int itype; 1013 int itype;
1012 int rv; 1014 int rv;
1013 1015
@@ -1054,6 +1056,7 @@ static ssize_t clear_refs_write(struct file *file, const char __user *buf,
1054 } 1056 }
1055 1057
1056 down_read(&mm->mmap_sem); 1058 down_read(&mm->mmap_sem);
1059 tlb_gather_mmu(&tlb, mm, 0, -1);
1057 if (type == CLEAR_REFS_SOFT_DIRTY) { 1060 if (type == CLEAR_REFS_SOFT_DIRTY) {
1058 for (vma = mm->mmap; vma; vma = vma->vm_next) { 1061 for (vma = mm->mmap; vma; vma = vma->vm_next) {
1059 if (!(vma->vm_flags & VM_SOFTDIRTY)) 1062 if (!(vma->vm_flags & VM_SOFTDIRTY))
@@ -1075,7 +1078,7 @@ static ssize_t clear_refs_write(struct file *file, const char __user *buf,
1075 walk_page_range(0, mm->highest_vm_end, &clear_refs_walk); 1078 walk_page_range(0, mm->highest_vm_end, &clear_refs_walk);
1076 if (type == CLEAR_REFS_SOFT_DIRTY) 1079 if (type == CLEAR_REFS_SOFT_DIRTY)
1077 mmu_notifier_invalidate_range_end(mm, 0, -1); 1080 mmu_notifier_invalidate_range_end(mm, 0, -1);
1078 flush_tlb_mm(mm); 1081 tlb_finish_mmu(&tlb, 0, -1);
1079 up_read(&mm->mmap_sem); 1082 up_read(&mm->mmap_sem);
1080out_mm: 1083out_mm:
1081 mmput(mm); 1084 mmput(mm);
diff --git a/fs/quota/dquot.c b/fs/quota/dquot.c
index 53a17496c5c5..566e6ef99f07 100644
--- a/fs/quota/dquot.c
+++ b/fs/quota/dquot.c
@@ -1124,6 +1124,10 @@ void dquot_free_reserved_space(struct dquot *dquot, qsize_t number)
1124 WARN_ON_ONCE(1); 1124 WARN_ON_ONCE(1);
1125 dquot->dq_dqb.dqb_rsvspace = 0; 1125 dquot->dq_dqb.dqb_rsvspace = 0;
1126 } 1126 }
1127 if (dquot->dq_dqb.dqb_curspace + dquot->dq_dqb.dqb_rsvspace <=
1128 dquot->dq_dqb.dqb_bsoftlimit)
1129 dquot->dq_dqb.dqb_btime = (time64_t) 0;
1130 clear_bit(DQ_BLKS_B, &dquot->dq_flags);
1127} 1131}
1128 1132
1129static void dquot_decr_inodes(struct dquot *dquot, qsize_t number) 1133static void dquot_decr_inodes(struct dquot *dquot, qsize_t number)
@@ -1145,7 +1149,8 @@ static void dquot_decr_space(struct dquot *dquot, qsize_t number)
1145 dquot->dq_dqb.dqb_curspace -= number; 1149 dquot->dq_dqb.dqb_curspace -= number;
1146 else 1150 else
1147 dquot->dq_dqb.dqb_curspace = 0; 1151 dquot->dq_dqb.dqb_curspace = 0;
1148 if (dquot->dq_dqb.dqb_curspace <= dquot->dq_dqb.dqb_bsoftlimit) 1152 if (dquot->dq_dqb.dqb_curspace + dquot->dq_dqb.dqb_rsvspace <=
1153 dquot->dq_dqb.dqb_bsoftlimit)
1149 dquot->dq_dqb.dqb_btime = (time64_t) 0; 1154 dquot->dq_dqb.dqb_btime = (time64_t) 0;
1150 clear_bit(DQ_BLKS_B, &dquot->dq_flags); 1155 clear_bit(DQ_BLKS_B, &dquot->dq_flags);
1151} 1156}
@@ -1381,14 +1386,18 @@ static int info_idq_free(struct dquot *dquot, qsize_t inodes)
1381 1386
1382static int info_bdq_free(struct dquot *dquot, qsize_t space) 1387static int info_bdq_free(struct dquot *dquot, qsize_t space)
1383{ 1388{
1389 qsize_t tspace;
1390
1391 tspace = dquot->dq_dqb.dqb_curspace + dquot->dq_dqb.dqb_rsvspace;
1392
1384 if (test_bit(DQ_FAKE_B, &dquot->dq_flags) || 1393 if (test_bit(DQ_FAKE_B, &dquot->dq_flags) ||
1385 dquot->dq_dqb.dqb_curspace <= dquot->dq_dqb.dqb_bsoftlimit) 1394 tspace <= dquot->dq_dqb.dqb_bsoftlimit)
1386 return QUOTA_NL_NOWARN; 1395 return QUOTA_NL_NOWARN;
1387 1396
1388 if (dquot->dq_dqb.dqb_curspace - space <= dquot->dq_dqb.dqb_bsoftlimit) 1397 if (tspace - space <= dquot->dq_dqb.dqb_bsoftlimit)
1389 return QUOTA_NL_BSOFTBELOW; 1398 return QUOTA_NL_BSOFTBELOW;
1390 if (dquot->dq_dqb.dqb_curspace >= dquot->dq_dqb.dqb_bhardlimit && 1399 if (tspace >= dquot->dq_dqb.dqb_bhardlimit &&
1391 dquot->dq_dqb.dqb_curspace - space < dquot->dq_dqb.dqb_bhardlimit) 1400 tspace - space < dquot->dq_dqb.dqb_bhardlimit)
1392 return QUOTA_NL_BHARDBELOW; 1401 return QUOTA_NL_BHARDBELOW;
1393 return QUOTA_NL_NOWARN; 1402 return QUOTA_NL_NOWARN;
1394} 1403}
@@ -2681,7 +2690,7 @@ static int do_set_dqblk(struct dquot *dquot, struct qc_dqblk *di)
2681 2690
2682 if (check_blim) { 2691 if (check_blim) {
2683 if (!dm->dqb_bsoftlimit || 2692 if (!dm->dqb_bsoftlimit ||
2684 dm->dqb_curspace < dm->dqb_bsoftlimit) { 2693 dm->dqb_curspace + dm->dqb_rsvspace < dm->dqb_bsoftlimit) {
2685 dm->dqb_btime = 0; 2694 dm->dqb_btime = 0;
2686 clear_bit(DQ_BLKS_B, &dquot->dq_flags); 2695 clear_bit(DQ_BLKS_B, &dquot->dq_flags);
2687 } else if (!(di->d_fieldmask & QC_SPC_TIMER)) 2696 } else if (!(di->d_fieldmask & QC_SPC_TIMER))
diff --git a/fs/reiserfs/xattr_acl.c b/fs/reiserfs/xattr_acl.c
index 3d2256a425ee..54415f0e3d18 100644
--- a/fs/reiserfs/xattr_acl.c
+++ b/fs/reiserfs/xattr_acl.c
@@ -23,7 +23,8 @@ reiserfs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
23 struct reiserfs_transaction_handle th; 23 struct reiserfs_transaction_handle th;
24 size_t jcreate_blocks; 24 size_t jcreate_blocks;
25 int size = acl ? posix_acl_xattr_size(acl->a_count) : 0; 25 int size = acl ? posix_acl_xattr_size(acl->a_count) : 0;
26 26 int update_mode = 0;
27 umode_t mode = inode->i_mode;
27 28
28 /* 29 /*
29 * Pessimism: We can't assume that anything from the xattr root up 30 * Pessimism: We can't assume that anything from the xattr root up
@@ -37,7 +38,16 @@ reiserfs_set_acl(struct inode *inode, struct posix_acl *acl, int type)
37 error = journal_begin(&th, inode->i_sb, jcreate_blocks); 38 error = journal_begin(&th, inode->i_sb, jcreate_blocks);
38 reiserfs_write_unlock(inode->i_sb); 39 reiserfs_write_unlock(inode->i_sb);
39 if (error == 0) { 40 if (error == 0) {
41 if (type == ACL_TYPE_ACCESS && acl) {
42 error = posix_acl_update_mode(inode, &mode, &acl);
43 if (error)
44 goto unlock;
45 update_mode = 1;
46 }
40 error = __reiserfs_set_acl(&th, inode, type, acl); 47 error = __reiserfs_set_acl(&th, inode, type, acl);
48 if (!error && update_mode)
49 inode->i_mode = mode;
50unlock:
41 reiserfs_write_lock(inode->i_sb); 51 reiserfs_write_lock(inode->i_sb);
42 error2 = journal_end(&th); 52 error2 = journal_end(&th);
43 reiserfs_write_unlock(inode->i_sb); 53 reiserfs_write_unlock(inode->i_sb);
@@ -241,11 +251,6 @@ __reiserfs_set_acl(struct reiserfs_transaction_handle *th, struct inode *inode,
241 switch (type) { 251 switch (type) {
242 case ACL_TYPE_ACCESS: 252 case ACL_TYPE_ACCESS:
243 name = XATTR_NAME_POSIX_ACL_ACCESS; 253 name = XATTR_NAME_POSIX_ACL_ACCESS;
244 if (acl) {
245 error = posix_acl_update_mode(inode, &inode->i_mode, &acl);
246 if (error)
247 return error;
248 }
249 break; 254 break;
250 case ACL_TYPE_DEFAULT: 255 case ACL_TYPE_DEFAULT:
251 name = XATTR_NAME_POSIX_ACL_DEFAULT; 256 name = XATTR_NAME_POSIX_ACL_DEFAULT;
diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c
index cadcd12a3d35..b0d5897bc4e6 100644
--- a/fs/userfaultfd.c
+++ b/fs/userfaultfd.c
@@ -854,6 +854,9 @@ wakeup:
854 __wake_up_locked_key(&ctx->fault_wqh, TASK_NORMAL, &range); 854 __wake_up_locked_key(&ctx->fault_wqh, TASK_NORMAL, &range);
855 spin_unlock(&ctx->fault_pending_wqh.lock); 855 spin_unlock(&ctx->fault_pending_wqh.lock);
856 856
857 /* Flush pending events that may still wait on event_wqh */
858 wake_up_all(&ctx->event_wqh);
859
857 wake_up_poll(&ctx->fd_wqh, POLLHUP); 860 wake_up_poll(&ctx->fd_wqh, POLLHUP);
858 userfaultfd_ctx_put(ctx); 861 userfaultfd_ctx_put(ctx);
859 return 0; 862 return 0;
@@ -1597,7 +1600,7 @@ static int userfaultfd_copy(struct userfaultfd_ctx *ctx,
1597 uffdio_copy.len); 1600 uffdio_copy.len);
1598 mmput(ctx->mm); 1601 mmput(ctx->mm);
1599 } else { 1602 } else {
1600 return -ENOSPC; 1603 return -ESRCH;
1601 } 1604 }
1602 if (unlikely(put_user(ret, &user_uffdio_copy->copy))) 1605 if (unlikely(put_user(ret, &user_uffdio_copy->copy)))
1603 return -EFAULT; 1606 return -EFAULT;
@@ -1643,6 +1646,8 @@ static int userfaultfd_zeropage(struct userfaultfd_ctx *ctx,
1643 ret = mfill_zeropage(ctx->mm, uffdio_zeropage.range.start, 1646 ret = mfill_zeropage(ctx->mm, uffdio_zeropage.range.start,
1644 uffdio_zeropage.range.len); 1647 uffdio_zeropage.range.len);
1645 mmput(ctx->mm); 1648 mmput(ctx->mm);
1649 } else {
1650 return -ESRCH;
1646 } 1651 }
1647 if (unlikely(put_user(ret, &user_uffdio_zeropage->zeropage))) 1652 if (unlikely(put_user(ret, &user_uffdio_zeropage->zeropage)))
1648 return -EFAULT; 1653 return -EFAULT;
diff --git a/fs/xfs/libxfs/xfs_bmap.c b/fs/xfs/libxfs/xfs_bmap.c
index 0a9880777c9c..c09c16b1ad3b 100644
--- a/fs/xfs/libxfs/xfs_bmap.c
+++ b/fs/xfs/libxfs/xfs_bmap.c
@@ -5435,6 +5435,7 @@ __xfs_bunmapi(
5435 xfs_fsblock_t sum; 5435 xfs_fsblock_t sum;
5436 xfs_filblks_t len = *rlen; /* length to unmap in file */ 5436 xfs_filblks_t len = *rlen; /* length to unmap in file */
5437 xfs_fileoff_t max_len; 5437 xfs_fileoff_t max_len;
5438 xfs_agnumber_t prev_agno = NULLAGNUMBER, agno;
5438 5439
5439 trace_xfs_bunmap(ip, bno, len, flags, _RET_IP_); 5440 trace_xfs_bunmap(ip, bno, len, flags, _RET_IP_);
5440 5441
@@ -5534,6 +5535,17 @@ __xfs_bunmapi(
5534 */ 5535 */
5535 del = got; 5536 del = got;
5536 wasdel = isnullstartblock(del.br_startblock); 5537 wasdel = isnullstartblock(del.br_startblock);
5538
5539 /*
5540 * Make sure we don't touch multiple AGF headers out of order
5541 * in a single transaction, as that could cause AB-BA deadlocks.
5542 */
5543 if (!wasdel) {
5544 agno = XFS_FSB_TO_AGNO(mp, del.br_startblock);
5545 if (prev_agno != NULLAGNUMBER && prev_agno > agno)
5546 break;
5547 prev_agno = agno;
5548 }
5537 if (got.br_startoff < start) { 5549 if (got.br_startoff < start) {
5538 del.br_startoff = start; 5550 del.br_startoff = start;
5539 del.br_blockcount -= start - got.br_startoff; 5551 del.br_blockcount -= start - got.br_startoff;
@@ -6499,6 +6511,15 @@ xfs_bmap_finish_one(
6499 xfs_fsblock_t firstfsb; 6511 xfs_fsblock_t firstfsb;
6500 int error = 0; 6512 int error = 0;
6501 6513
6514 /*
6515 * firstfsb is tied to the transaction lifetime and is used to
6516 * ensure correct AG locking order and schedule work item
6517 * continuations. XFS_BUI_MAX_FAST_EXTENTS (== 1) restricts us
6518 * to only making one bmap call per transaction, so it should
6519 * be safe to have it as a local variable here.
6520 */
6521 firstfsb = NULLFSBLOCK;
6522
6502 trace_xfs_bmap_deferred(tp->t_mountp, 6523 trace_xfs_bmap_deferred(tp->t_mountp,
6503 XFS_FSB_TO_AGNO(tp->t_mountp, startblock), type, 6524 XFS_FSB_TO_AGNO(tp->t_mountp, startblock), type,
6504 XFS_FSB_TO_AGBNO(tp->t_mountp, startblock), 6525 XFS_FSB_TO_AGBNO(tp->t_mountp, startblock),
diff --git a/fs/xfs/libxfs/xfs_btree.c b/fs/xfs/libxfs/xfs_btree.c
index 4da85fff69ad..e0bcc4a59efd 100644
--- a/fs/xfs/libxfs/xfs_btree.c
+++ b/fs/xfs/libxfs/xfs_btree.c
@@ -728,7 +728,8 @@ xfs_btree_firstrec(
728 * Get the block pointer for this level. 728 * Get the block pointer for this level.
729 */ 729 */
730 block = xfs_btree_get_block(cur, level, &bp); 730 block = xfs_btree_get_block(cur, level, &bp);
731 xfs_btree_check_block(cur, block, level, bp); 731 if (xfs_btree_check_block(cur, block, level, bp))
732 return 0;
732 /* 733 /*
733 * It's empty, there is no such record. 734 * It's empty, there is no such record.
734 */ 735 */
@@ -757,7 +758,8 @@ xfs_btree_lastrec(
757 * Get the block pointer for this level. 758 * Get the block pointer for this level.
758 */ 759 */
759 block = xfs_btree_get_block(cur, level, &bp); 760 block = xfs_btree_get_block(cur, level, &bp);
760 xfs_btree_check_block(cur, block, level, bp); 761 if (xfs_btree_check_block(cur, block, level, bp))
762 return 0;
761 /* 763 /*
762 * It's empty, there is no such record. 764 * It's empty, there is no such record.
763 */ 765 */
diff --git a/fs/xfs/libxfs/xfs_dir2_data.c b/fs/xfs/libxfs/xfs_dir2_data.c
index d478065b9544..8727a43115ef 100644
--- a/fs/xfs/libxfs/xfs_dir2_data.c
+++ b/fs/xfs/libxfs/xfs_dir2_data.c
@@ -136,6 +136,8 @@ __xfs_dir3_data_check(
136 */ 136 */
137 if (be16_to_cpu(dup->freetag) == XFS_DIR2_DATA_FREE_TAG) { 137 if (be16_to_cpu(dup->freetag) == XFS_DIR2_DATA_FREE_TAG) {
138 XFS_WANT_CORRUPTED_RETURN(mp, lastfree == 0); 138 XFS_WANT_CORRUPTED_RETURN(mp, lastfree == 0);
139 XFS_WANT_CORRUPTED_RETURN(mp, endp >=
140 p + be16_to_cpu(dup->length));
139 XFS_WANT_CORRUPTED_RETURN(mp, 141 XFS_WANT_CORRUPTED_RETURN(mp,
140 be16_to_cpu(*xfs_dir2_data_unused_tag_p(dup)) == 142 be16_to_cpu(*xfs_dir2_data_unused_tag_p(dup)) ==
141 (char *)dup - (char *)hdr); 143 (char *)dup - (char *)hdr);
@@ -164,6 +166,8 @@ __xfs_dir3_data_check(
164 XFS_WANT_CORRUPTED_RETURN(mp, dep->namelen != 0); 166 XFS_WANT_CORRUPTED_RETURN(mp, dep->namelen != 0);
165 XFS_WANT_CORRUPTED_RETURN(mp, 167 XFS_WANT_CORRUPTED_RETURN(mp,
166 !xfs_dir_ino_validate(mp, be64_to_cpu(dep->inumber))); 168 !xfs_dir_ino_validate(mp, be64_to_cpu(dep->inumber)));
169 XFS_WANT_CORRUPTED_RETURN(mp, endp >=
170 p + ops->data_entsize(dep->namelen));
167 XFS_WANT_CORRUPTED_RETURN(mp, 171 XFS_WANT_CORRUPTED_RETURN(mp,
168 be16_to_cpu(*ops->data_entry_tag_p(dep)) == 172 be16_to_cpu(*ops->data_entry_tag_p(dep)) ==
169 (char *)dep - (char *)hdr); 173 (char *)dep - (char *)hdr);
diff --git a/fs/xfs/libxfs/xfs_ialloc.c b/fs/xfs/libxfs/xfs_ialloc.c
index ffd5a15d1bb6..abf5beaae907 100644
--- a/fs/xfs/libxfs/xfs_ialloc.c
+++ b/fs/xfs/libxfs/xfs_ialloc.c
@@ -1246,13 +1246,13 @@ xfs_dialloc_ag_inobt(
1246 1246
1247 /* free inodes to the left? */ 1247 /* free inodes to the left? */
1248 if (useleft && trec.ir_freecount) { 1248 if (useleft && trec.ir_freecount) {
1249 rec = trec;
1250 xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR); 1249 xfs_btree_del_cursor(cur, XFS_BTREE_NOERROR);
1251 cur = tcur; 1250 cur = tcur;
1252 1251
1253 pag->pagl_leftrec = trec.ir_startino; 1252 pag->pagl_leftrec = trec.ir_startino;
1254 pag->pagl_rightrec = rec.ir_startino; 1253 pag->pagl_rightrec = rec.ir_startino;
1255 pag->pagl_pagino = pagino; 1254 pag->pagl_pagino = pagino;
1255 rec = trec;
1256 goto alloc_inode; 1256 goto alloc_inode;
1257 } 1257 }
1258 1258
diff --git a/fs/xfs/libxfs/xfs_refcount.c b/fs/xfs/libxfs/xfs_refcount.c
index 900ea231f9a3..45b1c3b4e047 100644
--- a/fs/xfs/libxfs/xfs_refcount.c
+++ b/fs/xfs/libxfs/xfs_refcount.c
@@ -1638,6 +1638,10 @@ xfs_refcount_recover_cow_leftovers(
1638 error = xfs_alloc_read_agf(mp, tp, agno, 0, &agbp); 1638 error = xfs_alloc_read_agf(mp, tp, agno, 0, &agbp);
1639 if (error) 1639 if (error)
1640 goto out_trans; 1640 goto out_trans;
1641 if (!agbp) {
1642 error = -ENOMEM;
1643 goto out_trans;
1644 }
1641 cur = xfs_refcountbt_init_cursor(mp, tp, agbp, agno, NULL); 1645 cur = xfs_refcountbt_init_cursor(mp, tp, agbp, agno, NULL);
1642 1646
1643 /* Find all the leftover CoW staging extents. */ 1647 /* Find all the leftover CoW staging extents. */
diff --git a/fs/xfs/xfs_inode.c b/fs/xfs/xfs_inode.c
index ceef77c0416a..ff48f0096810 100644
--- a/fs/xfs/xfs_inode.c
+++ b/fs/xfs/xfs_inode.c
@@ -874,7 +874,6 @@ xfs_ialloc(
874 case S_IFREG: 874 case S_IFREG:
875 case S_IFDIR: 875 case S_IFDIR:
876 if (pip && (pip->i_d.di_flags & XFS_DIFLAG_ANY)) { 876 if (pip && (pip->i_d.di_flags & XFS_DIFLAG_ANY)) {
877 uint64_t di_flags2 = 0;
878 uint di_flags = 0; 877 uint di_flags = 0;
879 878
880 if (S_ISDIR(mode)) { 879 if (S_ISDIR(mode)) {
@@ -911,20 +910,23 @@ xfs_ialloc(
911 di_flags |= XFS_DIFLAG_NODEFRAG; 910 di_flags |= XFS_DIFLAG_NODEFRAG;
912 if (pip->i_d.di_flags & XFS_DIFLAG_FILESTREAM) 911 if (pip->i_d.di_flags & XFS_DIFLAG_FILESTREAM)
913 di_flags |= XFS_DIFLAG_FILESTREAM; 912 di_flags |= XFS_DIFLAG_FILESTREAM;
914 if (pip->i_d.di_flags2 & XFS_DIFLAG2_DAX)
915 di_flags2 |= XFS_DIFLAG2_DAX;
916 913
917 ip->i_d.di_flags |= di_flags; 914 ip->i_d.di_flags |= di_flags;
918 ip->i_d.di_flags2 |= di_flags2;
919 } 915 }
920 if (pip && 916 if (pip &&
921 (pip->i_d.di_flags2 & XFS_DIFLAG2_ANY) && 917 (pip->i_d.di_flags2 & XFS_DIFLAG2_ANY) &&
922 pip->i_d.di_version == 3 && 918 pip->i_d.di_version == 3 &&
923 ip->i_d.di_version == 3) { 919 ip->i_d.di_version == 3) {
920 uint64_t di_flags2 = 0;
921
924 if (pip->i_d.di_flags2 & XFS_DIFLAG2_COWEXTSIZE) { 922 if (pip->i_d.di_flags2 & XFS_DIFLAG2_COWEXTSIZE) {
925 ip->i_d.di_flags2 |= XFS_DIFLAG2_COWEXTSIZE; 923 di_flags2 |= XFS_DIFLAG2_COWEXTSIZE;
926 ip->i_d.di_cowextsize = pip->i_d.di_cowextsize; 924 ip->i_d.di_cowextsize = pip->i_d.di_cowextsize;
927 } 925 }
926 if (pip->i_d.di_flags2 & XFS_DIFLAG2_DAX)
927 di_flags2 |= XFS_DIFLAG2_DAX;
928
929 ip->i_d.di_flags2 |= di_flags2;
928 } 930 }
929 /* FALLTHROUGH */ 931 /* FALLTHROUGH */
930 case S_IFLNK: 932 case S_IFLNK:
diff --git a/fs/xfs/xfs_log.c b/fs/xfs/xfs_log.c
index 0053bcf2b10a..4ebd0bafc914 100644
--- a/fs/xfs/xfs_log.c
+++ b/fs/xfs/xfs_log.c
@@ -749,9 +749,20 @@ xfs_log_mount_finish(
749 return 0; 749 return 0;
750 } 750 }
751 751
752 /*
753 * During the second phase of log recovery, we need iget and
754 * iput to behave like they do for an active filesystem.
755 * xfs_fs_drop_inode needs to be able to prevent the deletion
756 * of inodes before we're done replaying log items on those
757 * inodes. Turn it off immediately after recovery finishes
758 * so that we don't leak the quota inodes if subsequent mount
759 * activities fail.
760 */
761 mp->m_super->s_flags |= MS_ACTIVE;
752 error = xlog_recover_finish(mp->m_log); 762 error = xlog_recover_finish(mp->m_log);
753 if (!error) 763 if (!error)
754 xfs_log_work_queue(mp); 764 xfs_log_work_queue(mp);
765 mp->m_super->s_flags &= ~MS_ACTIVE;
755 766
756 return error; 767 return error;
757} 768}
diff --git a/fs/xfs/xfs_log_cil.c b/fs/xfs/xfs_log_cil.c
index fbe72b134bef..43aa42a3a5d3 100644
--- a/fs/xfs/xfs_log_cil.c
+++ b/fs/xfs/xfs_log_cil.c
@@ -539,6 +539,7 @@ xlog_discard_endio(
539 539
540 INIT_WORK(&ctx->discard_endio_work, xlog_discard_endio_work); 540 INIT_WORK(&ctx->discard_endio_work, xlog_discard_endio_work);
541 queue_work(xfs_discard_wq, &ctx->discard_endio_work); 541 queue_work(xfs_discard_wq, &ctx->discard_endio_work);
542 bio_put(bio);
542} 543}
543 544
544static void 545static void
diff --git a/fs/xfs/xfs_mount.c b/fs/xfs/xfs_mount.c
index 40d4e8b4e193..ea7d4b4e50d0 100644
--- a/fs/xfs/xfs_mount.c
+++ b/fs/xfs/xfs_mount.c
@@ -945,15 +945,6 @@ xfs_mountfs(
945 } 945 }
946 946
947 /* 947 /*
948 * During the second phase of log recovery, we need iget and
949 * iput to behave like they do for an active filesystem.
950 * xfs_fs_drop_inode needs to be able to prevent the deletion
951 * of inodes before we're done replaying log items on those
952 * inodes.
953 */
954 mp->m_super->s_flags |= MS_ACTIVE;
955
956 /*
957 * Finish recovering the file system. This part needed to be delayed 948 * Finish recovering the file system. This part needed to be delayed
958 * until after the root and real-time bitmap inodes were consistently 949 * until after the root and real-time bitmap inodes were consistently
959 * read in. 950 * read in.
@@ -1028,12 +1019,13 @@ xfs_mountfs(
1028 out_quota: 1019 out_quota:
1029 xfs_qm_unmount_quotas(mp); 1020 xfs_qm_unmount_quotas(mp);
1030 out_rtunmount: 1021 out_rtunmount:
1031 mp->m_super->s_flags &= ~MS_ACTIVE;
1032 xfs_rtunmount_inodes(mp); 1022 xfs_rtunmount_inodes(mp);
1033 out_rele_rip: 1023 out_rele_rip:
1034 IRELE(rip); 1024 IRELE(rip);
1035 cancel_delayed_work_sync(&mp->m_reclaim_work); 1025 cancel_delayed_work_sync(&mp->m_reclaim_work);
1036 xfs_reclaim_inodes(mp, SYNC_WAIT); 1026 xfs_reclaim_inodes(mp, SYNC_WAIT);
1027 /* Clean out dquots that might be in memory after quotacheck. */
1028 xfs_qm_unmount(mp);
1037 out_log_dealloc: 1029 out_log_dealloc:
1038 mp->m_flags |= XFS_MOUNT_UNMOUNTING; 1030 mp->m_flags |= XFS_MOUNT_UNMOUNTING;
1039 xfs_log_mount_cancel(mp); 1031 xfs_log_mount_cancel(mp);
diff --git a/fs/xfs/xfs_qm.c b/fs/xfs/xfs_qm.c
index 6ce948c436d5..15751dc2a27d 100644
--- a/fs/xfs/xfs_qm.c
+++ b/fs/xfs/xfs_qm.c
@@ -111,6 +111,9 @@ restart:
111 skipped = 0; 111 skipped = 0;
112 break; 112 break;
113 } 113 }
114 /* we're done if id overflows back to zero */
115 if (!next_index)
116 break;
114 } 117 }
115 118
116 if (skipped) { 119 if (skipped) {
diff --git a/fs/xfs/xfs_reflink.c b/fs/xfs/xfs_reflink.c
index ab2270a87196..f45fbf0db9bb 100644
--- a/fs/xfs/xfs_reflink.c
+++ b/fs/xfs/xfs_reflink.c
@@ -170,6 +170,8 @@ xfs_reflink_find_shared(
170 error = xfs_alloc_read_agf(mp, tp, agno, 0, &agbp); 170 error = xfs_alloc_read_agf(mp, tp, agno, 0, &agbp);
171 if (error) 171 if (error)
172 return error; 172 return error;
173 if (!agbp)
174 return -ENOMEM;
173 175
174 cur = xfs_refcountbt_init_cursor(mp, tp, agbp, agno, NULL); 176 cur = xfs_refcountbt_init_cursor(mp, tp, agbp, agno, NULL);
175 177
@@ -329,7 +331,7 @@ xfs_reflink_convert_cow_extent(
329 xfs_filblks_t count_fsb, 331 xfs_filblks_t count_fsb,
330 struct xfs_defer_ops *dfops) 332 struct xfs_defer_ops *dfops)
331{ 333{
332 xfs_fsblock_t first_block; 334 xfs_fsblock_t first_block = NULLFSBLOCK;
333 int nimaps = 1; 335 int nimaps = 1;
334 336
335 if (imap->br_state == XFS_EXT_NORM) 337 if (imap->br_state == XFS_EXT_NORM)
diff --git a/include/acpi/acpi_numa.h b/include/acpi/acpi_numa.h
index d4b72944ccda..1e3a74f94131 100644
--- a/include/acpi/acpi_numa.h
+++ b/include/acpi/acpi_numa.h
@@ -3,6 +3,7 @@
3 3
4#ifdef CONFIG_ACPI_NUMA 4#ifdef CONFIG_ACPI_NUMA
5#include <linux/kernel.h> 5#include <linux/kernel.h>
6#include <linux/numa.h>
6 7
7/* Proximity bitmap length */ 8/* Proximity bitmap length */
8#if MAX_NUMNODES > 256 9#if MAX_NUMNODES > 256
diff --git a/include/asm-generic/tlb.h b/include/asm-generic/tlb.h
index 8afa4335e5b2..faddde44de8c 100644
--- a/include/asm-generic/tlb.h
+++ b/include/asm-generic/tlb.h
@@ -112,10 +112,11 @@ struct mmu_gather {
112 112
113#define HAVE_GENERIC_MMU_GATHER 113#define HAVE_GENERIC_MMU_GATHER
114 114
115void tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned long start, unsigned long end); 115void arch_tlb_gather_mmu(struct mmu_gather *tlb,
116 struct mm_struct *mm, unsigned long start, unsigned long end);
116void tlb_flush_mmu(struct mmu_gather *tlb); 117void tlb_flush_mmu(struct mmu_gather *tlb);
117void tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, 118void arch_tlb_finish_mmu(struct mmu_gather *tlb,
118 unsigned long end); 119 unsigned long start, unsigned long end, bool force);
119extern bool __tlb_remove_page_size(struct mmu_gather *tlb, struct page *page, 120extern bool __tlb_remove_page_size(struct mmu_gather *tlb, struct page *page,
120 int page_size); 121 int page_size);
121 122
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
index da0be9a8d1de..9623d78f8494 100644
--- a/include/asm-generic/vmlinux.lds.h
+++ b/include/asm-generic/vmlinux.lds.h
@@ -60,6 +60,22 @@
60#define ALIGN_FUNCTION() . = ALIGN(8) 60#define ALIGN_FUNCTION() . = ALIGN(8)
61 61
62/* 62/*
63 * LD_DEAD_CODE_DATA_ELIMINATION option enables -fdata-sections, which
64 * generates .data.identifier sections, which need to be pulled in with
65 * .data. We don't want to pull in .data..other sections, which Linux
66 * has defined. Same for text and bss.
67 */
68#ifdef CONFIG_LD_DEAD_CODE_DATA_ELIMINATION
69#define TEXT_MAIN .text .text.[0-9a-zA-Z_]*
70#define DATA_MAIN .data .data.[0-9a-zA-Z_]*
71#define BSS_MAIN .bss .bss.[0-9a-zA-Z_]*
72#else
73#define TEXT_MAIN .text
74#define DATA_MAIN .data
75#define BSS_MAIN .bss
76#endif
77
78/*
63 * Align to a 32 byte boundary equal to the 79 * Align to a 32 byte boundary equal to the
64 * alignment gcc 4.5 uses for a struct 80 * alignment gcc 4.5 uses for a struct
65 */ 81 */
@@ -198,12 +214,9 @@
198 214
199/* 215/*
200 * .data section 216 * .data section
201 * LD_DEAD_CODE_DATA_ELIMINATION option enables -fdata-sections generates
202 * .data.identifier which needs to be pulled in with .data, but don't want to
203 * pull in .data..stuff which has its own requirements. Same for bss.
204 */ 217 */
205#define DATA_DATA \ 218#define DATA_DATA \
206 *(.data .data.[0-9a-zA-Z_]*) \ 219 *(DATA_MAIN) \
207 *(.ref.data) \ 220 *(.ref.data) \
208 *(.data..shared_aligned) /* percpu related */ \ 221 *(.data..shared_aligned) /* percpu related */ \
209 MEM_KEEP(init.data) \ 222 MEM_KEEP(init.data) \
@@ -434,16 +447,17 @@
434 VMLINUX_SYMBOL(__security_initcall_end) = .; \ 447 VMLINUX_SYMBOL(__security_initcall_end) = .; \
435 } 448 }
436 449
437/* .text section. Map to function alignment to avoid address changes 450/*
451 * .text section. Map to function alignment to avoid address changes
438 * during second ld run in second ld pass when generating System.map 452 * during second ld run in second ld pass when generating System.map
439 * LD_DEAD_CODE_DATA_ELIMINATION option enables -ffunction-sections generates 453 *
440 * .text.identifier which needs to be pulled in with .text , but some 454 * TEXT_MAIN here will match .text.fixup and .text.unlikely if dead
441 * architectures define .text.foo which is not intended to be pulled in here. 455 * code elimination is enabled, so these sections should be converted
442 * Those enabling LD_DEAD_CODE_DATA_ELIMINATION must ensure they don't have 456 * to use ".." first.
443 * conflicting section names, and must pull in .text.[0-9a-zA-Z_]* */ 457 */
444#define TEXT_TEXT \ 458#define TEXT_TEXT \
445 ALIGN_FUNCTION(); \ 459 ALIGN_FUNCTION(); \
446 *(.text.hot .text .text.fixup .text.unlikely) \ 460 *(.text.hot TEXT_MAIN .text.fixup .text.unlikely) \
447 *(.ref.text) \ 461 *(.ref.text) \
448 MEM_KEEP(init.text) \ 462 MEM_KEEP(init.text) \
449 MEM_KEEP(exit.text) \ 463 MEM_KEEP(exit.text) \
@@ -613,7 +627,7 @@
613 BSS_FIRST_SECTIONS \ 627 BSS_FIRST_SECTIONS \
614 *(.bss..page_aligned) \ 628 *(.bss..page_aligned) \
615 *(.dynbss) \ 629 *(.dynbss) \
616 *(.bss .bss.[0-9a-zA-Z_]*) \ 630 *(BSS_MAIN) \
617 *(COMMON) \ 631 *(COMMON) \
618 } 632 }
619 633
diff --git a/include/kvm/arm_pmu.h b/include/kvm/arm_pmu.h
index f6e030617467..f87fe20fcb05 100644
--- a/include/kvm/arm_pmu.h
+++ b/include/kvm/arm_pmu.h
@@ -48,7 +48,6 @@ void kvm_pmu_vcpu_reset(struct kvm_vcpu *vcpu);
48void kvm_pmu_vcpu_destroy(struct kvm_vcpu *vcpu); 48void kvm_pmu_vcpu_destroy(struct kvm_vcpu *vcpu);
49void kvm_pmu_disable_counter(struct kvm_vcpu *vcpu, u64 val); 49void kvm_pmu_disable_counter(struct kvm_vcpu *vcpu, u64 val);
50void kvm_pmu_enable_counter(struct kvm_vcpu *vcpu, u64 val); 50void kvm_pmu_enable_counter(struct kvm_vcpu *vcpu, u64 val);
51void kvm_pmu_overflow_set(struct kvm_vcpu *vcpu, u64 val);
52void kvm_pmu_flush_hwstate(struct kvm_vcpu *vcpu); 51void kvm_pmu_flush_hwstate(struct kvm_vcpu *vcpu);
53void kvm_pmu_sync_hwstate(struct kvm_vcpu *vcpu); 52void kvm_pmu_sync_hwstate(struct kvm_vcpu *vcpu);
54bool kvm_pmu_should_notify_user(struct kvm_vcpu *vcpu); 53bool kvm_pmu_should_notify_user(struct kvm_vcpu *vcpu);
@@ -86,7 +85,6 @@ static inline void kvm_pmu_vcpu_reset(struct kvm_vcpu *vcpu) {}
86static inline void kvm_pmu_vcpu_destroy(struct kvm_vcpu *vcpu) {} 85static inline void kvm_pmu_vcpu_destroy(struct kvm_vcpu *vcpu) {}
87static inline void kvm_pmu_disable_counter(struct kvm_vcpu *vcpu, u64 val) {} 86static inline void kvm_pmu_disable_counter(struct kvm_vcpu *vcpu, u64 val) {}
88static inline void kvm_pmu_enable_counter(struct kvm_vcpu *vcpu, u64 val) {} 87static inline void kvm_pmu_enable_counter(struct kvm_vcpu *vcpu, u64 val) {}
89static inline void kvm_pmu_overflow_set(struct kvm_vcpu *vcpu, u64 val) {}
90static inline void kvm_pmu_flush_hwstate(struct kvm_vcpu *vcpu) {} 88static inline void kvm_pmu_flush_hwstate(struct kvm_vcpu *vcpu) {}
91static inline void kvm_pmu_sync_hwstate(struct kvm_vcpu *vcpu) {} 89static inline void kvm_pmu_sync_hwstate(struct kvm_vcpu *vcpu) {}
92static inline bool kvm_pmu_should_notify_user(struct kvm_vcpu *vcpu) 90static inline bool kvm_pmu_should_notify_user(struct kvm_vcpu *vcpu)
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index c749eef1daa1..27b4b6615263 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -1209,6 +1209,7 @@ static inline bool acpi_has_watchdog(void) { return false; }
1209#endif 1209#endif
1210 1210
1211#ifdef CONFIG_ACPI_SPCR_TABLE 1211#ifdef CONFIG_ACPI_SPCR_TABLE
1212extern bool qdf2400_e44_present;
1212int parse_spcr(bool earlycon); 1213int parse_spcr(bool earlycon);
1213#else 1214#else
1214static inline int parse_spcr(bool earlycon) { return 0; } 1215static inline int parse_spcr(bool earlycon) { return 0; }
diff --git a/include/linux/binfmts.h b/include/linux/binfmts.h
index 05488da3aee9..3ae9013eeaaa 100644
--- a/include/linux/binfmts.h
+++ b/include/linux/binfmts.h
@@ -46,7 +46,7 @@ struct linux_binprm {
46 unsigned interp_flags; 46 unsigned interp_flags;
47 unsigned interp_data; 47 unsigned interp_data;
48 unsigned long loader, exec; 48 unsigned long loader, exec;
49}; 49} __randomize_layout;
50 50
51#define BINPRM_FLAGS_ENFORCE_NONDUMP_BIT 0 51#define BINPRM_FLAGS_ENFORCE_NONDUMP_BIT 0
52#define BINPRM_FLAGS_ENFORCE_NONDUMP (1 << BINPRM_FLAGS_ENFORCE_NONDUMP_BIT) 52#define BINPRM_FLAGS_ENFORCE_NONDUMP (1 << BINPRM_FLAGS_ENFORCE_NONDUMP_BIT)
@@ -81,7 +81,7 @@ struct linux_binfmt {
81 int (*load_shlib)(struct file *); 81 int (*load_shlib)(struct file *);
82 int (*core_dump)(struct coredump_params *cprm); 82 int (*core_dump)(struct coredump_params *cprm);
83 unsigned long min_coredump; /* minimal dump size */ 83 unsigned long min_coredump; /* minimal dump size */
84}; 84} __randomize_layout;
85 85
86extern void __register_binfmt(struct linux_binfmt *fmt, int insert); 86extern void __register_binfmt(struct linux_binfmt *fmt, int insert);
87 87
diff --git a/include/linux/bpf-cgroup.h b/include/linux/bpf-cgroup.h
index 360c082e885c..d41d40ac3efd 100644
--- a/include/linux/bpf-cgroup.h
+++ b/include/linux/bpf-cgroup.h
@@ -85,7 +85,7 @@ int __cgroup_bpf_run_filter_sock_ops(struct sock *sk,
85 int __ret = 0; \ 85 int __ret = 0; \
86 if (cgroup_bpf_enabled && (sock_ops)->sk) { \ 86 if (cgroup_bpf_enabled && (sock_ops)->sk) { \
87 typeof(sk) __sk = sk_to_full_sk((sock_ops)->sk); \ 87 typeof(sk) __sk = sk_to_full_sk((sock_ops)->sk); \
88 if (sk_fullsock(__sk)) \ 88 if (__sk && sk_fullsock(__sk)) \
89 __ret = __cgroup_bpf_run_filter_sock_ops(__sk, \ 89 __ret = __cgroup_bpf_run_filter_sock_ops(__sk, \
90 sock_ops, \ 90 sock_ops, \
91 BPF_CGROUP_SOCK_OPS); \ 91 BPF_CGROUP_SOCK_OPS); \
diff --git a/include/linux/bpf_verifier.h b/include/linux/bpf_verifier.h
index 621076f56251..8e5d31f6faef 100644
--- a/include/linux/bpf_verifier.h
+++ b/include/linux/bpf_verifier.h
@@ -43,6 +43,7 @@ struct bpf_reg_state {
43 u32 min_align; 43 u32 min_align;
44 u32 aux_off; 44 u32 aux_off;
45 u32 aux_off_align; 45 u32 aux_off_align;
46 bool value_from_signed;
46}; 47};
47 48
48enum bpf_stack_slot_type { 49enum bpf_stack_slot_type {
diff --git a/include/linux/cdev.h b/include/linux/cdev.h
index 408bc09ce497..cb28eb21e3ca 100644
--- a/include/linux/cdev.h
+++ b/include/linux/cdev.h
@@ -17,7 +17,7 @@ struct cdev {
17 struct list_head list; 17 struct list_head list;
18 dev_t dev; 18 dev_t dev;
19 unsigned int count; 19 unsigned int count;
20}; 20} __randomize_layout;
21 21
22void cdev_init(struct cdev *, const struct file_operations *); 22void cdev_init(struct cdev *, const struct file_operations *);
23 23
diff --git a/include/linux/ceph/ceph_features.h b/include/linux/ceph/ceph_features.h
index f0f6c537b64c..040dd105c3e7 100644
--- a/include/linux/ceph/ceph_features.h
+++ b/include/linux/ceph/ceph_features.h
@@ -10,14 +10,14 @@
10#define CEPH_FEATURE_INCARNATION_2 (1ull<<57) // CEPH_FEATURE_SERVER_JEWEL 10#define CEPH_FEATURE_INCARNATION_2 (1ull<<57) // CEPH_FEATURE_SERVER_JEWEL
11 11
12#define DEFINE_CEPH_FEATURE(bit, incarnation, name) \ 12#define DEFINE_CEPH_FEATURE(bit, incarnation, name) \
13 const static uint64_t CEPH_FEATURE_##name = (1ULL<<bit); \ 13 static const uint64_t CEPH_FEATURE_##name = (1ULL<<bit); \
14 const static uint64_t CEPH_FEATUREMASK_##name = \ 14 static const uint64_t CEPH_FEATUREMASK_##name = \
15 (1ULL<<bit | CEPH_FEATURE_INCARNATION_##incarnation); 15 (1ULL<<bit | CEPH_FEATURE_INCARNATION_##incarnation);
16 16
17/* this bit is ignored but still advertised by release *when* */ 17/* this bit is ignored but still advertised by release *when* */
18#define DEFINE_CEPH_FEATURE_DEPRECATED(bit, incarnation, name, when) \ 18#define DEFINE_CEPH_FEATURE_DEPRECATED(bit, incarnation, name, when) \
19 const static uint64_t DEPRECATED_CEPH_FEATURE_##name = (1ULL<<bit); \ 19 static const uint64_t DEPRECATED_CEPH_FEATURE_##name = (1ULL<<bit); \
20 const static uint64_t DEPRECATED_CEPH_FEATUREMASK_##name = \ 20 static const uint64_t DEPRECATED_CEPH_FEATUREMASK_##name = \
21 (1ULL<<bit | CEPH_FEATURE_INCARNATION_##incarnation); 21 (1ULL<<bit | CEPH_FEATURE_INCARNATION_##incarnation);
22 22
23/* 23/*
diff --git a/include/linux/ceph/osd_client.h b/include/linux/ceph/osd_client.h
index c6d96a5f46fd..adf670ecaf94 100644
--- a/include/linux/ceph/osd_client.h
+++ b/include/linux/ceph/osd_client.h
@@ -148,6 +148,7 @@ struct ceph_osd_request_target {
148 int size; 148 int size;
149 int min_size; 149 int min_size;
150 bool sort_bitwise; 150 bool sort_bitwise;
151 bool recovery_deletes;
151 152
152 unsigned int flags; /* CEPH_OSD_FLAG_* */ 153 unsigned int flags; /* CEPH_OSD_FLAG_* */
153 bool paused; 154 bool paused;
diff --git a/include/linux/ceph/osdmap.h b/include/linux/ceph/osdmap.h
index a0996cb9faed..af3444a5bfdd 100644
--- a/include/linux/ceph/osdmap.h
+++ b/include/linux/ceph/osdmap.h
@@ -272,6 +272,8 @@ bool ceph_is_new_interval(const struct ceph_osds *old_acting,
272 u32 new_pg_num, 272 u32 new_pg_num,
273 bool old_sort_bitwise, 273 bool old_sort_bitwise,
274 bool new_sort_bitwise, 274 bool new_sort_bitwise,
275 bool old_recovery_deletes,
276 bool new_recovery_deletes,
275 const struct ceph_pg *pgid); 277 const struct ceph_pg *pgid);
276bool ceph_osds_changed(const struct ceph_osds *old_acting, 278bool ceph_osds_changed(const struct ceph_osds *old_acting,
277 const struct ceph_osds *new_acting, 279 const struct ceph_osds *new_acting,
diff --git a/include/linux/ceph/rados.h b/include/linux/ceph/rados.h
index 385db08bb8b2..b8281feda9c7 100644
--- a/include/linux/ceph/rados.h
+++ b/include/linux/ceph/rados.h
@@ -158,6 +158,10 @@ extern const char *ceph_osd_state_name(int s);
158#define CEPH_OSDMAP_NOTIERAGENT (1<<13) /* disable tiering agent */ 158#define CEPH_OSDMAP_NOTIERAGENT (1<<13) /* disable tiering agent */
159#define CEPH_OSDMAP_NOREBALANCE (1<<14) /* block osd backfill unless pg is degraded */ 159#define CEPH_OSDMAP_NOREBALANCE (1<<14) /* block osd backfill unless pg is degraded */
160#define CEPH_OSDMAP_SORTBITWISE (1<<15) /* use bitwise hobject_t sort */ 160#define CEPH_OSDMAP_SORTBITWISE (1<<15) /* use bitwise hobject_t sort */
161#define CEPH_OSDMAP_REQUIRE_JEWEL (1<<16) /* require jewel for booting osds */
162#define CEPH_OSDMAP_REQUIRE_KRAKEN (1<<17) /* require kraken for booting osds */
163#define CEPH_OSDMAP_REQUIRE_LUMINOUS (1<<18) /* require l for booting osds */
164#define CEPH_OSDMAP_RECOVERY_DELETES (1<<19) /* deletes performed during recovery instead of peering */
161 165
162/* 166/*
163 * The error code to return when an OSD can't handle a write 167 * The error code to return when an OSD can't handle a write
diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
index c28cedde973f..71b86a5d3061 100644
--- a/include/linux/compiler-gcc.h
+++ b/include/linux/compiler-gcc.h
@@ -237,6 +237,7 @@
237#endif /* GCC_VERSION >= 40500 */ 237#endif /* GCC_VERSION >= 40500 */
238 238
239#if GCC_VERSION >= 40600 239#if GCC_VERSION >= 40600
240
240/* 241/*
241 * When used with Link Time Optimization, gcc can optimize away C functions or 242 * When used with Link Time Optimization, gcc can optimize away C functions or
242 * variables which are referenced only from assembly code. __visible tells the 243 * variables which are referenced only from assembly code. __visible tells the
@@ -244,7 +245,17 @@
244 * this. 245 * this.
245 */ 246 */
246#define __visible __attribute__((externally_visible)) 247#define __visible __attribute__((externally_visible))
247#endif 248
249/*
250 * RANDSTRUCT_PLUGIN wants to use an anonymous struct, but it is only
251 * possible since GCC 4.6. To provide as much build testing coverage
252 * as possible, this is used for all GCC 4.6+ builds, and not just on
253 * RANDSTRUCT_PLUGIN builds.
254 */
255#define randomized_struct_fields_start struct {
256#define randomized_struct_fields_end } __randomize_layout;
257
258#endif /* GCC_VERSION >= 40600 */
248 259
249 260
250#if GCC_VERSION >= 40900 && !defined(__CHECKER__) 261#if GCC_VERSION >= 40900 && !defined(__CHECKER__)
diff --git a/include/linux/compiler.h b/include/linux/compiler.h
index 3f8c88e29a46..43cac547f773 100644
--- a/include/linux/compiler.h
+++ b/include/linux/compiler.h
@@ -452,6 +452,11 @@ static __always_inline void __write_once_size(volatile void *p, void *res, int s
452# define __no_randomize_layout 452# define __no_randomize_layout
453#endif 453#endif
454 454
455#ifndef randomized_struct_fields_start
456# define randomized_struct_fields_start
457# define randomized_struct_fields_end
458#endif
459
455/* 460/*
456 * Tell gcc if a function is cold. The compiler will assume any path 461 * Tell gcc if a function is cold. The compiler will assume any path
457 * directly leading to the call is unlikely. 462 * directly leading to the call is unlikely.
diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h
index b56573bf440d..82b30e638430 100644
--- a/include/linux/cpuhotplug.h
+++ b/include/linux/cpuhotplug.h
@@ -39,8 +39,6 @@ enum cpuhp_state {
39 CPUHP_PCI_XGENE_DEAD, 39 CPUHP_PCI_XGENE_DEAD,
40 CPUHP_IOMMU_INTEL_DEAD, 40 CPUHP_IOMMU_INTEL_DEAD,
41 CPUHP_LUSTRE_CFS_DEAD, 41 CPUHP_LUSTRE_CFS_DEAD,
42 CPUHP_SCSI_BNX2FC_DEAD,
43 CPUHP_SCSI_BNX2I_DEAD,
44 CPUHP_WORKQUEUE_PREP, 42 CPUHP_WORKQUEUE_PREP,
45 CPUHP_POWER_NUMA_PREPARE, 43 CPUHP_POWER_NUMA_PREPARE,
46 CPUHP_HRTIMERS_PREPARE, 44 CPUHP_HRTIMERS_PREPARE,
diff --git a/include/linux/cpuset.h b/include/linux/cpuset.h
index 119a3f9604b0..898cfe2eeb42 100644
--- a/include/linux/cpuset.h
+++ b/include/linux/cpuset.h
@@ -18,6 +18,19 @@
18 18
19#ifdef CONFIG_CPUSETS 19#ifdef CONFIG_CPUSETS
20 20
21/*
22 * Static branch rewrites can happen in an arbitrary order for a given
23 * key. In code paths where we need to loop with read_mems_allowed_begin() and
24 * read_mems_allowed_retry() to get a consistent view of mems_allowed, we need
25 * to ensure that begin() always gets rewritten before retry() in the
26 * disabled -> enabled transition. If not, then if local irqs are disabled
27 * around the loop, we can deadlock since retry() would always be
28 * comparing the latest value of the mems_allowed seqcount against 0 as
29 * begin() still would see cpusets_enabled() as false. The enabled -> disabled
30 * transition should happen in reverse order for the same reasons (want to stop
31 * looking at real value of mems_allowed.sequence in retry() first).
32 */
33extern struct static_key_false cpusets_pre_enable_key;
21extern struct static_key_false cpusets_enabled_key; 34extern struct static_key_false cpusets_enabled_key;
22static inline bool cpusets_enabled(void) 35static inline bool cpusets_enabled(void)
23{ 36{
@@ -32,12 +45,14 @@ static inline int nr_cpusets(void)
32 45
33static inline void cpuset_inc(void) 46static inline void cpuset_inc(void)
34{ 47{
48 static_branch_inc(&cpusets_pre_enable_key);
35 static_branch_inc(&cpusets_enabled_key); 49 static_branch_inc(&cpusets_enabled_key);
36} 50}
37 51
38static inline void cpuset_dec(void) 52static inline void cpuset_dec(void)
39{ 53{
40 static_branch_dec(&cpusets_enabled_key); 54 static_branch_dec(&cpusets_enabled_key);
55 static_branch_dec(&cpusets_pre_enable_key);
41} 56}
42 57
43extern int cpuset_init(void); 58extern int cpuset_init(void);
@@ -115,7 +130,7 @@ extern void cpuset_print_current_mems_allowed(void);
115 */ 130 */
116static inline unsigned int read_mems_allowed_begin(void) 131static inline unsigned int read_mems_allowed_begin(void)
117{ 132{
118 if (!cpusets_enabled()) 133 if (!static_branch_unlikely(&cpusets_pre_enable_key))
119 return 0; 134 return 0;
120 135
121 return read_seqcount_begin(&current->mems_allowed_seq); 136 return read_seqcount_begin(&current->mems_allowed_seq);
@@ -129,7 +144,7 @@ static inline unsigned int read_mems_allowed_begin(void)
129 */ 144 */
130static inline bool read_mems_allowed_retry(unsigned int seq) 145static inline bool read_mems_allowed_retry(unsigned int seq)
131{ 146{
132 if (!cpusets_enabled()) 147 if (!static_branch_unlikely(&cpusets_enabled_key))
133 return false; 148 return false;
134 149
135 return read_seqcount_retry(&current->mems_allowed_seq, seq); 150 return read_seqcount_retry(&current->mems_allowed_seq, seq);
diff --git a/include/linux/cred.h b/include/linux/cred.h
index c728d515e5e2..099058e1178b 100644
--- a/include/linux/cred.h
+++ b/include/linux/cred.h
@@ -31,7 +31,7 @@ struct group_info {
31 atomic_t usage; 31 atomic_t usage;
32 int ngroups; 32 int ngroups;
33 kgid_t gid[0]; 33 kgid_t gid[0];
34}; 34} __randomize_layout;
35 35
36/** 36/**
37 * get_group_info - Get a reference to a group info structure 37 * get_group_info - Get a reference to a group info structure
@@ -145,7 +145,7 @@ struct cred {
145 struct user_namespace *user_ns; /* user_ns the caps and keyrings are relative to. */ 145 struct user_namespace *user_ns; /* user_ns the caps and keyrings are relative to. */
146 struct group_info *group_info; /* supplementary groups for euid/fsgid */ 146 struct group_info *group_info; /* supplementary groups for euid/fsgid */
147 struct rcu_head rcu; /* RCU deletion hook */ 147 struct rcu_head rcu; /* RCU deletion hook */
148}; 148} __randomize_layout;
149 149
150extern void __put_cred(struct cred *); 150extern void __put_cred(struct cred *);
151extern void exit_creds(struct task_struct *); 151extern void exit_creds(struct task_struct *);
diff --git a/include/linux/crush/crush.h b/include/linux/crush/crush.h
index 92e165d417a6..07eed95e10c7 100644
--- a/include/linux/crush/crush.h
+++ b/include/linux/crush/crush.h
@@ -193,7 +193,7 @@ struct crush_choose_arg {
193struct crush_choose_arg_map { 193struct crush_choose_arg_map {
194#ifdef __KERNEL__ 194#ifdef __KERNEL__
195 struct rb_node node; 195 struct rb_node node;
196 u64 choose_args_index; 196 s64 choose_args_index;
197#endif 197#endif
198 struct crush_choose_arg *args; /*!< replacement for each bucket 198 struct crush_choose_arg *args; /*!< replacement for each bucket
199 in the crushmap */ 199 in the crushmap */
diff --git a/include/linux/dax.h b/include/linux/dax.h
index 794811875732..df97b7af7e2c 100644
--- a/include/linux/dax.h
+++ b/include/linux/dax.h
@@ -87,6 +87,7 @@ size_t dax_copy_from_iter(struct dax_device *dax_dev, pgoff_t pgoff, void *addr,
87void dax_flush(struct dax_device *dax_dev, pgoff_t pgoff, void *addr, 87void dax_flush(struct dax_device *dax_dev, pgoff_t pgoff, void *addr,
88 size_t size); 88 size_t size);
89void dax_write_cache(struct dax_device *dax_dev, bool wc); 89void dax_write_cache(struct dax_device *dax_dev, bool wc);
90bool dax_write_cache_enabled(struct dax_device *dax_dev);
90 91
91/* 92/*
92 * We use lowest available bit in exceptional entry for locking, one bit for 93 * We use lowest available bit in exceptional entry for locking, one bit for
diff --git a/include/linux/dcache.h b/include/linux/dcache.h
index 3f3ff4ccdc3f..aae1cdb76851 100644
--- a/include/linux/dcache.h
+++ b/include/linux/dcache.h
@@ -118,7 +118,7 @@ struct dentry {
118 struct hlist_bl_node d_in_lookup_hash; /* only for in-lookup ones */ 118 struct hlist_bl_node d_in_lookup_hash; /* only for in-lookup ones */
119 struct rcu_head d_rcu; 119 struct rcu_head d_rcu;
120 } d_u; 120 } d_u;
121}; 121} __randomize_layout;
122 122
123/* 123/*
124 * dentry->d_lock spinlock nesting subclasses: 124 * dentry->d_lock spinlock nesting subclasses:
diff --git a/include/linux/device.h b/include/linux/device.h
index 723cd54b94da..beabdbc08420 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -843,7 +843,7 @@ struct dev_links_info {
843 * hibernation, system resume and during runtime PM transitions 843 * hibernation, system resume and during runtime PM transitions
844 * along with subsystem-level and driver-level callbacks. 844 * along with subsystem-level and driver-level callbacks.
845 * @pins: For device pin management. 845 * @pins: For device pin management.
846 * See Documentation/pinctrl.txt for details. 846 * See Documentation/driver-api/pinctl.rst for details.
847 * @msi_list: Hosts MSI descriptors 847 * @msi_list: Hosts MSI descriptors
848 * @msi_domain: The generic MSI domain this device is using. 848 * @msi_domain: The generic MSI domain this device is using.
849 * @numa_node: NUMA node this device is close to. 849 * @numa_node: NUMA node this device is close to.
diff --git a/include/linux/devpts_fs.h b/include/linux/devpts_fs.h
index 277ab9af9ac2..100cb4343763 100644
--- a/include/linux/devpts_fs.h
+++ b/include/linux/devpts_fs.h
@@ -19,6 +19,7 @@
19 19
20struct pts_fs_info; 20struct pts_fs_info;
21 21
22struct vfsmount *devpts_mntget(struct file *, struct pts_fs_info *);
22struct pts_fs_info *devpts_acquire(struct file *); 23struct pts_fs_info *devpts_acquire(struct file *);
23void devpts_release(struct pts_fs_info *); 24void devpts_release(struct pts_fs_info *);
24 25
@@ -32,6 +33,15 @@ void *devpts_get_priv(struct dentry *);
32/* unlink */ 33/* unlink */
33void devpts_pty_kill(struct dentry *); 34void devpts_pty_kill(struct dentry *);
34 35
36/* in pty.c */
37int ptm_open_peer(struct file *master, struct tty_struct *tty, int flags);
38
39#else
40static inline int
41ptm_open_peer(struct file *master, struct tty_struct *tty, int flags)
42{
43 return -EIO;
44}
35#endif 45#endif
36 46
37 47
diff --git a/include/linux/dma-fence.h b/include/linux/dma-fence.h
index a5195a7d6f77..0a186c4f3981 100644
--- a/include/linux/dma-fence.h
+++ b/include/linux/dma-fence.h
@@ -55,6 +55,7 @@ struct dma_fence_cb;
55 * of the time. 55 * of the time.
56 * 56 *
57 * DMA_FENCE_FLAG_SIGNALED_BIT - fence is already signaled 57 * DMA_FENCE_FLAG_SIGNALED_BIT - fence is already signaled
58 * DMA_FENCE_FLAG_TIMESTAMP_BIT - timestamp recorded for fence signaling
58 * DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT - enable_signaling might have been called 59 * DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT - enable_signaling might have been called
59 * DMA_FENCE_FLAG_USER_BITS - start of the unused bits, can be used by the 60 * DMA_FENCE_FLAG_USER_BITS - start of the unused bits, can be used by the
60 * implementer of the fence for its own purposes. Can be used in different 61 * implementer of the fence for its own purposes. Can be used in different
@@ -84,6 +85,7 @@ struct dma_fence {
84 85
85enum dma_fence_flag_bits { 86enum dma_fence_flag_bits {
86 DMA_FENCE_FLAG_SIGNALED_BIT, 87 DMA_FENCE_FLAG_SIGNALED_BIT,
88 DMA_FENCE_FLAG_TIMESTAMP_BIT,
87 DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT, 89 DMA_FENCE_FLAG_ENABLE_SIGNAL_BIT,
88 DMA_FENCE_FLAG_USER_BITS, /* must always be last member */ 90 DMA_FENCE_FLAG_USER_BITS, /* must always be last member */
89}; 91};
diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
index fce2369ecf82..2189c79cde5d 100644
--- a/include/linux/dma-mapping.h
+++ b/include/linux/dma-mapping.h
@@ -158,16 +158,40 @@ static inline int is_device_dma_capable(struct device *dev)
158 * These three functions are only for dma allocator. 158 * These three functions are only for dma allocator.
159 * Don't use them in device drivers. 159 * Don't use them in device drivers.
160 */ 160 */
161int dma_alloc_from_coherent(struct device *dev, ssize_t size, 161int dma_alloc_from_dev_coherent(struct device *dev, ssize_t size,
162 dma_addr_t *dma_handle, void **ret); 162 dma_addr_t *dma_handle, void **ret);
163int dma_release_from_coherent(struct device *dev, int order, void *vaddr); 163int dma_release_from_dev_coherent(struct device *dev, int order, void *vaddr);
164 164
165int dma_mmap_from_coherent(struct device *dev, struct vm_area_struct *vma, 165int dma_mmap_from_dev_coherent(struct device *dev, struct vm_area_struct *vma,
166 void *cpu_addr, size_t size, int *ret); 166 void *cpu_addr, size_t size, int *ret);
167
168void *dma_alloc_from_global_coherent(ssize_t size, dma_addr_t *dma_handle);
169int dma_release_from_global_coherent(int order, void *vaddr);
170int dma_mmap_from_global_coherent(struct vm_area_struct *vma, void *cpu_addr,
171 size_t size, int *ret);
172
167#else 173#else
168#define dma_alloc_from_coherent(dev, size, handle, ret) (0) 174#define dma_alloc_from_dev_coherent(dev, size, handle, ret) (0)
169#define dma_release_from_coherent(dev, order, vaddr) (0) 175#define dma_release_from_dev_coherent(dev, order, vaddr) (0)
170#define dma_mmap_from_coherent(dev, vma, vaddr, order, ret) (0) 176#define dma_mmap_from_dev_coherent(dev, vma, vaddr, order, ret) (0)
177
178static inline void *dma_alloc_from_global_coherent(ssize_t size,
179 dma_addr_t *dma_handle)
180{
181 return NULL;
182}
183
184static inline int dma_release_from_global_coherent(int order, void *vaddr)
185{
186 return 0;
187}
188
189static inline int dma_mmap_from_global_coherent(struct vm_area_struct *vma,
190 void *cpu_addr, size_t size,
191 int *ret)
192{
193 return 0;
194}
171#endif /* CONFIG_HAVE_GENERIC_DMA_COHERENT */ 195#endif /* CONFIG_HAVE_GENERIC_DMA_COHERENT */
172 196
173#ifdef CONFIG_HAS_DMA 197#ifdef CONFIG_HAS_DMA
@@ -482,7 +506,7 @@ static inline void *dma_alloc_attrs(struct device *dev, size_t size,
482 506
483 BUG_ON(!ops); 507 BUG_ON(!ops);
484 508
485 if (dma_alloc_from_coherent(dev, size, dma_handle, &cpu_addr)) 509 if (dma_alloc_from_dev_coherent(dev, size, dma_handle, &cpu_addr))
486 return cpu_addr; 510 return cpu_addr;
487 511
488 if (!arch_dma_alloc_attrs(&dev, &flag)) 512 if (!arch_dma_alloc_attrs(&dev, &flag))
@@ -504,7 +528,7 @@ static inline void dma_free_attrs(struct device *dev, size_t size,
504 BUG_ON(!ops); 528 BUG_ON(!ops);
505 WARN_ON(irqs_disabled()); 529 WARN_ON(irqs_disabled());
506 530
507 if (dma_release_from_coherent(dev, get_order(size), cpu_addr)) 531 if (dma_release_from_dev_coherent(dev, get_order(size), cpu_addr))
508 return; 532 return;
509 533
510 if (!ops->free || !cpu_addr) 534 if (!ops->free || !cpu_addr)
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 7b5d6816542b..6e1fd5d21248 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -296,7 +296,7 @@ struct kiocb {
296 void *private; 296 void *private;
297 int ki_flags; 297 int ki_flags;
298 enum rw_hint ki_hint; 298 enum rw_hint ki_hint;
299}; 299} __randomize_layout;
300 300
301static inline bool is_sync_kiocb(struct kiocb *kiocb) 301static inline bool is_sync_kiocb(struct kiocb *kiocb)
302{ 302{
@@ -404,7 +404,7 @@ struct address_space {
404 struct list_head private_list; /* ditto */ 404 struct list_head private_list; /* ditto */
405 void *private_data; /* ditto */ 405 void *private_data; /* ditto */
406 errseq_t wb_err; 406 errseq_t wb_err;
407} __attribute__((aligned(sizeof(long)))); 407} __attribute__((aligned(sizeof(long)))) __randomize_layout;
408 /* 408 /*
409 * On most architectures that alignment is already the case; but 409 * On most architectures that alignment is already the case; but
410 * must be enforced here for CRIS, to let the least significant bit 410 * must be enforced here for CRIS, to let the least significant bit
@@ -447,7 +447,7 @@ struct block_device {
447 int bd_fsfreeze_count; 447 int bd_fsfreeze_count;
448 /* Mutex for freeze */ 448 /* Mutex for freeze */
449 struct mutex bd_fsfreeze_mutex; 449 struct mutex bd_fsfreeze_mutex;
450}; 450} __randomize_layout;
451 451
452/* 452/*
453 * Radix-tree tags, for tagging dirty and writeback pages within the pagecache 453 * Radix-tree tags, for tagging dirty and writeback pages within the pagecache
@@ -666,7 +666,7 @@ struct inode {
666#endif 666#endif
667 667
668 void *i_private; /* fs or device private pointer */ 668 void *i_private; /* fs or device private pointer */
669}; 669} __randomize_layout;
670 670
671static inline unsigned int i_blocksize(const struct inode *node) 671static inline unsigned int i_blocksize(const struct inode *node)
672{ 672{
@@ -883,7 +883,8 @@ struct file {
883#endif /* #ifdef CONFIG_EPOLL */ 883#endif /* #ifdef CONFIG_EPOLL */
884 struct address_space *f_mapping; 884 struct address_space *f_mapping;
885 errseq_t f_wb_err; 885 errseq_t f_wb_err;
886} __attribute__((aligned(4))); /* lest something weird decides that 2 is OK */ 886} __randomize_layout
887 __attribute__((aligned(4))); /* lest something weird decides that 2 is OK */
887 888
888struct file_handle { 889struct file_handle {
889 __u32 handle_bytes; 890 __u32 handle_bytes;
@@ -1020,7 +1021,7 @@ struct file_lock {
1020 int state; /* state of grant or error if -ve */ 1021 int state; /* state of grant or error if -ve */
1021 } afs; 1022 } afs;
1022 } fl_u; 1023 } fl_u;
1023}; 1024} __randomize_layout;
1024 1025
1025struct file_lock_context { 1026struct file_lock_context {
1026 spinlock_t flc_lock; 1027 spinlock_t flc_lock;
@@ -1412,7 +1413,7 @@ struct super_block {
1412 1413
1413 spinlock_t s_inode_wblist_lock; 1414 spinlock_t s_inode_wblist_lock;
1414 struct list_head s_inodes_wb; /* writeback inodes */ 1415 struct list_head s_inodes_wb; /* writeback inodes */
1415}; 1416} __randomize_layout;
1416 1417
1417/* Helper functions so that in most cases filesystems will 1418/* Helper functions so that in most cases filesystems will
1418 * not need to deal directly with kuid_t and kgid_t and can 1419 * not need to deal directly with kuid_t and kgid_t and can
@@ -1698,7 +1699,7 @@ struct file_operations {
1698 u64); 1699 u64);
1699 ssize_t (*dedupe_file_range)(struct file *, u64, u64, struct file *, 1700 ssize_t (*dedupe_file_range)(struct file *, u64, u64, struct file *,
1700 u64); 1701 u64);
1701}; 1702} __randomize_layout;
1702 1703
1703struct inode_operations { 1704struct inode_operations {
1704 struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int); 1705 struct dentry * (*lookup) (struct inode *,struct dentry *, unsigned int);
diff --git a/include/linux/fs_struct.h b/include/linux/fs_struct.h
index 0efc3e62843a..7a026240cbb1 100644
--- a/include/linux/fs_struct.h
+++ b/include/linux/fs_struct.h
@@ -12,7 +12,7 @@ struct fs_struct {
12 int umask; 12 int umask;
13 int in_exec; 13 int in_exec;
14 struct path root, pwd; 14 struct path root, pwd;
15}; 15} __randomize_layout;
16 16
17extern struct kmem_cache *fs_cachep; 17extern struct kmem_cache *fs_cachep;
18 18
diff --git a/include/linux/ftrace.h b/include/linux/ftrace.h
index 5857390ac35a..6383115e9d2c 100644
--- a/include/linux/ftrace.h
+++ b/include/linux/ftrace.h
@@ -145,8 +145,8 @@ enum {
145#ifdef CONFIG_DYNAMIC_FTRACE 145#ifdef CONFIG_DYNAMIC_FTRACE
146/* The hash used to know what functions callbacks trace */ 146/* The hash used to know what functions callbacks trace */
147struct ftrace_ops_hash { 147struct ftrace_ops_hash {
148 struct ftrace_hash *notrace_hash; 148 struct ftrace_hash __rcu *notrace_hash;
149 struct ftrace_hash *filter_hash; 149 struct ftrace_hash __rcu *filter_hash;
150 struct mutex regex_lock; 150 struct mutex regex_lock;
151}; 151};
152 152
@@ -168,7 +168,7 @@ static inline void ftrace_free_init_mem(void) { }
168 */ 168 */
169struct ftrace_ops { 169struct ftrace_ops {
170 ftrace_func_t func; 170 ftrace_func_t func;
171 struct ftrace_ops *next; 171 struct ftrace_ops __rcu *next;
172 unsigned long flags; 172 unsigned long flags;
173 void *private; 173 void *private;
174 ftrace_func_t saved_func; 174 ftrace_func_t saved_func;
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index 00ca5b86a753..d501d3956f13 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -689,7 +689,8 @@ i2c_unlock_adapter(struct i2c_adapter *adapter)
689#define I2C_CLASS_HWMON (1<<0) /* lm_sensors, ... */ 689#define I2C_CLASS_HWMON (1<<0) /* lm_sensors, ... */
690#define I2C_CLASS_DDC (1<<3) /* DDC bus on graphics adapters */ 690#define I2C_CLASS_DDC (1<<3) /* DDC bus on graphics adapters */
691#define I2C_CLASS_SPD (1<<7) /* Memory modules */ 691#define I2C_CLASS_SPD (1<<7) /* Memory modules */
692#define I2C_CLASS_DEPRECATED (1<<8) /* Warn users that adapter will stop using classes */ 692/* Warn users that the adapter doesn't support classes anymore */
693#define I2C_CLASS_DEPRECATED (1<<8)
693 694
694/* Internal numbers to terminate lists */ 695/* Internal numbers to terminate lists */
695#define I2C_CLIENT_END 0xfffeU 696#define I2C_CLIENT_END 0xfffeU
diff --git a/include/linux/iio/common/st_sensors.h b/include/linux/iio/common/st_sensors.h
index 497f2b3a5a62..97f1b465d04f 100644
--- a/include/linux/iio/common/st_sensors.h
+++ b/include/linux/iio/common/st_sensors.h
@@ -105,6 +105,11 @@ struct st_sensor_fullscale {
105 struct st_sensor_fullscale_avl fs_avl[ST_SENSORS_FULLSCALE_AVL_MAX]; 105 struct st_sensor_fullscale_avl fs_avl[ST_SENSORS_FULLSCALE_AVL_MAX];
106}; 106};
107 107
108struct st_sensor_sim {
109 u8 addr;
110 u8 value;
111};
112
108/** 113/**
109 * struct st_sensor_bdu - ST sensor device block data update 114 * struct st_sensor_bdu - ST sensor device block data update
110 * @addr: address of the register. 115 * @addr: address of the register.
@@ -197,6 +202,7 @@ struct st_sensor_transfer_function {
197 * @bdu: Block data update register. 202 * @bdu: Block data update register.
198 * @das: Data Alignment Selection register. 203 * @das: Data Alignment Selection register.
199 * @drdy_irq: Data ready register of the sensor. 204 * @drdy_irq: Data ready register of the sensor.
205 * @sim: SPI serial interface mode register of the sensor.
200 * @multi_read_bit: Use or not particular bit for [I2C/SPI] multi-read. 206 * @multi_read_bit: Use or not particular bit for [I2C/SPI] multi-read.
201 * @bootime: samples to discard when sensor passing from power-down to power-up. 207 * @bootime: samples to discard when sensor passing from power-down to power-up.
202 */ 208 */
@@ -213,6 +219,7 @@ struct st_sensor_settings {
213 struct st_sensor_bdu bdu; 219 struct st_sensor_bdu bdu;
214 struct st_sensor_das das; 220 struct st_sensor_das das;
215 struct st_sensor_data_ready_irq drdy_irq; 221 struct st_sensor_data_ready_irq drdy_irq;
222 struct st_sensor_sim sim;
216 bool multi_read_bit; 223 bool multi_read_bit;
217 unsigned int bootime; 224 unsigned int bootime;
218}; 225};
diff --git a/include/linux/ipc.h b/include/linux/ipc.h
index 5591f055e13f..fadd579d577d 100644
--- a/include/linux/ipc.h
+++ b/include/linux/ipc.h
@@ -23,6 +23,6 @@ struct kern_ipc_perm {
23 23
24 struct rcu_head rcu; 24 struct rcu_head rcu;
25 atomic_t refcount; 25 atomic_t refcount;
26} ____cacheline_aligned_in_smp; 26} ____cacheline_aligned_in_smp __randomize_layout;
27 27
28#endif /* _LINUX_IPC_H */ 28#endif /* _LINUX_IPC_H */
diff --git a/include/linux/ipc_namespace.h b/include/linux/ipc_namespace.h
index 848e5796400e..65327ee0936b 100644
--- a/include/linux/ipc_namespace.h
+++ b/include/linux/ipc_namespace.h
@@ -61,7 +61,7 @@ struct ipc_namespace {
61 struct ucounts *ucounts; 61 struct ucounts *ucounts;
62 62
63 struct ns_common ns; 63 struct ns_common ns;
64}; 64} __randomize_layout;
65 65
66extern struct ipc_namespace init_ipc_ns; 66extern struct ipc_namespace init_ipc_ns;
67extern spinlock_t mq_lock; 67extern spinlock_t mq_lock;
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h
index e1b442996f81..474d6bbc158c 100644
--- a/include/linux/ipv6.h
+++ b/include/linux/ipv6.h
@@ -128,6 +128,7 @@ struct inet6_skb_parm {
128#define IP6SKB_FRAGMENTED 16 128#define IP6SKB_FRAGMENTED 16
129#define IP6SKB_HOPBYHOP 32 129#define IP6SKB_HOPBYHOP 32
130#define IP6SKB_L3SLAVE 64 130#define IP6SKB_L3SLAVE 64
131#define IP6SKB_JUMBOGRAM 128
131}; 132};
132 133
133#if defined(CONFIG_NET_L3_MASTER_DEV) 134#if defined(CONFIG_NET_L3_MASTER_DEV)
@@ -152,6 +153,11 @@ static inline int inet6_iif(const struct sk_buff *skb)
152 return l3_slave ? skb->skb_iif : IP6CB(skb)->iif; 153 return l3_slave ? skb->skb_iif : IP6CB(skb)->iif;
153} 154}
154 155
156static inline bool inet6_is_jumbogram(const struct sk_buff *skb)
157{
158 return !!(IP6CB(skb)->flags & IP6SKB_JUMBOGRAM);
159}
160
155/* can not be used in TCP layer after tcp_v6_fill_cb */ 161/* can not be used in TCP layer after tcp_v6_fill_cb */
156static inline bool inet6_exact_dif_match(struct net *net, struct sk_buff *skb) 162static inline bool inet6_exact_dif_match(struct net *net, struct sk_buff *skb)
157{ 163{
diff --git a/include/linux/irq.h b/include/linux/irq.h
index 00db35b61e9e..d2d543794093 100644
--- a/include/linux/irq.h
+++ b/include/linux/irq.h
@@ -388,7 +388,12 @@ static inline irq_hw_number_t irqd_to_hwirq(struct irq_data *d)
388 * @irq_mask_ack: ack and mask an interrupt source 388 * @irq_mask_ack: ack and mask an interrupt source
389 * @irq_unmask: unmask an interrupt source 389 * @irq_unmask: unmask an interrupt source
390 * @irq_eoi: end of interrupt 390 * @irq_eoi: end of interrupt
391 * @irq_set_affinity: set the CPU affinity on SMP machines 391 * @irq_set_affinity: Set the CPU affinity on SMP machines. If the force
392 * argument is true, it tells the driver to
393 * unconditionally apply the affinity setting. Sanity
394 * checks against the supplied affinity mask are not
395 * required. This is used for CPU hotplug where the
396 * target CPU is not yet set in the cpu_online_mask.
392 * @irq_retrigger: resend an IRQ to the CPU 397 * @irq_retrigger: resend an IRQ to the CPU
393 * @irq_set_type: set the flow type (IRQ_TYPE_LEVEL/etc.) of an IRQ 398 * @irq_set_type: set the flow type (IRQ_TYPE_LEVEL/etc.) of an IRQ
394 * @irq_set_wake: enable/disable power-management wake-on of an IRQ 399 * @irq_set_wake: enable/disable power-management wake-on of an IRQ
diff --git a/include/linux/jhash.h b/include/linux/jhash.h
index 348c6f47e4cc..8037850f3104 100644
--- a/include/linux/jhash.h
+++ b/include/linux/jhash.h
@@ -85,19 +85,18 @@ static inline u32 jhash(const void *key, u32 length, u32 initval)
85 k += 12; 85 k += 12;
86 } 86 }
87 /* Last block: affect all 32 bits of (c) */ 87 /* Last block: affect all 32 bits of (c) */
88 /* All the case statements fall through */
89 switch (length) { 88 switch (length) {
90 case 12: c += (u32)k[11]<<24; 89 case 12: c += (u32)k[11]<<24; /* fall through */
91 case 11: c += (u32)k[10]<<16; 90 case 11: c += (u32)k[10]<<16; /* fall through */
92 case 10: c += (u32)k[9]<<8; 91 case 10: c += (u32)k[9]<<8; /* fall through */
93 case 9: c += k[8]; 92 case 9: c += k[8]; /* fall through */
94 case 8: b += (u32)k[7]<<24; 93 case 8: b += (u32)k[7]<<24; /* fall through */
95 case 7: b += (u32)k[6]<<16; 94 case 7: b += (u32)k[6]<<16; /* fall through */
96 case 6: b += (u32)k[5]<<8; 95 case 6: b += (u32)k[5]<<8; /* fall through */
97 case 5: b += k[4]; 96 case 5: b += k[4]; /* fall through */
98 case 4: a += (u32)k[3]<<24; 97 case 4: a += (u32)k[3]<<24; /* fall through */
99 case 3: a += (u32)k[2]<<16; 98 case 3: a += (u32)k[2]<<16; /* fall through */
100 case 2: a += (u32)k[1]<<8; 99 case 2: a += (u32)k[1]<<8; /* fall through */
101 case 1: a += k[0]; 100 case 1: a += k[0];
102 __jhash_final(a, b, c); 101 __jhash_final(a, b, c);
103 case 0: /* Nothing left to add */ 102 case 0: /* Nothing left to add */
@@ -131,10 +130,10 @@ static inline u32 jhash2(const u32 *k, u32 length, u32 initval)
131 k += 3; 130 k += 3;
132 } 131 }
133 132
134 /* Handle the last 3 u32's: all the case statements fall through */ 133 /* Handle the last 3 u32's */
135 switch (length) { 134 switch (length) {
136 case 3: c += k[2]; 135 case 3: c += k[2]; /* fall through */
137 case 2: b += k[1]; 136 case 2: b += k[1]; /* fall through */
138 case 1: a += k[0]; 137 case 1: a += k[0];
139 __jhash_final(a, b, c); 138 __jhash_final(a, b, c);
140 case 0: /* Nothing left to add */ 139 case 0: /* Nothing left to add */
diff --git a/include/linux/key-type.h b/include/linux/key-type.h
index 8496cf64575c..9520fc3c3b9a 100644
--- a/include/linux/key-type.h
+++ b/include/linux/key-type.h
@@ -45,7 +45,7 @@ struct key_preparsed_payload {
45 size_t datalen; /* Raw datalen */ 45 size_t datalen; /* Raw datalen */
46 size_t quotalen; /* Quota length for proposed payload */ 46 size_t quotalen; /* Quota length for proposed payload */
47 time_t expiry; /* Expiry time of key */ 47 time_t expiry; /* Expiry time of key */
48}; 48} __randomize_layout;
49 49
50typedef int (*request_key_actor_t)(struct key_construction *key, 50typedef int (*request_key_actor_t)(struct key_construction *key,
51 const char *op, void *aux); 51 const char *op, void *aux);
@@ -158,7 +158,7 @@ struct key_type {
158 /* internal fields */ 158 /* internal fields */
159 struct list_head link; /* link in types list */ 159 struct list_head link; /* link in types list */
160 struct lock_class_key lock_class; /* key->sem lock class */ 160 struct lock_class_key lock_class; /* key->sem lock class */
161}; 161} __randomize_layout;
162 162
163extern struct key_type key_type_keyring; 163extern struct key_type key_type_keyring;
164 164
diff --git a/include/linux/kmod.h b/include/linux/kmod.h
index c4e441e00db5..655082c88fd9 100644
--- a/include/linux/kmod.h
+++ b/include/linux/kmod.h
@@ -64,7 +64,7 @@ struct subprocess_info {
64 int (*init)(struct subprocess_info *info, struct cred *new); 64 int (*init)(struct subprocess_info *info, struct cred *new);
65 void (*cleanup)(struct subprocess_info *info); 65 void (*cleanup)(struct subprocess_info *info);
66 void *data; 66 void *data;
67}; 67} __randomize_layout;
68 68
69extern int 69extern int
70call_usermodehelper(const char *path, char **argv, char **envp, int wait); 70call_usermodehelper(const char *path, char **argv, char **envp, int wait);
diff --git a/include/linux/kobject.h b/include/linux/kobject.h
index eeab34b0f589..4d800c79475a 100644
--- a/include/linux/kobject.h
+++ b/include/linux/kobject.h
@@ -172,7 +172,7 @@ struct kset {
172 spinlock_t list_lock; 172 spinlock_t list_lock;
173 struct kobject kobj; 173 struct kobject kobj;
174 const struct kset_uevent_ops *uevent_ops; 174 const struct kset_uevent_ops *uevent_ops;
175}; 175} __randomize_layout;
176 176
177extern void kset_init(struct kset *kset); 177extern void kset_init(struct kset *kset);
178extern int __must_check kset_register(struct kset *kset); 178extern int __must_check kset_register(struct kset *kset);
diff --git a/include/linux/kthread.h b/include/linux/kthread.h
index 4fec8b775895..82e197eeac91 100644
--- a/include/linux/kthread.h
+++ b/include/linux/kthread.h
@@ -15,7 +15,7 @@ struct task_struct *kthread_create_on_node(int (*threadfn)(void *data),
15 * @threadfn: the function to run in the thread 15 * @threadfn: the function to run in the thread
16 * @data: data pointer for @threadfn() 16 * @data: data pointer for @threadfn()
17 * @namefmt: printf-style format string for the thread name 17 * @namefmt: printf-style format string for the thread name
18 * @...: arguments for @namefmt. 18 * @arg...: arguments for @namefmt.
19 * 19 *
20 * This macro will create a kthread on the current node, leaving it in 20 * This macro will create a kthread on the current node, leaving it in
21 * the stopped state. This is just a helper for kthread_create_on_node(); 21 * the stopped state. This is just a helper for kthread_create_on_node();
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h
index 648b34cabb38..21a6fd6c44af 100644
--- a/include/linux/kvm_host.h
+++ b/include/linux/kvm_host.h
@@ -445,6 +445,7 @@ struct kvm {
445 struct kvm_stat_data **debugfs_stat_data; 445 struct kvm_stat_data **debugfs_stat_data;
446 struct srcu_struct srcu; 446 struct srcu_struct srcu;
447 struct srcu_struct irq_srcu; 447 struct srcu_struct irq_srcu;
448 pid_t userspace_pid;
448}; 449};
449 450
450#define kvm_err(fmt, ...) \ 451#define kvm_err(fmt, ...) \
@@ -476,7 +477,8 @@ struct kvm {
476static inline struct kvm_io_bus *kvm_get_bus(struct kvm *kvm, enum kvm_bus idx) 477static inline struct kvm_io_bus *kvm_get_bus(struct kvm *kvm, enum kvm_bus idx)
477{ 478{
478 return srcu_dereference_check(kvm->buses[idx], &kvm->srcu, 479 return srcu_dereference_check(kvm->buses[idx], &kvm->srcu,
479 lockdep_is_held(&kvm->slots_lock)); 480 lockdep_is_held(&kvm->slots_lock) ||
481 !refcount_read(&kvm->users_count));
480} 482}
481 483
482static inline struct kvm_vcpu *kvm_get_vcpu(struct kvm *kvm, int i) 484static inline struct kvm_vcpu *kvm_get_vcpu(struct kvm *kvm, int i)
@@ -569,7 +571,8 @@ void kvm_put_kvm(struct kvm *kvm);
569static inline struct kvm_memslots *__kvm_memslots(struct kvm *kvm, int as_id) 571static inline struct kvm_memslots *__kvm_memslots(struct kvm *kvm, int as_id)
570{ 572{
571 return srcu_dereference_check(kvm->memslots[as_id], &kvm->srcu, 573 return srcu_dereference_check(kvm->memslots[as_id], &kvm->srcu,
572 lockdep_is_held(&kvm->slots_lock)); 574 lockdep_is_held(&kvm->slots_lock) ||
575 !refcount_read(&kvm->users_count));
573} 576}
574 577
575static inline struct kvm_memslots *kvm_memslots(struct kvm *kvm) 578static inline struct kvm_memslots *kvm_memslots(struct kvm *kvm)
diff --git a/include/linux/libata.h b/include/linux/libata.h
index 55de3da58b1c..931c32f1f18d 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -435,7 +435,7 @@ enum {
435 ATA_HORKAGE_NOLPM = (1 << 20), /* don't use LPM */ 435 ATA_HORKAGE_NOLPM = (1 << 20), /* don't use LPM */
436 ATA_HORKAGE_WD_BROKEN_LPM = (1 << 21), /* some WDs have broken LPM */ 436 ATA_HORKAGE_WD_BROKEN_LPM = (1 << 21), /* some WDs have broken LPM */
437 ATA_HORKAGE_ZERO_AFTER_TRIM = (1 << 22),/* guarantees zero after trim */ 437 ATA_HORKAGE_ZERO_AFTER_TRIM = (1 << 22),/* guarantees zero after trim */
438 ATA_HORKAGE_NO_NCQ_LOG = (1 << 23), /* don't use NCQ for log read */ 438 ATA_HORKAGE_NO_DMA_LOG = (1 << 23), /* don't use DMA for log read */
439 ATA_HORKAGE_NOTRIM = (1 << 24), /* don't use TRIM */ 439 ATA_HORKAGE_NOTRIM = (1 << 24), /* don't use TRIM */
440 ATA_HORKAGE_MAX_SEC_1024 = (1 << 25), /* Limit max sects to 1024 */ 440 ATA_HORKAGE_MAX_SEC_1024 = (1 << 25), /* Limit max sects to 1024 */
441 441
diff --git a/include/linux/llist.h b/include/linux/llist.h
index d11738110a7a..1957635e6d5f 100644
--- a/include/linux/llist.h
+++ b/include/linux/llist.h
@@ -93,6 +93,23 @@ static inline void init_llist_head(struct llist_head *list)
93 container_of(ptr, type, member) 93 container_of(ptr, type, member)
94 94
95/** 95/**
96 * member_address_is_nonnull - check whether the member address is not NULL
97 * @ptr: the object pointer (struct type * that contains the llist_node)
98 * @member: the name of the llist_node within the struct.
99 *
100 * This macro is conceptually the same as
101 * &ptr->member != NULL
102 * but it works around the fact that compilers can decide that taking a member
103 * address is never a NULL pointer.
104 *
105 * Real objects that start at a high address and have a member at NULL are
106 * unlikely to exist, but such pointers may be returned e.g. by the
107 * container_of() macro.
108 */
109#define member_address_is_nonnull(ptr, member) \
110 ((uintptr_t)(ptr) + offsetof(typeof(*(ptr)), member) != 0)
111
112/**
96 * llist_for_each - iterate over some deleted entries of a lock-less list 113 * llist_for_each - iterate over some deleted entries of a lock-less list
97 * @pos: the &struct llist_node to use as a loop cursor 114 * @pos: the &struct llist_node to use as a loop cursor
98 * @node: the first entry of deleted list entries 115 * @node: the first entry of deleted list entries
@@ -145,7 +162,7 @@ static inline void init_llist_head(struct llist_head *list)
145 */ 162 */
146#define llist_for_each_entry(pos, node, member) \ 163#define llist_for_each_entry(pos, node, member) \
147 for ((pos) = llist_entry((node), typeof(*(pos)), member); \ 164 for ((pos) = llist_entry((node), typeof(*(pos)), member); \
148 &(pos)->member != NULL; \ 165 member_address_is_nonnull(pos, member); \
149 (pos) = llist_entry((pos)->member.next, typeof(*(pos)), member)) 166 (pos) = llist_entry((pos)->member.next, typeof(*(pos)), member))
150 167
151/** 168/**
@@ -167,7 +184,7 @@ static inline void init_llist_head(struct llist_head *list)
167 */ 184 */
168#define llist_for_each_entry_safe(pos, n, node, member) \ 185#define llist_for_each_entry_safe(pos, n, node, member) \
169 for (pos = llist_entry((node), typeof(*pos), member); \ 186 for (pos = llist_entry((node), typeof(*pos), member); \
170 &pos->member != NULL && \ 187 member_address_is_nonnull(pos, member) && \
171 (n = llist_entry(pos->member.next, typeof(*n), member), true); \ 188 (n = llist_entry(pos->member.next, typeof(*n), member), true); \
172 pos = n) 189 pos = n)
173 190
diff --git a/include/linux/lsm_hooks.h b/include/linux/lsm_hooks.h
index 7a86925ba8f3..3a90febadbe2 100644
--- a/include/linux/lsm_hooks.h
+++ b/include/linux/lsm_hooks.h
@@ -1912,7 +1912,7 @@ struct security_hook_heads {
1912 struct list_head audit_rule_match; 1912 struct list_head audit_rule_match;
1913 struct list_head audit_rule_free; 1913 struct list_head audit_rule_free;
1914#endif /* CONFIG_AUDIT */ 1914#endif /* CONFIG_AUDIT */
1915}; 1915} __randomize_layout;
1916 1916
1917/* 1917/*
1918 * Security module hook list structure. 1918 * Security module hook list structure.
@@ -1923,7 +1923,7 @@ struct security_hook_list {
1923 struct list_head *head; 1923 struct list_head *head;
1924 union security_list_options hook; 1924 union security_list_options hook;
1925 char *lsm; 1925 char *lsm;
1926}; 1926} __randomize_layout;
1927 1927
1928/* 1928/*
1929 * Initializing a security_hook_list structure takes 1929 * Initializing a security_hook_list structure takes
diff --git a/include/linux/memblock.h b/include/linux/memblock.h
index 77d427974f57..bae11c7e7bf3 100644
--- a/include/linux/memblock.h
+++ b/include/linux/memblock.h
@@ -61,6 +61,7 @@ extern int memblock_debug;
61#ifdef CONFIG_ARCH_DISCARD_MEMBLOCK 61#ifdef CONFIG_ARCH_DISCARD_MEMBLOCK
62#define __init_memblock __meminit 62#define __init_memblock __meminit
63#define __initdata_memblock __meminitdata 63#define __initdata_memblock __meminitdata
64void memblock_discard(void);
64#else 65#else
65#define __init_memblock 66#define __init_memblock
66#define __initdata_memblock 67#define __initdata_memblock
@@ -74,8 +75,6 @@ phys_addr_t memblock_find_in_range_node(phys_addr_t size, phys_addr_t align,
74 int nid, ulong flags); 75 int nid, ulong flags);
75phys_addr_t memblock_find_in_range(phys_addr_t start, phys_addr_t end, 76phys_addr_t memblock_find_in_range(phys_addr_t start, phys_addr_t end,
76 phys_addr_t size, phys_addr_t align); 77 phys_addr_t size, phys_addr_t align);
77phys_addr_t get_allocated_memblock_reserved_regions_info(phys_addr_t *addr);
78phys_addr_t get_allocated_memblock_memory_regions_info(phys_addr_t *addr);
79void memblock_allow_resize(void); 78void memblock_allow_resize(void);
80int memblock_add_node(phys_addr_t base, phys_addr_t size, int nid); 79int memblock_add_node(phys_addr_t base, phys_addr_t size, int nid);
81int memblock_add(phys_addr_t base, phys_addr_t size); 80int memblock_add(phys_addr_t base, phys_addr_t size);
@@ -110,6 +109,9 @@ void __next_mem_range_rev(u64 *idx, int nid, ulong flags,
110void __next_reserved_mem_region(u64 *idx, phys_addr_t *out_start, 109void __next_reserved_mem_region(u64 *idx, phys_addr_t *out_start,
111 phys_addr_t *out_end); 110 phys_addr_t *out_end);
112 111
112void __memblock_free_early(phys_addr_t base, phys_addr_t size);
113void __memblock_free_late(phys_addr_t base, phys_addr_t size);
114
113/** 115/**
114 * for_each_mem_range - iterate through memblock areas from type_a and not 116 * for_each_mem_range - iterate through memblock areas from type_a and not
115 * included in type_b. Or just type_a if type_b is NULL. 117 * included in type_b. Or just type_a if type_b is NULL.
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h
index 3914e3dd6168..9b15a4bcfa77 100644
--- a/include/linux/memcontrol.h
+++ b/include/linux/memcontrol.h
@@ -484,7 +484,8 @@ bool mem_cgroup_oom_synchronize(bool wait);
484extern int do_swap_account; 484extern int do_swap_account;
485#endif 485#endif
486 486
487void lock_page_memcg(struct page *page); 487struct mem_cgroup *lock_page_memcg(struct page *page);
488void __unlock_page_memcg(struct mem_cgroup *memcg);
488void unlock_page_memcg(struct page *page); 489void unlock_page_memcg(struct page *page);
489 490
490static inline unsigned long memcg_page_state(struct mem_cgroup *memcg, 491static inline unsigned long memcg_page_state(struct mem_cgroup *memcg,
@@ -809,7 +810,12 @@ mem_cgroup_print_oom_info(struct mem_cgroup *memcg, struct task_struct *p)
809{ 810{
810} 811}
811 812
812static inline void lock_page_memcg(struct page *page) 813static inline struct mem_cgroup *lock_page_memcg(struct page *page)
814{
815 return NULL;
816}
817
818static inline void __unlock_page_memcg(struct mem_cgroup *memcg)
813{ 819{
814} 820}
815 821
diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h
index d5bed0875d30..b54517c05e9a 100644
--- a/include/linux/mlx4/device.h
+++ b/include/linux/mlx4/device.h
@@ -620,6 +620,7 @@ struct mlx4_caps {
620 u32 dmfs_high_rate_qpn_base; 620 u32 dmfs_high_rate_qpn_base;
621 u32 dmfs_high_rate_qpn_range; 621 u32 dmfs_high_rate_qpn_range;
622 u32 vf_caps; 622 u32 vf_caps;
623 bool wol_port[MLX4_MAX_PORTS + 1];
623 struct mlx4_rate_limit_caps rl_caps; 624 struct mlx4_rate_limit_caps rl_caps;
624}; 625};
625 626
@@ -1068,7 +1069,7 @@ static inline int mlx4_is_eth(struct mlx4_dev *dev, int port)
1068} 1069}
1069 1070
1070int mlx4_buf_alloc(struct mlx4_dev *dev, int size, int max_direct, 1071int mlx4_buf_alloc(struct mlx4_dev *dev, int size, int max_direct,
1071 struct mlx4_buf *buf, gfp_t gfp); 1072 struct mlx4_buf *buf);
1072void mlx4_buf_free(struct mlx4_dev *dev, int size, struct mlx4_buf *buf); 1073void mlx4_buf_free(struct mlx4_dev *dev, int size, struct mlx4_buf *buf);
1073static inline void *mlx4_buf_offset(struct mlx4_buf *buf, int offset) 1074static inline void *mlx4_buf_offset(struct mlx4_buf *buf, int offset)
1074{ 1075{
@@ -1105,10 +1106,9 @@ int mlx4_mw_enable(struct mlx4_dev *dev, struct mlx4_mw *mw);
1105int mlx4_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt, 1106int mlx4_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
1106 int start_index, int npages, u64 *page_list); 1107 int start_index, int npages, u64 *page_list);
1107int mlx4_buf_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt, 1108int mlx4_buf_write_mtt(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
1108 struct mlx4_buf *buf, gfp_t gfp); 1109 struct mlx4_buf *buf);
1109 1110
1110int mlx4_db_alloc(struct mlx4_dev *dev, struct mlx4_db *db, int order, 1111int mlx4_db_alloc(struct mlx4_dev *dev, struct mlx4_db *db, int order);
1111 gfp_t gfp);
1112void mlx4_db_free(struct mlx4_dev *dev, struct mlx4_db *db); 1112void mlx4_db_free(struct mlx4_dev *dev, struct mlx4_db *db);
1113 1113
1114int mlx4_alloc_hwq_res(struct mlx4_dev *dev, struct mlx4_hwq_resources *wqres, 1114int mlx4_alloc_hwq_res(struct mlx4_dev *dev, struct mlx4_hwq_resources *wqres,
@@ -1124,8 +1124,7 @@ int mlx4_qp_reserve_range(struct mlx4_dev *dev, int cnt, int align,
1124 int *base, u8 flags); 1124 int *base, u8 flags);
1125void mlx4_qp_release_range(struct mlx4_dev *dev, int base_qpn, int cnt); 1125void mlx4_qp_release_range(struct mlx4_dev *dev, int base_qpn, int cnt);
1126 1126
1127int mlx4_qp_alloc(struct mlx4_dev *dev, int qpn, struct mlx4_qp *qp, 1127int mlx4_qp_alloc(struct mlx4_dev *dev, int qpn, struct mlx4_qp *qp);
1128 gfp_t gfp);
1129void mlx4_qp_free(struct mlx4_dev *dev, struct mlx4_qp *qp); 1128void mlx4_qp_free(struct mlx4_dev *dev, struct mlx4_qp *qp);
1130 1129
1131int mlx4_srq_alloc(struct mlx4_dev *dev, u32 pdn, u32 cqn, u16 xrcdn, 1130int mlx4_srq_alloc(struct mlx4_dev *dev, u32 pdn, u32 cqn, u16 xrcdn,
diff --git a/include/linux/mlx5/mlx5_ifc.h b/include/linux/mlx5/mlx5_ifc.h
index 87869c04849a..3030121b4746 100644
--- a/include/linux/mlx5/mlx5_ifc.h
+++ b/include/linux/mlx5/mlx5_ifc.h
@@ -7749,8 +7749,10 @@ struct mlx5_ifc_pcam_reg_bits {
7749}; 7749};
7750 7750
7751struct mlx5_ifc_mcam_enhanced_features_bits { 7751struct mlx5_ifc_mcam_enhanced_features_bits {
7752 u8 reserved_at_0[0x7f]; 7752 u8 reserved_at_0[0x7d];
7753 7753
7754 u8 mtpps_enh_out_per_adj[0x1];
7755 u8 mtpps_fs[0x1];
7754 u8 pcie_performance_group[0x1]; 7756 u8 pcie_performance_group[0x1];
7755}; 7757};
7756 7758
@@ -8159,7 +8161,8 @@ struct mlx5_ifc_mtpps_reg_bits {
8159 u8 reserved_at_78[0x4]; 8161 u8 reserved_at_78[0x4];
8160 u8 cap_pin_4_mode[0x4]; 8162 u8 cap_pin_4_mode[0x4];
8161 8163
8162 u8 reserved_at_80[0x80]; 8164 u8 field_select[0x20];
8165 u8 reserved_at_a0[0x60];
8163 8166
8164 u8 enable[0x1]; 8167 u8 enable[0x1];
8165 u8 reserved_at_101[0xb]; 8168 u8 reserved_at_101[0xb];
@@ -8174,8 +8177,9 @@ struct mlx5_ifc_mtpps_reg_bits {
8174 8177
8175 u8 out_pulse_duration[0x10]; 8178 u8 out_pulse_duration[0x10];
8176 u8 out_periodic_adjustment[0x10]; 8179 u8 out_periodic_adjustment[0x10];
8180 u8 enhanced_out_periodic_adjustment[0x20];
8177 8181
8178 u8 reserved_at_1a0[0x60]; 8182 u8 reserved_at_1c0[0x20];
8179}; 8183};
8180 8184
8181struct mlx5_ifc_mtppse_reg_bits { 8185struct mlx5_ifc_mtppse_reg_bits {
diff --git a/include/linux/mlx5/qp.h b/include/linux/mlx5/qp.h
index 6f41270d80c0..f378dc0e7eaf 100644
--- a/include/linux/mlx5/qp.h
+++ b/include/linux/mlx5/qp.h
@@ -212,7 +212,6 @@ struct mlx5_wqe_ctrl_seg {
212#define MLX5_WQE_CTRL_OPCODE_MASK 0xff 212#define MLX5_WQE_CTRL_OPCODE_MASK 0xff
213#define MLX5_WQE_CTRL_WQE_INDEX_MASK 0x00ffff00 213#define MLX5_WQE_CTRL_WQE_INDEX_MASK 0x00ffff00
214#define MLX5_WQE_CTRL_WQE_INDEX_SHIFT 8 214#define MLX5_WQE_CTRL_WQE_INDEX_SHIFT 8
215#define MLX5_WQE_AV_EXT 0x80000000
216 215
217enum { 216enum {
218 MLX5_ETH_WQE_L3_INNER_CSUM = 1 << 4, 217 MLX5_ETH_WQE_L3_INNER_CSUM = 1 << 4,
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index 45cdb27791a3..3cadee0a3508 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -342,7 +342,7 @@ struct vm_area_struct {
342 struct mempolicy *vm_policy; /* NUMA policy for the VMA */ 342 struct mempolicy *vm_policy; /* NUMA policy for the VMA */
343#endif 343#endif
344 struct vm_userfaultfd_ctx vm_userfaultfd_ctx; 344 struct vm_userfaultfd_ctx vm_userfaultfd_ctx;
345}; 345} __randomize_layout;
346 346
347struct core_thread { 347struct core_thread {
348 struct task_struct *task; 348 struct task_struct *task;
@@ -487,20 +487,22 @@ struct mm_struct {
487 /* numa_scan_seq prevents two threads setting pte_numa */ 487 /* numa_scan_seq prevents two threads setting pte_numa */
488 int numa_scan_seq; 488 int numa_scan_seq;
489#endif 489#endif
490#if defined(CONFIG_NUMA_BALANCING) || defined(CONFIG_COMPACTION)
491 /* 490 /*
492 * An operation with batched TLB flushing is going on. Anything that 491 * An operation with batched TLB flushing is going on. Anything that
493 * can move process memory needs to flush the TLB when moving a 492 * can move process memory needs to flush the TLB when moving a
494 * PROT_NONE or PROT_NUMA mapped page. 493 * PROT_NONE or PROT_NUMA mapped page.
495 */ 494 */
496 bool tlb_flush_pending; 495 atomic_t tlb_flush_pending;
496#ifdef CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH
497 /* See flush_tlb_batched_pending() */
498 bool tlb_flush_batched;
497#endif 499#endif
498 struct uprobes_state uprobes_state; 500 struct uprobes_state uprobes_state;
499#ifdef CONFIG_HUGETLB_PAGE 501#ifdef CONFIG_HUGETLB_PAGE
500 atomic_long_t hugetlb_usage; 502 atomic_long_t hugetlb_usage;
501#endif 503#endif
502 struct work_struct async_put_work; 504 struct work_struct async_put_work;
503}; 505} __randomize_layout;
504 506
505extern struct mm_struct init_mm; 507extern struct mm_struct init_mm;
506 508
@@ -518,46 +520,60 @@ static inline cpumask_t *mm_cpumask(struct mm_struct *mm)
518 return mm->cpu_vm_mask_var; 520 return mm->cpu_vm_mask_var;
519} 521}
520 522
521#if defined(CONFIG_NUMA_BALANCING) || defined(CONFIG_COMPACTION) 523struct mmu_gather;
524extern void tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm,
525 unsigned long start, unsigned long end);
526extern void tlb_finish_mmu(struct mmu_gather *tlb,
527 unsigned long start, unsigned long end);
528
522/* 529/*
523 * Memory barriers to keep this state in sync are graciously provided by 530 * Memory barriers to keep this state in sync are graciously provided by
524 * the page table locks, outside of which no page table modifications happen. 531 * the page table locks, outside of which no page table modifications happen.
525 * The barriers below prevent the compiler from re-ordering the instructions 532 * The barriers are used to ensure the order between tlb_flush_pending updates,
526 * around the memory barriers that are already present in the code. 533 * which happen while the lock is not taken, and the PTE updates, which happen
534 * while the lock is taken, are serialized.
527 */ 535 */
528static inline bool mm_tlb_flush_pending(struct mm_struct *mm) 536static inline bool mm_tlb_flush_pending(struct mm_struct *mm)
529{ 537{
530 barrier(); 538 return atomic_read(&mm->tlb_flush_pending) > 0;
531 return mm->tlb_flush_pending; 539}
540
541/*
542 * Returns true if there are two above TLB batching threads in parallel.
543 */
544static inline bool mm_tlb_flush_nested(struct mm_struct *mm)
545{
546 return atomic_read(&mm->tlb_flush_pending) > 1;
547}
548
549static inline void init_tlb_flush_pending(struct mm_struct *mm)
550{
551 atomic_set(&mm->tlb_flush_pending, 0);
532} 552}
533static inline void set_tlb_flush_pending(struct mm_struct *mm) 553
554static inline void inc_tlb_flush_pending(struct mm_struct *mm)
534{ 555{
535 mm->tlb_flush_pending = true; 556 atomic_inc(&mm->tlb_flush_pending);
536 557
537 /* 558 /*
538 * Guarantee that the tlb_flush_pending store does not leak into the 559 * Guarantee that the tlb_flush_pending increase does not leak into the
539 * critical section updating the page tables 560 * critical section updating the page tables
540 */ 561 */
541 smp_mb__before_spinlock(); 562 smp_mb__before_spinlock();
542} 563}
564
543/* Clearing is done after a TLB flush, which also provides a barrier. */ 565/* Clearing is done after a TLB flush, which also provides a barrier. */
544static inline void clear_tlb_flush_pending(struct mm_struct *mm) 566static inline void dec_tlb_flush_pending(struct mm_struct *mm)
545{
546 barrier();
547 mm->tlb_flush_pending = false;
548}
549#else
550static inline bool mm_tlb_flush_pending(struct mm_struct *mm)
551{
552 return false;
553}
554static inline void set_tlb_flush_pending(struct mm_struct *mm)
555{
556}
557static inline void clear_tlb_flush_pending(struct mm_struct *mm)
558{ 567{
568 /*
569 * Guarantee that the tlb_flush_pending does not not leak into the
570 * critical section, since we must order the PTE change and changes to
571 * the pending TLB flush indication. We could have relied on TLB flush
572 * as a memory barrier, but this behavior is not clearly documented.
573 */
574 smp_mb__before_atomic();
575 atomic_dec(&mm->tlb_flush_pending);
559} 576}
560#endif
561 577
562struct vm_fault; 578struct vm_fault;
563 579
diff --git a/include/linux/module.h b/include/linux/module.h
index 8eb9a1e693e5..e7bdd549e527 100644
--- a/include/linux/module.h
+++ b/include/linux/module.h
@@ -45,7 +45,7 @@ struct module_kobject {
45 struct kobject *drivers_dir; 45 struct kobject *drivers_dir;
46 struct module_param_attrs *mp; 46 struct module_param_attrs *mp;
47 struct completion *kobj_completion; 47 struct completion *kobj_completion;
48}; 48} __randomize_layout;
49 49
50struct module_attribute { 50struct module_attribute {
51 struct attribute attr; 51 struct attribute attr;
@@ -475,7 +475,7 @@ struct module {
475 ctor_fn_t *ctors; 475 ctor_fn_t *ctors;
476 unsigned int num_ctors; 476 unsigned int num_ctors;
477#endif 477#endif
478} ____cacheline_aligned; 478} ____cacheline_aligned __randomize_layout;
479#ifndef MODULE_ARCH_INIT 479#ifndef MODULE_ARCH_INIT
480#define MODULE_ARCH_INIT {} 480#define MODULE_ARCH_INIT {}
481#endif 481#endif
diff --git a/include/linux/mount.h b/include/linux/mount.h
index 8e0352af06b7..1ce85e6fd95f 100644
--- a/include/linux/mount.h
+++ b/include/linux/mount.h
@@ -67,7 +67,7 @@ struct vfsmount {
67 struct dentry *mnt_root; /* root of the mounted tree */ 67 struct dentry *mnt_root; /* root of the mounted tree */
68 struct super_block *mnt_sb; /* pointer to superblock */ 68 struct super_block *mnt_sb; /* pointer to superblock */
69 int mnt_flags; 69 int mnt_flags;
70}; 70} __randomize_layout;
71 71
72struct file; /* forward dec */ 72struct file; /* forward dec */
73struct path; 73struct path;
diff --git a/include/linux/msg.h b/include/linux/msg.h
index f3f302f9c197..a001305f5a79 100644
--- a/include/linux/msg.h
+++ b/include/linux/msg.h
@@ -29,7 +29,7 @@ struct msg_queue {
29 struct list_head q_messages; 29 struct list_head q_messages;
30 struct list_head q_receivers; 30 struct list_head q_receivers;
31 struct list_head q_senders; 31 struct list_head q_senders;
32}; 32} __randomize_layout;
33 33
34/* Helper routines for sys_msgsnd and sys_msgrcv */ 34/* Helper routines for sys_msgsnd and sys_msgrcv */
35extern long do_msgsnd(int msqid, long mtype, void __user *mtext, 35extern long do_msgsnd(int msqid, long mtype, void __user *mtext,
diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h
index 892148c448cc..5216d2eb2289 100644
--- a/include/linux/mtd/nand.h
+++ b/include/linux/mtd/nand.h
@@ -681,10 +681,10 @@ struct nand_buffers {
681 * @tWW_min: WP# transition to WE# low 681 * @tWW_min: WP# transition to WE# low
682 */ 682 */
683struct nand_sdr_timings { 683struct nand_sdr_timings {
684 u32 tBERS_max; 684 u64 tBERS_max;
685 u32 tCCS_min; 685 u32 tCCS_min;
686 u32 tPROG_max; 686 u64 tPROG_max;
687 u32 tR_max; 687 u64 tR_max;
688 u32 tALH_min; 688 u32 tALH_min;
689 u32 tADL_min; 689 u32 tADL_min;
690 u32 tALS_min; 690 u32 tALS_min;
diff --git a/include/linux/net.h b/include/linux/net.h
index dda2cc939a53..ebeb48c92005 100644
--- a/include/linux/net.h
+++ b/include/linux/net.h
@@ -37,7 +37,7 @@ struct net;
37 37
38/* Historically, SOCKWQ_ASYNC_NOSPACE & SOCKWQ_ASYNC_WAITDATA were located 38/* Historically, SOCKWQ_ASYNC_NOSPACE & SOCKWQ_ASYNC_WAITDATA were located
39 * in sock->flags, but moved into sk->sk_wq->flags to be RCU protected. 39 * in sock->flags, but moved into sk->sk_wq->flags to be RCU protected.
40 * Eventually all flags will be in sk->sk_wq_flags. 40 * Eventually all flags will be in sk->sk_wq->flags.
41 */ 41 */
42#define SOCKWQ_ASYNC_NOSPACE 0 42#define SOCKWQ_ASYNC_NOSPACE 0
43#define SOCKWQ_ASYNC_WAITDATA 1 43#define SOCKWQ_ASYNC_WAITDATA 1
diff --git a/include/linux/netfilter.h b/include/linux/netfilter.h
index a4b97be30b28..22f081065d49 100644
--- a/include/linux/netfilter.h
+++ b/include/linux/netfilter.h
@@ -61,8 +61,6 @@ typedef unsigned int nf_hookfn(void *priv,
61 struct sk_buff *skb, 61 struct sk_buff *skb,
62 const struct nf_hook_state *state); 62 const struct nf_hook_state *state);
63struct nf_hook_ops { 63struct nf_hook_ops {
64 struct list_head list;
65
66 /* User fills in from here down. */ 64 /* User fills in from here down. */
67 nf_hookfn *hook; 65 nf_hookfn *hook;
68 struct net_device *dev; 66 struct net_device *dev;
@@ -160,13 +158,6 @@ int nf_register_net_hooks(struct net *net, const struct nf_hook_ops *reg,
160void nf_unregister_net_hooks(struct net *net, const struct nf_hook_ops *reg, 158void nf_unregister_net_hooks(struct net *net, const struct nf_hook_ops *reg,
161 unsigned int n); 159 unsigned int n);
162 160
163int nf_register_hook(struct nf_hook_ops *reg);
164void nf_unregister_hook(struct nf_hook_ops *reg);
165int nf_register_hooks(struct nf_hook_ops *reg, unsigned int n);
166void nf_unregister_hooks(struct nf_hook_ops *reg, unsigned int n);
167int _nf_register_hooks(struct nf_hook_ops *reg, unsigned int n);
168void _nf_unregister_hooks(struct nf_hook_ops *reg, unsigned int n);
169
170/* Functions to register get/setsockopt ranges (non-inclusive). You 161/* Functions to register get/setsockopt ranges (non-inclusive). You
171 need to check permissions yourself! */ 162 need to check permissions yourself! */
172int nf_register_sockopt(struct nf_sockopt_ops *reg); 163int nf_register_sockopt(struct nf_sockopt_ops *reg);
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h
index e52cc55ac300..5cc91d6381a3 100644
--- a/include/linux/nfs_fs.h
+++ b/include/linux/nfs_fs.h
@@ -51,7 +51,7 @@ struct nfs_access_entry {
51 struct list_head lru; 51 struct list_head lru;
52 unsigned long jiffies; 52 unsigned long jiffies;
53 struct rpc_cred * cred; 53 struct rpc_cred * cred;
54 int mask; 54 __u32 mask;
55 struct rcu_head rcu_head; 55 struct rcu_head rcu_head;
56}; 56};
57 57
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h
index ca3bcc4ed4e5..62cbcb842f99 100644
--- a/include/linux/nfs_xdr.h
+++ b/include/linux/nfs_xdr.h
@@ -1235,7 +1235,7 @@ struct nfs41_state_protection {
1235 1235
1236struct nfs41_exchange_id_args { 1236struct nfs41_exchange_id_args {
1237 struct nfs_client *client; 1237 struct nfs_client *client;
1238 nfs4_verifier *verifier; 1238 nfs4_verifier verifier;
1239 u32 flags; 1239 u32 flags;
1240 struct nfs41_state_protection state_protect; 1240 struct nfs41_state_protection state_protect;
1241}; 1241};
diff --git a/include/linux/nmi.h b/include/linux/nmi.h
index 8aa01fd859fb..a36abe2da13e 100644
--- a/include/linux/nmi.h
+++ b/include/linux/nmi.h
@@ -168,6 +168,14 @@ extern int sysctl_hardlockup_all_cpu_backtrace;
168#define sysctl_softlockup_all_cpu_backtrace 0 168#define sysctl_softlockup_all_cpu_backtrace 0
169#define sysctl_hardlockup_all_cpu_backtrace 0 169#define sysctl_hardlockup_all_cpu_backtrace 0
170#endif 170#endif
171
172#if defined(CONFIG_HARDLOCKUP_CHECK_TIMESTAMP) && \
173 defined(CONFIG_HARDLOCKUP_DETECTOR)
174void watchdog_update_hrtimer_threshold(u64 period);
175#else
176static inline void watchdog_update_hrtimer_threshold(u64 period) { }
177#endif
178
171extern bool is_hardlockup(void); 179extern bool is_hardlockup(void);
172struct ctl_table; 180struct ctl_table;
173extern int proc_watchdog(struct ctl_table *, int , 181extern int proc_watchdog(struct ctl_table *, int ,
diff --git a/include/linux/nvme-fc-driver.h b/include/linux/nvme-fc-driver.h
index 6c8c5d8041b7..2591878c1d48 100644
--- a/include/linux/nvme-fc-driver.h
+++ b/include/linux/nvme-fc-driver.h
@@ -346,6 +346,11 @@ struct nvme_fc_remote_port {
346 * indicating an FC transport Aborted status. 346 * indicating an FC transport Aborted status.
347 * Entrypoint is Mandatory. 347 * Entrypoint is Mandatory.
348 * 348 *
349 * @defer_rcv: Called by the transport to signal the LLLD that it has
350 * begun processing of a previously received NVME CMD IU. The LLDD
351 * is now free to re-use the rcv buffer associated with the
352 * nvmefc_tgt_fcp_req.
353 *
349 * @max_hw_queues: indicates the maximum number of hw queues the LLDD 354 * @max_hw_queues: indicates the maximum number of hw queues the LLDD
350 * supports for cpu affinitization. 355 * supports for cpu affinitization.
351 * Value is Mandatory. Must be at least 1. 356 * Value is Mandatory. Must be at least 1.
@@ -846,6 +851,8 @@ struct nvmet_fc_target_template {
846 struct nvmefc_tgt_fcp_req *fcpreq); 851 struct nvmefc_tgt_fcp_req *fcpreq);
847 void (*fcp_req_release)(struct nvmet_fc_target_port *tgtport, 852 void (*fcp_req_release)(struct nvmet_fc_target_port *tgtport,
848 struct nvmefc_tgt_fcp_req *fcpreq); 853 struct nvmefc_tgt_fcp_req *fcpreq);
854 void (*defer_rcv)(struct nvmet_fc_target_port *tgtport,
855 struct nvmefc_tgt_fcp_req *fcpreq);
849 856
850 u32 max_hw_queues; 857 u32 max_hw_queues;
851 u16 max_sgl_segments; 858 u16 max_sgl_segments;
diff --git a/include/linux/nvme-fc.h b/include/linux/nvme-fc.h
index 21c37e39e41a..36cca93a5ff2 100644
--- a/include/linux/nvme-fc.h
+++ b/include/linux/nvme-fc.h
@@ -334,5 +334,24 @@ struct fcnvme_ls_disconnect_acc {
334#define NVME_FC_LS_TIMEOUT_SEC 2 /* 2 seconds */ 334#define NVME_FC_LS_TIMEOUT_SEC 2 /* 2 seconds */
335#define NVME_FC_TGTOP_TIMEOUT_SEC 2 /* 2 seconds */ 335#define NVME_FC_TGTOP_TIMEOUT_SEC 2 /* 2 seconds */
336 336
337/*
338 * TRADDR string must be of form "nn-<16hexdigits>:pn-<16hexdigits>"
339 * the string is allowed to be specified with or without a "0x" prefix
340 * infront of the <16hexdigits>. Without is considered the "min" string
341 * and with is considered the "max" string. The hexdigits may be upper
342 * or lower case.
343 */
344#define NVME_FC_TRADDR_NNLEN 3 /* "?n-" */
345#define NVME_FC_TRADDR_OXNNLEN 5 /* "?n-0x" */
346#define NVME_FC_TRADDR_HEXNAMELEN 16
347#define NVME_FC_TRADDR_MINLENGTH \
348 (2 * (NVME_FC_TRADDR_NNLEN + NVME_FC_TRADDR_HEXNAMELEN) + 1)
349#define NVME_FC_TRADDR_MAXLENGTH \
350 (2 * (NVME_FC_TRADDR_OXNNLEN + NVME_FC_TRADDR_HEXNAMELEN) + 1)
351#define NVME_FC_TRADDR_MIN_PN_OFFSET \
352 (NVME_FC_TRADDR_NNLEN + NVME_FC_TRADDR_HEXNAMELEN + 1)
353#define NVME_FC_TRADDR_MAX_PN_OFFSET \
354 (NVME_FC_TRADDR_OXNNLEN + NVME_FC_TRADDR_HEXNAMELEN + 1)
355
337 356
338#endif /* _NVME_FC_H */ 357#endif /* _NVME_FC_H */
diff --git a/include/linux/nvme.h b/include/linux/nvme.h
index 6b8ee9e628e1..25d8225dbd04 100644
--- a/include/linux/nvme.h
+++ b/include/linux/nvme.h
@@ -963,14 +963,14 @@ struct nvme_dbbuf {
963}; 963};
964 964
965struct streams_directive_params { 965struct streams_directive_params {
966 __u16 msl; 966 __le16 msl;
967 __u16 nssa; 967 __le16 nssa;
968 __u16 nsso; 968 __le16 nsso;
969 __u8 rsvd[10]; 969 __u8 rsvd[10];
970 __u32 sws; 970 __le32 sws;
971 __u16 sgs; 971 __le16 sgs;
972 __u16 nsa; 972 __le16 nsa;
973 __u16 nso; 973 __le16 nso;
974 __u8 rsvd2[6]; 974 __u8 rsvd2[6];
975}; 975};
976 976
@@ -1006,7 +1006,7 @@ static inline bool nvme_is_write(struct nvme_command *cmd)
1006 * Why can't we simply have a Fabrics In and Fabrics out command? 1006 * Why can't we simply have a Fabrics In and Fabrics out command?
1007 */ 1007 */
1008 if (unlikely(cmd->common.opcode == nvme_fabrics_command)) 1008 if (unlikely(cmd->common.opcode == nvme_fabrics_command))
1009 return cmd->fabrics.opcode & 1; 1009 return cmd->fabrics.fctype & 1;
1010 return cmd->common.opcode & 1; 1010 return cmd->common.opcode & 1;
1011} 1011}
1012 1012
diff --git a/include/linux/oom.h b/include/linux/oom.h
index 8a266e2be5a6..76aac4ce39bc 100644
--- a/include/linux/oom.h
+++ b/include/linux/oom.h
@@ -6,6 +6,8 @@
6#include <linux/types.h> 6#include <linux/types.h>
7#include <linux/nodemask.h> 7#include <linux/nodemask.h>
8#include <uapi/linux/oom.h> 8#include <uapi/linux/oom.h>
9#include <linux/sched/coredump.h> /* MMF_* */
10#include <linux/mm.h> /* VM_FAULT* */
9 11
10struct zonelist; 12struct zonelist;
11struct notifier_block; 13struct notifier_block;
@@ -63,6 +65,26 @@ static inline bool tsk_is_oom_victim(struct task_struct * tsk)
63 return tsk->signal->oom_mm; 65 return tsk->signal->oom_mm;
64} 66}
65 67
68/*
69 * Checks whether a page fault on the given mm is still reliable.
70 * This is no longer true if the oom reaper started to reap the
71 * address space which is reflected by MMF_UNSTABLE flag set in
72 * the mm. At that moment any !shared mapping would lose the content
73 * and could cause a memory corruption (zero pages instead of the
74 * original content).
75 *
76 * User should call this before establishing a page table entry for
77 * a !shared mapping and under the proper page table lock.
78 *
79 * Return 0 when the PF is safe VM_FAULT_SIGBUS otherwise.
80 */
81static inline int check_stable_address_space(struct mm_struct *mm)
82{
83 if (unlikely(test_bit(MMF_UNSTABLE, &mm->flags)))
84 return VM_FAULT_SIGBUS;
85 return 0;
86}
87
66extern unsigned long oom_badness(struct task_struct *p, 88extern unsigned long oom_badness(struct task_struct *p,
67 struct mem_cgroup *memcg, const nodemask_t *nodemask, 89 struct mem_cgroup *memcg, const nodemask_t *nodemask,
68 unsigned long totalpages); 90 unsigned long totalpages);
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h
index baa9344dcd10..79b36f57c3ba 100644
--- a/include/linux/pagemap.h
+++ b/include/linux/pagemap.h
@@ -163,8 +163,6 @@ void release_pages(struct page **pages, int nr, bool cold);
163 */ 163 */
164static inline int page_cache_get_speculative(struct page *page) 164static inline int page_cache_get_speculative(struct page *page)
165{ 165{
166 VM_BUG_ON(in_interrupt());
167
168#ifdef CONFIG_TINY_RCU 166#ifdef CONFIG_TINY_RCU
169# ifdef CONFIG_PREEMPT_COUNT 167# ifdef CONFIG_PREEMPT_COUNT
170 VM_BUG_ON(!in_atomic() && !irqs_disabled()); 168 VM_BUG_ON(!in_atomic() && !irqs_disabled());
diff --git a/include/linux/path.h b/include/linux/path.h
index d1372186f431..cde895cc4af4 100644
--- a/include/linux/path.h
+++ b/include/linux/path.h
@@ -7,7 +7,7 @@ struct vfsmount;
7struct path { 7struct path {
8 struct vfsmount *mnt; 8 struct vfsmount *mnt;
9 struct dentry *dentry; 9 struct dentry *dentry;
10}; 10} __randomize_layout;
11 11
12extern void path_get(const struct path *); 12extern void path_get(const struct path *);
13extern void path_put(const struct path *); 13extern void path_put(const struct path *);
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 4869e66dd659..f958d0732af6 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -188,6 +188,8 @@ enum pci_dev_flags {
188 * the direct_complete optimization. 188 * the direct_complete optimization.
189 */ 189 */
190 PCI_DEV_FLAGS_NEEDS_RESUME = (__force pci_dev_flags_t) (1 << 11), 190 PCI_DEV_FLAGS_NEEDS_RESUME = (__force pci_dev_flags_t) (1 << 11),
191 /* Don't use Relaxed Ordering for TLPs directed at this device */
192 PCI_DEV_FLAGS_NO_RELAXED_ORDERING = (__force pci_dev_flags_t) (1 << 12),
191}; 193};
192 194
193enum pci_irq_reroute_variant { 195enum pci_irq_reroute_variant {
@@ -1067,6 +1069,7 @@ void pcie_flr(struct pci_dev *dev);
1067int __pci_reset_function(struct pci_dev *dev); 1069int __pci_reset_function(struct pci_dev *dev);
1068int __pci_reset_function_locked(struct pci_dev *dev); 1070int __pci_reset_function_locked(struct pci_dev *dev);
1069int pci_reset_function(struct pci_dev *dev); 1071int pci_reset_function(struct pci_dev *dev);
1072int pci_reset_function_locked(struct pci_dev *dev);
1070int pci_try_reset_function(struct pci_dev *dev); 1073int pci_try_reset_function(struct pci_dev *dev);
1071int pci_probe_reset_slot(struct pci_slot *slot); 1074int pci_probe_reset_slot(struct pci_slot *slot);
1072int pci_reset_slot(struct pci_slot *slot); 1075int pci_reset_slot(struct pci_slot *slot);
@@ -1125,6 +1128,7 @@ bool pci_check_pme_status(struct pci_dev *dev);
1125void pci_pme_wakeup_bus(struct pci_bus *bus); 1128void pci_pme_wakeup_bus(struct pci_bus *bus);
1126void pci_d3cold_enable(struct pci_dev *dev); 1129void pci_d3cold_enable(struct pci_dev *dev);
1127void pci_d3cold_disable(struct pci_dev *dev); 1130void pci_d3cold_disable(struct pci_dev *dev);
1131bool pcie_relaxed_ordering_enabled(struct pci_dev *dev);
1128 1132
1129/* PCI Virtual Channel */ 1133/* PCI Virtual Channel */
1130int pci_save_vc_state(struct pci_dev *dev); 1134int pci_save_vc_state(struct pci_dev *dev);
diff --git a/include/linux/perf/arm_pmu.h b/include/linux/perf/arm_pmu.h
index 1360dd6d5e61..af0f44effd44 100644
--- a/include/linux/perf/arm_pmu.h
+++ b/include/linux/perf/arm_pmu.h
@@ -24,10 +24,14 @@
24 * interrupt and passed the address of the low level handler, 24 * interrupt and passed the address of the low level handler,
25 * and can be used to implement any platform specific handling 25 * and can be used to implement any platform specific handling
26 * before or after calling it. 26 * before or after calling it.
27 *
28 * @irq_flags: if non-zero, these flags will be passed to request_irq
29 * when requesting interrupts for this PMU device.
27 */ 30 */
28struct arm_pmu_platdata { 31struct arm_pmu_platdata {
29 irqreturn_t (*handle_irq)(int irq, void *dev, 32 irqreturn_t (*handle_irq)(int irq, void *dev,
30 irq_handler_t pmu_handler); 33 irq_handler_t pmu_handler);
34 unsigned long irq_flags;
31}; 35};
32 36
33#ifdef CONFIG_ARM_PMU 37#ifdef CONFIG_ARM_PMU
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h
index a3b873fc59e4..b14095bcf4bb 100644
--- a/include/linux/perf_event.h
+++ b/include/linux/perf_event.h
@@ -310,8 +310,8 @@ struct pmu {
310 * Notification that the event was mapped or unmapped. Called 310 * Notification that the event was mapped or unmapped. Called
311 * in the context of the mapping task. 311 * in the context of the mapping task.
312 */ 312 */
313 void (*event_mapped) (struct perf_event *event); /*optional*/ 313 void (*event_mapped) (struct perf_event *event, struct mm_struct *mm); /* optional */
314 void (*event_unmapped) (struct perf_event *event); /*optional*/ 314 void (*event_unmapped) (struct perf_event *event, struct mm_struct *mm); /* optional */
315 315
316 /* 316 /*
317 * Flags for ->add()/->del()/ ->start()/->stop(). There are 317 * Flags for ->add()/->del()/ ->start()/->stop(). There are
diff --git a/include/linux/phy.h b/include/linux/phy.h
index 2a9567bb8186..0bb5b212ab42 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -830,7 +830,7 @@ static inline int phy_read_status(struct phy_device *phydev)
830 dev_err(&_phydev->mdio.dev, format, ##args) 830 dev_err(&_phydev->mdio.dev, format, ##args)
831 831
832#define phydev_dbg(_phydev, format, args...) \ 832#define phydev_dbg(_phydev, format, args...) \
833 dev_dbg(&_phydev->mdio.dev, format, ##args); 833 dev_dbg(&_phydev->mdio.dev, format, ##args)
834 834
835static inline const char *phydev_name(const struct phy_device *phydev) 835static inline const char *phydev_name(const struct phy_device *phydev)
836{ 836{
diff --git a/include/linux/pid.h b/include/linux/pid.h
index 4d179316e431..719582744a2e 100644
--- a/include/linux/pid.h
+++ b/include/linux/pid.h
@@ -8,7 +8,9 @@ enum pid_type
8 PIDTYPE_PID, 8 PIDTYPE_PID,
9 PIDTYPE_PGID, 9 PIDTYPE_PGID,
10 PIDTYPE_SID, 10 PIDTYPE_SID,
11 PIDTYPE_MAX 11 PIDTYPE_MAX,
12 /* only valid to __task_pid_nr_ns() */
13 __PIDTYPE_TGID
12}; 14};
13 15
14/* 16/*
diff --git a/include/linux/pid_namespace.h b/include/linux/pid_namespace.h
index c2a989dee876..b09136f88cf4 100644
--- a/include/linux/pid_namespace.h
+++ b/include/linux/pid_namespace.h
@@ -52,7 +52,7 @@ struct pid_namespace {
52 int hide_pid; 52 int hide_pid;
53 int reboot; /* group exit code if this pidns was rebooted */ 53 int reboot; /* group exit code if this pidns was rebooted */
54 struct ns_common ns; 54 struct ns_common ns;
55}; 55} __randomize_layout;
56 56
57extern struct pid_namespace init_pid_ns; 57extern struct pid_namespace init_pid_ns;
58 58
diff --git a/include/linux/pinctrl/pinconf-generic.h b/include/linux/pinctrl/pinconf-generic.h
index 231d3075815a..e91d1b6a260d 100644
--- a/include/linux/pinctrl/pinconf-generic.h
+++ b/include/linux/pinctrl/pinconf-generic.h
@@ -81,8 +81,8 @@
81 * it. 81 * it.
82 * @PIN_CONFIG_OUTPUT: this will configure the pin as an output and drive a 82 * @PIN_CONFIG_OUTPUT: this will configure the pin as an output and drive a
83 * value on the line. Use argument 1 to indicate high level, argument 0 to 83 * value on the line. Use argument 1 to indicate high level, argument 0 to
84 * indicate low level. (Please see Documentation/pinctrl.txt, section 84 * indicate low level. (Please see Documentation/driver-api/pinctl.rst,
85 * "GPIO mode pitfalls" for a discussion around this parameter.) 85 * section "GPIO mode pitfalls" for a discussion around this parameter.)
86 * @PIN_CONFIG_POWER_SOURCE: if the pin can select between different power 86 * @PIN_CONFIG_POWER_SOURCE: if the pin can select between different power
87 * supplies, the argument to this parameter (on a custom format) tells 87 * supplies, the argument to this parameter (on a custom format) tells
88 * the driver which alternative power source to use. 88 * the driver which alternative power source to use.
diff --git a/include/linux/platform_data/hsmmc-omap.h b/include/linux/platform_data/hsmmc-omap.h
index 8e981be2e2c2..0ff1e0dba720 100644
--- a/include/linux/platform_data/hsmmc-omap.h
+++ b/include/linux/platform_data/hsmmc-omap.h
@@ -55,9 +55,6 @@ struct omap_hsmmc_platform_data {
55 u32 caps; /* Used for the MMC driver on 2430 and later */ 55 u32 caps; /* Used for the MMC driver on 2430 and later */
56 u32 pm_caps; /* PM capabilities of the mmc */ 56 u32 pm_caps; /* PM capabilities of the mmc */
57 57
58 /* use the internal clock */
59 unsigned internal_clock:1;
60
61 /* nonremovable e.g. eMMC */ 58 /* nonremovable e.g. eMMC */
62 unsigned nonremovable:1; 59 unsigned nonremovable:1;
63 60
@@ -73,13 +70,6 @@ struct omap_hsmmc_platform_data {
73 int gpio_cd; /* gpio (card detect) */ 70 int gpio_cd; /* gpio (card detect) */
74 int gpio_cod; /* gpio (cover detect) */ 71 int gpio_cod; /* gpio (cover detect) */
75 int gpio_wp; /* gpio (write protect) */ 72 int gpio_wp; /* gpio (write protect) */
76
77 int (*set_power)(struct device *dev, int power_on, int vdd);
78 void (*remux)(struct device *dev, int power_on);
79 /* Call back before enabling / disabling regulators */
80 void (*before_set_reg)(struct device *dev, int power_on, int vdd);
81 /* Call back after enabling / disabling regulators */
82 void (*after_set_reg)(struct device *dev, int power_on, int vdd);
83 /* if we have special card, init it using this callback */ 73 /* if we have special card, init it using this callback */
84 void (*init_card)(struct mmc_card *card); 74 void (*init_card)(struct mmc_card *card);
85 75
diff --git a/include/linux/platform_data/st_sensors_pdata.h b/include/linux/platform_data/st_sensors_pdata.h
index 79b0e4cdb814..f8274b0c6888 100644
--- a/include/linux/platform_data/st_sensors_pdata.h
+++ b/include/linux/platform_data/st_sensors_pdata.h
@@ -17,10 +17,12 @@
17 * Available only for accelerometer and pressure sensors. 17 * Available only for accelerometer and pressure sensors.
18 * Accelerometer DRDY on LSM330 available only on pin 1 (see datasheet). 18 * Accelerometer DRDY on LSM330 available only on pin 1 (see datasheet).
19 * @open_drain: set the interrupt line to be open drain if possible. 19 * @open_drain: set the interrupt line to be open drain if possible.
20 * @spi_3wire: enable spi-3wire mode.
20 */ 21 */
21struct st_sensors_platform_data { 22struct st_sensors_platform_data {
22 u8 drdy_int_pin; 23 u8 drdy_int_pin;
23 bool open_drain; 24 bool open_drain;
25 bool spi_3wire;
24}; 26};
25 27
26#endif /* ST_SENSORS_PDATA_H */ 28#endif /* ST_SENSORS_PDATA_H */
diff --git a/include/linux/proc_ns.h b/include/linux/proc_ns.h
index 58ab28d81fc2..06844b54dfc1 100644
--- a/include/linux/proc_ns.h
+++ b/include/linux/proc_ns.h
@@ -21,7 +21,7 @@ struct proc_ns_operations {
21 int (*install)(struct nsproxy *nsproxy, struct ns_common *ns); 21 int (*install)(struct nsproxy *nsproxy, struct ns_common *ns);
22 struct user_namespace *(*owner)(struct ns_common *ns); 22 struct user_namespace *(*owner)(struct ns_common *ns);
23 struct ns_common *(*get_parent)(struct ns_common *ns); 23 struct ns_common *(*get_parent)(struct ns_common *ns);
24}; 24} __randomize_layout;
25 25
26extern const struct proc_ns_operations netns_operations; 26extern const struct proc_ns_operations netns_operations;
27extern const struct proc_ns_operations utsns_operations; 27extern const struct proc_ns_operations utsns_operations;
diff --git a/include/linux/ptp_clock_kernel.h b/include/linux/ptp_clock_kernel.h
index a026bfd089db..51349d124ee5 100644
--- a/include/linux/ptp_clock_kernel.h
+++ b/include/linux/ptp_clock_kernel.h
@@ -99,6 +99,11 @@ struct system_device_crosststamp;
99 * parameter func: the desired function to use. 99 * parameter func: the desired function to use.
100 * parameter chan: the function channel index to use. 100 * parameter chan: the function channel index to use.
101 * 101 *
102 * @do_work: Request driver to perform auxiliary (periodic) operations
103 * Driver should return delay of the next auxiliary work scheduling
104 * time (>=0) or negative value in case further scheduling
105 * is not required.
106 *
102 * Drivers should embed their ptp_clock_info within a private 107 * Drivers should embed their ptp_clock_info within a private
103 * structure, obtaining a reference to it using container_of(). 108 * structure, obtaining a reference to it using container_of().
104 * 109 *
@@ -126,6 +131,7 @@ struct ptp_clock_info {
126 struct ptp_clock_request *request, int on); 131 struct ptp_clock_request *request, int on);
127 int (*verify)(struct ptp_clock_info *ptp, unsigned int pin, 132 int (*verify)(struct ptp_clock_info *ptp, unsigned int pin,
128 enum ptp_pin_function func, unsigned int chan); 133 enum ptp_pin_function func, unsigned int chan);
134 long (*do_aux_work)(struct ptp_clock_info *ptp);
129}; 135};
130 136
131struct ptp_clock; 137struct ptp_clock;
@@ -211,6 +217,16 @@ extern int ptp_clock_index(struct ptp_clock *ptp);
211int ptp_find_pin(struct ptp_clock *ptp, 217int ptp_find_pin(struct ptp_clock *ptp,
212 enum ptp_pin_function func, unsigned int chan); 218 enum ptp_pin_function func, unsigned int chan);
213 219
220/**
221 * ptp_schedule_worker() - schedule ptp auxiliary work
222 *
223 * @ptp: The clock obtained from ptp_clock_register().
224 * @delay: number of jiffies to wait before queuing
225 * See kthread_queue_delayed_work() for more info.
226 */
227
228int ptp_schedule_worker(struct ptp_clock *ptp, unsigned long delay);
229
214#else 230#else
215static inline struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info, 231static inline struct ptp_clock *ptp_clock_register(struct ptp_clock_info *info,
216 struct device *parent) 232 struct device *parent)
@@ -225,6 +241,10 @@ static inline int ptp_clock_index(struct ptp_clock *ptp)
225static inline int ptp_find_pin(struct ptp_clock *ptp, 241static inline int ptp_find_pin(struct ptp_clock *ptp,
226 enum ptp_pin_function func, unsigned int chan) 242 enum ptp_pin_function func, unsigned int chan)
227{ return -1; } 243{ return -1; }
244static inline int ptp_schedule_worker(struct ptp_clock *ptp,
245 unsigned long delay)
246{ return -EOPNOTSUPP; }
247
228#endif 248#endif
229 249
230#endif 250#endif
diff --git a/include/linux/ptr_ring.h b/include/linux/ptr_ring.h
index d8c97ec8a8e6..37b4bb2545b3 100644
--- a/include/linux/ptr_ring.h
+++ b/include/linux/ptr_ring.h
@@ -436,9 +436,9 @@ static inline int ptr_ring_consume_batched_bh(struct ptr_ring *r,
436 __PTR_RING_PEEK_CALL_v; \ 436 __PTR_RING_PEEK_CALL_v; \
437}) 437})
438 438
439static inline void **__ptr_ring_init_queue_alloc(int size, gfp_t gfp) 439static inline void **__ptr_ring_init_queue_alloc(unsigned int size, gfp_t gfp)
440{ 440{
441 return kzalloc(ALIGN(size * sizeof(void *), SMP_CACHE_BYTES), gfp); 441 return kcalloc(size, sizeof(void *), gfp);
442} 442}
443 443
444static inline void __ptr_ring_set_size(struct ptr_ring *r, int size) 444static inline void __ptr_ring_set_size(struct ptr_ring *r, int size)
@@ -582,7 +582,8 @@ static inline int ptr_ring_resize(struct ptr_ring *r, int size, gfp_t gfp,
582 * In particular if you consume ring in interrupt or BH context, you must 582 * In particular if you consume ring in interrupt or BH context, you must
583 * disable interrupts/BH when doing so. 583 * disable interrupts/BH when doing so.
584 */ 584 */
585static inline int ptr_ring_resize_multiple(struct ptr_ring **rings, int nrings, 585static inline int ptr_ring_resize_multiple(struct ptr_ring **rings,
586 unsigned int nrings,
586 int size, 587 int size,
587 gfp_t gfp, void (*destroy)(void *)) 588 gfp_t gfp, void (*destroy)(void *))
588{ 589{
@@ -590,7 +591,7 @@ static inline int ptr_ring_resize_multiple(struct ptr_ring **rings, int nrings,
590 void ***queues; 591 void ***queues;
591 int i; 592 int i;
592 593
593 queues = kmalloc(nrings * sizeof *queues, gfp); 594 queues = kmalloc_array(nrings, sizeof(*queues), gfp);
594 if (!queues) 595 if (!queues)
595 goto noqueues; 596 goto noqueues;
596 597
diff --git a/include/linux/sched.h b/include/linux/sched.h
index 2ba9ec93423f..c05ac5f5aa03 100644
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
@@ -426,7 +426,7 @@ struct sched_rt_entity {
426 /* rq "owned" by this entity/group: */ 426 /* rq "owned" by this entity/group: */
427 struct rt_rq *my_q; 427 struct rt_rq *my_q;
428#endif 428#endif
429}; 429} __randomize_layout;
430 430
431struct sched_dl_entity { 431struct sched_dl_entity {
432 struct rb_node rb_node; 432 struct rb_node rb_node;
@@ -526,6 +526,13 @@ struct task_struct {
526#endif 526#endif
527 /* -1 unrunnable, 0 runnable, >0 stopped: */ 527 /* -1 unrunnable, 0 runnable, >0 stopped: */
528 volatile long state; 528 volatile long state;
529
530 /*
531 * This begins the randomizable portion of task_struct. Only
532 * scheduling-critical items should be added above here.
533 */
534 randomized_struct_fields_start
535
529 void *stack; 536 void *stack;
530 atomic_t usage; 537 atomic_t usage;
531 /* Per task flags (PF_*), defined further below: */ 538 /* Per task flags (PF_*), defined further below: */
@@ -1079,6 +1086,13 @@ struct task_struct {
1079 /* Used by LSM modules for access restriction: */ 1086 /* Used by LSM modules for access restriction: */
1080 void *security; 1087 void *security;
1081#endif 1088#endif
1089
1090 /*
1091 * New fields for task_struct should be added above here, so that
1092 * they are included in the randomized portion of task_struct.
1093 */
1094 randomized_struct_fields_end
1095
1082 /* CPU-specific state of this task: */ 1096 /* CPU-specific state of this task: */
1083 struct thread_struct thread; 1097 struct thread_struct thread;
1084 1098
@@ -1149,13 +1163,6 @@ static inline pid_t task_tgid_nr(struct task_struct *tsk)
1149 return tsk->tgid; 1163 return tsk->tgid;
1150} 1164}
1151 1165
1152extern pid_t task_tgid_nr_ns(struct task_struct *tsk, struct pid_namespace *ns);
1153
1154static inline pid_t task_tgid_vnr(struct task_struct *tsk)
1155{
1156 return pid_vnr(task_tgid(tsk));
1157}
1158
1159/** 1166/**
1160 * pid_alive - check that a task structure is not stale 1167 * pid_alive - check that a task structure is not stale
1161 * @p: Task structure to be checked. 1168 * @p: Task structure to be checked.
@@ -1171,23 +1178,6 @@ static inline int pid_alive(const struct task_struct *p)
1171 return p->pids[PIDTYPE_PID].pid != NULL; 1178 return p->pids[PIDTYPE_PID].pid != NULL;
1172} 1179}
1173 1180
1174static inline pid_t task_ppid_nr_ns(const struct task_struct *tsk, struct pid_namespace *ns)
1175{
1176 pid_t pid = 0;
1177
1178 rcu_read_lock();
1179 if (pid_alive(tsk))
1180 pid = task_tgid_nr_ns(rcu_dereference(tsk->real_parent), ns);
1181 rcu_read_unlock();
1182
1183 return pid;
1184}
1185
1186static inline pid_t task_ppid_nr(const struct task_struct *tsk)
1187{
1188 return task_ppid_nr_ns(tsk, &init_pid_ns);
1189}
1190
1191static inline pid_t task_pgrp_nr_ns(struct task_struct *tsk, struct pid_namespace *ns) 1181static inline pid_t task_pgrp_nr_ns(struct task_struct *tsk, struct pid_namespace *ns)
1192{ 1182{
1193 return __task_pid_nr_ns(tsk, PIDTYPE_PGID, ns); 1183 return __task_pid_nr_ns(tsk, PIDTYPE_PGID, ns);
@@ -1209,6 +1199,33 @@ static inline pid_t task_session_vnr(struct task_struct *tsk)
1209 return __task_pid_nr_ns(tsk, PIDTYPE_SID, NULL); 1199 return __task_pid_nr_ns(tsk, PIDTYPE_SID, NULL);
1210} 1200}
1211 1201
1202static inline pid_t task_tgid_nr_ns(struct task_struct *tsk, struct pid_namespace *ns)
1203{
1204 return __task_pid_nr_ns(tsk, __PIDTYPE_TGID, ns);
1205}
1206
1207static inline pid_t task_tgid_vnr(struct task_struct *tsk)
1208{
1209 return __task_pid_nr_ns(tsk, __PIDTYPE_TGID, NULL);
1210}
1211
1212static inline pid_t task_ppid_nr_ns(const struct task_struct *tsk, struct pid_namespace *ns)
1213{
1214 pid_t pid = 0;
1215
1216 rcu_read_lock();
1217 if (pid_alive(tsk))
1218 pid = task_tgid_nr_ns(rcu_dereference(tsk->real_parent), ns);
1219 rcu_read_unlock();
1220
1221 return pid;
1222}
1223
1224static inline pid_t task_ppid_nr(const struct task_struct *tsk)
1225{
1226 return task_ppid_nr_ns(tsk, &init_pid_ns);
1227}
1228
1212/* Obsolete, do not use: */ 1229/* Obsolete, do not use: */
1213static inline pid_t task_pgrp_nr(struct task_struct *tsk) 1230static inline pid_t task_pgrp_nr(struct task_struct *tsk)
1214{ 1231{
diff --git a/include/linux/sched/signal.h b/include/linux/sched/signal.h
index c06d63b3a583..2a0dd40b15db 100644
--- a/include/linux/sched/signal.h
+++ b/include/linux/sched/signal.h
@@ -222,7 +222,7 @@ struct signal_struct {
222 struct mutex cred_guard_mutex; /* guard against foreign influences on 222 struct mutex cred_guard_mutex; /* guard against foreign influences on
223 * credential calculations 223 * credential calculations
224 * (notably. ptrace) */ 224 * (notably. ptrace) */
225}; 225} __randomize_layout;
226 226
227/* 227/*
228 * Bits in flags field of signal_struct. 228 * Bits in flags field of signal_struct.
diff --git a/include/linux/sem.h b/include/linux/sem.h
index be5cf2ea14ad..de2deb8676bd 100644
--- a/include/linux/sem.h
+++ b/include/linux/sem.h
@@ -41,7 +41,7 @@ struct sem_array {
41 unsigned int use_global_lock;/* >0: global lock required */ 41 unsigned int use_global_lock;/* >0: global lock required */
42 42
43 struct sem sems[]; 43 struct sem sems[];
44}; 44} __randomize_layout;
45 45
46#ifdef CONFIG_SYSVIPC 46#ifdef CONFIG_SYSVIPC
47 47
diff --git a/include/linux/shm.h b/include/linux/shm.h
index 04e881829625..0fb7061ec54c 100644
--- a/include/linux/shm.h
+++ b/include/linux/shm.h
@@ -22,7 +22,7 @@ struct shmid_kernel /* private to the kernel */
22 /* The task created the shm object. NULL if the task is dead. */ 22 /* The task created the shm object. NULL if the task is dead. */
23 struct task_struct *shm_creator; 23 struct task_struct *shm_creator;
24 struct list_head shm_clist; /* list by creator */ 24 struct list_head shm_clist; /* list by creator */
25}; 25} __randomize_layout;
26 26
27/* shm_mode upper byte flags */ 27/* shm_mode upper byte flags */
28#define SHM_DEST 01000 /* segment will be destroyed on last detach */ 28#define SHM_DEST 01000 /* segment will be destroyed on last detach */
diff --git a/include/linux/skb_array.h b/include/linux/skb_array.h
index 35226cd4efb0..8621ffdeecbf 100644
--- a/include/linux/skb_array.h
+++ b/include/linux/skb_array.h
@@ -193,7 +193,8 @@ static inline int skb_array_resize(struct skb_array *a, int size, gfp_t gfp)
193} 193}
194 194
195static inline int skb_array_resize_multiple(struct skb_array **rings, 195static inline int skb_array_resize_multiple(struct skb_array **rings,
196 int nrings, int size, gfp_t gfp) 196 int nrings, unsigned int size,
197 gfp_t gfp)
197{ 198{
198 BUILD_BUG_ON(offsetof(struct skb_array, ring)); 199 BUILD_BUG_ON(offsetof(struct skb_array, ring));
199 return ptr_ring_resize_multiple((struct ptr_ring **)rings, 200 return ptr_ring_resize_multiple((struct ptr_ring **)rings,
diff --git a/include/linux/sync_file.h b/include/linux/sync_file.h
index 5726107963b2..0ad87c434ae6 100644
--- a/include/linux/sync_file.h
+++ b/include/linux/sync_file.h
@@ -43,12 +43,13 @@ struct sync_file {
43#endif 43#endif
44 44
45 wait_queue_head_t wq; 45 wait_queue_head_t wq;
46 unsigned long flags;
46 47
47 struct dma_fence *fence; 48 struct dma_fence *fence;
48 struct dma_fence_cb cb; 49 struct dma_fence_cb cb;
49}; 50};
50 51
51#define POLL_ENABLED DMA_FENCE_FLAG_USER_BITS 52#define POLL_ENABLED 0
52 53
53struct sync_file *sync_file_create(struct dma_fence *fence); 54struct sync_file *sync_file_create(struct dma_fence *fence);
54struct dma_fence *sync_file_get_fence(int fd); 55struct dma_fence *sync_file_get_fence(int fd);
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h
index 3a89b9ff4cdc..1d4dba490fb6 100644
--- a/include/linux/sysctl.h
+++ b/include/linux/sysctl.h
@@ -120,7 +120,7 @@ struct ctl_table
120 struct ctl_table_poll *poll; 120 struct ctl_table_poll *poll;
121 void *extra1; 121 void *extra1;
122 void *extra2; 122 void *extra2;
123}; 123} __randomize_layout;
124 124
125struct ctl_node { 125struct ctl_node {
126 struct rb_node node; 126 struct rb_node node;
diff --git a/include/linux/trace_events.h b/include/linux/trace_events.h
index f73cedfa2e0b..536c80ff7ad9 100644
--- a/include/linux/trace_events.h
+++ b/include/linux/trace_events.h
@@ -338,7 +338,7 @@ enum {
338struct trace_event_file { 338struct trace_event_file {
339 struct list_head list; 339 struct list_head list;
340 struct trace_event_call *event_call; 340 struct trace_event_call *event_call;
341 struct event_filter *filter; 341 struct event_filter __rcu *filter;
342 struct dentry *dir; 342 struct dentry *dir;
343 struct trace_array *tr; 343 struct trace_array *tr;
344 struct trace_subsystem_dir *system; 344 struct trace_subsystem_dir *system;
diff --git a/include/linux/tty.h b/include/linux/tty.h
index 69464c0d8068..79c30daf46a9 100644
--- a/include/linux/tty.h
+++ b/include/linux/tty.h
@@ -332,7 +332,7 @@ struct tty_struct {
332 /* If the tty has a pending do_SAK, queue it here - akpm */ 332 /* If the tty has a pending do_SAK, queue it here - akpm */
333 struct work_struct SAK_work; 333 struct work_struct SAK_work;
334 struct tty_port *port; 334 struct tty_port *port;
335}; 335} __randomize_layout;
336 336
337/* Each of a tty's open files has private_data pointing to tty_file_private */ 337/* Each of a tty's open files has private_data pointing to tty_file_private */
338struct tty_file_private { 338struct tty_file_private {
diff --git a/include/linux/tty_driver.h b/include/linux/tty_driver.h
index b742b5e47cc2..00b2213f6a35 100644
--- a/include/linux/tty_driver.h
+++ b/include/linux/tty_driver.h
@@ -291,7 +291,7 @@ struct tty_operations {
291 void (*poll_put_char)(struct tty_driver *driver, int line, char ch); 291 void (*poll_put_char)(struct tty_driver *driver, int line, char ch);
292#endif 292#endif
293 const struct file_operations *proc_fops; 293 const struct file_operations *proc_fops;
294}; 294} __randomize_layout;
295 295
296struct tty_driver { 296struct tty_driver {
297 int magic; /* magic number for this structure */ 297 int magic; /* magic number for this structure */
@@ -325,7 +325,7 @@ struct tty_driver {
325 325
326 const struct tty_operations *ops; 326 const struct tty_operations *ops;
327 struct list_head tty_drivers; 327 struct list_head tty_drivers;
328}; 328} __randomize_layout;
329 329
330extern struct list_head tty_drivers; 330extern struct list_head tty_drivers;
331 331
diff --git a/include/linux/usb/audio-v2.h b/include/linux/usb/audio-v2.h
index c5f2158ab00e..fd73bc0e9027 100644
--- a/include/linux/usb/audio-v2.h
+++ b/include/linux/usb/audio-v2.h
@@ -115,13 +115,13 @@ struct uac2_input_terminal_descriptor {
115 __u8 bDescriptorType; 115 __u8 bDescriptorType;
116 __u8 bDescriptorSubtype; 116 __u8 bDescriptorSubtype;
117 __u8 bTerminalID; 117 __u8 bTerminalID;
118 __u16 wTerminalType; 118 __le16 wTerminalType;
119 __u8 bAssocTerminal; 119 __u8 bAssocTerminal;
120 __u8 bCSourceID; 120 __u8 bCSourceID;
121 __u8 bNrChannels; 121 __u8 bNrChannels;
122 __u32 bmChannelConfig; 122 __le32 bmChannelConfig;
123 __u8 iChannelNames; 123 __u8 iChannelNames;
124 __u16 bmControls; 124 __le16 bmControls;
125 __u8 iTerminal; 125 __u8 iTerminal;
126} __attribute__((packed)); 126} __attribute__((packed));
127 127
@@ -132,11 +132,11 @@ struct uac2_output_terminal_descriptor {
132 __u8 bDescriptorType; 132 __u8 bDescriptorType;
133 __u8 bDescriptorSubtype; 133 __u8 bDescriptorSubtype;
134 __u8 bTerminalID; 134 __u8 bTerminalID;
135 __u16 wTerminalType; 135 __le16 wTerminalType;
136 __u8 bAssocTerminal; 136 __u8 bAssocTerminal;
137 __u8 bSourceID; 137 __u8 bSourceID;
138 __u8 bCSourceID; 138 __u8 bCSourceID;
139 __u16 bmControls; 139 __le16 bmControls;
140 __u8 iTerminal; 140 __u8 iTerminal;
141} __attribute__((packed)); 141} __attribute__((packed));
142 142
@@ -164,9 +164,9 @@ struct uac2_as_header_descriptor {
164 __u8 bTerminalLink; 164 __u8 bTerminalLink;
165 __u8 bmControls; 165 __u8 bmControls;
166 __u8 bFormatType; 166 __u8 bFormatType;
167 __u32 bmFormats; 167 __le32 bmFormats;
168 __u8 bNrChannels; 168 __u8 bNrChannels;
169 __u32 bmChannelConfig; 169 __le32 bmChannelConfig;
170 __u8 iChannelNames; 170 __u8 iChannelNames;
171} __attribute__((packed)); 171} __attribute__((packed));
172 172
diff --git a/include/linux/usb/cdc_ncm.h b/include/linux/usb/cdc_ncm.h
index 021f7a88f52c..1a59699cf82a 100644
--- a/include/linux/usb/cdc_ncm.h
+++ b/include/linux/usb/cdc_ncm.h
@@ -83,6 +83,7 @@
83/* Driver flags */ 83/* Driver flags */
84#define CDC_NCM_FLAG_NDP_TO_END 0x02 /* NDP is placed at end of frame */ 84#define CDC_NCM_FLAG_NDP_TO_END 0x02 /* NDP is placed at end of frame */
85#define CDC_MBIM_FLAG_AVOID_ALTSETTING_TOGGLE 0x04 /* Avoid altsetting toggle during init */ 85#define CDC_MBIM_FLAG_AVOID_ALTSETTING_TOGGLE 0x04 /* Avoid altsetting toggle during init */
86#define CDC_NCM_FLAG_RESET_NTB16 0x08 /* set NDP16 one more time after altsetting switch */
86 87
87#define cdc_ncm_comm_intf_is_mbim(x) ((x)->desc.bInterfaceSubClass == USB_CDC_SUBCLASS_MBIM && \ 88#define cdc_ncm_comm_intf_is_mbim(x) ((x)->desc.bInterfaceSubClass == USB_CDC_SUBCLASS_MBIM && \
88 (x)->desc.bInterfaceProtocol == USB_CDC_PROTO_NONE) 89 (x)->desc.bInterfaceProtocol == USB_CDC_PROTO_NONE)
diff --git a/include/linux/user_namespace.h b/include/linux/user_namespace.h
index 32354b4b4b2b..b3575ce29148 100644
--- a/include/linux/user_namespace.h
+++ b/include/linux/user_namespace.h
@@ -66,7 +66,7 @@ struct user_namespace {
66#endif 66#endif
67 struct ucounts *ucounts; 67 struct ucounts *ucounts;
68 int ucount_max[UCOUNT_COUNTS]; 68 int ucount_max[UCOUNT_COUNTS];
69}; 69} __randomize_layout;
70 70
71struct ucounts { 71struct ucounts {
72 struct hlist_node node; 72 struct hlist_node node;
diff --git a/include/linux/utsname.h b/include/linux/utsname.h
index 60f0bb83b313..da826ed059cf 100644
--- a/include/linux/utsname.h
+++ b/include/linux/utsname.h
@@ -26,7 +26,7 @@ struct uts_namespace {
26 struct user_namespace *user_ns; 26 struct user_namespace *user_ns;
27 struct ucounts *ucounts; 27 struct ucounts *ucounts;
28 struct ns_common ns; 28 struct ns_common ns;
29}; 29} __randomize_layout;
30extern struct uts_namespace init_uts_ns; 30extern struct uts_namespace init_uts_ns;
31 31
32#ifdef CONFIG_UTS_NS 32#ifdef CONFIG_UTS_NS
diff --git a/include/linux/uuid.h b/include/linux/uuid.h
index 2251e1925ea4..33b0bdbb613c 100644
--- a/include/linux/uuid.h
+++ b/include/linux/uuid.h
@@ -84,26 +84,12 @@ int guid_parse(const char *uuid, guid_t *u);
84int uuid_parse(const char *uuid, uuid_t *u); 84int uuid_parse(const char *uuid, uuid_t *u);
85 85
86/* backwards compatibility, don't use in new code */ 86/* backwards compatibility, don't use in new code */
87typedef uuid_t uuid_be;
88#define UUID_BE(a, _b, c, d0, d1, d2, d3, d4, d5, d6, d7) \
89 UUID_INIT(a, _b, c, d0, d1, d2, d3, d4, d5, d6, d7)
90#define NULL_UUID_BE \
91 UUID_BE(0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, \
92 0x00, 0x00, 0x00, 0x00)
93
94#define uuid_le_gen(u) guid_gen(u) 87#define uuid_le_gen(u) guid_gen(u)
95#define uuid_be_gen(u) uuid_gen(u)
96#define uuid_le_to_bin(guid, u) guid_parse(guid, u) 88#define uuid_le_to_bin(guid, u) guid_parse(guid, u)
97#define uuid_be_to_bin(uuid, u) uuid_parse(uuid, u)
98 89
99static inline int uuid_le_cmp(const guid_t u1, const guid_t u2) 90static inline int uuid_le_cmp(const guid_t u1, const guid_t u2)
100{ 91{
101 return memcmp(&u1, &u2, sizeof(guid_t)); 92 return memcmp(&u1, &u2, sizeof(guid_t));
102} 93}
103 94
104static inline int uuid_be_cmp(const uuid_t u1, const uuid_t u2)
105{
106 return memcmp(&u1, &u2, sizeof(uuid_t));
107}
108
109#endif 95#endif
diff --git a/include/linux/vfio.h b/include/linux/vfio.h
index 586809abb273..a47b985341d1 100644
--- a/include/linux/vfio.h
+++ b/include/linux/vfio.h
@@ -152,7 +152,7 @@ extern int vfio_set_irqs_validate_and_prepare(struct vfio_irq_set *hdr,
152 size_t *data_size); 152 size_t *data_size);
153 153
154struct pci_dev; 154struct pci_dev;
155#ifdef CONFIG_EEH 155#if IS_ENABLED(CONFIG_VFIO_SPAPR_EEH)
156extern void vfio_spapr_pci_eeh_open(struct pci_dev *pdev); 156extern void vfio_spapr_pci_eeh_open(struct pci_dev *pdev);
157extern void vfio_spapr_pci_eeh_release(struct pci_dev *pdev); 157extern void vfio_spapr_pci_eeh_release(struct pci_dev *pdev);
158extern long vfio_spapr_iommu_eeh_ioctl(struct iommu_group *group, 158extern long vfio_spapr_iommu_eeh_ioctl(struct iommu_group *group,
@@ -173,7 +173,7 @@ static inline long vfio_spapr_iommu_eeh_ioctl(struct iommu_group *group,
173{ 173{
174 return -ENOTTY; 174 return -ENOTTY;
175} 175}
176#endif /* CONFIG_EEH */ 176#endif /* CONFIG_VFIO_SPAPR_EEH */
177 177
178/* 178/*
179 * IRQfd - generic 179 * IRQfd - generic
diff --git a/include/linux/wait.h b/include/linux/wait.h
index b289c96151ee..dc19880c02f5 100644
--- a/include/linux/wait.h
+++ b/include/linux/wait.h
@@ -529,13 +529,13 @@ do { \
529 529
530/** 530/**
531 * wait_event_interruptible_hrtimeout - sleep until a condition gets true or a timeout elapses 531 * wait_event_interruptible_hrtimeout - sleep until a condition gets true or a timeout elapses
532 * @wq_head: the waitqueue to wait on 532 * @wq: the waitqueue to wait on
533 * @condition: a C expression for the event to wait for 533 * @condition: a C expression for the event to wait for
534 * @timeout: timeout, as a ktime_t 534 * @timeout: timeout, as a ktime_t
535 * 535 *
536 * The process is put to sleep (TASK_INTERRUPTIBLE) until the 536 * The process is put to sleep (TASK_INTERRUPTIBLE) until the
537 * @condition evaluates to true or a signal is received. 537 * @condition evaluates to true or a signal is received.
538 * The @condition is checked each time the waitqueue @wq_head is woken up. 538 * The @condition is checked each time the waitqueue @wq is woken up.
539 * 539 *
540 * wake_up() has to be called after changing any variable that could 540 * wake_up() has to be called after changing any variable that could
541 * change the result of the wait condition. 541 * change the result of the wait condition.
@@ -735,12 +735,12 @@ extern int do_wait_intr_irq(wait_queue_head_t *, wait_queue_entry_t *);
735 735
736/** 736/**
737 * wait_event_killable - sleep until a condition gets true 737 * wait_event_killable - sleep until a condition gets true
738 * @wq: the waitqueue to wait on 738 * @wq_head: the waitqueue to wait on
739 * @condition: a C expression for the event to wait for 739 * @condition: a C expression for the event to wait for
740 * 740 *
741 * The process is put to sleep (TASK_KILLABLE) until the 741 * The process is put to sleep (TASK_KILLABLE) until the
742 * @condition evaluates to true or a signal is received. 742 * @condition evaluates to true or a signal is received.
743 * The @condition is checked each time the waitqueue @wq is woken up. 743 * The @condition is checked each time the waitqueue @wq_head is woken up.
744 * 744 *
745 * wake_up() has to be called after changing any variable that could 745 * wake_up() has to be called after changing any variable that could
746 * change the result of the wait condition. 746 * change the result of the wait condition.
@@ -757,6 +757,43 @@ extern int do_wait_intr_irq(wait_queue_head_t *, wait_queue_entry_t *);
757 __ret; \ 757 __ret; \
758}) 758})
759 759
760#define __wait_event_killable_timeout(wq_head, condition, timeout) \
761 ___wait_event(wq_head, ___wait_cond_timeout(condition), \
762 TASK_KILLABLE, 0, timeout, \
763 __ret = schedule_timeout(__ret))
764
765/**
766 * wait_event_killable_timeout - sleep until a condition gets true or a timeout elapses
767 * @wq_head: the waitqueue to wait on
768 * @condition: a C expression for the event to wait for
769 * @timeout: timeout, in jiffies
770 *
771 * The process is put to sleep (TASK_KILLABLE) until the
772 * @condition evaluates to true or a kill signal is received.
773 * The @condition is checked each time the waitqueue @wq_head is woken up.
774 *
775 * wake_up() has to be called after changing any variable that could
776 * change the result of the wait condition.
777 *
778 * Returns:
779 * 0 if the @condition evaluated to %false after the @timeout elapsed,
780 * 1 if the @condition evaluated to %true after the @timeout elapsed,
781 * the remaining jiffies (at least 1) if the @condition evaluated
782 * to %true before the @timeout elapsed, or -%ERESTARTSYS if it was
783 * interrupted by a kill signal.
784 *
785 * Only kill signals interrupt this process.
786 */
787#define wait_event_killable_timeout(wq_head, condition, timeout) \
788({ \
789 long __ret = timeout; \
790 might_sleep(); \
791 if (!___wait_cond_timeout(condition)) \
792 __ret = __wait_event_killable_timeout(wq_head, \
793 condition, timeout); \
794 __ret; \
795})
796
760 797
761#define __wait_event_lock_irq(wq_head, condition, lock, cmd) \ 798#define __wait_event_lock_irq(wq_head, condition, lock, cmd) \
762 (void)___wait_event(wq_head, condition, TASK_UNINTERRUPTIBLE, 0, 0, \ 799 (void)___wait_event(wq_head, condition, TASK_UNINTERRUPTIBLE, 0, 0, \
diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h
index c102ef65cb64..db6dc9dc0482 100644
--- a/include/linux/workqueue.h
+++ b/include/linux/workqueue.h
@@ -323,6 +323,7 @@ enum {
323 323
324 __WQ_DRAINING = 1 << 16, /* internal: workqueue is draining */ 324 __WQ_DRAINING = 1 << 16, /* internal: workqueue is draining */
325 __WQ_ORDERED = 1 << 17, /* internal: workqueue is ordered */ 325 __WQ_ORDERED = 1 << 17, /* internal: workqueue is ordered */
326 __WQ_ORDERED_EXPLICIT = 1 << 18, /* internal: alloc_ordered_workqueue() */
326 __WQ_LEGACY = 1 << 18, /* internal: create*_workqueue() */ 327 __WQ_LEGACY = 1 << 18, /* internal: create*_workqueue() */
327 328
328 WQ_MAX_ACTIVE = 512, /* I like 512, better ideas? */ 329 WQ_MAX_ACTIVE = 512, /* I like 512, better ideas? */
@@ -422,7 +423,8 @@ __alloc_workqueue_key(const char *fmt, unsigned int flags, int max_active,
422 * Pointer to the allocated workqueue on success, %NULL on failure. 423 * Pointer to the allocated workqueue on success, %NULL on failure.
423 */ 424 */
424#define alloc_ordered_workqueue(fmt, flags, args...) \ 425#define alloc_ordered_workqueue(fmt, flags, args...) \
425 alloc_workqueue(fmt, WQ_UNBOUND | __WQ_ORDERED | (flags), 1, ##args) 426 alloc_workqueue(fmt, WQ_UNBOUND | __WQ_ORDERED | \
427 __WQ_ORDERED_EXPLICIT | (flags), 1, ##args)
426 428
427#define create_workqueue(name) \ 429#define create_workqueue(name) \
428 alloc_workqueue("%s", __WQ_LEGACY | WQ_MEM_RECLAIM, 1, (name)) 430 alloc_workqueue("%s", __WQ_LEGACY | WQ_MEM_RECLAIM, 1, (name))
diff --git a/include/media/cec-notifier.h b/include/media/cec-notifier.h
index 298f996969df..a4f7429c4ae5 100644
--- a/include/media/cec-notifier.h
+++ b/include/media/cec-notifier.h
@@ -57,6 +57,7 @@ void cec_notifier_put(struct cec_notifier *n);
57 * @pa: the CEC physical address 57 * @pa: the CEC physical address
58 * 58 *
59 * Set a new CEC physical address. 59 * Set a new CEC physical address.
60 * Does nothing if @n == NULL.
60 */ 61 */
61void cec_notifier_set_phys_addr(struct cec_notifier *n, u16 pa); 62void cec_notifier_set_phys_addr(struct cec_notifier *n, u16 pa);
62 63
@@ -66,6 +67,7 @@ void cec_notifier_set_phys_addr(struct cec_notifier *n, u16 pa);
66 * @edid: the struct edid pointer 67 * @edid: the struct edid pointer
67 * 68 *
68 * Parses the EDID to obtain the new CEC physical address and set it. 69 * Parses the EDID to obtain the new CEC physical address and set it.
70 * Does nothing if @n == NULL.
69 */ 71 */
70void cec_notifier_set_phys_addr_from_edid(struct cec_notifier *n, 72void cec_notifier_set_phys_addr_from_edid(struct cec_notifier *n,
71 const struct edid *edid); 73 const struct edid *edid);
@@ -118,4 +120,17 @@ static inline void cec_notifier_unregister(struct cec_notifier *n)
118 120
119#endif 121#endif
120 122
123/**
124 * cec_notifier_phys_addr_invalidate() - set the physical address to INVALID
125 *
126 * @n: the CEC notifier
127 *
128 * This is a simple helper function to invalidate the physical
129 * address. Does nothing if @n == NULL.
130 */
131static inline void cec_notifier_phys_addr_invalidate(struct cec_notifier *n)
132{
133 cec_notifier_set_phys_addr(n, CEC_PHYS_ADDR_INVALID);
134}
135
121#endif 136#endif
diff --git a/include/media/davinci/dm644x_ccdc.h b/include/media/davinci/dm644x_ccdc.h
index 7c909da29d43..6ea2ce241851 100644
--- a/include/media/davinci/dm644x_ccdc.h
+++ b/include/media/davinci/dm644x_ccdc.h
@@ -103,16 +103,6 @@ struct ccdc_black_compensation {
103 char gb; 103 char gb;
104}; 104};
105 105
106/* structure for fault pixel correction */
107struct ccdc_fault_pixel {
108 /* Enable or Disable fault pixel correction */
109 unsigned char enable;
110 /* Number of fault pixel */
111 unsigned short fp_num;
112 /* Address of fault pixel table */
113 unsigned long fpc_table_addr;
114};
115
116/* Structure for CCDC configuration parameters for raw capture mode passed 106/* Structure for CCDC configuration parameters for raw capture mode passed
117 * by application 107 * by application
118 */ 108 */
@@ -125,8 +115,6 @@ struct ccdc_config_params_raw {
125 struct ccdc_black_clamp blk_clamp; 115 struct ccdc_black_clamp blk_clamp;
126 /* Structure for Black Compensation */ 116 /* Structure for Black Compensation */
127 struct ccdc_black_compensation blk_comp; 117 struct ccdc_black_compensation blk_comp;
128 /* Structure for Fault Pixel Module Configuration */
129 struct ccdc_fault_pixel fault_pxl;
130}; 118};
131 119
132 120
diff --git a/include/media/davinci/vpfe_capture.h b/include/media/davinci/vpfe_capture.h
index 8e1a4d88daa0..f003533602d0 100644
--- a/include/media/davinci/vpfe_capture.h
+++ b/include/media/davinci/vpfe_capture.h
@@ -183,14 +183,4 @@ struct vpfe_config_params {
183}; 183};
184 184
185#endif /* End of __KERNEL__ */ 185#endif /* End of __KERNEL__ */
186/**
187 * VPFE_CMD_S_CCDC_RAW_PARAMS - EXPERIMENTAL IOCTL to set raw capture params
188 * This can be used to configure modules such as defect pixel correction,
189 * color space conversion, culling etc. This is an experimental ioctl that
190 * will change in future kernels. So use this ioctl with care !
191 * TODO: This is to be split into multiple ioctls and also explore the
192 * possibility of extending the v4l2 api to include this
193 **/
194#define VPFE_CMD_S_CCDC_RAW_PARAMS _IOW('V', BASE_VIDIOC_PRIVATE + 1, \
195 void *)
196#endif /* _DAVINCI_VPFE_H */ 186#endif /* _DAVINCI_VPFE_H */
diff --git a/include/net/addrconf.h b/include/net/addrconf.h
index 6df79e96a780..f44ff2476758 100644
--- a/include/net/addrconf.h
+++ b/include/net/addrconf.h
@@ -336,6 +336,16 @@ static inline void in6_dev_put(struct inet6_dev *idev)
336 in6_dev_finish_destroy(idev); 336 in6_dev_finish_destroy(idev);
337} 337}
338 338
339static inline void in6_dev_put_clear(struct inet6_dev **pidev)
340{
341 struct inet6_dev *idev = *pidev;
342
343 if (idev) {
344 in6_dev_put(idev);
345 *pidev = NULL;
346 }
347}
348
339static inline void __in6_dev_put(struct inet6_dev *idev) 349static inline void __in6_dev_put(struct inet6_dev *idev)
340{ 350{
341 refcount_dec(&idev->refcnt); 351 refcount_dec(&idev->refcnt);
diff --git a/include/net/af_unix.h b/include/net/af_unix.h
index 678e4d6fa317..53b1a2cca421 100644
--- a/include/net/af_unix.h
+++ b/include/net/af_unix.h
@@ -37,7 +37,7 @@ struct unix_skb_parms {
37 u32 secid; /* Security ID */ 37 u32 secid; /* Security ID */
38#endif 38#endif
39 u32 consumed; 39 u32 consumed;
40}; 40} __randomize_layout;
41 41
42#define UNIXCB(skb) (*(struct unix_skb_parms *)&((skb)->cb)) 42#define UNIXCB(skb) (*(struct unix_skb_parms *)&((skb)->cb))
43 43
diff --git a/include/net/bonding.h b/include/net/bonding.h
index b00508d22e0a..b2e68657a216 100644
--- a/include/net/bonding.h
+++ b/include/net/bonding.h
@@ -277,6 +277,11 @@ static inline bool bond_is_lb(const struct bonding *bond)
277 BOND_MODE(bond) == BOND_MODE_ALB; 277 BOND_MODE(bond) == BOND_MODE_ALB;
278} 278}
279 279
280static inline bool bond_needs_speed_duplex(const struct bonding *bond)
281{
282 return BOND_MODE(bond) == BOND_MODE_8023AD || bond_is_lb(bond);
283}
284
280static inline bool bond_is_nondyn_tlb(const struct bonding *bond) 285static inline bool bond_is_nondyn_tlb(const struct bonding *bond)
281{ 286{
282 return (BOND_MODE(bond) == BOND_MODE_TLB) && 287 return (BOND_MODE(bond) == BOND_MODE_TLB) &&
diff --git a/include/net/busy_poll.h b/include/net/busy_poll.h
index 8ffd434676b7..71c72a939bf8 100644
--- a/include/net/busy_poll.h
+++ b/include/net/busy_poll.h
@@ -29,18 +29,18 @@
29#include <linux/sched/signal.h> 29#include <linux/sched/signal.h>
30#include <net/ip.h> 30#include <net/ip.h>
31 31
32#ifdef CONFIG_NET_RX_BUSY_POLL
33
34struct napi_struct;
35extern unsigned int sysctl_net_busy_read __read_mostly;
36extern unsigned int sysctl_net_busy_poll __read_mostly;
37
38/* 0 - Reserved to indicate value not set 32/* 0 - Reserved to indicate value not set
39 * 1..NR_CPUS - Reserved for sender_cpu 33 * 1..NR_CPUS - Reserved for sender_cpu
40 * NR_CPUS+1..~0 - Region available for NAPI IDs 34 * NR_CPUS+1..~0 - Region available for NAPI IDs
41 */ 35 */
42#define MIN_NAPI_ID ((unsigned int)(NR_CPUS + 1)) 36#define MIN_NAPI_ID ((unsigned int)(NR_CPUS + 1))
43 37
38#ifdef CONFIG_NET_RX_BUSY_POLL
39
40struct napi_struct;
41extern unsigned int sysctl_net_busy_read __read_mostly;
42extern unsigned int sysctl_net_busy_poll __read_mostly;
43
44static inline bool net_busy_loop_on(void) 44static inline bool net_busy_loop_on(void)
45{ 45{
46 return sysctl_net_busy_poll; 46 return sysctl_net_busy_poll;
diff --git a/include/net/ip.h b/include/net/ip.h
index 821cedcc8e73..0cf7f5a65fe6 100644
--- a/include/net/ip.h
+++ b/include/net/ip.h
@@ -352,7 +352,7 @@ static inline unsigned int ip_dst_mtu_maybe_forward(const struct dst_entry *dst,
352 !forwarding) 352 !forwarding)
353 return dst_mtu(dst); 353 return dst_mtu(dst);
354 354
355 return min(dst->dev->mtu, IP_MAX_MTU); 355 return min(READ_ONCE(dst->dev->mtu), IP_MAX_MTU);
356} 356}
357 357
358static inline unsigned int ip_skb_dst_mtu(struct sock *sk, 358static inline unsigned int ip_skb_dst_mtu(struct sock *sk,
@@ -364,7 +364,7 @@ static inline unsigned int ip_skb_dst_mtu(struct sock *sk,
364 return ip_dst_mtu_maybe_forward(skb_dst(skb), forwarding); 364 return ip_dst_mtu_maybe_forward(skb_dst(skb), forwarding);
365 } 365 }
366 366
367 return min(skb_dst(skb)->dev->mtu, IP_MAX_MTU); 367 return min(READ_ONCE(skb_dst(skb)->dev->mtu), IP_MAX_MTU);
368} 368}
369 369
370u32 ip_idents_reserve(u32 hash, int segs); 370u32 ip_idents_reserve(u32 hash, int segs);
diff --git a/include/net/mac80211.h b/include/net/mac80211.h
index b2b5419467cc..f8149ca192b4 100644
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -5499,6 +5499,21 @@ static inline void ieee80211_stop_rx_ba_session_offl(struct ieee80211_vif *vif,
5499 ieee80211_manage_rx_ba_offl(vif, addr, tid + IEEE80211_NUM_TIDS); 5499 ieee80211_manage_rx_ba_offl(vif, addr, tid + IEEE80211_NUM_TIDS);
5500} 5500}
5501 5501
5502/**
5503 * ieee80211_rx_ba_timer_expired - stop a Rx BA session due to timeout
5504 *
5505 * Some device drivers do not offload AddBa/DelBa negotiation, but handle rx
5506 * buffer reording internally, and therefore also handle the session timer.
5507 *
5508 * Trigger the timeout flow, which sends a DelBa.
5509 *
5510 * @vif: &struct ieee80211_vif pointer from the add_interface callback
5511 * @addr: station mac address
5512 * @tid: the rx tid
5513 */
5514void ieee80211_rx_ba_timer_expired(struct ieee80211_vif *vif,
5515 const u8 *addr, unsigned int tid);
5516
5502/* Rate control API */ 5517/* Rate control API */
5503 5518
5504/** 5519/**
diff --git a/include/net/neighbour.h b/include/net/neighbour.h
index afc39e3a3f7c..9816df225af3 100644
--- a/include/net/neighbour.h
+++ b/include/net/neighbour.h
@@ -156,7 +156,7 @@ struct neighbour {
156 struct rcu_head rcu; 156 struct rcu_head rcu;
157 struct net_device *dev; 157 struct net_device *dev;
158 u8 primary_key[0]; 158 u8 primary_key[0];
159}; 159} __randomize_layout;
160 160
161struct neigh_ops { 161struct neigh_ops {
162 int family; 162 int family;
diff --git a/include/net/net_namespace.h b/include/net/net_namespace.h
index 31a2b51bef2c..1c401bd4c2e0 100644
--- a/include/net/net_namespace.h
+++ b/include/net/net_namespace.h
@@ -148,7 +148,7 @@ struct net {
148#endif 148#endif
149 struct sock *diag_nlsk; 149 struct sock *diag_nlsk;
150 atomic_t fnhe_genid; 150 atomic_t fnhe_genid;
151}; 151} __randomize_layout;
152 152
153#include <linux/seq_file_net.h> 153#include <linux/seq_file_net.h>
154 154
diff --git a/include/net/netlink.h b/include/net/netlink.h
index 01709172b3d3..ef8e6c3a80a6 100644
--- a/include/net/netlink.h
+++ b/include/net/netlink.h
@@ -98,8 +98,8 @@
98 * nla_put_u8(skb, type, value) add u8 attribute to skb 98 * nla_put_u8(skb, type, value) add u8 attribute to skb
99 * nla_put_u16(skb, type, value) add u16 attribute to skb 99 * nla_put_u16(skb, type, value) add u16 attribute to skb
100 * nla_put_u32(skb, type, value) add u32 attribute to skb 100 * nla_put_u32(skb, type, value) add u32 attribute to skb
101 * nla_put_u64_64bits(skb, type, 101 * nla_put_u64_64bit(skb, type,
102 * value, padattr) add u64 attribute to skb 102 * value, padattr) add u64 attribute to skb
103 * nla_put_s8(skb, type, value) add s8 attribute to skb 103 * nla_put_s8(skb, type, value) add s8 attribute to skb
104 * nla_put_s16(skb, type, value) add s16 attribute to skb 104 * nla_put_s16(skb, type, value) add s16 attribute to skb
105 * nla_put_s32(skb, type, value) add s32 attribute to skb 105 * nla_put_s32(skb, type, value) add s32 attribute to skb
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h
index 1c123e2b2415..67f815e5d525 100644
--- a/include/net/sch_generic.h
+++ b/include/net/sch_generic.h
@@ -806,8 +806,11 @@ static inline struct Qdisc *qdisc_replace(struct Qdisc *sch, struct Qdisc *new,
806 old = *pold; 806 old = *pold;
807 *pold = new; 807 *pold = new;
808 if (old != NULL) { 808 if (old != NULL) {
809 qdisc_tree_reduce_backlog(old, old->q.qlen, old->qstats.backlog); 809 unsigned int qlen = old->q.qlen;
810 unsigned int backlog = old->qstats.backlog;
811
810 qdisc_reset(old); 812 qdisc_reset(old);
813 qdisc_tree_reduce_backlog(old, qlen, backlog);
811 } 814 }
812 sch_tree_unlock(sch); 815 sch_tree_unlock(sch);
813 816
diff --git a/include/net/sctp/sctp.h b/include/net/sctp/sctp.h
index a9519a06a23b..45fd4c6056b5 100644
--- a/include/net/sctp/sctp.h
+++ b/include/net/sctp/sctp.h
@@ -469,6 +469,8 @@ _sctp_walk_params((pos), (chunk), ntohs((chunk)->chunk_hdr.length), member)
469 469
470#define _sctp_walk_params(pos, chunk, end, member)\ 470#define _sctp_walk_params(pos, chunk, end, member)\
471for (pos.v = chunk->member;\ 471for (pos.v = chunk->member;\
472 (pos.v + offsetof(struct sctp_paramhdr, length) + sizeof(pos.p->length) <=\
473 (void *)chunk + end) &&\
472 pos.v <= (void *)chunk + end - ntohs(pos.p->length) &&\ 474 pos.v <= (void *)chunk + end - ntohs(pos.p->length) &&\
473 ntohs(pos.p->length) >= sizeof(struct sctp_paramhdr);\ 475 ntohs(pos.p->length) >= sizeof(struct sctp_paramhdr);\
474 pos.v += SCTP_PAD4(ntohs(pos.p->length))) 476 pos.v += SCTP_PAD4(ntohs(pos.p->length)))
@@ -479,6 +481,8 @@ _sctp_walk_errors((err), (chunk_hdr), ntohs((chunk_hdr)->length))
479#define _sctp_walk_errors(err, chunk_hdr, end)\ 481#define _sctp_walk_errors(err, chunk_hdr, end)\
480for (err = (sctp_errhdr_t *)((void *)chunk_hdr + \ 482for (err = (sctp_errhdr_t *)((void *)chunk_hdr + \
481 sizeof(struct sctp_chunkhdr));\ 483 sizeof(struct sctp_chunkhdr));\
484 ((void *)err + offsetof(sctp_errhdr_t, length) + sizeof(err->length) <=\
485 (void *)chunk_hdr + end) &&\
482 (void *)err <= (void *)chunk_hdr + end - ntohs(err->length) &&\ 486 (void *)err <= (void *)chunk_hdr + end - ntohs(err->length) &&\
483 ntohs(err->length) >= sizeof(sctp_errhdr_t); \ 487 ntohs(err->length) >= sizeof(sctp_errhdr_t); \
484 err = (sctp_errhdr_t *)((void *)err + SCTP_PAD4(ntohs(err->length)))) 488 err = (sctp_errhdr_t *)((void *)err + SCTP_PAD4(ntohs(err->length))))
diff --git a/include/net/sock.h b/include/net/sock.h
index f69c8c2782df..aeeec62992ca 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -507,9 +507,7 @@ int sk_set_peek_off(struct sock *sk, int val);
507static inline int sk_peek_offset(struct sock *sk, int flags) 507static inline int sk_peek_offset(struct sock *sk, int flags)
508{ 508{
509 if (unlikely(flags & MSG_PEEK)) { 509 if (unlikely(flags & MSG_PEEK)) {
510 s32 off = READ_ONCE(sk->sk_peek_off); 510 return READ_ONCE(sk->sk_peek_off);
511 if (off >= 0)
512 return off;
513 } 511 }
514 512
515 return 0; 513 return 0;
@@ -1128,7 +1126,7 @@ struct proto {
1128 atomic_t socks; 1126 atomic_t socks;
1129#endif 1127#endif
1130 int (*diag_destroy)(struct sock *sk, int err); 1128 int (*diag_destroy)(struct sock *sk, int err);
1131}; 1129} __randomize_layout;
1132 1130
1133int proto_register(struct proto *prot, int alloc_slab); 1131int proto_register(struct proto *prot, int alloc_slab);
1134void proto_unregister(struct proto *prot); 1132void proto_unregister(struct proto *prot);
diff --git a/include/net/tcp.h b/include/net/tcp.h
index 70483296157f..ada65e767b28 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -1916,6 +1916,16 @@ extern void tcp_rack_advance(struct tcp_sock *tp, u8 sacked, u32 end_seq,
1916 u64 xmit_time); 1916 u64 xmit_time);
1917extern void tcp_rack_reo_timeout(struct sock *sk); 1917extern void tcp_rack_reo_timeout(struct sock *sk);
1918 1918
1919/* At how many usecs into the future should the RTO fire? */
1920static inline s64 tcp_rto_delta_us(const struct sock *sk)
1921{
1922 const struct sk_buff *skb = tcp_write_queue_head(sk);
1923 u32 rto = inet_csk(sk)->icsk_rto;
1924 u64 rto_time_stamp_us = skb->skb_mstamp + jiffies_to_usecs(rto);
1925
1926 return rto_time_stamp_us - tcp_sk(sk)->tcp_mstamp;
1927}
1928
1919/* 1929/*
1920 * Save and compile IPv4 options, return a pointer to it 1930 * Save and compile IPv4 options, return a pointer to it
1921 */ 1931 */
diff --git a/include/net/udp.h b/include/net/udp.h
index 972ce4baab6b..586de4b811b5 100644
--- a/include/net/udp.h
+++ b/include/net/udp.h
@@ -260,6 +260,7 @@ static inline struct sk_buff *skb_recv_udp(struct sock *sk, unsigned int flags,
260} 260}
261 261
262void udp_v4_early_demux(struct sk_buff *skb); 262void udp_v4_early_demux(struct sk_buff *skb);
263void udp_sk_rx_dst_set(struct sock *sk, struct dst_entry *dst);
263int udp_get_port(struct sock *sk, unsigned short snum, 264int udp_get_port(struct sock *sk, unsigned short snum,
264 int (*saddr_cmp)(const struct sock *, 265 int (*saddr_cmp)(const struct sock *,
265 const struct sock *)); 266 const struct sock *));
@@ -305,33 +306,44 @@ struct sock *udp6_lib_lookup_skb(struct sk_buff *skb,
305/* UDP uses skb->dev_scratch to cache as much information as possible and avoid 306/* UDP uses skb->dev_scratch to cache as much information as possible and avoid
306 * possibly multiple cache miss on dequeue() 307 * possibly multiple cache miss on dequeue()
307 */ 308 */
308#if BITS_PER_LONG == 64
309
310/* truesize, len and the bit needed to compute skb_csum_unnecessary will be on
311 * cold cache lines at recvmsg time.
312 * skb->len can be stored on 16 bits since the udp header has been already
313 * validated and pulled.
314 */
315struct udp_dev_scratch { 309struct udp_dev_scratch {
316 u32 truesize; 310 /* skb->truesize and the stateless bit are embedded in a single field;
311 * do not use a bitfield since the compiler emits better/smaller code
312 * this way
313 */
314 u32 _tsize_state;
315
316#if BITS_PER_LONG == 64
317 /* len and the bit needed to compute skb_csum_unnecessary
318 * will be on cold cache lines at recvmsg time.
319 * skb->len can be stored on 16 bits since the udp header has been
320 * already validated and pulled.
321 */
317 u16 len; 322 u16 len;
318 bool is_linear; 323 bool is_linear;
319 bool csum_unnecessary; 324 bool csum_unnecessary;
325#endif
320}; 326};
321 327
328static inline struct udp_dev_scratch *udp_skb_scratch(struct sk_buff *skb)
329{
330 return (struct udp_dev_scratch *)&skb->dev_scratch;
331}
332
333#if BITS_PER_LONG == 64
322static inline unsigned int udp_skb_len(struct sk_buff *skb) 334static inline unsigned int udp_skb_len(struct sk_buff *skb)
323{ 335{
324 return ((struct udp_dev_scratch *)&skb->dev_scratch)->len; 336 return udp_skb_scratch(skb)->len;
325} 337}
326 338
327static inline bool udp_skb_csum_unnecessary(struct sk_buff *skb) 339static inline bool udp_skb_csum_unnecessary(struct sk_buff *skb)
328{ 340{
329 return ((struct udp_dev_scratch *)&skb->dev_scratch)->csum_unnecessary; 341 return udp_skb_scratch(skb)->csum_unnecessary;
330} 342}
331 343
332static inline bool udp_skb_is_linear(struct sk_buff *skb) 344static inline bool udp_skb_is_linear(struct sk_buff *skb)
333{ 345{
334 return ((struct udp_dev_scratch *)&skb->dev_scratch)->is_linear; 346 return udp_skb_scratch(skb)->is_linear;
335} 347}
336 348
337#else 349#else
@@ -354,12 +366,13 @@ static inline bool udp_skb_is_linear(struct sk_buff *skb)
354static inline int copy_linear_skb(struct sk_buff *skb, int len, int off, 366static inline int copy_linear_skb(struct sk_buff *skb, int len, int off,
355 struct iov_iter *to) 367 struct iov_iter *to)
356{ 368{
357 int n, copy = len - off; 369 int n;
358 370
359 n = copy_to_iter(skb->data + off, copy, to); 371 n = copy_to_iter(skb->data + off, len, to);
360 if (n == copy) 372 if (n == len)
361 return 0; 373 return 0;
362 374
375 iov_iter_revert(to, n);
363 return -EFAULT; 376 return -EFAULT;
364} 377}
365 378
diff --git a/include/rdma/ib_addr.h b/include/rdma/ib_addr.h
index 4b34c51f859e..b73a14edc85e 100644
--- a/include/rdma/ib_addr.h
+++ b/include/rdma/ib_addr.h
@@ -205,11 +205,13 @@ static inline void iboe_addr_get_sgid(struct rdma_dev_addr *dev_addr,
205 dev = dev_get_by_index(&init_net, dev_addr->bound_dev_if); 205 dev = dev_get_by_index(&init_net, dev_addr->bound_dev_if);
206 if (dev) { 206 if (dev) {
207 ip4 = in_dev_get(dev); 207 ip4 = in_dev_get(dev);
208 if (ip4 && ip4->ifa_list && ip4->ifa_list->ifa_address) { 208 if (ip4 && ip4->ifa_list && ip4->ifa_list->ifa_address)
209 ipv6_addr_set_v4mapped(ip4->ifa_list->ifa_address, 209 ipv6_addr_set_v4mapped(ip4->ifa_list->ifa_address,
210 (struct in6_addr *)gid); 210 (struct in6_addr *)gid);
211
212 if (ip4)
211 in_dev_put(ip4); 213 in_dev_put(ip4);
212 } 214
213 dev_put(dev); 215 dev_put(dev);
214 } 216 }
215} 217}
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index 356953d3dbd1..88c32aba32f7 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -1056,7 +1056,7 @@ enum ib_qp_create_flags {
1056 IB_QP_CREATE_MANAGED_RECV = 1 << 4, 1056 IB_QP_CREATE_MANAGED_RECV = 1 << 4,
1057 IB_QP_CREATE_NETIF_QP = 1 << 5, 1057 IB_QP_CREATE_NETIF_QP = 1 << 5,
1058 IB_QP_CREATE_SIGNATURE_EN = 1 << 6, 1058 IB_QP_CREATE_SIGNATURE_EN = 1 << 6,
1059 IB_QP_CREATE_USE_GFP_NOIO = 1 << 7, 1059 /* FREE = 1 << 7, */
1060 IB_QP_CREATE_SCATTER_FCS = 1 << 8, 1060 IB_QP_CREATE_SCATTER_FCS = 1 << 8,
1061 IB_QP_CREATE_CVLAN_STRIPPING = 1 << 9, 1061 IB_QP_CREATE_CVLAN_STRIPPING = 1 << 9,
1062 /* reserve bits 26-31 for low level drivers' internal use */ 1062 /* reserve bits 26-31 for low level drivers' internal use */
@@ -1683,6 +1683,7 @@ struct ib_qp {
1683 enum ib_qp_type qp_type; 1683 enum ib_qp_type qp_type;
1684 struct ib_rwq_ind_table *rwq_ind_tbl; 1684 struct ib_rwq_ind_table *rwq_ind_tbl;
1685 struct ib_qp_security *qp_sec; 1685 struct ib_qp_security *qp_sec;
1686 u8 port;
1686}; 1687};
1687 1688
1688struct ib_mr { 1689struct ib_mr {
@@ -2948,6 +2949,22 @@ struct ib_qp *ib_create_qp(struct ib_pd *pd,
2948 struct ib_qp_init_attr *qp_init_attr); 2949 struct ib_qp_init_attr *qp_init_attr);
2949 2950
2950/** 2951/**
2952 * ib_modify_qp_with_udata - Modifies the attributes for the specified QP.
2953 * @qp: The QP to modify.
2954 * @attr: On input, specifies the QP attributes to modify. On output,
2955 * the current values of selected QP attributes are returned.
2956 * @attr_mask: A bit-mask used to specify which attributes of the QP
2957 * are being modified.
2958 * @udata: pointer to user's input output buffer information
2959 * are being modified.
2960 * It returns 0 on success and returns appropriate error code on error.
2961 */
2962int ib_modify_qp_with_udata(struct ib_qp *qp,
2963 struct ib_qp_attr *attr,
2964 int attr_mask,
2965 struct ib_udata *udata);
2966
2967/**
2951 * ib_modify_qp - Modifies the attributes for the specified QP and then 2968 * ib_modify_qp - Modifies the attributes for the specified QP and then
2952 * transitions the QP to the given state. 2969 * transitions the QP to the given state.
2953 * @qp: The QP to modify. 2970 * @qp: The QP to modify.
diff --git a/include/rdma/rdma_vt.h b/include/rdma/rdma_vt.h
index 4878aaf7bdff..55af69271053 100644
--- a/include/rdma/rdma_vt.h
+++ b/include/rdma/rdma_vt.h
@@ -229,8 +229,7 @@ struct rvt_driver_provided {
229 * ERR_PTR(err). The driver is free to return NULL or a valid 229 * ERR_PTR(err). The driver is free to return NULL or a valid
230 * pointer. 230 * pointer.
231 */ 231 */
232 void * (*qp_priv_alloc)(struct rvt_dev_info *rdi, struct rvt_qp *qp, 232 void * (*qp_priv_alloc)(struct rvt_dev_info *rdi, struct rvt_qp *qp);
233 gfp_t gfp);
234 233
235 /* 234 /*
236 * Free the driver's private qp structure. 235 * Free the driver's private qp structure.
@@ -319,7 +318,7 @@ struct rvt_driver_provided {
319 318
320 /* Let the driver pick the next queue pair number*/ 319 /* Let the driver pick the next queue pair number*/
321 int (*alloc_qpn)(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt, 320 int (*alloc_qpn)(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt,
322 enum ib_qp_type type, u8 port_num, gfp_t gfp); 321 enum ib_qp_type type, u8 port_num);
323 322
324 /* Determine if its safe or allowed to modify the qp */ 323 /* Determine if its safe or allowed to modify the qp */
325 int (*check_modify_qp)(struct rvt_qp *qp, struct ib_qp_attr *attr, 324 int (*check_modify_qp)(struct rvt_qp *qp, struct ib_qp_attr *attr,
diff --git a/include/rdma/rdmavt_qp.h b/include/rdma/rdmavt_qp.h
index be6472e5b06b..d664d2e76280 100644
--- a/include/rdma/rdmavt_qp.h
+++ b/include/rdma/rdmavt_qp.h
@@ -647,6 +647,20 @@ static inline u32 rvt_div_mtu(struct rvt_qp *qp, u32 len)
647 return len >> qp->log_pmtu; 647 return len >> qp->log_pmtu;
648} 648}
649 649
650/**
651 * rvt_timeout_to_jiffies - Convert a ULP timeout input into jiffies
652 * @timeout - timeout input(0 - 31).
653 *
654 * Return a timeout value in jiffies.
655 */
656static inline unsigned long rvt_timeout_to_jiffies(u8 timeout)
657{
658 if (timeout > 31)
659 timeout = 31;
660
661 return usecs_to_jiffies(1U << timeout) * 4096UL / 1000UL;
662}
663
650extern const int ib_rvt_state_ops[]; 664extern const int ib_rvt_state_ops[];
651 665
652struct rvt_dev_info; 666struct rvt_dev_info;
diff --git a/include/scsi/scsi_cmnd.h b/include/scsi/scsi_cmnd.h
index a1266d318c85..6af198d8120b 100644
--- a/include/scsi/scsi_cmnd.h
+++ b/include/scsi/scsi_cmnd.h
@@ -57,6 +57,7 @@ struct scsi_pointer {
57/* for scmd->flags */ 57/* for scmd->flags */
58#define SCMD_TAGGED (1 << 0) 58#define SCMD_TAGGED (1 << 0)
59#define SCMD_UNCHECKED_ISA_DMA (1 << 1) 59#define SCMD_UNCHECKED_ISA_DMA (1 << 1)
60#define SCMD_ZONE_WRITE_LOCK (1 << 2)
60 61
61struct scsi_cmnd { 62struct scsi_cmnd {
62 struct scsi_request req; 63 struct scsi_request req;
diff --git a/include/sound/soc.h b/include/sound/soc.h
index 9c94b97c17f8..c4a8b1947566 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@ -795,10 +795,6 @@ struct snd_soc_component_driver {
795 int (*suspend)(struct snd_soc_component *); 795 int (*suspend)(struct snd_soc_component *);
796 int (*resume)(struct snd_soc_component *); 796 int (*resume)(struct snd_soc_component *);
797 797
798 /* pcm creation and destruction */
799 int (*pcm_new)(struct snd_soc_pcm_runtime *);
800 void (*pcm_free)(struct snd_pcm *);
801
802 /* DT */ 798 /* DT */
803 int (*of_xlate_dai_name)(struct snd_soc_component *component, 799 int (*of_xlate_dai_name)(struct snd_soc_component *component,
804 struct of_phandle_args *args, 800 struct of_phandle_args *args,
@@ -874,8 +870,6 @@ struct snd_soc_component {
874 void (*remove)(struct snd_soc_component *); 870 void (*remove)(struct snd_soc_component *);
875 int (*suspend)(struct snd_soc_component *); 871 int (*suspend)(struct snd_soc_component *);
876 int (*resume)(struct snd_soc_component *); 872 int (*resume)(struct snd_soc_component *);
877 int (*pcm_new)(struct snd_soc_pcm_runtime *);
878 void (*pcm_free)(struct snd_pcm *);
879 873
880 /* machine specific init */ 874 /* machine specific init */
881 int (*init)(struct snd_soc_component *component); 875 int (*init)(struct snd_soc_component *component);
diff --git a/include/target/iscsi/iscsi_target_core.h b/include/target/iscsi/iscsi_target_core.h
index 0ca1fb08805b..fb87d32f5e51 100644
--- a/include/target/iscsi/iscsi_target_core.h
+++ b/include/target/iscsi/iscsi_target_core.h
@@ -786,6 +786,7 @@ struct iscsi_np {
786 int np_sock_type; 786 int np_sock_type;
787 enum np_thread_state_table np_thread_state; 787 enum np_thread_state_table np_thread_state;
788 bool enabled; 788 bool enabled;
789 atomic_t np_reset_count;
789 enum iscsi_timer_flags_table np_login_timer_flags; 790 enum iscsi_timer_flags_table np_login_timer_flags;
790 u32 np_exports; 791 u32 np_exports;
791 enum np_flags_table np_flags; 792 enum np_flags_table np_flags;
diff --git a/include/trace/events/ext4.h b/include/trace/events/ext4.h
index dfae175ddebc..9c3bc3883d2f 100644
--- a/include/trace/events/ext4.h
+++ b/include/trace/events/ext4.h
@@ -937,21 +937,19 @@ TRACE_EVENT(ext4_alloc_da_blocks,
937 TP_STRUCT__entry( 937 TP_STRUCT__entry(
938 __field( dev_t, dev ) 938 __field( dev_t, dev )
939 __field( ino_t, ino ) 939 __field( ino_t, ino )
940 __field( unsigned int, data_blocks ) 940 __field( unsigned int, data_blocks )
941 __field( unsigned int, meta_blocks )
942 ), 941 ),
943 942
944 TP_fast_assign( 943 TP_fast_assign(
945 __entry->dev = inode->i_sb->s_dev; 944 __entry->dev = inode->i_sb->s_dev;
946 __entry->ino = inode->i_ino; 945 __entry->ino = inode->i_ino;
947 __entry->data_blocks = EXT4_I(inode)->i_reserved_data_blocks; 946 __entry->data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
948 __entry->meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks;
949 ), 947 ),
950 948
951 TP_printk("dev %d,%d ino %lu data_blocks %u meta_blocks %u", 949 TP_printk("dev %d,%d ino %lu reserved_data_blocks %u",
952 MAJOR(__entry->dev), MINOR(__entry->dev), 950 MAJOR(__entry->dev), MINOR(__entry->dev),
953 (unsigned long) __entry->ino, 951 (unsigned long) __entry->ino,
954 __entry->data_blocks, __entry->meta_blocks) 952 __entry->data_blocks)
955); 953);
956 954
957TRACE_EVENT(ext4_mballoc_alloc, 955TRACE_EVENT(ext4_mballoc_alloc,
@@ -1153,8 +1151,6 @@ TRACE_EVENT(ext4_da_update_reserve_space,
1153 __field( __u64, i_blocks ) 1151 __field( __u64, i_blocks )
1154 __field( int, used_blocks ) 1152 __field( int, used_blocks )
1155 __field( int, reserved_data_blocks ) 1153 __field( int, reserved_data_blocks )
1156 __field( int, reserved_meta_blocks )
1157 __field( int, allocated_meta_blocks )
1158 __field( int, quota_claim ) 1154 __field( int, quota_claim )
1159 __field( __u16, mode ) 1155 __field( __u16, mode )
1160 ), 1156 ),
@@ -1166,22 +1162,16 @@ TRACE_EVENT(ext4_da_update_reserve_space,
1166 __entry->used_blocks = used_blocks; 1162 __entry->used_blocks = used_blocks;
1167 __entry->reserved_data_blocks = 1163 __entry->reserved_data_blocks =
1168 EXT4_I(inode)->i_reserved_data_blocks; 1164 EXT4_I(inode)->i_reserved_data_blocks;
1169 __entry->reserved_meta_blocks =
1170 EXT4_I(inode)->i_reserved_meta_blocks;
1171 __entry->allocated_meta_blocks =
1172 EXT4_I(inode)->i_allocated_meta_blocks;
1173 __entry->quota_claim = quota_claim; 1165 __entry->quota_claim = quota_claim;
1174 __entry->mode = inode->i_mode; 1166 __entry->mode = inode->i_mode;
1175 ), 1167 ),
1176 1168
1177 TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu used_blocks %d " 1169 TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu used_blocks %d "
1178 "reserved_data_blocks %d reserved_meta_blocks %d " 1170 "reserved_data_blocks %d quota_claim %d",
1179 "allocated_meta_blocks %d quota_claim %d",
1180 MAJOR(__entry->dev), MINOR(__entry->dev), 1171 MAJOR(__entry->dev), MINOR(__entry->dev),
1181 (unsigned long) __entry->ino, 1172 (unsigned long) __entry->ino,
1182 __entry->mode, __entry->i_blocks, 1173 __entry->mode, __entry->i_blocks,
1183 __entry->used_blocks, __entry->reserved_data_blocks, 1174 __entry->used_blocks, __entry->reserved_data_blocks,
1184 __entry->reserved_meta_blocks, __entry->allocated_meta_blocks,
1185 __entry->quota_claim) 1175 __entry->quota_claim)
1186); 1176);
1187 1177
@@ -1195,7 +1185,6 @@ TRACE_EVENT(ext4_da_reserve_space,
1195 __field( ino_t, ino ) 1185 __field( ino_t, ino )
1196 __field( __u64, i_blocks ) 1186 __field( __u64, i_blocks )
1197 __field( int, reserved_data_blocks ) 1187 __field( int, reserved_data_blocks )
1198 __field( int, reserved_meta_blocks )
1199 __field( __u16, mode ) 1188 __field( __u16, mode )
1200 ), 1189 ),
1201 1190
@@ -1204,17 +1193,15 @@ TRACE_EVENT(ext4_da_reserve_space,
1204 __entry->ino = inode->i_ino; 1193 __entry->ino = inode->i_ino;
1205 __entry->i_blocks = inode->i_blocks; 1194 __entry->i_blocks = inode->i_blocks;
1206 __entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks; 1195 __entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
1207 __entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks;
1208 __entry->mode = inode->i_mode; 1196 __entry->mode = inode->i_mode;
1209 ), 1197 ),
1210 1198
1211 TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu " 1199 TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu "
1212 "reserved_data_blocks %d reserved_meta_blocks %d", 1200 "reserved_data_blocks %d",
1213 MAJOR(__entry->dev), MINOR(__entry->dev), 1201 MAJOR(__entry->dev), MINOR(__entry->dev),
1214 (unsigned long) __entry->ino, 1202 (unsigned long) __entry->ino,
1215 __entry->mode, __entry->i_blocks, 1203 __entry->mode, __entry->i_blocks,
1216 __entry->reserved_data_blocks, 1204 __entry->reserved_data_blocks)
1217 __entry->reserved_meta_blocks)
1218); 1205);
1219 1206
1220TRACE_EVENT(ext4_da_release_space, 1207TRACE_EVENT(ext4_da_release_space,
@@ -1228,8 +1215,6 @@ TRACE_EVENT(ext4_da_release_space,
1228 __field( __u64, i_blocks ) 1215 __field( __u64, i_blocks )
1229 __field( int, freed_blocks ) 1216 __field( int, freed_blocks )
1230 __field( int, reserved_data_blocks ) 1217 __field( int, reserved_data_blocks )
1231 __field( int, reserved_meta_blocks )
1232 __field( int, allocated_meta_blocks )
1233 __field( __u16, mode ) 1218 __field( __u16, mode )
1234 ), 1219 ),
1235 1220
@@ -1239,19 +1224,15 @@ TRACE_EVENT(ext4_da_release_space,
1239 __entry->i_blocks = inode->i_blocks; 1224 __entry->i_blocks = inode->i_blocks;
1240 __entry->freed_blocks = freed_blocks; 1225 __entry->freed_blocks = freed_blocks;
1241 __entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks; 1226 __entry->reserved_data_blocks = EXT4_I(inode)->i_reserved_data_blocks;
1242 __entry->reserved_meta_blocks = EXT4_I(inode)->i_reserved_meta_blocks;
1243 __entry->allocated_meta_blocks = EXT4_I(inode)->i_allocated_meta_blocks;
1244 __entry->mode = inode->i_mode; 1227 __entry->mode = inode->i_mode;
1245 ), 1228 ),
1246 1229
1247 TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu freed_blocks %d " 1230 TP_printk("dev %d,%d ino %lu mode 0%o i_blocks %llu freed_blocks %d "
1248 "reserved_data_blocks %d reserved_meta_blocks %d " 1231 "reserved_data_blocks %d",
1249 "allocated_meta_blocks %d",
1250 MAJOR(__entry->dev), MINOR(__entry->dev), 1232 MAJOR(__entry->dev), MINOR(__entry->dev),
1251 (unsigned long) __entry->ino, 1233 (unsigned long) __entry->ino,
1252 __entry->mode, __entry->i_blocks, 1234 __entry->mode, __entry->i_blocks,
1253 __entry->freed_blocks, __entry->reserved_data_blocks, 1235 __entry->freed_blocks, __entry->reserved_data_blocks)
1254 __entry->reserved_meta_blocks, __entry->allocated_meta_blocks)
1255); 1236);
1256 1237
1257DECLARE_EVENT_CLASS(ext4__bitmap_load, 1238DECLARE_EVENT_CLASS(ext4__bitmap_load,
diff --git a/include/uapi/asm-generic/ioctls.h b/include/uapi/asm-generic/ioctls.h
index 06d5f7ddf84e..14baf9f23a14 100644
--- a/include/uapi/asm-generic/ioctls.h
+++ b/include/uapi/asm-generic/ioctls.h
@@ -77,7 +77,7 @@
77#define TIOCGPKT _IOR('T', 0x38, int) /* Get packet mode state */ 77#define TIOCGPKT _IOR('T', 0x38, int) /* Get packet mode state */
78#define TIOCGPTLCK _IOR('T', 0x39, int) /* Get Pty lock state */ 78#define TIOCGPTLCK _IOR('T', 0x39, int) /* Get Pty lock state */
79#define TIOCGEXCL _IOR('T', 0x40, int) /* Get exclusive mode state */ 79#define TIOCGEXCL _IOR('T', 0x40, int) /* Get exclusive mode state */
80#define TIOCGPTPEER _IOR('T', 0x41, int) /* Safely open the slave */ 80#define TIOCGPTPEER _IO('T', 0x41) /* Safely open the slave */
81 81
82#define FIONCLEX 0x5450 82#define FIONCLEX 0x5450
83#define FIOCLEX 0x5451 83#define FIOCLEX 0x5451
diff --git a/include/uapi/drm/msm_drm.h b/include/uapi/drm/msm_drm.h
index 26c54f6d595d..ad4eb2863e70 100644
--- a/include/uapi/drm/msm_drm.h
+++ b/include/uapi/drm/msm_drm.h
@@ -171,7 +171,7 @@ struct drm_msm_gem_submit_cmd {
171 __u32 size; /* in, cmdstream size */ 171 __u32 size; /* in, cmdstream size */
172 __u32 pad; 172 __u32 pad;
173 __u32 nr_relocs; /* in, number of submit_reloc's */ 173 __u32 nr_relocs; /* in, number of submit_reloc's */
174 __u64 __user relocs; /* in, ptr to array of submit_reloc's */ 174 __u64 relocs; /* in, ptr to array of submit_reloc's */
175}; 175};
176 176
177/* Each buffer referenced elsewhere in the cmdstream submit (ie. the 177/* Each buffer referenced elsewhere in the cmdstream submit (ie. the
@@ -215,8 +215,8 @@ struct drm_msm_gem_submit {
215 __u32 fence; /* out */ 215 __u32 fence; /* out */
216 __u32 nr_bos; /* in, number of submit_bo's */ 216 __u32 nr_bos; /* in, number of submit_bo's */
217 __u32 nr_cmds; /* in, number of submit_cmd's */ 217 __u32 nr_cmds; /* in, number of submit_cmd's */
218 __u64 __user bos; /* in, ptr to array of submit_bo's */ 218 __u64 bos; /* in, ptr to array of submit_bo's */
219 __u64 __user cmds; /* in, ptr to array of submit_cmd's */ 219 __u64 cmds; /* in, ptr to array of submit_cmd's */
220 __s32 fence_fd; /* in/out fence fd (see MSM_SUBMIT_FENCE_FD_IN/OUT) */ 220 __s32 fence_fd; /* in/out fence fd (see MSM_SUBMIT_FENCE_FD_IN/OUT) */
221}; 221};
222 222
diff --git a/include/uapi/linux/usb/audio.h b/include/uapi/linux/usb/audio.h
index d2314be4f0c0..a4680a5bf5dd 100644
--- a/include/uapi/linux/usb/audio.h
+++ b/include/uapi/linux/usb/audio.h
@@ -333,7 +333,7 @@ struct uac_processing_unit_descriptor {
333 __u8 bDescriptorType; 333 __u8 bDescriptorType;
334 __u8 bDescriptorSubtype; 334 __u8 bDescriptorSubtype;
335 __u8 bUnitID; 335 __u8 bUnitID;
336 __u16 wProcessType; 336 __le16 wProcessType;
337 __u8 bNrInPins; 337 __u8 bNrInPins;
338 __u8 baSourceID[]; 338 __u8 baSourceID[];
339} __attribute__ ((packed)); 339} __attribute__ ((packed));
@@ -491,8 +491,8 @@ struct uac_format_type_ii_ext_descriptor {
491 __u8 bDescriptorType; 491 __u8 bDescriptorType;
492 __u8 bDescriptorSubtype; 492 __u8 bDescriptorSubtype;
493 __u8 bFormatType; 493 __u8 bFormatType;
494 __u16 wMaxBitRate; 494 __le16 wMaxBitRate;
495 __u16 wSamplesPerFrame; 495 __le16 wSamplesPerFrame;
496 __u8 bHeaderLength; 496 __u8 bHeaderLength;
497 __u8 bSideBandProtocol; 497 __u8 bSideBandProtocol;
498} __attribute__((packed)); 498} __attribute__((packed));
diff --git a/include/xen/balloon.h b/include/xen/balloon.h
index d1767dfb0d95..8906361bb50c 100644
--- a/include/xen/balloon.h
+++ b/include/xen/balloon.h
@@ -35,3 +35,11 @@ static inline int register_xen_selfballooning(struct device *dev)
35 return -ENOSYS; 35 return -ENOSYS;
36} 36}
37#endif 37#endif
38
39#ifdef CONFIG_XEN_BALLOON
40void xen_balloon_init(void);
41#else
42static inline void xen_balloon_init(void)
43{
44}
45#endif
diff --git a/ipc/msg.c b/ipc/msg.c
index 5b25e0755656..2c38f10d1483 100644
--- a/ipc/msg.c
+++ b/ipc/msg.c
@@ -1034,7 +1034,8 @@ void msg_exit_ns(struct ipc_namespace *ns)
1034static int sysvipc_msg_proc_show(struct seq_file *s, void *it) 1034static int sysvipc_msg_proc_show(struct seq_file *s, void *it)
1035{ 1035{
1036 struct user_namespace *user_ns = seq_user_ns(s); 1036 struct user_namespace *user_ns = seq_user_ns(s);
1037 struct msg_queue *msq = it; 1037 struct kern_ipc_perm *ipcp = it;
1038 struct msg_queue *msq = container_of(ipcp, struct msg_queue, q_perm);
1038 1039
1039 seq_printf(s, 1040 seq_printf(s,
1040 "%10d %10d %4o %10lu %10lu %5u %5u %5u %5u %5u %5u %10lu %10lu %10lu\n", 1041 "%10d %10d %4o %10lu %10lu %5u %5u %5u %5u %5u %5u %10lu %10lu %10lu\n",
diff --git a/ipc/sem.c b/ipc/sem.c
index 9e70cd7a17da..38371e93bfa5 100644
--- a/ipc/sem.c
+++ b/ipc/sem.c
@@ -2179,7 +2179,8 @@ void exit_sem(struct task_struct *tsk)
2179static int sysvipc_sem_proc_show(struct seq_file *s, void *it) 2179static int sysvipc_sem_proc_show(struct seq_file *s, void *it)
2180{ 2180{
2181 struct user_namespace *user_ns = seq_user_ns(s); 2181 struct user_namespace *user_ns = seq_user_ns(s);
2182 struct sem_array *sma = it; 2182 struct kern_ipc_perm *ipcp = it;
2183 struct sem_array *sma = container_of(ipcp, struct sem_array, sem_perm);
2183 time_t sem_otime; 2184 time_t sem_otime;
2184 2185
2185 /* 2186 /*
diff --git a/ipc/shm.c b/ipc/shm.c
index 28a444861a8f..8828b4c3a190 100644
--- a/ipc/shm.c
+++ b/ipc/shm.c
@@ -1380,9 +1380,11 @@ SYSCALL_DEFINE1(shmdt, char __user *, shmaddr)
1380static int sysvipc_shm_proc_show(struct seq_file *s, void *it) 1380static int sysvipc_shm_proc_show(struct seq_file *s, void *it)
1381{ 1381{
1382 struct user_namespace *user_ns = seq_user_ns(s); 1382 struct user_namespace *user_ns = seq_user_ns(s);
1383 struct shmid_kernel *shp = it; 1383 struct kern_ipc_perm *ipcp = it;
1384 struct shmid_kernel *shp;
1384 unsigned long rss = 0, swp = 0; 1385 unsigned long rss = 0, swp = 0;
1385 1386
1387 shp = container_of(ipcp, struct shmid_kernel, shm_perm);
1386 shm_add_rss_swap(shp, &rss, &swp); 1388 shm_add_rss_swap(shp, &rss, &swp);
1387 1389
1388#if BITS_PER_LONG <= 32 1390#if BITS_PER_LONG <= 32
diff --git a/kernel/audit.c b/kernel/audit.c
index 833267bbd80b..6dd556931739 100644
--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -641,6 +641,7 @@ static int auditd_send_unicast_skb(struct sk_buff *skb)
641 ac = rcu_dereference(auditd_conn); 641 ac = rcu_dereference(auditd_conn);
642 if (!ac) { 642 if (!ac) {
643 rcu_read_unlock(); 643 rcu_read_unlock();
644 kfree_skb(skb);
644 rc = -ECONNREFUSED; 645 rc = -ECONNREFUSED;
645 goto err; 646 goto err;
646 } 647 }
diff --git a/kernel/audit_watch.c b/kernel/audit_watch.c
index 62d686d96581..9eb8b3511636 100644
--- a/kernel/audit_watch.c
+++ b/kernel/audit_watch.c
@@ -66,7 +66,7 @@ static struct fsnotify_group *audit_watch_group;
66 66
67/* fsnotify events we care about. */ 67/* fsnotify events we care about. */
68#define AUDIT_FS_WATCH (FS_MOVE | FS_CREATE | FS_DELETE | FS_DELETE_SELF |\ 68#define AUDIT_FS_WATCH (FS_MOVE | FS_CREATE | FS_DELETE | FS_DELETE_SELF |\
69 FS_MOVE_SELF | FS_EVENT_ON_CHILD) 69 FS_MOVE_SELF | FS_EVENT_ON_CHILD | FS_UNMOUNT)
70 70
71static void audit_free_parent(struct audit_parent *parent) 71static void audit_free_parent(struct audit_parent *parent)
72{ 72{
@@ -457,13 +457,15 @@ void audit_remove_watch_rule(struct audit_krule *krule)
457 list_del(&krule->rlist); 457 list_del(&krule->rlist);
458 458
459 if (list_empty(&watch->rules)) { 459 if (list_empty(&watch->rules)) {
460 /*
461 * audit_remove_watch() drops our reference to 'parent' which
462 * can get freed. Grab our own reference to be safe.
463 */
464 audit_get_parent(parent);
460 audit_remove_watch(watch); 465 audit_remove_watch(watch);
461 466 if (list_empty(&parent->watches))
462 if (list_empty(&parent->watches)) {
463 audit_get_parent(parent);
464 fsnotify_destroy_mark(&parent->mark, audit_watch_group); 467 fsnotify_destroy_mark(&parent->mark, audit_watch_group);
465 audit_put_parent(parent); 468 audit_put_parent(parent);
466 }
467 } 469 }
468} 470}
469 471
diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c
index 045646da97cc..6c772adabad2 100644
--- a/kernel/bpf/syscall.c
+++ b/kernel/bpf/syscall.c
@@ -1289,7 +1289,7 @@ static int bpf_prog_get_info_by_fd(struct bpf_prog *prog,
1289 info_len = min_t(u32, sizeof(info), info_len); 1289 info_len = min_t(u32, sizeof(info), info_len);
1290 1290
1291 if (copy_from_user(&info, uinfo, info_len)) 1291 if (copy_from_user(&info, uinfo, info_len))
1292 return err; 1292 return -EFAULT;
1293 1293
1294 info.type = prog->type; 1294 info.type = prog->type;
1295 info.id = prog->aux->id; 1295 info.id = prog->aux->id;
@@ -1312,7 +1312,7 @@ static int bpf_prog_get_info_by_fd(struct bpf_prog *prog,
1312 } 1312 }
1313 1313
1314 ulen = info.xlated_prog_len; 1314 ulen = info.xlated_prog_len;
1315 info.xlated_prog_len = bpf_prog_size(prog->len); 1315 info.xlated_prog_len = bpf_prog_insn_size(prog);
1316 if (info.xlated_prog_len && ulen) { 1316 if (info.xlated_prog_len && ulen) {
1317 uinsns = u64_to_user_ptr(info.xlated_prog_insns); 1317 uinsns = u64_to_user_ptr(info.xlated_prog_insns);
1318 ulen = min_t(u32, info.xlated_prog_len, ulen); 1318 ulen = min_t(u32, info.xlated_prog_len, ulen);
diff --git a/kernel/bpf/verifier.c b/kernel/bpf/verifier.c
index 6a86723c5b64..664d93972373 100644
--- a/kernel/bpf/verifier.c
+++ b/kernel/bpf/verifier.c
@@ -504,6 +504,7 @@ static void reset_reg_range_values(struct bpf_reg_state *regs, u32 regno)
504{ 504{
505 regs[regno].min_value = BPF_REGISTER_MIN_RANGE; 505 regs[regno].min_value = BPF_REGISTER_MIN_RANGE;
506 regs[regno].max_value = BPF_REGISTER_MAX_RANGE; 506 regs[regno].max_value = BPF_REGISTER_MAX_RANGE;
507 regs[regno].value_from_signed = false;
507 regs[regno].min_align = 0; 508 regs[regno].min_align = 0;
508} 509}
509 510
@@ -777,12 +778,13 @@ static int check_ctx_access(struct bpf_verifier_env *env, int insn_idx, int off,
777 return -EACCES; 778 return -EACCES;
778} 779}
779 780
780static bool is_pointer_value(struct bpf_verifier_env *env, int regno) 781static bool __is_pointer_value(bool allow_ptr_leaks,
782 const struct bpf_reg_state *reg)
781{ 783{
782 if (env->allow_ptr_leaks) 784 if (allow_ptr_leaks)
783 return false; 785 return false;
784 786
785 switch (env->cur_state.regs[regno].type) { 787 switch (reg->type) {
786 case UNKNOWN_VALUE: 788 case UNKNOWN_VALUE:
787 case CONST_IMM: 789 case CONST_IMM:
788 return false; 790 return false;
@@ -791,6 +793,11 @@ static bool is_pointer_value(struct bpf_verifier_env *env, int regno)
791 } 793 }
792} 794}
793 795
796static bool is_pointer_value(struct bpf_verifier_env *env, int regno)
797{
798 return __is_pointer_value(env->allow_ptr_leaks, &env->cur_state.regs[regno]);
799}
800
794static int check_pkt_ptr_alignment(const struct bpf_reg_state *reg, 801static int check_pkt_ptr_alignment(const struct bpf_reg_state *reg,
795 int off, int size, bool strict) 802 int off, int size, bool strict)
796{ 803{
@@ -1832,10 +1839,24 @@ static void adjust_reg_min_max_vals(struct bpf_verifier_env *env,
1832 dst_align = dst_reg->min_align; 1839 dst_align = dst_reg->min_align;
1833 1840
1834 /* We don't know anything about what was done to this register, mark it 1841 /* We don't know anything about what was done to this register, mark it
1835 * as unknown. 1842 * as unknown. Also, if both derived bounds came from signed/unsigned
1843 * mixed compares and one side is unbounded, we cannot really do anything
1844 * with them as boundaries cannot be trusted. Thus, arithmetic of two
1845 * regs of such kind will get invalidated bounds on the dst side.
1836 */ 1846 */
1837 if (min_val == BPF_REGISTER_MIN_RANGE && 1847 if ((min_val == BPF_REGISTER_MIN_RANGE &&
1838 max_val == BPF_REGISTER_MAX_RANGE) { 1848 max_val == BPF_REGISTER_MAX_RANGE) ||
1849 (BPF_SRC(insn->code) == BPF_X &&
1850 ((min_val != BPF_REGISTER_MIN_RANGE &&
1851 max_val == BPF_REGISTER_MAX_RANGE) ||
1852 (min_val == BPF_REGISTER_MIN_RANGE &&
1853 max_val != BPF_REGISTER_MAX_RANGE) ||
1854 (dst_reg->min_value != BPF_REGISTER_MIN_RANGE &&
1855 dst_reg->max_value == BPF_REGISTER_MAX_RANGE) ||
1856 (dst_reg->min_value == BPF_REGISTER_MIN_RANGE &&
1857 dst_reg->max_value != BPF_REGISTER_MAX_RANGE)) &&
1858 regs[insn->dst_reg].value_from_signed !=
1859 regs[insn->src_reg].value_from_signed)) {
1839 reset_reg_range_values(regs, insn->dst_reg); 1860 reset_reg_range_values(regs, insn->dst_reg);
1840 return; 1861 return;
1841 } 1862 }
@@ -1844,10 +1865,12 @@ static void adjust_reg_min_max_vals(struct bpf_verifier_env *env,
1844 * do our normal operations to the register, we need to set the values 1865 * do our normal operations to the register, we need to set the values
1845 * to the min/max since they are undefined. 1866 * to the min/max since they are undefined.
1846 */ 1867 */
1847 if (min_val == BPF_REGISTER_MIN_RANGE) 1868 if (opcode != BPF_SUB) {
1848 dst_reg->min_value = BPF_REGISTER_MIN_RANGE; 1869 if (min_val == BPF_REGISTER_MIN_RANGE)
1849 if (max_val == BPF_REGISTER_MAX_RANGE) 1870 dst_reg->min_value = BPF_REGISTER_MIN_RANGE;
1850 dst_reg->max_value = BPF_REGISTER_MAX_RANGE; 1871 if (max_val == BPF_REGISTER_MAX_RANGE)
1872 dst_reg->max_value = BPF_REGISTER_MAX_RANGE;
1873 }
1851 1874
1852 switch (opcode) { 1875 switch (opcode) {
1853 case BPF_ADD: 1876 case BPF_ADD:
@@ -1858,10 +1881,17 @@ static void adjust_reg_min_max_vals(struct bpf_verifier_env *env,
1858 dst_reg->min_align = min(src_align, dst_align); 1881 dst_reg->min_align = min(src_align, dst_align);
1859 break; 1882 break;
1860 case BPF_SUB: 1883 case BPF_SUB:
1884 /* If one of our values was at the end of our ranges, then the
1885 * _opposite_ value in the dst_reg goes to the end of our range.
1886 */
1887 if (min_val == BPF_REGISTER_MIN_RANGE)
1888 dst_reg->max_value = BPF_REGISTER_MAX_RANGE;
1889 if (max_val == BPF_REGISTER_MAX_RANGE)
1890 dst_reg->min_value = BPF_REGISTER_MIN_RANGE;
1861 if (dst_reg->min_value != BPF_REGISTER_MIN_RANGE) 1891 if (dst_reg->min_value != BPF_REGISTER_MIN_RANGE)
1862 dst_reg->min_value -= min_val; 1892 dst_reg->min_value -= max_val;
1863 if (dst_reg->max_value != BPF_REGISTER_MAX_RANGE) 1893 if (dst_reg->max_value != BPF_REGISTER_MAX_RANGE)
1864 dst_reg->max_value -= max_val; 1894 dst_reg->max_value -= min_val;
1865 dst_reg->min_align = min(src_align, dst_align); 1895 dst_reg->min_align = min(src_align, dst_align);
1866 break; 1896 break;
1867 case BPF_MUL: 1897 case BPF_MUL:
@@ -2023,6 +2053,7 @@ static int check_alu_op(struct bpf_verifier_env *env, struct bpf_insn *insn)
2023 regs[insn->dst_reg].max_value = insn->imm; 2053 regs[insn->dst_reg].max_value = insn->imm;
2024 regs[insn->dst_reg].min_value = insn->imm; 2054 regs[insn->dst_reg].min_value = insn->imm;
2025 regs[insn->dst_reg].min_align = calc_align(insn->imm); 2055 regs[insn->dst_reg].min_align = calc_align(insn->imm);
2056 regs[insn->dst_reg].value_from_signed = false;
2026 } 2057 }
2027 2058
2028 } else if (opcode > BPF_END) { 2059 } else if (opcode > BPF_END) {
@@ -2198,40 +2229,63 @@ static void reg_set_min_max(struct bpf_reg_state *true_reg,
2198 struct bpf_reg_state *false_reg, u64 val, 2229 struct bpf_reg_state *false_reg, u64 val,
2199 u8 opcode) 2230 u8 opcode)
2200{ 2231{
2232 bool value_from_signed = true;
2233 bool is_range = true;
2234
2201 switch (opcode) { 2235 switch (opcode) {
2202 case BPF_JEQ: 2236 case BPF_JEQ:
2203 /* If this is false then we know nothing Jon Snow, but if it is 2237 /* If this is false then we know nothing Jon Snow, but if it is
2204 * true then we know for sure. 2238 * true then we know for sure.
2205 */ 2239 */
2206 true_reg->max_value = true_reg->min_value = val; 2240 true_reg->max_value = true_reg->min_value = val;
2241 is_range = false;
2207 break; 2242 break;
2208 case BPF_JNE: 2243 case BPF_JNE:
2209 /* If this is true we know nothing Jon Snow, but if it is false 2244 /* If this is true we know nothing Jon Snow, but if it is false
2210 * we know the value for sure; 2245 * we know the value for sure;
2211 */ 2246 */
2212 false_reg->max_value = false_reg->min_value = val; 2247 false_reg->max_value = false_reg->min_value = val;
2248 is_range = false;
2213 break; 2249 break;
2214 case BPF_JGT: 2250 case BPF_JGT:
2215 /* Unsigned comparison, the minimum value is 0. */ 2251 value_from_signed = false;
2216 false_reg->min_value = 0;
2217 /* fallthrough */ 2252 /* fallthrough */
2218 case BPF_JSGT: 2253 case BPF_JSGT:
2254 if (true_reg->value_from_signed != value_from_signed)
2255 reset_reg_range_values(true_reg, 0);
2256 if (false_reg->value_from_signed != value_from_signed)
2257 reset_reg_range_values(false_reg, 0);
2258 if (opcode == BPF_JGT) {
2259 /* Unsigned comparison, the minimum value is 0. */
2260 false_reg->min_value = 0;
2261 }
2219 /* If this is false then we know the maximum val is val, 2262 /* If this is false then we know the maximum val is val,
2220 * otherwise we know the min val is val+1. 2263 * otherwise we know the min val is val+1.
2221 */ 2264 */
2222 false_reg->max_value = val; 2265 false_reg->max_value = val;
2266 false_reg->value_from_signed = value_from_signed;
2223 true_reg->min_value = val + 1; 2267 true_reg->min_value = val + 1;
2268 true_reg->value_from_signed = value_from_signed;
2224 break; 2269 break;
2225 case BPF_JGE: 2270 case BPF_JGE:
2226 /* Unsigned comparison, the minimum value is 0. */ 2271 value_from_signed = false;
2227 false_reg->min_value = 0;
2228 /* fallthrough */ 2272 /* fallthrough */
2229 case BPF_JSGE: 2273 case BPF_JSGE:
2274 if (true_reg->value_from_signed != value_from_signed)
2275 reset_reg_range_values(true_reg, 0);
2276 if (false_reg->value_from_signed != value_from_signed)
2277 reset_reg_range_values(false_reg, 0);
2278 if (opcode == BPF_JGE) {
2279 /* Unsigned comparison, the minimum value is 0. */
2280 false_reg->min_value = 0;
2281 }
2230 /* If this is false then we know the maximum value is val - 1, 2282 /* If this is false then we know the maximum value is val - 1,
2231 * otherwise we know the mimimum value is val. 2283 * otherwise we know the mimimum value is val.
2232 */ 2284 */
2233 false_reg->max_value = val - 1; 2285 false_reg->max_value = val - 1;
2286 false_reg->value_from_signed = value_from_signed;
2234 true_reg->min_value = val; 2287 true_reg->min_value = val;
2288 true_reg->value_from_signed = value_from_signed;
2235 break; 2289 break;
2236 default: 2290 default:
2237 break; 2291 break;
@@ -2239,6 +2293,12 @@ static void reg_set_min_max(struct bpf_reg_state *true_reg,
2239 2293
2240 check_reg_overflow(false_reg); 2294 check_reg_overflow(false_reg);
2241 check_reg_overflow(true_reg); 2295 check_reg_overflow(true_reg);
2296 if (is_range) {
2297 if (__is_pointer_value(false, false_reg))
2298 reset_reg_range_values(false_reg, 0);
2299 if (__is_pointer_value(false, true_reg))
2300 reset_reg_range_values(true_reg, 0);
2301 }
2242} 2302}
2243 2303
2244/* Same as above, but for the case that dst_reg is a CONST_IMM reg and src_reg 2304/* Same as above, but for the case that dst_reg is a CONST_IMM reg and src_reg
@@ -2248,41 +2308,64 @@ static void reg_set_min_max_inv(struct bpf_reg_state *true_reg,
2248 struct bpf_reg_state *false_reg, u64 val, 2308 struct bpf_reg_state *false_reg, u64 val,
2249 u8 opcode) 2309 u8 opcode)
2250{ 2310{
2311 bool value_from_signed = true;
2312 bool is_range = true;
2313
2251 switch (opcode) { 2314 switch (opcode) {
2252 case BPF_JEQ: 2315 case BPF_JEQ:
2253 /* If this is false then we know nothing Jon Snow, but if it is 2316 /* If this is false then we know nothing Jon Snow, but if it is
2254 * true then we know for sure. 2317 * true then we know for sure.
2255 */ 2318 */
2256 true_reg->max_value = true_reg->min_value = val; 2319 true_reg->max_value = true_reg->min_value = val;
2320 is_range = false;
2257 break; 2321 break;
2258 case BPF_JNE: 2322 case BPF_JNE:
2259 /* If this is true we know nothing Jon Snow, but if it is false 2323 /* If this is true we know nothing Jon Snow, but if it is false
2260 * we know the value for sure; 2324 * we know the value for sure;
2261 */ 2325 */
2262 false_reg->max_value = false_reg->min_value = val; 2326 false_reg->max_value = false_reg->min_value = val;
2327 is_range = false;
2263 break; 2328 break;
2264 case BPF_JGT: 2329 case BPF_JGT:
2265 /* Unsigned comparison, the minimum value is 0. */ 2330 value_from_signed = false;
2266 true_reg->min_value = 0;
2267 /* fallthrough */ 2331 /* fallthrough */
2268 case BPF_JSGT: 2332 case BPF_JSGT:
2333 if (true_reg->value_from_signed != value_from_signed)
2334 reset_reg_range_values(true_reg, 0);
2335 if (false_reg->value_from_signed != value_from_signed)
2336 reset_reg_range_values(false_reg, 0);
2337 if (opcode == BPF_JGT) {
2338 /* Unsigned comparison, the minimum value is 0. */
2339 true_reg->min_value = 0;
2340 }
2269 /* 2341 /*
2270 * If this is false, then the val is <= the register, if it is 2342 * If this is false, then the val is <= the register, if it is
2271 * true the register <= to the val. 2343 * true the register <= to the val.
2272 */ 2344 */
2273 false_reg->min_value = val; 2345 false_reg->min_value = val;
2346 false_reg->value_from_signed = value_from_signed;
2274 true_reg->max_value = val - 1; 2347 true_reg->max_value = val - 1;
2348 true_reg->value_from_signed = value_from_signed;
2275 break; 2349 break;
2276 case BPF_JGE: 2350 case BPF_JGE:
2277 /* Unsigned comparison, the minimum value is 0. */ 2351 value_from_signed = false;
2278 true_reg->min_value = 0;
2279 /* fallthrough */ 2352 /* fallthrough */
2280 case BPF_JSGE: 2353 case BPF_JSGE:
2354 if (true_reg->value_from_signed != value_from_signed)
2355 reset_reg_range_values(true_reg, 0);
2356 if (false_reg->value_from_signed != value_from_signed)
2357 reset_reg_range_values(false_reg, 0);
2358 if (opcode == BPF_JGE) {
2359 /* Unsigned comparison, the minimum value is 0. */
2360 true_reg->min_value = 0;
2361 }
2281 /* If this is false then constant < register, if it is true then 2362 /* If this is false then constant < register, if it is true then
2282 * the register < constant. 2363 * the register < constant.
2283 */ 2364 */
2284 false_reg->min_value = val + 1; 2365 false_reg->min_value = val + 1;
2366 false_reg->value_from_signed = value_from_signed;
2285 true_reg->max_value = val; 2367 true_reg->max_value = val;
2368 true_reg->value_from_signed = value_from_signed;
2286 break; 2369 break;
2287 default: 2370 default:
2288 break; 2371 break;
@@ -2290,6 +2373,12 @@ static void reg_set_min_max_inv(struct bpf_reg_state *true_reg,
2290 2373
2291 check_reg_overflow(false_reg); 2374 check_reg_overflow(false_reg);
2292 check_reg_overflow(true_reg); 2375 check_reg_overflow(true_reg);
2376 if (is_range) {
2377 if (__is_pointer_value(false, false_reg))
2378 reset_reg_range_values(false_reg, 0);
2379 if (__is_pointer_value(false, true_reg))
2380 reset_reg_range_values(true_reg, 0);
2381 }
2293} 2382}
2294 2383
2295static void mark_map_reg(struct bpf_reg_state *regs, u32 regno, u32 id, 2384static void mark_map_reg(struct bpf_reg_state *regs, u32 regno, u32 id,
diff --git a/kernel/cgroup/cgroup-internal.h b/kernel/cgroup/cgroup-internal.h
index 793565c05742..8b4c3c2f2509 100644
--- a/kernel/cgroup/cgroup-internal.h
+++ b/kernel/cgroup/cgroup-internal.h
@@ -33,6 +33,9 @@ struct cgroup_taskset {
33 struct list_head src_csets; 33 struct list_head src_csets;
34 struct list_head dst_csets; 34 struct list_head dst_csets;
35 35
36 /* the number of tasks in the set */
37 int nr_tasks;
38
36 /* the subsys currently being processed */ 39 /* the subsys currently being processed */
37 int ssid; 40 int ssid;
38 41
diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c
index 620794a20a33..df2e0f14a95d 100644
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
@@ -2006,6 +2006,8 @@ static void cgroup_migrate_add_task(struct task_struct *task,
2006 if (!cset->mg_src_cgrp) 2006 if (!cset->mg_src_cgrp)
2007 return; 2007 return;
2008 2008
2009 mgctx->tset.nr_tasks++;
2010
2009 list_move_tail(&task->cg_list, &cset->mg_tasks); 2011 list_move_tail(&task->cg_list, &cset->mg_tasks);
2010 if (list_empty(&cset->mg_node)) 2012 if (list_empty(&cset->mg_node))
2011 list_add_tail(&cset->mg_node, 2013 list_add_tail(&cset->mg_node,
@@ -2094,21 +2096,19 @@ static int cgroup_migrate_execute(struct cgroup_mgctx *mgctx)
2094 struct css_set *cset, *tmp_cset; 2096 struct css_set *cset, *tmp_cset;
2095 int ssid, failed_ssid, ret; 2097 int ssid, failed_ssid, ret;
2096 2098
2097 /* methods shouldn't be called if no task is actually migrating */
2098 if (list_empty(&tset->src_csets))
2099 return 0;
2100
2101 /* check that we can legitimately attach to the cgroup */ 2099 /* check that we can legitimately attach to the cgroup */
2102 do_each_subsys_mask(ss, ssid, mgctx->ss_mask) { 2100 if (tset->nr_tasks) {
2103 if (ss->can_attach) { 2101 do_each_subsys_mask(ss, ssid, mgctx->ss_mask) {
2104 tset->ssid = ssid; 2102 if (ss->can_attach) {
2105 ret = ss->can_attach(tset); 2103 tset->ssid = ssid;
2106 if (ret) { 2104 ret = ss->can_attach(tset);
2107 failed_ssid = ssid; 2105 if (ret) {
2108 goto out_cancel_attach; 2106 failed_ssid = ssid;
2107 goto out_cancel_attach;
2108 }
2109 } 2109 }
2110 } 2110 } while_each_subsys_mask();
2111 } while_each_subsys_mask(); 2111 }
2112 2112
2113 /* 2113 /*
2114 * Now that we're guaranteed success, proceed to move all tasks to 2114 * Now that we're guaranteed success, proceed to move all tasks to
@@ -2137,25 +2137,29 @@ static int cgroup_migrate_execute(struct cgroup_mgctx *mgctx)
2137 */ 2137 */
2138 tset->csets = &tset->dst_csets; 2138 tset->csets = &tset->dst_csets;
2139 2139
2140 do_each_subsys_mask(ss, ssid, mgctx->ss_mask) { 2140 if (tset->nr_tasks) {
2141 if (ss->attach) { 2141 do_each_subsys_mask(ss, ssid, mgctx->ss_mask) {
2142 tset->ssid = ssid; 2142 if (ss->attach) {
2143 ss->attach(tset); 2143 tset->ssid = ssid;
2144 } 2144 ss->attach(tset);
2145 } while_each_subsys_mask(); 2145 }
2146 } while_each_subsys_mask();
2147 }
2146 2148
2147 ret = 0; 2149 ret = 0;
2148 goto out_release_tset; 2150 goto out_release_tset;
2149 2151
2150out_cancel_attach: 2152out_cancel_attach:
2151 do_each_subsys_mask(ss, ssid, mgctx->ss_mask) { 2153 if (tset->nr_tasks) {
2152 if (ssid == failed_ssid) 2154 do_each_subsys_mask(ss, ssid, mgctx->ss_mask) {
2153 break; 2155 if (ssid == failed_ssid)
2154 if (ss->cancel_attach) { 2156 break;
2155 tset->ssid = ssid; 2157 if (ss->cancel_attach) {
2156 ss->cancel_attach(tset); 2158 tset->ssid = ssid;
2157 } 2159 ss->cancel_attach(tset);
2158 } while_each_subsys_mask(); 2160 }
2161 } while_each_subsys_mask();
2162 }
2159out_release_tset: 2163out_release_tset:
2160 spin_lock_irq(&css_set_lock); 2164 spin_lock_irq(&css_set_lock);
2161 list_splice_init(&tset->dst_csets, &tset->src_csets); 2165 list_splice_init(&tset->dst_csets, &tset->src_csets);
@@ -2997,11 +3001,11 @@ static ssize_t cgroup_subtree_control_write(struct kernfs_open_file *of,
2997 cgrp->subtree_control &= ~disable; 3001 cgrp->subtree_control &= ~disable;
2998 3002
2999 ret = cgroup_apply_control(cgrp); 3003 ret = cgroup_apply_control(cgrp);
3000
3001 cgroup_finalize_control(cgrp, ret); 3004 cgroup_finalize_control(cgrp, ret);
3005 if (ret)
3006 goto out_unlock;
3002 3007
3003 kernfs_activate(cgrp->kn); 3008 kernfs_activate(cgrp->kn);
3004 ret = 0;
3005out_unlock: 3009out_unlock:
3006 cgroup_kn_unlock(of->kn); 3010 cgroup_kn_unlock(of->kn);
3007 return ret ?: nbytes; 3011 return ret ?: nbytes;
@@ -4669,6 +4673,10 @@ int __init cgroup_init(void)
4669 4673
4670 if (ss->bind) 4674 if (ss->bind)
4671 ss->bind(init_css_set.subsys[ssid]); 4675 ss->bind(init_css_set.subsys[ssid]);
4676
4677 mutex_lock(&cgroup_mutex);
4678 css_populate_dir(init_css_set.subsys[ssid]);
4679 mutex_unlock(&cgroup_mutex);
4672 } 4680 }
4673 4681
4674 /* init_css_set.subsys[] has been updated, re-hash */ 4682 /* init_css_set.subsys[] has been updated, re-hash */
diff --git a/kernel/cgroup/cpuset.c b/kernel/cgroup/cpuset.c
index ca8376e5008c..8d5151688504 100644
--- a/kernel/cgroup/cpuset.c
+++ b/kernel/cgroup/cpuset.c
@@ -63,6 +63,7 @@
63#include <linux/cgroup.h> 63#include <linux/cgroup.h>
64#include <linux/wait.h> 64#include <linux/wait.h>
65 65
66DEFINE_STATIC_KEY_FALSE(cpusets_pre_enable_key);
66DEFINE_STATIC_KEY_FALSE(cpusets_enabled_key); 67DEFINE_STATIC_KEY_FALSE(cpusets_enabled_key);
67 68
68/* See "Frequency meter" comments, below. */ 69/* See "Frequency meter" comments, below. */
diff --git a/kernel/events/core.c b/kernel/events/core.c
index 1538df9b2b65..ee20d4c546b5 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -1452,6 +1452,13 @@ static enum event_type_t get_event_type(struct perf_event *event)
1452 1452
1453 lockdep_assert_held(&ctx->lock); 1453 lockdep_assert_held(&ctx->lock);
1454 1454
1455 /*
1456 * It's 'group type', really, because if our group leader is
1457 * pinned, so are we.
1458 */
1459 if (event->group_leader != event)
1460 event = event->group_leader;
1461
1455 event_type = event->attr.pinned ? EVENT_PINNED : EVENT_FLEXIBLE; 1462 event_type = event->attr.pinned ? EVENT_PINNED : EVENT_FLEXIBLE;
1456 if (!ctx->task) 1463 if (!ctx->task)
1457 event_type |= EVENT_CPU; 1464 event_type |= EVENT_CPU;
@@ -2210,6 +2217,33 @@ static int group_can_go_on(struct perf_event *event,
2210 return can_add_hw; 2217 return can_add_hw;
2211} 2218}
2212 2219
2220/*
2221 * Complement to update_event_times(). This computes the tstamp_* values to
2222 * continue 'enabled' state from @now, and effectively discards the time
2223 * between the prior tstamp_stopped and now (as we were in the OFF state, or
2224 * just switched (context) time base).
2225 *
2226 * This further assumes '@event->state == INACTIVE' (we just came from OFF) and
2227 * cannot have been scheduled in yet. And going into INACTIVE state means
2228 * '@event->tstamp_stopped = @now'.
2229 *
2230 * Thus given the rules of update_event_times():
2231 *
2232 * total_time_enabled = tstamp_stopped - tstamp_enabled
2233 * total_time_running = tstamp_stopped - tstamp_running
2234 *
2235 * We can insert 'tstamp_stopped == now' and reverse them to compute new
2236 * tstamp_* values.
2237 */
2238static void __perf_event_enable_time(struct perf_event *event, u64 now)
2239{
2240 WARN_ON_ONCE(event->state != PERF_EVENT_STATE_INACTIVE);
2241
2242 event->tstamp_stopped = now;
2243 event->tstamp_enabled = now - event->total_time_enabled;
2244 event->tstamp_running = now - event->total_time_running;
2245}
2246
2213static void add_event_to_ctx(struct perf_event *event, 2247static void add_event_to_ctx(struct perf_event *event,
2214 struct perf_event_context *ctx) 2248 struct perf_event_context *ctx)
2215{ 2249{
@@ -2217,9 +2251,12 @@ static void add_event_to_ctx(struct perf_event *event,
2217 2251
2218 list_add_event(event, ctx); 2252 list_add_event(event, ctx);
2219 perf_group_attach(event); 2253 perf_group_attach(event);
2220 event->tstamp_enabled = tstamp; 2254 /*
2221 event->tstamp_running = tstamp; 2255 * We can be called with event->state == STATE_OFF when we create with
2222 event->tstamp_stopped = tstamp; 2256 * .disabled = 1. In that case the IOC_ENABLE will call this function.
2257 */
2258 if (event->state == PERF_EVENT_STATE_INACTIVE)
2259 __perf_event_enable_time(event, tstamp);
2223} 2260}
2224 2261
2225static void ctx_sched_out(struct perf_event_context *ctx, 2262static void ctx_sched_out(struct perf_event_context *ctx,
@@ -2464,10 +2501,11 @@ static void __perf_event_mark_enabled(struct perf_event *event)
2464 u64 tstamp = perf_event_time(event); 2501 u64 tstamp = perf_event_time(event);
2465 2502
2466 event->state = PERF_EVENT_STATE_INACTIVE; 2503 event->state = PERF_EVENT_STATE_INACTIVE;
2467 event->tstamp_enabled = tstamp - event->total_time_enabled; 2504 __perf_event_enable_time(event, tstamp);
2468 list_for_each_entry(sub, &event->sibling_list, group_entry) { 2505 list_for_each_entry(sub, &event->sibling_list, group_entry) {
2506 /* XXX should not be > INACTIVE if event isn't */
2469 if (sub->state >= PERF_EVENT_STATE_INACTIVE) 2507 if (sub->state >= PERF_EVENT_STATE_INACTIVE)
2470 sub->tstamp_enabled = tstamp - sub->total_time_enabled; 2508 __perf_event_enable_time(sub, tstamp);
2471 } 2509 }
2472} 2510}
2473 2511
@@ -4378,7 +4416,9 @@ EXPORT_SYMBOL_GPL(perf_event_read_value);
4378static int __perf_read_group_add(struct perf_event *leader, 4416static int __perf_read_group_add(struct perf_event *leader,
4379 u64 read_format, u64 *values) 4417 u64 read_format, u64 *values)
4380{ 4418{
4419 struct perf_event_context *ctx = leader->ctx;
4381 struct perf_event *sub; 4420 struct perf_event *sub;
4421 unsigned long flags;
4382 int n = 1; /* skip @nr */ 4422 int n = 1; /* skip @nr */
4383 int ret; 4423 int ret;
4384 4424
@@ -4408,12 +4448,15 @@ static int __perf_read_group_add(struct perf_event *leader,
4408 if (read_format & PERF_FORMAT_ID) 4448 if (read_format & PERF_FORMAT_ID)
4409 values[n++] = primary_event_id(leader); 4449 values[n++] = primary_event_id(leader);
4410 4450
4451 raw_spin_lock_irqsave(&ctx->lock, flags);
4452
4411 list_for_each_entry(sub, &leader->sibling_list, group_entry) { 4453 list_for_each_entry(sub, &leader->sibling_list, group_entry) {
4412 values[n++] += perf_event_count(sub); 4454 values[n++] += perf_event_count(sub);
4413 if (read_format & PERF_FORMAT_ID) 4455 if (read_format & PERF_FORMAT_ID)
4414 values[n++] = primary_event_id(sub); 4456 values[n++] = primary_event_id(sub);
4415 } 4457 }
4416 4458
4459 raw_spin_unlock_irqrestore(&ctx->lock, flags);
4417 return 0; 4460 return 0;
4418} 4461}
4419 4462
@@ -5078,7 +5121,7 @@ static void perf_mmap_open(struct vm_area_struct *vma)
5078 atomic_inc(&event->rb->aux_mmap_count); 5121 atomic_inc(&event->rb->aux_mmap_count);
5079 5122
5080 if (event->pmu->event_mapped) 5123 if (event->pmu->event_mapped)
5081 event->pmu->event_mapped(event); 5124 event->pmu->event_mapped(event, vma->vm_mm);
5082} 5125}
5083 5126
5084static void perf_pmu_output_stop(struct perf_event *event); 5127static void perf_pmu_output_stop(struct perf_event *event);
@@ -5101,7 +5144,7 @@ static void perf_mmap_close(struct vm_area_struct *vma)
5101 unsigned long size = perf_data_size(rb); 5144 unsigned long size = perf_data_size(rb);
5102 5145
5103 if (event->pmu->event_unmapped) 5146 if (event->pmu->event_unmapped)
5104 event->pmu->event_unmapped(event); 5147 event->pmu->event_unmapped(event, vma->vm_mm);
5105 5148
5106 /* 5149 /*
5107 * rb->aux_mmap_count will always drop before rb->mmap_count and 5150 * rb->aux_mmap_count will always drop before rb->mmap_count and
@@ -5399,7 +5442,7 @@ aux_unlock:
5399 vma->vm_ops = &perf_mmap_vmops; 5442 vma->vm_ops = &perf_mmap_vmops;
5400 5443
5401 if (event->pmu->event_mapped) 5444 if (event->pmu->event_mapped)
5402 event->pmu->event_mapped(event); 5445 event->pmu->event_mapped(event, vma->vm_mm);
5403 5446
5404 return ret; 5447 return ret;
5405} 5448}
@@ -7321,21 +7364,6 @@ int perf_event_account_interrupt(struct perf_event *event)
7321 return __perf_event_account_interrupt(event, 1); 7364 return __perf_event_account_interrupt(event, 1);
7322} 7365}
7323 7366
7324static bool sample_is_allowed(struct perf_event *event, struct pt_regs *regs)
7325{
7326 /*
7327 * Due to interrupt latency (AKA "skid"), we may enter the
7328 * kernel before taking an overflow, even if the PMU is only
7329 * counting user events.
7330 * To avoid leaking information to userspace, we must always
7331 * reject kernel samples when exclude_kernel is set.
7332 */
7333 if (event->attr.exclude_kernel && !user_mode(regs))
7334 return false;
7335
7336 return true;
7337}
7338
7339/* 7367/*
7340 * Generic event overflow handling, sampling. 7368 * Generic event overflow handling, sampling.
7341 */ 7369 */
@@ -7357,12 +7385,6 @@ static int __perf_event_overflow(struct perf_event *event,
7357 ret = __perf_event_account_interrupt(event, throttle); 7385 ret = __perf_event_account_interrupt(event, throttle);
7358 7386
7359 /* 7387 /*
7360 * For security, drop the skid kernel samples if necessary.
7361 */
7362 if (!sample_is_allowed(event, regs))
7363 return ret;
7364
7365 /*
7366 * XXX event_limit might not quite work as expected on inherited 7388 * XXX event_limit might not quite work as expected on inherited
7367 * events 7389 * events
7368 */ 7390 */
diff --git a/kernel/fork.c b/kernel/fork.c
index 17921b0390b4..e075b7780421 100644
--- a/kernel/fork.c
+++ b/kernel/fork.c
@@ -807,7 +807,7 @@ static struct mm_struct *mm_init(struct mm_struct *mm, struct task_struct *p,
807 mm_init_aio(mm); 807 mm_init_aio(mm);
808 mm_init_owner(mm, p); 808 mm_init_owner(mm, p);
809 mmu_notifier_mm_init(mm); 809 mmu_notifier_mm_init(mm);
810 clear_tlb_flush_pending(mm); 810 init_tlb_flush_pending(mm);
811#if defined(CONFIG_TRANSPARENT_HUGEPAGE) && !USE_SPLIT_PMD_PTLOCKS 811#if defined(CONFIG_TRANSPARENT_HUGEPAGE) && !USE_SPLIT_PMD_PTLOCKS
812 mm->pmd_huge_pte = NULL; 812 mm->pmd_huge_pte = NULL;
813#endif 813#endif
diff --git a/kernel/futex.c b/kernel/futex.c
index c934689043b2..f50b434756c1 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -212,7 +212,7 @@ struct futex_pi_state {
212 atomic_t refcount; 212 atomic_t refcount;
213 213
214 union futex_key key; 214 union futex_key key;
215}; 215} __randomize_layout;
216 216
217/** 217/**
218 * struct futex_q - The hashed futex queue entry, one per waiting task 218 * struct futex_q - The hashed futex queue entry, one per waiting task
@@ -246,7 +246,7 @@ struct futex_q {
246 struct rt_mutex_waiter *rt_waiter; 246 struct rt_mutex_waiter *rt_waiter;
247 union futex_key *requeue_pi_key; 247 union futex_key *requeue_pi_key;
248 u32 bitset; 248 u32 bitset;
249}; 249} __randomize_layout;
250 250
251static const struct futex_q futex_q_init = { 251static const struct futex_q futex_q_init = {
252 /* list gets initialized in queue_me()*/ 252 /* list gets initialized in queue_me()*/
@@ -670,13 +670,14 @@ again:
670 * this reference was taken by ihold under the page lock 670 * this reference was taken by ihold under the page lock
671 * pinning the inode in place so i_lock was unnecessary. The 671 * pinning the inode in place so i_lock was unnecessary. The
672 * only way for this check to fail is if the inode was 672 * only way for this check to fail is if the inode was
673 * truncated in parallel so warn for now if this happens. 673 * truncated in parallel which is almost certainly an
674 * application bug. In such a case, just retry.
674 * 675 *
675 * We are not calling into get_futex_key_refs() in file-backed 676 * We are not calling into get_futex_key_refs() in file-backed
676 * cases, therefore a successful atomic_inc return below will 677 * cases, therefore a successful atomic_inc return below will
677 * guarantee that get_futex_key() will still imply smp_mb(); (B). 678 * guarantee that get_futex_key() will still imply smp_mb(); (B).
678 */ 679 */
679 if (WARN_ON_ONCE(!atomic_inc_not_zero(&inode->i_count))) { 680 if (!atomic_inc_not_zero(&inode->i_count)) {
680 rcu_read_unlock(); 681 rcu_read_unlock();
681 put_page(page); 682 put_page(page);
682 683
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index d171bc57e1e0..3675c6004f2a 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -170,21 +170,11 @@ static void irq_state_clr_disabled(struct irq_desc *desc)
170 irqd_clear(&desc->irq_data, IRQD_IRQ_DISABLED); 170 irqd_clear(&desc->irq_data, IRQD_IRQ_DISABLED);
171} 171}
172 172
173static void irq_state_set_disabled(struct irq_desc *desc)
174{
175 irqd_set(&desc->irq_data, IRQD_IRQ_DISABLED);
176}
177
178static void irq_state_clr_masked(struct irq_desc *desc) 173static void irq_state_clr_masked(struct irq_desc *desc)
179{ 174{
180 irqd_clear(&desc->irq_data, IRQD_IRQ_MASKED); 175 irqd_clear(&desc->irq_data, IRQD_IRQ_MASKED);
181} 176}
182 177
183static void irq_state_set_masked(struct irq_desc *desc)
184{
185 irqd_set(&desc->irq_data, IRQD_IRQ_MASKED);
186}
187
188static void irq_state_clr_started(struct irq_desc *desc) 178static void irq_state_clr_started(struct irq_desc *desc)
189{ 179{
190 irqd_clear(&desc->irq_data, IRQD_IRQ_STARTED); 180 irqd_clear(&desc->irq_data, IRQD_IRQ_STARTED);
@@ -1010,7 +1000,7 @@ EXPORT_SYMBOL_GPL(irq_set_chip_and_handler_name);
1010 1000
1011void irq_modify_status(unsigned int irq, unsigned long clr, unsigned long set) 1001void irq_modify_status(unsigned int irq, unsigned long clr, unsigned long set)
1012{ 1002{
1013 unsigned long flags; 1003 unsigned long flags, trigger, tmp;
1014 struct irq_desc *desc = irq_get_desc_lock(irq, &flags, 0); 1004 struct irq_desc *desc = irq_get_desc_lock(irq, &flags, 0);
1015 1005
1016 if (!desc) 1006 if (!desc)
@@ -1024,6 +1014,8 @@ void irq_modify_status(unsigned int irq, unsigned long clr, unsigned long set)
1024 1014
1025 irq_settings_clr_and_set(desc, clr, set); 1015 irq_settings_clr_and_set(desc, clr, set);
1026 1016
1017 trigger = irqd_get_trigger_type(&desc->irq_data);
1018
1027 irqd_clear(&desc->irq_data, IRQD_NO_BALANCING | IRQD_PER_CPU | 1019 irqd_clear(&desc->irq_data, IRQD_NO_BALANCING | IRQD_PER_CPU |
1028 IRQD_TRIGGER_MASK | IRQD_LEVEL | IRQD_MOVE_PCNTXT); 1020 IRQD_TRIGGER_MASK | IRQD_LEVEL | IRQD_MOVE_PCNTXT);
1029 if (irq_settings_has_no_balance_set(desc)) 1021 if (irq_settings_has_no_balance_set(desc))
@@ -1035,7 +1027,11 @@ void irq_modify_status(unsigned int irq, unsigned long clr, unsigned long set)
1035 if (irq_settings_is_level(desc)) 1027 if (irq_settings_is_level(desc))
1036 irqd_set(&desc->irq_data, IRQD_LEVEL); 1028 irqd_set(&desc->irq_data, IRQD_LEVEL);
1037 1029
1038 irqd_set(&desc->irq_data, irq_settings_get_trigger_mask(desc)); 1030 tmp = irq_settings_get_trigger_mask(desc);
1031 if (tmp != IRQ_TYPE_NONE)
1032 trigger = tmp;
1033
1034 irqd_set(&desc->irq_data, trigger);
1039 1035
1040 irq_put_desc_unlock(desc, flags); 1036 irq_put_desc_unlock(desc, flags);
1041} 1037}
diff --git a/kernel/irq/cpuhotplug.c b/kernel/irq/cpuhotplug.c
index aee8f7ec40af..638eb9c83d9f 100644
--- a/kernel/irq/cpuhotplug.c
+++ b/kernel/irq/cpuhotplug.c
@@ -95,8 +95,13 @@ static bool migrate_one_irq(struct irq_desc *desc)
95 affinity = cpu_online_mask; 95 affinity = cpu_online_mask;
96 brokeaff = true; 96 brokeaff = true;
97 } 97 }
98 98 /*
99 err = irq_do_set_affinity(d, affinity, true); 99 * Do not set the force argument of irq_do_set_affinity() as this
100 * disables the masking of offline CPUs from the supplied affinity
101 * mask and therefore might keep/reassign the irq to the outgoing
102 * CPU.
103 */
104 err = irq_do_set_affinity(d, affinity, false);
100 if (err) { 105 if (err) {
101 pr_warn_ratelimited("IRQ%u: set affinity failed(%d).\n", 106 pr_warn_ratelimited("IRQ%u: set affinity failed(%d).\n",
102 d->irq, err); 107 d->irq, err);
diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h
index dbfba9933ed2..a2c48058354c 100644
--- a/kernel/irq/internals.h
+++ b/kernel/irq/internals.h
@@ -227,6 +227,16 @@ static inline bool irqd_has_set(struct irq_data *d, unsigned int mask)
227 return __irqd_to_state(d) & mask; 227 return __irqd_to_state(d) & mask;
228} 228}
229 229
230static inline void irq_state_set_disabled(struct irq_desc *desc)
231{
232 irqd_set(&desc->irq_data, IRQD_IRQ_DISABLED);
233}
234
235static inline void irq_state_set_masked(struct irq_desc *desc)
236{
237 irqd_set(&desc->irq_data, IRQD_IRQ_MASKED);
238}
239
230#undef __irqd_to_state 240#undef __irqd_to_state
231 241
232static inline void kstat_incr_irqs_this_cpu(struct irq_desc *desc) 242static inline void kstat_incr_irqs_this_cpu(struct irq_desc *desc)
diff --git a/kernel/irq/ipi.c b/kernel/irq/ipi.c
index 1a9abc1c8ea0..259a22aa9934 100644
--- a/kernel/irq/ipi.c
+++ b/kernel/irq/ipi.c
@@ -165,7 +165,7 @@ irq_hw_number_t ipi_get_hwirq(unsigned int irq, unsigned int cpu)
165 struct irq_data *data = irq_get_irq_data(irq); 165 struct irq_data *data = irq_get_irq_data(irq);
166 struct cpumask *ipimask = data ? irq_data_get_affinity_mask(data) : NULL; 166 struct cpumask *ipimask = data ? irq_data_get_affinity_mask(data) : NULL;
167 167
168 if (!data || !ipimask || cpu > nr_cpu_ids) 168 if (!data || !ipimask || cpu >= nr_cpu_ids)
169 return INVALID_HWIRQ; 169 return INVALID_HWIRQ;
170 170
171 if (!cpumask_test_cpu(cpu, ipimask)) 171 if (!cpumask_test_cpu(cpu, ipimask))
@@ -195,7 +195,7 @@ static int ipi_send_verify(struct irq_chip *chip, struct irq_data *data,
195 if (!chip->ipi_send_single && !chip->ipi_send_mask) 195 if (!chip->ipi_send_single && !chip->ipi_send_mask)
196 return -EINVAL; 196 return -EINVAL;
197 197
198 if (cpu > nr_cpu_ids) 198 if (cpu >= nr_cpu_ids)
199 return -EINVAL; 199 return -EINVAL;
200 200
201 if (dest) { 201 if (dest) {
diff --git a/kernel/irq/pm.c b/kernel/irq/pm.c
index cea1de0161f1..6bd9b58429cc 100644
--- a/kernel/irq/pm.c
+++ b/kernel/irq/pm.c
@@ -149,6 +149,8 @@ static void resume_irq(struct irq_desc *desc)
149 149
150 /* Pretend that it got disabled ! */ 150 /* Pretend that it got disabled ! */
151 desc->depth++; 151 desc->depth++;
152 irq_state_set_disabled(desc);
153 irq_state_set_masked(desc);
152resume: 154resume:
153 desc->istate &= ~IRQS_SUSPENDED; 155 desc->istate &= ~IRQS_SUSPENDED;
154 __enable_irq(desc); 156 __enable_irq(desc);
diff --git a/kernel/kmod.c b/kernel/kmod.c
index 6d016c5d97c8..2f37acde640b 100644
--- a/kernel/kmod.c
+++ b/kernel/kmod.c
@@ -71,6 +71,18 @@ static atomic_t kmod_concurrent_max = ATOMIC_INIT(MAX_KMOD_CONCURRENT);
71static DECLARE_WAIT_QUEUE_HEAD(kmod_wq); 71static DECLARE_WAIT_QUEUE_HEAD(kmod_wq);
72 72
73/* 73/*
74 * This is a restriction on having *all* MAX_KMOD_CONCURRENT threads
75 * running at the same time without returning. When this happens we
76 * believe you've somehow ended up with a recursive module dependency
77 * creating a loop.
78 *
79 * We have no option but to fail.
80 *
81 * Userspace should proactively try to detect and prevent these.
82 */
83#define MAX_KMOD_ALL_BUSY_TIMEOUT 5
84
85/*
74 modprobe_path is set via /proc/sys. 86 modprobe_path is set via /proc/sys.
75*/ 87*/
76char modprobe_path[KMOD_PATH_LEN] = "/sbin/modprobe"; 88char modprobe_path[KMOD_PATH_LEN] = "/sbin/modprobe";
@@ -167,8 +179,17 @@ int __request_module(bool wait, const char *fmt, ...)
167 pr_warn_ratelimited("request_module: kmod_concurrent_max (%u) close to 0 (max_modprobes: %u), for module %s, throttling...", 179 pr_warn_ratelimited("request_module: kmod_concurrent_max (%u) close to 0 (max_modprobes: %u), for module %s, throttling...",
168 atomic_read(&kmod_concurrent_max), 180 atomic_read(&kmod_concurrent_max),
169 MAX_KMOD_CONCURRENT, module_name); 181 MAX_KMOD_CONCURRENT, module_name);
170 wait_event_interruptible(kmod_wq, 182 ret = wait_event_killable_timeout(kmod_wq,
171 atomic_dec_if_positive(&kmod_concurrent_max) >= 0); 183 atomic_dec_if_positive(&kmod_concurrent_max) >= 0,
184 MAX_KMOD_ALL_BUSY_TIMEOUT * HZ);
185 if (!ret) {
186 pr_warn_ratelimited("request_module: modprobe %s cannot be processed, kmod busy with %d threads for more than %d seconds now",
187 module_name, MAX_KMOD_CONCURRENT, MAX_KMOD_ALL_BUSY_TIMEOUT);
188 return -ETIME;
189 } else if (ret == -ERESTARTSYS) {
190 pr_warn_ratelimited("request_module: sigkill sent for modprobe %s, giving up", module_name);
191 return ret;
192 }
172 } 193 }
173 194
174 trace_module_request(module_name, wait, _RET_IP_); 195 trace_module_request(module_name, wait, _RET_IP_);
diff --git a/kernel/locking/rtmutex.c b/kernel/locking/rtmutex.c
index 78069895032a..649dc9d3951a 100644
--- a/kernel/locking/rtmutex.c
+++ b/kernel/locking/rtmutex.c
@@ -963,7 +963,6 @@ static int task_blocks_on_rt_mutex(struct rt_mutex *lock,
963 return -EDEADLK; 963 return -EDEADLK;
964 964
965 raw_spin_lock(&task->pi_lock); 965 raw_spin_lock(&task->pi_lock);
966 rt_mutex_adjust_prio(task);
967 waiter->task = task; 966 waiter->task = task;
968 waiter->lock = lock; 967 waiter->lock = lock;
969 waiter->prio = task->prio; 968 waiter->prio = task->prio;
diff --git a/kernel/pid.c b/kernel/pid.c
index 731c4e528f4e..020dedbdf066 100644
--- a/kernel/pid.c
+++ b/kernel/pid.c
@@ -527,8 +527,11 @@ pid_t __task_pid_nr_ns(struct task_struct *task, enum pid_type type,
527 if (!ns) 527 if (!ns)
528 ns = task_active_pid_ns(current); 528 ns = task_active_pid_ns(current);
529 if (likely(pid_alive(task))) { 529 if (likely(pid_alive(task))) {
530 if (type != PIDTYPE_PID) 530 if (type != PIDTYPE_PID) {
531 if (type == __PIDTYPE_TGID)
532 type = PIDTYPE_PID;
531 task = task->group_leader; 533 task = task->group_leader;
534 }
532 nr = pid_nr_ns(rcu_dereference(task->pids[type].pid), ns); 535 nr = pid_nr_ns(rcu_dereference(task->pids[type].pid), ns);
533 } 536 }
534 rcu_read_unlock(); 537 rcu_read_unlock();
@@ -537,12 +540,6 @@ pid_t __task_pid_nr_ns(struct task_struct *task, enum pid_type type,
537} 540}
538EXPORT_SYMBOL(__task_pid_nr_ns); 541EXPORT_SYMBOL(__task_pid_nr_ns);
539 542
540pid_t task_tgid_nr_ns(struct task_struct *tsk, struct pid_namespace *ns)
541{
542 return pid_nr_ns(task_tgid(tsk), ns);
543}
544EXPORT_SYMBOL(task_tgid_nr_ns);
545
546struct pid_namespace *task_active_pid_ns(struct task_struct *tsk) 543struct pid_namespace *task_active_pid_ns(struct task_struct *tsk)
547{ 544{
548 return ns_of_pid(task_pid(tsk)); 545 return ns_of_pid(task_pid(tsk));
@@ -575,13 +572,10 @@ struct pid *find_ge_pid(int nr, struct pid_namespace *ns)
575 */ 572 */
576void __init pidhash_init(void) 573void __init pidhash_init(void)
577{ 574{
578 unsigned int pidhash_size;
579
580 pid_hash = alloc_large_system_hash("PID", sizeof(*pid_hash), 0, 18, 575 pid_hash = alloc_large_system_hash("PID", sizeof(*pid_hash), 0, 18,
581 HASH_EARLY | HASH_SMALL | HASH_ZERO, 576 HASH_EARLY | HASH_SMALL | HASH_ZERO,
582 &pidhash_shift, NULL, 577 &pidhash_shift, NULL,
583 0, 4096); 578 0, 4096);
584 pidhash_size = 1U << pidhash_shift;
585} 579}
586 580
587void __init pidmap_init(void) 581void __init pidmap_init(void)
diff --git a/kernel/power/snapshot.c b/kernel/power/snapshot.c
index 222317721c5a..0972a8e09d08 100644
--- a/kernel/power/snapshot.c
+++ b/kernel/power/snapshot.c
@@ -1650,7 +1650,7 @@ static unsigned long minimum_image_size(unsigned long saveable)
1650{ 1650{
1651 unsigned long size; 1651 unsigned long size;
1652 1652
1653 size = global_page_state(NR_SLAB_RECLAIMABLE) 1653 size = global_node_page_state(NR_SLAB_RECLAIMABLE)
1654 + global_node_page_state(NR_ACTIVE_ANON) 1654 + global_node_page_state(NR_ACTIVE_ANON)
1655 + global_node_page_state(NR_INACTIVE_ANON) 1655 + global_node_page_state(NR_INACTIVE_ANON)
1656 + global_node_page_state(NR_ACTIVE_FILE) 1656 + global_node_page_state(NR_ACTIVE_FILE)
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 17c667b427b4..0869b20fba81 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -2069,7 +2069,7 @@ out:
2069/** 2069/**
2070 * try_to_wake_up_local - try to wake up a local task with rq lock held 2070 * try_to_wake_up_local - try to wake up a local task with rq lock held
2071 * @p: the thread to be awakened 2071 * @p: the thread to be awakened
2072 * @cookie: context's cookie for pinning 2072 * @rf: request-queue flags for pinning
2073 * 2073 *
2074 * Put @p on the run-queue if it's not already there. The caller must 2074 * Put @p on the run-queue if it's not already there. The caller must
2075 * ensure that this_rq() is locked, @p is bound to this_rq() and not 2075 * ensure that this_rq() is locked, @p is bound to this_rq() and not
diff --git a/kernel/sched/cputime.c b/kernel/sched/cputime.c
index 6e3ea4ac1bda..14d2dbf97c53 100644
--- a/kernel/sched/cputime.c
+++ b/kernel/sched/cputime.c
@@ -683,7 +683,7 @@ static u64 vtime_delta(struct vtime *vtime)
683{ 683{
684 unsigned long long clock; 684 unsigned long long clock;
685 685
686 clock = sched_clock_cpu(smp_processor_id()); 686 clock = sched_clock();
687 if (clock < vtime->starttime) 687 if (clock < vtime->starttime)
688 return 0; 688 return 0;
689 689
@@ -814,7 +814,7 @@ void arch_vtime_task_switch(struct task_struct *prev)
814 814
815 write_seqcount_begin(&vtime->seqcount); 815 write_seqcount_begin(&vtime->seqcount);
816 vtime->state = VTIME_SYS; 816 vtime->state = VTIME_SYS;
817 vtime->starttime = sched_clock_cpu(smp_processor_id()); 817 vtime->starttime = sched_clock();
818 write_seqcount_end(&vtime->seqcount); 818 write_seqcount_end(&vtime->seqcount);
819} 819}
820 820
@@ -826,7 +826,7 @@ void vtime_init_idle(struct task_struct *t, int cpu)
826 local_irq_save(flags); 826 local_irq_save(flags);
827 write_seqcount_begin(&vtime->seqcount); 827 write_seqcount_begin(&vtime->seqcount);
828 vtime->state = VTIME_SYS; 828 vtime->state = VTIME_SYS;
829 vtime->starttime = sched_clock_cpu(cpu); 829 vtime->starttime = sched_clock();
830 write_seqcount_end(&vtime->seqcount); 830 write_seqcount_end(&vtime->seqcount);
831 local_irq_restore(flags); 831 local_irq_restore(flags);
832} 832}
diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c
index a84299f44b5d..755bd3f1a1a9 100644
--- a/kernel/sched/deadline.c
+++ b/kernel/sched/deadline.c
@@ -1392,17 +1392,19 @@ static void enqueue_task_dl(struct rq *rq, struct task_struct *p, int flags)
1392 struct sched_dl_entity *pi_se = &p->dl; 1392 struct sched_dl_entity *pi_se = &p->dl;
1393 1393
1394 /* 1394 /*
1395 * Use the scheduling parameters of the top pi-waiter 1395 * Use the scheduling parameters of the top pi-waiter task if:
1396 * task if we have one and its (absolute) deadline is 1396 * - we have a top pi-waiter which is a SCHED_DEADLINE task AND
1397 * smaller than our one... OTW we keep our runtime and 1397 * - our dl_boosted is set (i.e. the pi-waiter's (absolute) deadline is
1398 * deadline. 1398 * smaller than our deadline OR we are a !SCHED_DEADLINE task getting
1399 * boosted due to a SCHED_DEADLINE pi-waiter).
1400 * Otherwise we keep our runtime and deadline.
1399 */ 1401 */
1400 if (pi_task && p->dl.dl_boosted && dl_prio(pi_task->normal_prio)) { 1402 if (pi_task && dl_prio(pi_task->normal_prio) && p->dl.dl_boosted) {
1401 pi_se = &pi_task->dl; 1403 pi_se = &pi_task->dl;
1402 } else if (!dl_prio(p->normal_prio)) { 1404 } else if (!dl_prio(p->normal_prio)) {
1403 /* 1405 /*
1404 * Special case in which we have a !SCHED_DEADLINE task 1406 * Special case in which we have a !SCHED_DEADLINE task
1405 * that is going to be deboosted, but exceedes its 1407 * that is going to be deboosted, but exceeds its
1406 * runtime while doing so. No point in replenishing 1408 * runtime while doing so. No point in replenishing
1407 * it, as it's going to return back to its original 1409 * it, as it's going to return back to its original
1408 * scheduling class after this. 1410 * scheduling class after this.
diff --git a/kernel/signal.c b/kernel/signal.c
index caed9133ae52..ed804a470dcd 100644
--- a/kernel/signal.c
+++ b/kernel/signal.c
@@ -1194,7 +1194,11 @@ force_sig_info(int sig, struct siginfo *info, struct task_struct *t)
1194 recalc_sigpending_and_wake(t); 1194 recalc_sigpending_and_wake(t);
1195 } 1195 }
1196 } 1196 }
1197 if (action->sa.sa_handler == SIG_DFL) 1197 /*
1198 * Don't clear SIGNAL_UNKILLABLE for traced tasks, users won't expect
1199 * debugging to leave init killable.
1200 */
1201 if (action->sa.sa_handler == SIG_DFL && !t->ptrace)
1198 t->signal->flags &= ~SIGNAL_UNKILLABLE; 1202 t->signal->flags &= ~SIGNAL_UNKILLABLE;
1199 ret = specific_send_sig_info(sig, info, t); 1203 ret = specific_send_sig_info(sig, info, t);
1200 spin_unlock_irqrestore(&t->sighand->siglock, flags); 1204 spin_unlock_irqrestore(&t->sighand->siglock, flags);
@@ -3303,12 +3307,15 @@ SYSCALL_DEFINE1(sigpending, old_sigset_t __user *, set)
3303#ifdef CONFIG_COMPAT 3307#ifdef CONFIG_COMPAT
3304COMPAT_SYSCALL_DEFINE1(sigpending, compat_old_sigset_t __user *, set32) 3308COMPAT_SYSCALL_DEFINE1(sigpending, compat_old_sigset_t __user *, set32)
3305{ 3309{
3310#ifdef __BIG_ENDIAN
3306 sigset_t set; 3311 sigset_t set;
3307 int err = do_sigpending(&set, sizeof(old_sigset_t)); 3312 int err = do_sigpending(&set, sizeof(set.sig[0]));
3308 if (err == 0) 3313 if (!err)
3309 if (copy_to_user(set32, &set, sizeof(old_sigset_t))) 3314 err = put_user(set.sig[0], set32);
3310 err = -EFAULT;
3311 return err; 3315 return err;
3316#else
3317 return sys_rt_sigpending((sigset_t __user *)set32, sizeof(*set32));
3318#endif
3312} 3319}
3313#endif 3320#endif
3314 3321
diff --git a/kernel/time/timer.c b/kernel/time/timer.c
index 71ce3f4eead3..8f5d1bf18854 100644
--- a/kernel/time/timer.c
+++ b/kernel/time/timer.c
@@ -1495,7 +1495,7 @@ u64 get_next_timer_interrupt(unsigned long basej, u64 basem)
1495 base->is_idle = false; 1495 base->is_idle = false;
1496 } else { 1496 } else {
1497 if (!is_max_delta) 1497 if (!is_max_delta)
1498 expires = basem + (nextevt - basej) * TICK_NSEC; 1498 expires = basem + (u64)(nextevt - basej) * TICK_NSEC;
1499 /* 1499 /*
1500 * If we expect to sleep more than a tick, mark the base idle: 1500 * If we expect to sleep more than a tick, mark the base idle:
1501 */ 1501 */
diff --git a/kernel/trace/bpf_trace.c b/kernel/trace/bpf_trace.c
index 37385193a608..dc498b605d5d 100644
--- a/kernel/trace/bpf_trace.c
+++ b/kernel/trace/bpf_trace.c
@@ -204,10 +204,36 @@ BPF_CALL_5(bpf_trace_printk, char *, fmt, u32, fmt_size, u64, arg1,
204 fmt_cnt++; 204 fmt_cnt++;
205 } 205 }
206 206
207 return __trace_printk(1/* fake ip will not be printed */, fmt, 207/* Horrid workaround for getting va_list handling working with different
208 mod[0] == 2 ? arg1 : mod[0] == 1 ? (long) arg1 : (u32) arg1, 208 * argument type combinations generically for 32 and 64 bit archs.
209 mod[1] == 2 ? arg2 : mod[1] == 1 ? (long) arg2 : (u32) arg2, 209 */
210 mod[2] == 2 ? arg3 : mod[2] == 1 ? (long) arg3 : (u32) arg3); 210#define __BPF_TP_EMIT() __BPF_ARG3_TP()
211#define __BPF_TP(...) \
212 __trace_printk(1 /* Fake ip will not be printed. */, \
213 fmt, ##__VA_ARGS__)
214
215#define __BPF_ARG1_TP(...) \
216 ((mod[0] == 2 || (mod[0] == 1 && __BITS_PER_LONG == 64)) \
217 ? __BPF_TP(arg1, ##__VA_ARGS__) \
218 : ((mod[0] == 1 || (mod[0] == 0 && __BITS_PER_LONG == 32)) \
219 ? __BPF_TP((long)arg1, ##__VA_ARGS__) \
220 : __BPF_TP((u32)arg1, ##__VA_ARGS__)))
221
222#define __BPF_ARG2_TP(...) \
223 ((mod[1] == 2 || (mod[1] == 1 && __BITS_PER_LONG == 64)) \
224 ? __BPF_ARG1_TP(arg2, ##__VA_ARGS__) \
225 : ((mod[1] == 1 || (mod[1] == 0 && __BITS_PER_LONG == 32)) \
226 ? __BPF_ARG1_TP((long)arg2, ##__VA_ARGS__) \
227 : __BPF_ARG1_TP((u32)arg2, ##__VA_ARGS__)))
228
229#define __BPF_ARG3_TP(...) \
230 ((mod[2] == 2 || (mod[2] == 1 && __BITS_PER_LONG == 64)) \
231 ? __BPF_ARG2_TP(arg3, ##__VA_ARGS__) \
232 : ((mod[2] == 1 || (mod[2] == 0 && __BITS_PER_LONG == 32)) \
233 ? __BPF_ARG2_TP((long)arg3, ##__VA_ARGS__) \
234 : __BPF_ARG2_TP((u32)arg3, ##__VA_ARGS__)))
235
236 return __BPF_TP_EMIT();
211} 237}
212 238
213static const struct bpf_func_proto bpf_trace_printk_proto = { 239static const struct bpf_func_proto bpf_trace_printk_proto = {
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 53f6b6401cf0..96cea88fa00f 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -113,7 +113,7 @@ static int ftrace_disabled __read_mostly;
113 113
114static DEFINE_MUTEX(ftrace_lock); 114static DEFINE_MUTEX(ftrace_lock);
115 115
116static struct ftrace_ops *ftrace_ops_list __read_mostly = &ftrace_list_end; 116static struct ftrace_ops __rcu *ftrace_ops_list __read_mostly = &ftrace_list_end;
117ftrace_func_t ftrace_trace_function __read_mostly = ftrace_stub; 117ftrace_func_t ftrace_trace_function __read_mostly = ftrace_stub;
118static struct ftrace_ops global_ops; 118static struct ftrace_ops global_ops;
119 119
@@ -169,8 +169,11 @@ int ftrace_nr_registered_ops(void)
169 169
170 mutex_lock(&ftrace_lock); 170 mutex_lock(&ftrace_lock);
171 171
172 for (ops = ftrace_ops_list; 172 for (ops = rcu_dereference_protected(ftrace_ops_list,
173 ops != &ftrace_list_end; ops = ops->next) 173 lockdep_is_held(&ftrace_lock));
174 ops != &ftrace_list_end;
175 ops = rcu_dereference_protected(ops->next,
176 lockdep_is_held(&ftrace_lock)))
174 cnt++; 177 cnt++;
175 178
176 mutex_unlock(&ftrace_lock); 179 mutex_unlock(&ftrace_lock);
@@ -275,10 +278,11 @@ static void update_ftrace_function(void)
275 * If there's only one ftrace_ops registered, the ftrace_ops_list 278 * If there's only one ftrace_ops registered, the ftrace_ops_list
276 * will point to the ops we want. 279 * will point to the ops we want.
277 */ 280 */
278 set_function_trace_op = ftrace_ops_list; 281 set_function_trace_op = rcu_dereference_protected(ftrace_ops_list,
282 lockdep_is_held(&ftrace_lock));
279 283
280 /* If there's no ftrace_ops registered, just call the stub function */ 284 /* If there's no ftrace_ops registered, just call the stub function */
281 if (ftrace_ops_list == &ftrace_list_end) { 285 if (set_function_trace_op == &ftrace_list_end) {
282 func = ftrace_stub; 286 func = ftrace_stub;
283 287
284 /* 288 /*
@@ -286,7 +290,8 @@ static void update_ftrace_function(void)
286 * recursion safe and not dynamic and the arch supports passing ops, 290 * recursion safe and not dynamic and the arch supports passing ops,
287 * then have the mcount trampoline call the function directly. 291 * then have the mcount trampoline call the function directly.
288 */ 292 */
289 } else if (ftrace_ops_list->next == &ftrace_list_end) { 293 } else if (rcu_dereference_protected(ftrace_ops_list->next,
294 lockdep_is_held(&ftrace_lock)) == &ftrace_list_end) {
290 func = ftrace_ops_get_list_func(ftrace_ops_list); 295 func = ftrace_ops_get_list_func(ftrace_ops_list);
291 296
292 } else { 297 } else {
@@ -348,9 +353,11 @@ int using_ftrace_ops_list_func(void)
348 return ftrace_trace_function == ftrace_ops_list_func; 353 return ftrace_trace_function == ftrace_ops_list_func;
349} 354}
350 355
351static void add_ftrace_ops(struct ftrace_ops **list, struct ftrace_ops *ops) 356static void add_ftrace_ops(struct ftrace_ops __rcu **list,
357 struct ftrace_ops *ops)
352{ 358{
353 ops->next = *list; 359 rcu_assign_pointer(ops->next, *list);
360
354 /* 361 /*
355 * We are entering ops into the list but another 362 * We are entering ops into the list but another
356 * CPU might be walking that list. We need to make sure 363 * CPU might be walking that list. We need to make sure
@@ -360,7 +367,8 @@ static void add_ftrace_ops(struct ftrace_ops **list, struct ftrace_ops *ops)
360 rcu_assign_pointer(*list, ops); 367 rcu_assign_pointer(*list, ops);
361} 368}
362 369
363static int remove_ftrace_ops(struct ftrace_ops **list, struct ftrace_ops *ops) 370static int remove_ftrace_ops(struct ftrace_ops __rcu **list,
371 struct ftrace_ops *ops)
364{ 372{
365 struct ftrace_ops **p; 373 struct ftrace_ops **p;
366 374
@@ -368,7 +376,10 @@ static int remove_ftrace_ops(struct ftrace_ops **list, struct ftrace_ops *ops)
368 * If we are removing the last function, then simply point 376 * If we are removing the last function, then simply point
369 * to the ftrace_stub. 377 * to the ftrace_stub.
370 */ 378 */
371 if (*list == ops && ops->next == &ftrace_list_end) { 379 if (rcu_dereference_protected(*list,
380 lockdep_is_held(&ftrace_lock)) == ops &&
381 rcu_dereference_protected(ops->next,
382 lockdep_is_held(&ftrace_lock)) == &ftrace_list_end) {
372 *list = &ftrace_list_end; 383 *list = &ftrace_list_end;
373 return 0; 384 return 0;
374 } 385 }
@@ -878,6 +889,10 @@ static int profile_graph_entry(struct ftrace_graph_ent *trace)
878 889
879 function_profile_call(trace->func, 0, NULL, NULL); 890 function_profile_call(trace->func, 0, NULL, NULL);
880 891
892 /* If function graph is shutting down, ret_stack can be NULL */
893 if (!current->ret_stack)
894 return 0;
895
881 if (index >= 0 && index < FTRACE_RETFUNC_DEPTH) 896 if (index >= 0 && index < FTRACE_RETFUNC_DEPTH)
882 current->ret_stack[index].subtime = 0; 897 current->ret_stack[index].subtime = 0;
883 898
@@ -1569,8 +1584,8 @@ ftrace_ops_test(struct ftrace_ops *ops, unsigned long ip, void *regs)
1569 return 0; 1584 return 0;
1570#endif 1585#endif
1571 1586
1572 hash.filter_hash = rcu_dereference_raw_notrace(ops->func_hash->filter_hash); 1587 rcu_assign_pointer(hash.filter_hash, ops->func_hash->filter_hash);
1573 hash.notrace_hash = rcu_dereference_raw_notrace(ops->func_hash->notrace_hash); 1588 rcu_assign_pointer(hash.notrace_hash, ops->func_hash->notrace_hash);
1574 1589
1575 if (hash_contains_ip(ip, &hash)) 1590 if (hash_contains_ip(ip, &hash))
1576 ret = 1; 1591 ret = 1;
@@ -2840,7 +2855,8 @@ static int ftrace_shutdown(struct ftrace_ops *ops, int command)
2840 * If there's no more ops registered with ftrace, run a 2855 * If there's no more ops registered with ftrace, run a
2841 * sanity check to make sure all rec flags are cleared. 2856 * sanity check to make sure all rec flags are cleared.
2842 */ 2857 */
2843 if (ftrace_ops_list == &ftrace_list_end) { 2858 if (rcu_dereference_protected(ftrace_ops_list,
2859 lockdep_is_held(&ftrace_lock)) == &ftrace_list_end) {
2844 struct ftrace_page *pg; 2860 struct ftrace_page *pg;
2845 struct dyn_ftrace *rec; 2861 struct dyn_ftrace *rec;
2846 2862
@@ -6453,7 +6469,8 @@ ftrace_enable_sysctl(struct ctl_table *table, int write,
6453 if (ftrace_enabled) { 6469 if (ftrace_enabled) {
6454 6470
6455 /* we are starting ftrace again */ 6471 /* we are starting ftrace again */
6456 if (ftrace_ops_list != &ftrace_list_end) 6472 if (rcu_dereference_protected(ftrace_ops_list,
6473 lockdep_is_held(&ftrace_lock)) != &ftrace_list_end)
6457 update_ftrace_function(); 6474 update_ftrace_function();
6458 6475
6459 ftrace_startup_sysctl(); 6476 ftrace_startup_sysctl();
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c
index 4ae268e687fe..81279c6602ff 100644
--- a/kernel/trace/ring_buffer.c
+++ b/kernel/trace/ring_buffer.c
@@ -1136,12 +1136,12 @@ static int __rb_allocate_pages(long nr_pages, struct list_head *pages, int cpu)
1136 for (i = 0; i < nr_pages; i++) { 1136 for (i = 0; i < nr_pages; i++) {
1137 struct page *page; 1137 struct page *page;
1138 /* 1138 /*
1139 * __GFP_NORETRY flag makes sure that the allocation fails 1139 * __GFP_RETRY_MAYFAIL flag makes sure that the allocation fails
1140 * gracefully without invoking oom-killer and the system is 1140 * gracefully without invoking oom-killer and the system is not
1141 * not destabilized. 1141 * destabilized.
1142 */ 1142 */
1143 bpage = kzalloc_node(ALIGN(sizeof(*bpage), cache_line_size()), 1143 bpage = kzalloc_node(ALIGN(sizeof(*bpage), cache_line_size()),
1144 GFP_KERNEL | __GFP_NORETRY, 1144 GFP_KERNEL | __GFP_RETRY_MAYFAIL,
1145 cpu_to_node(cpu)); 1145 cpu_to_node(cpu));
1146 if (!bpage) 1146 if (!bpage)
1147 goto free_pages; 1147 goto free_pages;
@@ -1149,7 +1149,7 @@ static int __rb_allocate_pages(long nr_pages, struct list_head *pages, int cpu)
1149 list_add(&bpage->list, pages); 1149 list_add(&bpage->list, pages);
1150 1150
1151 page = alloc_pages_node(cpu_to_node(cpu), 1151 page = alloc_pages_node(cpu_to_node(cpu),
1152 GFP_KERNEL | __GFP_NORETRY, 0); 1152 GFP_KERNEL | __GFP_RETRY_MAYFAIL, 0);
1153 if (!page) 1153 if (!page)
1154 goto free_pages; 1154 goto free_pages;
1155 bpage->page = page_address(page); 1155 bpage->page = page_address(page);
@@ -4386,15 +4386,19 @@ EXPORT_SYMBOL_GPL(ring_buffer_swap_cpu);
4386 * the page that was allocated, with the read page of the buffer. 4386 * the page that was allocated, with the read page of the buffer.
4387 * 4387 *
4388 * Returns: 4388 * Returns:
4389 * The page allocated, or NULL on error. 4389 * The page allocated, or ERR_PTR
4390 */ 4390 */
4391void *ring_buffer_alloc_read_page(struct ring_buffer *buffer, int cpu) 4391void *ring_buffer_alloc_read_page(struct ring_buffer *buffer, int cpu)
4392{ 4392{
4393 struct ring_buffer_per_cpu *cpu_buffer = buffer->buffers[cpu]; 4393 struct ring_buffer_per_cpu *cpu_buffer;
4394 struct buffer_data_page *bpage = NULL; 4394 struct buffer_data_page *bpage = NULL;
4395 unsigned long flags; 4395 unsigned long flags;
4396 struct page *page; 4396 struct page *page;
4397 4397
4398 if (!cpumask_test_cpu(cpu, buffer->cpumask))
4399 return ERR_PTR(-ENODEV);
4400
4401 cpu_buffer = buffer->buffers[cpu];
4398 local_irq_save(flags); 4402 local_irq_save(flags);
4399 arch_spin_lock(&cpu_buffer->lock); 4403 arch_spin_lock(&cpu_buffer->lock);
4400 4404
@@ -4412,7 +4416,7 @@ void *ring_buffer_alloc_read_page(struct ring_buffer *buffer, int cpu)
4412 page = alloc_pages_node(cpu_to_node(cpu), 4416 page = alloc_pages_node(cpu_to_node(cpu),
4413 GFP_KERNEL | __GFP_NORETRY, 0); 4417 GFP_KERNEL | __GFP_NORETRY, 0);
4414 if (!page) 4418 if (!page)
4415 return NULL; 4419 return ERR_PTR(-ENOMEM);
4416 4420
4417 bpage = page_address(page); 4421 bpage = page_address(page);
4418 4422
@@ -4467,8 +4471,8 @@ EXPORT_SYMBOL_GPL(ring_buffer_free_read_page);
4467 * 4471 *
4468 * for example: 4472 * for example:
4469 * rpage = ring_buffer_alloc_read_page(buffer, cpu); 4473 * rpage = ring_buffer_alloc_read_page(buffer, cpu);
4470 * if (!rpage) 4474 * if (IS_ERR(rpage))
4471 * return error; 4475 * return PTR_ERR(rpage);
4472 * ret = ring_buffer_read_page(buffer, &rpage, len, cpu, 0); 4476 * ret = ring_buffer_read_page(buffer, &rpage, len, cpu, 0);
4473 * if (ret >= 0) 4477 * if (ret >= 0)
4474 * process_page(rpage, ret); 4478 * process_page(rpage, ret);
diff --git a/kernel/trace/ring_buffer_benchmark.c b/kernel/trace/ring_buffer_benchmark.c
index 9fbcaf567886..68ee79afe31c 100644
--- a/kernel/trace/ring_buffer_benchmark.c
+++ b/kernel/trace/ring_buffer_benchmark.c
@@ -113,7 +113,7 @@ static enum event_status read_page(int cpu)
113 int i; 113 int i;
114 114
115 bpage = ring_buffer_alloc_read_page(buffer, cpu); 115 bpage = ring_buffer_alloc_read_page(buffer, cpu);
116 if (!bpage) 116 if (IS_ERR(bpage))
117 return EVENT_DROPPED; 117 return EVENT_DROPPED;
118 118
119 ret = ring_buffer_read_page(buffer, &bpage, PAGE_SIZE, cpu, 1); 119 ret = ring_buffer_read_page(buffer, &bpage, PAGE_SIZE, cpu, 1);
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 2d0ffcc49dba..44004d8aa3b3 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -6598,7 +6598,7 @@ tracing_buffers_read(struct file *filp, char __user *ubuf,
6598{ 6598{
6599 struct ftrace_buffer_info *info = filp->private_data; 6599 struct ftrace_buffer_info *info = filp->private_data;
6600 struct trace_iterator *iter = &info->iter; 6600 struct trace_iterator *iter = &info->iter;
6601 ssize_t ret; 6601 ssize_t ret = 0;
6602 ssize_t size; 6602 ssize_t size;
6603 6603
6604 if (!count) 6604 if (!count)
@@ -6612,10 +6612,15 @@ tracing_buffers_read(struct file *filp, char __user *ubuf,
6612 if (!info->spare) { 6612 if (!info->spare) {
6613 info->spare = ring_buffer_alloc_read_page(iter->trace_buffer->buffer, 6613 info->spare = ring_buffer_alloc_read_page(iter->trace_buffer->buffer,
6614 iter->cpu_file); 6614 iter->cpu_file);
6615 info->spare_cpu = iter->cpu_file; 6615 if (IS_ERR(info->spare)) {
6616 ret = PTR_ERR(info->spare);
6617 info->spare = NULL;
6618 } else {
6619 info->spare_cpu = iter->cpu_file;
6620 }
6616 } 6621 }
6617 if (!info->spare) 6622 if (!info->spare)
6618 return -ENOMEM; 6623 return ret;
6619 6624
6620 /* Do we have previous read data to read? */ 6625 /* Do we have previous read data to read? */
6621 if (info->read < PAGE_SIZE) 6626 if (info->read < PAGE_SIZE)
@@ -6790,8 +6795,9 @@ tracing_buffers_splice_read(struct file *file, loff_t *ppos,
6790 ref->ref = 1; 6795 ref->ref = 1;
6791 ref->buffer = iter->trace_buffer->buffer; 6796 ref->buffer = iter->trace_buffer->buffer;
6792 ref->page = ring_buffer_alloc_read_page(ref->buffer, iter->cpu_file); 6797 ref->page = ring_buffer_alloc_read_page(ref->buffer, iter->cpu_file);
6793 if (!ref->page) { 6798 if (IS_ERR(ref->page)) {
6794 ret = -ENOMEM; 6799 ret = PTR_ERR(ref->page);
6800 ref->page = NULL;
6795 kfree(ref); 6801 kfree(ref);
6796 break; 6802 break;
6797 } 6803 }
@@ -7774,6 +7780,7 @@ static int instance_rmdir(const char *name)
7774 } 7780 }
7775 kfree(tr->topts); 7781 kfree(tr->topts);
7776 7782
7783 free_cpumask_var(tr->tracing_cpumask);
7777 kfree(tr->name); 7784 kfree(tr->name);
7778 kfree(tr); 7785 kfree(tr);
7779 7786
@@ -8292,6 +8299,7 @@ __init static int tracer_alloc_buffers(void)
8292 if (ret < 0) 8299 if (ret < 0)
8293 goto out_free_cpumask; 8300 goto out_free_cpumask;
8294 /* Used for event triggers */ 8301 /* Used for event triggers */
8302 ret = -ENOMEM;
8295 temp_buffer = ring_buffer_alloc(PAGE_SIZE, RB_FL_OVERWRITE); 8303 temp_buffer = ring_buffer_alloc(PAGE_SIZE, RB_FL_OVERWRITE);
8296 if (!temp_buffer) 8304 if (!temp_buffer)
8297 goto out_rm_hp_state; 8305 goto out_rm_hp_state;
@@ -8406,4 +8414,4 @@ __init static int clear_boot_tracer(void)
8406} 8414}
8407 8415
8408fs_initcall(tracer_init_tracefs); 8416fs_initcall(tracer_init_tracefs);
8409late_initcall(clear_boot_tracer); 8417late_initcall_sync(clear_boot_tracer);
diff --git a/kernel/trace/trace.h b/kernel/trace/trace.h
index 6ade1c55cc3a..490ba229931d 100644
--- a/kernel/trace/trace.h
+++ b/kernel/trace/trace.h
@@ -1210,9 +1210,9 @@ struct ftrace_event_field {
1210struct event_filter { 1210struct event_filter {
1211 int n_preds; /* Number assigned */ 1211 int n_preds; /* Number assigned */
1212 int a_preds; /* allocated */ 1212 int a_preds; /* allocated */
1213 struct filter_pred *preds; 1213 struct filter_pred __rcu *preds;
1214 struct filter_pred *root; 1214 struct filter_pred __rcu *root;
1215 char *filter_string; 1215 char *filter_string;
1216}; 1216};
1217 1217
1218struct event_subsystem { 1218struct event_subsystem {
diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c
index 59a411ff60c7..181e139a8057 100644
--- a/kernel/trace/trace_events_filter.c
+++ b/kernel/trace/trace_events_filter.c
@@ -1959,6 +1959,10 @@ static int create_filter(struct trace_event_call *call,
1959 if (err && set_str) 1959 if (err && set_str)
1960 append_filter_err(ps, filter); 1960 append_filter_err(ps, filter);
1961 } 1961 }
1962 if (err && !set_str) {
1963 free_event_filter(filter);
1964 filter = NULL;
1965 }
1962 create_filter_finish(ps); 1966 create_filter_finish(ps);
1963 1967
1964 *filterp = filter; 1968 *filterp = filter;
diff --git a/kernel/trace/tracing_map.c b/kernel/trace/tracing_map.c
index 0a689bbb78ef..305039b122fa 100644
--- a/kernel/trace/tracing_map.c
+++ b/kernel/trace/tracing_map.c
@@ -221,16 +221,19 @@ void tracing_map_array_free(struct tracing_map_array *a)
221 if (!a) 221 if (!a)
222 return; 222 return;
223 223
224 if (!a->pages) { 224 if (!a->pages)
225 kfree(a); 225 goto free;
226 return;
227 }
228 226
229 for (i = 0; i < a->n_pages; i++) { 227 for (i = 0; i < a->n_pages; i++) {
230 if (!a->pages[i]) 228 if (!a->pages[i])
231 break; 229 break;
232 free_page((unsigned long)a->pages[i]); 230 free_page((unsigned long)a->pages[i]);
233 } 231 }
232
233 kfree(a->pages);
234
235 free:
236 kfree(a);
234} 237}
235 238
236struct tracing_map_array *tracing_map_array_alloc(unsigned int n_elts, 239struct tracing_map_array *tracing_map_array_alloc(unsigned int n_elts,
diff --git a/kernel/watchdog.c b/kernel/watchdog.c
index 06d3389bca0d..f5d52024f6b7 100644
--- a/kernel/watchdog.c
+++ b/kernel/watchdog.c
@@ -240,6 +240,7 @@ static void set_sample_period(void)
240 * hardlockup detector generates a warning 240 * hardlockup detector generates a warning
241 */ 241 */
242 sample_period = get_softlockup_thresh() * ((u64)NSEC_PER_SEC / 5); 242 sample_period = get_softlockup_thresh() * ((u64)NSEC_PER_SEC / 5);
243 watchdog_update_hrtimer_threshold(sample_period);
243} 244}
244 245
245/* Commands for resetting the watchdog */ 246/* Commands for resetting the watchdog */
diff --git a/kernel/watchdog_hld.c b/kernel/watchdog_hld.c
index 295a0d84934c..3a09ea1b1d3d 100644
--- a/kernel/watchdog_hld.c
+++ b/kernel/watchdog_hld.c
@@ -37,6 +37,62 @@ void arch_touch_nmi_watchdog(void)
37} 37}
38EXPORT_SYMBOL(arch_touch_nmi_watchdog); 38EXPORT_SYMBOL(arch_touch_nmi_watchdog);
39 39
40#ifdef CONFIG_HARDLOCKUP_CHECK_TIMESTAMP
41static DEFINE_PER_CPU(ktime_t, last_timestamp);
42static DEFINE_PER_CPU(unsigned int, nmi_rearmed);
43static ktime_t watchdog_hrtimer_sample_threshold __read_mostly;
44
45void watchdog_update_hrtimer_threshold(u64 period)
46{
47 /*
48 * The hrtimer runs with a period of (watchdog_threshold * 2) / 5
49 *
50 * So it runs effectively with 2.5 times the rate of the NMI
51 * watchdog. That means the hrtimer should fire 2-3 times before
52 * the NMI watchdog expires. The NMI watchdog on x86 is based on
53 * unhalted CPU cycles, so if Turbo-Mode is enabled the CPU cycles
54 * might run way faster than expected and the NMI fires in a
55 * smaller period than the one deduced from the nominal CPU
56 * frequency. Depending on the Turbo-Mode factor this might be fast
57 * enough to get the NMI period smaller than the hrtimer watchdog
58 * period and trigger false positives.
59 *
60 * The sample threshold is used to check in the NMI handler whether
61 * the minimum time between two NMI samples has elapsed. That
62 * prevents false positives.
63 *
64 * Set this to 4/5 of the actual watchdog threshold period so the
65 * hrtimer is guaranteed to fire at least once within the real
66 * watchdog threshold.
67 */
68 watchdog_hrtimer_sample_threshold = period * 2;
69}
70
71static bool watchdog_check_timestamp(void)
72{
73 ktime_t delta, now = ktime_get_mono_fast_ns();
74
75 delta = now - __this_cpu_read(last_timestamp);
76 if (delta < watchdog_hrtimer_sample_threshold) {
77 /*
78 * If ktime is jiffies based, a stalled timer would prevent
79 * jiffies from being incremented and the filter would look
80 * at a stale timestamp and never trigger.
81 */
82 if (__this_cpu_inc_return(nmi_rearmed) < 10)
83 return false;
84 }
85 __this_cpu_write(nmi_rearmed, 0);
86 __this_cpu_write(last_timestamp, now);
87 return true;
88}
89#else
90static inline bool watchdog_check_timestamp(void)
91{
92 return true;
93}
94#endif
95
40static struct perf_event_attr wd_hw_attr = { 96static struct perf_event_attr wd_hw_attr = {
41 .type = PERF_TYPE_HARDWARE, 97 .type = PERF_TYPE_HARDWARE,
42 .config = PERF_COUNT_HW_CPU_CYCLES, 98 .config = PERF_COUNT_HW_CPU_CYCLES,
@@ -61,6 +117,9 @@ static void watchdog_overflow_callback(struct perf_event *event,
61 return; 117 return;
62 } 118 }
63 119
120 if (!watchdog_check_timestamp())
121 return;
122
64 /* check for a hardlockup 123 /* check for a hardlockup
65 * This is done by making sure our timer interrupt 124 * This is done by making sure our timer interrupt
66 * is incrementing. The timer interrupt should have 125 * is incrementing. The timer interrupt should have
diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index a86688fabc55..ca937b0c3a96 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -3577,6 +3577,13 @@ static bool wq_calc_node_cpumask(const struct workqueue_attrs *attrs, int node,
3577 3577
3578 /* yeap, return possible CPUs in @node that @attrs wants */ 3578 /* yeap, return possible CPUs in @node that @attrs wants */
3579 cpumask_and(cpumask, attrs->cpumask, wq_numa_possible_cpumask[node]); 3579 cpumask_and(cpumask, attrs->cpumask, wq_numa_possible_cpumask[node]);
3580
3581 if (cpumask_empty(cpumask)) {
3582 pr_warn_once("WARNING: workqueue cpumask: online intersect > "
3583 "possible intersect\n");
3584 return false;
3585 }
3586
3580 return !cpumask_equal(cpumask, attrs->cpumask); 3587 return !cpumask_equal(cpumask, attrs->cpumask);
3581 3588
3582use_dfl: 3589use_dfl:
@@ -3744,8 +3751,12 @@ static int apply_workqueue_attrs_locked(struct workqueue_struct *wq,
3744 return -EINVAL; 3751 return -EINVAL;
3745 3752
3746 /* creating multiple pwqs breaks ordering guarantee */ 3753 /* creating multiple pwqs breaks ordering guarantee */
3747 if (WARN_ON((wq->flags & __WQ_ORDERED) && !list_empty(&wq->pwqs))) 3754 if (!list_empty(&wq->pwqs)) {
3748 return -EINVAL; 3755 if (WARN_ON(wq->flags & __WQ_ORDERED_EXPLICIT))
3756 return -EINVAL;
3757
3758 wq->flags &= ~__WQ_ORDERED;
3759 }
3749 3760
3750 ctx = apply_wqattrs_prepare(wq, attrs); 3761 ctx = apply_wqattrs_prepare(wq, attrs);
3751 if (!ctx) 3762 if (!ctx)
@@ -3929,6 +3940,16 @@ struct workqueue_struct *__alloc_workqueue_key(const char *fmt,
3929 struct workqueue_struct *wq; 3940 struct workqueue_struct *wq;
3930 struct pool_workqueue *pwq; 3941 struct pool_workqueue *pwq;
3931 3942
3943 /*
3944 * Unbound && max_active == 1 used to imply ordered, which is no
3945 * longer the case on NUMA machines due to per-node pools. While
3946 * alloc_ordered_workqueue() is the right way to create an ordered
3947 * workqueue, keep the previous behavior to avoid subtle breakages
3948 * on NUMA.
3949 */
3950 if ((flags & WQ_UNBOUND) && max_active == 1)
3951 flags |= __WQ_ORDERED;
3952
3932 /* see the comment above the definition of WQ_POWER_EFFICIENT */ 3953 /* see the comment above the definition of WQ_POWER_EFFICIENT */
3933 if ((flags & WQ_POWER_EFFICIENT) && wq_power_efficient) 3954 if ((flags & WQ_POWER_EFFICIENT) && wq_power_efficient)
3934 flags |= WQ_UNBOUND; 3955 flags |= WQ_UNBOUND;
@@ -4119,13 +4140,14 @@ void workqueue_set_max_active(struct workqueue_struct *wq, int max_active)
4119 struct pool_workqueue *pwq; 4140 struct pool_workqueue *pwq;
4120 4141
4121 /* disallow meddling with max_active for ordered workqueues */ 4142 /* disallow meddling with max_active for ordered workqueues */
4122 if (WARN_ON(wq->flags & __WQ_ORDERED)) 4143 if (WARN_ON(wq->flags & __WQ_ORDERED_EXPLICIT))
4123 return; 4144 return;
4124 4145
4125 max_active = wq_clamp_max_active(max_active, wq->flags, wq->name); 4146 max_active = wq_clamp_max_active(max_active, wq->flags, wq->name);
4126 4147
4127 mutex_lock(&wq->mutex); 4148 mutex_lock(&wq->mutex);
4128 4149
4150 wq->flags &= ~__WQ_ORDERED;
4129 wq->saved_max_active = max_active; 4151 wq->saved_max_active = max_active;
4130 4152
4131 for_each_pwq(pwq, wq) 4153 for_each_pwq(pwq, wq)
@@ -5253,7 +5275,7 @@ int workqueue_sysfs_register(struct workqueue_struct *wq)
5253 * attributes breaks ordering guarantee. Disallow exposing ordered 5275 * attributes breaks ordering guarantee. Disallow exposing ordered
5254 * workqueues. 5276 * workqueues.
5255 */ 5277 */
5256 if (WARN_ON(wq->flags & __WQ_ORDERED)) 5278 if (WARN_ON(wq->flags & __WQ_ORDERED_EXPLICIT))
5257 return -EINVAL; 5279 return -EINVAL;
5258 5280
5259 wq->wq_dev = wq_dev = kzalloc(sizeof(*wq_dev), GFP_KERNEL); 5281 wq->wq_dev = wq_dev = kzalloc(sizeof(*wq_dev), GFP_KERNEL);
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 98fe715522e8..c617b9d1d6cb 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -798,6 +798,13 @@ config HARDLOCKUP_DETECTOR_PERF
798 select SOFTLOCKUP_DETECTOR 798 select SOFTLOCKUP_DETECTOR
799 799
800# 800#
801# Enables a timestamp based low pass filter to compensate for perf based
802# hard lockup detection which runs too fast due to turbo modes.
803#
804config HARDLOCKUP_CHECK_TIMESTAMP
805 bool
806
807#
801# arch/ can define HAVE_HARDLOCKUP_DETECTOR_ARCH to provide their own hard 808# arch/ can define HAVE_HARDLOCKUP_DETECTOR_ARCH to provide their own hard
802# lockup detector rather than the perf based detector. 809# lockup detector rather than the perf based detector.
803# 810#
diff --git a/lib/fault-inject.c b/lib/fault-inject.c
index 7d315fdb9f13..cf7b129b0b2b 100644
--- a/lib/fault-inject.c
+++ b/lib/fault-inject.c
@@ -110,10 +110,12 @@ bool should_fail(struct fault_attr *attr, ssize_t size)
110 if (in_task()) { 110 if (in_task()) {
111 unsigned int fail_nth = READ_ONCE(current->fail_nth); 111 unsigned int fail_nth = READ_ONCE(current->fail_nth);
112 112
113 if (fail_nth && !WRITE_ONCE(current->fail_nth, fail_nth - 1)) 113 if (fail_nth) {
114 goto fail; 114 if (!WRITE_ONCE(current->fail_nth, fail_nth - 1))
115 goto fail;
115 116
116 return false; 117 return false;
118 }
117 } 119 }
118 120
119 /* No need to check any other properties if the probability is 0 */ 121 /* No need to check any other properties if the probability is 0 */
diff --git a/lib/test_kmod.c b/lib/test_kmod.c
index 6c1d678bcf8b..ff9148969b92 100644
--- a/lib/test_kmod.c
+++ b/lib/test_kmod.c
@@ -485,7 +485,7 @@ static ssize_t config_show(struct device *dev,
485 config->test_driver); 485 config->test_driver);
486 else 486 else
487 len += snprintf(buf+len, PAGE_SIZE - len, 487 len += snprintf(buf+len, PAGE_SIZE - len,
488 "driver:\tEMTPY\n"); 488 "driver:\tEMPTY\n");
489 489
490 if (config->test_fs) 490 if (config->test_fs)
491 len += snprintf(buf+len, PAGE_SIZE - len, 491 len += snprintf(buf+len, PAGE_SIZE - len,
@@ -493,7 +493,7 @@ static ssize_t config_show(struct device *dev,
493 config->test_fs); 493 config->test_fs);
494 else 494 else
495 len += snprintf(buf+len, PAGE_SIZE - len, 495 len += snprintf(buf+len, PAGE_SIZE - len,
496 "fs:\tEMTPY\n"); 496 "fs:\tEMPTY\n");
497 497
498 mutex_unlock(&test_dev->config_mutex); 498 mutex_unlock(&test_dev->config_mutex);
499 499
@@ -746,11 +746,11 @@ static int trigger_config_run_type(struct kmod_test_device *test_dev,
746 strlen(test_str)); 746 strlen(test_str));
747 break; 747 break;
748 case TEST_KMOD_FS_TYPE: 748 case TEST_KMOD_FS_TYPE:
749 break;
750 kfree_const(config->test_fs); 749 kfree_const(config->test_fs);
751 config->test_driver = NULL; 750 config->test_driver = NULL;
752 copied = config_copy_test_fs(config, test_str, 751 copied = config_copy_test_fs(config, test_str,
753 strlen(test_str)); 752 strlen(test_str));
753 break;
754 default: 754 default:
755 mutex_unlock(&test_dev->config_mutex); 755 mutex_unlock(&test_dev->config_mutex);
756 return -EINVAL; 756 return -EINVAL;
@@ -880,10 +880,10 @@ static int test_dev_config_update_uint_sync(struct kmod_test_device *test_dev,
880 int (*test_sync)(struct kmod_test_device *test_dev)) 880 int (*test_sync)(struct kmod_test_device *test_dev))
881{ 881{
882 int ret; 882 int ret;
883 long new; 883 unsigned long new;
884 unsigned int old_val; 884 unsigned int old_val;
885 885
886 ret = kstrtol(buf, 10, &new); 886 ret = kstrtoul(buf, 10, &new);
887 if (ret) 887 if (ret)
888 return ret; 888 return ret;
889 889
@@ -918,9 +918,9 @@ static int test_dev_config_update_uint_range(struct kmod_test_device *test_dev,
918 unsigned int max) 918 unsigned int max)
919{ 919{
920 int ret; 920 int ret;
921 long new; 921 unsigned long new;
922 922
923 ret = kstrtol(buf, 10, &new); 923 ret = kstrtoul(buf, 10, &new);
924 if (ret) 924 if (ret)
925 return ret; 925 return ret;
926 926
@@ -1146,7 +1146,7 @@ static struct kmod_test_device *register_test_dev_kmod(void)
1146 struct kmod_test_device *test_dev = NULL; 1146 struct kmod_test_device *test_dev = NULL;
1147 int ret; 1147 int ret;
1148 1148
1149 mutex_unlock(&reg_dev_mutex); 1149 mutex_lock(&reg_dev_mutex);
1150 1150
1151 /* int should suffice for number of devices, test for wrap */ 1151 /* int should suffice for number of devices, test for wrap */
1152 if (unlikely(num_test_devs + 1) < 0) { 1152 if (unlikely(num_test_devs + 1) < 0) {
diff --git a/lib/test_rhashtable.c b/lib/test_rhashtable.c
index 64e899b63337..0ffca990a833 100644
--- a/lib/test_rhashtable.c
+++ b/lib/test_rhashtable.c
@@ -56,8 +56,13 @@ static bool enomem_retry = false;
56module_param(enomem_retry, bool, 0); 56module_param(enomem_retry, bool, 0);
57MODULE_PARM_DESC(enomem_retry, "Retry insert even if -ENOMEM was returned (default: off)"); 57MODULE_PARM_DESC(enomem_retry, "Retry insert even if -ENOMEM was returned (default: off)");
58 58
59struct test_obj_val {
60 int id;
61 int tid;
62};
63
59struct test_obj { 64struct test_obj {
60 int value; 65 struct test_obj_val value;
61 struct rhash_head node; 66 struct rhash_head node;
62}; 67};
63 68
@@ -72,7 +77,7 @@ static struct test_obj array[MAX_ENTRIES];
72static struct rhashtable_params test_rht_params = { 77static struct rhashtable_params test_rht_params = {
73 .head_offset = offsetof(struct test_obj, node), 78 .head_offset = offsetof(struct test_obj, node),
74 .key_offset = offsetof(struct test_obj, value), 79 .key_offset = offsetof(struct test_obj, value),
75 .key_len = sizeof(int), 80 .key_len = sizeof(struct test_obj_val),
76 .hashfn = jhash, 81 .hashfn = jhash,
77 .nulls_base = (3U << RHT_BASE_SHIFT), 82 .nulls_base = (3U << RHT_BASE_SHIFT),
78}; 83};
@@ -109,24 +114,26 @@ static int __init test_rht_lookup(struct rhashtable *ht)
109 for (i = 0; i < entries * 2; i++) { 114 for (i = 0; i < entries * 2; i++) {
110 struct test_obj *obj; 115 struct test_obj *obj;
111 bool expected = !(i % 2); 116 bool expected = !(i % 2);
112 u32 key = i; 117 struct test_obj_val key = {
118 .id = i,
119 };
113 120
114 if (array[i / 2].value == TEST_INSERT_FAIL) 121 if (array[i / 2].value.id == TEST_INSERT_FAIL)
115 expected = false; 122 expected = false;
116 123
117 obj = rhashtable_lookup_fast(ht, &key, test_rht_params); 124 obj = rhashtable_lookup_fast(ht, &key, test_rht_params);
118 125
119 if (expected && !obj) { 126 if (expected && !obj) {
120 pr_warn("Test failed: Could not find key %u\n", key); 127 pr_warn("Test failed: Could not find key %u\n", key.id);
121 return -ENOENT; 128 return -ENOENT;
122 } else if (!expected && obj) { 129 } else if (!expected && obj) {
123 pr_warn("Test failed: Unexpected entry found for key %u\n", 130 pr_warn("Test failed: Unexpected entry found for key %u\n",
124 key); 131 key.id);
125 return -EEXIST; 132 return -EEXIST;
126 } else if (expected && obj) { 133 } else if (expected && obj) {
127 if (obj->value != i) { 134 if (obj->value.id != i) {
128 pr_warn("Test failed: Lookup value mismatch %u!=%u\n", 135 pr_warn("Test failed: Lookup value mismatch %u!=%u\n",
129 obj->value, i); 136 obj->value.id, i);
130 return -EINVAL; 137 return -EINVAL;
131 } 138 }
132 } 139 }
@@ -195,7 +202,7 @@ static s64 __init test_rhashtable(struct rhashtable *ht)
195 for (i = 0; i < entries; i++) { 202 for (i = 0; i < entries; i++) {
196 struct test_obj *obj = &array[i]; 203 struct test_obj *obj = &array[i];
197 204
198 obj->value = i * 2; 205 obj->value.id = i * 2;
199 err = insert_retry(ht, &obj->node, test_rht_params); 206 err = insert_retry(ht, &obj->node, test_rht_params);
200 if (err > 0) 207 if (err > 0)
201 insert_retries += err; 208 insert_retries += err;
@@ -216,9 +223,11 @@ static s64 __init test_rhashtable(struct rhashtable *ht)
216 223
217 pr_info(" Deleting %d keys\n", entries); 224 pr_info(" Deleting %d keys\n", entries);
218 for (i = 0; i < entries; i++) { 225 for (i = 0; i < entries; i++) {
219 u32 key = i * 2; 226 struct test_obj_val key = {
227 .id = i * 2,
228 };
220 229
221 if (array[i].value != TEST_INSERT_FAIL) { 230 if (array[i].value.id != TEST_INSERT_FAIL) {
222 obj = rhashtable_lookup_fast(ht, &key, test_rht_params); 231 obj = rhashtable_lookup_fast(ht, &key, test_rht_params);
223 BUG_ON(!obj); 232 BUG_ON(!obj);
224 233
@@ -242,18 +251,21 @@ static int thread_lookup_test(struct thread_data *tdata)
242 251
243 for (i = 0; i < entries; i++) { 252 for (i = 0; i < entries; i++) {
244 struct test_obj *obj; 253 struct test_obj *obj;
245 int key = (tdata->id << 16) | i; 254 struct test_obj_val key = {
255 .id = i,
256 .tid = tdata->id,
257 };
246 258
247 obj = rhashtable_lookup_fast(&ht, &key, test_rht_params); 259 obj = rhashtable_lookup_fast(&ht, &key, test_rht_params);
248 if (obj && (tdata->objs[i].value == TEST_INSERT_FAIL)) { 260 if (obj && (tdata->objs[i].value.id == TEST_INSERT_FAIL)) {
249 pr_err(" found unexpected object %d\n", key); 261 pr_err(" found unexpected object %d-%d\n", key.tid, key.id);
250 err++; 262 err++;
251 } else if (!obj && (tdata->objs[i].value != TEST_INSERT_FAIL)) { 263 } else if (!obj && (tdata->objs[i].value.id != TEST_INSERT_FAIL)) {
252 pr_err(" object %d not found!\n", key); 264 pr_err(" object %d-%d not found!\n", key.tid, key.id);
253 err++; 265 err++;
254 } else if (obj && (obj->value != key)) { 266 } else if (obj && memcmp(&obj->value, &key, sizeof(key))) {
255 pr_err(" wrong object returned (got %d, expected %d)\n", 267 pr_err(" wrong object returned (got %d-%d, expected %d-%d)\n",
256 obj->value, key); 268 obj->value.tid, obj->value.id, key.tid, key.id);
257 err++; 269 err++;
258 } 270 }
259 271
@@ -272,7 +284,8 @@ static int threadfunc(void *data)
272 pr_err(" thread[%d]: down_interruptible failed\n", tdata->id); 284 pr_err(" thread[%d]: down_interruptible failed\n", tdata->id);
273 285
274 for (i = 0; i < entries; i++) { 286 for (i = 0; i < entries; i++) {
275 tdata->objs[i].value = (tdata->id << 16) | i; 287 tdata->objs[i].value.id = i;
288 tdata->objs[i].value.tid = tdata->id;
276 err = insert_retry(&ht, &tdata->objs[i].node, test_rht_params); 289 err = insert_retry(&ht, &tdata->objs[i].node, test_rht_params);
277 if (err > 0) { 290 if (err > 0) {
278 insert_retries += err; 291 insert_retries += err;
@@ -295,7 +308,7 @@ static int threadfunc(void *data)
295 308
296 for (step = 10; step > 0; step--) { 309 for (step = 10; step > 0; step--) {
297 for (i = 0; i < entries; i += step) { 310 for (i = 0; i < entries; i += step) {
298 if (tdata->objs[i].value == TEST_INSERT_FAIL) 311 if (tdata->objs[i].value.id == TEST_INSERT_FAIL)
299 continue; 312 continue;
300 err = rhashtable_remove_fast(&ht, &tdata->objs[i].node, 313 err = rhashtable_remove_fast(&ht, &tdata->objs[i].node,
301 test_rht_params); 314 test_rht_params);
@@ -304,7 +317,7 @@ static int threadfunc(void *data)
304 tdata->id); 317 tdata->id);
305 goto out; 318 goto out;
306 } 319 }
307 tdata->objs[i].value = TEST_INSERT_FAIL; 320 tdata->objs[i].value.id = TEST_INSERT_FAIL;
308 321
309 cond_resched(); 322 cond_resched();
310 } 323 }
diff --git a/lib/test_uuid.c b/lib/test_uuid.c
index 478c049630b5..cd819c397dc7 100644
--- a/lib/test_uuid.c
+++ b/lib/test_uuid.c
@@ -82,7 +82,7 @@ static void __init test_uuid_test(const struct test_uuid_data *data)
82 test_uuid_failed("conversion", false, true, data->uuid, NULL); 82 test_uuid_failed("conversion", false, true, data->uuid, NULL);
83 83
84 total_tests++; 84 total_tests++;
85 if (uuid_equal(&data->be, &be)) { 85 if (!uuid_equal(&data->be, &be)) {
86 sprintf(buf, "%pUb", &be); 86 sprintf(buf, "%pUb", &be);
87 test_uuid_failed("cmp", false, true, data->uuid, buf); 87 test_uuid_failed("cmp", false, true, data->uuid, buf);
88 } 88 }
diff --git a/mm/balloon_compaction.c b/mm/balloon_compaction.c
index 9075aa54e955..b06d9fe23a28 100644
--- a/mm/balloon_compaction.c
+++ b/mm/balloon_compaction.c
@@ -24,7 +24,7 @@ struct page *balloon_page_enqueue(struct balloon_dev_info *b_dev_info)
24{ 24{
25 unsigned long flags; 25 unsigned long flags;
26 struct page *page = alloc_page(balloon_mapping_gfp_mask() | 26 struct page *page = alloc_page(balloon_mapping_gfp_mask() |
27 __GFP_NOMEMALLOC | __GFP_NORETRY | __GFP_ZERO); 27 __GFP_NOMEMALLOC | __GFP_NORETRY);
28 if (!page) 28 if (!page)
29 return NULL; 29 return NULL;
30 30
diff --git a/mm/cma_debug.c b/mm/cma_debug.c
index 595b757bef72..c03ccbc405a0 100644
--- a/mm/cma_debug.c
+++ b/mm/cma_debug.c
@@ -167,7 +167,7 @@ static void cma_debugfs_add_one(struct cma *cma, int idx)
167 char name[16]; 167 char name[16];
168 int u32s; 168 int u32s;
169 169
170 sprintf(name, "cma-%s", cma->name); 170 scnprintf(name, sizeof(name), "cma-%s", cma->name);
171 171
172 tmp = debugfs_create_dir(name, cma_debugfs_root); 172 tmp = debugfs_create_dir(name, cma_debugfs_root);
173 173
diff --git a/mm/debug.c b/mm/debug.c
index db1cd26d8752..5715448ab0b5 100644
--- a/mm/debug.c
+++ b/mm/debug.c
@@ -124,9 +124,7 @@ void dump_mm(const struct mm_struct *mm)
124#ifdef CONFIG_NUMA_BALANCING 124#ifdef CONFIG_NUMA_BALANCING
125 "numa_next_scan %lu numa_scan_offset %lu numa_scan_seq %d\n" 125 "numa_next_scan %lu numa_scan_offset %lu numa_scan_seq %d\n"
126#endif 126#endif
127#if defined(CONFIG_NUMA_BALANCING) || defined(CONFIG_COMPACTION)
128 "tlb_flush_pending %d\n" 127 "tlb_flush_pending %d\n"
129#endif
130 "def_flags: %#lx(%pGv)\n", 128 "def_flags: %#lx(%pGv)\n",
131 129
132 mm, mm->mmap, mm->vmacache_seqnum, mm->task_size, 130 mm, mm->mmap, mm->vmacache_seqnum, mm->task_size,
@@ -158,9 +156,7 @@ void dump_mm(const struct mm_struct *mm)
158#ifdef CONFIG_NUMA_BALANCING 156#ifdef CONFIG_NUMA_BALANCING
159 mm->numa_next_scan, mm->numa_scan_offset, mm->numa_scan_seq, 157 mm->numa_next_scan, mm->numa_scan_offset, mm->numa_scan_seq,
160#endif 158#endif
161#if defined(CONFIG_NUMA_BALANCING) || defined(CONFIG_COMPACTION) 159 atomic_read(&mm->tlb_flush_pending),
162 mm->tlb_flush_pending,
163#endif
164 mm->def_flags, &mm->def_flags 160 mm->def_flags, &mm->def_flags
165 ); 161 );
166} 162}
diff --git a/mm/huge_memory.c b/mm/huge_memory.c
index 86975dec0ba1..90731e3b7e58 100644
--- a/mm/huge_memory.c
+++ b/mm/huge_memory.c
@@ -32,6 +32,7 @@
32#include <linux/userfaultfd_k.h> 32#include <linux/userfaultfd_k.h>
33#include <linux/page_idle.h> 33#include <linux/page_idle.h>
34#include <linux/shmem_fs.h> 34#include <linux/shmem_fs.h>
35#include <linux/oom.h>
35 36
36#include <asm/tlb.h> 37#include <asm/tlb.h>
37#include <asm/pgalloc.h> 38#include <asm/pgalloc.h>
@@ -550,6 +551,7 @@ static int __do_huge_pmd_anonymous_page(struct vm_fault *vmf, struct page *page,
550 struct mem_cgroup *memcg; 551 struct mem_cgroup *memcg;
551 pgtable_t pgtable; 552 pgtable_t pgtable;
552 unsigned long haddr = vmf->address & HPAGE_PMD_MASK; 553 unsigned long haddr = vmf->address & HPAGE_PMD_MASK;
554 int ret = 0;
553 555
554 VM_BUG_ON_PAGE(!PageCompound(page), page); 556 VM_BUG_ON_PAGE(!PageCompound(page), page);
555 557
@@ -561,9 +563,8 @@ static int __do_huge_pmd_anonymous_page(struct vm_fault *vmf, struct page *page,
561 563
562 pgtable = pte_alloc_one(vma->vm_mm, haddr); 564 pgtable = pte_alloc_one(vma->vm_mm, haddr);
563 if (unlikely(!pgtable)) { 565 if (unlikely(!pgtable)) {
564 mem_cgroup_cancel_charge(page, memcg, true); 566 ret = VM_FAULT_OOM;
565 put_page(page); 567 goto release;
566 return VM_FAULT_OOM;
567 } 568 }
568 569
569 clear_huge_page(page, haddr, HPAGE_PMD_NR); 570 clear_huge_page(page, haddr, HPAGE_PMD_NR);
@@ -576,13 +577,14 @@ static int __do_huge_pmd_anonymous_page(struct vm_fault *vmf, struct page *page,
576 577
577 vmf->ptl = pmd_lock(vma->vm_mm, vmf->pmd); 578 vmf->ptl = pmd_lock(vma->vm_mm, vmf->pmd);
578 if (unlikely(!pmd_none(*vmf->pmd))) { 579 if (unlikely(!pmd_none(*vmf->pmd))) {
579 spin_unlock(vmf->ptl); 580 goto unlock_release;
580 mem_cgroup_cancel_charge(page, memcg, true);
581 put_page(page);
582 pte_free(vma->vm_mm, pgtable);
583 } else { 581 } else {
584 pmd_t entry; 582 pmd_t entry;
585 583
584 ret = check_stable_address_space(vma->vm_mm);
585 if (ret)
586 goto unlock_release;
587
586 /* Deliver the page fault to userland */ 588 /* Deliver the page fault to userland */
587 if (userfaultfd_missing(vma)) { 589 if (userfaultfd_missing(vma)) {
588 int ret; 590 int ret;
@@ -610,6 +612,15 @@ static int __do_huge_pmd_anonymous_page(struct vm_fault *vmf, struct page *page,
610 } 612 }
611 613
612 return 0; 614 return 0;
615unlock_release:
616 spin_unlock(vmf->ptl);
617release:
618 if (pgtable)
619 pte_free(vma->vm_mm, pgtable);
620 mem_cgroup_cancel_charge(page, memcg, true);
621 put_page(page);
622 return ret;
623
613} 624}
614 625
615/* 626/*
@@ -688,7 +699,10 @@ int do_huge_pmd_anonymous_page(struct vm_fault *vmf)
688 ret = 0; 699 ret = 0;
689 set = false; 700 set = false;
690 if (pmd_none(*vmf->pmd)) { 701 if (pmd_none(*vmf->pmd)) {
691 if (userfaultfd_missing(vma)) { 702 ret = check_stable_address_space(vma->vm_mm);
703 if (ret) {
704 spin_unlock(vmf->ptl);
705 } else if (userfaultfd_missing(vma)) {
692 spin_unlock(vmf->ptl); 706 spin_unlock(vmf->ptl);
693 ret = handle_userfault(vmf, VM_UFFD_MISSING); 707 ret = handle_userfault(vmf, VM_UFFD_MISSING);
694 VM_BUG_ON(ret & VM_FAULT_FALLBACK); 708 VM_BUG_ON(ret & VM_FAULT_FALLBACK);
@@ -1496,6 +1510,13 @@ int do_huge_pmd_numa_page(struct vm_fault *vmf, pmd_t pmd)
1496 } 1510 }
1497 1511
1498 /* 1512 /*
1513 * The page_table_lock above provides a memory barrier
1514 * with change_protection_range.
1515 */
1516 if (mm_tlb_flush_pending(vma->vm_mm))
1517 flush_tlb_range(vma, haddr, haddr + HPAGE_PMD_SIZE);
1518
1519 /*
1499 * Migrate the THP to the requested node, returns with page unlocked 1520 * Migrate the THP to the requested node, returns with page unlocked
1500 * and access rights restored. 1521 * and access rights restored.
1501 */ 1522 */
diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index bc48ee783dd9..31e207cb399b 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -4062,9 +4062,9 @@ out:
4062 return ret; 4062 return ret;
4063out_release_unlock: 4063out_release_unlock:
4064 spin_unlock(ptl); 4064 spin_unlock(ptl);
4065out_release_nounlock:
4066 if (vm_shared) 4065 if (vm_shared)
4067 unlock_page(page); 4066 unlock_page(page);
4067out_release_nounlock:
4068 put_page(page); 4068 put_page(page);
4069 goto out; 4069 goto out;
4070} 4070}
@@ -4078,6 +4078,7 @@ long follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma,
4078 unsigned long vaddr = *position; 4078 unsigned long vaddr = *position;
4079 unsigned long remainder = *nr_pages; 4079 unsigned long remainder = *nr_pages;
4080 struct hstate *h = hstate_vma(vma); 4080 struct hstate *h = hstate_vma(vma);
4081 int err = -EFAULT;
4081 4082
4082 while (vaddr < vma->vm_end && remainder) { 4083 while (vaddr < vma->vm_end && remainder) {
4083 pte_t *pte; 4084 pte_t *pte;
@@ -4154,11 +4155,7 @@ long follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma,
4154 } 4155 }
4155 ret = hugetlb_fault(mm, vma, vaddr, fault_flags); 4156 ret = hugetlb_fault(mm, vma, vaddr, fault_flags);
4156 if (ret & VM_FAULT_ERROR) { 4157 if (ret & VM_FAULT_ERROR) {
4157 int err = vm_fault_to_errno(ret, flags); 4158 err = vm_fault_to_errno(ret, flags);
4158
4159 if (err)
4160 return err;
4161
4162 remainder = 0; 4159 remainder = 0;
4163 break; 4160 break;
4164 } 4161 }
@@ -4213,7 +4210,7 @@ same_page:
4213 */ 4210 */
4214 *position = vaddr; 4211 *position = vaddr;
4215 4212
4216 return i ? i : -EFAULT; 4213 return i ? i : err;
4217} 4214}
4218 4215
4219#ifndef __HAVE_ARCH_FLUSH_HUGETLB_TLB_RANGE 4216#ifndef __HAVE_ARCH_FLUSH_HUGETLB_TLB_RANGE
diff --git a/mm/internal.h b/mm/internal.h
index 24d88f084705..4ef49fc55e58 100644
--- a/mm/internal.h
+++ b/mm/internal.h
@@ -498,6 +498,7 @@ extern struct workqueue_struct *mm_percpu_wq;
498#ifdef CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH 498#ifdef CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH
499void try_to_unmap_flush(void); 499void try_to_unmap_flush(void);
500void try_to_unmap_flush_dirty(void); 500void try_to_unmap_flush_dirty(void);
501void flush_tlb_batched_pending(struct mm_struct *mm);
501#else 502#else
502static inline void try_to_unmap_flush(void) 503static inline void try_to_unmap_flush(void)
503{ 504{
@@ -505,7 +506,9 @@ static inline void try_to_unmap_flush(void)
505static inline void try_to_unmap_flush_dirty(void) 506static inline void try_to_unmap_flush_dirty(void)
506{ 507{
507} 508}
508 509static inline void flush_tlb_batched_pending(struct mm_struct *mm)
510{
511}
509#endif /* CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH */ 512#endif /* CONFIG_ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH */
510 513
511extern const struct trace_print_flags pageflag_names[]; 514extern const struct trace_print_flags pageflag_names[];
diff --git a/mm/kasan/report.c b/mm/kasan/report.c
index 04bb1d3eb9ec..6bcfb01ba038 100644
--- a/mm/kasan/report.c
+++ b/mm/kasan/report.c
@@ -401,6 +401,7 @@ void kasan_report(unsigned long addr, size_t size,
401 disable_trace_on_warning(); 401 disable_trace_on_warning();
402 402
403 info.access_addr = (void *)addr; 403 info.access_addr = (void *)addr;
404 info.first_bad_addr = (void *)addr;
404 info.access_size = size; 405 info.access_size = size;
405 info.is_write = is_write; 406 info.is_write = is_write;
406 info.ip = ip; 407 info.ip = ip;
diff --git a/mm/ksm.c b/mm/ksm.c
index 4dc92f138786..db20f8436bc3 100644
--- a/mm/ksm.c
+++ b/mm/ksm.c
@@ -1038,7 +1038,8 @@ static int write_protect_page(struct vm_area_struct *vma, struct page *page,
1038 goto out_unlock; 1038 goto out_unlock;
1039 1039
1040 if (pte_write(*pvmw.pte) || pte_dirty(*pvmw.pte) || 1040 if (pte_write(*pvmw.pte) || pte_dirty(*pvmw.pte) ||
1041 (pte_protnone(*pvmw.pte) && pte_savedwrite(*pvmw.pte))) { 1041 (pte_protnone(*pvmw.pte) && pte_savedwrite(*pvmw.pte)) ||
1042 mm_tlb_flush_pending(mm)) {
1042 pte_t entry; 1043 pte_t entry;
1043 1044
1044 swapped = PageSwapCache(page); 1045 swapped = PageSwapCache(page);
diff --git a/mm/madvise.c b/mm/madvise.c
index 9976852f1e1c..47d8d8a25eae 100644
--- a/mm/madvise.c
+++ b/mm/madvise.c
@@ -320,6 +320,7 @@ static int madvise_free_pte_range(pmd_t *pmd, unsigned long addr,
320 320
321 tlb_remove_check_page_size_change(tlb, PAGE_SIZE); 321 tlb_remove_check_page_size_change(tlb, PAGE_SIZE);
322 orig_pte = pte = pte_offset_map_lock(mm, pmd, addr, &ptl); 322 orig_pte = pte = pte_offset_map_lock(mm, pmd, addr, &ptl);
323 flush_tlb_batched_pending(mm);
323 arch_enter_lazy_mmu_mode(); 324 arch_enter_lazy_mmu_mode();
324 for (; addr != end; pte++, addr += PAGE_SIZE) { 325 for (; addr != end; pte++, addr += PAGE_SIZE) {
325 ptent = *pte; 326 ptent = *pte;
diff --git a/mm/memblock.c b/mm/memblock.c
index 2cb25fe4452c..bf14aea6ab70 100644
--- a/mm/memblock.c
+++ b/mm/memblock.c
@@ -285,31 +285,27 @@ static void __init_memblock memblock_remove_region(struct memblock_type *type, u
285} 285}
286 286
287#ifdef CONFIG_ARCH_DISCARD_MEMBLOCK 287#ifdef CONFIG_ARCH_DISCARD_MEMBLOCK
288 288/**
289phys_addr_t __init_memblock get_allocated_memblock_reserved_regions_info( 289 * Discard memory and reserved arrays if they were allocated
290 phys_addr_t *addr) 290 */
291{ 291void __init memblock_discard(void)
292 if (memblock.reserved.regions == memblock_reserved_init_regions)
293 return 0;
294
295 *addr = __pa(memblock.reserved.regions);
296
297 return PAGE_ALIGN(sizeof(struct memblock_region) *
298 memblock.reserved.max);
299}
300
301phys_addr_t __init_memblock get_allocated_memblock_memory_regions_info(
302 phys_addr_t *addr)
303{ 292{
304 if (memblock.memory.regions == memblock_memory_init_regions) 293 phys_addr_t addr, size;
305 return 0;
306 294
307 *addr = __pa(memblock.memory.regions); 295 if (memblock.reserved.regions != memblock_reserved_init_regions) {
296 addr = __pa(memblock.reserved.regions);
297 size = PAGE_ALIGN(sizeof(struct memblock_region) *
298 memblock.reserved.max);
299 __memblock_free_late(addr, size);
300 }
308 301
309 return PAGE_ALIGN(sizeof(struct memblock_region) * 302 if (memblock.memory.regions == memblock_memory_init_regions) {
310 memblock.memory.max); 303 addr = __pa(memblock.memory.regions);
304 size = PAGE_ALIGN(sizeof(struct memblock_region) *
305 memblock.memory.max);
306 __memblock_free_late(addr, size);
307 }
311} 308}
312
313#endif 309#endif
314 310
315/** 311/**
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 3df3c04d73ab..e09741af816f 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -1611,9 +1611,13 @@ cleanup:
1611 * @page: the page 1611 * @page: the page
1612 * 1612 *
1613 * This function protects unlocked LRU pages from being moved to 1613 * This function protects unlocked LRU pages from being moved to
1614 * another cgroup and stabilizes their page->mem_cgroup binding. 1614 * another cgroup.
1615 *
1616 * It ensures lifetime of the returned memcg. Caller is responsible
1617 * for the lifetime of the page; __unlock_page_memcg() is available
1618 * when @page might get freed inside the locked section.
1615 */ 1619 */
1616void lock_page_memcg(struct page *page) 1620struct mem_cgroup *lock_page_memcg(struct page *page)
1617{ 1621{
1618 struct mem_cgroup *memcg; 1622 struct mem_cgroup *memcg;
1619 unsigned long flags; 1623 unsigned long flags;
@@ -1622,18 +1626,24 @@ void lock_page_memcg(struct page *page)
1622 * The RCU lock is held throughout the transaction. The fast 1626 * The RCU lock is held throughout the transaction. The fast
1623 * path can get away without acquiring the memcg->move_lock 1627 * path can get away without acquiring the memcg->move_lock
1624 * because page moving starts with an RCU grace period. 1628 * because page moving starts with an RCU grace period.
1625 */ 1629 *
1630 * The RCU lock also protects the memcg from being freed when
1631 * the page state that is going to change is the only thing
1632 * preventing the page itself from being freed. E.g. writeback
1633 * doesn't hold a page reference and relies on PG_writeback to
1634 * keep off truncation, migration and so forth.
1635 */
1626 rcu_read_lock(); 1636 rcu_read_lock();
1627 1637
1628 if (mem_cgroup_disabled()) 1638 if (mem_cgroup_disabled())
1629 return; 1639 return NULL;
1630again: 1640again:
1631 memcg = page->mem_cgroup; 1641 memcg = page->mem_cgroup;
1632 if (unlikely(!memcg)) 1642 if (unlikely(!memcg))
1633 return; 1643 return NULL;
1634 1644
1635 if (atomic_read(&memcg->moving_account) <= 0) 1645 if (atomic_read(&memcg->moving_account) <= 0)
1636 return; 1646 return memcg;
1637 1647
1638 spin_lock_irqsave(&memcg->move_lock, flags); 1648 spin_lock_irqsave(&memcg->move_lock, flags);
1639 if (memcg != page->mem_cgroup) { 1649 if (memcg != page->mem_cgroup) {
@@ -1649,18 +1659,18 @@ again:
1649 memcg->move_lock_task = current; 1659 memcg->move_lock_task = current;
1650 memcg->move_lock_flags = flags; 1660 memcg->move_lock_flags = flags;
1651 1661
1652 return; 1662 return memcg;
1653} 1663}
1654EXPORT_SYMBOL(lock_page_memcg); 1664EXPORT_SYMBOL(lock_page_memcg);
1655 1665
1656/** 1666/**
1657 * unlock_page_memcg - unlock a page->mem_cgroup binding 1667 * __unlock_page_memcg - unlock and unpin a memcg
1658 * @page: the page 1668 * @memcg: the memcg
1669 *
1670 * Unlock and unpin a memcg returned by lock_page_memcg().
1659 */ 1671 */
1660void unlock_page_memcg(struct page *page) 1672void __unlock_page_memcg(struct mem_cgroup *memcg)
1661{ 1673{
1662 struct mem_cgroup *memcg = page->mem_cgroup;
1663
1664 if (memcg && memcg->move_lock_task == current) { 1674 if (memcg && memcg->move_lock_task == current) {
1665 unsigned long flags = memcg->move_lock_flags; 1675 unsigned long flags = memcg->move_lock_flags;
1666 1676
@@ -1672,6 +1682,15 @@ void unlock_page_memcg(struct page *page)
1672 1682
1673 rcu_read_unlock(); 1683 rcu_read_unlock();
1674} 1684}
1685
1686/**
1687 * unlock_page_memcg - unlock a page->mem_cgroup binding
1688 * @page: the page
1689 */
1690void unlock_page_memcg(struct page *page)
1691{
1692 __unlock_page_memcg(page->mem_cgroup);
1693}
1675EXPORT_SYMBOL(unlock_page_memcg); 1694EXPORT_SYMBOL(unlock_page_memcg);
1676 1695
1677/* 1696/*
diff --git a/mm/memory.c b/mm/memory.c
index 0e517be91a89..fe2fba27ded2 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -68,6 +68,7 @@
68#include <linux/debugfs.h> 68#include <linux/debugfs.h>
69#include <linux/userfaultfd_k.h> 69#include <linux/userfaultfd_k.h>
70#include <linux/dax.h> 70#include <linux/dax.h>
71#include <linux/oom.h>
71 72
72#include <asm/io.h> 73#include <asm/io.h>
73#include <asm/mmu_context.h> 74#include <asm/mmu_context.h>
@@ -215,12 +216,8 @@ static bool tlb_next_batch(struct mmu_gather *tlb)
215 return true; 216 return true;
216} 217}
217 218
218/* tlb_gather_mmu 219void arch_tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm,
219 * Called to initialize an (on-stack) mmu_gather structure for page-table 220 unsigned long start, unsigned long end)
220 * tear-down from @mm. The @fullmm argument is used when @mm is without
221 * users and we're going to destroy the full address space (exit/execve).
222 */
223void tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm, unsigned long start, unsigned long end)
224{ 221{
225 tlb->mm = mm; 222 tlb->mm = mm;
226 223
@@ -275,10 +272,14 @@ void tlb_flush_mmu(struct mmu_gather *tlb)
275 * Called at the end of the shootdown operation to free up any resources 272 * Called at the end of the shootdown operation to free up any resources
276 * that were required. 273 * that were required.
277 */ 274 */
278void tlb_finish_mmu(struct mmu_gather *tlb, unsigned long start, unsigned long end) 275void arch_tlb_finish_mmu(struct mmu_gather *tlb,
276 unsigned long start, unsigned long end, bool force)
279{ 277{
280 struct mmu_gather_batch *batch, *next; 278 struct mmu_gather_batch *batch, *next;
281 279
280 if (force)
281 __tlb_adjust_range(tlb, start, end - start);
282
282 tlb_flush_mmu(tlb); 283 tlb_flush_mmu(tlb);
283 284
284 /* keep the page table cache within bounds */ 285 /* keep the page table cache within bounds */
@@ -398,6 +399,34 @@ void tlb_remove_table(struct mmu_gather *tlb, void *table)
398 399
399#endif /* CONFIG_HAVE_RCU_TABLE_FREE */ 400#endif /* CONFIG_HAVE_RCU_TABLE_FREE */
400 401
402/* tlb_gather_mmu
403 * Called to initialize an (on-stack) mmu_gather structure for page-table
404 * tear-down from @mm. The @fullmm argument is used when @mm is without
405 * users and we're going to destroy the full address space (exit/execve).
406 */
407void tlb_gather_mmu(struct mmu_gather *tlb, struct mm_struct *mm,
408 unsigned long start, unsigned long end)
409{
410 arch_tlb_gather_mmu(tlb, mm, start, end);
411 inc_tlb_flush_pending(tlb->mm);
412}
413
414void tlb_finish_mmu(struct mmu_gather *tlb,
415 unsigned long start, unsigned long end)
416{
417 /*
418 * If there are parallel threads are doing PTE changes on same range
419 * under non-exclusive lock(e.g., mmap_sem read-side) but defer TLB
420 * flush by batching, a thread has stable TLB entry can fail to flush
421 * the TLB by observing pte_none|!pte_dirty, for example so flush TLB
422 * forcefully if we detect parallel PTE batching threads.
423 */
424 bool force = mm_tlb_flush_nested(tlb->mm);
425
426 arch_tlb_finish_mmu(tlb, start, end, force);
427 dec_tlb_flush_pending(tlb->mm);
428}
429
401/* 430/*
402 * Note: this doesn't free the actual pages themselves. That 431 * Note: this doesn't free the actual pages themselves. That
403 * has been handled earlier when unmapping all the memory regions. 432 * has been handled earlier when unmapping all the memory regions.
@@ -1197,6 +1226,7 @@ again:
1197 init_rss_vec(rss); 1226 init_rss_vec(rss);
1198 start_pte = pte_offset_map_lock(mm, pmd, addr, &ptl); 1227 start_pte = pte_offset_map_lock(mm, pmd, addr, &ptl);
1199 pte = start_pte; 1228 pte = start_pte;
1229 flush_tlb_batched_pending(mm);
1200 arch_enter_lazy_mmu_mode(); 1230 arch_enter_lazy_mmu_mode();
1201 do { 1231 do {
1202 pte_t ptent = *pte; 1232 pte_t ptent = *pte;
@@ -2864,6 +2894,7 @@ static int do_anonymous_page(struct vm_fault *vmf)
2864 struct vm_area_struct *vma = vmf->vma; 2894 struct vm_area_struct *vma = vmf->vma;
2865 struct mem_cgroup *memcg; 2895 struct mem_cgroup *memcg;
2866 struct page *page; 2896 struct page *page;
2897 int ret = 0;
2867 pte_t entry; 2898 pte_t entry;
2868 2899
2869 /* File mapping without ->vm_ops ? */ 2900 /* File mapping without ->vm_ops ? */
@@ -2896,6 +2927,9 @@ static int do_anonymous_page(struct vm_fault *vmf)
2896 vmf->address, &vmf->ptl); 2927 vmf->address, &vmf->ptl);
2897 if (!pte_none(*vmf->pte)) 2928 if (!pte_none(*vmf->pte))
2898 goto unlock; 2929 goto unlock;
2930 ret = check_stable_address_space(vma->vm_mm);
2931 if (ret)
2932 goto unlock;
2899 /* Deliver the page fault to userland, check inside PT lock */ 2933 /* Deliver the page fault to userland, check inside PT lock */
2900 if (userfaultfd_missing(vma)) { 2934 if (userfaultfd_missing(vma)) {
2901 pte_unmap_unlock(vmf->pte, vmf->ptl); 2935 pte_unmap_unlock(vmf->pte, vmf->ptl);
@@ -2930,6 +2964,10 @@ static int do_anonymous_page(struct vm_fault *vmf)
2930 if (!pte_none(*vmf->pte)) 2964 if (!pte_none(*vmf->pte))
2931 goto release; 2965 goto release;
2932 2966
2967 ret = check_stable_address_space(vma->vm_mm);
2968 if (ret)
2969 goto release;
2970
2933 /* Deliver the page fault to userland, check inside PT lock */ 2971 /* Deliver the page fault to userland, check inside PT lock */
2934 if (userfaultfd_missing(vma)) { 2972 if (userfaultfd_missing(vma)) {
2935 pte_unmap_unlock(vmf->pte, vmf->ptl); 2973 pte_unmap_unlock(vmf->pte, vmf->ptl);
@@ -2949,7 +2987,7 @@ setpte:
2949 update_mmu_cache(vma, vmf->address, vmf->pte); 2987 update_mmu_cache(vma, vmf->address, vmf->pte);
2950unlock: 2988unlock:
2951 pte_unmap_unlock(vmf->pte, vmf->ptl); 2989 pte_unmap_unlock(vmf->pte, vmf->ptl);
2952 return 0; 2990 return ret;
2953release: 2991release:
2954 mem_cgroup_cancel_charge(page, memcg, false); 2992 mem_cgroup_cancel_charge(page, memcg, false);
2955 put_page(page); 2993 put_page(page);
@@ -3223,7 +3261,7 @@ int alloc_set_pte(struct vm_fault *vmf, struct mem_cgroup *memcg,
3223int finish_fault(struct vm_fault *vmf) 3261int finish_fault(struct vm_fault *vmf)
3224{ 3262{
3225 struct page *page; 3263 struct page *page;
3226 int ret; 3264 int ret = 0;
3227 3265
3228 /* Did we COW the page? */ 3266 /* Did we COW the page? */
3229 if ((vmf->flags & FAULT_FLAG_WRITE) && 3267 if ((vmf->flags & FAULT_FLAG_WRITE) &&
@@ -3231,7 +3269,15 @@ int finish_fault(struct vm_fault *vmf)
3231 page = vmf->cow_page; 3269 page = vmf->cow_page;
3232 else 3270 else
3233 page = vmf->page; 3271 page = vmf->page;
3234 ret = alloc_set_pte(vmf, vmf->memcg, page); 3272
3273 /*
3274 * check even for read faults because we might have lost our CoWed
3275 * page
3276 */
3277 if (!(vmf->vma->vm_flags & VM_SHARED))
3278 ret = check_stable_address_space(vmf->vma->vm_mm);
3279 if (!ret)
3280 ret = alloc_set_pte(vmf, vmf->memcg, page);
3235 if (vmf->pte) 3281 if (vmf->pte)
3236 pte_unmap_unlock(vmf->pte, vmf->ptl); 3282 pte_unmap_unlock(vmf->pte, vmf->ptl);
3237 return ret; 3283 return ret;
@@ -3871,19 +3917,6 @@ int handle_mm_fault(struct vm_area_struct *vma, unsigned long address,
3871 mem_cgroup_oom_synchronize(false); 3917 mem_cgroup_oom_synchronize(false);
3872 } 3918 }
3873 3919
3874 /*
3875 * This mm has been already reaped by the oom reaper and so the
3876 * refault cannot be trusted in general. Anonymous refaults would
3877 * lose data and give a zero page instead e.g. This is especially
3878 * problem for use_mm() because regular tasks will just die and
3879 * the corrupted data will not be visible anywhere while kthread
3880 * will outlive the oom victim and potentially propagate the date
3881 * further.
3882 */
3883 if (unlikely((current->flags & PF_KTHREAD) && !(ret & VM_FAULT_ERROR)
3884 && test_bit(MMF_UNSTABLE, &vma->vm_mm->flags)))
3885 ret = VM_FAULT_SIGBUS;
3886
3887 return ret; 3920 return ret;
3888} 3921}
3889EXPORT_SYMBOL_GPL(handle_mm_fault); 3922EXPORT_SYMBOL_GPL(handle_mm_fault);
diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index d911fa5cb2a7..618ab125228b 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -861,11 +861,6 @@ static long do_get_mempolicy(int *policy, nodemask_t *nmask,
861 *policy |= (pol->flags & MPOL_MODE_FLAGS); 861 *policy |= (pol->flags & MPOL_MODE_FLAGS);
862 } 862 }
863 863
864 if (vma) {
865 up_read(&current->mm->mmap_sem);
866 vma = NULL;
867 }
868
869 err = 0; 864 err = 0;
870 if (nmask) { 865 if (nmask) {
871 if (mpol_store_user_nodemask(pol)) { 866 if (mpol_store_user_nodemask(pol)) {
diff --git a/mm/migrate.c b/mm/migrate.c
index 627671551873..e84eeb4e4356 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -41,6 +41,7 @@
41#include <linux/page_idle.h> 41#include <linux/page_idle.h>
42#include <linux/page_owner.h> 42#include <linux/page_owner.h>
43#include <linux/sched/mm.h> 43#include <linux/sched/mm.h>
44#include <linux/ptrace.h>
44 45
45#include <asm/tlbflush.h> 46#include <asm/tlbflush.h>
46 47
@@ -1652,7 +1653,6 @@ SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages,
1652 const int __user *, nodes, 1653 const int __user *, nodes,
1653 int __user *, status, int, flags) 1654 int __user *, status, int, flags)
1654{ 1655{
1655 const struct cred *cred = current_cred(), *tcred;
1656 struct task_struct *task; 1656 struct task_struct *task;
1657 struct mm_struct *mm; 1657 struct mm_struct *mm;
1658 int err; 1658 int err;
@@ -1676,14 +1676,9 @@ SYSCALL_DEFINE6(move_pages, pid_t, pid, unsigned long, nr_pages,
1676 1676
1677 /* 1677 /*
1678 * Check if this process has the right to modify the specified 1678 * Check if this process has the right to modify the specified
1679 * process. The right exists if the process has administrative 1679 * process. Use the regular "ptrace_may_access()" checks.
1680 * capabilities, superuser privileges or the same
1681 * userid as the target process.
1682 */ 1680 */
1683 tcred = __task_cred(task); 1681 if (!ptrace_may_access(task, PTRACE_MODE_READ_REALCREDS)) {
1684 if (!uid_eq(cred->euid, tcred->suid) && !uid_eq(cred->euid, tcred->uid) &&
1685 !uid_eq(cred->uid, tcred->suid) && !uid_eq(cred->uid, tcred->uid) &&
1686 !capable(CAP_SYS_NICE)) {
1687 rcu_read_unlock(); 1682 rcu_read_unlock();
1688 err = -EPERM; 1683 err = -EPERM;
1689 goto out; 1684 goto out;
@@ -1937,12 +1932,6 @@ int migrate_misplaced_transhuge_page(struct mm_struct *mm,
1937 put_page(new_page); 1932 put_page(new_page);
1938 goto out_fail; 1933 goto out_fail;
1939 } 1934 }
1940 /*
1941 * We are not sure a pending tlb flush here is for a huge page
1942 * mapping or not. Hence use the tlb range variant
1943 */
1944 if (mm_tlb_flush_pending(mm))
1945 flush_tlb_range(vma, mmun_start, mmun_end);
1946 1935
1947 /* Prepare a page as a migration target */ 1936 /* Prepare a page as a migration target */
1948 __SetPageLocked(new_page); 1937 __SetPageLocked(new_page);
diff --git a/mm/mprotect.c b/mm/mprotect.c
index 1a8c9ca83e48..bd0f409922cb 100644
--- a/mm/mprotect.c
+++ b/mm/mprotect.c
@@ -64,6 +64,7 @@ static unsigned long change_pte_range(struct vm_area_struct *vma, pmd_t *pmd,
64 atomic_read(&vma->vm_mm->mm_users) == 1) 64 atomic_read(&vma->vm_mm->mm_users) == 1)
65 target_node = numa_node_id(); 65 target_node = numa_node_id();
66 66
67 flush_tlb_batched_pending(vma->vm_mm);
67 arch_enter_lazy_mmu_mode(); 68 arch_enter_lazy_mmu_mode();
68 do { 69 do {
69 oldpte = *pte; 70 oldpte = *pte;
@@ -243,7 +244,7 @@ static unsigned long change_protection_range(struct vm_area_struct *vma,
243 BUG_ON(addr >= end); 244 BUG_ON(addr >= end);
244 pgd = pgd_offset(mm, addr); 245 pgd = pgd_offset(mm, addr);
245 flush_cache_range(vma, addr, end); 246 flush_cache_range(vma, addr, end);
246 set_tlb_flush_pending(mm); 247 inc_tlb_flush_pending(mm);
247 do { 248 do {
248 next = pgd_addr_end(addr, end); 249 next = pgd_addr_end(addr, end);
249 if (pgd_none_or_clear_bad(pgd)) 250 if (pgd_none_or_clear_bad(pgd))
@@ -255,7 +256,7 @@ static unsigned long change_protection_range(struct vm_area_struct *vma,
255 /* Only flush the TLB if we actually modified any entries: */ 256 /* Only flush the TLB if we actually modified any entries: */
256 if (pages) 257 if (pages)
257 flush_tlb_range(vma, start, end); 258 flush_tlb_range(vma, start, end);
258 clear_tlb_flush_pending(mm); 259 dec_tlb_flush_pending(mm);
259 260
260 return pages; 261 return pages;
261} 262}
diff --git a/mm/mremap.c b/mm/mremap.c
index cd8a1b199ef9..3f23715d3c69 100644
--- a/mm/mremap.c
+++ b/mm/mremap.c
@@ -152,6 +152,7 @@ static void move_ptes(struct vm_area_struct *vma, pmd_t *old_pmd,
152 new_ptl = pte_lockptr(mm, new_pmd); 152 new_ptl = pte_lockptr(mm, new_pmd);
153 if (new_ptl != old_ptl) 153 if (new_ptl != old_ptl)
154 spin_lock_nested(new_ptl, SINGLE_DEPTH_NESTING); 154 spin_lock_nested(new_ptl, SINGLE_DEPTH_NESTING);
155 flush_tlb_batched_pending(vma->vm_mm);
155 arch_enter_lazy_mmu_mode(); 156 arch_enter_lazy_mmu_mode();
156 157
157 for (; old_addr < old_end; old_pte++, old_addr += PAGE_SIZE, 158 for (; old_addr < old_end; old_pte++, old_addr += PAGE_SIZE,
@@ -428,6 +429,7 @@ static struct vm_area_struct *vma_to_resize(unsigned long addr,
428static unsigned long mremap_to(unsigned long addr, unsigned long old_len, 429static unsigned long mremap_to(unsigned long addr, unsigned long old_len,
429 unsigned long new_addr, unsigned long new_len, bool *locked, 430 unsigned long new_addr, unsigned long new_len, bool *locked,
430 struct vm_userfaultfd_ctx *uf, 431 struct vm_userfaultfd_ctx *uf,
432 struct list_head *uf_unmap_early,
431 struct list_head *uf_unmap) 433 struct list_head *uf_unmap)
432{ 434{
433 struct mm_struct *mm = current->mm; 435 struct mm_struct *mm = current->mm;
@@ -446,7 +448,7 @@ static unsigned long mremap_to(unsigned long addr, unsigned long old_len,
446 if (addr + old_len > new_addr && new_addr + new_len > addr) 448 if (addr + old_len > new_addr && new_addr + new_len > addr)
447 goto out; 449 goto out;
448 450
449 ret = do_munmap(mm, new_addr, new_len, NULL); 451 ret = do_munmap(mm, new_addr, new_len, uf_unmap_early);
450 if (ret) 452 if (ret)
451 goto out; 453 goto out;
452 454
@@ -514,6 +516,7 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
514 unsigned long charged = 0; 516 unsigned long charged = 0;
515 bool locked = false; 517 bool locked = false;
516 struct vm_userfaultfd_ctx uf = NULL_VM_UFFD_CTX; 518 struct vm_userfaultfd_ctx uf = NULL_VM_UFFD_CTX;
519 LIST_HEAD(uf_unmap_early);
517 LIST_HEAD(uf_unmap); 520 LIST_HEAD(uf_unmap);
518 521
519 if (flags & ~(MREMAP_FIXED | MREMAP_MAYMOVE)) 522 if (flags & ~(MREMAP_FIXED | MREMAP_MAYMOVE))
@@ -541,7 +544,7 @@ SYSCALL_DEFINE5(mremap, unsigned long, addr, unsigned long, old_len,
541 544
542 if (flags & MREMAP_FIXED) { 545 if (flags & MREMAP_FIXED) {
543 ret = mremap_to(addr, old_len, new_addr, new_len, 546 ret = mremap_to(addr, old_len, new_addr, new_len,
544 &locked, &uf, &uf_unmap); 547 &locked, &uf, &uf_unmap_early, &uf_unmap);
545 goto out; 548 goto out;
546 } 549 }
547 550
@@ -621,6 +624,7 @@ out:
621 up_write(&current->mm->mmap_sem); 624 up_write(&current->mm->mmap_sem);
622 if (locked && new_len > old_len) 625 if (locked && new_len > old_len)
623 mm_populate(new_addr + old_len, new_len - old_len); 626 mm_populate(new_addr + old_len, new_len - old_len);
627 userfaultfd_unmap_complete(mm, &uf_unmap_early);
624 mremap_userfaultfd_complete(&uf, addr, new_addr, old_len); 628 mremap_userfaultfd_complete(&uf, addr, new_addr, old_len);
625 userfaultfd_unmap_complete(mm, &uf_unmap); 629 userfaultfd_unmap_complete(mm, &uf_unmap);
626 return ret; 630 return ret;
diff --git a/mm/nobootmem.c b/mm/nobootmem.c
index 36454d0f96ee..3637809a18d0 100644
--- a/mm/nobootmem.c
+++ b/mm/nobootmem.c
@@ -146,22 +146,6 @@ static unsigned long __init free_low_memory_core_early(void)
146 NULL) 146 NULL)
147 count += __free_memory_core(start, end); 147 count += __free_memory_core(start, end);
148 148
149#ifdef CONFIG_ARCH_DISCARD_MEMBLOCK
150 {
151 phys_addr_t size;
152
153 /* Free memblock.reserved array if it was allocated */
154 size = get_allocated_memblock_reserved_regions_info(&start);
155 if (size)
156 count += __free_memory_core(start, start + size);
157
158 /* Free memblock.memory array if it was allocated */
159 size = get_allocated_memblock_memory_regions_info(&start);
160 if (size)
161 count += __free_memory_core(start, start + size);
162 }
163#endif
164
165 return count; 149 return count;
166} 150}
167 151
diff --git a/mm/page-writeback.c b/mm/page-writeback.c
index 96e93b214d31..bf050ab025b7 100644
--- a/mm/page-writeback.c
+++ b/mm/page-writeback.c
@@ -2724,9 +2724,12 @@ EXPORT_SYMBOL(clear_page_dirty_for_io);
2724int test_clear_page_writeback(struct page *page) 2724int test_clear_page_writeback(struct page *page)
2725{ 2725{
2726 struct address_space *mapping = page_mapping(page); 2726 struct address_space *mapping = page_mapping(page);
2727 struct mem_cgroup *memcg;
2728 struct lruvec *lruvec;
2727 int ret; 2729 int ret;
2728 2730
2729 lock_page_memcg(page); 2731 memcg = lock_page_memcg(page);
2732 lruvec = mem_cgroup_page_lruvec(page, page_pgdat(page));
2730 if (mapping && mapping_use_writeback_tags(mapping)) { 2733 if (mapping && mapping_use_writeback_tags(mapping)) {
2731 struct inode *inode = mapping->host; 2734 struct inode *inode = mapping->host;
2732 struct backing_dev_info *bdi = inode_to_bdi(inode); 2735 struct backing_dev_info *bdi = inode_to_bdi(inode);
@@ -2754,12 +2757,18 @@ int test_clear_page_writeback(struct page *page)
2754 } else { 2757 } else {
2755 ret = TestClearPageWriteback(page); 2758 ret = TestClearPageWriteback(page);
2756 } 2759 }
2760 /*
2761 * NOTE: Page might be free now! Writeback doesn't hold a page
2762 * reference on its own, it relies on truncation to wait for
2763 * the clearing of PG_writeback. The below can only access
2764 * page state that is static across allocation cycles.
2765 */
2757 if (ret) { 2766 if (ret) {
2758 dec_lruvec_page_state(page, NR_WRITEBACK); 2767 dec_lruvec_state(lruvec, NR_WRITEBACK);
2759 dec_zone_page_state(page, NR_ZONE_WRITE_PENDING); 2768 dec_zone_page_state(page, NR_ZONE_WRITE_PENDING);
2760 inc_node_page_state(page, NR_WRITTEN); 2769 inc_node_page_state(page, NR_WRITTEN);
2761 } 2770 }
2762 unlock_page_memcg(page); 2771 __unlock_page_memcg(memcg);
2763 return ret; 2772 return ret;
2764} 2773}
2765 2774
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 6d30e914afb6..1bad301820c7 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -1584,6 +1584,10 @@ void __init page_alloc_init_late(void)
1584 /* Reinit limits that are based on free pages after the kernel is up */ 1584 /* Reinit limits that are based on free pages after the kernel is up */
1585 files_maxfiles_init(); 1585 files_maxfiles_init();
1586#endif 1586#endif
1587#ifdef CONFIG_ARCH_DISCARD_MEMBLOCK
1588 /* Discard memblock private memory */
1589 memblock_discard();
1590#endif
1587 1591
1588 for_each_populated_zone(zone) 1592 for_each_populated_zone(zone)
1589 set_zone_contiguous(zone); 1593 set_zone_contiguous(zone);
@@ -4458,8 +4462,9 @@ long si_mem_available(void)
4458 * Part of the reclaimable slab consists of items that are in use, 4462 * Part of the reclaimable slab consists of items that are in use,
4459 * and cannot be freed. Cap this estimate at the low watermark. 4463 * and cannot be freed. Cap this estimate at the low watermark.
4460 */ 4464 */
4461 available += global_page_state(NR_SLAB_RECLAIMABLE) - 4465 available += global_node_page_state(NR_SLAB_RECLAIMABLE) -
4462 min(global_page_state(NR_SLAB_RECLAIMABLE) / 2, wmark_low); 4466 min(global_node_page_state(NR_SLAB_RECLAIMABLE) / 2,
4467 wmark_low);
4463 4468
4464 if (available < 0) 4469 if (available < 0)
4465 available = 0; 4470 available = 0;
@@ -4602,8 +4607,8 @@ void show_free_areas(unsigned int filter, nodemask_t *nodemask)
4602 global_node_page_state(NR_FILE_DIRTY), 4607 global_node_page_state(NR_FILE_DIRTY),
4603 global_node_page_state(NR_WRITEBACK), 4608 global_node_page_state(NR_WRITEBACK),
4604 global_node_page_state(NR_UNSTABLE_NFS), 4609 global_node_page_state(NR_UNSTABLE_NFS),
4605 global_page_state(NR_SLAB_RECLAIMABLE), 4610 global_node_page_state(NR_SLAB_RECLAIMABLE),
4606 global_page_state(NR_SLAB_UNRECLAIMABLE), 4611 global_node_page_state(NR_SLAB_UNRECLAIMABLE),
4607 global_node_page_state(NR_FILE_MAPPED), 4612 global_node_page_state(NR_FILE_MAPPED),
4608 global_node_page_state(NR_SHMEM), 4613 global_node_page_state(NR_SHMEM),
4609 global_page_state(NR_PAGETABLE), 4614 global_page_state(NR_PAGETABLE),
@@ -4891,9 +4896,11 @@ int numa_zonelist_order_handler(struct ctl_table *table, int write,
4891 NUMA_ZONELIST_ORDER_LEN); 4896 NUMA_ZONELIST_ORDER_LEN);
4892 user_zonelist_order = oldval; 4897 user_zonelist_order = oldval;
4893 } else if (oldval != user_zonelist_order) { 4898 } else if (oldval != user_zonelist_order) {
4899 mem_hotplug_begin();
4894 mutex_lock(&zonelists_mutex); 4900 mutex_lock(&zonelists_mutex);
4895 build_all_zonelists(NULL, NULL); 4901 build_all_zonelists(NULL, NULL);
4896 mutex_unlock(&zonelists_mutex); 4902 mutex_unlock(&zonelists_mutex);
4903 mem_hotplug_done();
4897 } 4904 }
4898 } 4905 }
4899out: 4906out:
@@ -7666,7 +7673,7 @@ int alloc_contig_range(unsigned long start, unsigned long end,
7666 7673
7667 /* Make sure the range is really isolated. */ 7674 /* Make sure the range is really isolated. */
7668 if (test_pages_isolated(outer_start, end, false)) { 7675 if (test_pages_isolated(outer_start, end, false)) {
7669 pr_info("%s: [%lx, %lx) PFNs busy\n", 7676 pr_info_ratelimited("%s: [%lx, %lx) PFNs busy\n",
7670 __func__, outer_start, end); 7677 __func__, outer_start, end);
7671 ret = -EBUSY; 7678 ret = -EBUSY;
7672 goto done; 7679 goto done;
diff --git a/mm/page_io.c b/mm/page_io.c
index b6c4ac388209..5f61b54ee1f3 100644
--- a/mm/page_io.c
+++ b/mm/page_io.c
@@ -22,6 +22,7 @@
22#include <linux/frontswap.h> 22#include <linux/frontswap.h>
23#include <linux/blkdev.h> 23#include <linux/blkdev.h>
24#include <linux/uio.h> 24#include <linux/uio.h>
25#include <linux/sched/task.h>
25#include <asm/pgtable.h> 26#include <asm/pgtable.h>
26 27
27static struct bio *get_swap_bio(gfp_t gfp_flags, 28static struct bio *get_swap_bio(gfp_t gfp_flags,
@@ -136,6 +137,7 @@ out:
136 WRITE_ONCE(bio->bi_private, NULL); 137 WRITE_ONCE(bio->bi_private, NULL);
137 bio_put(bio); 138 bio_put(bio);
138 wake_up_process(waiter); 139 wake_up_process(waiter);
140 put_task_struct(waiter);
139} 141}
140 142
141int generic_swapfile_activate(struct swap_info_struct *sis, 143int generic_swapfile_activate(struct swap_info_struct *sis,
@@ -378,6 +380,11 @@ int swap_readpage(struct page *page, bool do_poll)
378 goto out; 380 goto out;
379 } 381 }
380 bdev = bio->bi_bdev; 382 bdev = bio->bi_bdev;
383 /*
384 * Keep this task valid during swap readpage because the oom killer may
385 * attempt to access it in the page fault retry time check.
386 */
387 get_task_struct(current);
381 bio->bi_private = current; 388 bio->bi_private = current;
382 bio_set_op_attrs(bio, REQ_OP_READ, 0); 389 bio_set_op_attrs(bio, REQ_OP_READ, 0);
383 count_vm_event(PSWPIN); 390 count_vm_event(PSWPIN);
diff --git a/mm/rmap.c b/mm/rmap.c
index ced14f1af6dc..c1286d47aa1f 100644
--- a/mm/rmap.c
+++ b/mm/rmap.c
@@ -605,6 +605,13 @@ static void set_tlb_ubc_flush_pending(struct mm_struct *mm, bool writable)
605 tlb_ubc->flush_required = true; 605 tlb_ubc->flush_required = true;
606 606
607 /* 607 /*
608 * Ensure compiler does not re-order the setting of tlb_flush_batched
609 * before the PTE is cleared.
610 */
611 barrier();
612 mm->tlb_flush_batched = true;
613
614 /*
608 * If the PTE was dirty then it's best to assume it's writable. The 615 * If the PTE was dirty then it's best to assume it's writable. The
609 * caller must use try_to_unmap_flush_dirty() or try_to_unmap_flush() 616 * caller must use try_to_unmap_flush_dirty() or try_to_unmap_flush()
610 * before the page is queued for IO. 617 * before the page is queued for IO.
@@ -631,6 +638,35 @@ static bool should_defer_flush(struct mm_struct *mm, enum ttu_flags flags)
631 638
632 return should_defer; 639 return should_defer;
633} 640}
641
642/*
643 * Reclaim unmaps pages under the PTL but do not flush the TLB prior to
644 * releasing the PTL if TLB flushes are batched. It's possible for a parallel
645 * operation such as mprotect or munmap to race between reclaim unmapping
646 * the page and flushing the page. If this race occurs, it potentially allows
647 * access to data via a stale TLB entry. Tracking all mm's that have TLB
648 * batching in flight would be expensive during reclaim so instead track
649 * whether TLB batching occurred in the past and if so then do a flush here
650 * if required. This will cost one additional flush per reclaim cycle paid
651 * by the first operation at risk such as mprotect and mumap.
652 *
653 * This must be called under the PTL so that an access to tlb_flush_batched
654 * that is potentially a "reclaim vs mprotect/munmap/etc" race will synchronise
655 * via the PTL.
656 */
657void flush_tlb_batched_pending(struct mm_struct *mm)
658{
659 if (mm->tlb_flush_batched) {
660 flush_tlb_mm(mm);
661
662 /*
663 * Do not allow the compiler to re-order the clearing of
664 * tlb_flush_batched before the tlb is flushed.
665 */
666 barrier();
667 mm->tlb_flush_batched = false;
668 }
669}
634#else 670#else
635static void set_tlb_ubc_flush_pending(struct mm_struct *mm, bool writable) 671static void set_tlb_ubc_flush_pending(struct mm_struct *mm, bool writable)
636{ 672{
@@ -852,10 +888,10 @@ static bool page_mkclean_one(struct page *page, struct vm_area_struct *vma,
852 .flags = PVMW_SYNC, 888 .flags = PVMW_SYNC,
853 }; 889 };
854 int *cleaned = arg; 890 int *cleaned = arg;
891 bool invalidation_needed = false;
855 892
856 while (page_vma_mapped_walk(&pvmw)) { 893 while (page_vma_mapped_walk(&pvmw)) {
857 int ret = 0; 894 int ret = 0;
858 address = pvmw.address;
859 if (pvmw.pte) { 895 if (pvmw.pte) {
860 pte_t entry; 896 pte_t entry;
861 pte_t *pte = pvmw.pte; 897 pte_t *pte = pvmw.pte;
@@ -863,11 +899,11 @@ static bool page_mkclean_one(struct page *page, struct vm_area_struct *vma,
863 if (!pte_dirty(*pte) && !pte_write(*pte)) 899 if (!pte_dirty(*pte) && !pte_write(*pte))
864 continue; 900 continue;
865 901
866 flush_cache_page(vma, address, pte_pfn(*pte)); 902 flush_cache_page(vma, pvmw.address, pte_pfn(*pte));
867 entry = ptep_clear_flush(vma, address, pte); 903 entry = ptep_clear_flush(vma, pvmw.address, pte);
868 entry = pte_wrprotect(entry); 904 entry = pte_wrprotect(entry);
869 entry = pte_mkclean(entry); 905 entry = pte_mkclean(entry);
870 set_pte_at(vma->vm_mm, address, pte, entry); 906 set_pte_at(vma->vm_mm, pvmw.address, pte, entry);
871 ret = 1; 907 ret = 1;
872 } else { 908 } else {
873#ifdef CONFIG_TRANSPARENT_HUGE_PAGECACHE 909#ifdef CONFIG_TRANSPARENT_HUGE_PAGECACHE
@@ -877,11 +913,11 @@ static bool page_mkclean_one(struct page *page, struct vm_area_struct *vma,
877 if (!pmd_dirty(*pmd) && !pmd_write(*pmd)) 913 if (!pmd_dirty(*pmd) && !pmd_write(*pmd))
878 continue; 914 continue;
879 915
880 flush_cache_page(vma, address, page_to_pfn(page)); 916 flush_cache_page(vma, pvmw.address, page_to_pfn(page));
881 entry = pmdp_huge_clear_flush(vma, address, pmd); 917 entry = pmdp_huge_clear_flush(vma, pvmw.address, pmd);
882 entry = pmd_wrprotect(entry); 918 entry = pmd_wrprotect(entry);
883 entry = pmd_mkclean(entry); 919 entry = pmd_mkclean(entry);
884 set_pmd_at(vma->vm_mm, address, pmd, entry); 920 set_pmd_at(vma->vm_mm, pvmw.address, pmd, entry);
885 ret = 1; 921 ret = 1;
886#else 922#else
887 /* unexpected pmd-mapped page? */ 923 /* unexpected pmd-mapped page? */
@@ -890,11 +926,16 @@ static bool page_mkclean_one(struct page *page, struct vm_area_struct *vma,
890 } 926 }
891 927
892 if (ret) { 928 if (ret) {
893 mmu_notifier_invalidate_page(vma->vm_mm, address);
894 (*cleaned)++; 929 (*cleaned)++;
930 invalidation_needed = true;
895 } 931 }
896 } 932 }
897 933
934 if (invalidation_needed) {
935 mmu_notifier_invalidate_range(vma->vm_mm, address,
936 address + (1UL << compound_order(page)));
937 }
938
898 return true; 939 return true;
899} 940}
900 941
@@ -1287,7 +1328,7 @@ static bool try_to_unmap_one(struct page *page, struct vm_area_struct *vma,
1287 }; 1328 };
1288 pte_t pteval; 1329 pte_t pteval;
1289 struct page *subpage; 1330 struct page *subpage;
1290 bool ret = true; 1331 bool ret = true, invalidation_needed = false;
1291 enum ttu_flags flags = (enum ttu_flags)arg; 1332 enum ttu_flags flags = (enum ttu_flags)arg;
1292 1333
1293 /* munlock has nothing to gain from examining un-locked vmas */ 1334 /* munlock has nothing to gain from examining un-locked vmas */
@@ -1327,11 +1368,9 @@ static bool try_to_unmap_one(struct page *page, struct vm_area_struct *vma,
1327 VM_BUG_ON_PAGE(!pvmw.pte, page); 1368 VM_BUG_ON_PAGE(!pvmw.pte, page);
1328 1369
1329 subpage = page - page_to_pfn(page) + pte_pfn(*pvmw.pte); 1370 subpage = page - page_to_pfn(page) + pte_pfn(*pvmw.pte);
1330 address = pvmw.address;
1331
1332 1371
1333 if (!(flags & TTU_IGNORE_ACCESS)) { 1372 if (!(flags & TTU_IGNORE_ACCESS)) {
1334 if (ptep_clear_flush_young_notify(vma, address, 1373 if (ptep_clear_flush_young_notify(vma, pvmw.address,
1335 pvmw.pte)) { 1374 pvmw.pte)) {
1336 ret = false; 1375 ret = false;
1337 page_vma_mapped_walk_done(&pvmw); 1376 page_vma_mapped_walk_done(&pvmw);
@@ -1340,7 +1379,7 @@ static bool try_to_unmap_one(struct page *page, struct vm_area_struct *vma,
1340 } 1379 }
1341 1380
1342 /* Nuke the page table entry. */ 1381 /* Nuke the page table entry. */
1343 flush_cache_page(vma, address, pte_pfn(*pvmw.pte)); 1382 flush_cache_page(vma, pvmw.address, pte_pfn(*pvmw.pte));
1344 if (should_defer_flush(mm, flags)) { 1383 if (should_defer_flush(mm, flags)) {
1345 /* 1384 /*
1346 * We clear the PTE but do not flush so potentially 1385 * We clear the PTE but do not flush so potentially
@@ -1350,11 +1389,12 @@ static bool try_to_unmap_one(struct page *page, struct vm_area_struct *vma,
1350 * transition on a cached TLB entry is written through 1389 * transition on a cached TLB entry is written through
1351 * and traps if the PTE is unmapped. 1390 * and traps if the PTE is unmapped.
1352 */ 1391 */
1353 pteval = ptep_get_and_clear(mm, address, pvmw.pte); 1392 pteval = ptep_get_and_clear(mm, pvmw.address,
1393 pvmw.pte);
1354 1394
1355 set_tlb_ubc_flush_pending(mm, pte_dirty(pteval)); 1395 set_tlb_ubc_flush_pending(mm, pte_dirty(pteval));
1356 } else { 1396 } else {
1357 pteval = ptep_clear_flush(vma, address, pvmw.pte); 1397 pteval = ptep_clear_flush(vma, pvmw.address, pvmw.pte);
1358 } 1398 }
1359 1399
1360 /* Move the dirty bit to the page. Now the pte is gone. */ 1400 /* Move the dirty bit to the page. Now the pte is gone. */
@@ -1369,12 +1409,12 @@ static bool try_to_unmap_one(struct page *page, struct vm_area_struct *vma,
1369 if (PageHuge(page)) { 1409 if (PageHuge(page)) {
1370 int nr = 1 << compound_order(page); 1410 int nr = 1 << compound_order(page);
1371 hugetlb_count_sub(nr, mm); 1411 hugetlb_count_sub(nr, mm);
1372 set_huge_swap_pte_at(mm, address, 1412 set_huge_swap_pte_at(mm, pvmw.address,
1373 pvmw.pte, pteval, 1413 pvmw.pte, pteval,
1374 vma_mmu_pagesize(vma)); 1414 vma_mmu_pagesize(vma));
1375 } else { 1415 } else {
1376 dec_mm_counter(mm, mm_counter(page)); 1416 dec_mm_counter(mm, mm_counter(page));
1377 set_pte_at(mm, address, pvmw.pte, pteval); 1417 set_pte_at(mm, pvmw.address, pvmw.pte, pteval);
1378 } 1418 }
1379 1419
1380 } else if (pte_unused(pteval)) { 1420 } else if (pte_unused(pteval)) {
@@ -1398,7 +1438,7 @@ static bool try_to_unmap_one(struct page *page, struct vm_area_struct *vma,
1398 swp_pte = swp_entry_to_pte(entry); 1438 swp_pte = swp_entry_to_pte(entry);
1399 if (pte_soft_dirty(pteval)) 1439 if (pte_soft_dirty(pteval))
1400 swp_pte = pte_swp_mksoft_dirty(swp_pte); 1440 swp_pte = pte_swp_mksoft_dirty(swp_pte);
1401 set_pte_at(mm, address, pvmw.pte, swp_pte); 1441 set_pte_at(mm, pvmw.address, pvmw.pte, swp_pte);
1402 } else if (PageAnon(page)) { 1442 } else if (PageAnon(page)) {
1403 swp_entry_t entry = { .val = page_private(subpage) }; 1443 swp_entry_t entry = { .val = page_private(subpage) };
1404 pte_t swp_pte; 1444 pte_t swp_pte;
@@ -1424,7 +1464,7 @@ static bool try_to_unmap_one(struct page *page, struct vm_area_struct *vma,
1424 * If the page was redirtied, it cannot be 1464 * If the page was redirtied, it cannot be
1425 * discarded. Remap the page to page table. 1465 * discarded. Remap the page to page table.
1426 */ 1466 */
1427 set_pte_at(mm, address, pvmw.pte, pteval); 1467 set_pte_at(mm, pvmw.address, pvmw.pte, pteval);
1428 SetPageSwapBacked(page); 1468 SetPageSwapBacked(page);
1429 ret = false; 1469 ret = false;
1430 page_vma_mapped_walk_done(&pvmw); 1470 page_vma_mapped_walk_done(&pvmw);
@@ -1432,7 +1472,7 @@ static bool try_to_unmap_one(struct page *page, struct vm_area_struct *vma,
1432 } 1472 }
1433 1473
1434 if (swap_duplicate(entry) < 0) { 1474 if (swap_duplicate(entry) < 0) {
1435 set_pte_at(mm, address, pvmw.pte, pteval); 1475 set_pte_at(mm, pvmw.address, pvmw.pte, pteval);
1436 ret = false; 1476 ret = false;
1437 page_vma_mapped_walk_done(&pvmw); 1477 page_vma_mapped_walk_done(&pvmw);
1438 break; 1478 break;
@@ -1448,14 +1488,18 @@ static bool try_to_unmap_one(struct page *page, struct vm_area_struct *vma,
1448 swp_pte = swp_entry_to_pte(entry); 1488 swp_pte = swp_entry_to_pte(entry);
1449 if (pte_soft_dirty(pteval)) 1489 if (pte_soft_dirty(pteval))
1450 swp_pte = pte_swp_mksoft_dirty(swp_pte); 1490 swp_pte = pte_swp_mksoft_dirty(swp_pte);
1451 set_pte_at(mm, address, pvmw.pte, swp_pte); 1491 set_pte_at(mm, pvmw.address, pvmw.pte, swp_pte);
1452 } else 1492 } else
1453 dec_mm_counter(mm, mm_counter_file(page)); 1493 dec_mm_counter(mm, mm_counter_file(page));
1454discard: 1494discard:
1455 page_remove_rmap(subpage, PageHuge(page)); 1495 page_remove_rmap(subpage, PageHuge(page));
1456 put_page(page); 1496 put_page(page);
1457 mmu_notifier_invalidate_page(mm, address); 1497 invalidation_needed = true;
1458 } 1498 }
1499
1500 if (invalidation_needed)
1501 mmu_notifier_invalidate_range(mm, address,
1502 address + (1UL << compound_order(page)));
1459 return ret; 1503 return ret;
1460} 1504}
1461 1505
diff --git a/mm/shmem.c b/mm/shmem.c
index b0aa6075d164..6540e5982444 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -1022,7 +1022,11 @@ static int shmem_setattr(struct dentry *dentry, struct iattr *attr)
1022 */ 1022 */
1023 if (IS_ENABLED(CONFIG_TRANSPARENT_HUGE_PAGECACHE)) { 1023 if (IS_ENABLED(CONFIG_TRANSPARENT_HUGE_PAGECACHE)) {
1024 spin_lock(&sbinfo->shrinklist_lock); 1024 spin_lock(&sbinfo->shrinklist_lock);
1025 if (list_empty(&info->shrinklist)) { 1025 /*
1026 * _careful to defend against unlocked access to
1027 * ->shrink_list in shmem_unused_huge_shrink()
1028 */
1029 if (list_empty_careful(&info->shrinklist)) {
1026 list_add_tail(&info->shrinklist, 1030 list_add_tail(&info->shrinklist,
1027 &sbinfo->shrinklist); 1031 &sbinfo->shrinklist);
1028 sbinfo->shrinklist_len++; 1032 sbinfo->shrinklist_len++;
@@ -1817,7 +1821,11 @@ alloc_nohuge: page = shmem_alloc_and_acct_page(gfp, info, sbinfo,
1817 * to shrink under memory pressure. 1821 * to shrink under memory pressure.
1818 */ 1822 */
1819 spin_lock(&sbinfo->shrinklist_lock); 1823 spin_lock(&sbinfo->shrinklist_lock);
1820 if (list_empty(&info->shrinklist)) { 1824 /*
1825 * _careful to defend against unlocked access to
1826 * ->shrink_list in shmem_unused_huge_shrink()
1827 */
1828 if (list_empty_careful(&info->shrinklist)) {
1821 list_add_tail(&info->shrinklist, 1829 list_add_tail(&info->shrinklist,
1822 &sbinfo->shrinklist); 1830 &sbinfo->shrinklist);
1823 sbinfo->shrinklist_len++; 1831 sbinfo->shrinklist_len++;
diff --git a/mm/slub.c b/mm/slub.c
index 1d3f9835f4ea..e8b4e31162ca 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -5642,13 +5642,14 @@ static void sysfs_slab_remove_workfn(struct work_struct *work)
5642 * A cache is never shut down before deactivation is 5642 * A cache is never shut down before deactivation is
5643 * complete, so no need to worry about synchronization. 5643 * complete, so no need to worry about synchronization.
5644 */ 5644 */
5645 return; 5645 goto out;
5646 5646
5647#ifdef CONFIG_MEMCG 5647#ifdef CONFIG_MEMCG
5648 kset_unregister(s->memcg_kset); 5648 kset_unregister(s->memcg_kset);
5649#endif 5649#endif
5650 kobject_uevent(&s->kobj, KOBJ_REMOVE); 5650 kobject_uevent(&s->kobj, KOBJ_REMOVE);
5651 kobject_del(&s->kobj); 5651 kobject_del(&s->kobj);
5652out:
5652 kobject_put(&s->kobj); 5653 kobject_put(&s->kobj);
5653} 5654}
5654 5655
diff --git a/mm/util.c b/mm/util.c
index 7b07ec852e01..9ecddf568fe3 100644
--- a/mm/util.c
+++ b/mm/util.c
@@ -633,7 +633,7 @@ int __vm_enough_memory(struct mm_struct *mm, long pages, int cap_sys_admin)
633 * which are reclaimable, under pressure. The dentry 633 * which are reclaimable, under pressure. The dentry
634 * cache and most inode caches should fall into this 634 * cache and most inode caches should fall into this
635 */ 635 */
636 free += global_page_state(NR_SLAB_RECLAIMABLE); 636 free += global_node_page_state(NR_SLAB_RECLAIMABLE);
637 637
638 /* 638 /*
639 * Leave reserved pages. The pages are not for anonymous pages. 639 * Leave reserved pages. The pages are not for anonymous pages.
diff --git a/mm/vmalloc.c b/mm/vmalloc.c
index 8698c1c86c4d..a47e3894c775 100644
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
@@ -1671,7 +1671,10 @@ static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask,
1671 struct page **pages; 1671 struct page **pages;
1672 unsigned int nr_pages, array_size, i; 1672 unsigned int nr_pages, array_size, i;
1673 const gfp_t nested_gfp = (gfp_mask & GFP_RECLAIM_MASK) | __GFP_ZERO; 1673 const gfp_t nested_gfp = (gfp_mask & GFP_RECLAIM_MASK) | __GFP_ZERO;
1674 const gfp_t alloc_mask = gfp_mask | __GFP_HIGHMEM | __GFP_NOWARN; 1674 const gfp_t alloc_mask = gfp_mask | __GFP_NOWARN;
1675 const gfp_t highmem_mask = (gfp_mask & (GFP_DMA | GFP_DMA32)) ?
1676 0 :
1677 __GFP_HIGHMEM;
1675 1678
1676 nr_pages = get_vm_area_size(area) >> PAGE_SHIFT; 1679 nr_pages = get_vm_area_size(area) >> PAGE_SHIFT;
1677 array_size = (nr_pages * sizeof(struct page *)); 1680 array_size = (nr_pages * sizeof(struct page *));
@@ -1679,7 +1682,7 @@ static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask,
1679 area->nr_pages = nr_pages; 1682 area->nr_pages = nr_pages;
1680 /* Please note that the recursion is strictly bounded. */ 1683 /* Please note that the recursion is strictly bounded. */
1681 if (array_size > PAGE_SIZE) { 1684 if (array_size > PAGE_SIZE) {
1682 pages = __vmalloc_node(array_size, 1, nested_gfp|__GFP_HIGHMEM, 1685 pages = __vmalloc_node(array_size, 1, nested_gfp|highmem_mask,
1683 PAGE_KERNEL, node, area->caller); 1686 PAGE_KERNEL, node, area->caller);
1684 } else { 1687 } else {
1685 pages = kmalloc_node(array_size, nested_gfp, node); 1688 pages = kmalloc_node(array_size, nested_gfp, node);
@@ -1700,9 +1703,9 @@ static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask,
1700 } 1703 }
1701 1704
1702 if (node == NUMA_NO_NODE) 1705 if (node == NUMA_NO_NODE)
1703 page = alloc_page(alloc_mask); 1706 page = alloc_page(alloc_mask|highmem_mask);
1704 else 1707 else
1705 page = alloc_pages_node(node, alloc_mask, 0); 1708 page = alloc_pages_node(node, alloc_mask|highmem_mask, 0);
1706 1709
1707 if (unlikely(!page)) { 1710 if (unlikely(!page)) {
1708 /* Successfully allocated i pages, free them in __vunmap() */ 1711 /* Successfully allocated i pages, free them in __vunmap() */
@@ -1710,7 +1713,7 @@ static void *__vmalloc_area_node(struct vm_struct *area, gfp_t gfp_mask,
1710 goto fail; 1713 goto fail;
1711 } 1714 }
1712 area->pages[i] = page; 1715 area->pages[i] = page;
1713 if (gfpflags_allow_blocking(gfp_mask)) 1716 if (gfpflags_allow_blocking(gfp_mask|highmem_mask))
1714 cond_resched(); 1717 cond_resched();
1715 } 1718 }
1716 1719
diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c
index 013eea76685e..308acb9d814b 100644
--- a/mm/zsmalloc.c
+++ b/mm/zsmalloc.c
@@ -2453,7 +2453,6 @@ void zs_destroy_pool(struct zs_pool *pool)
2453 } 2453 }
2454 2454
2455 destroy_cache(pool); 2455 destroy_cache(pool);
2456 kfree(pool->size_class);
2457 kfree(pool->name); 2456 kfree(pool->name);
2458 kfree(pool); 2457 kfree(pool);
2459} 2458}
diff --git a/net/batman-adv/translation-table.c b/net/batman-adv/translation-table.c
index e1133bc634b5..8a3ce79b1307 100644
--- a/net/batman-adv/translation-table.c
+++ b/net/batman-adv/translation-table.c
@@ -1549,9 +1549,41 @@ batadv_tt_global_entry_has_orig(const struct batadv_tt_global_entry *entry,
1549 return found; 1549 return found;
1550} 1550}
1551 1551
1552/**
1553 * batadv_tt_global_sync_flags - update TT sync flags
1554 * @tt_global: the TT global entry to update sync flags in
1555 *
1556 * Updates the sync flag bits in the tt_global flag attribute with a logical
1557 * OR of all sync flags from any of its TT orig entries.
1558 */
1559static void
1560batadv_tt_global_sync_flags(struct batadv_tt_global_entry *tt_global)
1561{
1562 struct batadv_tt_orig_list_entry *orig_entry;
1563 const struct hlist_head *head;
1564 u16 flags = BATADV_NO_FLAGS;
1565
1566 rcu_read_lock();
1567 head = &tt_global->orig_list;
1568 hlist_for_each_entry_rcu(orig_entry, head, list)
1569 flags |= orig_entry->flags;
1570 rcu_read_unlock();
1571
1572 flags |= tt_global->common.flags & (~BATADV_TT_SYNC_MASK);
1573 tt_global->common.flags = flags;
1574}
1575
1576/**
1577 * batadv_tt_global_orig_entry_add - add or update a TT orig entry
1578 * @tt_global: the TT global entry to add an orig entry in
1579 * @orig_node: the originator to add an orig entry for
1580 * @ttvn: translation table version number of this changeset
1581 * @flags: TT sync flags
1582 */
1552static void 1583static void
1553batadv_tt_global_orig_entry_add(struct batadv_tt_global_entry *tt_global, 1584batadv_tt_global_orig_entry_add(struct batadv_tt_global_entry *tt_global,
1554 struct batadv_orig_node *orig_node, int ttvn) 1585 struct batadv_orig_node *orig_node, int ttvn,
1586 u8 flags)
1555{ 1587{
1556 struct batadv_tt_orig_list_entry *orig_entry; 1588 struct batadv_tt_orig_list_entry *orig_entry;
1557 1589
@@ -1561,7 +1593,8 @@ batadv_tt_global_orig_entry_add(struct batadv_tt_global_entry *tt_global,
1561 * was added during a "temporary client detection" 1593 * was added during a "temporary client detection"
1562 */ 1594 */
1563 orig_entry->ttvn = ttvn; 1595 orig_entry->ttvn = ttvn;
1564 goto out; 1596 orig_entry->flags = flags;
1597 goto sync_flags;
1565 } 1598 }
1566 1599
1567 orig_entry = kmem_cache_zalloc(batadv_tt_orig_cache, GFP_ATOMIC); 1600 orig_entry = kmem_cache_zalloc(batadv_tt_orig_cache, GFP_ATOMIC);
@@ -1573,6 +1606,7 @@ batadv_tt_global_orig_entry_add(struct batadv_tt_global_entry *tt_global,
1573 batadv_tt_global_size_inc(orig_node, tt_global->common.vid); 1606 batadv_tt_global_size_inc(orig_node, tt_global->common.vid);
1574 orig_entry->orig_node = orig_node; 1607 orig_entry->orig_node = orig_node;
1575 orig_entry->ttvn = ttvn; 1608 orig_entry->ttvn = ttvn;
1609 orig_entry->flags = flags;
1576 kref_init(&orig_entry->refcount); 1610 kref_init(&orig_entry->refcount);
1577 1611
1578 spin_lock_bh(&tt_global->list_lock); 1612 spin_lock_bh(&tt_global->list_lock);
@@ -1582,6 +1616,8 @@ batadv_tt_global_orig_entry_add(struct batadv_tt_global_entry *tt_global,
1582 spin_unlock_bh(&tt_global->list_lock); 1616 spin_unlock_bh(&tt_global->list_lock);
1583 atomic_inc(&tt_global->orig_list_count); 1617 atomic_inc(&tt_global->orig_list_count);
1584 1618
1619sync_flags:
1620 batadv_tt_global_sync_flags(tt_global);
1585out: 1621out:
1586 if (orig_entry) 1622 if (orig_entry)
1587 batadv_tt_orig_list_entry_put(orig_entry); 1623 batadv_tt_orig_list_entry_put(orig_entry);
@@ -1703,10 +1739,10 @@ static bool batadv_tt_global_add(struct batadv_priv *bat_priv,
1703 } 1739 }
1704 1740
1705 /* the change can carry possible "attribute" flags like the 1741 /* the change can carry possible "attribute" flags like the
1706 * TT_CLIENT_WIFI, therefore they have to be copied in the 1742 * TT_CLIENT_TEMP, therefore they have to be copied in the
1707 * client entry 1743 * client entry
1708 */ 1744 */
1709 common->flags |= flags; 1745 common->flags |= flags & (~BATADV_TT_SYNC_MASK);
1710 1746
1711 /* If there is the BATADV_TT_CLIENT_ROAM flag set, there is only 1747 /* If there is the BATADV_TT_CLIENT_ROAM flag set, there is only
1712 * one originator left in the list and we previously received a 1748 * one originator left in the list and we previously received a
@@ -1723,7 +1759,8 @@ static bool batadv_tt_global_add(struct batadv_priv *bat_priv,
1723 } 1759 }
1724add_orig_entry: 1760add_orig_entry:
1725 /* add the new orig_entry (if needed) or update it */ 1761 /* add the new orig_entry (if needed) or update it */
1726 batadv_tt_global_orig_entry_add(tt_global_entry, orig_node, ttvn); 1762 batadv_tt_global_orig_entry_add(tt_global_entry, orig_node, ttvn,
1763 flags & BATADV_TT_SYNC_MASK);
1727 1764
1728 batadv_dbg(BATADV_DBG_TT, bat_priv, 1765 batadv_dbg(BATADV_DBG_TT, bat_priv,
1729 "Creating new global tt entry: %pM (vid: %d, via %pM)\n", 1766 "Creating new global tt entry: %pM (vid: %d, via %pM)\n",
@@ -1946,6 +1983,7 @@ batadv_tt_global_dump_subentry(struct sk_buff *msg, u32 portid, u32 seq,
1946 struct batadv_tt_orig_list_entry *orig, 1983 struct batadv_tt_orig_list_entry *orig,
1947 bool best) 1984 bool best)
1948{ 1985{
1986 u16 flags = (common->flags & (~BATADV_TT_SYNC_MASK)) | orig->flags;
1949 void *hdr; 1987 void *hdr;
1950 struct batadv_orig_node_vlan *vlan; 1988 struct batadv_orig_node_vlan *vlan;
1951 u8 last_ttvn; 1989 u8 last_ttvn;
@@ -1975,7 +2013,7 @@ batadv_tt_global_dump_subentry(struct sk_buff *msg, u32 portid, u32 seq,
1975 nla_put_u8(msg, BATADV_ATTR_TT_LAST_TTVN, last_ttvn) || 2013 nla_put_u8(msg, BATADV_ATTR_TT_LAST_TTVN, last_ttvn) ||
1976 nla_put_u32(msg, BATADV_ATTR_TT_CRC32, crc) || 2014 nla_put_u32(msg, BATADV_ATTR_TT_CRC32, crc) ||
1977 nla_put_u16(msg, BATADV_ATTR_TT_VID, common->vid) || 2015 nla_put_u16(msg, BATADV_ATTR_TT_VID, common->vid) ||
1978 nla_put_u32(msg, BATADV_ATTR_TT_FLAGS, common->flags)) 2016 nla_put_u32(msg, BATADV_ATTR_TT_FLAGS, flags))
1979 goto nla_put_failure; 2017 goto nla_put_failure;
1980 2018
1981 if (best && nla_put_flag(msg, BATADV_ATTR_FLAG_BEST)) 2019 if (best && nla_put_flag(msg, BATADV_ATTR_FLAG_BEST))
@@ -2589,6 +2627,7 @@ static u32 batadv_tt_global_crc(struct batadv_priv *bat_priv,
2589 unsigned short vid) 2627 unsigned short vid)
2590{ 2628{
2591 struct batadv_hashtable *hash = bat_priv->tt.global_hash; 2629 struct batadv_hashtable *hash = bat_priv->tt.global_hash;
2630 struct batadv_tt_orig_list_entry *tt_orig;
2592 struct batadv_tt_common_entry *tt_common; 2631 struct batadv_tt_common_entry *tt_common;
2593 struct batadv_tt_global_entry *tt_global; 2632 struct batadv_tt_global_entry *tt_global;
2594 struct hlist_head *head; 2633 struct hlist_head *head;
@@ -2627,8 +2666,9 @@ static u32 batadv_tt_global_crc(struct batadv_priv *bat_priv,
2627 /* find out if this global entry is announced by this 2666 /* find out if this global entry is announced by this
2628 * originator 2667 * originator
2629 */ 2668 */
2630 if (!batadv_tt_global_entry_has_orig(tt_global, 2669 tt_orig = batadv_tt_global_orig_entry_find(tt_global,
2631 orig_node)) 2670 orig_node);
2671 if (!tt_orig)
2632 continue; 2672 continue;
2633 2673
2634 /* use network order to read the VID: this ensures that 2674 /* use network order to read the VID: this ensures that
@@ -2640,10 +2680,12 @@ static u32 batadv_tt_global_crc(struct batadv_priv *bat_priv,
2640 /* compute the CRC on flags that have to be kept in sync 2680 /* compute the CRC on flags that have to be kept in sync
2641 * among nodes 2681 * among nodes
2642 */ 2682 */
2643 flags = tt_common->flags & BATADV_TT_SYNC_MASK; 2683 flags = tt_orig->flags;
2644 crc_tmp = crc32c(crc_tmp, &flags, sizeof(flags)); 2684 crc_tmp = crc32c(crc_tmp, &flags, sizeof(flags));
2645 2685
2646 crc ^= crc32c(crc_tmp, tt_common->addr, ETH_ALEN); 2686 crc ^= crc32c(crc_tmp, tt_common->addr, ETH_ALEN);
2687
2688 batadv_tt_orig_list_entry_put(tt_orig);
2647 } 2689 }
2648 rcu_read_unlock(); 2690 rcu_read_unlock();
2649 } 2691 }
diff --git a/net/batman-adv/types.h b/net/batman-adv/types.h
index ea43a6449247..a62795868794 100644
--- a/net/batman-adv/types.h
+++ b/net/batman-adv/types.h
@@ -1260,6 +1260,7 @@ struct batadv_tt_global_entry {
1260 * struct batadv_tt_orig_list_entry - orig node announcing a non-mesh client 1260 * struct batadv_tt_orig_list_entry - orig node announcing a non-mesh client
1261 * @orig_node: pointer to orig node announcing this non-mesh client 1261 * @orig_node: pointer to orig node announcing this non-mesh client
1262 * @ttvn: translation table version number which added the non-mesh client 1262 * @ttvn: translation table version number which added the non-mesh client
1263 * @flags: per orig entry TT sync flags
1263 * @list: list node for batadv_tt_global_entry::orig_list 1264 * @list: list node for batadv_tt_global_entry::orig_list
1264 * @refcount: number of contexts the object is used 1265 * @refcount: number of contexts the object is used
1265 * @rcu: struct used for freeing in an RCU-safe manner 1266 * @rcu: struct used for freeing in an RCU-safe manner
@@ -1267,6 +1268,7 @@ struct batadv_tt_global_entry {
1267struct batadv_tt_orig_list_entry { 1268struct batadv_tt_orig_list_entry {
1268 struct batadv_orig_node *orig_node; 1269 struct batadv_orig_node *orig_node;
1269 u8 ttvn; 1270 u8 ttvn;
1271 u8 flags;
1270 struct hlist_node list; 1272 struct hlist_node list;
1271 struct kref refcount; 1273 struct kref refcount;
1272 struct rcu_head rcu; 1274 struct rcu_head rcu;
diff --git a/net/bridge/br_device.c b/net/bridge/br_device.c
index f0f3447e8aa4..861ae2a165f4 100644
--- a/net/bridge/br_device.c
+++ b/net/bridge/br_device.c
@@ -34,11 +34,11 @@ static struct lock_class_key bridge_netdev_addr_lock_key;
34netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev) 34netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev)
35{ 35{
36 struct net_bridge *br = netdev_priv(dev); 36 struct net_bridge *br = netdev_priv(dev);
37 const unsigned char *dest = skb->data;
38 struct net_bridge_fdb_entry *dst; 37 struct net_bridge_fdb_entry *dst;
39 struct net_bridge_mdb_entry *mdst; 38 struct net_bridge_mdb_entry *mdst;
40 struct pcpu_sw_netstats *brstats = this_cpu_ptr(br->stats); 39 struct pcpu_sw_netstats *brstats = this_cpu_ptr(br->stats);
41 const struct nf_br_ops *nf_ops; 40 const struct nf_br_ops *nf_ops;
41 const unsigned char *dest;
42 u16 vid = 0; 42 u16 vid = 0;
43 43
44 rcu_read_lock(); 44 rcu_read_lock();
@@ -61,6 +61,7 @@ netdev_tx_t br_dev_xmit(struct sk_buff *skb, struct net_device *dev)
61 if (!br_allowed_ingress(br, br_vlan_group_rcu(br), skb, &vid)) 61 if (!br_allowed_ingress(br, br_vlan_group_rcu(br), skb, &vid))
62 goto out; 62 goto out;
63 63
64 dest = eth_hdr(skb)->h_dest;
64 if (is_broadcast_ether_addr(dest)) { 65 if (is_broadcast_ether_addr(dest)) {
65 br_flood(br, skb, BR_PKT_BROADCAST, false, true); 66 br_flood(br, skb, BR_PKT_BROADCAST, false, true);
66 } else if (is_multicast_ether_addr(dest)) { 67 } else if (is_multicast_ether_addr(dest)) {
diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c
index 013f2290bfa5..7637f58c1226 100644
--- a/net/bridge/br_input.c
+++ b/net/bridge/br_input.c
@@ -131,11 +131,11 @@ static void br_do_proxy_arp(struct sk_buff *skb, struct net_bridge *br,
131int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb) 131int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb)
132{ 132{
133 struct net_bridge_port *p = br_port_get_rcu(skb->dev); 133 struct net_bridge_port *p = br_port_get_rcu(skb->dev);
134 const unsigned char *dest = eth_hdr(skb)->h_dest;
135 enum br_pkt_type pkt_type = BR_PKT_UNICAST; 134 enum br_pkt_type pkt_type = BR_PKT_UNICAST;
136 struct net_bridge_fdb_entry *dst = NULL; 135 struct net_bridge_fdb_entry *dst = NULL;
137 struct net_bridge_mdb_entry *mdst; 136 struct net_bridge_mdb_entry *mdst;
138 bool local_rcv, mcast_hit = false; 137 bool local_rcv, mcast_hit = false;
138 const unsigned char *dest;
139 struct net_bridge *br; 139 struct net_bridge *br;
140 u16 vid = 0; 140 u16 vid = 0;
141 141
@@ -153,6 +153,7 @@ int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb
153 br_fdb_update(br, p, eth_hdr(skb)->h_source, vid, false); 153 br_fdb_update(br, p, eth_hdr(skb)->h_source, vid, false);
154 154
155 local_rcv = !!(br->dev->flags & IFF_PROMISC); 155 local_rcv = !!(br->dev->flags & IFF_PROMISC);
156 dest = eth_hdr(skb)->h_dest;
156 if (is_multicast_ether_addr(dest)) { 157 if (is_multicast_ether_addr(dest)) {
157 /* by definition the broadcast is also a multicast address */ 158 /* by definition the broadcast is also a multicast address */
158 if (is_broadcast_ether_addr(dest)) { 159 if (is_broadcast_ether_addr(dest)) {
diff --git a/net/ceph/crush/mapper.c b/net/ceph/crush/mapper.c
index 746b145bfd11..417df675c71b 100644
--- a/net/ceph/crush/mapper.c
+++ b/net/ceph/crush/mapper.c
@@ -306,7 +306,7 @@ static __u32 *get_choose_arg_weights(const struct crush_bucket_straw2 *bucket,
306 const struct crush_choose_arg *arg, 306 const struct crush_choose_arg *arg,
307 int position) 307 int position)
308{ 308{
309 if (!arg || !arg->weight_set || arg->weight_set_size == 0) 309 if (!arg || !arg->weight_set)
310 return bucket->item_weights; 310 return bucket->item_weights;
311 311
312 if (position >= arg->weight_set_size) 312 if (position >= arg->weight_set_size)
diff --git a/net/ceph/messenger.c b/net/ceph/messenger.c
index 0c31035bbfee..a67298c7e0cd 100644
--- a/net/ceph/messenger.c
+++ b/net/ceph/messenger.c
@@ -1287,10 +1287,10 @@ static void prepare_write_message(struct ceph_connection *con)
1287 if (m->needs_out_seq) { 1287 if (m->needs_out_seq) {
1288 m->hdr.seq = cpu_to_le64(++con->out_seq); 1288 m->hdr.seq = cpu_to_le64(++con->out_seq);
1289 m->needs_out_seq = false; 1289 m->needs_out_seq = false;
1290 }
1291 1290
1292 if (con->ops->reencode_message) 1291 if (con->ops->reencode_message)
1293 con->ops->reencode_message(m); 1292 con->ops->reencode_message(m);
1293 }
1294 1294
1295 dout("prepare_write_message %p seq %lld type %d len %d+%d+%zd\n", 1295 dout("prepare_write_message %p seq %lld type %d len %d+%d+%zd\n",
1296 m, con->out_seq, le16_to_cpu(m->hdr.type), 1296 m, con->out_seq, le16_to_cpu(m->hdr.type),
@@ -3203,8 +3203,10 @@ static struct ceph_msg_data *ceph_msg_data_create(enum ceph_msg_data_type type)
3203 return NULL; 3203 return NULL;
3204 3204
3205 data = kmem_cache_zalloc(ceph_msg_data_cache, GFP_NOFS); 3205 data = kmem_cache_zalloc(ceph_msg_data_cache, GFP_NOFS);
3206 if (data) 3206 if (!data)
3207 data->type = type; 3207 return NULL;
3208
3209 data->type = type;
3208 INIT_LIST_HEAD(&data->links); 3210 INIT_LIST_HEAD(&data->links);
3209 3211
3210 return data; 3212 return data;
diff --git a/net/ceph/osd_client.c b/net/ceph/osd_client.c
index 86a9737d8e3f..dcfbdd74dfd1 100644
--- a/net/ceph/osd_client.c
+++ b/net/ceph/osd_client.c
@@ -1337,6 +1337,8 @@ static enum calc_target_result calc_target(struct ceph_osd_client *osdc,
1337 bool legacy_change; 1337 bool legacy_change;
1338 bool split = false; 1338 bool split = false;
1339 bool sort_bitwise = ceph_osdmap_flag(osdc, CEPH_OSDMAP_SORTBITWISE); 1339 bool sort_bitwise = ceph_osdmap_flag(osdc, CEPH_OSDMAP_SORTBITWISE);
1340 bool recovery_deletes = ceph_osdmap_flag(osdc,
1341 CEPH_OSDMAP_RECOVERY_DELETES);
1340 enum calc_target_result ct_res; 1342 enum calc_target_result ct_res;
1341 int ret; 1343 int ret;
1342 1344
@@ -1399,6 +1401,8 @@ static enum calc_target_result calc_target(struct ceph_osd_client *osdc,
1399 pi->pg_num, 1401 pi->pg_num,
1400 t->sort_bitwise, 1402 t->sort_bitwise,
1401 sort_bitwise, 1403 sort_bitwise,
1404 t->recovery_deletes,
1405 recovery_deletes,
1402 &last_pgid)) 1406 &last_pgid))
1403 force_resend = true; 1407 force_resend = true;
1404 1408
@@ -1421,6 +1425,7 @@ static enum calc_target_result calc_target(struct ceph_osd_client *osdc,
1421 t->pg_num = pi->pg_num; 1425 t->pg_num = pi->pg_num;
1422 t->pg_num_mask = pi->pg_num_mask; 1426 t->pg_num_mask = pi->pg_num_mask;
1423 t->sort_bitwise = sort_bitwise; 1427 t->sort_bitwise = sort_bitwise;
1428 t->recovery_deletes = recovery_deletes;
1424 1429
1425 t->osd = acting.primary; 1430 t->osd = acting.primary;
1426 } 1431 }
@@ -1918,10 +1923,12 @@ static void encode_request_partial(struct ceph_osd_request *req,
1918 } 1923 }
1919 1924
1920 ceph_encode_32(&p, req->r_attempts); /* retry_attempt */ 1925 ceph_encode_32(&p, req->r_attempts); /* retry_attempt */
1921 BUG_ON(p != end - 8); /* space for features */ 1926 BUG_ON(p > end - 8); /* space for features */
1922 1927
1923 msg->hdr.version = cpu_to_le16(8); /* MOSDOp v8 */ 1928 msg->hdr.version = cpu_to_le16(8); /* MOSDOp v8 */
1924 /* front_len is finalized in encode_request_finish() */ 1929 /* front_len is finalized in encode_request_finish() */
1930 msg->front.iov_len = p - msg->front.iov_base;
1931 msg->hdr.front_len = cpu_to_le32(msg->front.iov_len);
1925 msg->hdr.data_len = cpu_to_le32(data_len); 1932 msg->hdr.data_len = cpu_to_le32(data_len);
1926 /* 1933 /*
1927 * The header "data_off" is a hint to the receiver allowing it 1934 * The header "data_off" is a hint to the receiver allowing it
@@ -1937,11 +1944,12 @@ static void encode_request_partial(struct ceph_osd_request *req,
1937static void encode_request_finish(struct ceph_msg *msg) 1944static void encode_request_finish(struct ceph_msg *msg)
1938{ 1945{
1939 void *p = msg->front.iov_base; 1946 void *p = msg->front.iov_base;
1947 void *const partial_end = p + msg->front.iov_len;
1940 void *const end = p + msg->front_alloc_len; 1948 void *const end = p + msg->front_alloc_len;
1941 1949
1942 if (CEPH_HAVE_FEATURE(msg->con->peer_features, RESEND_ON_SPLIT)) { 1950 if (CEPH_HAVE_FEATURE(msg->con->peer_features, RESEND_ON_SPLIT)) {
1943 /* luminous OSD -- encode features and be done */ 1951 /* luminous OSD -- encode features and be done */
1944 p = end - 8; 1952 p = partial_end;
1945 ceph_encode_64(&p, msg->con->peer_features); 1953 ceph_encode_64(&p, msg->con->peer_features);
1946 } else { 1954 } else {
1947 struct { 1955 struct {
@@ -1984,7 +1992,7 @@ static void encode_request_finish(struct ceph_msg *msg)
1984 oid_len = p - oid; 1992 oid_len = p - oid;
1985 1993
1986 tail = p; 1994 tail = p;
1987 tail_len = (end - p) - 8; 1995 tail_len = partial_end - p;
1988 1996
1989 p = msg->front.iov_base; 1997 p = msg->front.iov_base;
1990 ceph_encode_copy(&p, &head.client_inc, sizeof(head.client_inc)); 1998 ceph_encode_copy(&p, &head.client_inc, sizeof(head.client_inc));
@@ -5310,7 +5318,10 @@ static int invalidate_authorizer(struct ceph_connection *con)
5310 5318
5311static void osd_reencode_message(struct ceph_msg *msg) 5319static void osd_reencode_message(struct ceph_msg *msg)
5312{ 5320{
5313 encode_request_finish(msg); 5321 int type = le16_to_cpu(msg->hdr.type);
5322
5323 if (type == CEPH_MSG_OSD_OP)
5324 encode_request_finish(msg);
5314} 5325}
5315 5326
5316static int osd_sign_message(struct ceph_msg *msg) 5327static int osd_sign_message(struct ceph_msg *msg)
diff --git a/net/ceph/osdmap.c b/net/ceph/osdmap.c
index 864789c5974e..f358d0bfa76b 100644
--- a/net/ceph/osdmap.c
+++ b/net/ceph/osdmap.c
@@ -295,6 +295,10 @@ static int decode_choose_args(void **p, void *end, struct crush_map *c)
295 ret = decode_choose_arg(p, end, arg); 295 ret = decode_choose_arg(p, end, arg);
296 if (ret) 296 if (ret)
297 goto fail; 297 goto fail;
298
299 if (arg->ids_size &&
300 arg->ids_size != c->buckets[bucket_index]->size)
301 goto e_inval;
298 } 302 }
299 303
300 insert_choose_arg_map(&c->choose_args, arg_map); 304 insert_choose_arg_map(&c->choose_args, arg_map);
@@ -338,7 +342,7 @@ static void crush_finalize(struct crush_map *c)
338static struct crush_map *crush_decode(void *pbyval, void *end) 342static struct crush_map *crush_decode(void *pbyval, void *end)
339{ 343{
340 struct crush_map *c; 344 struct crush_map *c;
341 int err = -EINVAL; 345 int err;
342 int i, j; 346 int i, j;
343 void **p = &pbyval; 347 void **p = &pbyval;
344 void *start = pbyval; 348 void *start = pbyval;
@@ -407,7 +411,6 @@ static struct crush_map *crush_decode(void *pbyval, void *end)
407 size = sizeof(struct crush_bucket_straw2); 411 size = sizeof(struct crush_bucket_straw2);
408 break; 412 break;
409 default: 413 default:
410 err = -EINVAL;
411 goto bad; 414 goto bad;
412 } 415 }
413 BUG_ON(size == 0); 416 BUG_ON(size == 0);
@@ -439,31 +442,31 @@ static struct crush_map *crush_decode(void *pbyval, void *end)
439 err = crush_decode_uniform_bucket(p, end, 442 err = crush_decode_uniform_bucket(p, end,
440 (struct crush_bucket_uniform *)b); 443 (struct crush_bucket_uniform *)b);
441 if (err < 0) 444 if (err < 0)
442 goto bad; 445 goto fail;
443 break; 446 break;
444 case CRUSH_BUCKET_LIST: 447 case CRUSH_BUCKET_LIST:
445 err = crush_decode_list_bucket(p, end, 448 err = crush_decode_list_bucket(p, end,
446 (struct crush_bucket_list *)b); 449 (struct crush_bucket_list *)b);
447 if (err < 0) 450 if (err < 0)
448 goto bad; 451 goto fail;
449 break; 452 break;
450 case CRUSH_BUCKET_TREE: 453 case CRUSH_BUCKET_TREE:
451 err = crush_decode_tree_bucket(p, end, 454 err = crush_decode_tree_bucket(p, end,
452 (struct crush_bucket_tree *)b); 455 (struct crush_bucket_tree *)b);
453 if (err < 0) 456 if (err < 0)
454 goto bad; 457 goto fail;
455 break; 458 break;
456 case CRUSH_BUCKET_STRAW: 459 case CRUSH_BUCKET_STRAW:
457 err = crush_decode_straw_bucket(p, end, 460 err = crush_decode_straw_bucket(p, end,
458 (struct crush_bucket_straw *)b); 461 (struct crush_bucket_straw *)b);
459 if (err < 0) 462 if (err < 0)
460 goto bad; 463 goto fail;
461 break; 464 break;
462 case CRUSH_BUCKET_STRAW2: 465 case CRUSH_BUCKET_STRAW2:
463 err = crush_decode_straw2_bucket(p, end, 466 err = crush_decode_straw2_bucket(p, end,
464 (struct crush_bucket_straw2 *)b); 467 (struct crush_bucket_straw2 *)b);
465 if (err < 0) 468 if (err < 0)
466 goto bad; 469 goto fail;
467 break; 470 break;
468 } 471 }
469 } 472 }
@@ -474,7 +477,6 @@ static struct crush_map *crush_decode(void *pbyval, void *end)
474 u32 yes; 477 u32 yes;
475 struct crush_rule *r; 478 struct crush_rule *r;
476 479
477 err = -EINVAL;
478 ceph_decode_32_safe(p, end, yes, bad); 480 ceph_decode_32_safe(p, end, yes, bad);
479 if (!yes) { 481 if (!yes) {
480 dout("crush_decode NO rule %d off %x %p to %p\n", 482 dout("crush_decode NO rule %d off %x %p to %p\n",
@@ -489,7 +491,6 @@ static struct crush_map *crush_decode(void *pbyval, void *end)
489 /* len */ 491 /* len */
490 ceph_decode_32_safe(p, end, yes, bad); 492 ceph_decode_32_safe(p, end, yes, bad);
491#if BITS_PER_LONG == 32 493#if BITS_PER_LONG == 32
492 err = -EINVAL;
493 if (yes > (ULONG_MAX - sizeof(*r)) 494 if (yes > (ULONG_MAX - sizeof(*r))
494 / sizeof(struct crush_rule_step)) 495 / sizeof(struct crush_rule_step))
495 goto bad; 496 goto bad;
@@ -557,7 +558,7 @@ static struct crush_map *crush_decode(void *pbyval, void *end)
557 if (*p != end) { 558 if (*p != end) {
558 err = decode_choose_args(p, end, c); 559 err = decode_choose_args(p, end, c);
559 if (err) 560 if (err)
560 goto bad; 561 goto fail;
561 } 562 }
562 563
563done: 564done:
@@ -567,10 +568,14 @@ done:
567 568
568badmem: 569badmem:
569 err = -ENOMEM; 570 err = -ENOMEM;
570bad: 571fail:
571 dout("crush_decode fail %d\n", err); 572 dout("crush_decode fail %d\n", err);
572 crush_destroy(c); 573 crush_destroy(c);
573 return ERR_PTR(err); 574 return ERR_PTR(err);
575
576bad:
577 err = -EINVAL;
578 goto fail;
574} 579}
575 580
576int ceph_pg_compare(const struct ceph_pg *lhs, const struct ceph_pg *rhs) 581int ceph_pg_compare(const struct ceph_pg *lhs, const struct ceph_pg *rhs)
@@ -1399,7 +1404,7 @@ static struct ceph_pg_mapping *__decode_pg_upmap_items(void **p, void *end,
1399 return ERR_PTR(-EINVAL); 1404 return ERR_PTR(-EINVAL);
1400 1405
1401 ceph_decode_need(p, end, 2 * len * sizeof(u32), e_inval); 1406 ceph_decode_need(p, end, 2 * len * sizeof(u32), e_inval);
1402 pg = kzalloc(sizeof(*pg) + 2 * len * sizeof(u32), GFP_NOIO); 1407 pg = alloc_pg_mapping(2 * len * sizeof(u32));
1403 if (!pg) 1408 if (!pg)
1404 return ERR_PTR(-ENOMEM); 1409 return ERR_PTR(-ENOMEM);
1405 1410
@@ -1544,7 +1549,7 @@ static int osdmap_decode(void **p, void *end, struct ceph_osdmap *map)
1544 if (struct_v >= 3) { 1549 if (struct_v >= 3) {
1545 /* erasure_code_profiles */ 1550 /* erasure_code_profiles */
1546 ceph_decode_skip_map_of_map(p, end, string, string, string, 1551 ceph_decode_skip_map_of_map(p, end, string, string, string,
1547 bad); 1552 e_inval);
1548 } 1553 }
1549 1554
1550 if (struct_v >= 4) { 1555 if (struct_v >= 4) {
@@ -1825,9 +1830,9 @@ struct ceph_osdmap *osdmap_apply_incremental(void **p, void *end,
1825 if (struct_v >= 3) { 1830 if (struct_v >= 3) {
1826 /* new_erasure_code_profiles */ 1831 /* new_erasure_code_profiles */
1827 ceph_decode_skip_map_of_map(p, end, string, string, string, 1832 ceph_decode_skip_map_of_map(p, end, string, string, string,
1828 bad); 1833 e_inval);
1829 /* old_erasure_code_profiles */ 1834 /* old_erasure_code_profiles */
1830 ceph_decode_skip_set(p, end, string, bad); 1835 ceph_decode_skip_set(p, end, string, e_inval);
1831 } 1836 }
1832 1837
1833 if (struct_v >= 4) { 1838 if (struct_v >= 4) {
@@ -2077,6 +2082,8 @@ bool ceph_is_new_interval(const struct ceph_osds *old_acting,
2077 u32 new_pg_num, 2082 u32 new_pg_num,
2078 bool old_sort_bitwise, 2083 bool old_sort_bitwise,
2079 bool new_sort_bitwise, 2084 bool new_sort_bitwise,
2085 bool old_recovery_deletes,
2086 bool new_recovery_deletes,
2080 const struct ceph_pg *pgid) 2087 const struct ceph_pg *pgid)
2081{ 2088{
2082 return !osds_equal(old_acting, new_acting) || 2089 return !osds_equal(old_acting, new_acting) ||
@@ -2084,7 +2091,8 @@ bool ceph_is_new_interval(const struct ceph_osds *old_acting,
2084 old_size != new_size || 2091 old_size != new_size ||
2085 old_min_size != new_min_size || 2092 old_min_size != new_min_size ||
2086 ceph_pg_is_split(pgid, old_pg_num, new_pg_num) || 2093 ceph_pg_is_split(pgid, old_pg_num, new_pg_num) ||
2087 old_sort_bitwise != new_sort_bitwise; 2094 old_sort_bitwise != new_sort_bitwise ||
2095 old_recovery_deletes != new_recovery_deletes;
2088} 2096}
2089 2097
2090static int calc_pg_rank(int osd, const struct ceph_osds *acting) 2098static int calc_pg_rank(int osd, const struct ceph_osds *acting)
@@ -2300,10 +2308,17 @@ static u32 raw_pg_to_pps(struct ceph_pg_pool_info *pi,
2300 } 2308 }
2301} 2309}
2302 2310
2311/*
2312 * Magic value used for a "default" fallback choose_args, used if the
2313 * crush_choose_arg_map passed to do_crush() does not exist. If this
2314 * also doesn't exist, fall back to canonical weights.
2315 */
2316#define CEPH_DEFAULT_CHOOSE_ARGS -1
2317
2303static int do_crush(struct ceph_osdmap *map, int ruleno, int x, 2318static int do_crush(struct ceph_osdmap *map, int ruleno, int x,
2304 int *result, int result_max, 2319 int *result, int result_max,
2305 const __u32 *weight, int weight_max, 2320 const __u32 *weight, int weight_max,
2306 u64 choose_args_index) 2321 s64 choose_args_index)
2307{ 2322{
2308 struct crush_choose_arg_map *arg_map; 2323 struct crush_choose_arg_map *arg_map;
2309 int r; 2324 int r;
@@ -2312,6 +2327,9 @@ static int do_crush(struct ceph_osdmap *map, int ruleno, int x,
2312 2327
2313 arg_map = lookup_choose_arg_map(&map->crush->choose_args, 2328 arg_map = lookup_choose_arg_map(&map->crush->choose_args,
2314 choose_args_index); 2329 choose_args_index);
2330 if (!arg_map)
2331 arg_map = lookup_choose_arg_map(&map->crush->choose_args,
2332 CEPH_DEFAULT_CHOOSE_ARGS);
2315 2333
2316 mutex_lock(&map->crush_workspace_mutex); 2334 mutex_lock(&map->crush_workspace_mutex);
2317 r = crush_do_rule(map->crush, ruleno, x, result, result_max, 2335 r = crush_do_rule(map->crush, ruleno, x, result, result_max,
@@ -2422,40 +2440,23 @@ static void apply_upmap(struct ceph_osdmap *osdmap,
2422 for (i = 0; i < pg->pg_upmap.len; i++) 2440 for (i = 0; i < pg->pg_upmap.len; i++)
2423 raw->osds[i] = pg->pg_upmap.osds[i]; 2441 raw->osds[i] = pg->pg_upmap.osds[i];
2424 raw->size = pg->pg_upmap.len; 2442 raw->size = pg->pg_upmap.len;
2425 return; 2443 /* check and apply pg_upmap_items, if any */
2426 } 2444 }
2427 2445
2428 pg = lookup_pg_mapping(&osdmap->pg_upmap_items, pgid); 2446 pg = lookup_pg_mapping(&osdmap->pg_upmap_items, pgid);
2429 if (pg) { 2447 if (pg) {
2430 /* 2448 for (i = 0; i < raw->size; i++) {
2431 * Note: this approach does not allow a bidirectional swap, 2449 for (j = 0; j < pg->pg_upmap_items.len; j++) {
2432 * e.g., [[1,2],[2,1]] applied to [0,1,2] -> [0,2,1]. 2450 int from = pg->pg_upmap_items.from_to[j][0];
2433 */ 2451 int to = pg->pg_upmap_items.from_to[j][1];
2434 for (i = 0; i < pg->pg_upmap_items.len; i++) { 2452
2435 int from = pg->pg_upmap_items.from_to[i][0]; 2453 if (from == raw->osds[i]) {
2436 int to = pg->pg_upmap_items.from_to[i][1]; 2454 if (!(to != CRUSH_ITEM_NONE &&
2437 int pos = -1; 2455 to < osdmap->max_osd &&
2438 bool exists = false; 2456 osdmap->osd_weight[to] == 0))
2439 2457 raw->osds[i] = to;
2440 /* make sure replacement doesn't already appear */
2441 for (j = 0; j < raw->size; j++) {
2442 int osd = raw->osds[j];
2443
2444 if (osd == to) {
2445 exists = true;
2446 break; 2458 break;
2447 } 2459 }
2448 /* ignore mapping if target is marked out */
2449 if (osd == from && pos < 0 &&
2450 !(to != CRUSH_ITEM_NONE &&
2451 to < osdmap->max_osd &&
2452 osdmap->osd_weight[to] == 0)) {
2453 pos = j;
2454 }
2455 }
2456 if (!exists && pos >= 0) {
2457 raw->osds[pos] = to;
2458 return;
2459 } 2460 }
2460 } 2461 }
2461 } 2462 }
diff --git a/net/core/datagram.c b/net/core/datagram.c
index ee5647bd91b3..a21ca8dee5ea 100644
--- a/net/core/datagram.c
+++ b/net/core/datagram.c
@@ -169,14 +169,20 @@ struct sk_buff *__skb_try_recv_from_queue(struct sock *sk,
169 int *peeked, int *off, int *err, 169 int *peeked, int *off, int *err,
170 struct sk_buff **last) 170 struct sk_buff **last)
171{ 171{
172 bool peek_at_off = false;
172 struct sk_buff *skb; 173 struct sk_buff *skb;
173 int _off = *off; 174 int _off = 0;
175
176 if (unlikely(flags & MSG_PEEK && *off >= 0)) {
177 peek_at_off = true;
178 _off = *off;
179 }
174 180
175 *last = queue->prev; 181 *last = queue->prev;
176 skb_queue_walk(queue, skb) { 182 skb_queue_walk(queue, skb) {
177 if (flags & MSG_PEEK) { 183 if (flags & MSG_PEEK) {
178 if (_off >= skb->len && (skb->len || _off || 184 if (peek_at_off && _off >= skb->len &&
179 skb->peeked)) { 185 (_off || skb->peeked)) {
180 _off -= skb->len; 186 _off -= skb->len;
181 continue; 187 continue;
182 } 188 }
diff --git a/net/core/dev.c b/net/core/dev.c
index 8515f8fe0460..ce15a06d5558 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -2739,7 +2739,7 @@ static inline bool skb_needs_check(struct sk_buff *skb, bool tx_path)
2739{ 2739{
2740 if (tx_path) 2740 if (tx_path)
2741 return skb->ip_summed != CHECKSUM_PARTIAL && 2741 return skb->ip_summed != CHECKSUM_PARTIAL &&
2742 skb->ip_summed != CHECKSUM_NONE; 2742 skb->ip_summed != CHECKSUM_UNNECESSARY;
2743 2743
2744 return skb->ip_summed == CHECKSUM_NONE; 2744 return skb->ip_summed == CHECKSUM_NONE;
2745} 2745}
diff --git a/net/core/dev_ioctl.c b/net/core/dev_ioctl.c
index 82fd4c9c4a1b..709a4e6fb447 100644
--- a/net/core/dev_ioctl.c
+++ b/net/core/dev_ioctl.c
@@ -28,6 +28,7 @@ static int dev_ifname(struct net *net, struct ifreq __user *arg)
28 28
29 if (copy_from_user(&ifr, arg, sizeof(struct ifreq))) 29 if (copy_from_user(&ifr, arg, sizeof(struct ifreq)))
30 return -EFAULT; 30 return -EFAULT;
31 ifr.ifr_name[IFNAMSIZ-1] = 0;
31 32
32 error = netdev_get_name(net, ifr.ifr_name, ifr.ifr_ifindex); 33 error = netdev_get_name(net, ifr.ifr_name, ifr.ifr_ifindex);
33 if (error) 34 if (error)
@@ -262,6 +263,8 @@ static int dev_ifsioc(struct net *net, struct ifreq *ifr, unsigned int cmd)
262 return dev_set_mtu(dev, ifr->ifr_mtu); 263 return dev_set_mtu(dev, ifr->ifr_mtu);
263 264
264 case SIOCSIFHWADDR: 265 case SIOCSIFHWADDR:
266 if (dev->addr_len > sizeof(struct sockaddr))
267 return -EINVAL;
265 return dev_set_mac_address(dev, &ifr->ifr_hwaddr); 268 return dev_set_mac_address(dev, &ifr->ifr_hwaddr);
266 269
267 case SIOCSIFHWBROADCAST: 270 case SIOCSIFHWBROADCAST:
@@ -424,6 +427,8 @@ int dev_ioctl(struct net *net, unsigned int cmd, void __user *arg)
424 if (copy_from_user(&iwr, arg, sizeof(iwr))) 427 if (copy_from_user(&iwr, arg, sizeof(iwr)))
425 return -EFAULT; 428 return -EFAULT;
426 429
430 iwr.ifr_name[sizeof(iwr.ifr_name) - 1] = 0;
431
427 return wext_handle_ioctl(net, &iwr, cmd, arg); 432 return wext_handle_ioctl(net, &iwr, cmd, arg);
428 } 433 }
429 434
diff --git a/net/core/fib_rules.c b/net/core/fib_rules.c
index a0093e1b0235..fdcb1bcd2afa 100644
--- a/net/core/fib_rules.c
+++ b/net/core/fib_rules.c
@@ -400,6 +400,7 @@ int fib_nl_newrule(struct sk_buff *skb, struct nlmsghdr *nlh,
400 err = -ENOMEM; 400 err = -ENOMEM;
401 goto errout; 401 goto errout;
402 } 402 }
403 refcount_set(&rule->refcnt, 1);
403 rule->fr_net = net; 404 rule->fr_net = net;
404 405
405 rule->pref = tb[FRA_PRIORITY] ? nla_get_u32(tb[FRA_PRIORITY]) 406 rule->pref = tb[FRA_PRIORITY] ? nla_get_u32(tb[FRA_PRIORITY])
@@ -517,8 +518,6 @@ int fib_nl_newrule(struct sk_buff *skb, struct nlmsghdr *nlh,
517 last = r; 518 last = r;
518 } 519 }
519 520
520 refcount_set(&rule->refcnt, 1);
521
522 if (last) 521 if (last)
523 list_add_rcu(&rule->list, &last->list); 522 list_add_rcu(&rule->list, &last->list);
524 else 523 else
diff --git a/net/core/filter.c b/net/core/filter.c
index c7f737058d89..6280a602604c 100644
--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -2248,7 +2248,7 @@ static int bpf_skb_adjust_net(struct sk_buff *skb, s32 len_diff)
2248 bpf_skb_net_grow(skb, len_diff_abs); 2248 bpf_skb_net_grow(skb, len_diff_abs);
2249 2249
2250 bpf_compute_data_end(skb); 2250 bpf_compute_data_end(skb);
2251 return 0; 2251 return ret;
2252} 2252}
2253 2253
2254BPF_CALL_4(bpf_skb_adjust_room, struct sk_buff *, skb, s32, len_diff, 2254BPF_CALL_4(bpf_skb_adjust_room, struct sk_buff *, skb, s32, len_diff,
@@ -3505,6 +3505,7 @@ static u32 bpf_convert_ctx_access(enum bpf_access_type type,
3505 bpf_target_off(struct sk_buff, tc_index, 2, 3505 bpf_target_off(struct sk_buff, tc_index, 2,
3506 target_size)); 3506 target_size));
3507#else 3507#else
3508 *target_size = 2;
3508 if (type == BPF_WRITE) 3509 if (type == BPF_WRITE)
3509 *insn++ = BPF_MOV64_REG(si->dst_reg, si->dst_reg); 3510 *insn++ = BPF_MOV64_REG(si->dst_reg, si->dst_reg);
3510 else 3511 else
@@ -3520,6 +3521,7 @@ static u32 bpf_convert_ctx_access(enum bpf_access_type type,
3520 *insn++ = BPF_JMP_IMM(BPF_JGE, si->dst_reg, MIN_NAPI_ID, 1); 3521 *insn++ = BPF_JMP_IMM(BPF_JGE, si->dst_reg, MIN_NAPI_ID, 1);
3521 *insn++ = BPF_MOV64_IMM(si->dst_reg, 0); 3522 *insn++ = BPF_MOV64_IMM(si->dst_reg, 0);
3522#else 3523#else
3524 *target_size = 4;
3523 *insn++ = BPF_MOV64_IMM(si->dst_reg, 0); 3525 *insn++ = BPF_MOV64_IMM(si->dst_reg, 0);
3524#endif 3526#endif
3525 break; 3527 break;
diff --git a/net/core/netpoll.c b/net/core/netpoll.c
index d3408a693166..912731bed7b7 100644
--- a/net/core/netpoll.c
+++ b/net/core/netpoll.c
@@ -277,7 +277,7 @@ static void zap_completion_queue(void)
277 struct sk_buff *skb = clist; 277 struct sk_buff *skb = clist;
278 clist = clist->next; 278 clist = clist->next;
279 if (!skb_irq_freeable(skb)) { 279 if (!skb_irq_freeable(skb)) {
280 refcount_inc(&skb->users); 280 refcount_set(&skb->users, 1);
281 dev_kfree_skb_any(skb); /* put this one back */ 281 dev_kfree_skb_any(skb); /* put this one back */
282 } else { 282 } else {
283 __kfree_skb(skb); 283 __kfree_skb(skb);
@@ -666,7 +666,7 @@ int netpoll_setup(struct netpoll *np)
666 int err; 666 int err;
667 667
668 rtnl_lock(); 668 rtnl_lock();
669 if (np->dev_name) { 669 if (np->dev_name[0]) {
670 struct net *net = current->nsproxy->net_ns; 670 struct net *net = current->nsproxy->net_ns;
671 ndev = __dev_get_by_name(net, np->dev_name); 671 ndev = __dev_get_by_name(net, np->dev_name);
672 } 672 }
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index d1ba90980be1..9201e3621351 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -2031,7 +2031,8 @@ static int do_setlink(const struct sk_buff *skb,
2031 struct sockaddr *sa; 2031 struct sockaddr *sa;
2032 int len; 2032 int len;
2033 2033
2034 len = sizeof(sa_family_t) + dev->addr_len; 2034 len = sizeof(sa_family_t) + max_t(size_t, dev->addr_len,
2035 sizeof(*sa));
2035 sa = kmalloc(len, GFP_KERNEL); 2036 sa = kmalloc(len, GFP_KERNEL);
2036 if (!sa) { 2037 if (!sa) {
2037 err = -ENOMEM; 2038 err = -ENOMEM;
@@ -4241,6 +4242,7 @@ static int rtnetlink_event(struct notifier_block *this, unsigned long event, voi
4241 4242
4242 switch (event) { 4243 switch (event) {
4243 case NETDEV_REBOOT: 4244 case NETDEV_REBOOT:
4245 case NETDEV_CHANGEADDR:
4244 case NETDEV_CHANGENAME: 4246 case NETDEV_CHANGENAME:
4245 case NETDEV_FEAT_CHANGE: 4247 case NETDEV_FEAT_CHANGE:
4246 case NETDEV_BONDING_FAILOVER: 4248 case NETDEV_BONDING_FAILOVER:
diff --git a/net/dccp/feat.c b/net/dccp/feat.c
index 1704948e6a12..f227f002c73d 100644
--- a/net/dccp/feat.c
+++ b/net/dccp/feat.c
@@ -1471,9 +1471,12 @@ int dccp_feat_init(struct sock *sk)
1471 * singleton values (which always leads to failure). 1471 * singleton values (which always leads to failure).
1472 * These settings can still (later) be overridden via sockopts. 1472 * These settings can still (later) be overridden via sockopts.
1473 */ 1473 */
1474 if (ccid_get_builtin_ccids(&tx.val, &tx.len) || 1474 if (ccid_get_builtin_ccids(&tx.val, &tx.len))
1475 ccid_get_builtin_ccids(&rx.val, &rx.len))
1476 return -ENOBUFS; 1475 return -ENOBUFS;
1476 if (ccid_get_builtin_ccids(&rx.val, &rx.len)) {
1477 kfree(tx.val);
1478 return -ENOBUFS;
1479 }
1477 1480
1478 if (!dccp_feat_prefer(sysctl_dccp_tx_ccid, tx.val, tx.len) || 1481 if (!dccp_feat_prefer(sysctl_dccp_tx_ccid, tx.val, tx.len) ||
1479 !dccp_feat_prefer(sysctl_dccp_rx_ccid, rx.val, rx.len)) 1482 !dccp_feat_prefer(sysctl_dccp_rx_ccid, rx.val, rx.len))
diff --git a/net/dccp/input.c b/net/dccp/input.c
index 4a05d7876850..fa6be9750bb4 100644
--- a/net/dccp/input.c
+++ b/net/dccp/input.c
@@ -126,7 +126,7 @@ static int dccp_rcv_closereq(struct sock *sk, struct sk_buff *skb)
126 126
127static u16 dccp_reset_code_convert(const u8 code) 127static u16 dccp_reset_code_convert(const u8 code)
128{ 128{
129 const u16 error_code[] = { 129 static const u16 error_code[] = {
130 [DCCP_RESET_CODE_CLOSED] = 0, /* normal termination */ 130 [DCCP_RESET_CODE_CLOSED] = 0, /* normal termination */
131 [DCCP_RESET_CODE_UNSPECIFIED] = 0, /* nothing known */ 131 [DCCP_RESET_CODE_UNSPECIFIED] = 0, /* nothing known */
132 [DCCP_RESET_CODE_ABORTED] = ECONNRESET, 132 [DCCP_RESET_CODE_ABORTED] = ECONNRESET,
diff --git a/net/dccp/ipv4.c b/net/dccp/ipv4.c
index f85d901f4e3f..1b202f16531f 100644
--- a/net/dccp/ipv4.c
+++ b/net/dccp/ipv4.c
@@ -631,6 +631,7 @@ int dccp_v4_conn_request(struct sock *sk, struct sk_buff *skb)
631 goto drop_and_free; 631 goto drop_and_free;
632 632
633 inet_csk_reqsk_queue_hash_add(sk, req, DCCP_TIMEOUT_INIT); 633 inet_csk_reqsk_queue_hash_add(sk, req, DCCP_TIMEOUT_INIT);
634 reqsk_put(req);
634 return 0; 635 return 0;
635 636
636drop_and_free: 637drop_and_free:
diff --git a/net/dccp/ipv6.c b/net/dccp/ipv6.c
index c376af5bfdfb..1b58eac8aad3 100644
--- a/net/dccp/ipv6.c
+++ b/net/dccp/ipv6.c
@@ -380,6 +380,7 @@ static int dccp_v6_conn_request(struct sock *sk, struct sk_buff *skb)
380 goto drop_and_free; 380 goto drop_and_free;
381 381
382 inet_csk_reqsk_queue_hash_add(sk, req, DCCP_TIMEOUT_INIT); 382 inet_csk_reqsk_queue_hash_add(sk, req, DCCP_TIMEOUT_INIT);
383 reqsk_put(req);
383 return 0; 384 return 0;
384 385
385drop_and_free: 386drop_and_free:
diff --git a/net/dccp/proto.c b/net/dccp/proto.c
index 9fe25bf63296..b68168fcc06a 100644
--- a/net/dccp/proto.c
+++ b/net/dccp/proto.c
@@ -24,6 +24,7 @@
24#include <net/checksum.h> 24#include <net/checksum.h>
25 25
26#include <net/inet_sock.h> 26#include <net/inet_sock.h>
27#include <net/inet_common.h>
27#include <net/sock.h> 28#include <net/sock.h>
28#include <net/xfrm.h> 29#include <net/xfrm.h>
29 30
@@ -170,6 +171,15 @@ const char *dccp_packet_name(const int type)
170 171
171EXPORT_SYMBOL_GPL(dccp_packet_name); 172EXPORT_SYMBOL_GPL(dccp_packet_name);
172 173
174static void dccp_sk_destruct(struct sock *sk)
175{
176 struct dccp_sock *dp = dccp_sk(sk);
177
178 ccid_hc_tx_delete(dp->dccps_hc_tx_ccid, sk);
179 dp->dccps_hc_tx_ccid = NULL;
180 inet_sock_destruct(sk);
181}
182
173int dccp_init_sock(struct sock *sk, const __u8 ctl_sock_initialized) 183int dccp_init_sock(struct sock *sk, const __u8 ctl_sock_initialized)
174{ 184{
175 struct dccp_sock *dp = dccp_sk(sk); 185 struct dccp_sock *dp = dccp_sk(sk);
@@ -179,6 +189,7 @@ int dccp_init_sock(struct sock *sk, const __u8 ctl_sock_initialized)
179 icsk->icsk_syn_retries = sysctl_dccp_request_retries; 189 icsk->icsk_syn_retries = sysctl_dccp_request_retries;
180 sk->sk_state = DCCP_CLOSED; 190 sk->sk_state = DCCP_CLOSED;
181 sk->sk_write_space = dccp_write_space; 191 sk->sk_write_space = dccp_write_space;
192 sk->sk_destruct = dccp_sk_destruct;
182 icsk->icsk_sync_mss = dccp_sync_mss; 193 icsk->icsk_sync_mss = dccp_sync_mss;
183 dp->dccps_mss_cache = 536; 194 dp->dccps_mss_cache = 536;
184 dp->dccps_rate_last = jiffies; 195 dp->dccps_rate_last = jiffies;
@@ -201,10 +212,7 @@ void dccp_destroy_sock(struct sock *sk)
201{ 212{
202 struct dccp_sock *dp = dccp_sk(sk); 213 struct dccp_sock *dp = dccp_sk(sk);
203 214
204 /* 215 __skb_queue_purge(&sk->sk_write_queue);
205 * DCCP doesn't use sk_write_queue, just sk_send_head
206 * for retransmissions
207 */
208 if (sk->sk_send_head != NULL) { 216 if (sk->sk_send_head != NULL) {
209 kfree_skb(sk->sk_send_head); 217 kfree_skb(sk->sk_send_head);
210 sk->sk_send_head = NULL; 218 sk->sk_send_head = NULL;
@@ -222,8 +230,7 @@ void dccp_destroy_sock(struct sock *sk)
222 dp->dccps_hc_rx_ackvec = NULL; 230 dp->dccps_hc_rx_ackvec = NULL;
223 } 231 }
224 ccid_hc_rx_delete(dp->dccps_hc_rx_ccid, sk); 232 ccid_hc_rx_delete(dp->dccps_hc_rx_ccid, sk);
225 ccid_hc_tx_delete(dp->dccps_hc_tx_ccid, sk); 233 dp->dccps_hc_rx_ccid = NULL;
226 dp->dccps_hc_rx_ccid = dp->dccps_hc_tx_ccid = NULL;
227 234
228 /* clean up feature negotiation state */ 235 /* clean up feature negotiation state */
229 dccp_feat_list_purge(&dp->dccps_featneg); 236 dccp_feat_list_purge(&dp->dccps_featneg);
diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c
index 56e46090526b..c442051d5a55 100644
--- a/net/dsa/dsa2.c
+++ b/net/dsa/dsa2.c
@@ -509,21 +509,22 @@ static int dsa_cpu_parse(struct dsa_port *port, u32 index,
509 dst->cpu_dp->netdev = ethernet_dev; 509 dst->cpu_dp->netdev = ethernet_dev;
510 } 510 }
511 511
512 /* Initialize cpu_port_mask now for drv->setup()
513 * to have access to a correct value, just like what
514 * net/dsa/dsa.c::dsa_switch_setup_one does.
515 */
516 ds->cpu_port_mask |= BIT(index);
517
512 tag_protocol = ds->ops->get_tag_protocol(ds); 518 tag_protocol = ds->ops->get_tag_protocol(ds);
513 dst->tag_ops = dsa_resolve_tag_protocol(tag_protocol); 519 dst->tag_ops = dsa_resolve_tag_protocol(tag_protocol);
514 if (IS_ERR(dst->tag_ops)) { 520 if (IS_ERR(dst->tag_ops)) {
515 dev_warn(ds->dev, "No tagger for this switch\n"); 521 dev_warn(ds->dev, "No tagger for this switch\n");
522 ds->cpu_port_mask &= ~BIT(index);
516 return PTR_ERR(dst->tag_ops); 523 return PTR_ERR(dst->tag_ops);
517 } 524 }
518 525
519 dst->rcv = dst->tag_ops->rcv; 526 dst->rcv = dst->tag_ops->rcv;
520 527
521 /* Initialize cpu_port_mask now for drv->setup()
522 * to have access to a correct value, just like what
523 * net/dsa/dsa.c::dsa_switch_setup_one does.
524 */
525 ds->cpu_port_mask |= BIT(index);
526
527 return 0; 528 return 0;
528} 529}
529 530
diff --git a/net/dsa/tag_ksz.c b/net/dsa/tag_ksz.c
index fab41de8e983..de66ca8e6201 100644
--- a/net/dsa/tag_ksz.c
+++ b/net/dsa/tag_ksz.c
@@ -42,6 +42,9 @@ static struct sk_buff *ksz_xmit(struct sk_buff *skb, struct net_device *dev)
42 padlen = (skb->len >= ETH_ZLEN) ? 0 : ETH_ZLEN - skb->len; 42 padlen = (skb->len >= ETH_ZLEN) ? 0 : ETH_ZLEN - skb->len;
43 43
44 if (skb_tailroom(skb) >= padlen + KSZ_INGRESS_TAG_LEN) { 44 if (skb_tailroom(skb) >= padlen + KSZ_INGRESS_TAG_LEN) {
45 if (skb_put_padto(skb, skb->len + padlen))
46 return NULL;
47
45 nskb = skb; 48 nskb = skb;
46 } else { 49 } else {
47 nskb = alloc_skb(NET_IP_ALIGN + skb->len + 50 nskb = alloc_skb(NET_IP_ALIGN + skb->len +
@@ -56,13 +59,15 @@ static struct sk_buff *ksz_xmit(struct sk_buff *skb, struct net_device *dev)
56 skb_set_transport_header(nskb, 59 skb_set_transport_header(nskb,
57 skb_transport_header(skb) - skb->head); 60 skb_transport_header(skb) - skb->head);
58 skb_copy_and_csum_dev(skb, skb_put(nskb, skb->len)); 61 skb_copy_and_csum_dev(skb, skb_put(nskb, skb->len));
62
63 if (skb_put_padto(nskb, nskb->len + padlen)) {
64 kfree_skb(nskb);
65 return NULL;
66 }
67
59 kfree_skb(skb); 68 kfree_skb(skb);
60 } 69 }
61 70
62 /* skb is freed when it fails */
63 if (skb_put_padto(nskb, nskb->len + padlen))
64 return NULL;
65
66 tag = skb_put(nskb, KSZ_INGRESS_TAG_LEN); 71 tag = skb_put(nskb, KSZ_INGRESS_TAG_LEN);
67 tag[0] = 0; 72 tag[0] = 0;
68 tag[1] = 1 << p->dp->index; /* destination port */ 73 tag[1] = 1 << p->dp->index; /* destination port */
diff --git a/net/ipv4/af_inet.c b/net/ipv4/af_inet.c
index 76c2077c3f5b..2e548eca3489 100644
--- a/net/ipv4/af_inet.c
+++ b/net/ipv4/af_inet.c
@@ -1731,6 +1731,13 @@ static __net_init int inet_init_net(struct net *net)
1731 net->ipv4.sysctl_ip_prot_sock = PROT_SOCK; 1731 net->ipv4.sysctl_ip_prot_sock = PROT_SOCK;
1732#endif 1732#endif
1733 1733
1734 /* Some igmp sysctl, whose values are always used */
1735 net->ipv4.sysctl_igmp_max_memberships = 20;
1736 net->ipv4.sysctl_igmp_max_msf = 10;
1737 /* IGMP reports for link-local multicast groups are enabled by default */
1738 net->ipv4.sysctl_igmp_llm_reports = 1;
1739 net->ipv4.sysctl_igmp_qrv = 2;
1740
1734 return 0; 1741 return 0;
1735} 1742}
1736 1743
diff --git a/net/ipv4/cipso_ipv4.c b/net/ipv4/cipso_ipv4.c
index c4c6e1969ed0..2ae8f54cb321 100644
--- a/net/ipv4/cipso_ipv4.c
+++ b/net/ipv4/cipso_ipv4.c
@@ -1523,9 +1523,17 @@ unsigned char *cipso_v4_optptr(const struct sk_buff *skb)
1523 int taglen; 1523 int taglen;
1524 1524
1525 for (optlen = iph->ihl*4 - sizeof(struct iphdr); optlen > 0; ) { 1525 for (optlen = iph->ihl*4 - sizeof(struct iphdr); optlen > 0; ) {
1526 if (optptr[0] == IPOPT_CIPSO) 1526 switch (optptr[0]) {
1527 case IPOPT_CIPSO:
1527 return optptr; 1528 return optptr;
1528 taglen = optptr[1]; 1529 case IPOPT_END:
1530 return NULL;
1531 case IPOPT_NOOP:
1532 taglen = 1;
1533 break;
1534 default:
1535 taglen = optptr[1];
1536 }
1529 optlen -= taglen; 1537 optlen -= taglen;
1530 optptr += taglen; 1538 optptr += taglen;
1531 } 1539 }
diff --git a/net/ipv4/fib_frontend.c b/net/ipv4/fib_frontend.c
index 4e678fa892dd..044d2a159a3c 100644
--- a/net/ipv4/fib_frontend.c
+++ b/net/ipv4/fib_frontend.c
@@ -1334,13 +1334,14 @@ static struct pernet_operations fib_net_ops = {
1334 1334
1335void __init ip_fib_init(void) 1335void __init ip_fib_init(void)
1336{ 1336{
1337 rtnl_register(PF_INET, RTM_NEWROUTE, inet_rtm_newroute, NULL, NULL); 1337 fib_trie_init();
1338 rtnl_register(PF_INET, RTM_DELROUTE, inet_rtm_delroute, NULL, NULL);
1339 rtnl_register(PF_INET, RTM_GETROUTE, NULL, inet_dump_fib, NULL);
1340 1338
1341 register_pernet_subsys(&fib_net_ops); 1339 register_pernet_subsys(&fib_net_ops);
1340
1342 register_netdevice_notifier(&fib_netdev_notifier); 1341 register_netdevice_notifier(&fib_netdev_notifier);
1343 register_inetaddr_notifier(&fib_inetaddr_notifier); 1342 register_inetaddr_notifier(&fib_inetaddr_notifier);
1344 1343
1345 fib_trie_init(); 1344 rtnl_register(PF_INET, RTM_NEWROUTE, inet_rtm_newroute, NULL, NULL);
1345 rtnl_register(PF_INET, RTM_DELROUTE, inet_rtm_delroute, NULL, NULL);
1346 rtnl_register(PF_INET, RTM_GETROUTE, NULL, inet_dump_fib, NULL);
1346} 1347}
diff --git a/net/ipv4/fib_semantics.c b/net/ipv4/fib_semantics.c
index 222100103808..ec3a9ce281a6 100644
--- a/net/ipv4/fib_semantics.c
+++ b/net/ipv4/fib_semantics.c
@@ -1083,15 +1083,17 @@ struct fib_info *fib_create_info(struct fib_config *cfg,
1083 fi = kzalloc(sizeof(*fi)+nhs*sizeof(struct fib_nh), GFP_KERNEL); 1083 fi = kzalloc(sizeof(*fi)+nhs*sizeof(struct fib_nh), GFP_KERNEL);
1084 if (!fi) 1084 if (!fi)
1085 goto failure; 1085 goto failure;
1086 fib_info_cnt++;
1087 if (cfg->fc_mx) { 1086 if (cfg->fc_mx) {
1088 fi->fib_metrics = kzalloc(sizeof(*fi->fib_metrics), GFP_KERNEL); 1087 fi->fib_metrics = kzalloc(sizeof(*fi->fib_metrics), GFP_KERNEL);
1089 if (!fi->fib_metrics) 1088 if (unlikely(!fi->fib_metrics)) {
1090 goto failure; 1089 kfree(fi);
1090 return ERR_PTR(err);
1091 }
1091 atomic_set(&fi->fib_metrics->refcnt, 1); 1092 atomic_set(&fi->fib_metrics->refcnt, 1);
1092 } else 1093 } else {
1093 fi->fib_metrics = (struct dst_metrics *)&dst_default_metrics; 1094 fi->fib_metrics = (struct dst_metrics *)&dst_default_metrics;
1094 1095 }
1096 fib_info_cnt++;
1095 fi->fib_net = net; 1097 fi->fib_net = net;
1096 fi->fib_protocol = cfg->fc_protocol; 1098 fi->fib_protocol = cfg->fc_protocol;
1097 fi->fib_scope = cfg->fc_scope; 1099 fi->fib_scope = cfg->fc_scope;
@@ -1452,7 +1454,7 @@ static int call_fib_nh_notifiers(struct fib_nh *fib_nh,
1452 return call_fib_notifiers(dev_net(fib_nh->nh_dev), event_type, 1454 return call_fib_notifiers(dev_net(fib_nh->nh_dev), event_type,
1453 &info.info); 1455 &info.info);
1454 case FIB_EVENT_NH_DEL: 1456 case FIB_EVENT_NH_DEL:
1455 if ((IN_DEV_IGNORE_ROUTES_WITH_LINKDOWN(in_dev) && 1457 if ((in_dev && IN_DEV_IGNORE_ROUTES_WITH_LINKDOWN(in_dev) &&
1456 fib_nh->nh_flags & RTNH_F_LINKDOWN) || 1458 fib_nh->nh_flags & RTNH_F_LINKDOWN) ||
1457 (fib_nh->nh_flags & RTNH_F_DEAD)) 1459 (fib_nh->nh_flags & RTNH_F_DEAD))
1458 return call_fib_notifiers(dev_net(fib_nh->nh_dev), 1460 return call_fib_notifiers(dev_net(fib_nh->nh_dev),
diff --git a/net/ipv4/fou.c b/net/ipv4/fou.c
index 8e0257d01200..1540db65241a 100644
--- a/net/ipv4/fou.c
+++ b/net/ipv4/fou.c
@@ -450,6 +450,7 @@ out_unlock:
450out: 450out:
451 NAPI_GRO_CB(skb)->flush |= flush; 451 NAPI_GRO_CB(skb)->flush |= flush;
452 skb_gro_remcsum_cleanup(skb, &grc); 452 skb_gro_remcsum_cleanup(skb, &grc);
453 skb->remcsum_offload = 0;
453 454
454 return pp; 455 return pp;
455} 456}
diff --git a/net/ipv4/igmp.c b/net/ipv4/igmp.c
index 28f14afd0dd3..caf2f1101d02 100644
--- a/net/ipv4/igmp.c
+++ b/net/ipv4/igmp.c
@@ -1007,10 +1007,18 @@ int igmp_rcv(struct sk_buff *skb)
1007{ 1007{
1008 /* This basically follows the spec line by line -- see RFC1112 */ 1008 /* This basically follows the spec line by line -- see RFC1112 */
1009 struct igmphdr *ih; 1009 struct igmphdr *ih;
1010 struct in_device *in_dev = __in_dev_get_rcu(skb->dev); 1010 struct net_device *dev = skb->dev;
1011 struct in_device *in_dev;
1011 int len = skb->len; 1012 int len = skb->len;
1012 bool dropped = true; 1013 bool dropped = true;
1013 1014
1015 if (netif_is_l3_master(dev)) {
1016 dev = dev_get_by_index_rcu(dev_net(dev), IPCB(skb)->iif);
1017 if (!dev)
1018 goto drop;
1019 }
1020
1021 in_dev = __in_dev_get_rcu(dev);
1014 if (!in_dev) 1022 if (!in_dev)
1015 goto drop; 1023 goto drop;
1016 1024
@@ -2974,12 +2982,6 @@ static int __net_init igmp_net_init(struct net *net)
2974 goto out_sock; 2982 goto out_sock;
2975 } 2983 }
2976 2984
2977 /* Sysctl initialization */
2978 net->ipv4.sysctl_igmp_max_memberships = 20;
2979 net->ipv4.sysctl_igmp_max_msf = 10;
2980 /* IGMP reports for link-local multicast groups are enabled by default */
2981 net->ipv4.sysctl_igmp_llm_reports = 1;
2982 net->ipv4.sysctl_igmp_qrv = 2;
2983 return 0; 2985 return 0;
2984 2986
2985out_sock: 2987out_sock:
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c
index 7eb252dcecee..e153c40c2436 100644
--- a/net/ipv4/ip_output.c
+++ b/net/ipv4/ip_output.c
@@ -599,6 +599,7 @@ int ip_do_fragment(struct net *net, struct sock *sk, struct sk_buff *skb,
599 hlen = iph->ihl * 4; 599 hlen = iph->ihl * 4;
600 mtu = mtu - hlen; /* Size of data space */ 600 mtu = mtu - hlen; /* Size of data space */
601 IPCB(skb)->flags |= IPSKB_FRAG_COMPLETE; 601 IPCB(skb)->flags |= IPSKB_FRAG_COMPLETE;
602 ll_rs = LL_RESERVED_SPACE(rt->dst.dev);
602 603
603 /* When frag_list is given, use it. First, check its validity: 604 /* When frag_list is given, use it. First, check its validity:
604 * some transformers could create wrong frag_list or break existing 605 * some transformers could create wrong frag_list or break existing
@@ -614,14 +615,15 @@ int ip_do_fragment(struct net *net, struct sock *sk, struct sk_buff *skb,
614 if (first_len - hlen > mtu || 615 if (first_len - hlen > mtu ||
615 ((first_len - hlen) & 7) || 616 ((first_len - hlen) & 7) ||
616 ip_is_fragment(iph) || 617 ip_is_fragment(iph) ||
617 skb_cloned(skb)) 618 skb_cloned(skb) ||
619 skb_headroom(skb) < ll_rs)
618 goto slow_path; 620 goto slow_path;
619 621
620 skb_walk_frags(skb, frag) { 622 skb_walk_frags(skb, frag) {
621 /* Correct geometry. */ 623 /* Correct geometry. */
622 if (frag->len > mtu || 624 if (frag->len > mtu ||
623 ((frag->len & 7) && frag->next) || 625 ((frag->len & 7) && frag->next) ||
624 skb_headroom(frag) < hlen) 626 skb_headroom(frag) < hlen + ll_rs)
625 goto slow_path_clean; 627 goto slow_path_clean;
626 628
627 /* Partially cloned skb? */ 629 /* Partially cloned skb? */
@@ -711,8 +713,6 @@ slow_path:
711 left = skb->len - hlen; /* Space per frame */ 713 left = skb->len - hlen; /* Space per frame */
712 ptr = hlen; /* Where to start from */ 714 ptr = hlen; /* Where to start from */
713 715
714 ll_rs = LL_RESERVED_SPACE(rt->dst.dev);
715
716 /* 716 /*
717 * Fragment the datagram. 717 * Fragment the datagram.
718 */ 718 */
@@ -965,11 +965,12 @@ static int __ip_append_data(struct sock *sk,
965 csummode = CHECKSUM_PARTIAL; 965 csummode = CHECKSUM_PARTIAL;
966 966
967 cork->length += length; 967 cork->length += length;
968 if ((((length + (skb ? skb->len : fragheaderlen)) > mtu) || 968 if ((skb && skb_is_gso(skb)) ||
969 (skb && skb_is_gso(skb))) && 969 (((length + (skb ? skb->len : fragheaderlen)) > mtu) &&
970 (skb_queue_len(queue) <= 1) &&
970 (sk->sk_protocol == IPPROTO_UDP) && 971 (sk->sk_protocol == IPPROTO_UDP) &&
971 (rt->dst.dev->features & NETIF_F_UFO) && !dst_xfrm(&rt->dst) && 972 (rt->dst.dev->features & NETIF_F_UFO) && !dst_xfrm(&rt->dst) &&
972 (sk->sk_type == SOCK_DGRAM) && !sk->sk_no_check_tx) { 973 (sk->sk_type == SOCK_DGRAM) && !sk->sk_no_check_tx)) {
973 err = ip_ufo_append_data(sk, queue, getfrag, from, length, 974 err = ip_ufo_append_data(sk, queue, getfrag, from, length,
974 hh_len, fragheaderlen, transhdrlen, 975 hh_len, fragheaderlen, transhdrlen,
975 maxfraglen, flags); 976 maxfraglen, flags);
@@ -1288,6 +1289,7 @@ ssize_t ip_append_page(struct sock *sk, struct flowi4 *fl4, struct page *page,
1288 return -EINVAL; 1289 return -EINVAL;
1289 1290
1290 if ((size + skb->len > mtu) && 1291 if ((size + skb->len > mtu) &&
1292 (skb_queue_len(&sk->sk_write_queue) == 1) &&
1291 (sk->sk_protocol == IPPROTO_UDP) && 1293 (sk->sk_protocol == IPPROTO_UDP) &&
1292 (rt->dst.dev->features & NETIF_F_UFO)) { 1294 (rt->dst.dev->features & NETIF_F_UFO)) {
1293 if (skb->ip_summed != CHECKSUM_PARTIAL) 1295 if (skb->ip_summed != CHECKSUM_PARTIAL)
diff --git a/net/ipv4/netfilter/nf_tables_arp.c b/net/ipv4/netfilter/nf_tables_arp.c
index 805c8ddfe860..4bbc273b45e8 100644
--- a/net/ipv4/netfilter/nf_tables_arp.c
+++ b/net/ipv4/netfilter/nf_tables_arp.c
@@ -72,8 +72,7 @@ static const struct nf_chain_type filter_arp = {
72 .family = NFPROTO_ARP, 72 .family = NFPROTO_ARP,
73 .owner = THIS_MODULE, 73 .owner = THIS_MODULE,
74 .hook_mask = (1 << NF_ARP_IN) | 74 .hook_mask = (1 << NF_ARP_IN) |
75 (1 << NF_ARP_OUT) | 75 (1 << NF_ARP_OUT),
76 (1 << NF_ARP_FORWARD),
77}; 76};
78 77
79static int __init nf_tables_arp_init(void) 78static int __init nf_tables_arp_init(void)
diff --git a/net/ipv4/route.c b/net/ipv4/route.c
index 0383e66f59bc..2331de20ca50 100644
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
@@ -1267,7 +1267,7 @@ static unsigned int ipv4_mtu(const struct dst_entry *dst)
1267 if (mtu) 1267 if (mtu)
1268 return mtu; 1268 return mtu;
1269 1269
1270 mtu = dst->dev->mtu; 1270 mtu = READ_ONCE(dst->dev->mtu);
1271 1271
1272 if (unlikely(dst_metric_locked(dst, RTAX_MTU))) { 1272 if (unlikely(dst_metric_locked(dst, RTAX_MTU))) {
1273 if (rt->rt_uses_gateway && mtu > 576) 1273 if (rt->rt_uses_gateway && mtu > 576)
@@ -2750,26 +2750,34 @@ static int inet_rtm_getroute(struct sk_buff *in_skb, struct nlmsghdr *nlh,
2750 err = 0; 2750 err = 0;
2751 if (IS_ERR(rt)) 2751 if (IS_ERR(rt))
2752 err = PTR_ERR(rt); 2752 err = PTR_ERR(rt);
2753 else
2754 skb_dst_set(skb, &rt->dst);
2753 } 2755 }
2754 2756
2755 if (err) 2757 if (err)
2756 goto errout_free; 2758 goto errout_free;
2757 2759
2758 skb_dst_set(skb, &rt->dst);
2759 if (rtm->rtm_flags & RTM_F_NOTIFY) 2760 if (rtm->rtm_flags & RTM_F_NOTIFY)
2760 rt->rt_flags |= RTCF_NOTIFY; 2761 rt->rt_flags |= RTCF_NOTIFY;
2761 2762
2762 if (rtm->rtm_flags & RTM_F_LOOKUP_TABLE) 2763 if (rtm->rtm_flags & RTM_F_LOOKUP_TABLE)
2763 table_id = rt->rt_table_id; 2764 table_id = rt->rt_table_id;
2764 2765
2765 if (rtm->rtm_flags & RTM_F_FIB_MATCH) 2766 if (rtm->rtm_flags & RTM_F_FIB_MATCH) {
2767 if (!res.fi) {
2768 err = fib_props[res.type].error;
2769 if (!err)
2770 err = -EHOSTUNREACH;
2771 goto errout_free;
2772 }
2766 err = fib_dump_info(skb, NETLINK_CB(in_skb).portid, 2773 err = fib_dump_info(skb, NETLINK_CB(in_skb).portid,
2767 nlh->nlmsg_seq, RTM_NEWROUTE, table_id, 2774 nlh->nlmsg_seq, RTM_NEWROUTE, table_id,
2768 rt->rt_type, res.prefix, res.prefixlen, 2775 rt->rt_type, res.prefix, res.prefixlen,
2769 fl4.flowi4_tos, res.fi, 0); 2776 fl4.flowi4_tos, res.fi, 0);
2770 else 2777 } else {
2771 err = rt_fill_info(net, dst, src, table_id, &fl4, skb, 2778 err = rt_fill_info(net, dst, src, table_id, &fl4, skb,
2772 NETLINK_CB(in_skb).portid, nlh->nlmsg_seq); 2779 NETLINK_CB(in_skb).portid, nlh->nlmsg_seq);
2780 }
2773 if (err < 0) 2781 if (err < 0)
2774 goto errout_free; 2782 goto errout_free;
2775 2783
diff --git a/net/ipv4/syncookies.c b/net/ipv4/syncookies.c
index 0905cf04c2a4..03ad8778c395 100644
--- a/net/ipv4/syncookies.c
+++ b/net/ipv4/syncookies.c
@@ -335,6 +335,7 @@ struct sock *cookie_v4_check(struct sock *sk, struct sk_buff *skb)
335 treq->rcv_isn = ntohl(th->seq) - 1; 335 treq->rcv_isn = ntohl(th->seq) - 1;
336 treq->snt_isn = cookie; 336 treq->snt_isn = cookie;
337 treq->ts_off = 0; 337 treq->ts_off = 0;
338 treq->txhash = net_tx_rndhash();
338 req->mss = mss; 339 req->mss = mss;
339 ireq->ir_num = ntohs(th->dest); 340 ireq->ir_num = ntohs(th->dest);
340 ireq->ir_rmt_port = th->source; 341 ireq->ir_rmt_port = th->source;
diff --git a/net/ipv4/tcp_bbr.c b/net/ipv4/tcp_bbr.c
index dbcc9352a48f..69ee877574d0 100644
--- a/net/ipv4/tcp_bbr.c
+++ b/net/ipv4/tcp_bbr.c
@@ -112,7 +112,8 @@ struct bbr {
112 cwnd_gain:10, /* current gain for setting cwnd */ 112 cwnd_gain:10, /* current gain for setting cwnd */
113 full_bw_cnt:3, /* number of rounds without large bw gains */ 113 full_bw_cnt:3, /* number of rounds without large bw gains */
114 cycle_idx:3, /* current index in pacing_gain cycle array */ 114 cycle_idx:3, /* current index in pacing_gain cycle array */
115 unused_b:6; 115 has_seen_rtt:1, /* have we seen an RTT sample yet? */
116 unused_b:5;
116 u32 prior_cwnd; /* prior cwnd upon entering loss recovery */ 117 u32 prior_cwnd; /* prior cwnd upon entering loss recovery */
117 u32 full_bw; /* recent bw, to estimate if pipe is full */ 118 u32 full_bw; /* recent bw, to estimate if pipe is full */
118}; 119};
@@ -211,6 +212,35 @@ static u64 bbr_rate_bytes_per_sec(struct sock *sk, u64 rate, int gain)
211 return rate >> BW_SCALE; 212 return rate >> BW_SCALE;
212} 213}
213 214
215/* Convert a BBR bw and gain factor to a pacing rate in bytes per second. */
216static u32 bbr_bw_to_pacing_rate(struct sock *sk, u32 bw, int gain)
217{
218 u64 rate = bw;
219
220 rate = bbr_rate_bytes_per_sec(sk, rate, gain);
221 rate = min_t(u64, rate, sk->sk_max_pacing_rate);
222 return rate;
223}
224
225/* Initialize pacing rate to: high_gain * init_cwnd / RTT. */
226static void bbr_init_pacing_rate_from_rtt(struct sock *sk)
227{
228 struct tcp_sock *tp = tcp_sk(sk);
229 struct bbr *bbr = inet_csk_ca(sk);
230 u64 bw;
231 u32 rtt_us;
232
233 if (tp->srtt_us) { /* any RTT sample yet? */
234 rtt_us = max(tp->srtt_us >> 3, 1U);
235 bbr->has_seen_rtt = 1;
236 } else { /* no RTT sample yet */
237 rtt_us = USEC_PER_MSEC; /* use nominal default RTT */
238 }
239 bw = (u64)tp->snd_cwnd * BW_UNIT;
240 do_div(bw, rtt_us);
241 sk->sk_pacing_rate = bbr_bw_to_pacing_rate(sk, bw, bbr_high_gain);
242}
243
214/* Pace using current bw estimate and a gain factor. In order to help drive the 244/* Pace using current bw estimate and a gain factor. In order to help drive the
215 * network toward lower queues while maintaining high utilization and low 245 * network toward lower queues while maintaining high utilization and low
216 * latency, the average pacing rate aims to be slightly (~1%) lower than the 246 * latency, the average pacing rate aims to be slightly (~1%) lower than the
@@ -220,12 +250,13 @@ static u64 bbr_rate_bytes_per_sec(struct sock *sk, u64 rate, int gain)
220 */ 250 */
221static void bbr_set_pacing_rate(struct sock *sk, u32 bw, int gain) 251static void bbr_set_pacing_rate(struct sock *sk, u32 bw, int gain)
222{ 252{
253 struct tcp_sock *tp = tcp_sk(sk);
223 struct bbr *bbr = inet_csk_ca(sk); 254 struct bbr *bbr = inet_csk_ca(sk);
224 u64 rate = bw; 255 u32 rate = bbr_bw_to_pacing_rate(sk, bw, gain);
225 256
226 rate = bbr_rate_bytes_per_sec(sk, rate, gain); 257 if (unlikely(!bbr->has_seen_rtt && tp->srtt_us))
227 rate = min_t(u64, rate, sk->sk_max_pacing_rate); 258 bbr_init_pacing_rate_from_rtt(sk);
228 if (bbr->mode != BBR_STARTUP || rate > sk->sk_pacing_rate) 259 if (bbr_full_bw_reached(sk) || rate > sk->sk_pacing_rate)
229 sk->sk_pacing_rate = rate; 260 sk->sk_pacing_rate = rate;
230} 261}
231 262
@@ -798,7 +829,6 @@ static void bbr_init(struct sock *sk)
798{ 829{
799 struct tcp_sock *tp = tcp_sk(sk); 830 struct tcp_sock *tp = tcp_sk(sk);
800 struct bbr *bbr = inet_csk_ca(sk); 831 struct bbr *bbr = inet_csk_ca(sk);
801 u64 bw;
802 832
803 bbr->prior_cwnd = 0; 833 bbr->prior_cwnd = 0;
804 bbr->tso_segs_goal = 0; /* default segs per skb until first ACK */ 834 bbr->tso_segs_goal = 0; /* default segs per skb until first ACK */
@@ -814,11 +844,8 @@ static void bbr_init(struct sock *sk)
814 844
815 minmax_reset(&bbr->bw, bbr->rtt_cnt, 0); /* init max bw to 0 */ 845 minmax_reset(&bbr->bw, bbr->rtt_cnt, 0); /* init max bw to 0 */
816 846
817 /* Initialize pacing rate to: high_gain * init_cwnd / RTT. */ 847 bbr->has_seen_rtt = 0;
818 bw = (u64)tp->snd_cwnd * BW_UNIT; 848 bbr_init_pacing_rate_from_rtt(sk);
819 do_div(bw, (tp->srtt_us >> 3) ? : USEC_PER_MSEC);
820 sk->sk_pacing_rate = 0; /* force an update of sk_pacing_rate */
821 bbr_set_pacing_rate(sk, bw, bbr_high_gain);
822 849
823 bbr->restore_cwnd = 0; 850 bbr->restore_cwnd = 0;
824 bbr->round_start = 0; 851 bbr->round_start = 0;
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 2920e0cb09f8..bab7f0493098 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -107,6 +107,7 @@ int sysctl_tcp_invalid_ratelimit __read_mostly = HZ/2;
107#define FLAG_ORIG_SACK_ACKED 0x200 /* Never retransmitted data are (s)acked */ 107#define FLAG_ORIG_SACK_ACKED 0x200 /* Never retransmitted data are (s)acked */
108#define FLAG_SND_UNA_ADVANCED 0x400 /* Snd_una was changed (!= FLAG_DATA_ACKED) */ 108#define FLAG_SND_UNA_ADVANCED 0x400 /* Snd_una was changed (!= FLAG_DATA_ACKED) */
109#define FLAG_DSACKING_ACK 0x800 /* SACK blocks contained D-SACK info */ 109#define FLAG_DSACKING_ACK 0x800 /* SACK blocks contained D-SACK info */
110#define FLAG_SET_XMIT_TIMER 0x1000 /* Set TLP or RTO timer */
110#define FLAG_SACK_RENEGING 0x2000 /* snd_una advanced to a sacked seq */ 111#define FLAG_SACK_RENEGING 0x2000 /* snd_una advanced to a sacked seq */
111#define FLAG_UPDATE_TS_RECENT 0x4000 /* tcp_replace_ts_recent() */ 112#define FLAG_UPDATE_TS_RECENT 0x4000 /* tcp_replace_ts_recent() */
112#define FLAG_NO_CHALLENGE_ACK 0x8000 /* do not call tcp_send_challenge_ack() */ 113#define FLAG_NO_CHALLENGE_ACK 0x8000 /* do not call tcp_send_challenge_ack() */
@@ -2520,8 +2521,8 @@ static inline void tcp_end_cwnd_reduction(struct sock *sk)
2520 return; 2521 return;
2521 2522
2522 /* Reset cwnd to ssthresh in CWR or Recovery (unless it's undone) */ 2523 /* Reset cwnd to ssthresh in CWR or Recovery (unless it's undone) */
2523 if (inet_csk(sk)->icsk_ca_state == TCP_CA_CWR || 2524 if (tp->snd_ssthresh < TCP_INFINITE_SSTHRESH &&
2524 (tp->undo_marker && tp->snd_ssthresh < TCP_INFINITE_SSTHRESH)) { 2525 (inet_csk(sk)->icsk_ca_state == TCP_CA_CWR || tp->undo_marker)) {
2525 tp->snd_cwnd = tp->snd_ssthresh; 2526 tp->snd_cwnd = tp->snd_ssthresh;
2526 tp->snd_cwnd_stamp = tcp_jiffies32; 2527 tp->snd_cwnd_stamp = tcp_jiffies32;
2527 } 2528 }
@@ -3004,21 +3005,24 @@ void tcp_rearm_rto(struct sock *sk)
3004 /* Offset the time elapsed after installing regular RTO */ 3005 /* Offset the time elapsed after installing regular RTO */
3005 if (icsk->icsk_pending == ICSK_TIME_REO_TIMEOUT || 3006 if (icsk->icsk_pending == ICSK_TIME_REO_TIMEOUT ||
3006 icsk->icsk_pending == ICSK_TIME_LOSS_PROBE) { 3007 icsk->icsk_pending == ICSK_TIME_LOSS_PROBE) {
3007 struct sk_buff *skb = tcp_write_queue_head(sk); 3008 s64 delta_us = tcp_rto_delta_us(sk);
3008 u64 rto_time_stamp = skb->skb_mstamp +
3009 jiffies_to_usecs(rto);
3010 s64 delta_us = rto_time_stamp - tp->tcp_mstamp;
3011 /* delta_us may not be positive if the socket is locked 3009 /* delta_us may not be positive if the socket is locked
3012 * when the retrans timer fires and is rescheduled. 3010 * when the retrans timer fires and is rescheduled.
3013 */ 3011 */
3014 if (delta_us > 0) 3012 rto = usecs_to_jiffies(max_t(int, delta_us, 1));
3015 rto = usecs_to_jiffies(delta_us);
3016 } 3013 }
3017 inet_csk_reset_xmit_timer(sk, ICSK_TIME_RETRANS, rto, 3014 inet_csk_reset_xmit_timer(sk, ICSK_TIME_RETRANS, rto,
3018 TCP_RTO_MAX); 3015 TCP_RTO_MAX);
3019 } 3016 }
3020} 3017}
3021 3018
3019/* Try to schedule a loss probe; if that doesn't work, then schedule an RTO. */
3020static void tcp_set_xmit_timer(struct sock *sk)
3021{
3022 if (!tcp_schedule_loss_probe(sk))
3023 tcp_rearm_rto(sk);
3024}
3025
3022/* If we get here, the whole TSO packet has not been acked. */ 3026/* If we get here, the whole TSO packet has not been acked. */
3023static u32 tcp_tso_acked(struct sock *sk, struct sk_buff *skb) 3027static u32 tcp_tso_acked(struct sock *sk, struct sk_buff *skb)
3024{ 3028{
@@ -3180,7 +3184,7 @@ static int tcp_clean_rtx_queue(struct sock *sk, int prior_fackets,
3180 ca_rtt_us, sack->rate); 3184 ca_rtt_us, sack->rate);
3181 3185
3182 if (flag & FLAG_ACKED) { 3186 if (flag & FLAG_ACKED) {
3183 tcp_rearm_rto(sk); 3187 flag |= FLAG_SET_XMIT_TIMER; /* set TLP or RTO timer */
3184 if (unlikely(icsk->icsk_mtup.probe_size && 3188 if (unlikely(icsk->icsk_mtup.probe_size &&
3185 !after(tp->mtu_probe.probe_seq_end, tp->snd_una))) { 3189 !after(tp->mtu_probe.probe_seq_end, tp->snd_una))) {
3186 tcp_mtup_probe_success(sk); 3190 tcp_mtup_probe_success(sk);
@@ -3208,7 +3212,7 @@ static int tcp_clean_rtx_queue(struct sock *sk, int prior_fackets,
3208 * after when the head was last (re)transmitted. Otherwise the 3212 * after when the head was last (re)transmitted. Otherwise the
3209 * timeout may continue to extend in loss recovery. 3213 * timeout may continue to extend in loss recovery.
3210 */ 3214 */
3211 tcp_rearm_rto(sk); 3215 flag |= FLAG_SET_XMIT_TIMER; /* set TLP or RTO timer */
3212 } 3216 }
3213 3217
3214 if (icsk->icsk_ca_ops->pkts_acked) { 3218 if (icsk->icsk_ca_ops->pkts_acked) {
@@ -3580,9 +3584,6 @@ static int tcp_ack(struct sock *sk, const struct sk_buff *skb, int flag)
3580 if (after(ack, tp->snd_nxt)) 3584 if (after(ack, tp->snd_nxt))
3581 goto invalid_ack; 3585 goto invalid_ack;
3582 3586
3583 if (icsk->icsk_pending == ICSK_TIME_LOSS_PROBE)
3584 tcp_rearm_rto(sk);
3585
3586 if (after(ack, prior_snd_una)) { 3587 if (after(ack, prior_snd_una)) {
3587 flag |= FLAG_SND_UNA_ADVANCED; 3588 flag |= FLAG_SND_UNA_ADVANCED;
3588 icsk->icsk_retransmits = 0; 3589 icsk->icsk_retransmits = 0;
@@ -3647,18 +3648,20 @@ static int tcp_ack(struct sock *sk, const struct sk_buff *skb, int flag)
3647 flag |= tcp_clean_rtx_queue(sk, prior_fackets, prior_snd_una, &acked, 3648 flag |= tcp_clean_rtx_queue(sk, prior_fackets, prior_snd_una, &acked,
3648 &sack_state); 3649 &sack_state);
3649 3650
3651 if (tp->tlp_high_seq)
3652 tcp_process_tlp_ack(sk, ack, flag);
3653 /* If needed, reset TLP/RTO timer; RACK may later override this. */
3654 if (flag & FLAG_SET_XMIT_TIMER)
3655 tcp_set_xmit_timer(sk);
3656
3650 if (tcp_ack_is_dubious(sk, flag)) { 3657 if (tcp_ack_is_dubious(sk, flag)) {
3651 is_dupack = !(flag & (FLAG_SND_UNA_ADVANCED | FLAG_NOT_DUP)); 3658 is_dupack = !(flag & (FLAG_SND_UNA_ADVANCED | FLAG_NOT_DUP));
3652 tcp_fastretrans_alert(sk, acked, is_dupack, &flag, &rexmit); 3659 tcp_fastretrans_alert(sk, acked, is_dupack, &flag, &rexmit);
3653 } 3660 }
3654 if (tp->tlp_high_seq)
3655 tcp_process_tlp_ack(sk, ack, flag);
3656 3661
3657 if ((flag & FLAG_FORWARD_PROGRESS) || !(flag & FLAG_NOT_DUP)) 3662 if ((flag & FLAG_FORWARD_PROGRESS) || !(flag & FLAG_NOT_DUP))
3658 sk_dst_confirm(sk); 3663 sk_dst_confirm(sk);
3659 3664
3660 if (icsk->icsk_pending == ICSK_TIME_RETRANS)
3661 tcp_schedule_loss_probe(sk);
3662 delivered = tp->delivered - delivered; /* freshly ACKed or SACKed */ 3665 delivered = tp->delivered - delivered; /* freshly ACKed or SACKed */
3663 lost = tp->lost - lost; /* freshly marked lost */ 3666 lost = tp->lost - lost; /* freshly marked lost */
3664 tcp_rate_gen(sk, delivered, lost, sack_state.rate); 3667 tcp_rate_gen(sk, delivered, lost, sack_state.rate);
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index a20e7f03d5f7..e9252c7df809 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -1722,6 +1722,8 @@ process:
1722 */ 1722 */
1723 sock_hold(sk); 1723 sock_hold(sk);
1724 refcounted = true; 1724 refcounted = true;
1725 if (tcp_filter(sk, skb))
1726 goto discard_and_relse;
1725 nsk = tcp_check_req(sk, skb, req, false); 1727 nsk = tcp_check_req(sk, skb, req, false);
1726 if (!nsk) { 1728 if (!nsk) {
1727 reqsk_put(req); 1729 reqsk_put(req);
@@ -1729,8 +1731,6 @@ process:
1729 } 1731 }
1730 if (nsk == sk) { 1732 if (nsk == sk) {
1731 reqsk_put(req); 1733 reqsk_put(req);
1732 } else if (tcp_filter(sk, skb)) {
1733 goto discard_and_relse;
1734 } else if (tcp_child_process(sk, nsk, skb)) { 1734 } else if (tcp_child_process(sk, nsk, skb)) {
1735 tcp_v4_send_reset(nsk, skb); 1735 tcp_v4_send_reset(nsk, skb);
1736 goto discard_and_relse; 1736 goto discard_and_relse;
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index 4e985dea1dd2..b7661a68d498 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -2202,9 +2202,10 @@ static bool tcp_small_queue_check(struct sock *sk, const struct sk_buff *skb,
2202static void tcp_chrono_set(struct tcp_sock *tp, const enum tcp_chrono new) 2202static void tcp_chrono_set(struct tcp_sock *tp, const enum tcp_chrono new)
2203{ 2203{
2204 const u32 now = tcp_jiffies32; 2204 const u32 now = tcp_jiffies32;
2205 enum tcp_chrono old = tp->chrono_type;
2205 2206
2206 if (tp->chrono_type > TCP_CHRONO_UNSPEC) 2207 if (old > TCP_CHRONO_UNSPEC)
2207 tp->chrono_stat[tp->chrono_type - 1] += now - tp->chrono_start; 2208 tp->chrono_stat[old - 1] += now - tp->chrono_start;
2208 tp->chrono_start = now; 2209 tp->chrono_start = now;
2209 tp->chrono_type = new; 2210 tp->chrono_type = new;
2210} 2211}
@@ -2376,24 +2377,15 @@ bool tcp_schedule_loss_probe(struct sock *sk)
2376{ 2377{
2377 struct inet_connection_sock *icsk = inet_csk(sk); 2378 struct inet_connection_sock *icsk = inet_csk(sk);
2378 struct tcp_sock *tp = tcp_sk(sk); 2379 struct tcp_sock *tp = tcp_sk(sk);
2379 u32 timeout, tlp_time_stamp, rto_time_stamp;
2380 u32 rtt = usecs_to_jiffies(tp->srtt_us >> 3); 2380 u32 rtt = usecs_to_jiffies(tp->srtt_us >> 3);
2381 u32 timeout, rto_delta_us;
2381 2382
2382 /* No consecutive loss probes. */
2383 if (WARN_ON(icsk->icsk_pending == ICSK_TIME_LOSS_PROBE)) {
2384 tcp_rearm_rto(sk);
2385 return false;
2386 }
2387 /* Don't do any loss probe on a Fast Open connection before 3WHS 2383 /* Don't do any loss probe on a Fast Open connection before 3WHS
2388 * finishes. 2384 * finishes.
2389 */ 2385 */
2390 if (tp->fastopen_rsk) 2386 if (tp->fastopen_rsk)
2391 return false; 2387 return false;
2392 2388
2393 /* TLP is only scheduled when next timer event is RTO. */
2394 if (icsk->icsk_pending != ICSK_TIME_RETRANS)
2395 return false;
2396
2397 /* Schedule a loss probe in 2*RTT for SACK capable connections 2389 /* Schedule a loss probe in 2*RTT for SACK capable connections
2398 * in Open state, that are either limited by cwnd or application. 2390 * in Open state, that are either limited by cwnd or application.
2399 */ 2391 */
@@ -2416,14 +2408,10 @@ bool tcp_schedule_loss_probe(struct sock *sk)
2416 (rtt + (rtt >> 1) + TCP_DELACK_MAX)); 2408 (rtt + (rtt >> 1) + TCP_DELACK_MAX));
2417 timeout = max_t(u32, timeout, msecs_to_jiffies(10)); 2409 timeout = max_t(u32, timeout, msecs_to_jiffies(10));
2418 2410
2419 /* If RTO is shorter, just schedule TLP in its place. */ 2411 /* If the RTO formula yields an earlier time, then use that time. */
2420 tlp_time_stamp = tcp_jiffies32 + timeout; 2412 rto_delta_us = tcp_rto_delta_us(sk); /* How far in future is RTO? */
2421 rto_time_stamp = (u32)inet_csk(sk)->icsk_timeout; 2413 if (rto_delta_us > 0)
2422 if ((s32)(tlp_time_stamp - rto_time_stamp) > 0) { 2414 timeout = min_t(u32, timeout, usecs_to_jiffies(rto_delta_us));
2423 s32 delta = rto_time_stamp - tcp_jiffies32;
2424 if (delta > 0)
2425 timeout = delta;
2426 }
2427 2415
2428 inet_csk_reset_xmit_timer(sk, ICSK_TIME_LOSS_PROBE, timeout, 2416 inet_csk_reset_xmit_timer(sk, ICSK_TIME_LOSS_PROBE, timeout,
2429 TCP_RTO_MAX); 2417 TCP_RTO_MAX);
@@ -3448,6 +3436,10 @@ int tcp_connect(struct sock *sk)
3448 int err; 3436 int err;
3449 3437
3450 tcp_call_bpf(sk, BPF_SOCK_OPS_TCP_CONNECT_CB); 3438 tcp_call_bpf(sk, BPF_SOCK_OPS_TCP_CONNECT_CB);
3439
3440 if (inet_csk(sk)->icsk_af_ops->rebuild_header(sk))
3441 return -EHOSTUNREACH; /* Routing failure or similar. */
3442
3451 tcp_connect_init(sk); 3443 tcp_connect_init(sk);
3452 3444
3453 if (unlikely(tp->repair)) { 3445 if (unlikely(tp->repair)) {
diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
index c0feeeef962a..e906014890b6 100644
--- a/net/ipv4/tcp_timer.c
+++ b/net/ipv4/tcp_timer.c
@@ -652,7 +652,8 @@ static void tcp_keepalive_timer (unsigned long data)
652 goto death; 652 goto death;
653 } 653 }
654 654
655 if (!sock_flag(sk, SOCK_KEEPOPEN) || sk->sk_state == TCP_CLOSE) 655 if (!sock_flag(sk, SOCK_KEEPOPEN) ||
656 ((1 << sk->sk_state) & (TCPF_CLOSE | TCPF_SYN_SENT)))
656 goto out; 657 goto out;
657 658
658 elapsed = keepalive_time_when(tp); 659 elapsed = keepalive_time_when(tp);
diff --git a/net/ipv4/tcp_ulp.c b/net/ipv4/tcp_ulp.c
index 2417f55374c5..6bb9e14c710a 100644
--- a/net/ipv4/tcp_ulp.c
+++ b/net/ipv4/tcp_ulp.c
@@ -122,14 +122,14 @@ int tcp_set_ulp(struct sock *sk, const char *name)
122 122
123 ulp_ops = __tcp_ulp_find_autoload(name); 123 ulp_ops = __tcp_ulp_find_autoload(name);
124 if (!ulp_ops) 124 if (!ulp_ops)
125 err = -ENOENT; 125 return -ENOENT;
126 else
127 err = ulp_ops->init(sk);
128 126
129 if (err) 127 err = ulp_ops->init(sk);
130 goto out; 128 if (err) {
129 module_put(ulp_ops->owner);
130 return err;
131 }
131 132
132 icsk->icsk_ulp_ops = ulp_ops; 133 icsk->icsk_ulp_ops = ulp_ops;
133 out: 134 return 0;
134 return err;
135} 135}
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index 25294d43e147..cd1d044a7fa5 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -802,7 +802,7 @@ static int udp_send_skb(struct sk_buff *skb, struct flowi4 *fl4)
802 if (is_udplite) /* UDP-Lite */ 802 if (is_udplite) /* UDP-Lite */
803 csum = udplite_csum(skb); 803 csum = udplite_csum(skb);
804 804
805 else if (sk->sk_no_check_tx) { /* UDP csum disabled */ 805 else if (sk->sk_no_check_tx && !skb_is_gso(skb)) { /* UDP csum off */
806 806
807 skb->ip_summed = CHECKSUM_NONE; 807 skb->ip_summed = CHECKSUM_NONE;
808 goto send; 808 goto send;
@@ -1163,34 +1163,32 @@ out:
1163 return ret; 1163 return ret;
1164} 1164}
1165 1165
1166#if BITS_PER_LONG == 64 1166#define UDP_SKB_IS_STATELESS 0x80000000
1167
1167static void udp_set_dev_scratch(struct sk_buff *skb) 1168static void udp_set_dev_scratch(struct sk_buff *skb)
1168{ 1169{
1169 struct udp_dev_scratch *scratch; 1170 struct udp_dev_scratch *scratch = udp_skb_scratch(skb);
1170 1171
1171 BUILD_BUG_ON(sizeof(struct udp_dev_scratch) > sizeof(long)); 1172 BUILD_BUG_ON(sizeof(struct udp_dev_scratch) > sizeof(long));
1172 scratch = (struct udp_dev_scratch *)&skb->dev_scratch; 1173 scratch->_tsize_state = skb->truesize;
1173 scratch->truesize = skb->truesize; 1174#if BITS_PER_LONG == 64
1174 scratch->len = skb->len; 1175 scratch->len = skb->len;
1175 scratch->csum_unnecessary = !!skb_csum_unnecessary(skb); 1176 scratch->csum_unnecessary = !!skb_csum_unnecessary(skb);
1176 scratch->is_linear = !skb_is_nonlinear(skb); 1177 scratch->is_linear = !skb_is_nonlinear(skb);
1178#endif
1179 if (likely(!skb->_skb_refdst))
1180 scratch->_tsize_state |= UDP_SKB_IS_STATELESS;
1177} 1181}
1178 1182
1179static int udp_skb_truesize(struct sk_buff *skb) 1183static int udp_skb_truesize(struct sk_buff *skb)
1180{ 1184{
1181 return ((struct udp_dev_scratch *)&skb->dev_scratch)->truesize; 1185 return udp_skb_scratch(skb)->_tsize_state & ~UDP_SKB_IS_STATELESS;
1182}
1183#else
1184static void udp_set_dev_scratch(struct sk_buff *skb)
1185{
1186 skb->dev_scratch = skb->truesize;
1187} 1186}
1188 1187
1189static int udp_skb_truesize(struct sk_buff *skb) 1188static bool udp_skb_has_head_state(struct sk_buff *skb)
1190{ 1189{
1191 return skb->dev_scratch; 1190 return !(udp_skb_scratch(skb)->_tsize_state & UDP_SKB_IS_STATELESS);
1192} 1191}
1193#endif
1194 1192
1195/* fully reclaim rmem/fwd memory allocated for skb */ 1193/* fully reclaim rmem/fwd memory allocated for skb */
1196static void udp_rmem_release(struct sock *sk, int size, int partial, 1194static void udp_rmem_release(struct sock *sk, int size, int partial,
@@ -1388,6 +1386,11 @@ void skb_consume_udp(struct sock *sk, struct sk_buff *skb, int len)
1388 unlock_sock_fast(sk, slow); 1386 unlock_sock_fast(sk, slow);
1389 } 1387 }
1390 1388
1389 /* In the more common cases we cleared the head states previously,
1390 * see __udp_queue_rcv_skb().
1391 */
1392 if (unlikely(udp_skb_has_head_state(skb)))
1393 skb_release_head_state(skb);
1391 consume_stateless_skb(skb); 1394 consume_stateless_skb(skb);
1392} 1395}
1393EXPORT_SYMBOL_GPL(skb_consume_udp); 1396EXPORT_SYMBOL_GPL(skb_consume_udp);
@@ -1571,7 +1574,8 @@ int udp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int noblock,
1571 return ip_recv_error(sk, msg, len, addr_len); 1574 return ip_recv_error(sk, msg, len, addr_len);
1572 1575
1573try_again: 1576try_again:
1574 peeking = off = sk_peek_offset(sk, flags); 1577 peeking = flags & MSG_PEEK;
1578 off = sk_peek_offset(sk, flags);
1575 skb = __skb_recv_udp(sk, flags, noblock, &peeked, &off, &err); 1579 skb = __skb_recv_udp(sk, flags, noblock, &peeked, &off, &err);
1576 if (!skb) 1580 if (!skb)
1577 return err; 1581 return err;
@@ -1779,8 +1783,12 @@ static int __udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb)
1779 sk_mark_napi_id_once(sk, skb); 1783 sk_mark_napi_id_once(sk, skb);
1780 } 1784 }
1781 1785
1782 /* clear all pending head states while they are hot in the cache */ 1786 /* At recvmsg() time we may access skb->dst or skb->sp depending on
1783 skb_release_head_state(skb); 1787 * the IP options and the cmsg flags, elsewhere can we clear all
1788 * pending head states while they are hot in the cache
1789 */
1790 if (likely(IPCB(skb)->opt.optlen == 0 && !skb_sec_path(skb)))
1791 skb_release_head_state(skb);
1784 1792
1785 rc = __udp_enqueue_schedule_skb(sk, skb); 1793 rc = __udp_enqueue_schedule_skb(sk, skb);
1786 if (rc < 0) { 1794 if (rc < 0) {
@@ -1921,7 +1929,7 @@ drop:
1921/* For TCP sockets, sk_rx_dst is protected by socket lock 1929/* For TCP sockets, sk_rx_dst is protected by socket lock
1922 * For UDP, we use xchg() to guard against concurrent changes. 1930 * For UDP, we use xchg() to guard against concurrent changes.
1923 */ 1931 */
1924static void udp_sk_rx_dst_set(struct sock *sk, struct dst_entry *dst) 1932void udp_sk_rx_dst_set(struct sock *sk, struct dst_entry *dst)
1925{ 1933{
1926 struct dst_entry *old; 1934 struct dst_entry *old;
1927 1935
@@ -1930,6 +1938,7 @@ static void udp_sk_rx_dst_set(struct sock *sk, struct dst_entry *dst)
1930 dst_release(old); 1938 dst_release(old);
1931 } 1939 }
1932} 1940}
1941EXPORT_SYMBOL(udp_sk_rx_dst_set);
1933 1942
1934/* 1943/*
1935 * Multicasts and broadcasts go to each listener. 1944 * Multicasts and broadcasts go to each listener.
diff --git a/net/ipv4/udp_offload.c b/net/ipv4/udp_offload.c
index 781250151d40..0932c85b42af 100644
--- a/net/ipv4/udp_offload.c
+++ b/net/ipv4/udp_offload.c
@@ -235,7 +235,7 @@ static struct sk_buff *udp4_ufo_fragment(struct sk_buff *skb,
235 if (uh->check == 0) 235 if (uh->check == 0)
236 uh->check = CSUM_MANGLED_0; 236 uh->check = CSUM_MANGLED_0;
237 237
238 skb->ip_summed = CHECKSUM_NONE; 238 skb->ip_summed = CHECKSUM_UNNECESSARY;
239 239
240 /* If there is no outer header we can fake a checksum offload 240 /* If there is no outer header we can fake a checksum offload
241 * due to the fact that we have already done the checksum in 241 * due to the fact that we have already done the checksum in
diff --git a/net/ipv6/exthdrs.c b/net/ipv6/exthdrs.c
index 4996d734f1d2..3cec529c6113 100644
--- a/net/ipv6/exthdrs.c
+++ b/net/ipv6/exthdrs.c
@@ -756,6 +756,7 @@ static bool ipv6_hop_jumbo(struct sk_buff *skb, int optoff)
756 if (pskb_trim_rcsum(skb, pkt_len + sizeof(struct ipv6hdr))) 756 if (pskb_trim_rcsum(skb, pkt_len + sizeof(struct ipv6hdr)))
757 goto drop; 757 goto drop;
758 758
759 IP6CB(skb)->flags |= IP6SKB_JUMBOGRAM;
759 return true; 760 return true;
760 761
761drop: 762drop:
diff --git a/net/ipv6/ip6_fib.c b/net/ipv6/ip6_fib.c
index ebb299cf72b7..5cc0ea038198 100644
--- a/net/ipv6/ip6_fib.c
+++ b/net/ipv6/ip6_fib.c
@@ -914,6 +914,8 @@ add:
914 } 914 }
915 nsiblings = iter->rt6i_nsiblings; 915 nsiblings = iter->rt6i_nsiblings;
916 fib6_purge_rt(iter, fn, info->nl_net); 916 fib6_purge_rt(iter, fn, info->nl_net);
917 if (fn->rr_ptr == iter)
918 fn->rr_ptr = NULL;
917 rt6_release(iter); 919 rt6_release(iter);
918 920
919 if (nsiblings) { 921 if (nsiblings) {
@@ -926,6 +928,8 @@ add:
926 if (rt6_qualify_for_ecmp(iter)) { 928 if (rt6_qualify_for_ecmp(iter)) {
927 *ins = iter->dst.rt6_next; 929 *ins = iter->dst.rt6_next;
928 fib6_purge_rt(iter, fn, info->nl_net); 930 fib6_purge_rt(iter, fn, info->nl_net);
931 if (fn->rr_ptr == iter)
932 fn->rr_ptr = NULL;
929 rt6_release(iter); 933 rt6_release(iter);
930 nsiblings--; 934 nsiblings--;
931 } else { 935 } else {
@@ -1014,7 +1018,7 @@ int fib6_add(struct fib6_node *root, struct rt6_info *rt,
1014 /* Create subtree root node */ 1018 /* Create subtree root node */
1015 sfn = node_alloc(); 1019 sfn = node_alloc();
1016 if (!sfn) 1020 if (!sfn)
1017 goto st_failure; 1021 goto failure;
1018 1022
1019 sfn->leaf = info->nl_net->ipv6.ip6_null_entry; 1023 sfn->leaf = info->nl_net->ipv6.ip6_null_entry;
1020 atomic_inc(&info->nl_net->ipv6.ip6_null_entry->rt6i_ref); 1024 atomic_inc(&info->nl_net->ipv6.ip6_null_entry->rt6i_ref);
@@ -1031,12 +1035,12 @@ int fib6_add(struct fib6_node *root, struct rt6_info *rt,
1031 1035
1032 if (IS_ERR(sn)) { 1036 if (IS_ERR(sn)) {
1033 /* If it is failed, discard just allocated 1037 /* If it is failed, discard just allocated
1034 root, and then (in st_failure) stale node 1038 root, and then (in failure) stale node
1035 in main tree. 1039 in main tree.
1036 */ 1040 */
1037 node_free(sfn); 1041 node_free(sfn);
1038 err = PTR_ERR(sn); 1042 err = PTR_ERR(sn);
1039 goto st_failure; 1043 goto failure;
1040 } 1044 }
1041 1045
1042 /* Now link new subtree to main tree */ 1046 /* Now link new subtree to main tree */
@@ -1051,7 +1055,7 @@ int fib6_add(struct fib6_node *root, struct rt6_info *rt,
1051 1055
1052 if (IS_ERR(sn)) { 1056 if (IS_ERR(sn)) {
1053 err = PTR_ERR(sn); 1057 err = PTR_ERR(sn);
1054 goto st_failure; 1058 goto failure;
1055 } 1059 }
1056 } 1060 }
1057 1061
@@ -1092,18 +1096,17 @@ out:
1092 atomic_inc(&pn->leaf->rt6i_ref); 1096 atomic_inc(&pn->leaf->rt6i_ref);
1093 } 1097 }
1094#endif 1098#endif
1095 /* Always release dst as dst->__refcnt is guaranteed 1099 goto failure;
1096 * to be taken before entering this function
1097 */
1098 dst_release_immediate(&rt->dst);
1099 } 1100 }
1100 return err; 1101 return err;
1101 1102
1102#ifdef CONFIG_IPV6_SUBTREES 1103failure:
1103 /* Subtree creation failed, probably main tree node 1104 /* fn->leaf could be NULL if fn is an intermediate node and we
1104 is orphan. If it is, shoot it. 1105 * failed to add the new route to it in both subtree creation
1106 * failure and fib6_add_rt2node() failure case.
1107 * In both cases, fib6_repair_tree() should be called to fix
1108 * fn->leaf.
1105 */ 1109 */
1106st_failure:
1107 if (fn && !(fn->fn_flags & (RTN_RTINFO|RTN_ROOT))) 1110 if (fn && !(fn->fn_flags & (RTN_RTINFO|RTN_ROOT)))
1108 fib6_repair_tree(info->nl_net, fn); 1111 fib6_repair_tree(info->nl_net, fn);
1109 /* Always release dst as dst->__refcnt is guaranteed 1112 /* Always release dst as dst->__refcnt is guaranteed
@@ -1111,7 +1114,6 @@ st_failure:
1111 */ 1114 */
1112 dst_release_immediate(&rt->dst); 1115 dst_release_immediate(&rt->dst);
1113 return err; 1116 return err;
1114#endif
1115} 1117}
1116 1118
1117/* 1119/*
diff --git a/net/ipv6/ip6_output.c b/net/ipv6/ip6_output.c
index 1422d6c08377..2dfe50d8d609 100644
--- a/net/ipv6/ip6_output.c
+++ b/net/ipv6/ip6_output.c
@@ -673,8 +673,6 @@ int ip6_fragment(struct net *net, struct sock *sk, struct sk_buff *skb,
673 *prevhdr = NEXTHDR_FRAGMENT; 673 *prevhdr = NEXTHDR_FRAGMENT;
674 tmp_hdr = kmemdup(skb_network_header(skb), hlen, GFP_ATOMIC); 674 tmp_hdr = kmemdup(skb_network_header(skb), hlen, GFP_ATOMIC);
675 if (!tmp_hdr) { 675 if (!tmp_hdr) {
676 IP6_INC_STATS(net, ip6_dst_idev(skb_dst(skb)),
677 IPSTATS_MIB_FRAGFAILS);
678 err = -ENOMEM; 676 err = -ENOMEM;
679 goto fail; 677 goto fail;
680 } 678 }
@@ -789,8 +787,6 @@ slow_path:
789 frag = alloc_skb(len + hlen + sizeof(struct frag_hdr) + 787 frag = alloc_skb(len + hlen + sizeof(struct frag_hdr) +
790 hroom + troom, GFP_ATOMIC); 788 hroom + troom, GFP_ATOMIC);
791 if (!frag) { 789 if (!frag) {
792 IP6_INC_STATS(net, ip6_dst_idev(skb_dst(skb)),
793 IPSTATS_MIB_FRAGFAILS);
794 err = -ENOMEM; 790 err = -ENOMEM;
795 goto fail; 791 goto fail;
796 } 792 }
@@ -1385,11 +1381,12 @@ emsgsize:
1385 */ 1381 */
1386 1382
1387 cork->length += length; 1383 cork->length += length;
1388 if ((((length + (skb ? skb->len : headersize)) > mtu) || 1384 if ((skb && skb_is_gso(skb)) ||
1389 (skb && skb_is_gso(skb))) && 1385 (((length + (skb ? skb->len : headersize)) > mtu) &&
1386 (skb_queue_len(queue) <= 1) &&
1390 (sk->sk_protocol == IPPROTO_UDP) && 1387 (sk->sk_protocol == IPPROTO_UDP) &&
1391 (rt->dst.dev->features & NETIF_F_UFO) && !dst_xfrm(&rt->dst) && 1388 (rt->dst.dev->features & NETIF_F_UFO) && !dst_xfrm(&rt->dst) &&
1392 (sk->sk_type == SOCK_DGRAM) && !udp_get_no_check6_tx(sk)) { 1389 (sk->sk_type == SOCK_DGRAM) && !udp_get_no_check6_tx(sk))) {
1393 err = ip6_ufo_append_data(sk, queue, getfrag, from, length, 1390 err = ip6_ufo_append_data(sk, queue, getfrag, from, length,
1394 hh_len, fragheaderlen, exthdrlen, 1391 hh_len, fragheaderlen, exthdrlen,
1395 transhdrlen, mtu, flags, fl6); 1392 transhdrlen, mtu, flags, fl6);
diff --git a/net/ipv6/output_core.c b/net/ipv6/output_core.c
index e9065b8d3af8..abb2c307fbe8 100644
--- a/net/ipv6/output_core.c
+++ b/net/ipv6/output_core.c
@@ -78,7 +78,7 @@ EXPORT_SYMBOL(ipv6_select_ident);
78 78
79int ip6_find_1stfragopt(struct sk_buff *skb, u8 **nexthdr) 79int ip6_find_1stfragopt(struct sk_buff *skb, u8 **nexthdr)
80{ 80{
81 u16 offset = sizeof(struct ipv6hdr); 81 unsigned int offset = sizeof(struct ipv6hdr);
82 unsigned int packet_len = skb_tail_pointer(skb) - 82 unsigned int packet_len = skb_tail_pointer(skb) -
83 skb_network_header(skb); 83 skb_network_header(skb);
84 int found_rhdr = 0; 84 int found_rhdr = 0;
@@ -86,6 +86,7 @@ int ip6_find_1stfragopt(struct sk_buff *skb, u8 **nexthdr)
86 86
87 while (offset <= packet_len) { 87 while (offset <= packet_len) {
88 struct ipv6_opt_hdr *exthdr; 88 struct ipv6_opt_hdr *exthdr;
89 unsigned int len;
89 90
90 switch (**nexthdr) { 91 switch (**nexthdr) {
91 92
@@ -111,7 +112,10 @@ int ip6_find_1stfragopt(struct sk_buff *skb, u8 **nexthdr)
111 112
112 exthdr = (struct ipv6_opt_hdr *)(skb_network_header(skb) + 113 exthdr = (struct ipv6_opt_hdr *)(skb_network_header(skb) +
113 offset); 114 offset);
114 offset += ipv6_optlen(exthdr); 115 len = ipv6_optlen(exthdr);
116 if (len + offset >= IPV6_MAXPLEN)
117 return -EINVAL;
118 offset += len;
115 *nexthdr = &exthdr->nexthdr; 119 *nexthdr = &exthdr->nexthdr;
116 } 120 }
117 121
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 4d30c96a819d..94d6a13d47f0 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -417,14 +417,11 @@ static void ip6_dst_ifdown(struct dst_entry *dst, struct net_device *dev,
417 struct net_device *loopback_dev = 417 struct net_device *loopback_dev =
418 dev_net(dev)->loopback_dev; 418 dev_net(dev)->loopback_dev;
419 419
420 if (dev != loopback_dev) { 420 if (idev && idev->dev != loopback_dev) {
421 if (idev && idev->dev == dev) { 421 struct inet6_dev *loopback_idev = in6_dev_get(loopback_dev);
422 struct inet6_dev *loopback_idev = 422 if (loopback_idev) {
423 in6_dev_get(loopback_dev); 423 rt->rt6i_idev = loopback_idev;
424 if (loopback_idev) { 424 in6_dev_put(idev);
425 rt->rt6i_idev = loopback_idev;
426 in6_dev_put(idev);
427 }
428 } 425 }
429 } 426 }
430} 427}
@@ -2351,6 +2348,7 @@ static void rt6_do_redirect(struct dst_entry *dst, struct sock *sk, struct sk_bu
2351 if (on_link) 2348 if (on_link)
2352 nrt->rt6i_flags &= ~RTF_GATEWAY; 2349 nrt->rt6i_flags &= ~RTF_GATEWAY;
2353 2350
2351 nrt->rt6i_protocol = RTPROT_REDIRECT;
2354 nrt->rt6i_gateway = *(struct in6_addr *)neigh->primary_key; 2352 nrt->rt6i_gateway = *(struct in6_addr *)neigh->primary_key;
2355 2353
2356 if (ip6_ins_rt(nrt)) 2354 if (ip6_ins_rt(nrt))
@@ -2461,6 +2459,7 @@ static struct rt6_info *rt6_add_route_info(struct net *net,
2461 .fc_dst_len = prefixlen, 2459 .fc_dst_len = prefixlen,
2462 .fc_flags = RTF_GATEWAY | RTF_ADDRCONF | RTF_ROUTEINFO | 2460 .fc_flags = RTF_GATEWAY | RTF_ADDRCONF | RTF_ROUTEINFO |
2463 RTF_UP | RTF_PREF(pref), 2461 RTF_UP | RTF_PREF(pref),
2462 .fc_protocol = RTPROT_RA,
2464 .fc_nlinfo.portid = 0, 2463 .fc_nlinfo.portid = 0,
2465 .fc_nlinfo.nlh = NULL, 2464 .fc_nlinfo.nlh = NULL,
2466 .fc_nlinfo.nl_net = net, 2465 .fc_nlinfo.nl_net = net,
@@ -2513,6 +2512,7 @@ struct rt6_info *rt6_add_dflt_router(const struct in6_addr *gwaddr,
2513 .fc_ifindex = dev->ifindex, 2512 .fc_ifindex = dev->ifindex,
2514 .fc_flags = RTF_GATEWAY | RTF_ADDRCONF | RTF_DEFAULT | 2513 .fc_flags = RTF_GATEWAY | RTF_ADDRCONF | RTF_DEFAULT |
2515 RTF_UP | RTF_EXPIRES | RTF_PREF(pref), 2514 RTF_UP | RTF_EXPIRES | RTF_PREF(pref),
2515 .fc_protocol = RTPROT_RA,
2516 .fc_nlinfo.portid = 0, 2516 .fc_nlinfo.portid = 0,
2517 .fc_nlinfo.nlh = NULL, 2517 .fc_nlinfo.nlh = NULL,
2518 .fc_nlinfo.nl_net = dev_net(dev), 2518 .fc_nlinfo.nl_net = dev_net(dev),
@@ -3424,14 +3424,6 @@ static int rt6_fill_node(struct net *net,
3424 rtm->rtm_flags = 0; 3424 rtm->rtm_flags = 0;
3425 rtm->rtm_scope = RT_SCOPE_UNIVERSE; 3425 rtm->rtm_scope = RT_SCOPE_UNIVERSE;
3426 rtm->rtm_protocol = rt->rt6i_protocol; 3426 rtm->rtm_protocol = rt->rt6i_protocol;
3427 if (rt->rt6i_flags & RTF_DYNAMIC)
3428 rtm->rtm_protocol = RTPROT_REDIRECT;
3429 else if (rt->rt6i_flags & RTF_ADDRCONF) {
3430 if (rt->rt6i_flags & (RTF_DEFAULT | RTF_ROUTEINFO))
3431 rtm->rtm_protocol = RTPROT_RA;
3432 else
3433 rtm->rtm_protocol = RTPROT_KERNEL;
3434 }
3435 3427
3436 if (rt->rt6i_flags & RTF_CACHE) 3428 if (rt->rt6i_flags & RTF_CACHE)
3437 rtm->rtm_flags |= RTM_F_CLONED; 3429 rtm->rtm_flags |= RTM_F_CLONED;
@@ -3729,10 +3721,10 @@ static int ip6_route_dev_notify(struct notifier_block *this,
3729 /* NETDEV_UNREGISTER could be fired for multiple times by 3721 /* NETDEV_UNREGISTER could be fired for multiple times by
3730 * netdev_wait_allrefs(). Make sure we only call this once. 3722 * netdev_wait_allrefs(). Make sure we only call this once.
3731 */ 3723 */
3732 in6_dev_put(net->ipv6.ip6_null_entry->rt6i_idev); 3724 in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
3733#ifdef CONFIG_IPV6_MULTIPLE_TABLES 3725#ifdef CONFIG_IPV6_MULTIPLE_TABLES
3734 in6_dev_put(net->ipv6.ip6_prohibit_entry->rt6i_idev); 3726 in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
3735 in6_dev_put(net->ipv6.ip6_blk_hole_entry->rt6i_idev); 3727 in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
3736#endif 3728#endif
3737 } 3729 }
3738 3730
diff --git a/net/ipv6/syncookies.c b/net/ipv6/syncookies.c
index 7b75b0620730..4e7817abc0b9 100644
--- a/net/ipv6/syncookies.c
+++ b/net/ipv6/syncookies.c
@@ -216,6 +216,7 @@ struct sock *cookie_v6_check(struct sock *sk, struct sk_buff *skb)
216 treq->rcv_isn = ntohl(th->seq) - 1; 216 treq->rcv_isn = ntohl(th->seq) - 1;
217 treq->snt_isn = cookie; 217 treq->snt_isn = cookie;
218 treq->ts_off = 0; 218 treq->ts_off = 0;
219 treq->txhash = net_tx_rndhash();
219 220
220 /* 221 /*
221 * We need to lookup the dst_entry to get the correct window size. 222 * We need to lookup the dst_entry to get the correct window size.
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index 2521690d62d6..206210125fd7 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -1456,6 +1456,8 @@ process:
1456 } 1456 }
1457 sock_hold(sk); 1457 sock_hold(sk);
1458 refcounted = true; 1458 refcounted = true;
1459 if (tcp_filter(sk, skb))
1460 goto discard_and_relse;
1459 nsk = tcp_check_req(sk, skb, req, false); 1461 nsk = tcp_check_req(sk, skb, req, false);
1460 if (!nsk) { 1462 if (!nsk) {
1461 reqsk_put(req); 1463 reqsk_put(req);
@@ -1464,8 +1466,6 @@ process:
1464 if (nsk == sk) { 1466 if (nsk == sk) {
1465 reqsk_put(req); 1467 reqsk_put(req);
1466 tcp_v6_restore_cb(skb); 1468 tcp_v6_restore_cb(skb);
1467 } else if (tcp_filter(sk, skb)) {
1468 goto discard_and_relse;
1469 } else if (tcp_child_process(sk, nsk, skb)) { 1469 } else if (tcp_child_process(sk, nsk, skb)) {
1470 tcp_v6_send_reset(nsk, skb); 1470 tcp_v6_send_reset(nsk, skb);
1471 goto discard_and_relse; 1471 goto discard_and_relse;
diff --git a/net/ipv6/udp.c b/net/ipv6/udp.c
index 4a3e65626e8b..20039c8501eb 100644
--- a/net/ipv6/udp.c
+++ b/net/ipv6/udp.c
@@ -291,11 +291,7 @@ static struct sock *__udp6_lib_lookup_skb(struct sk_buff *skb,
291 struct udp_table *udptable) 291 struct udp_table *udptable)
292{ 292{
293 const struct ipv6hdr *iph = ipv6_hdr(skb); 293 const struct ipv6hdr *iph = ipv6_hdr(skb);
294 struct sock *sk;
295 294
296 sk = skb_steal_sock(skb);
297 if (unlikely(sk))
298 return sk;
299 return __udp6_lib_lookup(dev_net(skb->dev), &iph->saddr, sport, 295 return __udp6_lib_lookup(dev_net(skb->dev), &iph->saddr, sport,
300 &iph->daddr, dport, inet6_iif(skb), 296 &iph->daddr, dport, inet6_iif(skb),
301 udptable, skb); 297 udptable, skb);
@@ -332,6 +328,15 @@ struct sock *udp6_lib_lookup(struct net *net, const struct in6_addr *saddr, __be
332EXPORT_SYMBOL_GPL(udp6_lib_lookup); 328EXPORT_SYMBOL_GPL(udp6_lib_lookup);
333#endif 329#endif
334 330
331/* do not use the scratch area len for jumbogram: their length execeeds the
332 * scratch area space; note that the IP6CB flags is still in the first
333 * cacheline, so checking for jumbograms is cheap
334 */
335static int udp6_skb_len(struct sk_buff *skb)
336{
337 return unlikely(inet6_is_jumbogram(skb)) ? skb->len : udp_skb_len(skb);
338}
339
335/* 340/*
336 * This should be easy, if there is something there we 341 * This should be easy, if there is something there we
337 * return it, otherwise we block. 342 * return it, otherwise we block.
@@ -357,12 +362,13 @@ int udpv6_recvmsg(struct sock *sk, struct msghdr *msg, size_t len,
357 return ipv6_recv_rxpmtu(sk, msg, len, addr_len); 362 return ipv6_recv_rxpmtu(sk, msg, len, addr_len);
358 363
359try_again: 364try_again:
360 peeking = off = sk_peek_offset(sk, flags); 365 peeking = flags & MSG_PEEK;
366 off = sk_peek_offset(sk, flags);
361 skb = __skb_recv_udp(sk, flags, noblock, &peeked, &off, &err); 367 skb = __skb_recv_udp(sk, flags, noblock, &peeked, &off, &err);
362 if (!skb) 368 if (!skb)
363 return err; 369 return err;
364 370
365 ulen = udp_skb_len(skb); 371 ulen = udp6_skb_len(skb);
366 copied = len; 372 copied = len;
367 if (copied > ulen - off) 373 if (copied > ulen - off)
368 copied = ulen - off; 374 copied = ulen - off;
@@ -804,6 +810,24 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
804 if (udp6_csum_init(skb, uh, proto)) 810 if (udp6_csum_init(skb, uh, proto))
805 goto csum_error; 811 goto csum_error;
806 812
813 /* Check if the socket is already available, e.g. due to early demux */
814 sk = skb_steal_sock(skb);
815 if (sk) {
816 struct dst_entry *dst = skb_dst(skb);
817 int ret;
818
819 if (unlikely(sk->sk_rx_dst != dst))
820 udp_sk_rx_dst_set(sk, dst);
821
822 ret = udpv6_queue_rcv_skb(sk, skb);
823 sock_put(sk);
824
825 /* a return value > 0 means to resubmit the input */
826 if (ret > 0)
827 return ret;
828 return 0;
829 }
830
807 /* 831 /*
808 * Multicast receive code 832 * Multicast receive code
809 */ 833 */
@@ -812,11 +836,6 @@ int __udp6_lib_rcv(struct sk_buff *skb, struct udp_table *udptable,
812 saddr, daddr, udptable, proto); 836 saddr, daddr, udptable, proto);
813 837
814 /* Unicast */ 838 /* Unicast */
815
816 /*
817 * check socket cache ... must talk to Alan about his plans
818 * for sock caches... i'll skip this for now.
819 */
820 sk = __udp6_lib_lookup_skb(skb, uh->source, uh->dest, udptable); 839 sk = __udp6_lib_lookup_skb(skb, uh->source, uh->dest, udptable);
821 if (sk) { 840 if (sk) {
822 int ret; 841 int ret;
diff --git a/net/ipv6/udp_offload.c b/net/ipv6/udp_offload.c
index a2267f80febb..e7d378c032cb 100644
--- a/net/ipv6/udp_offload.c
+++ b/net/ipv6/udp_offload.c
@@ -72,7 +72,7 @@ static struct sk_buff *udp6_ufo_fragment(struct sk_buff *skb,
72 if (uh->check == 0) 72 if (uh->check == 0)
73 uh->check = CSUM_MANGLED_0; 73 uh->check = CSUM_MANGLED_0;
74 74
75 skb->ip_summed = CHECKSUM_NONE; 75 skb->ip_summed = CHECKSUM_UNNECESSARY;
76 76
77 /* If there is no outer header we can fake a checksum offload 77 /* If there is no outer header we can fake a checksum offload
78 * due to the fact that we have already done the checksum in 78 * due to the fact that we have already done the checksum in
diff --git a/net/irda/af_irda.c b/net/irda/af_irda.c
index 2e6990f8b80b..23fa7c8b09a5 100644
--- a/net/irda/af_irda.c
+++ b/net/irda/af_irda.c
@@ -2213,7 +2213,7 @@ static int irda_getsockopt(struct socket *sock, int level, int optname,
2213{ 2213{
2214 struct sock *sk = sock->sk; 2214 struct sock *sk = sock->sk;
2215 struct irda_sock *self = irda_sk(sk); 2215 struct irda_sock *self = irda_sk(sk);
2216 struct irda_device_list list; 2216 struct irda_device_list list = { 0 };
2217 struct irda_device_info *discoveries; 2217 struct irda_device_info *discoveries;
2218 struct irda_ias_set * ias_opt; /* IAS get/query params */ 2218 struct irda_ias_set * ias_opt; /* IAS get/query params */
2219 struct ias_object * ias_obj; /* Object in IAS */ 2219 struct ias_object * ias_obj; /* Object in IAS */
diff --git a/net/key/af_key.c b/net/key/af_key.c
index ca9d3ae665e7..98f4d8211b9a 100644
--- a/net/key/af_key.c
+++ b/net/key/af_key.c
@@ -228,7 +228,7 @@ static int pfkey_broadcast_one(struct sk_buff *skb, struct sk_buff **skb2,
228#define BROADCAST_ONE 1 228#define BROADCAST_ONE 1
229#define BROADCAST_REGISTERED 2 229#define BROADCAST_REGISTERED 2
230#define BROADCAST_PROMISC_ONLY 4 230#define BROADCAST_PROMISC_ONLY 4
231static int pfkey_broadcast(struct sk_buff *skb, 231static int pfkey_broadcast(struct sk_buff *skb, gfp_t allocation,
232 int broadcast_flags, struct sock *one_sk, 232 int broadcast_flags, struct sock *one_sk,
233 struct net *net) 233 struct net *net)
234{ 234{
@@ -278,7 +278,7 @@ static int pfkey_broadcast(struct sk_buff *skb,
278 rcu_read_unlock(); 278 rcu_read_unlock();
279 279
280 if (one_sk != NULL) 280 if (one_sk != NULL)
281 err = pfkey_broadcast_one(skb, &skb2, GFP_KERNEL, one_sk); 281 err = pfkey_broadcast_one(skb, &skb2, allocation, one_sk);
282 282
283 kfree_skb(skb2); 283 kfree_skb(skb2);
284 kfree_skb(skb); 284 kfree_skb(skb);
@@ -311,7 +311,7 @@ static int pfkey_do_dump(struct pfkey_sock *pfk)
311 hdr = (struct sadb_msg *) pfk->dump.skb->data; 311 hdr = (struct sadb_msg *) pfk->dump.skb->data;
312 hdr->sadb_msg_seq = 0; 312 hdr->sadb_msg_seq = 0;
313 hdr->sadb_msg_errno = rc; 313 hdr->sadb_msg_errno = rc;
314 pfkey_broadcast(pfk->dump.skb, BROADCAST_ONE, 314 pfkey_broadcast(pfk->dump.skb, GFP_ATOMIC, BROADCAST_ONE,
315 &pfk->sk, sock_net(&pfk->sk)); 315 &pfk->sk, sock_net(&pfk->sk));
316 pfk->dump.skb = NULL; 316 pfk->dump.skb = NULL;
317 } 317 }
@@ -355,7 +355,7 @@ static int pfkey_error(const struct sadb_msg *orig, int err, struct sock *sk)
355 hdr->sadb_msg_len = (sizeof(struct sadb_msg) / 355 hdr->sadb_msg_len = (sizeof(struct sadb_msg) /
356 sizeof(uint64_t)); 356 sizeof(uint64_t));
357 357
358 pfkey_broadcast(skb, BROADCAST_ONE, sk, sock_net(sk)); 358 pfkey_broadcast(skb, GFP_KERNEL, BROADCAST_ONE, sk, sock_net(sk));
359 359
360 return 0; 360 return 0;
361} 361}
@@ -1389,7 +1389,7 @@ static int pfkey_getspi(struct sock *sk, struct sk_buff *skb, const struct sadb_
1389 1389
1390 xfrm_state_put(x); 1390 xfrm_state_put(x);
1391 1391
1392 pfkey_broadcast(resp_skb, BROADCAST_ONE, sk, net); 1392 pfkey_broadcast(resp_skb, GFP_KERNEL, BROADCAST_ONE, sk, net);
1393 1393
1394 return 0; 1394 return 0;
1395} 1395}
@@ -1476,7 +1476,7 @@ static int key_notify_sa(struct xfrm_state *x, const struct km_event *c)
1476 hdr->sadb_msg_seq = c->seq; 1476 hdr->sadb_msg_seq = c->seq;
1477 hdr->sadb_msg_pid = c->portid; 1477 hdr->sadb_msg_pid = c->portid;
1478 1478
1479 pfkey_broadcast(skb, BROADCAST_ALL, NULL, xs_net(x)); 1479 pfkey_broadcast(skb, GFP_ATOMIC, BROADCAST_ALL, NULL, xs_net(x));
1480 1480
1481 return 0; 1481 return 0;
1482} 1482}
@@ -1589,7 +1589,7 @@ static int pfkey_get(struct sock *sk, struct sk_buff *skb, const struct sadb_msg
1589 out_hdr->sadb_msg_reserved = 0; 1589 out_hdr->sadb_msg_reserved = 0;
1590 out_hdr->sadb_msg_seq = hdr->sadb_msg_seq; 1590 out_hdr->sadb_msg_seq = hdr->sadb_msg_seq;
1591 out_hdr->sadb_msg_pid = hdr->sadb_msg_pid; 1591 out_hdr->sadb_msg_pid = hdr->sadb_msg_pid;
1592 pfkey_broadcast(out_skb, BROADCAST_ONE, sk, sock_net(sk)); 1592 pfkey_broadcast(out_skb, GFP_ATOMIC, BROADCAST_ONE, sk, sock_net(sk));
1593 1593
1594 return 0; 1594 return 0;
1595} 1595}
@@ -1694,8 +1694,8 @@ static int pfkey_register(struct sock *sk, struct sk_buff *skb, const struct sad
1694 return -ENOBUFS; 1694 return -ENOBUFS;
1695 } 1695 }
1696 1696
1697 pfkey_broadcast(supp_skb, BROADCAST_REGISTERED, sk, sock_net(sk)); 1697 pfkey_broadcast(supp_skb, GFP_KERNEL, BROADCAST_REGISTERED, sk,
1698 1698 sock_net(sk));
1699 return 0; 1699 return 0;
1700} 1700}
1701 1701
@@ -1712,7 +1712,8 @@ static int unicast_flush_resp(struct sock *sk, const struct sadb_msg *ihdr)
1712 hdr->sadb_msg_errno = (uint8_t) 0; 1712 hdr->sadb_msg_errno = (uint8_t) 0;
1713 hdr->sadb_msg_len = (sizeof(struct sadb_msg) / sizeof(uint64_t)); 1713 hdr->sadb_msg_len = (sizeof(struct sadb_msg) / sizeof(uint64_t));
1714 1714
1715 return pfkey_broadcast(skb, BROADCAST_ONE, sk, sock_net(sk)); 1715 return pfkey_broadcast(skb, GFP_ATOMIC, BROADCAST_ONE, sk,
1716 sock_net(sk));
1716} 1717}
1717 1718
1718static int key_notify_sa_flush(const struct km_event *c) 1719static int key_notify_sa_flush(const struct km_event *c)
@@ -1733,7 +1734,7 @@ static int key_notify_sa_flush(const struct km_event *c)
1733 hdr->sadb_msg_len = (sizeof(struct sadb_msg) / sizeof(uint64_t)); 1734 hdr->sadb_msg_len = (sizeof(struct sadb_msg) / sizeof(uint64_t));
1734 hdr->sadb_msg_reserved = 0; 1735 hdr->sadb_msg_reserved = 0;
1735 1736
1736 pfkey_broadcast(skb, BROADCAST_ALL, NULL, c->net); 1737 pfkey_broadcast(skb, GFP_ATOMIC, BROADCAST_ALL, NULL, c->net);
1737 1738
1738 return 0; 1739 return 0;
1739} 1740}
@@ -1790,7 +1791,7 @@ static int dump_sa(struct xfrm_state *x, int count, void *ptr)
1790 out_hdr->sadb_msg_pid = pfk->dump.msg_portid; 1791 out_hdr->sadb_msg_pid = pfk->dump.msg_portid;
1791 1792
1792 if (pfk->dump.skb) 1793 if (pfk->dump.skb)
1793 pfkey_broadcast(pfk->dump.skb, BROADCAST_ONE, 1794 pfkey_broadcast(pfk->dump.skb, GFP_ATOMIC, BROADCAST_ONE,
1794 &pfk->sk, sock_net(&pfk->sk)); 1795 &pfk->sk, sock_net(&pfk->sk));
1795 pfk->dump.skb = out_skb; 1796 pfk->dump.skb = out_skb;
1796 1797
@@ -1878,7 +1879,7 @@ static int pfkey_promisc(struct sock *sk, struct sk_buff *skb, const struct sadb
1878 new_hdr->sadb_msg_errno = 0; 1879 new_hdr->sadb_msg_errno = 0;
1879 } 1880 }
1880 1881
1881 pfkey_broadcast(skb, BROADCAST_ALL, NULL, sock_net(sk)); 1882 pfkey_broadcast(skb, GFP_KERNEL, BROADCAST_ALL, NULL, sock_net(sk));
1882 return 0; 1883 return 0;
1883} 1884}
1884 1885
@@ -2206,7 +2207,7 @@ static int key_notify_policy(struct xfrm_policy *xp, int dir, const struct km_ev
2206 out_hdr->sadb_msg_errno = 0; 2207 out_hdr->sadb_msg_errno = 0;
2207 out_hdr->sadb_msg_seq = c->seq; 2208 out_hdr->sadb_msg_seq = c->seq;
2208 out_hdr->sadb_msg_pid = c->portid; 2209 out_hdr->sadb_msg_pid = c->portid;
2209 pfkey_broadcast(out_skb, BROADCAST_ALL, NULL, xp_net(xp)); 2210 pfkey_broadcast(out_skb, GFP_ATOMIC, BROADCAST_ALL, NULL, xp_net(xp));
2210 return 0; 2211 return 0;
2211 2212
2212} 2213}
@@ -2426,7 +2427,7 @@ static int key_pol_get_resp(struct sock *sk, struct xfrm_policy *xp, const struc
2426 out_hdr->sadb_msg_errno = 0; 2427 out_hdr->sadb_msg_errno = 0;
2427 out_hdr->sadb_msg_seq = hdr->sadb_msg_seq; 2428 out_hdr->sadb_msg_seq = hdr->sadb_msg_seq;
2428 out_hdr->sadb_msg_pid = hdr->sadb_msg_pid; 2429 out_hdr->sadb_msg_pid = hdr->sadb_msg_pid;
2429 pfkey_broadcast(out_skb, BROADCAST_ONE, sk, xp_net(xp)); 2430 pfkey_broadcast(out_skb, GFP_ATOMIC, BROADCAST_ONE, sk, xp_net(xp));
2430 err = 0; 2431 err = 0;
2431 2432
2432out: 2433out:
@@ -2682,7 +2683,7 @@ static int dump_sp(struct xfrm_policy *xp, int dir, int count, void *ptr)
2682 out_hdr->sadb_msg_pid = pfk->dump.msg_portid; 2683 out_hdr->sadb_msg_pid = pfk->dump.msg_portid;
2683 2684
2684 if (pfk->dump.skb) 2685 if (pfk->dump.skb)
2685 pfkey_broadcast(pfk->dump.skb, BROADCAST_ONE, 2686 pfkey_broadcast(pfk->dump.skb, GFP_ATOMIC, BROADCAST_ONE,
2686 &pfk->sk, sock_net(&pfk->sk)); 2687 &pfk->sk, sock_net(&pfk->sk));
2687 pfk->dump.skb = out_skb; 2688 pfk->dump.skb = out_skb;
2688 2689
@@ -2739,7 +2740,7 @@ static int key_notify_policy_flush(const struct km_event *c)
2739 hdr->sadb_msg_satype = SADB_SATYPE_UNSPEC; 2740 hdr->sadb_msg_satype = SADB_SATYPE_UNSPEC;
2740 hdr->sadb_msg_len = (sizeof(struct sadb_msg) / sizeof(uint64_t)); 2741 hdr->sadb_msg_len = (sizeof(struct sadb_msg) / sizeof(uint64_t));
2741 hdr->sadb_msg_reserved = 0; 2742 hdr->sadb_msg_reserved = 0;
2742 pfkey_broadcast(skb_out, BROADCAST_ALL, NULL, c->net); 2743 pfkey_broadcast(skb_out, GFP_ATOMIC, BROADCAST_ALL, NULL, c->net);
2743 return 0; 2744 return 0;
2744 2745
2745} 2746}
@@ -2803,7 +2804,7 @@ static int pfkey_process(struct sock *sk, struct sk_buff *skb, const struct sadb
2803 void *ext_hdrs[SADB_EXT_MAX]; 2804 void *ext_hdrs[SADB_EXT_MAX];
2804 int err; 2805 int err;
2805 2806
2806 pfkey_broadcast(skb_clone(skb, GFP_KERNEL), 2807 pfkey_broadcast(skb_clone(skb, GFP_KERNEL), GFP_KERNEL,
2807 BROADCAST_PROMISC_ONLY, NULL, sock_net(sk)); 2808 BROADCAST_PROMISC_ONLY, NULL, sock_net(sk));
2808 2809
2809 memset(ext_hdrs, 0, sizeof(ext_hdrs)); 2810 memset(ext_hdrs, 0, sizeof(ext_hdrs));
@@ -3024,7 +3025,8 @@ static int key_notify_sa_expire(struct xfrm_state *x, const struct km_event *c)
3024 out_hdr->sadb_msg_seq = 0; 3025 out_hdr->sadb_msg_seq = 0;
3025 out_hdr->sadb_msg_pid = 0; 3026 out_hdr->sadb_msg_pid = 0;
3026 3027
3027 pfkey_broadcast(out_skb, BROADCAST_REGISTERED, NULL, xs_net(x)); 3028 pfkey_broadcast(out_skb, GFP_ATOMIC, BROADCAST_REGISTERED, NULL,
3029 xs_net(x));
3028 return 0; 3030 return 0;
3029} 3031}
3030 3032
@@ -3212,7 +3214,8 @@ static int pfkey_send_acquire(struct xfrm_state *x, struct xfrm_tmpl *t, struct
3212 xfrm_ctx->ctx_len); 3214 xfrm_ctx->ctx_len);
3213 } 3215 }
3214 3216
3215 return pfkey_broadcast(skb, BROADCAST_REGISTERED, NULL, xs_net(x)); 3217 return pfkey_broadcast(skb, GFP_ATOMIC, BROADCAST_REGISTERED, NULL,
3218 xs_net(x));
3216} 3219}
3217 3220
3218static struct xfrm_policy *pfkey_compile_policy(struct sock *sk, int opt, 3221static struct xfrm_policy *pfkey_compile_policy(struct sock *sk, int opt,
@@ -3408,7 +3411,8 @@ static int pfkey_send_new_mapping(struct xfrm_state *x, xfrm_address_t *ipaddr,
3408 n_port->sadb_x_nat_t_port_port = sport; 3411 n_port->sadb_x_nat_t_port_port = sport;
3409 n_port->sadb_x_nat_t_port_reserved = 0; 3412 n_port->sadb_x_nat_t_port_reserved = 0;
3410 3413
3411 return pfkey_broadcast(skb, BROADCAST_REGISTERED, NULL, xs_net(x)); 3414 return pfkey_broadcast(skb, GFP_ATOMIC, BROADCAST_REGISTERED, NULL,
3415 xs_net(x));
3412} 3416}
3413 3417
3414#ifdef CONFIG_NET_KEY_MIGRATE 3418#ifdef CONFIG_NET_KEY_MIGRATE
@@ -3599,7 +3603,7 @@ static int pfkey_send_migrate(const struct xfrm_selector *sel, u8 dir, u8 type,
3599 } 3603 }
3600 3604
3601 /* broadcast migrate message to sockets */ 3605 /* broadcast migrate message to sockets */
3602 pfkey_broadcast(skb, BROADCAST_ALL, NULL, &init_net); 3606 pfkey_broadcast(skb, GFP_ATOMIC, BROADCAST_ALL, NULL, &init_net);
3603 3607
3604 return 0; 3608 return 0;
3605 3609
diff --git a/net/mac80211/agg-rx.c b/net/mac80211/agg-rx.c
index 8708cbe8af5b..2b36eff5d97e 100644
--- a/net/mac80211/agg-rx.c
+++ b/net/mac80211/agg-rx.c
@@ -7,7 +7,7 @@
7 * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz> 7 * Copyright 2006-2007 Jiri Benc <jbenc@suse.cz>
8 * Copyright 2007, Michael Wu <flamingice@sourmilk.net> 8 * Copyright 2007, Michael Wu <flamingice@sourmilk.net>
9 * Copyright 2007-2010, Intel Corporation 9 * Copyright 2007-2010, Intel Corporation
10 * Copyright(c) 2015 Intel Deutschland GmbH 10 * Copyright(c) 2015-2017 Intel Deutschland GmbH
11 * 11 *
12 * This program is free software; you can redistribute it and/or modify 12 * This program is free software; you can redistribute it and/or modify
13 * it under the terms of the GNU General Public License version 2 as 13 * it under the terms of the GNU General Public License version 2 as
@@ -466,3 +466,23 @@ void ieee80211_manage_rx_ba_offl(struct ieee80211_vif *vif,
466 rcu_read_unlock(); 466 rcu_read_unlock();
467} 467}
468EXPORT_SYMBOL(ieee80211_manage_rx_ba_offl); 468EXPORT_SYMBOL(ieee80211_manage_rx_ba_offl);
469
470void ieee80211_rx_ba_timer_expired(struct ieee80211_vif *vif,
471 const u8 *addr, unsigned int tid)
472{
473 struct ieee80211_sub_if_data *sdata = vif_to_sdata(vif);
474 struct ieee80211_local *local = sdata->local;
475 struct sta_info *sta;
476
477 rcu_read_lock();
478 sta = sta_info_get_bss(sdata, addr);
479 if (!sta)
480 goto unlock;
481
482 set_bit(tid, sta->ampdu_mlme.tid_rx_timer_expired);
483 ieee80211_queue_work(&local->hw, &sta->ampdu_mlme.work);
484
485 unlock:
486 rcu_read_unlock();
487}
488EXPORT_SYMBOL(ieee80211_rx_ba_timer_expired);
diff --git a/net/netfilter/core.c b/net/netfilter/core.c
index 552d606e57ca..974cf2a3795a 100644
--- a/net/netfilter/core.c
+++ b/net/netfilter/core.c
@@ -227,114 +227,6 @@ void nf_unregister_net_hooks(struct net *net, const struct nf_hook_ops *reg,
227} 227}
228EXPORT_SYMBOL(nf_unregister_net_hooks); 228EXPORT_SYMBOL(nf_unregister_net_hooks);
229 229
230static LIST_HEAD(nf_hook_list);
231
232static int _nf_register_hook(struct nf_hook_ops *reg)
233{
234 struct net *net, *last;
235 int ret;
236
237 for_each_net(net) {
238 ret = nf_register_net_hook(net, reg);
239 if (ret && ret != -ENOENT)
240 goto rollback;
241 }
242 list_add_tail(&reg->list, &nf_hook_list);
243
244 return 0;
245rollback:
246 last = net;
247 for_each_net(net) {
248 if (net == last)
249 break;
250 nf_unregister_net_hook(net, reg);
251 }
252 return ret;
253}
254
255int nf_register_hook(struct nf_hook_ops *reg)
256{
257 int ret;
258
259 rtnl_lock();
260 ret = _nf_register_hook(reg);
261 rtnl_unlock();
262
263 return ret;
264}
265EXPORT_SYMBOL(nf_register_hook);
266
267static void _nf_unregister_hook(struct nf_hook_ops *reg)
268{
269 struct net *net;
270
271 list_del(&reg->list);
272 for_each_net(net)
273 nf_unregister_net_hook(net, reg);
274}
275
276void nf_unregister_hook(struct nf_hook_ops *reg)
277{
278 rtnl_lock();
279 _nf_unregister_hook(reg);
280 rtnl_unlock();
281}
282EXPORT_SYMBOL(nf_unregister_hook);
283
284int nf_register_hooks(struct nf_hook_ops *reg, unsigned int n)
285{
286 unsigned int i;
287 int err = 0;
288
289 for (i = 0; i < n; i++) {
290 err = nf_register_hook(&reg[i]);
291 if (err)
292 goto err;
293 }
294 return err;
295
296err:
297 if (i > 0)
298 nf_unregister_hooks(reg, i);
299 return err;
300}
301EXPORT_SYMBOL(nf_register_hooks);
302
303/* Caller MUST take rtnl_lock() */
304int _nf_register_hooks(struct nf_hook_ops *reg, unsigned int n)
305{
306 unsigned int i;
307 int err = 0;
308
309 for (i = 0; i < n; i++) {
310 err = _nf_register_hook(&reg[i]);
311 if (err)
312 goto err;
313 }
314 return err;
315
316err:
317 if (i > 0)
318 _nf_unregister_hooks(reg, i);
319 return err;
320}
321EXPORT_SYMBOL(_nf_register_hooks);
322
323void nf_unregister_hooks(struct nf_hook_ops *reg, unsigned int n)
324{
325 while (n-- > 0)
326 nf_unregister_hook(&reg[n]);
327}
328EXPORT_SYMBOL(nf_unregister_hooks);
329
330/* Caller MUST take rtnl_lock */
331void _nf_unregister_hooks(struct nf_hook_ops *reg, unsigned int n)
332{
333 while (n-- > 0)
334 _nf_unregister_hook(&reg[n]);
335}
336EXPORT_SYMBOL(_nf_unregister_hooks);
337
338/* Returns 1 if okfn() needs to be executed by the caller, 230/* Returns 1 if okfn() needs to be executed by the caller,
339 * -EPERM for NF_DROP, 0 otherwise. Caller must hold rcu_read_lock. */ 231 * -EPERM for NF_DROP, 0 otherwise. Caller must hold rcu_read_lock. */
340int nf_hook_slow(struct sk_buff *skb, struct nf_hook_state *state, 232int nf_hook_slow(struct sk_buff *skb, struct nf_hook_state *state,
@@ -450,40 +342,9 @@ void (*nf_nat_decode_session_hook)(struct sk_buff *, struct flowi *);
450EXPORT_SYMBOL(nf_nat_decode_session_hook); 342EXPORT_SYMBOL(nf_nat_decode_session_hook);
451#endif 343#endif
452 344
453static int nf_register_hook_list(struct net *net)
454{
455 struct nf_hook_ops *elem;
456 int ret;
457
458 rtnl_lock();
459 list_for_each_entry(elem, &nf_hook_list, list) {
460 ret = nf_register_net_hook(net, elem);
461 if (ret && ret != -ENOENT)
462 goto out_undo;
463 }
464 rtnl_unlock();
465 return 0;
466
467out_undo:
468 list_for_each_entry_continue_reverse(elem, &nf_hook_list, list)
469 nf_unregister_net_hook(net, elem);
470 rtnl_unlock();
471 return ret;
472}
473
474static void nf_unregister_hook_list(struct net *net)
475{
476 struct nf_hook_ops *elem;
477
478 rtnl_lock();
479 list_for_each_entry(elem, &nf_hook_list, list)
480 nf_unregister_net_hook(net, elem);
481 rtnl_unlock();
482}
483
484static int __net_init netfilter_net_init(struct net *net) 345static int __net_init netfilter_net_init(struct net *net)
485{ 346{
486 int i, h, ret; 347 int i, h;
487 348
488 for (i = 0; i < ARRAY_SIZE(net->nf.hooks); i++) { 349 for (i = 0; i < ARRAY_SIZE(net->nf.hooks); i++) {
489 for (h = 0; h < NF_MAX_HOOKS; h++) 350 for (h = 0; h < NF_MAX_HOOKS; h++)
@@ -500,16 +361,12 @@ static int __net_init netfilter_net_init(struct net *net)
500 return -ENOMEM; 361 return -ENOMEM;
501 } 362 }
502#endif 363#endif
503 ret = nf_register_hook_list(net);
504 if (ret)
505 remove_proc_entry("netfilter", net->proc_net);
506 364
507 return ret; 365 return 0;
508} 366}
509 367
510static void __net_exit netfilter_net_exit(struct net *net) 368static void __net_exit netfilter_net_exit(struct net *net)
511{ 369{
512 nf_unregister_hook_list(net);
513 remove_proc_entry("netfilter", net->proc_net); 370 remove_proc_entry("netfilter", net->proc_net);
514} 371}
515 372
diff --git a/net/netfilter/nf_conntrack_expect.c b/net/netfilter/nf_conntrack_expect.c
index e03d16ed550d..899c2c36da13 100644
--- a/net/netfilter/nf_conntrack_expect.c
+++ b/net/netfilter/nf_conntrack_expect.c
@@ -422,7 +422,7 @@ static inline int __nf_ct_expect_check(struct nf_conntrack_expect *expect)
422 h = nf_ct_expect_dst_hash(net, &expect->tuple); 422 h = nf_ct_expect_dst_hash(net, &expect->tuple);
423 hlist_for_each_entry_safe(i, next, &nf_ct_expect_hash[h], hnode) { 423 hlist_for_each_entry_safe(i, next, &nf_ct_expect_hash[h], hnode) {
424 if (expect_matches(i, expect)) { 424 if (expect_matches(i, expect)) {
425 if (nf_ct_remove_expect(expect)) 425 if (nf_ct_remove_expect(i))
426 break; 426 break;
427 } else if (expect_clash(i, expect)) { 427 } else if (expect_clash(i, expect)) {
428 ret = -EBUSY; 428 ret = -EBUSY;
diff --git a/net/netfilter/nf_nat_core.c b/net/netfilter/nf_nat_core.c
index 832c5a08d9a5..eb541786ccb7 100644
--- a/net/netfilter/nf_nat_core.c
+++ b/net/netfilter/nf_nat_core.c
@@ -222,20 +222,21 @@ find_appropriate_src(struct net *net,
222 .tuple = tuple, 222 .tuple = tuple,
223 .zone = zone 223 .zone = zone
224 }; 224 };
225 struct rhlist_head *hl; 225 struct rhlist_head *hl, *h;
226 226
227 hl = rhltable_lookup(&nf_nat_bysource_table, &key, 227 hl = rhltable_lookup(&nf_nat_bysource_table, &key,
228 nf_nat_bysource_params); 228 nf_nat_bysource_params);
229 if (!hl)
230 return 0;
231 229
232 ct = container_of(hl, typeof(*ct), nat_bysource); 230 rhl_for_each_entry_rcu(ct, h, hl, nat_bysource) {
231 nf_ct_invert_tuplepr(result,
232 &ct->tuplehash[IP_CT_DIR_REPLY].tuple);
233 result->dst = tuple->dst;
233 234
234 nf_ct_invert_tuplepr(result, 235 if (in_range(l3proto, l4proto, result, range))
235 &ct->tuplehash[IP_CT_DIR_REPLY].tuple); 236 return 1;
236 result->dst = tuple->dst; 237 }
237 238
238 return in_range(l3proto, l4proto, result, range); 239 return 0;
239} 240}
240 241
241/* For [FUTURE] fragmentation handling, we want the least-used 242/* For [FUTURE] fragmentation handling, we want the least-used
diff --git a/net/netfilter/nfnetlink.c b/net/netfilter/nfnetlink.c
index 92b05e188fd1..733d3e4a30d8 100644
--- a/net/netfilter/nfnetlink.c
+++ b/net/netfilter/nfnetlink.c
@@ -472,8 +472,7 @@ static void nfnetlink_rcv_skb_batch(struct sk_buff *skb, struct nlmsghdr *nlh)
472 if (msglen > skb->len) 472 if (msglen > skb->len)
473 msglen = skb->len; 473 msglen = skb->len;
474 474
475 if (nlh->nlmsg_len < NLMSG_HDRLEN || 475 if (skb->len < NLMSG_HDRLEN + sizeof(struct nfgenmsg))
476 skb->len < NLMSG_HDRLEN + sizeof(struct nfgenmsg))
477 return; 476 return;
478 477
479 err = nla_parse(cda, NFNL_BATCH_MAX, attr, attrlen, nfnl_batch_policy, 478 err = nla_parse(cda, NFNL_BATCH_MAX, attr, attrlen, nfnl_batch_policy,
@@ -500,7 +499,8 @@ static void nfnetlink_rcv(struct sk_buff *skb)
500{ 499{
501 struct nlmsghdr *nlh = nlmsg_hdr(skb); 500 struct nlmsghdr *nlh = nlmsg_hdr(skb);
502 501
503 if (nlh->nlmsg_len < NLMSG_HDRLEN || 502 if (skb->len < NLMSG_HDRLEN ||
503 nlh->nlmsg_len < NLMSG_HDRLEN ||
504 skb->len < nlh->nlmsg_len) 504 skb->len < nlh->nlmsg_len)
505 return; 505 return;
506 506
diff --git a/net/openvswitch/actions.c b/net/openvswitch/actions.c
index e4610676299b..a54a556fcdb5 100644
--- a/net/openvswitch/actions.c
+++ b/net/openvswitch/actions.c
@@ -1337,6 +1337,7 @@ int ovs_execute_actions(struct datapath *dp, struct sk_buff *skb,
1337 goto out; 1337 goto out;
1338 } 1338 }
1339 1339
1340 OVS_CB(skb)->acts_origlen = acts->orig_len;
1340 err = do_execute_actions(dp, skb, key, 1341 err = do_execute_actions(dp, skb, key,
1341 acts->actions, acts->actions_len); 1342 acts->actions, acts->actions_len);
1342 1343
diff --git a/net/openvswitch/conntrack.c b/net/openvswitch/conntrack.c
index 08679ebb3068..03859e386b47 100644
--- a/net/openvswitch/conntrack.c
+++ b/net/openvswitch/conntrack.c
@@ -629,6 +629,34 @@ ovs_ct_find_existing(struct net *net, const struct nf_conntrack_zone *zone,
629 return ct; 629 return ct;
630} 630}
631 631
632static
633struct nf_conn *ovs_ct_executed(struct net *net,
634 const struct sw_flow_key *key,
635 const struct ovs_conntrack_info *info,
636 struct sk_buff *skb,
637 bool *ct_executed)
638{
639 struct nf_conn *ct = NULL;
640
641 /* If no ct, check if we have evidence that an existing conntrack entry
642 * might be found for this skb. This happens when we lose a skb->_nfct
643 * due to an upcall, or if the direction is being forced. If the
644 * connection was not confirmed, it is not cached and needs to be run
645 * through conntrack again.
646 */
647 *ct_executed = (key->ct_state & OVS_CS_F_TRACKED) &&
648 !(key->ct_state & OVS_CS_F_INVALID) &&
649 (key->ct_zone == info->zone.id);
650
651 if (*ct_executed || (!key->ct_state && info->force)) {
652 ct = ovs_ct_find_existing(net, &info->zone, info->family, skb,
653 !!(key->ct_state &
654 OVS_CS_F_NAT_MASK));
655 }
656
657 return ct;
658}
659
632/* Determine whether skb->_nfct is equal to the result of conntrack lookup. */ 660/* Determine whether skb->_nfct is equal to the result of conntrack lookup. */
633static bool skb_nfct_cached(struct net *net, 661static bool skb_nfct_cached(struct net *net,
634 const struct sw_flow_key *key, 662 const struct sw_flow_key *key,
@@ -637,24 +665,17 @@ static bool skb_nfct_cached(struct net *net,
637{ 665{
638 enum ip_conntrack_info ctinfo; 666 enum ip_conntrack_info ctinfo;
639 struct nf_conn *ct; 667 struct nf_conn *ct;
668 bool ct_executed = true;
640 669
641 ct = nf_ct_get(skb, &ctinfo); 670 ct = nf_ct_get(skb, &ctinfo);
642 /* If no ct, check if we have evidence that an existing conntrack entry
643 * might be found for this skb. This happens when we lose a skb->_nfct
644 * due to an upcall. If the connection was not confirmed, it is not
645 * cached and needs to be run through conntrack again.
646 */
647 if (!ct && key->ct_state & OVS_CS_F_TRACKED &&
648 !(key->ct_state & OVS_CS_F_INVALID) &&
649 key->ct_zone == info->zone.id) {
650 ct = ovs_ct_find_existing(net, &info->zone, info->family, skb,
651 !!(key->ct_state
652 & OVS_CS_F_NAT_MASK));
653 if (ct)
654 nf_ct_get(skb, &ctinfo);
655 }
656 if (!ct) 671 if (!ct)
672 ct = ovs_ct_executed(net, key, info, skb, &ct_executed);
673
674 if (ct)
675 nf_ct_get(skb, &ctinfo);
676 else
657 return false; 677 return false;
678
658 if (!net_eq(net, read_pnet(&ct->ct_net))) 679 if (!net_eq(net, read_pnet(&ct->ct_net)))
659 return false; 680 return false;
660 if (!nf_ct_zone_equal_any(info->ct, nf_ct_zone(ct))) 681 if (!nf_ct_zone_equal_any(info->ct, nf_ct_zone(ct)))
@@ -679,7 +700,7 @@ static bool skb_nfct_cached(struct net *net,
679 return false; 700 return false;
680 } 701 }
681 702
682 return true; 703 return ct_executed;
683} 704}
684 705
685#ifdef CONFIG_NF_NAT_NEEDED 706#ifdef CONFIG_NF_NAT_NEEDED
@@ -1289,8 +1310,8 @@ static int parse_ct(const struct nlattr *attr, struct ovs_conntrack_info *info,
1289 1310
1290 nla_for_each_nested(a, attr, rem) { 1311 nla_for_each_nested(a, attr, rem) {
1291 int type = nla_type(a); 1312 int type = nla_type(a);
1292 int maxlen = ovs_ct_attr_lens[type].maxlen; 1313 int maxlen;
1293 int minlen = ovs_ct_attr_lens[type].minlen; 1314 int minlen;
1294 1315
1295 if (type > OVS_CT_ATTR_MAX) { 1316 if (type > OVS_CT_ATTR_MAX) {
1296 OVS_NLERR(log, 1317 OVS_NLERR(log,
@@ -1298,6 +1319,9 @@ static int parse_ct(const struct nlattr *attr, struct ovs_conntrack_info *info,
1298 type, OVS_CT_ATTR_MAX); 1319 type, OVS_CT_ATTR_MAX);
1299 return -EINVAL; 1320 return -EINVAL;
1300 } 1321 }
1322
1323 maxlen = ovs_ct_attr_lens[type].maxlen;
1324 minlen = ovs_ct_attr_lens[type].minlen;
1301 if (nla_len(a) < minlen || nla_len(a) > maxlen) { 1325 if (nla_len(a) < minlen || nla_len(a) > maxlen) {
1302 OVS_NLERR(log, 1326 OVS_NLERR(log,
1303 "Conntrack attr type has unexpected length (type=%d, length=%d, expected=%d)", 1327 "Conntrack attr type has unexpected length (type=%d, length=%d, expected=%d)",
diff --git a/net/openvswitch/datapath.c b/net/openvswitch/datapath.c
index 45fe8c8a884d..6b44fe405282 100644
--- a/net/openvswitch/datapath.c
+++ b/net/openvswitch/datapath.c
@@ -381,7 +381,7 @@ static int queue_gso_packets(struct datapath *dp, struct sk_buff *skb,
381} 381}
382 382
383static size_t upcall_msg_size(const struct dp_upcall_info *upcall_info, 383static size_t upcall_msg_size(const struct dp_upcall_info *upcall_info,
384 unsigned int hdrlen) 384 unsigned int hdrlen, int actions_attrlen)
385{ 385{
386 size_t size = NLMSG_ALIGN(sizeof(struct ovs_header)) 386 size_t size = NLMSG_ALIGN(sizeof(struct ovs_header))
387 + nla_total_size(hdrlen) /* OVS_PACKET_ATTR_PACKET */ 387 + nla_total_size(hdrlen) /* OVS_PACKET_ATTR_PACKET */
@@ -398,7 +398,7 @@ static size_t upcall_msg_size(const struct dp_upcall_info *upcall_info,
398 398
399 /* OVS_PACKET_ATTR_ACTIONS */ 399 /* OVS_PACKET_ATTR_ACTIONS */
400 if (upcall_info->actions_len) 400 if (upcall_info->actions_len)
401 size += nla_total_size(upcall_info->actions_len); 401 size += nla_total_size(actions_attrlen);
402 402
403 /* OVS_PACKET_ATTR_MRU */ 403 /* OVS_PACKET_ATTR_MRU */
404 if (upcall_info->mru) 404 if (upcall_info->mru)
@@ -465,7 +465,8 @@ static int queue_userspace_packet(struct datapath *dp, struct sk_buff *skb,
465 else 465 else
466 hlen = skb->len; 466 hlen = skb->len;
467 467
468 len = upcall_msg_size(upcall_info, hlen - cutlen); 468 len = upcall_msg_size(upcall_info, hlen - cutlen,
469 OVS_CB(skb)->acts_origlen);
469 user_skb = genlmsg_new(len, GFP_ATOMIC); 470 user_skb = genlmsg_new(len, GFP_ATOMIC);
470 if (!user_skb) { 471 if (!user_skb) {
471 err = -ENOMEM; 472 err = -ENOMEM;
diff --git a/net/openvswitch/datapath.h b/net/openvswitch/datapath.h
index 5d8dcd88815f..480600649d0b 100644
--- a/net/openvswitch/datapath.h
+++ b/net/openvswitch/datapath.h
@@ -99,11 +99,13 @@ struct datapath {
99 * when a packet is received by OVS. 99 * when a packet is received by OVS.
100 * @mru: The maximum received fragement size; 0 if the packet is not 100 * @mru: The maximum received fragement size; 0 if the packet is not
101 * fragmented. 101 * fragmented.
102 * @acts_origlen: The netlink size of the flow actions applied to this skb.
102 * @cutlen: The number of bytes from the packet end to be removed. 103 * @cutlen: The number of bytes from the packet end to be removed.
103 */ 104 */
104struct ovs_skb_cb { 105struct ovs_skb_cb {
105 struct vport *input_vport; 106 struct vport *input_vport;
106 u16 mru; 107 u16 mru;
108 u16 acts_origlen;
107 u32 cutlen; 109 u32 cutlen;
108}; 110};
109#define OVS_CB(skb) ((struct ovs_skb_cb *)(skb)->cb) 111#define OVS_CB(skb) ((struct ovs_skb_cb *)(skb)->cb)
diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c
index e3beb28203eb..008a45ca3112 100644
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
@@ -214,6 +214,7 @@ static void prb_clear_rxhash(struct tpacket_kbdq_core *,
214static void prb_fill_vlan_info(struct tpacket_kbdq_core *, 214static void prb_fill_vlan_info(struct tpacket_kbdq_core *,
215 struct tpacket3_hdr *); 215 struct tpacket3_hdr *);
216static void packet_flush_mclist(struct sock *sk); 216static void packet_flush_mclist(struct sock *sk);
217static void packet_pick_tx_queue(struct net_device *dev, struct sk_buff *skb);
217 218
218struct packet_skb_cb { 219struct packet_skb_cb {
219 union { 220 union {
@@ -260,6 +261,7 @@ static int packet_direct_xmit(struct sk_buff *skb)
260 if (skb != orig_skb) 261 if (skb != orig_skb)
261 goto drop; 262 goto drop;
262 263
264 packet_pick_tx_queue(dev, skb);
263 txq = skb_get_tx_queue(dev, skb); 265 txq = skb_get_tx_queue(dev, skb);
264 266
265 local_bh_disable(); 267 local_bh_disable();
@@ -2747,8 +2749,6 @@ tpacket_error:
2747 goto tpacket_error; 2749 goto tpacket_error;
2748 } 2750 }
2749 2751
2750 packet_pick_tx_queue(dev, skb);
2751
2752 skb->destructor = tpacket_destruct_skb; 2752 skb->destructor = tpacket_destruct_skb;
2753 __packet_set_status(po, ph, TP_STATUS_SENDING); 2753 __packet_set_status(po, ph, TP_STATUS_SENDING);
2754 packet_inc_pending(&po->tx_ring); 2754 packet_inc_pending(&po->tx_ring);
@@ -2931,8 +2931,6 @@ static int packet_snd(struct socket *sock, struct msghdr *msg, size_t len)
2931 skb->priority = sk->sk_priority; 2931 skb->priority = sk->sk_priority;
2932 skb->mark = sockc.mark; 2932 skb->mark = sockc.mark;
2933 2933
2934 packet_pick_tx_queue(dev, skb);
2935
2936 if (po->has_vnet_hdr) { 2934 if (po->has_vnet_hdr) {
2937 err = virtio_net_hdr_to_skb(skb, &vnet_hdr, vio_le()); 2935 err = virtio_net_hdr_to_skb(skb, &vnet_hdr, vio_le());
2938 if (err) 2936 if (err)
@@ -3702,14 +3700,19 @@ packet_setsockopt(struct socket *sock, int level, int optname, char __user *optv
3702 3700
3703 if (optlen != sizeof(val)) 3701 if (optlen != sizeof(val))
3704 return -EINVAL; 3702 return -EINVAL;
3705 if (po->rx_ring.pg_vec || po->tx_ring.pg_vec)
3706 return -EBUSY;
3707 if (copy_from_user(&val, optval, sizeof(val))) 3703 if (copy_from_user(&val, optval, sizeof(val)))
3708 return -EFAULT; 3704 return -EFAULT;
3709 if (val > INT_MAX) 3705 if (val > INT_MAX)
3710 return -EINVAL; 3706 return -EINVAL;
3711 po->tp_reserve = val; 3707 lock_sock(sk);
3712 return 0; 3708 if (po->rx_ring.pg_vec || po->tx_ring.pg_vec) {
3709 ret = -EBUSY;
3710 } else {
3711 po->tp_reserve = val;
3712 ret = 0;
3713 }
3714 release_sock(sk);
3715 return ret;
3713 } 3716 }
3714 case PACKET_LOSS: 3717 case PACKET_LOSS:
3715 { 3718 {
@@ -4331,7 +4334,7 @@ static int packet_set_ring(struct sock *sk, union tpacket_req_u *req_u,
4331 register_prot_hook(sk); 4334 register_prot_hook(sk);
4332 } 4335 }
4333 spin_unlock(&po->bind_lock); 4336 spin_unlock(&po->bind_lock);
4334 if (closing && (po->tp_version > TPACKET_V2)) { 4337 if (pg_vec && (po->tp_version > TPACKET_V2)) {
4335 /* Because we don't support block-based V3 on tx-ring */ 4338 /* Because we don't support block-based V3 on tx-ring */
4336 if (!tx_ring) 4339 if (!tx_ring)
4337 prb_shutdown_retire_blk_timer(po, rb_queue); 4340 prb_shutdown_retire_blk_timer(po, rb_queue);
diff --git a/net/rds/ib_recv.c b/net/rds/ib_recv.c
index e10624aa6959..9722bf839d9d 100644
--- a/net/rds/ib_recv.c
+++ b/net/rds/ib_recv.c
@@ -1015,8 +1015,10 @@ void rds_ib_recv_cqe_handler(struct rds_ib_connection *ic,
1015 if (rds_ib_ring_empty(&ic->i_recv_ring)) 1015 if (rds_ib_ring_empty(&ic->i_recv_ring))
1016 rds_ib_stats_inc(s_ib_rx_ring_empty); 1016 rds_ib_stats_inc(s_ib_rx_ring_empty);
1017 1017
1018 if (rds_ib_ring_low(&ic->i_recv_ring)) 1018 if (rds_ib_ring_low(&ic->i_recv_ring)) {
1019 rds_ib_recv_refill(conn, 0, GFP_NOWAIT); 1019 rds_ib_recv_refill(conn, 0, GFP_NOWAIT);
1020 rds_ib_stats_inc(s_ib_rx_refill_from_cq);
1021 }
1020} 1022}
1021 1023
1022int rds_ib_recv_path(struct rds_conn_path *cp) 1024int rds_ib_recv_path(struct rds_conn_path *cp)
@@ -1029,6 +1031,7 @@ int rds_ib_recv_path(struct rds_conn_path *cp)
1029 if (rds_conn_up(conn)) { 1031 if (rds_conn_up(conn)) {
1030 rds_ib_attempt_ack(ic); 1032 rds_ib_attempt_ack(ic);
1031 rds_ib_recv_refill(conn, 0, GFP_KERNEL); 1033 rds_ib_recv_refill(conn, 0, GFP_KERNEL);
1034 rds_ib_stats_inc(s_ib_rx_refill_from_thread);
1032 } 1035 }
1033 1036
1034 return ret; 1037 return ret;
diff --git a/net/rds/send.c b/net/rds/send.c
index e81aa176f4e2..41b9f0f5bb9c 100644
--- a/net/rds/send.c
+++ b/net/rds/send.c
@@ -170,8 +170,8 @@ restart:
170 * The acquire_in_xmit() check above ensures that only one 170 * The acquire_in_xmit() check above ensures that only one
171 * caller can increment c_send_gen at any time. 171 * caller can increment c_send_gen at any time.
172 */ 172 */
173 cp->cp_send_gen++; 173 send_gen = READ_ONCE(cp->cp_send_gen) + 1;
174 send_gen = cp->cp_send_gen; 174 WRITE_ONCE(cp->cp_send_gen, send_gen);
175 175
176 /* 176 /*
177 * rds_conn_shutdown() sets the conn state and then tests RDS_IN_XMIT, 177 * rds_conn_shutdown() sets the conn state and then tests RDS_IN_XMIT,
@@ -431,7 +431,7 @@ over_batch:
431 smp_mb(); 431 smp_mb();
432 if ((test_bit(0, &conn->c_map_queued) || 432 if ((test_bit(0, &conn->c_map_queued) ||
433 !list_empty(&cp->cp_send_queue)) && 433 !list_empty(&cp->cp_send_queue)) &&
434 send_gen == cp->cp_send_gen) { 434 send_gen == READ_ONCE(cp->cp_send_gen)) {
435 rds_stats_inc(s_send_lock_queue_raced); 435 rds_stats_inc(s_send_lock_queue_raced);
436 if (batch_count < send_batch_count) 436 if (batch_count < send_batch_count)
437 goto restart; 437 goto restart;
diff --git a/net/rxrpc/call_accept.c b/net/rxrpc/call_accept.c
index dd30d74824b0..ec3383f97d4c 100644
--- a/net/rxrpc/call_accept.c
+++ b/net/rxrpc/call_accept.c
@@ -223,6 +223,7 @@ void rxrpc_discard_prealloc(struct rxrpc_sock *rx)
223 tail = b->call_backlog_tail; 223 tail = b->call_backlog_tail;
224 while (CIRC_CNT(head, tail, size) > 0) { 224 while (CIRC_CNT(head, tail, size) > 0) {
225 struct rxrpc_call *call = b->call_backlog[tail]; 225 struct rxrpc_call *call = b->call_backlog[tail];
226 call->socket = rx;
226 if (rx->discard_new_call) { 227 if (rx->discard_new_call) {
227 _debug("discard %lx", call->user_call_ID); 228 _debug("discard %lx", call->user_call_ID);
228 rx->discard_new_call(call, call->user_call_ID); 229 rx->discard_new_call(call, call->user_call_ID);
diff --git a/net/sched/act_api.c b/net/sched/act_api.c
index aed6cf2e9fd8..f2e9ed34a963 100644
--- a/net/sched/act_api.c
+++ b/net/sched/act_api.c
@@ -835,7 +835,7 @@ out_nlmsg_trim:
835} 835}
836 836
837static int 837static int
838act_get_notify(struct net *net, u32 portid, struct nlmsghdr *n, 838tcf_get_notify(struct net *net, u32 portid, struct nlmsghdr *n,
839 struct list_head *actions, int event) 839 struct list_head *actions, int event)
840{ 840{
841 struct sk_buff *skb; 841 struct sk_buff *skb;
@@ -1018,7 +1018,7 @@ tca_action_gd(struct net *net, struct nlattr *nla, struct nlmsghdr *n,
1018 } 1018 }
1019 1019
1020 if (event == RTM_GETACTION) 1020 if (event == RTM_GETACTION)
1021 ret = act_get_notify(net, portid, n, &actions, event); 1021 ret = tcf_get_notify(net, portid, n, &actions, event);
1022 else { /* delete */ 1022 else { /* delete */
1023 ret = tcf_del_notify(net, n, &actions, portid); 1023 ret = tcf_del_notify(net, n, &actions, portid);
1024 if (ret) 1024 if (ret)
diff --git a/net/sched/act_ipt.c b/net/sched/act_ipt.c
index 36f0ced9e60c..541707802a23 100644
--- a/net/sched/act_ipt.c
+++ b/net/sched/act_ipt.c
@@ -36,11 +36,12 @@ static struct tc_action_ops act_ipt_ops;
36static unsigned int xt_net_id; 36static unsigned int xt_net_id;
37static struct tc_action_ops act_xt_ops; 37static struct tc_action_ops act_xt_ops;
38 38
39static int ipt_init_target(struct xt_entry_target *t, char *table, 39static int ipt_init_target(struct net *net, struct xt_entry_target *t,
40 unsigned int hook) 40 char *table, unsigned int hook)
41{ 41{
42 struct xt_tgchk_param par; 42 struct xt_tgchk_param par;
43 struct xt_target *target; 43 struct xt_target *target;
44 struct ipt_entry e = {};
44 int ret = 0; 45 int ret = 0;
45 46
46 target = xt_request_find_target(AF_INET, t->u.user.name, 47 target = xt_request_find_target(AF_INET, t->u.user.name,
@@ -49,8 +50,10 @@ static int ipt_init_target(struct xt_entry_target *t, char *table,
49 return PTR_ERR(target); 50 return PTR_ERR(target);
50 51
51 t->u.kernel.target = target; 52 t->u.kernel.target = target;
53 memset(&par, 0, sizeof(par));
54 par.net = net;
52 par.table = table; 55 par.table = table;
53 par.entryinfo = NULL; 56 par.entryinfo = &e;
54 par.target = target; 57 par.target = target;
55 par.targinfo = t->data; 58 par.targinfo = t->data;
56 par.hook_mask = hook; 59 par.hook_mask = hook;
@@ -91,10 +94,11 @@ static const struct nla_policy ipt_policy[TCA_IPT_MAX + 1] = {
91 [TCA_IPT_TARG] = { .len = sizeof(struct xt_entry_target) }, 94 [TCA_IPT_TARG] = { .len = sizeof(struct xt_entry_target) },
92}; 95};
93 96
94static int __tcf_ipt_init(struct tc_action_net *tn, struct nlattr *nla, 97static int __tcf_ipt_init(struct net *net, unsigned int id, struct nlattr *nla,
95 struct nlattr *est, struct tc_action **a, 98 struct nlattr *est, struct tc_action **a,
96 const struct tc_action_ops *ops, int ovr, int bind) 99 const struct tc_action_ops *ops, int ovr, int bind)
97{ 100{
101 struct tc_action_net *tn = net_generic(net, id);
98 struct nlattr *tb[TCA_IPT_MAX + 1]; 102 struct nlattr *tb[TCA_IPT_MAX + 1];
99 struct tcf_ipt *ipt; 103 struct tcf_ipt *ipt;
100 struct xt_entry_target *td, *t; 104 struct xt_entry_target *td, *t;
@@ -159,7 +163,7 @@ static int __tcf_ipt_init(struct tc_action_net *tn, struct nlattr *nla,
159 if (unlikely(!t)) 163 if (unlikely(!t))
160 goto err2; 164 goto err2;
161 165
162 err = ipt_init_target(t, tname, hook); 166 err = ipt_init_target(net, t, tname, hook);
163 if (err < 0) 167 if (err < 0)
164 goto err3; 168 goto err3;
165 169
@@ -193,18 +197,16 @@ static int tcf_ipt_init(struct net *net, struct nlattr *nla,
193 struct nlattr *est, struct tc_action **a, int ovr, 197 struct nlattr *est, struct tc_action **a, int ovr,
194 int bind) 198 int bind)
195{ 199{
196 struct tc_action_net *tn = net_generic(net, ipt_net_id); 200 return __tcf_ipt_init(net, ipt_net_id, nla, est, a, &act_ipt_ops, ovr,
197 201 bind);
198 return __tcf_ipt_init(tn, nla, est, a, &act_ipt_ops, ovr, bind);
199} 202}
200 203
201static int tcf_xt_init(struct net *net, struct nlattr *nla, 204static int tcf_xt_init(struct net *net, struct nlattr *nla,
202 struct nlattr *est, struct tc_action **a, int ovr, 205 struct nlattr *est, struct tc_action **a, int ovr,
203 int bind) 206 int bind)
204{ 207{
205 struct tc_action_net *tn = net_generic(net, xt_net_id); 208 return __tcf_ipt_init(net, xt_net_id, nla, est, a, &act_xt_ops, ovr,
206 209 bind);
207 return __tcf_ipt_init(tn, nla, est, a, &act_xt_ops, ovr, bind);
208} 210}
209 211
210static int tcf_ipt(struct sk_buff *skb, const struct tc_action *a, 212static int tcf_ipt(struct sk_buff *skb, const struct tc_action *a,
diff --git a/net/sched/cls_api.c b/net/sched/cls_api.c
index 39da0c5801c9..9fd44c221347 100644
--- a/net/sched/cls_api.c
+++ b/net/sched/cls_api.c
@@ -205,7 +205,7 @@ static void tcf_chain_flush(struct tcf_chain *chain)
205{ 205{
206 struct tcf_proto *tp; 206 struct tcf_proto *tp;
207 207
208 if (*chain->p_filter_chain) 208 if (chain->p_filter_chain)
209 RCU_INIT_POINTER(*chain->p_filter_chain, NULL); 209 RCU_INIT_POINTER(*chain->p_filter_chain, NULL);
210 while ((tp = rtnl_dereference(chain->filter_chain)) != NULL) { 210 while ((tp = rtnl_dereference(chain->filter_chain)) != NULL) {
211 RCU_INIT_POINTER(chain->filter_chain, tp->next); 211 RCU_INIT_POINTER(chain->filter_chain, tp->next);
diff --git a/net/sched/sch_api.c b/net/sched/sch_api.c
index bd24a550e0f9..a3fa144b8648 100644
--- a/net/sched/sch_api.c
+++ b/net/sched/sch_api.c
@@ -286,9 +286,6 @@ static struct Qdisc *qdisc_match_from_root(struct Qdisc *root, u32 handle)
286void qdisc_hash_add(struct Qdisc *q, bool invisible) 286void qdisc_hash_add(struct Qdisc *q, bool invisible)
287{ 287{
288 if ((q->parent != TC_H_ROOT) && !(q->flags & TCQ_F_INGRESS)) { 288 if ((q->parent != TC_H_ROOT) && !(q->flags & TCQ_F_INGRESS)) {
289 struct Qdisc *root = qdisc_dev(q)->qdisc;
290
291 WARN_ON_ONCE(root == &noop_qdisc);
292 ASSERT_RTNL(); 289 ASSERT_RTNL();
293 hash_add_rcu(qdisc_dev(q)->qdisc_hash, &q->hash, q->handle); 290 hash_add_rcu(qdisc_dev(q)->qdisc_hash, &q->hash, q->handle);
294 if (invisible) 291 if (invisible)
diff --git a/net/sched/sch_atm.c b/net/sched/sch_atm.c
index 572fe2584e48..c403c87aff7a 100644
--- a/net/sched/sch_atm.c
+++ b/net/sched/sch_atm.c
@@ -572,8 +572,10 @@ static void atm_tc_destroy(struct Qdisc *sch)
572 struct atm_flow_data *flow, *tmp; 572 struct atm_flow_data *flow, *tmp;
573 573
574 pr_debug("atm_tc_destroy(sch %p,[qdisc %p])\n", sch, p); 574 pr_debug("atm_tc_destroy(sch %p,[qdisc %p])\n", sch, p);
575 list_for_each_entry(flow, &p->flows, list) 575 list_for_each_entry(flow, &p->flows, list) {
576 tcf_block_put(flow->block); 576 tcf_block_put(flow->block);
577 flow->block = NULL;
578 }
577 579
578 list_for_each_entry_safe(flow, tmp, &p->flows, list) { 580 list_for_each_entry_safe(flow, tmp, &p->flows, list) {
579 if (flow->ref > 1) 581 if (flow->ref > 1)
diff --git a/net/sched/sch_cbq.c b/net/sched/sch_cbq.c
index 481036f6b54e..780db43300b1 100644
--- a/net/sched/sch_cbq.c
+++ b/net/sched/sch_cbq.c
@@ -1431,8 +1431,10 @@ static void cbq_destroy(struct Qdisc *sch)
1431 * be bound to classes which have been destroyed already. --TGR '04 1431 * be bound to classes which have been destroyed already. --TGR '04
1432 */ 1432 */
1433 for (h = 0; h < q->clhash.hashsize; h++) { 1433 for (h = 0; h < q->clhash.hashsize; h++) {
1434 hlist_for_each_entry(cl, &q->clhash.hash[h], common.hnode) 1434 hlist_for_each_entry(cl, &q->clhash.hash[h], common.hnode) {
1435 tcf_block_put(cl->block); 1435 tcf_block_put(cl->block);
1436 cl->block = NULL;
1437 }
1436 } 1438 }
1437 for (h = 0; h < q->clhash.hashsize; h++) { 1439 for (h = 0; h < q->clhash.hashsize; h++) {
1438 hlist_for_each_entry_safe(cl, next, &q->clhash.hash[h], 1440 hlist_for_each_entry_safe(cl, next, &q->clhash.hash[h],
diff --git a/net/sched/sch_hfsc.c b/net/sched/sch_hfsc.c
index b52f74610dc7..fd15200f8627 100644
--- a/net/sched/sch_hfsc.c
+++ b/net/sched/sch_hfsc.c
@@ -1428,6 +1428,10 @@ hfsc_init_qdisc(struct Qdisc *sch, struct nlattr *opt)
1428 return err; 1428 return err;
1429 q->eligible = RB_ROOT; 1429 q->eligible = RB_ROOT;
1430 1430
1431 err = tcf_block_get(&q->root.block, &q->root.filter_list);
1432 if (err)
1433 goto err_tcf;
1434
1431 q->root.cl_common.classid = sch->handle; 1435 q->root.cl_common.classid = sch->handle;
1432 q->root.refcnt = 1; 1436 q->root.refcnt = 1;
1433 q->root.sched = q; 1437 q->root.sched = q;
@@ -1447,6 +1451,10 @@ hfsc_init_qdisc(struct Qdisc *sch, struct nlattr *opt)
1447 qdisc_watchdog_init(&q->watchdog, sch); 1451 qdisc_watchdog_init(&q->watchdog, sch);
1448 1452
1449 return 0; 1453 return 0;
1454
1455err_tcf:
1456 qdisc_class_hash_destroy(&q->clhash);
1457 return err;
1450} 1458}
1451 1459
1452static int 1460static int
@@ -1522,8 +1530,10 @@ hfsc_destroy_qdisc(struct Qdisc *sch)
1522 unsigned int i; 1530 unsigned int i;
1523 1531
1524 for (i = 0; i < q->clhash.hashsize; i++) { 1532 for (i = 0; i < q->clhash.hashsize; i++) {
1525 hlist_for_each_entry(cl, &q->clhash.hash[i], cl_common.hnode) 1533 hlist_for_each_entry(cl, &q->clhash.hash[i], cl_common.hnode) {
1526 tcf_block_put(cl->block); 1534 tcf_block_put(cl->block);
1535 cl->block = NULL;
1536 }
1527 } 1537 }
1528 for (i = 0; i < q->clhash.hashsize; i++) { 1538 for (i = 0; i < q->clhash.hashsize; i++) {
1529 hlist_for_each_entry_safe(cl, next, &q->clhash.hash[i], 1539 hlist_for_each_entry_safe(cl, next, &q->clhash.hash[i],
diff --git a/net/sched/sch_htb.c b/net/sched/sch_htb.c
index 203286ab4427..5d65ec5207e9 100644
--- a/net/sched/sch_htb.c
+++ b/net/sched/sch_htb.c
@@ -1258,8 +1258,10 @@ static void htb_destroy(struct Qdisc *sch)
1258 tcf_block_put(q->block); 1258 tcf_block_put(q->block);
1259 1259
1260 for (i = 0; i < q->clhash.hashsize; i++) { 1260 for (i = 0; i < q->clhash.hashsize; i++) {
1261 hlist_for_each_entry(cl, &q->clhash.hash[i], common.hnode) 1261 hlist_for_each_entry(cl, &q->clhash.hash[i], common.hnode) {
1262 tcf_block_put(cl->block); 1262 tcf_block_put(cl->block);
1263 cl->block = NULL;
1264 }
1263 } 1265 }
1264 for (i = 0; i < q->clhash.hashsize; i++) { 1266 for (i = 0; i < q->clhash.hashsize; i++) {
1265 hlist_for_each_entry_safe(cl, next, &q->clhash.hash[i], 1267 hlist_for_each_entry_safe(cl, next, &q->clhash.hash[i],
diff --git a/net/sched/sch_sfq.c b/net/sched/sch_sfq.c
index f80ea2cc5f1f..82469ef9655e 100644
--- a/net/sched/sch_sfq.c
+++ b/net/sched/sch_sfq.c
@@ -437,6 +437,7 @@ congestion_drop:
437 qdisc_drop(head, sch, to_free); 437 qdisc_drop(head, sch, to_free);
438 438
439 slot_queue_add(slot, skb); 439 slot_queue_add(slot, skb);
440 qdisc_tree_reduce_backlog(sch, 0, delta);
440 return NET_XMIT_CN; 441 return NET_XMIT_CN;
441 } 442 }
442 443
@@ -468,8 +469,10 @@ enqueue:
468 /* Return Congestion Notification only if we dropped a packet 469 /* Return Congestion Notification only if we dropped a packet
469 * from this flow. 470 * from this flow.
470 */ 471 */
471 if (qlen != slot->qlen) 472 if (qlen != slot->qlen) {
473 qdisc_tree_reduce_backlog(sch, 0, dropped - qdisc_pkt_len(skb));
472 return NET_XMIT_CN; 474 return NET_XMIT_CN;
475 }
473 476
474 /* As we dropped a packet, better let upper stack know this */ 477 /* As we dropped a packet, better let upper stack know this */
475 qdisc_tree_reduce_backlog(sch, 1, dropped); 478 qdisc_tree_reduce_backlog(sch, 1, dropped);
diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c
index 2a186b201ad2..a4b6ffb61495 100644
--- a/net/sctp/ipv6.c
+++ b/net/sctp/ipv6.c
@@ -512,7 +512,9 @@ static void sctp_v6_to_addr(union sctp_addr *addr, struct in6_addr *saddr,
512{ 512{
513 addr->sa.sa_family = AF_INET6; 513 addr->sa.sa_family = AF_INET6;
514 addr->v6.sin6_port = port; 514 addr->v6.sin6_port = port;
515 addr->v6.sin6_flowinfo = 0;
515 addr->v6.sin6_addr = *saddr; 516 addr->v6.sin6_addr = *saddr;
517 addr->v6.sin6_scope_id = 0;
516} 518}
517 519
518/* Compare addresses exactly. 520/* Compare addresses exactly.
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c
index 4e16b02ed832..6110447fe51d 100644
--- a/net/sctp/sm_make_chunk.c
+++ b/net/sctp/sm_make_chunk.c
@@ -228,7 +228,7 @@ struct sctp_chunk *sctp_make_init(const struct sctp_association *asoc,
228 sctp_adaptation_ind_param_t aiparam; 228 sctp_adaptation_ind_param_t aiparam;
229 sctp_supported_ext_param_t ext_param; 229 sctp_supported_ext_param_t ext_param;
230 int num_ext = 0; 230 int num_ext = 0;
231 __u8 extensions[3]; 231 __u8 extensions[4];
232 struct sctp_paramhdr *auth_chunks = NULL, 232 struct sctp_paramhdr *auth_chunks = NULL,
233 *auth_hmacs = NULL; 233 *auth_hmacs = NULL;
234 234
@@ -396,7 +396,7 @@ struct sctp_chunk *sctp_make_init_ack(const struct sctp_association *asoc,
396 sctp_adaptation_ind_param_t aiparam; 396 sctp_adaptation_ind_param_t aiparam;
397 sctp_supported_ext_param_t ext_param; 397 sctp_supported_ext_param_t ext_param;
398 int num_ext = 0; 398 int num_ext = 0;
399 __u8 extensions[3]; 399 __u8 extensions[4];
400 struct sctp_paramhdr *auth_chunks = NULL, 400 struct sctp_paramhdr *auth_chunks = NULL,
401 *auth_hmacs = NULL, 401 *auth_hmacs = NULL,
402 *auth_random = NULL; 402 *auth_random = NULL;
diff --git a/net/socket.c b/net/socket.c
index bf2122691fba..ad22df1ffbd1 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -1916,7 +1916,7 @@ static int copy_msghdr_from_user(struct msghdr *kmsg,
1916 if (copy_from_user(&msg, umsg, sizeof(*umsg))) 1916 if (copy_from_user(&msg, umsg, sizeof(*umsg)))
1917 return -EFAULT; 1917 return -EFAULT;
1918 1918
1919 kmsg->msg_control = msg.msg_control; 1919 kmsg->msg_control = (void __force *)msg.msg_control;
1920 kmsg->msg_controllen = msg.msg_controllen; 1920 kmsg->msg_controllen = msg.msg_controllen;
1921 kmsg->msg_flags = msg.msg_flags; 1921 kmsg->msg_flags = msg.msg_flags;
1922 1922
@@ -1935,7 +1935,8 @@ static int copy_msghdr_from_user(struct msghdr *kmsg,
1935 1935
1936 if (msg.msg_name && kmsg->msg_namelen) { 1936 if (msg.msg_name && kmsg->msg_namelen) {
1937 if (!save_addr) { 1937 if (!save_addr) {
1938 err = move_addr_to_kernel(msg.msg_name, kmsg->msg_namelen, 1938 err = move_addr_to_kernel(msg.msg_name,
1939 kmsg->msg_namelen,
1939 kmsg->msg_name); 1940 kmsg->msg_name);
1940 if (err < 0) 1941 if (err < 0)
1941 return err; 1942 return err;
diff --git a/net/sunrpc/xprtsock.c b/net/sunrpc/xprtsock.c
index d5b54c020dec..4f154d388748 100644
--- a/net/sunrpc/xprtsock.c
+++ b/net/sunrpc/xprtsock.c
@@ -1624,6 +1624,8 @@ static void xs_tcp_state_change(struct sock *sk)
1624 if (test_and_clear_bit(XPRT_SOCK_CONNECTING, 1624 if (test_and_clear_bit(XPRT_SOCK_CONNECTING,
1625 &transport->sock_state)) 1625 &transport->sock_state))
1626 xprt_clear_connecting(xprt); 1626 xprt_clear_connecting(xprt);
1627 if (sk->sk_err)
1628 xprt_wake_pending_tasks(xprt, -sk->sk_err);
1627 xs_sock_mark_closed(xprt); 1629 xs_sock_mark_closed(xprt);
1628 } 1630 }
1629 out: 1631 out:
diff --git a/net/tipc/bearer.c b/net/tipc/bearer.c
index d174ee3254ee..767e0537dde5 100644
--- a/net/tipc/bearer.c
+++ b/net/tipc/bearer.c
@@ -596,7 +596,7 @@ static int tipc_l2_rcv_msg(struct sk_buff *skb, struct net_device *dev,
596 rcu_read_lock(); 596 rcu_read_lock();
597 b = rcu_dereference_rtnl(dev->tipc_ptr); 597 b = rcu_dereference_rtnl(dev->tipc_ptr);
598 if (likely(b && test_bit(0, &b->up) && 598 if (likely(b && test_bit(0, &b->up) &&
599 (skb->pkt_type <= PACKET_BROADCAST))) { 599 (skb->pkt_type <= PACKET_MULTICAST))) {
600 skb->next = NULL; 600 skb->next = NULL;
601 tipc_rcv(dev_net(dev), skb, b); 601 tipc_rcv(dev_net(dev), skb, b);
602 rcu_read_unlock(); 602 rcu_read_unlock();
diff --git a/net/tipc/msg.c b/net/tipc/msg.c
index ab3087687a32..dcd90e6fa7c3 100644
--- a/net/tipc/msg.c
+++ b/net/tipc/msg.c
@@ -513,6 +513,7 @@ bool tipc_msg_reverse(u32 own_node, struct sk_buff **skb, int err)
513 513
514 /* Now reverse the concerned fields */ 514 /* Now reverse the concerned fields */
515 msg_set_errcode(hdr, err); 515 msg_set_errcode(hdr, err);
516 msg_set_non_seq(hdr, 0);
516 msg_set_origport(hdr, msg_destport(&ohdr)); 517 msg_set_origport(hdr, msg_destport(&ohdr));
517 msg_set_destport(hdr, msg_origport(&ohdr)); 518 msg_set_destport(hdr, msg_origport(&ohdr));
518 msg_set_destnode(hdr, msg_prevnode(&ohdr)); 519 msg_set_destnode(hdr, msg_prevnode(&ohdr));
diff --git a/net/tipc/netlink_compat.c b/net/tipc/netlink_compat.c
index 9bfe886ab330..750949dfc1d7 100644
--- a/net/tipc/netlink_compat.c
+++ b/net/tipc/netlink_compat.c
@@ -258,13 +258,15 @@ static int tipc_nl_compat_dumpit(struct tipc_nl_compat_cmd_dump *cmd,
258 arg = nlmsg_new(0, GFP_KERNEL); 258 arg = nlmsg_new(0, GFP_KERNEL);
259 if (!arg) { 259 if (!arg) {
260 kfree_skb(msg->rep); 260 kfree_skb(msg->rep);
261 msg->rep = NULL;
261 return -ENOMEM; 262 return -ENOMEM;
262 } 263 }
263 264
264 err = __tipc_nl_compat_dumpit(cmd, msg, arg); 265 err = __tipc_nl_compat_dumpit(cmd, msg, arg);
265 if (err) 266 if (err) {
266 kfree_skb(msg->rep); 267 kfree_skb(msg->rep);
267 268 msg->rep = NULL;
269 }
268 kfree_skb(arg); 270 kfree_skb(arg);
269 271
270 return err; 272 return err;
diff --git a/net/tipc/node.c b/net/tipc/node.c
index aeef8011ac7d..9b4dcb6a16b5 100644
--- a/net/tipc/node.c
+++ b/net/tipc/node.c
@@ -1455,10 +1455,8 @@ static bool tipc_node_check_state(struct tipc_node *n, struct sk_buff *skb,
1455 /* Initiate synch mode if applicable */ 1455 /* Initiate synch mode if applicable */
1456 if ((usr == TUNNEL_PROTOCOL) && (mtyp == SYNCH_MSG) && (oseqno == 1)) { 1456 if ((usr == TUNNEL_PROTOCOL) && (mtyp == SYNCH_MSG) && (oseqno == 1)) {
1457 syncpt = iseqno + exp_pkts - 1; 1457 syncpt = iseqno + exp_pkts - 1;
1458 if (!tipc_link_is_up(l)) { 1458 if (!tipc_link_is_up(l))
1459 tipc_link_fsm_evt(l, LINK_ESTABLISH_EVT);
1460 __tipc_node_link_up(n, bearer_id, xmitq); 1459 __tipc_node_link_up(n, bearer_id, xmitq);
1461 }
1462 if (n->state == SELF_UP_PEER_UP) { 1460 if (n->state == SELF_UP_PEER_UP) {
1463 n->sync_point = syncpt; 1461 n->sync_point = syncpt;
1464 tipc_link_fsm_evt(l, LINK_SYNCH_BEGIN_EVT); 1462 tipc_link_fsm_evt(l, LINK_SYNCH_BEGIN_EVT);
diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c
index 7b52a380d710..be8982b4f8c0 100644
--- a/net/unix/af_unix.c
+++ b/net/unix/af_unix.c
@@ -2304,10 +2304,7 @@ static int unix_stream_read_generic(struct unix_stream_read_state *state,
2304 */ 2304 */
2305 mutex_lock(&u->iolock); 2305 mutex_lock(&u->iolock);
2306 2306
2307 if (flags & MSG_PEEK) 2307 skip = max(sk_peek_offset(sk, flags), 0);
2308 skip = sk_peek_offset(sk, flags);
2309 else
2310 skip = 0;
2311 2308
2312 do { 2309 do {
2313 int chunk; 2310 int chunk;
diff --git a/samples/bpf/tcbpf2_kern.c b/samples/bpf/tcbpf2_kern.c
index 9c823a609e75..270edcc149a1 100644
--- a/samples/bpf/tcbpf2_kern.c
+++ b/samples/bpf/tcbpf2_kern.c
@@ -147,9 +147,9 @@ int _geneve_set_tunnel(struct __sk_buff *skb)
147 __builtin_memset(&gopt, 0x0, sizeof(gopt)); 147 __builtin_memset(&gopt, 0x0, sizeof(gopt));
148 gopt.opt_class = 0x102; /* Open Virtual Networking (OVN) */ 148 gopt.opt_class = 0x102; /* Open Virtual Networking (OVN) */
149 gopt.type = 0x08; 149 gopt.type = 0x08;
150 gopt.r1 = 1; 150 gopt.r1 = 0;
151 gopt.r2 = 0; 151 gopt.r2 = 0;
152 gopt.r3 = 1; 152 gopt.r3 = 0;
153 gopt.length = 2; /* 4-byte multiple */ 153 gopt.length = 2; /* 4-byte multiple */
154 *(int *) &gopt.opt_data = 0xdeadbeef; 154 *(int *) &gopt.opt_data = 0xdeadbeef;
155 155
diff --git a/samples/bpf/test_tunnel_bpf.sh b/samples/bpf/test_tunnel_bpf.sh
index 1ff634f187b7..a70d2ea90313 100755
--- a/samples/bpf/test_tunnel_bpf.sh
+++ b/samples/bpf/test_tunnel_bpf.sh
@@ -149,6 +149,7 @@ function cleanup {
149 ip link del veth1 149 ip link del veth1
150 ip link del ipip11 150 ip link del ipip11
151 ip link del gretap11 151 ip link del gretap11
152 ip link del vxlan11
152 ip link del geneve11 153 ip link del geneve11
153 pkill tcpdump 154 pkill tcpdump
154 pkill cat 155 pkill cat
diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
index dd8e2dde0b34..9ffd3dda3889 100644
--- a/scripts/Kbuild.include
+++ b/scripts/Kbuild.include
@@ -85,8 +85,8 @@ TMPOUT := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/)
85 85
86# try-run 86# try-run
87# Usage: option = $(call try-run, $(CC)...-o "$$TMP",option-ok,otherwise) 87# Usage: option = $(call try-run, $(CC)...-o "$$TMP",option-ok,otherwise)
88# Exit code chooses option. "$$TMP" is can be used as temporary file and 88# Exit code chooses option. "$$TMP" serves as a temporary file and is
89# is automatically cleaned up. 89# automatically cleaned up.
90try-run = $(shell set -e; \ 90try-run = $(shell set -e; \
91 TMP="$(TMPOUT).$$$$.tmp"; \ 91 TMP="$(TMPOUT).$$$$.tmp"; \
92 TMPO="$(TMPOUT).$$$$.o"; \ 92 TMPO="$(TMPOUT).$$$$.o"; \
@@ -261,7 +261,6 @@ make-cmd = $(call escsq,$(subst \#,\\\#,$(subst $$,$$$$,$(cmd_$(1)))))
261any-prereq = $(filter-out $(PHONY),$?) $(filter-out $(PHONY) $(wildcard $^),$^) 261any-prereq = $(filter-out $(PHONY),$?) $(filter-out $(PHONY) $(wildcard $^),$^)
262 262
263# Execute command if command has changed or prerequisite(s) are updated. 263# Execute command if command has changed or prerequisite(s) are updated.
264#
265if_changed = $(if $(strip $(any-prereq) $(arg-check)), \ 264if_changed = $(if $(strip $(any-prereq) $(arg-check)), \
266 @set -e; \ 265 @set -e; \
267 $(echo-cmd) $(cmd_$(1)); \ 266 $(echo-cmd) $(cmd_$(1)); \
@@ -315,7 +314,7 @@ if_changed_rule = $(if $(strip $(any-prereq) $(arg-check) ), \
315 $(rule_$(1)), @:) 314 $(rule_$(1)), @:)
316 315
317### 316###
318# why - tell why a a target got build 317# why - tell why a target got built
319# enabled by make V=2 318# enabled by make V=2
320# Output (listed in the order they are checked): 319# Output (listed in the order they are checked):
321# (1) - due to target is PHONY 320# (1) - due to target is PHONY
diff --git a/scripts/Makefile.asm-generic b/scripts/Makefile.asm-generic
index 95f7d8090152..a6c8c1780855 100644
--- a/scripts/Makefile.asm-generic
+++ b/scripts/Makefile.asm-generic
@@ -1,9 +1,9 @@
1# include/asm-generic contains a lot of files that are used 1# include/asm-generic contains a lot of files that are used
2# verbatim by several architectures. 2# verbatim by several architectures.
3# 3#
4# This Makefile reads the file arch/$(SRCARCH)/include/asm/Kbuild 4# This Makefile reads the file arch/$(SRCARCH)/include/$(src)/Kbuild
5# and for each file listed in this file with generic-y creates 5# and for each file listed in this file with generic-y creates
6# a small wrapper file in $(obj) (arch/$(SRCARCH)/include/generated/asm) 6# a small wrapper file in $(obj) (arch/$(SRCARCH)/include/generated/$(src))
7 7
8kbuild-file := $(srctree)/arch/$(SRCARCH)/include/$(src)/Kbuild 8kbuild-file := $(srctree)/arch/$(SRCARCH)/include/$(src)/Kbuild
9-include $(kbuild-file) 9-include $(kbuild-file)
diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index 4a9a2cec0a1b..f6152c70f7f4 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -229,8 +229,8 @@ ifeq ("$(origin RECORDMCOUNT_WARN)", "command line")
229endif 229endif
230# Due to recursion, we must skip empty.o. 230# Due to recursion, we must skip empty.o.
231# The empty.o file is created in the make process in order to determine 231# The empty.o file is created in the make process in order to determine
232# the target endianness and word size. It is made before all other C 232# the target endianness and word size. It is made before all other C
233# files, including recordmcount. 233# files, including recordmcount.
234sub_cmd_record_mcount = \ 234sub_cmd_record_mcount = \
235 if [ $(@) != "scripts/mod/empty.o" ]; then \ 235 if [ $(@) != "scripts/mod/empty.o" ]; then \
236 $(objtree)/scripts/recordmcount $(RECORDMCOUNT_FLAGS) "$(@)"; \ 236 $(objtree)/scripts/recordmcount $(RECORDMCOUNT_FLAGS) "$(@)"; \
@@ -245,13 +245,13 @@ sub_cmd_record_mcount = set -e ; perl $(srctree)/scripts/recordmcount.pl "$(ARCH
245 "$(LD)" "$(NM)" "$(RM)" "$(MV)" \ 245 "$(LD)" "$(NM)" "$(RM)" "$(MV)" \
246 "$(if $(part-of-module),1,0)" "$(@)"; 246 "$(if $(part-of-module),1,0)" "$(@)";
247recordmcount_source := $(srctree)/scripts/recordmcount.pl 247recordmcount_source := $(srctree)/scripts/recordmcount.pl
248endif 248endif # BUILD_C_RECORDMCOUNT
249cmd_record_mcount = \ 249cmd_record_mcount = \
250 if [ "$(findstring $(CC_FLAGS_FTRACE),$(_c_flags))" = \ 250 if [ "$(findstring $(CC_FLAGS_FTRACE),$(_c_flags))" = \
251 "$(CC_FLAGS_FTRACE)" ]; then \ 251 "$(CC_FLAGS_FTRACE)" ]; then \
252 $(sub_cmd_record_mcount) \ 252 $(sub_cmd_record_mcount) \
253 fi; 253 fi;
254endif 254endif # CONFIG_FTRACE_MCOUNT_RECORD
255 255
256ifdef CONFIG_STACK_VALIDATION 256ifdef CONFIG_STACK_VALIDATION
257ifneq ($(SKIP_STACK_VALIDATION),1) 257ifneq ($(SKIP_STACK_VALIDATION),1)
diff --git a/scripts/Makefile.dtbinst b/scripts/Makefile.dtbinst
index 34614a48b717..993fb85982df 100644
--- a/scripts/Makefile.dtbinst
+++ b/scripts/Makefile.dtbinst
@@ -14,7 +14,7 @@ src := $(obj)
14PHONY := __dtbs_install 14PHONY := __dtbs_install
15__dtbs_install: 15__dtbs_install:
16 16
17export dtbinst-root ?= $(obj) 17export dtbinst_root ?= $(obj)
18 18
19include include/config/auto.conf 19include include/config/auto.conf
20include scripts/Kbuild.include 20include scripts/Kbuild.include
@@ -27,7 +27,7 @@ dtbinst-dirs := $(dts-dirs)
27quiet_cmd_dtb_install = INSTALL $< 27quiet_cmd_dtb_install = INSTALL $<
28 cmd_dtb_install = mkdir -p $(2); cp $< $(2) 28 cmd_dtb_install = mkdir -p $(2); cp $< $(2)
29 29
30install-dir = $(patsubst $(dtbinst-root)%,$(INSTALL_DTBS_PATH)%,$(obj)) 30install-dir = $(patsubst $(dtbinst_root)%,$(INSTALL_DTBS_PATH)%,$(obj))
31 31
32$(dtbinst-files): %.dtb: $(obj)/%.dtb 32$(dtbinst-files): %.dtb: $(obj)/%.dtb
33 $(call cmd,dtb_install,$(install-dir)) 33 $(call cmd,dtb_install,$(install-dir))
diff --git a/scripts/basic/Makefile b/scripts/basic/Makefile
index ec10d9345bc2..0372b33febe5 100644
--- a/scripts/basic/Makefile
+++ b/scripts/basic/Makefile
@@ -1,5 +1,5 @@
1### 1###
2# Makefile.basic lists the most basic programs used during the build process. 2# This Makefile lists the most basic programs used during the build process.
3# The programs listed herein are what are needed to do the basic stuff, 3# The programs listed herein are what are needed to do the basic stuff,
4# such as fix file dependencies. 4# such as fix file dependencies.
5# This initial step is needed to avoid files to be recompiled 5# This initial step is needed to avoid files to be recompiled
diff --git a/scripts/basic/fixdep.c b/scripts/basic/fixdep.c
index fff818b92acb..bbf62cb1f819 100644
--- a/scripts/basic/fixdep.c
+++ b/scripts/basic/fixdep.c
@@ -25,7 +25,7 @@
25 * 25 *
26 * So we play the same trick that "mkdep" played before. We replace 26 * So we play the same trick that "mkdep" played before. We replace
27 * the dependency on autoconf.h by a dependency on every config 27 * the dependency on autoconf.h by a dependency on every config
28 * option which is mentioned in any of the listed prequisites. 28 * option which is mentioned in any of the listed prerequisites.
29 * 29 *
30 * kconfig populates a tree in include/config/ with an empty file 30 * kconfig populates a tree in include/config/ with an empty file
31 * for each config symbol and when the configuration is updated 31 * for each config symbol and when the configuration is updated
@@ -34,7 +34,7 @@
34 * the config symbols are rebuilt. 34 * the config symbols are rebuilt.
35 * 35 *
36 * So if the user changes his CONFIG_HIS_DRIVER option, only the objects 36 * So if the user changes his CONFIG_HIS_DRIVER option, only the objects
37 * which depend on "include/linux/config/his/driver.h" will be rebuilt, 37 * which depend on "include/config/his/driver.h" will be rebuilt,
38 * so most likely only his driver ;-) 38 * so most likely only his driver ;-)
39 * 39 *
40 * The idea above dates, by the way, back to Michael E Chastain, AFAIK. 40 * The idea above dates, by the way, back to Michael E Chastain, AFAIK.
@@ -75,7 +75,7 @@
75 * and then basically copies the .<target>.d file to stdout, in the 75 * and then basically copies the .<target>.d file to stdout, in the
76 * process filtering out the dependency on autoconf.h and adding 76 * process filtering out the dependency on autoconf.h and adding
77 * dependencies on include/config/my/option.h for every 77 * dependencies on include/config/my/option.h for every
78 * CONFIG_MY_OPTION encountered in any of the prequisites. 78 * CONFIG_MY_OPTION encountered in any of the prerequisites.
79 * 79 *
80 * It will also filter out all the dependencies on *.ver. We need 80 * It will also filter out all the dependencies on *.ver. We need
81 * to make sure that the generated version checksum are globally up 81 * to make sure that the generated version checksum are globally up
diff --git a/scripts/dtc/dtx_diff b/scripts/dtc/dtx_diff
index fb86f3899e16..f9a3d8d23c64 100755
--- a/scripts/dtc/dtx_diff
+++ b/scripts/dtc/dtx_diff
@@ -321,7 +321,7 @@ fi
321cpp_flags="\ 321cpp_flags="\
322 -nostdinc \ 322 -nostdinc \
323 -I${srctree}/arch/${ARCH}/boot/dts \ 323 -I${srctree}/arch/${ARCH}/boot/dts \
324 -I${srctree}/arch/${ARCH}/boot/dts/include \ 324 -I${srctree}/scripts/dtc/include-prefixes \
325 -I${srctree}/drivers/of/testcase-data \ 325 -I${srctree}/drivers/of/testcase-data \
326 -undef -D__DTS__" 326 -undef -D__DTS__"
327 327
diff --git a/scripts/get_maintainer.pl b/scripts/get_maintainer.pl
index 3bd5f4f30235..bc443201d3ef 100755
--- a/scripts/get_maintainer.pl
+++ b/scripts/get_maintainer.pl
@@ -18,6 +18,7 @@ my $V = '0.26';
18 18
19use Getopt::Long qw(:config no_auto_abbrev); 19use Getopt::Long qw(:config no_auto_abbrev);
20use Cwd; 20use Cwd;
21use File::Find;
21 22
22my $cur_path = fastgetcwd() . '/'; 23my $cur_path = fastgetcwd() . '/';
23my $lk_path = "./"; 24my $lk_path = "./";
@@ -58,6 +59,7 @@ my $from_filename = 0;
58my $pattern_depth = 0; 59my $pattern_depth = 0;
59my $version = 0; 60my $version = 0;
60my $help = 0; 61my $help = 0;
62my $find_maintainer_files = 0;
61 63
62my $vcs_used = 0; 64my $vcs_used = 0;
63 65
@@ -249,6 +251,7 @@ if (!GetOptions(
249 'sections!' => \$sections, 251 'sections!' => \$sections,
250 'fe|file-emails!' => \$file_emails, 252 'fe|file-emails!' => \$file_emails,
251 'f|file' => \$from_filename, 253 'f|file' => \$from_filename,
254 'find-maintainer-files' => \$find_maintainer_files,
252 'v|version' => \$version, 255 'v|version' => \$version,
253 'h|help|usage' => \$help, 256 'h|help|usage' => \$help,
254 )) { 257 )) {
@@ -307,36 +310,74 @@ if (!top_of_kernel_tree($lk_path)) {
307 310
308my @typevalue = (); 311my @typevalue = ();
309my %keyword_hash; 312my %keyword_hash;
313my @mfiles = ();
310 314
311open (my $maint, '<', "${lk_path}MAINTAINERS") 315sub read_maintainer_file {
312 or die "$P: Can't open MAINTAINERS: $!\n"; 316 my ($file) = @_;
313while (<$maint>) { 317
314 my $line = $_; 318 open (my $maint, '<', "$file")
315 319 or die "$P: Can't open MAINTAINERS file '$file': $!\n";
316 if ($line =~ m/^([A-Z]):\s*(.*)/) { 320 while (<$maint>) {
317 my $type = $1; 321 my $line = $_;
318 my $value = $2; 322
319 323 if ($line =~ m/^([A-Z]):\s*(.*)/) {
320 ##Filename pattern matching 324 my $type = $1;
321 if ($type eq "F" || $type eq "X") { 325 my $value = $2;
322 $value =~ s@\.@\\\.@g; ##Convert . to \. 326
323 $value =~ s/\*/\.\*/g; ##Convert * to .* 327 ##Filename pattern matching
324 $value =~ s/\?/\./g; ##Convert ? to . 328 if ($type eq "F" || $type eq "X") {
325 ##if pattern is a directory and it lacks a trailing slash, add one 329 $value =~ s@\.@\\\.@g; ##Convert . to \.
326 if ((-d $value)) { 330 $value =~ s/\*/\.\*/g; ##Convert * to .*
327 $value =~ s@([^/])$@$1/@; 331 $value =~ s/\?/\./g; ##Convert ? to .
332 ##if pattern is a directory and it lacks a trailing slash, add one
333 if ((-d $value)) {
334 $value =~ s@([^/])$@$1/@;
335 }
336 } elsif ($type eq "K") {
337 $keyword_hash{@typevalue} = $value;
328 } 338 }
329 } elsif ($type eq "K") { 339 push(@typevalue, "$type:$value");
330 $keyword_hash{@typevalue} = $value; 340 } elsif (!(/^\s*$/ || /^\s*\#/)) {
341 $line =~ s/\n$//g;
342 push(@typevalue, $line);
331 } 343 }
332 push(@typevalue, "$type:$value");
333 } elsif (!/^(\s)*$/) {
334 $line =~ s/\n$//g;
335 push(@typevalue, $line);
336 } 344 }
345 close($maint);
346}
347
348sub find_is_maintainer_file {
349 my ($file) = $_;
350 return if ($file !~ m@/MAINTAINERS$@);
351 $file = $File::Find::name;
352 return if (! -f $file);
353 push(@mfiles, $file);
337} 354}
338close($maint);
339 355
356sub find_ignore_git {
357 return grep { $_ !~ /^\.git$/; } @_;
358}
359
360if (-d "${lk_path}MAINTAINERS") {
361 opendir(DIR, "${lk_path}MAINTAINERS") or die $!;
362 my @files = readdir(DIR);
363 closedir(DIR);
364 foreach my $file (@files) {
365 push(@mfiles, "${lk_path}MAINTAINERS/$file") if ($file !~ /^\./);
366 }
367}
368
369if ($find_maintainer_files) {
370 find( { wanted => \&find_is_maintainer_file,
371 preprocess => \&find_ignore_git,
372 no_chdir => 1,
373 }, "${lk_path}");
374} else {
375 push(@mfiles, "${lk_path}MAINTAINERS") if -f "${lk_path}MAINTAINERS";
376}
377
378foreach my $file (@mfiles) {
379 read_maintainer_file("$file");
380}
340 381
341# 382#
342# Read mail address map 383# Read mail address map
@@ -873,7 +914,7 @@ sub top_of_kernel_tree {
873 if ( (-f "${lk_path}COPYING") 914 if ( (-f "${lk_path}COPYING")
874 && (-f "${lk_path}CREDITS") 915 && (-f "${lk_path}CREDITS")
875 && (-f "${lk_path}Kbuild") 916 && (-f "${lk_path}Kbuild")
876 && (-f "${lk_path}MAINTAINERS") 917 && (-e "${lk_path}MAINTAINERS")
877 && (-f "${lk_path}Makefile") 918 && (-f "${lk_path}Makefile")
878 && (-f "${lk_path}README") 919 && (-f "${lk_path}README")
879 && (-d "${lk_path}Documentation") 920 && (-d "${lk_path}Documentation")
diff --git a/scripts/parse-maintainers.pl b/scripts/parse-maintainers.pl
new file mode 100644
index 000000000000..e40b53db7f9f
--- /dev/null
+++ b/scripts/parse-maintainers.pl
@@ -0,0 +1,128 @@
1#!/usr/bin/perl -w
2
3use strict;
4
5my $P = $0;
6
7# sort comparison functions
8sub by_category($$) {
9 my ($a, $b) = @_;
10
11 $a = uc $a;
12 $b = uc $b;
13
14 # This always sorts last
15 $a =~ s/THE REST/ZZZZZZ/g;
16 $b =~ s/THE REST/ZZZZZZ/g;
17
18 return $a cmp $b;
19}
20
21sub by_pattern($$) {
22 my ($a, $b) = @_;
23 my $preferred_order = 'MRPLSWTQBCFXNK';
24
25 my $a1 = uc(substr($a, 0, 1));
26 my $b1 = uc(substr($b, 0, 1));
27
28 my $a_index = index($preferred_order, $a1);
29 my $b_index = index($preferred_order, $b1);
30
31 $a_index = 1000 if ($a_index == -1);
32 $b_index = 1000 if ($b_index == -1);
33
34 if (($a1 =~ /^F$/ && $b1 =~ /^F$/) ||
35 ($a1 =~ /^X$/ && $b1 =~ /^X$/)) {
36 return $a cmp $b;
37 }
38
39 if ($a_index < $b_index) {
40 return -1;
41 } elsif ($a_index == $b_index) {
42 return 0;
43 } else {
44 return 1;
45 }
46}
47
48sub trim {
49 my $s = shift;
50 $s =~ s/\s+$//;
51 $s =~ s/^\s+//;
52 return $s;
53}
54
55sub alpha_output {
56 my ($hashref, $filename) = (@_);
57
58 open(my $file, '>', "$filename") or die "$P: $filename: open failed - $!\n";
59 foreach my $key (sort by_category keys %$hashref) {
60 if ($key eq " ") {
61 chomp $$hashref{$key};
62 print $file $$hashref{$key};
63 } else {
64 print $file "\n" . $key . "\n";
65 foreach my $pattern (sort by_pattern split('\n', %$hashref{$key})) {
66 print $file ($pattern . "\n");
67 }
68 }
69 }
70 close($file);
71}
72
73sub file_input {
74 my ($hashref, $filename) = (@_);
75
76 my $lastline = "";
77 my $case = " ";
78 $$hashref{$case} = "";
79
80 open(my $file, '<', "$filename") or die "$P: $filename: open failed - $!\n";
81
82 while (<$file>) {
83 my $line = $_;
84
85 # Pattern line?
86 if ($line =~ m/^([A-Z]):\s*(.*)/) {
87 $line = $1 . ":\t" . trim($2) . "\n";
88 if ($lastline eq "") {
89 $$hashref{$case} = $$hashref{$case} . $line;
90 next;
91 }
92 $case = trim($lastline);
93 exists $$hashref{$case} and die "Header '$case' already exists";
94 $$hashref{$case} = $line;
95 $lastline = "";
96 next;
97 }
98
99 if ($case eq " ") {
100 $$hashref{$case} = $$hashref{$case} . $lastline;
101 $lastline = $line;
102 next;
103 }
104 trim($lastline) eq "" or die ("Odd non-pattern line '$lastline' for '$case'");
105 $lastline = $line;
106 }
107 $$hashref{$case} = $$hashref{$case} . $lastline;
108 close($file);
109}
110
111my %hash;
112my %new_hash;
113
114file_input(\%hash, "MAINTAINERS");
115
116foreach my $type (@ARGV) {
117 foreach my $key (keys %hash) {
118 if ($key =~ /$type/ || $hash{$key} =~ /$type/) {
119 $new_hash{$key} = $hash{$key};
120 delete $hash{$key};
121 }
122 }
123}
124
125alpha_output(\%hash, "MAINTAINERS.new");
126alpha_output(\%new_hash, "SECTION.new");
127
128exit(0);
diff --git a/security/keys/internal.h b/security/keys/internal.h
index 91bc6214ae57..1c02c6547038 100644
--- a/security/keys/internal.h
+++ b/security/keys/internal.h
@@ -198,7 +198,7 @@ struct request_key_auth {
198 void *callout_info; 198 void *callout_info;
199 size_t callout_len; 199 size_t callout_len;
200 pid_t pid; 200 pid_t pid;
201}; 201} __randomize_layout;
202 202
203extern struct key_type key_type_request_key_auth; 203extern struct key_type key_type_request_key_auth;
204extern struct key *request_key_auth_new(struct key *target, 204extern struct key *request_key_auth_new(struct key *target,
diff --git a/sound/core/seq/Kconfig b/sound/core/seq/Kconfig
index a536760a94c2..45c1336c6597 100644
--- a/sound/core/seq/Kconfig
+++ b/sound/core/seq/Kconfig
@@ -47,10 +47,10 @@ config SND_SEQ_HRTIMER_DEFAULT
47 timer. 47 timer.
48 48
49config SND_SEQ_MIDI_EVENT 49config SND_SEQ_MIDI_EVENT
50 def_tristate SND_RAWMIDI 50 tristate
51 51
52config SND_SEQ_MIDI 52config SND_SEQ_MIDI
53 tristate 53 def_tristate SND_RAWMIDI
54 select SND_SEQ_MIDI_EVENT 54 select SND_SEQ_MIDI_EVENT
55 55
56config SND_SEQ_MIDI_EMUL 56config SND_SEQ_MIDI_EMUL
diff --git a/sound/core/seq/seq_clientmgr.c b/sound/core/seq/seq_clientmgr.c
index 272c55fe17c8..ea2d0ae85bd3 100644
--- a/sound/core/seq/seq_clientmgr.c
+++ b/sound/core/seq/seq_clientmgr.c
@@ -1502,16 +1502,11 @@ static int snd_seq_ioctl_unsubscribe_port(struct snd_seq_client *client,
1502static int snd_seq_ioctl_create_queue(struct snd_seq_client *client, void *arg) 1502static int snd_seq_ioctl_create_queue(struct snd_seq_client *client, void *arg)
1503{ 1503{
1504 struct snd_seq_queue_info *info = arg; 1504 struct snd_seq_queue_info *info = arg;
1505 int result;
1506 struct snd_seq_queue *q; 1505 struct snd_seq_queue *q;
1507 1506
1508 result = snd_seq_queue_alloc(client->number, info->locked, info->flags); 1507 q = snd_seq_queue_alloc(client->number, info->locked, info->flags);
1509 if (result < 0) 1508 if (IS_ERR(q))
1510 return result; 1509 return PTR_ERR(q);
1511
1512 q = queueptr(result);
1513 if (q == NULL)
1514 return -EINVAL;
1515 1510
1516 info->queue = q->queue; 1511 info->queue = q->queue;
1517 info->locked = q->locked; 1512 info->locked = q->locked;
@@ -1521,7 +1516,7 @@ static int snd_seq_ioctl_create_queue(struct snd_seq_client *client, void *arg)
1521 if (!info->name[0]) 1516 if (!info->name[0])
1522 snprintf(info->name, sizeof(info->name), "Queue-%d", q->queue); 1517 snprintf(info->name, sizeof(info->name), "Queue-%d", q->queue);
1523 strlcpy(q->name, info->name, sizeof(q->name)); 1518 strlcpy(q->name, info->name, sizeof(q->name));
1524 queuefree(q); 1519 snd_use_lock_free(&q->use_lock);
1525 1520
1526 return 0; 1521 return 0;
1527} 1522}
diff --git a/sound/core/seq/seq_queue.c b/sound/core/seq/seq_queue.c
index 450c5187eecb..79e0c5604ef8 100644
--- a/sound/core/seq/seq_queue.c
+++ b/sound/core/seq/seq_queue.c
@@ -184,22 +184,26 @@ void __exit snd_seq_queues_delete(void)
184static void queue_use(struct snd_seq_queue *queue, int client, int use); 184static void queue_use(struct snd_seq_queue *queue, int client, int use);
185 185
186/* allocate a new queue - 186/* allocate a new queue -
187 * return queue index value or negative value for error 187 * return pointer to new queue or ERR_PTR(-errno) for error
188 * The new queue's use_lock is set to 1. It is the caller's responsibility to
189 * call snd_use_lock_free(&q->use_lock).
188 */ 190 */
189int snd_seq_queue_alloc(int client, int locked, unsigned int info_flags) 191struct snd_seq_queue *snd_seq_queue_alloc(int client, int locked, unsigned int info_flags)
190{ 192{
191 struct snd_seq_queue *q; 193 struct snd_seq_queue *q;
192 194
193 q = queue_new(client, locked); 195 q = queue_new(client, locked);
194 if (q == NULL) 196 if (q == NULL)
195 return -ENOMEM; 197 return ERR_PTR(-ENOMEM);
196 q->info_flags = info_flags; 198 q->info_flags = info_flags;
197 queue_use(q, client, 1); 199 queue_use(q, client, 1);
200 snd_use_lock_use(&q->use_lock);
198 if (queue_list_add(q) < 0) { 201 if (queue_list_add(q) < 0) {
202 snd_use_lock_free(&q->use_lock);
199 queue_delete(q); 203 queue_delete(q);
200 return -ENOMEM; 204 return ERR_PTR(-ENOMEM);
201 } 205 }
202 return q->queue; 206 return q;
203} 207}
204 208
205/* delete a queue - queue must be owned by the client */ 209/* delete a queue - queue must be owned by the client */
diff --git a/sound/core/seq/seq_queue.h b/sound/core/seq/seq_queue.h
index 30c8111477f6..719093489a2c 100644
--- a/sound/core/seq/seq_queue.h
+++ b/sound/core/seq/seq_queue.h
@@ -71,7 +71,7 @@ void snd_seq_queues_delete(void);
71 71
72 72
73/* create new queue (constructor) */ 73/* create new queue (constructor) */
74int snd_seq_queue_alloc(int client, int locked, unsigned int flags); 74struct snd_seq_queue *snd_seq_queue_alloc(int client, int locked, unsigned int flags);
75 75
76/* delete queue (destructor) */ 76/* delete queue (destructor) */
77int snd_seq_queue_delete(int client, int queueid); 77int snd_seq_queue_delete(int client, int queueid);
diff --git a/sound/pci/emu10k1/emufx.c b/sound/pci/emu10k1/emufx.c
index dc585959ca32..a2b56b188be4 100644
--- a/sound/pci/emu10k1/emufx.c
+++ b/sound/pci/emu10k1/emufx.c
@@ -698,10 +698,18 @@ static int copy_gctl(struct snd_emu10k1 *emu,
698{ 698{
699 struct snd_emu10k1_fx8010_control_old_gpr __user *octl; 699 struct snd_emu10k1_fx8010_control_old_gpr __user *octl;
700 700
701 if (emu->support_tlv) 701 if (emu->support_tlv) {
702 return copy_from_user(gctl, &_gctl[idx], sizeof(*gctl)); 702 if (in_kernel)
703 memcpy(gctl, (void *)&_gctl[idx], sizeof(*gctl));
704 else if (copy_from_user(gctl, &_gctl[idx], sizeof(*gctl)))
705 return -EFAULT;
706 return 0;
707 }
708
703 octl = (struct snd_emu10k1_fx8010_control_old_gpr __user *)_gctl; 709 octl = (struct snd_emu10k1_fx8010_control_old_gpr __user *)_gctl;
704 if (copy_from_user(gctl, &octl[idx], sizeof(*octl))) 710 if (in_kernel)
711 memcpy(gctl, (void *)&octl[idx], sizeof(*octl));
712 else if (copy_from_user(gctl, &octl[idx], sizeof(*octl)))
705 return -EFAULT; 713 return -EFAULT;
706 gctl->tlv = NULL; 714 gctl->tlv = NULL;
707 return 0; 715 return 0;
diff --git a/sound/pci/fm801.c b/sound/pci/fm801.c
index 2e402ece4c86..8e6b04b39dcc 100644
--- a/sound/pci/fm801.c
+++ b/sound/pci/fm801.c
@@ -1235,8 +1235,6 @@ static int snd_fm801_create(struct snd_card *card,
1235 } 1235 }
1236 } 1236 }
1237 1237
1238 snd_fm801_chip_init(chip);
1239
1240 if ((chip->tea575x_tuner & TUNER_ONLY) == 0) { 1238 if ((chip->tea575x_tuner & TUNER_ONLY) == 0) {
1241 if (devm_request_irq(&pci->dev, pci->irq, snd_fm801_interrupt, 1239 if (devm_request_irq(&pci->dev, pci->irq, snd_fm801_interrupt,
1242 IRQF_SHARED, KBUILD_MODNAME, chip)) { 1240 IRQF_SHARED, KBUILD_MODNAME, chip)) {
@@ -1248,6 +1246,8 @@ static int snd_fm801_create(struct snd_card *card,
1248 pci_set_master(pci); 1246 pci_set_master(pci);
1249 } 1247 }
1250 1248
1249 snd_fm801_chip_init(chip);
1250
1251 if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) { 1251 if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) {
1252 snd_fm801_free(chip); 1252 snd_fm801_free(chip);
1253 return err; 1253 return err;
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
index 63bc894ddf5e..8c1289963c80 100644
--- a/sound/pci/hda/patch_conexant.c
+++ b/sound/pci/hda/patch_conexant.c
@@ -933,6 +933,7 @@ static const struct snd_pci_quirk cxt5066_fixups[] = {
933 SND_PCI_QUIRK(0x103c, 0x8174, "HP Spectre x360", CXT_FIXUP_HP_SPECTRE), 933 SND_PCI_QUIRK(0x103c, 0x8174, "HP Spectre x360", CXT_FIXUP_HP_SPECTRE),
934 SND_PCI_QUIRK(0x103c, 0x8115, "HP Z1 Gen3", CXT_FIXUP_HP_GATE_MIC), 934 SND_PCI_QUIRK(0x103c, 0x8115, "HP Z1 Gen3", CXT_FIXUP_HP_GATE_MIC),
935 SND_PCI_QUIRK(0x103c, 0x814f, "HP ZBook 15u G3", CXT_FIXUP_MUTE_LED_GPIO), 935 SND_PCI_QUIRK(0x103c, 0x814f, "HP ZBook 15u G3", CXT_FIXUP_MUTE_LED_GPIO),
936 SND_PCI_QUIRK(0x103c, 0x822e, "HP ProBook 440 G4", CXT_FIXUP_MUTE_LED_GPIO),
936 SND_PCI_QUIRK(0x1043, 0x138d, "Asus", CXT_FIXUP_HEADPHONE_MIC_PIN), 937 SND_PCI_QUIRK(0x1043, 0x138d, "Asus", CXT_FIXUP_HEADPHONE_MIC_PIN),
937 SND_PCI_QUIRK(0x152d, 0x0833, "OLPC XO-1.5", CXT_FIXUP_OLPC_XO), 938 SND_PCI_QUIRK(0x152d, 0x0833, "OLPC XO-1.5", CXT_FIXUP_OLPC_XO),
938 SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo T400", CXT_PINCFG_LENOVO_TP410), 939 SND_PCI_QUIRK(0x17aa, 0x20f2, "Lenovo T400", CXT_PINCFG_LENOVO_TP410),
diff --git a/sound/pci/hda/patch_hdmi.c b/sound/pci/hda/patch_hdmi.c
index d549f35f39d3..53f9311370de 100644
--- a/sound/pci/hda/patch_hdmi.c
+++ b/sound/pci/hda/patch_hdmi.c
@@ -3733,11 +3733,15 @@ HDA_CODEC_ENTRY(0x1002aa01, "R6xx HDMI", patch_atihdmi),
3733HDA_CODEC_ENTRY(0x10951390, "SiI1390 HDMI", patch_generic_hdmi), 3733HDA_CODEC_ENTRY(0x10951390, "SiI1390 HDMI", patch_generic_hdmi),
3734HDA_CODEC_ENTRY(0x10951392, "SiI1392 HDMI", patch_generic_hdmi), 3734HDA_CODEC_ENTRY(0x10951392, "SiI1392 HDMI", patch_generic_hdmi),
3735HDA_CODEC_ENTRY(0x17e80047, "Chrontel HDMI", patch_generic_hdmi), 3735HDA_CODEC_ENTRY(0x17e80047, "Chrontel HDMI", patch_generic_hdmi),
3736HDA_CODEC_ENTRY(0x10de0001, "MCP73 HDMI", patch_nvhdmi_2ch),
3736HDA_CODEC_ENTRY(0x10de0002, "MCP77/78 HDMI", patch_nvhdmi_8ch_7x), 3737HDA_CODEC_ENTRY(0x10de0002, "MCP77/78 HDMI", patch_nvhdmi_8ch_7x),
3737HDA_CODEC_ENTRY(0x10de0003, "MCP77/78 HDMI", patch_nvhdmi_8ch_7x), 3738HDA_CODEC_ENTRY(0x10de0003, "MCP77/78 HDMI", patch_nvhdmi_8ch_7x),
3739HDA_CODEC_ENTRY(0x10de0004, "GPU 04 HDMI", patch_nvhdmi_8ch_7x),
3738HDA_CODEC_ENTRY(0x10de0005, "MCP77/78 HDMI", patch_nvhdmi_8ch_7x), 3740HDA_CODEC_ENTRY(0x10de0005, "MCP77/78 HDMI", patch_nvhdmi_8ch_7x),
3739HDA_CODEC_ENTRY(0x10de0006, "MCP77/78 HDMI", patch_nvhdmi_8ch_7x), 3741HDA_CODEC_ENTRY(0x10de0006, "MCP77/78 HDMI", patch_nvhdmi_8ch_7x),
3740HDA_CODEC_ENTRY(0x10de0007, "MCP79/7A HDMI", patch_nvhdmi_8ch_7x), 3742HDA_CODEC_ENTRY(0x10de0007, "MCP79/7A HDMI", patch_nvhdmi_8ch_7x),
3743HDA_CODEC_ENTRY(0x10de0008, "GPU 08 HDMI/DP", patch_nvhdmi),
3744HDA_CODEC_ENTRY(0x10de0009, "GPU 09 HDMI/DP", patch_nvhdmi),
3741HDA_CODEC_ENTRY(0x10de000a, "GPU 0a HDMI/DP", patch_nvhdmi), 3745HDA_CODEC_ENTRY(0x10de000a, "GPU 0a HDMI/DP", patch_nvhdmi),
3742HDA_CODEC_ENTRY(0x10de000b, "GPU 0b HDMI/DP", patch_nvhdmi), 3746HDA_CODEC_ENTRY(0x10de000b, "GPU 0b HDMI/DP", patch_nvhdmi),
3743HDA_CODEC_ENTRY(0x10de000c, "MCP89 HDMI", patch_nvhdmi), 3747HDA_CODEC_ENTRY(0x10de000c, "MCP89 HDMI", patch_nvhdmi),
@@ -3764,17 +3768,40 @@ HDA_CODEC_ENTRY(0x10de0041, "GPU 41 HDMI/DP", patch_nvhdmi),
3764HDA_CODEC_ENTRY(0x10de0042, "GPU 42 HDMI/DP", patch_nvhdmi), 3768HDA_CODEC_ENTRY(0x10de0042, "GPU 42 HDMI/DP", patch_nvhdmi),
3765HDA_CODEC_ENTRY(0x10de0043, "GPU 43 HDMI/DP", patch_nvhdmi), 3769HDA_CODEC_ENTRY(0x10de0043, "GPU 43 HDMI/DP", patch_nvhdmi),
3766HDA_CODEC_ENTRY(0x10de0044, "GPU 44 HDMI/DP", patch_nvhdmi), 3770HDA_CODEC_ENTRY(0x10de0044, "GPU 44 HDMI/DP", patch_nvhdmi),
3771HDA_CODEC_ENTRY(0x10de0045, "GPU 45 HDMI/DP", patch_nvhdmi),
3772HDA_CODEC_ENTRY(0x10de0050, "GPU 50 HDMI/DP", patch_nvhdmi),
3767HDA_CODEC_ENTRY(0x10de0051, "GPU 51 HDMI/DP", patch_nvhdmi), 3773HDA_CODEC_ENTRY(0x10de0051, "GPU 51 HDMI/DP", patch_nvhdmi),
3774HDA_CODEC_ENTRY(0x10de0052, "GPU 52 HDMI/DP", patch_nvhdmi),
3768HDA_CODEC_ENTRY(0x10de0060, "GPU 60 HDMI/DP", patch_nvhdmi), 3775HDA_CODEC_ENTRY(0x10de0060, "GPU 60 HDMI/DP", patch_nvhdmi),
3776HDA_CODEC_ENTRY(0x10de0061, "GPU 61 HDMI/DP", patch_nvhdmi),
3777HDA_CODEC_ENTRY(0x10de0062, "GPU 62 HDMI/DP", patch_nvhdmi),
3769HDA_CODEC_ENTRY(0x10de0067, "MCP67 HDMI", patch_nvhdmi_2ch), 3778HDA_CODEC_ENTRY(0x10de0067, "MCP67 HDMI", patch_nvhdmi_2ch),
3770HDA_CODEC_ENTRY(0x10de0070, "GPU 70 HDMI/DP", patch_nvhdmi), 3779HDA_CODEC_ENTRY(0x10de0070, "GPU 70 HDMI/DP", patch_nvhdmi),
3771HDA_CODEC_ENTRY(0x10de0071, "GPU 71 HDMI/DP", patch_nvhdmi), 3780HDA_CODEC_ENTRY(0x10de0071, "GPU 71 HDMI/DP", patch_nvhdmi),
3772HDA_CODEC_ENTRY(0x10de0072, "GPU 72 HDMI/DP", patch_nvhdmi), 3781HDA_CODEC_ENTRY(0x10de0072, "GPU 72 HDMI/DP", patch_nvhdmi),
3782HDA_CODEC_ENTRY(0x10de0073, "GPU 73 HDMI/DP", patch_nvhdmi),
3783HDA_CODEC_ENTRY(0x10de0074, "GPU 74 HDMI/DP", patch_nvhdmi),
3784HDA_CODEC_ENTRY(0x10de0076, "GPU 76 HDMI/DP", patch_nvhdmi),
3785HDA_CODEC_ENTRY(0x10de007b, "GPU 7b HDMI/DP", patch_nvhdmi),
3786HDA_CODEC_ENTRY(0x10de007c, "GPU 7c HDMI/DP", patch_nvhdmi),
3773HDA_CODEC_ENTRY(0x10de007d, "GPU 7d HDMI/DP", patch_nvhdmi), 3787HDA_CODEC_ENTRY(0x10de007d, "GPU 7d HDMI/DP", patch_nvhdmi),
3788HDA_CODEC_ENTRY(0x10de007e, "GPU 7e HDMI/DP", patch_nvhdmi),
3774HDA_CODEC_ENTRY(0x10de0080, "GPU 80 HDMI/DP", patch_nvhdmi), 3789HDA_CODEC_ENTRY(0x10de0080, "GPU 80 HDMI/DP", patch_nvhdmi),
3790HDA_CODEC_ENTRY(0x10de0081, "GPU 81 HDMI/DP", patch_nvhdmi),
3775HDA_CODEC_ENTRY(0x10de0082, "GPU 82 HDMI/DP", patch_nvhdmi), 3791HDA_CODEC_ENTRY(0x10de0082, "GPU 82 HDMI/DP", patch_nvhdmi),
3776HDA_CODEC_ENTRY(0x10de0083, "GPU 83 HDMI/DP", patch_nvhdmi), 3792HDA_CODEC_ENTRY(0x10de0083, "GPU 83 HDMI/DP", patch_nvhdmi),
3793HDA_CODEC_ENTRY(0x10de0084, "GPU 84 HDMI/DP", patch_nvhdmi),
3794HDA_CODEC_ENTRY(0x10de0090, "GPU 90 HDMI/DP", patch_nvhdmi),
3795HDA_CODEC_ENTRY(0x10de0091, "GPU 91 HDMI/DP", patch_nvhdmi),
3796HDA_CODEC_ENTRY(0x10de0092, "GPU 92 HDMI/DP", patch_nvhdmi),
3797HDA_CODEC_ENTRY(0x10de0093, "GPU 93 HDMI/DP", patch_nvhdmi),
3798HDA_CODEC_ENTRY(0x10de0094, "GPU 94 HDMI/DP", patch_nvhdmi),
3799HDA_CODEC_ENTRY(0x10de0095, "GPU 95 HDMI/DP", patch_nvhdmi),
3800HDA_CODEC_ENTRY(0x10de0097, "GPU 97 HDMI/DP", patch_nvhdmi),
3801HDA_CODEC_ENTRY(0x10de0098, "GPU 98 HDMI/DP", patch_nvhdmi),
3802HDA_CODEC_ENTRY(0x10de0099, "GPU 99 HDMI/DP", patch_nvhdmi),
3777HDA_CODEC_ENTRY(0x10de8001, "MCP73 HDMI", patch_nvhdmi_2ch), 3803HDA_CODEC_ENTRY(0x10de8001, "MCP73 HDMI", patch_nvhdmi_2ch),
3804HDA_CODEC_ENTRY(0x10de8067, "MCP67/68 HDMI", patch_nvhdmi_2ch),
3778HDA_CODEC_ENTRY(0x11069f80, "VX900 HDMI/DP", patch_via_hdmi), 3805HDA_CODEC_ENTRY(0x11069f80, "VX900 HDMI/DP", patch_via_hdmi),
3779HDA_CODEC_ENTRY(0x11069f81, "VX900 HDMI/DP", patch_via_hdmi), 3806HDA_CODEC_ENTRY(0x11069f81, "VX900 HDMI/DP", patch_via_hdmi),
3780HDA_CODEC_ENTRY(0x11069f84, "VX11 HDMI/DP", patch_generic_hdmi), 3807HDA_CODEC_ENTRY(0x11069f84, "VX11 HDMI/DP", patch_generic_hdmi),
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 45d58fc1df39..217bb582aff1 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -2296,6 +2296,7 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = {
2296 SND_PCI_QUIRK(0x1043, 0x8691, "ASUS ROG Ranger VIII", ALC882_FIXUP_GPIO3), 2296 SND_PCI_QUIRK(0x1043, 0x8691, "ASUS ROG Ranger VIII", ALC882_FIXUP_GPIO3),
2297 SND_PCI_QUIRK(0x104d, 0x9047, "Sony Vaio TT", ALC889_FIXUP_VAIO_TT), 2297 SND_PCI_QUIRK(0x104d, 0x9047, "Sony Vaio TT", ALC889_FIXUP_VAIO_TT),
2298 SND_PCI_QUIRK(0x104d, 0x905a, "Sony Vaio Z", ALC882_FIXUP_NO_PRIMARY_HP), 2298 SND_PCI_QUIRK(0x104d, 0x905a, "Sony Vaio Z", ALC882_FIXUP_NO_PRIMARY_HP),
2299 SND_PCI_QUIRK(0x104d, 0x9060, "Sony Vaio VPCL14M1R", ALC882_FIXUP_NO_PRIMARY_HP),
2299 SND_PCI_QUIRK(0x104d, 0x9043, "Sony Vaio VGC-LN51JGB", ALC882_FIXUP_NO_PRIMARY_HP), 2300 SND_PCI_QUIRK(0x104d, 0x9043, "Sony Vaio VGC-LN51JGB", ALC882_FIXUP_NO_PRIMARY_HP),
2300 SND_PCI_QUIRK(0x104d, 0x9044, "Sony VAIO AiO", ALC882_FIXUP_NO_PRIMARY_HP), 2301 SND_PCI_QUIRK(0x104d, 0x9044, "Sony VAIO AiO", ALC882_FIXUP_NO_PRIMARY_HP),
2301 2302
@@ -3838,6 +3839,17 @@ static void alc269_fixup_hp_line1_mic1_led(struct hda_codec *codec,
3838 } 3839 }
3839} 3840}
3840 3841
3842static struct coef_fw alc225_pre_hsmode[] = {
3843 UPDATE_COEF(0x4a, 1<<8, 0),
3844 UPDATE_COEFEX(0x57, 0x05, 1<<14, 0),
3845 UPDATE_COEF(0x63, 3<<14, 3<<14),
3846 UPDATE_COEF(0x4a, 3<<4, 2<<4),
3847 UPDATE_COEF(0x4a, 3<<10, 3<<10),
3848 UPDATE_COEF(0x45, 0x3f<<10, 0x34<<10),
3849 UPDATE_COEF(0x4a, 3<<10, 0),
3850 {}
3851};
3852
3841static void alc_headset_mode_unplugged(struct hda_codec *codec) 3853static void alc_headset_mode_unplugged(struct hda_codec *codec)
3842{ 3854{
3843 static struct coef_fw coef0255[] = { 3855 static struct coef_fw coef0255[] = {
@@ -3873,6 +3885,10 @@ static void alc_headset_mode_unplugged(struct hda_codec *codec)
3873 UPDATE_COEF(0x67, 0x2000, 0), 3885 UPDATE_COEF(0x67, 0x2000, 0),
3874 {} 3886 {}
3875 }; 3887 };
3888 static struct coef_fw coef0298[] = {
3889 UPDATE_COEF(0x19, 0x1300, 0x0300),
3890 {}
3891 };
3876 static struct coef_fw coef0292[] = { 3892 static struct coef_fw coef0292[] = {
3877 WRITE_COEF(0x76, 0x000e), 3893 WRITE_COEF(0x76, 0x000e),
3878 WRITE_COEF(0x6c, 0x2400), 3894 WRITE_COEF(0x6c, 0x2400),
@@ -3895,13 +3911,7 @@ static void alc_headset_mode_unplugged(struct hda_codec *codec)
3895 {} 3911 {}
3896 }; 3912 };
3897 static struct coef_fw coef0225[] = { 3913 static struct coef_fw coef0225[] = {
3898 UPDATE_COEF(0x4a, 1<<8, 0), 3914 UPDATE_COEF(0x63, 3<<14, 0),
3899 UPDATE_COEFEX(0x57, 0x05, 1<<14, 0),
3900 UPDATE_COEF(0x63, 3<<14, 3<<14),
3901 UPDATE_COEF(0x4a, 3<<4, 2<<4),
3902 UPDATE_COEF(0x4a, 3<<10, 3<<10),
3903 UPDATE_COEF(0x45, 0x3f<<10, 0x34<<10),
3904 UPDATE_COEF(0x4a, 3<<10, 0),
3905 {} 3915 {}
3906 }; 3916 };
3907 static struct coef_fw coef0274[] = { 3917 static struct coef_fw coef0274[] = {
@@ -3935,7 +3945,10 @@ static void alc_headset_mode_unplugged(struct hda_codec *codec)
3935 break; 3945 break;
3936 case 0x10ec0286: 3946 case 0x10ec0286:
3937 case 0x10ec0288: 3947 case 0x10ec0288:
3948 alc_process_coef_fw(codec, coef0288);
3949 break;
3938 case 0x10ec0298: 3950 case 0x10ec0298:
3951 alc_process_coef_fw(codec, coef0298);
3939 alc_process_coef_fw(codec, coef0288); 3952 alc_process_coef_fw(codec, coef0288);
3940 break; 3953 break;
3941 case 0x10ec0292: 3954 case 0x10ec0292:
@@ -3976,6 +3989,7 @@ static void alc_headset_mode_mic_in(struct hda_codec *codec, hda_nid_t hp_pin,
3976 {} 3989 {}
3977 }; 3990 };
3978 static struct coef_fw coef0288[] = { 3991 static struct coef_fw coef0288[] = {
3992 UPDATE_COEF(0x4f, 0x00c0, 0),
3979 UPDATE_COEF(0x50, 0x2000, 0), 3993 UPDATE_COEF(0x50, 0x2000, 0),
3980 UPDATE_COEF(0x56, 0x0006, 0), 3994 UPDATE_COEF(0x56, 0x0006, 0),
3981 UPDATE_COEF(0x4f, 0xfcc0, 0xc400), 3995 UPDATE_COEF(0x4f, 0xfcc0, 0xc400),
@@ -4039,7 +4053,6 @@ static void alc_headset_mode_mic_in(struct hda_codec *codec, hda_nid_t hp_pin,
4039 case 0x10ec0286: 4053 case 0x10ec0286:
4040 case 0x10ec0288: 4054 case 0x10ec0288:
4041 case 0x10ec0298: 4055 case 0x10ec0298:
4042 alc_update_coef_idx(codec, 0x4f, 0x000c, 0);
4043 snd_hda_set_pin_ctl_cache(codec, hp_pin, 0); 4056 snd_hda_set_pin_ctl_cache(codec, hp_pin, 0);
4044 alc_process_coef_fw(codec, coef0288); 4057 alc_process_coef_fw(codec, coef0288);
4045 snd_hda_set_pin_ctl_cache(codec, mic_pin, PIN_VREF50); 4058 snd_hda_set_pin_ctl_cache(codec, mic_pin, PIN_VREF50);
@@ -4072,6 +4085,7 @@ static void alc_headset_mode_mic_in(struct hda_codec *codec, hda_nid_t hp_pin,
4072 case 0x10ec0225: 4085 case 0x10ec0225:
4073 case 0x10ec0295: 4086 case 0x10ec0295:
4074 case 0x10ec0299: 4087 case 0x10ec0299:
4088 alc_process_coef_fw(codec, alc225_pre_hsmode);
4075 alc_update_coef_idx(codec, 0x45, 0x3f<<10, 0x31<<10); 4089 alc_update_coef_idx(codec, 0x45, 0x3f<<10, 0x31<<10);
4076 snd_hda_set_pin_ctl_cache(codec, hp_pin, 0); 4090 snd_hda_set_pin_ctl_cache(codec, hp_pin, 0);
4077 alc_process_coef_fw(codec, coef0225); 4091 alc_process_coef_fw(codec, coef0225);
@@ -4084,7 +4098,12 @@ static void alc_headset_mode_mic_in(struct hda_codec *codec, hda_nid_t hp_pin,
4084static void alc_headset_mode_default(struct hda_codec *codec) 4098static void alc_headset_mode_default(struct hda_codec *codec)
4085{ 4099{
4086 static struct coef_fw coef0225[] = { 4100 static struct coef_fw coef0225[] = {
4087 UPDATE_COEF(0x45, 0x3f<<10, 0x34<<10), 4101 UPDATE_COEF(0x45, 0x3f<<10, 0x30<<10),
4102 UPDATE_COEF(0x45, 0x3f<<10, 0x31<<10),
4103 UPDATE_COEF(0x49, 3<<8, 0<<8),
4104 UPDATE_COEF(0x4a, 3<<4, 3<<4),
4105 UPDATE_COEF(0x63, 3<<14, 0),
4106 UPDATE_COEF(0x67, 0xf000, 0x3000),
4088 {} 4107 {}
4089 }; 4108 };
4090 static struct coef_fw coef0255[] = { 4109 static struct coef_fw coef0255[] = {
@@ -4138,6 +4157,7 @@ static void alc_headset_mode_default(struct hda_codec *codec)
4138 case 0x10ec0225: 4157 case 0x10ec0225:
4139 case 0x10ec0295: 4158 case 0x10ec0295:
4140 case 0x10ec0299: 4159 case 0x10ec0299:
4160 alc_process_coef_fw(codec, alc225_pre_hsmode);
4141 alc_process_coef_fw(codec, coef0225); 4161 alc_process_coef_fw(codec, coef0225);
4142 break; 4162 break;
4143 case 0x10ec0255: 4163 case 0x10ec0255:
@@ -4177,6 +4197,8 @@ static void alc_headset_mode_default(struct hda_codec *codec)
4177/* Iphone type */ 4197/* Iphone type */
4178static void alc_headset_mode_ctia(struct hda_codec *codec) 4198static void alc_headset_mode_ctia(struct hda_codec *codec)
4179{ 4199{
4200 int val;
4201
4180 static struct coef_fw coef0255[] = { 4202 static struct coef_fw coef0255[] = {
4181 WRITE_COEF(0x45, 0xd489), /* Set to CTIA type */ 4203 WRITE_COEF(0x45, 0xd489), /* Set to CTIA type */
4182 WRITE_COEF(0x1b, 0x0c2b), 4204 WRITE_COEF(0x1b, 0x0c2b),
@@ -4219,11 +4241,14 @@ static void alc_headset_mode_ctia(struct hda_codec *codec)
4219 WRITE_COEF(0xc3, 0x0000), 4241 WRITE_COEF(0xc3, 0x0000),
4220 {} 4242 {}
4221 }; 4243 };
4222 static struct coef_fw coef0225[] = { 4244 static struct coef_fw coef0225_1[] = {
4223 UPDATE_COEF(0x45, 0x3f<<10, 0x35<<10), 4245 UPDATE_COEF(0x45, 0x3f<<10, 0x35<<10),
4224 UPDATE_COEF(0x49, 1<<8, 1<<8), 4246 UPDATE_COEF(0x63, 3<<14, 2<<14),
4225 UPDATE_COEF(0x4a, 7<<6, 7<<6), 4247 {}
4226 UPDATE_COEF(0x4a, 3<<4, 3<<4), 4248 };
4249 static struct coef_fw coef0225_2[] = {
4250 UPDATE_COEF(0x45, 0x3f<<10, 0x35<<10),
4251 UPDATE_COEF(0x63, 3<<14, 1<<14),
4227 {} 4252 {}
4228 }; 4253 };
4229 4254
@@ -4244,8 +4269,17 @@ static void alc_headset_mode_ctia(struct hda_codec *codec)
4244 alc_process_coef_fw(codec, coef0233); 4269 alc_process_coef_fw(codec, coef0233);
4245 break; 4270 break;
4246 case 0x10ec0298: 4271 case 0x10ec0298:
4247 alc_update_coef_idx(codec, 0x8e, 0x0070, 0x0020);/* Headset output enable */ 4272 val = alc_read_coef_idx(codec, 0x50);
4248 /* ALC298 jack type setting is the same with ALC286/ALC288 */ 4273 if (val & (1 << 12)) {
4274 alc_update_coef_idx(codec, 0x8e, 0x0070, 0x0020);
4275 alc_update_coef_idx(codec, 0x4f, 0xfcc0, 0xd400);
4276 msleep(300);
4277 } else {
4278 alc_update_coef_idx(codec, 0x8e, 0x0070, 0x0010);
4279 alc_update_coef_idx(codec, 0x4f, 0xfcc0, 0xd400);
4280 msleep(300);
4281 }
4282 break;
4249 case 0x10ec0286: 4283 case 0x10ec0286:
4250 case 0x10ec0288: 4284 case 0x10ec0288:
4251 alc_update_coef_idx(codec, 0x4f, 0xfcc0, 0xd400); 4285 alc_update_coef_idx(codec, 0x4f, 0xfcc0, 0xd400);
@@ -4264,7 +4298,11 @@ static void alc_headset_mode_ctia(struct hda_codec *codec)
4264 case 0x10ec0225: 4298 case 0x10ec0225:
4265 case 0x10ec0295: 4299 case 0x10ec0295:
4266 case 0x10ec0299: 4300 case 0x10ec0299:
4267 alc_process_coef_fw(codec, coef0225); 4301 val = alc_read_coef_idx(codec, 0x45);
4302 if (val & (1 << 9))
4303 alc_process_coef_fw(codec, coef0225_2);
4304 else
4305 alc_process_coef_fw(codec, coef0225_1);
4268 break; 4306 break;
4269 case 0x10ec0867: 4307 case 0x10ec0867:
4270 alc_update_coefex_idx(codec, 0x57, 0x5, 1<<14, 0); 4308 alc_update_coefex_idx(codec, 0x57, 0x5, 1<<14, 0);
@@ -4320,9 +4358,7 @@ static void alc_headset_mode_omtp(struct hda_codec *codec)
4320 }; 4358 };
4321 static struct coef_fw coef0225[] = { 4359 static struct coef_fw coef0225[] = {
4322 UPDATE_COEF(0x45, 0x3f<<10, 0x39<<10), 4360 UPDATE_COEF(0x45, 0x3f<<10, 0x39<<10),
4323 UPDATE_COEF(0x49, 1<<8, 1<<8), 4361 UPDATE_COEF(0x63, 3<<14, 2<<14),
4324 UPDATE_COEF(0x4a, 7<<6, 7<<6),
4325 UPDATE_COEF(0x4a, 3<<4, 3<<4),
4326 {} 4362 {}
4327 }; 4363 };
4328 4364
@@ -4344,7 +4380,9 @@ static void alc_headset_mode_omtp(struct hda_codec *codec)
4344 break; 4380 break;
4345 case 0x10ec0298: 4381 case 0x10ec0298:
4346 alc_update_coef_idx(codec, 0x8e, 0x0070, 0x0010);/* Headset output enable */ 4382 alc_update_coef_idx(codec, 0x8e, 0x0070, 0x0010);/* Headset output enable */
4347 /* ALC298 jack type setting is the same with ALC286/ALC288 */ 4383 alc_update_coef_idx(codec, 0x4f, 0xfcc0, 0xe400);
4384 msleep(300);
4385 break;
4348 case 0x10ec0286: 4386 case 0x10ec0286:
4349 case 0x10ec0288: 4387 case 0x10ec0288:
4350 alc_update_coef_idx(codec, 0x4f, 0xfcc0, 0xe400); 4388 alc_update_coef_idx(codec, 0x4f, 0xfcc0, 0xe400);
@@ -4384,6 +4422,14 @@ static void alc_determine_headset_type(struct hda_codec *codec)
4384 UPDATE_COEF(0x4f, 0xfcc0, 0xd400), /* Check Type */ 4422 UPDATE_COEF(0x4f, 0xfcc0, 0xd400), /* Check Type */
4385 {} 4423 {}
4386 }; 4424 };
4425 static struct coef_fw coef0298[] = {
4426 UPDATE_COEF(0x50, 0x2000, 0x2000),
4427 UPDATE_COEF(0x56, 0x0006, 0x0006),
4428 UPDATE_COEF(0x66, 0x0008, 0),
4429 UPDATE_COEF(0x67, 0x2000, 0),
4430 UPDATE_COEF(0x19, 0x1300, 0x1300),
4431 {}
4432 };
4387 static struct coef_fw coef0293[] = { 4433 static struct coef_fw coef0293[] = {
4388 UPDATE_COEF(0x4a, 0x000f, 0x0008), /* Combo Jack auto detect */ 4434 UPDATE_COEF(0x4a, 0x000f, 0x0008), /* Combo Jack auto detect */
4389 WRITE_COEF(0x45, 0xD429), /* Set to ctia type */ 4435 WRITE_COEF(0x45, 0xD429), /* Set to ctia type */
@@ -4396,11 +4442,6 @@ static void alc_determine_headset_type(struct hda_codec *codec)
4396 WRITE_COEF(0xc3, 0x0c00), 4442 WRITE_COEF(0xc3, 0x0c00),
4397 {} 4443 {}
4398 }; 4444 };
4399 static struct coef_fw coef0225[] = {
4400 UPDATE_COEF(0x45, 0x3f<<10, 0x34<<10),
4401 UPDATE_COEF(0x49, 1<<8, 1<<8),
4402 {}
4403 };
4404 static struct coef_fw coef0274[] = { 4445 static struct coef_fw coef0274[] = {
4405 UPDATE_COEF(0x4a, 0x0010, 0), 4446 UPDATE_COEF(0x4a, 0x0010, 0),
4406 UPDATE_COEF(0x4a, 0x8000, 0), 4447 UPDATE_COEF(0x4a, 0x8000, 0),
@@ -4433,8 +4474,34 @@ static void alc_determine_headset_type(struct hda_codec *codec)
4433 is_ctia = (val & 0x0070) == 0x0070; 4474 is_ctia = (val & 0x0070) == 0x0070;
4434 break; 4475 break;
4435 case 0x10ec0298: 4476 case 0x10ec0298:
4436 alc_update_coef_idx(codec, 0x8e, 0x0070, 0x0020); /* Headset output enable */ 4477 snd_hda_codec_write(codec, 0x21, 0,
4437 /* ALC298 check jack type is the same with ALC286/ALC288 */ 4478 AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE);
4479 msleep(100);
4480 snd_hda_codec_write(codec, 0x21, 0,
4481 AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0);
4482 msleep(200);
4483
4484 val = alc_read_coef_idx(codec, 0x50);
4485 if (val & (1 << 12)) {
4486 alc_update_coef_idx(codec, 0x8e, 0x0070, 0x0020);
4487 alc_process_coef_fw(codec, coef0288);
4488 msleep(350);
4489 val = alc_read_coef_idx(codec, 0x50);
4490 is_ctia = (val & 0x0070) == 0x0070;
4491 } else {
4492 alc_update_coef_idx(codec, 0x8e, 0x0070, 0x0010);
4493 alc_process_coef_fw(codec, coef0288);
4494 msleep(350);
4495 val = alc_read_coef_idx(codec, 0x50);
4496 is_ctia = (val & 0x0070) == 0x0070;
4497 }
4498 alc_process_coef_fw(codec, coef0298);
4499 snd_hda_codec_write(codec, 0x21, 0,
4500 AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_HP);
4501 msleep(75);
4502 snd_hda_codec_write(codec, 0x21, 0,
4503 AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE);
4504 break;
4438 case 0x10ec0286: 4505 case 0x10ec0286:
4439 case 0x10ec0288: 4506 case 0x10ec0288:
4440 alc_process_coef_fw(codec, coef0288); 4507 alc_process_coef_fw(codec, coef0288);
@@ -4463,10 +4530,25 @@ static void alc_determine_headset_type(struct hda_codec *codec)
4463 case 0x10ec0225: 4530 case 0x10ec0225:
4464 case 0x10ec0295: 4531 case 0x10ec0295:
4465 case 0x10ec0299: 4532 case 0x10ec0299:
4466 alc_process_coef_fw(codec, coef0225); 4533 alc_process_coef_fw(codec, alc225_pre_hsmode);
4467 msleep(800); 4534 alc_update_coef_idx(codec, 0x67, 0xf000, 0x1000);
4468 val = alc_read_coef_idx(codec, 0x46); 4535 val = alc_read_coef_idx(codec, 0x45);
4469 is_ctia = (val & 0x00f0) == 0x00f0; 4536 if (val & (1 << 9)) {
4537 alc_update_coef_idx(codec, 0x45, 0x3f<<10, 0x34<<10);
4538 alc_update_coef_idx(codec, 0x49, 3<<8, 2<<8);
4539 msleep(800);
4540 val = alc_read_coef_idx(codec, 0x46);
4541 is_ctia = (val & 0x00f0) == 0x00f0;
4542 } else {
4543 alc_update_coef_idx(codec, 0x45, 0x3f<<10, 0x34<<10);
4544 alc_update_coef_idx(codec, 0x49, 3<<8, 1<<8);
4545 msleep(800);
4546 val = alc_read_coef_idx(codec, 0x46);
4547 is_ctia = (val & 0x00f0) == 0x00f0;
4548 }
4549 alc_update_coef_idx(codec, 0x4a, 7<<6, 7<<6);
4550 alc_update_coef_idx(codec, 0x4a, 3<<4, 3<<4);
4551 alc_update_coef_idx(codec, 0x67, 0xf000, 0x3000);
4470 break; 4552 break;
4471 case 0x10ec0867: 4553 case 0x10ec0867:
4472 is_ctia = true; 4554 is_ctia = true;
@@ -6565,7 +6647,6 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = {
6565 SND_HDA_PIN_QUIRK(0x10ec0299, 0x1028, "Dell", ALC269_FIXUP_DELL4_MIC_NO_PRESENCE, 6647 SND_HDA_PIN_QUIRK(0x10ec0299, 0x1028, "Dell", ALC269_FIXUP_DELL4_MIC_NO_PRESENCE,
6566 ALC225_STANDARD_PINS, 6648 ALC225_STANDARD_PINS,
6567 {0x12, 0xb7a60130}, 6649 {0x12, 0xb7a60130},
6568 {0x13, 0xb8a61140},
6569 {0x17, 0x90170110}), 6650 {0x17, 0x90170110}),
6570 {} 6651 {}
6571}; 6652};
@@ -6724,6 +6805,7 @@ static int patch_alc269(struct hda_codec *codec)
6724 case 0x10ec0225: 6805 case 0x10ec0225:
6725 case 0x10ec0295: 6806 case 0x10ec0295:
6726 spec->codec_variant = ALC269_TYPE_ALC225; 6807 spec->codec_variant = ALC269_TYPE_ALC225;
6808 spec->gen.mixer_nid = 0; /* no loopback on ALC225 ALC295 */
6727 break; 6809 break;
6728 case 0x10ec0299: 6810 case 0x10ec0299:
6729 spec->codec_variant = ALC269_TYPE_ALC225; 6811 spec->codec_variant = ALC269_TYPE_ALC225;
diff --git a/sound/soc/codecs/msm8916-wcd-analog.c b/sound/soc/codecs/msm8916-wcd-analog.c
index a78802920c3c..5710fd440bcd 100644
--- a/sound/soc/codecs/msm8916-wcd-analog.c
+++ b/sound/soc/codecs/msm8916-wcd-analog.c
@@ -36,7 +36,7 @@
36#define CDC_D_CDC_DIG_CLK_CTL (0xf04A) 36#define CDC_D_CDC_DIG_CLK_CTL (0xf04A)
37#define DIG_CLK_CTL_RXD1_CLK_EN BIT(0) 37#define DIG_CLK_CTL_RXD1_CLK_EN BIT(0)
38#define DIG_CLK_CTL_RXD2_CLK_EN BIT(1) 38#define DIG_CLK_CTL_RXD2_CLK_EN BIT(1)
39#define DIG_CLK_CTL_RXD3_CLK_EN BIT(3) 39#define DIG_CLK_CTL_RXD3_CLK_EN BIT(2)
40#define DIG_CLK_CTL_TXD_CLK_EN BIT(4) 40#define DIG_CLK_CTL_TXD_CLK_EN BIT(4)
41#define DIG_CLK_CTL_NCP_CLK_EN_MASK BIT(6) 41#define DIG_CLK_CTL_NCP_CLK_EN_MASK BIT(6)
42#define DIG_CLK_CTL_NCP_CLK_EN BIT(6) 42#define DIG_CLK_CTL_NCP_CLK_EN BIT(6)
diff --git a/sound/soc/codecs/rt5663.c b/sound/soc/codecs/rt5663.c
index a33202affeb1..fa550e3c1332 100644
--- a/sound/soc/codecs/rt5663.c
+++ b/sound/soc/codecs/rt5663.c
@@ -466,7 +466,7 @@ static const struct reg_default rt5663_reg[] = {
466 { 0x0006, 0x1000 }, 466 { 0x0006, 0x1000 },
467 { 0x000a, 0x0000 }, 467 { 0x000a, 0x0000 },
468 { 0x0010, 0x000f }, 468 { 0x0010, 0x000f },
469 { 0x0015, 0x42c1 }, 469 { 0x0015, 0x42f1 },
470 { 0x0016, 0x0000 }, 470 { 0x0016, 0x0000 },
471 { 0x0018, 0x000b }, 471 { 0x0018, 0x000b },
472 { 0x0019, 0xafaf }, 472 { 0x0019, 0xafaf },
@@ -509,7 +509,7 @@ static const struct reg_default rt5663_reg[] = {
509 { 0x008a, 0x0000 }, 509 { 0x008a, 0x0000 },
510 { 0x008b, 0x0000 }, 510 { 0x008b, 0x0000 },
511 { 0x008c, 0x0003 }, 511 { 0x008c, 0x0003 },
512 { 0x008e, 0x0004 }, 512 { 0x008e, 0x0008 },
513 { 0x008f, 0x1000 }, 513 { 0x008f, 0x1000 },
514 { 0x0090, 0x0646 }, 514 { 0x0090, 0x0646 },
515 { 0x0091, 0x0e3e }, 515 { 0x0091, 0x0e3e },
@@ -520,7 +520,7 @@ static const struct reg_default rt5663_reg[] = {
520 { 0x0098, 0x0000 }, 520 { 0x0098, 0x0000 },
521 { 0x009a, 0x0000 }, 521 { 0x009a, 0x0000 },
522 { 0x009f, 0x0000 }, 522 { 0x009f, 0x0000 },
523 { 0x00ae, 0x2000 }, 523 { 0x00ae, 0x6000 },
524 { 0x00af, 0x0000 }, 524 { 0x00af, 0x0000 },
525 { 0x00b6, 0x0000 }, 525 { 0x00b6, 0x0000 },
526 { 0x00b7, 0x0000 }, 526 { 0x00b7, 0x0000 },
@@ -538,7 +538,7 @@ static const struct reg_default rt5663_reg[] = {
538 { 0x00d9, 0x08f9 }, 538 { 0x00d9, 0x08f9 },
539 { 0x00db, 0x0008 }, 539 { 0x00db, 0x0008 },
540 { 0x00dc, 0x00c0 }, 540 { 0x00dc, 0x00c0 },
541 { 0x00dd, 0x6724 }, 541 { 0x00dd, 0x6729 },
542 { 0x00de, 0x3131 }, 542 { 0x00de, 0x3131 },
543 { 0x00df, 0x0008 }, 543 { 0x00df, 0x0008 },
544 { 0x00e0, 0x4000 }, 544 { 0x00e0, 0x4000 },
@@ -578,7 +578,7 @@ static const struct reg_default rt5663_reg[] = {
578 { 0x0116, 0x0000 }, 578 { 0x0116, 0x0000 },
579 { 0x0117, 0x0f00 }, 579 { 0x0117, 0x0f00 },
580 { 0x0118, 0x0006 }, 580 { 0x0118, 0x0006 },
581 { 0x0125, 0x2224 }, 581 { 0x0125, 0x2424 },
582 { 0x0126, 0x5550 }, 582 { 0x0126, 0x5550 },
583 { 0x0127, 0x0400 }, 583 { 0x0127, 0x0400 },
584 { 0x0128, 0x7711 }, 584 { 0x0128, 0x7711 },
@@ -596,8 +596,8 @@ static const struct reg_default rt5663_reg[] = {
596 { 0x0145, 0x0002 }, 596 { 0x0145, 0x0002 },
597 { 0x0146, 0x0000 }, 597 { 0x0146, 0x0000 },
598 { 0x0160, 0x0e80 }, 598 { 0x0160, 0x0e80 },
599 { 0x0161, 0x0020 }, 599 { 0x0161, 0x0080 },
600 { 0x0162, 0x0080 }, 600 { 0x0162, 0x0200 },
601 { 0x0163, 0x0800 }, 601 { 0x0163, 0x0800 },
602 { 0x0164, 0x0000 }, 602 { 0x0164, 0x0000 },
603 { 0x0165, 0x0000 }, 603 { 0x0165, 0x0000 },
@@ -676,8 +676,8 @@ static const struct reg_default rt5663_reg[] = {
676 { 0x0251, 0x0000 }, 676 { 0x0251, 0x0000 },
677 { 0x0252, 0x028a }, 677 { 0x0252, 0x028a },
678 { 0x02fa, 0x0000 }, 678 { 0x02fa, 0x0000 },
679 { 0x02fb, 0x0000 }, 679 { 0x02fb, 0x00a4 },
680 { 0x02fc, 0x0000 }, 680 { 0x02fc, 0x0300 },
681 { 0x0300, 0x0000 }, 681 { 0x0300, 0x0000 },
682 { 0x03d0, 0x0000 }, 682 { 0x03d0, 0x0000 },
683 { 0x03d1, 0x0000 }, 683 { 0x03d1, 0x0000 },
diff --git a/sound/soc/codecs/rt5665.c b/sound/soc/codecs/rt5665.c
index 370ed54d1e15..e597c893536d 100644
--- a/sound/soc/codecs/rt5665.c
+++ b/sound/soc/codecs/rt5665.c
@@ -4368,12 +4368,12 @@ static int rt5665_set_bclk_ratio(struct snd_soc_dai *dai, unsigned int ratio)
4368 switch (dai->id) { 4368 switch (dai->id) {
4369 case RT5665_AIF2_1: 4369 case RT5665_AIF2_1:
4370 case RT5665_AIF2_2: 4370 case RT5665_AIF2_2:
4371 snd_soc_update_bits(codec, RT5665_ADDA_CLK_1, 4371 snd_soc_update_bits(codec, RT5665_ADDA_CLK_2,
4372 RT5665_I2S_BCLK_MS2_MASK, 4372 RT5665_I2S_BCLK_MS2_MASK,
4373 RT5665_I2S_BCLK_MS2_64); 4373 RT5665_I2S_BCLK_MS2_64);
4374 break; 4374 break;
4375 case RT5665_AIF3: 4375 case RT5665_AIF3:
4376 snd_soc_update_bits(codec, RT5665_ADDA_CLK_1, 4376 snd_soc_update_bits(codec, RT5665_ADDA_CLK_2,
4377 RT5665_I2S_BCLK_MS3_MASK, 4377 RT5665_I2S_BCLK_MS3_MASK,
4378 RT5665_I2S_BCLK_MS3_64); 4378 RT5665_I2S_BCLK_MS3_64);
4379 break; 4379 break;
diff --git a/sound/soc/codecs/rt5665.h b/sound/soc/codecs/rt5665.h
index 1db5c6a62a8e..d95249c4c47b 100644
--- a/sound/soc/codecs/rt5665.h
+++ b/sound/soc/codecs/rt5665.h
@@ -1692,8 +1692,8 @@
1692#define RT5665_GP6_PIN_MASK (0x3 << 5) 1692#define RT5665_GP6_PIN_MASK (0x3 << 5)
1693#define RT5665_GP6_PIN_SFT 5 1693#define RT5665_GP6_PIN_SFT 5
1694#define RT5665_GP6_PIN_GPIO6 (0x0 << 5) 1694#define RT5665_GP6_PIN_GPIO6 (0x0 << 5)
1695#define RT5665_GP6_PIN_BCLK3 (0x0 << 5) 1695#define RT5665_GP6_PIN_BCLK3 (0x1 << 5)
1696#define RT5665_GP6_PIN_PDM_SCL (0x1 << 5) 1696#define RT5665_GP6_PIN_PDM_SCL (0x2 << 5)
1697#define RT5665_GP7_PIN_MASK (0x3 << 3) 1697#define RT5665_GP7_PIN_MASK (0x3 << 3)
1698#define RT5665_GP7_PIN_SFT 3 1698#define RT5665_GP7_PIN_SFT 3
1699#define RT5665_GP7_PIN_GPIO7 (0x0 << 3) 1699#define RT5665_GP7_PIN_GPIO7 (0x0 << 3)
diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c
index 8f6814c1eb6b..80f6d1da7095 100644
--- a/sound/soc/codecs/sgtl5000.c
+++ b/sound/soc/codecs/sgtl5000.c
@@ -409,7 +409,7 @@ static int dac_put_volsw(struct snd_kcontrol *kcontrol,
409static int avc_get_threshold(struct snd_kcontrol *kcontrol, 409static int avc_get_threshold(struct snd_kcontrol *kcontrol,
410 struct snd_ctl_elem_value *ucontrol) 410 struct snd_ctl_elem_value *ucontrol)
411{ 411{
412 struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); 412 struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
413 int db, i; 413 int db, i;
414 u16 reg = snd_soc_read(codec, SGTL5000_DAP_AVC_THRESHOLD); 414 u16 reg = snd_soc_read(codec, SGTL5000_DAP_AVC_THRESHOLD);
415 415
@@ -442,7 +442,7 @@ static int avc_get_threshold(struct snd_kcontrol *kcontrol,
442static int avc_put_threshold(struct snd_kcontrol *kcontrol, 442static int avc_put_threshold(struct snd_kcontrol *kcontrol,
443 struct snd_ctl_elem_value *ucontrol) 443 struct snd_ctl_elem_value *ucontrol)
444{ 444{
445 struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); 445 struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
446 int db; 446 int db;
447 u16 reg; 447 u16 reg;
448 448
diff --git a/sound/soc/fsl/imx-ssi.c b/sound/soc/fsl/imx-ssi.c
index b95132e2f9dc..06790615e04e 100644
--- a/sound/soc/fsl/imx-ssi.c
+++ b/sound/soc/fsl/imx-ssi.c
@@ -527,6 +527,10 @@ static int imx_ssi_probe(struct platform_device *pdev)
527 } 527 }
528 528
529 ssi->irq = platform_get_irq(pdev, 0); 529 ssi->irq = platform_get_irq(pdev, 0);
530 if (ssi->irq < 0) {
531 dev_err(&pdev->dev, "Failed to get IRQ: %d\n", ssi->irq);
532 return ssi->irq;
533 }
530 534
531 ssi->clk = devm_clk_get(&pdev->dev, NULL); 535 ssi->clk = devm_clk_get(&pdev->dev, NULL);
532 if (IS_ERR(ssi->clk)) { 536 if (IS_ERR(ssi->clk)) {
diff --git a/sound/soc/generic/audio-graph-card.c b/sound/soc/generic/audio-graph-card.c
index 105ec3a6e30d..de2550c7a96b 100644
--- a/sound/soc/generic/audio-graph-card.c
+++ b/sound/soc/generic/audio-graph-card.c
@@ -224,9 +224,11 @@ static int asoc_graph_card_parse_of(struct graph_card_data *priv)
224 224
225 of_for_each_phandle(&it, rc, node, "dais", NULL, 0) { 225 of_for_each_phandle(&it, rc, node, "dais", NULL, 0) {
226 ret = asoc_graph_card_dai_link_of(it.node, priv, idx++); 226 ret = asoc_graph_card_dai_link_of(it.node, priv, idx++);
227 of_node_put(it.node); 227 if (ret < 0) {
228 if (ret < 0) 228 of_node_put(it.node);
229
229 return ret; 230 return ret;
231 }
230 } 232 }
231 233
232 return asoc_simple_card_parse_card_name(card, NULL); 234 return asoc_simple_card_parse_card_name(card, NULL);
@@ -239,10 +241,8 @@ static int asoc_graph_get_dais_count(struct device *dev)
239 int count = 0; 241 int count = 0;
240 int rc; 242 int rc;
241 243
242 of_for_each_phandle(&it, rc, node, "dais", NULL, 0) { 244 of_for_each_phandle(&it, rc, node, "dais", NULL, 0)
243 count++; 245 count++;
244 of_node_put(it.node);
245 }
246 246
247 return count; 247 return count;
248} 248}
diff --git a/sound/soc/generic/audio-graph-scu-card.c b/sound/soc/generic/audio-graph-scu-card.c
index dcd2df37bc3b..758ac06f3a99 100644
--- a/sound/soc/generic/audio-graph-scu-card.c
+++ b/sound/soc/generic/audio-graph-scu-card.c
@@ -215,7 +215,6 @@ static int asoc_graph_card_parse_of(struct graph_card_data *priv)
215 codec_ep = of_graph_get_remote_endpoint(cpu_ep); 215 codec_ep = of_graph_get_remote_endpoint(cpu_ep);
216 rcpu_ep = of_graph_get_remote_endpoint(codec_ep); 216 rcpu_ep = of_graph_get_remote_endpoint(codec_ep);
217 217
218 of_node_put(cpu_port);
219 of_node_put(cpu_ep); 218 of_node_put(cpu_ep);
220 of_node_put(codec_ep); 219 of_node_put(codec_ep);
221 of_node_put(rcpu_ep); 220 of_node_put(rcpu_ep);
@@ -232,8 +231,10 @@ static int asoc_graph_card_parse_of(struct graph_card_data *priv)
232 231
233 ret = asoc_simple_card_parse_daifmt(dev, cpu_ep, codec_ep, 232 ret = asoc_simple_card_parse_daifmt(dev, cpu_ep, codec_ep,
234 NULL, &daifmt); 233 NULL, &daifmt);
235 if (ret < 0) 234 if (ret < 0) {
235 of_node_put(cpu_port);
236 goto parse_of_err; 236 goto parse_of_err;
237 }
237 } 238 }
238 239
239 dai_idx = 0; 240 dai_idx = 0;
@@ -250,7 +251,6 @@ static int asoc_graph_card_parse_of(struct graph_card_data *priv)
250 codec_ep = of_graph_get_remote_endpoint(cpu_ep); 251 codec_ep = of_graph_get_remote_endpoint(cpu_ep);
251 codec_port = of_graph_get_port_parent(codec_ep); 252 codec_port = of_graph_get_port_parent(codec_ep);
252 253
253 of_node_put(cpu_port);
254 of_node_put(cpu_ep); 254 of_node_put(cpu_ep);
255 of_node_put(codec_ep); 255 of_node_put(codec_ep);
256 of_node_put(codec_port); 256 of_node_put(codec_port);
@@ -266,13 +266,17 @@ static int asoc_graph_card_parse_of(struct graph_card_data *priv)
266 266
267 /* Back-End (= Codec) */ 267 /* Back-End (= Codec) */
268 ret = asoc_graph_card_dai_link_of(codec_ep, priv, daifmt, dai_idx++, 0); 268 ret = asoc_graph_card_dai_link_of(codec_ep, priv, daifmt, dai_idx++, 0);
269 if (ret < 0) 269 if (ret < 0) {
270 of_node_put(cpu_port);
270 goto parse_of_err; 271 goto parse_of_err;
272 }
271 } else { 273 } else {
272 /* Front-End (= CPU) */ 274 /* Front-End (= CPU) */
273 ret = asoc_graph_card_dai_link_of(cpu_ep, priv, daifmt, dai_idx++, 1); 275 ret = asoc_graph_card_dai_link_of(cpu_ep, priv, daifmt, dai_idx++, 1);
274 if (ret < 0) 276 if (ret < 0) {
277 of_node_put(cpu_port);
275 goto parse_of_err; 278 goto parse_of_err;
279 }
276 } 280 }
277 } 281 }
278 } 282 }
@@ -306,7 +310,6 @@ static int asoc_graph_get_dais_count(struct device *dev)
306 codec_ep = of_graph_get_remote_endpoint(cpu_ep); 310 codec_ep = of_graph_get_remote_endpoint(cpu_ep);
307 codec_port = of_graph_get_port_parent(codec_ep); 311 codec_port = of_graph_get_port_parent(codec_ep);
308 312
309 of_node_put(cpu_port);
310 of_node_put(cpu_ep); 313 of_node_put(cpu_ep);
311 of_node_put(codec_ep); 314 of_node_put(codec_ep);
312 of_node_put(codec_port); 315 of_node_put(codec_port);
diff --git a/sound/soc/generic/simple-card-utils.c b/sound/soc/generic/simple-card-utils.c
index 26d64fa40c9c..7d7ab4aee42e 100644
--- a/sound/soc/generic/simple-card-utils.c
+++ b/sound/soc/generic/simple-card-utils.c
@@ -263,6 +263,9 @@ static int asoc_simple_card_get_dai_id(struct device_node *ep)
263 id = i; 263 id = i;
264 i++; 264 i++;
265 } 265 }
266
267 of_node_put(node);
268
266 if (id < 0) 269 if (id < 0)
267 return -ENODEV; 270 return -ENODEV;
268 271
@@ -282,11 +285,6 @@ int asoc_simple_card_parse_graph_dai(struct device_node *ep,
282 if (!dai_name) 285 if (!dai_name)
283 return 0; 286 return 0;
284 287
285 /*
286 * of_graph_get_port_parent() will call
287 * of_node_put(). So, call of_node_get() here
288 */
289 of_node_get(ep);
290 node = of_graph_get_port_parent(ep); 288 node = of_graph_get_port_parent(ep);
291 289
292 /* Get dai->name */ 290 /* Get dai->name */
diff --git a/sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c b/sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c
index 3fe4a0807095..cfd89ca6a18d 100644
--- a/sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c
+++ b/sound/soc/intel/boards/kbl_rt5663_rt5514_max98927.c
@@ -319,7 +319,9 @@ static int kabylake_rt5663_hw_params(struct snd_pcm_substream *substream,
319 int ret; 319 int ret;
320 320
321 /* use ASRC for internal clocks, as PLL rate isn't multiple of BCLK */ 321 /* use ASRC for internal clocks, as PLL rate isn't multiple of BCLK */
322 rt5663_sel_asrc_clk_src(codec_dai->codec, RT5663_DA_STEREO_FILTER, 1); 322 rt5663_sel_asrc_clk_src(codec_dai->codec,
323 RT5663_DA_STEREO_FILTER | RT5663_AD_STEREO_FILTER,
324 RT5663_CLK_SEL_I2S1_ASRC);
323 325
324 ret = snd_soc_dai_set_sysclk(codec_dai, 326 ret = snd_soc_dai_set_sysclk(codec_dai,
325 RT5663_SCLK_S_MCLK, 24576000, SND_SOC_CLOCK_IN); 327 RT5663_SCLK_S_MCLK, 24576000, SND_SOC_CLOCK_IN);
@@ -349,19 +351,10 @@ static int kabylake_ssp0_hw_params(struct snd_pcm_substream *substream,
349 return ret; 351 return ret;
350 } 352 }
351 353
352 ret = snd_soc_dai_set_pll(codec_dai, 0,
353 RT5514_PLL1_S_BCLK, RT5514_AIF1_BCLK_FREQ,
354 RT5514_AIF1_SYSCLK_FREQ);
355 if (ret < 0) {
356 dev_err(rtd->dev, "set bclk err: %d\n", ret);
357 return ret;
358 }
359
360 ret = snd_soc_dai_set_sysclk(codec_dai, 354 ret = snd_soc_dai_set_sysclk(codec_dai,
361 RT5514_SCLK_S_PLL1, RT5514_AIF1_SYSCLK_FREQ, 355 RT5514_SCLK_S_MCLK, 24576000, SND_SOC_CLOCK_IN);
362 SND_SOC_CLOCK_IN);
363 if (ret < 0) { 356 if (ret < 0) {
364 dev_err(rtd->dev, "set sclk err: %d\n", ret); 357 dev_err(rtd->dev, "set sysclk err: %d\n", ret);
365 return ret; 358 return ret;
366 } 359 }
367 } 360 }
diff --git a/sound/soc/intel/skylake/skl-messages.c b/sound/soc/intel/skylake/skl-messages.c
index eca85827dbd2..fb2f1f603f3c 100644
--- a/sound/soc/intel/skylake/skl-messages.c
+++ b/sound/soc/intel/skylake/skl-messages.c
@@ -540,6 +540,14 @@ static void skl_setup_cpr_gateway_cfg(struct skl_sst *ctx,
540 cpr_mconfig->gtw_cfg.dma_buffer_size = 540 cpr_mconfig->gtw_cfg.dma_buffer_size =
541 mconfig->dma_buffer_size * dma_io_buf; 541 mconfig->dma_buffer_size * dma_io_buf;
542 542
543 /* fallback to 2ms default value */
544 if (!cpr_mconfig->gtw_cfg.dma_buffer_size) {
545 if (mconfig->hw_conn_type == SKL_CONN_SOURCE)
546 cpr_mconfig->gtw_cfg.dma_buffer_size = 2 * mconfig->obs;
547 else
548 cpr_mconfig->gtw_cfg.dma_buffer_size = 2 * mconfig->ibs;
549 }
550
543 cpr_mconfig->cpr_feature_mask = 0; 551 cpr_mconfig->cpr_feature_mask = 0;
544 cpr_mconfig->gtw_cfg.config_length = 0; 552 cpr_mconfig->gtw_cfg.config_length = 0;
545 553
diff --git a/sound/soc/intel/skylake/skl.c b/sound/soc/intel/skylake/skl.c
index 334917ee41cf..9e3f8c04dd32 100644
--- a/sound/soc/intel/skylake/skl.c
+++ b/sound/soc/intel/skylake/skl.c
@@ -941,6 +941,7 @@ static struct sst_acpi_mach sst_bxtp_devdata[] = {
941 .machine_quirk = sst_acpi_codec_list, 941 .machine_quirk = sst_acpi_codec_list,
942 .quirk_data = &bxt_codecs, 942 .quirk_data = &bxt_codecs,
943 }, 943 },
944 {}
944}; 945};
945 946
946static struct sst_acpi_mach sst_kbl_devdata[] = { 947static struct sst_acpi_mach sst_kbl_devdata[] = {
@@ -991,6 +992,7 @@ static struct sst_acpi_mach sst_glk_devdata[] = {
991 .drv_name = "glk_alc298s_i2s", 992 .drv_name = "glk_alc298s_i2s",
992 .fw_filename = "intel/dsp_fw_glk.bin", 993 .fw_filename = "intel/dsp_fw_glk.bin",
993 }, 994 },
995 {}
994}; 996};
995 997
996/* PCI IDs */ 998/* PCI IDs */
diff --git a/sound/soc/pxa/Kconfig b/sound/soc/pxa/Kconfig
index 960744e46edc..484ab3c2ad67 100644
--- a/sound/soc/pxa/Kconfig
+++ b/sound/soc/pxa/Kconfig
@@ -1,6 +1,7 @@
1config SND_PXA2XX_SOC 1config SND_PXA2XX_SOC
2 tristate "SoC Audio for the Intel PXA2xx chip" 2 tristate "SoC Audio for the Intel PXA2xx chip"
3 depends on ARCH_PXA || COMPILE_TEST 3 depends on ARCH_PXA || COMPILE_TEST
4 depends on HAS_DMA
4 select SND_PXA2XX_LIB 5 select SND_PXA2XX_LIB
5 help 6 help
6 Say Y or M if you want to add support for codecs attached to 7 Say Y or M if you want to add support for codecs attached to
diff --git a/sound/soc/samsung/odroid.c b/sound/soc/samsung/odroid.c
index 0c0b00e40646..0834319ead42 100644
--- a/sound/soc/samsung/odroid.c
+++ b/sound/soc/samsung/odroid.c
@@ -42,17 +42,17 @@ static int odroid_card_hw_params(struct snd_pcm_substream *substream,
42 switch (params_rate(params)) { 42 switch (params_rate(params)) {
43 case 32000: 43 case 32000:
44 case 64000: 44 case 64000:
45 pll_freq = 131072000U; 45 pll_freq = 131072006U;
46 break; 46 break;
47 case 44100: 47 case 44100:
48 case 88200: 48 case 88200:
49 case 176400: 49 case 176400:
50 pll_freq = 180633600U; 50 pll_freq = 180633609U;
51 break; 51 break;
52 case 48000: 52 case 48000:
53 case 96000: 53 case 96000:
54 case 192000: 54 case 192000:
55 pll_freq = 196608000U; 55 pll_freq = 196608001U;
56 break; 56 break;
57 default: 57 default:
58 return -EINVAL; 58 return -EINVAL;
diff --git a/sound/soc/sh/hac.c b/sound/soc/sh/hac.c
index 84c51037a7d0..624aaf569fef 100644
--- a/sound/soc/sh/hac.c
+++ b/sound/soc/sh/hac.c
@@ -315,6 +315,8 @@ static const struct snd_soc_component_driver sh4_hac_component = {
315 315
316static int hac_soc_platform_probe(struct platform_device *pdev) 316static int hac_soc_platform_probe(struct platform_device *pdev)
317{ 317{
318 int ret;
319
318 ret = snd_soc_set_ac97_ops(&hac_ac97_ops); 320 ret = snd_soc_set_ac97_ops(&hac_ac97_ops);
319 if (ret != 0) 321 if (ret != 0)
320 return ret; 322 return ret;
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 921622a01944..13c875e2392a 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -3171,8 +3171,6 @@ static int snd_soc_component_initialize(struct snd_soc_component *component,
3171 component->remove = component->driver->remove; 3171 component->remove = component->driver->remove;
3172 component->suspend = component->driver->suspend; 3172 component->suspend = component->driver->suspend;
3173 component->resume = component->driver->resume; 3173 component->resume = component->driver->resume;
3174 component->pcm_new = component->driver->pcm_new;
3175 component->pcm_free = component->driver->pcm_free;
3176 3174
3177 dapm = &component->dapm; 3175 dapm = &component->dapm;
3178 dapm->dev = dev; 3176 dapm->dev = dev;
@@ -3360,25 +3358,6 @@ static void snd_soc_platform_drv_remove(struct snd_soc_component *component)
3360 platform->driver->remove(platform); 3358 platform->driver->remove(platform);
3361} 3359}
3362 3360
3363static int snd_soc_platform_drv_pcm_new(struct snd_soc_pcm_runtime *rtd)
3364{
3365 struct snd_soc_platform *platform = rtd->platform;
3366
3367 if (platform->driver->pcm_new)
3368 return platform->driver->pcm_new(rtd);
3369 else
3370 return 0;
3371}
3372
3373static void snd_soc_platform_drv_pcm_free(struct snd_pcm *pcm)
3374{
3375 struct snd_soc_pcm_runtime *rtd = pcm->private_data;
3376 struct snd_soc_platform *platform = rtd->platform;
3377
3378 if (platform->driver->pcm_free)
3379 platform->driver->pcm_free(pcm);
3380}
3381
3382/** 3361/**
3383 * snd_soc_add_platform - Add a platform to the ASoC core 3362 * snd_soc_add_platform - Add a platform to the ASoC core
3384 * @dev: The parent device for the platform 3363 * @dev: The parent device for the platform
@@ -3402,10 +3381,6 @@ int snd_soc_add_platform(struct device *dev, struct snd_soc_platform *platform,
3402 platform->component.probe = snd_soc_platform_drv_probe; 3381 platform->component.probe = snd_soc_platform_drv_probe;
3403 if (platform_drv->remove) 3382 if (platform_drv->remove)
3404 platform->component.remove = snd_soc_platform_drv_remove; 3383 platform->component.remove = snd_soc_platform_drv_remove;
3405 if (platform_drv->pcm_new)
3406 platform->component.pcm_new = snd_soc_platform_drv_pcm_new;
3407 if (platform_drv->pcm_free)
3408 platform->component.pcm_free = snd_soc_platform_drv_pcm_free;
3409 3384
3410#ifdef CONFIG_DEBUG_FS 3385#ifdef CONFIG_DEBUG_FS
3411 platform->component.debugfs_prefix = "platform"; 3386 platform->component.debugfs_prefix = "platform";
@@ -4113,6 +4088,8 @@ int snd_soc_get_dai_id(struct device_node *ep)
4113 } 4088 }
4114 mutex_unlock(&client_mutex); 4089 mutex_unlock(&client_mutex);
4115 4090
4091 of_node_put(node);
4092
4116 return ret; 4093 return ret;
4117} 4094}
4118EXPORT_SYMBOL_GPL(snd_soc_get_dai_id); 4095EXPORT_SYMBOL_GPL(snd_soc_get_dai_id);
diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c
index dcc5ece08668..7d3859e1a7b9 100644
--- a/sound/soc/soc-pcm.c
+++ b/sound/soc/soc-pcm.c
@@ -181,6 +181,10 @@ int dpcm_dapm_stream_event(struct snd_soc_pcm_runtime *fe, int dir,
181 dev_dbg(be->dev, "ASoC: BE %s event %d dir %d\n", 181 dev_dbg(be->dev, "ASoC: BE %s event %d dir %d\n",
182 be->dai_link->name, event, dir); 182 be->dai_link->name, event, dir);
183 183
184 if ((event == SND_SOC_DAPM_STREAM_STOP) &&
185 (be->dpcm[dir].users >= 1))
186 continue;
187
184 snd_soc_dapm_stream_event(be, dir, event); 188 snd_soc_dapm_stream_event(be, dir, event);
185 } 189 }
186 190
@@ -2628,25 +2632,12 @@ static int dpcm_fe_dai_close(struct snd_pcm_substream *fe_substream)
2628 return ret; 2632 return ret;
2629} 2633}
2630 2634
2631static void soc_pcm_free(struct snd_pcm *pcm)
2632{
2633 struct snd_soc_pcm_runtime *rtd = pcm->private_data;
2634 struct snd_soc_component *component;
2635
2636 list_for_each_entry(component, &rtd->card->component_dev_list,
2637 card_list) {
2638 if (component->pcm_free)
2639 component->pcm_free(pcm);
2640 }
2641}
2642
2643/* create a new pcm */ 2635/* create a new pcm */
2644int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num) 2636int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num)
2645{ 2637{
2646 struct snd_soc_platform *platform = rtd->platform; 2638 struct snd_soc_platform *platform = rtd->platform;
2647 struct snd_soc_dai *codec_dai; 2639 struct snd_soc_dai *codec_dai;
2648 struct snd_soc_dai *cpu_dai = rtd->cpu_dai; 2640 struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
2649 struct snd_soc_component *component;
2650 struct snd_pcm *pcm; 2641 struct snd_pcm *pcm;
2651 char new_name[64]; 2642 char new_name[64];
2652 int ret = 0, playback = 0, capture = 0; 2643 int ret = 0, playback = 0, capture = 0;
@@ -2756,18 +2747,17 @@ int soc_new_pcm(struct snd_soc_pcm_runtime *rtd, int num)
2756 if (capture) 2747 if (capture)
2757 snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &rtd->ops); 2748 snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &rtd->ops);
2758 2749
2759 list_for_each_entry(component, &rtd->card->component_dev_list, card_list) { 2750 if (platform->driver->pcm_new) {
2760 if (component->pcm_new) { 2751 ret = platform->driver->pcm_new(rtd);
2761 ret = component->pcm_new(rtd); 2752 if (ret < 0) {
2762 if (ret < 0) { 2753 dev_err(platform->dev,
2763 dev_err(component->dev, 2754 "ASoC: pcm constructor failed: %d\n",
2764 "ASoC: pcm constructor failed: %d\n", 2755 ret);
2765 ret); 2756 return ret;
2766 return ret;
2767 }
2768 } 2757 }
2769 } 2758 }
2770 pcm->private_free = soc_pcm_free; 2759
2760 pcm->private_free = platform->driver->pcm_free;
2771out: 2761out:
2772 dev_info(rtd->card->dev, "%s <-> %s mapping ok\n", 2762 dev_info(rtd->card->dev, "%s <-> %s mapping ok\n",
2773 (rtd->num_codecs > 1) ? "multicodec" : rtd->codec_dai->name, 2763 (rtd->num_codecs > 1) ? "multicodec" : rtd->codec_dai->name,
diff --git a/sound/soc/ux500/mop500.c b/sound/soc/ux500/mop500.c
index b50f68a439ce..ba9fc099cf67 100644
--- a/sound/soc/ux500/mop500.c
+++ b/sound/soc/ux500/mop500.c
@@ -33,6 +33,7 @@ static struct snd_soc_dai_link mop500_dai_links[] = {
33 .stream_name = "ab8500_0", 33 .stream_name = "ab8500_0",
34 .cpu_dai_name = "ux500-msp-i2s.1", 34 .cpu_dai_name = "ux500-msp-i2s.1",
35 .codec_dai_name = "ab8500-codec-dai.0", 35 .codec_dai_name = "ab8500-codec-dai.0",
36 .platform_name = "ux500-msp-i2s.1",
36 .codec_name = "ab8500-codec.0", 37 .codec_name = "ab8500-codec.0",
37 .init = mop500_ab8500_machine_init, 38 .init = mop500_ab8500_machine_init,
38 .ops = mop500_ab8500_ops, 39 .ops = mop500_ab8500_ops,
@@ -42,6 +43,7 @@ static struct snd_soc_dai_link mop500_dai_links[] = {
42 .stream_name = "ab8500_1", 43 .stream_name = "ab8500_1",
43 .cpu_dai_name = "ux500-msp-i2s.3", 44 .cpu_dai_name = "ux500-msp-i2s.3",
44 .codec_dai_name = "ab8500-codec-dai.1", 45 .codec_dai_name = "ab8500-codec-dai.1",
46 .platform_name = "ux500-msp-i2s.3",
45 .codec_name = "ab8500-codec.0", 47 .codec_name = "ab8500-codec.0",
46 .init = NULL, 48 .init = NULL,
47 .ops = mop500_ab8500_ops, 49 .ops = mop500_ab8500_ops,
@@ -85,6 +87,8 @@ static int mop500_of_probe(struct platform_device *pdev,
85 for (i = 0; i < 2; i++) { 87 for (i = 0; i < 2; i++) {
86 mop500_dai_links[i].cpu_of_node = msp_np[i]; 88 mop500_dai_links[i].cpu_of_node = msp_np[i];
87 mop500_dai_links[i].cpu_dai_name = NULL; 89 mop500_dai_links[i].cpu_dai_name = NULL;
90 mop500_dai_links[i].platform_of_node = msp_np[i];
91 mop500_dai_links[i].platform_name = NULL;
88 mop500_dai_links[i].codec_of_node = codec_np; 92 mop500_dai_links[i].codec_of_node = codec_np;
89 mop500_dai_links[i].codec_name = NULL; 93 mop500_dai_links[i].codec_name = NULL;
90 } 94 }
diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c
index 082736c539bc..e630813c5008 100644
--- a/sound/usb/mixer.c
+++ b/sound/usb/mixer.c
@@ -542,6 +542,8 @@ int snd_usb_mixer_vol_tlv(struct snd_kcontrol *kcontrol, int op_flag,
542 542
543 if (size < sizeof(scale)) 543 if (size < sizeof(scale))
544 return -ENOMEM; 544 return -ENOMEM;
545 if (cval->min_mute)
546 scale[0] = SNDRV_CTL_TLVT_DB_MINMAX_MUTE;
545 scale[2] = cval->dBmin; 547 scale[2] = cval->dBmin;
546 scale[3] = cval->dBmax; 548 scale[3] = cval->dBmax;
547 if (copy_to_user(_tlv, scale, sizeof(scale))) 549 if (copy_to_user(_tlv, scale, sizeof(scale)))
diff --git a/sound/usb/mixer.h b/sound/usb/mixer.h
index 3417ef347e40..2b4b067646ab 100644
--- a/sound/usb/mixer.h
+++ b/sound/usb/mixer.h
@@ -64,6 +64,7 @@ struct usb_mixer_elem_info {
64 int cached; 64 int cached;
65 int cache_val[MAX_CHANNELS]; 65 int cache_val[MAX_CHANNELS];
66 u8 initialized; 66 u8 initialized;
67 u8 min_mute;
67 void *private_data; 68 void *private_data;
68}; 69};
69 70
diff --git a/sound/usb/mixer_quirks.c b/sound/usb/mixer_quirks.c
index e3d1dec48ee4..e1e7ce9ab217 100644
--- a/sound/usb/mixer_quirks.c
+++ b/sound/usb/mixer_quirks.c
@@ -1878,6 +1878,12 @@ void snd_usb_mixer_fu_apply_quirk(struct usb_mixer_interface *mixer,
1878 if (unitid == 7 && cval->control == UAC_FU_VOLUME) 1878 if (unitid == 7 && cval->control == UAC_FU_VOLUME)
1879 snd_dragonfly_quirk_db_scale(mixer, cval, kctl); 1879 snd_dragonfly_quirk_db_scale(mixer, cval, kctl);
1880 break; 1880 break;
1881 /* lowest playback value is muted on C-Media devices */
1882 case USB_ID(0x0d8c, 0x000c):
1883 case USB_ID(0x0d8c, 0x0014):
1884 if (strstr(kctl->id.name, "Playback"))
1885 cval->min_mute = 1;
1886 break;
1881 } 1887 }
1882} 1888}
1883 1889
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c
index d7b0b0a3a2db..6a03f9697039 100644
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
@@ -1142,6 +1142,7 @@ bool snd_usb_get_sample_rate_quirk(struct snd_usb_audio *chip)
1142 case USB_ID(0x0556, 0x0014): /* Phoenix Audio TMX320VC */ 1142 case USB_ID(0x0556, 0x0014): /* Phoenix Audio TMX320VC */
1143 case USB_ID(0x05A3, 0x9420): /* ELP HD USB Camera */ 1143 case USB_ID(0x05A3, 0x9420): /* ELP HD USB Camera */
1144 case USB_ID(0x074D, 0x3553): /* Outlaw RR2150 (Micronas UAC3553B) */ 1144 case USB_ID(0x074D, 0x3553): /* Outlaw RR2150 (Micronas UAC3553B) */
1145 case USB_ID(0x1395, 0x740a): /* Sennheiser DECT */
1145 case USB_ID(0x1901, 0x0191): /* GE B850V3 CP2114 audio interface */ 1146 case USB_ID(0x1901, 0x0191): /* GE B850V3 CP2114 audio interface */
1146 case USB_ID(0x1de7, 0x0013): /* Phoenix Audio MT202exe */ 1147 case USB_ID(0x1de7, 0x0013): /* Phoenix Audio MT202exe */
1147 case USB_ID(0x1de7, 0x0014): /* Phoenix Audio TMX320 */ 1148 case USB_ID(0x1de7, 0x0014): /* Phoenix Audio TMX320 */
@@ -1374,6 +1375,10 @@ u64 snd_usb_interface_dsd_format_quirks(struct snd_usb_audio *chip,
1374 } 1375 }
1375 } 1376 }
1376 break; 1377 break;
1378 case USB_ID(0x16d0, 0x0a23):
1379 if (fp->altsetting == 2)
1380 return SNDRV_PCM_FMTBIT_DSD_U32_BE;
1381 break;
1377 1382
1378 default: 1383 default:
1379 break; 1384 break;
diff --git a/tools/build/feature/test-bpf.c b/tools/build/feature/test-bpf.c
index 7598361ef1f1..da2172ff9662 100644
--- a/tools/build/feature/test-bpf.c
+++ b/tools/build/feature/test-bpf.c
@@ -11,6 +11,8 @@
11# define __NR_bpf 280 11# define __NR_bpf 280
12# elif defined(__sparc__) 12# elif defined(__sparc__)
13# define __NR_bpf 349 13# define __NR_bpf 349
14# elif defined(__s390__)
15# define __NR_bpf 351
14# else 16# else
15# error __NR_bpf not defined. libbpf does not support your arch. 17# error __NR_bpf not defined. libbpf does not support your arch.
16# endif 18# endif
diff --git a/tools/kvm/kvm_stat/kvm_stat b/tools/kvm/kvm_stat/kvm_stat
index dd8f00cfb8b4..32283d88701a 100755
--- a/tools/kvm/kvm_stat/kvm_stat
+++ b/tools/kvm/kvm_stat/kvm_stat
@@ -474,7 +474,7 @@ class Provider(object):
474 @staticmethod 474 @staticmethod
475 def is_field_wanted(fields_filter, field): 475 def is_field_wanted(fields_filter, field):
476 """Indicate whether field is valid according to fields_filter.""" 476 """Indicate whether field is valid according to fields_filter."""
477 if not fields_filter: 477 if not fields_filter or fields_filter == "help":
478 return True 478 return True
479 return re.match(fields_filter, field) is not None 479 return re.match(fields_filter, field) is not None
480 480
@@ -1413,8 +1413,8 @@ performance.
1413 1413
1414Requirements: 1414Requirements:
1415- Access to: 1415- Access to:
1416 /sys/kernel/debug/kvm 1416 %s
1417 /sys/kernel/debug/trace/events/* 1417 %s/events/*
1418 /proc/pid/task 1418 /proc/pid/task
1419- /proc/sys/kernel/perf_event_paranoid < 1 if user has no 1419- /proc/sys/kernel/perf_event_paranoid < 1 if user has no
1420 CAP_SYS_ADMIN and perf events are used. 1420 CAP_SYS_ADMIN and perf events are used.
@@ -1434,7 +1434,7 @@ Interactive Commands:
1434 s set update interval 1434 s set update interval
1435 x toggle reporting of stats for individual child trace events 1435 x toggle reporting of stats for individual child trace events
1436Press any other key to refresh statistics immediately. 1436Press any other key to refresh statistics immediately.
1437""" 1437""" % (PATH_DEBUGFS_KVM, PATH_DEBUGFS_TRACING)
1438 1438
1439 class PlainHelpFormatter(optparse.IndentedHelpFormatter): 1439 class PlainHelpFormatter(optparse.IndentedHelpFormatter):
1440 def format_description(self, description): 1440 def format_description(self, description):
@@ -1496,7 +1496,8 @@ Press any other key to refresh statistics immediately.
1496 action='store', 1496 action='store',
1497 default=DEFAULT_REGEX, 1497 default=DEFAULT_REGEX,
1498 dest='fields', 1498 dest='fields',
1499 help='fields to display (regex)', 1499 help='''fields to display (regex)
1500 "-f help" for a list of available events''',
1500 ) 1501 )
1501 optparser.add_option('-p', '--pid', 1502 optparser.add_option('-p', '--pid',
1502 action='store', 1503 action='store',
@@ -1559,6 +1560,17 @@ def main():
1559 1560
1560 stats = Stats(options) 1561 stats = Stats(options)
1561 1562
1563 if options.fields == "help":
1564 event_list = "\n"
1565 s = stats.get()
1566 for key in s.keys():
1567 if key.find('(') != -1:
1568 key = key[0:key.find('(')]
1569 if event_list.find('\n' + key + '\n') == -1:
1570 event_list += key + '\n'
1571 sys.stdout.write(event_list)
1572 return ""
1573
1562 if options.log: 1574 if options.log:
1563 log(stats) 1575 log(stats)
1564 elif not options.once: 1576 elif not options.once:
diff --git a/tools/lib/bpf/bpf.c b/tools/lib/bpf/bpf.c
index 7e0405e1651d..e5bbb090bf88 100644
--- a/tools/lib/bpf/bpf.c
+++ b/tools/lib/bpf/bpf.c
@@ -39,6 +39,8 @@
39# define __NR_bpf 280 39# define __NR_bpf 280
40# elif defined(__sparc__) 40# elif defined(__sparc__)
41# define __NR_bpf 349 41# define __NR_bpf 349
42# elif defined(__s390__)
43# define __NR_bpf 351
42# else 44# else
43# error __NR_bpf not defined. libbpf does not support your arch. 45# error __NR_bpf not defined. libbpf does not support your arch.
44# endif 46# endif
@@ -120,7 +122,7 @@ int bpf_load_program(enum bpf_prog_type type, const struct bpf_insn *insns,
120int bpf_verify_program(enum bpf_prog_type type, const struct bpf_insn *insns, 122int bpf_verify_program(enum bpf_prog_type type, const struct bpf_insn *insns,
121 size_t insns_cnt, int strict_alignment, 123 size_t insns_cnt, int strict_alignment,
122 const char *license, __u32 kern_version, 124 const char *license, __u32 kern_version,
123 char *log_buf, size_t log_buf_sz) 125 char *log_buf, size_t log_buf_sz, int log_level)
124{ 126{
125 union bpf_attr attr; 127 union bpf_attr attr;
126 128
@@ -131,7 +133,7 @@ int bpf_verify_program(enum bpf_prog_type type, const struct bpf_insn *insns,
131 attr.license = ptr_to_u64(license); 133 attr.license = ptr_to_u64(license);
132 attr.log_buf = ptr_to_u64(log_buf); 134 attr.log_buf = ptr_to_u64(log_buf);
133 attr.log_size = log_buf_sz; 135 attr.log_size = log_buf_sz;
134 attr.log_level = 2; 136 attr.log_level = log_level;
135 log_buf[0] = 0; 137 log_buf[0] = 0;
136 attr.kern_version = kern_version; 138 attr.kern_version = kern_version;
137 attr.prog_flags = strict_alignment ? BPF_F_STRICT_ALIGNMENT : 0; 139 attr.prog_flags = strict_alignment ? BPF_F_STRICT_ALIGNMENT : 0;
@@ -314,7 +316,6 @@ int bpf_obj_get_info_by_fd(int prog_fd, void *info, __u32 *info_len)
314 int err; 316 int err;
315 317
316 bzero(&attr, sizeof(attr)); 318 bzero(&attr, sizeof(attr));
317 bzero(info, *info_len);
318 attr.info.bpf_fd = prog_fd; 319 attr.info.bpf_fd = prog_fd;
319 attr.info.info_len = *info_len; 320 attr.info.info_len = *info_len;
320 attr.info.info = ptr_to_u64(info); 321 attr.info.info = ptr_to_u64(info);
diff --git a/tools/lib/bpf/bpf.h b/tools/lib/bpf/bpf.h
index 16de44a14b48..418c86e69bcb 100644
--- a/tools/lib/bpf/bpf.h
+++ b/tools/lib/bpf/bpf.h
@@ -38,7 +38,7 @@ int bpf_load_program(enum bpf_prog_type type, const struct bpf_insn *insns,
38int bpf_verify_program(enum bpf_prog_type type, const struct bpf_insn *insns, 38int bpf_verify_program(enum bpf_prog_type type, const struct bpf_insn *insns,
39 size_t insns_cnt, int strict_alignment, 39 size_t insns_cnt, int strict_alignment,
40 const char *license, __u32 kern_version, 40 const char *license, __u32 kern_version,
41 char *log_buf, size_t log_buf_sz); 41 char *log_buf, size_t log_buf_sz, int log_level);
42 42
43int bpf_map_update_elem(int fd, const void *key, const void *value, 43int bpf_map_update_elem(int fd, const void *key, const void *value,
44 __u64 flags); 44 __u64 flags);
diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
index 1a2c07eb7795..8c67a90dbd82 100644
--- a/tools/lib/bpf/libbpf.c
+++ b/tools/lib/bpf/libbpf.c
@@ -879,7 +879,8 @@ bpf_object__create_maps(struct bpf_object *obj)
879 size_t j; 879 size_t j;
880 int err = *pfd; 880 int err = *pfd;
881 881
882 pr_warning("failed to create map: %s\n", 882 pr_warning("failed to create map (name: '%s'): %s\n",
883 obj->maps[i].name,
883 strerror(errno)); 884 strerror(errno));
884 for (j = 0; j < i; j++) 885 for (j = 0; j < i; j++)
885 zclose(obj->maps[j].fd); 886 zclose(obj->maps[j].fd);
diff --git a/tools/perf/ui/browser.c b/tools/perf/ui/browser.c
index a4d3762cd825..83874b0e266c 100644
--- a/tools/perf/ui/browser.c
+++ b/tools/perf/ui/browser.c
@@ -704,7 +704,7 @@ static void __ui_browser__line_arrow_down(struct ui_browser *browser,
704 ui_browser__gotorc(browser, row, column + 1); 704 ui_browser__gotorc(browser, row, column + 1);
705 SLsmg_draw_hline(2); 705 SLsmg_draw_hline(2);
706 706
707 if (row++ == 0) 707 if (++row == 0)
708 goto out; 708 goto out;
709 } else 709 } else
710 row = 0; 710 row = 0;
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index 87b431886670..413f74df08de 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -273,7 +273,7 @@ struct perf_evsel *perf_evsel__new_cycles(void)
273 struct perf_event_attr attr = { 273 struct perf_event_attr attr = {
274 .type = PERF_TYPE_HARDWARE, 274 .type = PERF_TYPE_HARDWARE,
275 .config = PERF_COUNT_HW_CPU_CYCLES, 275 .config = PERF_COUNT_HW_CPU_CYCLES,
276 .exclude_kernel = 1, 276 .exclude_kernel = geteuid() != 0,
277 }; 277 };
278 struct perf_evsel *evsel; 278 struct perf_evsel *evsel;
279 279
@@ -298,8 +298,10 @@ struct perf_evsel *perf_evsel__new_cycles(void)
298 goto out; 298 goto out;
299 299
300 /* use asprintf() because free(evsel) assumes name is allocated */ 300 /* use asprintf() because free(evsel) assumes name is allocated */
301 if (asprintf(&evsel->name, "cycles%.*s", 301 if (asprintf(&evsel->name, "cycles%s%s%.*s",
302 attr.precise_ip ? attr.precise_ip + 1 : 0, ":ppp") < 0) 302 (attr.precise_ip || attr.exclude_kernel) ? ":" : "",
303 attr.exclude_kernel ? "u" : "",
304 attr.precise_ip ? attr.precise_ip + 1 : 0, "ppp") < 0)
303 goto error_free; 305 goto error_free;
304out: 306out:
305 return evsel; 307 return evsel;
diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
index 5de2b86b9880..2e9eb6aa3ce2 100644
--- a/tools/perf/util/machine.c
+++ b/tools/perf/util/machine.c
@@ -2209,7 +2209,7 @@ int machine__get_kernel_start(struct machine *machine)
2209 machine->kernel_start = 1ULL << 63; 2209 machine->kernel_start = 1ULL << 63;
2210 if (map) { 2210 if (map) {
2211 err = map__load(map); 2211 err = map__load(map);
2212 if (map->start) 2212 if (!err)
2213 machine->kernel_start = map->start; 2213 machine->kernel_start = map->start;
2214 } 2214 }
2215 return err; 2215 return err;
diff --git a/tools/testing/selftests/bpf/test_align.c b/tools/testing/selftests/bpf/test_align.c
index bccebd935907..29793694cbc7 100644
--- a/tools/testing/selftests/bpf/test_align.c
+++ b/tools/testing/selftests/bpf/test_align.c
@@ -380,7 +380,7 @@ static int do_test_single(struct bpf_align_test *test)
380 prog_len = probe_filter_length(prog); 380 prog_len = probe_filter_length(prog);
381 fd_prog = bpf_verify_program(prog_type ? : BPF_PROG_TYPE_SOCKET_FILTER, 381 fd_prog = bpf_verify_program(prog_type ? : BPF_PROG_TYPE_SOCKET_FILTER,
382 prog, prog_len, 1, "GPL", 0, 382 prog, prog_len, 1, "GPL", 0,
383 bpf_vlog, sizeof(bpf_vlog)); 383 bpf_vlog, sizeof(bpf_vlog), 2);
384 if (fd_prog < 0) { 384 if (fd_prog < 0) {
385 printf("Failed to load program.\n"); 385 printf("Failed to load program.\n");
386 printf("%s", bpf_vlog); 386 printf("%s", bpf_vlog);
diff --git a/tools/testing/selftests/bpf/test_pkt_md_access.c b/tools/testing/selftests/bpf/test_pkt_md_access.c
index 71729d47eb85..7956302ecdf2 100644
--- a/tools/testing/selftests/bpf/test_pkt_md_access.c
+++ b/tools/testing/selftests/bpf/test_pkt_md_access.c
@@ -12,12 +12,23 @@
12 12
13int _version SEC("version") = 1; 13int _version SEC("version") = 1;
14 14
15#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
15#define TEST_FIELD(TYPE, FIELD, MASK) \ 16#define TEST_FIELD(TYPE, FIELD, MASK) \
16 { \ 17 { \
17 TYPE tmp = *(volatile TYPE *)&skb->FIELD; \ 18 TYPE tmp = *(volatile TYPE *)&skb->FIELD; \
18 if (tmp != ((*(volatile __u32 *)&skb->FIELD) & MASK)) \ 19 if (tmp != ((*(volatile __u32 *)&skb->FIELD) & MASK)) \
19 return TC_ACT_SHOT; \ 20 return TC_ACT_SHOT; \
20 } 21 }
22#else
23#define TEST_FIELD_OFFSET(a, b) ((sizeof(a) - sizeof(b)) / sizeof(b))
24#define TEST_FIELD(TYPE, FIELD, MASK) \
25 { \
26 TYPE tmp = *((volatile TYPE *)&skb->FIELD + \
27 TEST_FIELD_OFFSET(skb->FIELD, TYPE)); \
28 if (tmp != ((*(volatile __u32 *)&skb->FIELD) & MASK)) \
29 return TC_ACT_SHOT; \
30 }
31#endif
21 32
22SEC("test1") 33SEC("test1")
23int process(struct __sk_buff *skb) 34int process(struct __sk_buff *skb)
diff --git a/tools/testing/selftests/bpf/test_progs.c b/tools/testing/selftests/bpf/test_progs.c
index 5855cd3d3d45..1f7dd35551b9 100644
--- a/tools/testing/selftests/bpf/test_progs.c
+++ b/tools/testing/selftests/bpf/test_progs.c
@@ -340,6 +340,7 @@ static void test_bpf_obj_id(void)
340 340
341 /* Check getting prog info */ 341 /* Check getting prog info */
342 info_len = sizeof(struct bpf_prog_info) * 2; 342 info_len = sizeof(struct bpf_prog_info) * 2;
343 bzero(&prog_infos[i], info_len);
343 prog_infos[i].jited_prog_insns = ptr_to_u64(jited_insns); 344 prog_infos[i].jited_prog_insns = ptr_to_u64(jited_insns);
344 prog_infos[i].jited_prog_len = sizeof(jited_insns); 345 prog_infos[i].jited_prog_len = sizeof(jited_insns);
345 prog_infos[i].xlated_prog_insns = ptr_to_u64(xlated_insns); 346 prog_infos[i].xlated_prog_insns = ptr_to_u64(xlated_insns);
@@ -369,6 +370,7 @@ static void test_bpf_obj_id(void)
369 370
370 /* Check getting map info */ 371 /* Check getting map info */
371 info_len = sizeof(struct bpf_map_info) * 2; 372 info_len = sizeof(struct bpf_map_info) * 2;
373 bzero(&map_infos[i], info_len);
372 err = bpf_obj_get_info_by_fd(map_fds[i], &map_infos[i], 374 err = bpf_obj_get_info_by_fd(map_fds[i], &map_infos[i],
373 &info_len); 375 &info_len);
374 if (CHECK(err || 376 if (CHECK(err ||
@@ -394,7 +396,7 @@ static void test_bpf_obj_id(void)
394 nr_id_found = 0; 396 nr_id_found = 0;
395 next_id = 0; 397 next_id = 0;
396 while (!bpf_prog_get_next_id(next_id, &next_id)) { 398 while (!bpf_prog_get_next_id(next_id, &next_id)) {
397 struct bpf_prog_info prog_info; 399 struct bpf_prog_info prog_info = {};
398 int prog_fd; 400 int prog_fd;
399 401
400 info_len = sizeof(prog_info); 402 info_len = sizeof(prog_info);
@@ -418,6 +420,8 @@ static void test_bpf_obj_id(void)
418 nr_id_found++; 420 nr_id_found++;
419 421
420 err = bpf_obj_get_info_by_fd(prog_fd, &prog_info, &info_len); 422 err = bpf_obj_get_info_by_fd(prog_fd, &prog_info, &info_len);
423 prog_infos[i].jited_prog_insns = 0;
424 prog_infos[i].xlated_prog_insns = 0;
421 CHECK(err || info_len != sizeof(struct bpf_prog_info) || 425 CHECK(err || info_len != sizeof(struct bpf_prog_info) ||
422 memcmp(&prog_info, &prog_infos[i], info_len), 426 memcmp(&prog_info, &prog_infos[i], info_len),
423 "get-prog-info(next_id->fd)", 427 "get-prog-info(next_id->fd)",
@@ -436,7 +440,7 @@ static void test_bpf_obj_id(void)
436 nr_id_found = 0; 440 nr_id_found = 0;
437 next_id = 0; 441 next_id = 0;
438 while (!bpf_map_get_next_id(next_id, &next_id)) { 442 while (!bpf_map_get_next_id(next_id, &next_id)) {
439 struct bpf_map_info map_info; 443 struct bpf_map_info map_info = {};
440 int map_fd; 444 int map_fd;
441 445
442 info_len = sizeof(map_info); 446 info_len = sizeof(map_info);
diff --git a/tools/testing/selftests/bpf/test_verifier.c b/tools/testing/selftests/bpf/test_verifier.c
index 404aec520812..d3ed7324105e 100644
--- a/tools/testing/selftests/bpf/test_verifier.c
+++ b/tools/testing/selftests/bpf/test_verifier.c
@@ -8,6 +8,7 @@
8 * License as published by the Free Software Foundation. 8 * License as published by the Free Software Foundation.
9 */ 9 */
10 10
11#include <endian.h>
11#include <asm/types.h> 12#include <asm/types.h>
12#include <linux/types.h> 13#include <linux/types.h>
13#include <stdint.h> 14#include <stdint.h>
@@ -1098,7 +1099,7 @@ static struct bpf_test tests[] = {
1098 "check skb->hash byte load permitted", 1099 "check skb->hash byte load permitted",
1099 .insns = { 1100 .insns = {
1100 BPF_MOV64_IMM(BPF_REG_0, 0), 1101 BPF_MOV64_IMM(BPF_REG_0, 0),
1101#ifdef __LITTLE_ENDIAN 1102#if __BYTE_ORDER == __LITTLE_ENDIAN
1102 BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1, 1103 BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
1103 offsetof(struct __sk_buff, hash)), 1104 offsetof(struct __sk_buff, hash)),
1104#else 1105#else
@@ -1135,7 +1136,7 @@ static struct bpf_test tests[] = {
1135 "check skb->hash byte load not permitted 3", 1136 "check skb->hash byte load not permitted 3",
1136 .insns = { 1137 .insns = {
1137 BPF_MOV64_IMM(BPF_REG_0, 0), 1138 BPF_MOV64_IMM(BPF_REG_0, 0),
1138#ifdef __LITTLE_ENDIAN 1139#if __BYTE_ORDER == __LITTLE_ENDIAN
1139 BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1, 1140 BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
1140 offsetof(struct __sk_buff, hash) + 3), 1141 offsetof(struct __sk_buff, hash) + 3),
1141#else 1142#else
@@ -1244,7 +1245,7 @@ static struct bpf_test tests[] = {
1244 "check skb->hash half load permitted", 1245 "check skb->hash half load permitted",
1245 .insns = { 1246 .insns = {
1246 BPF_MOV64_IMM(BPF_REG_0, 0), 1247 BPF_MOV64_IMM(BPF_REG_0, 0),
1247#ifdef __LITTLE_ENDIAN 1248#if __BYTE_ORDER == __LITTLE_ENDIAN
1248 BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1, 1249 BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1,
1249 offsetof(struct __sk_buff, hash)), 1250 offsetof(struct __sk_buff, hash)),
1250#else 1251#else
@@ -1259,7 +1260,7 @@ static struct bpf_test tests[] = {
1259 "check skb->hash half load not permitted", 1260 "check skb->hash half load not permitted",
1260 .insns = { 1261 .insns = {
1261 BPF_MOV64_IMM(BPF_REG_0, 0), 1262 BPF_MOV64_IMM(BPF_REG_0, 0),
1262#ifdef __LITTLE_ENDIAN 1263#if __BYTE_ORDER == __LITTLE_ENDIAN
1263 BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1, 1264 BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1,
1264 offsetof(struct __sk_buff, hash) + 2), 1265 offsetof(struct __sk_buff, hash) + 2),
1265#else 1266#else
@@ -4969,7 +4970,7 @@ static struct bpf_test tests[] = {
4969 BPF_JMP_IMM(BPF_JSGT, BPF_REG_2, 4970 BPF_JMP_IMM(BPF_JSGT, BPF_REG_2,
4970 sizeof(struct test_val), 4), 4971 sizeof(struct test_val), 4),
4971 BPF_MOV64_IMM(BPF_REG_4, 0), 4972 BPF_MOV64_IMM(BPF_REG_4, 0),
4972 BPF_JMP_REG(BPF_JGE, BPF_REG_4, BPF_REG_2, 2), 4973 BPF_JMP_REG(BPF_JSGE, BPF_REG_4, BPF_REG_2, 2),
4973 BPF_MOV64_IMM(BPF_REG_3, 0), 4974 BPF_MOV64_IMM(BPF_REG_3, 0),
4974 BPF_EMIT_CALL(BPF_FUNC_probe_read), 4975 BPF_EMIT_CALL(BPF_FUNC_probe_read),
4975 BPF_MOV64_IMM(BPF_REG_0, 0), 4976 BPF_MOV64_IMM(BPF_REG_0, 0),
@@ -4995,7 +4996,7 @@ static struct bpf_test tests[] = {
4995 BPF_JMP_IMM(BPF_JSGT, BPF_REG_2, 4996 BPF_JMP_IMM(BPF_JSGT, BPF_REG_2,
4996 sizeof(struct test_val) + 1, 4), 4997 sizeof(struct test_val) + 1, 4),
4997 BPF_MOV64_IMM(BPF_REG_4, 0), 4998 BPF_MOV64_IMM(BPF_REG_4, 0),
4998 BPF_JMP_REG(BPF_JGE, BPF_REG_4, BPF_REG_2, 2), 4999 BPF_JMP_REG(BPF_JSGE, BPF_REG_4, BPF_REG_2, 2),
4999 BPF_MOV64_IMM(BPF_REG_3, 0), 5000 BPF_MOV64_IMM(BPF_REG_3, 0),
5000 BPF_EMIT_CALL(BPF_FUNC_probe_read), 5001 BPF_EMIT_CALL(BPF_FUNC_probe_read),
5001 BPF_MOV64_IMM(BPF_REG_0, 0), 5002 BPF_MOV64_IMM(BPF_REG_0, 0),
@@ -5023,7 +5024,7 @@ static struct bpf_test tests[] = {
5023 BPF_JMP_IMM(BPF_JSGT, BPF_REG_2, 5024 BPF_JMP_IMM(BPF_JSGT, BPF_REG_2,
5024 sizeof(struct test_val) - 20, 4), 5025 sizeof(struct test_val) - 20, 4),
5025 BPF_MOV64_IMM(BPF_REG_4, 0), 5026 BPF_MOV64_IMM(BPF_REG_4, 0),
5026 BPF_JMP_REG(BPF_JGE, BPF_REG_4, BPF_REG_2, 2), 5027 BPF_JMP_REG(BPF_JSGE, BPF_REG_4, BPF_REG_2, 2),
5027 BPF_MOV64_IMM(BPF_REG_3, 0), 5028 BPF_MOV64_IMM(BPF_REG_3, 0),
5028 BPF_EMIT_CALL(BPF_FUNC_probe_read), 5029 BPF_EMIT_CALL(BPF_FUNC_probe_read),
5029 BPF_MOV64_IMM(BPF_REG_0, 0), 5030 BPF_MOV64_IMM(BPF_REG_0, 0),
@@ -5050,7 +5051,7 @@ static struct bpf_test tests[] = {
5050 BPF_JMP_IMM(BPF_JSGT, BPF_REG_2, 5051 BPF_JMP_IMM(BPF_JSGT, BPF_REG_2,
5051 sizeof(struct test_val) - 19, 4), 5052 sizeof(struct test_val) - 19, 4),
5052 BPF_MOV64_IMM(BPF_REG_4, 0), 5053 BPF_MOV64_IMM(BPF_REG_4, 0),
5053 BPF_JMP_REG(BPF_JGE, BPF_REG_4, BPF_REG_2, 2), 5054 BPF_JMP_REG(BPF_JSGE, BPF_REG_4, BPF_REG_2, 2),
5054 BPF_MOV64_IMM(BPF_REG_3, 0), 5055 BPF_MOV64_IMM(BPF_REG_3, 0),
5055 BPF_EMIT_CALL(BPF_FUNC_probe_read), 5056 BPF_EMIT_CALL(BPF_FUNC_probe_read),
5056 BPF_MOV64_IMM(BPF_REG_0, 0), 5057 BPF_MOV64_IMM(BPF_REG_0, 0),
@@ -5422,7 +5423,7 @@ static struct bpf_test tests[] = {
5422 "check bpf_perf_event_data->sample_period byte load permitted", 5423 "check bpf_perf_event_data->sample_period byte load permitted",
5423 .insns = { 5424 .insns = {
5424 BPF_MOV64_IMM(BPF_REG_0, 0), 5425 BPF_MOV64_IMM(BPF_REG_0, 0),
5425#ifdef __LITTLE_ENDIAN 5426#if __BYTE_ORDER == __LITTLE_ENDIAN
5426 BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1, 5427 BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_1,
5427 offsetof(struct bpf_perf_event_data, sample_period)), 5428 offsetof(struct bpf_perf_event_data, sample_period)),
5428#else 5429#else
@@ -5438,7 +5439,7 @@ static struct bpf_test tests[] = {
5438 "check bpf_perf_event_data->sample_period half load permitted", 5439 "check bpf_perf_event_data->sample_period half load permitted",
5439 .insns = { 5440 .insns = {
5440 BPF_MOV64_IMM(BPF_REG_0, 0), 5441 BPF_MOV64_IMM(BPF_REG_0, 0),
5441#ifdef __LITTLE_ENDIAN 5442#if __BYTE_ORDER == __LITTLE_ENDIAN
5442 BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1, 5443 BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1,
5443 offsetof(struct bpf_perf_event_data, sample_period)), 5444 offsetof(struct bpf_perf_event_data, sample_period)),
5444#else 5445#else
@@ -5454,7 +5455,7 @@ static struct bpf_test tests[] = {
5454 "check bpf_perf_event_data->sample_period word load permitted", 5455 "check bpf_perf_event_data->sample_period word load permitted",
5455 .insns = { 5456 .insns = {
5456 BPF_MOV64_IMM(BPF_REG_0, 0), 5457 BPF_MOV64_IMM(BPF_REG_0, 0),
5457#ifdef __LITTLE_ENDIAN 5458#if __BYTE_ORDER == __LITTLE_ENDIAN
5458 BPF_LDX_MEM(BPF_W, BPF_REG_0, BPF_REG_1, 5459 BPF_LDX_MEM(BPF_W, BPF_REG_0, BPF_REG_1,
5459 offsetof(struct bpf_perf_event_data, sample_period)), 5460 offsetof(struct bpf_perf_event_data, sample_period)),
5460#else 5461#else
@@ -5481,7 +5482,7 @@ static struct bpf_test tests[] = {
5481 "check skb->data half load not permitted", 5482 "check skb->data half load not permitted",
5482 .insns = { 5483 .insns = {
5483 BPF_MOV64_IMM(BPF_REG_0, 0), 5484 BPF_MOV64_IMM(BPF_REG_0, 0),
5484#ifdef __LITTLE_ENDIAN 5485#if __BYTE_ORDER == __LITTLE_ENDIAN
5485 BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1, 5486 BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1,
5486 offsetof(struct __sk_buff, data)), 5487 offsetof(struct __sk_buff, data)),
5487#else 5488#else
@@ -5497,7 +5498,7 @@ static struct bpf_test tests[] = {
5497 "check skb->tc_classid half load not permitted for lwt prog", 5498 "check skb->tc_classid half load not permitted for lwt prog",
5498 .insns = { 5499 .insns = {
5499 BPF_MOV64_IMM(BPF_REG_0, 0), 5500 BPF_MOV64_IMM(BPF_REG_0, 0),
5500#ifdef __LITTLE_ENDIAN 5501#if __BYTE_ORDER == __LITTLE_ENDIAN
5501 BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1, 5502 BPF_LDX_MEM(BPF_H, BPF_REG_0, BPF_REG_1,
5502 offsetof(struct __sk_buff, tc_classid)), 5503 offsetof(struct __sk_buff, tc_classid)),
5503#else 5504#else
@@ -5510,6 +5511,504 @@ static struct bpf_test tests[] = {
5510 .errstr = "invalid bpf_context access", 5511 .errstr = "invalid bpf_context access",
5511 .prog_type = BPF_PROG_TYPE_LWT_IN, 5512 .prog_type = BPF_PROG_TYPE_LWT_IN,
5512 }, 5513 },
5514 {
5515 "bounds checks mixing signed and unsigned, positive bounds",
5516 .insns = {
5517 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
5518 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
5519 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
5520 BPF_LD_MAP_FD(BPF_REG_1, 0),
5521 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
5522 BPF_FUNC_map_lookup_elem),
5523 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 7),
5524 BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
5525 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
5526 BPF_MOV64_IMM(BPF_REG_2, 2),
5527 BPF_JMP_REG(BPF_JGE, BPF_REG_2, BPF_REG_1, 3),
5528 BPF_JMP_IMM(BPF_JSGT, BPF_REG_1, 4, 2),
5529 BPF_ALU64_REG(BPF_ADD, BPF_REG_0, BPF_REG_1),
5530 BPF_ST_MEM(BPF_B, BPF_REG_0, 0, 0),
5531 BPF_MOV64_IMM(BPF_REG_0, 0),
5532 BPF_EXIT_INSN(),
5533 },
5534 .fixup_map1 = { 3 },
5535 .errstr_unpriv = "R0 pointer arithmetic prohibited",
5536 .errstr = "R0 min value is negative",
5537 .result = REJECT,
5538 .result_unpriv = REJECT,
5539 },
5540 {
5541 "bounds checks mixing signed and unsigned",
5542 .insns = {
5543 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
5544 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
5545 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
5546 BPF_LD_MAP_FD(BPF_REG_1, 0),
5547 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
5548 BPF_FUNC_map_lookup_elem),
5549 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 7),
5550 BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
5551 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
5552 BPF_MOV64_IMM(BPF_REG_2, -1),
5553 BPF_JMP_REG(BPF_JGT, BPF_REG_1, BPF_REG_2, 3),
5554 BPF_JMP_IMM(BPF_JSGT, BPF_REG_1, 1, 2),
5555 BPF_ALU64_REG(BPF_ADD, BPF_REG_0, BPF_REG_1),
5556 BPF_ST_MEM(BPF_B, BPF_REG_0, 0, 0),
5557 BPF_MOV64_IMM(BPF_REG_0, 0),
5558 BPF_EXIT_INSN(),
5559 },
5560 .fixup_map1 = { 3 },
5561 .errstr_unpriv = "R0 pointer arithmetic prohibited",
5562 .errstr = "R0 min value is negative",
5563 .result = REJECT,
5564 .result_unpriv = REJECT,
5565 },
5566 {
5567 "bounds checks mixing signed and unsigned, variant 2",
5568 .insns = {
5569 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
5570 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
5571 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
5572 BPF_LD_MAP_FD(BPF_REG_1, 0),
5573 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
5574 BPF_FUNC_map_lookup_elem),
5575 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 9),
5576 BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
5577 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
5578 BPF_MOV64_IMM(BPF_REG_2, -1),
5579 BPF_JMP_REG(BPF_JGT, BPF_REG_1, BPF_REG_2, 5),
5580 BPF_MOV64_IMM(BPF_REG_8, 0),
5581 BPF_ALU64_REG(BPF_ADD, BPF_REG_8, BPF_REG_1),
5582 BPF_JMP_IMM(BPF_JSGT, BPF_REG_8, 1, 2),
5583 BPF_ALU64_REG(BPF_ADD, BPF_REG_0, BPF_REG_8),
5584 BPF_ST_MEM(BPF_B, BPF_REG_8, 0, 0),
5585 BPF_MOV64_IMM(BPF_REG_0, 0),
5586 BPF_EXIT_INSN(),
5587 },
5588 .fixup_map1 = { 3 },
5589 .errstr_unpriv = "R0 pointer arithmetic prohibited",
5590 .errstr = "R8 invalid mem access 'inv'",
5591 .result = REJECT,
5592 .result_unpriv = REJECT,
5593 },
5594 {
5595 "bounds checks mixing signed and unsigned, variant 3",
5596 .insns = {
5597 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
5598 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
5599 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
5600 BPF_LD_MAP_FD(BPF_REG_1, 0),
5601 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
5602 BPF_FUNC_map_lookup_elem),
5603 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 8),
5604 BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
5605 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
5606 BPF_MOV64_IMM(BPF_REG_2, -1),
5607 BPF_JMP_REG(BPF_JGT, BPF_REG_1, BPF_REG_2, 4),
5608 BPF_MOV64_REG(BPF_REG_8, BPF_REG_1),
5609 BPF_JMP_IMM(BPF_JSGT, BPF_REG_8, 1, 2),
5610 BPF_ALU64_REG(BPF_ADD, BPF_REG_0, BPF_REG_8),
5611 BPF_ST_MEM(BPF_B, BPF_REG_8, 0, 0),
5612 BPF_MOV64_IMM(BPF_REG_0, 0),
5613 BPF_EXIT_INSN(),
5614 },
5615 .fixup_map1 = { 3 },
5616 .errstr_unpriv = "R0 pointer arithmetic prohibited",
5617 .errstr = "R8 invalid mem access 'inv'",
5618 .result = REJECT,
5619 .result_unpriv = REJECT,
5620 },
5621 {
5622 "bounds checks mixing signed and unsigned, variant 4",
5623 .insns = {
5624 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
5625 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
5626 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
5627 BPF_LD_MAP_FD(BPF_REG_1, 0),
5628 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
5629 BPF_FUNC_map_lookup_elem),
5630 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 7),
5631 BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
5632 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
5633 BPF_MOV64_IMM(BPF_REG_2, 1),
5634 BPF_ALU64_REG(BPF_AND, BPF_REG_1, BPF_REG_2),
5635 BPF_JMP_IMM(BPF_JSGT, BPF_REG_1, 1, 2),
5636 BPF_ALU64_REG(BPF_ADD, BPF_REG_0, BPF_REG_1),
5637 BPF_ST_MEM(BPF_B, BPF_REG_0, 0, 0),
5638 BPF_MOV64_IMM(BPF_REG_0, 0),
5639 BPF_EXIT_INSN(),
5640 },
5641 .fixup_map1 = { 3 },
5642 .errstr_unpriv = "R0 pointer arithmetic prohibited",
5643 .errstr = "R0 min value is negative",
5644 .result = REJECT,
5645 .result_unpriv = REJECT,
5646 },
5647 {
5648 "bounds checks mixing signed and unsigned, variant 5",
5649 .insns = {
5650 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
5651 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
5652 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
5653 BPF_LD_MAP_FD(BPF_REG_1, 0),
5654 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
5655 BPF_FUNC_map_lookup_elem),
5656 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 9),
5657 BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
5658 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
5659 BPF_MOV64_IMM(BPF_REG_2, -1),
5660 BPF_JMP_REG(BPF_JGT, BPF_REG_1, BPF_REG_2, 5),
5661 BPF_JMP_IMM(BPF_JSGT, BPF_REG_1, 1, 4),
5662 BPF_ALU64_IMM(BPF_ADD, BPF_REG_0, 4),
5663 BPF_ALU64_REG(BPF_SUB, BPF_REG_0, BPF_REG_1),
5664 BPF_ST_MEM(BPF_B, BPF_REG_0, 0, 0),
5665 BPF_MOV64_IMM(BPF_REG_0, 0),
5666 BPF_EXIT_INSN(),
5667 },
5668 .fixup_map1 = { 3 },
5669 .errstr_unpriv = "R0 pointer arithmetic prohibited",
5670 .errstr = "R0 invalid mem access",
5671 .result = REJECT,
5672 .result_unpriv = REJECT,
5673 },
5674 {
5675 "bounds checks mixing signed and unsigned, variant 6",
5676 .insns = {
5677 BPF_MOV64_IMM(BPF_REG_2, 0),
5678 BPF_MOV64_REG(BPF_REG_3, BPF_REG_10),
5679 BPF_ALU64_IMM(BPF_ADD, BPF_REG_3, -512),
5680 BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
5681 BPF_LDX_MEM(BPF_DW, BPF_REG_4, BPF_REG_10, -16),
5682 BPF_MOV64_IMM(BPF_REG_6, -1),
5683 BPF_JMP_REG(BPF_JGT, BPF_REG_4, BPF_REG_6, 5),
5684 BPF_JMP_IMM(BPF_JSGT, BPF_REG_4, 1, 4),
5685 BPF_ALU64_IMM(BPF_ADD, BPF_REG_4, 1),
5686 BPF_MOV64_IMM(BPF_REG_5, 0),
5687 BPF_ST_MEM(BPF_H, BPF_REG_10, -512, 0),
5688 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
5689 BPF_FUNC_skb_load_bytes),
5690 BPF_MOV64_IMM(BPF_REG_0, 0),
5691 BPF_EXIT_INSN(),
5692 },
5693 .errstr_unpriv = "R4 min value is negative, either use unsigned",
5694 .errstr = "R4 min value is negative, either use unsigned",
5695 .result = REJECT,
5696 .result_unpriv = REJECT,
5697 },
5698 {
5699 "bounds checks mixing signed and unsigned, variant 7",
5700 .insns = {
5701 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
5702 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
5703 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
5704 BPF_LD_MAP_FD(BPF_REG_1, 0),
5705 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
5706 BPF_FUNC_map_lookup_elem),
5707 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 7),
5708 BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
5709 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
5710 BPF_MOV64_IMM(BPF_REG_2, 1024 * 1024 * 1024),
5711 BPF_JMP_REG(BPF_JGT, BPF_REG_1, BPF_REG_2, 3),
5712 BPF_JMP_IMM(BPF_JSGT, BPF_REG_1, 1, 2),
5713 BPF_ALU64_REG(BPF_ADD, BPF_REG_0, BPF_REG_1),
5714 BPF_ST_MEM(BPF_B, BPF_REG_0, 0, 0),
5715 BPF_MOV64_IMM(BPF_REG_0, 0),
5716 BPF_EXIT_INSN(),
5717 },
5718 .fixup_map1 = { 3 },
5719 .errstr_unpriv = "R0 pointer arithmetic prohibited",
5720 .errstr = "R0 min value is negative",
5721 .result = REJECT,
5722 .result_unpriv = REJECT,
5723 },
5724 {
5725 "bounds checks mixing signed and unsigned, variant 8",
5726 .insns = {
5727 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
5728 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
5729 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
5730 BPF_LD_MAP_FD(BPF_REG_1, 0),
5731 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
5732 BPF_FUNC_map_lookup_elem),
5733 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 7),
5734 BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
5735 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
5736 BPF_MOV64_IMM(BPF_REG_2, 1024 * 1024 * 1024 + 1),
5737 BPF_JMP_REG(BPF_JGT, BPF_REG_1, BPF_REG_2, 3),
5738 BPF_JMP_IMM(BPF_JSGT, BPF_REG_1, 1, 2),
5739 BPF_ALU64_REG(BPF_ADD, BPF_REG_0, BPF_REG_1),
5740 BPF_ST_MEM(BPF_B, BPF_REG_0, 0, 0),
5741 BPF_MOV64_IMM(BPF_REG_0, 0),
5742 BPF_EXIT_INSN(),
5743 },
5744 .fixup_map1 = { 3 },
5745 .errstr_unpriv = "R0 pointer arithmetic prohibited",
5746 .errstr = "R0 min value is negative",
5747 .result = REJECT,
5748 .result_unpriv = REJECT,
5749 },
5750 {
5751 "bounds checks mixing signed and unsigned, variant 9",
5752 .insns = {
5753 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
5754 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
5755 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
5756 BPF_LD_MAP_FD(BPF_REG_1, 0),
5757 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
5758 BPF_FUNC_map_lookup_elem),
5759 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 9),
5760 BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
5761 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
5762 BPF_MOV64_IMM(BPF_REG_2, -1),
5763 BPF_JMP_REG(BPF_JGT, BPF_REG_2, BPF_REG_1, 2),
5764 BPF_MOV64_IMM(BPF_REG_0, 0),
5765 BPF_EXIT_INSN(),
5766 BPF_JMP_IMM(BPF_JSGT, BPF_REG_1, 1, 2),
5767 BPF_ALU64_REG(BPF_ADD, BPF_REG_0, BPF_REG_1),
5768 BPF_ST_MEM(BPF_B, BPF_REG_0, 0, 0),
5769 BPF_MOV64_IMM(BPF_REG_0, 0),
5770 BPF_EXIT_INSN(),
5771 },
5772 .fixup_map1 = { 3 },
5773 .errstr_unpriv = "R0 pointer arithmetic prohibited",
5774 .errstr = "R0 min value is negative",
5775 .result = REJECT,
5776 .result_unpriv = REJECT,
5777 },
5778 {
5779 "bounds checks mixing signed and unsigned, variant 10",
5780 .insns = {
5781 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
5782 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
5783 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
5784 BPF_LD_MAP_FD(BPF_REG_1, 0),
5785 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
5786 BPF_FUNC_map_lookup_elem),
5787 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 10),
5788 BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
5789 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
5790 BPF_LD_IMM64(BPF_REG_2, -9223372036854775808ULL),
5791 BPF_JMP_REG(BPF_JGT, BPF_REG_2, BPF_REG_1, 2),
5792 BPF_MOV64_IMM(BPF_REG_0, 0),
5793 BPF_EXIT_INSN(),
5794 BPF_JMP_IMM(BPF_JSGT, BPF_REG_1, 1, 2),
5795 BPF_ALU64_REG(BPF_ADD, BPF_REG_0, BPF_REG_1),
5796 BPF_ST_MEM(BPF_B, BPF_REG_0, 0, 0),
5797 BPF_MOV64_IMM(BPF_REG_0, 0),
5798 BPF_EXIT_INSN(),
5799 },
5800 .fixup_map1 = { 3 },
5801 .errstr_unpriv = "R0 pointer arithmetic prohibited",
5802 .errstr = "R0 min value is negative",
5803 .result = REJECT,
5804 .result_unpriv = REJECT,
5805 },
5806 {
5807 "bounds checks mixing signed and unsigned, variant 11",
5808 .insns = {
5809 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
5810 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
5811 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
5812 BPF_LD_MAP_FD(BPF_REG_1, 0),
5813 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
5814 BPF_FUNC_map_lookup_elem),
5815 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 9),
5816 BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
5817 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
5818 BPF_MOV64_IMM(BPF_REG_2, 0),
5819 BPF_JMP_REG(BPF_JGT, BPF_REG_2, BPF_REG_1, 2),
5820 BPF_MOV64_IMM(BPF_REG_0, 0),
5821 BPF_EXIT_INSN(),
5822 BPF_JMP_IMM(BPF_JSGT, BPF_REG_1, 1, 2),
5823 BPF_ALU64_REG(BPF_ADD, BPF_REG_0, BPF_REG_1),
5824 BPF_ST_MEM(BPF_B, BPF_REG_0, 0, 0),
5825 BPF_MOV64_IMM(BPF_REG_0, 0),
5826 BPF_EXIT_INSN(),
5827 },
5828 .fixup_map1 = { 3 },
5829 .errstr_unpriv = "R0 pointer arithmetic prohibited",
5830 .errstr = "R0 min value is negative",
5831 .result = REJECT,
5832 .result_unpriv = REJECT,
5833 },
5834 {
5835 "bounds checks mixing signed and unsigned, variant 12",
5836 .insns = {
5837 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
5838 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
5839 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
5840 BPF_LD_MAP_FD(BPF_REG_1, 0),
5841 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
5842 BPF_FUNC_map_lookup_elem),
5843 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 9),
5844 BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
5845 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
5846 BPF_MOV64_IMM(BPF_REG_2, -1),
5847 BPF_JMP_REG(BPF_JGE, BPF_REG_2, BPF_REG_1, 2),
5848 /* Dead branch. */
5849 BPF_MOV64_IMM(BPF_REG_0, 0),
5850 BPF_EXIT_INSN(),
5851 BPF_JMP_IMM(BPF_JSGT, BPF_REG_1, 1, 2),
5852 BPF_ALU64_REG(BPF_ADD, BPF_REG_0, BPF_REG_1),
5853 BPF_ST_MEM(BPF_B, BPF_REG_0, 0, 0),
5854 BPF_MOV64_IMM(BPF_REG_0, 0),
5855 BPF_EXIT_INSN(),
5856 },
5857 .fixup_map1 = { 3 },
5858 .errstr_unpriv = "R0 pointer arithmetic prohibited",
5859 .errstr = "R0 min value is negative",
5860 .result = REJECT,
5861 .result_unpriv = REJECT,
5862 },
5863 {
5864 "bounds checks mixing signed and unsigned, variant 13",
5865 .insns = {
5866 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
5867 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
5868 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
5869 BPF_LD_MAP_FD(BPF_REG_1, 0),
5870 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
5871 BPF_FUNC_map_lookup_elem),
5872 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 9),
5873 BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
5874 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
5875 BPF_MOV64_IMM(BPF_REG_2, -6),
5876 BPF_JMP_REG(BPF_JGE, BPF_REG_2, BPF_REG_1, 2),
5877 BPF_MOV64_IMM(BPF_REG_0, 0),
5878 BPF_EXIT_INSN(),
5879 BPF_JMP_IMM(BPF_JSGT, BPF_REG_1, 1, 2),
5880 BPF_ALU64_REG(BPF_ADD, BPF_REG_0, BPF_REG_1),
5881 BPF_ST_MEM(BPF_B, BPF_REG_0, 0, 0),
5882 BPF_MOV64_IMM(BPF_REG_0, 0),
5883 BPF_EXIT_INSN(),
5884 },
5885 .fixup_map1 = { 3 },
5886 .errstr_unpriv = "R0 pointer arithmetic prohibited",
5887 .errstr = "R0 min value is negative",
5888 .result = REJECT,
5889 .result_unpriv = REJECT,
5890 },
5891 {
5892 "bounds checks mixing signed and unsigned, variant 14",
5893 .insns = {
5894 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
5895 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
5896 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
5897 BPF_LD_MAP_FD(BPF_REG_1, 0),
5898 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
5899 BPF_FUNC_map_lookup_elem),
5900 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 6),
5901 BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
5902 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
5903 BPF_MOV64_IMM(BPF_REG_2, 2),
5904 BPF_JMP_REG(BPF_JGE, BPF_REG_2, BPF_REG_1, 2),
5905 BPF_MOV64_IMM(BPF_REG_7, 1),
5906 BPF_JMP_IMM(BPF_JSGT, BPF_REG_7, 0, 2),
5907 BPF_MOV64_IMM(BPF_REG_0, 0),
5908 BPF_EXIT_INSN(),
5909 BPF_ALU64_REG(BPF_ADD, BPF_REG_7, BPF_REG_1),
5910 BPF_JMP_IMM(BPF_JSGT, BPF_REG_7, 4, 2),
5911 BPF_ALU64_REG(BPF_ADD, BPF_REG_0, BPF_REG_7),
5912 BPF_ST_MEM(BPF_B, BPF_REG_0, 0, 0),
5913 BPF_MOV64_IMM(BPF_REG_0, 0),
5914 BPF_EXIT_INSN(),
5915 },
5916 .fixup_map1 = { 3 },
5917 .errstr_unpriv = "R0 pointer arithmetic prohibited",
5918 .errstr = "R0 min value is negative",
5919 .result = REJECT,
5920 .result_unpriv = REJECT,
5921 },
5922 {
5923 "bounds checks mixing signed and unsigned, variant 15",
5924 .insns = {
5925 BPF_LDX_MEM(BPF_W, BPF_REG_9, BPF_REG_1,
5926 offsetof(struct __sk_buff, mark)),
5927 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
5928 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
5929 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
5930 BPF_LD_MAP_FD(BPF_REG_1, 0),
5931 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
5932 BPF_FUNC_map_lookup_elem),
5933 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 8),
5934 BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
5935 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
5936 BPF_MOV64_IMM(BPF_REG_2, -1),
5937 BPF_MOV64_IMM(BPF_REG_8, 2),
5938 BPF_JMP_IMM(BPF_JEQ, BPF_REG_9, 42, 6),
5939 BPF_JMP_REG(BPF_JSGT, BPF_REG_8, BPF_REG_1, 3),
5940 BPF_JMP_IMM(BPF_JSGT, BPF_REG_1, 1, 2),
5941 BPF_ALU64_REG(BPF_ADD, BPF_REG_0, BPF_REG_1),
5942 BPF_ST_MEM(BPF_B, BPF_REG_0, 0, 0),
5943 BPF_MOV64_IMM(BPF_REG_0, 0),
5944 BPF_EXIT_INSN(),
5945 BPF_JMP_REG(BPF_JGT, BPF_REG_1, BPF_REG_2, -3),
5946 BPF_JMP_IMM(BPF_JA, 0, 0, -7),
5947 },
5948 .fixup_map1 = { 4 },
5949 .errstr_unpriv = "R0 pointer arithmetic prohibited",
5950 .errstr = "R0 min value is negative",
5951 .result = REJECT,
5952 .result_unpriv = REJECT,
5953 },
5954 {
5955 "bounds checks mixing signed and unsigned, variant 16",
5956 .insns = {
5957 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
5958 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
5959 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
5960 BPF_LD_MAP_FD(BPF_REG_1, 0),
5961 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
5962 BPF_FUNC_map_lookup_elem),
5963 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 4),
5964 BPF_ST_MEM(BPF_DW, BPF_REG_10, -16, -8),
5965 BPF_LDX_MEM(BPF_DW, BPF_REG_1, BPF_REG_10, -16),
5966 BPF_MOV64_IMM(BPF_REG_2, -6),
5967 BPF_JMP_REG(BPF_JGE, BPF_REG_2, BPF_REG_1, 2),
5968 BPF_MOV64_IMM(BPF_REG_0, 0),
5969 BPF_EXIT_INSN(),
5970 BPF_ALU64_REG(BPF_ADD, BPF_REG_0, BPF_REG_1),
5971 BPF_JMP_IMM(BPF_JGT, BPF_REG_0, 1, 2),
5972 BPF_MOV64_IMM(BPF_REG_0, 0),
5973 BPF_EXIT_INSN(),
5974 BPF_ST_MEM(BPF_B, BPF_REG_0, 0, 0),
5975 BPF_MOV64_IMM(BPF_REG_0, 0),
5976 BPF_EXIT_INSN(),
5977 },
5978 .fixup_map1 = { 3 },
5979 .errstr_unpriv = "R0 pointer arithmetic prohibited",
5980 .errstr = "R0 min value is negative",
5981 .result = REJECT,
5982 .result_unpriv = REJECT,
5983 },
5984 {
5985 "subtraction bounds (map value)",
5986 .insns = {
5987 BPF_ST_MEM(BPF_DW, BPF_REG_10, -8, 0),
5988 BPF_MOV64_REG(BPF_REG_2, BPF_REG_10),
5989 BPF_ALU64_IMM(BPF_ADD, BPF_REG_2, -8),
5990 BPF_LD_MAP_FD(BPF_REG_1, 0),
5991 BPF_RAW_INSN(BPF_JMP | BPF_CALL, 0, 0, 0,
5992 BPF_FUNC_map_lookup_elem),
5993 BPF_JMP_IMM(BPF_JEQ, BPF_REG_0, 0, 9),
5994 BPF_LDX_MEM(BPF_B, BPF_REG_1, BPF_REG_0, 0),
5995 BPF_JMP_IMM(BPF_JGT, BPF_REG_1, 0xff, 7),
5996 BPF_LDX_MEM(BPF_B, BPF_REG_3, BPF_REG_0, 1),
5997 BPF_JMP_IMM(BPF_JGT, BPF_REG_3, 0xff, 5),
5998 BPF_ALU64_REG(BPF_SUB, BPF_REG_1, BPF_REG_3),
5999 BPF_ALU64_IMM(BPF_RSH, BPF_REG_1, 56),
6000 BPF_ALU64_REG(BPF_ADD, BPF_REG_0, BPF_REG_1),
6001 BPF_LDX_MEM(BPF_B, BPF_REG_0, BPF_REG_0, 0),
6002 BPF_EXIT_INSN(),
6003 BPF_MOV64_IMM(BPF_REG_0, 0),
6004 BPF_EXIT_INSN(),
6005 },
6006 .fixup_map1 = { 3 },
6007 .errstr_unpriv = "R0 pointer arithmetic prohibited",
6008 .errstr = "R0 min value is negative, either use unsigned index or do a if (index >=0) check.",
6009 .result = REJECT,
6010 .result_unpriv = REJECT,
6011 },
5513}; 6012};
5514 6013
5515static int probe_filter_length(const struct bpf_insn *fp) 6014static int probe_filter_length(const struct bpf_insn *fp)
@@ -5633,7 +6132,7 @@ static void do_test_single(struct bpf_test *test, bool unpriv,
5633 6132
5634 fd_prog = bpf_verify_program(prog_type ? : BPF_PROG_TYPE_SOCKET_FILTER, 6133 fd_prog = bpf_verify_program(prog_type ? : BPF_PROG_TYPE_SOCKET_FILTER,
5635 prog, prog_len, test->flags & F_LOAD_WITH_STRICT_ALIGNMENT, 6134 prog, prog_len, test->flags & F_LOAD_WITH_STRICT_ALIGNMENT,
5636 "GPL", 0, bpf_vlog, sizeof(bpf_vlog)); 6135 "GPL", 0, bpf_vlog, sizeof(bpf_vlog), 1);
5637 6136
5638 expected_ret = unpriv && test->result_unpriv != UNDEF ? 6137 expected_ret = unpriv && test->result_unpriv != UNDEF ?
5639 test->result_unpriv : test->result; 6138 test->result_unpriv : test->result;
diff --git a/tools/testing/selftests/futex/Makefile b/tools/testing/selftests/futex/Makefile
index e2fbb890aef9..7c647f619d63 100644
--- a/tools/testing/selftests/futex/Makefile
+++ b/tools/testing/selftests/futex/Makefile
@@ -14,7 +14,7 @@ all:
14 done 14 done
15 15
16override define RUN_TESTS 16override define RUN_TESTS
17 @if [ `dirname $(OUTPUT)` = $(PWD) ]; then ./run.sh; fi 17 $(OUTPUT)/run.sh
18endef 18endef
19 19
20override define INSTALL_RULE 20override define INSTALL_RULE
diff --git a/tools/testing/selftests/kmod/kmod.sh b/tools/testing/selftests/kmod/kmod.sh
index 8cecae9a8bca..7956ea3be667 100644..100755
--- a/tools/testing/selftests/kmod/kmod.sh
+++ b/tools/testing/selftests/kmod/kmod.sh
@@ -473,8 +473,8 @@ usage()
473 echo " all Runs all tests (default)" 473 echo " all Runs all tests (default)"
474 echo " -t Run test ID the number amount of times is recommended" 474 echo " -t Run test ID the number amount of times is recommended"
475 echo " -w Watch test ID run until it runs into an error" 475 echo " -w Watch test ID run until it runs into an error"
476 echo " -c Run test ID once" 476 echo " -s Run test ID once"
477 echo " -s Run test ID x test-count number of times" 477 echo " -c Run test ID x test-count number of times"
478 echo " -l List all test ID list" 478 echo " -l List all test ID list"
479 echo " -h|--help Help" 479 echo " -h|--help Help"
480 echo 480 echo
diff --git a/tools/testing/selftests/sysctl/sysctl.sh b/tools/testing/selftests/sysctl/sysctl.sh
index ec232c3cfcaa..ec232c3cfcaa 100644..100755
--- a/tools/testing/selftests/sysctl/sysctl.sh
+++ b/tools/testing/selftests/sysctl/sysctl.sh
diff --git a/tools/testing/selftests/timers/freq-step.c b/tools/testing/selftests/timers/freq-step.c
index e8c61830825a..22312eb4c941 100644
--- a/tools/testing/selftests/timers/freq-step.c
+++ b/tools/testing/selftests/timers/freq-step.c
@@ -229,10 +229,9 @@ static void init_test(void)
229 printf("CLOCK_MONOTONIC_RAW+CLOCK_MONOTONIC precision: %.0f ns\t\t", 229 printf("CLOCK_MONOTONIC_RAW+CLOCK_MONOTONIC precision: %.0f ns\t\t",
230 1e9 * precision); 230 1e9 * precision);
231 231
232 if (precision > MAX_PRECISION) { 232 if (precision > MAX_PRECISION)
233 printf("[SKIP]\n"); 233 ksft_exit_skip("precision: %.0f ns > MAX_PRECISION: %.0f ns\n",
234 ksft_exit_skip(); 234 1e9 * precision, 1e9 * MAX_PRECISION);
235 }
236 235
237 printf("[OK]\n"); 236 printf("[OK]\n");
238 srand(ts.tv_sec ^ ts.tv_nsec); 237 srand(ts.tv_sec ^ ts.tv_nsec);
diff --git a/virt/kvm/arm/mmu.c b/virt/kvm/arm/mmu.c
index 0e1fc75f3585..2ea21dac0b44 100644
--- a/virt/kvm/arm/mmu.c
+++ b/virt/kvm/arm/mmu.c
@@ -1718,12 +1718,16 @@ static int kvm_test_age_hva_handler(struct kvm *kvm, gpa_t gpa, u64 size, void *
1718 1718
1719int kvm_age_hva(struct kvm *kvm, unsigned long start, unsigned long end) 1719int kvm_age_hva(struct kvm *kvm, unsigned long start, unsigned long end)
1720{ 1720{
1721 if (!kvm->arch.pgd)
1722 return 0;
1721 trace_kvm_age_hva(start, end); 1723 trace_kvm_age_hva(start, end);
1722 return handle_hva_to_gpa(kvm, start, end, kvm_age_hva_handler, NULL); 1724 return handle_hva_to_gpa(kvm, start, end, kvm_age_hva_handler, NULL);
1723} 1725}
1724 1726
1725int kvm_test_age_hva(struct kvm *kvm, unsigned long hva) 1727int kvm_test_age_hva(struct kvm *kvm, unsigned long hva)
1726{ 1728{
1729 if (!kvm->arch.pgd)
1730 return 0;
1727 trace_kvm_test_age_hva(hva); 1731 trace_kvm_test_age_hva(hva);
1728 return handle_hva_to_gpa(kvm, hva, hva, kvm_test_age_hva_handler, NULL); 1732 return handle_hva_to_gpa(kvm, hva, hva, kvm_test_age_hva_handler, NULL);
1729} 1733}
diff --git a/virt/kvm/arm/pmu.c b/virt/kvm/arm/pmu.c
index fc8a723ff387..8a9c42366db7 100644
--- a/virt/kvm/arm/pmu.c
+++ b/virt/kvm/arm/pmu.c
@@ -203,11 +203,15 @@ static u64 kvm_pmu_overflow_status(struct kvm_vcpu *vcpu)
203 return reg; 203 return reg;
204} 204}
205 205
206static void kvm_pmu_check_overflow(struct kvm_vcpu *vcpu) 206static void kvm_pmu_update_state(struct kvm_vcpu *vcpu)
207{ 207{
208 struct kvm_pmu *pmu = &vcpu->arch.pmu; 208 struct kvm_pmu *pmu = &vcpu->arch.pmu;
209 bool overflow = !!kvm_pmu_overflow_status(vcpu); 209 bool overflow;
210
211 if (!kvm_arm_pmu_v3_ready(vcpu))
212 return;
210 213
214 overflow = !!kvm_pmu_overflow_status(vcpu);
211 if (pmu->irq_level == overflow) 215 if (pmu->irq_level == overflow)
212 return; 216 return;
213 217
@@ -215,33 +219,11 @@ static void kvm_pmu_check_overflow(struct kvm_vcpu *vcpu)
215 219
216 if (likely(irqchip_in_kernel(vcpu->kvm))) { 220 if (likely(irqchip_in_kernel(vcpu->kvm))) {
217 int ret = kvm_vgic_inject_irq(vcpu->kvm, vcpu->vcpu_id, 221 int ret = kvm_vgic_inject_irq(vcpu->kvm, vcpu->vcpu_id,
218 pmu->irq_num, overflow, 222 pmu->irq_num, overflow, pmu);
219 &vcpu->arch.pmu);
220 WARN_ON(ret); 223 WARN_ON(ret);
221 } 224 }
222} 225}
223 226
224/**
225 * kvm_pmu_overflow_set - set PMU overflow interrupt
226 * @vcpu: The vcpu pointer
227 * @val: the value guest writes to PMOVSSET register
228 */
229void kvm_pmu_overflow_set(struct kvm_vcpu *vcpu, u64 val)
230{
231 if (val == 0)
232 return;
233
234 vcpu_sys_reg(vcpu, PMOVSSET_EL0) |= val;
235 kvm_pmu_check_overflow(vcpu);
236}
237
238static void kvm_pmu_update_state(struct kvm_vcpu *vcpu)
239{
240 if (!kvm_arm_pmu_v3_ready(vcpu))
241 return;
242 kvm_pmu_check_overflow(vcpu);
243}
244
245bool kvm_pmu_should_notify_user(struct kvm_vcpu *vcpu) 227bool kvm_pmu_should_notify_user(struct kvm_vcpu *vcpu)
246{ 228{
247 struct kvm_pmu *pmu = &vcpu->arch.pmu; 229 struct kvm_pmu *pmu = &vcpu->arch.pmu;
@@ -303,7 +285,7 @@ static inline struct kvm_vcpu *kvm_pmc_to_vcpu(struct kvm_pmc *pmc)
303} 285}
304 286
305/** 287/**
306 * When perf event overflows, call kvm_pmu_overflow_set to set overflow status. 288 * When the perf event overflows, set the overflow status and inform the vcpu.
307 */ 289 */
308static void kvm_pmu_perf_overflow(struct perf_event *perf_event, 290static void kvm_pmu_perf_overflow(struct perf_event *perf_event,
309 struct perf_sample_data *data, 291 struct perf_sample_data *data,
@@ -313,7 +295,12 @@ static void kvm_pmu_perf_overflow(struct perf_event *perf_event,
313 struct kvm_vcpu *vcpu = kvm_pmc_to_vcpu(pmc); 295 struct kvm_vcpu *vcpu = kvm_pmc_to_vcpu(pmc);
314 int idx = pmc->idx; 296 int idx = pmc->idx;
315 297
316 kvm_pmu_overflow_set(vcpu, BIT(idx)); 298 vcpu_sys_reg(vcpu, PMOVSSET_EL0) |= BIT(idx);
299
300 if (kvm_pmu_overflow_status(vcpu)) {
301 kvm_make_request(KVM_REQ_IRQ_PENDING, vcpu);
302 kvm_vcpu_kick(vcpu);
303 }
317} 304}
318 305
319/** 306/**
@@ -341,7 +328,7 @@ void kvm_pmu_software_increment(struct kvm_vcpu *vcpu, u64 val)
341 reg = lower_32_bits(reg); 328 reg = lower_32_bits(reg);
342 vcpu_sys_reg(vcpu, PMEVCNTR0_EL0 + i) = reg; 329 vcpu_sys_reg(vcpu, PMEVCNTR0_EL0 + i) = reg;
343 if (!reg) 330 if (!reg)
344 kvm_pmu_overflow_set(vcpu, BIT(i)); 331 vcpu_sys_reg(vcpu, PMOVSSET_EL0) |= BIT(i);
345 } 332 }
346 } 333 }
347} 334}
diff --git a/virt/kvm/arm/vgic/vgic-init.c b/virt/kvm/arm/vgic/vgic-init.c
index 3a0b8999f011..5801261f3add 100644
--- a/virt/kvm/arm/vgic/vgic-init.c
+++ b/virt/kvm/arm/vgic/vgic-init.c
@@ -285,9 +285,6 @@ int vgic_init(struct kvm *kvm)
285 if (ret) 285 if (ret)
286 goto out; 286 goto out;
287 287
288 if (vgic_has_its(kvm))
289 dist->msis_require_devid = true;
290
291 kvm_for_each_vcpu(i, vcpu, kvm) 288 kvm_for_each_vcpu(i, vcpu, kvm)
292 kvm_vgic_vcpu_enable(vcpu); 289 kvm_vgic_vcpu_enable(vcpu);
293 290
diff --git a/virt/kvm/arm/vgic/vgic-its.c b/virt/kvm/arm/vgic/vgic-its.c
index 2dff288b3a66..aa6b68db80b4 100644
--- a/virt/kvm/arm/vgic/vgic-its.c
+++ b/virt/kvm/arm/vgic/vgic-its.c
@@ -1598,6 +1598,7 @@ static int vgic_its_create(struct kvm_device *dev, u32 type)
1598 INIT_LIST_HEAD(&its->device_list); 1598 INIT_LIST_HEAD(&its->device_list);
1599 INIT_LIST_HEAD(&its->collection_list); 1599 INIT_LIST_HEAD(&its->collection_list);
1600 1600
1601 dev->kvm->arch.vgic.msis_require_devid = true;
1601 dev->kvm->arch.vgic.has_its = true; 1602 dev->kvm->arch.vgic.has_its = true;
1602 its->enabled = false; 1603 its->enabled = false;
1603 its->dev = dev; 1604 its->dev = dev;
diff --git a/virt/kvm/arm/vgic/vgic-mmio-v3.c b/virt/kvm/arm/vgic/vgic-mmio-v3.c
index 714fa3933546..408ef06638fc 100644
--- a/virt/kvm/arm/vgic/vgic-mmio-v3.c
+++ b/virt/kvm/arm/vgic/vgic-mmio-v3.c
@@ -369,7 +369,7 @@ static void vgic_mmio_write_propbase(struct kvm_vcpu *vcpu,
369 return; 369 return;
370 370
371 do { 371 do {
372 old_propbaser = dist->propbaser; 372 old_propbaser = READ_ONCE(dist->propbaser);
373 propbaser = old_propbaser; 373 propbaser = old_propbaser;
374 propbaser = update_64bit_reg(propbaser, addr & 4, len, val); 374 propbaser = update_64bit_reg(propbaser, addr & 4, len, val);
375 propbaser = vgic_sanitise_propbaser(propbaser); 375 propbaser = vgic_sanitise_propbaser(propbaser);
@@ -397,7 +397,7 @@ static void vgic_mmio_write_pendbase(struct kvm_vcpu *vcpu,
397 return; 397 return;
398 398
399 do { 399 do {
400 old_pendbaser = vgic_cpu->pendbaser; 400 old_pendbaser = READ_ONCE(vgic_cpu->pendbaser);
401 pendbaser = old_pendbaser; 401 pendbaser = old_pendbaser;
402 pendbaser = update_64bit_reg(pendbaser, addr & 4, len, val); 402 pendbaser = update_64bit_reg(pendbaser, addr & 4, len, val);
403 pendbaser = vgic_sanitise_pendbaser(pendbaser); 403 pendbaser = vgic_sanitise_pendbaser(pendbaser);
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 82987d457b8b..15252d723b54 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -717,10 +717,9 @@ out_err_no_srcu:
717 hardware_disable_all(); 717 hardware_disable_all();
718out_err_no_disable: 718out_err_no_disable:
719 for (i = 0; i < KVM_NR_BUSES; i++) 719 for (i = 0; i < KVM_NR_BUSES; i++)
720 kfree(rcu_access_pointer(kvm->buses[i])); 720 kfree(kvm_get_bus(kvm, i));
721 for (i = 0; i < KVM_ADDRESS_SPACE_NUM; i++) 721 for (i = 0; i < KVM_ADDRESS_SPACE_NUM; i++)
722 kvm_free_memslots(kvm, 722 kvm_free_memslots(kvm, __kvm_memslots(kvm, i));
723 rcu_dereference_protected(kvm->memslots[i], 1));
724 kvm_arch_free_vm(kvm); 723 kvm_arch_free_vm(kvm);
725 mmdrop(current->mm); 724 mmdrop(current->mm);
726 return ERR_PTR(r); 725 return ERR_PTR(r);
@@ -754,9 +753,8 @@ static void kvm_destroy_vm(struct kvm *kvm)
754 spin_unlock(&kvm_lock); 753 spin_unlock(&kvm_lock);
755 kvm_free_irq_routing(kvm); 754 kvm_free_irq_routing(kvm);
756 for (i = 0; i < KVM_NR_BUSES; i++) { 755 for (i = 0; i < KVM_NR_BUSES; i++) {
757 struct kvm_io_bus *bus; 756 struct kvm_io_bus *bus = kvm_get_bus(kvm, i);
758 757
759 bus = rcu_dereference_protected(kvm->buses[i], 1);
760 if (bus) 758 if (bus)
761 kvm_io_bus_destroy(bus); 759 kvm_io_bus_destroy(bus);
762 kvm->buses[i] = NULL; 760 kvm->buses[i] = NULL;
@@ -770,8 +768,7 @@ static void kvm_destroy_vm(struct kvm *kvm)
770 kvm_arch_destroy_vm(kvm); 768 kvm_arch_destroy_vm(kvm);
771 kvm_destroy_devices(kvm); 769 kvm_destroy_devices(kvm);
772 for (i = 0; i < KVM_ADDRESS_SPACE_NUM; i++) 770 for (i = 0; i < KVM_ADDRESS_SPACE_NUM; i++)
773 kvm_free_memslots(kvm, 771 kvm_free_memslots(kvm, __kvm_memslots(kvm, i));
774 rcu_dereference_protected(kvm->memslots[i], 1));
775 cleanup_srcu_struct(&kvm->irq_srcu); 772 cleanup_srcu_struct(&kvm->irq_srcu);
776 cleanup_srcu_struct(&kvm->srcu); 773 cleanup_srcu_struct(&kvm->srcu);
777 kvm_arch_free_vm(kvm); 774 kvm_arch_free_vm(kvm);
@@ -3883,7 +3880,6 @@ static const struct file_operations *stat_fops[] = {
3883static void kvm_uevent_notify_change(unsigned int type, struct kvm *kvm) 3880static void kvm_uevent_notify_change(unsigned int type, struct kvm *kvm)
3884{ 3881{
3885 struct kobj_uevent_env *env; 3882 struct kobj_uevent_env *env;
3886 char *tmp, *pathbuf = NULL;
3887 unsigned long long created, active; 3883 unsigned long long created, active;
3888 3884
3889 if (!kvm_dev.this_device || !kvm) 3885 if (!kvm_dev.this_device || !kvm)
@@ -3907,38 +3903,28 @@ static void kvm_uevent_notify_change(unsigned int type, struct kvm *kvm)
3907 add_uevent_var(env, "CREATED=%llu", created); 3903 add_uevent_var(env, "CREATED=%llu", created);
3908 add_uevent_var(env, "COUNT=%llu", active); 3904 add_uevent_var(env, "COUNT=%llu", active);
3909 3905
3910 if (type == KVM_EVENT_CREATE_VM) 3906 if (type == KVM_EVENT_CREATE_VM) {
3911 add_uevent_var(env, "EVENT=create"); 3907 add_uevent_var(env, "EVENT=create");
3912 else if (type == KVM_EVENT_DESTROY_VM) 3908 kvm->userspace_pid = task_pid_nr(current);
3909 } else if (type == KVM_EVENT_DESTROY_VM) {
3913 add_uevent_var(env, "EVENT=destroy"); 3910 add_uevent_var(env, "EVENT=destroy");
3911 }
3912 add_uevent_var(env, "PID=%d", kvm->userspace_pid);
3914 3913
3915 if (kvm->debugfs_dentry) { 3914 if (kvm->debugfs_dentry) {
3916 char p[ITOA_MAX_LEN]; 3915 char *tmp, *p = kmalloc(PATH_MAX, GFP_KERNEL);
3917 3916
3918 snprintf(p, sizeof(p), "%s", kvm->debugfs_dentry->d_name.name); 3917 if (p) {
3919 tmp = strchrnul(p + 1, '-'); 3918 tmp = dentry_path_raw(kvm->debugfs_dentry, p, PATH_MAX);
3920 *tmp = '\0'; 3919 if (!IS_ERR(tmp))
3921 add_uevent_var(env, "PID=%s", p); 3920 add_uevent_var(env, "STATS_PATH=%s", tmp);
3922 pathbuf = kmalloc(PATH_MAX, GFP_KERNEL); 3921 kfree(p);
3923 if (pathbuf) {
3924 /* sizeof counts the final '\0' */
3925 int len = sizeof("STATS_PATH=") - 1;
3926 const char *pvar = "STATS_PATH=";
3927
3928 tmp = dentry_path_raw(kvm->debugfs_dentry,
3929 pathbuf + len,
3930 PATH_MAX - len);
3931 if (!IS_ERR(tmp)) {
3932 memcpy(tmp - len, pvar, len);
3933 env->envp[env->envp_idx++] = tmp - len;
3934 }
3935 } 3922 }
3936 } 3923 }
3937 /* no need for checks, since we are adding at most only 5 keys */ 3924 /* no need for checks, since we are adding at most only 5 keys */
3938 env->envp[env->envp_idx++] = NULL; 3925 env->envp[env->envp_idx++] = NULL;
3939 kobject_uevent_env(&kvm_dev.this_device->kobj, KOBJ_CHANGE, env->envp); 3926 kobject_uevent_env(&kvm_dev.this_device->kobj, KOBJ_CHANGE, env->envp);
3940 kfree(env); 3927 kfree(env);
3941 kfree(pathbuf);
3942} 3928}
3943 3929
3944static int kvm_init_debug(void) 3930static int kvm_init_debug(void)