History

Merge 3.7-rc6 into tty-next

Greg Kroah-Hartman committed 14 years ago

Commit 1e619a12 parents 68a8129 f4a75d2182 files · +2500 −957Browse files

Unified · Split

182 files
  1. Documentation/cgroups/memory.txt +4 −0
  2. Documentation/filesystems/proc.txt +12 −4
  3. Documentation/networking/netdev-features.txt +1 −1
  4. MAINTAINERS +59 −9
  5. Makefile +1 −1
  6. arch/arm/boot/Makefile +5 −5
  7. arch/arm/boot/dts/tegra30.dtsi +2 −2
  8. arch/arm/mach-at91/at91rm9200_devices.c +1 −1
  9. arch/arm/mach-at91/at91sam9260_devices.c +1 −1
  10. arch/arm/mach-at91/at91sam9261_devices.c +1 −1
  11. arch/arm/mach-at91/at91sam9263_devices.c +1 −1
  12. arch/arm/mach-at91/at91sam9g45_devices.c +6 −6
  13. arch/arm/mach-highbank/system.c +2 −1
  14. arch/arm/mach-imx/clk-gate2.c +1 −1
  15. arch/arm/mach-imx/ehci-imx25.c +1 −1
  16. arch/arm/mach-imx/ehci-imx35.c +1 −1
  17. arch/arm/mach-omap2/clockdomains44xx_data.c +1 −1
  18. arch/arm/mach-omap2/devices.c +79 −0
  19. arch/arm/mach-omap2/omap_hwmod.c +49 −14
  20. arch/arm/mach-omap2/omap_hwmod_44xx_data.c +36 −0
  21. arch/arm/mach-omap2/twl-common.c +1 −1
  22. arch/arm/mach-omap2/vc.c +1 −1
  23. arch/arm/mach-pxa/hx4700.c +7 −1
  24. arch/arm/mach-pxa/spitz_pm.c +2 −6
  25. arch/arm/plat-omap/include/plat/omap_hwmod.h +6 −0
  26. arch/arm/tools/Makefile +1 −1
  27. arch/arm64/include/asm/io.h +1 −1
  28. arch/arm64/include/asm/pgtable-hwdef.h +4 −2
  29. arch/arm64/include/asm/pgtable.h +20 −20
  30. arch/ia64/mm/init.c +0 −1
  31. arch/mips/cavium-octeon/executive/cvmx-l2c.c +1 −0
  32. arch/mips/fw/arc/misc.c +1 −0
  33. arch/mips/include/asm/bitops.h +39 −89
  34. arch/mips/include/asm/compat.h +1 −1
  35. arch/mips/include/asm/io.h +1 −0
  36. arch/mips/include/asm/irqflags.h +75 −132
  37. arch/mips/include/asm/thread_info.h +0 −6
  38. arch/mips/lib/Makefile +3 −2
  39. arch/mips/lib/bitops.c +179 −0
  40. arch/mips/lib/mips-atomic.c +176 −0
  41. arch/mips/mti-malta/malta-platform.c +2 −1
  42. arch/s390/Kconfig +1 −0
  43. arch/s390/include/asm/compat.h +1 −1
  44. arch/s390/include/asm/topology.h +3 −0
  45. arch/s390/include/uapi/asm/ptrace.h +2 −2
  46. arch/s390/kernel/compat_signal.c +12 −2
  47. arch/s390/kernel/signal.c +12 −2
  48. arch/s390/kernel/topology.c +4 −2
  49. arch/s390/mm/gup.c +2 −3
  50. arch/unicore32/Kconfig +6 −1
  51. arch/unicore32/include/asm/Kbuild +0 −1
  52. arch/unicore32/include/asm/bug.h +0 −5
  53. arch/unicore32/include/asm/cmpxchg.h +1 −1
  54. arch/unicore32/include/asm/kvm_para.h +0 −1
  55. arch/unicore32/include/asm/processor.h +0 −5
  56. arch/unicore32/include/asm/ptrace.h +1 −75
  57. arch/unicore32/include/uapi/asm/Kbuild +7 −0
  58. arch/unicore32/include/uapi/asm/byteorder.h +0 −0
  59. arch/unicore32/include/uapi/asm/ptrace.h +90 −0
  60. arch/unicore32/include/uapi/asm/sigcontext.h +0 −0
  61. arch/unicore32/include/uapi/asm/unistd.h +1 −0
  62. arch/unicore32/kernel/entry.S +7 −13
  63. arch/unicore32/kernel/process.c +14 −44
  64. arch/unicore32/kernel/setup.h +6 −0
  65. arch/unicore32/kernel/sys.c +0 −63
  66. arch/unicore32/mm/fault.c +27 −10
  67. arch/x86/kvm/cpuid.h +3 −0
  68. arch/x86/kvm/vmx.c +7 −4
  69. arch/x86/kvm/x86.c +3 −0
  70. drivers/bluetooth/ath3k.c +1 −0
  71. drivers/bluetooth/btusb.c +1 −0
  72. drivers/bus/omap-ocp2scp.c +65 −3
  73. drivers/clk/ux500/u8500_clk.c +46 −4
  74. drivers/gpu/drm/i915/intel_crt.c +1 −1
  75. drivers/gpu/drm/i915/intel_display.c +11 −0
  76. drivers/gpu/drm/i915/intel_sdvo.c +19 −3
  77. drivers/gpu/drm/radeon/atombios_encoders.c +1 −1
  78. drivers/gpu/drm/ttm/ttm_page_alloc.c +4 −1
  79. drivers/gpu/drm/ttm/ttm_tt.c +0 −4
  80. drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c +2 −0
  81. drivers/hid/hid-microsoft.c +3 −3
  82. drivers/i2c/muxes/i2c-mux-pinctrl.c +1 −1
  83. drivers/irqchip/irq-bcm2835.c +2 −1
  84. drivers/leds/ledtrig-cpu.c +0 −21
  85. drivers/net/ethernet/jme.c +8 −20
  86. drivers/net/ethernet/micrel/ksz884x.c +4 −12
  87. drivers/net/ethernet/smsc/smsc911x.c +15 −2
  88. drivers/net/ethernet/tile/tilegx.c +1 −1
  89. drivers/net/ethernet/xilinx/xilinx_axienet_main.c +6 −6
  90. drivers/net/phy/mdio-bitbang.c +0 −1
  91. drivers/net/usb/cdc_ncm.c +18 −4
  92. drivers/net/usb/smsc95xx.c +2 −2
  93. drivers/net/vxlan.c +7 −3
  94. drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c +1 −1
  95. drivers/net/wireless/iwlwifi/dvm/mac80211.c +1 −1
  96. drivers/net/wireless/iwlwifi/dvm/main.c +1 −1
  97. drivers/net/wireless/iwlwifi/pcie/rx.c +21 −2
  98. drivers/rapidio/rio.c +1 −1
  99. drivers/regulator/core.c +20 −13
  100. drivers/s390/char/con3215.c +5 −7
  101. drivers/s390/net/qeth_core_main.c +22 −2
  102. drivers/s390/net/qeth_l2_main.c +8 −5
  103. drivers/staging/android/android_alarm.h +1 −3
  104. drivers/tty/hvc/hvc_console.c +0 −7
  105. drivers/tty/serial/max310x.c +1 −0
  106. drivers/usb/core/hcd.c +16 −0
  107. drivers/usb/early/ehci-dbgp.c +9 −6
  108. drivers/usb/host/ehci-ls1x.c +1 −1
  109. drivers/usb/host/ohci-xls.c +1 −1
  110. drivers/usb/musb/musb_gadget.c +26 −4
  111. drivers/usb/musb/ux500.c +1 −1
  112. drivers/usb/otg/Kconfig +2 −2
  113. drivers/usb/serial/keyspan.c +1 −2
  114. drivers/usb/serial/option.c +9 −0
  115. drivers/usb/serial/usb_wwan.c +5 −5
  116. fs/proc/base.c +109 −0
  117. fs/pstore/platform.c +2 −1
  118. fs/ubifs/find.c +10 −2
  119. fs/ubifs/lprops.c +6 −0
  120. fs/ubifs/ubifs.h +3 −0
  121. include/linux/clk-provider.h +2 −2
  122. include/linux/mm.h +0 −4
  123. include/linux/mmzone.h +1 −1
  124. include/linux/platform_data/omap_ocp2scp.h +31 −0
  125. include/linux/rio.h +2 −0
  126. include/uapi/linux/oom.h +9 −0
  127. kernel/futex.c +22 −19
  128. mm/bootmem.c +1 −9
  129. mm/highmem.c +1 −1
  130. mm/memcontrol.c +50 −17
  131. mm/memory.c +4 −6
  132. mm/memory_hotplug.c +0 −7
  133. mm/mmap.c +2 −0
  134. mm/mmzone.c +1 −5
  135. mm/nobootmem.c +0 −3
  136. mm/page_alloc.c +1 −35
  137. mm/shmem.c +15 −3
  138. mm/swapfile.c +2 −2
  139. mm/vmscan.c +0 −25
  140. net/batman-adv/soft-interface.c +6 −6
  141. net/batman-adv/translation-table.c +14 −1
  142. net/bluetooth/hci_core.c +2 −2
  143. net/bluetooth/mgmt.c +7 −5
  144. net/bluetooth/smp.c +1 −1
  145. net/core/dev.c +3 −1
  146. net/core/dev_addr_lists.c +2 −1
  147. net/ipv4/ip_sockglue.c +22 −13
  148. net/ipv4/ip_vti.c +5 −0
  149. net/ipv4/tcp.c +2 −2
  150. net/ipv4/tcp_input.c +10 −5
  151. net/ipv4/tcp_metrics.c +9 −3
  152. net/ipv4/tcp_output.c +4 −0
  153. net/ipv6/ipv6_sockglue.c +1 −0
  154. net/mac80211/cfg.c +3 −0
  155. net/mac80211/ieee80211_i.h +2 −0
  156. net/mac80211/main.c +4 −2
  157. net/mac80211/scan.c +1 −1
  158. net/mac80211/sta_info.c +8 −3
  159. net/mac80211/status.c +9 −0
  160. net/mac80211/tx.c +6 −3
  161. net/mac80211/util.c +2 −0
  162. net/sctp/proc.c +4 −4
  163. net/wireless/reg.c +2 −3
  164. scripts/kconfig/expr.h +2 −3
  165. scripts/kconfig/list.h +91 −0
  166. scripts/kconfig/lkc_proto.h +2 −2
  167. scripts/kconfig/mconf.c +3 −3
  168. scripts/kconfig/menu.c +8 −6
  169. security/device_cgroup.c +13 −5
  170. sound/pci/es1968.c +8 −3
  171. sound/pci/fm801.c +8 −3
  172. sound/pci/hda/patch_realtek.c +1 −0
  173. sound/soc/codecs/cs42l52.c +1 −2
  174. sound/soc/codecs/wm5102.c +551 −1
  175. sound/soc/codecs/wm8978.c +1 −1
  176. sound/soc/mxs/mxs-saif.c +13 −4
  177. sound/soc/samsung/Kconfig +2 −0
  178. sound/soc/samsung/bells.c +1 −1
  179. sound/soc/soc-core.c +3 −2
  180. sound/soc/soc-dapm.c +1 −1
  181. sound/usb/card.c +3 −3
  182. tools/power/x86/turbostat/turbostat.c +19 −9
Documentation/cgroups/memory.txt+4−0
@@ -466,6 +466,10 @@ Note: · 465 unmodified lines
466466 5.3 swappiness
467467
468468 Similar to /proc/sys/vm/swappiness, but affecting a hierarchy of groups only.
469+Please note that unlike the global swappiness, memcg knob set to 0
470+really prevents from any swapping even if there is a swap storage
471+available. This might lead to memcg OOM killer if there are no file
472+pages to reclaim.
469473
470474 Following cgroups' swappiness can't be changed.
471475 - root cgroup (uses /proc/sys/vm/swappiness).
Documentation/filesystems/proc.txt+12−4
@@ -33,7 +33,7 @@ Table of Contents · 32 unmodified lines
3333 2 Modifying System Parameters
3434
3535 3 Per-Process Parameters
36− 3.1 /proc/<pid>/oom_score_adj - Adjust the oom-killer
36+ 3.1 /proc/<pid>/oom_adj & /proc/<pid>/oom_score_adj - Adjust the oom-killer
3737 score
3838 3.2 /proc/<pid>/oom_score - Display current oom-killer score
3939 3.3 /proc/<pid>/io - Display the IO accounting fields
@@ -1320,10 +1320,10 @@ of the kernel. · 1280 unmodified lines
13201320 CHAPTER 3: PER-PROCESS PARAMETERS
13211321 ------------------------------------------------------------------------------
13221322
1323−3.1 /proc/<pid>/oom_score_adj- Adjust the oom-killer score
1323+3.1 /proc/<pid>/oom_adj & /proc/<pid>/oom_score_adj- Adjust the oom-killer score
13241324 --------------------------------------------------------------------------------
13251325
1326−This file can be used to adjust the badness heuristic used to select which
1326+These file can be used to adjust the badness heuristic used to select which
13271327 process gets killed in out of memory conditions.
13281328
13291329 The badness heuristic assigns a value to each candidate task ranging from 0
@@ -1361,6 +1361,12 @@ same system, cpuset, mempolicy, or memory controller resources to use at least · 31 unmodified lines
13611361 equivalent to discounting 50% of the task's allowed memory from being considered
13621362 as scoring against the task.
13631363
1364+For backwards compatibility with previous kernels, /proc/<pid>/oom_adj may also
1365+be used to tune the badness score. Its acceptable values range from -16
1366+(OOM_ADJUST_MIN) to +15 (OOM_ADJUST_MAX) and a special value of -17
1367+(OOM_DISABLE) to disable oom killing entirely for that task. Its value is
1368+scaled linearly with /proc/<pid>/oom_score_adj.
1369+
13641370 The value of /proc/<pid>/oom_score_adj may be reduced no lower than the last
13651371 value set by a CAP_SYS_RESOURCE process. To reduce the value any lower
13661372 requires CAP_SYS_RESOURCE.
@@ -1375,7 +1381,9 @@ minimal amount of work. · 8 unmodified lines
13751381 -------------------------------------------------------------
13761382
13771383 This file can be used to check the current score used by the oom-killer is for
1378−any given <pid>.
1384+any given <pid>. Use it together with /proc/<pid>/oom_score_adj to tune which
1385+process should be killed in an out-of-memory situation.
1386+
13791387
13801388 3.3 /proc/<pid>/io - Display the IO accounting fields
13811389 -------------------------------------------------------
Documentation/networking/netdev-features.txt+1−1
@@ -164,4 +164,4 @@ read the CRC recorded by the NIC on receipt of the packet. · 163 unmodified lines
164164 This requests that the NIC receive all possible frames, including errored
165165 frames (such as bad FCS, etc). This can be helpful when sniffing a link with
166166 bad packets on it. Some NICs may receive more packets if also put into normal
167−PROMISC mdoe.
167+PROMISC mode.
MAINTAINERS+59−9
@@ -3598,6 +3598,49 @@ F: drivers/hid/hid-hyperv.c · 3597 unmodified lines
35983598 F: drivers/net/hyperv/
35993599 F: drivers/staging/hv/
36003600
3601+I2C OVER PARALLEL PORT
3602+M: Jean Delvare <khali@linux-fr.org>
3603+L: linux-i2c@vger.kernel.org
3604+S: Maintained
3605+F: Documentation/i2c/busses/i2c-parport
3606+F: Documentation/i2c/busses/i2c-parport-light
3607+F: drivers/i2c/busses/i2c-parport.c
3608+F: drivers/i2c/busses/i2c-parport-light.c
3609+
3610+I2C/SMBUS CONTROLLER DRIVERS FOR PC
3611+M: Jean Delvare <khali@linux-fr.org>
3612+L: linux-i2c@vger.kernel.org
3613+S: Maintained
3614+F: Documentation/i2c/busses/i2c-ali1535
3615+F: Documentation/i2c/busses/i2c-ali1563
3616+F: Documentation/i2c/busses/i2c-ali15x3
3617+F: Documentation/i2c/busses/i2c-amd756
3618+F: Documentation/i2c/busses/i2c-amd8111
3619+F: Documentation/i2c/busses/i2c-i801
3620+F: Documentation/i2c/busses/i2c-nforce2
3621+F: Documentation/i2c/busses/i2c-piix4
3622+F: Documentation/i2c/busses/i2c-sis5595
3623+F: Documentation/i2c/busses/i2c-sis630
3624+F: Documentation/i2c/busses/i2c-sis96x
3625+F: Documentation/i2c/busses/i2c-via
3626+F: Documentation/i2c/busses/i2c-viapro
3627+F: drivers/i2c/busses/i2c-ali1535.c
3628+F: drivers/i2c/busses/i2c-ali1563.c
3629+F: drivers/i2c/busses/i2c-ali15x3.c
3630+F: drivers/i2c/busses/i2c-amd756.c
3631+F: drivers/i2c/busses/i2c-amd756-s4882.c
3632+F: drivers/i2c/busses/i2c-amd8111.c
3633+F: drivers/i2c/busses/i2c-i801.c
3634+F: drivers/i2c/busses/i2c-isch.c
3635+F: drivers/i2c/busses/i2c-nforce2.c
3636+F: drivers/i2c/busses/i2c-nforce2-s4985.c
3637+F: drivers/i2c/busses/i2c-piix4.c
3638+F: drivers/i2c/busses/i2c-sis5595.c
3639+F: drivers/i2c/busses/i2c-sis630.c
3640+F: drivers/i2c/busses/i2c-sis96x.c
3641+F: drivers/i2c/busses/i2c-via.c
3642+F: drivers/i2c/busses/i2c-viapro.c
3643+
36013644 I2C/SMBUS STUB DRIVER
36023645 M: "Mark M. Hoffman" <mhoffman@lightlink.com>
36033646 L: linux-i2c@vger.kernel.org
@@ -3605,9 +3648,8 @@ S: Maintained · 1 unmodified line
36053648 F: drivers/i2c/busses/i2c-stub.c
36063649
36073650 I2C SUBSYSTEM
3608−M: "Jean Delvare (PC drivers, core)" <khali@linux-fr.org>
3651+M: Wolfram Sang <w.sang@pengutronix.de>
36093652 M: "Ben Dooks (embedded platforms)" <ben-linux@fluff.org>
3610−M: "Wolfram Sang (embedded platforms)" <w.sang@pengutronix.de>
36113653 L: linux-i2c@vger.kernel.org
36123654 W: http://i2c.wiki.kernel.org/
36133655 T: quilt kernel.org/pub/linux/kernel/people/jdelvare/linux-2.6/jdelvare-i2c/
@@ -3618,6 +3660,13 @@ F: drivers/i2c/ · 4 unmodified lines
36183660 F: include/linux/i2c.h
36193661 F: include/linux/i2c-*.h
36203662
3663+I2C-TAOS-EVM DRIVER
3664+M: Jean Delvare <khali@linux-fr.org>
3665+L: linux-i2c@vger.kernel.org
3666+S: Maintained
3667+F: Documentation/i2c/busses/i2c-taos-evm
3668+F: drivers/i2c/busses/i2c-taos-evm.c
3669+
36213670 I2C-TINY-USB DRIVER
36223671 M: Till Harbaum <till@harbaum.org>
36233672 L: linux-i2c@vger.kernel.org
@@ -7210,6 +7259,14 @@ L: linux-xtensa@linux-xtensa.org · 3586 unmodified lines
72107259 S: Maintained
72117260 F: arch/xtensa/
72127261
7262+THERMAL
7263+M: Zhang Rui <rui.zhang@intel.com>
7264+L: linux-pm@vger.kernel.org
7265+T: git git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux.git
7266+S: Supported
7267+F: drivers/thermal/
7268+F: include/linux/thermal.h
7269+
72137270 THINKPAD ACPI EXTRAS DRIVER
72147271 M: Henrique de Moraes Holschuh <ibm-acpi@hmh.eng.br>
72157272 L: ibm-acpi-devel@lists.sourceforge.net
@@ -7887,13 +7944,6 @@ M: Roger Luethi <rl@hellgate.ch> · 671 unmodified lines
78877944 S: Maintained
78887945 F: drivers/net/ethernet/via/via-rhine.c
78897946
7890−VIAPRO SMBUS DRIVER
7891−M: Jean Delvare <khali@linux-fr.org>
7892−L: linux-i2c@vger.kernel.org
7893−S: Maintained
7894−F: Documentation/i2c/busses/i2c-viapro
7895−F: drivers/i2c/busses/i2c-viapro.c
7896−
78977947 VIA SD/MMC CARD CONTROLLER DRIVER
78987948 M: Bruce Chang <brucechang@via.com.tw>
78997949 M: Harald Welte <HaraldWelte@viatech.com>
Makefile+1−1
@@ -1,7 +1,7 @@
11 VERSION = 3
22 PATCHLEVEL = 7
33 SUBLEVEL = 0
4−EXTRAVERSION = -rc5
4+EXTRAVERSION = -rc6
55 NAME = Terrified Chipmunk
66
77 # *DOCUMENTATION*
arch/arm/boot/Makefile+5−5
@@ -33,7 +33,7 @@ ifeq ($(CONFIG_XIP_KERNEL),y) · 32 unmodified lines
3333
3434 $(obj)/xipImage: vmlinux FORCE
3535 $(call if_changed,objcopy)
36− $(kecho) ' Kernel: $@ is ready (physical address: $(CONFIG_XIP_PHYS_ADDR))'
36+ @$(kecho) ' Kernel: $@ is ready (physical address: $(CONFIG_XIP_PHYS_ADDR))'
3737
3838 $(obj)/Image $(obj)/zImage: FORCE
3939 @echo 'Kernel configured for XIP (CONFIG_XIP_KERNEL=y)'
@@ -48,14 +48,14 @@ $(obj)/xipImage: FORCE · 8 unmodified lines
4848
4949 $(obj)/Image: vmlinux FORCE
5050 $(call if_changed,objcopy)
51− $(kecho) ' Kernel: $@ is ready'
51+ @$(kecho) ' Kernel: $@ is ready'
5252
5353 $(obj)/compressed/vmlinux: $(obj)/Image FORCE
5454 $(Q)$(MAKE) $(build)=$(obj)/compressed $@
5555
5656 $(obj)/zImage: $(obj)/compressed/vmlinux FORCE
5757 $(call if_changed,objcopy)
58− $(kecho) ' Kernel: $@ is ready'
58+ @$(kecho) ' Kernel: $@ is ready'
5959
6060 endif
6161
@@ -90,7 +90,7 @@ fi · 28 unmodified lines
9090 $(obj)/uImage: $(obj)/zImage FORCE
9191 @$(check_for_multiple_loadaddr)
9292 $(call if_changed,uimage)
93− $(kecho) ' Image $@ is ready'
93+ @$(kecho) ' Image $@ is ready'
9494
9595 $(obj)/bootp/bootp: $(obj)/zImage initrd FORCE
9696 $(Q)$(MAKE) $(build)=$(obj)/bootp $@
@@ -98,7 +98,7 @@ $(obj)/bootp/bootp: $(obj)/zImage initrd FORCE · 1 unmodified line
9898
9999 $(obj)/bootpImage: $(obj)/bootp/bootp FORCE
100100 $(call if_changed,objcopy)
101− $(kecho) ' Kernel: $@ is ready'
101+ @$(kecho) ' Kernel: $@ is ready'
102102
103103 PHONY += initrd FORCE
104104 initrd:
arch/arm/boot/dts/tegra30.dtsi+2−2
@@ -73,8 +73,8 @@ · 72 unmodified lines
7373
7474 pinmux: pinmux {
7575 compatible = "nvidia,tegra30-pinmux";
76− reg = <0x70000868 0xd0 /* Pad control registers */
77− 0x70003000 0x3e0>; /* Mux registers */
76+ reg = <0x70000868 0xd4 /* Pad control registers */
77+ 0x70003000 0x3e4>; /* Mux registers */
7878 };
7979
8080 serial@70006000 {
arch/arm/mach-at91/at91rm9200_devices.c+1−1
@@ -68,7 +68,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) · 67 unmodified lines
6868
6969 /* Enable overcurrent notification */
7070 for (i = 0; i < data->ports; i++) {
71− if (data->overcurrent_pin[i])
71+ if (gpio_is_valid(data->overcurrent_pin[i]))
7272 at91_set_gpio_input(data->overcurrent_pin[i], 1);
7373 }
7474
arch/arm/mach-at91/at91sam9260_devices.c+1−1
@@ -72,7 +72,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) · 71 unmodified lines
7272
7373 /* Enable overcurrent notification */
7474 for (i = 0; i < data->ports; i++) {
75− if (data->overcurrent_pin[i])
75+ if (gpio_is_valid(data->overcurrent_pin[i]))
7676 at91_set_gpio_input(data->overcurrent_pin[i], 1);
7777 }
7878
arch/arm/mach-at91/at91sam9261_devices.c+1−1
@@ -72,7 +72,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) · 71 unmodified lines
7272
7373 /* Enable overcurrent notification */
7474 for (i = 0; i < data->ports; i++) {
75− if (data->overcurrent_pin[i])
75+ if (gpio_is_valid(data->overcurrent_pin[i]))
7676 at91_set_gpio_input(data->overcurrent_pin[i], 1);
7777 }
7878
arch/arm/mach-at91/at91sam9263_devices.c+1−1
@@ -78,7 +78,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) · 77 unmodified lines
7878
7979 /* Enable overcurrent notification */
8080 for (i = 0; i < data->ports; i++) {
81− if (data->overcurrent_pin[i])
81+ if (gpio_is_valid(data->overcurrent_pin[i]))
8282 at91_set_gpio_input(data->overcurrent_pin[i], 1);
8383 }
8484
arch/arm/mach-at91/at91sam9g45_devices.c+6−6
@@ -1841,8 +1841,8 @@ static struct resource sha_resources[] = { · 1840 unmodified lines
18411841 .flags = IORESOURCE_MEM,
18421842 },
18431843 [1] = {
1844− .start = AT91SAM9G45_ID_AESTDESSHA,
1845− .end = AT91SAM9G45_ID_AESTDESSHA,
1844+ .start = NR_IRQS_LEGACY + AT91SAM9G45_ID_AESTDESSHA,
1845+ .end = NR_IRQS_LEGACY + AT91SAM9G45_ID_AESTDESSHA,
18461846 .flags = IORESOURCE_IRQ,
18471847 },
18481848 };
@@ -1874,8 +1874,8 @@ static struct resource tdes_resources[] = { · 25 unmodified lines
18741874 .flags = IORESOURCE_MEM,
18751875 },
18761876 [1] = {
1877− .start = AT91SAM9G45_ID_AESTDESSHA,
1878− .end = AT91SAM9G45_ID_AESTDESSHA,
1877+ .start = NR_IRQS_LEGACY + AT91SAM9G45_ID_AESTDESSHA,
1878+ .end = NR_IRQS_LEGACY + AT91SAM9G45_ID_AESTDESSHA,
18791879 .flags = IORESOURCE_IRQ,
18801880 },
18811881 };
@@ -1910,8 +1910,8 @@ static struct resource aes_resources[] = { · 28 unmodified lines
19101910 .flags = IORESOURCE_MEM,
19111911 },
19121912 [1] = {
1913− .start = AT91SAM9G45_ID_AESTDESSHA,
1914− .end = AT91SAM9G45_ID_AESTDESSHA,
1913+ .start = NR_IRQS_LEGACY + AT91SAM9G45_ID_AESTDESSHA,
1914+ .end = NR_IRQS_LEGACY + AT91SAM9G45_ID_AESTDESSHA,
19151915 .flags = IORESOURCE_IRQ,
19161916 },
19171917 };
arch/arm/mach-highbank/system.c+2−1
@@ -28,6 +28,7 @@ void highbank_restart(char mode, const char *cmd) · 27 unmodified lines
2828 hignbank_set_pwr_soft_reset();
2929
3030 scu_power_mode(scu_base_addr, SCU_PM_POWEROFF);
31− cpu_do_idle();
31+ while (1)
32+ cpu_do_idle();
3233 }
3334
arch/arm/mach-imx/clk-gate2.c+1−1
@@ -112,7 +112,7 @@ struct clk *clk_register_gate2(struct device *dev, const char *name, · 111 unmodified lines
112112
113113 clk = clk_register(dev, &gate->hw);
114114 if (IS_ERR(clk))
115− kfree(clk);
115+ kfree(gate);
116116
117117 return clk;
118118 }
arch/arm/mach-imx/ehci-imx25.c+1−1
@@ -30,7 +30,7 @@ · 29 unmodified lines
3030 #define MX25_H1_SIC_SHIFT 21
3131 #define MX25_H1_SIC_MASK (0x3 << MX25_H1_SIC_SHIFT)
3232 #define MX25_H1_PP_BIT (1 << 18)
33−#define MX25_H1_PM_BIT (1 << 8)
33+#define MX25_H1_PM_BIT (1 << 16)
3434 #define MX25_H1_IPPUE_UP_BIT (1 << 7)
3535 #define MX25_H1_IPPUE_DOWN_BIT (1 << 6)
3636 #define MX25_H1_TLL_BIT (1 << 5)
arch/arm/mach-imx/ehci-imx35.c+1−1
@@ -30,7 +30,7 @@ · 29 unmodified lines
3030 #define MX35_H1_SIC_SHIFT 21
3131 #define MX35_H1_SIC_MASK (0x3 << MX35_H1_SIC_SHIFT)
3232 #define MX35_H1_PP_BIT (1 << 18)
33−#define MX35_H1_PM_BIT (1 << 8)
33+#define MX35_H1_PM_BIT (1 << 16)
3434 #define MX35_H1_IPPUE_UP_BIT (1 << 7)
3535 #define MX35_H1_IPPUE_DOWN_BIT (1 << 6)
3636 #define MX35_H1_TLL_BIT (1 << 5)
arch/arm/mach-omap2/clockdomains44xx_data.c+1−1
@@ -359,7 +359,7 @@ static struct clockdomain iss_44xx_clkdm = { · 358 unmodified lines
359359 .clkdm_offs = OMAP4430_CM2_CAM_CAM_CDOFFS,
360360 .wkdep_srcs = iss_wkup_sleep_deps,
361361 .sleepdep_srcs = iss_wkup_sleep_deps,
362− .flags = CLKDM_CAN_HWSUP_SWSUP,
362+ .flags = CLKDM_CAN_SWSUP,
363363 };
364364
365365 static struct clockdomain l3_dss_44xx_clkdm = {
arch/arm/mach-omap2/devices.c+79−0
@@ -19,6 +19,7 @@ · 18 unmodified lines
1919 #include <linux/of.h>
2020 #include <linux/pinctrl/machine.h>
2121 #include <linux/platform_data/omap4-keypad.h>
22+#include <linux/platform_data/omap_ocp2scp.h>
2223
2324 #include <asm/mach-types.h>
2425 #include <asm/mach/map.h>
@@ -613,6 +614,83 @@ static void omap_init_vout(void) · 588 unmodified lines
613614 static inline void omap_init_vout(void) {}
614615 #endif
615616
617+#if defined(CONFIG_OMAP_OCP2SCP) || defined(CONFIG_OMAP_OCP2SCP_MODULE)
618+static int count_ocp2scp_devices(struct omap_ocp2scp_dev *ocp2scp_dev)
619+{
620+ int cnt = 0;
621+
622+ while (ocp2scp_dev->drv_name != NULL) {
623+ cnt++;
624+ ocp2scp_dev++;
625+ }
626+
627+ return cnt;
628+}
629+
630+static void omap_init_ocp2scp(void)
631+{
632+ struct omap_hwmod *oh;
633+ struct platform_device *pdev;
634+ int bus_id = -1, dev_cnt = 0, i;
635+ struct omap_ocp2scp_dev *ocp2scp_dev;
636+ const char *oh_name, *name;
637+ struct omap_ocp2scp_platform_data *pdata;
638+
639+ if (!cpu_is_omap44xx())
640+ return;
641+
642+ oh_name = "ocp2scp_usb_phy";
643+ name = "omap-ocp2scp";
644+
645+ oh = omap_hwmod_lookup(oh_name);
646+ if (!oh) {
647+ pr_err("%s: could not find omap_hwmod for %s\n", __func__,
648+ oh_name);
649+ return;
650+ }
651+
652+ pdata = kzalloc(sizeof(*pdata), GFP_KERNEL);
653+ if (!pdata) {
654+ pr_err("%s: No memory for ocp2scp pdata\n", __func__);
655+ return;
656+ }
657+
658+ ocp2scp_dev = oh->dev_attr;
659+ dev_cnt = count_ocp2scp_devices(ocp2scp_dev);
660+
661+ if (!dev_cnt) {
662+ pr_err("%s: No devices connected to ocp2scp\n", __func__);
663+ kfree(pdata);
664+ return;
665+ }
666+
667+ pdata->devices = kzalloc(sizeof(struct omap_ocp2scp_dev *)
668+ * dev_cnt, GFP_KERNEL);
669+ if (!pdata->devices) {
670+ pr_err("%s: No memory for ocp2scp pdata devices\n", __func__);
671+ kfree(pdata);
672+ return;
673+ }
674+
675+ for (i = 0; i < dev_cnt; i++, ocp2scp_dev++)
676+ pdata->devices[i] = ocp2scp_dev;
677+
678+ pdata->dev_cnt = dev_cnt;
679+
680+ pdev = omap_device_build(name, bus_id, oh, pdata, sizeof(*pdata), NULL,
681+ 0, false);
682+ if (IS_ERR(pdev)) {
683+ pr_err("Could not build omap_device for %s %s\n",
684+ name, oh_name);
685+ kfree(pdata->devices);
686+ kfree(pdata);
687+ return;
688+ }
689+}
690+#else
691+static inline void omap_init_ocp2scp(void) { }
692+#endif
693+
616694 /*-------------------------------------------------------------------------*/
617695
618696 static int __init omap2_init_devices(void)
@@ -640,6 +718,7 @@ static int __init omap2_init_devices(void) · 21 unmodified lines
640718 omap_init_sham();
641719 omap_init_aes();
642720 omap_init_vout();
721+ omap_init_ocp2scp();
643722
644723 return 0;
645724 }
arch/arm/mach-omap2/omap_hwmod.c+49−14
@@ -421,6 +421,38 @@ static int _set_softreset(struct omap_hwmod *oh, u32 *v) · 420 unmodified lines
421421 return 0;
422422 }
423423
424+/**
425+ * _wait_softreset_complete - wait for an OCP softreset to complete
426+ * @oh: struct omap_hwmod * to wait on
427+ *
428+ * Wait until the IP block represented by @oh reports that its OCP
429+ * softreset is complete. This can be triggered by software (see
430+ * _ocp_softreset()) or by hardware upon returning from off-mode (one
431+ * example is HSMMC). Waits for up to MAX_MODULE_SOFTRESET_WAIT
432+ * microseconds. Returns the number of microseconds waited.
433+ */
434+static int _wait_softreset_complete(struct omap_hwmod *oh)
435+{
436+ struct omap_hwmod_class_sysconfig *sysc;
437+ u32 softrst_mask;
438+ int c = 0;
439+
440+ sysc = oh->class->sysc;
441+
442+ if (sysc->sysc_flags & SYSS_HAS_RESET_STATUS)
443+ omap_test_timeout((omap_hwmod_read(oh, sysc->syss_offs)
444+ & SYSS_RESETDONE_MASK),
445+ MAX_MODULE_SOFTRESET_WAIT, c);
446+ else if (sysc->sysc_flags & SYSC_HAS_RESET_STATUS) {
447+ softrst_mask = (0x1 << sysc->sysc_fields->srst_shift);
448+ omap_test_timeout(!(omap_hwmod_read(oh, sysc->sysc_offs)
449+ & softrst_mask),
450+ MAX_MODULE_SOFTRESET_WAIT, c);
451+ }
452+
453+ return c;
454+}
455+
424456 /**
425457 * _set_dmadisable: set OCP_SYSCONFIG.DMADISABLE bit in @v
426458 * @oh: struct omap_hwmod *
@@ -1282,6 +1314,18 @@ static void _enable_sysc(struct omap_hwmod *oh) · 855 unmodified lines
12821314 if (!oh->class->sysc)
12831315 return;
12841316
1317+ /*
1318+ * Wait until reset has completed, this is needed as the IP
1319+ * block is reset automatically by hardware in some cases
1320+ * (off-mode for example), and the drivers require the
1321+ * IP to be ready when they access it
1322+ */
1323+ if (oh->flags & HWMOD_CONTROL_OPT_CLKS_IN_RESET)
1324+ _enable_optional_clocks(oh);
1325+ _wait_softreset_complete(oh);
1326+ if (oh->flags & HWMOD_CONTROL_OPT_CLKS_IN_RESET)
1327+ _disable_optional_clocks(oh);
1328+
12851329 v = oh->_sysc_cache;
12861330 sf = oh->class->sysc->sysc_flags;
12871331
@@ -1804,7 +1848,7 @@ static int _am33xx_disable_module(struct omap_hwmod *oh) · 516 unmodified lines
18041848 */
18051849 static int _ocp_softreset(struct omap_hwmod *oh)
18061850 {
1807− u32 v, softrst_mask;
1851+ u32 v;
18081852 int c = 0;
18091853 int ret = 0;
18101854
@@ -1834,19 +1878,7 @@ static int _ocp_softreset(struct omap_hwmod *oh) · 23 unmodified lines
18341878 if (oh->class->sysc->srst_udelay)
18351879 udelay(oh->class->sysc->srst_udelay);
18361880
1837− if (oh->class->sysc->sysc_flags & SYSS_HAS_RESET_STATUS)
1838− omap_test_timeout((omap_hwmod_read(oh,
1839− oh->class->sysc->syss_offs)
1840− & SYSS_RESETDONE_MASK),
1841− MAX_MODULE_SOFTRESET_WAIT, c);
1842− else if (oh->class->sysc->sysc_flags & SYSC_HAS_RESET_STATUS) {
1843− softrst_mask = (0x1 << oh->class->sysc->sysc_fields->srst_shift);
1844− omap_test_timeout(!(omap_hwmod_read(oh,
1845− oh->class->sysc->sysc_offs)
1846− & softrst_mask),
1847− MAX_MODULE_SOFTRESET_WAIT, c);
1848− }
1849−
1881+ c = _wait_softreset_complete(oh);
18501882 if (c == MAX_MODULE_SOFTRESET_WAIT)
18511883 pr_warning("omap_hwmod: %s: softreset failed (waited %d usec)\n",
18521884 oh->name, MAX_MODULE_SOFTRESET_WAIT);
@@ -2352,6 +2384,9 @@ static int __init _setup_reset(struct omap_hwmod *oh) · 499 unmodified lines
23522384 if (oh->_state != _HWMOD_STATE_INITIALIZED)
23532385 return -EINVAL;
23542386
2387+ if (oh->flags & HWMOD_EXT_OPT_MAIN_CLK)
2388+ return -EPERM;
2389+
23552390 if (oh->rst_lines_cnt == 0) {
23562391 r = _enable(oh);
23572392 if (r) {
arch/arm/mach-omap2/omap_hwmod_44xx_data.c+36−0
@@ -21,6 +21,7 @@ · 20 unmodified lines
2121 #include <linux/io.h>
2222 #include <linux/platform_data/gpio-omap.h>
2323 #include <linux/power/smartreflex.h>
24+#include <linux/platform_data/omap_ocp2scp.h>
2425
2526 #include <plat/omap_hwmod.h>
2627 #include <plat/i2c.h>
@@ -2125,6 +2126,14 @@ static struct omap_hwmod omap44xx_mcpdm_hwmod = { · 2098 unmodified lines
21252126 .name = "mcpdm",
21262127 .class = &omap44xx_mcpdm_hwmod_class,
21272128 .clkdm_name = "abe_clkdm",
2129+ /*
2130+ * It's suspected that the McPDM requires an off-chip main
2131+ * functional clock, controlled via I2C. This IP block is
2132+ * currently reset very early during boot, before I2C is
2133+ * available, so it doesn't seem that we have any choice in
2134+ * the kernel other than to avoid resetting it.
2135+ */
2136+ .flags = HWMOD_EXT_OPT_MAIN_CLK,
21282137 .mpu_irqs = omap44xx_mcpdm_irqs,
21292138 .sdma_reqs = omap44xx_mcpdm_sdma_reqs,
21302139 .main_clk = "mcpdm_fck",
@@ -2681,6 +2690,32 @@ static struct omap_hwmod_class omap44xx_ocp2scp_hwmod_class = { · 550 unmodified lines
26812690 .sysc = &omap44xx_ocp2scp_sysc,
26822691 };
26832692
2693+/* ocp2scp dev_attr */
2694+static struct resource omap44xx_usb_phy_and_pll_addrs[] = {
2695+ {
2696+ .name = "usb_phy",
2697+ .start = 0x4a0ad080,
2698+ .end = 0x4a0ae000,
2699+ .flags = IORESOURCE_MEM,
2700+ },
2701+ {
2702+ /* XXX: Remove this once control module driver is in place */
2703+ .name = "ctrl_dev",
2704+ .start = 0x4a002300,
2705+ .end = 0x4a002303,
2706+ .flags = IORESOURCE_MEM,
2707+ },
2708+ { }
2709+};
2710+
2711+static struct omap_ocp2scp_dev ocp2scp_dev_attr[] = {
2712+ {
2713+ .drv_name = "omap-usb2",
2714+ .res = omap44xx_usb_phy_and_pll_addrs,
2715+ },
2716+ { }
2717+};
2718+
26842719 /* ocp2scp_usb_phy */
26852720 static struct omap_hwmod omap44xx_ocp2scp_usb_phy_hwmod = {
26862721 .name = "ocp2scp_usb_phy",
@@ -2694,6 +2729,7 @@ static struct omap_hwmod omap44xx_ocp2scp_usb_phy_hwmod = { · 7 unmodified lines
26942729 .modulemode = MODULEMODE_HWCTRL,
26952730 },
26962731 },
2732+ .dev_attr = ocp2scp_dev_attr,
26972733 };
26982734
26992735 /*
arch/arm/mach-omap2/twl-common.c+1−1
@@ -366,7 +366,7 @@ static struct regulator_init_data omap4_clk32kg_idata = { · 365 unmodified lines
366366 };
367367
368368 static struct regulator_consumer_supply omap4_vdd1_supply[] = {
369− REGULATOR_SUPPLY("vcc", "mpu.0"),
369+ REGULATOR_SUPPLY("vcc", "cpu0"),
370370 };
371371
372372 static struct regulator_consumer_supply omap4_vdd2_supply[] = {
arch/arm/mach-omap2/vc.c+1−1
@@ -264,7 +264,7 @@ static void __init omap_vc_i2c_init(struct voltagedomain *voltdm) · 263 unmodified lines
264264
265265 if (initialized) {
266266 if (voltdm->pmic->i2c_high_speed != i2c_high_speed)
267− pr_warn("%s: I2C config for vdd_%s does not match other channels (%u).",
267+ pr_warn("%s: I2C config for vdd_%s does not match other channels (%u).\n",
268268 __func__, voltdm->name, i2c_high_speed);
269269 return;
270270 }
arch/arm/mach-pxa/hx4700.c+7−1
@@ -28,6 +28,7 @@ · 27 unmodified lines
2828 #include <linux/mfd/asic3.h>
2929 #include <linux/mtd/physmap.h>
3030 #include <linux/pda_power.h>
31+#include <linux/pwm.h>
3132 #include <linux/pwm_backlight.h>
3233 #include <linux/regulator/driver.h>
3334 #include <linux/regulator/gpio-regulator.h>
@@ -556,7 +557,7 @@ static struct platform_device hx4700_lcd = { · 522 unmodified lines
556557 */
557558
558559 static struct platform_pwm_backlight_data backlight_data = {
559− .pwm_id = 1,
560+ .pwm_id = -1, /* Superseded by pwm_lookup */
560561 .max_brightness = 200,
561562 .dft_brightness = 100,
562563 .pwm_period_ns = 30923,
@@ -571,6 +572,10 @@ static struct platform_device backlight = { · 8 unmodified lines
571572 },
572573 };
573574
575+static struct pwm_lookup hx4700_pwm_lookup[] = {
576+ PWM_LOOKUP("pxa27x-pwm.1", 0, "pwm-backlight", NULL),
577+};
578+
574579 /*
575580 * USB "Transceiver"
576581 */
@@ -872,6 +877,7 @@ static void __init hx4700_init(void) · 295 unmodified lines
872877 pxa_set_stuart_info(NULL);
873878
874879 platform_add_devices(devices, ARRAY_SIZE(devices));
880+ pwm_add_table(hx4700_pwm_lookup, ARRAY_SIZE(hx4700_pwm_lookup));
875881
876882 pxa_set_ficp_info(&ficp_info);
877883 pxa27x_set_i2c_power_info(NULL);
arch/arm/mach-pxa/spitz_pm.c+2−6
@@ -86,10 +86,7 @@ static void spitz_discharge1(int on) · 85 unmodified lines
8686 gpio_set_value(SPITZ_GPIO_LED_GREEN, on);
8787 }
8888
89−static unsigned long gpio18_config[] = {
90− GPIO18_RDY,
91− GPIO18_GPIO,
92−};
89+static unsigned long gpio18_config = GPIO18_GPIO;
9390
9491 static void spitz_presuspend(void)
9592 {
@@ -112,7 +109,7 @@ static void spitz_presuspend(void) · 16 unmodified lines
112109 PGSR3 &= ~SPITZ_GPIO_G3_STROBE_BIT;
113110 PGSR2 |= GPIO_bit(SPITZ_GPIO_KEY_STROBE0);
114111
115− pxa2xx_mfp_config(&gpio18_config[0], 1);
112+ pxa2xx_mfp_config(&gpio18_config, 1);
116113 gpio_request_one(18, GPIOF_OUT_INIT_HIGH, "Unknown");
117114 gpio_free(18);
118115
@@ -131,7 +128,6 @@ static void spitz_presuspend(void) · 12 unmodified lines
131128
132129 static void spitz_postsuspend(void)
133130 {
134− pxa2xx_mfp_config(&gpio18_config[1], 1);
135131 }
136132
137133 static int spitz_should_wakeup(unsigned int resume_on_alarm)
arch/arm/plat-omap/include/plat/omap_hwmod.h+6−0
@@ -443,6 +443,11 @@ struct omap_hwmod_omap4_prcm { · 442 unmodified lines
443443 * in order to complete the reset. Optional clocks will be disabled
444444 * again after the reset.
445445 * HWMOD_16BIT_REG: Module has 16bit registers
446+ * HWMOD_EXT_OPT_MAIN_CLK: The only main functional clock source for
447+ * this IP block comes from an off-chip source and is not always
448+ * enabled. This prevents the hwmod code from being able to
449+ * enable and reset the IP block early. XXX Eventually it should
450+ * be possible to query the clock framework for this information.
446451 */
447452 #define HWMOD_SWSUP_SIDLE (1 << 0)
448453 #define HWMOD_SWSUP_MSTANDBY (1 << 1)
@@ -453,6 +458,7 @@ struct omap_hwmod_omap4_prcm { · 4 unmodified lines
453458 #define HWMOD_NO_IDLEST (1 << 6)
454459 #define HWMOD_CONTROL_OPT_CLKS_IN_RESET (1 << 7)
455460 #define HWMOD_16BIT_REG (1 << 8)
461+#define HWMOD_EXT_OPT_MAIN_CLK (1 << 9)
456462
457463 /*
458464 * omap_hwmod._int_flags definitions
arch/arm/tools/Makefile+1−1
@@ -5,6 +5,6 @@ · 4 unmodified lines
55 #
66
77 include/generated/mach-types.h: $(src)/gen-mach-types $(src)/mach-types
8− $(kecho) ' Generating $@'
8+ @$(kecho) ' Generating $@'
99 @mkdir -p $(dir $@)
1010 $(Q)$(AWK) -f $^ > $@ || { rm -f $@; /bin/false; }
arch/arm64/include/asm/io.h+1−1
@@ -222,7 +222,7 @@ extern void __iomem *__ioremap(phys_addr_t phys_addr, size_t size, pgprot_t prot · 221 unmodified lines
222222 extern void __iounmap(volatile void __iomem *addr);
223223
224224 #define PROT_DEFAULT (PTE_TYPE_PAGE | PTE_AF | PTE_DIRTY)
225−#define PROT_DEVICE_nGnRE (PROT_DEFAULT | PTE_XN | PTE_ATTRINDX(MT_DEVICE_nGnRE))
225+#define PROT_DEVICE_nGnRE (PROT_DEFAULT | PTE_PXN | PTE_UXN | PTE_ATTRINDX(MT_DEVICE_nGnRE))
226226 #define PROT_NORMAL_NC (PROT_DEFAULT | PTE_ATTRINDX(MT_NORMAL_NC))
227227
228228 #define ioremap(addr, size) __ioremap((addr), (size), __pgprot(PROT_DEVICE_nGnRE))
arch/arm64/include/asm/pgtable-hwdef.h+4−2
@@ -38,7 +38,8 @@ · 37 unmodified lines
3838 #define PMD_SECT_S (_AT(pmdval_t, 3) << 8)
3939 #define PMD_SECT_AF (_AT(pmdval_t, 1) << 10)
4040 #define PMD_SECT_NG (_AT(pmdval_t, 1) << 11)
41−#define PMD_SECT_XN (_AT(pmdval_t, 1) << 54)
41+#define PMD_SECT_PXN (_AT(pmdval_t, 1) << 53)
42+#define PMD_SECT_UXN (_AT(pmdval_t, 1) << 54)
4243
4344 /*
4445 * AttrIndx[2:0] encoding (mapping attributes defined in the MAIR* registers).
@@ -57,7 +58,8 @@ · 12 unmodified lines
5758 #define PTE_SHARED (_AT(pteval_t, 3) << 8) /* SH[1:0], inner shareable */
5859 #define PTE_AF (_AT(pteval_t, 1) << 10) /* Access Flag */
5960 #define PTE_NG (_AT(pteval_t, 1) << 11) /* nG */
60−#define PTE_XN (_AT(pteval_t, 1) << 54) /* XN */
61+#define PTE_PXN (_AT(pteval_t, 1) << 53) /* Privileged XN */
62+#define PTE_UXN (_AT(pteval_t, 1) << 54) /* User XN */
6163
6264 /*
6365 * AttrIndx[2:0] encoding (mapping attributes defined in the MAIR* registers).
arch/arm64/include/asm/pgtable.h+20−20
@@ -62,23 +62,23 @@ extern pgprot_t pgprot_default; · 61 unmodified lines
6262
6363 #define _MOD_PROT(p, b) __pgprot(pgprot_val(p) | (b))
6464
65−#define PAGE_NONE _MOD_PROT(pgprot_default, PTE_NG | PTE_XN | PTE_RDONLY)
66−#define PAGE_SHARED _MOD_PROT(pgprot_default, PTE_USER | PTE_NG | PTE_XN)
67−#define PAGE_SHARED_EXEC _MOD_PROT(pgprot_default, PTE_USER | PTE_NG)
68−#define PAGE_COPY _MOD_PROT(pgprot_default, PTE_USER | PTE_NG | PTE_XN | PTE_RDONLY)
69−#define PAGE_COPY_EXEC _MOD_PROT(pgprot_default, PTE_USER | PTE_NG | PTE_RDONLY)
70−#define PAGE_READONLY _MOD_PROT(pgprot_default, PTE_USER | PTE_NG | PTE_XN | PTE_RDONLY)
71−#define PAGE_READONLY_EXEC _MOD_PROT(pgprot_default, PTE_USER | PTE_NG | PTE_RDONLY)
72−#define PAGE_KERNEL _MOD_PROT(pgprot_default, PTE_XN | PTE_DIRTY)
73−#define PAGE_KERNEL_EXEC _MOD_PROT(pgprot_default, PTE_DIRTY)
74−
75−#define __PAGE_NONE __pgprot(_PAGE_DEFAULT | PTE_NG | PTE_XN | PTE_RDONLY)
76−#define __PAGE_SHARED __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_XN)
77−#define __PAGE_SHARED_EXEC __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG)
78−#define __PAGE_COPY __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_XN | PTE_RDONLY)
79−#define __PAGE_COPY_EXEC __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_RDONLY)
80−#define __PAGE_READONLY __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_XN | PTE_RDONLY)
81−#define __PAGE_READONLY_EXEC __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_RDONLY)
65+#define PAGE_NONE _MOD_PROT(pgprot_default, PTE_NG | PTE_PXN | PTE_UXN | PTE_RDONLY)
66+#define PAGE_SHARED _MOD_PROT(pgprot_default, PTE_USER | PTE_NG | PTE_PXN | PTE_UXN)
67+#define PAGE_SHARED_EXEC _MOD_PROT(pgprot_default, PTE_USER | PTE_NG | PTE_PXN)
68+#define PAGE_COPY _MOD_PROT(pgprot_default, PTE_USER | PTE_NG | PTE_PXN | PTE_UXN | PTE_RDONLY)
69+#define PAGE_COPY_EXEC _MOD_PROT(pgprot_default, PTE_USER | PTE_NG | PTE_PXN | PTE_RDONLY)
70+#define PAGE_READONLY _MOD_PROT(pgprot_default, PTE_USER | PTE_NG | PTE_PXN | PTE_UXN | PTE_RDONLY)
71+#define PAGE_READONLY_EXEC _MOD_PROT(pgprot_default, PTE_USER | PTE_NG | PTE_PXN | PTE_RDONLY)
72+#define PAGE_KERNEL _MOD_PROT(pgprot_default, PTE_PXN | PTE_UXN | PTE_DIRTY)
73+#define PAGE_KERNEL_EXEC _MOD_PROT(pgprot_default, PTE_UXN | PTE_DIRTY)
74+
75+#define __PAGE_NONE __pgprot(_PAGE_DEFAULT | PTE_NG | PTE_PXN | PTE_UXN | PTE_RDONLY)
76+#define __PAGE_SHARED __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_PXN | PTE_UXN)
77+#define __PAGE_SHARED_EXEC __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_PXN)
78+#define __PAGE_COPY __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_PXN | PTE_UXN | PTE_RDONLY)
79+#define __PAGE_COPY_EXEC __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_PXN | PTE_RDONLY)
80+#define __PAGE_READONLY __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_PXN | PTE_UXN | PTE_RDONLY)
81+#define __PAGE_READONLY_EXEC __pgprot(_PAGE_DEFAULT | PTE_USER | PTE_NG | PTE_PXN | PTE_RDONLY)
8282
8383 #endif /* __ASSEMBLY__ */
8484
@@ -130,10 +130,10 @@ extern struct page *empty_zero_page; · 45 unmodified lines
130130 #define pte_young(pte) (pte_val(pte) & PTE_AF)
131131 #define pte_special(pte) (pte_val(pte) & PTE_SPECIAL)
132132 #define pte_write(pte) (!(pte_val(pte) & PTE_RDONLY))
133−#define pte_exec(pte) (!(pte_val(pte) & PTE_XN))
133+#define pte_exec(pte) (!(pte_val(pte) & PTE_UXN))
134134
135135 #define pte_present_exec_user(pte) \
136− ((pte_val(pte) & (PTE_VALID | PTE_USER | PTE_XN)) == \
136+ ((pte_val(pte) & (PTE_VALID | PTE_USER | PTE_UXN)) == \
137137 (PTE_VALID | PTE_USER))
138138
139139 #define PTE_BIT_FUNC(fn,op) \
@@ -262,7 +262,7 @@ static inline pmd_t *pmd_offset(pud_t *pud, unsigned long addr) · 122 unmodified lines
262262
263263 static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
264264 {
265− const pteval_t mask = PTE_USER | PTE_XN | PTE_RDONLY;
265+ const pteval_t mask = PTE_USER | PTE_PXN | PTE_UXN | PTE_RDONLY;
266266 pte_val(pte) = (pte_val(pte) & ~mask) | (pgprot_val(newprot) & mask);
267267 return pte;
268268 }
arch/ia64/mm/init.c+0−1
@@ -637,7 +637,6 @@ mem_init (void) · 636 unmodified lines
637637
638638 high_memory = __va(max_low_pfn * PAGE_SIZE);
639639
640− reset_zone_present_pages();
641640 for_each_online_pgdat(pgdat)
642641 if (pgdat->bdata->node_bootmem_map)
643642 totalram_pages += free_all_bootmem_node(pgdat);
arch/mips/cavium-octeon/executive/cvmx-l2c.c+1−0
@@ -30,6 +30,7 @@ · 29 unmodified lines
3030 * measurement, and debugging facilities.
3131 */
3232
33+#include <linux/irqflags.h>
3334 #include <asm/octeon/cvmx.h>
3435 #include <asm/octeon/cvmx-l2c.h>
3536 #include <asm/octeon/cvmx-spinlock.h>
arch/mips/fw/arc/misc.c+1−0
@@ -11,6 +11,7 @@ · 10 unmodified lines
1111 */
1212 #include <linux/init.h>
1313 #include <linux/kernel.h>
14+#include <linux/irqflags.h>
1415
1516 #include <asm/bcache.h>
1617
arch/mips/include/asm/bitops.h+39−89
@@ -14,7 +14,6 @@ · 13 unmodified lines
1414 #endif
1515
1616 #include <linux/compiler.h>
17−#include <linux/irqflags.h>
1817 #include <linux/types.h>
1918 #include <asm/barrier.h>
2019 #include <asm/byteorder.h> /* sigh ... */
@@ -44,6 +43,24 @@ · 23 unmodified lines
4443 #define smp_mb__before_clear_bit() smp_mb__before_llsc()
4544 #define smp_mb__after_clear_bit() smp_llsc_mb()
4645
46+
47+/*
48+ * These are the "slower" versions of the functions and are in bitops.c.
49+ * These functions call raw_local_irq_{save,restore}().
50+ */
51+void __mips_set_bit(unsigned long nr, volatile unsigned long *addr);
52+void __mips_clear_bit(unsigned long nr, volatile unsigned long *addr);
53+void __mips_change_bit(unsigned long nr, volatile unsigned long *addr);
54+int __mips_test_and_set_bit(unsigned long nr,
55+ volatile unsigned long *addr);
56+int __mips_test_and_set_bit_lock(unsigned long nr,
57+ volatile unsigned long *addr);
58+int __mips_test_and_clear_bit(unsigned long nr,
59+ volatile unsigned long *addr);
60+int __mips_test_and_change_bit(unsigned long nr,
61+ volatile unsigned long *addr);
62+
63+
4764 /*
4865 * set_bit - Atomically set a bit in memory
4966 * @nr: the bit to set
@@ -57,7 +74,7 @@ · 7 unmodified lines
5774 static inline void set_bit(unsigned long nr, volatile unsigned long *addr)
5875 {
5976 unsigned long *m = ((unsigned long *) addr) + (nr >> SZLONG_LOG);
60− unsigned short bit = nr & SZLONG_MASK;
77+ int bit = nr & SZLONG_MASK;
6178 unsigned long temp;
6279
6380 if (kernel_uses_llsc && R10000_LLSC_WAR) {
@@ -92,17 +109,8 @@ static inline void set_bit(unsigned long nr, volatile unsigned long *addr) · 28 unmodified lines
92109 : "=&r" (temp), "+m" (*m)
93110 : "ir" (1UL << bit));
94111 } while (unlikely(!temp));
95− } else {
96− volatile unsigned long *a = addr;
97− unsigned long mask;
98− unsigned long flags;
99−
100− a += nr >> SZLONG_LOG;
101− mask = 1UL << bit;
102− raw_local_irq_save(flags);
103− *a |= mask;
104− raw_local_irq_restore(flags);
105− }
112+ } else
113+ __mips_set_bit(nr, addr);
106114 }
107115
108116 /*
@@ -118,7 +126,7 @@ static inline void set_bit(unsigned long nr, volatile unsigned long *addr) · 9 unmodified lines
118126 static inline void clear_bit(unsigned long nr, volatile unsigned long *addr)
119127 {
120128 unsigned long *m = ((unsigned long *) addr) + (nr >> SZLONG_LOG);
121− unsigned short bit = nr & SZLONG_MASK;
129+ int bit = nr & SZLONG_MASK;
122130 unsigned long temp;
123131
124132 if (kernel_uses_llsc && R10000_LLSC_WAR) {
@@ -153,17 +161,8 @@ static inline void clear_bit(unsigned long nr, volatile unsigned long *addr) · 28 unmodified lines
153161 : "=&r" (temp), "+m" (*m)
154162 : "ir" (~(1UL << bit)));
155163 } while (unlikely(!temp));
156− } else {
157− volatile unsigned long *a = addr;
158− unsigned long mask;
159− unsigned long flags;
160−
161− a += nr >> SZLONG_LOG;
162− mask = 1UL << bit;
163− raw_local_irq_save(flags);
164− *a &= ~mask;
165− raw_local_irq_restore(flags);
166− }
164+ } else
165+ __mips_clear_bit(nr, addr);
167166 }
168167
169168 /*
@@ -191,7 +190,7 @@ static inline void clear_bit_unlock(unsigned long nr, volatile unsigned long *ad · 21 unmodified lines
191190 */
192191 static inline void change_bit(unsigned long nr, volatile unsigned long *addr)
193192 {
194− unsigned short bit = nr & SZLONG_MASK;
193+ int bit = nr & SZLONG_MASK;
195194
196195 if (kernel_uses_llsc && R10000_LLSC_WAR) {
197196 unsigned long *m = ((unsigned long *) addr) + (nr >> SZLONG_LOG);
@@ -220,17 +219,8 @@ static inline void change_bit(unsigned long nr, volatile unsigned long *addr) · 22 unmodified lines
220219 : "=&r" (temp), "+m" (*m)
221220 : "ir" (1UL << bit));
222221 } while (unlikely(!temp));
223− } else {
224− volatile unsigned long *a = addr;
225− unsigned long mask;
226− unsigned long flags;
227−
228− a += nr >> SZLONG_LOG;
229− mask = 1UL << bit;
230− raw_local_irq_save(flags);
231− *a ^= mask;
232− raw_local_irq_restore(flags);
233− }
222+ } else
223+ __mips_change_bit(nr, addr);
234224 }
235225
236226 /*
@@ -244,7 +234,7 @@ static inline void change_bit(unsigned long nr, volatile unsigned long *addr) · 7 unmodified lines
244234 static inline int test_and_set_bit(unsigned long nr,
245235 volatile unsigned long *addr)
246236 {
247− unsigned short bit = nr & SZLONG_MASK;
237+ int bit = nr & SZLONG_MASK;
248238 unsigned long res;
249239
250240 smp_mb__before_llsc();
@@ -281,18 +271,8 @@ static inline int test_and_set_bit(unsigned long nr, · 30 unmodified lines
281271 } while (unlikely(!res));
282272
283273 res = temp & (1UL << bit);
284− } else {
285− volatile unsigned long *a = addr;
286− unsigned long mask;
287− unsigned long flags;
288−
289− a += nr >> SZLONG_LOG;
290− mask = 1UL << bit;
291− raw_local_irq_save(flags);
292− res = (mask & *a);
293− *a |= mask;
294− raw_local_irq_restore(flags);
295− }
274+ } else
275+ res = __mips_test_and_set_bit(nr, addr);
296276
297277 smp_llsc_mb();
298278
@@ -310,7 +290,7 @@ static inline int test_and_set_bit(unsigned long nr, · 11 unmodified lines
310290 static inline int test_and_set_bit_lock(unsigned long nr,
311291 volatile unsigned long *addr)
312292 {
313− unsigned short bit = nr & SZLONG_MASK;
293+ int bit = nr & SZLONG_MASK;
314294 unsigned long res;
315295
316296 if (kernel_uses_llsc && R10000_LLSC_WAR) {
@@ -345,18 +325,8 @@ static inline int test_and_set_bit_lock(unsigned long nr, · 28 unmodified lines
345325 } while (unlikely(!res));
346326
347327 res = temp & (1UL << bit);
348− } else {
349− volatile unsigned long *a = addr;
350− unsigned long mask;
351− unsigned long flags;
352−
353− a += nr >> SZLONG_LOG;
354− mask = 1UL << bit;
355− raw_local_irq_save(flags);
356− res = (mask & *a);
357− *a |= mask;
358− raw_local_irq_restore(flags);
359− }
328+ } else
329+ res = __mips_test_and_set_bit_lock(nr, addr);
360330
361331 smp_llsc_mb();
362332
@@ -373,7 +343,7 @@ static inline int test_and_set_bit_lock(unsigned long nr, · 10 unmodified lines
373343 static inline int test_and_clear_bit(unsigned long nr,
374344 volatile unsigned long *addr)
375345 {
376− unsigned short bit = nr & SZLONG_MASK;
346+ int bit = nr & SZLONG_MASK;
377347 unsigned long res;
378348
379349 smp_mb__before_llsc();
@@ -428,18 +398,8 @@ static inline int test_and_clear_bit(unsigned long nr, · 48 unmodified lines
428398 } while (unlikely(!res));
429399
430400 res = temp & (1UL << bit);
431− } else {
432− volatile unsigned long *a = addr;
433− unsigned long mask;
434− unsigned long flags;
435−
436− a += nr >> SZLONG_LOG;
437− mask = 1UL << bit;
438− raw_local_irq_save(flags);
439− res = (mask & *a);
440− *a &= ~mask;
441− raw_local_irq_restore(flags);
442− }
401+ } else
402+ res = __mips_test_and_clear_bit(nr, addr);
443403
444404 smp_llsc_mb();
445405
@@ -457,7 +417,7 @@ static inline int test_and_clear_bit(unsigned long nr, · 11 unmodified lines
457417 static inline int test_and_change_bit(unsigned long nr,
458418 volatile unsigned long *addr)
459419 {
460− unsigned short bit = nr & SZLONG_MASK;
420+ int bit = nr & SZLONG_MASK;
461421 unsigned long res;
462422
463423 smp_mb__before_llsc();
@@ -494,18 +454,8 @@ static inline int test_and_change_bit(unsigned long nr, · 30 unmodified lines
494454 } while (unlikely(!res));
495455
496456 res = temp & (1UL << bit);
497− } else {
498− volatile unsigned long *a = addr;
499− unsigned long mask;
500− unsigned long flags;
501−
502− a += nr >> SZLONG_LOG;
503− mask = 1UL << bit;
504− raw_local_irq_save(flags);
505− res = (mask & *a);
506− *a ^= mask;
507− raw_local_irq_restore(flags);
508− }
457+ } else
458+ res = __mips_test_and_change_bit(nr, addr);
509459
510460 smp_llsc_mb();
511461
arch/mips/include/asm/compat.h+1−1
@@ -290,7 +290,7 @@ struct compat_shmid64_ds { · 289 unmodified lines
290290
291291 static inline int is_compat_task(void)
292292 {
293− return test_thread_flag(TIF_32BIT);
293+ return test_thread_flag(TIF_32BIT_ADDR);
294294 }
295295
296296 #endif /* _ASM_COMPAT_H */
arch/mips/include/asm/io.h+1−0
@@ -15,6 +15,7 @@ · 14 unmodified lines
1515 #include <linux/compiler.h>
1616 #include <linux/kernel.h>
1717 #include <linux/types.h>
18+#include <linux/irqflags.h>
1819
1920 #include <asm/addrspace.h>
2021 #include <asm/bug.h>
arch/mips/include/asm/irqflags.h+75−132
@@ -16,83 +16,13 @@ · 15 unmodified lines
1616 #include <linux/compiler.h>
1717 #include <asm/hazards.h>
1818
19−__asm__(
20− " .macro arch_local_irq_enable \n"
21− " .set push \n"
22− " .set reorder \n"
23− " .set noat \n"
24−#ifdef CONFIG_MIPS_MT_SMTC
25− " mfc0 $1, $2, 1 # SMTC - clear TCStatus.IXMT \n"
26− " ori $1, 0x400 \n"
27− " xori $1, 0x400 \n"
28− " mtc0 $1, $2, 1 \n"
29−#elif defined(CONFIG_CPU_MIPSR2)
30− " ei \n"
31−#else
32− " mfc0 $1,$12 \n"
33− " ori $1,0x1f \n"
34− " xori $1,0x1e \n"
35− " mtc0 $1,$12 \n"
36−#endif
37− " irq_enable_hazard \n"
38− " .set pop \n"
39− " .endm");
19+#if defined(CONFIG_CPU_MIPSR2) && !defined(CONFIG_MIPS_MT_SMTC)
4020
41−extern void smtc_ipi_replay(void);
42−
43−static inline void arch_local_irq_enable(void)
44−{
45−#ifdef CONFIG_MIPS_MT_SMTC
46− /*
47− * SMTC kernel needs to do a software replay of queued
48− * IPIs, at the cost of call overhead on each local_irq_enable()
49− */
50− smtc_ipi_replay();
51−#endif
52− __asm__ __volatile__(
53− "arch_local_irq_enable"
54− : /* no outputs */
55− : /* no inputs */
56− : "memory");
57−}
58−
59−
60−/*
61− * For cli() we have to insert nops to make sure that the new value
62− * has actually arrived in the status register before the end of this
63− * macro.
64− * R4000/R4400 need three nops, the R4600 two nops and the R10000 needs
65− * no nops at all.
66− */
67−/*
68− * For TX49, operating only IE bit is not enough.
69− *
70− * If mfc0 $12 follows store and the mfc0 is last instruction of a
71− * page and fetching the next instruction causes TLB miss, the result
72− * of the mfc0 might wrongly contain EXL bit.
73− *
74− * ERT-TX49H2-027, ERT-TX49H3-012, ERT-TX49HL3-006, ERT-TX49H4-008
75− *
76− * Workaround: mask EXL bit of the result or place a nop before mfc0.
77− */
7821 __asm__(
7922 " .macro arch_local_irq_disable\n"
8023 " .set push \n"
8124 " .set noat \n"
82−#ifdef CONFIG_MIPS_MT_SMTC
83− " mfc0 $1, $2, 1 \n"
84− " ori $1, 0x400 \n"
85− " .set noreorder \n"
86− " mtc0 $1, $2, 1 \n"
87−#elif defined(CONFIG_CPU_MIPSR2)
8825 " di \n"
89−#else
90− " mfc0 $1,$12 \n"
91− " ori $1,0x1f \n"
92− " xori $1,0x1f \n"
93− " .set noreorder \n"
94− " mtc0 $1,$12 \n"
95−#endif
9626 " irq_disable_hazard \n"
9727 " .set pop \n"
9828 " .endm \n");
@@ -106,46 +36,14 @@ static inline void arch_local_irq_disable(void) · 7 unmodified lines
10636 : "memory");
10737 }
10838
109−__asm__(
110− " .macro arch_local_save_flags flags \n"
111− " .set push \n"
112− " .set reorder \n"
113−#ifdef CONFIG_MIPS_MT_SMTC
114− " mfc0 \\flags, $2, 1 \n"
115−#else
116− " mfc0 \\flags, $12 \n"
117−#endif
118− " .set pop \n"
119− " .endm \n");
120−
121−static inline unsigned long arch_local_save_flags(void)
122−{
123− unsigned long flags;
124− asm volatile("arch_local_save_flags %0" : "=r" (flags));
125− return flags;
126−}
12739
12840 __asm__(
12941 " .macro arch_local_irq_save result \n"
13042 " .set push \n"
13143 " .set reorder \n"
13244 " .set noat \n"
133−#ifdef CONFIG_MIPS_MT_SMTC
134− " mfc0 \\result, $2, 1 \n"
135− " ori $1, \\result, 0x400 \n"
136− " .set noreorder \n"
137− " mtc0 $1, $2, 1 \n"
138− " andi \\result, \\result, 0x400 \n"
139−#elif defined(CONFIG_CPU_MIPSR2)
14045 " di \\result \n"
14146 " andi \\result, 1 \n"
142−#else
143− " mfc0 \\result, $12 \n"
144− " ori $1, \\result, 0x1f \n"
145− " xori $1, 0x1f \n"
146− " .set noreorder \n"
147− " mtc0 $1, $12 \n"
148−#endif
14947 " irq_disable_hazard \n"
15048 " .set pop \n"
15149 " .endm \n");
@@ -160,61 +58,37 @@ static inline unsigned long arch_local_irq_save(void) · 8 unmodified lines
16058 return flags;
16159 }
16260
61+
16362 __asm__(
16463 " .macro arch_local_irq_restore flags \n"
16564 " .set push \n"
16665 " .set noreorder \n"
16766 " .set noat \n"
168−#ifdef CONFIG_MIPS_MT_SMTC
169− "mfc0 $1, $2, 1 \n"
170− "andi \\flags, 0x400 \n"
171− "ori $1, 0x400 \n"
172− "xori $1, 0x400 \n"
173− "or \\flags, $1 \n"
174− "mtc0 \\flags, $2, 1 \n"
175−#elif defined(CONFIG_CPU_MIPSR2) && defined(CONFIG_IRQ_CPU)
67+#if defined(CONFIG_IRQ_CPU)
17668 /*
17769 * Slow, but doesn't suffer from a relatively unlikely race
17870 * condition we're having since days 1.
17971 */
18072 " beqz \\flags, 1f \n"
181− " di \n"
73+ " di \n"
18274 " ei \n"
18375 "1: \n"
184−#elif defined(CONFIG_CPU_MIPSR2)
76+#else
18577 /*
18678 * Fast, dangerous. Life is fun, life is good.
18779 */
18880 " mfc0 $1, $12 \n"
18981 " ins $1, \\flags, 0, 1 \n"
19082 " mtc0 $1, $12 \n"
191−#else
192− " mfc0 $1, $12 \n"
193− " andi \\flags, 1 \n"
194− " ori $1, 0x1f \n"
195− " xori $1, 0x1f \n"
196− " or \\flags, $1 \n"
197− " mtc0 \\flags, $12 \n"
19883 #endif
19984 " irq_disable_hazard \n"
20085 " .set pop \n"
20186 " .endm \n");
20287
203−
20488 static inline void arch_local_irq_restore(unsigned long flags)
20589 {
20690 unsigned long __tmp1;
20791
208−#ifdef CONFIG_MIPS_MT_SMTC
209− /*
210− * SMTC kernel needs to do a software replay of queued
211− * IPIs, at the cost of branch and call overhead on each
212− * local_irq_restore()
213− */
214− if (unlikely(!(flags & 0x0400)))
215− smtc_ipi_replay();
216−#endif
217−
21892 __asm__ __volatile__(
21993 "arch_local_irq_restore\t%0"
22094 : "=r" (__tmp1)
@@ -232,6 +106,75 @@ static inline void __arch_local_irq_restore(unsigned long flags) · 11 unmodified lines
232106 : "0" (flags)
233107 : "memory");
234108 }
109+#else
110+/* Functions that require preempt_{dis,en}able() are in mips-atomic.c */
111+void arch_local_irq_disable(void);
112+unsigned long arch_local_irq_save(void);
113+void arch_local_irq_restore(unsigned long flags);
114+void __arch_local_irq_restore(unsigned long flags);
115+#endif /* if defined(CONFIG_CPU_MIPSR2) && !defined(CONFIG_MIPS_MT_SMTC) */
116+
117+
118+__asm__(
119+ " .macro arch_local_irq_enable \n"
120+ " .set push \n"
121+ " .set reorder \n"
122+ " .set noat \n"
123+#ifdef CONFIG_MIPS_MT_SMTC
124+ " mfc0 $1, $2, 1 # SMTC - clear TCStatus.IXMT \n"
125+ " ori $1, 0x400 \n"
126+ " xori $1, 0x400 \n"
127+ " mtc0 $1, $2, 1 \n"
128+#elif defined(CONFIG_CPU_MIPSR2)
129+ " ei \n"
130+#else
131+ " mfc0 $1,$12 \n"
132+ " ori $1,0x1f \n"
133+ " xori $1,0x1e \n"
134+ " mtc0 $1,$12 \n"
135+#endif
136+ " irq_enable_hazard \n"
137+ " .set pop \n"
138+ " .endm");
139+
140+extern void smtc_ipi_replay(void);
141+
142+static inline void arch_local_irq_enable(void)
143+{
144+#ifdef CONFIG_MIPS_MT_SMTC
145+ /*
146+ * SMTC kernel needs to do a software replay of queued
147+ * IPIs, at the cost of call overhead on each local_irq_enable()
148+ */
149+ smtc_ipi_replay();
150+#endif
151+ __asm__ __volatile__(
152+ "arch_local_irq_enable"
153+ : /* no outputs */
154+ : /* no inputs */
155+ : "memory");
156+}
157+
158+
159+__asm__(
160+ " .macro arch_local_save_flags flags \n"
161+ " .set push \n"
162+ " .set reorder \n"
163+#ifdef CONFIG_MIPS_MT_SMTC
164+ " mfc0 \\flags, $2, 1 \n"
165+#else
166+ " mfc0 \\flags, $12 \n"
167+#endif
168+ " .set pop \n"
169+ " .endm \n");
170+
171+static inline unsigned long arch_local_save_flags(void)
172+{
173+ unsigned long flags;
174+ asm volatile("arch_local_save_flags %0" : "=r" (flags));
175+ return flags;
176+}
177+
235178
236179 static inline int arch_irqs_disabled_flags(unsigned long flags)
237180 {
@@ -245,7 +188,7 @@ static inline int arch_irqs_disabled_flags(unsigned long flags) · 7 unmodified lines
245188 #endif
246189 }
247190
248−#endif
191+#endif /* #ifndef __ASSEMBLY__ */
249192
250193 /*
251194 * Do the CPU's IRQ-state tracing from assembly code.
arch/mips/include/asm/thread_info.h+0−6
@@ -112,12 +112,6 @@ register struct thread_info *__current_thread_info __asm__("$28"); · 111 unmodified lines
112112 #define TIF_LOAD_WATCH 25 /* If set, load watch registers */
113113 #define TIF_SYSCALL_TRACE 31 /* syscall trace active */
114114
115−#ifdef CONFIG_MIPS32_O32
116−#define TIF_32BIT TIF_32BIT_REGS
117−#elif defined(CONFIG_MIPS32_N32)
118−#define TIF_32BIT _TIF_32BIT_ADDR
119−#endif /* CONFIG_MIPS32_O32 */
120−
121115 #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
122116 #define _TIF_SIGPENDING (1<<TIF_SIGPENDING)
123117 #define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
arch/mips/lib/Makefile+3−2
@@ -2,8 +2,9 @@ · 1 unmodified line
22 # Makefile for MIPS-specific library files..
33 #
44
5−lib-y += csum_partial.o delay.o memcpy.o memset.o \
6− strlen_user.o strncpy_user.o strnlen_user.o uncached.o
5+lib-y += bitops.o csum_partial.o delay.o memcpy.o memset.o \
6+ mips-atomic.o strlen_user.o strncpy_user.o \
7+ strnlen_user.o uncached.o
78
89 obj-y += iomap.o
910 obj-$(CONFIG_PCI) += iomap-pci.o
arch/mips/lib/bitops.c+179−0
@@ -0,0 +1,179 @@
1+/*
2+ * This file is subject to the terms and conditions of the GNU General Public
3+ * License. See the file "COPYING" in the main directory of this archive
4+ * for more details.
5+ *
6+ * Copyright (c) 1994-1997, 99, 2000, 06, 07 Ralf Baechle (ralf@linux-mips.org)
7+ * Copyright (c) 1999, 2000 Silicon Graphics, Inc.
8+ */
9+#include <linux/bitops.h>
10+#include <linux/irqflags.h>
11+#include <linux/export.h>
12+
13+
14+/**
15+ * __mips_set_bit - Atomically set a bit in memory. This is called by
16+ * set_bit() if it cannot find a faster solution.
17+ * @nr: the bit to set
18+ * @addr: the address to start counting from
19+ */
20+void __mips_set_bit(unsigned long nr, volatile unsigned long *addr)
21+{
22+ volatile unsigned long *a = addr;
23+ unsigned bit = nr & SZLONG_MASK;
24+ unsigned long mask;
25+ unsigned long flags;
26+
27+ a += nr >> SZLONG_LOG;
28+ mask = 1UL << bit;
29+ raw_local_irq_save(flags);
30+ *a |= mask;
31+ raw_local_irq_restore(flags);
32+}
33+EXPORT_SYMBOL(__mips_set_bit);
34+
35+
36+/**
37+ * __mips_clear_bit - Clears a bit in memory. This is called by clear_bit() if
38+ * it cannot find a faster solution.
39+ * @nr: Bit to clear
40+ * @addr: Address to start counting from
41+ */
42+void __mips_clear_bit(unsigned long nr, volatile unsigned long *addr)
43+{
44+ volatile unsigned long *a = addr;
45+ unsigned bit = nr & SZLONG_MASK;
46+ unsigned long mask;
47+ unsigned long flags;
48+
49+ a += nr >> SZLONG_LOG;
50+ mask = 1UL << bit;
51+ raw_local_irq_save(flags);
52+ *a &= ~mask;
53+ raw_local_irq_restore(flags);
54+}
55+EXPORT_SYMBOL(__mips_clear_bit);
56+
57+
58+/**
59+ * __mips_change_bit - Toggle a bit in memory. This is called by change_bit()
60+ * if it cannot find a faster solution.
61+ * @nr: Bit to change
62+ * @addr: Address to start counting from
63+ */
64+void __mips_change_bit(unsigned long nr, volatile unsigned long *addr)
65+{
66+ volatile unsigned long *a = addr;
67+ unsigned bit = nr & SZLONG_MASK;
68+ unsigned long mask;
69+ unsigned long flags;
70+
71+ a += nr >> SZLONG_LOG;
72+ mask = 1UL << bit;
73+ raw_local_irq_save(flags);
74+ *a ^= mask;
75+ raw_local_irq_restore(flags);
76+}
77+EXPORT_SYMBOL(__mips_change_bit);
78+
79+
80+/**
81+ * __mips_test_and_set_bit - Set a bit and return its old value. This is
82+ * called by test_and_set_bit() if it cannot find a faster solution.
83+ * @nr: Bit to set
84+ * @addr: Address to count from
85+ */
86+int __mips_test_and_set_bit(unsigned long nr,
87+ volatile unsigned long *addr)
88+{
89+ volatile unsigned long *a = addr;
90+ unsigned bit = nr & SZLONG_MASK;
91+ unsigned long mask;
92+ unsigned long flags;
93+ unsigned long res;
94+
95+ a += nr >> SZLONG_LOG;
96+ mask = 1UL << bit;
97+ raw_local_irq_save(flags);
98+ res = (mask & *a);
99+ *a |= mask;
100+ raw_local_irq_restore(flags);
101+ return res;
102+}
103+EXPORT_SYMBOL(__mips_test_and_set_bit);
104+
105+
106+/**
107+ * __mips_test_and_set_bit_lock - Set a bit and return its old value. This is
108+ * called by test_and_set_bit_lock() if it cannot find a faster solution.
109+ * @nr: Bit to set
110+ * @addr: Address to count from
111+ */
112+int __mips_test_and_set_bit_lock(unsigned long nr,
113+ volatile unsigned long *addr)
114+{
115+ volatile unsigned long *a = addr;
116+ unsigned bit = nr & SZLONG_MASK;
117+ unsigned long mask;
118+ unsigned long flags;
119+ unsigned long res;
120+
121+ a += nr >> SZLONG_LOG;
122+ mask = 1UL << bit;
123+ raw_local_irq_save(flags);
124+ res = (mask & *a);
125+ *a |= mask;
126+ raw_local_irq_restore(flags);
127+ return res;
128+}
129+EXPORT_SYMBOL(__mips_test_and_set_bit_lock);
130+
131+
132+/**
133+ * __mips_test_and_clear_bit - Clear a bit and return its old value. This is
134+ * called by test_and_clear_bit() if it cannot find a faster solution.
135+ * @nr: Bit to clear
136+ * @addr: Address to count from
137+ */
138+int __mips_test_and_clear_bit(unsigned long nr, volatile unsigned long *addr)
139+{
140+ volatile unsigned long *a = addr;
141+ unsigned bit = nr & SZLONG_MASK;
142+ unsigned long mask;
143+ unsigned long flags;
144+ unsigned long res;
145+
146+ a += nr >> SZLONG_LOG;
147+ mask = 1UL << bit;
148+ raw_local_irq_save(flags);
149+ res = (mask & *a);
150+ *a &= ~mask;
151+ raw_local_irq_restore(flags);
152+ return res;
153+}
154+EXPORT_SYMBOL(__mips_test_and_clear_bit);
155+
156+
157+/**
158+ * __mips_test_and_change_bit - Change a bit and return its old value. This is
159+ * called by test_and_change_bit() if it cannot find a faster solution.
160+ * @nr: Bit to change
161+ * @addr: Address to count from
162+ */
163+int __mips_test_and_change_bit(unsigned long nr, volatile unsigned long *addr)
164+{
165+ volatile unsigned long *a = addr;
166+ unsigned bit = nr & SZLONG_MASK;
167+ unsigned long mask;
168+ unsigned long flags;
169+ unsigned long res;
170+
171+ a += nr >> SZLONG_LOG;
172+ mask = 1UL << bit;
173+ raw_local_irq_save(flags);
174+ res = (mask & *a);
175+ *a ^= mask;
176+ raw_local_irq_restore(flags);
177+ return res;
178+}
179+EXPORT_SYMBOL(__mips_test_and_change_bit);
arch/mips/lib/mips-atomic.c+176−0
@@ -0,0 +1,176 @@
1+/*
2+ * This file is subject to the terms and conditions of the GNU General Public
3+ * License. See the file "COPYING" in the main directory of this archive
4+ * for more details.
5+ *
6+ * Copyright (C) 1994, 95, 96, 97, 98, 99, 2003 by Ralf Baechle
7+ * Copyright (C) 1996 by Paul M. Antoine
8+ * Copyright (C) 1999 Silicon Graphics
9+ * Copyright (C) 2000 MIPS Technologies, Inc.
10+ */
11+#include <asm/irqflags.h>
12+#include <asm/hazards.h>
13+#include <linux/compiler.h>
14+#include <linux/preempt.h>
15+#include <linux/export.h>
16+
17+#if !defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_MIPS_MT_SMTC)
18+
19+/*
20+ * For cli() we have to insert nops to make sure that the new value
21+ * has actually arrived in the status register before the end of this
22+ * macro.
23+ * R4000/R4400 need three nops, the R4600 two nops and the R10000 needs
24+ * no nops at all.
25+ */
26+/*
27+ * For TX49, operating only IE bit is not enough.
28+ *
29+ * If mfc0 $12 follows store and the mfc0 is last instruction of a
30+ * page and fetching the next instruction causes TLB miss, the result
31+ * of the mfc0 might wrongly contain EXL bit.
32+ *
33+ * ERT-TX49H2-027, ERT-TX49H3-012, ERT-TX49HL3-006, ERT-TX49H4-008
34+ *
35+ * Workaround: mask EXL bit of the result or place a nop before mfc0.
36+ */
37+__asm__(
38+ " .macro arch_local_irq_disable\n"
39+ " .set push \n"
40+ " .set noat \n"
41+#ifdef CONFIG_MIPS_MT_SMTC
42+ " mfc0 $1, $2, 1 \n"
43+ " ori $1, 0x400 \n"
44+ " .set noreorder \n"
45+ " mtc0 $1, $2, 1 \n"
46+#elif defined(CONFIG_CPU_MIPSR2)
47+ /* see irqflags.h for inline function */
48+#else
49+ " mfc0 $1,$12 \n"
50+ " ori $1,0x1f \n"
51+ " xori $1,0x1f \n"
52+ " .set noreorder \n"
53+ " mtc0 $1,$12 \n"
54+#endif
55+ " irq_disable_hazard \n"
56+ " .set pop \n"
57+ " .endm \n");
58+
59+void arch_local_irq_disable(void)
60+{
61+ preempt_disable();
62+ __asm__ __volatile__(
63+ "arch_local_irq_disable"
64+ : /* no outputs */
65+ : /* no inputs */
66+ : "memory");
67+ preempt_enable();
68+}
69+EXPORT_SYMBOL(arch_local_irq_disable);
70+
71+
72+__asm__(
73+ " .macro arch_local_irq_save result \n"
74+ " .set push \n"
75+ " .set reorder \n"
76+ " .set noat \n"
77+#ifdef CONFIG_MIPS_MT_SMTC
78+ " mfc0 \\result, $2, 1 \n"
79+ " ori $1, \\result, 0x400 \n"
80+ " .set noreorder \n"
81+ " mtc0 $1, $2, 1 \n"
82+ " andi \\result, \\result, 0x400 \n"
83+#elif defined(CONFIG_CPU_MIPSR2)
84+ /* see irqflags.h for inline function */
85+#else
86+ " mfc0 \\result, $12 \n"
87+ " ori $1, \\result, 0x1f \n"
88+ " xori $1, 0x1f \n"
89+ " .set noreorder \n"
90+ " mtc0 $1, $12 \n"
91+#endif
92+ " irq_disable_hazard \n"
93+ " .set pop \n"
94+ " .endm \n");
95+
96+unsigned long arch_local_irq_save(void)
97+{
98+ unsigned long flags;
99+ preempt_disable();
100+ asm volatile("arch_local_irq_save\t%0"
101+ : "=r" (flags)
102+ : /* no inputs */
103+ : "memory");
104+ preempt_enable();
105+ return flags;
106+}
107+EXPORT_SYMBOL(arch_local_irq_save);
108+
109+
110+__asm__(
111+ " .macro arch_local_irq_restore flags \n"
112+ " .set push \n"
113+ " .set noreorder \n"
114+ " .set noat \n"
115+#ifdef CONFIG_MIPS_MT_SMTC
116+ "mfc0 $1, $2, 1 \n"
117+ "andi \\flags, 0x400 \n"
118+ "ori $1, 0x400 \n"
119+ "xori $1, 0x400 \n"
120+ "or \\flags, $1 \n"
121+ "mtc0 \\flags, $2, 1 \n"
122+#elif defined(CONFIG_CPU_MIPSR2) && defined(CONFIG_IRQ_CPU)
123+ /* see irqflags.h for inline function */
124+#elif defined(CONFIG_CPU_MIPSR2)
125+ /* see irqflags.h for inline function */
126+#else
127+ " mfc0 $1, $12 \n"
128+ " andi \\flags, 1 \n"
129+ " ori $1, 0x1f \n"
130+ " xori $1, 0x1f \n"
131+ " or \\flags, $1 \n"
132+ " mtc0 \\flags, $12 \n"
133+#endif
134+ " irq_disable_hazard \n"
135+ " .set pop \n"
136+ " .endm \n");
137+
138+void arch_local_irq_restore(unsigned long flags)
139+{
140+ unsigned long __tmp1;
141+
142+#ifdef CONFIG_MIPS_MT_SMTC
143+ /*
144+ * SMTC kernel needs to do a software replay of queued
145+ * IPIs, at the cost of branch and call overhead on each
146+ * local_irq_restore()
147+ */
148+ if (unlikely(!(flags & 0x0400)))
149+ smtc_ipi_replay();
150+#endif
151+ preempt_disable();
152+ __asm__ __volatile__(
153+ "arch_local_irq_restore\t%0"
154+ : "=r" (__tmp1)
155+ : "0" (flags)
156+ : "memory");
157+ preempt_enable();
158+}
159+EXPORT_SYMBOL(arch_local_irq_restore);
160+
161+
162+void __arch_local_irq_restore(unsigned long flags)
163+{
164+ unsigned long __tmp1;
165+
166+ preempt_disable();
167+ __asm__ __volatile__(
168+ "arch_local_irq_restore\t%0"
169+ : "=r" (__tmp1)
170+ : "0" (flags)
171+ : "memory");
172+ preempt_enable();
173+}
174+EXPORT_SYMBOL(__arch_local_irq_restore);
175+
176+#endif /* !defined(CONFIG_CPU_MIPSR2) || defined(CONFIG_MIPS_MT_SMTC) */
arch/mips/mti-malta/malta-platform.c+2−1
@@ -29,6 +29,7 @@ · 28 unmodified lines
2929 #include <linux/mtd/partitions.h>
3030 #include <linux/mtd/physmap.h>
3131 #include <linux/platform_device.h>
32+#include <asm/mips-boards/maltaint.h>
3233 #include <mtd/mtd-abi.h>
3334
3435 #define SMC_PORT(base, int) \
@@ -48,7 +49,7 @@ static struct plat_serial8250_port uart8250_data[] = { · 13 unmodified lines
4849 SMC_PORT(0x2F8, 3),
4950 {
5051 .mapbase = 0x1f000900, /* The CBUS UART */
51− .irq = MIPS_CPU_IRQ_BASE + 2,
52+ .irq = MIPS_CPU_IRQ_BASE + MIPSCPU_INT_MB2,
5253 .uartclk = 3686400, /* Twice the usual clk! */
5354 .iotype = UPIO_MEM32,
5455 .flags = CBUS_UART_FLAGS,
arch/s390/Kconfig+1−0
@@ -96,6 +96,7 @@ config S390 · 95 unmodified lines
9696 select HAVE_MEMBLOCK_NODE_MAP
9797 select HAVE_CMPXCHG_LOCAL
9898 select HAVE_CMPXCHG_DOUBLE
99+ select HAVE_ALIGNED_STRUCT_PAGE if SLUB
99100 select HAVE_VIRT_CPU_ACCOUNTING
100101 select VIRT_CPU_ACCOUNTING
101102 select ARCH_DISCARD_MEMBLOCK
arch/s390/include/asm/compat.h+1−1
@@ -20,7 +20,7 @@ · 19 unmodified lines
2020 #define PSW32_MASK_CC 0x00003000UL
2121 #define PSW32_MASK_PM 0x00000f00UL
2222
23−#define PSW32_MASK_USER 0x00003F00UL
23+#define PSW32_MASK_USER 0x0000FF00UL
2424
2525 #define PSW32_ADDR_AMODE 0x80000000UL
2626 #define PSW32_ADDR_INSN 0x7FFFFFFFUL
arch/s390/include/asm/topology.h+3−0
@@ -8,6 +8,9 @@ struct cpu; · 7 unmodified lines
88
99 #ifdef CONFIG_SCHED_BOOK
1010
11+extern unsigned char cpu_socket_id[NR_CPUS];
12+#define topology_physical_package_id(cpu) (cpu_socket_id[cpu])
13+
1114 extern unsigned char cpu_core_id[NR_CPUS];
1215 extern cpumask_t cpu_core_map[NR_CPUS];
1316
arch/s390/include/uapi/asm/ptrace.h+2−2
@@ -239,7 +239,7 @@ typedef struct · 238 unmodified lines
239239 #define PSW_MASK_EA 0x00000000UL
240240 #define PSW_MASK_BA 0x00000000UL
241241
242−#define PSW_MASK_USER 0x00003F00UL
242+#define PSW_MASK_USER 0x0000FF00UL
243243
244244 #define PSW_ADDR_AMODE 0x80000000UL
245245 #define PSW_ADDR_INSN 0x7FFFFFFFUL
@@ -269,7 +269,7 @@ typedef struct · 23 unmodified lines
269269 #define PSW_MASK_EA 0x0000000100000000UL
270270 #define PSW_MASK_BA 0x0000000080000000UL
271271
272−#define PSW_MASK_USER 0x00003F8180000000UL
272+#define PSW_MASK_USER 0x0000FF8180000000UL
273273
274274 #define PSW_ADDR_AMODE 0x0000000000000000UL
275275 #define PSW_ADDR_INSN 0xFFFFFFFFFFFFFFFFUL
arch/s390/kernel/compat_signal.c+12−2
@@ -309,6 +309,10 @@ static int restore_sigregs32(struct pt_regs *regs,_sigregs32 __user *sregs) · 308 unmodified lines
309309 regs->psw.mask = (regs->psw.mask & ~PSW_MASK_USER) |
310310 (__u64)(regs32.psw.mask & PSW32_MASK_USER) << 32 |
311311 (__u64)(regs32.psw.addr & PSW32_ADDR_AMODE);
312+ /* Check for invalid user address space control. */
313+ if ((regs->psw.mask & PSW_MASK_ASC) >= (psw_kernel_bits & PSW_MASK_ASC))
314+ regs->psw.mask = (psw_user_bits & PSW_MASK_ASC) |
315+ (regs->psw.mask & ~PSW_MASK_ASC);
312316 regs->psw.addr = (__u64)(regs32.psw.addr & PSW32_ADDR_INSN);
313317 for (i = 0; i < NUM_GPRS; i++)
314318 regs->gprs[i] = (__u64) regs32.gprs[i];
@@ -481,7 +485,10 @@ static int setup_frame32(int sig, struct k_sigaction *ka, · 166 unmodified lines
481485
482486 /* Set up registers for signal handler */
483487 regs->gprs[15] = (__force __u64) frame;
484− regs->psw.mask |= PSW_MASK_BA; /* force amode 31 */
488+ /* Force 31 bit amode and default user address space control. */
489+ regs->psw.mask = PSW_MASK_BA |
490+ (psw_user_bits & PSW_MASK_ASC) |
491+ (regs->psw.mask & ~PSW_MASK_ASC);
485492 regs->psw.addr = (__force __u64) ka->sa.sa_handler;
486493
487494 regs->gprs[2] = map_signal(sig);
@@ -549,7 +556,10 @@ static int setup_rt_frame32(int sig, struct k_sigaction *ka, siginfo_t *info, · 61 unmodified lines
549556
550557 /* Set up registers for signal handler */
551558 regs->gprs[15] = (__force __u64) frame;
552− regs->psw.mask |= PSW_MASK_BA; /* force amode 31 */
559+ /* Force 31 bit amode and default user address space control. */
560+ regs->psw.mask = PSW_MASK_BA |
561+ (psw_user_bits & PSW_MASK_ASC) |
562+ (regs->psw.mask & ~PSW_MASK_ASC);
553563 regs->psw.addr = (__u64) ka->sa.sa_handler;
554564
555565 regs->gprs[2] = map_signal(sig);
arch/s390/kernel/signal.c+12−2
@@ -136,6 +136,10 @@ static int restore_sigregs(struct pt_regs *regs, _sigregs __user *sregs) · 135 unmodified lines
136136 /* Use regs->psw.mask instead of psw_user_bits to preserve PER bit. */
137137 regs->psw.mask = (regs->psw.mask & ~PSW_MASK_USER) |
138138 (user_sregs.regs.psw.mask & PSW_MASK_USER);
139+ /* Check for invalid user address space control. */
140+ if ((regs->psw.mask & PSW_MASK_ASC) >= (psw_kernel_bits & PSW_MASK_ASC))
141+ regs->psw.mask = (psw_user_bits & PSW_MASK_ASC) |
142+ (regs->psw.mask & ~PSW_MASK_ASC);
139143 /* Check for invalid amode */
140144 if (regs->psw.mask & PSW_MASK_EA)
141145 regs->psw.mask |= PSW_MASK_BA;
@@ -273,7 +277,10 @@ static int setup_frame(int sig, struct k_sigaction *ka, · 131 unmodified lines
273277
274278 /* Set up registers for signal handler */
275279 regs->gprs[15] = (unsigned long) frame;
276− regs->psw.mask |= PSW_MASK_EA | PSW_MASK_BA; /* 64 bit amode */
280+ /* Force default amode and default user address space control. */
281+ regs->psw.mask = PSW_MASK_EA | PSW_MASK_BA |
282+ (psw_user_bits & PSW_MASK_ASC) |
283+ (regs->psw.mask & ~PSW_MASK_ASC);
277284 regs->psw.addr = (unsigned long) ka->sa.sa_handler | PSW_ADDR_AMODE;
278285
279286 regs->gprs[2] = map_signal(sig);
@@ -346,7 +353,10 @@ static int setup_rt_frame(int sig, struct k_sigaction *ka, siginfo_t *info, · 66 unmodified lines
346353
347354 /* Set up registers for signal handler */
348355 regs->gprs[15] = (unsigned long) frame;
349− regs->psw.mask |= PSW_MASK_EA | PSW_MASK_BA; /* 64 bit amode */
356+ /* Force default amode and default user address space control. */
357+ regs->psw.mask = PSW_MASK_EA | PSW_MASK_BA |
358+ (psw_user_bits & PSW_MASK_ASC) |
359+ (regs->psw.mask & ~PSW_MASK_ASC);
350360 regs->psw.addr = (unsigned long) ka->sa.sa_handler | PSW_ADDR_AMODE;
351361
352362 regs->gprs[2] = map_signal(sig);
arch/s390/kernel/topology.c+4−2
@@ -40,6 +40,7 @@ static DEFINE_SPINLOCK(topology_lock); · 39 unmodified lines
4040 static struct mask_info core_info;
4141 cpumask_t cpu_core_map[NR_CPUS];
4242 unsigned char cpu_core_id[NR_CPUS];
43+unsigned char cpu_socket_id[NR_CPUS];
4344
4445 static struct mask_info book_info;
4546 cpumask_t cpu_book_map[NR_CPUS];
@@ -83,11 +84,12 @@ static struct mask_info *add_cpus_to_mask(struct topology_cpu *tl_cpu, · 37 unmodified lines
8384 cpumask_set_cpu(lcpu, &book->mask);
8485 cpu_book_id[lcpu] = book->id;
8586 cpumask_set_cpu(lcpu, &core->mask);
87+ cpu_core_id[lcpu] = rcpu;
8688 if (one_core_per_cpu) {
87− cpu_core_id[lcpu] = rcpu;
89+ cpu_socket_id[lcpu] = rcpu;
8890 core = core->next;
8991 } else {
90− cpu_core_id[lcpu] = core->id;
92+ cpu_socket_id[lcpu] = core->id;
9193 }
9294 smp_cpu_set_polarization(lcpu, tl_cpu->pp);
9395 }
arch/s390/mm/gup.c+2−3
@@ -180,8 +180,7 @@ int __get_user_pages_fast(unsigned long start, int nr_pages, int write, · 179 unmodified lines
180180 addr = start;
181181 len = (unsigned long) nr_pages << PAGE_SHIFT;
182182 end = start + len;
183− if (unlikely(!access_ok(write ? VERIFY_WRITE : VERIFY_READ,
184− (void __user *)start, len)))
183+ if ((end < start) || (end > TASK_SIZE))
185184 return 0;
186185
187186 local_irq_save(flags);
@@ -229,7 +228,7 @@ int get_user_pages_fast(unsigned long start, int nr_pages, int write, · 41 unmodified lines
229228 addr = start;
230229 len = (unsigned long) nr_pages << PAGE_SHIFT;
231230 end = start + len;
232− if (end < start)
231+ if ((end < start) || (end > TASK_SIZE))
233232 goto slow_irqon;
234233
235234 /*
arch/unicore32/Kconfig+6−1
@@ -16,6 +16,8 @@ config UNICORE32 · 15 unmodified lines
1616 select ARCH_WANT_FRAME_POINTERS
1717 select GENERIC_IOMAP
1818 select MODULES_USE_ELF_REL
19+ select GENERIC_KERNEL_THREAD
20+ select GENERIC_KERNEL_EXECVE
1921 help
2022 UniCore-32 is 32-bit Instruction Set Architecture,
2123 including a series of low-power-consumption RISC chip
@@ -64,6 +66,9 @@ config GENERIC_CALIBRATE_DELAY · 42 unmodified lines
6466 config ARCH_MAY_HAVE_PC_FDC
6567 bool
6668
69+config ZONE_DMA
70+ def_bool y
71+
6772 config NEED_DMA_MAP_STATE
6873 def_bool y
6974
@@ -216,7 +221,7 @@ config PUV3_GPIO · 146 unmodified lines
216221 bool
217222 depends on !ARCH_FPGA
218223 select GENERIC_GPIO
219− select GPIO_SYSFS if EXPERIMENTAL
224+ select GPIO_SYSFS
220225 default y
221226
222227 if PUV3_NB0916
arch/unicore32/include/asm/Kbuild+0−1
@@ -1,4 +1,3 @@
1−include include/asm-generic/Kbuild.asm
21
32 generic-y += atomic.h
43 generic-y += auxvec.h
arch/unicore32/include/asm/bug.h+0−5
@@ -19,9 +19,4 @@ extern void die(const char *msg, struct pt_regs *regs, int err); · 18 unmodified lines
1919 extern void uc32_notify_die(const char *str, struct pt_regs *regs,
2020 struct siginfo *info, unsigned long err, unsigned long trap);
2121
22−extern asmlinkage void __backtrace(void);
23−extern asmlinkage void c_backtrace(unsigned long fp, int pmode);
24−
25−extern void __show_regs(struct pt_regs *);
26−
2722 #endif /* __UNICORE_BUG_H__ */
arch/unicore32/include/asm/cmpxchg.h+1−1
@@ -35,7 +35,7 @@ static inline unsigned long __xchg(unsigned long x, volatile void *ptr, · 34 unmodified lines
3535 : "memory", "cc");
3636 break;
3737 default:
38− ret = __xchg_bad_pointer();
38+ __xchg_bad_pointer();
3939 }
4040
4141 return ret;
arch/unicore32/include/asm/kvm_para.h+0−1
@@ -1 +0,0 @@
1−#include <asm-generic/kvm_para.h>
arch/unicore32/include/asm/processor.h+0−5
@@ -72,11 +72,6 @@ unsigned long get_wchan(struct task_struct *p); · 71 unmodified lines
7272
7373 #define cpu_relax() barrier()
7474
75−/*
76− * Create a new kernel thread
77− */
78−extern int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
79−
8075 #define task_pt_regs(p) \
8176 ((struct pt_regs *)(THREAD_START_SP + task_stack_page(p)) - 1)
8277
arch/unicore32/include/asm/ptrace.h+1−75
@@ -12,80 +12,10 @@ · 11 unmodified lines
1212 #ifndef __UNICORE_PTRACE_H__
1313 #define __UNICORE_PTRACE_H__
1414
15−#define PTRACE_GET_THREAD_AREA 22
16−
17−/*
18− * PSR bits
19− */
20−#define USER_MODE 0x00000010
21−#define REAL_MODE 0x00000011
22−#define INTR_MODE 0x00000012
23−#define PRIV_MODE 0x00000013
24−#define ABRT_MODE 0x00000017
25−#define EXTN_MODE 0x0000001b
26−#define SUSR_MODE 0x0000001f
27−#define MODE_MASK 0x0000001f
28−#define PSR_R_BIT 0x00000040
29−#define PSR_I_BIT 0x00000080
30−#define PSR_V_BIT 0x10000000
31−#define PSR_C_BIT 0x20000000
32−#define PSR_Z_BIT 0x40000000
33−#define PSR_S_BIT 0x80000000
34−
35−/*
36− * Groups of PSR bits
37− */
38−#define PSR_f 0xff000000 /* Flags */
39−#define PSR_c 0x000000ff /* Control */
15+#include <uapi/asm/ptrace.h>
4016
4117 #ifndef __ASSEMBLY__
4218
43−/*
44− * This struct defines the way the registers are stored on the
45− * stack during a system call. Note that sizeof(struct pt_regs)
46− * has to be a multiple of 8.
47− */
48−struct pt_regs {
49− unsigned long uregs[34];
50−};
51−
52−#define UCreg_asr uregs[32]
53−#define UCreg_pc uregs[31]
54−#define UCreg_lr uregs[30]
55−#define UCreg_sp uregs[29]
56−#define UCreg_ip uregs[28]
57−#define UCreg_fp uregs[27]
58−#define UCreg_26 uregs[26]
59−#define UCreg_25 uregs[25]
60−#define UCreg_24 uregs[24]
61−#define UCreg_23 uregs[23]
62−#define UCreg_22 uregs[22]
63−#define UCreg_21 uregs[21]
64−#define UCreg_20 uregs[20]
65−#define UCreg_19 uregs[19]
66−#define UCreg_18 uregs[18]
67−#define UCreg_17 uregs[17]
68−#define UCreg_16 uregs[16]
69−#define UCreg_15 uregs[15]
70−#define UCreg_14 uregs[14]
71−#define UCreg_13 uregs[13]
72−#define UCreg_12 uregs[12]
73−#define UCreg_11 uregs[11]
74−#define UCreg_10 uregs[10]
75−#define UCreg_09 uregs[9]
76−#define UCreg_08 uregs[8]
77−#define UCreg_07 uregs[7]
78−#define UCreg_06 uregs[6]
79−#define UCreg_05 uregs[5]
80−#define UCreg_04 uregs[4]
81−#define UCreg_03 uregs[3]
82−#define UCreg_02 uregs[2]
83−#define UCreg_01 uregs[1]
84−#define UCreg_00 uregs[0]
85−#define UCreg_ORIG_00 uregs[33]
86−
87−#ifdef __KERNEL__
88−
8919 #define user_mode(regs) \
9020 (processor_mode(regs) == USER_MODE)
9121
@@ -125,9 +55,5 @@ static inline int valid_user_regs(struct pt_regs *regs) · 33 unmodified lines
12555
12656 #define instruction_pointer(regs) ((regs)->UCreg_pc)
12757
128−#endif /* __KERNEL__ */
129−
13058 #endif /* __ASSEMBLY__ */
131−
13259 #endif
133−
arch/unicore32/include/uapi/asm/Kbuild+7−0
@@ -1,3 +1,10 @@
11 # UAPI Header export list
22 include include/uapi/asm-generic/Kbuild.asm
33
4+header-y += byteorder.h
5+header-y += kvm_para.h
6+header-y += ptrace.h
7+header-y += sigcontext.h
8+header-y += unistd.h
9+
10+generic-y += kvm_para.h
arch/unicore32/include/uapi/asm/byteorder.hrenamed from arch/unicore32/include/asm/byteorder.h+0−0

File renamed without changes.

arch/unicore32/include/uapi/asm/ptrace.h+90−0
@@ -0,0 +1,90 @@
1+/*
2+ * linux/arch/unicore32/include/asm/ptrace.h
3+ *
4+ * Code specific to PKUnity SoC and UniCore ISA
5+ *
6+ * Copyright (C) 2001-2010 GUAN Xue-tao
7+ *
8+ * This program is free software; you can redistribute it and/or modify
9+ * it under the terms of the GNU General Public License version 2 as
10+ * published by the Free Software Foundation.
11+ */
12+#ifndef _UAPI__UNICORE_PTRACE_H__
13+#define _UAPI__UNICORE_PTRACE_H__
14+
15+#define PTRACE_GET_THREAD_AREA 22
16+
17+/*
18+ * PSR bits
19+ */
20+#define USER_MODE 0x00000010
21+#define REAL_MODE 0x00000011
22+#define INTR_MODE 0x00000012
23+#define PRIV_MODE 0x00000013
24+#define ABRT_MODE 0x00000017
25+#define EXTN_MODE 0x0000001b
26+#define SUSR_MODE 0x0000001f
27+#define MODE_MASK 0x0000001f
28+#define PSR_R_BIT 0x00000040
29+#define PSR_I_BIT 0x00000080
30+#define PSR_V_BIT 0x10000000
31+#define PSR_C_BIT 0x20000000
32+#define PSR_Z_BIT 0x40000000
33+#define PSR_S_BIT 0x80000000
34+
35+/*
36+ * Groups of PSR bits
37+ */
38+#define PSR_f 0xff000000 /* Flags */
39+#define PSR_c 0x000000ff /* Control */
40+
41+#ifndef __ASSEMBLY__
42+
43+/*
44+ * This struct defines the way the registers are stored on the
45+ * stack during a system call. Note that sizeof(struct pt_regs)
46+ * has to be a multiple of 8.
47+ */
48+struct pt_regs {
49+ unsigned long uregs[34];
50+};
51+
52+#define UCreg_asr uregs[32]
53+#define UCreg_pc uregs[31]
54+#define UCreg_lr uregs[30]
55+#define UCreg_sp uregs[29]
56+#define UCreg_ip uregs[28]
57+#define UCreg_fp uregs[27]
58+#define UCreg_26 uregs[26]
59+#define UCreg_25 uregs[25]
60+#define UCreg_24 uregs[24]
61+#define UCreg_23 uregs[23]
62+#define UCreg_22 uregs[22]
63+#define UCreg_21 uregs[21]
64+#define UCreg_20 uregs[20]
65+#define UCreg_19 uregs[19]
66+#define UCreg_18 uregs[18]
67+#define UCreg_17 uregs[17]
68+#define UCreg_16 uregs[16]
69+#define UCreg_15 uregs[15]
70+#define UCreg_14 uregs[14]
71+#define UCreg_13 uregs[13]
72+#define UCreg_12 uregs[12]
73+#define UCreg_11 uregs[11]
74+#define UCreg_10 uregs[10]
75+#define UCreg_09 uregs[9]
76+#define UCreg_08 uregs[8]
77+#define UCreg_07 uregs[7]
78+#define UCreg_06 uregs[6]
79+#define UCreg_05 uregs[5]
80+#define UCreg_04 uregs[4]
81+#define UCreg_03 uregs[3]
82+#define UCreg_02 uregs[2]
83+#define UCreg_01 uregs[1]
84+#define UCreg_00 uregs[0]
85+#define UCreg_ORIG_00 uregs[33]
86+
87+
88+#endif /* __ASSEMBLY__ */
89+
90+#endif /* _UAPI__UNICORE_PTRACE_H__ */
arch/unicore32/include/uapi/asm/sigcontext.hrenamed from arch/unicore32/include/asm/sigcontext.h+0−0

File renamed without changes.

arch/unicore32/include/uapi/asm/unistd.hrenamed from arch/unicore32/include/asm/unistd.h+1−0
@@ -12,3 +12,4 @@ · 11 unmodified lines
1212
1313 /* Use the standard ABI for syscalls. */
1414 #include <asm-generic/unistd.h>
15+#define __ARCH_WANT_SYS_EXECVE
arch/unicore32/kernel/entry.S+7−13
@@ -573,17 +573,16 @@ ENDPROC(ret_to_user) · 572 unmodified lines
573573 */
574574 ENTRY(ret_from_fork)
575575 b.l schedule_tail
576− get_thread_info tsk
577− ldw r1, [tsk+], #TI_FLAGS @ check for syscall tracing
578− mov why, #1
579− cand.a r1, #_TIF_SYSCALL_TRACE @ are we tracing syscalls?
580− beq ret_slow_syscall
581− mov r1, sp
582− mov r0, #1 @ trace exit [IP = 1]
583− b.l syscall_trace
584576 b ret_slow_syscall
585577 ENDPROC(ret_from_fork)
586578
579+ENTRY(ret_from_kernel_thread)
580+ b.l schedule_tail
581+ mov r0, r5
582+ adr lr, ret_slow_syscall
583+ mov pc, r4
584+ENDPROC(ret_from_kernel_thread)
585+
587586 /*=============================================================================
588587 * SWI handler
589588 *-----------------------------------------------------------------------------
@@ -669,11 +668,6 @@ __cr_alignment: · 79 unmodified lines
669668 #endif
670669 .ltorg
671670
672−ENTRY(sys_execve)
673− add r3, sp, #S_OFF
674− b __sys_execve
675−ENDPROC(sys_execve)
676−
677671 ENTRY(sys_clone)
678672 add ip, sp, #S_OFF
679673 stw ip, [sp+], #4
arch/unicore32/kernel/process.c+14−44
@@ -258,6 +258,7 @@ void release_thread(struct task_struct *dead_task) · 257 unmodified lines
258258 }
259259
260260 asmlinkage void ret_from_fork(void) __asm__("ret_from_fork");
261+asmlinkage void ret_from_kernel_thread(void) __asm__("ret_from_kernel_thread");
261262
262263 int
263264 copy_thread(unsigned long clone_flags, unsigned long stack_start,
@@ -266,17 +267,22 @@ copy_thread(unsigned long clone_flags, unsigned long stack_start, · 2 unmodified lines
266267 struct thread_info *thread = task_thread_info(p);
267268 struct pt_regs *childregs = task_pt_regs(p);
268269
269− *childregs = *regs;
270− childregs->UCreg_00 = 0;
271− childregs->UCreg_sp = stack_start;
272−
273270 memset(&thread->cpu_context, 0, sizeof(struct cpu_context_save));
274271 thread->cpu_context.sp = (unsigned long)childregs;
275− thread->cpu_context.pc = (unsigned long)ret_from_fork;
276−
277− if (clone_flags & CLONE_SETTLS)
278− childregs->UCreg_16 = regs->UCreg_03;
272+ if (unlikely(!regs)) {
273+ thread->cpu_context.pc = (unsigned long)ret_from_kernel_thread;
274+ thread->cpu_context.r4 = stack_start;
275+ thread->cpu_context.r5 = stk_sz;
276+ memset(childregs, 0, sizeof(struct pt_regs));
277+ } else {
278+ thread->cpu_context.pc = (unsigned long)ret_from_fork;
279+ *childregs = *regs;
280+ childregs->UCreg_00 = 0;
281+ childregs->UCreg_sp = stack_start;
279282
283+ if (clone_flags & CLONE_SETTLS)
284+ childregs->UCreg_16 = regs->UCreg_03;
285+ }
280286 return 0;
281287 }
282288
@@ -305,42 +311,6 @@ int dump_fpu(struct pt_regs *regs, elf_fpregset_t *fp) · 22 unmodified lines
305311 }
306312 EXPORT_SYMBOL(dump_fpu);
307313
308−/*
309− * Shuffle the argument into the correct register before calling the
310− * thread function. r1 is the thread argument, r2 is the pointer to
311− * the thread function, and r3 points to the exit function.
312− */
313−asm(".pushsection .text\n"
314−" .align\n"
315−" .type kernel_thread_helper, #function\n"
316−"kernel_thread_helper:\n"
317−" mov.a asr, r7\n"
318−" mov r0, r4\n"
319−" mov lr, r6\n"
320−" mov pc, r5\n"
321−" .size kernel_thread_helper, . - kernel_thread_helper\n"
322−" .popsection");
323−
324−/*
325− * Create a kernel thread.
326− */
327−pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
328−{
329− struct pt_regs regs;
330−
331− memset(&regs, 0, sizeof(regs));
332−
333− regs.UCreg_04 = (unsigned long)arg;
334− regs.UCreg_05 = (unsigned long)fn;
335− regs.UCreg_06 = (unsigned long)do_exit;
336− regs.UCreg_07 = PRIV_MODE;
337− regs.UCreg_pc = (unsigned long)kernel_thread_helper;
338− regs.UCreg_asr = regs.UCreg_07 | PSR_I_BIT;
339−
340− return do_fork(flags|CLONE_VM|CLONE_UNTRACED, 0, &regs, 0, NULL, NULL);
341−}
342−EXPORT_SYMBOL(kernel_thread);
343−
344314 unsigned long get_wchan(struct task_struct *p)
345315 {
346316 struct stackframe frame;
arch/unicore32/kernel/setup.h+6−0
@@ -30,4 +30,10 @@ extern char __vectors_start[], __vectors_end[]; · 29 unmodified lines
3030 extern void kernel_thread_helper(void);
3131
3232 extern void __init early_signal_init(void);
33+
34+extern asmlinkage void __backtrace(void);
35+extern asmlinkage void c_backtrace(unsigned long fp, int pmode);
36+
37+extern void __show_regs(struct pt_regs *);
38+
3339 #endif
arch/unicore32/kernel/sys.c+0−63
@@ -42,69 +42,6 @@ asmlinkage long __sys_clone(unsigned long clone_flags, unsigned long newsp, · 41 unmodified lines
4242 parent_tid, child_tid);
4343 }
4444
45−/* sys_execve() executes a new program.
46− * This is called indirectly via a small wrapper
47− */
48−asmlinkage long __sys_execve(const char __user *filename,
49− const char __user *const __user *argv,
50− const char __user *const __user *envp,
51− struct pt_regs *regs)
52−{
53− int error;
54− struct filename *fn;
55−
56− fn = getname(filename);
57− error = PTR_ERR(fn);
58− if (IS_ERR(fn))
59− goto out;
60− error = do_execve(fn->name, argv, envp, regs);
61− putname(fn);
62−out:
63− return error;
64−}
65−
66−int kernel_execve(const char *filename,
67− const char *const argv[],
68− const char *const envp[])
69−{
70− struct pt_regs regs;
71− int ret;
72−
73− memset(&regs, 0, sizeof(struct pt_regs));
74− ret = do_execve(filename,
75− (const char __user *const __user *)argv,
76− (const char __user *const __user *)envp, &regs);
77− if (ret < 0)
78− goto out;
79−
80− /*
81− * Save argc to the register structure for userspace.
82− */
83− regs.UCreg_00 = ret;
84−
85− /*
86− * We were successful. We won't be returning to our caller, but
87− * instead to user space by manipulating the kernel stack.
88− */
89− asm("add r0, %0, %1\n\t"
90− "mov r1, %2\n\t"
91− "mov r2, %3\n\t"
92− "mov r22, #0\n\t" /* not a syscall */
93− "mov r23, %0\n\t" /* thread structure */
94− "b.l memmove\n\t" /* copy regs to top of stack */
95− "mov sp, r0\n\t" /* reposition stack pointer */
96− "b ret_to_user"
97− :
98− : "r" (current_thread_info()),
99− "Ir" (THREAD_START_SP - sizeof(regs)),
100− "r" (&regs),
101− "Ir" (sizeof(regs))
102− : "r0", "r1", "r2", "r3", "ip", "lr", "memory");
103−
104− out:
105− return ret;
106−}
107−
10845 /* Note: used by the compat code even in 64-bit Linux. */
10946 SYSCALL_DEFINE6(mmap2, unsigned long, addr, unsigned long, len,
11047 unsigned long, prot, unsigned long, flags,
arch/unicore32/mm/fault.c+27−10
@@ -168,7 +168,7 @@ static inline bool access_error(unsigned int fsr, struct vm_area_struct *vma) · 167 unmodified lines
168168 }
169169
170170 static int __do_pf(struct mm_struct *mm, unsigned long addr, unsigned int fsr,
171− struct task_struct *tsk)
171+ unsigned int flags, struct task_struct *tsk)
172172 {
173173 struct vm_area_struct *vma;
174174 int fault;
@@ -194,14 +194,7 @@ good_area: · 19 unmodified lines
194194 * If for any reason at all we couldn't handle the fault, make
195195 * sure we exit gracefully rather than endlessly redo the fault.
196196 */
197− fault = handle_mm_fault(mm, vma, addr & PAGE_MASK,
198− (!(fsr ^ 0x12)) ? FAULT_FLAG_WRITE : 0);
199− if (unlikely(fault & VM_FAULT_ERROR))
200− return fault;
201− if (fault & VM_FAULT_MAJOR)
202− tsk->maj_flt++;
203− else
204− tsk->min_flt++;
197+ fault = handle_mm_fault(mm, vma, addr & PAGE_MASK, flags);
205198 return fault;
206199
207200 check_stack:
@@ -216,6 +209,8 @@ static int do_pf(unsigned long addr, unsigned int fsr, struct pt_regs *regs) · 8 unmodified lines
216209 struct task_struct *tsk;
217210 struct mm_struct *mm;
218211 int fault, sig, code;
212+ unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE |
213+ ((!(fsr ^ 0x12)) ? FAULT_FLAG_WRITE : 0);
219214
220215 tsk = current;
221216 mm = tsk->mm;
@@ -236,6 +231,7 @@ static int do_pf(unsigned long addr, unsigned int fsr, struct pt_regs *regs) · 14 unmodified lines
236231 if (!user_mode(regs)
237232 && !search_exception_tables(regs->UCreg_pc))
238233 goto no_context;
234+retry:
239235 down_read(&mm->mmap_sem);
240236 } else {
241237 /*
@@ -251,7 +247,28 @@ static int do_pf(unsigned long addr, unsigned int fsr, struct pt_regs *regs) · 9 unmodified lines
251247 #endif
252248 }
253249
254− fault = __do_pf(mm, addr, fsr, tsk);
250+ fault = __do_pf(mm, addr, fsr, flags, tsk);
251+
252+ /* If we need to retry but a fatal signal is pending, handle the
253+ * signal first. We do not need to release the mmap_sem because
254+ * it would already be released in __lock_page_or_retry in
255+ * mm/filemap.c. */
256+ if ((fault & VM_FAULT_RETRY) && fatal_signal_pending(current))
257+ return 0;
258+
259+ if (!(fault & VM_FAULT_ERROR) && (flags & FAULT_FLAG_ALLOW_RETRY)) {
260+ if (fault & VM_FAULT_MAJOR)
261+ tsk->maj_flt++;
262+ else
263+ tsk->min_flt++;
264+ if (fault & VM_FAULT_RETRY) {
265+ /* Clear FAULT_FLAG_ALLOW_RETRY to avoid any risk
266+ * of starvation. */
267+ flags &= ~FAULT_FLAG_ALLOW_RETRY;
268+ goto retry;
269+ }
270+ }
271+
255272 up_read(&mm->mmap_sem);
256273
257274 /*
arch/x86/kvm/cpuid.h+3−0
@@ -24,6 +24,9 @@ static inline bool guest_cpuid_has_xsave(struct kvm_vcpu *vcpu) · 23 unmodified lines
2424 {
2525 struct kvm_cpuid_entry2 *best;
2626
27+ if (!static_cpu_has(X86_FEATURE_XSAVE))
28+ return 0;
29+
2730 best = kvm_find_cpuid_entry(vcpu, 1, 0);
2831 return best && (best->ecx & bit(X86_FEATURE_XSAVE));
2932 }
arch/x86/kvm/vmx.c+7−4
@@ -6549,19 +6549,22 @@ static void vmx_cpuid_update(struct kvm_vcpu *vcpu) · 6548 unmodified lines
65496549 }
65506550 }
65516551
6552− exec_control = vmcs_read32(SECONDARY_VM_EXEC_CONTROL);
65536552 /* Exposing INVPCID only when PCID is exposed */
65546553 best = kvm_find_cpuid_entry(vcpu, 0x7, 0);
65556554 if (vmx_invpcid_supported() &&
65566555 best && (best->ebx & bit(X86_FEATURE_INVPCID)) &&
65576556 guest_cpuid_has_pcid(vcpu)) {
6557+ exec_control = vmcs_read32(SECONDARY_VM_EXEC_CONTROL);
65586558 exec_control |= SECONDARY_EXEC_ENABLE_INVPCID;
65596559 vmcs_write32(SECONDARY_VM_EXEC_CONTROL,
65606560 exec_control);
65616561 } else {
6562− exec_control &= ~SECONDARY_EXEC_ENABLE_INVPCID;
6563− vmcs_write32(SECONDARY_VM_EXEC_CONTROL,
6564− exec_control);
6562+ if (cpu_has_secondary_exec_ctrls()) {
6563+ exec_control = vmcs_read32(SECONDARY_VM_EXEC_CONTROL);
6564+ exec_control &= ~SECONDARY_EXEC_ENABLE_INVPCID;
6565+ vmcs_write32(SECONDARY_VM_EXEC_CONTROL,
6566+ exec_control);
6567+ }
65656568 if (best)
65666569 best->ebx &= ~bit(X86_FEATURE_INVPCID);
65676570 }
arch/x86/kvm/x86.c+3−0
@@ -5781,6 +5781,9 @@ int kvm_arch_vcpu_ioctl_set_sregs(struct kvm_vcpu *vcpu, · 5780 unmodified lines
57815781 int pending_vec, max_bits, idx;
57825782 struct desc_ptr dt;
57835783
5784+ if (!guest_cpuid_has_xsave(vcpu) && (sregs->cr4 & X86_CR4_OSXSAVE))
5785+ return -EINVAL;
5786+
57845787 dt.size = sregs->idt.limit;
57855788 dt.address = sregs->idt.base;
57865789 kvm_x86_ops->set_idt(vcpu, &dt);
drivers/bluetooth/ath3k.c+1−0
@@ -67,6 +67,7 @@ static struct usb_device_id ath3k_table[] = { · 66 unmodified lines
6767 { USB_DEVICE(0x13d3, 0x3304) },
6868 { USB_DEVICE(0x0930, 0x0215) },
6969 { USB_DEVICE(0x0489, 0xE03D) },
70+ { USB_DEVICE(0x0489, 0xE027) },
7071
7172 /* Atheros AR9285 Malbec with sflash firmware */
7273 { USB_DEVICE(0x03F0, 0x311D) },
drivers/bluetooth/btusb.c+1−0
@@ -124,6 +124,7 @@ static struct usb_device_id blacklist_table[] = { · 123 unmodified lines
124124 { USB_DEVICE(0x13d3, 0x3304), .driver_info = BTUSB_IGNORE },
125125 { USB_DEVICE(0x0930, 0x0215), .driver_info = BTUSB_IGNORE },
126126 { USB_DEVICE(0x0489, 0xe03d), .driver_info = BTUSB_IGNORE },
127+ { USB_DEVICE(0x0489, 0xe027), .driver_info = BTUSB_IGNORE },
127128
128129 /* Atheros AR9285 Malbec with sflash firmware */
129130 { USB_DEVICE(0x03f0, 0x311d), .driver_info = BTUSB_IGNORE },
drivers/bus/omap-ocp2scp.c+65−3
@@ -22,6 +22,26 @@ · 21 unmodified lines
2222 #include <linux/pm_runtime.h>
2323 #include <linux/of.h>
2424 #include <linux/of_platform.h>
25+#include <linux/platform_data/omap_ocp2scp.h>
26+
27+/**
28+ * _count_resources - count for the number of resources
29+ * @res: struct resource *
30+ *
31+ * Count and return the number of resources populated for the device that is
32+ * connected to ocp2scp.
33+ */
34+static unsigned _count_resources(struct resource *res)
35+{
36+ int cnt = 0;
37+
38+ while (res->start != res->end) {
39+ cnt++;
40+ res++;
41+ }
42+
43+ return cnt;
44+}
2545
2646 static int ocp2scp_remove_devices(struct device *dev, void *c)
2747 {
@@ -34,20 +54,62 @@ static int ocp2scp_remove_devices(struct device *dev, void *c) · 6 unmodified lines
3454
3555 static int __devinit omap_ocp2scp_probe(struct platform_device *pdev)
3656 {
37− int ret;
38− struct device_node *np = pdev->dev.of_node;
57+ int ret;
58+ unsigned res_cnt, i;
59+ struct device_node *np = pdev->dev.of_node;
60+ struct platform_device *pdev_child;
61+ struct omap_ocp2scp_platform_data *pdata = pdev->dev.platform_data;
62+ struct omap_ocp2scp_dev *dev;
3963
4064 if (np) {
4165 ret = of_platform_populate(np, NULL, NULL, &pdev->dev);
4266 if (ret) {
43− dev_err(&pdev->dev, "failed to add resources for ocp2scp child\n");
67+ dev_err(&pdev->dev,
68+ "failed to add resources for ocp2scp child\n");
4469 goto err0;
4570 }
71+ } else if (pdata) {
72+ for (i = 0, dev = *pdata->devices; i < pdata->dev_cnt; i++,
73+ dev++) {
74+ res_cnt = _count_resources(dev->res);
75+
76+ pdev_child = platform_device_alloc(dev->drv_name,
77+ PLATFORM_DEVID_AUTO);
78+ if (!pdev_child) {
79+ dev_err(&pdev->dev,
80+ "failed to allocate mem for ocp2scp child\n");
81+ goto err0;
82+ }
83+
84+ ret = platform_device_add_resources(pdev_child,
85+ dev->res, res_cnt);
86+ if (ret) {
87+ dev_err(&pdev->dev,
88+ "failed to add resources for ocp2scp child\n");
89+ goto err1;
90+ }
91+
92+ pdev_child->dev.parent = &pdev->dev;
93+
94+ ret = platform_device_add(pdev_child);
95+ if (ret) {
96+ dev_err(&pdev->dev,
97+ "failed to register ocp2scp child device\n");
98+ goto err1;
99+ }
100+ }
101+ } else {
102+ dev_err(&pdev->dev, "OCP2SCP initialized without plat data\n");
103+ return -EINVAL;
46104 }
105+
47106 pm_runtime_enable(&pdev->dev);
48107
49108 return 0;
50109
110+err1:
111+ platform_device_put(pdev_child);
112+
51113 err0:
52114 device_for_each_child(&pdev->dev, NULL, ocp2scp_remove_devices);
53115
drivers/clk/ux500/u8500_clk.c+46−4
@@ -40,7 +40,7 @@ void u8500_clk_init(void) · 39 unmodified lines
4040 CLK_IS_ROOT|CLK_IGNORE_UNUSED,
4141 32768);
4242 clk_register_clkdev(clk, "clk32k", NULL);
43− clk_register_clkdev(clk, NULL, "rtc-pl031");
43+ clk_register_clkdev(clk, "apb_pclk", "rtc-pl031");
4444
4545 /* PRCMU clocks */
4646 fw_version = prcmu_get_fw_version();
@@ -228,10 +228,17 @@ void u8500_clk_init(void) · 181 unmodified lines
228228
229229 clk = clk_reg_prcc_pclk("p1_pclk2", "per1clk", U8500_CLKRST1_BASE,
230230 BIT(2), 0);
231+ clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.1");
232+
231233 clk = clk_reg_prcc_pclk("p1_pclk3", "per1clk", U8500_CLKRST1_BASE,
232234 BIT(3), 0);
235+ clk_register_clkdev(clk, "apb_pclk", "msp0");
236+ clk_register_clkdev(clk, "apb_pclk", "ux500-msp-i2s.0");
237+
233238 clk = clk_reg_prcc_pclk("p1_pclk4", "per1clk", U8500_CLKRST1_BASE,
234239 BIT(4), 0);
240+ clk_register_clkdev(clk, "apb_pclk", "msp1");
241+ clk_register_clkdev(clk, "apb_pclk", "ux500-msp-i2s.1");
235242
236243 clk = clk_reg_prcc_pclk("p1_pclk5", "per1clk", U8500_CLKRST1_BASE,
237244 BIT(5), 0);
@@ -239,6 +246,7 @@ void u8500_clk_init(void) · 1 unmodified line
239246
240247 clk = clk_reg_prcc_pclk("p1_pclk6", "per1clk", U8500_CLKRST1_BASE,
241248 BIT(6), 0);
249+ clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.2");
242250
243251 clk = clk_reg_prcc_pclk("p1_pclk7", "per1clk", U8500_CLKRST1_BASE,
244252 BIT(7), 0);
@@ -246,6 +254,7 @@ void u8500_clk_init(void) · 1 unmodified line
246254
247255 clk = clk_reg_prcc_pclk("p1_pclk8", "per1clk", U8500_CLKRST1_BASE,
248256 BIT(8), 0);
257+ clk_register_clkdev(clk, "apb_pclk", "slimbus0");
249258
250259 clk = clk_reg_prcc_pclk("p1_pclk9", "per1clk", U8500_CLKRST1_BASE,
251260 BIT(9), 0);
@@ -255,11 +264,16 @@ void u8500_clk_init(void) · 3 unmodified lines
255264
256265 clk = clk_reg_prcc_pclk("p1_pclk10", "per1clk", U8500_CLKRST1_BASE,
257266 BIT(10), 0);
267+ clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.4");
268+
258269 clk = clk_reg_prcc_pclk("p1_pclk11", "per1clk", U8500_CLKRST1_BASE,
259270 BIT(11), 0);
271+ clk_register_clkdev(clk, "apb_pclk", "msp3");
272+ clk_register_clkdev(clk, "apb_pclk", "ux500-msp-i2s.3");
260273
261274 clk = clk_reg_prcc_pclk("p2_pclk0", "per2clk", U8500_CLKRST2_BASE,
262275 BIT(0), 0);
276+ clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.3");
263277
264278 clk = clk_reg_prcc_pclk("p2_pclk1", "per2clk", U8500_CLKRST2_BASE,
265279 BIT(1), 0);
@@ -279,12 +293,13 @@ void u8500_clk_init(void) · 13 unmodified lines
279293
280294 clk = clk_reg_prcc_pclk("p2_pclk5", "per2clk", U8500_CLKRST2_BASE,
281295 BIT(5), 0);
296+ clk_register_clkdev(clk, "apb_pclk", "msp2");
297+ clk_register_clkdev(clk, "apb_pclk", "ux500-msp-i2s.2");
282298
283299 clk = clk_reg_prcc_pclk("p2_pclk6", "per2clk", U8500_CLKRST2_BASE,
284300 BIT(6), 0);
285301 clk_register_clkdev(clk, "apb_pclk", "sdi1");
286302
287−
288303 clk = clk_reg_prcc_pclk("p2_pclk7", "per2clk", U8500_CLKRST2_BASE,
289304 BIT(7), 0);
290305 clk_register_clkdev(clk, "apb_pclk", "sdi3");
@@ -316,10 +331,15 @@ void u8500_clk_init(void) · 25 unmodified lines
316331
317332 clk = clk_reg_prcc_pclk("p3_pclk1", "per3clk", U8500_CLKRST3_BASE,
318333 BIT(1), 0);
334+ clk_register_clkdev(clk, "apb_pclk", "ssp0");
335+
319336 clk = clk_reg_prcc_pclk("p3_pclk2", "per3clk", U8500_CLKRST3_BASE,
320337 BIT(2), 0);
338+ clk_register_clkdev(clk, "apb_pclk", "ssp1");
339+
321340 clk = clk_reg_prcc_pclk("p3_pclk3", "per3clk", U8500_CLKRST3_BASE,
322341 BIT(3), 0);
342+ clk_register_clkdev(clk, "apb_pclk", "nmk-i2c.0");
323343
324344 clk = clk_reg_prcc_pclk("p3_pclk4", "per3clk", U8500_CLKRST3_BASE,
325345 BIT(4), 0);
@@ -401,10 +421,17 @@ void u8500_clk_init(void) · 75 unmodified lines
401421
402422 clk = clk_reg_prcc_kclk("p1_i2c1_kclk", "i2cclk",
403423 U8500_CLKRST1_BASE, BIT(2), CLK_SET_RATE_GATE);
424+ clk_register_clkdev(clk, NULL, "nmk-i2c.1");
425+
404426 clk = clk_reg_prcc_kclk("p1_msp0_kclk", "msp02clk",
405427 U8500_CLKRST1_BASE, BIT(3), CLK_SET_RATE_GATE);
428+ clk_register_clkdev(clk, NULL, "msp0");
429+ clk_register_clkdev(clk, NULL, "ux500-msp-i2s.0");
430+
406431 clk = clk_reg_prcc_kclk("p1_msp1_kclk", "msp1clk",
407432 U8500_CLKRST1_BASE, BIT(4), CLK_SET_RATE_GATE);
433+ clk_register_clkdev(clk, NULL, "msp1");
434+ clk_register_clkdev(clk, NULL, "ux500-msp-i2s.1");
408435
409436 clk = clk_reg_prcc_kclk("p1_sdi0_kclk", "sdmmcclk",
410437 U8500_CLKRST1_BASE, BIT(5), CLK_SET_RATE_GATE);
@@ -412,17 +439,25 @@ void u8500_clk_init(void) · 1 unmodified line
412439
413440 clk = clk_reg_prcc_kclk("p1_i2c2_kclk", "i2cclk",
414441 U8500_CLKRST1_BASE, BIT(6), CLK_SET_RATE_GATE);
442+ clk_register_clkdev(clk, NULL, "nmk-i2c.2");
443+
415444 clk = clk_reg_prcc_kclk("p1_slimbus0_kclk", "slimclk",
416− U8500_CLKRST1_BASE, BIT(3), CLK_SET_RATE_GATE);
417− /* FIXME: Redefinition of BIT(3). */
445+ U8500_CLKRST1_BASE, BIT(8), CLK_SET_RATE_GATE);
446+ clk_register_clkdev(clk, NULL, "slimbus0");
447+
418448 clk = clk_reg_prcc_kclk("p1_i2c4_kclk", "i2cclk",
419449 U8500_CLKRST1_BASE, BIT(9), CLK_SET_RATE_GATE);
450+ clk_register_clkdev(clk, NULL, "nmk-i2c.4");
451+
420452 clk = clk_reg_prcc_kclk("p1_msp3_kclk", "msp1clk",
421453 U8500_CLKRST1_BASE, BIT(10), CLK_SET_RATE_GATE);
454+ clk_register_clkdev(clk, NULL, "msp3");
455+ clk_register_clkdev(clk, NULL, "ux500-msp-i2s.3");
422456
423457 /* Periph2 */
424458 clk = clk_reg_prcc_kclk("p2_i2c3_kclk", "i2cclk",
425459 U8500_CLKRST2_BASE, BIT(0), CLK_SET_RATE_GATE);
460+ clk_register_clkdev(clk, NULL, "nmk-i2c.3");
426461
427462 clk = clk_reg_prcc_kclk("p2_sdi4_kclk", "sdmmcclk",
428463 U8500_CLKRST2_BASE, BIT(2), CLK_SET_RATE_GATE);
@@ -430,6 +465,8 @@ void u8500_clk_init(void) · 1 unmodified line
430465
431466 clk = clk_reg_prcc_kclk("p2_msp2_kclk", "msp02clk",
432467 U8500_CLKRST2_BASE, BIT(3), CLK_SET_RATE_GATE);
468+ clk_register_clkdev(clk, NULL, "msp2");
469+ clk_register_clkdev(clk, NULL, "ux500-msp-i2s.2");
433470
434471 clk = clk_reg_prcc_kclk("p2_sdi1_kclk", "sdmmcclk",
435472 U8500_CLKRST2_BASE, BIT(4), CLK_SET_RATE_GATE);
@@ -450,10 +487,15 @@ void u8500_clk_init(void) · 14 unmodified lines
450487 /* Periph3 */
451488 clk = clk_reg_prcc_kclk("p3_ssp0_kclk", "sspclk",
452489 U8500_CLKRST3_BASE, BIT(1), CLK_SET_RATE_GATE);
490+ clk_register_clkdev(clk, NULL, "ssp0");
491+
453492 clk = clk_reg_prcc_kclk("p3_ssp1_kclk", "sspclk",
454493 U8500_CLKRST3_BASE, BIT(2), CLK_SET_RATE_GATE);
494+ clk_register_clkdev(clk, NULL, "ssp1");
495+
455496 clk = clk_reg_prcc_kclk("p3_i2c0_kclk", "i2cclk",
456497 U8500_CLKRST3_BASE, BIT(3), CLK_SET_RATE_GATE);
498+ clk_register_clkdev(clk, NULL, "nmk-i2c.0");
457499
458500 clk = clk_reg_prcc_kclk("p3_sdi2_kclk", "sdmmcclk",
459501 U8500_CLKRST3_BASE, BIT(4), CLK_SET_RATE_GATE);
drivers/gpu/drm/i915/intel_crt.c+1−1
@@ -143,7 +143,7 @@ static void intel_crt_dpms(struct drm_connector *connector, int mode) · 142 unmodified lines
143143 int old_dpms;
144144
145145 /* PCH platforms and VLV only support on/off. */
146− if (INTEL_INFO(dev)->gen < 5 && mode != DRM_MODE_DPMS_ON)
146+ if (INTEL_INFO(dev)->gen >= 5 && mode != DRM_MODE_DPMS_ON)
147147 mode = DRM_MODE_DPMS_OFF;
148148
149149 if (mode == connector->dpms)
drivers/gpu/drm/i915/intel_display.c+11−0
@@ -3841,6 +3841,17 @@ static bool intel_choose_pipe_bpp_dither(struct drm_crtc *crtc, · 3840 unmodified lines
38413841 }
38423842 }
38433843
3844+ if (intel_encoder->type == INTEL_OUTPUT_EDP) {
3845+ /* Use VBT settings if we have an eDP panel */
3846+ unsigned int edp_bpc = dev_priv->edp.bpp / 3;
3847+
3848+ if (edp_bpc < display_bpc) {
3849+ DRM_DEBUG_KMS("clamping display bpc (was %d) to eDP (%d)\n", display_bpc, edp_bpc);
3850+ display_bpc = edp_bpc;
3851+ }
3852+ continue;
3853+ }
3854+
38443855 /*
38453856 * HDMI is either 12 or 8, so if the display lets 10bpc sneak
38463857 * through, clamp it down. (Note: >12bpc will be caught below.)
drivers/gpu/drm/i915/intel_sdvo.c+19−3
@@ -2382,6 +2382,18 @@ intel_sdvo_output_setup(struct intel_sdvo *intel_sdvo, uint16_t flags) · 2381 unmodified lines
23822382 return true;
23832383 }
23842384
2385+static void intel_sdvo_output_cleanup(struct intel_sdvo *intel_sdvo)
2386+{
2387+ struct drm_device *dev = intel_sdvo->base.base.dev;
2388+ struct drm_connector *connector, *tmp;
2389+
2390+ list_for_each_entry_safe(connector, tmp,
2391+ &dev->mode_config.connector_list, head) {
2392+ if (intel_attached_encoder(connector) == &intel_sdvo->base)
2393+ intel_sdvo_destroy(connector);
2394+ }
2395+}
2396+
23852397 static bool intel_sdvo_tv_create_property(struct intel_sdvo *intel_sdvo,
23862398 struct intel_sdvo_connector *intel_sdvo_connector,
23872399 int type)
@@ -2705,7 +2717,8 @@ bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg, bool is_sdvob) · 317 unmodified lines
27052717 intel_sdvo->caps.output_flags) != true) {
27062718 DRM_DEBUG_KMS("SDVO output failed to setup on %s\n",
27072719 SDVO_NAME(intel_sdvo));
2708− goto err;
2720+ /* Output_setup can leave behind connectors! */
2721+ goto err_output;
27092722 }
27102723
27112724 /* Only enable the hotplug irq if we need it, to work around noisy
@@ -2718,12 +2731,12 @@ bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg, bool is_sdvob) · 6 unmodified lines
27182731
27192732 /* Set the input timing to the screen. Assume always input 0. */
27202733 if (!intel_sdvo_set_target_input(intel_sdvo))
2721− goto err;
2734+ goto err_output;
27222735
27232736 if (!intel_sdvo_get_input_pixel_clock_range(intel_sdvo,
27242737 &intel_sdvo->pixel_clock_min,
27252738 &intel_sdvo->pixel_clock_max))
2726− goto err;
2739+ goto err_output;
27272740
27282741 DRM_DEBUG_KMS("%s device VID/DID: %02X:%02X.%02X, "
27292742 "clock range %dMHz - %dMHz, "
@@ -2743,6 +2756,9 @@ bool intel_sdvo_init(struct drm_device *dev, uint32_t sdvo_reg, bool is_sdvob) · 13 unmodified lines
27432756 (SDVO_OUTPUT_TMDS1 | SDVO_OUTPUT_RGB1) ? 'Y' : 'N');
27442757 return true;
27452758
2759+err_output:
2760+ intel_sdvo_output_cleanup(intel_sdvo);
2761+
27462762 err:
27472763 drm_encoder_cleanup(&intel_encoder->base);
27482764 i2c_del_adapter(&intel_sdvo->ddc);
drivers/gpu/drm/radeon/atombios_encoders.c+1−1
@@ -1625,7 +1625,7 @@ radeon_atom_encoder_dpms_dig(struct drm_encoder *encoder, int mode) · 1624 unmodified lines
16251625 atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_SETUP, 0, 0);
16261626 atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE, 0, 0);
16271627 /* some early dce3.2 boards have a bug in their transmitter control table */
1628− if ((rdev->family != CHIP_RV710) || (rdev->family != CHIP_RV730))
1628+ if ((rdev->family != CHIP_RV710) && (rdev->family != CHIP_RV730))
16291629 atombios_dig_transmitter_setup(encoder, ATOM_TRANSMITTER_ACTION_ENABLE_OUTPUT, 0, 0);
16301630 }
16311631 if (ENCODER_MODE_IS_DP(atombios_get_encoder_mode(encoder)) && connector) {
drivers/gpu/drm/ttm/ttm_page_alloc.c+4−1
@@ -749,7 +749,10 @@ static int ttm_get_pages(struct page **pages, unsigned npages, int flags, · 748 unmodified lines
749749 /* clear the pages coming from the pool if requested */
750750 if (flags & TTM_PAGE_FLAG_ZERO_ALLOC) {
751751 list_for_each_entry(p, &plist, lru) {
752− clear_page(page_address(p));
752+ if (PageHighMem(p))
753+ clear_highpage(p);
754+ else
755+ clear_page(page_address(p));
753756 }
754757 }
755758
drivers/gpu/drm/ttm/ttm_tt.c+0−4
@@ -308,9 +308,7 @@ int ttm_tt_swapin(struct ttm_tt *ttm) · 307 unmodified lines
308308 if (unlikely(to_page == NULL))
309309 goto out_err;
310310
311− preempt_disable();
312311 copy_highpage(to_page, from_page);
313− preempt_enable();
314312 page_cache_release(from_page);
315313 }
316314
@@ -358,9 +356,7 @@ int ttm_tt_swapout(struct ttm_tt *ttm, struct file *persistent_swap_storage) · 41 unmodified lines
358356 ret = PTR_ERR(to_page);
359357 goto out_err;
360358 }
361− preempt_disable();
362359 copy_highpage(to_page, from_page);
363− preempt_enable();
364360 set_page_dirty(to_page);
365361 mark_page_accessed(to_page);
366362 page_cache_release(to_page);
drivers/gpu/drm/vmwgfx/vmwgfx_ioctl.c+2−0
@@ -110,6 +110,8 @@ int vmw_get_cap_3d_ioctl(struct drm_device *dev, void *data, · 109 unmodified lines
110110 memcpy_fromio(bounce, &fifo_mem[SVGA_FIFO_3D_CAPS], size);
111111
112112 ret = copy_to_user(buffer, bounce, size);
113+ if (ret)
114+ ret = -EFAULT;
113115 vfree(bounce);
114116
115117 if (unlikely(ret != 0))
drivers/hid/hid-microsoft.c+3−3
@@ -46,9 +46,9 @@ static __u8 *ms_report_fixup(struct hid_device *hdev, __u8 *rdesc, · 45 unmodified lines
4646 rdesc[559] = 0x45;
4747 }
4848 /* the same as above (s/usage/physical/) */
49− if ((quirks & MS_RDESC_3K) && *rsize == 106 &&
50− !memcmp((char []){ 0x19, 0x00, 0x29, 0xff },
51− &rdesc[94], 4)) {
49+ if ((quirks & MS_RDESC_3K) && *rsize == 106 && rdesc[94] == 0x19 &&
50+ rdesc[95] == 0x00 && rdesc[96] == 0x29 &&
51+ rdesc[97] == 0xff) {
5252 rdesc[94] = 0x35;
5353 rdesc[96] = 0x45;
5454 }
drivers/i2c/muxes/i2c-mux-pinctrl.c+1−1
@@ -169,7 +169,7 @@ static int __devinit i2c_mux_pinctrl_probe(struct platform_device *pdev) · 168 unmodified lines
169169 mux->busses = devm_kzalloc(&pdev->dev,
170170 sizeof(mux->busses) * mux->pdata->bus_count,
171171 GFP_KERNEL);
172− if (!mux->states) {
172+ if (!mux->busses) {
173173 dev_err(&pdev->dev, "Cannot allocate busses\n");
174174 ret = -ENOMEM;
175175 goto err;
drivers/irqchip/irq-bcm2835.c+2−1
@@ -168,7 +168,8 @@ static int __init armctrl_of_init(struct device_node *node, · 167 unmodified lines
168168 }
169169
170170 static struct of_device_id irq_of_match[] __initconst = {
171− { .compatible = "brcm,bcm2835-armctrl-ic", .data = armctrl_of_init }
171+ { .compatible = "brcm,bcm2835-armctrl-ic", .data = armctrl_of_init },
172+ { }
172173 };
173174
174175 void __init bcm2835_init_irq(void)
drivers/leds/ledtrig-cpu.c+0−21
@@ -33,8 +33,6 @@ · 32 unmodified lines
3333 struct led_trigger_cpu {
3434 char name[MAX_NAME_LEN];
3535 struct led_trigger *_trig;
36− struct mutex lock;
37− int lock_is_inited;
3836 };
3937
4038 static DEFINE_PER_CPU(struct led_trigger_cpu, cpu_trig);
@@ -50,12 +48,6 @@ void ledtrig_cpu(enum cpu_led_event ledevt) · 9 unmodified lines
5048 {
5149 struct led_trigger_cpu *trig = &__get_cpu_var(cpu_trig);
5250
53− /* mutex lock should be initialized before calling mutex_call() */
54− if (!trig->lock_is_inited)
55− return;
56−
57− mutex_lock(&trig->lock);
58−
5951 /* Locate the correct CPU LED */
6052 switch (ledevt) {
6153 case CPU_LED_IDLE_END:
@@ -75,8 +67,6 @@ void ledtrig_cpu(enum cpu_led_event ledevt) · 13 unmodified lines
7567 /* Will leave the LED as it is */
7668 break;
7769 }
78−
79− mutex_unlock(&trig->lock);
8070 }
8171 EXPORT_SYMBOL(ledtrig_cpu);
8272
@@ -117,14 +107,9 @@ static int __init ledtrig_cpu_init(void) · 34 unmodified lines
117107 for_each_possible_cpu(cpu) {
118108 struct led_trigger_cpu *trig = &per_cpu(cpu_trig, cpu);
119109
120− mutex_init(&trig->lock);
121−
122110 snprintf(trig->name, MAX_NAME_LEN, "cpu%d", cpu);
123111
124− mutex_lock(&trig->lock);
125112 led_trigger_register_simple(trig->name, &trig->_trig);
126− trig->lock_is_inited = 1;
127− mutex_unlock(&trig->lock);
128113 }
129114
130115 register_syscore_ops(&ledtrig_cpu_syscore_ops);
@@ -142,15 +127,9 @@ static void __exit ledtrig_cpu_exit(void) · 11 unmodified lines
142127 for_each_possible_cpu(cpu) {
143128 struct led_trigger_cpu *trig = &per_cpu(cpu_trig, cpu);
144129
145− mutex_lock(&trig->lock);
146−
147130 led_trigger_unregister_simple(trig->_trig);
148131 trig->_trig = NULL;
149132 memset(trig->name, 0, MAX_NAME_LEN);
150− trig->lock_is_inited = 0;
151−
152− mutex_unlock(&trig->lock);
153− mutex_destroy(&trig->lock);
154133 }
155134
156135 unregister_syscore_ops(&ledtrig_cpu_syscore_ops);
drivers/net/ethernet/jme.c+8−20
@@ -1860,10 +1860,14 @@ jme_open(struct net_device *netdev) · 1859 unmodified lines
18601860 jme_clear_pm(jme);
18611861 JME_NAPI_ENABLE(jme);
18621862
1863− tasklet_enable(&jme->linkch_task);
1864− tasklet_enable(&jme->txclean_task);
1865− tasklet_hi_enable(&jme->rxclean_task);
1866− tasklet_hi_enable(&jme->rxempty_task);
1863+ tasklet_init(&jme->linkch_task, jme_link_change_tasklet,
1864+ (unsigned long) jme);
1865+ tasklet_init(&jme->txclean_task, jme_tx_clean_tasklet,
1866+ (unsigned long) jme);
1867+ tasklet_init(&jme->rxclean_task, jme_rx_clean_tasklet,
1868+ (unsigned long) jme);
1869+ tasklet_init(&jme->rxempty_task, jme_rx_empty_tasklet,
1870+ (unsigned long) jme);
18671871
18681872 rc = jme_request_irq(jme);
18691873 if (rc)
@@ -3079,22 +3083,6 @@ jme_init_one(struct pci_dev *pdev, · 1209 unmodified lines
30793083 tasklet_init(&jme->pcc_task,
30803084 jme_pcc_tasklet,
30813085 (unsigned long) jme);
3082− tasklet_init(&jme->linkch_task,
3083− jme_link_change_tasklet,
3084− (unsigned long) jme);
3085− tasklet_init(&jme->txclean_task,
3086− jme_tx_clean_tasklet,
3087− (unsigned long) jme);
3088− tasklet_init(&jme->rxclean_task,
3089− jme_rx_clean_tasklet,
3090− (unsigned long) jme);
3091− tasklet_init(&jme->rxempty_task,
3092− jme_rx_empty_tasklet,
3093− (unsigned long) jme);
3094− tasklet_disable_nosync(&jme->linkch_task);
3095− tasklet_disable_nosync(&jme->txclean_task);
3096− tasklet_disable_nosync(&jme->rxclean_task);
3097− tasklet_disable_nosync(&jme->rxempty_task);
30983086 jme->dpi.cur = PCC_P1;
30993087
31003088 jme->reg_ghc = 0;
drivers/net/ethernet/micrel/ksz884x.c+4−12
@@ -5459,8 +5459,10 @@ static int prepare_hardware(struct net_device *dev) · 5458 unmodified lines
54595459 rc = request_irq(dev->irq, netdev_intr, IRQF_SHARED, dev->name, dev);
54605460 if (rc)
54615461 return rc;
5462− tasklet_enable(&hw_priv->rx_tasklet);
5463− tasklet_enable(&hw_priv->tx_tasklet);
5462+ tasklet_init(&hw_priv->rx_tasklet, rx_proc_task,
5463+ (unsigned long) hw_priv);
5464+ tasklet_init(&hw_priv->tx_tasklet, tx_proc_task,
5465+ (unsigned long) hw_priv);
54645466
54655467 hw->promiscuous = 0;
54665468 hw->all_multi = 0;
@@ -7033,16 +7035,6 @@ static int __devinit pcidev_init(struct pci_dev *pdev, · 1566 unmodified lines
70337035 spin_lock_init(&hw_priv->hwlock);
70347036 mutex_init(&hw_priv->lock);
70357037
7036− /* tasklet is enabled. */
7037− tasklet_init(&hw_priv->rx_tasklet, rx_proc_task,
7038− (unsigned long) hw_priv);
7039− tasklet_init(&hw_priv->tx_tasklet, tx_proc_task,
7040− (unsigned long) hw_priv);
7041−
7042− /* tasklet_enable will decrement the atomic counter. */
7043− tasklet_disable(&hw_priv->rx_tasklet);
7044− tasklet_disable(&hw_priv->tx_tasklet);
7045−
70467038 for (i = 0; i < TOTAL_PORT_NUM; i++)
70477039 init_waitqueue_head(&hw_priv->counter[i].counter);
70487040
drivers/net/ethernet/smsc/smsc911x.c+15−2
@@ -2110,7 +2110,7 @@ static void __devinit smsc911x_read_mac_address(struct net_device *dev) · 2109 unmodified lines
21102110 static int __devinit smsc911x_init(struct net_device *dev)
21112111 {
21122112 struct smsc911x_data *pdata = netdev_priv(dev);
2113− unsigned int byte_test;
2113+ unsigned int byte_test, mask;
21142114 unsigned int to = 100;
21152115
21162116 SMSC_TRACE(pdata, probe, "Driver Parameters:");
@@ -2130,9 +2130,22 @@ static int __devinit smsc911x_init(struct net_device *dev) · 13 unmodified lines
21302130 /*
21312131 * poll the READY bit in PMT_CTRL. Any other access to the device is
21322132 * forbidden while this bit isn't set. Try for 100ms
2133+ *
2134+ * Note that this test is done before the WORD_SWAP register is
2135+ * programmed. So in some configurations the READY bit is at 16 before
2136+ * WORD_SWAP is written to. This issue is worked around by waiting
2137+ * until either bit 0 or bit 16 gets set in PMT_CTRL.
2138+ *
2139+ * SMSC has confirmed that checking bit 16 (marked as reserved in
2140+ * the datasheet) is fine since these bits "will either never be set
2141+ * or can only go high after READY does (so also indicate the device
2142+ * is ready)".
21332143 */
2134− while (!(smsc911x_reg_read(pdata, PMT_CTRL) & PMT_CTRL_READY_) && --to)
2144+
2145+ mask = PMT_CTRL_READY_ | swahw32(PMT_CTRL_READY_);
2146+ while (!(smsc911x_reg_read(pdata, PMT_CTRL) & mask) && --to)
21352147 udelay(1000);
2148+
21362149 if (to == 0) {
21372150 pr_err("Device not READY in 100ms aborting\n");
21382151 return -ENODEV;
drivers/net/ethernet/tile/tilegx.c+1−1
@@ -917,7 +917,7 @@ static int tile_net_setup_interrupts(struct net_device *dev) · 916 unmodified lines
917917 ingress_irq = rc;
918918 tile_irq_activate(ingress_irq, TILE_IRQ_PERCPU);
919919 rc = request_irq(ingress_irq, tile_net_handle_ingress_irq,
920− 0, NULL, NULL);
920+ 0, "tile_net", NULL);
921921 if (rc != 0) {
922922 netdev_err(dev, "request_irq failed: %d\n", rc);
923923 destroy_irq(ingress_irq);
drivers/net/ethernet/xilinx/xilinx_axienet_main.c+6−6
@@ -942,6 +942,10 @@ static int axienet_open(struct net_device *ndev) · 941 unmodified lines
942942 phy_start(lp->phy_dev);
943943 }
944944
945+ /* Enable tasklets for Axi DMA error handling */
946+ tasklet_init(&lp->dma_err_tasklet, axienet_dma_err_handler,
947+ (unsigned long) lp);
948+
945949 /* Enable interrupts for Axi DMA Tx */
946950 ret = request_irq(lp->tx_irq, axienet_tx_irq, 0, ndev->name, ndev);
947951 if (ret)
@@ -950,8 +954,7 @@ static int axienet_open(struct net_device *ndev) · 2 unmodified lines
950954 ret = request_irq(lp->rx_irq, axienet_rx_irq, 0, ndev->name, ndev);
951955 if (ret)
952956 goto err_rx_irq;
953− /* Enable tasklets for Axi DMA error handling */
954− tasklet_enable(&lp->dma_err_tasklet);
957+
955958 return 0;
956959
957960 err_rx_irq:
@@ -960,6 +963,7 @@ err_tx_irq: · 2 unmodified lines
960963 if (lp->phy_dev)
961964 phy_disconnect(lp->phy_dev);
962965 lp->phy_dev = NULL;
966+ tasklet_kill(&lp->dma_err_tasklet);
963967 dev_err(lp->dev, "request_irq() failed\n");
964968 return ret;
965969 }
@@ -1613,10 +1617,6 @@ static int __devinit axienet_of_probe(struct platform_device *op) · 647 unmodified lines
16131617 goto err_iounmap_2;
16141618 }
16151619
1616− tasklet_init(&lp->dma_err_tasklet, axienet_dma_err_handler,
1617− (unsigned long) lp);
1618− tasklet_disable(&lp->dma_err_tasklet);
1619−
16201620 return 0;
16211621
16221622 err_iounmap_2:
drivers/net/phy/mdio-bitbang.c+0−1
@@ -234,7 +234,6 @@ void free_mdio_bitbang(struct mii_bus *bus) · 233 unmodified lines
234234 struct mdiobb_ctrl *ctrl = bus->priv;
235235
236236 module_put(ctrl->ops->owner);
237− mdiobus_unregister(bus);
238237 mdiobus_free(bus);
239238 }
240239 EXPORT_SYMBOL(free_mdio_bitbang);
drivers/net/usb/cdc_ncm.c+18−4
@@ -540,10 +540,12 @@ advance: · 539 unmodified lines
540540 (ctx->ether_desc == NULL) || (ctx->control != intf))
541541 goto error;
542542
543− /* claim interfaces, if any */
544− temp = usb_driver_claim_interface(driver, ctx->data, dev);
545− if (temp)
546− goto error;
543+ /* claim data interface, if different from control */
544+ if (ctx->data != ctx->control) {
545+ temp = usb_driver_claim_interface(driver, ctx->data, dev);
546+ if (temp)
547+ goto error;
548+ }
547549
548550 iface_no = ctx->data->cur_altsetting->desc.bInterfaceNumber;
549551
@@ -623,6 +625,10 @@ static void cdc_ncm_unbind(struct usbnet *dev, struct usb_interface *intf) · 73 unmodified lines
623625
624626 tasklet_kill(&ctx->bh);
625627
628+ /* handle devices with combined control and data interface */
629+ if (ctx->control == ctx->data)
630+ ctx->data = NULL;
631+
626632 /* disconnect master --> disconnect slave */
627633 if (intf == ctx->control && ctx->data) {
628634 usb_set_intfdata(ctx->data, NULL);
@@ -1245,6 +1251,14 @@ static const struct usb_device_id cdc_devs[] = { · 616 unmodified lines
12451251 .driver_info = (unsigned long) &wwan_info,
12461252 },
12471253
1254+ /* Huawei NCM devices disguised as vendor specific */
1255+ { USB_VENDOR_AND_INTERFACE_INFO(0x12d1, 0xff, 0x02, 0x16),
1256+ .driver_info = (unsigned long)&wwan_info,
1257+ },
1258+ { USB_VENDOR_AND_INTERFACE_INFO(0x12d1, 0xff, 0x02, 0x46),
1259+ .driver_info = (unsigned long)&wwan_info,
1260+ },
1261+
12481262 /* Generic CDC-NCM devices */
12491263 { USB_INTERFACE_INFO(USB_CLASS_COMM,
12501264 USB_CDC_SUBCLASS_NCM, USB_CDC_PROTO_NONE),
drivers/net/usb/smsc95xx.c+2−2
@@ -184,7 +184,7 @@ static int smsc95xx_mdio_read(struct net_device *netdev, int phy_id, int idx) · 183 unmodified lines
184184 /* set the address, index & direction (read from PHY) */
185185 phy_id &= dev->mii.phy_id_mask;
186186 idx &= dev->mii.reg_num_mask;
187− addr = (phy_id << 11) | (idx << 6) | MII_READ_;
187+ addr = (phy_id << 11) | (idx << 6) | MII_READ_ | MII_BUSY_;
188188 ret = smsc95xx_write_reg(dev, MII_ADDR, addr);
189189 check_warn_goto_done(ret, "Error writing MII_ADDR");
190190
@@ -221,7 +221,7 @@ static void smsc95xx_mdio_write(struct net_device *netdev, int phy_id, int idx, · 30 unmodified lines
221221 /* set the address, index & direction (write to PHY) */
222222 phy_id &= dev->mii.phy_id_mask;
223223 idx &= dev->mii.reg_num_mask;
224− addr = (phy_id << 11) | (idx << 6) | MII_WRITE_;
224+ addr = (phy_id << 11) | (idx << 6) | MII_WRITE_ | MII_BUSY_;
225225 ret = smsc95xx_write_reg(dev, MII_ADDR, addr);
226226 check_warn_goto_done(ret, "Error writing MII_ADDR");
227227
drivers/net/vxlan.c+7−3
@@ -1,5 +1,5 @@
11 /*
2− * VXLAN: Virtual eXtensiable Local Area Network
2+ * VXLAN: Virtual eXtensible Local Area Network
33 *
44 * Copyright (c) 2012 Vyatta Inc.
55 *
@@ -50,8 +50,8 @@ · 44 unmodified lines
5050
5151 #define VXLAN_N_VID (1u << 24)
5252 #define VXLAN_VID_MASK (VXLAN_N_VID - 1)
53−/* VLAN + IP header + UDP + VXLAN */
54−#define VXLAN_HEADROOM (4 + 20 + 8 + 8)
53+/* IP header + UDP + VXLAN + Ethernet header */
54+#define VXLAN_HEADROOM (20 + 8 + 8 + 14)
5555
5656 #define VXLAN_FLAGS 0x08000000 /* struct vxlanhdr.vx_flags required value. */
5757
@@ -1102,6 +1102,10 @@ static int vxlan_newlink(struct net *net, struct net_device *dev, · 1044 unmodified lines
11021102
11031103 if (!tb[IFLA_MTU])
11041104 dev->mtu = lowerdev->mtu - VXLAN_HEADROOM;
1105+
1106+ /* update header length based on lower device */
1107+ dev->hard_header_len = lowerdev->hard_header_len +
1108+ VXLAN_HEADROOM;
11051109 }
11061110
11071111 if (data[IFLA_VXLAN_TOS])
drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c+1−1
@@ -4401,7 +4401,7 @@ static s32 brcmf_mode_to_nl80211_iftype(s32 mode) · 4400 unmodified lines
44014401
44024402 static void brcmf_wiphy_pno_params(struct wiphy *wiphy)
44034403 {
4404−#ifndef CONFIG_BRCMFISCAN
4404+#ifndef CONFIG_BRCMISCAN
44054405 /* scheduled scan settings */
44064406 wiphy->max_sched_scan_ssids = BRCMF_PNO_MAX_PFN_COUNT;
44074407 wiphy->max_match_sets = BRCMF_PNO_MAX_PFN_COUNT;
drivers/net/wireless/iwlwifi/dvm/mac80211.c+1−1
@@ -521,7 +521,7 @@ static void iwlagn_mac_tx(struct ieee80211_hw *hw, · 520 unmodified lines
521521 ieee80211_get_tx_rate(hw, IEEE80211_SKB_CB(skb))->bitrate);
522522
523523 if (iwlagn_tx_skb(priv, control->sta, skb))
524− dev_kfree_skb_any(skb);
524+ ieee80211_free_txskb(hw, skb);
525525 }
526526
527527 static void iwlagn_mac_update_tkip_key(struct ieee80211_hw *hw,
drivers/net/wireless/iwlwifi/dvm/main.c+1−1
@@ -2114,7 +2114,7 @@ static void iwl_free_skb(struct iwl_op_mode *op_mode, struct sk_buff *skb) · 2113 unmodified lines
21142114
21152115 info = IEEE80211_SKB_CB(skb);
21162116 iwl_trans_free_tx_cmd(priv->trans, info->driver_data[1]);
2117− dev_kfree_skb_any(skb);
2117+ ieee80211_free_txskb(priv->hw, skb);
21182118 }
21192119
21202120 static void iwl_set_hw_rfkill_state(struct iwl_op_mode *op_mode, bool state)
drivers/net/wireless/iwlwifi/pcie/rx.c+21−2
@@ -321,6 +321,14 @@ static void iwl_rx_allocate(struct iwl_trans *trans, gfp_t priority) · 320 unmodified lines
321321 dma_map_page(trans->dev, page, 0,
322322 PAGE_SIZE << trans_pcie->rx_page_order,
323323 DMA_FROM_DEVICE);
324+ if (dma_mapping_error(trans->dev, rxb->page_dma)) {
325+ rxb->page = NULL;
326+ spin_lock_irqsave(&rxq->lock, flags);
327+ list_add(&rxb->list, &rxq->rx_used);
328+ spin_unlock_irqrestore(&rxq->lock, flags);
329+ __free_pages(page, trans_pcie->rx_page_order);
330+ return;
331+ }
324332 /* dma address must be no more than 36 bits */
325333 BUG_ON(rxb->page_dma & ~DMA_BIT_MASK(36));
326334 /* and also 256 byte aligned! */
@@ -488,8 +496,19 @@ static void iwl_rx_handle_rxbuf(struct iwl_trans *trans, · 161 unmodified lines
488496 dma_map_page(trans->dev, rxb->page, 0,
489497 PAGE_SIZE << trans_pcie->rx_page_order,
490498 DMA_FROM_DEVICE);
491− list_add_tail(&rxb->list, &rxq->rx_free);
492− rxq->free_count++;
499+ if (dma_mapping_error(trans->dev, rxb->page_dma)) {
500+ /*
501+ * free the page(s) as well to not break
502+ * the invariant that the items on the used
503+ * list have no page(s)
504+ */
505+ __free_pages(rxb->page, trans_pcie->rx_page_order);
506+ rxb->page = NULL;
507+ list_add_tail(&rxb->list, &rxq->rx_used);
508+ } else {
509+ list_add_tail(&rxb->list, &rxq->rx_free);
510+ rxq->free_count++;
511+ }
493512 } else
494513 list_add_tail(&rxb->list, &rxq->rx_used);
495514 spin_unlock_irqrestore(&rxq->lock, flags);
drivers/rapidio/rio.c+1−1
@@ -401,7 +401,7 @@ EXPORT_SYMBOL_GPL(rio_release_inb_pwrite); · 400 unmodified lines
401401 /**
402402 * rio_map_inb_region -- Map inbound memory region.
403403 * @mport: Master port.
404− * @lstart: physical address of memory region to be mapped
404+ * @local: physical address of memory region to be mapped
405405 * @rbase: RIO base address assigned to this window
406406 * @size: Size of the memory region
407407 * @rflags: Flags for mapping.
drivers/regulator/core.c+20−13
@@ -1381,22 +1381,14 @@ struct regulator *regulator_get_exclusive(struct device *dev, const char *id) · 1380 unmodified lines
13811381 }
13821382 EXPORT_SYMBOL_GPL(regulator_get_exclusive);
13831383
1384−/**
1385− * regulator_put - "free" the regulator source
1386− * @regulator: regulator source
1387− *
1388− * Note: drivers must ensure that all regulator_enable calls made on this
1389− * regulator source are balanced by regulator_disable calls prior to calling
1390− * this function.
1391− */
1392−void regulator_put(struct regulator *regulator)
1384+/* Locks held by regulator_put() */
1385+static void _regulator_put(struct regulator *regulator)
13931386 {
13941387 struct regulator_dev *rdev;
13951388
13961389 if (regulator == NULL || IS_ERR(regulator))
13971390 return;
13981391
1399− mutex_lock(&regulator_list_mutex);
14001392 rdev = regulator->rdev;
14011393
14021394 debugfs_remove_recursive(regulator->debugfs);
@@ -1412,6 +1404,20 @@ void regulator_put(struct regulator *regulator) · 9 unmodified lines
14121404 rdev->exclusive = 0;
14131405
14141406 module_put(rdev->owner);
1407+}
1408+
1409+/**
1410+ * regulator_put - "free" the regulator source
1411+ * @regulator: regulator source
1412+ *
1413+ * Note: drivers must ensure that all regulator_enable calls made on this
1414+ * regulator source are balanced by regulator_disable calls prior to calling
1415+ * this function.
1416+ */
1417+void regulator_put(struct regulator *regulator)
1418+{
1419+ mutex_lock(&regulator_list_mutex);
1420+ _regulator_put(regulator);
14151421 mutex_unlock(&regulator_list_mutex);
14161422 }
14171423 EXPORT_SYMBOL_GPL(regulator_put);
@@ -1974,7 +1980,7 @@ int regulator_is_supported_voltage(struct regulator *regulator, · 556 unmodified lines
19741980 if (!(rdev->constraints->valid_ops_mask & REGULATOR_CHANGE_VOLTAGE)) {
19751981 ret = regulator_get_voltage(regulator);
19761982 if (ret >= 0)
1977− return (min_uV >= ret && ret <= max_uV);
1983+ return (min_uV <= ret && ret <= max_uV);
19781984 else
19791985 return ret;
19801986 }
@@ -3365,7 +3371,7 @@ regulator_register(const struct regulator_desc *regulator_desc, · 1384 unmodified lines
33653371 if (ret != 0) {
33663372 rdev_err(rdev, "Failed to request enable GPIO%d: %d\n",
33673373 config->ena_gpio, ret);
3368− goto clean;
3374+ goto wash;
33693375 }
33703376
33713377 rdev->ena_gpio = config->ena_gpio;
@@ -3445,10 +3451,11 @@ unset_supplies: · 73 unmodified lines
34453451
34463452 scrub:
34473453 if (rdev->supply)
3448− regulator_put(rdev->supply);
3454+ _regulator_put(rdev->supply);
34493455 if (rdev->ena_gpio)
34503456 gpio_free(rdev->ena_gpio);
34513457 kfree(rdev->constraints);
3458+wash:
34523459 device_unregister(&rdev->dev);
34533460 /* device core frees rdev */
34543461 rdev = ERR_PTR(ret);
drivers/s390/char/con3215.c+5−7
@@ -44,7 +44,6 @@ · 43 unmodified lines
4444 #define RAW3215_NR_CCWS 3
4545 #define RAW3215_TIMEOUT HZ/10 /* time for delayed output */
4646
47−#define RAW3215_FIXED 1 /* 3215 console device is not be freed */
4847 #define RAW3215_WORKING 4 /* set if a request is being worked on */
4948 #define RAW3215_THROTTLED 8 /* set if reading is disabled */
5049 #define RAW3215_STOPPED 16 /* set if writing is disabled */
@@ -339,8 +338,10 @@ static void raw3215_wakeup(unsigned long data) · 288 unmodified lines
339338 struct tty_struct *tty;
340339
341340 tty = tty_port_tty_get(&raw->port);
342− tty_wakeup(tty);
343− tty_kref_put(tty);
341+ if (tty) {
342+ tty_wakeup(tty);
343+ tty_kref_put(tty);
344+ }
344345 }
345346
346347 /*
@@ -629,8 +630,7 @@ static void raw3215_shutdown(struct raw3215_info *raw) · 282 unmodified lines
629630 DECLARE_WAITQUEUE(wait, current);
630631 unsigned long flags;
631632
632− if (!(raw->port.flags & ASYNC_INITIALIZED) ||
633− (raw->flags & RAW3215_FIXED))
633+ if (!(raw->port.flags & ASYNC_INITIALIZED))
634634 return;
635635 /* Wait for outstanding requests, then free irq */
636636 spin_lock_irqsave(get_ccwdev_lock(raw->cdev), flags);
@@ -927,8 +927,6 @@ static int __init con3215_init(void) · 290 unmodified lines
927927 dev_set_drvdata(&cdev->dev, raw);
928928 cdev->handler = raw3215_irq;
929929
930− raw->flags |= RAW3215_FIXED;
931−
932930 /* Request the console irq */
933931 if (raw3215_startup(raw) != 0) {
934932 raw3215_free_info(raw);
drivers/s390/net/qeth_core_main.c+22−2
@@ -2942,13 +2942,33 @@ static int qeth_query_ipassists_cb(struct qeth_card *card, · 2941 unmodified lines
29422942 QETH_DBF_TEXT(SETUP, 2, "qipasscb");
29432943
29442944 cmd = (struct qeth_ipa_cmd *) data;
2945+
2946+ switch (cmd->hdr.return_code) {
2947+ case IPA_RC_NOTSUPP:
2948+ case IPA_RC_L2_UNSUPPORTED_CMD:
2949+ QETH_DBF_TEXT(SETUP, 2, "ipaunsup");
2950+ card->options.ipa4.supported_funcs |= IPA_SETADAPTERPARMS;
2951+ card->options.ipa6.supported_funcs |= IPA_SETADAPTERPARMS;
2952+ return -0;
2953+ default:
2954+ if (cmd->hdr.return_code) {
2955+ QETH_DBF_MESSAGE(1, "%s IPA_CMD_QIPASSIST: Unhandled "
2956+ "rc=%d\n",
2957+ dev_name(&card->gdev->dev),
2958+ cmd->hdr.return_code);
2959+ return 0;
2960+ }
2961+ }
2962+
29452963 if (cmd->hdr.prot_version == QETH_PROT_IPV4) {
29462964 card->options.ipa4.supported_funcs = cmd->hdr.ipa_supported;
29472965 card->options.ipa4.enabled_funcs = cmd->hdr.ipa_enabled;
2948− } else {
2966+ } else if (cmd->hdr.prot_version == QETH_PROT_IPV6) {
29492967 card->options.ipa6.supported_funcs = cmd->hdr.ipa_supported;
29502968 card->options.ipa6.enabled_funcs = cmd->hdr.ipa_enabled;
2951− }
2969+ } else
2970+ QETH_DBF_MESSAGE(1, "%s IPA_CMD_QIPASSIST: Flawed LIC detected"
2971+ "\n", dev_name(&card->gdev->dev));
29522972 QETH_DBF_TEXT(SETUP, 2, "suppenbl");
29532973 QETH_DBF_TEXT_(SETUP, 2, "%08x", (__u32)cmd->hdr.ipa_supported);
29542974 QETH_DBF_TEXT_(SETUP, 2, "%08x", (__u32)cmd->hdr.ipa_enabled);
drivers/s390/net/qeth_l2_main.c+8−5
@@ -626,10 +626,13 @@ static int qeth_l2_request_initial_mac(struct qeth_card *card) · 625 unmodified lines
626626 QETH_DBF_TEXT(SETUP, 2, "doL2init");
627627 QETH_DBF_TEXT_(SETUP, 2, "doL2%s", CARD_BUS_ID(card));
628628
629− rc = qeth_query_setadapterparms(card);
630− if (rc) {
631− QETH_DBF_MESSAGE(2, "could not query adapter parameters on "
632− "device %s: x%x\n", CARD_BUS_ID(card), rc);
629+ if (qeth_is_supported(card, IPA_SETADAPTERPARMS)) {
630+ rc = qeth_query_setadapterparms(card);
631+ if (rc) {
632+ QETH_DBF_MESSAGE(2, "could not query adapter "
633+ "parameters on device %s: x%x\n",
634+ CARD_BUS_ID(card), rc);
635+ }
633636 }
634637
635638 if (card->info.type == QETH_CARD_TYPE_IQD ||
@@ -676,7 +679,7 @@ static int qeth_l2_set_mac_address(struct net_device *dev, void *p) · 40 unmodified lines
676679 return -ERESTARTSYS;
677680 }
678681 rc = qeth_l2_send_delmac(card, &card->dev->dev_addr[0]);
679− if (!rc)
682+ if (!rc || (rc == IPA_RC_L2_MAC_NOT_FOUND))
680683 rc = qeth_l2_send_setmac(card, addr->sa_data);
681684 return rc ? -EINVAL : 0;
682685 }
drivers/staging/android/android_alarm.h+1−3
@@ -51,12 +51,10 @@ enum android_alarm_return_flags { · 50 unmodified lines
5151 #define ANDROID_ALARM_WAIT _IO('a', 1)
5252
5353 #define ALARM_IOW(c, type, size) _IOW('a', (c) | ((type) << 4), size)
54−#define ALARM_IOR(c, type, size) _IOR('a', (c) | ((type) << 4), size)
55−
5654 /* Set alarm */
5755 #define ANDROID_ALARM_SET(type) ALARM_IOW(2, type, struct timespec)
5856 #define ANDROID_ALARM_SET_AND_WAIT(type) ALARM_IOW(3, type, struct timespec)
59−#define ANDROID_ALARM_GET_TIME(type) ALARM_IOR(4, type, struct timespec)
57+#define ANDROID_ALARM_GET_TIME(type) ALARM_IOW(4, type, struct timespec)
6058 #define ANDROID_ALARM_SET_RTC _IOW('a', 5, struct timespec)
6159 #define ANDROID_ALARM_BASE_CMD(cmd) (cmd & ~(_IOC(0, 0, 0xf0, 0)))
6260 #define ANDROID_ALARM_IOCTL_TO_TYPE(cmd) (_IOC_NR(cmd) >> 4)
drivers/tty/hvc/hvc_console.c+0−7
@@ -424,7 +424,6 @@ static void hvc_hangup(struct tty_struct *tty) · 423 unmodified lines
424424 {
425425 struct hvc_struct *hp = tty->driver_data;
426426 unsigned long flags;
427− int temp_open_count;
428427
429428 if (!hp)
430429 return;
@@ -444,7 +443,6 @@ static void hvc_hangup(struct tty_struct *tty) · 13 unmodified lines
444443 return;
445444 }
446445
447− temp_open_count = hp->port.count;
448446 hp->port.count = 0;
449447 spin_unlock_irqrestore(&hp->port.lock, flags);
450448 tty_port_tty_set(&hp->port, NULL);
@@ -453,11 +451,6 @@ static void hvc_hangup(struct tty_struct *tty) · 2 unmodified lines
453451
454452 if (hp->ops->notifier_hangup)
455453 hp->ops->notifier_hangup(hp, hp->data);
456−
457− while(temp_open_count) {
458− --temp_open_count;
459− tty_port_put(&hp->port);
460− }
461454 }
462455
463456 /*
drivers/tty/serial/max310x.c+1−0
@@ -1239,6 +1239,7 @@ static int __devexit max310x_remove(struct spi_device *spi) · 1238 unmodified lines
12391239 static const struct spi_device_id max310x_id_table[] = {
12401240 { "max3107", MAX310X_TYPE_MAX3107 },
12411241 { "max3108", MAX310X_TYPE_MAX3108 },
1242+ { }
12421243 };
12431244 MODULE_DEVICE_TABLE(spi, max310x_id_table);
12441245
drivers/usb/core/hcd.c+16−0
@@ -2151,8 +2151,15 @@ EXPORT_SYMBOL_GPL(usb_bus_start_enum); · 2150 unmodified lines
21512151 irqreturn_t usb_hcd_irq (int irq, void *__hcd)
21522152 {
21532153 struct usb_hcd *hcd = __hcd;
2154+ unsigned long flags;
21542155 irqreturn_t rc;
21552156
2157+ /* IRQF_DISABLED doesn't work correctly with shared IRQs
2158+ * when the first handler doesn't use it. So let's just
2159+ * assume it's never used.
2160+ */
2161+ local_irq_save(flags);
2162+
21562163 if (unlikely(HCD_DEAD(hcd) || !HCD_HW_ACCESSIBLE(hcd)))
21572164 rc = IRQ_NONE;
21582165 else if (hcd->driver->irq(hcd) == IRQ_NONE)
@@ -2160,6 +2167,7 @@ irqreturn_t usb_hcd_irq (int irq, void *__hcd) · 1 unmodified line
21602167 else
21612168 rc = IRQ_HANDLED;
21622169
2170+ local_irq_restore(flags);
21632171 return rc;
21642172 }
21652173 EXPORT_SYMBOL_GPL(usb_hcd_irq);
@@ -2347,6 +2355,14 @@ static int usb_hcd_request_irqs(struct usb_hcd *hcd, · 181 unmodified lines
23472355 int retval;
23482356
23492357 if (hcd->driver->irq) {
2358+
2359+ /* IRQF_DISABLED doesn't work as advertised when used together
2360+ * with IRQF_SHARED. As usb_hcd_irq() will always disable
2361+ * interrupts we can remove it here.
2362+ */
2363+ if (irqflags & IRQF_SHARED)
2364+ irqflags &= ~IRQF_DISABLED;
2365+
23502366 snprintf(hcd->irq_descr, sizeof(hcd->irq_descr), "%s:usb%d",
23512367 hcd->driver->description, hcd->self.busnum);
23522368 retval = request_irq(irqnum, &usb_hcd_irq, irqflags,
drivers/usb/early/ehci-dbgp.c+9−6
@@ -20,6 +20,7 @@ · 19 unmodified lines
2020 #include <linux/usb/ehci_def.h>
2121 #include <linux/delay.h>
2222 #include <linux/serial_core.h>
23+#include <linux/kconfig.h>
2324 #include <linux/kgdb.h>
2425 #include <linux/kthread.h>
2526 #include <asm/io.h>
@@ -614,12 +615,6 @@ err: · 588 unmodified lines
614615 return -ENODEV;
615616 }
616617
617−int dbgp_external_startup(struct usb_hcd *hcd)
618−{
619− return xen_dbgp_external_startup(hcd) ?: _dbgp_external_startup();
620−}
621−EXPORT_SYMBOL_GPL(dbgp_external_startup);
622−
623618 static int ehci_reset_port(int port)
624619 {
625620 u32 portsc;
@@ -979,6 +974,7 @@ struct console early_dbgp_console = { · 353 unmodified lines
979974 .index = -1,
980975 };
981976
977+#if IS_ENABLED(CONFIG_USB_EHCI_HCD)
982978 int dbgp_reset_prep(struct usb_hcd *hcd)
983979 {
984980 int ret = xen_dbgp_reset_prep(hcd);
@@ -1007,6 +1003,13 @@ int dbgp_reset_prep(struct usb_hcd *hcd) · 22 unmodified lines
10071003 }
10081004 EXPORT_SYMBOL_GPL(dbgp_reset_prep);
10091005
1006+int dbgp_external_startup(struct usb_hcd *hcd)
1007+{
1008+ return xen_dbgp_external_startup(hcd) ?: _dbgp_external_startup();
1009+}
1010+EXPORT_SYMBOL_GPL(dbgp_external_startup);
1011+#endif /* USB_EHCI_HCD */
1012+
10101013 #ifdef CONFIG_KGDB
10111014
10121015 static char kgdbdbgp_buf[DBGP_MAX_PACKET];
drivers/usb/host/ehci-ls1x.c+1−1
@@ -113,7 +113,7 @@ static int ehci_hcd_ls1x_probe(struct platform_device *pdev) · 112 unmodified lines
113113 goto err_put_hcd;
114114 }
115115
116− ret = usb_add_hcd(hcd, irq, IRQF_SHARED);
116+ ret = usb_add_hcd(hcd, irq, IRQF_DISABLED | IRQF_SHARED);
117117 if (ret)
118118 goto err_put_hcd;
119119
drivers/usb/host/ohci-xls.c+1−1
@@ -56,7 +56,7 @@ static int ohci_xls_probe_internal(const struct hc_driver *driver, · 55 unmodified lines
5656 goto err3;
5757 }
5858
59− retval = usb_add_hcd(hcd, irq, IRQF_SHARED);
59+ retval = usb_add_hcd(hcd, irq, IRQF_DISABLED | IRQF_SHARED);
6060 if (retval != 0)
6161 goto err4;
6262 return retval;
drivers/usb/musb/musb_gadget.c+26−4
@@ -707,11 +707,12 @@ static void rxstate(struct musb *musb, struct musb_request *req) · 706 unmodified lines
707707 fifo_count = musb_readw(epio, MUSB_RXCOUNT);
708708
709709 /*
710− * use mode 1 only if we expect data of at least ep packet_sz
711− * and have not yet received a short packet
710+ * Enable Mode 1 on RX transfers only when short_not_ok flag
711+ * is set. Currently short_not_ok flag is set only from
712+ * file_storage and f_mass_storage drivers
712713 */
713− if ((request->length - request->actual >= musb_ep->packet_sz) &&
714− (fifo_count >= musb_ep->packet_sz))
714+
715+ if (request->short_not_ok && fifo_count == musb_ep->packet_sz)
715716 use_mode_1 = 1;
716717 else
717718 use_mode_1 = 0;
@@ -727,6 +728,27 @@ static void rxstate(struct musb *musb, struct musb_request *req) · 9 unmodified lines
727728 c = musb->dma_controller;
728729 channel = musb_ep->dma;
729730
731+ /* We use DMA Req mode 0 in rx_csr, and DMA controller operates in
732+ * mode 0 only. So we do not get endpoint interrupts due to DMA
733+ * completion. We only get interrupts from DMA controller.
734+ *
735+ * We could operate in DMA mode 1 if we knew the size of the tranfer
736+ * in advance. For mass storage class, request->length = what the host
737+ * sends, so that'd work. But for pretty much everything else,
738+ * request->length is routinely more than what the host sends. For
739+ * most these gadgets, end of is signified either by a short packet,
740+ * or filling the last byte of the buffer. (Sending extra data in
741+ * that last pckate should trigger an overflow fault.) But in mode 1,
742+ * we don't get DMA completion interrupt for short packets.
743+ *
744+ * Theoretically, we could enable DMAReq irq (MUSB_RXCSR_DMAMODE = 1),
745+ * to get endpoint interrupt on every DMA req, but that didn't seem
746+ * to work reliably.
747+ *
748+ * REVISIT an updated g_file_storage can set req->short_not_ok, which
749+ * then becomes usable as a runtime "use mode 1" hint...
750+ */
751+
730752 /* Experimental: Mode1 works with mass storage use cases */
731753 if (use_mode_1) {
732754 csr |= MUSB_RXCSR_AUTOCLEAR;
drivers/usb/musb/ux500.c+1−1
@@ -65,7 +65,7 @@ static int __devinit ux500_probe(struct platform_device *pdev) · 64 unmodified lines
6565 struct platform_device *musb;
6666 struct ux500_glue *glue;
6767 struct clk *clk;
68−
68+ int musbid;
6969 int ret = -ENOMEM;
7070
7171 glue = kzalloc(sizeof(*glue), GFP_KERNEL);
drivers/usb/otg/Kconfig+2−2
@@ -58,7 +58,7 @@ config USB_ULPI_VIEWPORT · 57 unmodified lines
5858
5959 config TWL4030_USB
6060 tristate "TWL4030 USB Transceiver Driver"
61− depends on TWL4030_CORE && REGULATOR_TWL4030
61+ depends on TWL4030_CORE && REGULATOR_TWL4030 && USB_MUSB_OMAP2PLUS
6262 select USB_OTG_UTILS
6363 help
6464 Enable this to support the USB OTG transceiver on TWL4030
@@ -68,7 +68,7 @@ config TWL4030_USB · 3 unmodified lines
6868
6969 config TWL6030_USB
7070 tristate "TWL6030 USB Transceiver Driver"
71− depends on TWL4030_CORE && OMAP_USB2
71+ depends on TWL4030_CORE && OMAP_USB2 && USB_MUSB_OMAP2PLUS
7272 select USB_OTG_UTILS
7373 help
7474 Enable this to support the USB OTG transceiver on TWL6030
drivers/usb/serial/keyspan.c+1−2
@@ -2430,7 +2430,7 @@ static void keyspan_release(struct usb_serial *serial) · 2429 unmodified lines
24302430 static int keyspan_port_probe(struct usb_serial_port *port)
24312431 {
24322432 struct usb_serial *serial = port->serial;
2433− struct keyspan_port_private *s_priv;
2433+ struct keyspan_serial_private *s_priv;
24342434 struct keyspan_port_private *p_priv;
24352435 const struct keyspan_device_details *d_details;
24362436 struct callbacks *cback;
@@ -2445,7 +2445,6 @@ static int keyspan_port_probe(struct usb_serial_port *port) · 8 unmodified lines
24452445 if (!p_priv)
24462446 return -ENOMEM;
24472447
2448− s_priv = usb_get_serial_data(port->serial);
24492448 p_priv->device_details = d_details;
24502449
24512450 /* Setup values for the various callback routines */
drivers/usb/serial/option.c+9−0
@@ -158,6 +158,7 @@ static void option_instat_callback(struct urb *urb); · 157 unmodified lines
158158 #define NOVATELWIRELESS_PRODUCT_EVDO_EMBEDDED_HIGHSPEED 0x8001
159159 #define NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_FULLSPEED 0x9000
160160 #define NOVATELWIRELESS_PRODUCT_HSPA_EMBEDDED_HIGHSPEED 0x9001
161+#define NOVATELWIRELESS_PRODUCT_E362 0x9010
161162 #define NOVATELWIRELESS_PRODUCT_G1 0xA001
162163 #define NOVATELWIRELESS_PRODUCT_G1_M 0xA002
163164 #define NOVATELWIRELESS_PRODUCT_G2 0xA010
@@ -193,6 +194,9 @@ static void option_instat_callback(struct urb *urb); · 29 unmodified lines
193194 #define DELL_PRODUCT_5730_MINICARD_TELUS 0x8181
194195 #define DELL_PRODUCT_5730_MINICARD_VZW 0x8182
195196
197+#define DELL_PRODUCT_5800_MINICARD_VZW 0x8195 /* Novatel E362 */
198+#define DELL_PRODUCT_5800_V2_MINICARD_VZW 0x8196 /* Novatel E362 */
199+
196200 #define KYOCERA_VENDOR_ID 0x0c88
197201 #define KYOCERA_PRODUCT_KPC650 0x17da
198202 #define KYOCERA_PRODUCT_KPC680 0x180a
@@ -283,6 +287,7 @@ static void option_instat_callback(struct urb *urb); · 84 unmodified lines
283287 /* ALCATEL PRODUCTS */
284288 #define ALCATEL_VENDOR_ID 0x1bbb
285289 #define ALCATEL_PRODUCT_X060S_X200 0x0000
290+#define ALCATEL_PRODUCT_X220_X500D 0x0017
286291
287292 #define PIRELLI_VENDOR_ID 0x1266
288293 #define PIRELLI_PRODUCT_C100_1 0x1002
@@ -706,6 +711,7 @@ static const struct usb_device_id option_ids[] = { · 417 unmodified lines
706711 { USB_DEVICE(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_G2) },
707712 /* Novatel Ovation MC551 a.k.a. Verizon USB551L */
708713 { USB_DEVICE_AND_INTERFACE_INFO(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_MC551, 0xff, 0xff, 0xff) },
714+ { USB_DEVICE_AND_INTERFACE_INFO(NOVATELWIRELESS_VENDOR_ID, NOVATELWIRELESS_PRODUCT_E362, 0xff, 0xff, 0xff) },
709715
710716 { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01) },
711717 { USB_DEVICE(AMOI_VENDOR_ID, AMOI_PRODUCT_H01A) },
@@ -728,6 +734,8 @@ static const struct usb_device_id option_ids[] = { · 16 unmodified lines
728734 { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_SPRINT) }, /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */
729735 { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_TELUS) }, /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */
730736 { USB_DEVICE(DELL_VENDOR_ID, DELL_PRODUCT_5730_MINICARD_VZW) }, /* Dell Wireless 5730 Mobile Broadband EVDO/HSPA Mini-Card */
737+ { USB_DEVICE_AND_INTERFACE_INFO(DELL_VENDOR_ID, DELL_PRODUCT_5800_MINICARD_VZW, 0xff, 0xff, 0xff) },
738+ { USB_DEVICE_AND_INTERFACE_INFO(DELL_VENDOR_ID, DELL_PRODUCT_5800_V2_MINICARD_VZW, 0xff, 0xff, 0xff) },
731739 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_E100A) }, /* ADU-E100, ADU-310 */
732740 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) },
733741 { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_620UW) },
@@ -1157,6 +1165,7 @@ static const struct usb_device_id option_ids[] = { · 423 unmodified lines
11571165 { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X060S_X200),
11581166 .driver_info = (kernel_ulong_t)&alcatel_x200_blacklist
11591167 },
1168+ { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_X220_X500D) },
11601169 { USB_DEVICE(AIRPLUS_VENDOR_ID, AIRPLUS_PRODUCT_MCD650) },
11611170 { USB_DEVICE(TLAYTECH_VENDOR_ID, TLAYTECH_PRODUCT_TEU800) },
11621171 { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W14),
drivers/usb/serial/usb_wwan.c+5−5
@@ -455,9 +455,6 @@ static struct urb *usb_wwan_setup_urb(struct usb_serial_port *port, · 454 unmodified lines
455455 struct usb_serial *serial = port->serial;
456456 struct urb *urb;
457457
458− if (endpoint == -1)
459− return NULL; /* endpoint not needed */
460−
461458 urb = usb_alloc_urb(0, GFP_KERNEL); /* No ISO */
462459 if (urb == NULL) {
463460 dev_dbg(&serial->interface->dev,
@@ -489,6 +486,9 @@ int usb_wwan_port_probe(struct usb_serial_port *port) · 25 unmodified lines
489486 init_usb_anchor(&portdata->delayed);
490487
491488 for (i = 0; i < N_IN_URB; i++) {
489+ if (!port->bulk_in_size)
490+ break;
491+
492492 buffer = (u8 *)__get_free_page(GFP_KERNEL);
493493 if (!buffer)
494494 goto bail_out_error;
@@ -502,8 +502,8 @@ int usb_wwan_port_probe(struct usb_serial_port *port) · 7 unmodified lines
502502 }
503503
504504 for (i = 0; i < N_OUT_URB; i++) {
505− if (port->bulk_out_endpointAddress == -1)
506− continue;
505+ if (!port->bulk_out_size)
506+ break;
507507
508508 buffer = kmalloc(OUT_BUFLEN, GFP_KERNEL);
509509 if (!buffer)
fs/proc/base.c+109−0
@@ -873,6 +873,113 @@ static const struct file_operations proc_environ_operations = { · 872 unmodified lines
873873 .release = mem_release,
874874 };
875875
876+static ssize_t oom_adj_read(struct file *file, char __user *buf, size_t count,
877+ loff_t *ppos)
878+{
879+ struct task_struct *task = get_proc_task(file->f_path.dentry->d_inode);
880+ char buffer[PROC_NUMBUF];
881+ int oom_adj = OOM_ADJUST_MIN;
882+ size_t len;
883+ unsigned long flags;
884+
885+ if (!task)
886+ return -ESRCH;
887+ if (lock_task_sighand(task, &flags)) {
888+ if (task->signal->oom_score_adj == OOM_SCORE_ADJ_MAX)
889+ oom_adj = OOM_ADJUST_MAX;
890+ else
891+ oom_adj = (task->signal->oom_score_adj * -OOM_DISABLE) /
892+ OOM_SCORE_ADJ_MAX;
893+ unlock_task_sighand(task, &flags);
894+ }
895+ put_task_struct(task);
896+ len = snprintf(buffer, sizeof(buffer), "%d\n", oom_adj);
897+ return simple_read_from_buffer(buf, count, ppos, buffer, len);
898+}
899+
900+static ssize_t oom_adj_write(struct file *file, const char __user *buf,
901+ size_t count, loff_t *ppos)
902+{
903+ struct task_struct *task;
904+ char buffer[PROC_NUMBUF];
905+ int oom_adj;
906+ unsigned long flags;
907+ int err;
908+
909+ memset(buffer, 0, sizeof(buffer));
910+ if (count > sizeof(buffer) - 1)
911+ count = sizeof(buffer) - 1;
912+ if (copy_from_user(buffer, buf, count)) {
913+ err = -EFAULT;
914+ goto out;
915+ }
916+
917+ err = kstrtoint(strstrip(buffer), 0, &oom_adj);
918+ if (err)
919+ goto out;
920+ if ((oom_adj < OOM_ADJUST_MIN || oom_adj > OOM_ADJUST_MAX) &&
921+ oom_adj != OOM_DISABLE) {
922+ err = -EINVAL;
923+ goto out;
924+ }
925+
926+ task = get_proc_task(file->f_path.dentry->d_inode);
927+ if (!task) {
928+ err = -ESRCH;
929+ goto out;
930+ }
931+
932+ task_lock(task);
933+ if (!task->mm) {
934+ err = -EINVAL;
935+ goto err_task_lock;
936+ }
937+
938+ if (!lock_task_sighand(task, &flags)) {
939+ err = -ESRCH;
940+ goto err_task_lock;
941+ }
942+
943+ /*
944+ * Scale /proc/pid/oom_score_adj appropriately ensuring that a maximum
945+ * value is always attainable.
946+ */
947+ if (oom_adj == OOM_ADJUST_MAX)
948+ oom_adj = OOM_SCORE_ADJ_MAX;
949+ else
950+ oom_adj = (oom_adj * OOM_SCORE_ADJ_MAX) / -OOM_DISABLE;
951+
952+ if (oom_adj < task->signal->oom_score_adj &&
953+ !capable(CAP_SYS_RESOURCE)) {
954+ err = -EACCES;
955+ goto err_sighand;
956+ }
957+
958+ /*
959+ * /proc/pid/oom_adj is provided for legacy purposes, ask users to use
960+ * /proc/pid/oom_score_adj instead.
961+ */
962+ printk_once(KERN_WARNING "%s (%d): /proc/%d/oom_adj is deprecated, please use /proc/%d/oom_score_adj instead.\n",
963+ current->comm, task_pid_nr(current), task_pid_nr(task),
964+ task_pid_nr(task));
965+
966+ task->signal->oom_score_adj = oom_adj;
967+ trace_oom_score_adj_update(task);
968+err_sighand:
969+ unlock_task_sighand(task, &flags);
970+err_task_lock:
971+ task_unlock(task);
972+ put_task_struct(task);
973+out:
974+ return err < 0 ? err : count;
975+}
976+
977+static const struct file_operations proc_oom_adj_operations = {
978+ .read = oom_adj_read,
979+ .write = oom_adj_write,
980+ .llseek = generic_file_llseek,
981+};
982+
876983 static ssize_t oom_score_adj_read(struct file *file, char __user *buf,
877984 size_t count, loff_t *ppos)
878985 {
@@ -2598,6 +2705,7 @@ static const struct pid_entry tgid_base_stuff[] = { · 1719 unmodified lines
25982705 REG("cgroup", S_IRUGO, proc_cgroup_operations),
25992706 #endif
26002707 INF("oom_score", S_IRUGO, proc_oom_score),
2708+ REG("oom_adj", S_IRUGO|S_IWUSR, proc_oom_adj_operations),
26012709 REG("oom_score_adj", S_IRUGO|S_IWUSR, proc_oom_score_adj_operations),
26022710 #ifdef CONFIG_AUDITSYSCALL
26032711 REG("loginuid", S_IWUSR|S_IRUGO, proc_loginuid_operations),
@@ -2964,6 +3072,7 @@ static const struct pid_entry tid_base_stuff[] = { · 360 unmodified lines
29643072 REG("cgroup", S_IRUGO, proc_cgroup_operations),
29653073 #endif
29663074 INF("oom_score", S_IRUGO, proc_oom_score),
3075+ REG("oom_adj", S_IRUGO|S_IWUSR, proc_oom_adj_operations),
29673076 REG("oom_score_adj", S_IRUGO|S_IWUSR, proc_oom_score_adj_operations),
29683077 #ifdef CONFIG_AUDITSYSCALL
29693078 REG("loginuid", S_IWUSR|S_IRUGO, proc_loginuid_operations),
fs/pstore/platform.c+2−1
@@ -161,6 +161,7 @@ static void pstore_console_write(struct console *con, const char *s, unsigned c) · 160 unmodified lines
161161
162162 while (s < e) {
163163 unsigned long flags;
164+ u64 id;
164165
165166 if (c > psinfo->bufsize)
166167 c = psinfo->bufsize;
@@ -172,7 +173,7 @@ static void pstore_console_write(struct console *con, const char *s, unsigned c) · 5 unmodified lines
172173 spin_lock_irqsave(&psinfo->buf_lock, flags);
173174 }
174175 memcpy(psinfo->buf, s, c);
175− psinfo->write(PSTORE_TYPE_CONSOLE, 0, NULL, 0, c, psinfo);
176+ psinfo->write(PSTORE_TYPE_CONSOLE, 0, &id, 0, c, psinfo);
176177 spin_unlock_irqrestore(&psinfo->buf_lock, flags);
177178 s += c;
178179 c = e - s;
fs/ubifs/find.c+10−2
@@ -681,8 +681,16 @@ int ubifs_find_free_leb_for_idx(struct ubifs_info *c) · 680 unmodified lines
681681 if (!lprops) {
682682 lprops = ubifs_fast_find_freeable(c);
683683 if (!lprops) {
684− ubifs_assert(c->freeable_cnt == 0);
685− if (c->lst.empty_lebs - c->lst.taken_empty_lebs > 0) {
684+ /*
685+ * The first condition means the following: go scan the
686+ * LPT if there are uncategorized lprops, which means
687+ * there may be freeable LEBs there (UBIFS does not
688+ * store the information about freeable LEBs in the
689+ * master node).
690+ */
691+ if (c->in_a_category_cnt != c->main_lebs ||
692+ c->lst.empty_lebs - c->lst.taken_empty_lebs > 0) {
693+ ubifs_assert(c->freeable_cnt == 0);
686694 lprops = scan_for_leb_for_idx(c);
687695 if (IS_ERR(lprops)) {
688696 err = PTR_ERR(lprops);
fs/ubifs/lprops.c+6−0
@@ -300,8 +300,11 @@ void ubifs_add_to_cat(struct ubifs_info *c, struct ubifs_lprops *lprops, · 299 unmodified lines
300300 default:
301301 ubifs_assert(0);
302302 }
303+
303304 lprops->flags &= ~LPROPS_CAT_MASK;
304305 lprops->flags |= cat;
306+ c->in_a_category_cnt += 1;
307+ ubifs_assert(c->in_a_category_cnt <= c->main_lebs);
305308 }
306309
307310 /**
@@ -334,6 +337,9 @@ static void ubifs_remove_from_cat(struct ubifs_info *c, · 26 unmodified lines
334337 default:
335338 ubifs_assert(0);
336339 }
340+
341+ c->in_a_category_cnt -= 1;
342+ ubifs_assert(c->in_a_category_cnt >= 0);
337343 }
338344
339345 /**
fs/ubifs/ubifs.h+3−0
@@ -1183,6 +1183,8 @@ struct ubifs_debug_info; · 1182 unmodified lines
11831183 * @freeable_list: list of freeable non-index LEBs (free + dirty == @leb_size)
11841184 * @frdi_idx_list: list of freeable index LEBs (free + dirty == @leb_size)
11851185 * @freeable_cnt: number of freeable LEBs in @freeable_list
1186+ * @in_a_category_cnt: count of lprops which are in a certain category, which
1187+ * basically meants that they were loaded from the flash
11861188 *
11871189 * @ltab_lnum: LEB number of LPT's own lprops table
11881190 * @ltab_offs: offset of LPT's own lprops table
@@ -1412,6 +1414,7 @@ struct ubifs_info { · 223 unmodified lines
14121414 struct list_head freeable_list;
14131415 struct list_head frdi_idx_list;
14141416 int freeable_cnt;
1417+ int in_a_category_cnt;
14151418
14161419 int ltab_lnum;
14171420 int ltab_offs;
include/linux/clk-provider.h+2−2
@@ -335,8 +335,8 @@ const char *__clk_get_name(struct clk *clk); · 334 unmodified lines
335335 struct clk_hw *__clk_get_hw(struct clk *clk);
336336 u8 __clk_get_num_parents(struct clk *clk);
337337 struct clk *__clk_get_parent(struct clk *clk);
338−inline int __clk_get_enable_count(struct clk *clk);
339−inline int __clk_get_prepare_count(struct clk *clk);
338+int __clk_get_enable_count(struct clk *clk);
339+int __clk_get_prepare_count(struct clk *clk);
340340 unsigned long __clk_get_rate(struct clk *clk);
341341 unsigned long __clk_get_flags(struct clk *clk);
342342 int __clk_is_enabled(struct clk *clk);
include/linux/mm.h+0−4
@@ -1684,9 +1684,5 @@ static inline unsigned int debug_guardpage_minorder(void) { return 0; } · 1683 unmodified lines
16841684 static inline bool page_is_guard(struct page *page) { return false; }
16851685 #endif /* CONFIG_DEBUG_PAGEALLOC */
16861686
1687−extern void reset_zone_present_pages(void);
1688−extern void fixup_zone_present_pages(int nid, unsigned long start_pfn,
1689− unsigned long end_pfn);
1690−
16911687 #endif /* __KERNEL__ */
16921688 #endif /* _LINUX_MM_H */
include/linux/mmzone.h+1−1
@@ -752,7 +752,7 @@ extern int init_currently_empty_zone(struct zone *zone, unsigned long start_pfn, · 751 unmodified lines
752752 unsigned long size,
753753 enum memmap_context context);
754754
755−extern void lruvec_init(struct lruvec *lruvec, struct zone *zone);
755+extern void lruvec_init(struct lruvec *lruvec);
756756
757757 static inline struct zone *lruvec_zone(struct lruvec *lruvec)
758758 {
include/linux/platform_data/omap_ocp2scp.h+31−0
@@ -0,0 +1,31 @@
1+/*
2+ * omap_ocp2scp.h -- ocp2scp header file
3+ *
4+ * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com
5+ * This program is free software; you can redistribute it and/or modify
6+ * it under the terms of the GNU General Public License as published by
7+ * the Free Software Foundation; either version 2 of the License, or
8+ * (at your option) any later version.
9+ *
10+ * Author: Kishon Vijay Abraham I <kishon@ti.com>
11+ *
12+ * This program is distributed in the hope that it will be useful,
13+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
14+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15+ * GNU General Public License for more details.
16+ *
17+ */
18+
19+#ifndef __DRIVERS_OMAP_OCP2SCP_H
20+#define __DRIVERS_OMAP_OCP2SCP_H
21+
22+struct omap_ocp2scp_dev {
23+ const char *drv_name;
24+ struct resource *res;
25+};
26+
27+struct omap_ocp2scp_platform_data {
28+ int dev_cnt;
29+ struct omap_ocp2scp_dev **devices;
30+};
31+#endif /* __DRIVERS_OMAP_OCP2SCP_H */
include/linux/rio.h+2−0
@@ -275,9 +275,11 @@ struct rio_id_table { · 274 unmodified lines
275275 * struct rio_net - RIO network info
276276 * @node: Node in global list of RIO networks
277277 * @devices: List of devices in this network
278+ * @switches: List of switches in this netowrk
278279 * @mports: List of master ports accessing this network
279280 * @hport: Default port for accessing this network
280281 * @id: RIO network ID
282+ * @destid_table: destID allocation table
281283 */
282284 struct rio_net {
283285 struct list_head node; /* node in list of networks */
include/uapi/linux/oom.h+9−0
@@ -8,4 +8,13 @@ · 7 unmodified lines
88 #define OOM_SCORE_ADJ_MIN (-1000)
99 #define OOM_SCORE_ADJ_MAX 1000
1010
11+/*
12+ * /proc/<pid>/oom_adj set to -17 protects from the oom killer for legacy
13+ * purposes.
14+ */
15+#define OOM_DISABLE (-17)
16+/* inclusive */
17+#define OOM_ADJUST_MIN (-16)
18+#define OOM_ADJUST_MAX 15
19+
1120 #endif /* _UAPI__INCLUDE_LINUX_OOM_H */
kernel/futex.c+22−19
@@ -716,7 +716,7 @@ static int futex_lock_pi_atomic(u32 __user *uaddr, struct futex_hash_bucket *hb, · 715 unmodified lines
716716 struct futex_pi_state **ps,
717717 struct task_struct *task, int set_waiters)
718718 {
719− int lock_taken, ret, ownerdied = 0;
719+ int lock_taken, ret, force_take = 0;
720720 u32 uval, newval, curval, vpid = task_pid_vnr(task);
721721
722722 retry:
@@ -755,17 +755,15 @@ retry: · 32 unmodified lines
755755 newval = curval | FUTEX_WAITERS;
756756
757757 /*
758− * There are two cases, where a futex might have no owner (the
759− * owner TID is 0): OWNER_DIED. We take over the futex in this
760− * case. We also do an unconditional take over, when the owner
761− * of the futex died.
762− *
763− * This is safe as we are protected by the hash bucket lock !
758+ * Should we force take the futex? See below.
764759 */
765− if (unlikely(ownerdied || !(curval & FUTEX_TID_MASK))) {
766− /* Keep the OWNER_DIED bit */
760+ if (unlikely(force_take)) {
761+ /*
762+ * Keep the OWNER_DIED and the WAITERS bit and set the
763+ * new TID value.
764+ */
767765 newval = (curval & ~FUTEX_TID_MASK) | vpid;
768− ownerdied = 0;
766+ force_take = 0;
769767 lock_taken = 1;
770768 }
771769
@@ -775,7 +773,7 @@ retry: · 3 unmodified lines
775773 goto retry;
776774
777775 /*
778− * We took the lock due to owner died take over.
776+ * We took the lock due to forced take over.
779777 */
780778 if (unlikely(lock_taken))
781779 return 1;
@@ -790,20 +788,25 @@ retry: · 8 unmodified lines
790788 switch (ret) {
791789 case -ESRCH:
792790 /*
793− * No owner found for this futex. Check if the
794− * OWNER_DIED bit is set to figure out whether
795− * this is a robust futex or not.
791+ * We failed to find an owner for this
792+ * futex. So we have no pi_state to block
793+ * on. This can happen in two cases:
794+ *
795+ * 1) The owner died
796+ * 2) A stale FUTEX_WAITERS bit
797+ *
798+ * Re-read the futex value.
796799 */
797800 if (get_futex_value_locked(&curval, uaddr))
798801 return -EFAULT;
799802
800803 /*
801− * We simply start over in case of a robust
802− * futex. The code above will take the futex
803− * and return happy.
804+ * If the owner died or we have a stale
805+ * WAITERS bit the owner TID in the user space
806+ * futex is 0.
804807 */
805− if (curval & FUTEX_OWNER_DIED) {
806− ownerdied = 1;
808+ if (!(curval & FUTEX_TID_MASK)) {
809+ force_take = 1;
807810 goto retry;
808811 }
809812 default:
mm/bootmem.c+1−9
@@ -198,8 +198,6 @@ static unsigned long __init free_all_bootmem_core(bootmem_data_t *bdata) · 197 unmodified lines
198198 int order = ilog2(BITS_PER_LONG);
199199
200200 __free_pages_bootmem(pfn_to_page(start), order);
201− fixup_zone_present_pages(page_to_nid(pfn_to_page(start)),
202− start, start + BITS_PER_LONG);
203201 count += BITS_PER_LONG;
204202 start += BITS_PER_LONG;
205203 } else {
@@ -210,9 +208,6 @@ static unsigned long __init free_all_bootmem_core(bootmem_data_t *bdata) · 4 unmodified lines
210208 if (vec & 1) {
211209 page = pfn_to_page(start + off);
212210 __free_pages_bootmem(page, 0);
213− fixup_zone_present_pages(
214− page_to_nid(page),
215− start + off, start + off + 1);
216211 count++;
217212 }
218213 vec >>= 1;
@@ -226,11 +221,8 @@ static unsigned long __init free_all_bootmem_core(bootmem_data_t *bdata) · 7 unmodified lines
226221 pages = bdata->node_low_pfn - bdata->node_min_pfn;
227222 pages = bootmem_bootmap_pages(pages);
228223 count += pages;
229− while (pages--) {
230− fixup_zone_present_pages(page_to_nid(page),
231− page_to_pfn(page), page_to_pfn(page) + 1);
224+ while (pages--)
232225 __free_pages_bootmem(page++, 0);
233− }
234226
235227 bdebug("nid=%td released=%lx\n", bdata - bootmem_node_data, count);
236228
mm/highmem.c+1−1
@@ -98,7 +98,7 @@ struct page *kmap_to_page(void *vaddr) · 97 unmodified lines
9898 {
9999 unsigned long addr = (unsigned long)vaddr;
100100
101− if (addr >= PKMAP_ADDR(0) && addr <= PKMAP_ADDR(LAST_PKMAP)) {
101+ if (addr >= PKMAP_ADDR(0) && addr < PKMAP_ADDR(LAST_PKMAP)) {
102102 int i = (addr - PKMAP_ADDR(0)) >> PAGE_SHIFT;
103103 return pte_page(pkmap_page_table[i]);
104104 }
mm/memcontrol.c+50−17
@@ -1055,12 +1055,24 @@ struct lruvec *mem_cgroup_zone_lruvec(struct zone *zone, · 1054 unmodified lines
10551055 struct mem_cgroup *memcg)
10561056 {
10571057 struct mem_cgroup_per_zone *mz;
1058+ struct lruvec *lruvec;
10581059
1059− if (mem_cgroup_disabled())
1060− return &zone->lruvec;
1060+ if (mem_cgroup_disabled()) {
1061+ lruvec = &zone->lruvec;
1062+ goto out;
1063+ }
10611064
10621065 mz = mem_cgroup_zoneinfo(memcg, zone_to_nid(zone), zone_idx(zone));
1063− return &mz->lruvec;
1066+ lruvec = &mz->lruvec;
1067+out:
1068+ /*
1069+ * Since a node can be onlined after the mem_cgroup was created,
1070+ * we have to be prepared to initialize lruvec->zone here;
1071+ * and if offlined then reonlined, we need to reinitialize it.
1072+ */
1073+ if (unlikely(lruvec->zone != zone))
1074+ lruvec->zone = zone;
1075+ return lruvec;
10641076 }
10651077
10661078 /*
@@ -1087,9 +1099,12 @@ struct lruvec *mem_cgroup_page_lruvec(struct page *page, struct zone *zone) · 20 unmodified lines
10871099 struct mem_cgroup_per_zone *mz;
10881100 struct mem_cgroup *memcg;
10891101 struct page_cgroup *pc;
1102+ struct lruvec *lruvec;
10901103
1091− if (mem_cgroup_disabled())
1092− return &zone->lruvec;
1104+ if (mem_cgroup_disabled()) {
1105+ lruvec = &zone->lruvec;
1106+ goto out;
1107+ }
10931108
10941109 pc = lookup_page_cgroup(page);
10951110 memcg = pc->mem_cgroup;
@@ -1107,7 +1122,16 @@ struct lruvec *mem_cgroup_page_lruvec(struct page *page, struct zone *zone) · 11 unmodified lines
11071122 pc->mem_cgroup = memcg = root_mem_cgroup;
11081123
11091124 mz = page_cgroup_zoneinfo(memcg, page);
1110− return &mz->lruvec;
1125+ lruvec = &mz->lruvec;
1126+out:
1127+ /*
1128+ * Since a node can be onlined after the mem_cgroup was created,
1129+ * we have to be prepared to initialize lruvec->zone here;
1130+ * and if offlined then reonlined, we need to reinitialize it.
1131+ */
1132+ if (unlikely(lruvec->zone != zone))
1133+ lruvec->zone = zone;
1134+ return lruvec;
11111135 }
11121136
11131137 /**
@@ -1452,17 +1476,26 @@ static int mem_cgroup_count_children(struct mem_cgroup *memcg) · 338 unmodified lines
14521476 static u64 mem_cgroup_get_limit(struct mem_cgroup *memcg)
14531477 {
14541478 u64 limit;
1455− u64 memsw;
14561479
14571480 limit = res_counter_read_u64(&memcg->res, RES_LIMIT);
1458− limit += total_swap_pages << PAGE_SHIFT;
14591481
1460− memsw = res_counter_read_u64(&memcg->memsw, RES_LIMIT);
14611482 /*
1462− * If memsw is finite and limits the amount of swap space available
1463− * to this memcg, return that limit.
1483+ * Do not consider swap space if we cannot swap due to swappiness
14641484 */
1465− return min(limit, memsw);
1485+ if (mem_cgroup_swappiness(memcg)) {
1486+ u64 memsw;
1487+
1488+ limit += total_swap_pages << PAGE_SHIFT;
1489+ memsw = res_counter_read_u64(&memcg->memsw, RES_LIMIT);
1490+
1491+ /*
1492+ * If memsw is finite and limits the amount of swap space
1493+ * available to this memcg, return that limit.
1494+ */
1495+ limit = min(limit, memsw);
1496+ }
1497+
1498+ return limit;
14661499 }
14671500
14681501 void mem_cgroup_out_of_memory(struct mem_cgroup *memcg, gfp_t gfp_mask,
@@ -3688,17 +3721,17 @@ unsigned long mem_cgroup_soft_limit_reclaim(struct zone *zone, int order, · 2219 unmodified lines
36883721 static bool mem_cgroup_force_empty_list(struct mem_cgroup *memcg,
36893722 int node, int zid, enum lru_list lru)
36903723 {
3691− struct mem_cgroup_per_zone *mz;
3724+ struct lruvec *lruvec;
36923725 unsigned long flags, loop;
36933726 struct list_head *list;
36943727 struct page *busy;
36953728 struct zone *zone;
36963729
36973730 zone = &NODE_DATA(node)->node_zones[zid];
3698− mz = mem_cgroup_zoneinfo(memcg, node, zid);
3699− list = &mz->lruvec.lists[lru];
3731+ lruvec = mem_cgroup_zone_lruvec(zone, memcg);
3732+ list = &lruvec->lists[lru];
37003733
3701− loop = mz->lru_size[lru];
3734+ loop = mem_cgroup_get_lru_size(lruvec, lru);
37023735 /* give some margin against EBUSY etc...*/
37033736 loop += 256;
37043737 busy = NULL;
@@ -4736,7 +4769,7 @@ static int alloc_mem_cgroup_per_zone_info(struct mem_cgroup *memcg, int node) · 1031 unmodified lines
47364769
47374770 for (zone = 0; zone < MAX_NR_ZONES; zone++) {
47384771 mz = &pn->zoneinfo[zone];
4739− lruvec_init(&mz->lruvec, &NODE_DATA(node)->node_zones[zone]);
4772+ lruvec_init(&mz->lruvec);
47404773 mz->usage_in_excess = 0;
47414774 mz->on_tree = false;
47424775 mz->memcg = memcg;
mm/memory.c+4−6
@@ -2527,9 +2527,8 @@ static int do_wp_page(struct mm_struct *mm, struct vm_area_struct *vma, · 2526 unmodified lines
25272527 int ret = 0;
25282528 int page_mkwrite = 0;
25292529 struct page *dirty_page = NULL;
2530− unsigned long mmun_start; /* For mmu_notifiers */
2531− unsigned long mmun_end; /* For mmu_notifiers */
2532− bool mmun_called = false; /* For mmu_notifiers */
2530+ unsigned long mmun_start = 0; /* For mmu_notifiers */
2531+ unsigned long mmun_end = 0; /* For mmu_notifiers */
25332532
25342533 old_page = vm_normal_page(vma, address, orig_pte);
25352534 if (!old_page) {
@@ -2708,8 +2707,7 @@ gotten: · 172 unmodified lines
27082707 goto oom_free_new;
27092708
27102709 mmun_start = address & PAGE_MASK;
2711− mmun_end = (address & PAGE_MASK) + PAGE_SIZE;
2712− mmun_called = true;
2710+ mmun_end = mmun_start + PAGE_SIZE;
27132711 mmu_notifier_invalidate_range_start(mm, mmun_start, mmun_end);
27142712
27152713 /*
@@ -2778,7 +2776,7 @@ gotten: · 62 unmodified lines
27782776 page_cache_release(new_page);
27792777 unlock:
27802778 pte_unmap_unlock(page_table, ptl);
2781− if (mmun_called)
2779+ if (mmun_end > mmun_start)
27822780 mmu_notifier_invalidate_range_end(mm, mmun_start, mmun_end);
27832781 if (old_page) {
27842782 /*
mm/memory_hotplug.c+0−7
@@ -106,7 +106,6 @@ static void get_page_bootmem(unsigned long info, struct page *page, · 105 unmodified lines
106106 void __ref put_page_bootmem(struct page *page)
107107 {
108108 unsigned long type;
109− struct zone *zone;
110109
111110 type = (unsigned long) page->lru.next;
112111 BUG_ON(type < MEMORY_HOTPLUG_MIN_BOOTMEM_TYPE ||
@@ -117,12 +116,6 @@ void __ref put_page_bootmem(struct page *page) · 4 unmodified lines
117116 set_page_private(page, 0);
118117 INIT_LIST_HEAD(&page->lru);
119118 __free_pages_bootmem(page, 0);
120−
121− zone = page_zone(page);
122− zone_span_writelock(zone);
123− zone->present_pages++;
124− zone_span_writeunlock(zone);
125− totalram_pages++;
126119 }
127120
128121 }
mm/mmap.c+2−0
@@ -334,8 +334,10 @@ void validate_mm(struct mm_struct *mm) · 333 unmodified lines
334334 struct vm_area_struct *vma = mm->mmap;
335335 while (vma) {
336336 struct anon_vma_chain *avc;
337+ vma_lock_anon_vma(vma);
337338 list_for_each_entry(avc, &vma->anon_vma_chain, same_vma)
338339 anon_vma_interval_tree_verify(avc);
340+ vma_unlock_anon_vma(vma);
339341 vma = vma->vm_next;
340342 i++;
341343 }
mm/mmzone.c+1−5
@@ -87,7 +87,7 @@ int memmap_valid_within(unsigned long pfn, · 86 unmodified lines
8787 }
8888 #endif /* CONFIG_ARCH_HAS_HOLES_MEMORYMODEL */
8989
90−void lruvec_init(struct lruvec *lruvec, struct zone *zone)
90+void lruvec_init(struct lruvec *lruvec)
9191 {
9292 enum lru_list lru;
9393
@@ -95,8 +95,4 @@ void lruvec_init(struct lruvec *lruvec, struct zone *zone) · 1 unmodified line
9595
9696 for_each_lru(lru)
9797 INIT_LIST_HEAD(&lruvec->lists[lru]);
98−
99−#ifdef CONFIG_MEMCG
100− lruvec->zone = zone;
101−#endif
10298 }
mm/nobootmem.c+0−3
@@ -116,8 +116,6 @@ static unsigned long __init __free_memory_core(phys_addr_t start, · 115 unmodified lines
116116 return 0;
117117
118118 __free_pages_memory(start_pfn, end_pfn);
119− fixup_zone_present_pages(pfn_to_nid(start >> PAGE_SHIFT),
120− start_pfn, end_pfn);
121119
122120 return end_pfn - start_pfn;
123121 }
@@ -128,7 +126,6 @@ unsigned long __init free_low_memory_core_early(int nodeid) · 4 unmodified lines
128126 phys_addr_t start, end, size;
129127 u64 i;
130128
131− reset_zone_present_pages();
132129 for_each_free_mem_range(i, MAX_NUMNODES, &start, &end, NULL)
133130 count += __free_memory_core(start, end);
134131
mm/page_alloc.c+1−35
@@ -4505,7 +4505,7 @@ static void __paginginit free_area_init_core(struct pglist_data *pgdat, · 4504 unmodified lines
45054505 zone->zone_pgdat = pgdat;
45064506
45074507 zone_pcp_init(zone);
4508− lruvec_init(&zone->lruvec, zone);
4508+ lruvec_init(&zone->lruvec);
45094509 if (!size)
45104510 continue;
45114511
@@ -6098,37 +6098,3 @@ void dump_page(struct page *page) · 1586 unmodified lines
60986098 dump_page_flags(page->flags);
60996099 mem_cgroup_print_bad_page(page);
61006100 }
6101−
6102−/* reset zone->present_pages */
6103−void reset_zone_present_pages(void)
6104−{
6105− struct zone *z;
6106− int i, nid;
6107−
6108− for_each_node_state(nid, N_HIGH_MEMORY) {
6109− for (i = 0; i < MAX_NR_ZONES; i++) {
6110− z = NODE_DATA(nid)->node_zones + i;
6111− z->present_pages = 0;
6112− }
6113− }
6114−}
6115−
6116−/* calculate zone's present pages in buddy system */
6117−void fixup_zone_present_pages(int nid, unsigned long start_pfn,
6118− unsigned long end_pfn)
6119−{
6120− struct zone *z;
6121− unsigned long zone_start_pfn, zone_end_pfn;
6122− int i;
6123−
6124− for (i = 0; i < MAX_NR_ZONES; i++) {
6125− z = NODE_DATA(nid)->node_zones + i;
6126− zone_start_pfn = z->zone_start_pfn;
6127− zone_end_pfn = zone_start_pfn + z->spanned_pages;
6128−
6129− /* if the two regions intersect */
6130− if (!(zone_start_pfn >= end_pfn || zone_end_pfn <= start_pfn))
6131− z->present_pages += min(end_pfn, zone_end_pfn) -
6132− max(start_pfn, zone_start_pfn);
6133− }
6134−}
mm/shmem.c+15−3
@@ -643,7 +643,7 @@ static void shmem_evict_inode(struct inode *inode) · 642 unmodified lines
643643 kfree(info->symlink);
644644
645645 simple_xattrs_free(&info->xattrs);
646− BUG_ON(inode->i_blocks);
646+ WARN_ON(inode->i_blocks);
647647 shmem_free_inode(inode->i_sb);
648648 clear_inode(inode);
649649 }
@@ -1145,8 +1145,20 @@ repeat: · 495 unmodified lines
11451145 if (!error) {
11461146 error = shmem_add_to_page_cache(page, mapping, index,
11471147 gfp, swp_to_radix_entry(swap));
1148− /* We already confirmed swap, and make no allocation */
1149− VM_BUG_ON(error);
1148+ /*
1149+ * We already confirmed swap under page lock, and make
1150+ * no memory allocation here, so usually no possibility
1151+ * of error; but free_swap_and_cache() only trylocks a
1152+ * page, so it is just possible that the entry has been
1153+ * truncated or holepunched since swap was confirmed.
1154+ * shmem_undo_range() will have done some of the
1155+ * unaccounting, now delete_from_swap_cache() will do
1156+ * the rest (including mem_cgroup_uncharge_swapcache).
1157+ * Reset swap.val? No, leave it so "failed" goes back to
1158+ * "repeat": reading a hole and writing should succeed.
1159+ */
1160+ if (error)
1161+ delete_from_swap_cache(page);
11501162 }
11511163 if (error)
11521164 goto failed;
mm/swapfile.c+2−2
@@ -1494,9 +1494,8 @@ SYSCALL_DEFINE1(swapoff, const char __user *, specialfile) · 1493 unmodified lines
14941494 BUG_ON(!current->mm);
14951495
14961496 pathname = getname(specialfile);
1497− err = PTR_ERR(pathname);
14981497 if (IS_ERR(pathname))
1499− goto out;
1498+ return PTR_ERR(pathname);
15001499
15011500 victim = file_open_name(pathname, O_RDWR|O_LARGEFILE, 0);
15021501 err = PTR_ERR(victim);
@@ -1608,6 +1607,7 @@ SYSCALL_DEFINE1(swapoff, const char __user *, specialfile) · 105 unmodified lines
16081607 out_dput:
16091608 filp_close(victim, NULL);
16101609 out:
1610+ putname(pathname);
16111611 return err;
16121612 }
16131613
mm/vmscan.c+0−25
@@ -1760,28 +1760,6 @@ static bool in_reclaim_compaction(struct scan_control *sc) · 1759 unmodified lines
17601760 return false;
17611761 }
17621762
1763−#ifdef CONFIG_COMPACTION
1764−/*
1765− * If compaction is deferred for sc->order then scale the number of pages
1766− * reclaimed based on the number of consecutive allocation failures
1767− */
1768−static unsigned long scale_for_compaction(unsigned long pages_for_compaction,
1769− struct lruvec *lruvec, struct scan_control *sc)
1770−{
1771− struct zone *zone = lruvec_zone(lruvec);
1772−
1773− if (zone->compact_order_failed <= sc->order)
1774− pages_for_compaction <<= zone->compact_defer_shift;
1775− return pages_for_compaction;
1776−}
1777−#else
1778−static unsigned long scale_for_compaction(unsigned long pages_for_compaction,
1779− struct lruvec *lruvec, struct scan_control *sc)
1780−{
1781− return pages_for_compaction;
1782−}
1783−#endif
1784−
17851763 /*
17861764 * Reclaim/compaction is used for high-order allocation requests. It reclaims
17871765 * order-0 pages before compacting the zone. should_continue_reclaim() returns
@@ -1829,9 +1807,6 @@ static inline bool should_continue_reclaim(struct lruvec *lruvec, · 41 unmodified lines
18291807 * inactive lists are large enough, continue reclaiming
18301808 */
18311809 pages_for_compaction = (2UL << sc->order);
1832−
1833− pages_for_compaction = scale_for_compaction(pages_for_compaction,
1834− lruvec, sc);
18351810 inactive_lru_pages = get_lru_size(lruvec, LRU_INACTIVE_FILE);
18361811 if (nr_swap_pages > 0)
18371812 inactive_lru_pages += get_lru_size(lruvec, LRU_INACTIVE_ANON);
net/batman-adv/soft-interface.c+6−6
@@ -325,6 +325,12 @@ void batadv_interface_rx(struct net_device *soft_iface, · 324 unmodified lines
325325
326326 soft_iface->last_rx = jiffies;
327327
328+ /* Let the bridge loop avoidance check the packet. If will
329+ * not handle it, we can safely push it up.
330+ */
331+ if (batadv_bla_rx(bat_priv, skb, vid, is_bcast))
332+ goto out;
333+
328334 if (orig_node)
329335 batadv_tt_add_temporary_global_entry(bat_priv, orig_node,
330336 ethhdr->h_source);
@@ -332,12 +338,6 @@ void batadv_interface_rx(struct net_device *soft_iface, · 1 unmodified line
332338 if (batadv_is_ap_isolated(bat_priv, ethhdr->h_source, ethhdr->h_dest))
333339 goto dropped;
334340
335− /* Let the bridge loop avoidance check the packet. If will
336− * not handle it, we can safely push it up.
337− */
338− if (batadv_bla_rx(bat_priv, skb, vid, is_bcast))
339− goto out;
340−
341341 netif_rx(skb);
342342 goto out;
343343
net/batman-adv/translation-table.c+14−1
@@ -769,6 +769,12 @@ int batadv_tt_global_add(struct batadv_priv *bat_priv, · 768 unmodified lines
769769 */
770770 tt_global_entry->common.flags &= ~BATADV_TT_CLIENT_TEMP;
771771
772+ /* the change can carry possible "attribute" flags like the
773+ * TT_CLIENT_WIFI, therefore they have to be copied in the
774+ * client entry
775+ */
776+ tt_global_entry->common.flags |= flags;
777+
772778 /* If there is the BATADV_TT_CLIENT_ROAM flag set, there is only
773779 * one originator left in the list and we previously received a
774780 * delete + roaming change for this originator.
@@ -1496,7 +1502,7 @@ batadv_tt_response_fill_table(uint16_t tt_len, uint8_t ttvn, · 721 unmodified lines
14961502
14971503 memcpy(tt_change->addr, tt_common_entry->addr,
14981504 ETH_ALEN);
1499− tt_change->flags = BATADV_NO_FLAGS;
1505+ tt_change->flags = tt_common_entry->flags;
15001506
15011507 tt_count++;
15021508 tt_change++;
@@ -2450,6 +2456,13 @@ bool batadv_tt_add_temporary_global_entry(struct batadv_priv *bat_priv, · 947 unmodified lines
24502456 {
24512457 bool ret = false;
24522458
2459+ /* if the originator is a backbone node (meaning it belongs to the same
2460+ * LAN of this node) the temporary client must not be added because to
2461+ * reach such destination the node must use the LAN instead of the mesh
2462+ */
2463+ if (batadv_bla_is_backbone_gw_orig(bat_priv, orig_node->orig))
2464+ goto out;
2465+
24532466 if (!batadv_tt_global_add(bat_priv, orig_node, addr,
24542467 BATADV_TT_CLIENT_TEMP,
24552468 atomic_read(&orig_node->last_ttvn)))
net/bluetooth/hci_core.c+2−2
@@ -1754,11 +1754,11 @@ int hci_register_dev(struct hci_dev *hdev) · 1753 unmodified lines
17541754 if (hdev->dev_type != HCI_AMP)
17551755 set_bit(HCI_AUTO_OFF, &hdev->dev_flags);
17561756
1757− schedule_work(&hdev->power_on);
1758−
17591757 hci_notify(hdev, HCI_DEV_REG);
17601758 hci_dev_hold(hdev);
17611759
1760+ schedule_work(&hdev->power_on);
1761+
17621762 return id;
17631763
17641764 err_wqueue:
net/bluetooth/mgmt.c+7−5
@@ -326,7 +326,7 @@ static int read_index_list(struct sock *sk, struct hci_dev *hdev, void *data, · 325 unmodified lines
326326 struct hci_dev *d;
327327 size_t rp_len;
328328 u16 count;
329− int i, err;
329+ int err;
330330
331331 BT_DBG("sock %p", sk);
332332
@@ -347,9 +347,7 @@ static int read_index_list(struct sock *sk, struct hci_dev *hdev, void *data, · 14 unmodified lines
347347 return -ENOMEM;
348348 }
349349
350− rp->num_controllers = cpu_to_le16(count);
351−
352− i = 0;
350+ count = 0;
353351 list_for_each_entry(d, &hci_dev_list, list) {
354352 if (test_bit(HCI_SETUP, &d->dev_flags))
355353 continue;
@@ -357,10 +355,13 @@ static int read_index_list(struct sock *sk, struct hci_dev *hdev, void *data, · 1 unmodified line
357355 if (!mgmt_valid_hdev(d))
358356 continue;
359357
360− rp->index[i++] = cpu_to_le16(d->id);
358+ rp->index[count++] = cpu_to_le16(d->id);
361359 BT_DBG("Added hci%u", d->id);
362360 }
363361
362+ rp->num_controllers = cpu_to_le16(count);
363+ rp_len = sizeof(*rp) + (2 * count);
364+
364365 read_unlock(&hci_dev_list_lock);
365366
366367 err = cmd_complete(sk, MGMT_INDEX_NONE, MGMT_OP_READ_INDEX_LIST, 0, rp,
@@ -1366,6 +1367,7 @@ static int remove_uuid(struct sock *sk, struct hci_dev *hdev, void *data, · 999 unmodified lines
13661367 continue;
13671368
13681369 list_del(&match->list);
1370+ kfree(match);
13691371 found++;
13701372 }
13711373
net/bluetooth/smp.c+1−1
@@ -267,7 +267,7 @@ static void smp_failure(struct l2cap_conn *conn, u8 reason, u8 send) · 266 unmodified lines
267267
268268 clear_bit(HCI_CONN_ENCRYPT_PEND, &conn->hcon->flags);
269269 mgmt_auth_failed(conn->hcon->hdev, conn->dst, hcon->type,
270− hcon->dst_type, reason);
270+ hcon->dst_type, HCI_ERROR_AUTH_FAILURE);
271271
272272 cancel_delayed_work_sync(&conn->security_timer);
273273
net/core/dev.c+3−1
@@ -2818,8 +2818,10 @@ static int get_rps_cpu(struct net_device *dev, struct sk_buff *skb, · 2817 unmodified lines
28182818 if (unlikely(tcpu != next_cpu) &&
28192819 (tcpu == RPS_NO_CPU || !cpu_online(tcpu) ||
28202820 ((int)(per_cpu(softnet_data, tcpu).input_queue_head -
2821− rflow->last_qtail)) >= 0))
2821+ rflow->last_qtail)) >= 0)) {
2822+ tcpu = next_cpu;
28222823 rflow = set_rps_cpu(dev, skb, rflow, next_cpu);
2824+ }
28232825
28242826 if (tcpu != RPS_NO_CPU && cpu_online(tcpu)) {
28252827 *rflowp = rflow;
net/core/dev_addr_lists.c+2−1
@@ -319,7 +319,8 @@ int dev_addr_del(struct net_device *dev, const unsigned char *addr, · 318 unmodified lines
319319 */
320320 ha = list_first_entry(&dev->dev_addrs.list,
321321 struct netdev_hw_addr, list);
322− if (ha->addr == dev->dev_addr && ha->refcount == 1)
322+ if (!memcmp(ha->addr, addr, dev->addr_len) &&
323+ ha->type == addr_type && ha->refcount == 1)
323324 return -ENOENT;
324325
325326 err = __hw_addr_del(&dev->dev_addrs, addr, dev->addr_len,
net/ipv4/ip_sockglue.c+22−13
@@ -457,19 +457,28 @@ static int do_ip_setsockopt(struct sock *sk, int level, · 456 unmodified lines
457457 struct inet_sock *inet = inet_sk(sk);
458458 int val = 0, err;
459459
460− if (((1<<optname) & ((1<<IP_PKTINFO) | (1<<IP_RECVTTL) |
461− (1<<IP_RECVOPTS) | (1<<IP_RECVTOS) |
462− (1<<IP_RETOPTS) | (1<<IP_TOS) |
463− (1<<IP_TTL) | (1<<IP_HDRINCL) |
464− (1<<IP_MTU_DISCOVER) | (1<<IP_RECVERR) |
465− (1<<IP_ROUTER_ALERT) | (1<<IP_FREEBIND) |
466− (1<<IP_PASSSEC) | (1<<IP_TRANSPARENT) |
467− (1<<IP_MINTTL) | (1<<IP_NODEFRAG))) ||
468− optname == IP_UNICAST_IF ||
469− optname == IP_MULTICAST_TTL ||
470− optname == IP_MULTICAST_ALL ||
471− optname == IP_MULTICAST_LOOP ||
472− optname == IP_RECVORIGDSTADDR) {
460+ switch (optname) {
461+ case IP_PKTINFO:
462+ case IP_RECVTTL:
463+ case IP_RECVOPTS:
464+ case IP_RECVTOS:
465+ case IP_RETOPTS:
466+ case IP_TOS:
467+ case IP_TTL:
468+ case IP_HDRINCL:
469+ case IP_MTU_DISCOVER:
470+ case IP_RECVERR:
471+ case IP_ROUTER_ALERT:
472+ case IP_FREEBIND:
473+ case IP_PASSSEC:
474+ case IP_TRANSPARENT:
475+ case IP_MINTTL:
476+ case IP_NODEFRAG:
477+ case IP_UNICAST_IF:
478+ case IP_MULTICAST_TTL:
479+ case IP_MULTICAST_ALL:
480+ case IP_MULTICAST_LOOP:
481+ case IP_RECVORIGDSTADDR:
473482 if (optlen >= sizeof(int)) {
474483 if (get_user(val, (int __user *) optval))
475484 return -EFAULT;
net/ipv4/ip_vti.c+5−0
@@ -338,12 +338,17 @@ static int vti_rcv(struct sk_buff *skb) · 337 unmodified lines
338338 if (tunnel != NULL) {
339339 struct pcpu_tstats *tstats;
340340
341+ if (!xfrm4_policy_check(NULL, XFRM_POLICY_IN, skb))
342+ return -1;
343+
341344 tstats = this_cpu_ptr(tunnel->dev->tstats);
342345 u64_stats_update_begin(&tstats->syncp);
343346 tstats->rx_packets++;
344347 tstats->rx_bytes += skb->len;
345348 u64_stats_update_end(&tstats->syncp);
346349
350+ skb->mark = 0;
351+ secpath_reset(skb);
347352 skb->dev = tunnel->dev;
348353 return 1;
349354 }
net/ipv4/tcp.c+2−2
@@ -1212,7 +1212,7 @@ new_segment: · 1211 unmodified lines
12121212 wait_for_sndbuf:
12131213 set_bit(SOCK_NOSPACE, &sk->sk_socket->flags);
12141214 wait_for_memory:
1215− if (copied && likely(!tp->repair))
1215+ if (copied)
12161216 tcp_push(sk, flags & ~MSG_MORE, mss_now, TCP_NAGLE_PUSH);
12171217
12181218 if ((err = sk_stream_wait_memory(sk, &timeo)) != 0)
@@ -1223,7 +1223,7 @@ wait_for_memory: · 4 unmodified lines
12231223 }
12241224
12251225 out:
1226− if (copied && likely(!tp->repair))
1226+ if (copied)
12271227 tcp_push(sk, flags, mss_now, tp->nonagle);
12281228 release_sock(sk);
12291229 return copied + copied_syn;
net/ipv4/tcp_input.c+10−5
@@ -5313,11 +5313,6 @@ static bool tcp_validate_incoming(struct sock *sk, struct sk_buff *skb, · 5312 unmodified lines
53135313 goto discard;
53145314 }
53155315
5316− /* ts_recent update must be made after we are sure that the packet
5317− * is in window.
5318− */
5319− tcp_replace_ts_recent(tp, TCP_SKB_CB(skb)->seq);
5320−
53215316 /* step 3: check security and precedence [ignored] */
53225317
53235318 /* step 4: Check for a SYN
@@ -5552,6 +5547,11 @@ step5: · 228 unmodified lines
55525547 if (th->ack && tcp_ack(sk, skb, FLAG_SLOWPATH) < 0)
55535548 goto discard;
55545549
5550+ /* ts_recent update must be made after we are sure that the packet
5551+ * is in window.
5552+ */
5553+ tcp_replace_ts_recent(tp, TCP_SKB_CB(skb)->seq);
5554+
55555555 tcp_rcv_rtt_measure_ts(sk, skb);
55565556
55575557 /* Process urgent data. */
@@ -6130,6 +6130,11 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb, · 572 unmodified lines
61306130 } else
61316131 goto discard;
61326132
6133+ /* ts_recent update must be made after we are sure that the packet
6134+ * is in window.
6135+ */
6136+ tcp_replace_ts_recent(tp, TCP_SKB_CB(skb)->seq);
6137+
61336138 /* step 6: check the URG bit */
61346139 tcp_urg(sk, skb, th);
61356140
net/ipv4/tcp_metrics.c+9−3
@@ -1,7 +1,6 @@
11 #include <linux/rcupdate.h>
22 #include <linux/spinlock.h>
33 #include <linux/jiffies.h>
4−#include <linux/bootmem.h>
54 #include <linux/module.h>
65 #include <linux/cache.h>
76 #include <linux/slab.h>
@@ -9,6 +8,7 @@ · 1 unmodified line
98 #include <linux/tcp.h>
109 #include <linux/hash.h>
1110 #include <linux/tcp_metrics.h>
11+#include <linux/vmalloc.h>
1212
1313 #include <net/inet_connection_sock.h>
1414 #include <net/net_namespace.h>
@@ -1034,7 +1034,10 @@ static int __net_init tcp_net_metrics_init(struct net *net) · 1019 unmodified lines
10341034 net->ipv4.tcp_metrics_hash_log = order_base_2(slots);
10351035 size = sizeof(struct tcpm_hash_bucket) << net->ipv4.tcp_metrics_hash_log;
10361036
1037− net->ipv4.tcp_metrics_hash = kzalloc(size, GFP_KERNEL);
1037+ net->ipv4.tcp_metrics_hash = kzalloc(size, GFP_KERNEL | __GFP_NOWARN);
1038+ if (!net->ipv4.tcp_metrics_hash)
1039+ net->ipv4.tcp_metrics_hash = vzalloc(size);
1040+
10381041 if (!net->ipv4.tcp_metrics_hash)
10391042 return -ENOMEM;
10401043
@@ -1055,7 +1058,10 @@ static void __net_exit tcp_net_metrics_exit(struct net *net) · 14 unmodified lines
10551058 tm = next;
10561059 }
10571060 }
1058− kfree(net->ipv4.tcp_metrics_hash);
1061+ if (is_vmalloc_addr(net->ipv4.tcp_metrics_hash))
1062+ vfree(net->ipv4.tcp_metrics_hash);
1063+ else
1064+ kfree(net->ipv4.tcp_metrics_hash);
10591065 }
10601066
10611067 static __net_initdata struct pernet_operations tcp_net_metrics_ops = {
net/ipv4/tcp_output.c+4−0
@@ -1986,6 +1986,9 @@ static bool tcp_write_xmit(struct sock *sk, unsigned int mss_now, int nonagle, · 1985 unmodified lines
19861986 tso_segs = tcp_init_tso_segs(sk, skb, mss_now);
19871987 BUG_ON(!tso_segs);
19881988
1989+ if (unlikely(tp->repair) && tp->repair_queue == TCP_SEND_QUEUE)
1990+ goto repair; /* Skip network transmission */
1991+
19891992 cwnd_quota = tcp_cwnd_test(tp, skb);
19901993 if (!cwnd_quota)
19911994 break;
@@ -2026,6 +2029,7 @@ static bool tcp_write_xmit(struct sock *sk, unsigned int mss_now, int nonagle, · 34 unmodified lines
20262029 if (unlikely(tcp_transmit_skb(sk, skb, 1, gfp)))
20272030 break;
20282031
2032+repair:
20292033 /* Advance the send_head. This one is sent out.
20302034 * This call will increment packets_out.
20312035 */
net/ipv6/ipv6_sockglue.c+1−0
@@ -827,6 +827,7 @@ pref_skip_coa: · 826 unmodified lines
827827 if (val < 0 || val > 255)
828828 goto e_inval;
829829 np->min_hopcount = val;
830+ retv = 0;
830831 break;
831832 case IPV6_DONTFRAG:
832833 np->dontfrag = valbool;
net/mac80211/cfg.c+3−0
@@ -2594,6 +2594,9 @@ static void ieee80211_mgmt_frame_register(struct wiphy *wiphy, · 2593 unmodified lines
25942594 else
25952595 local->probe_req_reg--;
25962596
2597+ if (!local->open_count)
2598+ break;
2599+
25972600 ieee80211_queue_work(&local->hw, &local->reconfig_filter);
25982601 break;
25992602 default:
net/mac80211/ieee80211_i.h+2−0
@@ -1314,6 +1314,8 @@ netdev_tx_t ieee80211_monitor_start_xmit(struct sk_buff *skb, · 1313 unmodified lines
13141314 struct net_device *dev);
13151315 netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb,
13161316 struct net_device *dev);
1317+void ieee80211_purge_tx_queue(struct ieee80211_hw *hw,
1318+ struct sk_buff_head *skbs);
13171319
13181320 /* HT */
13191321 void ieee80211_apply_htcap_overrides(struct ieee80211_sub_if_data *sdata,
net/mac80211/main.c+4−2
@@ -871,8 +871,10 @@ int ieee80211_register_hw(struct ieee80211_hw *hw) · 870 unmodified lines
871871 local->hw.wiphy->cipher_suites,
872872 sizeof(u32) * local->hw.wiphy->n_cipher_suites,
873873 GFP_KERNEL);
874− if (!suites)
875− return -ENOMEM;
874+ if (!suites) {
875+ result = -ENOMEM;
876+ goto fail_wiphy_register;
877+ }
876878 for (r = 0; r < local->hw.wiphy->n_cipher_suites; r++) {
877879 u32 suite = local->hw.wiphy->cipher_suites[r];
878880 if (suite == WLAN_CIPHER_SUITE_WEP40 ||
net/mac80211/scan.c+1−1
@@ -917,7 +917,7 @@ int ieee80211_request_sched_scan_start(struct ieee80211_sub_if_data *sdata, · 916 unmodified lines
917917 struct cfg80211_sched_scan_request *req)
918918 {
919919 struct ieee80211_local *local = sdata->local;
920− struct ieee80211_sched_scan_ies sched_scan_ies;
920+ struct ieee80211_sched_scan_ies sched_scan_ies = {};
921921 int ret, i;
922922
923923 mutex_lock(&local->mtx);
net/mac80211/sta_info.c+8−3
@@ -117,8 +117,8 @@ static void free_sta_work(struct work_struct *wk) · 116 unmodified lines
117117
118118 for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) {
119119 local->total_ps_buffered -= skb_queue_len(&sta->ps_tx_buf[ac]);
120− __skb_queue_purge(&sta->ps_tx_buf[ac]);
121− __skb_queue_purge(&sta->tx_filtered[ac]);
120+ ieee80211_purge_tx_queue(&local->hw, &sta->ps_tx_buf[ac]);
121+ ieee80211_purge_tx_queue(&local->hw, &sta->tx_filtered[ac]);
122122 }
123123
124124 #ifdef CONFIG_MAC80211_MESH
@@ -141,7 +141,7 @@ static void free_sta_work(struct work_struct *wk) · 16 unmodified lines
141141 tid_tx = rcu_dereference_raw(sta->ampdu_mlme.tid_tx[i]);
142142 if (!tid_tx)
143143 continue;
144− __skb_queue_purge(&tid_tx->pending);
144+ ieee80211_purge_tx_queue(&local->hw, &tid_tx->pending);
145145 kfree(tid_tx);
146146 }
147147
@@ -961,6 +961,7 @@ void ieee80211_sta_ps_deliver_wakeup(struct sta_info *sta) · 813 unmodified lines
961961 struct ieee80211_local *local = sdata->local;
962962 struct sk_buff_head pending;
963963 int filtered = 0, buffered = 0, ac;
964+ unsigned long flags;
964965
965966 clear_sta_flag(sta, WLAN_STA_SP);
966967
@@ -976,12 +977,16 @@ void ieee80211_sta_ps_deliver_wakeup(struct sta_info *sta) · 9 unmodified lines
976977 for (ac = 0; ac < IEEE80211_NUM_ACS; ac++) {
977978 int count = skb_queue_len(&pending), tmp;
978979
980+ spin_lock_irqsave(&sta->tx_filtered[ac].lock, flags);
979981 skb_queue_splice_tail_init(&sta->tx_filtered[ac], &pending);
982+ spin_unlock_irqrestore(&sta->tx_filtered[ac].lock, flags);
980983 tmp = skb_queue_len(&pending);
981984 filtered += tmp - count;
982985 count = tmp;
983986
987+ spin_lock_irqsave(&sta->ps_tx_buf[ac].lock, flags);
984988 skb_queue_splice_tail_init(&sta->ps_tx_buf[ac], &pending);
989+ spin_unlock_irqrestore(&sta->ps_tx_buf[ac].lock, flags);
985990 tmp = skb_queue_len(&pending);
986991 buffered += tmp - count;
987992 }
net/mac80211/status.c+9−0
@@ -668,3 +668,12 @@ void ieee80211_free_txskb(struct ieee80211_hw *hw, struct sk_buff *skb) · 667 unmodified lines
668668 dev_kfree_skb_any(skb);
669669 }
670670 EXPORT_SYMBOL(ieee80211_free_txskb);
671+
672+void ieee80211_purge_tx_queue(struct ieee80211_hw *hw,
673+ struct sk_buff_head *skbs)
674+{
675+ struct sk_buff *skb;
676+
677+ while ((skb = __skb_dequeue(skbs)))
678+ ieee80211_free_txskb(hw, skb);
679+}
net/mac80211/tx.c+6−3
@@ -1358,7 +1358,7 @@ static int invoke_tx_handlers(struct ieee80211_tx_data *tx) · 1357 unmodified lines
13581358 if (tx->skb)
13591359 ieee80211_free_txskb(&tx->local->hw, tx->skb);
13601360 else
1361− __skb_queue_purge(&tx->skbs);
1361+ ieee80211_purge_tx_queue(&tx->local->hw, &tx->skbs);
13621362 return -1;
13631363 } else if (unlikely(res == TX_QUEUED)) {
13641364 I802_DEBUG_INC(tx->local->tx_handlers_queued);
@@ -2120,10 +2120,13 @@ netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb, · 755 unmodified lines
21202120 */
21212121 void ieee80211_clear_tx_pending(struct ieee80211_local *local)
21222122 {
2123+ struct sk_buff *skb;
21232124 int i;
21242125
2125− for (i = 0; i < local->hw.queues; i++)
2126− skb_queue_purge(&local->pending[i]);
2126+ for (i = 0; i < local->hw.queues; i++) {
2127+ while ((skb = skb_dequeue(&local->pending[i])) != NULL)
2128+ ieee80211_free_txskb(&local->hw, skb);
2129+ }
21272130 }
21282131
21292132 /*
net/mac80211/util.c+2−0
@@ -1491,6 +1491,8 @@ int ieee80211_reconfig(struct ieee80211_local *local) · 1490 unmodified lines
14911491 list_for_each_entry(sdata, &local->interfaces, list) {
14921492 if (sdata->vif.type != NL80211_IFTYPE_STATION)
14931493 continue;
1494+ if (!sdata->u.mgd.associated)
1495+ continue;
14941496
14951497 ieee80211_send_nullfunc(local, sdata, 0);
14961498 }
net/sctp/proc.c+4−4
@@ -102,7 +102,7 @@ static const struct file_operations sctp_snmp_seq_fops = { · 101 unmodified lines
102102 .open = sctp_snmp_seq_open,
103103 .read = seq_read,
104104 .llseek = seq_lseek,
105− .release = single_release,
105+ .release = single_release_net,
106106 };
107107
108108 /* Set up the proc fs entry for 'snmp' object. */
@@ -251,7 +251,7 @@ static const struct file_operations sctp_eps_seq_fops = { · 142 unmodified lines
251251 .open = sctp_eps_seq_open,
252252 .read = seq_read,
253253 .llseek = seq_lseek,
254− .release = seq_release,
254+ .release = seq_release_net,
255255 };
256256
257257 /* Set up the proc fs entry for 'eps' object. */
@@ -372,7 +372,7 @@ static const struct file_operations sctp_assocs_seq_fops = { · 114 unmodified lines
372372 .open = sctp_assocs_seq_open,
373373 .read = seq_read,
374374 .llseek = seq_lseek,
375− .release = seq_release,
375+ .release = seq_release_net,
376376 };
377377
378378 /* Set up the proc fs entry for 'assocs' object. */
@@ -517,7 +517,7 @@ static const struct file_operations sctp_remaddr_seq_fops = { · 138 unmodified lines
517517 .open = sctp_remaddr_seq_open,
518518 .read = seq_read,
519519 .llseek = seq_lseek,
520− .release = seq_release,
520+ .release = seq_release_net,
521521 };
522522
523523 int __net_init sctp_remaddr_proc_init(struct net *net)
net/wireless/reg.c+2−3
@@ -141,9 +141,8 @@ static const struct ieee80211_regdomain world_regdom = { · 140 unmodified lines
141141 .reg_rules = {
142142 /* IEEE 802.11b/g, channels 1..11 */
143143 REG_RULE(2412-10, 2462+10, 40, 6, 20, 0),
144− /* IEEE 802.11b/g, channels 12..13. No HT40
145− * channel fits here. */
146− REG_RULE(2467-10, 2472+10, 20, 6, 20,
144+ /* IEEE 802.11b/g, channels 12..13. */
145+ REG_RULE(2467-10, 2472+10, 40, 6, 20,
147146 NL80211_RRF_PASSIVE_SCAN |
148147 NL80211_RRF_NO_IBSS),
149148 /* IEEE 802.11 channel 14 - Only JP enables
scripts/kconfig/expr.h+2−3
@@ -12,7 +12,7 @@ extern "C" { · 11 unmodified lines
1212
1313 #include <assert.h>
1414 #include <stdio.h>
15−#include <sys/queue.h>
15+#include "list.h"
1616 #ifndef __cplusplus
1717 #include <stdbool.h>
1818 #endif
@@ -175,12 +175,11 @@ struct menu { · 156 unmodified lines
175175 #define MENU_ROOT 0x0002
176176
177177 struct jump_key {
178− CIRCLEQ_ENTRY(jump_key) entries;
178+ struct list_head entries;
179179 size_t offset;
180180 struct menu *target;
181181 int index;
182182 };
183−CIRCLEQ_HEAD(jk_head, jump_key);
184183
185184 #define JUMP_NB 9
186185
scripts/kconfig/list.h+91−0
@@ -0,0 +1,91 @@
1+#ifndef LIST_H
2+#define LIST_H
3+
4+/*
5+ * Copied from include/linux/...
6+ */
7+
8+#undef offsetof
9+#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
10+
11+/**
12+ * container_of - cast a member of a structure out to the containing structure
13+ * @ptr: the pointer to the member.
14+ * @type: the type of the container struct this is embedded in.
15+ * @member: the name of the member within the struct.
16+ *
17+ */
18+#define container_of(ptr, type, member) ({ \
19+ const typeof( ((type *)0)->member ) *__mptr = (ptr); \
20+ (type *)( (char *)__mptr - offsetof(type,member) );})
21+
22+
23+struct list_head {
24+ struct list_head *next, *prev;
25+};
26+
27+
28+#define LIST_HEAD_INIT(name) { &(name), &(name) }
29+
30+#define LIST_HEAD(name) \
31+ struct list_head name = LIST_HEAD_INIT(name)
32+
33+/**
34+ * list_entry - get the struct for this entry
35+ * @ptr: the &struct list_head pointer.
36+ * @type: the type of the struct this is embedded in.
37+ * @member: the name of the list_struct within the struct.
38+ */
39+#define list_entry(ptr, type, member) \
40+ container_of(ptr, type, member)
41+
42+/**
43+ * list_for_each_entry - iterate over list of given type
44+ * @pos: the type * to use as a loop cursor.
45+ * @head: the head for your list.
46+ * @member: the name of the list_struct within the struct.
47+ */
48+#define list_for_each_entry(pos, head, member) \
49+ for (pos = list_entry((head)->next, typeof(*pos), member); \
50+ &pos->member != (head); \
51+ pos = list_entry(pos->member.next, typeof(*pos), member))
52+
53+/**
54+ * list_empty - tests whether a list is empty
55+ * @head: the list to test.
56+ */
57+static inline int list_empty(const struct list_head *head)
58+{
59+ return head->next == head;
60+}
61+
62+/*
63+ * Insert a new entry between two known consecutive entries.
64+ *
65+ * This is only for internal list manipulation where we know
66+ * the prev/next entries already!
67+ */
68+static inline void __list_add(struct list_head *_new,
69+ struct list_head *prev,
70+ struct list_head *next)
71+{
72+ next->prev = _new;
73+ _new->next = next;
74+ _new->prev = prev;
75+ prev->next = _new;
76+}
77+
78+/**
79+ * list_add_tail - add a new entry
80+ * @new: new entry to be added
81+ * @head: list head to add it before
82+ *
83+ * Insert a new entry before the specified head.
84+ * This is useful for implementing queues.
85+ */
86+static inline void list_add_tail(struct list_head *_new, struct list_head *head)
87+{
88+ __list_add(_new, head->prev, head);
89+}
90+
91+#endif
scripts/kconfig/lkc_proto.h+2−2
@@ -21,9 +21,9 @@ P(menu_get_root_menu,struct menu *,(struct menu *menu)); · 20 unmodified lines
2121 P(menu_get_parent_menu,struct menu *,(struct menu *menu));
2222 P(menu_has_help,bool,(struct menu *menu));
2323 P(menu_get_help,const char *,(struct menu *menu));
24−P(get_symbol_str, void, (struct gstr *r, struct symbol *sym, struct jk_head
24+P(get_symbol_str, void, (struct gstr *r, struct symbol *sym, struct list_head
2525 *head));
26−P(get_relations_str, struct gstr, (struct symbol **sym_arr, struct jk_head
26+P(get_relations_str, struct gstr, (struct symbol **sym_arr, struct list_head
2727 *head));
2828 P(menu_get_ext_help,void,(struct menu *menu, struct gstr *help));
2929
scripts/kconfig/mconf.c+3−3
@@ -312,7 +312,7 @@ static void set_config_filename(const char *config_filename) · 311 unmodified lines
312312
313313
314314 struct search_data {
315− struct jk_head *head;
315+ struct list_head *head;
316316 struct menu **targets;
317317 int *keys;
318318 };
@@ -323,7 +323,7 @@ static void update_text(char *buf, size_t start, size_t end, void *_data) · 4 unmodified lines
323323 struct jump_key *pos;
324324 int k = 0;
325325
326− CIRCLEQ_FOREACH(pos, data->head, entries) {
326+ list_for_each_entry(pos, data->head, entries) {
327327 if (pos->offset >= start && pos->offset < end) {
328328 char header[4];
329329
@@ -375,7 +375,7 @@ again: · 45 unmodified lines
375375
376376 sym_arr = sym_re_search(dialog_input);
377377 do {
378− struct jk_head head = CIRCLEQ_HEAD_INITIALIZER(head);
378+ LIST_HEAD(head);
379379 struct menu *targets[JUMP_NB];
380380 int keys[JUMP_NB + 1], i;
381381 struct search_data data = {
scripts/kconfig/menu.c+8−6
@@ -508,7 +508,7 @@ const char *menu_get_help(struct menu *menu) · 507 unmodified lines
508508 }
509509
510510 static void get_prompt_str(struct gstr *r, struct property *prop,
511− struct jk_head *head)
511+ struct list_head *head)
512512 {
513513 int i, j;
514514 struct menu *submenu[8], *menu, *location = NULL;
@@ -544,12 +544,13 @@ static void get_prompt_str(struct gstr *r, struct property *prop, · 29 unmodified lines
544544 } else
545545 jump->target = location;
546546
547− if (CIRCLEQ_EMPTY(head))
547+ if (list_empty(head))
548548 jump->index = 0;
549549 else
550− jump->index = CIRCLEQ_LAST(head)->index + 1;
550+ jump->index = list_entry(head->prev, struct jump_key,
551+ entries)->index + 1;
551552
552− CIRCLEQ_INSERT_TAIL(head, jump, entries);
553+ list_add_tail(&jump->entries, head);
553554 }
554555
555556 if (i > 0) {
@@ -573,7 +574,8 @@ static void get_prompt_str(struct gstr *r, struct property *prop, · 17 unmodified lines
573574 /*
574575 * head is optional and may be NULL
575576 */
576−void get_symbol_str(struct gstr *r, struct symbol *sym, struct jk_head *head)
577+void get_symbol_str(struct gstr *r, struct symbol *sym,
578+ struct list_head *head)
577579 {
578580 bool hit;
579581 struct property *prop;
@@ -612,7 +614,7 @@ void get_symbol_str(struct gstr *r, struct symbol *sym, struct jk_head *head) · 32 unmodified lines
612614 str_append(r, "\n\n");
613615 }
614616
615−struct gstr get_relations_str(struct symbol **sym_arr, struct jk_head *head)
617+struct gstr get_relations_str(struct symbol **sym_arr, struct list_head *head)
616618 {
617619 struct symbol *sym;
618620 struct gstr res = str_new();
security/device_cgroup.c+13−5
@@ -164,8 +164,8 @@ static void dev_exception_clean(struct dev_cgroup *dev_cgroup) · 163 unmodified lines
164164 struct dev_exception_item *ex, *tmp;
165165
166166 list_for_each_entry_safe(ex, tmp, &dev_cgroup->exceptions, list) {
167− list_del(&ex->list);
168− kfree(ex);
167+ list_del_rcu(&ex->list);
168+ kfree_rcu(ex, rcu);
169169 }
170170 }
171171
@@ -298,7 +298,7 @@ static int may_access(struct dev_cgroup *dev_cgroup, · 126 unmodified lines
298298 struct dev_exception_item *ex;
299299 bool match = false;
300300
301− list_for_each_entry(ex, &dev_cgroup->exceptions, list) {
301+ list_for_each_entry_rcu(ex, &dev_cgroup->exceptions, list) {
302302 if ((refex->type & DEV_BLOCK) && !(ex->type & DEV_BLOCK))
303303 continue;
304304 if ((refex->type & DEV_CHAR) && !(ex->type & DEV_CHAR))
@@ -352,6 +352,8 @@ static int parent_has_perm(struct dev_cgroup *childcg, · 47 unmodified lines
352352 */
353353 static inline int may_allow_all(struct dev_cgroup *parent)
354354 {
355+ if (!parent)
356+ return 1;
355357 return parent->behavior == DEVCG_DEFAULT_ALLOW;
356358 }
357359
@@ -376,11 +378,14 @@ static int devcgroup_update_access(struct dev_cgroup *devcgroup, · 18 unmodified lines
376378 int count, rc;
377379 struct dev_exception_item ex;
378380 struct cgroup *p = devcgroup->css.cgroup;
379− struct dev_cgroup *parent = cgroup_to_devcgroup(p->parent);
381+ struct dev_cgroup *parent = NULL;
380382
381383 if (!capable(CAP_SYS_ADMIN))
382384 return -EPERM;
383385
386+ if (p->parent)
387+ parent = cgroup_to_devcgroup(p->parent);
388+
384389 memset(&ex, 0, sizeof(ex));
385390 b = buffer;
386391
@@ -391,11 +396,14 @@ static int devcgroup_update_access(struct dev_cgroup *devcgroup, · 4 unmodified lines
391396 if (!may_allow_all(parent))
392397 return -EPERM;
393398 dev_exception_clean(devcgroup);
399+ devcgroup->behavior = DEVCG_DEFAULT_ALLOW;
400+ if (!parent)
401+ break;
402+
394403 rc = dev_exceptions_copy(&devcgroup->exceptions,
395404 &parent->exceptions);
396405 if (rc)
397406 return rc;
398− devcgroup->behavior = DEVCG_DEFAULT_ALLOW;
399407 break;
400408 case DEVCG_DENY:
401409 dev_exception_clean(devcgroup);
sound/pci/es1968.c+8−3
@@ -2581,9 +2581,14 @@ static u8 snd_es1968_tea575x_get_pins(struct snd_tea575x *tea) · 2580 unmodified lines
25812581 struct es1968 *chip = tea->private_data;
25822582 unsigned long io = chip->io_port + GPIO_DATA;
25832583 u16 val = inw(io);
2584−
2585− return (val & STR_DATA) ? TEA575X_DATA : 0 |
2586− (val & STR_MOST) ? TEA575X_MOST : 0;
2584+ u8 ret;
2585+
2586+ ret = 0;
2587+ if (val & STR_DATA)
2588+ ret |= TEA575X_DATA;
2589+ if (val & STR_MOST)
2590+ ret |= TEA575X_MOST;
2591+ return ret;
25872592 }
25882593
25892594 static void snd_es1968_tea575x_set_direction(struct snd_tea575x *tea, bool output)
sound/pci/fm801.c+8−3
@@ -767,9 +767,14 @@ static u8 snd_fm801_tea575x_get_pins(struct snd_tea575x *tea) · 766 unmodified lines
767767 struct fm801 *chip = tea->private_data;
768768 unsigned short reg = inw(FM801_REG(chip, GPIO_CTRL));
769769 struct snd_fm801_tea575x_gpio gpio = *get_tea575x_gpio(chip);
770−
771− return (reg & FM801_GPIO_GP(gpio.data)) ? TEA575X_DATA : 0 |
772− (reg & FM801_GPIO_GP(gpio.most)) ? TEA575X_MOST : 0;
770+ u8 ret;
771+
772+ ret = 0;
773+ if (reg & FM801_GPIO_GP(gpio.data))
774+ ret |= TEA575X_DATA;
775+ if (reg & FM801_GPIO_GP(gpio.most))
776+ ret |= TEA575X_MOST;
777+ return ret;
773778 }
774779
775780 static void snd_fm801_tea575x_set_direction(struct snd_tea575x *tea, bool output)
sound/pci/hda/patch_realtek.c+1−0
@@ -5407,6 +5407,7 @@ static const struct snd_pci_quirk alc882_fixup_tbl[] = { · 5406 unmodified lines
54075407 SND_PCI_QUIRK(0x106b, 0x4000, "MacbookPro 5,1", ALC889_FIXUP_IMAC91_VREF),
54085408 SND_PCI_QUIRK(0x106b, 0x4100, "Macmini 3,1", ALC889_FIXUP_IMAC91_VREF),
54095409 SND_PCI_QUIRK(0x106b, 0x4200, "Mac Pro 5,1", ALC885_FIXUP_MACPRO_GPIO),
5410+ SND_PCI_QUIRK(0x106b, 0x4300, "iMac 9,1", ALC889_FIXUP_IMAC91_VREF),
54105411 SND_PCI_QUIRK(0x106b, 0x4600, "MacbookPro 5,2", ALC889_FIXUP_IMAC91_VREF),
54115412 SND_PCI_QUIRK(0x106b, 0x4900, "iMac 9,1 Aluminum", ALC889_FIXUP_IMAC91_VREF),
54125413 SND_PCI_QUIRK(0x106b, 0x4a00, "Macbook 5,2", ALC889_FIXUP_IMAC91_VREF),
sound/soc/codecs/cs42l52.c+1−2
@@ -773,7 +773,6 @@ static int cs42l52_set_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) · 772 unmodified lines
773773 {
774774 struct snd_soc_codec *codec = codec_dai->codec;
775775 struct cs42l52_private *cs42l52 = snd_soc_codec_get_drvdata(codec);
776− int ret = 0;
777776 u8 iface = 0;
778777
779778 switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
@@ -822,7 +821,7 @@ static int cs42l52_set_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) · 42 unmodified lines
822821 case SND_SOC_DAIFMT_NB_IF:
823822 break;
824823 default:
825− ret = -EINVAL;
824+ return -EINVAL;
826825 }
827826 cs42l52->config.format = iface;
828827 snd_soc_write(codec, CS42L52_IFACE_CTL1, cs42l52->config.format);
sound/soc/codecs/wm5102.c+551−1
@@ -42,6 +42,556 @@ static DECLARE_TLV_DB_SCALE(eq_tlv, -1200, 100, 0); · 41 unmodified lines
4242 static DECLARE_TLV_DB_SCALE(digital_tlv, -6400, 50, 0);
4343 static DECLARE_TLV_DB_SCALE(noise_tlv, 0, 600, 0);
4444
45+static const struct reg_default wm5102_sysclk_reva_patch[] = {
46+ { 0x3000, 0x2225 },
47+ { 0x3001, 0x3a03 },
48+ { 0x3002, 0x0225 },
49+ { 0x3003, 0x0801 },
50+ { 0x3004, 0x6249 },
51+ { 0x3005, 0x0c04 },
52+ { 0x3006, 0x0225 },
53+ { 0x3007, 0x5901 },
54+ { 0x3008, 0xe249 },
55+ { 0x3009, 0x030d },
56+ { 0x300a, 0x0249 },
57+ { 0x300b, 0x2c01 },
58+ { 0x300c, 0xe249 },
59+ { 0x300d, 0x4342 },
60+ { 0x300e, 0xe249 },
61+ { 0x300f, 0x73c0 },
62+ { 0x3010, 0x4249 },
63+ { 0x3011, 0x0c00 },
64+ { 0x3012, 0x0225 },
65+ { 0x3013, 0x1f01 },
66+ { 0x3014, 0x0225 },
67+ { 0x3015, 0x1e01 },
68+ { 0x3016, 0x0225 },
69+ { 0x3017, 0xfa00 },
70+ { 0x3018, 0x0000 },
71+ { 0x3019, 0xf000 },
72+ { 0x301a, 0x0000 },
73+ { 0x301b, 0xf000 },
74+ { 0x301c, 0x0000 },
75+ { 0x301d, 0xf000 },
76+ { 0x301e, 0x0000 },
77+ { 0x301f, 0xf000 },
78+ { 0x3020, 0x0000 },
79+ { 0x3021, 0xf000 },
80+ { 0x3022, 0x0000 },
81+ { 0x3023, 0xf000 },
82+ { 0x3024, 0x0000 },
83+ { 0x3025, 0xf000 },
84+ { 0x3026, 0x0000 },
85+ { 0x3027, 0xf000 },
86+ { 0x3028, 0x0000 },
87+ { 0x3029, 0xf000 },
88+ { 0x302a, 0x0000 },
89+ { 0x302b, 0xf000 },
90+ { 0x302c, 0x0000 },
91+ { 0x302d, 0xf000 },
92+ { 0x302e, 0x0000 },
93+ { 0x302f, 0xf000 },
94+ { 0x3030, 0x0225 },
95+ { 0x3031, 0x1a01 },
96+ { 0x3032, 0x0225 },
97+ { 0x3033, 0x1e00 },
98+ { 0x3034, 0x0225 },
99+ { 0x3035, 0x1f00 },
100+ { 0x3036, 0x6225 },
101+ { 0x3037, 0xf800 },
102+ { 0x3038, 0x0000 },
103+ { 0x3039, 0xf000 },
104+ { 0x303a, 0x0000 },
105+ { 0x303b, 0xf000 },
106+ { 0x303c, 0x0000 },
107+ { 0x303d, 0xf000 },
108+ { 0x303e, 0x0000 },
109+ { 0x303f, 0xf000 },
110+ { 0x3040, 0x2226 },
111+ { 0x3041, 0x3a03 },
112+ { 0x3042, 0x0226 },
113+ { 0x3043, 0x0801 },
114+ { 0x3044, 0x6249 },
115+ { 0x3045, 0x0c06 },
116+ { 0x3046, 0x0226 },
117+ { 0x3047, 0x5901 },
118+ { 0x3048, 0xe249 },
119+ { 0x3049, 0x030d },
120+ { 0x304a, 0x0249 },
121+ { 0x304b, 0x2c01 },
122+ { 0x304c, 0xe249 },
123+ { 0x304d, 0x4342 },
124+ { 0x304e, 0xe249 },
125+ { 0x304f, 0x73c0 },
126+ { 0x3050, 0x4249 },
127+ { 0x3051, 0x0c00 },
128+ { 0x3052, 0x0226 },
129+ { 0x3053, 0x1f01 },
130+ { 0x3054, 0x0226 },
131+ { 0x3055, 0x1e01 },
132+ { 0x3056, 0x0226 },
133+ { 0x3057, 0xfa00 },
134+ { 0x3058, 0x0000 },
135+ { 0x3059, 0xf000 },
136+ { 0x305a, 0x0000 },
137+ { 0x305b, 0xf000 },
138+ { 0x305c, 0x0000 },
139+ { 0x305d, 0xf000 },
140+ { 0x305e, 0x0000 },
141+ { 0x305f, 0xf000 },
142+ { 0x3060, 0x0000 },
143+ { 0x3061, 0xf000 },
144+ { 0x3062, 0x0000 },
145+ { 0x3063, 0xf000 },
146+ { 0x3064, 0x0000 },
147+ { 0x3065, 0xf000 },
148+ { 0x3066, 0x0000 },
149+ { 0x3067, 0xf000 },
150+ { 0x3068, 0x0000 },
151+ { 0x3069, 0xf000 },
152+ { 0x306a, 0x0000 },
153+ { 0x306b, 0xf000 },
154+ { 0x306c, 0x0000 },
155+ { 0x306d, 0xf000 },
156+ { 0x306e, 0x0000 },
157+ { 0x306f, 0xf000 },
158+ { 0x3070, 0x0226 },
159+ { 0x3071, 0x1a01 },
160+ { 0x3072, 0x0226 },
161+ { 0x3073, 0x1e00 },
162+ { 0x3074, 0x0226 },
163+ { 0x3075, 0x1f00 },
164+ { 0x3076, 0x6226 },
165+ { 0x3077, 0xf800 },
166+ { 0x3078, 0x0000 },
167+ { 0x3079, 0xf000 },
168+ { 0x307a, 0x0000 },
169+ { 0x307b, 0xf000 },
170+ { 0x307c, 0x0000 },
171+ { 0x307d, 0xf000 },
172+ { 0x307e, 0x0000 },
173+ { 0x307f, 0xf000 },
174+ { 0x3080, 0x2227 },
175+ { 0x3081, 0x3a03 },
176+ { 0x3082, 0x0227 },
177+ { 0x3083, 0x0801 },
178+ { 0x3084, 0x6255 },
179+ { 0x3085, 0x0c04 },
180+ { 0x3086, 0x0227 },
181+ { 0x3087, 0x5901 },
182+ { 0x3088, 0xe255 },
183+ { 0x3089, 0x030d },
184+ { 0x308a, 0x0255 },
185+ { 0x308b, 0x2c01 },
186+ { 0x308c, 0xe255 },
187+ { 0x308d, 0x4342 },
188+ { 0x308e, 0xe255 },
189+ { 0x308f, 0x73c0 },
190+ { 0x3090, 0x4255 },
191+ { 0x3091, 0x0c00 },
192+ { 0x3092, 0x0227 },
193+ { 0x3093, 0x1f01 },
194+ { 0x3094, 0x0227 },
195+ { 0x3095, 0x1e01 },
196+ { 0x3096, 0x0227 },
197+ { 0x3097, 0xfa00 },
198+ { 0x3098, 0x0000 },
199+ { 0x3099, 0xf000 },
200+ { 0x309a, 0x0000 },
201+ { 0x309b, 0xf000 },
202+ { 0x309c, 0x0000 },
203+ { 0x309d, 0xf000 },
204+ { 0x309e, 0x0000 },
205+ { 0x309f, 0xf000 },
206+ { 0x30a0, 0x0000 },
207+ { 0x30a1, 0xf000 },
208+ { 0x30a2, 0x0000 },
209+ { 0x30a3, 0xf000 },
210+ { 0x30a4, 0x0000 },
211+ { 0x30a5, 0xf000 },
212+ { 0x30a6, 0x0000 },
213+ { 0x30a7, 0xf000 },
214+ { 0x30a8, 0x0000 },
215+ { 0x30a9, 0xf000 },
216+ { 0x30aa, 0x0000 },
217+ { 0x30ab, 0xf000 },
218+ { 0x30ac, 0x0000 },
219+ { 0x30ad, 0xf000 },
220+ { 0x30ae, 0x0000 },
221+ { 0x30af, 0xf000 },
222+ { 0x30b0, 0x0227 },
223+ { 0x30b1, 0x1a01 },
224+ { 0x30b2, 0x0227 },
225+ { 0x30b3, 0x1e00 },
226+ { 0x30b4, 0x0227 },
227+ { 0x30b5, 0x1f00 },
228+ { 0x30b6, 0x6227 },
229+ { 0x30b7, 0xf800 },
230+ { 0x30b8, 0x0000 },
231+ { 0x30b9, 0xf000 },
232+ { 0x30ba, 0x0000 },
233+ { 0x30bb, 0xf000 },
234+ { 0x30bc, 0x0000 },
235+ { 0x30bd, 0xf000 },
236+ { 0x30be, 0x0000 },
237+ { 0x30bf, 0xf000 },
238+ { 0x30c0, 0x2228 },
239+ { 0x30c1, 0x3a03 },
240+ { 0x30c2, 0x0228 },
241+ { 0x30c3, 0x0801 },
242+ { 0x30c4, 0x6255 },
243+ { 0x30c5, 0x0c06 },
244+ { 0x30c6, 0x0228 },
245+ { 0x30c7, 0x5901 },
246+ { 0x30c8, 0xe255 },
247+ { 0x30c9, 0x030d },
248+ { 0x30ca, 0x0255 },
249+ { 0x30cb, 0x2c01 },
250+ { 0x30cc, 0xe255 },
251+ { 0x30cd, 0x4342 },
252+ { 0x30ce, 0xe255 },
253+ { 0x30cf, 0x73c0 },
254+ { 0x30d0, 0x4255 },
255+ { 0x30d1, 0x0c00 },
256+ { 0x30d2, 0x0228 },
257+ { 0x30d3, 0x1f01 },
258+ { 0x30d4, 0x0228 },
259+ { 0x30d5, 0x1e01 },
260+ { 0x30d6, 0x0228 },
261+ { 0x30d7, 0xfa00 },
262+ { 0x30d8, 0x0000 },
263+ { 0x30d9, 0xf000 },
264+ { 0x30da, 0x0000 },
265+ { 0x30db, 0xf000 },
266+ { 0x30dc, 0x0000 },
267+ { 0x30dd, 0xf000 },
268+ { 0x30de, 0x0000 },
269+ { 0x30df, 0xf000 },
270+ { 0x30e0, 0x0000 },
271+ { 0x30e1, 0xf000 },
272+ { 0x30e2, 0x0000 },
273+ { 0x30e3, 0xf000 },
274+ { 0x30e4, 0x0000 },
275+ { 0x30e5, 0xf000 },
276+ { 0x30e6, 0x0000 },
277+ { 0x30e7, 0xf000 },
278+ { 0x30e8, 0x0000 },
279+ { 0x30e9, 0xf000 },
280+ { 0x30ea, 0x0000 },
281+ { 0x30eb, 0xf000 },
282+ { 0x30ec, 0x0000 },
283+ { 0x30ed, 0xf000 },
284+ { 0x30ee, 0x0000 },
285+ { 0x30ef, 0xf000 },
286+ { 0x30f0, 0x0228 },
287+ { 0x30f1, 0x1a01 },
288+ { 0x30f2, 0x0228 },
289+ { 0x30f3, 0x1e00 },
290+ { 0x30f4, 0x0228 },
291+ { 0x30f5, 0x1f00 },
292+ { 0x30f6, 0x6228 },
293+ { 0x30f7, 0xf800 },
294+ { 0x30f8, 0x0000 },
295+ { 0x30f9, 0xf000 },
296+ { 0x30fa, 0x0000 },
297+ { 0x30fb, 0xf000 },
298+ { 0x30fc, 0x0000 },
299+ { 0x30fd, 0xf000 },
300+ { 0x30fe, 0x0000 },
301+ { 0x30ff, 0xf000 },
302+ { 0x3100, 0x222b },
303+ { 0x3101, 0x3a03 },
304+ { 0x3102, 0x222b },
305+ { 0x3103, 0x5803 },
306+ { 0x3104, 0xe26f },
307+ { 0x3105, 0x030d },
308+ { 0x3106, 0x626f },
309+ { 0x3107, 0x2c01 },
310+ { 0x3108, 0xe26f },
311+ { 0x3109, 0x4342 },
312+ { 0x310a, 0xe26f },
313+ { 0x310b, 0x73c0 },
314+ { 0x310c, 0x026f },
315+ { 0x310d, 0x0c00 },
316+ { 0x310e, 0x022b },
317+ { 0x310f, 0x1f01 },
318+ { 0x3110, 0x022b },
319+ { 0x3111, 0x1e01 },
320+ { 0x3112, 0x022b },
321+ { 0x3113, 0xfa00 },
322+ { 0x3114, 0x0000 },
323+ { 0x3115, 0xf000 },
324+ { 0x3116, 0x0000 },
325+ { 0x3117, 0xf000 },
326+ { 0x3118, 0x0000 },
327+ { 0x3119, 0xf000 },
328+ { 0x311a, 0x0000 },
329+ { 0x311b, 0xf000 },
330+ { 0x311c, 0x0000 },
331+ { 0x311d, 0xf000 },
332+ { 0x311e, 0x0000 },
333+ { 0x311f, 0xf000 },
334+ { 0x3120, 0x022b },
335+ { 0x3121, 0x0a01 },
336+ { 0x3122, 0x022b },
337+ { 0x3123, 0x1e00 },
338+ { 0x3124, 0x022b },
339+ { 0x3125, 0x1f00 },
340+ { 0x3126, 0x622b },
341+ { 0x3127, 0xf800 },
342+ { 0x3128, 0x0000 },
343+ { 0x3129, 0xf000 },
344+ { 0x312a, 0x0000 },
345+ { 0x312b, 0xf000 },
346+ { 0x312c, 0x0000 },
347+ { 0x312d, 0xf000 },
348+ { 0x312e, 0x0000 },
349+ { 0x312f, 0xf000 },
350+ { 0x3130, 0x0000 },
351+ { 0x3131, 0xf000 },
352+ { 0x3132, 0x0000 },
353+ { 0x3133, 0xf000 },
354+ { 0x3134, 0x0000 },
355+ { 0x3135, 0xf000 },
356+ { 0x3136, 0x0000 },
357+ { 0x3137, 0xf000 },
358+ { 0x3138, 0x0000 },
359+ { 0x3139, 0xf000 },
360+ { 0x313a, 0x0000 },
361+ { 0x313b, 0xf000 },
362+ { 0x313c, 0x0000 },
363+ { 0x313d, 0xf000 },
364+ { 0x313e, 0x0000 },
365+ { 0x313f, 0xf000 },
366+ { 0x3140, 0x0000 },
367+ { 0x3141, 0xf000 },
368+ { 0x3142, 0x0000 },
369+ { 0x3143, 0xf000 },
370+ { 0x3144, 0x0000 },
371+ { 0x3145, 0xf000 },
372+ { 0x3146, 0x0000 },
373+ { 0x3147, 0xf000 },
374+ { 0x3148, 0x0000 },
375+ { 0x3149, 0xf000 },
376+ { 0x314a, 0x0000 },
377+ { 0x314b, 0xf000 },
378+ { 0x314c, 0x0000 },
379+ { 0x314d, 0xf000 },
380+ { 0x314e, 0x0000 },
381+ { 0x314f, 0xf000 },
382+ { 0x3150, 0x0000 },
383+ { 0x3151, 0xf000 },
384+ { 0x3152, 0x0000 },
385+ { 0x3153, 0xf000 },
386+ { 0x3154, 0x0000 },
387+ { 0x3155, 0xf000 },
388+ { 0x3156, 0x0000 },
389+ { 0x3157, 0xf000 },
390+ { 0x3158, 0x0000 },
391+ { 0x3159, 0xf000 },
392+ { 0x315a, 0x0000 },
393+ { 0x315b, 0xf000 },
394+ { 0x315c, 0x0000 },
395+ { 0x315d, 0xf000 },
396+ { 0x315e, 0x0000 },
397+ { 0x315f, 0xf000 },
398+ { 0x3160, 0x0000 },
399+ { 0x3161, 0xf000 },
400+ { 0x3162, 0x0000 },
401+ { 0x3163, 0xf000 },
402+ { 0x3164, 0x0000 },
403+ { 0x3165, 0xf000 },
404+ { 0x3166, 0x0000 },
405+ { 0x3167, 0xf000 },
406+ { 0x3168, 0x0000 },
407+ { 0x3169, 0xf000 },
408+ { 0x316a, 0x0000 },
409+ { 0x316b, 0xf000 },
410+ { 0x316c, 0x0000 },
411+ { 0x316d, 0xf000 },
412+ { 0x316e, 0x0000 },
413+ { 0x316f, 0xf000 },
414+ { 0x3170, 0x0000 },
415+ { 0x3171, 0xf000 },
416+ { 0x3172, 0x0000 },
417+ { 0x3173, 0xf000 },
418+ { 0x3174, 0x0000 },
419+ { 0x3175, 0xf000 },
420+ { 0x3176, 0x0000 },
421+ { 0x3177, 0xf000 },
422+ { 0x3178, 0x0000 },
423+ { 0x3179, 0xf000 },
424+ { 0x317a, 0x0000 },
425+ { 0x317b, 0xf000 },
426+ { 0x317c, 0x0000 },
427+ { 0x317d, 0xf000 },
428+ { 0x317e, 0x0000 },
429+ { 0x317f, 0xf000 },
430+ { 0x3180, 0x2001 },
431+ { 0x3181, 0xf101 },
432+ { 0x3182, 0x0000 },
433+ { 0x3183, 0xf000 },
434+ { 0x3184, 0x0000 },
435+ { 0x3185, 0xf000 },
436+ { 0x3186, 0x0000 },
437+ { 0x3187, 0xf000 },
438+ { 0x3188, 0x0000 },
439+ { 0x3189, 0xf000 },
440+ { 0x318a, 0x0000 },
441+ { 0x318b, 0xf000 },
442+ { 0x318c, 0x0000 },
443+ { 0x318d, 0xf000 },
444+ { 0x318e, 0x0000 },
445+ { 0x318f, 0xf000 },
446+ { 0x3190, 0x0000 },
447+ { 0x3191, 0xf000 },
448+ { 0x3192, 0x0000 },
449+ { 0x3193, 0xf000 },
450+ { 0x3194, 0x0000 },
451+ { 0x3195, 0xf000 },
452+ { 0x3196, 0x0000 },
453+ { 0x3197, 0xf000 },
454+ { 0x3198, 0x0000 },
455+ { 0x3199, 0xf000 },
456+ { 0x319a, 0x0000 },
457+ { 0x319b, 0xf000 },
458+ { 0x319c, 0x0000 },
459+ { 0x319d, 0xf000 },
460+ { 0x319e, 0x0000 },
461+ { 0x319f, 0xf000 },
462+ { 0x31a0, 0x0000 },
463+ { 0x31a1, 0xf000 },
464+ { 0x31a2, 0x0000 },
465+ { 0x31a3, 0xf000 },
466+ { 0x31a4, 0x0000 },
467+ { 0x31a5, 0xf000 },
468+ { 0x31a6, 0x0000 },
469+ { 0x31a7, 0xf000 },
470+ { 0x31a8, 0x0000 },
471+ { 0x31a9, 0xf000 },
472+ { 0x31aa, 0x0000 },
473+ { 0x31ab, 0xf000 },
474+ { 0x31ac, 0x0000 },
475+ { 0x31ad, 0xf000 },
476+ { 0x31ae, 0x0000 },
477+ { 0x31af, 0xf000 },
478+ { 0x31b0, 0x0000 },
479+ { 0x31b1, 0xf000 },
480+ { 0x31b2, 0x0000 },
481+ { 0x31b3, 0xf000 },
482+ { 0x31b4, 0x0000 },
483+ { 0x31b5, 0xf000 },
484+ { 0x31b6, 0x0000 },
485+ { 0x31b7, 0xf000 },
486+ { 0x31b8, 0x0000 },
487+ { 0x31b9, 0xf000 },
488+ { 0x31ba, 0x0000 },
489+ { 0x31bb, 0xf000 },
490+ { 0x31bc, 0x0000 },
491+ { 0x31bd, 0xf000 },
492+ { 0x31be, 0x0000 },
493+ { 0x31bf, 0xf000 },
494+ { 0x31c0, 0x0000 },
495+ { 0x31c1, 0xf000 },
496+ { 0x31c2, 0x0000 },
497+ { 0x31c3, 0xf000 },
498+ { 0x31c4, 0x0000 },
499+ { 0x31c5, 0xf000 },
500+ { 0x31c6, 0x0000 },
501+ { 0x31c7, 0xf000 },
502+ { 0x31c8, 0x0000 },
503+ { 0x31c9, 0xf000 },
504+ { 0x31ca, 0x0000 },
505+ { 0x31cb, 0xf000 },
506+ { 0x31cc, 0x0000 },
507+ { 0x31cd, 0xf000 },
508+ { 0x31ce, 0x0000 },
509+ { 0x31cf, 0xf000 },
510+ { 0x31d0, 0x0000 },
511+ { 0x31d1, 0xf000 },
512+ { 0x31d2, 0x0000 },
513+ { 0x31d3, 0xf000 },
514+ { 0x31d4, 0x0000 },
515+ { 0x31d5, 0xf000 },
516+ { 0x31d6, 0x0000 },
517+ { 0x31d7, 0xf000 },
518+ { 0x31d8, 0x0000 },
519+ { 0x31d9, 0xf000 },
520+ { 0x31da, 0x0000 },
521+ { 0x31db, 0xf000 },
522+ { 0x31dc, 0x0000 },
523+ { 0x31dd, 0xf000 },
524+ { 0x31de, 0x0000 },
525+ { 0x31df, 0xf000 },
526+ { 0x31e0, 0x0000 },
527+ { 0x31e1, 0xf000 },
528+ { 0x31e2, 0x0000 },
529+ { 0x31e3, 0xf000 },
530+ { 0x31e4, 0x0000 },
531+ { 0x31e5, 0xf000 },
532+ { 0x31e6, 0x0000 },
533+ { 0x31e7, 0xf000 },
534+ { 0x31e8, 0x0000 },
535+ { 0x31e9, 0xf000 },
536+ { 0x31ea, 0x0000 },
537+ { 0x31eb, 0xf000 },
538+ { 0x31ec, 0x0000 },
539+ { 0x31ed, 0xf000 },
540+ { 0x31ee, 0x0000 },
541+ { 0x31ef, 0xf000 },
542+ { 0x31f0, 0x0000 },
543+ { 0x31f1, 0xf000 },
544+ { 0x31f2, 0x0000 },
545+ { 0x31f3, 0xf000 },
546+ { 0x31f4, 0x0000 },
547+ { 0x31f5, 0xf000 },
548+ { 0x31f6, 0x0000 },
549+ { 0x31f7, 0xf000 },
550+ { 0x31f8, 0x0000 },
551+ { 0x31f9, 0xf000 },
552+ { 0x31fa, 0x0000 },
553+ { 0x31fb, 0xf000 },
554+ { 0x31fc, 0x0000 },
555+ { 0x31fd, 0xf000 },
556+ { 0x31fe, 0x0000 },
557+ { 0x31ff, 0xf000 },
558+ { 0x024d, 0xff50 },
559+ { 0x0252, 0xff50 },
560+ { 0x0259, 0x0112 },
561+ { 0x025e, 0x0112 },
562+};
563+
564+static int wm5102_sysclk_ev(struct snd_soc_dapm_widget *w,
565+ struct snd_kcontrol *kcontrol, int event)
566+{
567+ struct snd_soc_codec *codec = w->codec;
568+ struct arizona *arizona = dev_get_drvdata(codec->dev);
569+ struct regmap *regmap = codec->control_data;
570+ const struct reg_default *patch = NULL;
571+ int i, patch_size;
572+
573+ switch (arizona->rev) {
574+ case 0:
575+ patch = wm5102_sysclk_reva_patch;
576+ patch_size = ARRAY_SIZE(wm5102_sysclk_reva_patch);
577+ break;
578+ }
579+
580+ switch (event) {
581+ case SND_SOC_DAPM_POST_PMU:
582+ if (patch)
583+ for (i = 0; i < patch_size; i++)
584+ regmap_write(regmap, patch[i].reg,
585+ patch[i].def);
586+ break;
587+
588+ default:
589+ break;
590+ }
591+
592+ return 0;
593+}
594+
45595 static const struct snd_kcontrol_new wm5102_snd_controls[] = {
46596 SOC_SINGLE("IN1 High Performance Switch", ARIZONA_IN1L_CONTROL,
47597 ARIZONA_IN1_OSR_SHIFT, 1, 0),
@@ -297,7 +847,7 @@ static const struct snd_kcontrol_new wm5102_aec_loopback_mux = · 249 unmodified lines
297847
298848 static const struct snd_soc_dapm_widget wm5102_dapm_widgets[] = {
299849 SND_SOC_DAPM_SUPPLY("SYSCLK", ARIZONA_SYSTEM_CLOCK_1, ARIZONA_SYSCLK_ENA_SHIFT,
300− 0, NULL, 0),
850+ 0, wm5102_sysclk_ev, SND_SOC_DAPM_POST_PMU),
301851 SND_SOC_DAPM_SUPPLY("ASYNCCLK", ARIZONA_ASYNC_CLOCK_1,
302852 ARIZONA_ASYNC_CLK_ENA_SHIFT, 0, NULL, 0),
303853 SND_SOC_DAPM_SUPPLY("OPCLK", ARIZONA_OUTPUT_SYSTEM_CLOCK,
sound/soc/codecs/wm8978.c+1−1
@@ -782,7 +782,7 @@ static int wm8978_hw_params(struct snd_pcm_substream *substream, · 781 unmodified lines
782782 wm8978->mclk_idx = -1;
783783 f_sel = wm8978->f_mclk;
784784 } else {
785− if (!wm8978->f_pllout) {
785+ if (!wm8978->f_opclk) {
786786 /* We only enter here, if OPCLK is not used */
787787 int ret = wm8978_configure_pll(codec);
788788 if (ret < 0)
sound/soc/mxs/mxs-saif.c+13−4
@@ -523,16 +523,24 @@ static int mxs_saif_trigger(struct snd_pcm_substream *substream, int cmd, · 522 unmodified lines
523523
524524 if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
525525 /*
526− * write a data to saif data register to trigger
527− * the transfer
526+ * write data to saif data register to trigger
527+ * the transfer.
528+ * For 24-bit format the 32-bit FIFO register stores
529+ * only one channel, so we need to write twice.
530+ * This is also safe for the other non 24-bit formats.
528531 */
529532 __raw_writel(0, saif->base + SAIF_DATA);
533+ __raw_writel(0, saif->base + SAIF_DATA);
530534 } else {
531535 /*
532− * read a data from saif data register to trigger
533− * the receive
536+ * read data from saif data register to trigger
537+ * the receive.
538+ * For 24-bit format the 32-bit FIFO register stores
539+ * only one channel, so we need to read twice.
540+ * This is also safe for the other non 24-bit formats.
534541 */
535542 __raw_readl(saif->base + SAIF_DATA);
543+ __raw_readl(saif->base + SAIF_DATA);
536544 }
537545
538546 master_saif->ongoing = 1;
@@ -812,3 +820,4 @@ module_platform_driver(mxs_saif_driver); · 273 unmodified lines
812820 MODULE_AUTHOR("Freescale Semiconductor, Inc.");
813821 MODULE_DESCRIPTION("MXS ASoC SAIF driver");
814822 MODULE_LICENSE("GPL");
823+MODULE_ALIAS("platform:mxs-saif");
sound/soc/samsung/Kconfig+2−0
@@ -207,6 +207,8 @@ config SND_SOC_BELLS · 206 unmodified lines
207207 select SND_SOC_WM5102
208208 select SND_SOC_WM5110
209209 select SND_SOC_WM9081
210+ select SND_SOC_WM0010
211+ select SND_SOC_WM1250_EV1
210212
211213 config SND_SOC_LOWLAND
212214 tristate "Audio support for Wolfson Lowland"
sound/soc/samsung/bells.c+1−1
@@ -247,7 +247,7 @@ static struct snd_soc_dai_link bells_dai_wm5110[] = { · 246 unmodified lines
247247 {
248248 .name = "Sub",
249249 .stream_name = "Sub",
250− .cpu_dai_name = "wm5110-aif3",
250+ .cpu_dai_name = "wm5102-aif3",
251251 .codec_dai_name = "wm9081-hifi",
252252 .codec_name = "wm9081.1-006c",
253253 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
sound/soc/soc-core.c+3−2
@@ -2786,8 +2786,9 @@ int snd_soc_put_volsw_sx(struct snd_kcontrol *kcontrol, · 2785 unmodified lines
27862786 val = (ucontrol->value.integer.value[0] + min) & mask;
27872787 val = val << shift;
27882788
2789− if (snd_soc_update_bits_locked(codec, reg, val_mask, val))
2790− return err;
2789+ err = snd_soc_update_bits_locked(codec, reg, val_mask, val);
2790+ if (err < 0)
2791+ return err;
27912792
27922793 if (snd_soc_volsw_is_stereo(mc)) {
27932794 val_mask = mask << rshift;
sound/soc/soc-dapm.c+1−1
@@ -3745,7 +3745,7 @@ void snd_soc_dapm_shutdown(struct snd_soc_card *card) · 3744 unmodified lines
37453745 {
37463746 struct snd_soc_codec *codec;
37473747
3748− list_for_each_entry(codec, &card->codec_dev_list, list) {
3748+ list_for_each_entry(codec, &card->codec_dev_list, card_list) {
37493749 soc_dapm_shutdown_codec(&codec->dapm);
37503750 if (codec->dapm.bias_level == SND_SOC_BIAS_STANDBY)
37513751 snd_soc_dapm_set_bias_level(&codec->dapm,
sound/usb/card.c+3−3
@@ -559,9 +559,11 @@ static void snd_usb_audio_disconnect(struct usb_device *dev, · 558 unmodified lines
559559 return;
560560
561561 card = chip->card;
562− mutex_lock(&register_mutex);
563562 down_write(&chip->shutdown_rwsem);
564563 chip->shutdown = 1;
564+ up_write(&chip->shutdown_rwsem);
565+
566+ mutex_lock(&register_mutex);
565567 chip->num_interfaces--;
566568 if (chip->num_interfaces <= 0) {
567569 snd_card_disconnect(card);
@@ -582,11 +584,9 @@ static void snd_usb_audio_disconnect(struct usb_device *dev, · 14 unmodified lines
582584 snd_usb_mixer_disconnect(p);
583585 }
584586 usb_chip[chip->index] = NULL;
585− up_write(&chip->shutdown_rwsem);
586587 mutex_unlock(&register_mutex);
587588 snd_card_free_when_closed(card);
588589 } else {
589− up_write(&chip->shutdown_rwsem);
590590 mutex_unlock(&register_mutex);
591591 }
592592 }
tools/power/x86/turbostat/turbostat.c+19−9
@@ -206,8 +206,10 @@ int get_msr(int cpu, off_t offset, unsigned long long *msr) · 205 unmodified lines
206206 retval = pread(fd, msr, sizeof *msr, offset);
207207 close(fd);
208208
209− if (retval != sizeof *msr)
209+ if (retval != sizeof *msr) {
210+ fprintf(stderr, "%s offset 0x%zx read failed\n", pathname, offset);
210211 return -1;
212+ }
211213
212214 return 0;
213215 }
@@ -1101,7 +1103,9 @@ void turbostat_loop() · 887 unmodified lines
11011103
11021104 restart:
11031105 retval = for_all_cpus(get_counters, EVEN_COUNTERS);
1104− if (retval) {
1106+ if (retval < -1) {
1107+ exit(retval);
1108+ } else if (retval == -1) {
11051109 re_initialize();
11061110 goto restart;
11071111 }
@@ -1114,7 +1118,9 @@ restart: · 6 unmodified lines
11141118 }
11151119 sleep(interval_sec);
11161120 retval = for_all_cpus(get_counters, ODD_COUNTERS);
1117− if (retval) {
1121+ if (retval < -1) {
1122+ exit(retval);
1123+ } else if (retval == -1) {
11181124 re_initialize();
11191125 goto restart;
11201126 }
@@ -1126,7 +1132,9 @@ restart: · 5 unmodified lines
11261132 flush_stdout();
11271133 sleep(interval_sec);
11281134 retval = for_all_cpus(get_counters, EVEN_COUNTERS);
1129− if (retval) {
1135+ if (retval < -1) {
1136+ exit(retval);
1137+ } else if (retval == -1) {
11301138 re_initialize();
11311139 goto restart;
11321140 }
@@ -1545,8 +1553,11 @@ void turbostat_init() · 412 unmodified lines
15451553 int fork_it(char **argv)
15461554 {
15471555 pid_t child_pid;
1556+ int status;
15481557
1549− for_all_cpus(get_counters, EVEN_COUNTERS);
1558+ status = for_all_cpus(get_counters, EVEN_COUNTERS);
1559+ if (status)
1560+ exit(status);
15501561 /* clear affinity side-effect of get_counters() */
15511562 sched_setaffinity(0, cpu_present_setsize, cpu_present_set);
15521563 gettimeofday(&tv_even, (struct timezone *)NULL);
@@ -1556,7 +1567,6 @@ int fork_it(char **argv) · 3 unmodified lines
15561567 /* child */
15571568 execvp(argv[0], argv);
15581569 } else {
1559− int status;
15601570
15611571 /* parent */
15621572 if (child_pid == -1) {
@@ -1568,7 +1578,7 @@ int fork_it(char **argv) · 5 unmodified lines
15681578 signal(SIGQUIT, SIG_IGN);
15691579 if (waitpid(child_pid, &status, 0) == -1) {
15701580 perror("wait");
1571− exit(1);
1581+ exit(status);
15721582 }
15731583 }
15741584 /*
@@ -1585,7 +1595,7 @@ int fork_it(char **argv) · 10 unmodified lines
15851595
15861596 fprintf(stderr, "%.6f sec\n", tv_delta.tv_sec + tv_delta.tv_usec/1000000.0);
15871597
1588− return 0;
1598+ return status;
15891599 }
15901600
15911601 void cmdline(int argc, char **argv)
@@ -1594,7 +1604,7 @@ void cmdline(int argc, char **argv) · 2 unmodified lines
15941604
15951605 progname = argv[0];
15961606
1597− while ((opt = getopt(argc, argv, "+pPSvisc:sC:m:M:")) != -1) {
1607+ while ((opt = getopt(argc, argv, "+pPSvi:sc:sC:m:M:")) != -1) {
15981608 switch (opt) {
15991609 case 'p':
16001610 show_core_only++;