History

Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux into rmobile-fixes-for-linus

Paul Mundt committed 14 years ago

Commit 35eb3042 parents ca0cc30 bb4c7e91892 files · +37369 −61244Browse files

Unified · Split

1892 files
  1. Documentation/DocBook/device-drivers.tmpl +13 −4
  2. Documentation/DocBook/deviceiobook.tmpl +1 −1
  3. Documentation/DocBook/media/dvb/dvbproperty.xml +5 −7
  4. Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml +13 −5
  5. Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml +14 −9
  6. Documentation/DocBook/media/v4l/vidioc-g-frequency.xml +5 −2
  7. Documentation/DocBook/media/v4l/vidioc-g-input.xml +2 −2
  8. Documentation/DocBook/media/v4l/vidioc-g-output.xml +3 −2
  9. Documentation/acpi/apei/einj.txt +44 −11
  10. Documentation/devices.txt +3 −0
  11. Documentation/devicetree/bindings/dma/atmel-dma.txt +14 −0
  12. Documentation/devicetree/bindings/i2c/omap-i2c.txt +30 −0
  13. Documentation/dmaengine.txt +8 −0
  14. Documentation/driver-model/devres.txt +4 −0
  15. Documentation/feature-removal-schedule.txt +14 −11
  16. Documentation/input/event-codes.txt +64 −8
  17. Documentation/ioctl/ioctl-number.txt +1 −0
  18. Documentation/kernel-parameters.txt +5 −0
  19. Documentation/pinctrl.txt +8 −9
  20. Documentation/power/basic-pm-debugging.txt +1 −1
  21. Documentation/power/freezing-of-tasks.txt +4 −4
  22. Documentation/scsi/ChangeLog.megaraid_sas +10 −0
  23. Documentation/scsi/LICENSE.qla4xxx +1 −22
  24. Documentation/stable_kernel_rules.txt +2 −1
  25. Documentation/sysctl/kernel.txt +2 −0
  26. Documentation/target/tcm_mod_builder.py +15 −45
  27. Documentation/thermal/sysfs-api.txt +1 −1
  28. Documentation/video4linux/v4l2-controls.txt +0 −21
  29. Documentation/virtual/00-INDEX +0 −2
  30. MAINTAINERS +56 −51
  31. Makefile +2 −2
  32. arch/arm/Kconfig +1 −3
  33. arch/arm/Makefile +0 −1
  34. arch/arm/boot/dts/exynos4210.dtsi +1 −0
  35. arch/arm/boot/dts/tegra-paz00.dts +3 −3
  36. arch/arm/common/gic.c +2 −5
  37. arch/arm/common/it8152.c +0 −7
  38. arch/arm/common/pl330.c +2 −1
  39. arch/arm/configs/imx_v6_v7_defconfig +35 −26
  40. arch/arm/configs/mx3_defconfig +0 −144
  41. arch/arm/include/asm/assembler.h +7 −2
  42. arch/arm/include/asm/domain.h +4 −4
  43. arch/arm/include/asm/futex.h +4 −4
  44. arch/arm/include/asm/hardware/pl330.h +1 −1
  45. arch/arm/include/asm/kprobes.h +0 −1
  46. arch/arm/include/asm/processor.h +1 −0
  47. arch/arm/include/asm/ptrace.h +5 −0
  48. arch/arm/include/asm/smp.h +0 −6
  49. arch/arm/include/asm/smp_plat.h +6 −0
  50. arch/arm/include/asm/thread_info.h +6 −0
  51. arch/arm/include/asm/tlb.h +9 −1
  52. arch/arm/include/asm/uaccess.h +8 −8
  53. arch/arm/include/asm/unified.h +2 −2
  54. arch/arm/kernel/entry-armv.S +1 −1
  55. arch/arm/kernel/entry-common.S +11 −8
  56. arch/arm/kernel/perf_event_v7.c +28 −0
  57. arch/arm/kernel/ptrace.c +23 −8
  58. arch/arm/kernel/setup.c +15 −2
  59. arch/arm/kernel/signal.c +2 −3
  60. arch/arm/kernel/smp.c +8 −16
  61. arch/arm/kernel/smp_twd.c +3 −1
  62. arch/arm/kernel/traps.c +4 −1
  63. arch/arm/kernel/vmlinux.lds.S +6 −4
  64. arch/arm/lib/getuser.S +6 −6
  65. arch/arm/lib/putuser.S +14 −14
  66. arch/arm/lib/uaccess.S +41 −41
  67. arch/arm/mach-at91/Kconfig +14 −0
  68. arch/arm/mach-at91/Makefile +8 −6
  69. arch/arm/mach-at91/at91cap9.c +2 −7
  70. arch/arm/mach-at91/at91rm9200_devices.c +1 −1
  71. arch/arm/mach-at91/at91sam9260.c +1 −0
  72. arch/arm/mach-at91/at91sam9260_devices.c +3 −6
  73. arch/arm/mach-at91/at91sam9261.c +1 −0
  74. arch/arm/mach-at91/at91sam9261_devices.c +1 −1
  75. arch/arm/mach-at91/at91sam9263.c +1 −0
  76. arch/arm/mach-at91/at91sam9263_devices.c +4 −4
  77. arch/arm/mach-at91/at91sam9_alt_reset.S +3 −4
  78. arch/arm/mach-at91/at91sam9g45.c +1 −6
  79. arch/arm/mach-at91/at91sam9g45_reset.S +40 −0
  80. arch/arm/mach-at91/at91sam9rl.c +1 −0
  81. arch/arm/mach-at91/generic.h +2 −0
  82. arch/arm/mach-at91/include/mach/at91_rstc.h +15 −3
  83. arch/arm/mach-at91/include/mach/at91cap9.h +1 −1
  84. arch/arm/mach-at91/include/mach/at91cap9_ddrsdr.h +0 −108
  85. arch/arm/mach-at91/include/mach/at91sam9260.h +1 −1
  86. arch/arm/mach-at91/include/mach/at91sam9261.h +1 −1
  87. arch/arm/mach-at91/include/mach/at91sam9263.h +1 −1
  88. arch/arm/mach-at91/include/mach/at91sam9_ddrsdr.h +20 −10
  89. arch/arm/mach-at91/include/mach/at91sam9_smc.h +29 −0
  90. arch/arm/mach-at91/include/mach/at91sam9g45.h +1 −1
  91. arch/arm/mach-at91/include/mach/at91sam9rl.h +1 −1
  92. arch/arm/mach-at91/include/mach/board.h +1 −1
  93. arch/arm/mach-at91/pm.c +2 −7
  94. arch/arm/mach-at91/pm.h +4 −4
  95. arch/arm/mach-at91/pm_slowclock.S +2 −3
  96. arch/arm/mach-at91/sam9_smc.c +71 −5
  97. arch/arm/mach-at91/sam9_smc.h +0 −23
  98. arch/arm/mach-at91/setup.c +14 −2
  99. arch/arm/mach-bcmring/arch.c +1 −1
  100. arch/arm/mach-bcmring/dma.c +0 −812
  101. arch/arm/mach-bcmring/include/mach/dma.h +0 −196
  102. arch/arm/mach-davinci/board-da850-evm.c +1 −1
  103. arch/arm/mach-davinci/board-dm365-evm.c +1 −1
  104. arch/arm/mach-davinci/board-dm644x-evm.c +1 −1
  105. arch/arm/mach-davinci/board-dm646x-evm.c +1 −1
  106. arch/arm/mach-davinci/board-neuros-osd2.c +1 −1
  107. arch/arm/mach-davinci/board-omapl138-hawk.c +1 −1
  108. arch/arm/mach-davinci/board-sffsdr.c +1 −1
  109. arch/arm/mach-davinci/da850.c +0 −32
  110. arch/arm/mach-dove/common.c +2 −1
  111. arch/arm/mach-ep93xx/include/mach/dma.h +3 −3
  112. arch/arm/mach-ep93xx/vision_ep9307.c +3 −1
  113. arch/arm/mach-exynos/clock-exynos4210.c +2 −0
  114. arch/arm/mach-exynos/clock-exynos4212.c +2 −0
  115. arch/arm/mach-exynos/clock.c +2 −0
  116. arch/arm/mach-exynos/headsmp.S +2 −0
  117. arch/arm/mach-exynos/hotplug.c +1 −0
  118. arch/arm/mach-exynos/mach-exynos4-dt.c +6 −2
  119. arch/arm/mach-exynos/mach-nuri.c +4 −4
  120. arch/arm/mach-exynos/mach-origen.c +2 −1
  121. arch/arm/mach-exynos/mach-universal_c210.c +1 −1
  122. arch/arm/mach-exynos/platsmp.c +3 −3
  123. arch/arm/mach-exynos/pm.c +3 −1
  124. arch/arm/mach-highbank/highbank.c +2 −4
  125. arch/arm/mach-imx/Kconfig +238 −0
  126. arch/arm/mach-imx/Makefile +21 −0
  127. arch/arm/mach-imx/Makefile.boot +12 −0
  128. arch/arm/mach-imx/clock-imx6q.c +11 −0
  129. arch/arm/mach-imx/clock-mx51-mx53.c +1 −1
  130. arch/arm/mach-imx/cpu-imx5.c +0 −0
  131. arch/arm/mach-imx/cpu_op-mx51.c +0 −0
  132. arch/arm/mach-imx/cpu_op-mx51.h +0 −0
  133. arch/arm/mach-imx/crm-regs-imx5.h +0 −0
  134. arch/arm/mach-imx/devices-imx50.h +0 −0
  135. arch/arm/mach-imx/devices-imx51.h +0 −0
  136. arch/arm/mach-imx/devices-imx53.h +0 −0
  137. arch/arm/mach-imx/efika.h +0 −0
  138. arch/arm/mach-imx/ehci-imx5.c +0 −0
  139. arch/arm/mach-imx/eukrea_mbimx51-baseboard.c +0 −0
  140. arch/arm/mach-imx/eukrea_mbimxsd-baseboard.c +0 −0
  141. arch/arm/mach-imx/imx51-dt.c +0 −0
  142. arch/arm/mach-imx/imx53-dt.c +0 −0
  143. arch/arm/mach-imx/mach-cpuimx51.c +0 −0
  144. arch/arm/mach-imx/mach-cpuimx51sd.c +0 −0
  145. arch/arm/mach-imx/mach-mx50_rdp.c +0 −0
  146. arch/arm/mach-imx/mach-mx51_3ds.c +0 −0
  147. arch/arm/mach-imx/mach-mx51_babbage.c +0 −0
  148. arch/arm/mach-imx/mach-mx51_efikamx.c +0 −0
  149. arch/arm/mach-imx/mach-mx51_efikasb.c +0 −0
  150. arch/arm/mach-imx/mach-mx53_ard.c +3 −2
  151. arch/arm/mach-imx/mach-mx53_evk.c +0 −1
  152. arch/arm/mach-imx/mach-mx53_loco.c +0 −1
  153. arch/arm/mach-imx/mach-mx53_smd.c +0 −1
  154. arch/arm/mach-imx/mm-imx5.c +0 −0
  155. arch/arm/mach-imx/mx51_efika.c +0 −0
  156. arch/arm/mach-imx/pm-imx5.c +80 −9
  157. arch/arm/mach-imx/src.c +2 −6
  158. arch/arm/mach-kirkwood/common.c +2 −1
  159. arch/arm/mach-kirkwood/mpp.h +160 −160
  160. arch/arm/mach-msm/headsmp.S +1 −0
  161. arch/arm/mach-msm/hotplug.c +1 −0
  162. arch/arm/mach-msm/platsmp.c +1 −0
  163. arch/arm/mach-msm/vreg.c +1 −0
  164. arch/arm/mach-mv78xx0/common.c +2 −1
  165. arch/arm/mach-mv78xx0/mpp.h +113 −113
  166. arch/arm/mach-mx5/Kconfig +0 −244
  167. arch/arm/mach-mx5/Makefile +0 −26
  168. arch/arm/mach-mx5/Makefile.boot +0 −9
  169. arch/arm/mach-mx5/pm-imx5.c +0 −83
  170. arch/arm/mach-omap2/Kconfig +5 −7
  171. arch/arm/mach-omap2/Makefile +2 −2
  172. arch/arm/mach-omap2/board-4430sdp.c +25 −10
  173. arch/arm/mach-omap2/board-cm-t35.c +1 −1
  174. arch/arm/mach-omap2/board-generic.c +4 −0
  175. arch/arm/mach-omap2/board-omap3evm.c +16 −7
  176. arch/arm/mach-omap2/board-omap4panda.c +18 −6
  177. arch/arm/mach-omap2/board-zoom-peripherals.c +4 −2
  178. arch/arm/mach-omap2/devices.c +1 −0
  179. arch/arm/mach-omap2/display.c +0 −4
  180. arch/arm/mach-omap2/gpmc.c +6 −0
  181. arch/arm/mach-omap2/hsmmc.c +12 −12
  182. arch/arm/mach-omap2/io.c +3 −1
  183. arch/arm/mach-omap2/mux.c +11 −11
  184. arch/arm/mach-omap2/omap-headsmp.S +1 −0
  185. arch/arm/mach-omap2/omap_hwmod.c +8 −8
  186. arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c +0 −21
  187. arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c +22 −0
  188. arch/arm/mach-omap2/omap_hwmod_3xxx_data.c +47 −7
  189. arch/arm/mach-omap2/omap_hwmod_44xx_data.c +2 −0
  190. arch/arm/mach-omap2/pm24xx.c +1 −7
  191. arch/arm/mach-omap2/prm2xxx_3xxx.c +1 −0
  192. arch/arm/mach-omap2/prm44xx.c +1 −0
  193. arch/arm/mach-omap2/serial.c +4 −4
  194. arch/arm/mach-omap2/smartreflex.c +1 −1
  195. arch/arm/mach-omap2/timer.c +1 −1
  196. arch/arm/mach-omap2/vc.c +4 −6
  197. arch/arm/mach-omap2/voltagedomains3xxx_data.c +2 −0
  198. arch/arm/mach-omap2/voltagedomains44xx_data.c +2 −0
  199. arch/arm/mach-omap2/vp.c +5 −0
  200. arch/arm/mach-orion5x/common.c +3 −1
  201. arch/arm/mach-picoxcell/time.c +1 −1
  202. arch/arm/mach-pxa/devices.c +0 −20
  203. arch/arm/mach-pxa/pxa25x.c +0 −2
  204. arch/arm/mach-pxa/pxa27x.c +0 −2
  205. arch/arm/mach-pxa/pxa300.c +0 −1
  206. arch/arm/mach-pxa/pxa320.c +0 −1
  207. arch/arm/mach-pxa/pxa3xx.c +0 −1
  208. arch/arm/mach-pxa/pxa95x.c +0 −1
  209. arch/arm/mach-realview/hotplug.c +1 −0
  210. arch/arm/mach-realview/include/mach/board-eb.h +10 −8
  211. arch/arm/mach-realview/include/mach/board-pb11mp.h +2 −0
  212. arch/arm/mach-realview/platsmp.c +1 −2
  213. arch/arm/mach-realview/realview_eb.c +3 −8
  214. arch/arm/mach-realview/realview_pb11mp.c +4 −9
  215. arch/arm/mach-s3c2410/cpu-freq.c +5 −3
  216. arch/arm/mach-s3c2410/dma.c +3 −2
  217. arch/arm/mach-s3c2410/pll.c +1 −1
  218. arch/arm/mach-s3c2410/pm.c +1 −1
  219. arch/arm/mach-s3c2412/cpu-freq.c +2 −1
  220. arch/arm/mach-s3c2412/dma.c +2 −1
  221. arch/arm/mach-s3c2412/irq.c +1 −1
  222. arch/arm/mach-s3c2412/pm.c +1 −1
  223. arch/arm/mach-s3c2416/irq.c +2 −1
  224. arch/arm/mach-s3c2416/pm.c +1 −1
  225. arch/arm/mach-s3c2440/clock.c +1 −1
  226. arch/arm/mach-s3c2440/dma.c +2 −1
  227. arch/arm/mach-s3c2440/irq.c +1 −1
  228. arch/arm/mach-s3c2440/s3c2440-cpufreq.c +2 −1
  229. arch/arm/mach-s3c2440/s3c2440-pll-12000000.c +1 −1
  230. arch/arm/mach-s3c2440/s3c2440-pll-16934400.c +2 −1
  231. arch/arm/mach-s3c2440/s3c2442.c +1 −1
  232. arch/arm/mach-s3c2440/s3c244x-clock.c +1 −1
  233. arch/arm/mach-s3c2440/s3c244x-irq.c +1 −1
  234. arch/arm/mach-s3c2443/dma.c +2 −1
  235. arch/arm/mach-s3c2443/irq.c +2 −1
  236. arch/arm/mach-s3c64xx/clock.c +5 −0
  237. arch/arm/mach-s3c64xx/common.c +1 −1
  238. arch/arm/mach-s3c64xx/include/mach/crag6410.h +1 −0
  239. arch/arm/mach-s3c64xx/mach-crag6410.c +3 −10
  240. arch/arm/mach-s3c64xx/pm.c +0 −13
  241. arch/arm/mach-s5p64x0/pm.c +1 −1
  242. arch/arm/mach-s5pv210/clock.c +2 −2
  243. arch/arm/mach-s5pv210/pm.c +1 −1
  244. arch/arm/mach-sa1100/assabet.c +0 −12
  245. arch/arm/mach-sa1100/cerf.c +0 −11
  246. arch/arm/mach-sa1100/clock.c +25 −66
  247. arch/arm/mach-sa1100/collie.c +3 −20
  248. arch/arm/mach-sa1100/cpu-sa1100.c +1 −1
  249. arch/arm/mach-sa1100/generic.c +1 −26
  250. arch/arm/mach-sa1100/include/mach/mcp.h +0 −2
  251. arch/arm/mach-sa1100/jornada720_ssp.c +2 −0
  252. arch/arm/mach-sa1100/lart.c +0 −10
  253. arch/arm/mach-sa1100/shannon.c +0 −11
  254. arch/arm/mach-sa1100/simpad.c +1 −17
  255. arch/arm/mach-shmobile/setup-sh7372.c +14 −3
  256. arch/arm/mach-shmobile/smp-r8a7779.c +1 −0
  257. arch/arm/mach-shmobile/smp-sh73a0.c +1 −0
  258. arch/arm/mach-tegra/board-paz00.c +4 −4
  259. arch/arm/mach-tegra/board-paz00.h +1 −1
  260. arch/arm/mach-tegra/include/mach/dma.h +5 −5
  261. arch/arm/mach-ux500/Kconfig +1 −0
  262. arch/arm/mach-ux500/board-mop500-sdi.c +2 −0
  263. arch/arm/mach-ux500/cache-l2x0.c +7 −41
  264. arch/arm/mach-ux500/headsmp.S +2 −0
  265. arch/arm/mach-ux500/hotplug.c +1 −0
  266. arch/arm/mach-ux500/platsmp.c +1 −0
  267. arch/arm/mach-ux500/usb.c +0 −6
  268. arch/arm/mach-vexpress/ct-ca9x4.c +2 −2
  269. arch/arm/mach-vexpress/hotplug.c +1 −0
  270. arch/arm/mach-vexpress/platsmp.c +1 −3
  271. arch/arm/mm/Kconfig +3 −1
  272. arch/arm/mm/cache-v7.S +6 −0
  273. arch/arm/mm/init.c +1 −1
  274. arch/arm/mm/proc-v7.S +10 −16
  275. arch/arm/plat-mxc/Kconfig +3 −12
  276. arch/arm/plat-mxc/include/mach/iomux-v1.h +1 −1
  277. arch/arm/plat-mxc/include/mach/mx3fb.h +15 −0
  278. arch/arm/plat-nomadik/include/plat/ste_dma40.h +8 −3
  279. arch/arm/plat-omap/include/plat/omap-secure.h +1 −1
  280. arch/arm/plat-orion/common.c +4 −5
  281. arch/arm/plat-orion/include/plat/common.h +2 −1
  282. arch/arm/plat-orion/mpp.c +1 −2
  283. arch/arm/plat-samsung/devs.c +3 −1
  284. arch/arm/plat-samsung/dma-ops.c +2 −2
  285. arch/arm/plat-samsung/include/plat/dma-ops.h +3 −2
  286. arch/arm/plat-samsung/include/plat/dma.h +5 −1
  287. arch/arm/plat-samsung/include/plat/s3c64xx-spi.h +2 −0
  288. arch/arm/plat-versatile/headsmp.S +1 −0
  289. arch/arm/plat-versatile/platsmp.c +1 −0
  290. arch/avr32/Kconfig +1 −0
  291. arch/ia64/include/asm/ptrace.h +12 −1
  292. arch/ia64/kernel/acpi.c +6 −4
  293. arch/ia64/kernel/ptrace.c +2 −16
  294. arch/m68k/atari/config.c +4 −4
  295. arch/m68k/include/asm/irq.h +0 −13
  296. arch/m68k/include/asm/mcf_pgtable.h +2 −1
  297. arch/m68k/kernel/process_mm.c +1 −1
  298. arch/m68k/kernel/process_no.c +2 −2
  299. arch/m68k/kernel/traps.c +17 −19
  300. arch/m68k/mm/cache.c +3 −3
  301. arch/m68k/mm/mcfmmu.c +5 −4
  302. arch/m68k/platform/coldfire/entry.S +1 −3
  303. arch/microblaze/Kconfig +1 −0
  304. arch/microblaze/include/asm/atomic.h +1 −0
  305. arch/microblaze/include/asm/ptrace.h +5 −0
  306. arch/microblaze/kernel/ptrace.c +3 −6
  307. arch/mips/Kconfig +1 −0
  308. arch/mips/include/asm/ptrace.h +13 −1
  309. arch/mips/kernel/ptrace.c +4 −7
  310. arch/mips/lib/iomap-pci.c +2 −2
  311. arch/powerpc/boot/dts/fsl/mpc8536si-post.dtsi +4 −0
  312. arch/powerpc/boot/dts/fsl/p1010si-post.dtsi +2 −1
  313. arch/powerpc/boot/dts/fsl/p1020si-post.dtsi +4 −0
  314. arch/powerpc/boot/dts/fsl/p1022si-post.dtsi +2 −1
  315. arch/powerpc/boot/dts/fsl/p2020si-post.dtsi +4 −0
  316. arch/powerpc/boot/dts/p1020rdb.dtsi +6 −7
  317. arch/powerpc/boot/dts/p1021mds.dts +2 −1
  318. arch/powerpc/boot/dts/p2020ds.dtsi +2 −1
  319. arch/powerpc/boot/dts/p2020rdb.dts +2 −1
  320. arch/powerpc/configs/ppc64_defconfig +0 −5
  321. arch/powerpc/include/asm/ppc-pci.h +5 −0
  322. arch/powerpc/include/asm/ptrace.h +21 −6
  323. arch/powerpc/kernel/crash.c +1 −1
  324. arch/powerpc/kernel/entry_32.S +1 −1
  325. arch/powerpc/kernel/entry_64.S +5 −1
  326. arch/powerpc/kernel/exceptions-64s.S +1 −1
  327. arch/powerpc/kernel/irq.c +5 −1
  328. arch/powerpc/kernel/legacy_serial.c +2 −0
  329. arch/powerpc/kernel/perf_event.c +7 −1
  330. arch/powerpc/kernel/process.c +3 −3
  331. arch/powerpc/kernel/ptrace.c +13 −17
  332. arch/powerpc/kernel/rtas.c +3 −2
  333. arch/powerpc/kernel/signal.c +8 −4
  334. arch/powerpc/kernel/signal.h +1 −1
  335. arch/powerpc/platforms/85xx/p1022_ds.c +1 −0
  336. arch/powerpc/platforms/powernv/pci-ioda.c +27 −16
  337. arch/powerpc/platforms/powernv/pci.c +14 −8
  338. arch/powerpc/platforms/pseries/Kconfig +1 −1
  339. arch/powerpc/platforms/pseries/eeh.c +2 −2
  340. arch/powerpc/platforms/pseries/suspend.c +5 −1
  341. arch/powerpc/platforms/wsp/ics.c +1 −1
  342. arch/powerpc/platforms/wsp/smp.c +1 −1
  343. arch/powerpc/platforms/wsp/wsp_pci.c +4 −4
  344. arch/powerpc/sysdev/fsl_pci.c +32 −21
  345. arch/s390/Makefile +0 −1
  346. arch/s390/include/asm/kexec.h +18 −0
  347. arch/s390/include/asm/ptrace.h +5 −1
  348. arch/s390/kernel/compat_wrapper.S +1 −1
  349. arch/s390/kernel/process.c +3 −2
  350. arch/s390/kernel/ptrace.c +6 −9
  351. arch/s390/kernel/time.c +5 −2
  352. arch/s390/kernel/vmlinux.lds.S +2 −2
  353. arch/s390/mm/pgtable.c +1 −1
  354. arch/score/kernel/entry.S +1 −1
  355. arch/sh/Kconfig +1 −0
  356. arch/sh/drivers/pci/pci.c +2 −2
  357. arch/sh/include/asm/ptrace_32.h +4 −1
  358. arch/sh/include/asm/ptrace_64.h +4 −1
  359. arch/sh/kernel/ptrace_32.c +4 −7
  360. arch/sh/kernel/ptrace_64.c +4 −7
  361. arch/sparc/Kconfig +1 −0
  362. arch/sparc/include/asm/ptrace.h +9 −1
  363. arch/sparc/kernel/ptrace_64.c +9 −19
  364. arch/sparc/kernel/sun4m_irq.c +3 −0
  365. arch/sparc/lib/divdi3.S +1 −15
  366. arch/um/kernel/ptrace.c +9 −11
  367. arch/x86/.gitignore +1 −0
  368. arch/x86/Kconfig +10 −11
  369. arch/x86/boot/compressed/misc.c +2 −0
  370. arch/x86/ia32/ia32entry.S +8 −6
  371. arch/x86/include/asm/cmpxchg.h +3 −3
  372. arch/x86/include/asm/cpufeature.h +1 −0
  373. arch/x86/include/asm/i387.h +252 −55
  374. arch/x86/include/asm/kvm_emulate.h +16 −0
  375. arch/x86/include/asm/processor.h +2 −0
  376. arch/x86/include/asm/thread_info.h +0 −2
  377. arch/x86/include/asm/unistd.h +1 −0
  378. arch/x86/include/asm/uv/uv_bau.h +99 −8
  379. arch/x86/include/asm/uv/uv_hub.h +2 −2
  380. arch/x86/kernel/cpu/common.c +5 −0
  381. arch/x86/kernel/cpu/perf_event_intel_ds.c +0 −1
  382. arch/x86/kernel/cpu/perf_event_intel_lbr.c +0 −2
  383. arch/x86/kernel/dumpstack.c +2 −1
  384. arch/x86/kernel/dumpstack_64.c +4 −4
  385. arch/x86/kernel/e820.c +2 −2
  386. arch/x86/kernel/entry_32.S +5 −5
  387. arch/x86/kernel/entry_64.S +7 −7
  388. arch/x86/kernel/microcode_amd.c +22 −2
  389. arch/x86/kernel/process_32.c +5 −21
  390. arch/x86/kernel/process_64.c +5 −25
  391. arch/x86/kernel/ptrace.c +11 −14
  392. arch/x86/kernel/reboot.c +26 −10
  393. arch/x86/kernel/traps.c +14 −29
  394. arch/x86/kernel/tsc.c +6 −8
  395. arch/x86/kernel/vm86_32.c +4 −2
  396. arch/x86/kernel/xsave.c +4 −8
  397. arch/x86/kvm/emulate.c +51 −0
  398. arch/x86/kvm/vmx.c +1 −1
  399. arch/x86/kvm/x86.c +45 −0
  400. arch/x86/lib/x86-opcode-map.txt +5 −3
  401. arch/x86/mm/fault.c +2 −2
  402. arch/x86/mm/srat.c +4 −0
  403. arch/x86/net/bpf_jit_comp.c +22 −14
  404. arch/x86/pci/xen.c +1 −1
  405. arch/x86/platform/uv/tlb_uv.c +318 −72
  406. arch/x86/platform/uv/uv_irq.c +1 −1
  407. arch/x86/um/shared/sysdep/ptrace.h +10 −0
  408. arch/x86/xen/smp.c +7 −0
  409. arch/x86/xen/spinlock.c +22 −5
  410. arch/xtensa/include/asm/string.h +0 −3
  411. arch/xtensa/kernel/ptrace.c +1 −2
  412. block/blk-cgroup.c +1 −1
  413. block/blk-core.c +17 −16
  414. block/blk-ioc.c +25 −86
  415. block/blk-merge.c +37 −0
  416. block/blk.h +2 −0
  417. block/bsg.c +2 −1
  418. block/cfq-iosched.c +7 −14
  419. block/elevator.c +4 −51
  420. crypto/sha512_generic.c +28 −31
  421. drivers/acpi/Makefile +2 −2
  422. drivers/acpi/acpica/Makefile +134 −24
  423. drivers/acpi/acpica/accommon.h +1 −1
  424. drivers/acpi/acpica/acconfig.h +7 −2
  425. drivers/acpi/acpica/acdebug.h +1 −1
  426. drivers/acpi/acpica/acdispat.h +1 −1
  427. drivers/acpi/acpica/acevents.h +2 −1
  428. drivers/acpi/acpica/acglobal.h +15 −2
  429. drivers/acpi/acpica/achware.h +1 −1
  430. drivers/acpi/acpica/acinterp.h +3 −1
  431. drivers/acpi/acpica/aclocal.h +21 −5
  432. drivers/acpi/acpica/acmacros.h +1 −1
  433. drivers/acpi/acpica/acnamesp.h +1 −1
  434. drivers/acpi/acpica/acobject.h +6 −2
  435. drivers/acpi/acpica/acopcode.h +5 −1
  436. drivers/acpi/acpica/acparser.h +1 −1
  437. drivers/acpi/acpica/acpredef.h +39 −2
  438. drivers/acpi/acpica/acresrc.h +78 −37
  439. drivers/acpi/acpica/acstruct.h +1 −1
  440. drivers/acpi/acpica/actables.h +1 −1
  441. drivers/acpi/acpica/acutils.h +20 −1
  442. drivers/acpi/acpica/amlcode.h +21 −8
  443. drivers/acpi/acpica/amlresrc.h +137 −1
  444. drivers/acpi/acpica/dsargs.c +16 −2
  445. drivers/acpi/acpica/dscontrol.c +1 −1
  446. drivers/acpi/acpica/dsfield.c +67 −16
  447. drivers/acpi/acpica/dsinit.c +1 −1
  448. drivers/acpi/acpica/dsmethod.c +1 −1
  449. drivers/acpi/acpica/dsmthdat.c +1 −1
  450. drivers/acpi/acpica/dsobject.c +1 −1
  451. drivers/acpi/acpica/dsopcode.c +1 −1
  452. drivers/acpi/acpica/dsutils.c +1 −1
  453. drivers/acpi/acpica/dswexec.c +1 −1
  454. drivers/acpi/acpica/dswload.c +1 −1
  455. drivers/acpi/acpica/dswload2.c +1 −1
  456. drivers/acpi/acpica/dswscope.c +1 −1
  457. drivers/acpi/acpica/dswstate.c +1 −1
  458. drivers/acpi/acpica/evevent.c +13 −1
  459. drivers/acpi/acpica/evglock.c +7 −1
  460. drivers/acpi/acpica/evgpe.c +1 −1
  461. drivers/acpi/acpica/evgpeblk.c +1 −1
  462. drivers/acpi/acpica/evgpeinit.c +1 −1
  463. drivers/acpi/acpica/evgpeutil.c +1 −1
  464. drivers/acpi/acpica/evmisc.c +1 −1
  465. drivers/acpi/acpica/evregion.c +27 −4
  466. drivers/acpi/acpica/evrgnini.c +1 −1
  467. drivers/acpi/acpica/evsci.c +1 −1
  468. drivers/acpi/acpica/evxface.c +1 −1
  469. drivers/acpi/acpica/evxfevnt.c +1 −1
  470. drivers/acpi/acpica/evxfgpe.c +1 −1
  471. drivers/acpi/acpica/evxfregn.c +1 −1
  472. drivers/acpi/acpica/exconfig.c +4 −4
  473. drivers/acpi/acpica/exconvrt.c +1 −1
  474. drivers/acpi/acpica/excreate.c +20 −11
  475. drivers/acpi/acpica/exdebug.c +1 −1
  476. drivers/acpi/acpica/exdump.c +6 −3
  477. drivers/acpi/acpica/exfield.c +22 −8
  478. drivers/acpi/acpica/exfldio.c +29 −9
  479. drivers/acpi/acpica/exmisc.c +1 −1
  480. drivers/acpi/acpica/exmutex.c +1 −1
  481. drivers/acpi/acpica/exnames.c +1 −1
  482. drivers/acpi/acpica/exoparg1.c +1 −1
  483. drivers/acpi/acpica/exoparg2.c +1 −1
  484. drivers/acpi/acpica/exoparg3.c +1 −1
  485. drivers/acpi/acpica/exoparg6.c +1 −1
  486. drivers/acpi/acpica/exprep.c +26 −1
  487. drivers/acpi/acpica/exregion.c +1 −1
  488. drivers/acpi/acpica/exresnte.c +1 −1
  489. drivers/acpi/acpica/exresolv.c +1 −1
  490. drivers/acpi/acpica/exresop.c +1 −1
  491. drivers/acpi/acpica/exstore.c +1 −1
  492. drivers/acpi/acpica/exstoren.c +1 −1
  493. drivers/acpi/acpica/exstorob.c +1 −1
  494. drivers/acpi/acpica/exsystem.c +1 −1
  495. drivers/acpi/acpica/exutils.c +26 −1
  496. drivers/acpi/acpica/hwacpi.c +1 −1
  497. drivers/acpi/acpica/hwgpe.c +1 −1
  498. drivers/acpi/acpica/hwpci.c +1 −1
  499. drivers/acpi/acpica/hwregs.c +1 −1
  500. drivers/acpi/acpica/hwsleep.c +1 −1
  501. drivers/acpi/acpica/hwtimer.c +1 −1
  502. drivers/acpi/acpica/hwvalid.c +3 −1
  503. drivers/acpi/acpica/hwxface.c +1 −1
  504. drivers/acpi/acpica/nsaccess.c +1 −1
  505. drivers/acpi/acpica/nsalloc.c +1 −1
  506. drivers/acpi/acpica/nsdump.c +1 −1
  507. drivers/acpi/acpica/nsdumpdv.c +1 −1
  508. drivers/acpi/acpica/nseval.c +1 −1
  509. drivers/acpi/acpica/nsinit.c +1 −1
  510. drivers/acpi/acpica/nsload.c +1 −1
  511. drivers/acpi/acpica/nsnames.c +1 −1
  512. drivers/acpi/acpica/nsobject.c +1 −1
  513. drivers/acpi/acpica/nsparse.c +1 −1
  514. drivers/acpi/acpica/nspredef.c +30 −1
  515. drivers/acpi/acpica/nsrepair.c +2 −1
  516. drivers/acpi/acpica/nsrepair2.c +4 −3
  517. drivers/acpi/acpica/nssearch.c +1 −1
  518. drivers/acpi/acpica/nsutils.c +1 −1
  519. drivers/acpi/acpica/nswalk.c +1 −1
  520. drivers/acpi/acpica/nsxfeval.c +1 −1
  521. drivers/acpi/acpica/nsxfname.c +1 −1
  522. drivers/acpi/acpica/nsxfobj.c +1 −1
  523. drivers/acpi/acpica/psargs.c +129 −14
  524. drivers/acpi/acpica/psloop.c +1 −1
  525. drivers/acpi/acpica/psopcode.c +12 −3
  526. drivers/acpi/acpica/psparse.c +1 −1
  527. drivers/acpi/acpica/psscope.c +1 −1
  528. drivers/acpi/acpica/pstree.c +7 −1
  529. drivers/acpi/acpica/psutils.c +1 −1
  530. drivers/acpi/acpica/pswalk.c +1 −1
  531. drivers/acpi/acpica/psxface.c +1 −1
  532. drivers/acpi/acpica/rsaddr.c +1 −1
  533. drivers/acpi/acpica/rscalc.c +81 −8
  534. drivers/acpi/acpica/rscreate.c +67 −2
  535. drivers/acpi/acpica/rsdump.c +186 −10
  536. drivers/acpi/acpica/rsinfo.c +51 −7
  537. drivers/acpi/acpica/rsio.c +1 −1
  538. drivers/acpi/acpica/rsirq.c +32 −1
  539. drivers/acpi/acpica/rslist.c +62 −15
  540. drivers/acpi/acpica/rsmemory.c +1 −1
  541. drivers/acpi/acpica/rsmisc.c +263 −6
  542. drivers/acpi/acpica/rsserial.c +441 −0
  543. drivers/acpi/acpica/rsutils.c +55 −1
  544. drivers/acpi/acpica/rsxface.c +47 −5
  545. drivers/acpi/acpica/tbfadt.c +30 −11
  546. drivers/acpi/acpica/tbfind.c +1 −1
  547. drivers/acpi/acpica/tbinstal.c +1 −1
  548. drivers/acpi/acpica/tbutils.c +8 −1
  549. drivers/acpi/acpica/tbxface.c +1 −1
  550. drivers/acpi/acpica/tbxfroot.c +1 −1
  551. drivers/acpi/acpica/utaddress.c +294 −0
  552. drivers/acpi/acpica/utalloc.c +1 −1
  553. drivers/acpi/acpica/utcopy.c +1 −1
  554. drivers/acpi/acpica/utdebug.c +1 −1
  555. drivers/acpi/acpica/utdecode.c +4 −2
  556. drivers/acpi/acpica/utdelete.c +9 −6
  557. drivers/acpi/acpica/uteval.c +1 −1
  558. drivers/acpi/acpica/utglobal.c +7 −1
  559. drivers/acpi/acpica/utids.c +1 −1
  560. drivers/acpi/acpica/utinit.c +2 −1
  561. drivers/acpi/acpica/utlock.c +1 −1
  562. drivers/acpi/acpica/utmath.c +1 −1
  563. drivers/acpi/acpica/utmisc.c +1 −1
  564. drivers/acpi/acpica/utmutex.c +4 −7
  565. drivers/acpi/acpica/utobject.c +1 −1
  566. drivers/acpi/acpica/utosi.c +1 −1
  567. drivers/acpi/acpica/utresrc.c +243 −35
  568. drivers/acpi/acpica/utstate.c +1 −1
  569. drivers/acpi/acpica/utxface.c +39 −1
  570. drivers/acpi/acpica/utxferror.c +1 −1
  571. drivers/acpi/acpica/utxfmutex.c +187 −0
  572. drivers/acpi/apei/apei-base.c +112 −11
  573. drivers/acpi/apei/apei-internal.h +6 −0
  574. drivers/acpi/apei/einj.c +256 −59
  575. drivers/acpi/apei/erst.c +2 −3
  576. drivers/acpi/apei/ghes.c +83 −19
  577. drivers/acpi/apei/hest.c +2 −3
  578. drivers/acpi/atomicio.c +0 −365
  579. drivers/acpi/numa.c +6 −0
  580. drivers/acpi/nvs.c +52 −1
  581. drivers/acpi/osl.c +188 −206
  582. drivers/acpi/processor_core.c +24 −2
  583. drivers/acpi/processor_driver.c +117 −52
  584. drivers/acpi/sleep.c +8 −0
  585. drivers/ata/ata_piix.c +7 −0
  586. drivers/ata/libata-core.c +2 −0
  587. drivers/ata/libata-transport.c +1 −0
  588. drivers/ata/pata_at91.c +21 −27
  589. drivers/ata/pata_bf54x.c +88 −79
  590. drivers/ata/sata_fsl.c +11 −0
  591. drivers/base/Makefile +1 −1
  592. drivers/base/bus.c +5 −4
  593. drivers/base/core.c +16 −1
  594. drivers/base/cpu.c +21 −0
  595. drivers/base/firmware_class.c +1 −2
  596. drivers/base/memory.c +26 −5
  597. drivers/base/node.c +8 −0
  598. drivers/base/regmap/regcache.c +2 −2
  599. drivers/base/regmap/regmap.c +3 −0
  600. drivers/base/sys.c +0 −383
  601. drivers/bcma/bcma_private.h +1 −0
  602. drivers/bcma/host_pci.c +18 −25
  603. drivers/bcma/main.c +25 −3
  604. drivers/bcma/scan.c +11 −8
  605. drivers/block/Kconfig +11 −0
  606. drivers/block/Makefile +1 −0
  607. drivers/block/floppy.c +16 −1
  608. drivers/block/loop.c +13 −11
  609. drivers/block/mtip32xx/mtip32xx.c +5 −6
  610. drivers/block/mtip32xx/mtip32xx.h +0 −5
  611. drivers/block/nvme.c +1741 −0
  612. drivers/block/rbd.c +5 −2
  613. drivers/cdrom/cdrom.c +6 −14
  614. drivers/char/agp/backend.c +6 −6
  615. drivers/char/tpm/tpm.c +9 −0
  616. drivers/char/tpm/tpm.h +3 −0
  617. drivers/cpuidle/Kconfig +1 −1
  618. drivers/dma/Kconfig +17 −10
  619. drivers/dma/Makefile +1 −0
  620. drivers/dma/amba-pl08x.c +22 −19
  621. drivers/dma/at_hdmac.c +83 −24
  622. drivers/dma/at_hdmac_regs.h +9 −9
  623. drivers/dma/coh901318.c +6 −6
  624. drivers/dma/coh901318_lli.c +11 −12
  625. drivers/dma/coh901318_lli.h +2 −2
  626. drivers/dma/dmaengine.c +2 −2
  627. drivers/dma/dmatest.c +1 −1
  628. drivers/dma/dw_dmac.c +48 −35
  629. drivers/dma/dw_dmac_regs.h +1 −0
  630. drivers/dma/ep93xx_dma.c +63 −27
  631. drivers/dma/fsldma.c +2 −2
  632. drivers/dma/imx-dma.c +5 −5
  633. drivers/dma/imx-sdma.c +22 −11
  634. drivers/dma/intel_mid_dma.c +25 −14
  635. drivers/dma/intel_mid_dma_regs.h +2 −2
  636. drivers/dma/iop-adma.c +2 −14
  637. drivers/dma/ipu/ipu_idmac.c +3 −26
  638. drivers/dma/mpc512x_dma.c +1 −11
  639. drivers/dma/mxs-dma.c +13 −40
  640. drivers/dma/pch_dma.c +12 −8
  641. drivers/dma/pl330.c +9 −22
  642. drivers/dma/shdma.c +45 −30
  643. drivers/dma/sirf-dma.c +707 −0
  644. drivers/dma/ste_dma40.c +391 −50
  645. drivers/dma/ste_dma40_ll.h +11 −0
  646. drivers/dma/timb_dma.c +10 −20
  647. drivers/dma/txx9dmac.c +6 −6
  648. drivers/edac/i3200_edac.c +2 −13
  649. drivers/firewire/ohci.c +5 −1
  650. drivers/gpio/Kconfig +1 −0
  651. drivers/gpio/gpio-lpc32xx.c +1 −1
  652. drivers/gpio/gpio-ml-ioh.c +5 −4
  653. drivers/gpio/gpio-pch.c +3 −2
  654. drivers/gpio/gpio-samsung.c +13 −10
  655. drivers/gpio/gpio-tps65910.c +1 −1
  656. drivers/gpu/drm/drm_auth.c +5 −1
  657. drivers/gpu/drm/drm_fops.c +5 −0
  658. drivers/gpu/drm/drm_gem.c +1 −1
  659. drivers/gpu/drm/drm_ioc32.c +2 −1
  660. drivers/gpu/drm/exynos/Kconfig +2 −2
  661. drivers/gpu/drm/exynos/exynos_drm_core.c +3 −0
  662. drivers/gpu/drm/exynos/exynos_drm_crtc.c +3 −3
  663. drivers/gpu/drm/exynos/exynos_drm_drv.c +18 −8
  664. drivers/gpu/drm/exynos/exynos_drm_encoder.c +34 −0
  665. drivers/gpu/drm/exynos/exynos_drm_encoder.h +1 −0
  666. drivers/gpu/drm/exynos/exynos_drm_fbdev.c +4 −66
  667. drivers/gpu/drm/exynos/exynos_drm_fimd.c +65 −51
  668. drivers/gpu/drm/exynos/exynos_hdmi.c +4 −4
  669. drivers/gpu/drm/exynos/exynos_mixer.c +12 −7
  670. drivers/gpu/drm/gma500/framebuffer.c +4 −4
  671. drivers/gpu/drm/gma500/gtt.c +2 −3
  672. drivers/gpu/drm/i810/i810_dma.c +6 −11
  673. drivers/gpu/drm/i810/i810_drv.c +1 −0
  674. drivers/gpu/drm/i810/i810_drv.h +4 −2
  675. drivers/gpu/drm/i915/i915_debugfs.c +20 −11
  676. drivers/gpu/drm/i915/i915_dma.c +1 −0
  677. drivers/gpu/drm/i915/i915_drv.c +44 −12
  678. drivers/gpu/drm/i915/i915_drv.h +7 −3
  679. drivers/gpu/drm/i915/i915_irq.c +2 −1
  680. drivers/gpu/drm/i915/i915_reg.h +15 −0
  681. drivers/gpu/drm/i915/i915_suspend.c +8 −3
  682. drivers/gpu/drm/i915/intel_bios.h +5 −1
  683. drivers/gpu/drm/i915/intel_crt.c +23 −0
  684. drivers/gpu/drm/i915/intel_display.c +38 −16
  685. drivers/gpu/drm/i915/intel_dp.c +5 −15
  686. drivers/gpu/drm/i915/intel_lvds.c +16 −0
  687. drivers/gpu/drm/i915/intel_ringbuffer.c +25 −16
  688. drivers/gpu/drm/i915/intel_sdvo.c +3 −5
  689. drivers/gpu/drm/i915/intel_sprite.c +2 −6
  690. drivers/gpu/drm/i915/intel_tv.c +8 −130
  691. drivers/gpu/drm/nouveau/nouveau_bios.h +3 −2
  692. drivers/gpu/drm/nouveau/nouveau_bo.c +4 −0
  693. drivers/gpu/drm/nouveau/nouveau_display.c +10 −0
  694. drivers/gpu/drm/nouveau/nouveau_drv.c +1 −1
  695. drivers/gpu/drm/nouveau/nouveau_gem.c +21 −2
  696. drivers/gpu/drm/nouveau/nouveau_mxm.c +9 −0
  697. drivers/gpu/drm/nouveau/nv50_pm.c +2 −2
  698. drivers/gpu/drm/radeon/atombios_crtc.c +32 −32
  699. drivers/gpu/drm/radeon/atombios_dp.c +25 −15
  700. drivers/gpu/drm/radeon/atombios_encoders.c +45 −44
  701. drivers/gpu/drm/radeon/evergreen.c +3 −0
  702. drivers/gpu/drm/radeon/evergreend.h +1 −0
  703. drivers/gpu/drm/radeon/ni.c +2 −0
  704. drivers/gpu/drm/radeon/nid.h +1 −0
  705. drivers/gpu/drm/radeon/r100.c +8 −4
  706. drivers/gpu/drm/radeon/r300.c +7 −1
  707. drivers/gpu/drm/radeon/r420.c +7 −1
  708. drivers/gpu/drm/radeon/r520.c +7 −1
  709. drivers/gpu/drm/radeon/r600.c +1 −0
  710. drivers/gpu/drm/radeon/r600_blit_kms.c +25 −10
  711. drivers/gpu/drm/radeon/radeon.h +42 −42
  712. drivers/gpu/drm/radeon/radeon_atombios.c +20 −0
  713. drivers/gpu/drm/radeon/radeon_atpx_handler.c +2 −1
  714. drivers/gpu/drm/radeon/radeon_bios.c +1 −1
  715. drivers/gpu/drm/radeon/radeon_cs.c +4 −0
  716. drivers/gpu/drm/radeon/radeon_device.c +9 −3
  717. drivers/gpu/drm/radeon/radeon_display.c +4 −2
  718. drivers/gpu/drm/radeon/radeon_encoders.c +77 −0
  719. drivers/gpu/drm/radeon/radeon_fence.c +3 −1
  720. drivers/gpu/drm/radeon/radeon_i2c.c +2 −0
  721. drivers/gpu/drm/radeon/radeon_irq_kms.c +6 −0
  722. drivers/gpu/drm/radeon/radeon_mode.h +8 −0
  723. drivers/gpu/drm/radeon/radeon_ring.c +25 −19
  724. drivers/gpu/drm/radeon/rs400.c +7 −1
  725. drivers/gpu/drm/radeon/rs600.c +8 −4
  726. drivers/gpu/drm/radeon/rs690.c +7 −1
  727. drivers/gpu/drm/radeon/rv515.c +7 −1
  728. drivers/gpu/drm/radeon/rv770.c +1 −0
  729. drivers/gpu/drm/sis/sis_drv.c +1 −2
  730. drivers/gpu/drm/ttm/ttm_bo.c +13 −4
  731. drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +1 −1
  732. drivers/hid/hid-hyperv.c +1 −0
  733. drivers/hid/hid-wacom.c +4 −3
  734. drivers/hid/hid-wiimote-core.c +2 −2
  735. drivers/hid/usbhid/hiddev.c +2 −2
  736. drivers/hwmon/f71805f.c +5 −5
  737. drivers/hwmon/f75375s.c +5 −6
  738. drivers/hwmon/sht15.c +2 −1
  739. drivers/hwmon/w83627ehf.c +26 −8
  740. drivers/i2c/busses/Kconfig +7 −7
  741. drivers/i2c/busses/i2c-eg20t.c +12 −7
  742. drivers/i2c/busses/i2c-omap.c +70 −40
  743. drivers/i2c/busses/i2c-tegra.c +1 −1
  744. drivers/ide/Makefile +0 −1
  745. drivers/ide/at91_ide.c +0 −366
  746. drivers/idle/intel_idle.c +50 −48
  747. drivers/infiniband/Kconfig +1 −0
  748. drivers/infiniband/Makefile +1 −0
  749. drivers/infiniband/core/ucma.c +4 −1
  750. drivers/infiniband/core/uverbs_cmd.c +1 −0
  751. drivers/infiniband/core/verbs.c +1 −1
  752. drivers/infiniband/hw/ipath/ipath_fs.c +1 −1
  753. drivers/infiniband/hw/mlx4/mad.c +2 −5
  754. drivers/infiniband/hw/nes/nes.c +1 −1
  755. drivers/infiniband/hw/nes/nes.h +1 −1
  756. drivers/infiniband/hw/nes/nes_cm.c +7 −3
  757. drivers/infiniband/hw/nes/nes_cm.h +1 −1
  758. drivers/infiniband/hw/nes/nes_context.h +1 −1
  759. drivers/infiniband/hw/nes/nes_hw.c +1 −1
  760. drivers/infiniband/hw/nes/nes_hw.h +1 −1
  761. drivers/infiniband/hw/nes/nes_mgt.c +1 −1
  762. drivers/infiniband/hw/nes/nes_mgt.h +1 −1
  763. drivers/infiniband/hw/nes/nes_nic.c +1 −1
  764. drivers/infiniband/hw/nes/nes_user.h +1 −1
  765. drivers/infiniband/hw/nes/nes_utils.c +1 −1
  766. drivers/infiniband/hw/nes/nes_verbs.c +4 −2
  767. drivers/infiniband/hw/nes/nes_verbs.h +1 −1
  768. drivers/infiniband/hw/qib/qib_iba6120.c +1 −1
  769. drivers/infiniband/hw/qib/qib_pcie.c +1 −1
  770. drivers/infiniband/ulp/ipoib/ipoib.h +4 −2
  771. drivers/infiniband/ulp/ipoib/ipoib_main.c +19 −36
  772. drivers/infiniband/ulp/ipoib/ipoib_multicast.c +1 −9
  773. drivers/infiniband/ulp/srpt/Kconfig +12 −0
  774. drivers/infiniband/ulp/srpt/Makefile +2 −0
  775. drivers/infiniband/ulp/srpt/ib_dm_mad.h +139 −0
  776. drivers/infiniband/ulp/srpt/ib_srpt.c +4070 −0
  777. drivers/infiniband/ulp/srpt/ib_srpt.h +443 −0
  778. drivers/input/evdev.c +1 −1
  779. drivers/input/keyboard/twl4030_keypad.c +1 −3
  780. drivers/input/serio/i8042-x86ia64io.h +7 −0
  781. drivers/input/serio/serio_raw.c +9 −6
  782. drivers/iommu/amd_iommu.c +3 −0
  783. drivers/iommu/msm_iommu.c +1 −6
  784. drivers/isdn/i4l/isdn_net.c +1 −1
  785. drivers/leds/Kconfig +7 −0
  786. drivers/leds/Makefile +1 −0
  787. drivers/leds/leds-lm3530.c +2 −2
  788. drivers/leds/leds-ot200.c +171 −0
  789. drivers/macintosh/adb.c +2 −2
  790. drivers/md/dm-raid.c +9 −3
  791. drivers/md/md.c +3 −2
  792. drivers/media/common/tuners/tuner-xc2028.c +21 −6
  793. drivers/media/common/tuners/xc4000.c +86 −0
  794. drivers/media/dvb/dvb-core/dvb_frontend.c +20 −21
  795. drivers/media/dvb/dvb-usb/anysee.c +14 −13
  796. drivers/media/dvb/dvb-usb/cinergyT2-fe.c +4 −3
  797. drivers/media/dvb/dvb-usb/dib0700.h +2 −0
  798. drivers/media/dvb/dvb-usb/dib0700_core.c +1 −0
  799. drivers/media/dvb/dvb-usb/dib0700_devices.c +137 −13
  800. drivers/media/dvb/frontends/cxd2820r.h +2 −4
  801. drivers/media/dvb/frontends/cxd2820r_core.c +22 −6
  802. drivers/media/dvb/frontends/ds3000.c +1 −1
  803. drivers/media/dvb/frontends/mb86a20s.c +4 −4
  804. drivers/media/dvb/frontends/tda18271c2dd.c +0 −1
  805. drivers/media/video/as3645a.c +1 −0
  806. drivers/media/video/atmel-isi.c +14 −0
  807. drivers/media/video/cx18/cx18-fileops.c +14 −27
  808. drivers/media/video/cx231xx/cx231xx-cards.c +1 −1
  809. drivers/media/video/cx23885/cx23885-cards.c +2 −2
  810. drivers/media/video/cx23885/cx23885-dvb.c +5 −0
  811. drivers/media/video/cx23885/cx23885-video.c +4 −3
  812. drivers/media/video/cx88/cx88-cards.c +12 −12
  813. drivers/media/video/em28xx/em28xx-dvb.c +1 −2
  814. drivers/media/video/ivtv/ivtv-driver.c +0 −3
  815. drivers/media/video/ivtv/ivtv-driver.h +1 −2
  816. drivers/media/video/ivtv/ivtv-fileops.c +44 −74
  817. drivers/media/video/ivtv/ivtv-ioctl.c +5 −17
  818. drivers/media/video/ivtv/ivtv-irq.c +2 −2
  819. drivers/media/video/ivtv/ivtv-streams.c +1 −1
  820. drivers/media/video/ivtv/ivtv-yuv.c +19 −3
  821. drivers/media/video/mx3_camera.c +1 −1
  822. drivers/media/video/omap/omap_vout.c +5 −2
  823. drivers/media/video/pwc/pwc-ctrl.c +102 −137
  824. drivers/media/video/pwc/pwc-dec1.c +4 −12
  825. drivers/media/video/pwc/pwc-dec1.h +4 −2
  826. drivers/media/video/pwc/pwc-dec23.c +18 −23
  827. drivers/media/video/pwc/pwc-dec23.h +6 −3
  828. drivers/media/video/pwc/pwc-if.c +16 −159
  829. drivers/media/video/pwc/pwc-misc.c +0 −1
  830. drivers/media/video/pwc/pwc-v4l.c +72 −18
  831. drivers/media/video/pwc/pwc.h +8 −6
  832. drivers/media/video/s5p-fimc/fimc-capture.c +4 −3
  833. drivers/media/video/s5p-fimc/fimc-core.c +3 −3
  834. drivers/media/video/s5p-fimc/fimc-mdevice.c +0 −1
  835. drivers/media/video/s5p-g2d/g2d.c +1 −0
  836. drivers/media/video/s5p-jpeg/jpeg-core.c +4 −3
  837. drivers/media/video/s5p-mfc/s5p_mfc.c +1 −2
  838. drivers/media/video/s5p-mfc/s5p_mfc_dec.c +1 −1
  839. drivers/media/video/saa7164/saa7164-cards.c +0 −4
  840. drivers/media/video/timblogiw.c +1 −1
  841. drivers/media/video/tlg2300/pd-main.c +2 −2
  842. drivers/media/video/v4l2-ctrls.c +27 −27
  843. drivers/media/video/v4l2-ioctl.c +7 −1
  844. drivers/media/video/zoran/zoran_driver.c +0 −1
  845. drivers/mfd/Kconfig +1 −1
  846. drivers/mfd/mcp-core.c +13 −48
  847. drivers/mfd/mcp-sa11x0.c +54 −115
  848. drivers/mfd/twl-core.c +4 −2
  849. drivers/mfd/twl4030-power.c +10 −10
  850. drivers/mfd/twl6040-core.c +77 −51
  851. drivers/mfd/ucb1x00-core.c +24 −43
  852. drivers/mfd/ucb1x00-ts.c +6 −28
  853. drivers/misc/Kconfig +3 −14
  854. drivers/misc/c2port/c2port-duramar2150.c +1 −0
  855. drivers/misc/carma/carma-fpga-program.c +1 −1
  856. drivers/misc/cb710/core.c +1 −0
  857. drivers/misc/cs5535-mfgpt.c +1 −1
  858. drivers/misc/lkdtm.c +5 −1
  859. drivers/misc/vmw_balloon.c +7 −7
  860. drivers/mmc/card/block.c +1 −0
  861. drivers/mmc/core/core.c +39 −10
  862. drivers/mmc/core/host.h +0 −21
  863. drivers/mmc/core/mmc.c +17 −9
  864. drivers/mmc/core/sd.c +18 −4
  865. drivers/mmc/core/sdio.c +4 −3
  866. drivers/mmc/core/sdio_irq.c +8 −2
  867. drivers/mmc/host/Kconfig +0 −1
  868. drivers/mmc/host/atmel-mci.c +10 −3
  869. drivers/mmc/host/dw_mmc.c +75 −69
  870. drivers/mmc/host/mmci.c +7 −4
  871. drivers/mmc/host/mxcmmc.c +7 −3
  872. drivers/mmc/host/mxs-mmc.c +9 −1
  873. drivers/mmc/host/of_mmc_spi.c +2 −2
  874. drivers/mmc/host/sdhci-of-esdhc.c +32 −0
  875. drivers/mmc/host/sdhci-pci.c +1 −1
  876. drivers/mmc/host/sdhci-pltfm.c +9 −1
  877. drivers/mmc/host/sh_mmcif.c +11 −9
  878. drivers/mmc/host/tmio_mmc.h +6 −1
  879. drivers/mmc/host/tmio_mmc_dma.c +14 −2
  880. drivers/mmc/host/tmio_mmc_pio.c +5 −1
  881. drivers/mtd/mtdcore.c +1 −1
  882. drivers/mtd/nand/atmel_nand.c +41 −4
  883. drivers/mtd/nand/gpmi-nand/gpmi-lib.c +26 −14
  884. drivers/mtd/nand/nand_base.c +1 −1
  885. drivers/net/bonding/bond_alb.c +9 −18
  886. drivers/net/can/cc770/cc770.c +3 −1
  887. drivers/net/can/cc770/cc770_isa.c +15 −1
  888. drivers/net/can/flexcan.c +6 −1
  889. drivers/net/can/pch_can.c +2 −1
  890. drivers/net/can/sja1000/peak_pci.c +9 −14
  891. drivers/net/can/ti_hecc.c +2 −1
  892. drivers/net/can/usb/ems_usb.c +0 −9
  893. drivers/net/dsa/mv88e6060.c +1 −0
  894. drivers/net/dsa/mv88e6123_61_65.c +18 −4
  895. drivers/net/dsa/mv88e6131.c +1 −0
  896. drivers/net/dsa/mv88e6xxx.c +1 −0
  897. drivers/net/ethernet/3com/3c59x.c +1 −1
  898. drivers/net/ethernet/broadcom/bcm63xx_enet.c +1 −1
  899. drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c +2 −3
  900. drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c +49 −69
  901. drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c +169 −129
  902. drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c +7 −21
  903. drivers/net/ethernet/broadcom/bnx2x/bnx2x_reg.h +1 −0
  904. drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c +43 −1
  905. drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h +11 −0
  906. drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c +4 −4
  907. drivers/net/ethernet/broadcom/tg3.c +16 −20
  908. drivers/net/ethernet/brocade/bna/bnad_ethtool.c +4 −6
  909. drivers/net/ethernet/cisco/enic/enic.h +1 −1
  910. drivers/net/ethernet/cisco/enic/enic_main.c +22 −16
  911. drivers/net/ethernet/emulex/benet/be_ethtool.c +1 −5
  912. drivers/net/ethernet/emulex/benet/be_main.c +1 −2
  913. drivers/net/ethernet/faraday/ftgmac100.c +1 −0
  914. drivers/net/ethernet/faraday/ftmac100.c +1 −0
  915. drivers/net/ethernet/freescale/fec.c +2 −2
  916. drivers/net/ethernet/ibm/ehea/ehea_ethtool.c +1 −1
  917. drivers/net/ethernet/ibm/ehea/ehea_main.c +16 −16
  918. drivers/net/ethernet/ibm/ehea/ehea_qmr.c +6 −8
  919. drivers/net/ethernet/intel/e1000/e1000_main.c +6 −4
  920. drivers/net/ethernet/intel/igb/Makefile +1 −1
  921. drivers/net/ethernet/intel/igb/e1000_82575.c +1 −1
  922. drivers/net/ethernet/intel/igb/e1000_82575.h +1 −1
  923. drivers/net/ethernet/intel/igb/e1000_defines.h +1 −1
  924. drivers/net/ethernet/intel/igb/e1000_hw.h +1 −1
  925. drivers/net/ethernet/intel/igb/e1000_mac.c +2 −2
  926. drivers/net/ethernet/intel/igb/e1000_mac.h +1 −1
  927. drivers/net/ethernet/intel/igb/e1000_mbx.c +1 −1
  928. drivers/net/ethernet/intel/igb/e1000_mbx.h +1 −1
  929. drivers/net/ethernet/intel/igb/e1000_nvm.c +1 −1
  930. drivers/net/ethernet/intel/igb/e1000_nvm.h +1 −1
  931. drivers/net/ethernet/intel/igb/e1000_phy.c +1 −1
  932. drivers/net/ethernet/intel/igb/e1000_phy.h +1 −1
  933. drivers/net/ethernet/intel/igb/e1000_regs.h +1 −1
  934. drivers/net/ethernet/intel/igb/igb.h +1 −1
  935. drivers/net/ethernet/intel/igb/igb_ethtool.c +1 −1
  936. drivers/net/ethernet/intel/igb/igb_main.c +7 −6
  937. drivers/net/ethernet/intel/igbvf/Makefile +1 −1
  938. drivers/net/ethernet/intel/igbvf/defines.h +1 −1
  939. drivers/net/ethernet/intel/igbvf/ethtool.c +2 −3
  940. drivers/net/ethernet/intel/igbvf/igbvf.h +1 −1
  941. drivers/net/ethernet/intel/igbvf/mbx.c +1 −1
  942. drivers/net/ethernet/intel/igbvf/mbx.h +1 −1
  943. drivers/net/ethernet/intel/igbvf/netdev.c +2 −7
  944. drivers/net/ethernet/intel/igbvf/regs.h +1 −1
  945. drivers/net/ethernet/intel/igbvf/vf.c +1 −1
  946. drivers/net/ethernet/intel/igbvf/vf.h +1 −1
  947. drivers/net/ethernet/intel/ixgbe/Makefile +1 −1
  948. drivers/net/ethernet/intel/ixgbe/ixgbe.h +1 −1
  949. drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c +1 −1
  950. drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c +1 −1
  951. drivers/net/ethernet/intel/ixgbe/ixgbe_common.c +1 −1
  952. drivers/net/ethernet/intel/ixgbe/ixgbe_common.h +2 −2
  953. drivers/net/ethernet/intel/ixgbe/ixgbe_dcb.c +1 −1
  954. drivers/net/ethernet/intel/ixgbe/ixgbe_dcb.h +1 −1
  955. drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82598.c +1 −1
  956. drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82598.h +1 −1
  957. drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82599.c +1 −1
  958. drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82599.h +1 −1
  959. drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c +10 −3
  960. drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c +53 −39
  961. drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.c +1 −1
  962. drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.h +1 −1
  963. drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +13 −9
  964. drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.c +1 −1
  965. drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.h +1 −1
  966. drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c +1 −1
  967. drivers/net/ethernet/intel/ixgbe/ixgbe_phy.h +1 −1
  968. drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c +6 −2
  969. drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.h +1 −1
  970. drivers/net/ethernet/intel/ixgbe/ixgbe_type.h +17 −17
  971. drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c +1 −1
  972. drivers/net/ethernet/intel/ixgbevf/Makefile +1 −1
  973. drivers/net/ethernet/intel/ixgbevf/defines.h +1 −1
  974. drivers/net/ethernet/intel/ixgbevf/ethtool.c +4 −3
  975. drivers/net/ethernet/intel/ixgbevf/ixgbevf.h +5 −5
  976. drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c +27 −20
  977. drivers/net/ethernet/intel/ixgbevf/mbx.c +3 −2
  978. drivers/net/ethernet/intel/ixgbevf/mbx.h +1 −1
  979. drivers/net/ethernet/intel/ixgbevf/regs.h +1 −1
  980. drivers/net/ethernet/intel/ixgbevf/vf.c +20 −8
  981. drivers/net/ethernet/intel/ixgbevf/vf.h +2 −2
  982. drivers/net/ethernet/marvell/mv643xx_eth.c +14 −0
  983. drivers/net/ethernet/marvell/skge.c +25 −13
  984. drivers/net/ethernet/mellanox/mlx4/cmd.c +13 −6
  985. drivers/net/ethernet/mellanox/mlx4/cq.c +2 −2
  986. drivers/net/ethernet/mellanox/mlx4/en_ethtool.c +143 −16
  987. drivers/net/ethernet/mellanox/mlx4/en_main.c +1 −5
  988. drivers/net/ethernet/mellanox/mlx4/en_netdev.c +28 −13
  989. drivers/net/ethernet/mellanox/mlx4/en_rx.c +14 −4
  990. drivers/net/ethernet/mellanox/mlx4/eq.c +12 −14
  991. drivers/net/ethernet/mellanox/mlx4/fw.c +0 −7
  992. drivers/net/ethernet/mellanox/mlx4/fw.h +0 −1
  993. drivers/net/ethernet/mellanox/mlx4/main.c +1 −2
  994. drivers/net/ethernet/mellanox/mlx4/mcg.c +8 −8
  995. drivers/net/ethernet/mellanox/mlx4/mlx4.h +5 −3
  996. drivers/net/ethernet/mellanox/mlx4/mlx4_en.h +4 −2
  997. drivers/net/ethernet/mellanox/mlx4/mr.c +1 −1
  998. drivers/net/ethernet/mellanox/mlx4/pd.c +1 −2
  999. drivers/net/ethernet/mellanox/mlx4/port.c +23 −0
  1000. drivers/net/ethernet/mellanox/mlx4/profile.c +1 −1
  1001. drivers/net/ethernet/mellanox/mlx4/qp.c +1 −1
  1002. drivers/net/ethernet/mellanox/mlx4/resource_tracker.c +15 −45
  1003. drivers/net/ethernet/mellanox/mlx4/srq.c +1 −1
  1004. drivers/net/ethernet/micrel/Kconfig +0 −1
  1005. drivers/net/ethernet/micrel/ks8842.c +2 −2
  1006. drivers/net/ethernet/micrel/ks8851.c +1 −1
  1007. drivers/net/ethernet/micrel/ks8851_mll.c +6 −8
  1008. drivers/net/ethernet/octeon/octeon_mgmt.c +2 −2
  1009. drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c +14 −3
  1010. drivers/net/ethernet/renesas/sh_eth.c +4 −2
  1011. drivers/net/ethernet/renesas/sh_eth.h +0 −3
  1012. drivers/net/ethernet/stmicro/stmmac/common.h +1 −0
  1013. drivers/net/ethernet/stmicro/stmmac/enh_desc.c +1 −1
  1014. drivers/net/ethernet/stmicro/stmmac/norm_desc.c +1 −1
  1015. drivers/net/ethernet/stmicro/stmmac/stmmac.h +3 −2
  1016. drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c +6 −1
  1017. drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +107 −98
  1018. drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c +1 −1
  1019. drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c +5 −7
  1020. drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c +10 −13
  1021. drivers/net/ethernet/ti/cpmac.c +2 −2
  1022. drivers/net/ethernet/ti/davinci_emac.c +2 −1
  1023. drivers/net/ethernet/ti/davinci_mdio.c +1 −1
  1024. drivers/net/ethernet/toshiba/Kconfig +1 −1
  1025. drivers/net/ethernet/via/via-velocity.c +0 −3
  1026. drivers/net/ethernet/xscale/ixp4xx_eth.c +2 −1
  1027. drivers/net/hyperv/netvsc_drv.c +12 −11
  1028. drivers/net/hyperv/rndis_filter.c +32 −0
  1029. drivers/net/macvlan.c +1 −0
  1030. drivers/net/phy/mdio_bus.c +2 −3
  1031. drivers/net/team/team.c +90 −46
  1032. drivers/net/tokenring/Kconfig +4 −1
  1033. drivers/net/usb/ipheth.c +5 −0
  1034. drivers/net/veth.c +3 −1
  1035. drivers/net/wireless/ath/ath9k/ar9003_mac.c +3 −2
  1036. drivers/net/wireless/ath/ath9k/hw.c +5 −2
  1037. drivers/net/wireless/ath/ath9k/init.c +5 −4
  1038. drivers/net/wireless/ath/ath9k/mac.c +3 −2
  1039. drivers/net/wireless/ath/ath9k/rc.c +1 −1
  1040. drivers/net/wireless/ath/ath9k/recv.c +8 −0
  1041. drivers/net/wireless/b43/Kconfig +6 −0
  1042. drivers/net/wireless/b43/main.c +6 −1
  1043. drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c +1 −1
  1044. drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c +4 −36
  1045. drivers/net/wireless/brcm80211/brcmsmac/main.c +9 −1
  1046. drivers/net/wireless/ipw2x00/ipw2200.c +2 −2
  1047. drivers/net/wireless/iwlwifi/iwl-agn-tx.c +10 −4
  1048. drivers/net/wireless/iwlwifi/iwl-commands.h +1 −0
  1049. drivers/net/wireless/iwlwifi/iwl-scan.c +1 −1
  1050. drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c +2 −2
  1051. drivers/net/wireless/iwlwifi/iwl-trans-pcie.c +1 −0
  1052. drivers/net/wireless/mwifiex/init.c +2 −1
  1053. drivers/net/wireless/mwifiex/main.c +8 −4
  1054. drivers/net/wireless/mwifiex/sta_ioctl.c +7 −1
  1055. drivers/net/wireless/mwl8k.c +2 −2
  1056. drivers/net/wireless/rt2x00/rt2800lib.c +4 −4
  1057. drivers/net/wireless/rt2x00/rt2800pci.c +8 −20
  1058. drivers/net/wireless/rtlwifi/pci.c +2 −2
  1059. drivers/net/wireless/zd1211rw/zd_mac.c +8 −0
  1060. drivers/net/xen-netfront.c +1 −1
  1061. drivers/pci/iov.c +1 −2
  1062. drivers/pci/pci.c +3 −3
  1063. drivers/pci/probe.c +5 −0
  1064. drivers/pci/remove.c +22 −6
  1065. drivers/pci/xen-pcifront.c +5 −5
  1066. drivers/pcmcia/ds.c +1 −3
  1067. drivers/pcmcia/sa1111_generic.c +2 −1
  1068. drivers/pinctrl/core.c +32 −20
  1069. drivers/pinctrl/core.h +3 −0
  1070. drivers/pinctrl/pinconf.c +4 −2
  1071. drivers/pinctrl/pinconf.h +2 −2
  1072. drivers/pinctrl/pinmux.c +43 −38
  1073. drivers/pinctrl/pinmux.h +2 −2
  1074. drivers/platform/x86/ibm_rtl.c +2 −13
  1075. drivers/platform/x86/intel_ips.c +2 −13
  1076. drivers/power/bq27x00_battery.c +5 −10
  1077. drivers/power/charger-manager.c +2 −2
  1078. drivers/power/lp8727_charger.c +1 −0
  1079. drivers/regulator/core.c +2 −0
  1080. drivers/regulator/max8649.c +1 −1
  1081. drivers/regulator/mc13xxx-regulator-core.c +2 −0
  1082. drivers/regulator/of_regulator.c +1 −1
  1083. drivers/rtc/Kconfig +1 −1
  1084. drivers/rtc/rtc-at91sam9.c +10 −3
  1085. drivers/rtc/rtc-sa1100.c +113 −182
  1086. drivers/s390/block/dasd.c +6 −0
  1087. drivers/s390/block/dasd_alias.c +1 −63
  1088. drivers/s390/block/dasd_eckd.c +37 −26
  1089. drivers/s390/block/dasd_int.h +2 −0
  1090. drivers/s390/char/con3215.c +15 −7
  1091. drivers/scsi/Kconfig +0 −5
  1092. drivers/scsi/bfa/bfa_defs_svc.h +1 −6
  1093. drivers/scsi/bfa/bfa_fc.h +0 −155
  1094. drivers/scsi/bfa/bfa_fcpim.c +5 −411
  1095. drivers/scsi/bfa/bfa_fcpim.h +0 −7
  1096. drivers/scsi/bfa/bfa_svc.h +0 −5
  1097. drivers/scsi/bfa/bfad.c +2 −0
  1098. drivers/scsi/bfa/bfad_attr.c +1 −1
  1099. drivers/scsi/bfa/bfad_bsg.c +24 −3
  1100. drivers/scsi/bfa/bfad_drv.h +2 −0
  1101. drivers/scsi/bfa/bfad_im.c +56 −0
  1102. drivers/scsi/bfa/bfad_im.h +27 −0
  1103. drivers/scsi/cxgbi/libcxgbi.c +3 −2
  1104. drivers/scsi/device_handler/scsi_dh_alua.c +5 −0
  1105. drivers/scsi/device_handler/scsi_dh_rdac.c +2 −0
  1106. drivers/scsi/fcoe/fcoe.c +25 −21
  1107. drivers/scsi/fcoe/fcoe.h +1 −3
  1108. drivers/scsi/hpsa.c +2 −0
  1109. drivers/scsi/isci/firmware/Makefile +0 −19
  1110. drivers/scsi/isci/firmware/README +0 −36
  1111. drivers/scsi/isci/firmware/create_fw.c +0 −99
  1112. drivers/scsi/isci/firmware/create_fw.h +0 −77
  1113. drivers/scsi/isci/host.c +263 −77
  1114. drivers/scsi/isci/host.h +26 −1
  1115. drivers/scsi/isci/init.c +21 −4
  1116. drivers/scsi/isci/isci.h +1 −0
  1117. drivers/scsi/isci/phy.c +111 −61
  1118. drivers/scsi/isci/port.c +58 −46
  1119. drivers/scsi/isci/port.h +10 −0
  1120. drivers/scsi/isci/port_config.c +22 −13
  1121. drivers/scsi/isci/probe_roms.c +1 −1
  1122. drivers/scsi/isci/probe_roms.h +86 −3
  1123. drivers/scsi/isci/remote_device.c +7 −3
  1124. drivers/scsi/isci/task.c +1 −1
  1125. drivers/scsi/isci/task.h +3 −4
  1126. drivers/scsi/libfc/fc_disc.c +3 −3
  1127. drivers/scsi/libfc/fc_elsct.c +1 −0
  1128. drivers/scsi/libfc/fc_exch.c +1 −1
  1129. drivers/scsi/libfc/fc_fcp.c +1 −3
  1130. drivers/scsi/libfc/fc_lport.c +3 −2
  1131. drivers/scsi/libfc/fc_rport.c +5 −5
  1132. drivers/scsi/mac_esp.c +1 −2
  1133. drivers/scsi/mac_scsi.c +0 −6
  1134. drivers/scsi/megaraid.c +8 −5
  1135. drivers/scsi/megaraid/megaraid_sas.h +3 −5
  1136. drivers/scsi/megaraid/megaraid_sas_base.c +3 −142
  1137. drivers/scsi/megaraid/megaraid_sas_fp.c +3 −1
  1138. drivers/scsi/qla4xxx/ql4_def.h +3 −0
  1139. drivers/scsi/qla4xxx/ql4_init.c +3 −0
  1140. drivers/scsi/qla4xxx/ql4_mbx.c +7 −0
  1141. drivers/scsi/qla4xxx/ql4_nx.c +7 −21
  1142. drivers/scsi/qla4xxx/ql4_nx.h +19 −3
  1143. drivers/scsi/qla4xxx/ql4_os.c +326 −185
  1144. drivers/scsi/qla4xxx/ql4_version.h +1 −1
  1145. drivers/scsi/scsi_lib.c +1 −6
  1146. drivers/scsi/scsi_transport_fc.c +2 −1
  1147. drivers/scsi/sg.c +11 −14
  1148. drivers/scsi/sym53c8xx_2/sym_glue.c +4 −0
  1149. drivers/spi/Kconfig +1 −1
  1150. drivers/spi/spi-dw-mid.c +4 −4
  1151. drivers/spi/spi-ep93xx.c +6 −3
  1152. drivers/spi/spi-pl022.c +4 −4
  1153. drivers/spi/spi-topcliff-pch.c +5 −5
  1154. drivers/ssb/driver_pcicore.c +1 −1
  1155. drivers/staging/Kconfig +0 −4
  1156. drivers/staging/Makefile +0 −2
  1157. drivers/staging/android/Kconfig +1 −4
  1158. drivers/staging/android/Makefile +0 −1
  1159. drivers/staging/android/android_pmem.h +0 −93
  1160. drivers/staging/android/binder.c +11 −2
  1161. drivers/staging/android/lowmemorykiller.c +4 −1
  1162. drivers/staging/android/pmem.c +0 −1345
  1163. drivers/staging/asus_oled/asus_oled.c +9 −4
  1164. drivers/staging/gma500/Kconfig +0 −33
  1165. drivers/staging/gma500/Makefile +0 −52
  1166. drivers/staging/gma500/TODO +0 −15
  1167. drivers/staging/gma500/accel_2d.c +0 −414
  1168. drivers/staging/gma500/backlight.c +0 −49
  1169. drivers/staging/gma500/cdv_device.c +0 −350
  1170. drivers/staging/gma500/cdv_device.h +0 −36
  1171. drivers/staging/gma500/cdv_intel_crt.c +0 −326
  1172. drivers/staging/gma500/cdv_intel_display.c +0 −1508
  1173. drivers/staging/gma500/cdv_intel_hdmi.c +0 −376
  1174. drivers/staging/gma500/cdv_intel_lvds.c +0 −721
  1175. drivers/staging/gma500/displays/hdmi.h +0 −33
  1176. drivers/staging/gma500/displays/pyr_cmd.h +0 −34
  1177. drivers/staging/gma500/displays/pyr_vid.h +0 −34
  1178. drivers/staging/gma500/displays/tmd_cmd.h +0 −34
  1179. drivers/staging/gma500/displays/tmd_vid.h +0 −34
  1180. drivers/staging/gma500/displays/tpo_cmd.h +0 −35
  1181. drivers/staging/gma500/displays/tpo_vid.h +0 −33
  1182. drivers/staging/gma500/framebuffer.c +0 −856
  1183. drivers/staging/gma500/framebuffer.h +0 −48
  1184. drivers/staging/gma500/gem.c +0 −292
  1185. drivers/staging/gma500/gem_glue.c +0 −89
  1186. drivers/staging/gma500/gem_glue.h +0 −2
  1187. drivers/staging/gma500/gtt.c +0 −553
  1188. drivers/staging/gma500/gtt.h +0 −64
  1189. drivers/staging/gma500/intel_bios.c +0 −303
  1190. drivers/staging/gma500/intel_bios.h +0 −430
  1191. drivers/staging/gma500/intel_i2c.c +0 −170
  1192. drivers/staging/gma500/intel_opregion.c +0 −81
  1193. drivers/staging/gma500/mdfld_device.c +0 −714
  1194. drivers/staging/gma500/mdfld_dsi_dbi.c +0 −761
  1195. drivers/staging/gma500/mdfld_dsi_dbi.h +0 −173
  1196. drivers/staging/gma500/mdfld_dsi_dbi_dpu.c +0 −778
  1197. drivers/staging/gma500/mdfld_dsi_dbi_dpu.h +0 −154
  1198. drivers/staging/gma500/mdfld_dsi_dpi.c +0 −805
  1199. drivers/staging/gma500/mdfld_dsi_dpi.h +0 −78
  1200. drivers/staging/gma500/mdfld_dsi_output.c +0 −1014
  1201. drivers/staging/gma500/mdfld_dsi_output.h +0 −138
  1202. drivers/staging/gma500/mdfld_dsi_pkg_sender.c +0 −1484
  1203. drivers/staging/gma500/mdfld_dsi_pkg_sender.h +0 −184
  1204. drivers/staging/gma500/mdfld_intel_display.c +0 −1404
  1205. drivers/staging/gma500/mdfld_msic.h +0 −31
  1206. drivers/staging/gma500/mdfld_output.c +0 −171
  1207. drivers/staging/gma500/mdfld_output.h +0 −41
  1208. drivers/staging/gma500/mdfld_pyr_cmd.c +0 −558
  1209. drivers/staging/gma500/mdfld_tmd_vid.c +0 −206
  1210. drivers/staging/gma500/mdfld_tpo_cmd.c +0 −509
  1211. drivers/staging/gma500/mdfld_tpo_vid.c +0 −140
  1212. drivers/staging/gma500/medfield.h +0 −268
  1213. drivers/staging/gma500/mid_bios.c +0 −270
  1214. drivers/staging/gma500/mid_bios.h +0 −21
  1215. drivers/staging/gma500/mmu.c +0 −858
  1216. drivers/staging/gma500/mrst.h +0 −252
  1217. drivers/staging/gma500/mrst_crtc.c +0 −604
  1218. drivers/staging/gma500/mrst_device.c +0 −634
  1219. drivers/staging/gma500/mrst_hdmi.c +0 −852
  1220. drivers/staging/gma500/mrst_hdmi_i2c.c +0 −328
  1221. drivers/staging/gma500/mrst_lvds.c +0 −407
  1222. drivers/staging/gma500/power.c +0 −318
  1223. drivers/staging/gma500/power.h +0 −67
  1224. drivers/staging/gma500/psb_device.c +0 −321
  1225. drivers/staging/gma500/psb_drm.h +0 −219
  1226. drivers/staging/gma500/psb_drv.c +0 −1230
  1227. drivers/staging/gma500/psb_drv.h +0 −952
  1228. drivers/staging/gma500/psb_intel_display.c +0 −1429
  1229. drivers/staging/gma500/psb_intel_display.h +0 −28
  1230. drivers/staging/gma500/psb_intel_drv.h +0 −230
  1231. drivers/staging/gma500/psb_intel_lvds.c +0 −854
  1232. drivers/staging/gma500/psb_intel_modes.c +0 −77
  1233. drivers/staging/gma500/psb_intel_reg.h +0 −1235
  1234. drivers/staging/gma500/psb_intel_sdvo.c +0 −1293
  1235. drivers/staging/gma500/psb_intel_sdvo_regs.h +0 −338
  1236. drivers/staging/gma500/psb_irq.c +0 −627
  1237. drivers/staging/gma500/psb_irq.h +0 −45
  1238. drivers/staging/gma500/psb_lid.c +0 −88
  1239. drivers/staging/gma500/psb_reg.h +0 −582
  1240. drivers/staging/media/go7007/go7007-usb.c +1 −0
  1241. drivers/staging/omapdrm/Makefile +1 −0
  1242. drivers/staging/omapdrm/omap_crtc.c +45 −146
  1243. drivers/staging/omapdrm/omap_drv.c +48 −33
  1244. drivers/staging/omapdrm/omap_drv.h +46 −6
  1245. drivers/staging/omapdrm/omap_fb.c +167 −57
  1246. drivers/staging/omapdrm/omap_fbdev.c +37 −22
  1247. drivers/staging/omapdrm/omap_gem.c +19 −4
  1248. drivers/staging/omapdrm/omap_plane.c +344 −0
  1249. drivers/staging/omapdrm/omap_priv.h +10 −2
  1250. drivers/staging/pohmelfs/Kconfig +0 −20
  1251. drivers/staging/pohmelfs/Makefile +0 −3
  1252. drivers/staging/pohmelfs/config.c +0 −611
  1253. drivers/staging/pohmelfs/crypto.c +0 −878
  1254. drivers/staging/pohmelfs/dir.c +0 −1102
  1255. drivers/staging/pohmelfs/inode.c +0 −2055
  1256. drivers/staging/pohmelfs/lock.c +0 −182
  1257. drivers/staging/pohmelfs/mcache.c +0 −171
  1258. drivers/staging/pohmelfs/net.c +0 −1209
  1259. drivers/staging/pohmelfs/netfs.h +0 −919
  1260. drivers/staging/pohmelfs/path_entry.c +0 −120
  1261. drivers/staging/pohmelfs/trans.c +0 −706
  1262. drivers/staging/rtl8712/drv_types.h +7 −0
  1263. drivers/staging/rtl8712/hal_init.c +43 −19
  1264. drivers/staging/rtl8712/os_intfs.c +11 −3
  1265. drivers/staging/rtl8712/rtl8712_hal.h +1 −0
  1266. drivers/staging/rtl8712/rtl871x_sta_mgt.c +1 −0
  1267. drivers/staging/rtl8712/usb_intf.c +7 −3
  1268. drivers/staging/tidspbridge/core/tiomap3430.c +0 −2
  1269. drivers/staging/tidspbridge/rmgr/drv_interface.c +35 −23
  1270. drivers/staging/usbip/stub_main.c +2 −2
  1271. drivers/staging/zcache/zcache-main.c +12 −13
  1272. drivers/target/iscsi/iscsi_target.c +43 −15
  1273. drivers/target/iscsi/iscsi_target_auth.c +20 −16
  1274. drivers/target/iscsi/iscsi_target_configfs.c +4 −8
  1275. drivers/target/iscsi/iscsi_target_core.h +4 −2
  1276. drivers/target/iscsi/iscsi_target_device.c +1 −2
  1277. drivers/target/iscsi/iscsi_target_erl0.c +1 −1
  1278. drivers/target/iscsi/iscsi_target_erl1.c +3 −3
  1279. drivers/target/iscsi/iscsi_target_erl2.c +1 −1
  1280. drivers/target/iscsi/iscsi_target_login.c +47 −15
  1281. drivers/target/iscsi/iscsi_target_nego.c +2 −2
  1282. drivers/target/iscsi/iscsi_target_nodeattrib.c +1 −2
  1283. drivers/target/iscsi/iscsi_target_stat.c +8 −9
  1284. drivers/target/iscsi/iscsi_target_tmr.c +1 −1
  1285. drivers/target/iscsi/iscsi_target_tpg.c +2 −4
  1286. drivers/target/iscsi/iscsi_target_util.c +14 −5
  1287. drivers/target/loopback/tcm_loop.c +11 −22
  1288. drivers/target/loopback/tcm_loop.h +1 −10
  1289. drivers/target/target_core_alua.c +7 −8
  1290. drivers/target/target_core_cdb.c +50 −40
  1291. drivers/target/target_core_cdb.h +0 −14
  1292. drivers/target/target_core_configfs.c +25 −17
  1293. drivers/target/target_core_device.c +18 −25
  1294. drivers/target/target_core_fabric_configfs.c +4 −8
  1295. drivers/target/target_core_fabric_lib.c +5 −8
  1296. drivers/target/target_core_file.c +7 −8
  1297. drivers/target/target_core_hba.c +3 −4
  1298. drivers/target/target_core_hba.h +0 −7
  1299. drivers/target/target_core_iblock.c +12 −6
  1300. drivers/target/target_core_internal.h +123 −0
  1301. drivers/target/target_core_pr.c +25 −42
  1302. drivers/target/target_core_pr.h +0 −2
  1303. drivers/target/target_core_pscsi.c +11 −13
  1304. drivers/target/target_core_rd.c +2 −4
  1305. drivers/target/target_core_stat.c +4 −5
  1306. drivers/target/target_core_stat.h +0 −8
  1307. drivers/target/target_core_tmr.c +22 −14
  1308. drivers/target/target_core_tpg.c +4 −8
  1309. drivers/target/target_core_transport.c +270 −175
  1310. drivers/target/target_core_ua.c +2 −4
  1311. drivers/target/tcm_fc/tfc_cmd.c +14 −48
  1312. drivers/target/tcm_fc/tfc_conf.c +1 −5
  1313. drivers/target/tcm_fc/tfc_io.c +1 −4
  1314. drivers/target/tcm_fc/tfc_sess.c +1 −4
  1315. drivers/thermal/thermal_sys.c +2 −2
  1316. drivers/tty/serial/8250/8250.c +1 −1
  1317. drivers/tty/serial/8250/8250.h +0 −0
  1318. drivers/tty/serial/8250/8250_accent.c +0 −0
  1319. drivers/tty/serial/8250/8250_acorn.c +0 −0
  1320. drivers/tty/serial/8250/8250_boca.c +0 −0
  1321. drivers/tty/serial/8250/8250_dw.c +0 −0
  1322. drivers/tty/serial/8250/8250_early.c +0 −0
  1323. drivers/tty/serial/8250/8250_exar_st16c554.c +0 −0
  1324. drivers/tty/serial/8250/8250_fourport.c +0 −0
  1325. drivers/tty/serial/8250/8250_fsl.c +0 −0
  1326. drivers/tty/serial/8250/8250_gsc.c +0 −0
  1327. drivers/tty/serial/8250/8250_hp300.c +0 −0
  1328. drivers/tty/serial/8250/8250_hub6.c +0 −0
  1329. drivers/tty/serial/8250/8250_mca.c +0 −0
  1330. drivers/tty/serial/8250/8250_pci.c +0 −0
  1331. drivers/tty/serial/8250/8250_pnp.c +0 −0
  1332. drivers/tty/serial/8250/Kconfig +280 −0
  1333. drivers/tty/serial/8250/Makefile +20 −0
  1334. drivers/tty/serial/8250/serial_cs.c +0 −0
  1335. drivers/tty/serial/Kconfig +1 −282
  1336. drivers/tty/serial/Makefile +3 −17
  1337. drivers/tty/serial/amba-pl011.c +32 −6
  1338. drivers/tty/serial/jsm/jsm_driver.c +1 −0
  1339. drivers/tty/serial/max3107-aava.c +0 −344
  1340. drivers/tty/serial/omap-serial.c +27 −7
  1341. drivers/tty/serial/pch_uart.c +2 −2
  1342. drivers/tty/serial/samsung.c +2 −1
  1343. drivers/tty/serial/serial_core.c +3 −3
  1344. drivers/tty/serial/sh-sci.c +2 −2
  1345. drivers/tty/tty_port.c +7 −5
  1346. drivers/tty/vt/vt_ioctl.c +0 −1
  1347. drivers/usb/class/cdc-wdm.c +38 −21
  1348. drivers/usb/core/hcd-pci.c +4 −1
  1349. drivers/usb/core/hcd.c +4 −2
  1350. drivers/usb/core/hub.c +17 −13
  1351. drivers/usb/dwc3/ep0.c +4 −11
  1352. drivers/usb/dwc3/gadget.c +1 −1
  1353. drivers/usb/gadget/composite.c +3 −4
  1354. drivers/usb/gadget/epautoconf.c +1 −1
  1355. drivers/usb/gadget/f_loopback.c +1 −1
  1356. drivers/usb/gadget/f_mass_storage.c +5 −5
  1357. drivers/usb/gadget/fsl_udc_core.c +2 −2
  1358. drivers/usb/gadget/langwell_udc.c +10 −97
  1359. drivers/usb/gadget/langwell_udc.h +0 −1
  1360. drivers/usb/gadget/storage_common.c +3 −3
  1361. drivers/usb/host/Kconfig +4 −4
  1362. drivers/usb/host/ehci-fsl.c +10 −3
  1363. drivers/usb/host/ehci-fsl.h +1 −0
  1364. drivers/usb/host/ehci-pci.c +6 −0
  1365. drivers/usb/host/ehci-xilinx-of.c +1 −1
  1366. drivers/usb/host/ohci-at91.c +22 −2
  1367. drivers/usb/host/ohci-dbg.c +10 −2
  1368. drivers/usb/host/ohci-pci.c +4 −0
  1369. drivers/usb/host/pci-quirks.c +17 −0
  1370. drivers/usb/host/xhci-hub.c +1 −1
  1371. drivers/usb/host/xhci-mem.c +24 −8
  1372. drivers/usb/host/xhci-ring.c +4 −2
  1373. drivers/usb/host/xhci.c +5 −0
  1374. drivers/usb/misc/emi26.c +0 −3
  1375. drivers/usb/misc/emi62.c +0 −3
  1376. drivers/usb/misc/usbsevseg.c +1 −1
  1377. drivers/usb/musb/davinci.c +0 −3
  1378. drivers/usb/musb/musb_core.c +3 −2
  1379. drivers/usb/musb/musb_io.h +2 −1
  1380. drivers/usb/musb/omap2430.c +2 −2
  1381. drivers/usb/musb/ux500_dma.c +2 −2
  1382. drivers/usb/otg/Kconfig +2 −16
  1383. drivers/usb/otg/Makefile +0 −1
  1384. drivers/usb/otg/langwell_otg.c +0 −2347
  1385. drivers/usb/otg/mv_otg.c +2 −0
  1386. drivers/usb/renesas_usbhs/fifo.c +2 −2
  1387. drivers/usb/renesas_usbhs/mod_gadget.c +1 −1
  1388. drivers/usb/serial/cp210x.c +77 −30
  1389. drivers/usb/serial/ftdi_sio.c +11 −4
  1390. drivers/usb/serial/ftdi_sio_ids.h +26 −0
  1391. drivers/usb/serial/io_ti.c +2 −8
  1392. drivers/usb/serial/kobil_sct.c +1 −1
  1393. drivers/usb/serial/option.c +30 −15
  1394. drivers/usb/serial/qcaux.c +6 −1
  1395. drivers/usb/serial/qcserial.c +14 −2
  1396. drivers/usb/serial/ti_usb_3410_5052.c +4 −2
  1397. drivers/usb/serial/ti_usb_3410_5052.h +4 −0
  1398. drivers/usb/storage/realtek_cr.c +1 −1
  1399. drivers/usb/storage/usb.c +31 −59
  1400. drivers/usb/storage/usb.h +4 −3
  1401. drivers/usb/usb-skeleton.c +1 −17
  1402. drivers/usb/wusbcore/Kconfig +1 −1
  1403. drivers/vhost/net.c +5 −3
  1404. drivers/video/atmel_lcdfb.c +1 −1
  1405. drivers/video/backlight/adp8860_bl.c +1 −1
  1406. drivers/video/backlight/adp8870_bl.c +1 −1
  1407. drivers/video/backlight/l4f00242t03.c +2 −0
  1408. drivers/video/fsl-diu-fb.c +2 −2
  1409. drivers/video/intelfb/intelfbdrv.c +0 −1
  1410. drivers/video/macfb.c +28 −32
  1411. drivers/video/mx3fb.c +24 −41
  1412. drivers/video/omap2/dss/dispc.c +1 −1
  1413. drivers/video/omap2/dss/dpi.c +5 −0
  1414. drivers/video/omap2/dss/dsi.c +1 −1
  1415. drivers/video/omap2/dss/dss.c +1 −1
  1416. drivers/video/omap2/dss/hdmi.c +4 −1
  1417. drivers/video/omap2/dss/rfbi.c +1 −1
  1418. drivers/video/omap2/dss/ti_hdmi.h +4 −0
  1419. drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c +64 −4
  1420. drivers/video/omap2/dss/venc.c +1 −1
  1421. drivers/virtio/virtio_ring.c +4 −4
  1422. drivers/watchdog/dw_wdt.c +1 −5
  1423. drivers/watchdog/iTCO_wdt.c +35 −0
  1424. drivers/watchdog/imx2_wdt.c +1 −10
  1425. drivers/watchdog/nuc900_wdt.c +3 −2
  1426. drivers/watchdog/omap_wdt.c +2 −0
  1427. drivers/watchdog/pnx4008_wdt.c +1 −1
  1428. drivers/watchdog/stmp3xxx_wdt.c +1 −1
  1429. drivers/watchdog/via_wdt.c +3 −3
  1430. drivers/watchdog/wafer5823wdt.c +2 −2
  1431. drivers/watchdog/wm8350_wdt.c +2 −2
  1432. drivers/xen/biomerge.c +2 −0
  1433. drivers/xen/cpu_hotplug.c +2 −1
  1434. drivers/xen/grant-table.c +5 −2
  1435. drivers/xen/xen-balloon.c +1 −1
  1436. drivers/xen/xen-pciback/pci_stub.c +4 −4
  1437. drivers/xen/xen-pciback/xenbus.c +3 −2
  1438. drivers/xen/xenbus/xenbus_dev_frontend.c +4 −0
  1439. firmware/Makefile +0 −1
  1440. firmware/isci/isci_firmware.bin.ihex +0 −16
  1441. fs/autofs4/expire.c +2 −0
  1442. fs/bio.c +3 −7
  1443. fs/btrfs/Kconfig +19 −0
  1444. fs/btrfs/Makefile +2 −1
  1445. fs/btrfs/backref.c +878 −253
  1446. fs/btrfs/backref.h +5 −0
  1447. fs/btrfs/btrfs_inode.h +3 −0
  1448. fs/btrfs/check-integrity.c +3069 −0
  1449. fs/btrfs/check-integrity.h +36 −0
  1450. fs/btrfs/ctree.c +21 −21
  1451. fs/btrfs/ctree.h +217 −22
  1452. fs/btrfs/delayed-inode.c +33 −12
  1453. fs/btrfs/delayed-ref.c +106 −47
  1454. fs/btrfs/delayed-ref.h +91 −13
  1455. fs/btrfs/disk-io.c +84 −42
  1456. fs/btrfs/disk-io.h +3 −3
  1457. fs/btrfs/export.c +1 −1
  1458. fs/btrfs/extent-tree.c +373 −141
  1459. fs/btrfs/extent_io.c +6 −2
  1460. fs/btrfs/extent_io.h +2 −0
  1461. fs/btrfs/file.c +5 −6
  1462. fs/btrfs/free-space-cache.c +259 −163
  1463. fs/btrfs/inode-map.c +4 −0
  1464. fs/btrfs/inode.c +41 −35
  1465. fs/btrfs/ioctl.c +237 −33
  1466. fs/btrfs/ioctl.h +54 −0
  1467. fs/btrfs/locking.c +51 −2
  1468. fs/btrfs/relocation.c +10 −10
  1469. fs/btrfs/scrub.c +7 −5
  1470. fs/btrfs/super.c +109 −81
  1471. fs/btrfs/transaction.c +10 −10
  1472. fs/btrfs/tree-log.c +5 −3
  1473. fs/btrfs/ulist.c +220 −0
  1474. fs/btrfs/ulist.h +68 −0
  1475. fs/btrfs/volumes.c +828 −165
  1476. fs/btrfs/volumes.h +51 −3
  1477. fs/btrfs/xattr.c +1 −1
  1478. fs/ceph/caps.c +2 −2
  1479. fs/ceph/dir.c +2 −2
  1480. fs/ceph/mds_client.c +7 −3
  1481. fs/ceph/mds_client.h +5 −2
  1482. fs/ceph/xattr.c +3 −1
  1483. fs/cifs/Kconfig +3 −4
  1484. fs/cifs/cifs_debug.c +10 −1
  1485. fs/cifs/cifs_spnego.c +7 −3
  1486. fs/cifs/cifs_unicode.c +21 −20
  1487. fs/cifs/cifs_unicode.h +10 −10
  1488. fs/cifs/cifsacl.c +2 −0
  1489. fs/cifs/cifsencrypt.c +13 −8
  1490. fs/cifs/cifsglob.h +2 −0
  1491. fs/cifs/cifssmb.c +84 −78
  1492. fs/cifs/connect.c +254 −64
  1493. fs/cifs/dir.c +1 −1
  1494. fs/cifs/readdir.c +5 −4
  1495. fs/cifs/sess.c +24 −21
  1496. fs/cifs/smbencrypt.c +1 −1
  1497. fs/compat.c +25 −31
  1498. fs/dcache.c +4 −4
  1499. fs/debugfs/file.c +1 −1
  1500. fs/ecryptfs/crypto.c +70 −52
  1501. fs/ecryptfs/ecryptfs_kernel.h +11 −0
  1502. fs/ecryptfs/inode.c +38 −12
  1503. fs/ecryptfs/keystore.c +6 −8
  1504. fs/ecryptfs/miscdev.c +85 −55
  1505. fs/ecryptfs/mmap.c +6 −6
  1506. fs/ecryptfs/read_write.c +18 −82
  1507. fs/ecryptfs/super.c +13 −1
  1508. fs/exec.c +17 −16
  1509. fs/ext2/ioctl.c +16 −6
  1510. fs/fs-writeback.c +8 −8
  1511. fs/inode.c +4 −7
  1512. fs/ioprio.c +1 −1
  1513. fs/jbd/checkpoint.c +22 −5
  1514. fs/jbd/recovery.c +4 −0
  1515. fs/jffs2/erase.c +1 −1
  1516. fs/logfs/dev_mtd.c +0 −6
  1517. fs/logfs/dir.c +1 −1
  1518. fs/logfs/file.c +2 −0
  1519. fs/logfs/gc.c +1 −1
  1520. fs/logfs/inode.c +3 −1
  1521. fs/logfs/journal.c +0 −1
  1522. fs/logfs/logfs.h +4 −1
  1523. fs/logfs/readwrite.c +34 −17
  1524. fs/logfs/segment.c +39 −12
  1525. fs/logfs/super.c +2 −1
  1526. fs/namei.c +16 −16
  1527. fs/nfs/nfs4proc.c +55 −75
  1528. fs/nfs/nfs4state.c +2 −0
  1529. fs/nfs/nfs4xdr.c +4 −1
  1530. fs/nilfs2/ioctl.c +2 −0
  1531. fs/ocfs2/namei.c +1 −1
  1532. fs/proc/base.c +65 −169
  1533. fs/proc/stat.c +2 −0
  1534. fs/proc/task_mmu.c +3 −0
  1535. fs/qnx4/inode.c +25 −37
  1536. fs/quota/dquot.c +5 −3
  1537. fs/quota/quota.c +21 −3
  1538. fs/select.c +1 −1
  1539. fs/super.c +24 −0
  1540. fs/sysfs/file.c +6 −0
  1541. fs/sysfs/inode.c +4 −1
  1542. fs/xfs/kmem.h +0 −6
  1543. fs/xfs/xfs_aops.c +16 −13
  1544. fs/xfs/xfs_attr.c +0 −4
  1545. fs/xfs/xfs_attr_leaf.c +0 −9
  1546. fs/xfs/xfs_bmap.c +53 −63
  1547. fs/xfs/xfs_dfrag.c +21 −22
  1548. fs/xfs/xfs_dquot.c +38 −89
  1549. fs/xfs/xfs_file.c +51 −133
  1550. fs/xfs/xfs_fs_subr.c +1 −1
  1551. fs/xfs/xfs_iget.c +18 −6
  1552. fs/xfs/xfs_inode.c +45 −148
  1553. fs/xfs/xfs_inode.h +67 −47
  1554. fs/xfs/xfs_inode_item.c +3 −5
  1555. fs/xfs/xfs_iomap.c +23 −23
  1556. fs/xfs/xfs_iops.c +29 −17
  1557. fs/xfs/xfs_log_recover.c +4 −4
  1558. fs/xfs/xfs_qm.c +111 −180
  1559. fs/xfs/xfs_qm.h +0 −14
  1560. fs/xfs/xfs_qm_stats.c +2 −2
  1561. fs/xfs/xfs_qm_syscalls.c +9 −3
  1562. fs/xfs/xfs_super.c +0 −8
  1563. fs/xfs/xfs_sync.c +4 −5
  1564. fs/xfs/xfs_trace.h +10 −24
  1565. fs/xfs/xfs_trans.c +2 −2
  1566. fs/xfs/xfs_trans_dquot.c +6 −4
  1567. fs/xfs/xfs_vnodeops.c +30 −17
  1568. include/acpi/acnames.h +1 −0
  1569. include/acpi/acpi_numa.h +1 −0
  1570. include/acpi/acpiosxf.h +4 −7
  1571. include/acpi/acpixf.h +29 −3
  1572. include/acpi/acrestyp.h +203 −4
  1573. include/acpi/actbl.h +17 −6
  1574. include/acpi/actbl1.h +53 −4
  1575. include/acpi/actbl3.h +552 −0
  1576. include/acpi/actypes.h +11 −1
  1577. include/acpi/atomicio.h +0 −10
  1578. include/acpi/processor.h +1 −0
  1579. include/asm-generic/io-64-nonatomic-hi-lo.h +28 −0
  1580. include/asm-generic/io-64-nonatomic-lo-hi.h +28 −0
  1581. include/asm-generic/pci_iomap.h +10 −0
  1582. include/drm/drmP.h +1 −0
  1583. include/keys/user-type.h +2 −1
  1584. include/linux/acpi.h +14 −6
  1585. include/linux/acpi_io.h +3 −0
  1586. include/linux/amba/pl08x.h +2 −2
  1587. include/linux/audit.h +96 −20
  1588. include/linux/bcma/bcma.h +1 −1
  1589. include/linux/binfmts.h +2 −1
  1590. include/linux/bitops.h +20 −0
  1591. include/linux/blkdev.h +0 −3
  1592. include/linux/cdrom.h +2 −1
  1593. include/linux/cpuidle.h +7 −0
  1594. include/linux/device.h +10 −5
  1595. include/linux/digsig.h +4 −4
  1596. include/linux/dmaengine.h +92 −7
  1597. include/linux/dw_dmac.h +1 −1
  1598. include/linux/elevator.h +1 −8
  1599. include/linux/freezer.h +2 −0
  1600. include/linux/fs.h +2 −1
  1601. include/linux/gpio_keys.h +2 −0
  1602. include/linux/hyperv.h +1 −1
  1603. include/linux/if_team.h +10 −0
  1604. include/linux/iocontext.h +2 −3
  1605. include/linux/kexec.h +2 −0
  1606. include/linux/key.h +4 −1
  1607. include/linux/kref.h +1 −0
  1608. include/linux/lp8727.h +0 −0
  1609. include/linux/mfd/mcp.h +6 −6
  1610. include/linux/mfd/twl6040.h +2 −0
  1611. include/linux/mfd/ucb1x00.h +1 −4
  1612. include/linux/migrate.h +1 −13
  1613. include/linux/migrate_mode.h +16 −0
  1614. include/linux/miscdevice.h +1 −0
  1615. include/linux/mlx4/device.h +1 −0
  1616. include/linux/mmc/card.h +4 −0
  1617. include/linux/mmc/dw_mmc.h +4 −2
  1618. include/linux/mmc/host.h +20 −0
  1619. include/linux/mod_devicetable.h +0 −11
  1620. include/linux/mpi.h +0 −2
  1621. include/linux/mtd/gpmi-nand.h +68 −0
  1622. include/linux/mtd/mtd.h +2 −4
  1623. include/linux/netfilter/nf_conntrack_common.h +0 −4
  1624. include/linux/netfilter/xt_CT.h +1 −2
  1625. include/linux/nfs_xdr.h +1 −1
  1626. include/linux/nvme.h +434 −0
  1627. include/linux/perf_event.h +1 −0
  1628. include/linux/pm_qos.h +13 −1
  1629. include/linux/proportions.h +4 −0
  1630. include/linux/ptrace.h +10 −0
  1631. include/linux/quota.h +5 −1
  1632. include/linux/res_counter.h +10 −1
  1633. include/linux/sched.h +8 −2
  1634. include/linux/sh_dma.h +4 −1
  1635. include/linux/shmem_fs.h +1 −0
  1636. include/linux/sirfsoc_dma.h +6 −0
  1637. include/linux/snmp.h +0 −1
  1638. include/linux/suspend.h +17 −2
  1639. include/linux/swap.h +1 −1
  1640. include/linux/syscalls.h +1 −1
  1641. include/linux/sysdev.h +0 −164
  1642. include/linux/thermal.h +2 −2
  1643. include/linux/tty_driver.h +0 −1
  1644. include/linux/usb.h +1 −0
  1645. include/linux/usb/ch11.h +2 −8
  1646. include/linux/usb/ch9.h +1 −1
  1647. include/linux/usb/langwell_otg.h +0 −139
  1648. include/media/tuner.h +2 −1
  1649. include/net/bluetooth/hci.h +1 −1
  1650. include/net/cfg80211.h +6 −0
  1651. include/net/flow.h +11 −1
  1652. include/net/netns/generic.h +1 −0
  1653. include/net/netprio_cgroup.h +40 −9
  1654. include/net/route.h +4 −0
  1655. include/net/sch_generic.h +8 −1
  1656. include/net/sock.h +7 −7
  1657. include/net/tcp.h +12 −4
  1658. include/scsi/libfc.h +1 −1
  1659. include/sound/core.h +2 −0
  1660. include/target/target_core_backend.h +65 −0
  1661. include/target/target_core_base.h +133 −37
  1662. include/target/target_core_device.h +0 −63
  1663. include/target/target_core_fabric.h +88 −6
  1664. include/target/target_core_fabric_lib.h +0 −28
  1665. include/target/target_core_tmr.h +0 −35
  1666. include/target/target_core_tpg.h +0 −35
  1667. include/target/target_core_transport.h +0 −287
  1668. include/trace/events/btrfs.h +203 −0
  1669. include/trace/events/writeback.h +5 −2
  1670. include/video/omapdss.h +5 −0
  1671. init/Kconfig +15 −1
  1672. ipc/mqueue.c +1 −2
  1673. ipc/shm.c +22 −15
  1674. kernel/audit.c +2 −2
  1675. kernel/audit.h +1 −5
  1676. kernel/auditfilter.c +12 −5
  1677. kernel/auditsc.c +458 −280
  1678. kernel/capability.c +1 −1
  1679. kernel/events/callchain.c +0 −2
  1680. kernel/events/core.c +81 −44
  1681. kernel/exit.c +17 −2
  1682. kernel/fork.c +21 −3
  1683. kernel/kprobes.c +6 −2
  1684. kernel/params.c +2 −1
  1685. kernel/pid.c +2 −2
  1686. kernel/power/power.h +22 −2
  1687. kernel/power/process.c +24 −2
  1688. kernel/power/snapshot.c +2 −1
  1689. kernel/power/user.c +13 −2
  1690. kernel/rcutorture.c +4 −4
  1691. kernel/relay.c +8 −2
  1692. kernel/res_counter.c +25 −0
  1693. kernel/sched/core.c +7 −12
  1694. kernel/sched/cpupri.c +1 −2
  1695. kernel/sched/fair.c +29 −5
  1696. kernel/sched/rt.c +5 −0
  1697. kernel/seccomp.c +2 −0
  1698. kernel/tracepoint.c +4 −3
  1699. kernel/watchdog.c +1 −1
  1700. lib/Kconfig +16 −10
  1701. lib/Makefile +3 −1
  1702. lib/bug.c +1 −1
  1703. lib/clz_tab.c +18 −0
  1704. lib/digsig.c +23 −29
  1705. lib/kstrtox.c +13 −5
  1706. lib/mpi/longlong.h +33 −11
  1707. lib/mpi/mpi-bit.c +0 −19
  1708. lib/mpi/mpi-div.c +5 −0
  1709. lib/mpi/mpi-pow.c +1 −1
  1710. lib/mpi/mpicoder.c +4 −89
  1711. lib/mpi/mpih-div.c +4 −0
  1712. lib/mpi/mpiutil.c +4 −1
  1713. lib/pci_iomap.c +1 −1
  1714. mm/backing-dev.c +18 −5
  1715. mm/compaction.c +23 −1
  1716. mm/filemap.c +4 −4
  1717. mm/filemap_xip.c +6 −1
  1718. mm/huge_memory.c +2 −2
  1719. mm/hugetlb.c +6 −3
  1720. mm/kmemleak.c +2 −1
  1721. mm/memblock.c +5 −2
  1722. mm/memcontrol.c +6 −5
  1723. mm/memory.c +28 −9
  1724. mm/migrate.c +1 −1
  1725. mm/page_alloc.c +20 −1
  1726. mm/process_vm_access.c +9 −14
  1727. mm/shmem.c +41 −12
  1728. mm/swap.c +1 −1
  1729. mm/vmscan.c +42 −82
  1730. net/bluetooth/hci_core.c +1 −1
  1731. net/bridge/br_fdb.c +2 −2
  1732. net/caif/caif_dev.c +11 −27
  1733. net/caif/caif_socket.c +6 −4
  1734. net/caif/caif_usb.c +1 −2
  1735. net/caif/cfcnfg.c +0 −1
  1736. net/caif/cfmuxl.c +3 −9
  1737. net/ceph/ceph_common.c +0 −2
  1738. net/ceph/mon_client.c +12 −1
  1739. net/core/dev.c +28 −14
  1740. net/core/ethtool.c +3 −0
  1741. net/core/flow_dissector.c +1 −0
  1742. net/core/net-sysfs.c +1 −1
  1743. net/core/net_namespace.c +16 −15
  1744. net/core/netpoll.c +1 −1
  1745. net/core/netprio_cgroup.c +5 −10
  1746. net/core/pktgen.c +2 −2
  1747. net/core/rtnetlink.c +3 −0
  1748. net/core/secure_seq.c +1 −1
  1749. net/core/sock.c +4 −7
  1750. net/ipv4/Kconfig +1 −1
  1751. net/ipv4/arp.c +2 −1
  1752. net/ipv4/inet_connection_sock.c +5 −2
  1753. net/ipv4/inetpeer.c +2 −1
  1754. net/ipv4/ip_gre.c +4 −0
  1755. net/ipv4/ip_options.c +1 −1
  1756. net/ipv4/ipconfig.c +4 −4
  1757. net/ipv4/ping.c +14 −13
  1758. net/ipv4/proc.c +0 −1
  1759. net/ipv4/sysctl_net_ipv4.c +1 −6
  1760. net/ipv4/tcp.c +30 −8
  1761. net/ipv4/tcp_bic.c +7 −4
  1762. net/ipv4/tcp_cubic.c +6 −4
  1763. net/ipv4/tcp_input.c +44 −42
  1764. net/ipv4/tcp_ipv4.c +6 −1
  1765. net/ipv4/tcp_output.c +2 −4
  1766. net/ipv4/tcp_timer.c +1 −4
  1767. net/ipv4/udp_diag.c +0 −1
  1768. net/ipv6/addrconf.c +40 −21
  1769. net/ipv6/datagram.c +1 −1
  1770. net/ipv6/proc.c +2 −2
  1771. net/ipv6/route.c +1 −0
  1772. net/ipv6/tcp_ipv6.c +1 −1
  1773. net/l2tp/l2tp_ip.c +0 −5
  1774. net/llc/af_llc.c +5 −0
  1775. net/mac80211/cfg.c +1 −1
  1776. net/mac80211/debugfs_key.c +4 −3
  1777. net/mac80211/ibss.c +1 −0
  1778. net/mac80211/iface.c +1 −0
  1779. net/mac80211/main.c +2 −2
  1780. net/mac80211/mesh_hwmp.c +4 −4
  1781. net/mac80211/mesh_plink.c +2 −2
  1782. net/mac80211/mlme.c +27 −11
  1783. net/mac80211/rx.c +2 −1
  1784. net/mac80211/sta_info.c +4 −2
  1785. net/mac80211/tx.c +1 −9
  1786. net/mac80211/wpa.c +19 −0
  1787. net/mac80211/wpa.h +2 −0
  1788. net/netfilter/ipset/ip_set_core.c +27 −10
  1789. net/netfilter/nf_conntrack_helper.c +0 −12
  1790. net/netfilter/nf_conntrack_netlink.c +0 −4
  1791. net/netfilter/xt_CT.c +3 −5
  1792. net/netfilter/xt_hashlimit.c +4 −1
  1793. net/openvswitch/datapath.c +3 −5
  1794. net/openvswitch/datapath.h +0 −1
  1795. net/openvswitch/flow.c +0 −1
  1796. net/openvswitch/vport-internal_dev.c +0 −1
  1797. net/openvswitch/vport.c +0 −1
  1798. net/rds/af_rds.c +8 −12
  1799. net/rxrpc/ar-key.c +2 −2
  1800. net/sched/sch_choke.c +1 −2
  1801. net/sched/sch_netem.c +2 −3
  1802. net/sched/sch_sfb.c +1 −2
  1803. net/sched/sch_sfq.c +2 −3
  1804. net/sunrpc/auth_generic.c +16 −1
  1805. net/unix/af_unix.c +4 −15
  1806. scripts/checkpatch.pl +6 −0
  1807. scripts/kernel-doc +2 −1
  1808. scripts/mod/file2alias.c +1 −11
  1809. scripts/mod/modpost.c +9 −0
  1810. security/integrity/Kconfig +2 −2
  1811. security/integrity/Makefile +1 −1
  1812. security/integrity/ima/ima_audit.c +5 −3
  1813. security/integrity/ima/ima_policy.c +2 −1
  1814. security/integrity/integrity.h +2 −2
  1815. security/keys/encrypted-keys/encrypted.c +3 −3
  1816. security/keys/encrypted-keys/masterkey_trusted.c +3 −1
  1817. security/keys/gc.c +3 −1
  1818. security/keys/internal.h +1 −0
  1819. security/keys/key.c +1 −0
  1820. security/keys/keyring.c +15 −7
  1821. security/keys/trusted.c +2 −2
  1822. security/keys/user_defined.c +40 −3
  1823. security/lsm_audit.c +15 −12
  1824. security/tomoyo/util.c +3 −3
  1825. sound/atmel/abdac.c +1 −1
  1826. sound/atmel/ac97c.c +5 −5
  1827. sound/core/Kconfig +3 −10
  1828. sound/core/compress_offload.c +8 −5
  1829. sound/isa/sb/emu8000_patch.c +0 −1
  1830. sound/pci/au88x0/au88x0.c +7 −6
  1831. sound/pci/au88x0/au88x0.h +1 −0
  1832. sound/pci/au88x0/au88x0_pcm.c +1 −0
  1833. sound/pci/hda/alc880_quirks.c +12 −5
  1834. sound/pci/hda/alc882_quirks.c +10 −5
  1835. sound/pci/hda/hda_codec.c +1 −1
  1836. sound/pci/hda/hda_intel.c +5 −2
  1837. sound/pci/hda/hda_jack.c +15 −9
  1838. sound/pci/hda/patch_ca0132.c +19 −14
  1839. sound/pci/hda/patch_cirrus.c +4 −2
  1840. sound/pci/hda/patch_conexant.c +1 −1
  1841. sound/pci/hda/patch_realtek.c +114 −36
  1842. sound/pci/hda/patch_sigmatel.c +17 −8
  1843. sound/pci/hda/patch_via.c +132 −155
  1844. sound/pci/intel8x0.c +6 −0
  1845. sound/pci/oxygen/oxygen_mixer.c +14 −11
  1846. sound/pci/oxygen/xonar_wm87x6.c +1 −0
  1847. sound/pci/ymfpci/ymfpci.c +13 −8
  1848. sound/pci/ymfpci/ymfpci_main.c +14 −7
  1849. sound/soc/codecs/ak4642.c +16 −15
  1850. sound/soc/codecs/cs42l73.c +1 −1
  1851. sound/soc/codecs/sgtl5000.c +14 −5
  1852. sound/soc/codecs/tlv320aic32x4.c +51 −59
  1853. sound/soc/codecs/wm2000.c +13 −18
  1854. sound/soc/codecs/wm5100.c +14 −1
  1855. sound/soc/codecs/wm8958-dsp2.c +1 −1
  1856. sound/soc/codecs/wm8962.c +5 −5
  1857. sound/soc/codecs/wm8993.c +6 −0
  1858. sound/soc/codecs/wm8994.c +10 −6
  1859. sound/soc/codecs/wm8996.c +7 −2
  1860. sound/soc/codecs/wm8996.h +4 −0
  1861. sound/soc/codecs/wm_hubs.c +12 −6
  1862. sound/soc/ep93xx/ep93xx-pcm.c +2 −2
  1863. sound/soc/imx/imx-pcm-dma-mx2.c +10 −8
  1864. sound/soc/mxs/mxs-pcm.c +1 −1
  1865. sound/soc/mxs/mxs-saif.c +5 −0
  1866. sound/soc/samsung/dma.c +2 −2
  1867. sound/soc/samsung/neo1973_wm8753.c +1 −64
  1868. sound/soc/sh/fsi.c +1 −5
  1869. sound/soc/sh/siu_pcm.c +2 −2
  1870. sound/soc/soc-core.c +15 −0
  1871. sound/soc/soc-dapm.c +1 −1
  1872. sound/soc/txx9/txx9aclc.c +1 −1
  1873. sound/usb/caiaq/audio.c +4 −1
  1874. sound/usb/card.h +1 −0
  1875. sound/usb/format.c +1 −3
  1876. sound/usb/quirks-table.h +8 −0
  1877. sound/usb/quirks.c +5 −1
  1878. tools/perf/Makefile +2 −5
  1879. tools/perf/bench/mem-memcpy-x86-64-asm.S +6 −0
  1880. tools/perf/builtin-probe.c +0 −2
  1881. tools/perf/builtin-top.c +10 −3
  1882. tools/perf/util/event.c +1 −1
  1883. tools/perf/util/evsel.c +1 −0
  1884. tools/perf/util/header.c +1 −1
  1885. tools/perf/util/probe-event.c +0 −2
  1886. tools/perf/util/symbol.c +0 −1
  1887. tools/perf/util/trace-event-parse.c +1 −2
  1888. tools/perf/util/ui/browsers/hists.c +0 −2
  1889. tools/perf/util/ui/helpline.c +0 −1
  1890. tools/perf/util/util.h +0 −1
  1891. tools/power/x86/turbostat/turbostat.c +2 −0
  1892. virt/kvm/kvm_main.c +1 −1
Documentation/DocBook/device-drivers.tmpl+13−4
@@ -50,7 +50,9 @@ · 49 unmodified lines
5050
5151 <sect1><title>Delaying, scheduling, and timer routines</title>
5252 !Iinclude/linux/sched.h
53−!Ekernel/sched.c
53+!Ekernel/sched/core.c
54+!Ikernel/sched/cpupri.c
55+!Ikernel/sched/fair.c
5456 !Iinclude/linux/completion.h
5557 !Ekernel/timer.c
5658 </sect1>
@@ -100,9 +102,12 @@ X!Iinclude/linux/kobject.h · 43 unmodified lines
100102 !Iinclude/linux/device.h
101103 </sect1>
102104 <sect1><title>Device Drivers Base</title>
105+!Idrivers/base/init.c
103106 !Edrivers/base/driver.c
104107 !Edrivers/base/core.c
108+!Edrivers/base/syscore.c
105109 !Edrivers/base/class.c
110+!Idrivers/base/node.c
106111 !Edrivers/base/firmware_class.c
107112 !Edrivers/base/transport_class.c
108113 <!-- Cannot be included, because
@@ -111,13 +116,18 @@ X!Iinclude/linux/kobject.h · 2 unmodified lines
111116 exceed allowed 44 characters maximum
112117 X!Edrivers/base/attribute_container.c
113118 -->
114−!Edrivers/base/sys.c
119+!Edrivers/base/dd.c
115120 <!--
116121 X!Edrivers/base/interface.c
117122 -->
118123 !Iinclude/linux/platform_device.h
119124 !Edrivers/base/platform.c
120125 !Edrivers/base/bus.c
126+ </sect1>
127+ <sect1><title>Device Drivers DMA Management</title>
128+!Edrivers/base/dma-buf.c
129+!Edrivers/base/dma-coherent.c
130+!Edrivers/base/dma-mapping.c
121131 </sect1>
122132 <sect1><title>Device Drivers Power Management</title>
123133 !Edrivers/base/power/main.c
@@ -216,9 +226,8 @@ X!Isound/sound_firmware.c · 92 unmodified lines
216226
217227 <chapter id="uart16x50">
218228 <title>16x50 UART Driver</title>
219−!Iinclude/linux/serial_core.h
220229 !Edrivers/tty/serial/serial_core.c
221−!Edrivers/tty/serial/8250.c
230+!Edrivers/tty/serial/8250/8250.c
222231 </chapter>
223232
224233 <chapter id="fbdev">
Documentation/DocBook/deviceiobook.tmpl+1−1
@@ -317,7 +317,7 @@ CPU B: spin_unlock_irqrestore(&amp;dev_lock, flags) · 316 unmodified lines
317317 <chapter id="pubfunctions">
318318 <title>Public Functions Provided</title>
319319 !Iarch/x86/include/asm/io.h
320−!Elib/iomap.c
320+!Elib/pci_iomap.c
321321 </chapter>
322322
323323 </book>
Documentation/DocBook/media/dvb/dvbproperty.xml+5−7
@@ -163,14 +163,16 @@ get/set up to 64 properties. The actual meaning of each property is described on · 162 unmodified lines
163163 <section id="DTV-FREQUENCY">
164164 <title><constant>DTV_FREQUENCY</constant></title>
165165
166− <para>Central frequency of the channel, in HZ.</para>
166+ <para>Central frequency of the channel.</para>
167167
168168 <para>Notes:</para>
169− <para>1)For ISDB-T, the channels are usually transmitted with an offset of 143kHz.
169+ <para>1)For satellital delivery systems, it is measured in kHz.
170+ For the other ones, it is measured in Hz.</para>
171+ <para>2)For ISDB-T, the channels are usually transmitted with an offset of 143kHz.
170172 E.g. a valid frequncy could be 474143 kHz. The stepping is bound to the bandwidth of
171173 the channel which is 6MHz.</para>
172174
173− <para>2)As in ISDB-Tsb the channel consists of only one or three segments the
175+ <para>3)As in ISDB-Tsb the channel consists of only one or three segments the
174176 frequency step is 429kHz, 3*429 respectively. As for ISDB-T the
175177 central frequency of the channel is expected.</para>
176178 </section>
@@ -735,14 +737,10 @@ typedef enum fe_hierarchy { · 558 unmodified lines
735737 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
736738 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
737739 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
738− <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
739740 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
740741 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
741− <listitem><para><link linkend="DTV-CODE-RATE-HP"><constant>DTV_CODE_RATE_HP</constant></link></para></listitem>
742− <listitem><para><link linkend="DTV-CODE-RATE-LP"><constant>DTV_CODE_RATE_LP</constant></link></para></listitem>
743742 <listitem><para><link linkend="DTV-GUARD-INTERVAL"><constant>DTV_GUARD_INTERVAL</constant></link></para></listitem>
744743 <listitem><para><link linkend="DTV-TRANSMISSION-MODE"><constant>DTV_TRANSMISSION_MODE</constant></link></para></listitem>
745− <listitem><para><link linkend="DTV-HIERARCHY"><constant>DTV_HIERARCHY</constant></link></para></listitem>
746744 <listitem><para><link linkend="DTV-ISDBT-LAYER-ENABLED"><constant>DTV_ISDBT_LAYER_ENABLED</constant></link></para></listitem>
747745 <listitem><para><link linkend="DTV-ISDBT-PARTIAL-RECEPTION"><constant>DTV_ISDBT_PARTIAL_RECEPTION</constant></link></para></listitem>
748746 <listitem><para><link linkend="DTV-ISDBT-SOUND-BROADCASTING"><constant>DTV_ISDBT_SOUND_BROADCASTING</constant></link></para></listitem>
Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml+13−5
@@ -183,7 +183,12 @@ applications must set the array to zero.</entry> · 182 unmodified lines
183183 <entry>__u32</entry>
184184 <entry><structfield>ctrl_class</structfield></entry>
185185 <entry>The control class to which all controls belong, see
186−<xref linkend="ctrl-class" />.</entry>
186+<xref linkend="ctrl-class" />. Drivers that use a kernel framework for handling
187+controls will also accept a value of 0 here, meaning that the controls can
188+belong to any control class. Whether drivers support this can be tested by setting
189+<structfield>ctrl_class</structfield> to 0 and calling <constant>VIDIOC_TRY_EXT_CTRLS</constant>
190+with a <structfield>count</structfield> of 0. If that succeeds, then the driver
191+supports this feature.</entry>
187192 </row>
188193 <row>
189194 <entry>__u32</entry>
@@ -194,10 +199,13 @@ also be zero.</entry> · 4 unmodified lines
194199 <row>
195200 <entry>__u32</entry>
196201 <entry><structfield>error_idx</structfield></entry>
197− <entry>Set by the driver in case of an error. It is the
198−index of the control causing the error or equal to 'count' when the
199−error is not associated with a particular control. Undefined when the
200−ioctl returns 0 (success).</entry>
202+ <entry>Set by the driver in case of an error. If it is equal
203+to <structfield>count</structfield>, then no actual changes were made to
204+controls. In other words, the error was not associated with setting a particular
205+control. If it is another value, then only the controls up to <structfield>error_idx-1</structfield>
206+were modified and control <structfield>error_idx</structfield> is the one that
207+caused the error. The <structfield>error_idx</structfield> value is undefined
208+if the ioctl returned 0 (success).</entry>
201209 </row>
202210 <row>
203211 <entry>__u32</entry>
Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml+14−9
@@ -364,15 +364,20 @@ capability and it is cleared otherwise.</entry> · 363 unmodified lines
364364 <row>
365365 <entry><constant>V4L2_FBUF_FLAG_OVERLAY</constant></entry>
366366 <entry>0x0002</entry>
367− <entry>The frame buffer is an overlay surface the same
368−size as the capture. [?]</entry>
369− </row>
370− <row>
371− <entry spanname="hspan">The purpose of
372−<constant>V4L2_FBUF_FLAG_OVERLAY</constant> was never quite clear.
373−Most drivers seem to ignore this flag. For compatibility with the
374−<wordasword>bttv</wordasword> driver applications should set the
375−<constant>V4L2_FBUF_FLAG_OVERLAY</constant> flag.</entry>
367+ <entry>If this flag is set for a video capture device, then the
368+driver will set the initial overlay size to cover the full framebuffer size,
369+otherwise the existing overlay size (as set by &VIDIOC-S-FMT;) will be used.
370+
371+Only one video capture driver (bttv) supports this flag. The use of this flag
372+for capture devices is deprecated. There is no way to detect which drivers
373+support this flag, so the only reliable method of setting the overlay size is
374+through &VIDIOC-S-FMT;.
375+
376+If this flag is set for a video output device, then the video output overlay
377+window is relative to the top-left corner of the framebuffer and restricted
378+to the size of the framebuffer. If it is cleared, then the video output
379+overlay window is relative to the video output display.
380+ </entry>
376381 </row>
377382 <row>
378383 <entry><constant>V4L2_FBUF_FLAG_CHROMAKEY</constant></entry>
Documentation/DocBook/media/v4l/vidioc-g-frequency.xml+5−2
@@ -98,8 +98,11 @@ the &v4l2-output; <structfield>modulator</structfield> field and the · 97 unmodified lines
9898 <entry>&v4l2-tuner-type;</entry>
9999 <entry><structfield>type</structfield></entry>
100100 <entry>The tuner type. This is the same value as in the
101−&v4l2-tuner; <structfield>type</structfield> field. The field is not
102−applicable to modulators, &ie; ignored by drivers.</entry>
101+&v4l2-tuner; <structfield>type</structfield> field. The type must be set
102+to <constant>V4L2_TUNER_RADIO</constant> for <filename>/dev/radioX</filename>
103+device nodes, and to <constant>V4L2_TUNER_ANALOG_TV</constant>
104+for all others. The field is not applicable to modulators, &ie; ignored
105+by drivers.</entry>
103106 </row>
104107 <row>
105108 <entry>__u32</entry>
Documentation/DocBook/media/v4l/vidioc-g-input.xml+2−2
@@ -61,8 +61,8 @@ desired input in an integer and call the · 60 unmodified lines
6161 <constant>VIDIOC_S_INPUT</constant> ioctl with a pointer to this
6262 integer. Side effects are possible. For example inputs may support
6363 different video standards, so the driver may implicitly switch the
64−current standard. It is good practice to select an input before
65−querying or negotiating any other parameters.</para>
64+current standard. Because of these possible side effects applications
65+must select an input before querying or negotiating any other parameters.</para>
6666
6767 <para>Information about video inputs is available using the
6868 &VIDIOC-ENUMINPUT; ioctl.</para>
Documentation/DocBook/media/v4l/vidioc-g-output.xml+3−2
@@ -61,8 +61,9 @@ desired output in an integer and call the · 60 unmodified lines
6161 <constant>VIDIOC_S_OUTPUT</constant> ioctl with a pointer to this integer.
6262 Side effects are possible. For example outputs may support different
6363 video standards, so the driver may implicitly switch the current
64−standard. It is good practice to select an output before querying or
65−negotiating any other parameters.</para>
64+standard.
65+standard. Because of these possible side effects applications
66+must select an output before querying or negotiating any other parameters.</para>
6667
6768 <para>Information about video outputs is available using the
6869 &VIDIOC-ENUMOUTPUT; ioctl.</para>
Documentation/acpi/apei/einj.txt+44−11
@@ -47,20 +47,53 @@ directory apei/einj. The following files are provided. · 46 unmodified lines
4747
4848 - param1
4949 This file is used to set the first error parameter value. Effect of
50− parameter depends on error_type specified. For memory error, this is
51− physical memory address. Only available if param_extension module
52− parameter is specified.
50+ parameter depends on error_type specified.
5351
5452 - param2
5553 This file is used to set the second error parameter value. Effect of
56− parameter depends on error_type specified. For memory error, this is
57− physical memory address mask. Only available if param_extension
58− module parameter is specified.
54+ parameter depends on error_type specified.
55+
56+BIOS versions based in the ACPI 4.0 specification have limited options
57+to control where the errors are injected. Your BIOS may support an
58+extension (enabled with the param_extension=1 module parameter, or
59+boot command line einj.param_extension=1). This allows the address
60+and mask for memory injections to be specified by the param1 and
61+param2 files in apei/einj.
62+
63+BIOS versions using the ACPI 5.0 specification have more control over
64+the target of the injection. For processor related errors (type 0x1,
65+0x2 and 0x4) the APICID of the target should be provided using the
66+param1 file in apei/einj. For memory errors (type 0x8, 0x10 and 0x20)
67+the address is set using param1 with a mask in param2 (0x0 is equivalent
68+to all ones). For PCI express errors (type 0x40, 0x80 and 0x100) the
69+segment, bus, device and function are specified using param1:
70+
71+ 31 24 23 16 15 11 10 8 7 0
72+ +-------------------------------------------------+
73+ | segment | bus | device | function | reserved |
74+ +-------------------------------------------------+
75+
76+An ACPI 5.0 BIOS may also allow vendor specific errors to be injected.
77+In this case a file named vendor will contain identifying information
78+from the BIOS that hopefully will allow an application wishing to use
79+the vendor specific extension to tell that they are running on a BIOS
80+that supports it. All vendor extensions have the 0x80000000 bit set in
81+error_type. A file vendor_flags controls the interpretation of param1
82+and param2 (1 = PROCESSOR, 2 = MEMORY, 4 = PCI). See your BIOS vendor
83+documentation for details (and expect changes to this API if vendors
84+creativity in using this feature expands beyond our expectations).
85+
86+Example:
87+# cd /sys/kernel/debug/apei/einj
88+# cat available_error_type # See which errors can be injected
89+0x00000002 Processor Uncorrectable non-fatal
90+0x00000008 Memory Correctable
91+0x00000010 Memory Uncorrectable non-fatal
92+# echo 0x12345000 > param1 # Set memory address for injection
93+# echo 0xfffffffffffff000 > param2 # Mask - anywhere in this page
94+# echo 0x8 > error_type # Choose correctable memory error
95+# echo 1 > error_inject # Inject now
5996
60−Injecting parameter support is a BIOS version specific extension, that
61−is, it only works on some BIOS version. If you want to use it, please
62−make sure your BIOS version has the proper support and specify
63−"param_extension=y" in module parameter.
6497
6598 For more information about EINJ, please refer to ACPI specification
66−version 4.0, section 17.5.
99+version 4.0, section 17.5 and ACPI 5.0, section 18.6.
Documentation/devices.txt+3−0
@@ -447,6 +447,9 @@ Your cooperation is appreciated. · 446 unmodified lines
447447 234 = /dev/btrfs-control Btrfs control device
448448 235 = /dev/autofs Autofs control device
449449 236 = /dev/mapper/control Device-Mapper control device
450+ 237 = /dev/loop-control Loopback control device
451+ 238 = /dev/vhost-net Host kernel accelerator for virtio net
452+
450453 240-254 Reserved for local use
451454 255 Reserved for MISC_DYNAMIC_MINOR
452455
Documentation/devicetree/bindings/dma/atmel-dma.txt+14−0
@@ -0,0 +1,14 @@
1+* Atmel Direct Memory Access Controller (DMA)
2+
3+Required properties:
4+- compatible: Should be "atmel,<chip>-dma"
5+- reg: Should contain DMA registers location and length
6+- interrupts: Should contain DMA interrupt
7+
8+Examples:
9+
10+dma@ffffec00 {
11+ compatible = "atmel,at91sam9g45-dma";
12+ reg = <0xffffec00 0x200>;
13+ interrupts = <21>;
14+};
Documentation/devicetree/bindings/i2c/omap-i2c.txt+30−0
@@ -0,0 +1,30 @@
1+I2C for OMAP platforms
2+
3+Required properties :
4+- compatible : Must be "ti,omap3-i2c" or "ti,omap4-i2c"
5+- ti,hwmods : Must be "i2c<n>", n being the instance number (1-based)
6+- #address-cells = <1>;
7+- #size-cells = <0>;
8+
9+Recommended properties :
10+- clock-frequency : Desired I2C bus clock frequency in Hz. Otherwise
11+ the default 100 kHz frequency will be used.
12+
13+Optional properties:
14+- Child nodes conforming to i2c bus binding
15+
16+Note: Current implementation will fetch base address, irq and dma
17+from omap hwmod data base during device registration.
18+Future plan is to migrate hwmod data base contents into device tree
19+blob so that, all the required data will be used from device tree dts
20+file.
21+
22+Examples :
23+
24+i2c1: i2c@0 {
25+ compatible = "ti,omap3-i2c";
26+ #address-cells = <1>;
27+ #size-cells = <0>;
28+ ti,hwmods = "i2c1";
29+ clock-frequency = <400000>;
30+};
Documentation/dmaengine.txt+8−0
@@ -75,6 +75,10 @@ The slave DMA usage consists of following steps: · 74 unmodified lines
7575 slave_sg - DMA a list of scatter gather buffers from/to a peripheral
7676 dma_cyclic - Perform a cyclic DMA operation from/to a peripheral till the
7777 operation is explicitly stopped.
78+ interleaved_dma - This is common to Slave as well as M2M clients. For slave
79+ address of devices' fifo could be already known to the driver.
80+ Various types of operations could be expressed by setting
81+ appropriate values to the 'dma_interleaved_template' members.
7882
7983 A non-NULL return of this transfer API represents a "descriptor" for
8084 the given transaction.
@@ -89,6 +93,10 @@ The slave DMA usage consists of following steps: · 8 unmodified lines
8993 struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len,
9094 size_t period_len, enum dma_data_direction direction);
9195
96+ struct dma_async_tx_descriptor *(*device_prep_interleaved_dma)(
97+ struct dma_chan *chan, struct dma_interleaved_template *xt,
98+ unsigned long flags);
99+
92100 The peripheral driver is expected to have mapped the scatterlist for
93101 the DMA operation prior to calling device_prep_slave_sg, and must
94102 keep the scatterlist mapped until the DMA operation has completed.
Documentation/driver-model/devres.txt+4−0
@@ -233,6 +233,10 @@ certainly invest a bit more effort into libata core layer). · 232 unmodified lines
233233 6. List of managed interfaces
234234 -----------------------------
235235
236+MEM
237+ devm_kzalloc()
238+ devm_kfree()
239+
236240 IO region
237241 devm_request_region()
238242 devm_request_mem_region()
Documentation/feature-removal-schedule.txt+14−11
@@ -439,17 +439,6 @@ Who: Jean Delvare <khali@linux-fr.org> · 438 unmodified lines
439439
440440 ----------------------------
441441
442−What: For VIDIOC_S_FREQUENCY the type field must match the device node's type.
443− If not, return -EINVAL.
444−When: 3.2
445−Why: It makes no sense to switch the tuner to radio mode by calling
446− VIDIOC_S_FREQUENCY on a video node, or to switch the tuner to tv mode by
447− calling VIDIOC_S_FREQUENCY on a radio node. This is the first step of a
448− move to more consistent handling of tv and radio tuners.
449−Who: Hans Verkuil <hans.verkuil@cisco.com>
450−
451−----------------------------
452−
453442 What: Opening a radio device node will no longer automatically switch the
454443 tuner mode from tv to radio.
455444 When: 3.3
@@ -521,3 +510,17 @@ Why: The pci_scan_bus_parented() interface creates a new root bus. The · 65 unmodified lines
521510 convert to using pci_scan_root_bus() so they can supply a list of
522511 bus resources when the bus is created.
523512 Who: Bjorn Helgaas <bhelgaas@google.com>
513+
514+----------------------------
515+
516+What: The CAP9 SoC family will be removed
517+When: 3.4
518+Files: arch/arm/mach-at91/at91cap9.c
519+ arch/arm/mach-at91/at91cap9_devices.c
520+ arch/arm/mach-at91/include/mach/at91cap9.h
521+ arch/arm/mach-at91/include/mach/at91cap9_matrix.h
522+ arch/arm/mach-at91/include/mach/at91cap9_ddrsdr.h
523+ arch/arm/mach-at91/board-cap9adk.c
524+Why: The code is not actively maintained and platforms are now hard to find.
525+Who: Nicolas Ferre <nicolas.ferre@atmel.com>
526+ Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Documentation/input/event-codes.txt+64−8
@@ -17,11 +17,11 @@ reports supported by a device are also provided by sysfs in · 16 unmodified lines
1717 class/input/event*/device/capabilities/, and the properties of a device are
1818 provided in class/input/event*/device/properties.
1919
20−Types:
21−==========
22−Types are groupings of codes under a logical input construct. Each type has a
23−set of applicable codes to be used in generating events. See the Codes section
24−for details on valid codes for each type.
20+Event types:
21+===========
22+Event types are groupings of codes under a logical input construct. Each
23+type has a set of applicable codes to be used in generating events. See the
24+Codes section for details on valid codes for each type.
2525
2626 * EV_SYN:
2727 - Used as markers to separate events. Events may be separated in time or in
@@ -63,9 +63,9 @@ for details on valid codes for each type. · 35 unmodified lines
6363 * EV_FF_STATUS:
6464 - Used to receive force feedback device status.
6565
66−Codes:
67−==========
68−Codes define the precise type of event.
66+Event codes:
67+===========
68+Event codes define the precise type of event.
6969
7070 EV_SYN:
7171 ----------
@@ -220,6 +220,56 @@ EV_PWR: · 148 unmodified lines
220220 EV_PWR events are a special type of event used specifically for power
221221 mangement. Its usage is not well defined. To be addressed later.
222222
223+Device properties:
224+=================
225+Normally, userspace sets up an input device based on the data it emits,
226+i.e., the event types. In the case of two devices emitting the same event
227+types, additional information can be provided in the form of device
228+properties.
229+
230+INPUT_PROP_DIRECT + INPUT_PROP_POINTER:
231+--------------------------------------
232+The INPUT_PROP_DIRECT property indicates that device coordinates should be
233+directly mapped to screen coordinates (not taking into account trivial
234+transformations, such as scaling, flipping and rotating). Non-direct input
235+devices require non-trivial transformation, such as absolute to relative
236+transformation for touchpads. Typical direct input devices: touchscreens,
237+drawing tablets; non-direct devices: touchpads, mice.
238+
239+The INPUT_PROP_POINTER property indicates that the device is not transposed
240+on the screen and thus requires use of an on-screen pointer to trace user's
241+movements. Typical pointer devices: touchpads, tablets, mice; non-pointer
242+device: touchscreen.
243+
244+If neither INPUT_PROP_DIRECT or INPUT_PROP_POINTER are set, the property is
245+considered undefined and the device type should be deduced in the
246+traditional way, using emitted event types.
247+
248+INPUT_PROP_BUTTONPAD:
249+--------------------
250+For touchpads where the button is placed beneath the surface, such that
251+pressing down on the pad causes a button click, this property should be
252+set. Common in clickpad notebooks and macbooks from 2009 and onwards.
253+
254+Originally, the buttonpad property was coded into the bcm5974 driver
255+version field under the name integrated button. For backwards
256+compatibility, both methods need to be checked in userspace.
257+
258+INPUT_PROP_SEMI_MT:
259+------------------
260+Some touchpads, most common between 2008 and 2011, can detect the presence
261+of multiple contacts without resolving the individual positions; only the
262+number of contacts and a rectangular shape is known. For such
263+touchpads, the semi-mt property should be set.
264+
265+Depending on the device, the rectangle may enclose all touches, like a
266+bounding box, or just some of them, for instance the two most recent
267+touches. The diversity makes the rectangle of limited use, but some
268+gestures can normally be extracted from it.
269+
270+If INPUT_PROP_SEMI_MT is not set, the device is assumed to be a true MT
271+device.
272+
223273 Guidelines:
224274 ==========
225275 The guidelines below ensure proper single-touch and multi-finger functionality.
@@ -240,6 +290,8 @@ used to report when a touch is active on the screen. · 14 unmodified lines
240290 BTN_{MOUSE,LEFT,MIDDLE,RIGHT} must not be reported as the result of touch
241291 contact. BTN_TOOL_<name> events should be reported where possible.
242292
293+For new hardware, INPUT_PROP_DIRECT should be set.
294+
243295 Trackpads:
244296 ----------
245297 Legacy trackpads that only provide relative position information must report
@@ -250,6 +302,8 @@ location of the touch. BTN_TOUCH should be used to report when a touch is active · 4 unmodified lines
250302 on the trackpad. Where multi-finger support is available, BTN_TOOL_<name> should
251303 be used to report the number of touches active on the trackpad.
252304
305+For new hardware, INPUT_PROP_POINTER should be set.
306+
253307 Tablets:
254308 ----------
255309 BTN_TOOL_<name> events must be reported when a stylus or other tool is active on
@@ -260,3 +314,5 @@ button may be used for buttons on the tablet except BTN_{MOUSE,LEFT}. · 4 unmodified lines
260314 BTN_{0,1,2,etc} are good generic codes for unlabeled buttons. Do not use
261315 meaningful buttons, like BTN_FORWARD, unless the button is labeled for that
262316 purpose on the device.
317+
318+For new hardware, both INPUT_PROP_DIRECT and INPUT_PROP_POINTER should be set.
Documentation/ioctl/ioctl-number.txt+1−0
@@ -149,6 +149,7 @@ Code Seq#(hex) Include File Comments · 148 unmodified lines
149149 'M' 01-03 drivers/scsi/megaraid/megaraid_sas.h
150150 'M' 00-0F drivers/video/fsl-diu-fb.h conflict!
151151 'N' 00-1F drivers/usb/scanner.h
152+'N' 40-7F drivers/block/nvme.c
152153 'O' 00-06 mtd/ubi-user.h UBI
153154 'P' all linux/soundcard.h conflict!
154155 'P' 60-6F sound/sscape_ioctl.h conflict!
Documentation/kernel-parameters.txt+5−0
@@ -1059,6 +1059,11 @@ bytes respectively. Such letter suffixes can also be entirely omitted. · 1058 unmodified lines
10591059 By default, super page will be supported if Intel IOMMU
10601060 has the capability. With this option, super page will
10611061 not be supported.
1062+
1063+ intel_idle.max_cstate= [KNL,HW,ACPI,X86]
1064+ 0 disables intel_idle and fall back on acpi_idle.
1065+ 1 to 6 specify maximum depth of C-state.
1066+
10621067 intremap= [X86-64, Intel-IOMMU]
10631068 on enable Interrupt Remapping (default)
10641069 off disable Interrupt Remapping
Documentation/pinctrl.txt+8−9
@@ -857,42 +857,41 @@ case), we define a mapping like this: · 856 unmodified lines
857857
858858 ...
859859 {
860− .name "2bit"
860+ .name = "2bit"
861861 .ctrl_dev_name = "pinctrl-foo",
862862 .function = "mmc0",
863863 .group = "mmc0_1_grp",
864864 .dev_name = "foo-mmc.0",
865865 },
866866 {
867− .name "4bit"
867+ .name = "4bit"
868868 .ctrl_dev_name = "pinctrl-foo",
869869 .function = "mmc0",
870870 .group = "mmc0_1_grp",
871871 .dev_name = "foo-mmc.0",
872872 },
873873 {
874− .name "4bit"
874+ .name = "4bit"
875875 .ctrl_dev_name = "pinctrl-foo",
876876 .function = "mmc0",
877877 .group = "mmc0_2_grp",
878878 .dev_name = "foo-mmc.0",
879879 },
880880 {
881− .name "8bit"
881+ .name = "8bit"
882882 .ctrl_dev_name = "pinctrl-foo",
883− .function = "mmc0",
884883 .group = "mmc0_1_grp",
885884 .dev_name = "foo-mmc.0",
886885 },
887886 {
888− .name "8bit"
887+ .name = "8bit"
889888 .ctrl_dev_name = "pinctrl-foo",
890889 .function = "mmc0",
891890 .group = "mmc0_2_grp",
892891 .dev_name = "foo-mmc.0",
893892 },
894893 {
895− .name "8bit"
894+ .name = "8bit"
896895 .ctrl_dev_name = "pinctrl-foo",
897896 .function = "mmc0",
898897 .group = "mmc0_3_grp",
@@ -995,7 +994,7 @@ This is enabled by simply setting the .hog_on_boot field in the map to true, · 96 unmodified lines
995994 like this:
996995
997996 {
998− .name "POWERMAP"
997+ .name = "POWERMAP"
999998 .ctrl_dev_name = "pinctrl-foo",
1000999 .function = "power_func",
10011000 .hog_on_boot = true,
@@ -1025,7 +1024,7 @@ it, disables and releases it, and muxes it in on the pins defined by group B: · 23 unmodified lines
10251024
10261025 foo_switch()
10271026 {
1028− struct pinmux pmx;
1027+ struct pinmux *pmx;
10291028
10301029 /* Enable on position A */
10311030 pmx = pinmux_get(&device, "spi0-pos-A");
Documentation/power/basic-pm-debugging.txt+1−1
@@ -15,7 +15,7 @@ test at least a couple of times in a row for confidence. [This is necessary, · 14 unmodified lines
1515 because some problems only show up on a second attempt at suspending and
1616 resuming the system.] Moreover, hibernating in the "reboot" and "shutdown"
1717 modes causes the PM core to skip some platform-related callbacks which on ACPI
18−systems might be necessary to make hibernation work. Thus, if you machine fails
18+systems might be necessary to make hibernation work. Thus, if your machine fails
1919 to hibernate or resume in the "reboot" mode, you should try the "platform" mode:
2020
2121 # echo platform > /sys/power/disk
Documentation/power/freezing-of-tasks.txt+4−4
@@ -120,10 +120,10 @@ So in practice, the 'at all' may become a 'why freeze kernel threads?' and · 119 unmodified lines
120120 freezing user threads I don't find really objectionable."
121121
122122 Still, there are kernel threads that may want to be freezable. For example, if
123−a kernel that belongs to a device driver accesses the device directly, it in
124−principle needs to know when the device is suspended, so that it doesn't try to
125−access it at that time. However, if the kernel thread is freezable, it will be
126−frozen before the driver's .suspend() callback is executed and it will be
123+a kernel thread that belongs to a device driver accesses the device directly, it
124+in principle needs to know when the device is suspended, so that it doesn't try
125+to access it at that time. However, if the kernel thread is freezable, it will
126+be frozen before the driver's .suspend() callback is executed and it will be
127127 thawed after the driver's .resume() callback has run, so it won't be accessing
128128 the device while it's suspended.
129129
Documentation/scsi/ChangeLog.megaraid_sas+10−0
@@ -1,3 +1,13 @@
1+Release Date : Fri. Jan 6, 2012 17:00:00 PST 2010 -
2+ (emaild-id:megaraidlinux@lsi.com)
3+ Adam Radford
4+Current Version : 00.00.06.14-rc1
5+Old Version : 00.00.06.12-rc1
6+ 1. Fix reglockFlags for degraded raid5/6 for MR 9360/9380.
7+ 2. Mask off flags in ioctl path to prevent memory scribble with older
8+ MegaCLI versions.
9+ 3. Remove poll_mode_io module paramater, sysfs node, and associated code.
10+-------------------------------------------------------------------------------
111 Release Date : Wed. Oct 5, 2011 17:00:00 PST 2010 -
212 (emaild-id:megaraidlinux@lsi.com)
313 Adam Radford
Documentation/scsi/LICENSE.qla4xxx+1−22
@@ -1,32 +1,11 @@
11 Copyright (c) 2003-2011 QLogic Corporation
2−QLogic Linux iSCSI HBA Driver
2+QLogic Linux iSCSI Driver
33
44 This program includes a device driver for Linux 3.x.
55 You may modify and redistribute the device driver code under the
66 GNU General Public License (a copy of which is attached hereto as
77 Exhibit A) published by the Free Software Foundation (version 2).
88
9−REGARDLESS OF WHAT LICENSING MECHANISM IS USED OR APPLICABLE,
10−THIS PROGRAM IS PROVIDED BY QLOGIC CORPORATION "AS IS'' AND ANY
11−EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
12−IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
13−PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
14−BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
15−EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
16−TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
17−DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
18−ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
19−OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
20−OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
21−POSSIBILITY OF SUCH DAMAGE.
22−
23−USER ACKNOWLEDGES AND AGREES THAT USE OF THIS PROGRAM WILL NOT
24−CREATE OR GIVE GROUNDS FOR A LICENSE BY IMPLICATION, ESTOPPEL, OR
25−OTHERWISE IN ANY INTELLECTUAL PROPERTY RIGHTS (PATENT, COPYRIGHT,
26−TRADE SECRET, MASK WORK, OR OTHER PROPRIETARY RIGHT) EMBODIED IN
27−ANY OTHER QLOGIC HARDWARE OR SOFTWARE EITHER SOLELY OR IN
28−COMBINATION WITH THIS PROGRAM.
29−
309
3110 EXHIBIT A
3211
Documentation/stable_kernel_rules.txt+2−1
@@ -25,7 +25,8 @@ Procedure for submitting patches to the -stable tree: · 24 unmodified lines
2525
2626 - Send the patch, after verifying that it follows the above rules, to
2727 stable@vger.kernel.org. You must note the upstream commit ID in the
28− changelog of your submission.
28+ changelog of your submission, as well as the kernel version you wish
29+ it to be applied to.
2930 - To have the patch automatically included in the stable tree, add the tag
3031 Cc: stable@vger.kernel.org
3132 in the sign-off area. Once the patch is merged it will be applied to
Documentation/sysctl/kernel.txt+2−0
@@ -601,6 +601,8 @@ can be ORed together: · 600 unmodified lines
601601 instead of using the one provided by the hardware.
602602 512 - A kernel warning has occurred.
603603 1024 - A module from drivers/staging was loaded.
604+2048 - The system is working around a severe firmware bug.
605+4096 - An out-of-tree module has been loaded.
604606
605607 ==============================================================
606608
Documentation/target/tcm_mod_builder.py+15−45
@@ -230,14 +230,9 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 229 unmodified lines
230230 buf += "#include <linux/ctype.h>\n"
231231 buf += "#include <asm/unaligned.h>\n\n"
232232 buf += "#include <target/target_core_base.h>\n"
233− buf += "#include <target/target_core_transport.h>\n"
234− buf += "#include <target/target_core_fabric_ops.h>\n"
233+ buf += "#include <target/target_core_fabric.h>\n"
235234 buf += "#include <target/target_core_fabric_configfs.h>\n"
236− buf += "#include <target/target_core_fabric_lib.h>\n"
237− buf += "#include <target/target_core_device.h>\n"
238− buf += "#include <target/target_core_tpg.h>\n"
239235 buf += "#include <target/target_core_configfs.h>\n"
240− buf += "#include <target/target_core_base.h>\n"
241236 buf += "#include <target/configfs_macros.h>\n\n"
242237 buf += "#include \"" + fabric_mod_name + "_base.h\"\n"
243238 buf += "#include \"" + fabric_mod_name + "_fabric.h\"\n\n"
@@ -260,7 +255,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 16 unmodified lines
260255 buf += " /* " + fabric_mod_name + "_parse_wwn(name, &wwpn, 1) < 0)\n"
261256 buf += " return ERR_PTR(-EINVAL); */\n"
262257 buf += " se_nacl_new = " + fabric_mod_name + "_alloc_fabric_acl(se_tpg);\n"
263− buf += " if (!(se_nacl_new))\n"
258+ buf += " if (!se_nacl_new)\n"
264259 buf += " return ERR_PTR(-ENOMEM);\n"
265260 buf += "//#warning FIXME: Hardcoded nexus depth in " + fabric_mod_name + "_make_nodeacl()\n"
266261 buf += " nexus_depth = 1;\n"
@@ -308,7 +303,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 41 unmodified lines
308303 buf += " if (strict_strtoul(name + 5, 10, &tpgt) || tpgt > UINT_MAX)\n"
309304 buf += " return ERR_PTR(-EINVAL);\n\n"
310305 buf += " tpg = kzalloc(sizeof(struct " + fabric_mod_name + "_tpg), GFP_KERNEL);\n"
311− buf += " if (!(tpg)) {\n"
306+ buf += " if (!tpg) {\n"
312307 buf += " printk(KERN_ERR \"Unable to allocate struct " + fabric_mod_name + "_tpg\");\n"
313308 buf += " return ERR_PTR(-ENOMEM);\n"
314309 buf += " }\n"
@@ -344,7 +339,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 29 unmodified lines
344339 buf += " /* if (" + fabric_mod_name + "_parse_wwn(name, &wwpn, 1) < 0)\n"
345340 buf += " return ERR_PTR(-EINVAL); */\n\n"
346341 buf += " " + fabric_mod_port + " = kzalloc(sizeof(struct " + fabric_mod_name + "_" + fabric_mod_port + "), GFP_KERNEL);\n"
347− buf += " if (!(" + fabric_mod_port + ")) {\n"
342+ buf += " if (!" + fabric_mod_port + ") {\n"
348343 buf += " printk(KERN_ERR \"Unable to allocate struct " + fabric_mod_name + "_" + fabric_mod_port + "\");\n"
349344 buf += " return ERR_PTR(-ENOMEM);\n"
350345 buf += " }\n"
@@ -352,7 +347,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 1 unmodified line
352347 if proto_ident == "FC" or proto_ident == "SAS":
353348 buf += " " + fabric_mod_port + "->" + fabric_mod_port + "_wwpn = wwpn;\n"
354349
355− buf += " /* " + fabric_mod_name + "_format_wwn(&" + fabric_mod_port + "->" + fabric_mod_port + "_name[0], " + fabric_mod_name.upper() + "__NAMELEN, wwpn); */\n\n"
350+ buf += " /* " + fabric_mod_name + "_format_wwn(&" + fabric_mod_port + "->" + fabric_mod_port + "_name[0], " + fabric_mod_name.upper() + "_NAMELEN, wwpn); */\n\n"
356351 buf += " return &" + fabric_mod_port + "->" + fabric_mod_port + "_wwn;\n"
357352 buf += "}\n\n"
358353 buf += "static void " + fabric_mod_name + "_drop_" + fabric_mod_port + "(struct se_wwn *wwn)\n"
@@ -391,8 +386,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 32 unmodified lines
391386 buf += " .tpg_alloc_fabric_acl = " + fabric_mod_name + "_alloc_fabric_acl,\n"
392387 buf += " .tpg_release_fabric_acl = " + fabric_mod_name + "_release_fabric_acl,\n"
393388 buf += " .tpg_get_inst_index = " + fabric_mod_name + "_tpg_get_inst_index,\n"
394− buf += " .release_cmd_to_pool = " + fabric_mod_name + "_release_cmd,\n"
395− buf += " .release_cmd_direct = " + fabric_mod_name + "_release_cmd,\n"
389+ buf += " .release_cmd = " + fabric_mod_name + "_release_cmd,\n"
396390 buf += " .shutdown_session = " + fabric_mod_name + "_shutdown_session,\n"
397391 buf += " .close_session = " + fabric_mod_name + "_close_session,\n"
398392 buf += " .stop_session = " + fabric_mod_name + "_stop_session,\n"
@@ -405,14 +399,12 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 6 unmodified lines
405399 buf += " .set_default_node_attributes = " + fabric_mod_name + "_set_default_node_attrs,\n"
406400 buf += " .get_task_tag = " + fabric_mod_name + "_get_task_tag,\n"
407401 buf += " .get_cmd_state = " + fabric_mod_name + "_get_cmd_state,\n"
408− buf += " .new_cmd_failure = " + fabric_mod_name + "_new_cmd_failure,\n"
409402 buf += " .queue_data_in = " + fabric_mod_name + "_queue_data_in,\n"
410403 buf += " .queue_status = " + fabric_mod_name + "_queue_status,\n"
411404 buf += " .queue_tm_rsp = " + fabric_mod_name + "_queue_tm_rsp,\n"
412405 buf += " .get_fabric_sense_len = " + fabric_mod_name + "_get_fabric_sense_len,\n"
413406 buf += " .set_fabric_sense_len = " + fabric_mod_name + "_set_fabric_sense_len,\n"
414407 buf += " .is_state_remove = " + fabric_mod_name + "_is_state_remove,\n"
415− buf += " .pack_lun = " + fabric_mod_name + "_pack_lun,\n"
416408 buf += " /*\n"
417409 buf += " * Setup function pointers for generic logic in target_core_fabric_configfs.c\n"
418410 buf += " */\n"
@@ -439,9 +431,9 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 20 unmodified lines
439431 buf += " * Register the top level struct config_item_type with TCM core\n"
440432 buf += " */\n"
441433 buf += " fabric = target_fabric_configfs_init(THIS_MODULE, \"" + fabric_mod_name[4:] + "\");\n"
442− buf += " if (!(fabric)) {\n"
434+ buf += " if (IS_ERR(fabric)) {\n"
443435 buf += " printk(KERN_ERR \"target_fabric_configfs_init() failed\\n\");\n"
444− buf += " return -ENOMEM;\n"
436+ buf += " return PTR_ERR(fabric);\n"
445437 buf += " }\n"
446438 buf += " /*\n"
447439 buf += " * Setup fabric->tf_ops from our local " + fabric_mod_name + "_ops\n"
@@ -475,9 +467,9 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 27 unmodified lines
475467 buf += " printk(KERN_INFO \"" + fabric_mod_name.upper() + "[0] - Set fabric -> " + fabric_mod_name + "_fabric_configfs\\n\");\n"
476468 buf += " return 0;\n"
477469 buf += "};\n\n"
478− buf += "static void " + fabric_mod_name + "_deregister_configfs(void)\n"
470+ buf += "static void __exit " + fabric_mod_name + "_deregister_configfs(void)\n"
479471 buf += "{\n"
480− buf += " if (!(" + fabric_mod_name + "_fabric_configfs))\n"
472+ buf += " if (!" + fabric_mod_name + "_fabric_configfs)\n"
481473 buf += " return;\n\n"
482474 buf += " target_fabric_configfs_deregister(" + fabric_mod_name + "_fabric_configfs);\n"
483475 buf += " " + fabric_mod_name + "_fabric_configfs = NULL;\n"
@@ -492,17 +484,15 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 8 unmodified lines
492484 buf += " return ret;\n\n"
493485 buf += " return 0;\n"
494486 buf += "};\n\n"
495− buf += "static void " + fabric_mod_name + "_exit(void)\n"
487+ buf += "static void __exit " + fabric_mod_name + "_exit(void)\n"
496488 buf += "{\n"
497489 buf += " " + fabric_mod_name + "_deregister_configfs();\n"
498490 buf += "};\n\n"
499491
500− buf += "#ifdef MODULE\n"
501492 buf += "MODULE_DESCRIPTION(\"" + fabric_mod_name.upper() + " series fabric driver\");\n"
502493 buf += "MODULE_LICENSE(\"GPL\");\n"
503494 buf += "module_init(" + fabric_mod_name + "_init);\n"
504495 buf += "module_exit(" + fabric_mod_name + "_exit);\n"
505− buf += "#endif\n"
506496
507497 ret = p.write(buf)
508498 if ret:
@@ -514,7 +504,7 @@ def tcm_mod_build_configfs(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 5 unmodified lines
514504
515505 def tcm_mod_scan_fabric_ops(tcm_dir):
516506
517− fabric_ops_api = tcm_dir + "include/target/target_core_fabric_ops.h"
507+ fabric_ops_api = tcm_dir + "include/target/target_core_fabric.h"
518508
519509 print "Using tcm_mod_scan_fabric_ops: " + fabric_ops_api
520510 process_fo = 0;
@@ -579,11 +569,7 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 58 unmodified lines
579569 buf += "#include <scsi/scsi_cmnd.h>\n"
580570 buf += "#include <scsi/libfc.h>\n\n"
581571 buf += "#include <target/target_core_base.h>\n"
582− buf += "#include <target/target_core_transport.h>\n"
583− buf += "#include <target/target_core_fabric_ops.h>\n"
584− buf += "#include <target/target_core_fabric_lib.h>\n"
585− buf += "#include <target/target_core_device.h>\n"
586− buf += "#include <target/target_core_tpg.h>\n"
572+ buf += "#include <target/target_core_fabric.h>\n"
587573 buf += "#include <target/target_core_configfs.h>\n\n"
588574 buf += "#include \"" + fabric_mod_name + "_base.h\"\n"
589575 buf += "#include \"" + fabric_mod_name + "_fabric.h\"\n\n"
@@ -788,7 +774,7 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 198 unmodified lines
788774 buf += "{\n"
789775 buf += " struct " + fabric_mod_name + "_nacl *nacl;\n\n"
790776 buf += " nacl = kzalloc(sizeof(struct " + fabric_mod_name + "_nacl), GFP_KERNEL);\n"
791− buf += " if (!(nacl)) {\n"
777+ buf += " if (!nacl) {\n"
792778 buf += " printk(KERN_ERR \"Unable to alocate struct " + fabric_mod_name + "_nacl\\n\");\n"
793779 buf += " return NULL;\n"
794780 buf += " }\n\n"
@@ -815,7 +801,7 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 20 unmodified lines
815801 buf += "}\n\n"
816802 bufi += "u32 " + fabric_mod_name + "_tpg_get_inst_index(struct se_portal_group *);\n"
817803
818− if re.search('release_cmd_to_pool', fo):
804+ if re.search('\*release_cmd\)\(', fo):
819805 buf += "void " + fabric_mod_name + "_release_cmd(struct se_cmd *se_cmd)\n"
820806 buf += "{\n"
821807 buf += " return;\n"
@@ -899,13 +885,6 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 77 unmodified lines
899885 buf += "}\n\n"
900886 bufi += "int " + fabric_mod_name + "_get_cmd_state(struct se_cmd *);\n"
901887
902− if re.search('new_cmd_failure\)\(', fo):
903− buf += "void " + fabric_mod_name + "_new_cmd_failure(struct se_cmd *se_cmd)\n"
904− buf += "{\n"
905− buf += " return;\n"
906− buf += "}\n\n"
907− bufi += "void " + fabric_mod_name + "_new_cmd_failure(struct se_cmd *);\n"
908−
909888 if re.search('queue_data_in\)\(', fo):
910889 buf += "int " + fabric_mod_name + "_queue_data_in(struct se_cmd *se_cmd)\n"
911890 buf += "{\n"
@@ -948,15 +927,6 @@ def tcm_mod_dump_fabric_ops(proto_ident, fabric_mod_dir_var, fabric_mod_name): · 36 unmodified lines
948927 buf += "}\n\n"
949928 bufi += "int " + fabric_mod_name + "_is_state_remove(struct se_cmd *);\n"
950929
951− if re.search('pack_lun\)\(', fo):
952− buf += "u64 " + fabric_mod_name + "_pack_lun(unsigned int lun)\n"
953− buf += "{\n"
954− buf += " WARN_ON(lun >= 256);\n"
955− buf += " /* Caller wants this byte-swapped */\n"
956− buf += " return cpu_to_le64((lun & 0xff) << 8);\n"
957− buf += "}\n\n"
958− bufi += "u64 " + fabric_mod_name + "_pack_lun(unsigned int);\n"
959−
960930
961931 ret = p.write(buf)
962932 if ret:
Documentation/thermal/sysfs-api.txt+1−1
@@ -284,7 +284,7 @@ method, the sys I/F structure will be built like this: · 283 unmodified lines
284284 The framework includes a simple notification mechanism, in the form of a
285285 netlink event. Netlink socket initialization is done during the _init_
286286 of the framework. Drivers which intend to use the notification mechanism
287−just need to call generate_netlink_event() with two arguments viz
287+just need to call thermal_generate_netlink_event() with two arguments viz
288288 (originator, event). Typically the originator will be an integer assigned
289289 to a thermal_zone_device when it registers itself with the framework. The
290290 event will be one of:{THERMAL_AUX0, THERMAL_AUX1, THERMAL_CRITICAL,
Documentation/video4linux/v4l2-controls.txt+0−21
@@ -666,27 +666,6 @@ a control of this type whenever the first control belonging to a new control · 665 unmodified lines
666666 class is added.
667667
668668
669−Differences from the Spec
670−=========================
671−
672−There are a few places where the framework acts slightly differently from the
673−V4L2 Specification. Those differences are described in this section. We will
674−have to see whether we need to adjust the spec or not.
675−
676−1) It is no longer required to have all controls contained in a
677−v4l2_ext_control array be from the same control class. The framework will be
678−able to handle any type of control in the array. You need to set ctrl_class
679−to 0 in order to enable this. If ctrl_class is non-zero, then it will still
680−check that all controls belong to that control class.
681−
682−If you set ctrl_class to 0 and count to 0, then it will only return an error
683−if there are no controls at all.
684−
685−2) Clarified the way error_idx works. For get and set it will be equal to
686−count if nothing was done yet. If it is less than count then only the controls
687−up to error_idx-1 were successfully applied.
688−
689−
690669 Proposals for Extensions
691670 ========================
692671
Documentation/virtual/00-INDEX+0−2
@@ -4,8 +4,6 @@ Virtualization support in the Linux kernel. · 3 unmodified lines
44 - this file.
55 kvm/
66 - Kernel Virtual Machine. See also http://linux-kvm.org
7−lguest/
8− - Extremely simple hypervisor for experimental/educational use.
97 uml/
108 - User Mode Linux, builds/runs Linux kernel as a userspace program.
119 virtio.txt
MAINTAINERS+56−51
@@ -159,7 +159,7 @@ S: Maintained · 158 unmodified lines
159159 F: drivers/net/ethernet/realtek/r8169.c
160160
161161 8250/16?50 (AND CLONE UARTS) SERIAL DRIVER
162−M: Greg Kroah-Hartman <gregkh@suse.de>
162+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
163163 L: linux-serial@vger.kernel.org
164164 W: http://serial.sourceforge.net
165165 S: Maintained
@@ -745,6 +745,7 @@ M: Barry Song <baohua.song@csr.com> · 579 unmodified lines
745745 L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
746746 S: Maintained
747747 F: arch/arm/mach-prima2/
748+F: drivers/dma/sirf-dma*
748749
749750 ARM/EBSA110 MACHINE SUPPORT
750751 M: Russell King <linux@arm.linux.org.uk>
@@ -788,12 +789,6 @@ F: arch/arm/mach-mx*/ · 37 unmodified lines
788789 F: arch/arm/mach-imx/
789790 F: arch/arm/plat-mxc/
790791
791−ARM/FREESCALE IMX51
792−M: Amit Kucheria <amit.kucheria@canonical.com>
793−L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
794−S: Maintained
795−F: arch/arm/mach-mx5/
796−
797792 ARM/FREESCALE IMX6
798793 M: Shawn Guo <shawn.guo@linaro.org>
799794 L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@ -1411,6 +1406,7 @@ F: net/ax25/ · 611 unmodified lines
14111406 B43 WIRELESS DRIVER
14121407 M: Stefano Brivio <stefano.brivio@polimi.it>
14131408 L: linux-wireless@vger.kernel.org
1409+L: b43-dev@lists.infradead.org (moderated for non-subscribers)
14141410 W: http://linuxwireless.org/en/users/Drivers/b43
14151411 S: Maintained
14161412 F: drivers/net/wireless/b43/
@@ -1587,6 +1583,13 @@ L: linux-scsi@vger.kernel.org · 170 unmodified lines
15871583 S: Supported
15881584 F: drivers/scsi/bnx2fc/
15891585
1586+BROADCOM SPECIFIC AMBA DRIVER (BCMA)
1587+M: Rafał Miłecki <zajec5@gmail.com>
1588+L: linux-wireless@vger.kernel.org
1589+S: Maintained
1590+F: drivers/bcma/
1591+F: include/linux/bcma/
1592+
15901593 BROCADE BFA FC SCSI DRIVER
15911594 M: Jing Huang <huangj@brocade.com>
15921595 L: linux-scsi@vger.kernel.org
@@ -1774,9 +1777,9 @@ X: net/wireless/wext* · 181 unmodified lines
17741777
17751778 CHAR and MISC DRIVERS
17761779 M: Arnd Bergmann <arnd@arndb.de>
1777−M: Greg Kroah-Hartman <greg@kroah.com>
1780+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
17781781 T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git
1779−S: Maintained
1782+S: Supported
17801783 F: drivers/char/*
17811784 F: drivers/misc/*
17821785
@@ -2237,6 +2240,17 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/teigland/dlm.git · 454 unmodified lines
22372240 S: Supported
22382241 F: fs/dlm/
22392242
2243+DMA BUFFER SHARING FRAMEWORK
2244+M: Sumit Semwal <sumit.semwal@linaro.org>
2245+S: Maintained
2246+L: linux-media@vger.kernel.org
2247+L: dri-devel@lists.freedesktop.org
2248+L: linaro-mm-sig@lists.linaro.org
2249+F: drivers/base/dma-buf*
2250+F: include/linux/dma-buf*
2251+F: Documentation/dma-buf-sharing.txt
2252+T: git git://git.linaro.org/people/sumitsemwal/linux-dma-buf.git
2253+
22402254 DMA GENERIC OFFLOAD ENGINE SUBSYSTEM
22412255 M: Vinod Koul <vinod.koul@intel.com>
22422256 M: Dan Williams <dan.j.williams@intel.com>
@@ -2267,7 +2281,7 @@ F: drivers/acpi/dock.c · 24 unmodified lines
22672281 DOCUMENTATION
22682282 M: Randy Dunlap <rdunlap@xenotime.net>
22692283 L: linux-doc@vger.kernel.org
2270−T: quilt http://userweb.kernel.org/~rdunlap/kernel-doc-patches/current/
2284+T: quilt http://xenotime.net/kernel-doc-patches/current/
22712285 S: Maintained
22722286 F: Documentation/
22732287
@@ -2300,7 +2314,7 @@ F: lib/lru_cache.c · 26 unmodified lines
23002314 F: Documentation/blockdev/drbd/
23012315
23022316 DRIVER CORE, KOBJECTS, DEBUGFS AND SYSFS
2303−M: Greg Kroah-Hartman <gregkh@suse.de>
2317+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
23042318 T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6.git
23052319 S: Supported
23062320 F: Documentation/kobject.txt
@@ -2330,6 +2344,9 @@ F: include/drm/i915* · 23 unmodified lines
23302344
23312345 DRM DRIVERS FOR EXYNOS
23322346 M: Inki Dae <inki.dae@samsung.com>
2347+M: Joonyoung Shim <jy0922.shim@samsung.com>
2348+M: Seung-Woo Kim <sw0312.kim@samsung.com>
2349+M: Kyungmin Park <kyungmin.park@samsung.com>
23332350 L: dri-devel@lists.freedesktop.org
23342351 S: Supported
23352352 F: drivers/gpu/drm/exynos
@@ -2382,7 +2399,7 @@ F: net/bridge/netfilter/ebt*.c · 46 unmodified lines
23822399
23832400 ECRYPT FILE SYSTEM
23842401 M: Tyler Hicks <tyhicks@canonical.com>
2385−M: Dustin Kirkland <kirkland@canonical.com>
2402+M: Dustin Kirkland <dustin.kirkland@gazzang.com>
23862403 L: ecryptfs@vger.kernel.org
23872404 W: https://launchpad.net/ecryptfs
23882405 S: Supported
@@ -3301,6 +3318,12 @@ S: Maintained · 912 unmodified lines
33013318 F: net/ieee802154/
33023319 F: drivers/ieee802154/
33033320
3321+IIO SUBSYSTEM AND DRIVERS
3322+M: Jonathan Cameron <jic23@cam.ac.uk>
3323+L: linux-iio@vger.kernel.org
3324+S: Maintained
3325+F: drivers/staging/iio/
3326+
33043327 IKANOS/ADI EAGLE ADSL USB DRIVER
33053328 M: Matthieu Castet <castet.matthieu@free.fr>
33063329 M: Stanislaw Gruszka <stf_xl@wp.pl>
@@ -3969,11 +3992,11 @@ M: Rusty Russell <rusty@rustcorp.com.au> · 662 unmodified lines
39693992 L: lguest@lists.ozlabs.org
39703993 W: http://lguest.ozlabs.org/
39713994 S: Odd Fixes
3972−F: Documentation/virtual/lguest/
3995+F: arch/x86/include/asm/lguest*.h
39733996 F: arch/x86/lguest/
39743997 F: drivers/lguest/
39753998 F: include/linux/lguest*.h
3976−F: arch/x86/include/asm/lguest*.h
3999+F: tools/lguest/
39774000
39784001 LINUX FOR IBM pSERIES (RS/6000)
39794002 M: Paul Mackerras <paulus@au.ibm.com>
@@ -4113,10 +4136,11 @@ L: linux-ntfs-dev@lists.sourceforge.net · 133 unmodified lines
41134136 W: http://www.linux-ntfs.org/content/view/19/37/
41144137 S: Maintained
41154138 F: Documentation/ldm.txt
4116−F: fs/partitions/ldm.*
4139+F: block/partitions/ldm.*
41174140
41184141 LogFS
41194142 M: Joern Engel <joern@logfs.org>
4143+M: Prasad Joshi <prasadjoshi.linux@gmail.com>
41204144 L: logfs@logfs.org
41214145 W: logfs.org
41224146 S: Maintained
@@ -4258,13 +4282,6 @@ S: Orphan · 135 unmodified lines
42584282 F: drivers/video/matrox/matroxfb_*
42594283 F: include/linux/matroxfb.h
42604284
4261−MAX1668 TEMPERATURE SENSOR DRIVER
4262−M: "David George" <david.george@ska.ac.za>
4263−L: lm-sensors@lm-sensors.org
4264−S: Maintained
4265−F: Documentation/hwmon/max1668
4266−F: drivers/hwmon/max1668.c
4267−
42684285 MAX6650 HARDWARE MONITOR AND FAN CONTROLLER DRIVER
42694286 M: "Hans J. Koch" <hjk@hansjkoch.de>
42704287 L: lm-sensors@lm-sensors.org
@@ -5616,7 +5633,7 @@ W: http://www.ibm.com/developerworks/linux/linux390/ · 1345 unmodified lines
56165633 S: Supported
56175634 F: arch/s390/
56185635 F: drivers/s390/
5619−F: fs/partitions/ibm.c
5636+F: block/partitions/ibm.c
56205637 F: Documentation/s390/
56215638 F: Documentation/DocBook/s390*
56225639
@@ -5844,9 +5861,9 @@ S: Maintained · 221 unmodified lines
58445861 F: drivers/mmc/host/sdhci-spear.c
58455862
58465863 SECURITY SUBSYSTEM
5847−M: James Morris <jmorris@namei.org>
5864+M: James Morris <james.l.morris@oracle.com>
58485865 L: linux-security-module@vger.kernel.org (suggested Cc:)
5849−T: git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/security-testing-2.6.git
5866+T: git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git
58505867 W: http://security.wiki.kernel.org/
58515868 S: Supported
58525869 F: security/
@@ -5857,7 +5874,7 @@ S: Supported · 4 unmodified lines
58575874
58585875 SELINUX SECURITY MODULE
58595876 M: Stephen Smalley <sds@tycho.nsa.gov>
5860−M: James Morris <jmorris@namei.org>
5877+M: James Morris <james.l.morris@oracle.com>
58615878 M: Eric Paris <eparis@parisplace.org>
58625879 L: selinux@tycho.nsa.gov (subscribers-only, general discussion)
58635880 W: http://selinuxproject.org
@@ -6116,13 +6133,6 @@ S: Maintained · 252 unmodified lines
61166133 F: drivers/ssb/
61176134 F: include/linux/ssb/
61186135
6119−BROADCOM SPECIFIC AMBA DRIVER (BCMA)
6120−M: Rafał Miłecki <zajec5@gmail.com>
6121−L: linux-wireless@vger.kernel.org
6122−S: Maintained
6123−F: drivers/bcma/
6124−F: include/linux/bcma/
6125−
61266136 SONY VAIO CONTROL DEVICE DRIVER
61276137 M: Mattia Dongili <malattia@linux.it>
61286138 L: platform-driver-x86@vger.kernel.org
@@ -6266,15 +6276,15 @@ S: Maintained · 137 unmodified lines
62666276 F: arch/alpha/kernel/srm_env.c
62676277
62686278 STABLE BRANCH
6269−M: Greg Kroah-Hartman <greg@kroah.com>
6279+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
62706280 L: stable@vger.kernel.org
6271−S: Maintained
6281+S: Supported
62726282
62736283 STAGING SUBSYSTEM
6274−M: Greg Kroah-Hartman <gregkh@suse.de>
6284+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
62756285 T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
62766286 L: devel@driverdev.osuosl.org
6277−S: Maintained
6287+S: Supported
62786288 F: drivers/staging/
62796289
62806290 STAGING - AGERE HERMES II and II.5 WIRELESS DRIVERS
@@ -6386,11 +6396,6 @@ M: Omar Ramirez Luna <omar.ramirez@ti.com> · 105 unmodified lines
63866396 S: Odd Fixes
63876397 F: drivers/staging/tidspbridge/
63886398
6389−STAGING - TRIDENT TVMASTER TMxxxx USB VIDEO CAPTURE DRIVERS
6390−L: linux-media@vger.kernel.org
6391−S: Odd Fixes
6392−F: drivers/staging/tm6000/
6393−
63946399 STAGING - USB ENE SM/MS CARD READER DRIVER
63956400 M: Al Cho <acho@novell.com>
63966401 S: Odd Fixes
@@ -6659,10 +6664,10 @@ S: Maintained · 262 unmodified lines
66596664 K: ^Subject:.*(?i)trivial
66606665
66616666 TTY LAYER
6662−M: Greg Kroah-Hartman <gregkh@suse.de>
6663−S: Maintained
6667+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
6668+S: Supported
66646669 T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6.git
6665−F: drivers/tty/*
6670+F: drivers/tty/
66666671 F: drivers/tty/serial/serial_core.c
66676672 F: include/linux/serial_core.h
66686673 F: include/linux/serial.h
@@ -6948,7 +6953,7 @@ S: Maintained · 279 unmodified lines
69486953 F: drivers/usb/serial/digi_acceleport.c
69496954
69506955 USB SERIAL DRIVER
6951−M: Greg Kroah-Hartman <gregkh@suse.de>
6956+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
69526957 L: linux-usb@vger.kernel.org
69536958 S: Supported
69546959 F: Documentation/usb/usb-serial.txt
@@ -6963,9 +6968,8 @@ S: Maintained · 8 unmodified lines
69636968 F: drivers/usb/serial/empeg.c
69646969
69656970 USB SERIAL KEYSPAN DRIVER
6966−M: Greg Kroah-Hartman <greg@kroah.com>
6971+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
69676972 L: linux-usb@vger.kernel.org
6968−W: http://www.kroah.com/linux/
69696973 S: Maintained
69706974 F: drivers/usb/serial/*keyspan*
69716975
@@ -6993,7 +6997,7 @@ F: Documentation/video4linux/sn9c102.txt · 21 unmodified lines
69936997 F: drivers/media/video/sn9c102/
69946998
69956999 USB SUBSYSTEM
6996−M: Greg Kroah-Hartman <gregkh@suse.de>
7000+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
69977001 L: linux-usb@vger.kernel.org
69987002 W: http://www.linux-usb.org
69997003 T: git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb-2.6.git
@@ -7080,7 +7084,7 @@ F: fs/hppfs/ · 80 unmodified lines
70807084
70817085 USERSPACE I/O (UIO)
70827086 M: "Hans J. Koch" <hjk@hansjkoch.de>
7083−M: Greg Kroah-Hartman <gregkh@suse.de>
7087+M: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
70847088 S: Maintained
70857089 F: Documentation/DocBook/uio-howto.tmpl
70867090 F: drivers/uio/
@@ -7198,7 +7202,7 @@ S: Maintained · 111 unmodified lines
71987202 F: drivers/net/vmxnet3/
71997203
72007204 VMware PVSCSI driver
7201−M: Alok Kataria <akataria@vmware.com>
7205+M: Arvind Kumar <arvindkumar@vmware.com>
72027206 M: VMware PV-Drivers <pv-drivers@vmware.com>
72037207 L: linux-scsi@vger.kernel.org
72047208 S: Maintained
@@ -7355,6 +7359,7 @@ S: Supported · 150 unmodified lines
73557359 F: Documentation/hwmon/wm83??
73567360 F: arch/arm/mach-s3c64xx/mach-crag6410*
73577361 F: drivers/leds/leds-wm83*.c
7362+F: drivers/hwmon/wm83??-hwmon.c
73587363 F: drivers/input/misc/wm831x-on.c
73597364 F: drivers/input/touchscreen/wm831x-ts.c
73607365 F: drivers/input/touchscreen/wm97*.c
Makefile+2−2
@@ -1,7 +1,7 @@
11 VERSION = 3
2−PATCHLEVEL = 2
2+PATCHLEVEL = 3
33 SUBLEVEL = 0
4−EXTRAVERSION =
4+EXTRAVERSION = -rc4
55 NAME = Saber-toothed Squirrel
66
77 # *DOCUMENTATION*
arch/arm/Kconfig+1−3
@@ -754,7 +754,7 @@ config ARCH_SA1100 · 753 unmodified lines
754754 select ARCH_HAS_CPUFREQ
755755 select CPU_FREQ
756756 select GENERIC_CLOCKEVENTS
757− select CLKDEV_LOOKUP
757+ select HAVE_CLK
758758 select HAVE_SCHED_CLOCK
759759 select TICK_ONESHOT
760760 select ARCH_REQUIRE_GPIOLIB
@@ -825,7 +825,6 @@ config ARCH_S5PC100 · 64 unmodified lines
825825 select HAVE_CLK
826826 select CLKDEV_LOOKUP
827827 select CPU_V7
828− select ARM_L1_CACHE_SHIFT_6
829828 select ARCH_USES_GETTIMEOFFSET
830829 select HAVE_S3C2410_I2C if I2C
831830 select HAVE_S3C_RTC if RTC_CLASS
@@ -842,7 +841,6 @@ config ARCH_S5PV210 · 10 unmodified lines
842841 select HAVE_CLK
843842 select CLKDEV_LOOKUP
844843 select CLKSRC_MMIO
845− select ARM_L1_CACHE_SHIFT_6
846844 select ARCH_HAS_CPUFREQ
847845 select GENERIC_CLOCKEVENTS
848846 select HAVE_SCHED_CLOCK
arch/arm/Makefile+0−1
@@ -160,7 +160,6 @@ machine-$(CONFIG_ARCH_MSM) := msm · 159 unmodified lines
160160 machine-$(CONFIG_ARCH_MV78XX0) := mv78xx0
161161 machine-$(CONFIG_ARCH_IMX_V4_V5) := imx
162162 machine-$(CONFIG_ARCH_IMX_V6_V7) := imx
163−machine-$(CONFIG_ARCH_MX5) := mx5
164163 machine-$(CONFIG_ARCH_MXS) := mxs
165164 machine-$(CONFIG_ARCH_NETX) := netx
166165 machine-$(CONFIG_ARCH_NOMADIK) := nomadik
arch/arm/boot/dts/exynos4210.dtsi+1−0
@@ -29,6 +29,7 @@ · 28 unmodified lines
2929 compatible = "arm,cortex-a9-gic";
3030 #interrupt-cells = <3>;
3131 interrupt-controller;
32+ cpu-offset = <0x8000>;
3233 reg = <0x10490000 0x1000>, <0x10480000 0x100>;
3334 };
3435
arch/arm/boot/dts/tegra-paz00.dts+3−3
@@ -46,11 +46,11 @@ · 45 unmodified lines
4646 };
4747
4848 serial@70006200 {
49− status = "disable";
49+ clock-frequency = <216000000>;
5050 };
5151
5252 serial@70006300 {
53− clock-frequency = <216000000>;
53+ status = "disable";
5454 };
5555
5656 serial@70006400 {
@@ -60,7 +60,7 @@ · 3 unmodified lines
6060 sdhci@c8000000 {
6161 cd-gpios = <&gpio 173 0>; /* gpio PV5 */
6262 wp-gpios = <&gpio 57 0>; /* gpio PH1 */
63− power-gpios = <&gpio 155 0>; /* gpio PT3 */
63+ power-gpios = <&gpio 169 0>; /* gpio PV1 */
6464 };
6565
6666 sdhci@c8000200 {
arch/arm/common/gic.c+2−5
@@ -41,6 +41,7 @@ · 40 unmodified lines
4141
4242 #include <asm/irq.h>
4343 #include <asm/exception.h>
44+#include <asm/smp_plat.h>
4445 #include <asm/mach/irq.h>
4546 #include <asm/hardware/gic.h>
4647
@@ -352,11 +353,7 @@ static void __init gic_dist_init(struct gic_chip_data *gic) · 305 unmodified lines
352353 unsigned int gic_irqs = gic->gic_irqs;
353354 struct irq_domain *domain = &gic->domain;
354355 void __iomem *base = gic_data_dist_base(gic);
355− u32 cpu = 0;
356−
357−#ifdef CONFIG_SMP
358− cpu = cpu_logical_map(smp_processor_id());
359−#endif
356+ u32 cpu = cpu_logical_map(smp_processor_id());
360357
361358 cpumask = 1 << cpu;
362359 cpumask |= cpumask << 8;
arch/arm/common/it8152.c+0−7
@@ -320,13 +320,6 @@ err0: · 319 unmodified lines
320320 return -EBUSY;
321321 }
322322
323−/*
324− * If we set up a device for bus mastering, we need to check the latency
325− * timer as we don't have even crappy BIOSes to set it properly.
326− * The implementation is from arch/i386/pci/i386.c
327− */
328−unsigned int pcibios_max_latency = 255;
329−
330323 /* ITE bridge requires setting latency timer to avoid early bus access
331324 termination by PCI bus master devices
332325 */
arch/arm/common/pl330.c+2−1
@@ -1502,12 +1502,13 @@ int pl330_chan_ctrl(void *ch_id, enum pl330_chan_op op) · 1501 unmodified lines
15021502 struct pl330_thread *thrd = ch_id;
15031503 struct pl330_dmac *pl330;
15041504 unsigned long flags;
1505− int ret = 0, active = thrd->req_running;
1505+ int ret = 0, active;
15061506
15071507 if (!thrd || thrd->free || thrd->dmac->state == DYING)
15081508 return -EINVAL;
15091509
15101510 pl330 = thrd->dmac;
1511+ active = thrd->req_running;
15111512
15121513 spin_lock_irqsave(&pl330->lock, flags);
15131514
arch/arm/configs/imx_v6_v7_defconfigrenamed from arch/arm/configs/mx5_defconfig+35−26
@@ -3,6 +3,7 @@ CONFIG_EXPERIMENTAL=y · 2 unmodified lines
33 CONFIG_KERNEL_LZO=y
44 CONFIG_SYSVIPC=y
55 CONFIG_LOG_BUF_SHIFT=18
6+CONFIG_CGROUPS=y
67 CONFIG_RELAY=y
78 CONFIG_EXPERT=y
89 # CONFIG_SLUB_DEBUG is not set
@@ -14,20 +15,31 @@ CONFIG_MODULE_SRCVERSION_ALL=y · 5 unmodified lines
1415 # CONFIG_LBDAF is not set
1516 # CONFIG_BLK_DEV_BSG is not set
1617 CONFIG_ARCH_MXC=y
17−CONFIG_ARCH_MX5=y
18−CONFIG_MACH_MX51_BABBAGE=y
18+CONFIG_MACH_MX31LILLY=y
19+CONFIG_MACH_MX31LITE=y
20+CONFIG_MACH_PCM037=y
21+CONFIG_MACH_PCM037_EET=y
22+CONFIG_MACH_MX31_3DS=y
23+CONFIG_MACH_MX31MOBOARD=y
24+CONFIG_MACH_QONG=y
25+CONFIG_MACH_ARMADILLO5X0=y
26+CONFIG_MACH_KZM_ARM11_01=y
27+CONFIG_MACH_PCM043=y
28+CONFIG_MACH_MX35_3DS=y
29+CONFIG_MACH_EUKREA_CPUIMX35=y
30+CONFIG_MACH_VPR200=y
31+CONFIG_MACH_IMX51_DT=y
1932 CONFIG_MACH_MX51_3DS=y
2033 CONFIG_MACH_EUKREA_CPUIMX51=y
2134 CONFIG_MACH_EUKREA_CPUIMX51SD=y
2235 CONFIG_MACH_MX51_EFIKAMX=y
2336 CONFIG_MACH_MX51_EFIKASB=y
24−CONFIG_MACH_MX53_EVK=y
25−CONFIG_MACH_MX53_SMD=y
26−CONFIG_MACH_MX53_LOCO=y
27−CONFIG_MACH_MX53_ARD=y
37+CONFIG_MACH_IMX53_DT=y
38+CONFIG_SOC_IMX6Q=y
2839 CONFIG_MXC_PWM=y
2940 CONFIG_NO_HZ=y
3041 CONFIG_HIGH_RES_TIMERS=y
42+CONFIG_SMP=y
3143 CONFIG_VMSPLIT_2G=y
3244 CONFIG_PREEMPT_VOLUNTARY=y
3345 CONFIG_AEABI=y
@@ -49,7 +61,7 @@ CONFIG_IP_PNP_DHCP=y · 15 unmodified lines
4961 # CONFIG_INET_XFRM_MODE_TUNNEL is not set
5062 # CONFIG_INET_XFRM_MODE_BEET is not set
5163 # CONFIG_INET_LRO is not set
52−# CONFIG_IPV6 is not set
64+CONFIG_IPV6=y
5365 # CONFIG_WIRELESS is not set
5466 CONFIG_DEVTMPFS=y
5567 CONFIG_DEVTMPFS_MOUNT=y
@@ -68,24 +80,20 @@ CONFIG_SCSI_SCAN_ASYNC=y · 12 unmodified lines
6880 CONFIG_ATA=y
6981 CONFIG_PATA_IMX=y
7082 CONFIG_NETDEVICES=y
71−CONFIG_MII=m
72−CONFIG_MARVELL_PHY=y
73−CONFIG_DAVICOM_PHY=y
74−CONFIG_QSEMI_PHY=y
75−CONFIG_LXT_PHY=y
76−CONFIG_CICADA_PHY=y
77−CONFIG_VITESSE_PHY=y
78−CONFIG_SMSC_PHY=y
79−CONFIG_BROADCOM_PHY=y
80−CONFIG_ICPLUS_PHY=y
81−CONFIG_REALTEK_PHY=y
82−CONFIG_NATIONAL_PHY=y
83−CONFIG_STE10XP=y
84−CONFIG_LSI_ET1011C_PHY=y
85−CONFIG_MICREL_PHY=y
86−CONFIG_NET_ETHERNET=y
87−# CONFIG_NETDEV_1000 is not set
88−# CONFIG_NETDEV_10000 is not set
83+# CONFIG_NET_VENDOR_BROADCOM is not set
84+# CONFIG_NET_VENDOR_CHELSIO is not set
85+# CONFIG_NET_VENDOR_FARADAY is not set
86+CONFIG_FEC=y
87+# CONFIG_NET_VENDOR_INTEL is not set
88+# CONFIG_NET_VENDOR_MARVELL is not set
89+# CONFIG_NET_VENDOR_MICREL is not set
90+# CONFIG_NET_VENDOR_MICROCHIP is not set
91+# CONFIG_NET_VENDOR_NATSEMI is not set
92+# CONFIG_NET_VENDOR_SEEQ is not set
93+CONFIG_SMC91X=y
94+CONFIG_SMC911X=y
95+CONFIG_SMSC911X=y
96+# CONFIG_NET_VENDOR_STMICRO is not set
8997 # CONFIG_WLAN is not set
9098 # CONFIG_INPUT_MOUSEDEV_PSAUX is not set
9199 CONFIG_INPUT_EVDEV=y
@@ -124,7 +132,6 @@ CONFIG_USB_EHCI_HCD=y · 32 unmodified lines
124132 CONFIG_USB_EHCI_MXC=y
125133 CONFIG_USB_STORAGE=y
126134 CONFIG_MMC=y
127−CONFIG_MMC_BLOCK=m
128135 CONFIG_MMC_SDHCI=y
129136 CONFIG_MMC_SDHCI_PLTFM=y
130137 CONFIG_MMC_SDHCI_ESDHC_IMX=y
@@ -133,6 +140,8 @@ CONFIG_LEDS_CLASS=y · 2 unmodified lines
133140 CONFIG_RTC_CLASS=y
134141 CONFIG_RTC_INTF_DEV_UIE_EMUL=y
135142 CONFIG_RTC_MXC=y
143+CONFIG_DMADEVICES=y
144+CONFIG_IMX_SDMA=y
136145 CONFIG_EXT2_FS=y
137146 CONFIG_EXT2_FS_XATTR=y
138147 CONFIG_EXT2_FS_POSIX_ACL=y
arch/arm/configs/mx3_defconfig+0−144
@@ -1,144 +0,0 @@
1−CONFIG_EXPERIMENTAL=y
2−CONFIG_SYSVIPC=y
3−CONFIG_IKCONFIG=y
4−CONFIG_IKCONFIG_PROC=y
5−CONFIG_LOG_BUF_SHIFT=14
6−CONFIG_EXPERT=y
7−CONFIG_SLAB=y
8−CONFIG_MODULES=y
9−CONFIG_MODULE_UNLOAD=y
10−CONFIG_MODULE_FORCE_UNLOAD=y
11−CONFIG_MODVERSIONS=y
12−# CONFIG_BLK_DEV_BSG is not set
13−CONFIG_ARCH_MXC=y
14−CONFIG_MACH_MX31ADS_WM1133_EV1=y
15−CONFIG_MACH_MX31LILLY=y
16−CONFIG_MACH_MX31LITE=y
17−CONFIG_MACH_PCM037=y
18−CONFIG_MACH_PCM037_EET=y
19−CONFIG_MACH_MX31_3DS=y
20−CONFIG_MACH_MX31MOBOARD=y
21−CONFIG_MACH_QONG=y
22−CONFIG_MACH_ARMADILLO5X0=y
23−CONFIG_MACH_KZM_ARM11_01=y
24−CONFIG_MACH_PCM043=y
25−CONFIG_MACH_MX35_3DS=y
26−CONFIG_MACH_EUKREA_CPUIMX35=y
27−CONFIG_MXC_IRQ_PRIOR=y
28−CONFIG_MXC_PWM=y
29−CONFIG_ARM_ERRATA_411920=y
30−CONFIG_NO_HZ=y
31−CONFIG_HIGH_RES_TIMERS=y
32−CONFIG_PREEMPT=y
33−CONFIG_AEABI=y
34−CONFIG_ZBOOT_ROM_TEXT=0x0
35−CONFIG_ZBOOT_ROM_BSS=0x0
36−CONFIG_CMDLINE="noinitrd console=ttymxc0,115200 root=/dev/mtdblock2 rw ip=off"
37−CONFIG_VFP=y
38−CONFIG_PM_DEBUG=y
39−CONFIG_NET=y
40−CONFIG_PACKET=y
41−CONFIG_UNIX=y
42−CONFIG_INET=y
43−CONFIG_IP_PNP=y
44−CONFIG_IP_PNP_DHCP=y
45−# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
46−# CONFIG_INET_XFRM_MODE_TUNNEL is not set
47−# CONFIG_INET_XFRM_MODE_BEET is not set
48−# CONFIG_INET_LRO is not set
49−# CONFIG_INET_DIAG is not set
50−# CONFIG_IPV6 is not set
51−CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
52−CONFIG_FW_LOADER=m
53−CONFIG_MTD=y
54−CONFIG_MTD_CMDLINE_PARTS=y
55−CONFIG_MTD_CHAR=y
56−CONFIG_MTD_BLOCK=y
57−CONFIG_MTD_CFI=y
58−CONFIG_MTD_PHYSMAP=y
59−CONFIG_MTD_NAND=y
60−CONFIG_MTD_NAND_MXC=y
61−CONFIG_MTD_UBI=y
62−# CONFIG_BLK_DEV is not set
63−CONFIG_MISC_DEVICES=y
64−CONFIG_EEPROM_AT24=y
65−CONFIG_NETDEVICES=y
66−CONFIG_SMSC_PHY=y
67−CONFIG_NET_ETHERNET=y
68−CONFIG_SMSC911X=y
69−CONFIG_DNET=y
70−# CONFIG_NETDEV_1000 is not set
71−# CONFIG_NETDEV_10000 is not set
72−# CONFIG_INPUT_MOUSEDEV is not set
73−# CONFIG_KEYBOARD_ATKBD is not set
74−CONFIG_KEYBOARD_IMX=y
75−# CONFIG_INPUT_MOUSE is not set
76−# CONFIG_SERIO is not set
77−# CONFIG_VT is not set
78−# CONFIG_LEGACY_PTYS is not set
79−CONFIG_SERIAL_8250=m
80−CONFIG_SERIAL_8250_EXTENDED=y
81−CONFIG_SERIAL_8250_SHARE_IRQ=y
82−CONFIG_SERIAL_IMX=y
83−CONFIG_SERIAL_IMX_CONSOLE=y
84−# CONFIG_HW_RANDOM is not set
85−CONFIG_I2C=y
86−CONFIG_I2C_CHARDEV=y
87−CONFIG_I2C_IMX=y
88−CONFIG_SPI=y
89−CONFIG_W1=y
90−CONFIG_W1_MASTER_MXC=y
91−CONFIG_W1_SLAVE_THERM=y
92−# CONFIG_HWMON is not set
93−CONFIG_WATCHDOG=y
94−CONFIG_IMX2_WDT=y
95−CONFIG_MFD_WM8350_I2C=y
96−CONFIG_REGULATOR=y
97−CONFIG_REGULATOR_WM8350=y
98−CONFIG_MEDIA_SUPPORT=y
99−CONFIG_VIDEO_DEV=y
100−# CONFIG_RC_CORE is not set
101−# CONFIG_MEDIA_TUNER_CUSTOMISE is not set
102−CONFIG_SOC_CAMERA=y
103−CONFIG_SOC_CAMERA_MT9M001=y
104−CONFIG_SOC_CAMERA_MT9M111=y
105−CONFIG_SOC_CAMERA_MT9T031=y
106−CONFIG_SOC_CAMERA_MT9V022=y
107−CONFIG_SOC_CAMERA_TW9910=y
108−CONFIG_SOC_CAMERA_OV772X=y
109−CONFIG_VIDEO_MX3=y
110−# CONFIG_RADIO_ADAPTERS is not set
111−CONFIG_FB=y
112−CONFIG_SOUND=y
113−CONFIG_SND=y
114−# CONFIG_SND_ARM is not set
115−# CONFIG_SND_SPI is not set
116−CONFIG_SND_SOC=y
117−CONFIG_SND_IMX_SOC=y
118−CONFIG_SND_MXC_SOC_WM1133_EV1=y
119−CONFIG_SND_SOC_PHYCORE_AC97=y
120−CONFIG_SND_SOC_EUKREA_TLV320=y
121−CONFIG_USB=y
122−CONFIG_USB_EHCI_HCD=y
123−CONFIG_USB_EHCI_MXC=y
124−CONFIG_USB_GADGET=m
125−CONFIG_USB_FSL_USB2=m
126−CONFIG_USB_G_SERIAL=m
127−CONFIG_USB_ULPI=y
128−CONFIG_MMC=y
129−CONFIG_MMC_MXC=y
130−CONFIG_RTC_CLASS=y
131−CONFIG_RTC_MXC=y
132−CONFIG_DMADEVICES=y
133−# CONFIG_DNOTIFY is not set
134−CONFIG_TMPFS=y
135−CONFIG_JFFS2_FS=y
136−CONFIG_UBIFS_FS=y
137−CONFIG_NFS_FS=y
138−CONFIG_NFS_V3=y
139−CONFIG_NFS_V4=y
140−CONFIG_ROOT_NFS=y
141−# CONFIG_ENABLE_WARN_DEPRECATED is not set
142−# CONFIG_ENABLE_MUST_CHECK is not set
143−CONFIG_SYSCTL_SYSCALL_CHECK=y
144−# CONFIG_CRYPTO_ANSI_CPRNG is not set
arch/arm/include/asm/assembler.h+7−2
@@ -137,6 +137,11 @@ · 136 unmodified lines
137137 disable_irq
138138 .endm
139139
140+ .macro save_and_disable_irqs_notrace, oldcpsr
141+ mrs \oldcpsr, cpsr
142+ disable_irq_notrace
143+ .endm
144+
140145 /*
141146 * Restore interrupt state previously stored in a register. We don't
142147 * guarantee that this will preserve the flags.
@@ -237,7 +242,7 @@ · 94 unmodified lines
237242 */
238243 #ifdef CONFIG_THUMB2_KERNEL
239244
240− .macro usraccoff, instr, reg, ptr, inc, off, cond, abort, t=T()
245+ .macro usraccoff, instr, reg, ptr, inc, off, cond, abort, t=TUSER()
241246 9999:
242247 .if \inc == 1
243248 \instr\cond\()b\()\t\().w \reg, [\ptr, #\off]
@@ -277,7 +282,7 @@ · 33 unmodified lines
277282
278283 #else /* !CONFIG_THUMB2_KERNEL */
279284
280− .macro usracc, instr, reg, ptr, inc, cond, rept, abort, t=T()
285+ .macro usracc, instr, reg, ptr, inc, cond, rept, abort, t=TUSER()
281286 .rept \rept
282287 9999:
283288 .if \inc == 1
arch/arm/include/asm/domain.h+4−4
@@ -83,9 +83,9 @@ · 82 unmodified lines
8383 * instructions (inline assembly)
8484 */
8585 #ifdef CONFIG_CPU_USE_DOMAINS
86−#define T(instr) #instr "t"
86+#define TUSER(instr) #instr "t"
8787 #else
88−#define T(instr) #instr
88+#define TUSER(instr) #instr
8989 #endif
9090
9191 #else /* __ASSEMBLY__ */
@@ -95,9 +95,9 @@ · 3 unmodified lines
9595 * instructions
9696 */
9797 #ifdef CONFIG_CPU_USE_DOMAINS
98−#define T(instr) instr ## t
98+#define TUSER(instr) instr ## t
9999 #else
100−#define T(instr) instr
100+#define TUSER(instr) instr
101101 #endif
102102
103103 #endif /* __ASSEMBLY__ */
arch/arm/include/asm/futex.h+4−4
@@ -75,9 +75,9 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, · 74 unmodified lines
7575
7676 #define __futex_atomic_op(insn, ret, oldval, tmp, uaddr, oparg) \
7777 __asm__ __volatile__( \
78− "1: " T(ldr) " %1, [%3]\n" \
78+ "1: " TUSER(ldr) " %1, [%3]\n" \
7979 " " insn "\n" \
80− "2: " T(str) " %0, [%3]\n" \
80+ "2: " TUSER(str) " %0, [%3]\n" \
8181 " mov %0, #0\n" \
8282 __futex_atomic_ex_table("%5") \
8383 : "=&r" (ret), "=&r" (oldval), "=&r" (tmp) \
@@ -95,10 +95,10 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr, · 11 unmodified lines
9595 return -EFAULT;
9696
9797 __asm__ __volatile__("@futex_atomic_cmpxchg_inatomic\n"
98− "1: " T(ldr) " %1, [%4]\n"
98+ "1: " TUSER(ldr) " %1, [%4]\n"
9999 " teq %1, %2\n"
100100 " it eq @ explicit IT needed for the 2b label\n"
101− "2: " T(streq) " %3, [%4]\n"
101+ "2: " TUSER(streq) " %3, [%4]\n"
102102 __futex_atomic_ex_table("%5")
103103 : "+r" (ret), "=&r" (val)
104104 : "r" (oldval), "r" (newval), "r" (uaddr), "Ir" (-EFAULT)
arch/arm/include/asm/hardware/pl330.h+1−1
@@ -41,7 +41,7 @@ enum pl330_dstcachectrl { · 40 unmodified lines
4141 DCCTRL1, /* Bufferable only */
4242 DCCTRL2, /* Cacheable, but do not allocate */
4343 DCCTRL3, /* Cacheable and bufferable, but do not allocate */
44− DINVALID1 = 8,
44+ DINVALID1, /* AWCACHE = 0x1000 */
4545 DINVALID2,
4646 DCCTRL6, /* Cacheable write-through, allocate on writes only */
4747 DCCTRL7, /* Cacheable write-back, allocate on writes only */
arch/arm/include/asm/kprobes.h+0−1
@@ -24,7 +24,6 @@ · 23 unmodified lines
2424 #define MAX_INSN_SIZE 2
2525 #define MAX_STACK_SIZE 64 /* 32 would probably be OK */
2626
27−#define regs_return_value(regs) ((regs)->ARM_r0)
2827 #define flush_insn_slot(p) do { } while (0)
2928 #define kretprobe_blacklist_size 0
3029
arch/arm/include/asm/processor.h+1−0
@@ -22,6 +22,7 @@ · 21 unmodified lines
2222 #include <asm/hw_breakpoint.h>
2323 #include <asm/ptrace.h>
2424 #include <asm/types.h>
25+#include <asm/system.h>
2526
2627 #ifdef __KERNEL__
2728 #define STACK_TOP ((current->personality & ADDR_LIMIT_32BIT) ? \
arch/arm/include/asm/ptrace.h+5−0
@@ -189,6 +189,11 @@ static inline int valid_user_regs(struct pt_regs *regs) · 188 unmodified lines
189189 return 0;
190190 }
191191
192+static inline long regs_return_value(struct pt_regs *regs)
193+{
194+ return regs->ARM_r0;
195+}
196+
192197 #define instruction_pointer(regs) (regs)->ARM_pc
193198
194199 #ifdef CONFIG_SMP
arch/arm/include/asm/smp.h+0−6
@@ -70,12 +70,6 @@ extern void platform_secondary_init(unsigned int cpu); · 69 unmodified lines
7070 */
7171 extern void platform_smp_prepare_cpus(unsigned int);
7272
73−/*
74− * Logical CPU mapping.
75− */
76−extern int __cpu_logical_map[NR_CPUS];
77−#define cpu_logical_map(cpu) __cpu_logical_map[cpu]
78−
7973 /*
8074 * Initial data for bringing up a secondary CPU.
8175 */
arch/arm/include/asm/smp_plat.h+6−0
@@ -43,4 +43,10 @@ static inline int cache_ops_need_broadcast(void) · 42 unmodified lines
4343 }
4444 #endif
4545
46+/*
47+ * Logical CPU mapping.
48+ */
49+extern int __cpu_logical_map[];
50+#define cpu_logical_map(cpu) __cpu_logical_map[cpu]
51+
4652 #endif
arch/arm/include/asm/thread_info.h+6−0
@@ -129,6 +129,7 @@ extern void vfp_flush_hwstate(struct thread_info *); · 128 unmodified lines
129129 /*
130130 * thread information flags:
131131 * TIF_SYSCALL_TRACE - syscall trace active
132+ * TIF_SYSCAL_AUDIT - syscall auditing active
132133 * TIF_SIGPENDING - signal pending
133134 * TIF_NEED_RESCHED - rescheduling necessary
134135 * TIF_NOTIFY_RESUME - callback before returning to user
@@ -139,6 +140,7 @@ extern void vfp_flush_hwstate(struct thread_info *); · 4 unmodified lines
139140 #define TIF_NEED_RESCHED 1
140141 #define TIF_NOTIFY_RESUME 2 /* callback before returning to user */
141142 #define TIF_SYSCALL_TRACE 8
143+#define TIF_SYSCALL_AUDIT 9
142144 #define TIF_POLLING_NRFLAG 16
143145 #define TIF_USING_IWMMXT 17
144146 #define TIF_MEMDIE 18 /* is terminating due to OOM killer */
@@ -149,11 +151,15 @@ extern void vfp_flush_hwstate(struct thread_info *); · 4 unmodified lines
149151 #define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED)
150152 #define _TIF_NOTIFY_RESUME (1 << TIF_NOTIFY_RESUME)
151153 #define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)
154+#define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT)
152155 #define _TIF_POLLING_NRFLAG (1 << TIF_POLLING_NRFLAG)
153156 #define _TIF_USING_IWMMXT (1 << TIF_USING_IWMMXT)
154157 #define _TIF_RESTORE_SIGMASK (1 << TIF_RESTORE_SIGMASK)
155158 #define _TIF_SECCOMP (1 << TIF_SECCOMP)
156159
160+/* Checks for any syscall work in entry-common.S */
161+#define _TIF_SYSCALL_WORK (_TIF_SYSCALL_TRACE | _TIF_SYSCALL_AUDIT)
162+
157163 /*
158164 * Change these and you break ASM code in entry-common.S
159165 */
arch/arm/include/asm/tlb.h+9−1
@@ -198,7 +198,15 @@ static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte, · 197 unmodified lines
198198 unsigned long addr)
199199 {
200200 pgtable_page_dtor(pte);
201− tlb_add_flush(tlb, addr);
201+
202+ /*
203+ * With the classic ARM MMU, a pte page has two corresponding pmd
204+ * entries, each covering 1MB.
205+ */
206+ addr &= PMD_MASK;
207+ tlb_add_flush(tlb, addr + SZ_1M - PAGE_SIZE);
208+ tlb_add_flush(tlb, addr + SZ_1M);
209+
202210 tlb_remove_page(tlb, pte);
203211 }
204212
arch/arm/include/asm/uaccess.h+8−8
@@ -227,7 +227,7 @@ do { \ · 226 unmodified lines
227227
228228 #define __get_user_asm_byte(x,addr,err) \
229229 __asm__ __volatile__( \
230− "1: " T(ldrb) " %1,[%2],#0\n" \
230+ "1: " TUSER(ldrb) " %1,[%2],#0\n" \
231231 "2:\n" \
232232 " .pushsection .fixup,\"ax\"\n" \
233233 " .align 2\n" \
@@ -263,7 +263,7 @@ do { \ · 29 unmodified lines
263263
264264 #define __get_user_asm_word(x,addr,err) \
265265 __asm__ __volatile__( \
266− "1: " T(ldr) " %1,[%2],#0\n" \
266+ "1: " TUSER(ldr) " %1,[%2],#0\n" \
267267 "2:\n" \
268268 " .pushsection .fixup,\"ax\"\n" \
269269 " .align 2\n" \
@@ -308,7 +308,7 @@ do { \ · 38 unmodified lines
308308
309309 #define __put_user_asm_byte(x,__pu_addr,err) \
310310 __asm__ __volatile__( \
311− "1: " T(strb) " %1,[%2],#0\n" \
311+ "1: " TUSER(strb) " %1,[%2],#0\n" \
312312 "2:\n" \
313313 " .pushsection .fixup,\"ax\"\n" \
314314 " .align 2\n" \
@@ -341,7 +341,7 @@ do { \ · 26 unmodified lines
341341
342342 #define __put_user_asm_word(x,__pu_addr,err) \
343343 __asm__ __volatile__( \
344− "1: " T(str) " %1,[%2],#0\n" \
344+ "1: " TUSER(str) " %1,[%2],#0\n" \
345345 "2:\n" \
346346 " .pushsection .fixup,\"ax\"\n" \
347347 " .align 2\n" \
@@ -366,10 +366,10 @@ do { \ · 18 unmodified lines
366366
367367 #define __put_user_asm_dword(x,__pu_addr,err) \
368368 __asm__ __volatile__( \
369− ARM( "1: " T(str) " " __reg_oper1 ", [%1], #4\n" ) \
370− ARM( "2: " T(str) " " __reg_oper0 ", [%1]\n" ) \
371− THUMB( "1: " T(str) " " __reg_oper1 ", [%1]\n" ) \
372− THUMB( "2: " T(str) " " __reg_oper0 ", [%1, #4]\n" ) \
369+ ARM( "1: " TUSER(str) " " __reg_oper1 ", [%1], #4\n" ) \
370+ ARM( "2: " TUSER(str) " " __reg_oper0 ", [%1]\n" ) \
371+ THUMB( "1: " TUSER(str) " " __reg_oper1 ", [%1]\n" ) \
372+ THUMB( "2: " TUSER(str) " " __reg_oper0 ", [%1, #4]\n" ) \
373373 "3:\n" \
374374 " .pushsection .fixup,\"ax\"\n" \
375375 " .align 2\n" \
arch/arm/include/asm/unified.h+2−2
@@ -37,8 +37,8 @@ · 36 unmodified lines
3737 #define THUMB(x...) x
3838 #ifdef __ASSEMBLY__
3939 #define W(instr) instr.w
40−#endif
4140 #define BSYM(sym) sym + 1
41+#endif
4242
4343 #else /* !CONFIG_THUMB2_KERNEL */
4444
@@ -49,8 +49,8 @@ · 4 unmodified lines
4949 #define THUMB(x...)
5050 #ifdef __ASSEMBLY__
5151 #define W(instr) instr
52−#endif
5352 #define BSYM(sym) sym
53+#endif
5454
5555 #endif /* CONFIG_THUMB2_KERNEL */
5656
arch/arm/kernel/entry-armv.S+1−1
@@ -790,7 +790,7 @@ __kuser_cmpxchg64: @ 0xffff0f60 · 789 unmodified lines
790790 smp_dmb arm
791791 rsbs r0, r3, #0 @ set returned val and C flag
792792 ldmfd sp!, {r4, r5, r6, r7}
793− bx lr
793+ usr_ret lr
794794
795795 #elif !defined(CONFIG_SMP)
796796
arch/arm/kernel/entry-common.S+11−8
@@ -87,7 +87,7 @@ ENTRY(ret_from_fork) · 86 unmodified lines
8787 get_thread_info tsk
8888 ldr r1, [tsk, #TI_FLAGS] @ check for syscall tracing
8989 mov why, #1
90− tst r1, #_TIF_SYSCALL_TRACE @ are we tracing syscalls?
90+ tst r1, #_TIF_SYSCALL_WORK @ are we tracing syscalls?
9191 beq ret_slow_syscall
9292 mov r1, sp
9393 mov r0, #1 @ trace exit [IP = 1]
@@ -149,6 +149,11 @@ ENDPROC(ret_from_fork) · 55 unmodified lines
149149 #endif
150150 #endif
151151
152+.macro mcount_adjust_addr rd, rn
153+ bic \rd, \rn, #1 @ clear the Thumb bit if present
154+ sub \rd, \rd, #MCOUNT_INSN_SIZE
155+.endm
156+
152157 .macro __mcount suffix
153158 mcount_enter
154159 ldr r0, =ftrace_trace_function
@@ -173,8 +178,7 @@ ENDPROC(ret_from_fork) · 18 unmodified lines
173178 mcount_exit
174179
175180 1: mcount_get_lr r1 @ lr of instrumented func
176− mov r0, lr @ instrumented function
177− sub r0, r0, #MCOUNT_INSN_SIZE
181+ mcount_adjust_addr r0, lr @ instrumented function
178182 adr lr, BSYM(2f)
179183 mov pc, r2
180184 2: mcount_exit
@@ -184,8 +188,7 @@ ENDPROC(ret_from_fork) · 3 unmodified lines
184188 mcount_enter
185189
186190 mcount_get_lr r1 @ lr of instrumented func
187− mov r0, lr @ instrumented function
188− sub r0, r0, #MCOUNT_INSN_SIZE
191+ mcount_adjust_addr r0, lr @ instrumented function
189192
190193 .globl ftrace_call\suffix
191194 ftrace_call\suffix:
@@ -205,11 +208,11 @@ ftrace_graph_call\suffix: · 13 unmodified lines
205208 #ifdef CONFIG_DYNAMIC_FTRACE
206209 @ called from __ftrace_caller, saved in mcount_enter
207210 ldr r1, [sp, #16] @ instrumented routine (func)
211+ mcount_adjust_addr r1, r1
208212 #else
209213 @ called from __mcount, untouched in lr
210− mov r1, lr @ instrumented routine (func)
214+ mcount_adjust_addr r1, lr @ instrumented routine (func)
211215 #endif
212− sub r1, r1, #MCOUNT_INSN_SIZE
213216 mov r2, fp @ frame pointer
214217 bl prepare_ftrace_return
215218 mcount_exit
@@ -443,7 +446,7 @@ ENTRY(vector_swi) · 227 unmodified lines
443446 1:
444447 #endif
445448
446− tst r10, #_TIF_SYSCALL_TRACE @ are we tracing syscalls?
449+ tst r10, #_TIF_SYSCALL_WORK @ are we tracing syscalls?
447450 bne __sys_trace
448451
449452 cmp scno, #NR_syscalls @ check upper syscall limit
arch/arm/kernel/perf_event_v7.c+28−0
@@ -469,6 +469,20 @@ static const unsigned armv7_a5_perf_cache_map[PERF_COUNT_HW_CACHE_MAX] · 468 unmodified lines
469469 [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
470470 },
471471 },
472+ [C(NODE)] = {
473+ [C(OP_READ)] = {
474+ [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
475+ [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
476+ },
477+ [C(OP_WRITE)] = {
478+ [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
479+ [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
480+ },
481+ [C(OP_PREFETCH)] = {
482+ [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
483+ [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
484+ },
485+ },
472486 };
473487
474488 /*
@@ -579,6 +593,20 @@ static const unsigned armv7_a15_perf_cache_map[PERF_COUNT_HW_CACHE_MAX] · 104 unmodified lines
579593 [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
580594 },
581595 },
596+ [C(NODE)] = {
597+ [C(OP_READ)] = {
598+ [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
599+ [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
600+ },
601+ [C(OP_WRITE)] = {
602+ [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
603+ [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
604+ },
605+ [C(OP_PREFETCH)] = {
606+ [C(RESULT_ACCESS)] = CACHE_OP_UNSUPPORTED,
607+ [C(RESULT_MISS)] = CACHE_OP_UNSUPPORTED,
608+ },
609+ },
582610 };
583611
584612 /*
arch/arm/kernel/ptrace.c+23−8
@@ -23,6 +23,7 @@ · 22 unmodified lines
2323 #include <linux/perf_event.h>
2424 #include <linux/hw_breakpoint.h>
2525 #include <linux/regset.h>
26+#include <linux/audit.h>
2627
2728 #include <asm/pgtable.h>
2829 #include <asm/system.h>
@@ -699,10 +700,13 @@ static int vfp_set(struct task_struct *target, · 670 unmodified lines
699700 {
700701 int ret;
701702 struct thread_info *thread = task_thread_info(target);
702− struct vfp_hard_struct new_vfp = thread->vfpstate.hard;
703+ struct vfp_hard_struct new_vfp;
703704 const size_t user_fpregs_offset = offsetof(struct user_vfp, fpregs);
704705 const size_t user_fpscr_offset = offsetof(struct user_vfp, fpscr);
705706
707+ vfp_sync_hwstate(thread);
708+ new_vfp = thread->vfpstate.hard;
709+
706710 ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf,
707711 &new_vfp.fpregs,
708712 user_fpregs_offset,
@@ -723,9 +727,8 @@ static int vfp_set(struct task_struct *target, · 14 unmodified lines
723727 if (ret)
724728 return ret;
725729
726− vfp_sync_hwstate(thread);
727− thread->vfpstate.hard = new_vfp;
728730 vfp_flush_hwstate(thread);
731+ thread->vfpstate.hard = new_vfp;
729732
730733 return 0;
731734 }
@@ -902,15 +905,16 @@ long arch_ptrace(struct task_struct *child, long request, · 170 unmodified lines
902905 return ret;
903906 }
904907
908+#ifdef __ARMEB__
909+#define AUDIT_ARCH_NR AUDIT_ARCH_ARMEB
910+#else
911+#define AUDIT_ARCH_NR AUDIT_ARCH_ARM
912+#endif
913+
905914 asmlinkage int syscall_trace(int why, struct pt_regs *regs, int scno)
906915 {
907916 unsigned long ip;
908917
909− if (!test_thread_flag(TIF_SYSCALL_TRACE))
910− return scno;
911− if (!(current->ptrace & PT_PTRACED))
912− return scno;
913−
914918 /*
915919 * Save IP. IP is used to denote syscall entry/exit:
916920 * IP = 0 -> entry, = 1 -> exit
@@ -918,6 +922,17 @@ asmlinkage int syscall_trace(int why, struct pt_regs *regs, int scno) · 1 unmodified line
918922 ip = regs->ARM_ip;
919923 regs->ARM_ip = why;
920924
925+ if (!ip)
926+ audit_syscall_exit(regs);
927+ else
928+ audit_syscall_entry(AUDIT_ARCH_NR, scno, regs->ARM_r0,
929+ regs->ARM_r1, regs->ARM_r2, regs->ARM_r3);
930+
931+ if (!test_thread_flag(TIF_SYSCALL_TRACE))
932+ return scno;
933+ if (!(current->ptrace & PT_PTRACED))
934+ return scno;
935+
921936 current_thread_info()->syscall = scno;
922937
923938 /* the 0x80 provides a way for the tracing parent to distinguish
arch/arm/kernel/setup.c+15−2
@@ -21,7 +21,6 @@ · 20 unmodified lines
2121 #include <linux/init.h>
2222 #include <linux/kexec.h>
2323 #include <linux/of_fdt.h>
24−#include <linux/crash_dump.h>
2524 #include <linux/root_dev.h>
2625 #include <linux/cpu.h>
2726 #include <linux/interrupt.h>
@@ -160,7 +159,7 @@ static struct resource mem_res[] = { · 132 unmodified lines
160159 .flags = IORESOURCE_MEM
161160 },
162161 {
163− .name = "Kernel text",
162+ .name = "Kernel code",
164163 .start = 0,
165164 .end = 0,
166165 .flags = IORESOURCE_MEM
@@ -427,6 +426,20 @@ void cpu_init(void) · 260 unmodified lines
427426 : "r14");
428427 }
429428
429+int __cpu_logical_map[NR_CPUS];
430+
431+void __init smp_setup_processor_id(void)
432+{
433+ int i;
434+ u32 cpu = is_smp() ? read_cpuid_mpidr() & 0xff : 0;
435+
436+ cpu_logical_map(0) = cpu;
437+ for (i = 1; i < NR_CPUS; ++i)
438+ cpu_logical_map(i) = i == cpu ? 0 : i;
439+
440+ printk(KERN_INFO "Booting Linux on physical CPU %d\n", cpu);
441+}
442+
430443 static void __init setup_processor(void)
431444 {
432445 struct proc_info_list *list;
arch/arm/kernel/signal.c+2−3
@@ -227,6 +227,8 @@ static int restore_vfp_context(struct vfp_sigframe __user *frame) · 226 unmodified lines
227227 if (magic != VFP_MAGIC || size != VFP_STORAGE_SIZE)
228228 return -EINVAL;
229229
230+ vfp_flush_hwstate(thread);
231+
230232 /*
231233 * Copy the floating point registers. There can be unused
232234 * registers see asm/hwcap.h for details.
@@ -251,9 +253,6 @@ static int restore_vfp_context(struct vfp_sigframe __user *frame) · 18 unmodified lines
251253 __get_user_error(h->fpinst, &frame->ufp_exc.fpinst, err);
252254 __get_user_error(h->fpinst2, &frame->ufp_exc.fpinst2, err);
253255
254− if (!err)
255− vfp_flush_hwstate(thread);
256−
257256 return err ? -EFAULT : 0;
258257 }
259258
arch/arm/kernel/smp.c+8−16
@@ -233,20 +233,6 @@ void __ref cpu_die(void) · 232 unmodified lines
233233 }
234234 #endif /* CONFIG_HOTPLUG_CPU */
235235
236−int __cpu_logical_map[NR_CPUS];
237−
238−void __init smp_setup_processor_id(void)
239−{
240− int i;
241− u32 cpu = is_smp() ? read_cpuid_mpidr() & 0xff : 0;
242−
243− cpu_logical_map(0) = cpu;
244− for (i = 1; i < NR_CPUS; ++i)
245− cpu_logical_map(i) = i == cpu ? 0 : i;
246−
247− printk(KERN_INFO "Booting Linux on physical CPU %d\n", cpu);
248−}
249−
250236 /*
251237 * Called by both boot and secondaries to move global data into
252238 * per-processor storage.
@@ -443,9 +429,7 @@ static DEFINE_PER_CPU(struct clock_event_device, percpu_clockevent); · 190 unmodified lines
443429 static void ipi_timer(void)
444430 {
445431 struct clock_event_device *evt = &__get_cpu_var(percpu_clockevent);
446− irq_enter();
447432 evt->event_handler(evt);
448− irq_exit();
449433 }
450434
451435 #ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST
@@ -548,7 +532,9 @@ void handle_IPI(int ipinr, struct pt_regs *regs) · 96 unmodified lines
548532
549533 switch (ipinr) {
550534 case IPI_TIMER:
535+ irq_enter();
551536 ipi_timer();
537+ irq_exit();
552538 break;
553539
554540 case IPI_RESCHEDULE:
@@ -556,15 +542,21 @@ void handle_IPI(int ipinr, struct pt_regs *regs) · 1 unmodified line
556542 break;
557543
558544 case IPI_CALL_FUNC:
545+ irq_enter();
559546 generic_smp_call_function_interrupt();
547+ irq_exit();
560548 break;
561549
562550 case IPI_CALL_FUNC_SINGLE:
551+ irq_enter();
563552 generic_smp_call_function_single_interrupt();
553+ irq_exit();
564554 break;
565555
566556 case IPI_CPU_STOP:
557+ irq_enter();
567558 ipi_cpu_stop(cpu);
559+ irq_exit();
568560 break;
569561
570562 default:
arch/arm/kernel/smp_twd.c+3−1
@@ -129,7 +129,7 @@ static struct notifier_block twd_cpufreq_nb = { · 128 unmodified lines
129129
130130 static int twd_cpufreq_init(void)
131131 {
132− if (!IS_ERR(twd_clk))
132+ if (twd_evt && *__this_cpu_ptr(twd_evt) && !IS_ERR(twd_clk))
133133 return cpufreq_register_notifier(&twd_cpufreq_nb,
134134 CPUFREQ_TRANSITION_NOTIFIER);
135135
@@ -252,6 +252,8 @@ void __cpuinit twd_timer_setup(struct clock_event_device *clk) · 116 unmodified lines
252252 else
253253 twd_calibrate_rate();
254254
255+ __raw_writel(0, twd_base + TWD_TIMER_CONTROL);
256+
255257 clk->name = "local_timer";
256258 clk->features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT |
257259 CLOCK_EVT_FEAT_C3STOP;
arch/arm/kernel/traps.c+4−1
@@ -266,6 +266,7 @@ void die(const char *str, struct pt_regs *regs, int err) · 265 unmodified lines
266266 {
267267 struct thread_info *thread = current_thread_info();
268268 int ret;
269+ enum bug_trap_type bug_type = BUG_TRAP_TYPE_NONE;
269270
270271 oops_enter();
271272
@@ -273,7 +274,9 @@ void die(const char *str, struct pt_regs *regs, int err) · 1 unmodified line
273274 console_verbose();
274275 bust_spinlocks(1);
275276 if (!user_mode(regs))
276− report_bug(regs->ARM_pc, regs);
277+ bug_type = report_bug(regs->ARM_pc, regs);
278+ if (bug_type != BUG_TRAP_TYPE_NONE)
279+ str = "Oops - BUG";
277280 ret = __die(str, err, thread, regs);
278281
279282 if (regs && kexec_should_crash(thread->task))
arch/arm/kernel/vmlinux.lds.S+6−4
@@ -4,11 +4,13 @@ · 3 unmodified lines
44 */
55
66 #include <asm-generic/vmlinux.lds.h>
7+#include <asm/cache.h>
78 #include <asm/thread_info.h>
89 #include <asm/memory.h>
910 #include <asm/page.h>
1011
1112 #define PROC_INFO \
13+ . = ALIGN(4); \
1214 VMLINUX_SYMBOL(__proc_info_begin) = .; \
1315 *(.proc.info.init) \
1416 VMLINUX_SYMBOL(__proc_info_end) = .;
@@ -181,7 +183,7 @@ SECTIONS · 166 unmodified lines
181183 }
182184 #endif
183185
184− PERCPU_SECTION(32)
186+ PERCPU_SECTION(L1_CACHE_BYTES)
185187
186188 #ifdef CONFIG_XIP_KERNEL
187189 __data_loc = ALIGN(4); /* location in binary */
@@ -212,13 +214,13 @@ SECTIONS · 24 unmodified lines
212214 #endif
213215
214216 NOSAVE_DATA
215− CACHELINE_ALIGNED_DATA(32)
216− READ_MOSTLY_DATA(32)
217+ CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES)
218+ READ_MOSTLY_DATA(L1_CACHE_BYTES)
217219
218220 /*
219221 * The exception fixup table (might need resorting at runtime)
220222 */
221− . = ALIGN(32);
223+ . = ALIGN(4);
222224 __start___ex_table = .;
223225 #ifdef CONFIG_MMU
224226 *(__ex_table)
arch/arm/lib/getuser.S+6−6
@@ -31,18 +31,18 @@ · 30 unmodified lines
3131 #include <asm/domain.h>
3232
3333 ENTRY(__get_user_1)
34−1: T(ldrb) r2, [r0]
34+1: TUSER(ldrb) r2, [r0]
3535 mov r0, #0
3636 mov pc, lr
3737 ENDPROC(__get_user_1)
3838
3939 ENTRY(__get_user_2)
4040 #ifdef CONFIG_THUMB2_KERNEL
41−2: T(ldrb) r2, [r0]
42−3: T(ldrb) r3, [r0, #1]
41+2: TUSER(ldrb) r2, [r0]
42+3: TUSER(ldrb) r3, [r0, #1]
4343 #else
44−2: T(ldrb) r2, [r0], #1
45−3: T(ldrb) r3, [r0]
44+2: TUSER(ldrb) r2, [r0], #1
45+3: TUSER(ldrb) r3, [r0]
4646 #endif
4747 #ifndef __ARMEB__
4848 orr r2, r2, r3, lsl #8
@@ -54,7 +54,7 @@ ENTRY(__get_user_2) · 5 unmodified lines
5454 ENDPROC(__get_user_2)
5555
5656 ENTRY(__get_user_4)
57−4: T(ldr) r2, [r0]
57+4: TUSER(ldr) r2, [r0]
5858 mov r0, #0
5959 mov pc, lr
6060 ENDPROC(__get_user_4)
arch/arm/lib/putuser.S+14−14
@@ -31,7 +31,7 @@ · 30 unmodified lines
3131 #include <asm/domain.h>
3232
3333 ENTRY(__put_user_1)
34−1: T(strb) r2, [r0]
34+1: TUSER(strb) r2, [r0]
3535 mov r0, #0
3636 mov pc, lr
3737 ENDPROC(__put_user_1)
@@ -40,19 +40,19 @@ ENTRY(__put_user_2) · 2 unmodified lines
4040 mov ip, r2, lsr #8
4141 #ifdef CONFIG_THUMB2_KERNEL
4242 #ifndef __ARMEB__
43−2: T(strb) r2, [r0]
44−3: T(strb) ip, [r0, #1]
43+2: TUSER(strb) r2, [r0]
44+3: TUSER(strb) ip, [r0, #1]
4545 #else
46−2: T(strb) ip, [r0]
47−3: T(strb) r2, [r0, #1]
46+2: TUSER(strb) ip, [r0]
47+3: TUSER(strb) r2, [r0, #1]
4848 #endif
4949 #else /* !CONFIG_THUMB2_KERNEL */
5050 #ifndef __ARMEB__
51−2: T(strb) r2, [r0], #1
52−3: T(strb) ip, [r0]
51+2: TUSER(strb) r2, [r0], #1
52+3: TUSER(strb) ip, [r0]
5353 #else
54−2: T(strb) ip, [r0], #1
55−3: T(strb) r2, [r0]
54+2: TUSER(strb) ip, [r0], #1
55+3: TUSER(strb) r2, [r0]
5656 #endif
5757 #endif /* CONFIG_THUMB2_KERNEL */
5858 mov r0, #0
@@ -60,18 +60,18 @@ ENTRY(__put_user_2) · 1 unmodified line
6060 ENDPROC(__put_user_2)
6161
6262 ENTRY(__put_user_4)
63−4: T(str) r2, [r0]
63+4: TUSER(str) r2, [r0]
6464 mov r0, #0
6565 mov pc, lr
6666 ENDPROC(__put_user_4)
6767
6868 ENTRY(__put_user_8)
6969 #ifdef CONFIG_THUMB2_KERNEL
70−5: T(str) r2, [r0]
71−6: T(str) r3, [r0, #4]
70+5: TUSER(str) r2, [r0]
71+6: TUSER(str) r3, [r0, #4]
7272 #else
73−5: T(str) r2, [r0], #4
74−6: T(str) r3, [r0]
73+5: TUSER(str) r2, [r0], #4
74+6: TUSER(str) r3, [r0]
7575 #endif
7676 mov r0, #0
7777 mov pc, lr
arch/arm/lib/uaccess.S+41−41
@@ -32,11 +32,11 @@ · 31 unmodified lines
3232 rsb ip, ip, #4
3333 cmp ip, #2
3434 ldrb r3, [r1], #1
35−USER( T(strb) r3, [r0], #1) @ May fault
35+USER( TUSER( strb) r3, [r0], #1) @ May fault
3636 ldrgeb r3, [r1], #1
37−USER( T(strgeb) r3, [r0], #1) @ May fault
37+USER( TUSER( strgeb) r3, [r0], #1) @ May fault
3838 ldrgtb r3, [r1], #1
39−USER( T(strgtb) r3, [r0], #1) @ May fault
39+USER( TUSER( strgtb) r3, [r0], #1) @ May fault
4040 sub r2, r2, ip
4141 b .Lc2u_dest_aligned
4242
@@ -59,7 +59,7 @@ ENTRY(__copy_to_user) · 16 unmodified lines
5959 addmi ip, r2, #4
6060 bmi .Lc2u_0nowords
6161 ldr r3, [r1], #4
62−USER( T(str) r3, [r0], #4) @ May fault
62+USER( TUSER( str) r3, [r0], #4) @ May fault
6363 mov ip, r0, lsl #32 - PAGE_SHIFT @ On each page, use a ld/st??t instruction
6464 rsb ip, ip, #0
6565 movs ip, ip, lsr #32 - PAGE_SHIFT
@@ -88,18 +88,18 @@ USER( T(str) r3, [r0], #4) @ May fault · 22 unmodified lines
8888 stmneia r0!, {r3 - r4} @ Shouldnt fault
8989 tst ip, #4
9090 ldrne r3, [r1], #4
91− T(strne) r3, [r0], #4 @ Shouldnt fault
91+ TUSER( strne) r3, [r0], #4 @ Shouldnt fault
9292 ands ip, ip, #3
9393 beq .Lc2u_0fupi
9494 .Lc2u_0nowords: teq ip, #0
9595 beq .Lc2u_finished
9696 .Lc2u_nowords: cmp ip, #2
9797 ldrb r3, [r1], #1
98−USER( T(strb) r3, [r0], #1) @ May fault
98+USER( TUSER( strb) r3, [r0], #1) @ May fault
9999 ldrgeb r3, [r1], #1
100−USER( T(strgeb) r3, [r0], #1) @ May fault
100+USER( TUSER( strgeb) r3, [r0], #1) @ May fault
101101 ldrgtb r3, [r1], #1
102−USER( T(strgtb) r3, [r0], #1) @ May fault
102+USER( TUSER( strgtb) r3, [r0], #1) @ May fault
103103 b .Lc2u_finished
104104
105105 .Lc2u_not_enough:
@@ -120,7 +120,7 @@ USER( T(strgtb) r3, [r0], #1) @ May fault · 14 unmodified lines
120120 mov r3, r7, pull #8
121121 ldr r7, [r1], #4
122122 orr r3, r3, r7, push #24
123−USER( T(str) r3, [r0], #4) @ May fault
123+USER( TUSER( str) r3, [r0], #4) @ May fault
124124 mov ip, r0, lsl #32 - PAGE_SHIFT
125125 rsb ip, ip, #0
126126 movs ip, ip, lsr #32 - PAGE_SHIFT
@@ -155,18 +155,18 @@ USER( T(str) r3, [r0], #4) @ May fault · 28 unmodified lines
155155 movne r3, r7, pull #8
156156 ldrne r7, [r1], #4
157157 orrne r3, r3, r7, push #24
158− T(strne) r3, [r0], #4 @ Shouldnt fault
158+ TUSER( strne) r3, [r0], #4 @ Shouldnt fault
159159 ands ip, ip, #3
160160 beq .Lc2u_1fupi
161161 .Lc2u_1nowords: mov r3, r7, get_byte_1
162162 teq ip, #0
163163 beq .Lc2u_finished
164164 cmp ip, #2
165−USER( T(strb) r3, [r0], #1) @ May fault
165+USER( TUSER( strb) r3, [r0], #1) @ May fault
166166 movge r3, r7, get_byte_2
167−USER( T(strgeb) r3, [r0], #1) @ May fault
167+USER( TUSER( strgeb) r3, [r0], #1) @ May fault
168168 movgt r3, r7, get_byte_3
169−USER( T(strgtb) r3, [r0], #1) @ May fault
169+USER( TUSER( strgtb) r3, [r0], #1) @ May fault
170170 b .Lc2u_finished
171171
172172 .Lc2u_2fupi: subs r2, r2, #4
@@ -175,7 +175,7 @@ USER( T(strgtb) r3, [r0], #1) @ May fault · 2 unmodified lines
175175 mov r3, r7, pull #16
176176 ldr r7, [r1], #4
177177 orr r3, r3, r7, push #16
178−USER( T(str) r3, [r0], #4) @ May fault
178+USER( TUSER( str) r3, [r0], #4) @ May fault
179179 mov ip, r0, lsl #32 - PAGE_SHIFT
180180 rsb ip, ip, #0
181181 movs ip, ip, lsr #32 - PAGE_SHIFT
@@ -210,18 +210,18 @@ USER( T(str) r3, [r0], #4) @ May fault · 28 unmodified lines
210210 movne r3, r7, pull #16
211211 ldrne r7, [r1], #4
212212 orrne r3, r3, r7, push #16
213− T(strne) r3, [r0], #4 @ Shouldnt fault
213+ TUSER( strne) r3, [r0], #4 @ Shouldnt fault
214214 ands ip, ip, #3
215215 beq .Lc2u_2fupi
216216 .Lc2u_2nowords: mov r3, r7, get_byte_2
217217 teq ip, #0
218218 beq .Lc2u_finished
219219 cmp ip, #2
220−USER( T(strb) r3, [r0], #1) @ May fault
220+USER( TUSER( strb) r3, [r0], #1) @ May fault
221221 movge r3, r7, get_byte_3
222−USER( T(strgeb) r3, [r0], #1) @ May fault
222+USER( TUSER( strgeb) r3, [r0], #1) @ May fault
223223 ldrgtb r3, [r1], #0
224−USER( T(strgtb) r3, [r0], #1) @ May fault
224+USER( TUSER( strgtb) r3, [r0], #1) @ May fault
225225 b .Lc2u_finished
226226
227227 .Lc2u_3fupi: subs r2, r2, #4
@@ -230,7 +230,7 @@ USER( T(strgtb) r3, [r0], #1) @ May fault · 2 unmodified lines
230230 mov r3, r7, pull #24
231231 ldr r7, [r1], #4
232232 orr r3, r3, r7, push #8
233−USER( T(str) r3, [r0], #4) @ May fault
233+USER( TUSER( str) r3, [r0], #4) @ May fault
234234 mov ip, r0, lsl #32 - PAGE_SHIFT
235235 rsb ip, ip, #0
236236 movs ip, ip, lsr #32 - PAGE_SHIFT
@@ -265,18 +265,18 @@ USER( T(str) r3, [r0], #4) @ May fault · 28 unmodified lines
265265 movne r3, r7, pull #24
266266 ldrne r7, [r1], #4
267267 orrne r3, r3, r7, push #8
268− T(strne) r3, [r0], #4 @ Shouldnt fault
268+ TUSER( strne) r3, [r0], #4 @ Shouldnt fault
269269 ands ip, ip, #3
270270 beq .Lc2u_3fupi
271271 .Lc2u_3nowords: mov r3, r7, get_byte_3
272272 teq ip, #0
273273 beq .Lc2u_finished
274274 cmp ip, #2
275−USER( T(strb) r3, [r0], #1) @ May fault
275+USER( TUSER( strb) r3, [r0], #1) @ May fault
276276 ldrgeb r3, [r1], #1
277−USER( T(strgeb) r3, [r0], #1) @ May fault
277+USER( TUSER( strgeb) r3, [r0], #1) @ May fault
278278 ldrgtb r3, [r1], #0
279−USER( T(strgtb) r3, [r0], #1) @ May fault
279+USER( TUSER( strgtb) r3, [r0], #1) @ May fault
280280 b .Lc2u_finished
281281 ENDPROC(__copy_to_user)
282282
@@ -295,11 +295,11 @@ ENDPROC(__copy_to_user) · 12 unmodified lines
295295 .Lcfu_dest_not_aligned:
296296 rsb ip, ip, #4
297297 cmp ip, #2
298−USER( T(ldrb) r3, [r1], #1) @ May fault
298+USER( TUSER( ldrb) r3, [r1], #1) @ May fault
299299 strb r3, [r0], #1
300−USER( T(ldrgeb) r3, [r1], #1) @ May fault
300+USER( TUSER( ldrgeb) r3, [r1], #1) @ May fault
301301 strgeb r3, [r0], #1
302−USER( T(ldrgtb) r3, [r1], #1) @ May fault
302+USER( TUSER( ldrgtb) r3, [r1], #1) @ May fault
303303 strgtb r3, [r0], #1
304304 sub r2, r2, ip
305305 b .Lcfu_dest_aligned
@@ -322,7 +322,7 @@ ENTRY(__copy_from_user) · 16 unmodified lines
322322 .Lcfu_0fupi: subs r2, r2, #4
323323 addmi ip, r2, #4
324324 bmi .Lcfu_0nowords
325−USER( T(ldr) r3, [r1], #4)
325+USER( TUSER( ldr) r3, [r1], #4)
326326 str r3, [r0], #4
327327 mov ip, r1, lsl #32 - PAGE_SHIFT @ On each page, use a ld/st??t instruction
328328 rsb ip, ip, #0
@@ -351,18 +351,18 @@ USER( T(ldr) r3, [r1], #4) · 22 unmodified lines
351351 ldmneia r1!, {r3 - r4} @ Shouldnt fault
352352 stmneia r0!, {r3 - r4}
353353 tst ip, #4
354− T(ldrne) r3, [r1], #4 @ Shouldnt fault
354+ TUSER( ldrne) r3, [r1], #4 @ Shouldnt fault
355355 strne r3, [r0], #4
356356 ands ip, ip, #3
357357 beq .Lcfu_0fupi
358358 .Lcfu_0nowords: teq ip, #0
359359 beq .Lcfu_finished
360360 .Lcfu_nowords: cmp ip, #2
361−USER( T(ldrb) r3, [r1], #1) @ May fault
361+USER( TUSER( ldrb) r3, [r1], #1) @ May fault
362362 strb r3, [r0], #1
363−USER( T(ldrgeb) r3, [r1], #1) @ May fault
363+USER( TUSER( ldrgeb) r3, [r1], #1) @ May fault
364364 strgeb r3, [r0], #1
365−USER( T(ldrgtb) r3, [r1], #1) @ May fault
365+USER( TUSER( ldrgtb) r3, [r1], #1) @ May fault
366366 strgtb r3, [r0], #1
367367 b .Lcfu_finished
368368
@@ -375,7 +375,7 @@ USER( T(ldrgtb) r3, [r1], #1) @ May fault · 6 unmodified lines
375375
376376 .Lcfu_src_not_aligned:
377377 bic r1, r1, #3
378−USER( T(ldr) r7, [r1], #4) @ May fault
378+USER( TUSER( ldr) r7, [r1], #4) @ May fault
379379 cmp ip, #2
380380 bgt .Lcfu_3fupi
381381 beq .Lcfu_2fupi
@@ -383,7 +383,7 @@ USER( T(ldr) r7, [r1], #4) @ May fault · 1 unmodified line
383383 addmi ip, r2, #4
384384 bmi .Lcfu_1nowords
385385 mov r3, r7, pull #8
386−USER( T(ldr) r7, [r1], #4) @ May fault
386+USER( TUSER( ldr) r7, [r1], #4) @ May fault
387387 orr r3, r3, r7, push #24
388388 str r3, [r0], #4
389389 mov ip, r1, lsl #32 - PAGE_SHIFT
@@ -418,7 +418,7 @@ USER( T(ldr) r7, [r1], #4) @ May fault · 28 unmodified lines
418418 stmneia r0!, {r3 - r4}
419419 tst ip, #4
420420 movne r3, r7, pull #8
421−USER( T(ldrne) r7, [r1], #4) @ May fault
421+USER( TUSER( ldrne) r7, [r1], #4) @ May fault
422422 orrne r3, r3, r7, push #24
423423 strne r3, [r0], #4
424424 ands ip, ip, #3
@@ -438,7 +438,7 @@ USER( T(ldrne) r7, [r1], #4) @ May fault · 13 unmodified lines
438438 addmi ip, r2, #4
439439 bmi .Lcfu_2nowords
440440 mov r3, r7, pull #16
441−USER( T(ldr) r7, [r1], #4) @ May fault
441+USER( TUSER( ldr) r7, [r1], #4) @ May fault
442442 orr r3, r3, r7, push #16
443443 str r3, [r0], #4
444444 mov ip, r1, lsl #32 - PAGE_SHIFT
@@ -474,7 +474,7 @@ USER( T(ldr) r7, [r1], #4) @ May fault · 29 unmodified lines
474474 stmneia r0!, {r3 - r4}
475475 tst ip, #4
476476 movne r3, r7, pull #16
477−USER( T(ldrne) r7, [r1], #4) @ May fault
477+USER( TUSER( ldrne) r7, [r1], #4) @ May fault
478478 orrne r3, r3, r7, push #16
479479 strne r3, [r0], #4
480480 ands ip, ip, #3
@@ -486,7 +486,7 @@ USER( T(ldrne) r7, [r1], #4) @ May fault · 5 unmodified lines
486486 strb r3, [r0], #1
487487 movge r3, r7, get_byte_3
488488 strgeb r3, [r0], #1
489−USER( T(ldrgtb) r3, [r1], #0) @ May fault
489+USER( TUSER( ldrgtb) r3, [r1], #0) @ May fault
490490 strgtb r3, [r0], #1
491491 b .Lcfu_finished
492492
@@ -494,7 +494,7 @@ USER( T(ldrgtb) r3, [r1], #0) @ May fault · 1 unmodified line
494494 addmi ip, r2, #4
495495 bmi .Lcfu_3nowords
496496 mov r3, r7, pull #24
497−USER( T(ldr) r7, [r1], #4) @ May fault
497+USER( TUSER( ldr) r7, [r1], #4) @ May fault
498498 orr r3, r3, r7, push #8
499499 str r3, [r0], #4
500500 mov ip, r1, lsl #32 - PAGE_SHIFT
@@ -529,7 +529,7 @@ USER( T(ldr) r7, [r1], #4) @ May fault · 28 unmodified lines
529529 stmneia r0!, {r3 - r4}
530530 tst ip, #4
531531 movne r3, r7, pull #24
532−USER( T(ldrne) r7, [r1], #4) @ May fault
532+USER( TUSER( ldrne) r7, [r1], #4) @ May fault
533533 orrne r3, r3, r7, push #8
534534 strne r3, [r0], #4
535535 ands ip, ip, #3
@@ -539,9 +539,9 @@ USER( T(ldrne) r7, [r1], #4) @ May fault · 3 unmodified lines
539539 beq .Lcfu_finished
540540 cmp ip, #2
541541 strb r3, [r0], #1
542−USER( T(ldrgeb) r3, [r1], #1) @ May fault
542+USER( TUSER( ldrgeb) r3, [r1], #1) @ May fault
543543 strgeb r3, [r0], #1
544−USER( T(ldrgtb) r3, [r1], #1) @ May fault
544+USER( TUSER( ldrgtb) r3, [r1], #1) @ May fault
545545 strgtb r3, [r0], #1
546546 b .Lcfu_finished
547547 ENDPROC(__copy_from_user)
arch/arm/mach-at91/Kconfig+14−0
@@ -18,6 +18,12 @@ config HAVE_AT91_USART4 · 17 unmodified lines
1818 config HAVE_AT91_USART5
1919 bool
2020
21+config AT91_SAM9_ALT_RESET
22+ bool
23+
24+config AT91_SAM9G45_RESET
25+ bool
26+
2127 menu "Atmel AT91 System-on-Chip"
2228
2329 choice
@@ -39,6 +45,7 @@ config ARCH_AT91SAM9260 · 15 unmodified lines
3945 select HAVE_AT91_USART4
4046 select HAVE_AT91_USART5
4147 select HAVE_NET_MACB
48+ select AT91_SAM9_ALT_RESET
4249
4350 config ARCH_AT91SAM9261
4451 bool "AT91SAM9261"
@@ -46,6 +53,7 @@ config ARCH_AT91SAM9261 · 1 unmodified line
4653 select GENERIC_CLOCKEVENTS
4754 select HAVE_FB_ATMEL
4855 select HAVE_AT91_DBGU0
56+ select AT91_SAM9_ALT_RESET
4957
5058 config ARCH_AT91SAM9G10
5159 bool "AT91SAM9G10"
@@ -53,6 +61,7 @@ config ARCH_AT91SAM9G10 · 1 unmodified line
5361 select GENERIC_CLOCKEVENTS
5462 select HAVE_AT91_DBGU0
5563 select HAVE_FB_ATMEL
64+ select AT91_SAM9_ALT_RESET
5665
5766 config ARCH_AT91SAM9263
5867 bool "AT91SAM9263"
@@ -61,6 +70,7 @@ config ARCH_AT91SAM9263 · 2 unmodified lines
6170 select HAVE_FB_ATMEL
6271 select HAVE_NET_MACB
6372 select HAVE_AT91_DBGU1
73+ select AT91_SAM9_ALT_RESET
6474
6575 config ARCH_AT91SAM9RL
6676 bool "AT91SAM9RL"
@@ -69,6 +79,7 @@ config ARCH_AT91SAM9RL · 2 unmodified lines
6979 select HAVE_AT91_USART3
7080 select HAVE_FB_ATMEL
7181 select HAVE_AT91_DBGU0
82+ select AT91_SAM9_ALT_RESET
7283
7384 config ARCH_AT91SAM9G20
7485 bool "AT91SAM9G20"
@@ -79,6 +90,7 @@ config ARCH_AT91SAM9G20 · 4 unmodified lines
7990 select HAVE_AT91_USART4
8091 select HAVE_AT91_USART5
8192 select HAVE_NET_MACB
93+ select AT91_SAM9_ALT_RESET
8294
8395 config ARCH_AT91SAM9G45
8496 bool "AT91SAM9G45"
@@ -88,6 +100,7 @@ config ARCH_AT91SAM9G45 · 3 unmodified lines
88100 select HAVE_FB_ATMEL
89101 select HAVE_NET_MACB
90102 select HAVE_AT91_DBGU1
103+ select AT91_SAM9G45_RESET
91104
92105 config ARCH_AT91CAP9
93106 bool "AT91CAP9"
@@ -96,6 +109,7 @@ config ARCH_AT91CAP9 · 2 unmodified lines
96109 select HAVE_FB_ATMEL
97110 select HAVE_NET_MACB
98111 select HAVE_AT91_DBGU1
112+ select AT91_SAM9G45_RESET
99113
100114 config ARCH_AT91X40
101115 bool "AT91x40"
arch/arm/mach-at91/Makefile+8−6
@@ -8,15 +8,17 @@ obj-n := · 7 unmodified lines
88 obj- :=
99
1010 obj-$(CONFIG_AT91_PMC_UNIT) += clock.o
11+obj-$(CONFIG_AT91_SAM9_ALT_RESET) += at91sam9_alt_reset.o
12+obj-$(CONFIG_AT91_SAM9G45_RESET) += at91sam9g45_reset.o
1113
1214 # CPU-specific support
1315 obj-$(CONFIG_ARCH_AT91RM9200) += at91rm9200.o at91rm9200_time.o at91rm9200_devices.o
14−obj-$(CONFIG_ARCH_AT91SAM9260) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o at91sam9_alt_reset.o
15−obj-$(CONFIG_ARCH_AT91SAM9261) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o at91sam9_alt_reset.o
16−obj-$(CONFIG_ARCH_AT91SAM9G10) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o at91sam9_alt_reset.o
17−obj-$(CONFIG_ARCH_AT91SAM9263) += at91sam9263.o at91sam926x_time.o at91sam9263_devices.o sam9_smc.o at91sam9_alt_reset.o
18−obj-$(CONFIG_ARCH_AT91SAM9RL) += at91sam9rl.o at91sam926x_time.o at91sam9rl_devices.o sam9_smc.o at91sam9_alt_reset.o
19−obj-$(CONFIG_ARCH_AT91SAM9G20) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o at91sam9_alt_reset.o
16+obj-$(CONFIG_ARCH_AT91SAM9260) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o
17+obj-$(CONFIG_ARCH_AT91SAM9261) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o
18+obj-$(CONFIG_ARCH_AT91SAM9G10) += at91sam9261.o at91sam926x_time.o at91sam9261_devices.o sam9_smc.o
19+obj-$(CONFIG_ARCH_AT91SAM9263) += at91sam9263.o at91sam926x_time.o at91sam9263_devices.o sam9_smc.o
20+obj-$(CONFIG_ARCH_AT91SAM9RL) += at91sam9rl.o at91sam926x_time.o at91sam9rl_devices.o sam9_smc.o
21+obj-$(CONFIG_ARCH_AT91SAM9G20) += at91sam9260.o at91sam926x_time.o at91sam9260_devices.o sam9_smc.o
2022 obj-$(CONFIG_ARCH_AT91SAM9G45) += at91sam9g45.o at91sam926x_time.o at91sam9g45_devices.o sam9_smc.o
2123 obj-$(CONFIG_ARCH_AT91CAP9) += at91cap9.o at91sam926x_time.o at91cap9_devices.o sam9_smc.o
2224 obj-$(CONFIG_ARCH_AT91X40) += at91x40.o at91x40_time.o
arch/arm/mach-at91/at91cap9.c+2−7
@@ -21,7 +21,6 @@ · 20 unmodified lines
2121 #include <mach/cpu.h>
2222 #include <mach/at91cap9.h>
2323 #include <mach/at91_pmc.h>
24−#include <mach/at91_rstc.h>
2524
2625 #include "soc.h"
2726 #include "generic.h"
@@ -314,11 +313,6 @@ static struct at91_gpio_bank at91cap9_gpio[] __initdata = { · 286 unmodified lines
314313 }
315314 };
316315
317−static void at91cap9_restart(char mode, const char *cmd)
318−{
319− at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_PROCRST | AT91_RSTC_PERRST);
320−}
321−
322316 /* --------------------------------------------------------------------
323317 * AT91CAP9 processor initialization
324318 * -------------------------------------------------------------------- */
@@ -331,13 +325,14 @@ static void __init at91cap9_map_io(void) · 6 unmodified lines
331325 static void __init at91cap9_ioremap_registers(void)
332326 {
333327 at91_ioremap_shdwc(AT91CAP9_BASE_SHDWC);
328+ at91_ioremap_rstc(AT91CAP9_BASE_RSTC);
334329 at91sam926x_ioremap_pit(AT91CAP9_BASE_PIT);
335330 at91sam9_ioremap_smc(0, AT91CAP9_BASE_SMC);
336331 }
337332
338333 static void __init at91cap9_initialize(void)
339334 {
340− arm_pm_restart = at91cap9_restart;
335+ arm_pm_restart = at91sam9g45_restart;
341336 at91_extern_irq = (1 << AT91CAP9_ID_IRQ0) | (1 << AT91CAP9_ID_IRQ1);
342337
343338 /* Register GPIO subsystem */
arch/arm/mach-at91/at91rm9200_devices.c+1−1
@@ -83,7 +83,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) {} · 82 unmodified lines
8383 * USB Device (Gadget)
8484 * -------------------------------------------------------------------- */
8585
86−#ifdef CONFIG_USB_AT91
86+#if defined(CONFIG_USB_AT91) || defined(CONFIG_USB_AT91_MODULE)
8787 static struct at91_udc_data udc_data;
8888
8989 static struct resource udc_resources[] = {
arch/arm/mach-at91/at91sam9260.c+1−0
@@ -323,6 +323,7 @@ static void __init at91sam9260_map_io(void) · 322 unmodified lines
323323 static void __init at91sam9260_ioremap_registers(void)
324324 {
325325 at91_ioremap_shdwc(AT91SAM9260_BASE_SHDWC);
326+ at91_ioremap_rstc(AT91SAM9260_BASE_RSTC);
326327 at91sam926x_ioremap_pit(AT91SAM9260_BASE_PIT);
327328 at91sam9_ioremap_smc(0, AT91SAM9260_BASE_SMC);
328329 }
arch/arm/mach-at91/at91sam9260_devices.c+3−6
@@ -84,7 +84,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) {} · 83 unmodified lines
8484 * USB Device (Gadget)
8585 * -------------------------------------------------------------------- */
8686
87−#ifdef CONFIG_USB_AT91
87+#if defined(CONFIG_USB_AT91) || defined(CONFIG_USB_AT91_MODULE)
8888 static struct at91_udc_data udc_data;
8989
9090 static struct resource udc_resources[] = {
@@ -1215,8 +1215,7 @@ void __init at91_add_device_serial(void) {} · 1124 unmodified lines
12151215 * CF/IDE
12161216 * -------------------------------------------------------------------- */
12171217
1218−#if defined(CONFIG_BLK_DEV_IDE_AT91) || defined(CONFIG_BLK_DEV_IDE_AT91_MODULE) || \
1219− defined(CONFIG_PATA_AT91) || defined(CONFIG_PATA_AT91_MODULE) || \
1218+#if defined(CONFIG_PATA_AT91) || defined(CONFIG_PATA_AT91_MODULE) || \
12201219 defined(CONFIG_AT91_CF) || defined(CONFIG_AT91_CF_MODULE)
12211220
12221221 static struct at91_cf_data cf0_data;
@@ -1313,10 +1312,8 @@ void __init at91_add_device_cf(struct at91_cf_data *data) · 90 unmodified lines
13131312 if (data->flags & AT91_CF_TRUE_IDE)
13141313 #if defined(CONFIG_PATA_AT91) || defined(CONFIG_PATA_AT91_MODULE)
13151314 pdev->name = "pata_at91";
1316−#elif defined(CONFIG_BLK_DEV_IDE_AT91) || defined(CONFIG_BLK_DEV_IDE_AT91_MODULE)
1317− pdev->name = "at91_ide";
13181315 #else
1319−#warning "board requires AT91_CF_TRUE_IDE: enable either at91_ide or pata_at91"
1316+#warning "board requires AT91_CF_TRUE_IDE: enable pata_at91"
13201317 #endif
13211318 else
13221319 pdev->name = "at91_cf";
arch/arm/mach-at91/at91sam9261.c+1−0
@@ -281,6 +281,7 @@ static void __init at91sam9261_map_io(void) · 280 unmodified lines
281281 static void __init at91sam9261_ioremap_registers(void)
282282 {
283283 at91_ioremap_shdwc(AT91SAM9261_BASE_SHDWC);
284+ at91_ioremap_rstc(AT91SAM9261_BASE_RSTC);
284285 at91sam926x_ioremap_pit(AT91SAM9261_BASE_PIT);
285286 at91sam9_ioremap_smc(0, AT91SAM9261_BASE_SMC);
286287 }
arch/arm/mach-at91/at91sam9261_devices.c+1−1
@@ -87,7 +87,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) {} · 86 unmodified lines
8787 * USB Device (Gadget)
8888 * -------------------------------------------------------------------- */
8989
90−#ifdef CONFIG_USB_AT91
90+#if defined(CONFIG_USB_AT91) || defined(CONFIG_USB_AT91_MODULE)
9191 static struct at91_udc_data udc_data;
9292
9393 static struct resource udc_resources[] = {
arch/arm/mach-at91/at91sam9263.c+1−0
@@ -301,6 +301,7 @@ static void __init at91sam9263_map_io(void) · 300 unmodified lines
301301 static void __init at91sam9263_ioremap_registers(void)
302302 {
303303 at91_ioremap_shdwc(AT91SAM9263_BASE_SHDWC);
304+ at91_ioremap_rstc(AT91SAM9263_BASE_RSTC);
304305 at91sam926x_ioremap_pit(AT91SAM9263_BASE_PIT);
305306 at91sam9_ioremap_smc(0, AT91SAM9263_BASE_SMC0);
306307 at91sam9_ioremap_smc(1, AT91SAM9263_BASE_SMC1);
arch/arm/mach-at91/at91sam9263_devices.c+4−4
@@ -92,7 +92,7 @@ void __init at91_add_device_usbh(struct at91_usbh_data *data) {} · 91 unmodified lines
9292 * USB Device (Gadget)
9393 * -------------------------------------------------------------------- */
9494
95−#ifdef CONFIG_USB_AT91
95+#if defined(CONFIG_USB_AT91) || defined(CONFIG_USB_AT91_MODULE)
9696 static struct at91_udc_data udc_data;
9797
9898 static struct resource udc_resources[] = {
@@ -355,8 +355,8 @@ void __init at91_add_device_mmc(short mmc_id, struct at91_mmc_data *data) {} · 256 unmodified lines
355355 * Compact Flash (PCMCIA or IDE)
356356 * -------------------------------------------------------------------- */
357357
358−#if defined(CONFIG_AT91_CF) || defined(CONFIG_AT91_CF_MODULE) || \
359− defined(CONFIG_BLK_DEV_IDE_AT91) || defined(CONFIG_BLK_DEV_IDE_AT91_MODULE)
358+#if defined(CONFIG_PATA_AT91) || defined(CONFIG_PATA_AT91_MODULE) || \
359+ defined(CONFIG_AT91_CF) || defined(CONFIG_AT91_CF_MODULE)
360360
361361 static struct at91_cf_data cf0_data;
362362
@@ -450,7 +450,7 @@ void __init at91_add_device_cf(struct at91_cf_data *data) · 87 unmodified lines
450450 at91_set_A_periph(AT91_PIN_PD9, 0); /* CFCE2 */
451451 at91_set_A_periph(AT91_PIN_PD14, 0); /* CFNRW */
452452
453− pdev->name = (data->flags & AT91_CF_TRUE_IDE) ? "at91_ide" : "at91_cf";
453+ pdev->name = (data->flags & AT91_CF_TRUE_IDE) ? "pata_at91" : "at91_cf";
454454 platform_device_register(pdev);
455455 }
456456 #else
arch/arm/mach-at91/at91sam9_alt_reset.S+3−4
@@ -23,7 +23,8 @@ · 22 unmodified lines
2323 .globl at91sam9_alt_restart
2424
2525 at91sam9_alt_restart: ldr r0, .at91_va_base_sdramc @ preload constants
26− ldr r1, .at91_va_base_rstc_cr
26+ ldr r1, =at91_rstc_base
27+ ldr r1, [r1]
2728
2829 mov r2, #1
2930 mov r3, #AT91_SDRAMC_LPCB_POWER_DOWN
@@ -33,11 +34,9 @@ at91sam9_alt_restart: ldr r0, .at91_va_base_sdramc @ preload constants · 3 unmodified lines
3334
3435 str r2, [r0, #AT91_SDRAMC_TR] @ disable SDRAM access
3536 str r3, [r0, #AT91_SDRAMC_LPR] @ power down SDRAM
36− str r4, [r1] @ reset processor
37+ str r4, [r1, #AT91_RSTC_CR] @ reset processor
3738
3839 b .
3940
4041 .at91_va_base_sdramc:
4142 .word AT91_VA_BASE_SYS + AT91_SDRAMC0
42−.at91_va_base_rstc_cr:
43− .word AT91_VA_BASE_SYS + AT91_RSTC_CR
arch/arm/mach-at91/at91sam9g45.c+1−6
@@ -18,7 +18,6 @@ · 17 unmodified lines
1818 #include <asm/mach/map.h>
1919 #include <mach/at91sam9g45.h>
2020 #include <mach/at91_pmc.h>
21−#include <mach/at91_rstc.h>
2221 #include <mach/cpu.h>
2322
2423 #include "soc.h"
@@ -318,11 +317,6 @@ static struct at91_gpio_bank at91sam9g45_gpio[] __initdata = { · 293 unmodified lines
318317 }
319318 };
320319
321−static void at91sam9g45_restart(char mode, const char *cmd)
322−{
323− at91_sys_write(AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_PROCRST | AT91_RSTC_PERRST);
324−}
325−
326320 /* --------------------------------------------------------------------
327321 * AT91SAM9G45 processor initialization
328322 * -------------------------------------------------------------------- */
@@ -336,6 +330,7 @@ static void __init at91sam9g45_map_io(void) · 7 unmodified lines
336330 static void __init at91sam9g45_ioremap_registers(void)
337331 {
338332 at91_ioremap_shdwc(AT91SAM9G45_BASE_SHDWC);
333+ at91_ioremap_rstc(AT91SAM9G45_BASE_RSTC);
339334 at91sam926x_ioremap_pit(AT91SAM9G45_BASE_PIT);
340335 at91sam9_ioremap_smc(0, AT91SAM9G45_BASE_SMC);
341336 }
arch/arm/mach-at91/at91sam9g45_reset.S+40−0
@@ -0,0 +1,40 @@
1+/*
2+ * reset AT91SAM9G45 as per errata
3+ *
4+ * Copyright (C) 2011 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcosoft.com>
5+ *
6+ * unless the SDRAM is cleanly shutdown before we hit the
7+ * reset register it can be left driving the data bus and
8+ * killing the chance of a subsequent boot from NAND
9+ *
10+ * GPLv2 Only
11+ */
12+
13+#include <linux/linkage.h>
14+#include <mach/hardware.h>
15+#include <mach/at91sam9_ddrsdr.h>
16+#include <mach/at91_rstc.h>
17+
18+ .arm
19+
20+ .globl at91sam9g45_restart
21+
22+at91sam9g45_restart:
23+ ldr r0, .at91_va_base_sdramc0 @ preload constants
24+ ldr r1, =at91_rstc_base
25+ ldr r1, [r1]
26+
27+ mov r2, #1
28+ mov r3, #AT91_DDRSDRC_LPCB_POWER_DOWN
29+ ldr r4, =AT91_RSTC_KEY | AT91_RSTC_PERRST | AT91_RSTC_PROCRST
30+
31+ .balign 32 @ align to cache line
32+
33+ str r2, [r0, #AT91_DDRSDRC_RTR] @ disable DDR0 access
34+ str r3, [r0, #AT91_DDRSDRC_LPR] @ power down DDR0
35+ str r4, [r1, #AT91_RSTC_CR] @ reset processor
36+
37+ b .
38+
39+.at91_va_base_sdramc0:
40+ .word AT91_VA_BASE_SYS + AT91_DDRSDRC0
arch/arm/mach-at91/at91sam9rl.c+1−0
@@ -286,6 +286,7 @@ static void __init at91sam9rl_map_io(void) · 285 unmodified lines
286286 static void __init at91sam9rl_ioremap_registers(void)
287287 {
288288 at91_ioremap_shdwc(AT91SAM9RL_BASE_SHDWC);
289+ at91_ioremap_rstc(AT91SAM9RL_BASE_RSTC);
289290 at91sam926x_ioremap_pit(AT91SAM9RL_BASE_PIT);
290291 at91sam9_ioremap_smc(0, AT91SAM9RL_BASE_SMC);
291292 }
arch/arm/mach-at91/generic.h+2−0
@@ -58,7 +58,9 @@ extern void at91_irq_suspend(void); · 57 unmodified lines
5858 extern void at91_irq_resume(void);
5959
6060 /* reset */
61+extern void at91_ioremap_rstc(u32 base_addr);
6162 extern void at91sam9_alt_restart(char, const char *);
63+extern void at91sam9g45_restart(char, const char *);
6264
6365 /* shutdown */
6466 extern void at91_ioremap_shdwc(u32 base_addr);
arch/arm/mach-at91/include/mach/at91_rstc.h+15−3
@@ -16,13 +16,25 @@ · 15 unmodified lines
1616 #ifndef AT91_RSTC_H
1717 #define AT91_RSTC_H
1818
19−#define AT91_RSTC_CR (AT91_RSTC + 0x00) /* Reset Controller Control Register */
19+#ifndef __ASSEMBLY__
20+extern void __iomem *at91_rstc_base;
21+
22+#define at91_rstc_read(field) \
23+ __raw_readl(at91_rstc_base + field)
24+
25+#define at91_rstc_write(field, value) \
26+ __raw_writel(value, at91_rstc_base + field);
27+#else
28+.extern at91_rstc_base
29+#endif
30+
31+#define AT91_RSTC_CR 0x00 /* Reset Controller Control Register */
2032 #define AT91_RSTC_PROCRST (1 << 0) /* Processor Reset */
2133 #define AT91_RSTC_PERRST (1 << 2) /* Peripheral Reset */
2234 #define AT91_RSTC_EXTRST (1 << 3) /* External Reset */
2335 #define AT91_RSTC_KEY (0xa5 << 24) /* KEY Password */
2436
25−#define AT91_RSTC_SR (AT91_RSTC + 0x04) /* Reset Controller Status Register */
37+#define AT91_RSTC_SR 0x04 /* Reset Controller Status Register */
2638 #define AT91_RSTC_URSTS (1 << 0) /* User Reset Status */
2739 #define AT91_RSTC_RSTTYP (7 << 8) /* Reset Type */
2840 #define AT91_RSTC_RSTTYP_GENERAL (0 << 8)
@@ -33,7 +45,7 @@ · 4 unmodified lines
3345 #define AT91_RSTC_NRSTL (1 << 16) /* NRST Pin Level */
3446 #define AT91_RSTC_SRCMP (1 << 17) /* Software Reset Command in Progress */
3547
36−#define AT91_RSTC_MR (AT91_RSTC + 0x08) /* Reset Controller Mode Register */
48+#define AT91_RSTC_MR 0x08 /* Reset Controller Mode Register */
3749 #define AT91_RSTC_URSTEN (1 << 0) /* User Reset Enable */
3850 #define AT91_RSTC_URSTIEN (1 << 4) /* User Reset Interrupt Enable */
3951 #define AT91_RSTC_ERSTL (0xf << 8) /* External Reset Length */
arch/arm/mach-at91/include/mach/at91cap9.h+1−1
@@ -83,7 +83,6 @@ · 82 unmodified lines
8383 #define AT91_DDRSDRC0 (0xffffe600 - AT91_BASE_SYS)
8484 #define AT91_MATRIX (0xffffea00 - AT91_BASE_SYS)
8585 #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS)
86−#define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS)
8786 #define AT91_GPBR (cpu_is_at91cap9_revB() ? \
8887 (0xfffffd50 - AT91_BASE_SYS) : \
8988 (0xfffffd60 - AT91_BASE_SYS))
@@ -96,6 +95,7 @@ · 6 unmodified lines
9695 #define AT91CAP9_BASE_PIOB 0xfffff400
9796 #define AT91CAP9_BASE_PIOC 0xfffff600
9897 #define AT91CAP9_BASE_PIOD 0xfffff800
98+#define AT91CAP9_BASE_RSTC 0xfffffd00
9999 #define AT91CAP9_BASE_SHDWC 0xfffffd10
100100 #define AT91CAP9_BASE_RTT 0xfffffd20
101101 #define AT91CAP9_BASE_PIT 0xfffffd30
arch/arm/mach-at91/include/mach/at91cap9_ddrsdr.h+0−108
@@ -1,108 +0,0 @@
1−/*
2− * arch/arm/mach-at91/include/mach/at91cap9_ddrsdr.h
3− *
4− * (C) 2008 Andrew Victor
5− *
6− * DDR/SDR Controller (DDRSDRC) - System peripherals registers.
7− * Based on AT91CAP9 datasheet revision B.
8− *
9− * This program is free software; you can redistribute it and/or modify
10− * it under the terms of the GNU General Public License as published by
11− * the Free Software Foundation; either version 2 of the License, or
12− * (at your option) any later version.
13− */
14−
15−#ifndef AT91CAP9_DDRSDR_H
16−#define AT91CAP9_DDRSDR_H
17−
18−#define AT91_DDRSDRC_MR 0x00 /* Mode Register */
19−#define AT91_DDRSDRC_MODE (0xf << 0) /* Command Mode */
20−#define AT91_DDRSDRC_MODE_NORMAL 0
21−#define AT91_DDRSDRC_MODE_NOP 1
22−#define AT91_DDRSDRC_MODE_PRECHARGE 2
23−#define AT91_DDRSDRC_MODE_LMR 3
24−#define AT91_DDRSDRC_MODE_REFRESH 4
25−#define AT91_DDRSDRC_MODE_EXT_LMR 5
26−#define AT91_DDRSDRC_MODE_DEEP 6
27−
28−#define AT91_DDRSDRC_RTR 0x04 /* Refresh Timer Register */
29−#define AT91_DDRSDRC_COUNT (0xfff << 0) /* Refresh Timer Counter */
30−
31−#define AT91_DDRSDRC_CR 0x08 /* Configuration Register */
32−#define AT91_DDRSDRC_NC (3 << 0) /* Number of Column Bits */
33−#define AT91_DDRSDRC_NC_SDR8 (0 << 0)
34−#define AT91_DDRSDRC_NC_SDR9 (1 << 0)
35−#define AT91_DDRSDRC_NC_SDR10 (2 << 0)
36−#define AT91_DDRSDRC_NC_SDR11 (3 << 0)
37−#define AT91_DDRSDRC_NC_DDR9 (0 << 0)
38−#define AT91_DDRSDRC_NC_DDR10 (1 << 0)
39−#define AT91_DDRSDRC_NC_DDR11 (2 << 0)
40−#define AT91_DDRSDRC_NC_DDR12 (3 << 0)
41−#define AT91_DDRSDRC_NR (3 << 2) /* Number of Row Bits */
42−#define AT91_DDRSDRC_NR_11 (0 << 2)
43−#define AT91_DDRSDRC_NR_12 (1 << 2)
44−#define AT91_DDRSDRC_NR_13 (2 << 2)
45−#define AT91_DDRSDRC_CAS (7 << 4) /* CAS Latency */
46−#define AT91_DDRSDRC_CAS_2 (2 << 4)
47−#define AT91_DDRSDRC_CAS_3 (3 << 4)
48−#define AT91_DDRSDRC_CAS_25 (6 << 4)
49−#define AT91_DDRSDRC_DLL (1 << 7) /* Reset DLL */
50−#define AT91_DDRSDRC_DICDS (1 << 8) /* Output impedance control */
51−
52−#define AT91_DDRSDRC_T0PR 0x0C /* Timing 0 Register */
53−#define AT91_DDRSDRC_TRAS (0xf << 0) /* Active to Precharge delay */
54−#define AT91_DDRSDRC_TRCD (0xf << 4) /* Row to Column delay */
55−#define AT91_DDRSDRC_TWR (0xf << 8) /* Write recovery delay */
56−#define AT91_DDRSDRC_TRC (0xf << 12) /* Row cycle delay */
57−#define AT91_DDRSDRC_TRP (0xf << 16) /* Row precharge delay */
58−#define AT91_DDRSDRC_TRRD (0xf << 20) /* Active BankA to BankB */
59−#define AT91_DDRSDRC_TWTR (1 << 24) /* Internal Write to Read delay */
60−#define AT91_DDRSDRC_TMRD (0xf << 28) /* Load mode to active/refresh delay */
61−
62−#define AT91_DDRSDRC_T1PR 0x10 /* Timing 1 Register */
63−#define AT91_DDRSDRC_TRFC (0x1f << 0) /* Row Cycle Delay */
64−#define AT91_DDRSDRC_TXSNR (0xff << 8) /* Exit self-refresh to non-read */
65−#define AT91_DDRSDRC_TXSRD (0xff << 16) /* Exit self-refresh to read */
66−#define AT91_DDRSDRC_TXP (0xf << 24) /* Exit power-down delay */
67−
68−#define AT91_DDRSDRC_LPR 0x18 /* Low Power Register */
69−#define AT91_DDRSDRC_LPCB (3 << 0) /* Low-power Configurations */
70−#define AT91_DDRSDRC_LPCB_DISABLE 0
71−#define AT91_DDRSDRC_LPCB_SELF_REFRESH 1
72−#define AT91_DDRSDRC_LPCB_POWER_DOWN 2
73−#define AT91_DDRSDRC_LPCB_DEEP_POWER_DOWN 3
74−#define AT91_DDRSDRC_CLKFR (1 << 2) /* Clock Frozen */
75−#define AT91_DDRSDRC_PASR (7 << 4) /* Partial Array Self Refresh */
76−#define AT91_DDRSDRC_TCSR (3 << 8) /* Temperature Compensated Self Refresh */
77−#define AT91_DDRSDRC_DS (3 << 10) /* Drive Strength */
78−#define AT91_DDRSDRC_TIMEOUT (3 << 12) /* Time to define when Low Power Mode is enabled */
79−#define AT91_DDRSDRC_TIMEOUT_0_CLK_CYCLES (0 << 12)
80−#define AT91_DDRSDRC_TIMEOUT_64_CLK_CYCLES (1 << 12)
81−#define AT91_DDRSDRC_TIMEOUT_128_CLK_CYCLES (2 << 12)
82−
83−#define AT91_DDRSDRC_MDR 0x1C /* Memory Device Register */
84−#define AT91_DDRSDRC_MD (3 << 0) /* Memory Device Type */
85−#define AT91_DDRSDRC_MD_SDR 0
86−#define AT91_DDRSDRC_MD_LOW_POWER_SDR 1
87−#define AT91_DDRSDRC_MD_DDR 2
88−#define AT91_DDRSDRC_MD_LOW_POWER_DDR 3
89−
90−#define AT91_DDRSDRC_DLLR 0x20 /* DLL Information Register */
91−#define AT91_DDRSDRC_MDINC (1 << 0) /* Master Delay increment */
92−#define AT91_DDRSDRC_MDDEC (1 << 1) /* Master Delay decrement */
93−#define AT91_DDRSDRC_MDOVF (1 << 2) /* Master Delay Overflow */
94−#define AT91_DDRSDRC_SDCOVF (1 << 3) /* Slave Delay Correction Overflow */
95−#define AT91_DDRSDRC_SDCUDF (1 << 4) /* Slave Delay Correction Underflow */
96−#define AT91_DDRSDRC_SDERF (1 << 5) /* Slave Delay Correction error */
97−#define AT91_DDRSDRC_MDVAL (0xff << 8) /* Master Delay value */
98−#define AT91_DDRSDRC_SDVAL (0xff << 16) /* Slave Delay value */
99−#define AT91_DDRSDRC_SDCVAL (0xff << 24) /* Slave Delay Correction value */
100−
101−/* Register access macros */
102−#define at91_ramc_read(num, reg) \
103− at91_sys_read(AT91_DDRSDRC##num + reg)
104−#define at91_ramc_write(num, reg, value) \
105− at91_sys_write(AT91_DDRSDRC##num + reg, value)
106−
107−
108−#endif
arch/arm/mach-at91/include/mach/at91sam9260.h+1−1
@@ -83,7 +83,6 @@ · 82 unmodified lines
8383 #define AT91_SDRAMC0 (0xffffea00 - AT91_BASE_SYS)
8484 #define AT91_MATRIX (0xffffee00 - AT91_BASE_SYS)
8585 #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS)
86−#define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS)
8786 #define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS)
8887
8988 #define AT91SAM9260_BASE_ECC 0xffffe800
@@ -92,6 +91,7 @@ · 2 unmodified lines
9291 #define AT91SAM9260_BASE_PIOA 0xfffff400
9392 #define AT91SAM9260_BASE_PIOB 0xfffff600
9493 #define AT91SAM9260_BASE_PIOC 0xfffff800
94+#define AT91SAM9260_BASE_RSTC 0xfffffd00
9595 #define AT91SAM9260_BASE_SHDWC 0xfffffd10
9696 #define AT91SAM9260_BASE_RTT 0xfffffd20
9797 #define AT91SAM9260_BASE_PIT 0xfffffd30
arch/arm/mach-at91/include/mach/at91sam9261.h+1−1
@@ -68,7 +68,6 @@ · 67 unmodified lines
6868 #define AT91_SDRAMC0 (0xffffea00 - AT91_BASE_SYS)
6969 #define AT91_MATRIX (0xffffee00 - AT91_BASE_SYS)
7070 #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS)
71−#define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS)
7271 #define AT91_GPBR (0xfffffd50 - AT91_BASE_SYS)
7372
7473 #define AT91SAM9261_BASE_SMC 0xffffec00
@@ -76,6 +75,7 @@ · 1 unmodified line
7675 #define AT91SAM9261_BASE_PIOA 0xfffff400
7776 #define AT91SAM9261_BASE_PIOB 0xfffff600
7877 #define AT91SAM9261_BASE_PIOC 0xfffff800
78+#define AT91SAM9261_BASE_RSTC 0xfffffd00
7979 #define AT91SAM9261_BASE_SHDWC 0xfffffd10
8080 #define AT91SAM9261_BASE_RTT 0xfffffd20
8181 #define AT91SAM9261_BASE_PIT 0xfffffd30
arch/arm/mach-at91/include/mach/at91sam9263.h+1−1
@@ -78,7 +78,6 @@ · 77 unmodified lines
7878 #define AT91_SDRAMC1 (0xffffe800 - AT91_BASE_SYS)
7979 #define AT91_MATRIX (0xffffec00 - AT91_BASE_SYS)
8080 #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS)
81−#define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS)
8281 #define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS)
8382
8483 #define AT91SAM9263_BASE_ECC0 0xffffe000
@@ -91,6 +90,7 @@ · 6 unmodified lines
9190 #define AT91SAM9263_BASE_PIOC 0xfffff600
9291 #define AT91SAM9263_BASE_PIOD 0xfffff800
9392 #define AT91SAM9263_BASE_PIOE 0xfffffa00
93+#define AT91SAM9263_BASE_RSTC 0xfffffd00
9494 #define AT91SAM9263_BASE_SHDWC 0xfffffd10
9595 #define AT91SAM9263_BASE_RTT0 0xfffffd20
9696 #define AT91SAM9263_BASE_PIT 0xfffffd30
arch/arm/mach-at91/include/mach/at91sam9_ddrsdr.h+20−10
@@ -46,10 +46,10 @@ · 45 unmodified lines
4646 #define AT91_DDRSDRC_CAS_25 (6 << 4)
4747 #define AT91_DDRSDRC_RST_DLL (1 << 7) /* Reset DLL */
4848 #define AT91_DDRSDRC_DICDS (1 << 8) /* Output impedance control */
49−#define AT91_DDRSDRC_DIS_DLL (1 << 9) /* Disable DLL */
50−#define AT91_DDRSDRC_OCD (1 << 12) /* Off-Chip Driver */
51−#define AT91_DDRSDRC_DQMS (1 << 16) /* Mask Data is Shared */
52−#define AT91_DDRSDRC_ACTBST (1 << 18) /* Active Bank X to Burst Stop Read Access Bank Y */
49+#define AT91_DDRSDRC_DIS_DLL (1 << 9) /* Disable DLL [SAM9 Only] */
50+#define AT91_DDRSDRC_OCD (1 << 12) /* Off-Chip Driver [SAM9 Only] */
51+#define AT91_DDRSDRC_DQMS (1 << 16) /* Mask Data is Shared [SAM9 Only] */
52+#define AT91_DDRSDRC_ACTBST (1 << 18) /* Active Bank X to Burst Stop Read Access Bank Y [SAM9 Only] */
5353
5454 #define AT91_DDRSDRC_T0PR 0x0C /* Timing 0 Register */
5555 #define AT91_DDRSDRC_TRAS (0xf << 0) /* Active to Precharge delay */
@@ -59,7 +59,8 @@ · 3 unmodified lines
5959 #define AT91_DDRSDRC_TRP (0xf << 16) /* Row precharge delay */
6060 #define AT91_DDRSDRC_TRRD (0xf << 20) /* Active BankA to BankB */
6161 #define AT91_DDRSDRC_TWTR (0x7 << 24) /* Internal Write to Read delay */
62−#define AT91_DDRSDRC_RED_WRRD (0x1 << 27) /* Reduce Write to Read Delay */
62+#define AT91CAP9_DDRSDRC_TWTR (1 << 24) /* Internal Write to Read delay */
63+#define AT91_DDRSDRC_RED_WRRD (0x1 << 27) /* Reduce Write to Read Delay [SAM9 Only] */
6364 #define AT91_DDRSDRC_TMRD (0xf << 28) /* Load mode to active/refresh delay */
6465
6566 #define AT91_DDRSDRC_T1PR 0x10 /* Timing 1 Register */
@@ -68,13 +69,14 @@ · 2 unmodified lines
6869 #define AT91_DDRSDRC_TXSRD (0xff << 16) /* Exit self-refresh to read */
6970 #define AT91_DDRSDRC_TXP (0xf << 24) /* Exit power-down delay */
7071
71−#define AT91_DDRSDRC_T2PR 0x14 /* Timing 2 Register */
72+#define AT91_DDRSDRC_T2PR 0x14 /* Timing 2 Register [SAM9 Only] */
7273 #define AT91_DDRSDRC_TXARD (0xf << 0) /* Exit active power down delay to read command in mode "Fast Exit" */
7374 #define AT91_DDRSDRC_TXARDS (0xf << 4) /* Exit active power down delay to read command in mode "Slow Exit" */
7475 #define AT91_DDRSDRC_TRPA (0xf << 8) /* Row Precharge All delay */
7576 #define AT91_DDRSDRC_TRTP (0x7 << 12) /* Read to Precharge delay */
7677
7778 #define AT91_DDRSDRC_LPR 0x1C /* Low Power Register */
79+#define AT91CAP9_DDRSDRC_LPR 0x18 /* Low Power Register */
7880 #define AT91_DDRSDRC_LPCB (3 << 0) /* Low-power Configurations */
7981 #define AT91_DDRSDRC_LPCB_DISABLE 0
8082 #define AT91_DDRSDRC_LPCB_SELF_REFRESH 1
@@ -92,32 +94,40 @@ · 11 unmodified lines
9294 #define AT91_DDRSDRC_UPD_MR (3 << 20) /* Update load mode register and extended mode register */
9395
9496 #define AT91_DDRSDRC_MDR 0x20 /* Memory Device Register */
97+#define AT91CAP9_DDRSDRC_MDR 0x1C /* Memory Device Register */
9598 #define AT91_DDRSDRC_MD (3 << 0) /* Memory Device Type */
9699 #define AT91_DDRSDRC_MD_SDR 0
97100 #define AT91_DDRSDRC_MD_LOW_POWER_SDR 1
101+#define AT91CAP9_DDRSDRC_MD_DDR 2
98102 #define AT91_DDRSDRC_MD_LOW_POWER_DDR 3
99−#define AT91_DDRSDRC_MD_DDR2 6
103+#define AT91_DDRSDRC_MD_DDR2 6 /* [SAM9 Only] */
100104 #define AT91_DDRSDRC_DBW (1 << 4) /* Data Bus Width */
101105 #define AT91_DDRSDRC_DBW_32BITS (0 << 4)
102106 #define AT91_DDRSDRC_DBW_16BITS (1 << 4)
103107
104108 #define AT91_DDRSDRC_DLL 0x24 /* DLL Information Register */
109+#define AT91CAP9_DDRSDRC_DLL 0x20 /* DLL Information Register */
105110 #define AT91_DDRSDRC_MDINC (1 << 0) /* Master Delay increment */
106111 #define AT91_DDRSDRC_MDDEC (1 << 1) /* Master Delay decrement */
107112 #define AT91_DDRSDRC_MDOVF (1 << 2) /* Master Delay Overflow */
113+#define AT91CAP9_DDRSDRC_SDCOVF (1 << 3) /* Slave Delay Correction Overflow */
114+#define AT91CAP9_DDRSDRC_SDCUDF (1 << 4) /* Slave Delay Correction Underflow */
115+#define AT91CAP9_DDRSDRC_SDERF (1 << 5) /* Slave Delay Correction error */
108116 #define AT91_DDRSDRC_MDVAL (0xff << 8) /* Master Delay value */
117+#define AT91CAP9_DDRSDRC_SDVAL (0xff << 16) /* Slave Delay value */
118+#define AT91CAP9_DDRSDRC_SDCVAL (0xff << 24) /* Slave Delay Correction value */
109119
110−#define AT91_DDRSDRC_HS 0x2C /* High Speed Register */
120+#define AT91_DDRSDRC_HS 0x2C /* High Speed Register [SAM9 Only] */
111121 #define AT91_DDRSDRC_DIS_ATCP_RD (1 << 2) /* Anticip read access is disabled */
112122
113123 #define AT91_DDRSDRC_DELAY(n) (0x30 + (0x4 * (n))) /* Delay I/O Register n */
114124
115−#define AT91_DDRSDRC_WPMR 0xE4 /* Write Protect Mode Register */
125+#define AT91_DDRSDRC_WPMR 0xE4 /* Write Protect Mode Register [SAM9 Only] */
116126 #define AT91_DDRSDRC_WP (1 << 0) /* Write protect enable */
117127 #define AT91_DDRSDRC_WPKEY (0xffffff << 8) /* Write protect key */
118128 #define AT91_DDRSDRC_KEY (0x444452 << 8) /* Write protect key = "DDR" */
119129
120−#define AT91_DDRSDRC_WPSR 0xE8 /* Write Protect Status Register */
130+#define AT91_DDRSDRC_WPSR 0xE8 /* Write Protect Status Register [SAM9 Only] */
121131 #define AT91_DDRSDRC_WPVS (1 << 0) /* Write protect violation status */
122132 #define AT91_DDRSDRC_WPVSRC (0xffff << 8) /* Write protect violation source */
123133
arch/arm/mach-at91/include/mach/at91sam9_smc.h+29−0
@@ -18,6 +18,35 @@ · 17 unmodified lines
1818
1919 #include <mach/cpu.h>
2020
21+#ifndef __ASSEMBLY__
22+struct sam9_smc_config {
23+ /* Setup register */
24+ u8 ncs_read_setup;
25+ u8 nrd_setup;
26+ u8 ncs_write_setup;
27+ u8 nwe_setup;
28+
29+ /* Pulse register */
30+ u8 ncs_read_pulse;
31+ u8 nrd_pulse;
32+ u8 ncs_write_pulse;
33+ u8 nwe_pulse;
34+
35+ /* Cycle register */
36+ u16 read_cycle;
37+ u16 write_cycle;
38+
39+ /* Mode register */
40+ u32 mode;
41+ u8 tdf_cycles:4;
42+};
43+
44+extern void sam9_smc_configure(int id, int cs, struct sam9_smc_config *config);
45+extern void sam9_smc_read(int id, int cs, struct sam9_smc_config *config);
46+extern void sam9_smc_read_mode(int id, int cs, struct sam9_smc_config *config);
47+extern void sam9_smc_write_mode(int id, int cs, struct sam9_smc_config *config);
48+#endif
49+
2150 #define AT91_SMC_SETUP 0x00 /* Setup Register for CS n */
2251 #define AT91_SMC_NWESETUP (0x3f << 0) /* NWE Setup Length */
2352 #define AT91_SMC_NWESETUP_(x) ((x) << 0)
arch/arm/mach-at91/include/mach/at91sam9g45.h+1−1
@@ -90,7 +90,6 @@ · 89 unmodified lines
9090 #define AT91_DDRSDRC0 (0xffffe600 - AT91_BASE_SYS)
9191 #define AT91_MATRIX (0xffffea00 - AT91_BASE_SYS)
9292 #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS)
93−#define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS)
9493 #define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS)
9594
9695 #define AT91SAM9G45_BASE_ECC 0xffffe200
@@ -102,6 +101,7 @@ · 5 unmodified lines
102101 #define AT91SAM9G45_BASE_PIOC 0xfffff600
103102 #define AT91SAM9G45_BASE_PIOD 0xfffff800
104103 #define AT91SAM9G45_BASE_PIOE 0xfffffa00
104+#define AT91SAM9G45_BASE_RSTC 0xfffffd00
105105 #define AT91SAM9G45_BASE_SHDWC 0xfffffd10
106106 #define AT91SAM9G45_BASE_RTT 0xfffffd20
107107 #define AT91SAM9G45_BASE_PIT 0xfffffd30
arch/arm/mach-at91/include/mach/at91sam9rl.h+1−1
@@ -72,7 +72,6 @@ · 71 unmodified lines
7272 #define AT91_SDRAMC0 (0xffffea00 - AT91_BASE_SYS)
7373 #define AT91_MATRIX (0xffffee00 - AT91_BASE_SYS)
7474 #define AT91_PMC (0xfffffc00 - AT91_BASE_SYS)
75−#define AT91_RSTC (0xfffffd00 - AT91_BASE_SYS)
7675 #define AT91_SCKCR (0xfffffd50 - AT91_BASE_SYS)
7776 #define AT91_GPBR (0xfffffd60 - AT91_BASE_SYS)
7877
@@ -84,6 +83,7 @@ · 5 unmodified lines
8483 #define AT91SAM9RL_BASE_PIOB 0xfffff600
8584 #define AT91SAM9RL_BASE_PIOC 0xfffff800
8685 #define AT91SAM9RL_BASE_PIOD 0xfffffa00
86+#define AT91SAM9RL_BASE_RSTC 0xfffffd00
8787 #define AT91SAM9RL_BASE_SHDWC 0xfffffd10
8888 #define AT91SAM9RL_BASE_RTT 0xfffffd20
8989 #define AT91SAM9RL_BASE_PIT 0xfffffd30
arch/arm/mach-at91/include/mach/board.h+1−1
@@ -88,7 +88,7 @@ extern void __init at91_add_device_eth(struct macb_platform_data *data); · 87 unmodified lines
8888 struct at91_usbh_data {
8989 u8 ports; /* number of ports on root hub */
9090 int vbus_pin[2]; /* port power-control pin */
91− u8 vbus_pin_inverted;
91+ u8 vbus_pin_active_low[2];
9292 u8 overcurrent_supported;
9393 int overcurrent_pin[2];
9494 u8 overcurrent_status[2];
arch/arm/mach-at91/pm.c+2−7
@@ -34,7 +34,6 @@ · 33 unmodified lines
3434 /*
3535 * Show the reason for the previous system reset.
3636 */
37−#if defined(AT91_RSTC)
3837
3938 #include <mach/at91_rstc.h>
4039 #include <mach/at91_shdwc.h>
@@ -58,10 +57,10 @@ static void __init show_reset_status(void) · 17 unmodified lines
5857 char *reason, *r2 = reset;
5958 u32 reset_type, wake_type;
6059
61− if (!at91_shdwc_base)
60+ if (!at91_shdwc_base || !at91_rstc_base)
6261 return;
6362
64− reset_type = at91_sys_read(AT91_RSTC_SR) & AT91_RSTC_RSTTYP;
63+ reset_type = at91_rstc_read(AT91_RSTC_SR) & AT91_RSTC_RSTTYP;
6564 wake_type = at91_shdwc_read(AT91_SHDW_SR);
6665
6766 switch (reset_type) {
@@ -102,10 +101,6 @@ static void __init show_reset_status(void) · 34 unmodified lines
102101 }
103102 pr_info("AT91: Starting after %s %s\n", reason, r2);
104103 }
105−#else
106−static void __init show_reset_status(void) {}
107−#endif
108−
109104
110105 static int at91_pm_valid_state(suspend_state_t state)
111106 {
arch/arm/mach-at91/pm.h+4−4
@@ -25,21 +25,21 @@ static inline u32 sdram_selfrefresh_enable(void) · 24 unmodified lines
2525 : : "r" (0))
2626
2727 #elif defined(CONFIG_ARCH_AT91CAP9)
28−#include <mach/at91cap9_ddrsdr.h>
28+#include <mach/at91sam9_ddrsdr.h>
2929
3030
3131 static inline u32 sdram_selfrefresh_enable(void)
3232 {
3333 u32 saved_lpr, lpr;
3434
35− saved_lpr = at91_ramc_read(0, AT91_DDRSDRC_LPR);
35+ saved_lpr = at91_ramc_read(0, AT91CAP9_DDRSDRC_LPR);
3636
3737 lpr = saved_lpr & ~AT91_DDRSDRC_LPCB;
38− at91_ramc_write(0, AT91_DDRSDRC_LPR, lpr | AT91_DDRSDRC_LPCB_SELF_REFRESH);
38+ at91_ramc_write(0, AT91CAP9_DDRSDRC_LPR, lpr | AT91_DDRSDRC_LPCB_SELF_REFRESH);
3939 return saved_lpr;
4040 }
4141
42−#define sdram_selfrefresh_disable(saved_lpr) at91_ramc_write(0, AT91_DDRSDRC_LPR, saved_lpr)
42+#define sdram_selfrefresh_disable(saved_lpr) at91_ramc_write(0, AT91CAP9_DDRSDRC_LPR, saved_lpr)
4343 #define wait_for_interrupt_enable() cpu_do_idle()
4444
4545 #elif defined(CONFIG_ARCH_AT91SAM9G45)
arch/arm/mach-at91/pm_slowclock.S+2−3
@@ -18,9 +18,8 @@ · 17 unmodified lines
1818
1919 #if defined(CONFIG_ARCH_AT91RM9200)
2020 #include <mach/at91rm9200_mc.h>
21−#elif defined(CONFIG_ARCH_AT91CAP9)
22−#include <mach/at91cap9_ddrsdr.h>
23−#elif defined(CONFIG_ARCH_AT91SAM9G45)
21+#elif defined(CONFIG_ARCH_AT91CAP9) \
22+ || defined(CONFIG_ARCH_AT91SAM9G45)
2423 #include <mach/at91sam9_ddrsdr.h>
2524 #else
2625 #include <mach/at91sam9_sdramc.h>
arch/arm/mach-at91/sam9_smc.c+71−5
@@ -2,6 +2,7 @@ · 1 unmodified line
22 * linux/arch/arm/mach-at91/sam9_smc.c
33 *
44 * Copyright (C) 2008 Andrew Victor
5+ * Copyright (C) 2011 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
56 *
67 * This program is free software; you can redistribute it and/or modify
78 * it under the terms of the GNU General Public License version 2 as
@@ -22,7 +23,22 @@ · 14 unmodified lines
2223
2324 static void __iomem *smc_base_addr[2];
2425
25−static void __init sam9_smc_cs_configure(void __iomem *base, struct sam9_smc_config* config)
26+static void sam9_smc_cs_write_mode(void __iomem *base,
27+ struct sam9_smc_config *config)
28+{
29+ __raw_writel(config->mode
30+ | AT91_SMC_TDF_(config->tdf_cycles),
31+ base + AT91_SMC_MODE);
32+}
33+
34+void sam9_smc_write_mode(int id, int cs,
35+ struct sam9_smc_config *config)
36+{
37+ sam9_smc_cs_write_mode(AT91_SMC_CS(id, cs), config);
38+}
39+
40+static void sam9_smc_cs_configure(void __iomem *base,
41+ struct sam9_smc_config *config)
2642 {
2743
2844 /* Setup register */
@@ -45,16 +61,66 @@ static void __init sam9_smc_cs_configure(void __iomem *base, struct sam9_smc_con · 16 unmodified lines
4561 base + AT91_SMC_CYCLE);
4662
4763 /* Mode register */
48− __raw_writel(config->mode
49− | AT91_SMC_TDF_(config->tdf_cycles),
50− base + AT91_SMC_MODE);
64+ sam9_smc_cs_write_mode(base, config);
5165 }
5266
53−void __init sam9_smc_configure(int id, int cs, struct sam9_smc_config* config)
67+void sam9_smc_configure(int id, int cs,
68+ struct sam9_smc_config *config)
5469 {
5570 sam9_smc_cs_configure(AT91_SMC_CS(id, cs), config);
5671 }
5772
73+static void sam9_smc_cs_read_mode(void __iomem *base,
74+ struct sam9_smc_config *config)
75+{
76+ u32 val = __raw_readl(base + AT91_SMC_MODE);
77+
78+ config->mode = (val & ~AT91_SMC_NWECYCLE);
79+ config->tdf_cycles = (val & AT91_SMC_NWECYCLE) >> 16 ;
80+}
81+
82+void sam9_smc_read_mode(int id, int cs,
83+ struct sam9_smc_config *config)
84+{
85+ sam9_smc_cs_read_mode(AT91_SMC_CS(id, cs), config);
86+}
87+
88+static void sam9_smc_cs_read(void __iomem *base,
89+ struct sam9_smc_config *config)
90+{
91+ u32 val;
92+
93+ /* Setup register */
94+ val = __raw_readl(base + AT91_SMC_SETUP);
95+
96+ config->nwe_setup = val & AT91_SMC_NWESETUP;
97+ config->ncs_write_setup = (val & AT91_SMC_NCS_WRSETUP) >> 8;
98+ config->nrd_setup = (val & AT91_SMC_NRDSETUP) >> 16;
99+ config->ncs_read_setup = (val & AT91_SMC_NCS_RDSETUP) >> 24;
100+
101+ /* Pulse register */
102+ val = __raw_readl(base + AT91_SMC_PULSE);
103+
104+ config->nwe_setup = val & AT91_SMC_NWEPULSE;
105+ config->ncs_write_pulse = (val & AT91_SMC_NCS_WRPULSE) >> 8;
106+ config->nrd_pulse = (val & AT91_SMC_NRDPULSE) >> 16;
107+ config->ncs_read_pulse = (val & AT91_SMC_NCS_RDPULSE) >> 24;
108+
109+ /* Cycle register */
110+ val = __raw_readl(base + AT91_SMC_CYCLE);
111+
112+ config->write_cycle = val & AT91_SMC_NWECYCLE;
113+ config->read_cycle = (val & AT91_SMC_NRDCYCLE) >> 16;
114+
115+ /* Mode register */
116+ sam9_smc_cs_read_mode(base, config);
117+}
118+
119+void sam9_smc_read(int id, int cs, struct sam9_smc_config *config)
120+{
121+ sam9_smc_cs_read(AT91_SMC_CS(id, cs), config);
122+}
123+
58124 void __init at91sam9_ioremap_smc(int id, u32 addr)
59125 {
60126 if (id > 1) {
arch/arm/mach-at91/sam9_smc.h+0−23
@@ -8,27 +8,4 @@ · 7 unmodified lines
88 * published by the Free Software Foundation.
99 */
1010
11−struct sam9_smc_config {
12− /* Setup register */
13− u8 ncs_read_setup;
14− u8 nrd_setup;
15− u8 ncs_write_setup;
16− u8 nwe_setup;
17−
18− /* Pulse register */
19− u8 ncs_read_pulse;
20− u8 nrd_pulse;
21− u8 ncs_write_pulse;
22− u8 nwe_pulse;
23−
24− /* Cycle register */
25− u16 read_cycle;
26− u16 write_cycle;
27−
28− /* Mode register */
29− u32 mode;
30− u8 tdf_cycles:4;
31−};
32−
33−extern void __init sam9_smc_configure(int id, int cs, struct sam9_smc_config* config);
3411 extern void __init at91sam9_ioremap_smc(int id, u32 addr);
arch/arm/mach-at91/setup.c+14−2
@@ -29,9 +29,12 @@ EXPORT_SYMBOL(at91_soc_initdata); · 28 unmodified lines
2929 void __init at91rm9200_set_type(int type)
3030 {
3131 if (type == ARCH_REVISON_9200_PQFP)
32− at91_soc_initdata.subtype = AT91_SOC_RM9200_BGA;
33− else
3432 at91_soc_initdata.subtype = AT91_SOC_RM9200_PQFP;
33+ else
34+ at91_soc_initdata.subtype = AT91_SOC_RM9200_BGA;
35+
36+ pr_info("AT91: filled in soc subtype: %s\n",
37+ at91_get_soc_subtype(&at91_soc_initdata));
3538 }
3639
3740 void __init at91_init_irq_default(void)
@@ -281,6 +284,15 @@ void __init at91_ioremap_shdwc(u32 base_addr) · 243 unmodified lines
281284 pm_power_off = at91sam9_poweroff;
282285 }
283286
287+void __iomem *at91_rstc_base;
288+
289+void __init at91_ioremap_rstc(u32 base_addr)
290+{
291+ at91_rstc_base = ioremap(base_addr, 16);
292+ if (!at91_rstc_base)
293+ panic("Impossible to ioremap at91_rstc_base\n");
294+}
295+
284296 void __init at91_initialize(unsigned long main_clock)
285297 {
286298 at91_boot_soc.ioremap_registers();
arch/arm/mach-bcmring/arch.c+1−1
@@ -194,6 +194,6 @@ MACHINE_START(BCMRING, "BCMRING") · 193 unmodified lines
194194 .init_early = bcmring_init_early,
195195 .init_irq = bcmring_init_irq,
196196 .timer = &bcmring_timer,
197− .init_machine = bcmring_init_machine
197+ .init_machine = bcmring_init_machine,
198198 .restart = bcmring_restart,
199199 MACHINE_END
arch/arm/mach-bcmring/dma.c+0−812
@@ -33,17 +33,11 @@ · 32 unmodified lines
3333
3434 #include <mach/timer.h>
3535
36−#include <linux/mm.h>
3736 #include <linux/pfn.h>
3837 #include <linux/atomic.h>
3938 #include <linux/sched.h>
4039 #include <mach/dma.h>
4140
42−/* I don't quite understand why dc4 fails when this is set to 1 and DMA is enabled */
43−/* especially since dc4 doesn't use kmalloc'd memory. */
44−
45−#define ALLOW_MAP_OF_KMALLOC_MEMORY 0
46−
4741 /* ---- Public Variables ------------------------------------------------- */
4842
4943 /* ---- Private Constants and Types -------------------------------------- */
@@ -53,58 +47,18 @@ · 3 unmodified lines
5347 #define CONTROLLER_FROM_HANDLE(handle) (((handle) >> 4) & 0x0f)
5448 #define CHANNEL_FROM_HANDLE(handle) ((handle) & 0x0f)
5549
56−#define DMA_MAP_DEBUG 0
57−
58−#if DMA_MAP_DEBUG
59−# define DMA_MAP_PRINT(fmt, args...) printk("%s: " fmt, __func__, ## args)
60−#else
61−# define DMA_MAP_PRINT(fmt, args...)
62−#endif
6350
6451 /* ---- Private Variables ------------------------------------------------ */
6552
6653 static DMA_Global_t gDMA;
6754 static struct proc_dir_entry *gDmaDir;
6855
69−static atomic_t gDmaStatMemTypeKmalloc = ATOMIC_INIT(0);
70−static atomic_t gDmaStatMemTypeVmalloc = ATOMIC_INIT(0);
71−static atomic_t gDmaStatMemTypeUser = ATOMIC_INIT(0);
72−static atomic_t gDmaStatMemTypeCoherent = ATOMIC_INIT(0);
73−
7456 #include "dma_device.c"
7557
7658 /* ---- Private Function Prototypes -------------------------------------- */
7759
7860 /* ---- Functions ------------------------------------------------------- */
7961
80−/****************************************************************************/
81−/**
82−* Displays information for /proc/dma/mem-type
83−*/
84−/****************************************************************************/
85−
86−static int dma_proc_read_mem_type(char *buf, char **start, off_t offset,
87− int count, int *eof, void *data)
88−{
89− int len = 0;
90−
91− len += sprintf(buf + len, "dma_map_mem statistics\n");
92− len +=
93− sprintf(buf + len, "coherent: %d\n",
94− atomic_read(&gDmaStatMemTypeCoherent));
95− len +=
96− sprintf(buf + len, "kmalloc: %d\n",
97− atomic_read(&gDmaStatMemTypeKmalloc));
98− len +=
99− sprintf(buf + len, "vmalloc: %d\n",
100− atomic_read(&gDmaStatMemTypeVmalloc));
101− len +=
102− sprintf(buf + len, "user: %d\n",
103− atomic_read(&gDmaStatMemTypeUser));
104−
105− return len;
106−}
107−
10862 /****************************************************************************/
10963 /**
11064 * Displays information for /proc/dma/channels
@@ -846,8 +800,6 @@ int dma_init(void) · 735 unmodified lines
846800 dma_proc_read_channels, NULL);
847801 create_proc_read_entry("devices", 0, gDmaDir,
848802 dma_proc_read_devices, NULL);
849− create_proc_read_entry("mem-type", 0, gDmaDir,
850− dma_proc_read_mem_type, NULL);
851803 }
852804
853805 out:
@@ -1565,767 +1517,3 @@ int dma_set_device_handler(DMA_Device_t dev, /* Device to set the callback for. · 711 unmodified lines
15651517 }
15661518
15671519 EXPORT_SYMBOL(dma_set_device_handler);
1568−
1569−/****************************************************************************/
1570−/**
1571−* Initializes a memory mapping structure
1572−*/
1573−/****************************************************************************/
1574−
1575−int dma_init_mem_map(DMA_MemMap_t *memMap)
1576−{
1577− memset(memMap, 0, sizeof(*memMap));
1578−
1579− sema_init(&memMap->lock, 1);
1580−
1581− return 0;
1582−}
1583−
1584−EXPORT_SYMBOL(dma_init_mem_map);
1585−
1586−/****************************************************************************/
1587−/**
1588−* Releases any memory currently being held by a memory mapping structure.
1589−*/
1590−/****************************************************************************/
1591−
1592−int dma_term_mem_map(DMA_MemMap_t *memMap)
1593−{
1594− down(&memMap->lock); /* Just being paranoid */
1595−
1596− /* Free up any allocated memory */
1597−
1598− up(&memMap->lock);
1599− memset(memMap, 0, sizeof(*memMap));
1600−
1601− return 0;
1602−}
1603−
1604−EXPORT_SYMBOL(dma_term_mem_map);
1605−
1606−/****************************************************************************/
1607−/**
1608−* Looks at a memory address and categorizes it.
1609−*
1610−* @return One of the values from the DMA_MemType_t enumeration.
1611−*/
1612−/****************************************************************************/
1613−
1614−DMA_MemType_t dma_mem_type(void *addr)
1615−{
1616− unsigned long addrVal = (unsigned long)addr;
1617−
1618− if (addrVal >= CONSISTENT_BASE) {
1619− /* NOTE: DMA virtual memory space starts at 0xFFxxxxxx */
1620−
1621− /* dma_alloc_xxx pages are physically and virtually contiguous */
1622−
1623− return DMA_MEM_TYPE_DMA;
1624− }
1625−
1626− /* Technically, we could add one more classification. Addresses between VMALLOC_END */
1627− /* and the beginning of the DMA virtual address could be considered to be I/O space. */
1628− /* Right now, nobody cares about this particular classification, so we ignore it. */
1629−
1630− if (is_vmalloc_addr(addr)) {
1631− /* Address comes from the vmalloc'd region. Pages are virtually */
1632− /* contiguous but NOT physically contiguous */
1633−
1634− return DMA_MEM_TYPE_VMALLOC;
1635− }
1636−
1637− if (addrVal >= PAGE_OFFSET) {
1638− /* PAGE_OFFSET is typically 0xC0000000 */
1639−
1640− /* kmalloc'd pages are physically contiguous */
1641−
1642− return DMA_MEM_TYPE_KMALLOC;
1643− }
1644−
1645− return DMA_MEM_TYPE_USER;
1646−}
1647−
1648−EXPORT_SYMBOL(dma_mem_type);
1649−
1650−/****************************************************************************/
1651−/**
1652−* Looks at a memory address and determines if we support DMA'ing to/from
1653−* that type of memory.
1654−*
1655−* @return boolean -
1656−* return value != 0 means dma supported
1657−* return value == 0 means dma not supported
1658−*/
1659−/****************************************************************************/
1660−
1661−int dma_mem_supports_dma(void *addr)
1662−{
1663− DMA_MemType_t memType = dma_mem_type(addr);
1664−
1665− return (memType == DMA_MEM_TYPE_DMA)
1666−#if ALLOW_MAP_OF_KMALLOC_MEMORY
1667− || (memType == DMA_MEM_TYPE_KMALLOC)
1668−#endif
1669− || (memType == DMA_MEM_TYPE_USER);
1670−}
1671−
1672−EXPORT_SYMBOL(dma_mem_supports_dma);
1673−
1674−/****************************************************************************/
1675−/**
1676−* Maps in a memory region such that it can be used for performing a DMA.
1677−*
1678−* @return
1679−*/
1680−/****************************************************************************/
1681−
1682−int dma_map_start(DMA_MemMap_t *memMap, /* Stores state information about the map */
1683− enum dma_data_direction dir /* Direction that the mapping will be going */
1684− ) {
1685− int rc;
1686−
1687− down(&memMap->lock);
1688−
1689− DMA_MAP_PRINT("memMap: %p\n", memMap);
1690−
1691− if (memMap->inUse) {
1692− printk(KERN_ERR "%s: memory map %p is already being used\n",
1693− __func__, memMap);
1694− rc = -EBUSY;
1695− goto out;
1696− }
1697−
1698− memMap->inUse = 1;
1699− memMap->dir = dir;
1700− memMap->numRegionsUsed = 0;
1701−
1702− rc = 0;
1703−
1704−out:
1705−
1706− DMA_MAP_PRINT("returning %d", rc);
1707−
1708− up(&memMap->lock);
1709−
1710− return rc;
1711−}
1712−
1713−EXPORT_SYMBOL(dma_map_start);
1714−
1715−/****************************************************************************/
1716−/**
1717−* Adds a segment of memory to a memory map. Each segment is both
1718−* physically and virtually contiguous.
1719−*
1720−* @return 0 on success, error code otherwise.
1721−*/
1722−/****************************************************************************/
1723−
1724−static int dma_map_add_segment(DMA_MemMap_t *memMap, /* Stores state information about the map */
1725− DMA_Region_t *region, /* Region that the segment belongs to */
1726− void *virtAddr, /* Virtual address of the segment being added */
1727− dma_addr_t physAddr, /* Physical address of the segment being added */
1728− size_t numBytes /* Number of bytes of the segment being added */
1729− ) {
1730− DMA_Segment_t *segment;
1731−
1732− DMA_MAP_PRINT("memMap:%p va:%p pa:0x%x #:%d\n", memMap, virtAddr,
1733− physAddr, numBytes);
1734−
1735− /* Sanity check */
1736−
1737− if (((unsigned long)virtAddr < (unsigned long)region->virtAddr)
1738− || (((unsigned long)virtAddr + numBytes)) >
1739− ((unsigned long)region->virtAddr + region->numBytes)) {
1740− printk(KERN_ERR
1741− "%s: virtAddr %p is outside region @ %p len: %d\n",
1742− __func__, virtAddr, region->virtAddr, region->numBytes);
1743− return -EINVAL;
1744− }
1745−
1746− if (region->numSegmentsUsed > 0) {
1747− /* Check to see if this segment is physically contiguous with the previous one */
1748−
1749− segment = &region->segment[region->numSegmentsUsed - 1];
1750−
1751− if ((segment->physAddr + segment->numBytes) == physAddr) {
1752− /* It is - just add on to the end */
1753−
1754− DMA_MAP_PRINT("appending %d bytes to last segment\n",
1755− numBytes);
1756−
1757− segment->numBytes += numBytes;
1758−
1759− return 0;
1760− }
1761− }
1762−
1763− /* Reallocate to hold more segments, if required. */
1764−
1765− if (region->numSegmentsUsed >= region->numSegmentsAllocated) {
1766− DMA_Segment_t *newSegment;
1767− size_t oldSize =
1768− region->numSegmentsAllocated * sizeof(*newSegment);
1769− int newAlloc = region->numSegmentsAllocated + 4;
1770− size_t newSize = newAlloc * sizeof(*newSegment);
1771−
1772− newSegment = kmalloc(newSize, GFP_KERNEL);
1773− if (newSegment == NULL) {
1774− return -ENOMEM;
1775− }
1776− memcpy(newSegment, region->segment, oldSize);
1777− memset(&((uint8_t *) newSegment)[oldSize], 0,
1778− newSize - oldSize);
1779− kfree(region->segment);
1780−
1781− region->numSegmentsAllocated = newAlloc;
1782− region->segment = newSegment;
1783− }
1784−
1785− segment = &region->segment[region->numSegmentsUsed];
1786− region->numSegmentsUsed++;
1787−
1788− segment->virtAddr = virtAddr;
1789− segment->physAddr = physAddr;
1790− segment->numBytes = numBytes;
1791−
1792− DMA_MAP_PRINT("returning success\n");
1793−
1794− return 0;
1795−}
1796−
1797−/****************************************************************************/
1798−/**
1799−* Adds a region of memory to a memory map. Each region is virtually
1800−* contiguous, but not necessarily physically contiguous.
1801−*
1802−* @return 0 on success, error code otherwise.
1803−*/
1804−/****************************************************************************/
1805−
1806−int dma_map_add_region(DMA_MemMap_t *memMap, /* Stores state information about the map */
1807− void *mem, /* Virtual address that we want to get a map of */
1808− size_t numBytes /* Number of bytes being mapped */
1809− ) {
1810− unsigned long addr = (unsigned long)mem;
1811− unsigned int offset;
1812− int rc = 0;
1813− DMA_Region_t *region;
1814− dma_addr_t physAddr;
1815−
1816− down(&memMap->lock);
1817−
1818− DMA_MAP_PRINT("memMap:%p va:%p #:%d\n", memMap, mem, numBytes);
1819−
1820− if (!memMap->inUse) {
1821− printk(KERN_ERR "%s: Make sure you call dma_map_start first\n",
1822− __func__);
1823− rc = -EINVAL;
1824− goto out;
1825− }
1826−
1827− /* Reallocate to hold more regions. */
1828−
1829− if (memMap->numRegionsUsed >= memMap->numRegionsAllocated) {
1830− DMA_Region_t *newRegion;
1831− size_t oldSize =
1832− memMap->numRegionsAllocated * sizeof(*newRegion);
1833− int newAlloc = memMap->numRegionsAllocated + 4;
1834− size_t newSize = newAlloc * sizeof(*newRegion);
1835−
1836− newRegion = kmalloc(newSize, GFP_KERNEL);
1837− if (newRegion == NULL) {
1838− rc = -ENOMEM;
1839− goto out;
1840− }
1841− memcpy(newRegion, memMap->region, oldSize);
1842− memset(&((uint8_t *) newRegion)[oldSize], 0, newSize - oldSize);
1843−
1844− kfree(memMap->region);
1845−
1846− memMap->numRegionsAllocated = newAlloc;
1847− memMap->region = newRegion;
1848− }
1849−
1850− region = &memMap->region[memMap->numRegionsUsed];
1851− memMap->numRegionsUsed++;
1852−
1853− offset = addr & ~PAGE_MASK;
1854−
1855− region->memType = dma_mem_type(mem);
1856− region->virtAddr = mem;
1857− region->numBytes = numBytes;
1858− region->numSegmentsUsed = 0;
1859− region->numLockedPages = 0;
1860− region->lockedPages = NULL;
1861−
1862− switch (region->memType) {
1863− case DMA_MEM_TYPE_VMALLOC:
1864− {
1865− atomic_inc(&gDmaStatMemTypeVmalloc);
1866−
1867− /* printk(KERN_ERR "%s: vmalloc'd pages are not supported\n", __func__); */
1868−
1869− /* vmalloc'd pages are not physically contiguous */
1870−
1871− rc = -EINVAL;
1872− break;
1873− }
1874−
1875− case DMA_MEM_TYPE_KMALLOC:
1876− {
1877− atomic_inc(&gDmaStatMemTypeKmalloc);
1878−
1879− /* kmalloc'd pages are physically contiguous, so they'll have exactly */
1880− /* one segment */
1881−
1882−#if ALLOW_MAP_OF_KMALLOC_MEMORY
1883− physAddr =
1884− dma_map_single(NULL, mem, numBytes, memMap->dir);
1885− rc = dma_map_add_segment(memMap, region, mem, physAddr,
1886− numBytes);
1887−#else
1888− rc = -EINVAL;
1889−#endif
1890− break;
1891− }
1892−
1893− case DMA_MEM_TYPE_DMA:
1894− {
1895− /* dma_alloc_xxx pages are physically contiguous */
1896−
1897− atomic_inc(&gDmaStatMemTypeCoherent);
1898−
1899− physAddr = (vmalloc_to_pfn(mem) << PAGE_SHIFT) + offset;
1900−
1901− dma_sync_single_for_cpu(NULL, physAddr, numBytes,
1902− memMap->dir);
1903− rc = dma_map_add_segment(memMap, region, mem, physAddr,
1904− numBytes);
1905− break;
1906− }
1907−
1908− case DMA_MEM_TYPE_USER:
1909− {
1910− size_t firstPageOffset;
1911− size_t firstPageSize;
1912− struct page **pages;
1913− struct task_struct *userTask;
1914−
1915− atomic_inc(&gDmaStatMemTypeUser);
1916−
1917−#if 1
1918− /* If the pages are user pages, then the dma_mem_map_set_user_task function */
1919− /* must have been previously called. */
1920−
1921− if (memMap->userTask == NULL) {
1922− printk(KERN_ERR
1923− "%s: must call dma_mem_map_set_user_task when using user-mode memory\n",
1924− __func__);
1925− return -EINVAL;
1926− }
1927−
1928− /* User pages need to be locked. */
1929−
1930− firstPageOffset =
1931− (unsigned long)region->virtAddr & (PAGE_SIZE - 1);
1932− firstPageSize = PAGE_SIZE - firstPageOffset;
1933−
1934− region->numLockedPages = (firstPageOffset
1935− + region->numBytes +
1936− PAGE_SIZE - 1) / PAGE_SIZE;
1937− pages =
1938− kmalloc(region->numLockedPages *
1939− sizeof(struct page *), GFP_KERNEL);
1940−
1941− if (pages == NULL) {
1942− region->numLockedPages = 0;
1943− return -ENOMEM;
1944− }
1945−
1946− userTask = memMap->userTask;
1947−
1948− down_read(&userTask->mm->mmap_sem);
1949− rc = get_user_pages(userTask, /* task */
1950− userTask->mm, /* mm */
1951− (unsigned long)region->virtAddr, /* start */
1952− region->numLockedPages, /* len */
1953− memMap->dir == DMA_FROM_DEVICE, /* write */
1954− 0, /* force */
1955− pages, /* pages (array of pointers to page) */
1956− NULL); /* vmas */
1957− up_read(&userTask->mm->mmap_sem);
1958−
1959− if (rc != region->numLockedPages) {
1960− kfree(pages);
1961− region->numLockedPages = 0;
1962−
1963− if (rc >= 0) {
1964− rc = -EINVAL;
1965− }
1966− } else {
1967− uint8_t *virtAddr = region->virtAddr;
1968− size_t bytesRemaining;
1969− int pageIdx;
1970−
1971− rc = 0; /* Since get_user_pages returns +ve number */
1972−
1973− region->lockedPages = pages;
1974−
1975− /* We've locked the user pages. Now we need to walk them and figure */
1976− /* out the physical addresses. */
1977−
1978− /* The first page may be partial */
1979−
1980− dma_map_add_segment(memMap,
1981− region,
1982− virtAddr,
1983− PFN_PHYS(page_to_pfn
1984− (pages[0])) +
1985− firstPageOffset,
1986− firstPageSize);
1987−
1988− virtAddr += firstPageSize;
1989− bytesRemaining =
1990− region->numBytes - firstPageSize;
1991−
1992− for (pageIdx = 1;
1993− pageIdx < region->numLockedPages;
1994− pageIdx++) {
1995− size_t bytesThisPage =
1996− (bytesRemaining >
1997− PAGE_SIZE ? PAGE_SIZE :
1998− bytesRemaining);
1999−
2000− DMA_MAP_PRINT
2001− ("pageIdx:%d pages[pageIdx]=%p pfn=%u phys=%u\n",
2002− pageIdx, pages[pageIdx],
2003− page_to_pfn(pages[pageIdx]),
2004− PFN_PHYS(page_to_pfn
2005− (pages[pageIdx])));
2006−
2007− dma_map_add_segment(memMap,
2008− region,
2009− virtAddr,
2010− PFN_PHYS(page_to_pfn
2011− (pages
2012− [pageIdx])),
2013− bytesThisPage);
2014−
2015− virtAddr += bytesThisPage;
2016− bytesRemaining -= bytesThisPage;
2017− }
2018− }
2019−#else
2020− printk(KERN_ERR
2021− "%s: User mode pages are not yet supported\n",
2022− __func__);
2023−
2024− /* user pages are not physically contiguous */
2025−
2026− rc = -EINVAL;
2027−#endif
2028− break;
2029− }
2030−
2031− default:
2032− {
2033− printk(KERN_ERR "%s: Unsupported memory type: %d\n",
2034− __func__, region->memType);
2035−
2036− rc = -EINVAL;
2037− break;
2038− }
2039− }
2040−
2041− if (rc != 0) {
2042− memMap->numRegionsUsed--;
2043− }
2044−
2045−out:
2046−
2047− DMA_MAP_PRINT("returning %d\n", rc);
2048−
2049− up(&memMap->lock);
2050−
2051− return rc;
2052−}
2053−
2054−EXPORT_SYMBOL(dma_map_add_segment);
2055−
2056−/****************************************************************************/
2057−/**
2058−* Maps in a memory region such that it can be used for performing a DMA.
2059−*
2060−* @return 0 on success, error code otherwise.
2061−*/
2062−/****************************************************************************/
2063−
2064−int dma_map_mem(DMA_MemMap_t *memMap, /* Stores state information about the map */
2065− void *mem, /* Virtual address that we want to get a map of */
2066− size_t numBytes, /* Number of bytes being mapped */
2067− enum dma_data_direction dir /* Direction that the mapping will be going */
2068− ) {
2069− int rc;
2070−
2071− rc = dma_map_start(memMap, dir);
2072− if (rc == 0) {
2073− rc = dma_map_add_region(memMap, mem, numBytes);
2074− if (rc < 0) {
2075− /* Since the add fails, this function will fail, and the caller won't */
2076− /* call unmap, so we need to do it here. */
2077−
2078− dma_unmap(memMap, 0);
2079− }
2080− }
2081−
2082− return rc;
2083−}
2084−
2085−EXPORT_SYMBOL(dma_map_mem);
2086−
2087−/****************************************************************************/
2088−/**
2089−* Setup a descriptor ring for a given memory map.
2090−*
2091−* It is assumed that the descriptor ring has already been initialized, and
2092−* this routine will only reallocate a new descriptor ring if the existing
2093−* one is too small.
2094−*
2095−* @return 0 on success, error code otherwise.
2096−*/
2097−/****************************************************************************/
2098−
2099−int dma_map_create_descriptor_ring(DMA_Device_t dev, /* DMA device (where the ring is stored) */
2100− DMA_MemMap_t *memMap, /* Memory map that will be used */
2101− dma_addr_t devPhysAddr /* Physical address of device */
2102− ) {
2103− int rc;
2104− int numDescriptors;
2105− DMA_DeviceAttribute_t *devAttr;
2106− DMA_Region_t *region;
2107− DMA_Segment_t *segment;
2108− dma_addr_t srcPhysAddr;
2109− dma_addr_t dstPhysAddr;
2110− int regionIdx;
2111− int segmentIdx;
2112−
2113− devAttr = &DMA_gDeviceAttribute[dev];
2114−
2115− down(&memMap->lock);
2116−
2117− /* Figure out how many descriptors we need */
2118−
2119− numDescriptors = 0;
2120− for (regionIdx = 0; regionIdx < memMap->numRegionsUsed; regionIdx++) {
2121− region = &memMap->region[regionIdx];
2122−
2123− for (segmentIdx = 0; segmentIdx < region->numSegmentsUsed;
2124− segmentIdx++) {
2125− segment = &region->segment[segmentIdx];
2126−
2127− if (memMap->dir == DMA_TO_DEVICE) {
2128− srcPhysAddr = segment->physAddr;
2129− dstPhysAddr = devPhysAddr;
2130− } else {
2131− srcPhysAddr = devPhysAddr;
2132− dstPhysAddr = segment->physAddr;
2133− }
2134−
2135− rc =
2136− dma_calculate_descriptor_count(dev, srcPhysAddr,
2137− dstPhysAddr,
2138− segment->
2139− numBytes);
2140− if (rc < 0) {
2141− printk(KERN_ERR
2142− "%s: dma_calculate_descriptor_count failed: %d\n",
2143− __func__, rc);
2144− goto out;
2145− }
2146− numDescriptors += rc;
2147− }
2148− }
2149−
2150− /* Adjust the size of the ring, if it isn't big enough */
2151−
2152− if (numDescriptors > devAttr->ring.descriptorsAllocated) {
2153− dma_free_descriptor_ring(&devAttr->ring);
2154− rc =
2155− dma_alloc_descriptor_ring(&devAttr->ring,
2156− numDescriptors);
2157− if (rc < 0) {
2158− printk(KERN_ERR
2159− "%s: dma_alloc_descriptor_ring failed: %d\n",
2160− __func__, rc);
2161− goto out;
2162− }
2163− } else {
2164− rc =
2165− dma_init_descriptor_ring(&devAttr->ring,
2166− numDescriptors);
2167− if (rc < 0) {
2168− printk(KERN_ERR
2169− "%s: dma_init_descriptor_ring failed: %d\n",
2170− __func__, rc);
2171− goto out;
2172− }
2173− }
2174−
2175− /* Populate the descriptors */
2176−
2177− for (regionIdx = 0; regionIdx < memMap->numRegionsUsed; regionIdx++) {
2178− region = &memMap->region[regionIdx];
2179−
2180− for (segmentIdx = 0; segmentIdx < region->numSegmentsUsed;
2181− segmentIdx++) {
2182− segment = &region->segment[segmentIdx];
2183−
2184− if (memMap->dir == DMA_TO_DEVICE) {
2185− srcPhysAddr = segment->physAddr;
2186− dstPhysAddr = devPhysAddr;
2187− } else {
2188− srcPhysAddr = devPhysAddr;
2189− dstPhysAddr = segment->physAddr;
2190− }
2191−
2192− rc =
2193− dma_add_descriptors(&devAttr->ring, dev,
2194− srcPhysAddr, dstPhysAddr,
2195− segment->numBytes);
2196− if (rc < 0) {
2197− printk(KERN_ERR
2198− "%s: dma_add_descriptors failed: %d\n",
2199− __func__, rc);
2200− goto out;
2201− }
2202− }
2203− }
2204−
2205− rc = 0;
2206−
2207−out:
2208−
2209− up(&memMap->lock);
2210− return rc;
2211−}
2212−
2213−EXPORT_SYMBOL(dma_map_create_descriptor_ring);
2214−
2215−/****************************************************************************/
2216−/**
2217−* Maps in a memory region such that it can be used for performing a DMA.
2218−*
2219−* @return
2220−*/
2221−/****************************************************************************/
2222−
2223−int dma_unmap(DMA_MemMap_t *memMap, /* Stores state information about the map */
2224− int dirtied /* non-zero if any of the pages were modified */
2225− ) {
2226−
2227− int rc = 0;
2228− int regionIdx;
2229− int segmentIdx;
2230− DMA_Region_t *region;
2231− DMA_Segment_t *segment;
2232−
2233− down(&memMap->lock);
2234−
2235− for (regionIdx = 0; regionIdx < memMap->numRegionsUsed; regionIdx++) {
2236− region = &memMap->region[regionIdx];
2237−
2238− for (segmentIdx = 0; segmentIdx < region->numSegmentsUsed;
2239− segmentIdx++) {
2240− segment = &region->segment[segmentIdx];
2241−
2242− switch (region->memType) {
2243− case DMA_MEM_TYPE_VMALLOC:
2244− {
2245− printk(KERN_ERR
2246− "%s: vmalloc'd pages are not yet supported\n",
2247− __func__);
2248− rc = -EINVAL;
2249− goto out;
2250− }
2251−
2252− case DMA_MEM_TYPE_KMALLOC:
2253− {
2254−#if ALLOW_MAP_OF_KMALLOC_MEMORY
2255− dma_unmap_single(NULL,
2256− segment->physAddr,
2257− segment->numBytes,
2258− memMap->dir);
2259−#endif
2260− break;
2261− }
2262−
2263− case DMA_MEM_TYPE_DMA:
2264− {
2265− dma_sync_single_for_cpu(NULL,
2266− segment->
2267− physAddr,
2268− segment->
2269− numBytes,
2270− memMap->dir);
2271− break;
2272− }
2273−
2274− case DMA_MEM_TYPE_USER:
2275− {
2276− /* Nothing to do here. */
2277−
2278− break;
2279− }
2280−
2281− default:
2282− {
2283− printk(KERN_ERR
2284− "%s: Unsupported memory type: %d\n",
2285− __func__, region->memType);
2286− rc = -EINVAL;
2287− goto out;
2288− }
2289− }
2290−
2291− segment->virtAddr = NULL;
2292− segment->physAddr = 0;
2293− segment->numBytes = 0;
2294− }
2295−
2296− if (region->numLockedPages > 0) {
2297− int pageIdx;
2298−
2299− /* Some user pages were locked. We need to go and unlock them now. */
2300−
2301− for (pageIdx = 0; pageIdx < region->numLockedPages;
2302− pageIdx++) {
2303− struct page *page =
2304− region->lockedPages[pageIdx];
2305−
2306− if (memMap->dir == DMA_FROM_DEVICE) {
2307− SetPageDirty(page);
2308− }
2309− page_cache_release(page);
2310− }
2311− kfree(region->lockedPages);
2312− region->numLockedPages = 0;
2313− region->lockedPages = NULL;
2314− }
2315−
2316− region->memType = DMA_MEM_TYPE_NONE;
2317− region->virtAddr = NULL;
2318− region->numBytes = 0;
2319− region->numSegmentsUsed = 0;
2320− }
2321− memMap->userTask = NULL;
2322− memMap->numRegionsUsed = 0;
2323− memMap->inUse = 0;
2324−
2325−out:
2326− up(&memMap->lock);
2327−
2328− return rc;
2329−}
2330−
2331−EXPORT_SYMBOL(dma_unmap);
arch/arm/mach-bcmring/include/mach/dma.h+0−196
@@ -26,15 +26,9 @@ · 25 unmodified lines
2626 /* ---- Include Files ---------------------------------------------------- */
2727
2828 #include <linux/kernel.h>
29−#include <linux/wait.h>
3029 #include <linux/semaphore.h>
3130 #include <csp/dmacHw.h>
3231 #include <mach/timer.h>
33−#include <linux/scatterlist.h>
34−#include <linux/dma-mapping.h>
35−#include <linux/mm.h>
36−#include <linux/vmalloc.h>
37−#include <linux/pagemap.h>
3832
3933 /* ---- Constants and Types ---------------------------------------------- */
4034
@@ -111,78 +105,6 @@ typedef struct { · 70 unmodified lines
111105
112106 } DMA_DescriptorRing_t;
113107
114−/****************************************************************************
115−*
116−* The DMA_MemType_t and DMA_MemMap_t are helper structures used to setup
117−* DMA chains from a variety of memory sources.
118−*
119−*****************************************************************************/
120−
121−#define DMA_MEM_MAP_MIN_SIZE 4096 /* Pages less than this size are better */
122− /* off not being DMA'd. */
123−
124−typedef enum {
125− DMA_MEM_TYPE_NONE, /* Not a valid setting */
126− DMA_MEM_TYPE_VMALLOC, /* Memory came from vmalloc call */
127− DMA_MEM_TYPE_KMALLOC, /* Memory came from kmalloc call */
128− DMA_MEM_TYPE_DMA, /* Memory came from dma_alloc_xxx call */
129− DMA_MEM_TYPE_USER, /* Memory came from user space. */
130−
131−} DMA_MemType_t;
132−
133−/* A segment represents a physically and virtually contiguous chunk of memory. */
134−/* i.e. each segment can be DMA'd */
135−/* A user of the DMA code will add memory regions. Each region may need to be */
136−/* represented by one or more segments. */
137−
138−typedef struct {
139− void *virtAddr; /* Virtual address used for this segment */
140− dma_addr_t physAddr; /* Physical address this segment maps to */
141− size_t numBytes; /* Size of the segment, in bytes */
142−
143−} DMA_Segment_t;
144−
145−/* A region represents a virtually contiguous chunk of memory, which may be */
146−/* made up of multiple segments. */
147−
148−typedef struct {
149− DMA_MemType_t memType;
150− void *virtAddr;
151− size_t numBytes;
152−
153− /* Each region (virtually contiguous) consists of one or more segments. Each */
154− /* segment is virtually and physically contiguous. */
155−
156− int numSegmentsUsed;
157− int numSegmentsAllocated;
158− DMA_Segment_t *segment;
159−
160− /* When a region corresponds to user memory, we need to lock all of the pages */
161− /* down before we can figure out the physical addresses. The lockedPage array contains */
162− /* the pages that were locked, and which subsequently need to be unlocked once the */
163− /* memory is unmapped. */
164−
165− unsigned numLockedPages;
166− struct page **lockedPages;
167−
168−} DMA_Region_t;
169−
170−typedef struct {
171− int inUse; /* Is this mapping currently being used? */
172− struct semaphore lock; /* Acquired when using this structure */
173− enum dma_data_direction dir; /* Direction this transfer is intended for */
174−
175− /* In the event that we're mapping user memory, we need to know which task */
176− /* the memory is for, so that we can obtain the correct mm locks. */
177−
178− struct task_struct *userTask;
179−
180− int numRegionsUsed;
181− int numRegionsAllocated;
182− DMA_Region_t *region;
183−
184−} DMA_MemMap_t;
185−
186108 /****************************************************************************
187109 *
188110 * The DMA_DeviceAttribute_t contains information which describes a
@@ -568,124 +490,6 @@ int dma_alloc_double_dst_descriptors(DMA_Handle_t handle, /* DMA Handle */ · 379 unmodified lines
568490 size_t numBytes /* Number of bytes in each destination buffer */
569491 );
570492
571−/****************************************************************************/
572−/**
573−* Initializes a DMA_MemMap_t data structure
574−*/
575−/****************************************************************************/
576−
577−int dma_init_mem_map(DMA_MemMap_t *memMap /* Stores state information about the map */
578− );
579−
580−/****************************************************************************/
581−/**
582−* Releases any memory currently being held by a memory mapping structure.
583−*/
584−/****************************************************************************/
585−
586−int dma_term_mem_map(DMA_MemMap_t *memMap /* Stores state information about the map */
587− );
588−
589−/****************************************************************************/
590−/**
591−* Looks at a memory address and categorizes it.
592−*
593−* @return One of the values from the DMA_MemType_t enumeration.
594−*/
595−/****************************************************************************/
596−
597−DMA_MemType_t dma_mem_type(void *addr);
598−
599−/****************************************************************************/
600−/**
601−* Sets the process (aka userTask) associated with a mem map. This is
602−* required if user-mode segments will be added to the mapping.
603−*/
604−/****************************************************************************/
605−
606−static inline void dma_mem_map_set_user_task(DMA_MemMap_t *memMap,
607− struct task_struct *task)
608−{
609− memMap->userTask = task;
610−}
611−
612−/****************************************************************************/
613−/**
614−* Looks at a memory address and determines if we support DMA'ing to/from
615−* that type of memory.
616−*
617−* @return boolean -
618−* return value != 0 means dma supported
619−* return value == 0 means dma not supported
620−*/
621−/****************************************************************************/
622−
623−int dma_mem_supports_dma(void *addr);
624−
625−/****************************************************************************/
626−/**
627−* Initializes a memory map for use. Since this function acquires a
628−* sempaphore within the memory map, it is VERY important that dma_unmap
629−* be called when you're finished using the map.
630−*/
631−/****************************************************************************/
632−
633−int dma_map_start(DMA_MemMap_t *memMap, /* Stores state information about the map */
634− enum dma_data_direction dir /* Direction that the mapping will be going */
635− );
636−
637−/****************************************************************************/
638−/**
639−* Adds a segment of memory to a memory map.
640−*
641−* @return 0 on success, error code otherwise.
642−*/
643−/****************************************************************************/
644−
645−int dma_map_add_region(DMA_MemMap_t *memMap, /* Stores state information about the map */
646− void *mem, /* Virtual address that we want to get a map of */
647− size_t numBytes /* Number of bytes being mapped */
648− );
649−
650−/****************************************************************************/
651−/**
652−* Creates a descriptor ring from a memory mapping.
653−*
654−* @return 0 on success, error code otherwise.
655−*/
656−/****************************************************************************/
657−
658−int dma_map_create_descriptor_ring(DMA_Device_t dev, /* DMA device (where the ring is stored) */
659− DMA_MemMap_t *memMap, /* Memory map that will be used */
660− dma_addr_t devPhysAddr /* Physical address of device */
661− );
662−
663−/****************************************************************************/
664−/**
665−* Maps in a memory region such that it can be used for performing a DMA.
666−*
667−* @return
668−*/
669−/****************************************************************************/
670−
671−int dma_map_mem(DMA_MemMap_t *memMap, /* Stores state information about the map */
672− void *addr, /* Virtual address that we want to get a map of */
673− size_t count, /* Number of bytes being mapped */
674− enum dma_data_direction dir /* Direction that the mapping will be going */
675− );
676−
677−/****************************************************************************/
678−/**
679−* Maps in a memory region such that it can be used for performing a DMA.
680−*
681−* @return
682−*/
683−/****************************************************************************/
684−
685−int dma_unmap(DMA_MemMap_t *memMap, /* Stores state information about the map */
686− int dirtied /* non-zero if any of the pages were modified */
687− );
688−
689493 /****************************************************************************/
690494 /**
691495 * Initiates a transfer when the descriptors have already been setup.
arch/arm/mach-davinci/board-da850-evm.c+1−1
@@ -44,7 +44,7 @@ · 43 unmodified lines
4444 #include <mach/aemif.h>
4545 #include <mach/spi.h>
4646
47−#define DA850_EVM_PHY_ID "0:00"
47+#define DA850_EVM_PHY_ID "davinci_mdio-0:00"
4848 #define DA850_LCD_PWR_PIN GPIO_TO_PIN(2, 8)
4949 #define DA850_LCD_BL_PIN GPIO_TO_PIN(2, 15)
5050
arch/arm/mach-davinci/board-dm365-evm.c+1−1
@@ -54,7 +54,7 @@ static inline int have_tvp7002(void) · 53 unmodified lines
5454 return 0;
5555 }
5656
57−#define DM365_EVM_PHY_ID "0:01"
57+#define DM365_EVM_PHY_ID "davinci_mdio-0:01"
5858 /*
5959 * A MAX-II CPLD is used for various board control functions.
6060 */
arch/arm/mach-davinci/board-dm644x-evm.c+1−1
@@ -40,7 +40,7 @@ · 39 unmodified lines
4040 #include <mach/usb.h>
4141 #include <mach/aemif.h>
4242
43−#define DM644X_EVM_PHY_ID "0:01"
43+#define DM644X_EVM_PHY_ID "davinci_mdio-0:01"
4444 #define LXT971_PHY_ID (0x001378e2)
4545 #define LXT971_PHY_MASK (0xfffffff0)
4646
arch/arm/mach-davinci/board-dm646x-evm.c+1−1
@@ -736,7 +736,7 @@ static struct davinci_uart_config uart_config __initdata = { · 735 unmodified lines
736736 .enabled_uarts = (1 << 0),
737737 };
738738
739−#define DM646X_EVM_PHY_ID "0:01"
739+#define DM646X_EVM_PHY_ID "davinci_mdio-0:01"
740740 /*
741741 * The following EDMA channels/slots are not being used by drivers (for
742742 * example: Timer, GPIO, UART events etc) on dm646x, hence they are being
arch/arm/mach-davinci/board-neuros-osd2.c+1−1
@@ -39,7 +39,7 @@ · 38 unmodified lines
3939 #include <mach/mmc.h>
4040 #include <mach/usb.h>
4141
42−#define NEUROS_OSD2_PHY_ID "0:01"
42+#define NEUROS_OSD2_PHY_ID "davinci_mdio-0:01"
4343 #define LXT971_PHY_ID 0x001378e2
4444 #define LXT971_PHY_MASK 0xfffffff0
4545
arch/arm/mach-davinci/board-omapl138-hawk.c+1−1
@@ -21,7 +21,7 @@ · 20 unmodified lines
2121 #include <mach/da8xx.h>
2222 #include <mach/mux.h>
2323
24−#define HAWKBOARD_PHY_ID "0:07"
24+#define HAWKBOARD_PHY_ID "davinci_mdio-0:07"
2525 #define DA850_HAWK_MMCSD_CD_PIN GPIO_TO_PIN(3, 12)
2626 #define DA850_HAWK_MMCSD_WP_PIN GPIO_TO_PIN(3, 13)
2727
arch/arm/mach-davinci/board-sffsdr.c+1−1
@@ -42,7 +42,7 @@ · 41 unmodified lines
4242 #include <mach/mux.h>
4343 #include <mach/usb.h>
4444
45−#define SFFSDR_PHY_ID "0:01"
45+#define SFFSDR_PHY_ID "davinci_mdio-0:01"
4646 static struct mtd_partition davinci_sffsdr_nandflash_partition[] = {
4747 /* U-Boot Environment: Block 0
4848 * UBL: Block 1
arch/arm/mach-davinci/da850.c+0−32
@@ -153,34 +153,6 @@ static struct clk pll1_sysclk3 = { · 152 unmodified lines
153153 .div_reg = PLLDIV3,
154154 };
155155
156−static struct clk pll1_sysclk4 = {
157− .name = "pll1_sysclk4",
158− .parent = &pll1_clk,
159− .flags = CLK_PLL,
160− .div_reg = PLLDIV4,
161−};
162−
163−static struct clk pll1_sysclk5 = {
164− .name = "pll1_sysclk5",
165− .parent = &pll1_clk,
166− .flags = CLK_PLL,
167− .div_reg = PLLDIV5,
168−};
169−
170−static struct clk pll1_sysclk6 = {
171− .name = "pll0_sysclk6",
172− .parent = &pll0_clk,
173− .flags = CLK_PLL,
174− .div_reg = PLLDIV6,
175−};
176−
177−static struct clk pll1_sysclk7 = {
178− .name = "pll1_sysclk7",
179− .parent = &pll1_clk,
180− .flags = CLK_PLL,
181− .div_reg = PLLDIV7,
182−};
183−
184156 static struct clk i2c0_clk = {
185157 .name = "i2c0",
186158 .parent = &pll0_aux_clk,
@@ -397,10 +369,6 @@ static struct clk_lookup da850_clks[] = { · 210 unmodified lines
397369 CLK(NULL, "pll1_aux", &pll1_aux_clk),
398370 CLK(NULL, "pll1_sysclk2", &pll1_sysclk2),
399371 CLK(NULL, "pll1_sysclk3", &pll1_sysclk3),
400− CLK(NULL, "pll1_sysclk4", &pll1_sysclk4),
401− CLK(NULL, "pll1_sysclk5", &pll1_sysclk5),
402− CLK(NULL, "pll1_sysclk6", &pll1_sysclk6),
403− CLK(NULL, "pll1_sysclk7", &pll1_sysclk7),
404372 CLK("i2c_davinci.1", NULL, &i2c0_clk),
405373 CLK(NULL, "timer0", &timerp64_0_clk),
406374 CLK("watchdog", NULL, &timerp64_1_clk),
arch/arm/mach-dove/common.c+2−1
@@ -28,6 +28,7 @@ · 27 unmodified lines
2828 #include <asm/mach/arch.h>
2929 #include <linux/irq.h>
3030 #include <plat/time.h>
31+#include <plat/ehci-orion.h>
3132 #include <plat/common.h>
3233 #include <plat/addr-map.h>
3334 #include "common.h"
@@ -71,7 +72,7 @@ void __init dove_map_io(void) · 37 unmodified lines
7172 ****************************************************************************/
7273 void __init dove_ehci0_init(void)
7374 {
74− orion_ehci_init(DOVE_USB0_PHYS_BASE, IRQ_DOVE_USB0);
75+ orion_ehci_init(DOVE_USB0_PHYS_BASE, IRQ_DOVE_USB0, EHCI_PHY_NA);
7576 }
7677
7778 /*****************************************************************************
arch/arm/mach-ep93xx/include/mach/dma.h+3−3
@@ -37,7 +37,7 @@ · 36 unmodified lines
3737 */
3838 struct ep93xx_dma_data {
3939 int port;
40− enum dma_data_direction direction;
40+ enum dma_transfer_direction direction;
4141 const char *name;
4242 };
4343
@@ -80,14 +80,14 @@ static inline bool ep93xx_dma_chan_is_m2p(struct dma_chan *chan) · 36 unmodified lines
8080 * channel supports given DMA direction. Only M2P channels have such
8181 * limitation, for M2M channels the direction is configurable.
8282 */
83−static inline enum dma_data_direction
83+static inline enum dma_transfer_direction
8484 ep93xx_dma_chan_direction(struct dma_chan *chan)
8585 {
8686 if (!ep93xx_dma_chan_is_m2p(chan))
8787 return DMA_NONE;
8888
8989 /* even channels are for TX, odd for RX */
90− return (chan->chan_id % 2 == 0) ? DMA_TO_DEVICE : DMA_FROM_DEVICE;
90+ return (chan->chan_id % 2 == 0) ? DMA_MEM_TO_DEV : DMA_DEV_TO_MEM;
9191 }
9292
9393 #endif /* __ASM_ARCH_DMA_H */
arch/arm/mach-ep93xx/vision_ep9307.c+3−1
@@ -32,6 +32,7 @@ · 31 unmodified lines
3232 #include <mach/hardware.h>
3333 #include <mach/fb.h>
3434 #include <mach/ep93xx_spi.h>
35+#include <mach/gpio-ep93xx.h>
3536
3637 #include <asm/mach-types.h>
3738 #include <asm/mach/map.h>
@@ -153,7 +154,6 @@ static struct i2c_board_info vision_i2c_info[] __initdata = { · 115 unmodified lines
153154 }, {
154155 I2C_BOARD_INFO("pca9539", 0x74),
155156 .platform_data = &pca953x_74_gpio_data,
156− .irq = gpio_to_irq(EP93XX_GPIO_LINE_F(7)),
157157 }, {
158158 I2C_BOARD_INFO("pca9539", 0x75),
159159 .platform_data = &pca953x_75_gpio_data,
@@ -348,6 +348,8 @@ static void __init vision_init_machine(void) · 188 unmodified lines
348348 "pca9539:74"))
349349 pr_warn("cannot request interrupt gpio for pca9539:74\n");
350350
351+ vision_i2c_info[1].irq = gpio_to_irq(EP93XX_GPIO_LINE_F(7));
352+
351353 ep93xx_register_i2c(&vision_i2c_gpio_data, vision_i2c_info,
352354 ARRAY_SIZE(vision_i2c_info));
353355 ep93xx_register_spi(&vision_spi_master, vision_spi_board_info,
arch/arm/mach-exynos/clock-exynos4210.c+2−0
@@ -32,6 +32,7 @@ · 31 unmodified lines
3232
3333 #include "common.h"
3434
35+#ifdef CONFIG_PM_SLEEP
3536 static struct sleep_save exynos4210_clock_save[] = {
3637 SAVE_ITEM(S5P_CLKSRC_IMAGE),
3738 SAVE_ITEM(S5P_CLKSRC_LCD1),
@@ -42,6 +43,7 @@ static struct sleep_save exynos4210_clock_save[] = { · 4 unmodified lines
4243 SAVE_ITEM(S5P_CLKGATE_IP_LCD1),
4344 SAVE_ITEM(S5P_CLKGATE_IP_PERIR_4210),
4445 };
46+#endif
4547
4648 static struct clksrc_clk *sysclks[] = {
4749 /* nothing here yet */
arch/arm/mach-exynos/clock-exynos4212.c+2−0
@@ -32,12 +32,14 @@ · 31 unmodified lines
3232
3333 #include "common.h"
3434
35+#ifdef CONFIG_PM_SLEEP
3536 static struct sleep_save exynos4212_clock_save[] = {
3637 SAVE_ITEM(S5P_CLKSRC_IMAGE),
3738 SAVE_ITEM(S5P_CLKDIV_IMAGE),
3839 SAVE_ITEM(S5P_CLKGATE_IP_IMAGE_4212),
3940 SAVE_ITEM(S5P_CLKGATE_IP_PERIR_4212),
4041 };
42+#endif
4143
4244 static struct clk *clk_src_mpll_user_list[] = {
4345 [0] = &clk_fin_mpll,
arch/arm/mach-exynos/clock.c+2−0
@@ -30,6 +30,7 @@ · 29 unmodified lines
3030
3131 #include "common.h"
3232
33+#ifdef CONFIG_PM_SLEEP
3334 static struct sleep_save exynos4_clock_save[] = {
3435 SAVE_ITEM(S5P_CLKDIV_LEFTBUS),
3536 SAVE_ITEM(S5P_CLKGATE_IP_LEFTBUS),
@@ -93,6 +94,7 @@ static struct sleep_save exynos4_clock_save[] = { · 57 unmodified lines
9394 SAVE_ITEM(S5P_CLKGATE_SCLKCPU),
9495 SAVE_ITEM(S5P_CLKGATE_IP_CPU),
9596 };
97+#endif
9698
9799 struct clk clk_sclk_hdmi27m = {
98100 .name = "sclk_hdmi27m",
arch/arm/mach-exynos/headsmp.S+2−0
@@ -36,6 +36,8 @@ pen: ldr r7, [r6] · 35 unmodified lines
3636 * should now contain the SVC stack for this core
3737 */
3838 b secondary_startup
39+ENDPROC(exynos4_secondary_startup)
3940
41+ .align 2
4042 1: .long .
4143 .long pen_release
arch/arm/mach-exynos/hotplug.c+1−0
@@ -16,6 +16,7 @@ · 15 unmodified lines
1616 #include <linux/io.h>
1717
1818 #include <asm/cacheflush.h>
19+#include <asm/smp_plat.h>
1920
2021 #include <mach/regs-pmu.h>
2122
arch/arm/mach-exynos/mach-exynos4-dt.c+6−2
@@ -15,11 +15,13 @@ · 14 unmodified lines
1515 #include <linux/serial_core.h>
1616
1717 #include <asm/mach/arch.h>
18+#include <asm/hardware/gic.h>
1819 #include <mach/map.h>
1920
2021 #include <plat/cpu.h>
2122 #include <plat/regs-serial.h>
22−#include <plat/exynos4.h>
23+
24+#include "common.h"
2325
2426 /*
2527 * The following lookup table is used to override device names when devices
@@ -60,7 +62,7 @@ static const struct of_dev_auxdata exynos4210_auxdata_lookup[] __initconst = { · 34 unmodified lines
6062
6163 static void __init exynos4210_dt_map_io(void)
6264 {
63− s5p_init_io(NULL, 0, S5P_VA_CHIPID);
65+ exynos_init_io(NULL, 0);
6466 s3c24xx_init_clocks(24000000);
6567 }
6668
@@ -79,7 +81,9 @@ DT_MACHINE_START(EXYNOS4210_DT, "Samsung Exynos4 (Flattened Device Tree)") · 12 unmodified lines
7981 /* Maintainer: Thomas Abraham <thomas.abraham@linaro.org> */
8082 .init_irq = exynos4_init_irq,
8183 .map_io = exynos4210_dt_map_io,
84+ .handle_irq = gic_handle_irq,
8285 .init_machine = exynos4210_dt_machine_init,
8386 .timer = &exynos4_timer,
8487 .dt_compat = exynos4210_dt_compat,
88+ .restart = exynos4_restart,
8589 MACHINE_END
arch/arm/mach-exynos/mach-nuri.c+4−4
@@ -220,14 +220,14 @@ static struct s3c_fb_pd_win nuri_fb_win0 = { · 219 unmodified lines
220220 .lower_margin = 1,
221221 .hsync_len = 48,
222222 .vsync_len = 3,
223− .xres = 1280,
224− .yres = 800,
223+ .xres = 1024,
224+ .yres = 600,
225225 .refresh = 60,
226226 },
227227 .max_bpp = 24,
228228 .default_bpp = 16,
229− .virtual_x = 1280,
230− .virtual_y = 800,
229+ .virtual_x = 1024,
230+ .virtual_y = 2 * 600,
231231 };
232232
233233 static struct s3c_fb_platdata nuri_fb_pdata __initdata = {
arch/arm/mach-exynos/mach-origen.c+2−1
@@ -597,7 +597,8 @@ static struct s3c_fb_pd_win origen_fb_win0 = { · 596 unmodified lines
597597 static struct s3c_fb_platdata origen_lcd_pdata __initdata = {
598598 .win[0] = &origen_fb_win0,
599599 .vidcon0 = VIDCON0_VIDOUT_RGB | VIDCON0_PNRMODE_RGB,
600− .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC,
600+ .vidcon1 = VIDCON1_INV_HSYNC | VIDCON1_INV_VSYNC |
601+ VIDCON1_INV_VCLK,
601602 .setup_gpio = exynos4_fimd0_gpio_setup_24bpp,
602603 };
603604
arch/arm/mach-exynos/mach-universal_c210.c+1−1
@@ -910,7 +910,7 @@ static struct s5p_fimc_isp_info universal_camera_sensors[] = { · 909 unmodified lines
910910 .bus_type = FIMC_MIPI_CSI2,
911911 .board_info = &m5mols_board_info,
912912 .i2c_bus_num = 0,
913− .clk_frequency = 21600000UL,
913+ .clk_frequency = 24000000UL,
914914 .csi_data_align = 32,
915915 },
916916 };
arch/arm/mach-exynos/platsmp.c+3−3
@@ -23,8 +23,8 @@ · 22 unmodified lines
2323
2424 #include <asm/cacheflush.h>
2525 #include <asm/hardware/gic.h>
26+#include <asm/smp_plat.h>
2627 #include <asm/smp_scu.h>
27−#include <asm/unified.h>
2828
2929 #include <mach/hardware.h>
3030 #include <mach/regs-clock.h>
@@ -137,7 +137,7 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) · 106 unmodified lines
137137 while (time_before(jiffies, timeout)) {
138138 smp_rmb();
139139
140− __raw_writel(BSYM(virt_to_phys(exynos4_secondary_startup)),
140+ __raw_writel(virt_to_phys(exynos4_secondary_startup),
141141 CPU1_BOOT_REG);
142142 gic_raise_softirq(cpumask_of(cpu), 1);
143143
@@ -192,6 +192,6 @@ void __init platform_smp_prepare_cpus(unsigned int max_cpus) · 48 unmodified lines
192192 * until it receives a soft interrupt, and then the
193193 * secondary CPU branches to this address.
194194 */
195− __raw_writel(BSYM(virt_to_phys(exynos4_secondary_startup)),
195+ __raw_writel(virt_to_phys(exynos4_secondary_startup),
196196 CPU1_BOOT_REG);
197197 }
arch/arm/mach-exynos/pm.c+3−1
@@ -206,7 +206,7 @@ static void exynos4_pm_prepare(void) · 205 unmodified lines
206206
207207 }
208208
209−static int exynos4_pm_add(struct device *dev)
209+static int exynos4_pm_add(struct device *dev, struct subsys_interface *sif)
210210 {
211211 pm_cpu_prep = exynos4_pm_prepare;
212212 pm_cpu_sleep = exynos4_cpu_suspend;
@@ -384,7 +384,9 @@ static void exynos4_pm_resume(void) · 171 unmodified lines
384384
385385 exynos4_restore_pll();
386386
387+#ifdef CONFIG_SMP
387388 scu_enable(S5P_VA_SCU);
389+#endif
388390
389391 #ifdef CONFIG_CACHE_L2X0
390392 s3c_pm_do_restore_core(exynos4_l2cc_save, ARRAY_SIZE(exynos4_l2cc_save));
arch/arm/mach-highbank/highbank.c+2−4
@@ -25,7 +25,7 @@ · 24 unmodified lines
2525 #include <linux/smp.h>
2626
2727 #include <asm/cacheflush.h>
28−#include <asm/unified.h>
28+#include <asm/smp_plat.h>
2929 #include <asm/smp_scu.h>
3030 #include <asm/hardware/arm_timer.h>
3131 #include <asm/hardware/timer-sp.h>
@@ -73,10 +73,8 @@ static void __init highbank_map_io(void) · 41 unmodified lines
7373
7474 void highbank_set_cpu_jump(int cpu, void *jump_addr)
7575 {
76−#ifdef CONFIG_SMP
7776 cpu = cpu_logical_map(cpu);
78−#endif
79− writel(BSYM(virt_to_phys(jump_addr)), HB_JUMP_TABLE_VIRT(cpu));
77+ writel(virt_to_phys(jump_addr), HB_JUMP_TABLE_VIRT(cpu));
8078 __cpuc_flush_dcache_area(HB_JUMP_TABLE_VIRT(cpu), 16);
8179 outer_clean_range(HB_JUMP_TABLE_PHYS(cpu),
8280 HB_JUMP_TABLE_PHYS(cpu) + 15);
arch/arm/mach-imx/Kconfig+238−0
@@ -22,6 +22,18 @@ config ARCH_MX25 · 21 unmodified lines
2222 config MACH_MX27
2323 bool
2424
25+config ARCH_MX5
26+ bool
27+
28+config ARCH_MX50
29+ bool
30+
31+config ARCH_MX51
32+ bool
33+
34+config ARCH_MX53
35+ bool
36+
2537 config SOC_IMX1
2638 bool
2739 select ARCH_MX1
@@ -73,6 +85,31 @@ config SOC_IMX35 · 45 unmodified lines
7385 select MXC_AVIC
7486 select SMP_ON_UP if SMP
7587
88+config SOC_IMX5
89+ select CPU_V7
90+ select MXC_TZIC
91+ select ARCH_MXC_IOMUX_V3
92+ select ARCH_MXC_AUDMUX_V2
93+ select ARCH_HAS_CPUFREQ
94+ select ARCH_MX5
95+ bool
96+
97+config SOC_IMX50
98+ bool
99+ select SOC_IMX5
100+ select ARCH_MX50
101+
102+config SOC_IMX51
103+ bool
104+ select SOC_IMX5
105+ select ARCH_MX5
106+ select ARCH_MX51
107+
108+config SOC_IMX53
109+ bool
110+ select SOC_IMX5
111+ select ARCH_MX5
112+ select ARCH_MX53
76113
77114 if ARCH_IMX_V4_V5
78115
@@ -592,6 +629,207 @@ config MACH_VPR200 · 513 unmodified lines
592629 Include support for VPR200 platform. This includes specific
593630 configurations for the board and its peripherals.
594631
632+comment "i.MX5 platforms:"
633+
634+config MACH_MX50_RDP
635+ bool "Support MX50 reference design platform"
636+ depends on BROKEN
637+ select SOC_IMX50
638+ select IMX_HAVE_PLATFORM_IMX_I2C
639+ select IMX_HAVE_PLATFORM_IMX_UART
640+ select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
641+ select IMX_HAVE_PLATFORM_SPI_IMX
642+ help
643+ Include support for MX50 reference design platform (RDP) board. This
644+ includes specific configurations for the board and its peripherals.
645+
646+comment "i.MX51 machines:"
647+
648+config MACH_IMX51_DT
649+ bool "Support i.MX51 platforms from device tree"
650+ select SOC_IMX51
651+ select USE_OF
652+ select MACH_MX51_BABBAGE
653+ help
654+ Include support for Freescale i.MX51 based platforms
655+ using the device tree for discovery
656+
657+config MACH_MX51_BABBAGE
658+ bool "Support MX51 BABBAGE platforms"
659+ select SOC_IMX51
660+ select IMX_HAVE_PLATFORM_FSL_USB2_UDC
661+ select IMX_HAVE_PLATFORM_IMX2_WDT
662+ select IMX_HAVE_PLATFORM_IMX_I2C
663+ select IMX_HAVE_PLATFORM_IMX_UART
664+ select IMX_HAVE_PLATFORM_MXC_EHCI
665+ select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
666+ select IMX_HAVE_PLATFORM_SPI_IMX
667+ help
668+ Include support for MX51 Babbage platform, also known as MX51EVK in
669+ u-boot. This includes specific configurations for the board and its
670+ peripherals.
671+
672+config MACH_MX51_3DS
673+ bool "Support MX51PDK (3DS)"
674+ select SOC_IMX51
675+ select IMX_HAVE_PLATFORM_IMX2_WDT
676+ select IMX_HAVE_PLATFORM_IMX_KEYPAD
677+ select IMX_HAVE_PLATFORM_IMX_UART
678+ select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
679+ select IMX_HAVE_PLATFORM_SPI_IMX
680+ select MXC_DEBUG_BOARD
681+ help
682+ Include support for MX51PDK (3DS) platform. This includes specific
683+ configurations for the board and its peripherals.
684+
685+config MACH_EUKREA_CPUIMX51
686+ bool "Support Eukrea CPUIMX51 module"
687+ select SOC_IMX51
688+ select IMX_HAVE_PLATFORM_FSL_USB2_UDC
689+ select IMX_HAVE_PLATFORM_IMX_I2C
690+ select IMX_HAVE_PLATFORM_IMX_UART
691+ select IMX_HAVE_PLATFORM_MXC_EHCI
692+ select IMX_HAVE_PLATFORM_MXC_NAND
693+ select IMX_HAVE_PLATFORM_SPI_IMX
694+ help
695+ Include support for Eukrea CPUIMX51 platform. This includes
696+ specific configurations for the module and its peripherals.
697+
698+choice
699+ prompt "Baseboard"
700+ depends on MACH_EUKREA_CPUIMX51
701+ default MACH_EUKREA_MBIMX51_BASEBOARD
702+
703+config MACH_EUKREA_MBIMX51_BASEBOARD
704+ prompt "Eukrea MBIMX51 development board"
705+ bool
706+ select IMX_HAVE_PLATFORM_IMX_KEYPAD
707+ select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
708+ select LEDS_GPIO_REGISTER
709+ help
710+ This adds board specific devices that can be found on Eukrea's
711+ MBIMX51 evaluation board.
712+
713+endchoice
714+
715+config MACH_EUKREA_CPUIMX51SD
716+ bool "Support Eukrea CPUIMX51SD module"
717+ select SOC_IMX51
718+ select IMX_HAVE_PLATFORM_FSL_USB2_UDC
719+ select IMX_HAVE_PLATFORM_IMX_I2C
720+ select IMX_HAVE_PLATFORM_IMX_UART
721+ select IMX_HAVE_PLATFORM_MXC_EHCI
722+ select IMX_HAVE_PLATFORM_MXC_NAND
723+ select IMX_HAVE_PLATFORM_SPI_IMX
724+ help
725+ Include support for Eukrea CPUIMX51SD platform. This includes
726+ specific configurations for the module and its peripherals.
727+
728+choice
729+ prompt "Baseboard"
730+ depends on MACH_EUKREA_CPUIMX51SD
731+ default MACH_EUKREA_MBIMXSD51_BASEBOARD
732+
733+config MACH_EUKREA_MBIMXSD51_BASEBOARD
734+ prompt "Eukrea MBIMXSD development board"
735+ bool
736+ select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
737+ select LEDS_GPIO_REGISTER
738+ help
739+ This adds board specific devices that can be found on Eukrea's
740+ MBIMXSD evaluation board.
741+
742+endchoice
743+
744+config MX51_EFIKA_COMMON
745+ bool
746+ select SOC_IMX51
747+ select IMX_HAVE_PLATFORM_IMX_UART
748+ select IMX_HAVE_PLATFORM_MXC_EHCI
749+ select IMX_HAVE_PLATFORM_PATA_IMX
750+ select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
751+ select IMX_HAVE_PLATFORM_SPI_IMX
752+ select MXC_ULPI if USB_ULPI
753+
754+config MACH_MX51_EFIKAMX
755+ bool "Support MX51 Genesi Efika MX nettop"
756+ select LEDS_GPIO_REGISTER
757+ select MX51_EFIKA_COMMON
758+ help
759+ Include support for Genesi Efika MX nettop. This includes specific
760+ configurations for the board and its peripherals.
761+
762+config MACH_MX51_EFIKASB
763+ bool "Support MX51 Genesi Efika Smartbook"
764+ select LEDS_GPIO_REGISTER
765+ select MX51_EFIKA_COMMON
766+ help
767+ Include support for Genesi Efika Smartbook. This includes specific
768+ configurations for the board and its peripherals.
769+
770+comment "i.MX53 machines:"
771+
772+config MACH_IMX53_DT
773+ bool "Support i.MX53 platforms from device tree"
774+ select SOC_IMX53
775+ select USE_OF
776+ select MACH_MX53_ARD
777+ select MACH_MX53_EVK
778+ select MACH_MX53_LOCO
779+ select MACH_MX53_SMD
780+ help
781+ Include support for Freescale i.MX53 based platforms
782+ using the device tree for discovery
783+
784+config MACH_MX53_EVK
785+ bool "Support MX53 EVK platforms"
786+ select SOC_IMX53
787+ select IMX_HAVE_PLATFORM_IMX2_WDT
788+ select IMX_HAVE_PLATFORM_IMX_UART
789+ select IMX_HAVE_PLATFORM_IMX_I2C
790+ select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
791+ select IMX_HAVE_PLATFORM_SPI_IMX
792+ select LEDS_GPIO_REGISTER
793+ help
794+ Include support for MX53 EVK platform. This includes specific
795+ configurations for the board and its peripherals.
796+
797+config MACH_MX53_SMD
798+ bool "Support MX53 SMD platforms"
799+ select SOC_IMX53
800+ select IMX_HAVE_PLATFORM_IMX2_WDT
801+ select IMX_HAVE_PLATFORM_IMX_I2C
802+ select IMX_HAVE_PLATFORM_IMX_UART
803+ select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
804+ help
805+ Include support for MX53 SMD platform. This includes specific
806+ configurations for the board and its peripherals.
807+
808+config MACH_MX53_LOCO
809+ bool "Support MX53 LOCO platforms"
810+ select SOC_IMX53
811+ select IMX_HAVE_PLATFORM_IMX2_WDT
812+ select IMX_HAVE_PLATFORM_IMX_I2C
813+ select IMX_HAVE_PLATFORM_IMX_UART
814+ select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
815+ select IMX_HAVE_PLATFORM_GPIO_KEYS
816+ select LEDS_GPIO_REGISTER
817+ help
818+ Include support for MX53 LOCO platform. This includes specific
819+ configurations for the board and its peripherals.
820+
821+config MACH_MX53_ARD
822+ bool "Support MX53 ARD platforms"
823+ select SOC_IMX53
824+ select IMX_HAVE_PLATFORM_IMX2_WDT
825+ select IMX_HAVE_PLATFORM_IMX_I2C
826+ select IMX_HAVE_PLATFORM_IMX_UART
827+ select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
828+ select IMX_HAVE_PLATFORM_GPIO_KEYS
829+ help
830+ Include support for MX53 ARD platform. This includes specific
831+ configurations for the board and its peripherals.
832+
595833 comment "i.MX6 family:"
596834
597835 config SOC_IMX6Q
arch/arm/mach-imx/Makefile+21−0
@@ -11,6 +11,8 @@ obj-$(CONFIG_SOC_IMX27) += clock-imx27.o mm-imx27.o ehci-imx27.o · 10 unmodified lines
1111 obj-$(CONFIG_SOC_IMX31) += mm-imx3.o cpu-imx31.o clock-imx31.o iomux-imx31.o ehci-imx31.o
1212 obj-$(CONFIG_SOC_IMX35) += mm-imx3.o cpu-imx35.o clock-imx35.o ehci-imx35.o
1313
14+obj-$(CONFIG_SOC_IMX5) += cpu-imx5.o mm-imx5.o clock-mx51-mx53.o ehci-imx5.o pm-imx5.o cpu_op-mx51.o
15+
1416 # Support for CMOS sensor interface
1517 obj-$(CONFIG_MX1_VIDEO) += mx1-camera-fiq.o mx1-camera-fiq-ksym.o
1618
@@ -75,3 +77,22 @@ obj-$(CONFIG_SOC_IMX6Q) += clock-imx6q.o mach-imx6q.o · 58 unmodified lines
7577 ifeq ($(CONFIG_PM),y)
7678 obj-$(CONFIG_SOC_IMX6Q) += pm-imx6q.o
7779 endif
80+
81+# i.MX5 based machines
82+obj-$(CONFIG_MACH_MX51_BABBAGE) += mach-mx51_babbage.o
83+obj-$(CONFIG_MACH_MX51_3DS) += mach-mx51_3ds.o
84+obj-$(CONFIG_MACH_MX53_EVK) += mach-mx53_evk.o
85+obj-$(CONFIG_MACH_MX53_SMD) += mach-mx53_smd.o
86+obj-$(CONFIG_MACH_MX53_LOCO) += mach-mx53_loco.o
87+obj-$(CONFIG_MACH_MX53_ARD) += mach-mx53_ard.o
88+obj-$(CONFIG_MACH_EUKREA_CPUIMX51) += mach-cpuimx51.o
89+obj-$(CONFIG_MACH_EUKREA_MBIMX51_BASEBOARD) += eukrea_mbimx51-baseboard.o
90+obj-$(CONFIG_MACH_EUKREA_CPUIMX51SD) += mach-cpuimx51sd.o
91+obj-$(CONFIG_MACH_EUKREA_MBIMXSD51_BASEBOARD) += eukrea_mbimxsd-baseboard.o
92+obj-$(CONFIG_MX51_EFIKA_COMMON) += mx51_efika.o
93+obj-$(CONFIG_MACH_MX51_EFIKAMX) += mach-mx51_efikamx.o
94+obj-$(CONFIG_MACH_MX51_EFIKASB) += mach-mx51_efikasb.o
95+obj-$(CONFIG_MACH_MX50_RDP) += mach-mx50_rdp.o
96+
97+obj-$(CONFIG_MACH_IMX51_DT) += imx51-dt.o
98+obj-$(CONFIG_MACH_IMX53_DT) += imx53-dt.o
arch/arm/mach-imx/Makefile.boot+12−0
@@ -22,6 +22,18 @@ zreladdr-$(CONFIG_SOC_IMX35) += 0x80008000 · 21 unmodified lines
2222 params_phys-$(CONFIG_SOC_IMX35) := 0x80000100
2323 initrd_phys-$(CONFIG_SOC_IMX35) := 0x80800000
2424
25+zreladdr-$(CONFIG_SOC_IMX50) += 0x70008000
26+params_phys-$(CONFIG_SOC_IMX50) := 0x70000100
27+initrd_phys-$(CONFIG_SOC_IMX50) := 0x70800000
28+
29+zreladdr-$(CONFIG_SOC_IMX51) += 0x90008000
30+params_phys-$(CONFIG_SOC_IMX51) := 0x90000100
31+initrd_phys-$(CONFIG_SOC_IMX51) := 0x90800000
32+
33+zreladdr-$(CONFIG_SOC_IMX53) += 0x70008000
34+params_phys-$(CONFIG_SOC_IMX53) := 0x70000100
35+initrd_phys-$(CONFIG_SOC_IMX53) := 0x70800000
36+
2537 zreladdr-$(CONFIG_SOC_IMX6Q) += 0x10008000
2638 params_phys-$(CONFIG_SOC_IMX6Q) := 0x10000100
2739 initrd_phys-$(CONFIG_SOC_IMX6Q) := 0x10800000
arch/arm/mach-imx/clock-imx6q.c+11−0
@@ -814,6 +814,16 @@ DEF_PFD(pll3_pfd_540m, PFD_480, PFD1, &pll3_usb_otg); · 813 unmodified lines
814814 DEF_PFD(pll3_pfd_508m, PFD_480, PFD2, &pll3_usb_otg);
815815 DEF_PFD(pll3_pfd_454m, PFD_480, PFD3, &pll3_usb_otg);
816816
817+static unsigned long twd_clk_get_rate(struct clk *clk)
818+{
819+ return clk_get_rate(clk->parent) / 2;
820+}
821+
822+static struct clk twd_clk = {
823+ .parent = &arm_clk,
824+ .get_rate = twd_clk_get_rate,
825+};
826+
817827 static unsigned long pll2_200m_get_rate(struct clk *clk)
818828 {
819829 return clk_get_rate(clk->parent) / 2;
@@ -1894,6 +1904,7 @@ static struct clk_lookup lookups[] = { · 1074 unmodified lines
18941904 _REGISTER_CLOCK("20ec000.sdma", NULL, sdma_clk),
18951905 _REGISTER_CLOCK("20bc000.wdog", NULL, dummy_clk),
18961906 _REGISTER_CLOCK("20c0000.wdog", NULL, dummy_clk),
1907+ _REGISTER_CLOCK("smp_twd", NULL, twd_clk),
18971908 _REGISTER_CLOCK(NULL, "ckih", ckih_clk),
18981909 _REGISTER_CLOCK(NULL, "ckil_clk", ckil_clk),
18991910 _REGISTER_CLOCK(NULL, "aips_tz1_clk", aips_tz1_clk),
arch/arm/mach-imx/clock-mx51-mx53.crenamed from arch/arm/mach-mx5/clock-mx51-mx53.c+1−1
@@ -23,7 +23,7 @@ · 22 unmodified lines
2323 #include <mach/common.h>
2424 #include <mach/clock.h>
2525
26−#include "crm_regs.h"
26+#include "crm-regs-imx5.h"
2727
2828 /* External clock values passed-in by the board code */
2929 static unsigned long external_high_reference, external_low_reference;
arch/arm/mach-imx/cpu-imx5.crenamed from arch/arm/mach-mx5/cpu.c+0−0

File renamed without changes.

arch/arm/mach-imx/cpu_op-mx51.crenamed from arch/arm/mach-mx5/cpu_op-mx51.c+0−0

File renamed without changes.

arch/arm/mach-imx/cpu_op-mx51.hrenamed from arch/arm/mach-mx5/cpu_op-mx51.h+0−0

File renamed without changes.

arch/arm/mach-imx/crm-regs-imx5.hrenamed from arch/arm/mach-mx5/crm_regs.h+0−0

File renamed without changes.

arch/arm/mach-imx/devices-imx50.hrenamed from arch/arm/mach-mx5/devices-imx50.h+0−0

File renamed without changes.

arch/arm/mach-imx/devices-imx51.hrenamed from arch/arm/mach-mx5/devices-imx51.h+0−0

File renamed without changes.

arch/arm/mach-imx/devices-imx53.hrenamed from arch/arm/mach-mx5/devices-imx53.h+0−0

File renamed without changes.

arch/arm/mach-imx/efika.hrenamed from arch/arm/mach-mx5/efika.h+0−0

File renamed without changes.

arch/arm/mach-imx/ehci-imx5.crenamed from arch/arm/mach-mx5/ehci.c+0−0

File renamed without changes.

arch/arm/mach-imx/eukrea_mbimx51-baseboard.crenamed from arch/arm/mach-mx5/eukrea_mbimx51-baseboard.c+0−0

File renamed without changes.

arch/arm/mach-imx/eukrea_mbimxsd-baseboard.crenamed from arch/arm/mach-mx5/eukrea_mbimxsd-baseboard.c+0−0

File renamed without changes.

arch/arm/mach-imx/imx51-dt.crenamed from arch/arm/mach-mx5/imx51-dt.c+0−0

File renamed without changes.

arch/arm/mach-imx/imx53-dt.crenamed from arch/arm/mach-mx5/imx53-dt.c+0−0

File renamed without changes.

arch/arm/mach-imx/mach-cpuimx51.crenamed from arch/arm/mach-mx5/board-cpuimx51.c+0−0

File renamed without changes.

arch/arm/mach-imx/mach-cpuimx51sd.crenamed from arch/arm/mach-mx5/board-cpuimx51sd.c+0−0

File renamed without changes.

arch/arm/mach-imx/mach-mx50_rdp.crenamed from arch/arm/mach-mx5/board-mx50_rdp.c+0−0

File renamed without changes.

arch/arm/mach-imx/mach-mx51_3ds.crenamed from arch/arm/mach-mx5/board-mx51_3ds.c+0−0

File renamed without changes.

arch/arm/mach-imx/mach-mx51_babbage.crenamed from arch/arm/mach-mx5/board-mx51_babbage.c+0−0

File renamed without changes.

arch/arm/mach-imx/mach-mx51_efikamx.crenamed from arch/arm/mach-mx5/board-mx51_efikamx.c+0−0

File renamed without changes.

arch/arm/mach-imx/mach-mx51_efikasb.crenamed from arch/arm/mach-mx5/board-mx51_efikasb.c+0−0

File renamed without changes.

arch/arm/mach-imx/mach-mx53_ard.crenamed from arch/arm/mach-mx5/board-mx53_ard.c+3−2
@@ -32,7 +32,6 @@ · 31 unmodified lines
3232 #include <asm/mach/arch.h>
3333 #include <asm/mach/time.h>
3434
35−#include "crm_regs.h"
3635 #include "devices-imx53.h"
3736
3837 #define ARD_ETHERNET_INT_B IMX_GPIO_NR(2, 31)
@@ -189,8 +188,10 @@ static int weim_cs_config(void) · 150 unmodified lines
189188 return -ENOMEM;
190189
191190 iomuxc_base = ioremap(MX53_IOMUXC_BASE_ADDR, SZ_4K);
192− if (!iomuxc_base)
191+ if (!iomuxc_base) {
192+ iounmap(weim_base);
193193 return -ENOMEM;
194+ }
194195
195196 /* CS1 timings for LAN9220 */
196197 writel(0x20001, (weim_base + 0x18));
arch/arm/mach-imx/mach-mx53_evk.crenamed from arch/arm/mach-mx5/board-mx53_evk.c+0−1
@@ -37,7 +37,6 @@ · 36 unmodified lines
3737 #define EVK_ECSPI1_CS1 IMX_GPIO_NR(3, 19)
3838 #define MX53EVK_LED IMX_GPIO_NR(7, 7)
3939
40−#include "crm_regs.h"
4140 #include "devices-imx53.h"
4241
4342 static iomux_v3_cfg_t mx53_evk_pads[] = {
arch/arm/mach-imx/mach-mx53_loco.crenamed from arch/arm/mach-mx5/board-mx53_loco.c+0−1
@@ -32,7 +32,6 @@ · 31 unmodified lines
3232 #include <asm/mach/arch.h>
3333 #include <asm/mach/time.h>
3434
35−#include "crm_regs.h"
3635 #include "devices-imx53.h"
3736
3837 #define MX53_LOCO_POWER IMX_GPIO_NR(1, 8)
arch/arm/mach-imx/mach-mx53_smd.crenamed from arch/arm/mach-mx5/board-mx53_smd.c+0−1
@@ -31,7 +31,6 @@ · 30 unmodified lines
3131 #include <asm/mach/arch.h>
3232 #include <asm/mach/time.h>
3333
34−#include "crm_regs.h"
3534 #include "devices-imx53.h"
3635
3736 #define SMD_FEC_PHY_RST IMX_GPIO_NR(7, 6)
arch/arm/mach-imx/mm-imx5.crenamed from arch/arm/mach-mx5/mm.c+0−0

File renamed without changes.

arch/arm/mach-imx/mx51_efika.crenamed from arch/arm/mach-mx5/mx51_efika.c+0−0

File renamed without changes.

arch/arm/mach-imx/pm-imx5.crenamed from arch/arm/mach-mx5/system.c+80−9
@@ -1,8 +1,6 @@
11 /*
2− * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.
3− */
4−
5−/*
2+ * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.
3+ *
64 * The code contained herein is licensed under the GNU General Public
75 * License. You may obtain a copy of the GNU General Public License
86 * Version 2 or later at the following locations:
@@ -10,14 +8,22 @@ · 1 unmodified line
108 * http://www.opensource.org/licenses/gpl-license.html
119 * http://www.gnu.org/copyleft/gpl.html
1210 */
13−#include <linux/platform_device.h>
11+#include <linux/suspend.h>
12+#include <linux/clk.h>
1413 #include <linux/io.h>
15−#include <mach/hardware.h>
14+#include <linux/err.h>
15+#include <asm/cacheflush.h>
16+#include <asm/tlbflush.h>
1617 #include <mach/common.h>
17−#include "crm_regs.h"
18+#include <mach/hardware.h>
19+#include "crm-regs-imx5.h"
20+
21+static struct clk *gpc_dvfs_clk;
1822
19−/* set cpu low power mode before WFI instruction. This function is called
20− * mx5 because it can be used for mx50, mx51, and mx53.*/
23+/*
24+ * set cpu low power mode before WFI instruction. This function is called
25+ * mx5 because it can be used for mx50, mx51, and mx53.
26+ */
2127 void mx5_cpu_lp_set(enum mxc_cpu_pwr_mode mode)
2228 {
2329 u32 plat_lpc, arm_srpgcr, ccm_clpcr;
@@ -80,3 +86,68 @@ void mx5_cpu_lp_set(enum mxc_cpu_pwr_mode mode) · 56 unmodified lines
8086 __raw_writel(empgc1, MXC_SRPG_EMPGC1_SRPGCR);
8187 }
8288 }
89+
90+static int mx5_suspend_prepare(void)
91+{
92+ return clk_enable(gpc_dvfs_clk);
93+}
94+
95+static int mx5_suspend_enter(suspend_state_t state)
96+{
97+ switch (state) {
98+ case PM_SUSPEND_MEM:
99+ mx5_cpu_lp_set(STOP_POWER_OFF);
100+ break;
101+ case PM_SUSPEND_STANDBY:
102+ mx5_cpu_lp_set(WAIT_UNCLOCKED_POWER_OFF);
103+ break;
104+ default:
105+ return -EINVAL;
106+ }
107+
108+ if (state == PM_SUSPEND_MEM) {
109+ local_flush_tlb_all();
110+ flush_cache_all();
111+
112+ /*clear the EMPGC0/1 bits */
113+ __raw_writel(0, MXC_SRPG_EMPGC0_SRPGCR);
114+ __raw_writel(0, MXC_SRPG_EMPGC1_SRPGCR);
115+ }
116+ cpu_do_idle();
117+ return 0;
118+}
119+
120+static void mx5_suspend_finish(void)
121+{
122+ clk_disable(gpc_dvfs_clk);
123+}
124+
125+static int mx5_pm_valid(suspend_state_t state)
126+{
127+ return (state > PM_SUSPEND_ON && state <= PM_SUSPEND_MAX);
128+}
129+
130+static const struct platform_suspend_ops mx5_suspend_ops = {
131+ .valid = mx5_pm_valid,
132+ .prepare = mx5_suspend_prepare,
133+ .enter = mx5_suspend_enter,
134+ .finish = mx5_suspend_finish,
135+};
136+
137+static int __init mx5_pm_init(void)
138+{
139+ if (!cpu_is_mx51() && !cpu_is_mx53())
140+ return 0;
141+
142+ if (gpc_dvfs_clk == NULL)
143+ gpc_dvfs_clk = clk_get(NULL, "gpc_dvfs");
144+
145+ if (!IS_ERR(gpc_dvfs_clk)) {
146+ if (cpu_is_mx51())
147+ suspend_set_ops(&mx5_suspend_ops);
148+ } else
149+ return -EPERM;
150+
151+ return 0;
152+}
153+device_initcall(mx5_pm_init);
arch/arm/mach-imx/src.c+2−6
@@ -15,7 +15,7 @@ · 14 unmodified lines
1515 #include <linux/of.h>
1616 #include <linux/of_address.h>
1717 #include <linux/smp.h>
18−#include <asm/unified.h>
18+#include <asm/smp_plat.h>
1919
2020 #define SRC_SCR 0x000
2121 #define SRC_GPR1 0x020
@@ -25,10 +25,6 @@ · 3 unmodified lines
2525
2626 static void __iomem *src_base;
2727
28−#ifndef CONFIG_SMP
29−#define cpu_logical_map(cpu) 0
30−#endif
31−
3228 void imx_enable_cpu(int cpu, bool enable)
3329 {
3430 u32 mask, val;
@@ -43,7 +39,7 @@ void imx_enable_cpu(int cpu, bool enable) · 8 unmodified lines
4339 void imx_set_cpu_jump(int cpu, void *jump_addr)
4440 {
4541 cpu = cpu_logical_map(cpu);
46− writel_relaxed(BSYM(virt_to_phys(jump_addr)),
42+ writel_relaxed(virt_to_phys(jump_addr),
4743 src_base + SRC_GPR1 + cpu * 8);
4844 }
4945
arch/arm/mach-kirkwood/common.c+2−1
@@ -27,6 +27,7 @@ · 26 unmodified lines
2727 #include <plat/cache-feroceon-l2.h>
2828 #include <plat/mvsdio.h>
2929 #include <plat/orion_nand.h>
30+#include <plat/ehci-orion.h>
3031 #include <plat/common.h>
3132 #include <plat/time.h>
3233 #include <plat/addr-map.h>
@@ -73,7 +74,7 @@ unsigned int kirkwood_clk_ctrl = CGC_DUNIT | CGC_RESERVED; · 40 unmodified lines
7374 void __init kirkwood_ehci_init(void)
7475 {
7576 kirkwood_clk_ctrl |= CGC_USB0;
76− orion_ehci_init(USB_PHYS_BASE, IRQ_KIRKWOOD_USB);
77+ orion_ehci_init(USB_PHYS_BASE, IRQ_KIRKWOOD_USB, EHCI_PHY_NA);
7778 }
7879
7980
arch/arm/mach-kirkwood/mpp.h+160−160
@@ -31,314 +31,314 @@ · 30 unmodified lines
3131 #define MPP_F6282_MASK MPP( 0, 0x0, 0, 0, 0, 0, 0, 0, 1 )
3232
3333 #define MPP0_GPIO MPP( 0, 0x0, 1, 1, 1, 1, 1, 1, 1 )
34−#define MPP0_NF_IO2 MPP( 0, 0x1, 1, 1, 1, 1, 1, 1, 1 )
35−#define MPP0_SPI_SCn MPP( 0, 0x2, 0, 1, 1, 1, 1, 1, 1 )
34+#define MPP0_NF_IO2 MPP( 0, 0x1, 0, 0, 1, 1, 1, 1, 1 )
35+#define MPP0_SPI_SCn MPP( 0, 0x2, 0, 0, 1, 1, 1, 1, 1 )
3636
3737 #define MPP1_GPO MPP( 1, 0x0, 0, 1, 1, 1, 1, 1, 1 )
38−#define MPP1_NF_IO3 MPP( 1, 0x1, 1, 1, 1, 1, 1, 1, 1 )
39−#define MPP1_SPI_MOSI MPP( 1, 0x2, 0, 1, 1, 1, 1, 1, 1 )
38+#define MPP1_NF_IO3 MPP( 1, 0x1, 0, 0, 1, 1, 1, 1, 1 )
39+#define MPP1_SPI_MOSI MPP( 1, 0x2, 0, 0, 1, 1, 1, 1, 1 )
4040
4141 #define MPP2_GPO MPP( 2, 0x0, 0, 1, 1, 1, 1, 1, 1 )
42−#define MPP2_NF_IO4 MPP( 2, 0x1, 1, 1, 1, 1, 1, 1, 1 )
43−#define MPP2_SPI_SCK MPP( 2, 0x2, 0, 1, 1, 1, 1, 1, 1 )
42+#define MPP2_NF_IO4 MPP( 2, 0x1, 0, 0, 1, 1, 1, 1, 1 )
43+#define MPP2_SPI_SCK MPP( 2, 0x2, 0, 0, 1, 1, 1, 1, 1 )
4444
4545 #define MPP3_GPO MPP( 3, 0x0, 0, 1, 1, 1, 1, 1, 1 )
46−#define MPP3_NF_IO5 MPP( 3, 0x1, 1, 1, 1, 1, 1, 1, 1 )
47−#define MPP3_SPI_MISO MPP( 3, 0x2, 1, 0, 1, 1, 1, 1, 1 )
46+#define MPP3_NF_IO5 MPP( 3, 0x1, 0, 0, 1, 1, 1, 1, 1 )
47+#define MPP3_SPI_MISO MPP( 3, 0x2, 0, 0, 1, 1, 1, 1, 1 )
4848
4949 #define MPP4_GPIO MPP( 4, 0x0, 1, 1, 1, 1, 1, 1, 1 )
50−#define MPP4_NF_IO6 MPP( 4, 0x1, 1, 1, 1, 1, 1, 1, 1 )
51−#define MPP4_UART0_RXD MPP( 4, 0x2, 1, 0, 1, 1, 1, 1, 1 )
52−#define MPP4_SATA1_ACTn MPP( 4, 0x5, 0, 1, 0, 0, 1, 1, 1 )
50+#define MPP4_NF_IO6 MPP( 4, 0x1, 0, 0, 1, 1, 1, 1, 1 )
51+#define MPP4_UART0_RXD MPP( 4, 0x2, 0, 0, 1, 1, 1, 1, 1 )
52+#define MPP4_SATA1_ACTn MPP( 4, 0x5, 0, 0, 0, 0, 1, 1, 1 )
5353 #define MPP4_LCD_VGA_HSYNC MPP( 4, 0xb, 0, 0, 0, 0, 0, 0, 1 )
54−#define MPP4_PTP_CLK MPP( 4, 0xd, 1, 0, 1, 1, 1, 1, 0 )
54+#define MPP4_PTP_CLK MPP( 4, 0xd, 0, 0, 1, 1, 1, 1, 0 )
5555
5656 #define MPP5_GPO MPP( 5, 0x0, 0, 1, 1, 1, 1, 1, 1 )
57−#define MPP5_NF_IO7 MPP( 5, 0x1, 1, 1, 1, 1, 1, 1, 1 )
58−#define MPP5_UART0_TXD MPP( 5, 0x2, 0, 1, 1, 1, 1, 1, 1 )
59−#define MPP5_PTP_TRIG_GEN MPP( 5, 0x4, 0, 1, 1, 1, 1, 1, 0 )
60−#define MPP5_SATA0_ACTn MPP( 5, 0x5, 0, 1, 0, 1, 1, 1, 1 )
57+#define MPP5_NF_IO7 MPP( 5, 0x1, 0, 0, 1, 1, 1, 1, 1 )
58+#define MPP5_UART0_TXD MPP( 5, 0x2, 0, 0, 1, 1, 1, 1, 1 )
59+#define MPP5_PTP_TRIG_GEN MPP( 5, 0x4, 0, 0, 1, 1, 1, 1, 0 )
60+#define MPP5_SATA0_ACTn MPP( 5, 0x5, 0, 0, 0, 1, 1, 1, 1 )
6161 #define MPP5_LCD_VGA_VSYNC MPP( 5, 0xb, 0, 0, 0, 0, 0, 0, 1 )
6262
63−#define MPP6_SYSRST_OUTn MPP( 6, 0x1, 0, 1, 1, 1, 1, 1, 1 )
64−#define MPP6_SPI_MOSI MPP( 6, 0x2, 0, 1, 1, 1, 1, 1, 1 )
65−#define MPP6_PTP_TRIG_GEN MPP( 6, 0x3, 0, 1, 1, 1, 1, 1, 0 )
63+#define MPP6_SYSRST_OUTn MPP( 6, 0x1, 0, 0, 1, 1, 1, 1, 1 )
64+#define MPP6_SPI_MOSI MPP( 6, 0x2, 0, 0, 1, 1, 1, 1, 1 )
65+#define MPP6_PTP_TRIG_GEN MPP( 6, 0x3, 0, 0, 1, 1, 1, 1, 0 )
6666
6767 #define MPP7_GPO MPP( 7, 0x0, 0, 1, 1, 1, 1, 1, 1 )
68−#define MPP7_PEX_RST_OUTn MPP( 7, 0x1, 0, 1, 1, 1, 1, 1, 0 )
69−#define MPP7_SPI_SCn MPP( 7, 0x2, 0, 1, 1, 1, 1, 1, 1 )
70−#define MPP7_PTP_TRIG_GEN MPP( 7, 0x3, 0, 1, 1, 1, 1, 1, 0 )
71−#define MPP7_LCD_PWM MPP( 7, 0xb, 0, 1, 0, 0, 0, 0, 1 )
68+#define MPP7_PEX_RST_OUTn MPP( 7, 0x1, 0, 0, 1, 1, 1, 1, 0 )
69+#define MPP7_SPI_SCn MPP( 7, 0x2, 0, 0, 1, 1, 1, 1, 1 )
70+#define MPP7_PTP_TRIG_GEN MPP( 7, 0x3, 0, 0, 1, 1, 1, 1, 0 )
71+#define MPP7_LCD_PWM MPP( 7, 0xb, 0, 0, 0, 0, 0, 0, 1 )
7272
7373 #define MPP8_GPIO MPP( 8, 0x0, 1, 1, 1, 1, 1, 1, 1 )
74−#define MPP8_TW0_SDA MPP( 8, 0x1, 1, 1, 1, 1, 1, 1, 1 )
75−#define MPP8_UART0_RTS MPP( 8, 0x2, 0, 1, 1, 1, 1, 1, 1 )
76−#define MPP8_UART1_RTS MPP( 8, 0x3, 0, 1, 1, 1, 1, 1, 1 )
77−#define MPP8_MII0_RXERR MPP( 8, 0x4, 1, 0, 0, 1, 1, 1, 1 )
78−#define MPP8_SATA1_PRESENTn MPP( 8, 0x5, 0, 1, 0, 0, 1, 1, 1 )
79−#define MPP8_PTP_CLK MPP( 8, 0xc, 1, 0, 1, 1, 1, 1, 0 )
80−#define MPP8_MII0_COL MPP( 8, 0xd, 1, 0, 1, 1, 1, 1, 1 )
74+#define MPP8_TW0_SDA MPP( 8, 0x1, 0, 0, 1, 1, 1, 1, 1 )
75+#define MPP8_UART0_RTS MPP( 8, 0x2, 0, 0, 1, 1, 1, 1, 1 )
76+#define MPP8_UART1_RTS MPP( 8, 0x3, 0, 0, 1, 1, 1, 1, 1 )
77+#define MPP8_MII0_RXERR MPP( 8, 0x4, 0, 0, 0, 1, 1, 1, 1 )
78+#define MPP8_SATA1_PRESENTn MPP( 8, 0x5, 0, 0, 0, 0, 1, 1, 1 )
79+#define MPP8_PTP_CLK MPP( 8, 0xc, 0, 0, 1, 1, 1, 1, 0 )
80+#define MPP8_MII0_COL MPP( 8, 0xd, 0, 0, 1, 1, 1, 1, 1 )
8181
8282 #define MPP9_GPIO MPP( 9, 0x0, 1, 1, 1, 1, 1, 1, 1 )
83−#define MPP9_TW0_SCK MPP( 9, 0x1, 1, 1, 1, 1, 1, 1, 1 )
84−#define MPP9_UART0_CTS MPP( 9, 0x2, 1, 0, 1, 1, 1, 1, 1 )
85−#define MPP9_UART1_CTS MPP( 9, 0x3, 1, 0, 1, 1, 1, 1, 1 )
86−#define MPP9_SATA0_PRESENTn MPP( 9, 0x5, 0, 1, 0, 1, 1, 1, 1 )
87−#define MPP9_PTP_EVENT_REQ MPP( 9, 0xc, 1, 0, 1, 1, 1, 1, 0 )
88−#define MPP9_MII0_CRS MPP( 9, 0xd, 1, 0, 1, 1, 1, 1, 1 )
83+#define MPP9_TW0_SCK MPP( 9, 0x1, 0, 0, 1, 1, 1, 1, 1 )
84+#define MPP9_UART0_CTS MPP( 9, 0x2, 0, 0, 1, 1, 1, 1, 1 )
85+#define MPP9_UART1_CTS MPP( 9, 0x3, 0, 0, 1, 1, 1, 1, 1 )
86+#define MPP9_SATA0_PRESENTn MPP( 9, 0x5, 0, 0, 0, 1, 1, 1, 1 )
87+#define MPP9_PTP_EVENT_REQ MPP( 9, 0xc, 0, 0, 1, 1, 1, 1, 0 )
88+#define MPP9_MII0_CRS MPP( 9, 0xd, 0, 0, 1, 1, 1, 1, 1 )
8989
9090 #define MPP10_GPO MPP( 10, 0x0, 0, 1, 1, 1, 1, 1, 1 )
91−#define MPP10_SPI_SCK MPP( 10, 0x2, 0, 1, 1, 1, 1, 1, 1 )
92−#define MPP10_UART0_TXD MPP( 10, 0X3, 0, 1, 1, 1, 1, 1, 1 )
93−#define MPP10_SATA1_ACTn MPP( 10, 0x5, 0, 1, 0, 0, 1, 1, 1 )
94−#define MPP10_PTP_TRIG_GEN MPP( 10, 0xc, 0, 1, 1, 1, 1, 1, 0 )
91+#define MPP10_SPI_SCK MPP( 10, 0x2, 0, 0, 1, 1, 1, 1, 1 )
92+#define MPP10_UART0_TXD MPP( 10, 0X3, 0, 0, 1, 1, 1, 1, 1 )
93+#define MPP10_SATA1_ACTn MPP( 10, 0x5, 0, 0, 0, 0, 1, 1, 1 )
94+#define MPP10_PTP_TRIG_GEN MPP( 10, 0xc, 0, 0, 1, 1, 1, 1, 0 )
9595
9696 #define MPP11_GPIO MPP( 11, 0x0, 1, 1, 1, 1, 1, 1, 1 )
97−#define MPP11_SPI_MISO MPP( 11, 0x2, 1, 0, 1, 1, 1, 1, 1 )
98−#define MPP11_UART0_RXD MPP( 11, 0x3, 1, 0, 1, 1, 1, 1, 1 )
99−#define MPP11_PTP_EVENT_REQ MPP( 11, 0x4, 1, 0, 1, 1, 1, 1, 0 )
100−#define MPP11_PTP_TRIG_GEN MPP( 11, 0xc, 0, 1, 1, 1, 1, 1, 0 )
101−#define MPP11_PTP_CLK MPP( 11, 0xd, 1, 0, 1, 1, 1, 1, 0 )
102−#define MPP11_SATA0_ACTn MPP( 11, 0x5, 0, 1, 0, 1, 1, 1, 1 )
97+#define MPP11_SPI_MISO MPP( 11, 0x2, 0, 0, 1, 1, 1, 1, 1 )
98+#define MPP11_UART0_RXD MPP( 11, 0x3, 0, 0, 1, 1, 1, 1, 1 )
99+#define MPP11_PTP_EVENT_REQ MPP( 11, 0x4, 0, 0, 1, 1, 1, 1, 0 )
100+#define MPP11_PTP_TRIG_GEN MPP( 11, 0xc, 0, 0, 1, 1, 1, 1, 0 )
101+#define MPP11_PTP_CLK MPP( 11, 0xd, 0, 0, 1, 1, 1, 1, 0 )
102+#define MPP11_SATA0_ACTn MPP( 11, 0x5, 0, 0, 0, 1, 1, 1, 1 )
103103
104104 #define MPP12_GPO MPP( 12, 0x0, 0, 1, 1, 1, 1, 1, 1 )
105105 #define MPP12_GPIO MPP( 12, 0x0, 1, 1, 0, 0, 0, 1, 0 )
106−#define MPP12_SD_CLK MPP( 12, 0x1, 0, 1, 1, 1, 1, 1, 1 )
107−#define MPP12_AU_SPDIF0 MPP( 12, 0xa, 0, 1, 0, 0, 0, 0, 1 )
108−#define MPP12_SPI_MOSI MPP( 12, 0xb, 0, 1, 0, 0, 0, 0, 1 )
109−#define MPP12_TW1_SDA MPP( 12, 0xd, 1, 0, 0, 0, 0, 0, 1 )
106+#define MPP12_SD_CLK MPP( 12, 0x1, 0, 0, 1, 1, 1, 1, 1 )
107+#define MPP12_AU_SPDIF0 MPP( 12, 0xa, 0, 0, 0, 0, 0, 0, 1 )
108+#define MPP12_SPI_MOSI MPP( 12, 0xb, 0, 0, 0, 0, 0, 0, 1 )
109+#define MPP12_TW1_SDA MPP( 12, 0xd, 0, 0, 0, 0, 0, 0, 1 )
110110
111111 #define MPP13_GPIO MPP( 13, 0x0, 1, 1, 1, 1, 1, 1, 1 )
112−#define MPP13_SD_CMD MPP( 13, 0x1, 1, 1, 1, 1, 1, 1, 1 )
113−#define MPP13_UART1_TXD MPP( 13, 0x3, 0, 1, 1, 1, 1, 1, 1 )
114−#define MPP13_AU_SPDIFRMCLK MPP( 13, 0xa, 0, 1, 0, 0, 0, 0, 1 )
115−#define MPP13_LCDPWM MPP( 13, 0xb, 0, 1, 0, 0, 0, 0, 1 )
112+#define MPP13_SD_CMD MPP( 13, 0x1, 0, 0, 1, 1, 1, 1, 1 )
113+#define MPP13_UART1_TXD MPP( 13, 0x3, 0, 0, 1, 1, 1, 1, 1 )
114+#define MPP13_AU_SPDIFRMCLK MPP( 13, 0xa, 0, 0, 0, 0, 0, 0, 1 )
115+#define MPP13_LCDPWM MPP( 13, 0xb, 0, 0, 0, 0, 0, 0, 1 )
116116
117117 #define MPP14_GPIO MPP( 14, 0x0, 1, 1, 1, 1, 1, 1, 1 )
118−#define MPP14_SD_D0 MPP( 14, 0x1, 1, 1, 1, 1, 1, 1, 1 )
119−#define MPP14_UART1_RXD MPP( 14, 0x3, 1, 0, 1, 1, 1, 1, 1 )
120−#define MPP14_SATA1_PRESENTn MPP( 14, 0x4, 0, 1, 0, 0, 1, 1, 1 )
121−#define MPP14_AU_SPDIFI MPP( 14, 0xa, 1, 0, 0, 0, 0, 0, 1 )
122−#define MPP14_AU_I2SDI MPP( 14, 0xb, 1, 0, 0, 0, 0, 0, 1 )
123−#define MPP14_MII0_COL MPP( 14, 0xd, 1, 0, 1, 1, 1, 1, 1 )
118+#define MPP14_SD_D0 MPP( 14, 0x1, 0, 0, 1, 1, 1, 1, 1 )
119+#define MPP14_UART1_RXD MPP( 14, 0x3, 0, 0, 1, 1, 1, 1, 1 )
120+#define MPP14_SATA1_PRESENTn MPP( 14, 0x4, 0, 0, 0, 0, 1, 1, 1 )
121+#define MPP14_AU_SPDIFI MPP( 14, 0xa, 0, 0, 0, 0, 0, 0, 1 )
122+#define MPP14_AU_I2SDI MPP( 14, 0xb, 0, 0, 0, 0, 0, 0, 1 )
123+#define MPP14_MII0_COL MPP( 14, 0xd, 0, 0, 1, 1, 1, 1, 1 )
124124
125125 #define MPP15_GPIO MPP( 15, 0x0, 1, 1, 1, 1, 1, 1, 1 )
126−#define MPP15_SD_D1 MPP( 15, 0x1, 1, 1, 1, 1, 1, 1, 1 )
127−#define MPP15_UART0_RTS MPP( 15, 0x2, 0, 1, 1, 1, 1, 1, 1 )
128−#define MPP15_UART1_TXD MPP( 15, 0x3, 0, 1, 1, 1, 1, 1, 1 )
129−#define MPP15_SATA0_ACTn MPP( 15, 0x4, 0, 1, 0, 1, 1, 1, 1 )
130−#define MPP15_SPI_CSn MPP( 15, 0xb, 0, 1, 0, 0, 0, 0, 1 )
126+#define MPP15_SD_D1 MPP( 15, 0x1, 0, 0, 1, 1, 1, 1, 1 )
127+#define MPP15_UART0_RTS MPP( 15, 0x2, 0, 0, 1, 1, 1, 1, 1 )
128+#define MPP15_UART1_TXD MPP( 15, 0x3, 0, 0, 1, 1, 1, 1, 1 )
129+#define MPP15_SATA0_ACTn MPP( 15, 0x4, 0, 0, 0, 1, 1, 1, 1 )
130+#define MPP15_SPI_CSn MPP( 15, 0xb, 0, 0, 0, 0, 0, 0, 1 )
131131
132132 #define MPP16_GPIO MPP( 16, 0x0, 1, 1, 1, 1, 1, 1, 1 )
133−#define MPP16_SD_D2 MPP( 16, 0x1, 1, 1, 1, 1, 1, 1, 1 )
134−#define MPP16_UART0_CTS MPP( 16, 0x2, 1, 0, 1, 1, 1, 1, 1 )
135−#define MPP16_UART1_RXD MPP( 16, 0x3, 1, 0, 1, 1, 1, 1, 1 )
136−#define MPP16_SATA1_ACTn MPP( 16, 0x4, 0, 1, 0, 0, 1, 1, 1 )
137−#define MPP16_LCD_EXT_REF_CLK MPP( 16, 0xb, 1, 0, 0, 0, 0, 0, 1 )
138−#define MPP16_MII0_CRS MPP( 16, 0xd, 1, 0, 1, 1, 1, 1, 1 )
133+#define MPP16_SD_D2 MPP( 16, 0x1, 0, 0, 1, 1, 1, 1, 1 )
134+#define MPP16_UART0_CTS MPP( 16, 0x2, 0, 0, 1, 1, 1, 1, 1 )
135+#define MPP16_UART1_RXD MPP( 16, 0x3, 0, 0, 1, 1, 1, 1, 1 )
136+#define MPP16_SATA1_ACTn MPP( 16, 0x4, 0, 0, 0, 0, 1, 1, 1 )
137+#define MPP16_LCD_EXT_REF_CLK MPP( 16, 0xb, 0, 0, 0, 0, 0, 0, 1 )
138+#define MPP16_MII0_CRS MPP( 16, 0xd, 0, 0, 1, 1, 1, 1, 1 )
139139
140140 #define MPP17_GPIO MPP( 17, 0x0, 1, 1, 1, 1, 1, 1, 1 )
141−#define MPP17_SD_D3 MPP( 17, 0x1, 1, 1, 1, 1, 1, 1, 1 )
142−#define MPP17_SATA0_PRESENTn MPP( 17, 0x4, 0, 1, 0, 1, 1, 1, 1 )
143−#define MPP17_SATA1_ACTn MPP( 17, 0xa, 0, 1, 0, 0, 0, 0, 1 )
144−#define MPP17_TW1_SCK MPP( 17, 0xd, 1, 1, 0, 0, 0, 0, 1 )
141+#define MPP17_SD_D3 MPP( 17, 0x1, 0, 0, 1, 1, 1, 1, 1 )
142+#define MPP17_SATA0_PRESENTn MPP( 17, 0x4, 0, 0, 0, 1, 1, 1, 1 )
143+#define MPP17_SATA1_ACTn MPP( 17, 0xa, 0, 0, 0, 0, 0, 0, 1 )
144+#define MPP17_TW1_SCK MPP( 17, 0xd, 0, 0, 0, 0, 0, 0, 1 )
145145
146146 #define MPP18_GPO MPP( 18, 0x0, 0, 1, 1, 1, 1, 1, 1 )
147−#define MPP18_NF_IO0 MPP( 18, 0x1, 1, 1, 1, 1, 1, 1, 1 )
148−#define MPP18_PEX0_CLKREQ MPP( 18, 0x2, 0, 1, 0, 0, 0, 0, 1 )
147+#define MPP18_NF_IO0 MPP( 18, 0x1, 0, 0, 1, 1, 1, 1, 1 )
148+#define MPP18_PEX0_CLKREQ MPP( 18, 0x2, 0, 0, 0, 0, 0, 0, 1 )
149149
150150 #define MPP19_GPO MPP( 19, 0x0, 0, 1, 1, 1, 1, 1, 1 )
151−#define MPP19_NF_IO1 MPP( 19, 0x1, 1, 1, 1, 1, 1, 1, 1 )
151+#define MPP19_NF_IO1 MPP( 19, 0x1, 0, 0, 1, 1, 1, 1, 1 )
152152
153153 #define MPP20_GPIO MPP( 20, 0x0, 1, 1, 0, 1, 1, 1, 1 )
154−#define MPP20_TSMP0 MPP( 20, 0x1, 1, 1, 0, 0, 1, 1, 1 )
155−#define MPP20_TDM_CH0_TX_QL MPP( 20, 0x2, 0, 1, 0, 0, 1, 1, 1 )
154+#define MPP20_TSMP0 MPP( 20, 0x1, 0, 0, 0, 0, 1, 1, 1 )
155+#define MPP20_TDM_CH0_TX_QL MPP( 20, 0x2, 0, 0, 0, 0, 1, 1, 1 )
156156 #define MPP20_GE1_TXD0 MPP( 20, 0x3, 0, 0, 0, 1, 1, 1, 1 )
157−#define MPP20_AU_SPDIFI MPP( 20, 0x4, 1, 0, 0, 0, 1, 1, 1 )
158−#define MPP20_SATA1_ACTn MPP( 20, 0x5, 0, 1, 0, 0, 1, 1, 1 )
157+#define MPP20_AU_SPDIFI MPP( 20, 0x4, 0, 0, 0, 0, 1, 1, 1 )
158+#define MPP20_SATA1_ACTn MPP( 20, 0x5, 0, 0, 0, 0, 1, 1, 1 )
159159 #define MPP20_LCD_D0 MPP( 20, 0xb, 0, 0, 0, 0, 0, 0, 1 )
160160
161161 #define MPP21_GPIO MPP( 21, 0x0, 1, 1, 0, 1, 1, 1, 1 )
162−#define MPP21_TSMP1 MPP( 21, 0x1, 1, 1, 0, 0, 1, 1, 1 )
163−#define MPP21_TDM_CH0_RX_QL MPP( 21, 0x2, 0, 1, 0, 0, 1, 1, 1 )
162+#define MPP21_TSMP1 MPP( 21, 0x1, 0, 0, 0, 0, 1, 1, 1 )
163+#define MPP21_TDM_CH0_RX_QL MPP( 21, 0x2, 0, 0, 0, 0, 1, 1, 1 )
164164 #define MPP21_GE1_TXD1 MPP( 21, 0x3, 0, 0, 0, 1, 1, 1, 1 )
165−#define MPP21_AU_SPDIFO MPP( 21, 0x4, 0, 1, 0, 0, 1, 1, 1 )
166−#define MPP21_SATA0_ACTn MPP( 21, 0x5, 0, 1, 0, 1, 1, 1, 1 )
165+#define MPP21_AU_SPDIFO MPP( 21, 0x4, 0, 0, 0, 0, 1, 1, 1 )
166+#define MPP21_SATA0_ACTn MPP( 21, 0x5, 0, 0, 0, 1, 1, 1, 1 )
167167 #define MPP21_LCD_D1 MPP( 21, 0xb, 0, 0, 0, 0, 0, 0, 1 )
168168
169169 #define MPP22_GPIO MPP( 22, 0x0, 1, 1, 0, 1, 1, 1, 1 )
170−#define MPP22_TSMP2 MPP( 22, 0x1, 1, 1, 0, 0, 1, 1, 1 )
171−#define MPP22_TDM_CH2_TX_QL MPP( 22, 0x2, 0, 1, 0, 0, 1, 1, 1 )
170+#define MPP22_TSMP2 MPP( 22, 0x1, 0, 0, 0, 0, 1, 1, 1 )
171+#define MPP22_TDM_CH2_TX_QL MPP( 22, 0x2, 0, 0, 0, 0, 1, 1, 1 )
172172 #define MPP22_GE1_TXD2 MPP( 22, 0x3, 0, 0, 0, 1, 1, 1, 1 )
173−#define MPP22_AU_SPDIFRMKCLK MPP( 22, 0x4, 0, 1, 0, 0, 1, 1, 1 )
174−#define MPP22_SATA1_PRESENTn MPP( 22, 0x5, 0, 1, 0, 0, 1, 1, 1 )
173+#define MPP22_AU_SPDIFRMKCLK MPP( 22, 0x4, 0, 0, 0, 0, 1, 1, 1 )
174+#define MPP22_SATA1_PRESENTn MPP( 22, 0x5, 0, 0, 0, 0, 1, 1, 1 )
175175 #define MPP22_LCD_D2 MPP( 22, 0xb, 0, 0, 0, 0, 0, 0, 1 )
176176
177177 #define MPP23_GPIO MPP( 23, 0x0, 1, 1, 0, 1, 1, 1, 1 )
178−#define MPP23_TSMP3 MPP( 23, 0x1, 1, 1, 0, 0, 1, 1, 1 )
179−#define MPP23_TDM_CH2_RX_QL MPP( 23, 0x2, 1, 0, 0, 0, 1, 1, 1 )
178+#define MPP23_TSMP3 MPP( 23, 0x1, 0, 0, 0, 0, 1, 1, 1 )
179+#define MPP23_TDM_CH2_RX_QL MPP( 23, 0x2, 0, 0, 0, 0, 1, 1, 1 )
180180 #define MPP23_GE1_TXD3 MPP( 23, 0x3, 0, 0, 0, 1, 1, 1, 1 )
181−#define MPP23_AU_I2SBCLK MPP( 23, 0x4, 0, 1, 0, 0, 1, 1, 1 )
182−#define MPP23_SATA0_PRESENTn MPP( 23, 0x5, 0, 1, 0, 1, 1, 1, 1 )
181+#define MPP23_AU_I2SBCLK MPP( 23, 0x4, 0, 0, 0, 0, 1, 1, 1 )
182+#define MPP23_SATA0_PRESENTn MPP( 23, 0x5, 0, 0, 0, 1, 1, 1, 1 )
183183 #define MPP23_LCD_D3 MPP( 23, 0xb, 0, 0, 0, 0, 0, 0, 1 )
184184
185185 #define MPP24_GPIO MPP( 24, 0x0, 1, 1, 0, 1, 1, 1, 1 )
186−#define MPP24_TSMP4 MPP( 24, 0x1, 1, 1, 0, 0, 1, 1, 1 )
187−#define MPP24_TDM_SPI_CS0 MPP( 24, 0x2, 0, 1, 0, 0, 1, 1, 1 )
186+#define MPP24_TSMP4 MPP( 24, 0x1, 0, 0, 0, 0, 1, 1, 1 )
187+#define MPP24_TDM_SPI_CS0 MPP( 24, 0x2, 0, 0, 0, 0, 1, 1, 1 )
188188 #define MPP24_GE1_RXD0 MPP( 24, 0x3, 0, 0, 0, 1, 1, 1, 1 )
189−#define MPP24_AU_I2SDO MPP( 24, 0x4, 0, 1, 0, 0, 1, 1, 1 )
189+#define MPP24_AU_I2SDO MPP( 24, 0x4, 0, 0, 0, 0, 1, 1, 1 )
190190 #define MPP24_LCD_D4 MPP( 24, 0xb, 0, 0, 0, 0, 0, 0, 1 )
191191
192192 #define MPP25_GPIO MPP( 25, 0x0, 1, 1, 0, 1, 1, 1, 1 )
193−#define MPP25_TSMP5 MPP( 25, 0x1, 1, 1, 0, 0, 1, 1, 1 )
194−#define MPP25_TDM_SPI_SCK MPP( 25, 0x2, 0, 1, 0, 0, 1, 1, 1 )
193+#define MPP25_TSMP5 MPP( 25, 0x1, 0, 0, 0, 0, 1, 1, 1 )
194+#define MPP25_TDM_SPI_SCK MPP( 25, 0x2, 0, 0, 0, 0, 1, 1, 1 )
195195 #define MPP25_GE1_RXD1 MPP( 25, 0x3, 0, 0, 0, 1, 1, 1, 1 )
196−#define MPP25_AU_I2SLRCLK MPP( 25, 0x4, 0, 1, 0, 0, 1, 1, 1 )
196+#define MPP25_AU_I2SLRCLK MPP( 25, 0x4, 0, 0, 0, 0, 1, 1, 1 )
197197 #define MPP25_LCD_D5 MPP( 25, 0xb, 0, 0, 0, 0, 0, 0, 1 )
198198
199199 #define MPP26_GPIO MPP( 26, 0x0, 1, 1, 0, 1, 1, 1, 1 )
200−#define MPP26_TSMP6 MPP( 26, 0x1, 1, 1, 0, 0, 1, 1, 1 )
201−#define MPP26_TDM_SPI_MISO MPP( 26, 0x2, 1, 0, 0, 0, 1, 1, 1 )
200+#define MPP26_TSMP6 MPP( 26, 0x1, 0, 0, 0, 0, 1, 1, 1 )
201+#define MPP26_TDM_SPI_MISO MPP( 26, 0x2, 0, 0, 0, 0, 1, 1, 1 )
202202 #define MPP26_GE1_RXD2 MPP( 26, 0x3, 0, 0, 0, 1, 1, 1, 1 )
203−#define MPP26_AU_I2SMCLK MPP( 26, 0x4, 0, 1, 0, 0, 1, 1, 1 )
203+#define MPP26_AU_I2SMCLK MPP( 26, 0x4, 0, 0, 0, 0, 1, 1, 1 )
204204 #define MPP26_LCD_D6 MPP( 26, 0xb, 0, 0, 0, 0, 0, 0, 1 )
205205
206206 #define MPP27_GPIO MPP( 27, 0x0, 1, 1, 0, 1, 1, 1, 1 )
207−#define MPP27_TSMP7 MPP( 27, 0x1, 1, 1, 0, 0, 1, 1, 1 )
208−#define MPP27_TDM_SPI_MOSI MPP( 27, 0x2, 0, 1, 0, 0, 1, 1, 1 )
207+#define MPP27_TSMP7 MPP( 27, 0x1, 0, 0, 0, 0, 1, 1, 1 )
208+#define MPP27_TDM_SPI_MOSI MPP( 27, 0x2, 0, 0, 0, 0, 1, 1, 1 )
209209 #define MPP27_GE1_RXD3 MPP( 27, 0x3, 0, 0, 0, 1, 1, 1, 1 )
210−#define MPP27_AU_I2SDI MPP( 27, 0x4, 1, 0, 0, 0, 1, 1, 1 )
210+#define MPP27_AU_I2SDI MPP( 27, 0x4, 0, 0, 0, 0, 1, 1, 1 )
211211 #define MPP27_LCD_D7 MPP( 27, 0xb, 0, 0, 0, 0, 0, 0, 1 )
212212
213213 #define MPP28_GPIO MPP( 28, 0x0, 1, 1, 0, 1, 1, 1, 1 )
214−#define MPP28_TSMP8 MPP( 28, 0x1, 1, 1, 0, 0, 1, 1, 1 )
214+#define MPP28_TSMP8 MPP( 28, 0x1, 0, 0, 0, 0, 1, 1, 1 )
215215 #define MPP28_TDM_CODEC_INTn MPP( 28, 0x2, 0, 0, 0, 0, 1, 1, 1 )
216216 #define MPP28_GE1_COL MPP( 28, 0x3, 0, 0, 0, 1, 1, 1, 1 )
217−#define MPP28_AU_EXTCLK MPP( 28, 0x4, 1, 0, 0, 0, 1, 1, 1 )
217+#define MPP28_AU_EXTCLK MPP( 28, 0x4, 0, 0, 0, 0, 1, 1, 1 )
218218 #define MPP28_LCD_D8 MPP( 28, 0xb, 0, 0, 0, 0, 0, 0, 1 )
219219
220220 #define MPP29_GPIO MPP( 29, 0x0, 1, 1, 0, 1, 1, 1, 1 )
221−#define MPP29_TSMP9 MPP( 29, 0x1, 1, 1, 0, 0, 1, 1, 1 )
221+#define MPP29_TSMP9 MPP( 29, 0x1, 0, 0, 0, 0, 1, 1, 1 )
222222 #define MPP29_TDM_CODEC_RSTn MPP( 29, 0x2, 0, 0, 0, 0, 1, 1, 1 )
223223 #define MPP29_GE1_TCLK MPP( 29, 0x3, 0, 0, 0, 1, 1, 1, 1 )
224224 #define MPP29_LCD_D9 MPP( 29, 0xb, 0, 0, 0, 0, 0, 0, 1 )
225225
226226 #define MPP30_GPIO MPP( 30, 0x0, 1, 1, 0, 1, 1, 1, 1 )
227−#define MPP30_TSMP10 MPP( 30, 0x1, 1, 1, 0, 0, 1, 1, 1 )
228−#define MPP30_TDM_PCLK MPP( 30, 0x2, 1, 1, 0, 0, 1, 1, 1 )
227+#define MPP30_TSMP10 MPP( 30, 0x1, 0, 0, 0, 0, 1, 1, 1 )
228+#define MPP30_TDM_PCLK MPP( 30, 0x2, 0, 0, 0, 0, 1, 1, 1 )
229229 #define MPP30_GE1_RXCTL MPP( 30, 0x3, 0, 0, 0, 1, 1, 1, 1 )
230230 #define MPP30_LCD_D10 MPP( 30, 0xb, 0, 0, 0, 0, 0, 0, 1 )
231231
232232 #define MPP31_GPIO MPP( 31, 0x0, 1, 1, 0, 1, 1, 1, 1 )
233−#define MPP31_TSMP11 MPP( 31, 0x1, 1, 1, 0, 0, 1, 1, 1 )
234−#define MPP31_TDM_FS MPP( 31, 0x2, 1, 1, 0, 0, 1, 1, 1 )
233+#define MPP31_TSMP11 MPP( 31, 0x1, 0, 0, 0, 0, 1, 1, 1 )
234+#define MPP31_TDM_FS MPP( 31, 0x2, 0, 0, 0, 0, 1, 1, 1 )
235235 #define MPP31_GE1_RXCLK MPP( 31, 0x3, 0, 0, 0, 1, 1, 1, 1 )
236236 #define MPP31_LCD_D11 MPP( 31, 0xb, 0, 0, 0, 0, 0, 0, 1 )
237237
238238 #define MPP32_GPIO MPP( 32, 0x0, 1, 1, 0, 1, 1, 1, 1 )
239−#define MPP32_TSMP12 MPP( 32, 0x1, 1, 1, 0, 0, 1, 1, 1 )
240−#define MPP32_TDM_DRX MPP( 32, 0x2, 1, 0, 0, 0, 1, 1, 1 )
239+#define MPP32_TSMP12 MPP( 32, 0x1, 0, 0, 0, 0, 1, 1, 1 )
240+#define MPP32_TDM_DRX MPP( 32, 0x2, 0, 0, 0, 0, 1, 1, 1 )
241241 #define MPP32_GE1_TCLKOUT MPP( 32, 0x3, 0, 0, 0, 1, 1, 1, 1 )
242242 #define MPP32_LCD_D12 MPP( 32, 0xb, 0, 0, 0, 0, 0, 0, 1 )
243243
244244 #define MPP33_GPO MPP( 33, 0x0, 0, 1, 0, 1, 1, 1, 1 )
245−#define MPP33_TDM_DTX MPP( 33, 0x2, 0, 1, 0, 0, 1, 1, 1 )
245+#define MPP33_TDM_DTX MPP( 33, 0x2, 0, 0, 0, 0, 1, 1, 1 )
246246 #define MPP33_GE1_TXCTL MPP( 33, 0x3, 0, 0, 0, 1, 1, 1, 1 )
247247 #define MPP33_LCD_D13 MPP( 33, 0xb, 0, 0, 0, 0, 0, 0, 1 )
248248
249249 #define MPP34_GPIO MPP( 34, 0x0, 1, 1, 0, 1, 1, 1, 1 )
250−#define MPP34_TDM_SPI_CS1 MPP( 34, 0x2, 0, 1, 0, 0, 1, 1, 1 )
250+#define MPP34_TDM_SPI_CS1 MPP( 34, 0x2, 0, 0, 0, 0, 1, 1, 1 )
251251 #define MPP34_GE1_TXEN MPP( 34, 0x3, 0, 0, 0, 1, 1, 1, 1 )
252−#define MPP34_SATA1_ACTn MPP( 34, 0x5, 0, 1, 0, 0, 0, 1, 1 )
252+#define MPP34_SATA1_ACTn MPP( 34, 0x5, 0, 0, 0, 0, 0, 1, 1 )
253253 #define MPP34_LCD_D14 MPP( 34, 0xb, 0, 0, 0, 0, 0, 0, 1 )
254254
255255 #define MPP35_GPIO MPP( 35, 0x0, 1, 1, 1, 1, 1, 1, 1 )
256−#define MPP35_TDM_CH0_TX_QL MPP( 35, 0x2, 0, 1, 0, 0, 1, 1, 1 )
256+#define MPP35_TDM_CH0_TX_QL MPP( 35, 0x2, 0, 0, 0, 0, 1, 1, 1 )
257257 #define MPP35_GE1_RXERR MPP( 35, 0x3, 0, 0, 0, 1, 1, 1, 1 )
258−#define MPP35_SATA0_ACTn MPP( 35, 0x5, 0, 1, 0, 1, 1, 1, 1 )
258+#define MPP35_SATA0_ACTn MPP( 35, 0x5, 0, 0, 0, 1, 1, 1, 1 )
259259 #define MPP35_LCD_D15 MPP( 22, 0xb, 0, 0, 0, 0, 0, 0, 1 )
260−#define MPP35_MII0_RXERR MPP( 35, 0xc, 1, 0, 1, 1, 1, 1, 1 )
260+#define MPP35_MII0_RXERR MPP( 35, 0xc, 0, 0, 1, 1, 1, 1, 1 )
261261
262262 #define MPP36_GPIO MPP( 36, 0x0, 1, 1, 1, 0, 0, 1, 1 )
263−#define MPP36_TSMP0 MPP( 36, 0x1, 1, 1, 0, 0, 0, 1, 1 )
264−#define MPP36_TDM_SPI_CS1 MPP( 36, 0x2, 0, 1, 0, 0, 0, 1, 1 )
265−#define MPP36_AU_SPDIFI MPP( 36, 0x4, 1, 0, 1, 0, 0, 1, 1 )
266−#define MPP36_TW1_SDA MPP( 36, 0xb, 1, 1, 0, 0, 0, 0, 1 )
263+#define MPP36_TSMP0 MPP( 36, 0x1, 0, 0, 0, 0, 0, 1, 1 )
264+#define MPP36_TDM_SPI_CS1 MPP( 36, 0x2, 0, 0, 0, 0, 0, 1, 1 )
265+#define MPP36_AU_SPDIFI MPP( 36, 0x4, 0, 0, 1, 0, 0, 1, 1 )
266+#define MPP36_TW1_SDA MPP( 36, 0xb, 0, 0, 0, 0, 0, 0, 1 )
267267
268268 #define MPP37_GPIO MPP( 37, 0x0, 1, 1, 1, 0, 0, 1, 1 )
269−#define MPP37_TSMP1 MPP( 37, 0x1, 1, 1, 0, 0, 0, 1, 1 )
270−#define MPP37_TDM_CH2_TX_QL MPP( 37, 0x2, 0, 1, 0, 0, 0, 1, 1 )
271−#define MPP37_AU_SPDIFO MPP( 37, 0x4, 0, 1, 1, 0, 0, 1, 1 )
272−#define MPP37_TW1_SCK MPP( 37, 0xb, 1, 1, 0, 0, 0, 0, 1 )
269+#define MPP37_TSMP1 MPP( 37, 0x1, 0, 0, 0, 0, 0, 1, 1 )
270+#define MPP37_TDM_CH2_TX_QL MPP( 37, 0x2, 0, 0, 0, 0, 0, 1, 1 )
271+#define MPP37_AU_SPDIFO MPP( 37, 0x4, 0, 0, 1, 0, 0, 1, 1 )
272+#define MPP37_TW1_SCK MPP( 37, 0xb, 0, 0, 0, 0, 0, 0, 1 )
273273
274274 #define MPP38_GPIO MPP( 38, 0x0, 1, 1, 1, 0, 0, 1, 1 )
275−#define MPP38_TSMP2 MPP( 38, 0x1, 1, 1, 0, 0, 0, 1, 1 )
276−#define MPP38_TDM_CH2_RX_QL MPP( 38, 0x2, 0, 1, 0, 0, 0, 1, 1 )
277−#define MPP38_AU_SPDIFRMLCLK MPP( 38, 0x4, 0, 1, 1, 0, 0, 1, 1 )
275+#define MPP38_TSMP2 MPP( 38, 0x1, 0, 0, 0, 0, 0, 1, 1 )
276+#define MPP38_TDM_CH2_RX_QL MPP( 38, 0x2, 0, 0, 0, 0, 0, 1, 1 )
277+#define MPP38_AU_SPDIFRMLCLK MPP( 38, 0x4, 0, 0, 1, 0, 0, 1, 1 )
278278 #define MPP38_LCD_D18 MPP( 38, 0xb, 0, 0, 0, 0, 0, 0, 1 )
279279
280280 #define MPP39_GPIO MPP( 39, 0x0, 1, 1, 1, 0, 0, 1, 1 )
281−#define MPP39_TSMP3 MPP( 39, 0x1, 1, 1, 0, 0, 0, 1, 1 )
282−#define MPP39_TDM_SPI_CS0 MPP( 39, 0x2, 0, 1, 0, 0, 0, 1, 1 )
283−#define MPP39_AU_I2SBCLK MPP( 39, 0x4, 0, 1, 1, 0, 0, 1, 1 )
281+#define MPP39_TSMP3 MPP( 39, 0x1, 0, 0, 0, 0, 0, 1, 1 )
282+#define MPP39_TDM_SPI_CS0 MPP( 39, 0x2, 0, 0, 0, 0, 0, 1, 1 )
283+#define MPP39_AU_I2SBCLK MPP( 39, 0x4, 0, 0, 1, 0, 0, 1, 1 )
284284 #define MPP39_LCD_D19 MPP( 39, 0xb, 0, 0, 0, 0, 0, 0, 1 )
285285
286286 #define MPP40_GPIO MPP( 40, 0x0, 1, 1, 1, 0, 0, 1, 1 )
287−#define MPP40_TSMP4 MPP( 40, 0x1, 1, 1, 0, 0, 0, 1, 1 )
288−#define MPP40_TDM_SPI_SCK MPP( 40, 0x2, 0, 1, 0, 0, 0, 1, 1 )
289−#define MPP40_AU_I2SDO MPP( 40, 0x4, 0, 1, 1, 0, 0, 1, 1 )
287+#define MPP40_TSMP4 MPP( 40, 0x1, 0, 0, 0, 0, 0, 1, 1 )
288+#define MPP40_TDM_SPI_SCK MPP( 40, 0x2, 0, 0, 0, 0, 0, 1, 1 )
289+#define MPP40_AU_I2SDO MPP( 40, 0x4, 0, 0, 1, 0, 0, 1, 1 )
290290 #define MPP40_LCD_D20 MPP( 40, 0xb, 0, 0, 0, 0, 0, 0, 1 )
291291
292292 #define MPP41_GPIO MPP( 41, 0x0, 1, 1, 1, 0, 0, 1, 1 )
293−#define MPP41_TSMP5 MPP( 41, 0x1, 1, 1, 0, 0, 0, 1, 1 )
294−#define MPP41_TDM_SPI_MISO MPP( 41, 0x2, 1, 0, 0, 0, 0, 1, 1 )
295−#define MPP41_AU_I2SLRCLK MPP( 41, 0x4, 0, 1, 1, 0, 0, 1, 1 )
293+#define MPP41_TSMP5 MPP( 41, 0x1, 0, 0, 0, 0, 0, 1, 1 )
294+#define MPP41_TDM_SPI_MISO MPP( 41, 0x2, 0, 0, 0, 0, 0, 1, 1 )
295+#define MPP41_AU_I2SLRCLK MPP( 41, 0x4, 0, 0, 1, 0, 0, 1, 1 )
296296 #define MPP41_LCD_D21 MPP( 41, 0xb, 0, 0, 0, 0, 0, 0, 1 )
297297
298298 #define MPP42_GPIO MPP( 42, 0x0, 1, 1, 1, 0, 0, 1, 1 )
299−#define MPP42_TSMP6 MPP( 42, 0x1, 1, 1, 0, 0, 0, 1, 1 )
300−#define MPP42_TDM_SPI_MOSI MPP( 42, 0x2, 0, 1, 0, 0, 0, 1, 1 )
301−#define MPP42_AU_I2SMCLK MPP( 42, 0x4, 0, 1, 1, 0, 0, 1, 1 )
299+#define MPP42_TSMP6 MPP( 42, 0x1, 0, 0, 0, 0, 0, 1, 1 )
300+#define MPP42_TDM_SPI_MOSI MPP( 42, 0x2, 0, 0, 0, 0, 0, 1, 1 )
301+#define MPP42_AU_I2SMCLK MPP( 42, 0x4, 0, 0, 1, 0, 0, 1, 1 )
302302 #define MPP42_LCD_D22 MPP( 42, 0xb, 0, 0, 0, 0, 0, 0, 1 )
303303
304304 #define MPP43_GPIO MPP( 43, 0x0, 1, 1, 1, 0, 0, 1, 1 )
305−#define MPP43_TSMP7 MPP( 43, 0x1, 1, 1, 0, 0, 0, 1, 1 )
305+#define MPP43_TSMP7 MPP( 43, 0x1, 0, 0, 0, 0, 0, 1, 1 )
306306 #define MPP43_TDM_CODEC_INTn MPP( 43, 0x2, 0, 0, 0, 0, 0, 1, 1 )
307−#define MPP43_AU_I2SDI MPP( 43, 0x4, 1, 0, 1, 0, 0, 1, 1 )
307+#define MPP43_AU_I2SDI MPP( 43, 0x4, 0, 0, 1, 0, 0, 1, 1 )
308308 #define MPP43_LCD_D23 MPP( 22, 0xb, 0, 0, 0, 0, 0, 0, 1 )
309309
310310 #define MPP44_GPIO MPP( 44, 0x0, 1, 1, 1, 0, 0, 1, 1 )
311−#define MPP44_TSMP8 MPP( 44, 0x1, 1, 1, 0, 0, 0, 1, 1 )
311+#define MPP44_TSMP8 MPP( 44, 0x1, 0, 0, 0, 0, 0, 1, 1 )
312312 #define MPP44_TDM_CODEC_RSTn MPP( 44, 0x2, 0, 0, 0, 0, 0, 1, 1 )
313−#define MPP44_AU_EXTCLK MPP( 44, 0x4, 1, 0, 1, 0, 0, 1, 1 )
313+#define MPP44_AU_EXTCLK MPP( 44, 0x4, 0, 0, 1, 0, 0, 1, 1 )
314314 #define MPP44_LCD_CLK MPP( 44, 0xb, 0, 0, 0, 0, 0, 0, 1 )
315315
316316 #define MPP45_GPIO MPP( 45, 0x0, 1, 1, 0, 0, 0, 1, 1 )
317−#define MPP45_TSMP9 MPP( 45, 0x1, 1, 1, 0, 0, 0, 1, 1 )
318−#define MPP45_TDM_PCLK MPP( 45, 0x2, 1, 1, 0, 0, 0, 1, 1 )
317+#define MPP45_TSMP9 MPP( 45, 0x1, 0, 0, 0, 0, 0, 1, 1 )
318+#define MPP45_TDM_PCLK MPP( 45, 0x2, 0, 0, 0, 0, 0, 1, 1 )
319319 #define MPP245_LCD_E MPP( 45, 0xb, 0, 0, 0, 0, 0, 0, 1 )
320320
321321 #define MPP46_GPIO MPP( 46, 0x0, 1, 1, 0, 0, 0, 1, 1 )
322−#define MPP46_TSMP10 MPP( 46, 0x1, 1, 1, 0, 0, 0, 1, 1 )
323−#define MPP46_TDM_FS MPP( 46, 0x2, 1, 1, 0, 0, 0, 1, 1 )
322+#define MPP46_TSMP10 MPP( 46, 0x1, 0, 0, 0, 0, 0, 1, 1 )
323+#define MPP46_TDM_FS MPP( 46, 0x2, 0, 0, 0, 0, 0, 1, 1 )
324324 #define MPP46_LCD_HSYNC MPP( 46, 0xb, 0, 0, 0, 0, 0, 0, 1 )
325325
326326 #define MPP47_GPIO MPP( 47, 0x0, 1, 1, 0, 0, 0, 1, 1 )
327−#define MPP47_TSMP11 MPP( 47, 0x1, 1, 1, 0, 0, 0, 1, 1 )
328−#define MPP47_TDM_DRX MPP( 47, 0x2, 1, 0, 0, 0, 0, 1, 1 )
327+#define MPP47_TSMP11 MPP( 47, 0x1, 0, 0, 0, 0, 0, 1, 1 )
328+#define MPP47_TDM_DRX MPP( 47, 0x2, 0, 0, 0, 0, 0, 1, 1 )
329329 #define MPP47_LCD_VSYNC MPP( 47, 0xb, 0, 0, 0, 0, 0, 0, 1 )
330330
331331 #define MPP48_GPIO MPP( 48, 0x0, 1, 1, 0, 0, 0, 1, 1 )
332−#define MPP48_TSMP12 MPP( 48, 0x1, 1, 1, 0, 0, 0, 1, 1 )
333−#define MPP48_TDM_DTX MPP( 48, 0x2, 0, 1, 0, 0, 0, 1, 1 )
332+#define MPP48_TSMP12 MPP( 48, 0x1, 0, 0, 0, 0, 0, 1, 1 )
333+#define MPP48_TDM_DTX MPP( 48, 0x2, 0, 0, 0, 0, 0, 1, 1 )
334334 #define MPP48_LCD_D16 MPP( 22, 0xb, 0, 0, 0, 0, 0, 0, 1 )
335335
336336 #define MPP49_GPIO MPP( 49, 0x0, 1, 1, 0, 0, 0, 1, 0 )
337337 #define MPP49_GPO MPP( 49, 0x0, 0, 1, 0, 0, 0, 0, 1 )
338−#define MPP49_TSMP9 MPP( 49, 0x1, 1, 1, 0, 0, 0, 1, 0 )
339−#define MPP49_TDM_CH0_RX_QL MPP( 49, 0x2, 0, 1, 0, 0, 0, 1, 1 )
340−#define MPP49_PTP_CLK MPP( 49, 0x5, 1, 0, 0, 0, 0, 1, 0 )
341−#define MPP49_PEX0_CLKREQ MPP( 49, 0xa, 0, 1, 0, 0, 0, 0, 1 )
338+#define MPP49_TSMP9 MPP( 49, 0x1, 0, 0, 0, 0, 0, 1, 0 )
339+#define MPP49_TDM_CH0_RX_QL MPP( 49, 0x2, 0, 0, 0, 0, 0, 1, 1 )
340+#define MPP49_PTP_CLK MPP( 49, 0x5, 0, 0, 0, 0, 0, 1, 0 )
341+#define MPP49_PEX0_CLKREQ MPP( 49, 0xa, 0, 0, 0, 0, 0, 0, 1 )
342342 #define MPP49_LCD_D17 MPP( 49, 0xb, 0, 0, 0, 0, 0, 0, 1 )
343343
344344 #define MPP_MAX 49
arch/arm/mach-msm/headsmp.S+1−0
@@ -34,6 +34,7 @@ pen: ldr r7, [r6] · 33 unmodified lines
3434 * should now contain the SVC stack for this core
3535 */
3636 b secondary_startup
37+ENDPROC(msm_secondary_startup)
3738
3839 .align
3940 1: .long .
arch/arm/mach-msm/hotplug.c+1−0
@@ -11,6 +11,7 @@ · 10 unmodified lines
1111 #include <linux/smp.h>
1212
1313 #include <asm/cacheflush.h>
14+#include <asm/smp_plat.h>
1415
1516 extern volatile int pen_release;
1617
arch/arm/mach-msm/platsmp.c+1−0
@@ -20,6 +20,7 @@ · 19 unmodified lines
2020 #include <asm/cacheflush.h>
2121 #include <asm/cputype.h>
2222 #include <asm/mach-types.h>
23+#include <asm/smp_plat.h>
2324
2425 #include <mach/msm_iomap.h>
2526
arch/arm/mach-msm/vreg.c+1−0
@@ -19,6 +19,7 @@ · 18 unmodified lines
1919 #include <linux/device.h>
2020 #include <linux/init.h>
2121 #include <linux/debugfs.h>
22+#include <linux/module.h>
2223 #include <linux/string.h>
2324 #include <mach/vreg.h>
2425
arch/arm/mach-mv78xx0/common.c+2−1
@@ -19,6 +19,7 @@ · 18 unmodified lines
1919 #include <mach/mv78xx0.h>
2020 #include <mach/bridge-regs.h>
2121 #include <plat/cache-feroceon-l2.h>
22+#include <plat/ehci-orion.h>
2223 #include <plat/orion_nand.h>
2324 #include <plat/time.h>
2425 #include <plat/common.h>
@@ -169,7 +170,7 @@ void __init mv78xx0_map_io(void) · 144 unmodified lines
169170 ****************************************************************************/
170171 void __init mv78xx0_ehci0_init(void)
171172 {
172− orion_ehci_init(USB0_PHYS_BASE, IRQ_MV78XX0_USB_0);
173+ orion_ehci_init(USB0_PHYS_BASE, IRQ_MV78XX0_USB_0, EHCI_PHY_NA);
173174 }
174175
175176
arch/arm/mach-mv78xx0/mpp.h+113−113
@@ -24,296 +24,296 @@ · 23 unmodified lines
2424 #define MPP_78100_A0_MASK MPP(0, 0x0, 0, 0, 1)
2525
2626 #define MPP0_GPIO MPP(0, 0x0, 1, 1, 1)
27−#define MPP0_GE0_COL MPP(0, 0x1, 1, 0, 1)
28−#define MPP0_GE1_TXCLK MPP(0, 0x2, 0, 1, 1)
27+#define MPP0_GE0_COL MPP(0, 0x1, 0, 0, 1)
28+#define MPP0_GE1_TXCLK MPP(0, 0x2, 0, 0, 1)
2929 #define MPP0_UNUSED MPP(0, 0x3, 0, 0, 1)
3030
3131 #define MPP1_GPIO MPP(1, 0x0, 1, 1, 1)
32−#define MPP1_GE0_RXERR MPP(1, 0x1, 1, 0, 1)
33−#define MPP1_GE1_TXCTL MPP(1, 0x2, 0, 1, 1)
32+#define MPP1_GE0_RXERR MPP(1, 0x1, 0, 0, 1)
33+#define MPP1_GE1_TXCTL MPP(1, 0x2, 0, 0, 1)
3434 #define MPP1_UNUSED MPP(1, 0x3, 0, 0, 1)
3535
3636 #define MPP2_GPIO MPP(2, 0x0, 1, 1, 1)
37−#define MPP2_GE0_CRS MPP(2, 0x1, 1, 0, 1)
38−#define MPP2_GE1_RXCTL MPP(2, 0x2, 1, 0, 1)
37+#define MPP2_GE0_CRS MPP(2, 0x1, 0, 0, 1)
38+#define MPP2_GE1_RXCTL MPP(2, 0x2, 0, 0, 1)
3939 #define MPP2_UNUSED MPP(2, 0x3, 0, 0, 1)
4040
4141 #define MPP3_GPIO MPP(3, 0x0, 1, 1, 1)
42−#define MPP3_GE0_TXERR MPP(3, 0x1, 0, 1, 1)
43−#define MPP3_GE1_RXCLK MPP(3, 0x2, 1, 0, 1)
42+#define MPP3_GE0_TXERR MPP(3, 0x1, 0, 0, 1)
43+#define MPP3_GE1_RXCLK MPP(3, 0x2, 0, 0, 1)
4444 #define MPP3_UNUSED MPP(3, 0x3, 0, 0, 1)
4545
4646 #define MPP4_GPIO MPP(4, 0x0, 1, 1, 1)
47−#define MPP4_GE0_TXD4 MPP(4, 0x1, 0, 1, 1)
48−#define MPP4_GE1_TXD0 MPP(4, 0x2, 0, 1, 1)
47+#define MPP4_GE0_TXD4 MPP(4, 0x1, 0, 0, 1)
48+#define MPP4_GE1_TXD0 MPP(4, 0x2, 0, 0, 1)
4949 #define MPP4_UNUSED MPP(4, 0x3, 0, 0, 1)
5050
5151 #define MPP5_GPIO MPP(5, 0x0, 1, 1, 1)
52−#define MPP5_GE0_TXD5 MPP(5, 0x1, 0, 1, 1)
53−#define MPP5_GE1_TXD1 MPP(5, 0x2, 0, 1, 1)
52+#define MPP5_GE0_TXD5 MPP(5, 0x1, 0, 0, 1)
53+#define MPP5_GE1_TXD1 MPP(5, 0x2, 0, 0, 1)
5454 #define MPP5_UNUSED MPP(5, 0x3, 0, 0, 1)
5555
5656 #define MPP6_GPIO MPP(6, 0x0, 1, 1, 1)
57−#define MPP6_GE0_TXD6 MPP(6, 0x1, 0, 1, 1)
58−#define MPP6_GE1_TXD2 MPP(6, 0x2, 0, 1, 1)
57+#define MPP6_GE0_TXD6 MPP(6, 0x1, 0, 0, 1)
58+#define MPP6_GE1_TXD2 MPP(6, 0x2, 0, 0, 1)
5959 #define MPP6_UNUSED MPP(6, 0x3, 0, 0, 1)
6060
6161 #define MPP7_GPIO MPP(7, 0x0, 1, 1, 1)
62−#define MPP7_GE0_TXD7 MPP(7, 0x1, 0, 1, 1)
63−#define MPP7_GE1_TXD3 MPP(7, 0x2, 0, 1, 1)
62+#define MPP7_GE0_TXD7 MPP(7, 0x1, 0, 0, 1)
63+#define MPP7_GE1_TXD3 MPP(7, 0x2, 0, 0, 1)
6464 #define MPP7_UNUSED MPP(7, 0x3, 0, 0, 1)
6565
6666 #define MPP8_GPIO MPP(8, 0x0, 1, 1, 1)
67−#define MPP8_GE0_RXD4 MPP(8, 0x1, 1, 0, 1)
68−#define MPP8_GE1_RXD0 MPP(8, 0x2, 1, 0, 1)
67+#define MPP8_GE0_RXD4 MPP(8, 0x1, 0, 0, 1)
68+#define MPP8_GE1_RXD0 MPP(8, 0x2, 0, 0, 1)
6969 #define MPP8_UNUSED MPP(8, 0x3, 0, 0, 1)
7070
7171 #define MPP9_GPIO MPP(9, 0x0, 1, 1, 1)
72−#define MPP9_GE0_RXD5 MPP(9, 0x1, 1, 0, 1)
73−#define MPP9_GE1_RXD1 MPP(9, 0x2, 1, 0, 1)
72+#define MPP9_GE0_RXD5 MPP(9, 0x1, 0, 0, 1)
73+#define MPP9_GE1_RXD1 MPP(9, 0x2, 0, 0, 1)
7474 #define MPP9_UNUSED MPP(9, 0x3, 0, 0, 1)
7575
7676 #define MPP10_GPIO MPP(10, 0x0, 1, 1, 1)
77−#define MPP10_GE0_RXD6 MPP(10, 0x1, 1, 0, 1)
78−#define MPP10_GE1_RXD2 MPP(10, 0x2, 1, 0, 1)
77+#define MPP10_GE0_RXD6 MPP(10, 0x1, 0, 0, 1)
78+#define MPP10_GE1_RXD2 MPP(10, 0x2, 0, 0, 1)
7979 #define MPP10_UNUSED MPP(10, 0x3, 0, 0, 1)
8080
8181 #define MPP11_GPIO MPP(11, 0x0, 1, 1, 1)
82−#define MPP11_GE0_RXD7 MPP(11, 0x1, 1, 0, 1)
83−#define MPP11_GE1_RXD3 MPP(11, 0x2, 1, 0, 1)
82+#define MPP11_GE0_RXD7 MPP(11, 0x1, 0, 0, 1)
83+#define MPP11_GE1_RXD3 MPP(11, 0x2, 0, 0, 1)
8484 #define MPP11_UNUSED MPP(11, 0x3, 0, 0, 1)
8585
8686 #define MPP12_GPIO MPP(12, 0x0, 1, 1, 1)
87−#define MPP12_M_BB MPP(12, 0x3, 1, 0, 1)
88−#define MPP12_UA0_CTSn MPP(12, 0x4, 1, 0, 1)
89−#define MPP12_NAND_FLASH_REn0 MPP(12, 0x5, 0, 1, 1)
90−#define MPP12_TDM0_SCSn MPP(12, 0X6, 0, 1, 1)
87+#define MPP12_M_BB MPP(12, 0x3, 0, 0, 1)
88+#define MPP12_UA0_CTSn MPP(12, 0x4, 0, 0, 1)
89+#define MPP12_NAND_FLASH_REn0 MPP(12, 0x5, 0, 0, 1)
90+#define MPP12_TDM0_SCSn MPP(12, 0X6, 0, 0, 1)
9191 #define MPP12_UNUSED MPP(12, 0x1, 0, 0, 1)
9292
9393 #define MPP13_GPIO MPP(13, 0x0, 1, 1, 1)
94−#define MPP13_SYSRST_OUTn MPP(13, 0x3, 0, 1, 1)
95−#define MPP13_UA0_RTSn MPP(13, 0x4, 0, 1, 1)
96−#define MPP13_NAN_FLASH_WEn0 MPP(13, 0x5, 0, 1, 1)
97−#define MPP13_TDM_SCLK MPP(13, 0x6, 0, 1, 1)
94+#define MPP13_SYSRST_OUTn MPP(13, 0x3, 0, 0, 1)
95+#define MPP13_UA0_RTSn MPP(13, 0x4, 0, 0, 1)
96+#define MPP13_NAN_FLASH_WEn0 MPP(13, 0x5, 0, 0, 1)
97+#define MPP13_TDM_SCLK MPP(13, 0x6, 0, 0, 1)
9898 #define MPP13_UNUSED MPP(13, 0x1, 0, 0, 1)
9999
100100 #define MPP14_GPIO MPP(14, 0x0, 1, 1, 1)
101−#define MPP14_SATA1_ACTn MPP(14, 0x3, 0, 1, 1)
102−#define MPP14_UA1_CTSn MPP(14, 0x4, 1, 0, 1)
103−#define MPP14_NAND_FLASH_REn1 MPP(14, 0x5, 0, 1, 1)
104−#define MPP14_TDM_SMOSI MPP(14, 0x6, 0, 1, 1)
101+#define MPP14_SATA1_ACTn MPP(14, 0x3, 0, 0, 1)
102+#define MPP14_UA1_CTSn MPP(14, 0x4, 0, 0, 1)
103+#define MPP14_NAND_FLASH_REn1 MPP(14, 0x5, 0, 0, 1)
104+#define MPP14_TDM_SMOSI MPP(14, 0x6, 0, 0, 1)
105105 #define MPP14_UNUSED MPP(14, 0x1, 0, 0, 1)
106106
107107 #define MPP15_GPIO MPP(15, 0x0, 1, 1, 1)
108−#define MPP15_SATA0_ACTn MPP(15, 0x3, 0, 1, 1)
109−#define MPP15_UA1_RTSn MPP(15, 0x4, 0, 1, 1)
110−#define MPP15_NAND_FLASH_WEn1 MPP(15, 0x5, 0, 1, 1)
111−#define MPP15_TDM_SMISO MPP(15, 0x6, 1, 0, 1)
108+#define MPP15_SATA0_ACTn MPP(15, 0x3, 0, 0, 1)
109+#define MPP15_UA1_RTSn MPP(15, 0x4, 0, 0, 1)
110+#define MPP15_NAND_FLASH_WEn1 MPP(15, 0x5, 0, 0, 1)
111+#define MPP15_TDM_SMISO MPP(15, 0x6, 0, 0, 1)
112112 #define MPP15_UNUSED MPP(15, 0x1, 0, 0, 1)
113113
114114 #define MPP16_GPIO MPP(16, 0x0, 1, 1, 1)
115−#define MPP16_SATA1_PRESENTn MPP(16, 0x3, 0, 1, 1)
116−#define MPP16_UA2_TXD MPP(16, 0x4, 0, 1, 1)
117−#define MPP16_NAND_FLASH_REn3 MPP(16, 0x5, 0, 1, 1)
118−#define MPP16_TDM_INTn MPP(16, 0x6, 1, 0, 1)
115+#define MPP16_SATA1_PRESENTn MPP(16, 0x3, 0, 0, 1)
116+#define MPP16_UA2_TXD MPP(16, 0x4, 0, 0, 1)
117+#define MPP16_NAND_FLASH_REn3 MPP(16, 0x5, 0, 0, 1)
118+#define MPP16_TDM_INTn MPP(16, 0x6, 0, 0, 1)
119119 #define MPP16_UNUSED MPP(16, 0x1, 0, 0, 1)
120120
121121
122122 #define MPP17_GPIO MPP(17, 0x0, 1, 1, 1)
123−#define MPP17_SATA0_PRESENTn MPP(17, 0x3, 0, 1, 1)
124−#define MPP17_UA2_RXD MPP(17, 0x4, 1, 0, 1)
125−#define MPP17_NAND_FLASH_WEn3 MPP(17, 0x5, 0, 1, 1)
126−#define MPP17_TDM_RSTn MPP(17, 0x6, 0, 1, 1)
123+#define MPP17_SATA0_PRESENTn MPP(17, 0x3, 0, 0, 1)
124+#define MPP17_UA2_RXD MPP(17, 0x4, 0, 0, 1)
125+#define MPP17_NAND_FLASH_WEn3 MPP(17, 0x5, 0, 0, 1)
126+#define MPP17_TDM_RSTn MPP(17, 0x6, 0, 0, 1)
127127 #define MPP17_UNUSED MPP(17, 0x1, 0, 0, 1)
128128
129129
130130 #define MPP18_GPIO MPP(18, 0x0, 1, 1, 1)
131−#define MPP18_UA0_CTSn MPP(18, 0x4, 1, 0, 1)
132−#define MPP18_BOOT_FLASH_REn MPP(18, 0x5, 0, 1, 1)
131+#define MPP18_UA0_CTSn MPP(18, 0x4, 0, 0, 1)
132+#define MPP18_BOOT_FLASH_REn MPP(18, 0x5, 0, 0, 1)
133133 #define MPP18_UNUSED MPP(18, 0x1, 0, 0, 1)
134134
135135
136136
137137 #define MPP19_GPIO MPP(19, 0x0, 1, 1, 1)
138−#define MPP19_UA0_CTSn MPP(19, 0x4, 0, 1, 1)
139−#define MPP19_BOOT_FLASH_WEn MPP(19, 0x5, 0, 1, 1)
138+#define MPP19_UA0_CTSn MPP(19, 0x4, 0, 0, 1)
139+#define MPP19_BOOT_FLASH_WEn MPP(19, 0x5, 0, 0, 1)
140140 #define MPP19_UNUSED MPP(19, 0x1, 0, 0, 1)
141141
142142
143143 #define MPP20_GPIO MPP(20, 0x0, 1, 1, 1)
144−#define MPP20_UA1_CTSs MPP(20, 0x4, 1, 0, 1)
145−#define MPP20_TDM_PCLK MPP(20, 0x6, 1, 1, 0)
144+#define MPP20_UA1_CTSs MPP(20, 0x4, 0, 0, 1)
145+#define MPP20_TDM_PCLK MPP(20, 0x6, 0, 0, 0)
146146 #define MPP20_UNUSED MPP(20, 0x1, 0, 0, 1)
147147
148148
149149
150150 #define MPP21_GPIO MPP(21, 0x0, 1, 1, 1)
151−#define MPP21_UA1_CTSs MPP(21, 0x4, 0, 1, 1)
152−#define MPP21_TDM_FSYNC MPP(21, 0x6, 1, 1, 0)
151+#define MPP21_UA1_CTSs MPP(21, 0x4, 0, 0, 1)
152+#define MPP21_TDM_FSYNC MPP(21, 0x6, 0, 0, 0)
153153 #define MPP21_UNUSED MPP(21, 0x1, 0, 0, 1)
154154
155155
156156
157157 #define MPP22_GPIO MPP(22, 0x0, 1, 1, 1)
158−#define MPP22_UA3_TDX MPP(22, 0x4, 0, 1, 1)
159−#define MPP22_NAND_FLASH_REn2 MPP(22, 0x5, 0, 1, 1)
160−#define MPP22_TDM_DRX MPP(22, 0x6, 1, 0, 1)
158+#define MPP22_UA3_TDX MPP(22, 0x4, 0, 0, 1)
159+#define MPP22_NAND_FLASH_REn2 MPP(22, 0x5, 0, 0, 1)
160+#define MPP22_TDM_DRX MPP(22, 0x6, 0, 0, 1)
161161 #define MPP22_UNUSED MPP(22, 0x1, 0, 0, 1)
162162
163163
164164
165165 #define MPP23_GPIO MPP(23, 0x0, 1, 1, 1)
166−#define MPP23_UA3_RDX MPP(23, 0x4, 1, 0, 1)
167−#define MPP23_NAND_FLASH_WEn2 MPP(23, 0x5, 0, 1, 1)
168−#define MPP23_TDM_DTX MPP(23, 0x6, 0, 1, 1)
166+#define MPP23_UA3_RDX MPP(23, 0x4, 0, 0, 1)
167+#define MPP23_NAND_FLASH_WEn2 MPP(23, 0x5, 0, 0, 1)
168+#define MPP23_TDM_DTX MPP(23, 0x6, 0, 0, 1)
169169 #define MPP23_UNUSED MPP(23, 0x1, 0, 0, 1)
170170
171171
172172 #define MPP24_GPIO MPP(24, 0x0, 1, 1, 1)
173−#define MPP24_UA2_TXD MPP(24, 0x4, 0, 1, 1)
174−#define MPP24_TDM_INTn MPP(24, 0x6, 1, 0, 1)
173+#define MPP24_UA2_TXD MPP(24, 0x4, 0, 0, 1)
174+#define MPP24_TDM_INTn MPP(24, 0x6, 0, 0, 1)
175175 #define MPP24_UNUSED MPP(24, 0x1, 0, 0, 1)
176176
177177
178178 #define MPP25_GPIO MPP(25, 0x0, 1, 1, 1)
179−#define MPP25_UA2_RXD MPP(25, 0x4, 1, 0, 1)
180−#define MPP25_TDM_RSTn MPP(25, 0x6, 0, 1, 1)
179+#define MPP25_UA2_RXD MPP(25, 0x4, 0, 0, 1)
180+#define MPP25_TDM_RSTn MPP(25, 0x6, 0, 0, 1)
181181 #define MPP25_UNUSED MPP(25, 0x1, 0, 0, 1)
182182
183183
184184 #define MPP26_GPIO MPP(26, 0x0, 1, 1, 1)
185−#define MPP26_UA2_CTSn MPP(26, 0x4, 1, 0, 1)
186−#define MPP26_TDM_PCLK MPP(26, 0x6, 1, 1, 1)
185+#define MPP26_UA2_CTSn MPP(26, 0x4, 0, 0, 1)
186+#define MPP26_TDM_PCLK MPP(26, 0x6, 0, 0, 1)
187187 #define MPP26_UNUSED MPP(26, 0x1, 0, 0, 1)
188188
189189
190190 #define MPP27_GPIO MPP(27, 0x0, 1, 1, 1)
191−#define MPP27_UA2_RTSn MPP(27, 0x4, 0, 1, 1)
192−#define MPP27_TDM_FSYNC MPP(27, 0x6, 1, 1, 1)
191+#define MPP27_UA2_RTSn MPP(27, 0x4, 0, 0, 1)
192+#define MPP27_TDM_FSYNC MPP(27, 0x6, 0, 0, 1)
193193 #define MPP27_UNUSED MPP(27, 0x1, 0, 0, 1)
194194
195195
196196 #define MPP28_GPIO MPP(28, 0x0, 1, 1, 1)
197−#define MPP28_UA3_TXD MPP(28, 0x4, 0, 1, 1)
198−#define MPP28_TDM_DRX MPP(28, 0x6, 1, 0, 1)
197+#define MPP28_UA3_TXD MPP(28, 0x4, 0, 0, 1)
198+#define MPP28_TDM_DRX MPP(28, 0x6, 0, 0, 1)
199199 #define MPP28_UNUSED MPP(28, 0x1, 0, 0, 1)
200200
201201 #define MPP29_GPIO MPP(29, 0x0, 1, 1, 1)
202−#define MPP29_UA3_RXD MPP(29, 0x4, 1, 0, 1)
203−#define MPP29_SYSRST_OUTn MPP(29, 0x5, 0, 1, 1)
204−#define MPP29_TDM_DTX MPP(29, 0x6, 0, 1, 1)
202+#define MPP29_UA3_RXD MPP(29, 0x4, 0, 0, 1)
203+#define MPP29_SYSRST_OUTn MPP(29, 0x5, 0, 0, 1)
204+#define MPP29_TDM_DTX MPP(29, 0x6, 0, 0, 1)
205205 #define MPP29_UNUSED MPP(29, 0x1, 0, 0, 1)
206206
207207 #define MPP30_GPIO MPP(30, 0x0, 1, 1, 1)
208−#define MPP30_UA3_CTSn MPP(30, 0x4, 1, 0, 1)
208+#define MPP30_UA3_CTSn MPP(30, 0x4, 0, 0, 1)
209209 #define MPP30_UNUSED MPP(30, 0x1, 0, 0, 1)
210210
211211 #define MPP31_GPIO MPP(31, 0x0, 1, 1, 1)
212−#define MPP31_UA3_RTSn MPP(31, 0x4, 0, 1, 1)
213−#define MPP31_TDM1_SCSn MPP(31, 0x6, 0, 1, 1)
212+#define MPP31_UA3_RTSn MPP(31, 0x4, 0, 0, 1)
213+#define MPP31_TDM1_SCSn MPP(31, 0x6, 0, 0, 1)
214214 #define MPP31_UNUSED MPP(31, 0x1, 0, 0, 1)
215215
216216
217217 #define MPP32_GPIO MPP(32, 0x1, 1, 1, 1)
218−#define MPP32_UA3_TDX MPP(32, 0x4, 0, 1, 1)
219−#define MPP32_SYSRST_OUTn MPP(32, 0x5, 0, 1, 1)
220−#define MPP32_TDM0_RXQ MPP(32, 0x6, 0, 1, 1)
218+#define MPP32_UA3_TDX MPP(32, 0x4, 0, 0, 1)
219+#define MPP32_SYSRST_OUTn MPP(32, 0x5, 0, 0, 1)
220+#define MPP32_TDM0_RXQ MPP(32, 0x6, 0, 0, 1)
221221 #define MPP32_UNUSED MPP(32, 0x3, 0, 0, 1)
222222
223223
224224 #define MPP33_GPIO MPP(33, 0x1, 1, 1, 1)
225−#define MPP33_UA3_RDX MPP(33, 0x4, 1, 0, 1)
226−#define MPP33_TDM0_TXQ MPP(33, 0x6, 0, 1, 1)
225+#define MPP33_UA3_RDX MPP(33, 0x4, 0, 0, 1)
226+#define MPP33_TDM0_TXQ MPP(33, 0x6, 0, 0, 1)
227227 #define MPP33_UNUSED MPP(33, 0x3, 0, 0, 1)
228228
229229
230230
231231 #define MPP34_GPIO MPP(34, 0x1, 1, 1, 1)
232−#define MPP34_UA2_TDX MPP(34, 0x4, 0, 1, 1)
233−#define MPP34_TDM1_RXQ MPP(34, 0x6, 0, 1, 1)
232+#define MPP34_UA2_TDX MPP(34, 0x4, 0, 0, 1)
233+#define MPP34_TDM1_RXQ MPP(34, 0x6, 0, 0, 1)
234234 #define MPP34_UNUSED MPP(34, 0x3, 0, 0, 1)
235235
236236
237237
238238 #define MPP35_GPIO MPP(35, 0x1, 1, 1, 1)
239−#define MPP35_UA2_RDX MPP(35, 0x4, 1, 0, 1)
240−#define MPP35_TDM1_TXQ MPP(35, 0x6, 0, 1, 1)
239+#define MPP35_UA2_RDX MPP(35, 0x4, 0, 0, 1)
240+#define MPP35_TDM1_TXQ MPP(35, 0x6, 0, 0, 1)
241241 #define MPP35_UNUSED MPP(35, 0x3, 0, 0, 1)
242242
243243 #define MPP36_GPIO MPP(36, 0x1, 1, 1, 1)
244−#define MPP36_UA0_CTSn MPP(36, 0x2, 1, 0, 1)
245−#define MPP36_UA2_TDX MPP(36, 0x4, 0, 1, 1)
246−#define MPP36_TDM0_SCSn MPP(36, 0x6, 0, 1, 1)
244+#define MPP36_UA0_CTSn MPP(36, 0x2, 0, 0, 1)
245+#define MPP36_UA2_TDX MPP(36, 0x4, 0, 0, 1)
246+#define MPP36_TDM0_SCSn MPP(36, 0x6, 0, 0, 1)
247247 #define MPP36_UNUSED MPP(36, 0x3, 0, 0, 1)
248248
249249
250250 #define MPP37_GPIO MPP(37, 0x1, 1, 1, 1)
251−#define MPP37_UA0_RTSn MPP(37, 0x2, 0, 1, 1)
252−#define MPP37_UA2_RXD MPP(37, 0x4, 1, 0, 1)
253−#define MPP37_SYSRST_OUTn MPP(37, 0x5, 0, 1, 1)
254−#define MPP37_TDM_SCLK MPP(37, 0x6, 0, 1, 1)
251+#define MPP37_UA0_RTSn MPP(37, 0x2, 0, 0, 1)
252+#define MPP37_UA2_RXD MPP(37, 0x4, 0, 0, 1)
253+#define MPP37_SYSRST_OUTn MPP(37, 0x5, 0, 0, 1)
254+#define MPP37_TDM_SCLK MPP(37, 0x6, 0, 0, 1)
255255 #define MPP37_UNUSED MPP(37, 0x3, 0, 0, 1)
256256
257257
258258
259259
260260 #define MPP38_GPIO MPP(38, 0x1, 1, 1, 1)
261−#define MPP38_UA1_CTSn MPP(38, 0x2, 1, 0, 1)
262−#define MPP38_UA3_TXD MPP(38, 0x4, 0, 1, 1)
263−#define MPP38_SYSRST_OUTn MPP(38, 0x5, 0, 1, 1)
264−#define MPP38_TDM_SMOSI MPP(38, 0x6, 0, 1, 1)
261+#define MPP38_UA1_CTSn MPP(38, 0x2, 0, 0, 1)
262+#define MPP38_UA3_TXD MPP(38, 0x4, 0, 0, 1)
263+#define MPP38_SYSRST_OUTn MPP(38, 0x5, 0, 0, 1)
264+#define MPP38_TDM_SMOSI MPP(38, 0x6, 0, 0, 1)
265265 #define MPP38_UNUSED MPP(38, 0x3, 0, 0, 1)
266266
267267
268268
269269
270270 #define MPP39_GPIO MPP(39, 0x1, 1, 1, 1)
271−#define MPP39_UA1_RTSn MPP(39, 0x2, 0, 1, 1)
272−#define MPP39_UA3_RXD MPP(39, 0x4, 1, 0, 1)
273−#define MPP39_SYSRST_OUTn MPP(39, 0x5, 0, 1, 1)
274−#define MPP39_TDM_SMISO MPP(39, 0x6, 1, 0, 1)
271+#define MPP39_UA1_RTSn MPP(39, 0x2, 0, 0, 1)
272+#define MPP39_UA3_RXD MPP(39, 0x4, 0, 0, 1)
273+#define MPP39_SYSRST_OUTn MPP(39, 0x5, 0, 0, 1)
274+#define MPP39_TDM_SMISO MPP(39, 0x6, 0, 0, 1)
275275 #define MPP39_UNUSED MPP(39, 0x3, 0, 0, 1)
276276
277277
278278
279279 #define MPP40_GPIO MPP(40, 0x1, 1, 1, 1)
280−#define MPP40_TDM_INTn MPP(40, 0x6, 1, 0, 1)
280+#define MPP40_TDM_INTn MPP(40, 0x6, 0, 0, 1)
281281 #define MPP40_UNUSED MPP(40, 0x0, 0, 0, 1)
282282
283283
284284
285285 #define MPP41_GPIO MPP(41, 0x1, 1, 1, 1)
286−#define MPP41_TDM_RSTn MPP(41, 0x6, 0, 1, 1)
286+#define MPP41_TDM_RSTn MPP(41, 0x6, 0, 0, 1)
287287 #define MPP41_UNUSED MPP(41, 0x0, 0, 0, 1)
288288
289289
290290
291291 #define MPP42_GPIO MPP(42, 0x1, 1, 1, 1)
292−#define MPP42_TDM_PCLK MPP(42, 0x6, 1, 1, 1)
292+#define MPP42_TDM_PCLK MPP(42, 0x6, 0, 0, 1)
293293 #define MPP42_UNUSED MPP(42, 0x0, 0, 0, 1)
294294
295295
296296
297297 #define MPP43_GPIO MPP(43, 0x1, 1, 1, 1)
298−#define MPP43_TDM_FSYNC MPP(43, 0x6, 1, 1, 1)
298+#define MPP43_TDM_FSYNC MPP(43, 0x6, 0, 0, 1)
299299 #define MPP43_UNUSED MPP(43, 0x0, 0, 0, 1)
300300
301301
302302
303303 #define MPP44_GPIO MPP(44, 0x1, 1, 1, 1)
304−#define MPP44_TDM_DRX MPP(44, 0x6, 1, 0, 1)
304+#define MPP44_TDM_DRX MPP(44, 0x6, 0, 0, 1)
305305 #define MPP44_UNUSED MPP(44, 0x0, 0, 0, 1)
306306
307307
308308
309309 #define MPP45_GPIO MPP(45, 0x1, 1, 1, 1)
310−#define MPP45_SATA0_ACTn MPP(45, 0x3, 0, 1, 1)
311−#define MPP45_TDM_DRX MPP(45, 0x6, 0, 1, 1)
310+#define MPP45_SATA0_ACTn MPP(45, 0x3, 0, 0, 1)
311+#define MPP45_TDM_DRX MPP(45, 0x6, 0, 0, 1)
312312 #define MPP45_UNUSED MPP(45, 0x0, 0, 0, 1)
313313
314314
315315 #define MPP46_GPIO MPP(46, 0x1, 1, 1, 1)
316−#define MPP46_TDM_SCSn MPP(46, 0x6, 0, 1, 1)
316+#define MPP46_TDM_SCSn MPP(46, 0x6, 0, 0, 1)
317317 #define MPP46_UNUSED MPP(46, 0x0, 0, 0, 1)
318318
319319
@@ -323,14 +323,14 @@ · 3 unmodified lines
323323
324324
325325 #define MPP48_GPIO MPP(48, 0x1, 1, 1, 1)
326−#define MPP48_SATA1_ACTn MPP(48, 0x3, 0, 1, 1)
326+#define MPP48_SATA1_ACTn MPP(48, 0x3, 0, 0, 1)
327327 #define MPP48_UNUSED MPP(48, 0x2, 0, 0, 1)
328328
329329
330330
331331 #define MPP49_GPIO MPP(49, 0x1, 1, 1, 1)
332−#define MPP49_SATA0_ACTn MPP(49, 0x3, 0, 1, 1)
333−#define MPP49_M_BB MPP(49, 0x4, 1, 0, 1)
332+#define MPP49_SATA0_ACTn MPP(49, 0x3, 0, 0, 1)
333+#define MPP49_M_BB MPP(49, 0x4, 0, 0, 1)
334334 #define MPP49_UNUSED MPP(49, 0x2, 0, 0, 1)
335335
336336
arch/arm/mach-mx5/Kconfig+0−244
@@ -1,244 +0,0 @@
1−if ARCH_MX5
2−
3−# ARCH_MX5/50/53 are left to mark places where prevent multi-soc in single
4−# image. So for most time, SOC_IMX50/51/53 should be used.
5−
6−config ARCH_MX51
7− bool
8−
9−config ARCH_MX50
10− bool
11−
12−config ARCH_MX53
13− bool
14−
15−config SOC_IMX50
16− bool
17− select CPU_V7
18− select ARM_L1_CACHE_SHIFT_6
19− select MXC_TZIC
20− select ARCH_MXC_IOMUX_V3
21− select ARCH_MXC_AUDMUX_V2
22− select ARCH_HAS_CPUFREQ
23− select ARCH_MX50
24−
25−config SOC_IMX51
26− bool
27− select CPU_V7
28− select ARM_L1_CACHE_SHIFT_6
29− select MXC_TZIC
30− select ARCH_MXC_IOMUX_V3
31− select ARCH_MXC_AUDMUX_V2
32− select ARCH_HAS_CPUFREQ
33− select ARCH_MX51
34−
35−config SOC_IMX53
36− bool
37− select CPU_V7
38− select ARM_L1_CACHE_SHIFT_6
39− select MXC_TZIC
40− select ARCH_MXC_IOMUX_V3
41− select ARCH_MX53
42−
43−#comment "i.MX50 machines:"
44−
45−config MACH_MX50_RDP
46− bool "Support MX50 reference design platform"
47− depends on BROKEN
48− select SOC_IMX50
49− select IMX_HAVE_PLATFORM_IMX_I2C
50− select IMX_HAVE_PLATFORM_IMX_UART
51− select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
52− select IMX_HAVE_PLATFORM_SPI_IMX
53− help
54− Include support for MX50 reference design platform (RDP) board. This
55− includes specific configurations for the board and its peripherals.
56−
57−comment "i.MX51 machines:"
58−
59−config MACH_IMX51_DT
60− bool "Support i.MX51 platforms from device tree"
61− select SOC_IMX51
62− select USE_OF
63− select MACH_MX51_BABBAGE
64− help
65− Include support for Freescale i.MX51 based platforms
66− using the device tree for discovery
67−
68−config MACH_MX51_BABBAGE
69− bool "Support MX51 BABBAGE platforms"
70− select SOC_IMX51
71− select IMX_HAVE_PLATFORM_FSL_USB2_UDC
72− select IMX_HAVE_PLATFORM_IMX2_WDT
73− select IMX_HAVE_PLATFORM_IMX_I2C
74− select IMX_HAVE_PLATFORM_IMX_UART
75− select IMX_HAVE_PLATFORM_MXC_EHCI
76− select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
77− select IMX_HAVE_PLATFORM_SPI_IMX
78− help
79− Include support for MX51 Babbage platform, also known as MX51EVK in
80− u-boot. This includes specific configurations for the board and its
81− peripherals.
82−
83−config MACH_MX51_3DS
84− bool "Support MX51PDK (3DS)"
85− select SOC_IMX51
86− select IMX_HAVE_PLATFORM_IMX2_WDT
87− select IMX_HAVE_PLATFORM_IMX_KEYPAD
88− select IMX_HAVE_PLATFORM_IMX_UART
89− select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
90− select IMX_HAVE_PLATFORM_SPI_IMX
91− select MXC_DEBUG_BOARD
92− help
93− Include support for MX51PDK (3DS) platform. This includes specific
94− configurations for the board and its peripherals.
95−
96−config MACH_EUKREA_CPUIMX51
97− bool "Support Eukrea CPUIMX51 module"
98− select SOC_IMX51
99− select IMX_HAVE_PLATFORM_FSL_USB2_UDC
100− select IMX_HAVE_PLATFORM_IMX_I2C
101− select IMX_HAVE_PLATFORM_IMX_UART
102− select IMX_HAVE_PLATFORM_MXC_EHCI
103− select IMX_HAVE_PLATFORM_MXC_NAND
104− select IMX_HAVE_PLATFORM_SPI_IMX
105− help
106− Include support for Eukrea CPUIMX51 platform. This includes
107− specific configurations for the module and its peripherals.
108−
109−choice
110− prompt "Baseboard"
111− depends on MACH_EUKREA_CPUIMX51
112− default MACH_EUKREA_MBIMX51_BASEBOARD
113−
114−config MACH_EUKREA_MBIMX51_BASEBOARD
115− prompt "Eukrea MBIMX51 development board"
116− bool
117− select IMX_HAVE_PLATFORM_IMX_KEYPAD
118− select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
119− select LEDS_GPIO_REGISTER
120− help
121− This adds board specific devices that can be found on Eukrea's
122− MBIMX51 evaluation board.
123−
124−endchoice
125−
126−config MACH_EUKREA_CPUIMX51SD
127− bool "Support Eukrea CPUIMX51SD module"
128− select SOC_IMX51
129− select IMX_HAVE_PLATFORM_FSL_USB2_UDC
130− select IMX_HAVE_PLATFORM_IMX_I2C
131− select IMX_HAVE_PLATFORM_IMX_UART
132− select IMX_HAVE_PLATFORM_MXC_EHCI
133− select IMX_HAVE_PLATFORM_MXC_NAND
134− select IMX_HAVE_PLATFORM_SPI_IMX
135− help
136− Include support for Eukrea CPUIMX51SD platform. This includes
137− specific configurations for the module and its peripherals.
138−
139−choice
140− prompt "Baseboard"
141− depends on MACH_EUKREA_CPUIMX51SD
142− default MACH_EUKREA_MBIMXSD51_BASEBOARD
143−
144−config MACH_EUKREA_MBIMXSD51_BASEBOARD
145− prompt "Eukrea MBIMXSD development board"
146− bool
147− select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
148− select LEDS_GPIO_REGISTER
149− help
150− This adds board specific devices that can be found on Eukrea's
151− MBIMXSD evaluation board.
152−
153−endchoice
154−
155−config MX51_EFIKA_COMMON
156− bool
157− select SOC_IMX51
158− select IMX_HAVE_PLATFORM_IMX_UART
159− select IMX_HAVE_PLATFORM_MXC_EHCI
160− select IMX_HAVE_PLATFORM_PATA_IMX
161− select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
162− select IMX_HAVE_PLATFORM_SPI_IMX
163− select MXC_ULPI if USB_ULPI
164−
165−config MACH_MX51_EFIKAMX
166− bool "Support MX51 Genesi Efika MX nettop"
167− select LEDS_GPIO_REGISTER
168− select MX51_EFIKA_COMMON
169− help
170− Include support for Genesi Efika MX nettop. This includes specific
171− configurations for the board and its peripherals.
172−
173−config MACH_MX51_EFIKASB
174− bool "Support MX51 Genesi Efika Smartbook"
175− select LEDS_GPIO_REGISTER
176− select MX51_EFIKA_COMMON
177− help
178− Include support for Genesi Efika Smartbook. This includes specific
179− configurations for the board and its peripherals.
180−
181−comment "i.MX53 machines:"
182−
183−config MACH_IMX53_DT
184− bool "Support i.MX53 platforms from device tree"
185− select SOC_IMX53
186− select USE_OF
187− select MACH_MX53_ARD
188− select MACH_MX53_EVK
189− select MACH_MX53_LOCO
190− select MACH_MX53_SMD
191− help
192− Include support for Freescale i.MX53 based platforms
193− using the device tree for discovery
194−
195−config MACH_MX53_EVK
196− bool "Support MX53 EVK platforms"
197− select SOC_IMX53
198− select IMX_HAVE_PLATFORM_IMX2_WDT
199− select IMX_HAVE_PLATFORM_IMX_UART
200− select IMX_HAVE_PLATFORM_IMX_I2C
201− select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
202− select IMX_HAVE_PLATFORM_SPI_IMX
203− select LEDS_GPIO_REGISTER
204− help
205− Include support for MX53 EVK platform. This includes specific
206− configurations for the board and its peripherals.
207−
208−config MACH_MX53_SMD
209− bool "Support MX53 SMD platforms"
210− select SOC_IMX53
211− select IMX_HAVE_PLATFORM_IMX2_WDT
212− select IMX_HAVE_PLATFORM_IMX_I2C
213− select IMX_HAVE_PLATFORM_IMX_UART
214− select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
215− help
216− Include support for MX53 SMD platform. This includes specific
217− configurations for the board and its peripherals.
218−
219−config MACH_MX53_LOCO
220− bool "Support MX53 LOCO platforms"
221− select SOC_IMX53
222− select IMX_HAVE_PLATFORM_IMX2_WDT
223− select IMX_HAVE_PLATFORM_IMX_I2C
224− select IMX_HAVE_PLATFORM_IMX_UART
225− select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
226− select IMX_HAVE_PLATFORM_GPIO_KEYS
227− select LEDS_GPIO_REGISTER
228− help
229− Include support for MX53 LOCO platform. This includes specific
230− configurations for the board and its peripherals.
231−
232−config MACH_MX53_ARD
233− bool "Support MX53 ARD platforms"
234− select SOC_IMX53
235− select IMX_HAVE_PLATFORM_IMX2_WDT
236− select IMX_HAVE_PLATFORM_IMX_I2C
237− select IMX_HAVE_PLATFORM_IMX_UART
238− select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
239− select IMX_HAVE_PLATFORM_GPIO_KEYS
240− help
241− Include support for MX53 ARD platform. This includes specific
242− configurations for the board and its peripherals.
243−
244−endif
arch/arm/mach-mx5/Makefile+0−26
@@ -1,26 +0,0 @@
1−#
2−# Makefile for the linux kernel.
3−#
4−
5−# Object file lists.
6−obj-y := cpu.o mm.o clock-mx51-mx53.o ehci.o system.o
7−
8−obj-$(CONFIG_PM) += pm-imx5.o
9−obj-$(CONFIG_CPU_FREQ_IMX) += cpu_op-mx51.o
10−obj-$(CONFIG_MACH_MX51_BABBAGE) += board-mx51_babbage.o
11−obj-$(CONFIG_MACH_MX51_3DS) += board-mx51_3ds.o
12−obj-$(CONFIG_MACH_MX53_EVK) += board-mx53_evk.o
13−obj-$(CONFIG_MACH_MX53_SMD) += board-mx53_smd.o
14−obj-$(CONFIG_MACH_MX53_LOCO) += board-mx53_loco.o
15−obj-$(CONFIG_MACH_MX53_ARD) += board-mx53_ard.o
16−obj-$(CONFIG_MACH_EUKREA_CPUIMX51) += board-cpuimx51.o
17−obj-$(CONFIG_MACH_EUKREA_MBIMX51_BASEBOARD) += eukrea_mbimx51-baseboard.o
18−obj-$(CONFIG_MACH_EUKREA_CPUIMX51SD) += board-cpuimx51sd.o
19−obj-$(CONFIG_MACH_EUKREA_MBIMXSD51_BASEBOARD) += eukrea_mbimxsd-baseboard.o
20−obj-$(CONFIG_MX51_EFIKA_COMMON) += mx51_efika.o
21−obj-$(CONFIG_MACH_MX51_EFIKAMX) += board-mx51_efikamx.o
22−obj-$(CONFIG_MACH_MX51_EFIKASB) += board-mx51_efikasb.o
23−obj-$(CONFIG_MACH_MX50_RDP) += board-mx50_rdp.o
24−
25−obj-$(CONFIG_MACH_IMX51_DT) += imx51-dt.o
26−obj-$(CONFIG_MACH_IMX53_DT) += imx53-dt.o
arch/arm/mach-mx5/Makefile.boot+0−9
@@ -1,9 +0,0 @@
1− zreladdr-$(CONFIG_ARCH_MX50) += 0x70008000
2−params_phys-$(CONFIG_ARCH_MX50) := 0x70000100
3−initrd_phys-$(CONFIG_ARCH_MX50) := 0x70800000
4− zreladdr-$(CONFIG_ARCH_MX51) += 0x90008000
5−params_phys-$(CONFIG_ARCH_MX51) := 0x90000100
6−initrd_phys-$(CONFIG_ARCH_MX51) := 0x90800000
7− zreladdr-$(CONFIG_ARCH_MX53) += 0x70008000
8−params_phys-$(CONFIG_ARCH_MX53) := 0x70000100
9−initrd_phys-$(CONFIG_ARCH_MX53) := 0x70800000
arch/arm/mach-mx5/pm-imx5.c+0−83
@@ -1,83 +0,0 @@
1−/*
2− * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.
3− *
4− * The code contained herein is licensed under the GNU General Public
5− * License. You may obtain a copy of the GNU General Public License
6− * Version 2 or later at the following locations:
7− *
8− * http://www.opensource.org/licenses/gpl-license.html
9− * http://www.gnu.org/copyleft/gpl.html
10− */
11−#include <linux/suspend.h>
12−#include <linux/clk.h>
13−#include <linux/io.h>
14−#include <linux/err.h>
15−#include <asm/cacheflush.h>
16−#include <asm/tlbflush.h>
17−#include <mach/common.h>
18−#include <mach/hardware.h>
19−#include "crm_regs.h"
20−
21−static struct clk *gpc_dvfs_clk;
22−
23−static int mx5_suspend_prepare(void)
24−{
25− return clk_enable(gpc_dvfs_clk);
26−}
27−
28−static int mx5_suspend_enter(suspend_state_t state)
29−{
30− switch (state) {
31− case PM_SUSPEND_MEM:
32− mx5_cpu_lp_set(STOP_POWER_OFF);
33− break;
34− case PM_SUSPEND_STANDBY:
35− mx5_cpu_lp_set(WAIT_UNCLOCKED_POWER_OFF);
36− break;
37− default:
38− return -EINVAL;
39− }
40−
41− if (state == PM_SUSPEND_MEM) {
42− local_flush_tlb_all();
43− flush_cache_all();
44−
45− /*clear the EMPGC0/1 bits */
46− __raw_writel(0, MXC_SRPG_EMPGC0_SRPGCR);
47− __raw_writel(0, MXC_SRPG_EMPGC1_SRPGCR);
48− }
49− cpu_do_idle();
50− return 0;
51−}
52−
53−static void mx5_suspend_finish(void)
54−{
55− clk_disable(gpc_dvfs_clk);
56−}
57−
58−static int mx5_pm_valid(suspend_state_t state)
59−{
60− return (state > PM_SUSPEND_ON && state <= PM_SUSPEND_MAX);
61−}
62−
63−static const struct platform_suspend_ops mx5_suspend_ops = {
64− .valid = mx5_pm_valid,
65− .prepare = mx5_suspend_prepare,
66− .enter = mx5_suspend_enter,
67− .finish = mx5_suspend_finish,
68−};
69−
70−static int __init mx5_pm_init(void)
71−{
72− if (gpc_dvfs_clk == NULL)
73− gpc_dvfs_clk = clk_get(NULL, "gpc_dvfs");
74−
75− if (!IS_ERR(gpc_dvfs_clk)) {
76− if (cpu_is_mx51())
77− suspend_set_ops(&mx5_suspend_ops);
78− } else
79− return -EPERM;
80−
81− return 0;
82−}
83−device_initcall(mx5_pm_init);
arch/arm/mach-omap2/Kconfig+5−7
@@ -33,7 +33,6 @@ config ARCH_OMAP3 · 32 unmodified lines
3333 default y
3434 select CPU_V7
3535 select USB_ARCH_HAS_EHCI
36− select ARM_L1_CACHE_SHIFT_6 if !ARCH_OMAP4
3736 select ARCH_HAS_OPP
3837 select PM_OPP if PM
3938 select ARM_CPU_SUSPEND if PM
@@ -214,13 +213,12 @@ config MACH_OMAP3_PANDORA · 174 unmodified lines
214213 depends on ARCH_OMAP3
215214 default y
216215 select OMAP_PACKAGE_CBB
217− select REGULATOR_FIXED_VOLTAGE
216+ select REGULATOR_FIXED_VOLTAGE if REGULATOR
218217
219218 config MACH_OMAP3_TOUCHBOOK
220219 bool "OMAP3 Touch Book"
221220 depends on ARCH_OMAP3
222221 default y
223− select BACKLIGHT_CLASS_DEVICE
224222
225223 config MACH_OMAP_3430SDP
226224 bool "OMAP 3430 SDP board"
@@ -266,7 +264,7 @@ config MACH_OMAP_ZOOM2 · 39 unmodified lines
266264 select SERIAL_8250
267265 select SERIAL_CORE_CONSOLE
268266 select SERIAL_8250_CONSOLE
269− select REGULATOR_FIXED_VOLTAGE
267+ select REGULATOR_FIXED_VOLTAGE if REGULATOR
270268
271269 config MACH_OMAP_ZOOM3
272270 bool "OMAP3630 Zoom3 board"
@@ -276,7 +274,7 @@ config MACH_OMAP_ZOOM3 · 3 unmodified lines
276274 select SERIAL_8250
277275 select SERIAL_CORE_CONSOLE
278276 select SERIAL_8250_CONSOLE
279− select REGULATOR_FIXED_VOLTAGE
277+ select REGULATOR_FIXED_VOLTAGE if REGULATOR
280278
281279 config MACH_CM_T35
282280 bool "CompuLab CM-T35/CM-T3730 modules"
@@ -335,7 +333,7 @@ config MACH_OMAP_4430SDP · 52 unmodified lines
335333 depends on ARCH_OMAP4
336334 select OMAP_PACKAGE_CBL
337335 select OMAP_PACKAGE_CBS
338− select REGULATOR_FIXED_VOLTAGE
336+ select REGULATOR_FIXED_VOLTAGE if REGULATOR
339337
340338 config MACH_OMAP4_PANDA
341339 bool "OMAP4 Panda Board"
@@ -343,7 +341,7 @@ config MACH_OMAP4_PANDA · 1 unmodified line
343341 depends on ARCH_OMAP4
344342 select OMAP_PACKAGE_CBL
345343 select OMAP_PACKAGE_CBS
346− select REGULATOR_FIXED_VOLTAGE
344+ select REGULATOR_FIXED_VOLTAGE if REGULATOR
347345
348346 config OMAP3_EMU
349347 bool "OMAP3 debugging peripherals"
arch/arm/mach-omap2/Makefile+2−2
@@ -11,9 +11,9 @@ hwmod-common = omap_hwmod.o \ · 10 unmodified lines
1111 omap_hwmod_common_data.o
1212 clock-common = clock.o clock_common_data.o \
1313 clkt_dpll.o clkt_clksel.o
14−secure-common = omap-smc.o omap-secure.o
14+secure-common = omap-smc.o omap-secure.o
1515
16−obj-$(CONFIG_ARCH_OMAP2) += $(omap-2-3-common) $(hwmod-common) $(secure-common)
16+obj-$(CONFIG_ARCH_OMAP2) += $(omap-2-3-common) $(hwmod-common)
1717 obj-$(CONFIG_ARCH_OMAP3) += $(omap-2-3-common) $(hwmod-common) $(secure-common)
1818 obj-$(CONFIG_ARCH_OMAP4) += prm44xx.o $(hwmod-common) $(secure-common)
1919
arch/arm/mach-omap2/board-4430sdp.c+25−10
@@ -52,8 +52,9 @@ · 51 unmodified lines
5252 #define ETH_KS8851_QUART 138
5353 #define OMAP4_SFH7741_SENSOR_OUTPUT_GPIO 184
5454 #define OMAP4_SFH7741_ENABLE_GPIO 188
55−#define HDMI_GPIO_HPD 60 /* Hot plug pin for HDMI */
55+#define HDMI_GPIO_CT_CP_HPD 60 /* HPD mode enable/disable */
5656 #define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */
57+#define HDMI_GPIO_HPD 63 /* Hotplug detect */
5758 #define DISPLAY_SEL_GPIO 59 /* LCD2/PicoDLP switch */
5859 #define DLP_POWER_ON_GPIO 40
5960
@@ -603,8 +604,9 @@ static void __init omap_sfh7741prox_init(void) · 543 unmodified lines
603604 }
604605
605606 static struct gpio sdp4430_hdmi_gpios[] = {
606− { HDMI_GPIO_HPD, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_hpd" },
607+ { HDMI_GPIO_CT_CP_HPD, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ct_cp_hpd" },
607608 { HDMI_GPIO_LS_OE, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ls_oe" },
609+ { HDMI_GPIO_HPD, GPIOF_DIR_IN, "hdmi_gpio_hpd" },
608610 };
609611
610612 static int sdp4430_panel_enable_hdmi(struct omap_dss_device *dssdev)
@@ -621,8 +623,7 @@ static int sdp4430_panel_enable_hdmi(struct omap_dss_device *dssdev) · 10 unmodified lines
621623
622624 static void sdp4430_panel_disable_hdmi(struct omap_dss_device *dssdev)
623625 {
624− gpio_free(HDMI_GPIO_LS_OE);
625− gpio_free(HDMI_GPIO_HPD);
626+ gpio_free_array(sdp4430_hdmi_gpios, ARRAY_SIZE(sdp4430_hdmi_gpios));
626627 }
627628
628629 static struct nokia_dsi_panel_data dsi1_panel = {
@@ -738,6 +739,10 @@ static void sdp4430_lcd_init(void) · 109 unmodified lines
738739 pr_err("%s: Could not get lcd2_reset_gpio\n", __func__);
739740 }
740741
742+static struct omap_dss_hdmi_data sdp4430_hdmi_data = {
743+ .hpd_gpio = HDMI_GPIO_HPD,
744+};
745+
741746 static struct omap_dss_device sdp4430_hdmi_device = {
742747 .name = "hdmi",
743748 .driver_name = "hdmi_panel",
@@ -745,6 +750,7 @@ static struct omap_dss_device sdp4430_hdmi_device = { · 1 unmodified line
745750 .platform_enable = sdp4430_panel_enable_hdmi,
746751 .platform_disable = sdp4430_panel_disable_hdmi,
747752 .channel = OMAP_DSS_CHANNEL_DIGIT,
753+ .data = &sdp4430_hdmi_data,
748754 };
749755
750756 static struct picodlp_panel_data sdp4430_picodlp_pdata = {
@@ -808,7 +814,7 @@ static struct omap_dss_board_info sdp4430_dss_data = { · 57 unmodified lines
808814 .default_device = &sdp4430_lcd_device,
809815 };
810816
811−static void omap_4430sdp_display_init(void)
817+static void __init omap_4430sdp_display_init(void)
812818 {
813819 int r;
814820
@@ -829,6 +835,10 @@ static void omap_4430sdp_display_init(void) · 14 unmodified lines
829835 omap_hdmi_init(OMAP_HDMI_SDA_SCL_EXTERNAL_PULLUP);
830836 else
831837 omap_hdmi_init(0);
838+
839+ omap_mux_init_gpio(HDMI_GPIO_LS_OE, OMAP_PIN_OUTPUT);
840+ omap_mux_init_gpio(HDMI_GPIO_CT_CP_HPD, OMAP_PIN_OUTPUT);
841+ omap_mux_init_gpio(HDMI_GPIO_HPD, OMAP_PIN_INPUT_PULLDOWN);
832842 }
833843
834844 #ifdef CONFIG_OMAP_MUX
@@ -841,7 +851,7 @@ static struct omap_board_mux board_mux[] __initdata = { · 6 unmodified lines
841851 #define board_mux NULL
842852 #endif
843853
844−static void omap4_sdp4430_wifi_mux_init(void)
854+static void __init omap4_sdp4430_wifi_mux_init(void)
845855 {
846856 omap_mux_init_gpio(GPIO_WIFI_IRQ, OMAP_PIN_INPUT |
847857 OMAP_PIN_OFF_WAKEUPENABLE);
@@ -868,12 +878,17 @@ static struct wl12xx_platform_data omap4_sdp4430_wlan_data __initdata = { · 20 unmodified lines
868878 .board_tcxo_clock = WL12XX_TCXOCLOCK_26,
869879 };
870880
871−static void omap4_sdp4430_wifi_init(void)
881+static void __init omap4_sdp4430_wifi_init(void)
872882 {
883+ int ret;
884+
873885 omap4_sdp4430_wifi_mux_init();
874− if (wl12xx_set_platform_data(&omap4_sdp4430_wlan_data))
875− pr_err("Error setting wl12xx data\n");
876− platform_device_register(&omap_vwlan_device);
886+ ret = wl12xx_set_platform_data(&omap4_sdp4430_wlan_data);
887+ if (ret)
888+ pr_err("Error setting wl12xx data: %d\n", ret);
889+ ret = platform_device_register(&omap_vwlan_device);
890+ if (ret)
891+ pr_err("Error registering wl12xx device: %d\n", ret);
877892 }
878893
879894 static void __init omap_4430sdp_init(void)
arch/arm/mach-omap2/board-cm-t35.c+1−1
@@ -437,7 +437,7 @@ static struct usbhs_omap_board_data usbhs_bdata __initdata = { · 436 unmodified lines
437437 .reset_gpio_port[2] = -EINVAL
438438 };
439439
440−static void cm_t35_init_usbh(void)
440+static void __init cm_t35_init_usbh(void)
441441 {
442442 int err;
443443
arch/arm/mach-omap2/board-generic.c+4−0
@@ -17,6 +17,7 @@ · 16 unmodified lines
1717 #include <linux/i2c/twl.h>
1818
1919 #include <mach/hardware.h>
20+#include <asm/hardware/gic.h>
2021 #include <asm/mach/arch.h>
2122
2223 #include <plat/board.h>
@@ -102,6 +103,7 @@ DT_MACHINE_START(OMAP242X_DT, "Generic OMAP2420 (Flattened Device Tree)") · 79 unmodified lines
102103 .map_io = omap242x_map_io,
103104 .init_early = omap2420_init_early,
104105 .init_irq = omap2_init_irq,
106+ .handle_irq = omap2_intc_handle_irq,
105107 .init_machine = omap_generic_init,
106108 .timer = &omap2_timer,
107109 .dt_compat = omap242x_boards_compat,
@@ -141,6 +143,7 @@ DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)") · 33 unmodified lines
141143 .map_io = omap3_map_io,
142144 .init_early = omap3430_init_early,
143145 .init_irq = omap3_init_irq,
146+ .handle_irq = omap3_intc_handle_irq,
144147 .init_machine = omap3_init,
145148 .timer = &omap3_timer,
146149 .dt_compat = omap3_boards_compat,
@@ -160,6 +163,7 @@ DT_MACHINE_START(OMAP4_DT, "Generic OMAP4 (Flattened Device Tree)") · 13 unmodified lines
160163 .map_io = omap4_map_io,
161164 .init_early = omap4430_init_early,
162165 .init_irq = gic_init_irq,
166+ .handle_irq = gic_handle_irq,
163167 .init_machine = omap4_init,
164168 .timer = &omap4_timer,
165169 .dt_compat = omap4_boards_compat,
arch/arm/mach-omap2/board-omap3evm.c+16−7
@@ -617,6 +617,21 @@ static struct gpio omap3_evm_ehci_gpios[] __initdata = { · 616 unmodified lines
617617 { OMAP3_EVM_EHCI_SELECT, GPIOF_OUT_INIT_LOW, "select EHCI port" },
618618 };
619619
620+static void __init omap3_evm_wl12xx_init(void)
621+{
622+#ifdef CONFIG_WL12XX_PLATFORM_DATA
623+ int ret;
624+
625+ /* WL12xx WLAN Init */
626+ ret = wl12xx_set_platform_data(&omap3evm_wlan_data);
627+ if (ret)
628+ pr_err("error setting wl12xx data: %d\n", ret);
629+ ret = platform_device_register(&omap3evm_wlan_regulator);
630+ if (ret)
631+ pr_err("error registering wl12xx device: %d\n", ret);
632+#endif
633+}
634+
620635 static void __init omap3_evm_init(void)
621636 {
622637 omap3_evm_get_revision();
@@ -665,13 +680,7 @@ static void __init omap3_evm_init(void) · 42 unmodified lines
665680 omap_ads7846_init(1, OMAP3_EVM_TS_GPIO, 310, NULL);
666681 omap3evm_init_smsc911x();
667682 omap3_evm_display_init();
668−
669−#ifdef CONFIG_WL12XX_PLATFORM_DATA
670− /* WL12xx WLAN Init */
671− if (wl12xx_set_platform_data(&omap3evm_wlan_data))
672− pr_err("error setting wl12xx data\n");
673− platform_device_register(&omap3evm_wlan_regulator);
674−#endif
683+ omap3_evm_wl12xx_init();
675684 }
676685
677686 MACHINE_START(OMAP3EVM, "OMAP3 EVM")
arch/arm/mach-omap2/board-omap4panda.c+18−6
@@ -51,8 +51,9 @@ · 50 unmodified lines
5151 #define GPIO_HUB_NRESET 62
5252 #define GPIO_WIFI_PMENA 43
5353 #define GPIO_WIFI_IRQ 53
54−#define HDMI_GPIO_HPD 60 /* Hot plug pin for HDMI */
54+#define HDMI_GPIO_CT_CP_HPD 60 /* HPD mode enable/disable */
5555 #define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */
56+#define HDMI_GPIO_HPD 63 /* Hotplug detect */
5657
5758 /* wl127x BT, FM, GPS connectivity chip */
5859 static int wl1271_gpios[] = {46, -1, -1};
@@ -413,8 +414,9 @@ int __init omap4_panda_dvi_init(void) · 354 unmodified lines
413414 }
414415
415416 static struct gpio panda_hdmi_gpios[] = {
416− { HDMI_GPIO_HPD, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_hpd" },
417+ { HDMI_GPIO_CT_CP_HPD, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ct_cp_hpd" },
417418 { HDMI_GPIO_LS_OE, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ls_oe" },
419+ { HDMI_GPIO_HPD, GPIOF_DIR_IN, "hdmi_gpio_hpd" },
418420 };
419421
420422 static int omap4_panda_panel_enable_hdmi(struct omap_dss_device *dssdev)
@@ -431,10 +433,13 @@ static int omap4_panda_panel_enable_hdmi(struct omap_dss_device *dssdev) · 10 unmodified lines
431433
432434 static void omap4_panda_panel_disable_hdmi(struct omap_dss_device *dssdev)
433435 {
434− gpio_free(HDMI_GPIO_LS_OE);
435− gpio_free(HDMI_GPIO_HPD);
436+ gpio_free_array(panda_hdmi_gpios, ARRAY_SIZE(panda_hdmi_gpios));
436437 }
437438
439+static struct omap_dss_hdmi_data omap4_panda_hdmi_data = {
440+ .hpd_gpio = HDMI_GPIO_HPD,
441+};
442+
438443 static struct omap_dss_device omap4_panda_hdmi_device = {
439444 .name = "hdmi",
440445 .driver_name = "hdmi_panel",
@@ -442,6 +447,7 @@ static struct omap_dss_device omap4_panda_hdmi_device = { · 1 unmodified line
442447 .platform_enable = omap4_panda_panel_enable_hdmi,
443448 .platform_disable = omap4_panda_panel_disable_hdmi,
444449 .channel = OMAP_DSS_CHANNEL_DIGIT,
450+ .data = &omap4_panda_hdmi_data,
445451 };
446452
447453 static struct omap_dss_device *omap4_panda_dss_devices[] = {
@@ -473,18 +479,24 @@ void omap4_panda_display_init(void) · 25 unmodified lines
473479 omap_hdmi_init(OMAP_HDMI_SDA_SCL_EXTERNAL_PULLUP);
474480 else
475481 omap_hdmi_init(0);
482+
483+ omap_mux_init_gpio(HDMI_GPIO_LS_OE, OMAP_PIN_OUTPUT);
484+ omap_mux_init_gpio(HDMI_GPIO_CT_CP_HPD, OMAP_PIN_OUTPUT);
485+ omap_mux_init_gpio(HDMI_GPIO_HPD, OMAP_PIN_INPUT_PULLDOWN);
476486 }
477487
478488 static void __init omap4_panda_init(void)
479489 {
480490 int package = OMAP_PACKAGE_CBS;
491+ int ret;
481492
482493 if (omap_rev() == OMAP4430_REV_ES1_0)
483494 package = OMAP_PACKAGE_CBL;
484495 omap4_mux_init(board_mux, NULL, package);
485496
486− if (wl12xx_set_platform_data(&omap_panda_wlan_data))
487− pr_err("error setting wl12xx data\n");
497+ ret = wl12xx_set_platform_data(&omap_panda_wlan_data);
498+ if (ret)
499+ pr_err("error setting wl12xx data: %d\n", ret);
488500
489501 omap4_panda_i2c_init();
490502 platform_add_devices(panda_devices, ARRAY_SIZE(panda_devices));
arch/arm/mach-omap2/board-zoom-peripherals.c+4−2
@@ -296,8 +296,10 @@ static void enable_board_wakeup_source(void) · 295 unmodified lines
296296
297297 void __init zoom_peripherals_init(void)
298298 {
299− if (wl12xx_set_platform_data(&omap_zoom_wlan_data))
300− pr_err("error setting wl12xx data\n");
299+ int ret = wl12xx_set_platform_data(&omap_zoom_wlan_data);
300+
301+ if (ret)
302+ pr_err("error setting wl12xx data: %d\n", ret);
301303
302304 omap_i2c_init();
303305 platform_device_register(&omap_vwlan_device);
arch/arm/mach-omap2/devices.c+1−0
@@ -405,6 +405,7 @@ static int omap_mcspi_init(struct omap_hwmod *oh, void *unused) · 404 unmodified lines
405405 break;
406406 default:
407407 pr_err("Invalid McSPI Revision value\n");
408+ kfree(pdata);
408409 return -EINVAL;
409410 }
410411
arch/arm/mach-omap2/display.c+0−4
@@ -103,12 +103,8 @@ static void omap4_hdmi_mux_pads(enum omap_hdmi_flags flags) · 102 unmodified lines
103103 u32 reg;
104104 u16 control_i2c_1;
105105
106− /* PAD0_HDMI_HPD_PAD1_HDMI_CEC */
107− omap_mux_init_signal("hdmi_hpd",
108− OMAP_PIN_INPUT_PULLUP);
109106 omap_mux_init_signal("hdmi_cec",
110107 OMAP_PIN_INPUT_PULLUP);
111− /* PAD0_HDMI_DDC_SCL_PAD1_HDMI_DDC_SDA */
112108 omap_mux_init_signal("hdmi_ddc_scl",
113109 OMAP_PIN_INPUT_PULLUP);
114110 omap_mux_init_signal("hdmi_ddc_sda",
arch/arm/mach-omap2/gpmc.c+6−0
@@ -528,7 +528,13 @@ int gpmc_cs_configure(int cs, int cmd, int wval) · 527 unmodified lines
528528
529529 case GPMC_CONFIG_DEV_SIZE:
530530 regval = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG1);
531+
532+ /* clear 2 target bits */
533+ regval &= ~GPMC_CONFIG1_DEVICESIZE(3);
534+
535+ /* set the proper value */
531536 regval |= GPMC_CONFIG1_DEVICESIZE(wval);
537+
532538 gpmc_cs_write_reg(cs, GPMC_CS_CONFIG1, regval);
533539 break;
534540
arch/arm/mach-omap2/hsmmc.c+12−12
@@ -175,14 +175,15 @@ static void hsmmc2_select_input_clk_src(struct omap_mmc_platform_data *mmc) · 174 unmodified lines
175175 {
176176 u32 reg;
177177
178− if (mmc->slots[0].internal_clock) {
179− reg = omap_ctrl_readl(control_devconf1_offset);
178+ reg = omap_ctrl_readl(control_devconf1_offset);
179+ if (mmc->slots[0].internal_clock)
180180 reg |= OMAP2_MMCSDIO2ADPCLKISEL;
181− omap_ctrl_writel(reg, control_devconf1_offset);
182− }
181+ else
182+ reg &= ~OMAP2_MMCSDIO2ADPCLKISEL;
183+ omap_ctrl_writel(reg, control_devconf1_offset);
183184 }
184185
185−static void hsmmc23_before_set_reg(struct device *dev, int slot,
186+static void hsmmc2_before_set_reg(struct device *dev, int slot,
186187 int power_on, int vdd)
187188 {
188189 struct omap_mmc_platform_data *mmc = dev->platform_data;
@@ -292,8 +293,8 @@ static inline void omap_hsmmc_mux(struct omap_mmc_platform_data *mmc_controller, · 103 unmodified lines
292293 }
293294 }
294295
295−static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c,
296− struct omap_mmc_platform_data *mmc)
296+static int omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c,
297+ struct omap_mmc_platform_data *mmc)
297298 {
298299 char *hc_name;
299300
@@ -407,14 +408,13 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c, · 107 unmodified lines
407408 c->caps &= ~MMC_CAP_8_BIT_DATA;
408409 c->caps |= MMC_CAP_4_BIT_DATA;
409410 }
410− /* FALLTHROUGH */
411− case 3:
412411 if (mmc->slots[0].features & HSMMC_HAS_PBIAS) {
413412 /* off-chip level shifting, or none */
414− mmc->slots[0].before_set_reg = hsmmc23_before_set_reg;
413+ mmc->slots[0].before_set_reg = hsmmc2_before_set_reg;
415414 mmc->slots[0].after_set_reg = NULL;
416415 }
417416 break;
417+ case 3:
418418 case 4:
419419 case 5:
420420 mmc->slots[0].before_set_reg = NULL;
@@ -430,7 +430,7 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c, · 9 unmodified lines
430430
431431 #define MAX_OMAP_MMC_HWMOD_NAME_LEN 16
432432
433−void __init omap_init_hsmmc(struct omap2_hsmmc_info *hsmmcinfo, int ctrl_nr)
433+void omap_init_hsmmc(struct omap2_hsmmc_info *hsmmcinfo, int ctrl_nr)
434434 {
435435 struct omap_hwmod *oh;
436436 struct platform_device *pdev;
@@ -487,7 +487,7 @@ done: · 50 unmodified lines
487487 kfree(mmc_data);
488488 }
489489
490−void __init omap2_hsmmc_init(struct omap2_hsmmc_info *controllers)
490+void omap2_hsmmc_init(struct omap2_hsmmc_info *controllers)
491491 {
492492 u32 reg;
493493
arch/arm/mach-omap2/io.c+3−1
@@ -388,7 +388,7 @@ static void __init omap_hwmod_init_postsetup(void) · 387 unmodified lines
388388 omap_pm_if_early_init();
389389 }
390390
391−#ifdef CONFIG_ARCH_OMAP2
391+#ifdef CONFIG_SOC_OMAP2420
392392 void __init omap2420_init_early(void)
393393 {
394394 omap2_set_globals_242x();
@@ -400,7 +400,9 @@ void __init omap2420_init_early(void) · 5 unmodified lines
400400 omap_hwmod_init_postsetup();
401401 omap2420_clk_init();
402402 }
403+#endif
403404
405+#ifdef CONFIG_SOC_OMAP2430
404406 void __init omap2430_init_early(void)
405407 {
406408 omap2_set_globals_243x();
arch/arm/mach-omap2/mux.c+11−11
@@ -100,8 +100,8 @@ void omap_mux_write_array(struct omap_mux_partition *partition, · 99 unmodified lines
100100
101101 static char *omap_mux_options;
102102
103−static int __init _omap_mux_init_gpio(struct omap_mux_partition *partition,
104− int gpio, int val)
103+static int _omap_mux_init_gpio(struct omap_mux_partition *partition,
104+ int gpio, int val)
105105 {
106106 struct omap_mux_entry *e;
107107 struct omap_mux *gpio_mux = NULL;
@@ -145,7 +145,7 @@ static int __init _omap_mux_init_gpio(struct omap_mux_partition *partition, · 37 unmodified lines
145145 return 0;
146146 }
147147
148−int __init omap_mux_init_gpio(int gpio, int val)
148+int omap_mux_init_gpio(int gpio, int val)
149149 {
150150 struct omap_mux_partition *partition;
151151 int ret;
@@ -159,9 +159,9 @@ int __init omap_mux_init_gpio(int gpio, int val) · 7 unmodified lines
159159 return -ENODEV;
160160 }
161161
162−static int __init _omap_mux_get_by_name(struct omap_mux_partition *partition,
163− const char *muxname,
164− struct omap_mux **found_mux)
162+static int _omap_mux_get_by_name(struct omap_mux_partition *partition,
163+ const char *muxname,
164+ struct omap_mux **found_mux)
165165 {
166166 struct omap_mux *mux = NULL;
167167 struct omap_mux_entry *e;
@@ -240,7 +240,7 @@ omap_mux_get_by_name(const char *muxname, · 72 unmodified lines
240240 return -ENODEV;
241241 }
242242
243−int __init omap_mux_init_signal(const char *muxname, int val)
243+int omap_mux_init_signal(const char *muxname, int val)
244244 {
245245 struct omap_mux_partition *partition = NULL;
246246 struct omap_mux *mux = NULL;
@@ -1094,8 +1094,8 @@ static void omap_mux_init_package(struct omap_mux *superset, · 847 unmodified lines
10941094 omap_mux_package_init_balls(package_balls, superset);
10951095 }
10961096
1097−static void omap_mux_init_signals(struct omap_mux_partition *partition,
1098− struct omap_board_mux *board_mux)
1097+static void __init omap_mux_init_signals(struct omap_mux_partition *partition,
1098+ struct omap_board_mux *board_mux)
10991099 {
11001100 omap_mux_set_cmdline_signals();
11011101 omap_mux_write_array(partition, board_mux);
@@ -1109,8 +1109,8 @@ static void omap_mux_init_package(struct omap_mux *superset, · 7 unmodified lines
11091109 {
11101110 }
11111111
1112−static void omap_mux_init_signals(struct omap_mux_partition *partition,
1113− struct omap_board_mux *board_mux)
1112+static void __init omap_mux_init_signals(struct omap_mux_partition *partition,
1113+ struct omap_board_mux *board_mux)
11141114 {
11151115 }
11161116
arch/arm/mach-omap2/omap-headsmp.S+1−0
@@ -18,6 +18,7 @@ · 17 unmodified lines
1818 #include <linux/linkage.h>
1919 #include <linux/init.h>
2020
21+ __CPUINIT
2122 /*
2223 * OMAP4 specific entry point for secondary CPU to jump from ROM
2324 * code. This routine also provides a holding flag into which
arch/arm/mach-omap2/omap_hwmod.c+8−8
@@ -1517,8 +1517,8 @@ static int _enable(struct omap_hwmod *oh) · 1516 unmodified lines
15171517 if (oh->_state != _HWMOD_STATE_INITIALIZED &&
15181518 oh->_state != _HWMOD_STATE_IDLE &&
15191519 oh->_state != _HWMOD_STATE_DISABLED) {
1520− WARN(1, "omap_hwmod: %s: enabled state can only be entered "
1521− "from initialized, idle, or disabled state\n", oh->name);
1520+ WARN(1, "omap_hwmod: %s: enabled state can only be entered from initialized, idle, or disabled state\n",
1521+ oh->name);
15221522 return -EINVAL;
15231523 }
15241524
@@ -1600,8 +1600,8 @@ static int _idle(struct omap_hwmod *oh) · 75 unmodified lines
16001600 pr_debug("omap_hwmod: %s: idling\n", oh->name);
16011601
16021602 if (oh->_state != _HWMOD_STATE_ENABLED) {
1603− WARN(1, "omap_hwmod: %s: idle state can only be entered from "
1604− "enabled state\n", oh->name);
1603+ WARN(1, "omap_hwmod: %s: idle state can only be entered from enabled state\n",
1604+ oh->name);
16051605 return -EINVAL;
16061606 }
16071607
@@ -1682,8 +1682,8 @@ static int _shutdown(struct omap_hwmod *oh) · 74 unmodified lines
16821682
16831683 if (oh->_state != _HWMOD_STATE_IDLE &&
16841684 oh->_state != _HWMOD_STATE_ENABLED) {
1685− WARN(1, "omap_hwmod: %s: disabled state can only be entered "
1686− "from idle, or enabled state\n", oh->name);
1685+ WARN(1, "omap_hwmod: %s: disabled state can only be entered from idle, or enabled state\n",
1686+ oh->name);
16871687 return -EINVAL;
16881688 }
16891689
@@ -2240,8 +2240,8 @@ void omap_hwmod_ocp_barrier(struct omap_hwmod *oh) · 550 unmodified lines
22402240 BUG_ON(!oh);
22412241
22422242 if (!oh->class->sysc || !oh->class->sysc->sysc_flags) {
2243− WARN(1, "omap_device: %s: OCP barrier impossible due to "
2244− "device configuration\n", oh->name);
2243+ WARN(1, "omap_device: %s: OCP barrier impossible due to device configuration\n",
2244+ oh->name);
22452245 return;
22462246 }
22472247
arch/arm/mach-omap2/omap_hwmod_2xxx_3xxx_ipblock_data.c+0−21
@@ -55,27 +55,6 @@ struct omap_hwmod_class omap2_dss_hwmod_class = { · 54 unmodified lines
5555 .reset = omap_dss_reset,
5656 };
5757
58−/*
59− * 'dispc' class
60− * display controller
61− */
62−
63−static struct omap_hwmod_class_sysconfig omap2_dispc_sysc = {
64− .rev_offs = 0x0000,
65− .sysc_offs = 0x0010,
66− .syss_offs = 0x0014,
67− .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE |
68− SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
69− .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
70− MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
71− .sysc_fields = &omap_hwmod_sysc_type1,
72−};
73−
74−struct omap_hwmod_class omap2_dispc_hwmod_class = {
75− .name = "dispc",
76− .sysc = &omap2_dispc_sysc,
77−};
78−
7958 /*
8059 * 'rfbi' class
8160 * remote frame buffer interface
arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c+22−0
@@ -28,6 +28,28 @@ struct omap_hwmod_dma_info omap2xxx_dss_sdma_chs[] = { · 27 unmodified lines
2828 { .name = "dispc", .dma_req = 5 },
2929 { .dma_req = -1 }
3030 };
31+
32+/*
33+ * 'dispc' class
34+ * display controller
35+ */
36+
37+static struct omap_hwmod_class_sysconfig omap2_dispc_sysc = {
38+ .rev_offs = 0x0000,
39+ .sysc_offs = 0x0010,
40+ .syss_offs = 0x0014,
41+ .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE |
42+ SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
43+ .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
44+ MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
45+ .sysc_fields = &omap_hwmod_sysc_type1,
46+};
47+
48+struct omap_hwmod_class omap2_dispc_hwmod_class = {
49+ .name = "dispc",
50+ .sysc = &omap2_dispc_sysc,
51+};
52+
3153 /* OMAP2xxx Timer Common */
3254 static struct omap_hwmod_class_sysconfig omap2xxx_timer_sysc = {
3355 .rev_offs = 0x0000,
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c+47−7
@@ -1480,6 +1480,28 @@ static struct omap_hwmod omap3xxx_dss_core_hwmod = { · 1479 unmodified lines
14801480 .masters_cnt = ARRAY_SIZE(omap3xxx_dss_masters),
14811481 };
14821482
1483+/*
1484+ * 'dispc' class
1485+ * display controller
1486+ */
1487+
1488+static struct omap_hwmod_class_sysconfig omap3_dispc_sysc = {
1489+ .rev_offs = 0x0000,
1490+ .sysc_offs = 0x0010,
1491+ .syss_offs = 0x0014,
1492+ .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE |
1493+ SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
1494+ SYSC_HAS_ENAWAKEUP),
1495+ .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
1496+ MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
1497+ .sysc_fields = &omap_hwmod_sysc_type1,
1498+};
1499+
1500+static struct omap_hwmod_class omap3_dispc_hwmod_class = {
1501+ .name = "dispc",
1502+ .sysc = &omap3_dispc_sysc,
1503+};
1504+
14831505 /* l4_core -> dss_dispc */
14841506 static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dispc = {
14851507 .master = &omap3xxx_l4_core_hwmod,
@@ -1503,7 +1525,7 @@ static struct omap_hwmod_ocp_if *omap3xxx_dss_dispc_slaves[] = { · 17 unmodified lines
15031525
15041526 static struct omap_hwmod omap3xxx_dss_dispc_hwmod = {
15051527 .name = "dss_dispc",
1506− .class = &omap2_dispc_hwmod_class,
1528+ .class = &omap3_dispc_hwmod_class,
15071529 .mpu_irqs = omap2_dispc_irqs,
15081530 .main_clk = "dss1_alwon_fck",
15091531 .prcm = {
@@ -3523,12 +3545,6 @@ static __initdata struct omap_hwmod *omap3xxx_hwmods[] = { · 2013 unmodified lines
35233545 &omap3xxx_uart2_hwmod,
35243546 &omap3xxx_uart3_hwmod,
35253547
3526− /* dss class */
3527− &omap3xxx_dss_dispc_hwmod,
3528− &omap3xxx_dss_dsi1_hwmod,
3529− &omap3xxx_dss_rfbi_hwmod,
3530− &omap3xxx_dss_venc_hwmod,
3531−
35323548 /* i2c class */
35333549 &omap3xxx_i2c1_hwmod,
35343550 &omap3xxx_i2c2_hwmod,
@@ -3635,6 +3651,15 @@ static __initdata struct omap_hwmod *am35xx_hwmods[] = { · 100 unmodified lines
36353651 NULL
36363652 };
36373653
3654+static __initdata struct omap_hwmod *omap3xxx_dss_hwmods[] = {
3655+ /* dss class */
3656+ &omap3xxx_dss_dispc_hwmod,
3657+ &omap3xxx_dss_dsi1_hwmod,
3658+ &omap3xxx_dss_rfbi_hwmod,
3659+ &omap3xxx_dss_venc_hwmod,
3660+ NULL
3661+};
3662+
36383663 int __init omap3xxx_hwmod_init(void)
36393664 {
36403665 int r;
@@ -3708,6 +3733,21 @@ int __init omap3xxx_hwmod_init(void) · 67 unmodified lines
37083733
37093734 if (h)
37103735 r = omap_hwmod_register(h);
3736+ if (r < 0)
3737+ return r;
3738+
3739+ /*
3740+ * DSS code presumes that dss_core hwmod is handled first,
3741+ * _before_ any other DSS related hwmods so register common
3742+ * DSS hwmods last to ensure that dss_core is already registered.
3743+ * Otherwise some change things may happen, for ex. if dispc
3744+ * is handled before dss_core and DSS is enabled in bootloader
3745+ * DIPSC will be reset with outputs enabled which sometimes leads
3746+ * to unrecoverable L3 error.
3747+ * XXX The long-term fix to this is to ensure modules are set up
3748+ * in dependency order in the hwmod core code.
3749+ */
3750+ r = omap_hwmod_register(omap3xxx_dss_hwmods);
37113751
37123752 return r;
37133753 }
arch/arm/mach-omap2/omap_hwmod_44xx_data.c+2−0
@@ -1031,6 +1031,7 @@ static struct omap_hwmod_dma_info omap44xx_dmic_sdma_reqs[] = { · 1030 unmodified lines
10311031
10321032 static struct omap_hwmod_addr_space omap44xx_dmic_addrs[] = {
10331033 {
1034+ .name = "mpu",
10341035 .pa_start = 0x4012e000,
10351036 .pa_end = 0x4012e07f,
10361037 .flags = ADDR_TYPE_RT
@@ -1049,6 +1050,7 @@ static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic = { · 12 unmodified lines
10491050
10501051 static struct omap_hwmod_addr_space omap44xx_dmic_dma_addrs[] = {
10511052 {
1053+ .name = "dma",
10521054 .pa_start = 0x4902e000,
10531055 .pa_end = 0x4902e07f,
10541056 .flags = ADDR_TYPE_RT
arch/arm/mach-omap2/pm24xx.c+1−7
@@ -82,13 +82,7 @@ static int omap2_fclks_active(void) · 81 unmodified lines
8282 f1 = omap2_cm_read_mod_reg(CORE_MOD, CM_FCLKEN1);
8383 f2 = omap2_cm_read_mod_reg(CORE_MOD, OMAP24XX_CM_FCLKEN2);
8484
85− /* Ignore UART clocks. These are handled by UART core (serial.c) */
86− f1 &= ~(OMAP24XX_EN_UART1_MASK | OMAP24XX_EN_UART2_MASK);
87− f2 &= ~OMAP24XX_EN_UART3_MASK;
88−
89− if (f1 | f2)
90− return 1;
91− return 0;
85+ return (f1 | f2) ? 1 : 0;
9286 }
9387
9488 static void omap2_enter_full_retention(void)
arch/arm/mach-omap2/prm2xxx_3xxx.c+1−0
@@ -19,6 +19,7 @@ · 18 unmodified lines
1919 #include "common.h"
2020 #include <plat/cpu.h>
2121 #include <plat/prcm.h>
22+#include <plat/irqs.h>
2223
2324 #include "vp.h"
2425
arch/arm/mach-omap2/prm44xx.c+1−0
@@ -19,6 +19,7 @@ · 18 unmodified lines
1919
2020 #include "common.h"
2121 #include <plat/cpu.h>
22+#include <plat/irqs.h>
2223 #include <plat/prcm.h>
2324
2425 #include "vp.h"
arch/arm/mach-omap2/serial.c+4−4
@@ -107,18 +107,18 @@ static void omap_uart_set_noidle(struct platform_device *pdev) · 106 unmodified lines
107107 omap_hwmod_set_slave_idlemode(od->hwmods[0], HWMOD_IDLEMODE_NO);
108108 }
109109
110−static void omap_uart_set_forceidle(struct platform_device *pdev)
110+static void omap_uart_set_smartidle(struct platform_device *pdev)
111111 {
112112 struct omap_device *od = to_omap_device(pdev);
113113
114− omap_hwmod_set_slave_idlemode(od->hwmods[0], HWMOD_IDLEMODE_FORCE);
114+ omap_hwmod_set_slave_idlemode(od->hwmods[0], HWMOD_IDLEMODE_SMART);
115115 }
116116
117117 #else
118118 static void omap_uart_enable_wakeup(struct platform_device *pdev, bool enable)
119119 {}
120120 static void omap_uart_set_noidle(struct platform_device *pdev) {}
121−static void omap_uart_set_forceidle(struct platform_device *pdev) {}
121+static void omap_uart_set_smartidle(struct platform_device *pdev) {}
122122 #endif /* CONFIG_PM */
123123
124124 #ifdef CONFIG_OMAP_MUX
@@ -349,7 +349,7 @@ void __init omap_serial_init_port(struct omap_board_data *bdata, · 224 unmodified lines
349349 omap_up.uartclk = OMAP24XX_BASE_BAUD * 16;
350350 omap_up.flags = UPF_BOOT_AUTOCONF;
351351 omap_up.get_context_loss_count = omap_pm_get_dev_context_loss_count;
352− omap_up.set_forceidle = omap_uart_set_forceidle;
352+ omap_up.set_forceidle = omap_uart_set_smartidle;
353353 omap_up.set_noidle = omap_uart_set_noidle;
354354 omap_up.enable_wakeup = omap_uart_enable_wakeup;
355355 omap_up.dma_rx_buf_size = info->dma_rx_buf_size;
arch/arm/mach-omap2/smartreflex.c+1−1
@@ -897,7 +897,7 @@ static int __init omap_sr_probe(struct platform_device *pdev) · 896 unmodified lines
897897 ret = sr_late_init(sr_info);
898898 if (ret) {
899899 pr_warning("%s: Error in SR late init\n", __func__);
900− return ret;
900+ goto err_iounmap;
901901 }
902902 }
903903
arch/arm/mach-omap2/timer.c+1−1
@@ -270,7 +270,7 @@ static struct clocksource clocksource_gpt = { · 269 unmodified lines
270270 static u32 notrace dmtimer_read_sched_clock(void)
271271 {
272272 if (clksrc.reserved)
273− return __omap_dm_timer_read_counter(clksrc.io_base, 1);
273+ return __omap_dm_timer_read_counter(&clksrc, 1);
274274
275275 return 0;
276276 }
arch/arm/mach-omap2/vc.c+4−6
@@ -247,7 +247,7 @@ static void __init omap4_vc_init_channel(struct voltagedomain *voltdm) · 246 unmodified lines
247247 * omap_vc_i2c_init - initialize I2C interface to PMIC
248248 * @voltdm: voltage domain containing VC data
249249 *
250− * Use PMIC supplied seetings for I2C high-speed mode and
250+ * Use PMIC supplied settings for I2C high-speed mode and
251251 * master code (if set) and program the VC I2C configuration
252252 * register.
253253 *
@@ -265,8 +265,8 @@ static void __init omap_vc_i2c_init(struct voltagedomain *voltdm) · 11 unmodified lines
265265
266266 if (initialized) {
267267 if (voltdm->pmic->i2c_high_speed != i2c_high_speed)
268− pr_warn("%s: I2C config for all channels must match.",
269− __func__);
268+ pr_warn("%s: I2C config for vdd_%s does not match other channels (%u).",
269+ __func__, voltdm->name, i2c_high_speed);
270270 return;
271271 }
272272
@@ -292,9 +292,7 @@ void __init omap_vc_init_channel(struct voltagedomain *voltdm) · 19 unmodified lines
292292 u32 val;
293293
294294 if (!voltdm->pmic || !voltdm->pmic->uv_to_vsel) {
295− pr_err("%s: PMIC info requried to configure vc for"
296− "vdd_%s not populated.Hence cannot initialize vc\n",
297− __func__, voltdm->name);
295+ pr_err("%s: No PMIC info for vdd_%s\n", __func__, voltdm->name);
298296 return;
299297 }
300298
arch/arm/mach-omap2/voltagedomains3xxx_data.c+2−0
@@ -108,6 +108,7 @@ void __init omap3xxx_voltagedomains_init(void) · 107 unmodified lines
108108 * XXX Will depend on the process, validation, and binning
109109 * for the currently-running IC
110110 */
111+#ifdef CONFIG_PM_OPP
111112 if (cpu_is_omap3630()) {
112113 omap3_voltdm_mpu.volt_data = omap36xx_vddmpu_volt_data;
113114 omap3_voltdm_core.volt_data = omap36xx_vddcore_volt_data;
@@ -115,6 +116,7 @@ void __init omap3xxx_voltagedomains_init(void) · 1 unmodified line
115116 omap3_voltdm_mpu.volt_data = omap34xx_vddmpu_volt_data;
116117 omap3_voltdm_core.volt_data = omap34xx_vddcore_volt_data;
117118 }
119+#endif
118120
119121 if (cpu_is_omap3517() || cpu_is_omap3505())
120122 voltdms = voltagedomains_am35xx;
arch/arm/mach-omap2/voltagedomains44xx_data.c+2−0
@@ -100,9 +100,11 @@ void __init omap44xx_voltagedomains_init(void) · 99 unmodified lines
100100 * XXX Will depend on the process, validation, and binning
101101 * for the currently-running IC
102102 */
103+#ifdef CONFIG_PM_OPP
103104 omap4_voltdm_mpu.volt_data = omap44xx_vdd_mpu_volt_data;
104105 omap4_voltdm_iva.volt_data = omap44xx_vdd_iva_volt_data;
105106 omap4_voltdm_core.volt_data = omap44xx_vdd_core_volt_data;
107+#endif
106108
107109 for (i = 0; voltdm = voltagedomains_omap4[i], voltdm; i++)
108110 voltdm->sys_clk.name = sys_clk_name;
arch/arm/mach-omap2/vp.c+5−0
@@ -41,6 +41,11 @@ void __init omap_vp_init(struct voltagedomain *voltdm) · 40 unmodified lines
4141 u32 val, sys_clk_rate, timeout, waittime;
4242 u32 vddmin, vddmax, vstepmin, vstepmax;
4343
44+ if (!voltdm->pmic || !voltdm->pmic->uv_to_vsel) {
45+ pr_err("%s: No PMIC info for vdd_%s\n", __func__, voltdm->name);
46+ return;
47+ }
48+
4449 if (!voltdm->read || !voltdm->write) {
4550 pr_err("%s: No read/write API for accessing vdd_%s regs\n",
4651 __func__, voltdm->name);
arch/arm/mach-orion5x/common.c+3−1
@@ -29,6 +29,7 @@ · 28 unmodified lines
2929 #include <mach/hardware.h>
3030 #include <mach/orion5x.h>
3131 #include <plat/orion_nand.h>
32+#include <plat/ehci-orion.h>
3233 #include <plat/time.h>
3334 #include <plat/common.h>
3435 #include <plat/addr-map.h>
@@ -72,7 +73,8 @@ void __init orion5x_map_io(void) · 37 unmodified lines
7273 ****************************************************************************/
7374 void __init orion5x_ehci0_init(void)
7475 {
75− orion_ehci_init(ORION5X_USB0_PHYS_BASE, IRQ_ORION5X_USB0_CTRL);
76+ orion_ehci_init(ORION5X_USB0_PHYS_BASE, IRQ_ORION5X_USB0_CTRL,
77+ EHCI_PHY_ORION);
7678 }
7779
7880
arch/arm/mach-picoxcell/time.c+1−1
@@ -67,7 +67,7 @@ static void picoxcell_add_clocksource(struct device_node *source_timer) · 66 unmodified lines
6767
6868 static void __iomem *sched_io_base;
6969
70−unsigned u32 notrace picoxcell_read_sched_clock(void)
70+static u32 picoxcell_read_sched_clock(void)
7171 {
7272 return __raw_readl(sched_io_base);
7373 }
arch/arm/mach-pxa/devices.c+0−20
@@ -415,29 +415,9 @@ static struct resource pxa_rtc_resources[] = { · 414 unmodified lines
415415 },
416416 };
417417
418−static struct resource sa1100_rtc_resources[] = {
419− [0] = {
420− .start = 0x40900000,
421− .end = 0x409000ff,
422− .flags = IORESOURCE_MEM,
423− },
424− [1] = {
425− .start = IRQ_RTC1Hz,
426− .end = IRQ_RTC1Hz,
427− .flags = IORESOURCE_IRQ,
428− },
429− [2] = {
430− .start = IRQ_RTCAlrm,
431− .end = IRQ_RTCAlrm,
432− .flags = IORESOURCE_IRQ,
433− },
434−};
435−
436418 struct platform_device sa1100_device_rtc = {
437419 .name = "sa1100-rtc",
438420 .id = -1,
439− .num_resources = ARRAY_SIZE(sa1100_rtc_resources),
440− .resource = sa1100_rtc_resources,
441421 };
442422
443423 struct platform_device pxa_device_rtc = {
arch/arm/mach-pxa/pxa25x.c+0−2
@@ -209,8 +209,6 @@ static struct clk_lookup pxa25x_clkregs[] = { · 208 unmodified lines
209209 INIT_CLKREG(&clk_pxa25x_gpio11, NULL, "GPIO11_CLK"),
210210 INIT_CLKREG(&clk_pxa25x_gpio12, NULL, "GPIO12_CLK"),
211211 INIT_CLKREG(&clk_pxa25x_mem, "pxa2xx-pcmcia", NULL),
212− INIT_CLKREG(&clk_dummy, "pxa-gpio", NULL),
213− INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL),
214212 };
215213
216214 static struct clk_lookup pxa25x_hwuart_clkreg =
arch/arm/mach-pxa/pxa27x.c+0−2
@@ -230,8 +230,6 @@ static struct clk_lookup pxa27x_clkregs[] = { · 229 unmodified lines
230230 INIT_CLKREG(&clk_pxa27x_im, NULL, "IMCLK"),
231231 INIT_CLKREG(&clk_pxa27x_memc, NULL, "MEMCLK"),
232232 INIT_CLKREG(&clk_pxa27x_mem, "pxa2xx-pcmcia", NULL),
233− INIT_CLKREG(&clk_dummy, "pxa-gpio", NULL),
234− INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL),
235233 };
236234
237235 #ifdef CONFIG_PM
arch/arm/mach-pxa/pxa300.c+0−1
@@ -89,7 +89,6 @@ static DEFINE_PXA3_CKEN(gcu, PXA300_GCU, 0, 0); · 88 unmodified lines
8989 static struct clk_lookup common_clkregs[] = {
9090 INIT_CLKREG(&clk_common_nand, "pxa3xx-nand", NULL),
9191 INIT_CLKREG(&clk_gcu, "pxa3xx-gcu", NULL),
92− INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL),
9392 };
9493
9594 static DEFINE_PXA3_CKEN(pxa310_mmc3, MMC3, 19500000, 0);
arch/arm/mach-pxa/pxa320.c+0−1
@@ -83,7 +83,6 @@ static DEFINE_PXA3_CKEN(gcu, PXA320_GCU, 0, 0); · 82 unmodified lines
8383 static struct clk_lookup pxa320_clkregs[] = {
8484 INIT_CLKREG(&clk_pxa320_nand, "pxa3xx-nand", NULL),
8585 INIT_CLKREG(&clk_gcu, "pxa3xx-gcu", NULL),
86− INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL),
8786 };
8887
8988 static int __init pxa320_init(void)
arch/arm/mach-pxa/pxa3xx.c+0−1
@@ -67,7 +67,6 @@ static struct clk_lookup pxa3xx_clkregs[] = { · 66 unmodified lines
6767 INIT_CLKREG(&clk_pxa3xx_pout, NULL, "CLK_POUT"),
6868 /* Power I2C clock is always on */
6969 INIT_CLKREG(&clk_dummy, "pxa3xx-pwri2c.1", NULL),
70− INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL),
7170 INIT_CLKREG(&clk_pxa3xx_lcd, "pxa2xx-fb", NULL),
7271 INIT_CLKREG(&clk_pxa3xx_camera, NULL, "CAMCLK"),
7372 INIT_CLKREG(&clk_pxa3xx_ac97, NULL, "AC97CLK"),
arch/arm/mach-pxa/pxa95x.c+0−1
@@ -217,7 +217,6 @@ static struct clk_lookup pxa95x_clkregs[] = { · 216 unmodified lines
217217 INIT_CLKREG(&clk_pxa95x_pout, NULL, "CLK_POUT"),
218218 /* Power I2C clock is always on */
219219 INIT_CLKREG(&clk_dummy, "pxa3xx-pwri2c.1", NULL),
220− INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL),
221220 INIT_CLKREG(&clk_pxa95x_lcd, "pxa2xx-fb", NULL),
222221 INIT_CLKREG(&clk_pxa95x_ffuart, "pxa2xx-uart.0", NULL),
223222 INIT_CLKREG(&clk_pxa95x_btuart, "pxa2xx-uart.1", NULL),
arch/arm/mach-realview/hotplug.c+1−0
@@ -13,6 +13,7 @@ · 12 unmodified lines
1313 #include <linux/smp.h>
1414
1515 #include <asm/cacheflush.h>
16+#include <asm/smp_plat.h>
1617
1718 extern volatile int pen_release;
1819
arch/arm/mach-realview/include/mach/board-eb.h+10−8
@@ -47,21 +47,23 @@ · 46 unmodified lines
4747 #define REALVIEW_EB_USB_BASE 0x4F000000 /* USB */
4848
4949 #ifdef CONFIG_REALVIEW_EB_ARM11MP_REVB
50−#define REALVIEW_EB11MP_SCU_BASE 0x10100000 /* SCU registers */
51−#define REALVIEW_EB11MP_GIC_CPU_BASE 0x10100100 /* Generic interrupt controller CPU interface */
52−#define REALVIEW_EB11MP_TWD_BASE 0x10100600
53−#define REALVIEW_EB11MP_GIC_DIST_BASE 0x10101000 /* Generic interrupt controller distributor */
50+#define REALVIEW_EB11MP_PRIV_MEM_BASE 0x1F000000
5451 #define REALVIEW_EB11MP_L220_BASE 0x10102000 /* L220 registers */
5552 #define REALVIEW_EB11MP_SYS_PLD_CTRL1 0xD8 /* Register offset for MPCore sysctl */
5653 #else
57−#define REALVIEW_EB11MP_SCU_BASE 0x1F000000 /* SCU registers */
58−#define REALVIEW_EB11MP_GIC_CPU_BASE 0x1F000100 /* Generic interrupt controller CPU interface */
59−#define REALVIEW_EB11MP_TWD_BASE 0x1F000600
60−#define REALVIEW_EB11MP_GIC_DIST_BASE 0x1F001000 /* Generic interrupt controller distributor */
54+#define REALVIEW_EB11MP_PRIV_MEM_BASE 0x1F000000
6155 #define REALVIEW_EB11MP_L220_BASE 0x1F002000 /* L220 registers */
6256 #define REALVIEW_EB11MP_SYS_PLD_CTRL1 0x74 /* Register offset for MPCore sysctl */
6357 #endif
6458
59+#define REALVIEW_EB11MP_PRIV_MEM_SIZE SZ_8K
60+#define REALVIEW_EB11MP_PRIV_MEM_OFF(x) (REALVIEW_EB11MP_PRIV_MEM_BASE + (x))
61+
62+#define REALVIEW_EB11MP_SCU_BASE REALVIEW_EB11MP_PRIV_MEM_OFF(0) /* SCU registers */
63+#define REALVIEW_EB11MP_GIC_CPU_BASE REALVIEW_EB11MP_PRIV_MEM_OFF(0x0100) /* Generic interrupt controller CPU interface */
64+#define REALVIEW_EB11MP_TWD_BASE REALVIEW_EB11MP_PRIV_MEM_OFF(0x0600)
65+#define REALVIEW_EB11MP_GIC_DIST_BASE REALVIEW_EB11MP_PRIV_MEM_OFF(0x1000) /* Generic interrupt controller distributor */
66+
6567 /*
6668 * Core tile identification (REALVIEW_SYS_PROCID)
6769 */
arch/arm/mach-realview/include/mach/board-pb11mp.h+2−0
@@ -75,6 +75,8 @@ · 74 unmodified lines
7575 /*
7676 * Testchip peripheral and fpga gic regions
7777 */
78+#define REALVIEW_TC11MP_PRIV_MEM_BASE 0x1F000000
79+#define REALVIEW_TC11MP_PRIV_MEM_SIZE SZ_8K
7880 #define REALVIEW_TC11MP_SCU_BASE 0x1F000000 /* IRQ, Test chip */
7981 #define REALVIEW_TC11MP_GIC_CPU_BASE 0x1F000100 /* Test chip interrupt controller CPU interface */
8082 #define REALVIEW_TC11MP_TWD_BASE 0x1F000600
arch/arm/mach-realview/platsmp.c+1−2
@@ -17,7 +17,6 @@ · 16 unmodified lines
1717 #include <asm/hardware/gic.h>
1818 #include <asm/mach-types.h>
1919 #include <asm/smp_scu.h>
20−#include <asm/unified.h>
2120
2221 #include <mach/board-eb.h>
2322 #include <mach/board-pb11mp.h>
@@ -75,6 +74,6 @@ void __init platform_smp_prepare_cpus(unsigned int max_cpus) · 51 unmodified lines
7574 * until it receives a soft interrupt, and then the
7675 * secondary CPU branches to this address.
7776 */
78− __raw_writel(BSYM(virt_to_phys(versatile_secondary_startup)),
77+ __raw_writel(virt_to_phys(versatile_secondary_startup),
7978 __io_address(REALVIEW_SYS_FLAGSSET));
8079 }
arch/arm/mach-realview/realview_eb.c+3−8
@@ -91,14 +91,9 @@ static struct map_desc realview_eb_io_desc[] __initdata = { · 90 unmodified lines
9191
9292 static struct map_desc realview_eb11mp_io_desc[] __initdata = {
9393 {
94− .virtual = IO_ADDRESS(REALVIEW_EB11MP_SCU_BASE),
95− .pfn = __phys_to_pfn(REALVIEW_EB11MP_SCU_BASE),
96− .length = SZ_4K,
97− .type = MT_DEVICE,
98− }, {
99− .virtual = IO_ADDRESS(REALVIEW_EB11MP_GIC_DIST_BASE),
100− .pfn = __phys_to_pfn(REALVIEW_EB11MP_GIC_DIST_BASE),
101− .length = SZ_4K,
94+ .virtual = IO_ADDRESS(REALVIEW_EB11MP_PRIV_MEM_BASE),
95+ .pfn = __phys_to_pfn(REALVIEW_EB11MP_PRIV_MEM_BASE),
96+ .length = REALVIEW_EB11MP_PRIV_MEM_SIZE,
10297 .type = MT_DEVICE,
10398 }, {
10499 .virtual = IO_ADDRESS(REALVIEW_EB11MP_L220_BASE),
arch/arm/mach-realview/realview_pb11mp.c+4−9
@@ -64,15 +64,10 @@ static struct map_desc realview_pb11mp_io_desc[] __initdata = { · 63 unmodified lines
6464 .pfn = __phys_to_pfn(REALVIEW_PB11MP_GIC_DIST_BASE),
6565 .length = SZ_4K,
6666 .type = MT_DEVICE,
67− }, {
68− .virtual = IO_ADDRESS(REALVIEW_TC11MP_GIC_CPU_BASE),
69− .pfn = __phys_to_pfn(REALVIEW_TC11MP_GIC_CPU_BASE),
70− .length = SZ_4K,
71− .type = MT_DEVICE,
72− }, {
73− .virtual = IO_ADDRESS(REALVIEW_TC11MP_GIC_DIST_BASE),
74− .pfn = __phys_to_pfn(REALVIEW_TC11MP_GIC_DIST_BASE),
75− .length = SZ_4K,
67+ }, { /* Maps the SCU, GIC CPU interface, TWD, GIC DIST */
68+ .virtual = IO_ADDRESS(REALVIEW_TC11MP_PRIV_MEM_BASE),
69+ .pfn = __phys_to_pfn(REALVIEW_TC11MP_PRIV_MEM_BASE),
70+ .length = REALVIEW_TC11MP_PRIV_MEM_SIZE,
7671 .type = MT_DEVICE,
7772 }, {
7873 .virtual = IO_ADDRESS(REALVIEW_SCTL_BASE),
arch/arm/mach-s3c2410/cpu-freq.c+5−3
@@ -115,7 +115,8 @@ static struct s3c_cpufreq_info s3c2410_cpufreq_info = { · 114 unmodified lines
115115 .debug_io_show = s3c_cpufreq_debugfs_call(s3c2410_iotiming_debugfs),
116116 };
117117
118−static int s3c2410_cpufreq_add(struct device *dev)
118+static int s3c2410_cpufreq_add(struct device *dev,
119+ struct subsys_interface *sif)
119120 {
120121 return s3c_cpufreq_register(&s3c2410_cpufreq_info);
121122 }
@@ -133,7 +134,8 @@ static int __init s3c2410_cpufreq_init(void) · 11 unmodified lines
133134
134135 arch_initcall(s3c2410_cpufreq_init);
135136
136−static int s3c2410a_cpufreq_add(struct device *dev)
137+static int s3c2410a_cpufreq_add(struct device *dev,
138+ struct subsys_interface *sif)
137139 {
138140 /* alter the maximum freq settings for S3C2410A. If a board knows
139141 * it only has a maximum of 200, then it should register its own
@@ -144,7 +146,7 @@ static int s3c2410a_cpufreq_add(struct device *dev) · 4 unmodified lines
144146 s3c2410_cpufreq_info.max.pclk = 66500000;
145147 s3c2410_cpufreq_info.name = "s3c2410a";
146148
147− return s3c2410_cpufreq_add(dev);
149+ return s3c2410_cpufreq_add(dev, sif);
148150 }
149151
150152 static struct subsys_interface s3c2410a_cpufreq_interface = {
arch/arm/mach-s3c2410/dma.c+3−2
@@ -132,7 +132,8 @@ static struct s3c24xx_dma_order __initdata s3c2410_dma_order = { · 131 unmodified lines
132132 },
133133 };
134134
135−static int __init s3c2410_dma_add(struct device *dev)
135+static int __init s3c2410_dma_add(struct device *dev,
136+ struct subsys_interface *sif)
136137 {
137138 s3c2410_dma_init();
138139 s3c24xx_dma_order_set(&s3c2410_dma_order);
@@ -148,7 +149,7 @@ static struct subsys_interface s3c2410_dma_interface = { · 9 unmodified lines
148149
149150 static int __init s3c2410_dma_drvinit(void)
150151 {
151− return subsys_interface_register(&s3c2410_interface);
152+ return subsys_interface_register(&s3c2410_dma_interface);
152153 }
153154
154155 arch_initcall(s3c2410_dma_drvinit);
arch/arm/mach-s3c2410/pll.c+1−1
@@ -66,7 +66,7 @@ static struct cpufreq_frequency_table pll_vals_12MHz[] = { · 65 unmodified lines
6666 { .frequency = 270000000, .index = PLLVAL(127, 1, 1), },
6767 };
6868
69−static int s3c2410_plls_add(struct device *dev)
69+static int s3c2410_plls_add(struct device *dev, struct subsys_interface *sif)
7070 {
7171 return s3c_plltab_register(pll_vals_12MHz, ARRAY_SIZE(pll_vals_12MHz));
7272 }
arch/arm/mach-s3c2410/pm.c+1−1
@@ -111,7 +111,7 @@ struct syscore_ops s3c2410_pm_syscore_ops = { · 110 unmodified lines
111111 .resume = s3c2410_pm_resume,
112112 };
113113
114−static int s3c2410_pm_add(struct device *dev)
114+static int s3c2410_pm_add(struct device *dev, struct subsys_interface *sif)
115115 {
116116 pm_cpu_prep = s3c2410_pm_prepare;
117117 pm_cpu_sleep = s3c2410_cpu_suspend;
arch/arm/mach-s3c2412/cpu-freq.c+2−1
@@ -194,7 +194,8 @@ static struct s3c_cpufreq_info s3c2412_cpufreq_info = { · 193 unmodified lines
194194 .debug_io_show = s3c_cpufreq_debugfs_call(s3c2412_iotiming_debugfs),
195195 };
196196
197−static int s3c2412_cpufreq_add(struct device *dev)
197+static int s3c2412_cpufreq_add(struct device *dev,
198+ struct subsys_interface *sif)
198199 {
199200 unsigned long fclk_rate;
200201
arch/arm/mach-s3c2412/dma.c+2−1
@@ -159,7 +159,8 @@ static struct s3c24xx_dma_selection __initdata s3c2412_dma_sel = { · 158 unmodified lines
159159 .map_size = ARRAY_SIZE(s3c2412_dma_mappings),
160160 };
161161
162−static int __init s3c2412_dma_add(struct device *dev)
162+static int __init s3c2412_dma_add(struct device *dev,
163+ struct subsys_interface *sif)
163164 {
164165 s3c2410_dma_init();
165166 return s3c24xx_dma_init_map(&s3c2412_dma_sel);
arch/arm/mach-s3c2412/irq.c+1−1
@@ -170,7 +170,7 @@ static int s3c2412_irq_rtc_wake(struct irq_data *data, unsigned int state) · 169 unmodified lines
170170
171171 static struct irq_chip s3c2412_irq_rtc_chip;
172172
173−static int s3c2412_irq_add(struct device *dev)
173+static int s3c2412_irq_add(struct device *dev, struct subsys_interface *sif)
174174 {
175175 unsigned int irqno;
176176
arch/arm/mach-s3c2412/pm.c+1−1
@@ -56,7 +56,7 @@ static void s3c2412_pm_prepare(void) · 55 unmodified lines
5656 {
5757 }
5858
59−static int s3c2412_pm_add(struct device *dev)
59+static int s3c2412_pm_add(struct device *dev, struct subsys_interface *sif)
6060 {
6161 pm_cpu_prep = s3c2412_pm_prepare;
6262 pm_cpu_sleep = s3c2412_cpu_suspend;
arch/arm/mach-s3c2416/irq.c+2−1
@@ -213,7 +213,8 @@ static int __init s3c2416_add_sub(unsigned int base, · 212 unmodified lines
213213 return 0;
214214 }
215215
216−static int __init s3c2416_irq_add(struct device *dev)
216+static int __init s3c2416_irq_add(struct device *dev,
217+ struct subsys_interface *sif)
217218 {
218219 printk(KERN_INFO "S3C2416: IRQ Support\n");
219220
arch/arm/mach-s3c2416/pm.c+1−1
@@ -48,7 +48,7 @@ static void s3c2416_pm_prepare(void) · 47 unmodified lines
4848 __raw_writel(virt_to_phys(s3c_cpu_resume), S3C2412_INFORM1);
4949 }
5050
51−static int s3c2416_pm_add(struct device *dev)
51+static int s3c2416_pm_add(struct device *dev, struct subsys_interface *sif)
5252 {
5353 pm_cpu_prep = s3c2416_pm_prepare;
5454 pm_cpu_sleep = s3c2416_cpu_suspend;
arch/arm/mach-s3c2440/clock.c+1−1
@@ -149,7 +149,7 @@ static struct clk_lookup s3c2440_clk_lookup[] = { · 148 unmodified lines
149149 CLKDEV_INIT(NULL, "clk_uart_baud3", &s3c2440_clk_fclk_n),
150150 };
151151
152−static int s3c2440_clk_add(struct device *dev)
152+static int s3c2440_clk_add(struct device *dev, struct subsys_interface *sif)
153153 {
154154 struct clk *clock_upll;
155155 struct clk *clock_h;
arch/arm/mach-s3c2440/dma.c+2−1
@@ -174,7 +174,8 @@ static struct s3c24xx_dma_order __initdata s3c2440_dma_order = { · 173 unmodified lines
174174 },
175175 };
176176
177−static int __init s3c2440_dma_add(struct device *dev)
177+static int __init s3c2440_dma_add(struct device *dev,
178+ struct subsys_interface *sif)
178179 {
179180 s3c2410_dma_init();
180181 s3c24xx_dma_order_set(&s3c2440_dma_order);
arch/arm/mach-s3c2440/irq.c+1−1
@@ -92,7 +92,7 @@ static struct irq_chip s3c_irq_wdtac97 = { · 91 unmodified lines
9292 .irq_ack = s3c_irq_wdtac97_ack,
9393 };
9494
95−static int s3c2440_irq_add(struct device *dev)
95+static int s3c2440_irq_add(struct device *dev, struct subsys_interface *sif)
9696 {
9797 unsigned int irqno;
9898
arch/arm/mach-s3c2440/s3c2440-cpufreq.c+2−1
@@ -270,7 +270,8 @@ struct s3c_cpufreq_info s3c2440_cpufreq_info = { · 269 unmodified lines
270270 .debug_io_show = s3c_cpufreq_debugfs_call(s3c2410_iotiming_debugfs),
271271 };
272272
273−static int s3c2440_cpufreq_add(struct device *dev)
273+static int s3c2440_cpufreq_add(struct device *dev,
274+ struct subsys_interface *sif)
274275 {
275276 xtal = s3c_cpufreq_clk_get(NULL, "xtal");
276277 hclk = s3c_cpufreq_clk_get(NULL, "hclk");
arch/arm/mach-s3c2440/s3c2440-pll-12000000.c+1−1
@@ -51,7 +51,7 @@ static struct cpufreq_frequency_table s3c2440_plls_12[] __initdata = { · 50 unmodified lines
5151 { .frequency = 400000000, .index = PLLVAL(0x5c, 1, 1), }, /* FVco 800.000000 */
5252 };
5353
54−static int s3c2440_plls12_add(struct device *dev)
54+static int s3c2440_plls12_add(struct device *dev, struct subsys_interface *sif)
5555 {
5656 struct clk *xtal_clk;
5757 unsigned long xtal;
arch/arm/mach-s3c2440/s3c2440-pll-16934400.c+2−1
@@ -79,7 +79,8 @@ static struct cpufreq_frequency_table s3c2440_plls_169344[] __initdata = { · 78 unmodified lines
7979 { .frequency = 402192000, .index = PLLVAL(87, 2, 1), }, /* FVco 804.384000 */
8080 };
8181
82−static int s3c2440_plls169344_add(struct device *dev)
82+static int s3c2440_plls169344_add(struct device *dev,
83+ struct subsys_interface *sif)
8384 {
8485 struct clk *xtal_clk;
8586 unsigned long xtal;
arch/arm/mach-s3c2440/s3c2442.c+1−1
@@ -122,7 +122,7 @@ static struct clk s3c2442_clk_cam_upll = { · 121 unmodified lines
122122 },
123123 };
124124
125−static int s3c2442_clk_add(struct device *dev)
125+static int s3c2442_clk_add(struct device *dev, struct subsys_interface *sif)
126126 {
127127 struct clk *clock_upll;
128128 struct clk *clock_h;
arch/arm/mach-s3c2440/s3c244x-clock.c+1−1
@@ -72,7 +72,7 @@ static struct clk clk_arm = { · 71 unmodified lines
7272 },
7373 };
7474
75−static int s3c244x_clk_add(struct device *dev)
75+static int s3c244x_clk_add(struct device *dev, struct subsys_interface *sif)
7676 {
7777 unsigned long camdivn = __raw_readl(S3C2440_CAMDIVN);
7878 unsigned long clkdivn;
arch/arm/mach-s3c2440/s3c244x-irq.c+1−1
@@ -91,7 +91,7 @@ static struct irq_chip s3c_irq_cam = { · 90 unmodified lines
9191 .irq_ack = s3c_irq_cam_ack,
9292 };
9393
94−static int s3c244x_irq_add(struct device *dev)
94+static int s3c244x_irq_add(struct device *dev, struct subsys_interface *sif)
9595 {
9696 unsigned int irqno;
9797
arch/arm/mach-s3c2443/dma.c+2−1
@@ -135,7 +135,8 @@ static struct s3c24xx_dma_selection __initdata s3c2443_dma_sel = { · 134 unmodified lines
135135 .map_size = ARRAY_SIZE(s3c2443_dma_mappings),
136136 };
137137
138−static int __init s3c2443_dma_add(struct device *dev)
138+static int __init s3c2443_dma_add(struct device *dev,
139+ struct subsys_interface *sif)
139140 {
140141 s3c24xx_dma_init(6, IRQ_S3C2443_DMA0, 0x100);
141142 return s3c24xx_dma_init_map(&s3c2443_dma_sel);
arch/arm/mach-s3c2443/irq.c+2−1
@@ -241,7 +241,8 @@ static int __init s3c2443_add_sub(unsigned int base, · 240 unmodified lines
241241 return 0;
242242 }
243243
244−static int __init s3c2443_irq_add(struct device *dev)
244+static int __init s3c2443_irq_add(struct device *dev,
245+ struct subsys_interface *sif)
245246 {
246247 printk("S3C2443: IRQ Support\n");
247248
arch/arm/mach-s3c64xx/clock.c+5−0
@@ -138,6 +138,11 @@ static struct clk init_clocks_off[] = { · 137 unmodified lines
138138 .ctrlbit = S3C_CLKCON_PCLK_TSADC,
139139 }, {
140140 .name = "i2c",
141+#ifdef CONFIG_S3C_DEV_I2C1
142+ .devname = "s3c2440-i2c.0",
143+#else
144+ .devname = "s3c2440-i2c",
145+#endif
141146 .parent = &clk_p,
142147 .enable = s3c64xx_pclk_ctrl,
143148 .ctrlbit = S3C_CLKCON_PCLK_IIC,
arch/arm/mach-s3c64xx/common.c+1−1
@@ -49,7 +49,7 @@ · 48 unmodified lines
4949
5050 /* uart registration process */
5151
52−void __init s3c64xx_init_uarts(struct s3c2410_uartcfg *cfg, int no)
52+static void __init s3c64xx_init_uarts(struct s3c2410_uartcfg *cfg, int no)
5353 {
5454 s3c24xx_init_uartdevs("s3c6400-uart", s3c64xx_uart_resources, cfg, no);
5555 }
arch/arm/mach-s3c64xx/include/mach/crag6410.h+1−0
@@ -21,5 +21,6 @@ · 20 unmodified lines
2121 #define CODEC_GPIO_BASE (GPIO_BOARD_START + 8)
2222 #define GLENFARCLAS_PMIC_GPIO_BASE (GPIO_BOARD_START + 32)
2323 #define BANFF_PMIC_GPIO_BASE (GPIO_BOARD_START + 64)
24+#define MMGPIO_GPIO_BASE (GPIO_BOARD_START + 96)
2425
2526 #endif
arch/arm/mach-s3c64xx/mach-crag6410.c+3−10
@@ -260,6 +260,7 @@ static struct platform_device crag6410_dm9k_device = { · 259 unmodified lines
260260
261261 static struct resource crag6410_mmgpio_resource[] = {
262262 [0] = {
263+ .name = "dat",
263264 .start = S3C64XX_PA_XM0CSN4 + 1,
264265 .end = S3C64XX_PA_XM0CSN4 + 1,
265266 .flags = IORESOURCE_MEM,
@@ -272,7 +273,7 @@ static struct platform_device crag6410_mmgpio = { · 6 unmodified lines
272273 .resource = crag6410_mmgpio_resource,
273274 .num_resources = ARRAY_SIZE(crag6410_mmgpio_resource),
274275 .dev.platform_data = &(struct bgpio_pdata) {
275− .base = -1,
276+ .base = MMGPIO_GPIO_BASE,
276277 },
277278 };
278279
@@ -328,7 +329,6 @@ static struct platform_device wallvdd_device = { · 49 unmodified lines
328329
329330 static struct platform_device *crag6410_devices[] __initdata = {
330331 &s3c_device_hsmmc0,
331− &s3c_device_hsmmc1,
332332 &s3c_device_hsmmc2,
333333 &s3c_device_i2c0,
334334 &s3c_device_i2c1,
@@ -355,7 +355,7 @@ static struct platform_device *crag6410_devices[] __initdata = { · 20 unmodified lines
355355
356356 static struct pca953x_platform_data crag6410_pca_data = {
357357 .gpio_base = PCA935X_GPIO_BASE,
358− .irq_base = 0,
358+ .irq_base = -1,
359359 };
360360
361361 /* VDDARM is controlled by DVS1 connected to GPK(0) */
@@ -683,12 +683,6 @@ static struct s3c_sdhci_platdata crag6410_hsmmc2_pdata = { · 321 unmodified lines
683683 .cd_type = S3C_SDHCI_CD_PERMANENT,
684684 };
685685
686−static struct s3c_sdhci_platdata crag6410_hsmmc1_pdata = {
687− .max_width = 4,
688− .cd_type = S3C_SDHCI_CD_GPIO,
689− .ext_cd_gpio = S3C64XX_GPF(11),
690−};
691−
692686 static void crag6410_cfg_sdhci0(struct platform_device *dev, int width)
693687 {
694688 /* Set all the necessary GPG pins to special-function 2 */
@@ -723,7 +717,6 @@ static void __init crag6410_machine_init(void) · 28 unmodified lines
723717 gpio_direction_output(S3C64XX_GPF(10), 1);
724718
725719 s3c_sdhci0_set_platdata(&crag6410_hsmmc0_pdata);
726− s3c_sdhci1_set_platdata(&crag6410_hsmmc1_pdata);
727720 s3c_sdhci2_set_platdata(&crag6410_hsmmc2_pdata);
728721
729722 s3c_i2c0_set_platdata(&i2c0_pdata);
arch/arm/mach-s3c64xx/pm.c+0−13
@@ -346,23 +346,10 @@ int __init s3c64xx_pm_init(void) · 345 unmodified lines
346346
347347 static __init int s3c64xx_pm_initcall(void)
348348 {
349− u32 val;
350−
351349 pm_cpu_prep = s3c64xx_pm_prepare;
352350 pm_cpu_sleep = s3c64xx_cpu_suspend;
353351 pm_uart_udivslot = 1;
354352
355− /*
356− * Unconditionally disable power domains that contain only
357− * blocks which have no mainline driver support.
358− */
359− val = __raw_readl(S3C64XX_NORMAL_CFG);
360− val &= ~(S3C64XX_NORMALCFG_DOMAIN_G_ON |
361− S3C64XX_NORMALCFG_DOMAIN_V_ON |
362− S3C64XX_NORMALCFG_DOMAIN_I_ON |
363− S3C64XX_NORMALCFG_DOMAIN_P_ON);
364− __raw_writel(val, S3C64XX_NORMAL_CFG);
365−
366353 #ifdef CONFIG_S3C_PM_DEBUG_LED_SMDK
367354 gpio_request(S3C64XX_GPN(12), "DEBUG_LED0");
368355 gpio_request(S3C64XX_GPN(13), "DEBUG_LED1");
arch/arm/mach-s5p64x0/pm.c+1−1
@@ -160,7 +160,7 @@ static void s5p64x0_pm_prepare(void) · 159 unmodified lines
160160
161161 }
162162
163−static int s5p64x0_pm_add(struct device *dev)
163+static int s5p64x0_pm_add(struct device *dev, struct subsys_interface *sif)
164164 {
165165 pm_cpu_prep = s5p64x0_pm_prepare;
166166 pm_cpu_sleep = s5p64x0_cpu_suspend;
arch/arm/mach-s5pv210/clock.c+2−2
@@ -175,7 +175,7 @@ static int s5pv210_clk_mask1_ctrl(struct clk *clk, int enable) · 174 unmodified lines
175175 return s5p_gatectrl(S5P_CLK_SRC_MASK1, clk, enable);
176176 }
177177
178−static int exynos4_clk_hdmiphy_ctrl(struct clk *clk, int enable)
178+static int s5pv210_clk_hdmiphy_ctrl(struct clk *clk, int enable)
179179 {
180180 return s5p_gatectrl(S5P_HDMI_PHY_CONTROL, clk, enable);
181181 }
@@ -372,7 +372,7 @@ static struct clk init_clocks_off[] = { · 190 unmodified lines
372372 }, {
373373 .name = "hdmiphy",
374374 .devname = "s5pv210-hdmi",
375− .enable = exynos4_clk_hdmiphy_ctrl,
375+ .enable = s5pv210_clk_hdmiphy_ctrl,
376376 .ctrlbit = (1 << 0),
377377 }, {
378378 .name = "dacphy",
arch/arm/mach-s5pv210/pm.c+1−1
@@ -133,7 +133,7 @@ static void s5pv210_pm_prepare(void) · 132 unmodified lines
133133 s3c_pm_do_save(s5pv210_core_save, ARRAY_SIZE(s5pv210_core_save));
134134 }
135135
136−static int s5pv210_pm_add(struct device *dev)
136+static int s5pv210_pm_add(struct device *dev, struct subsys_interface *sif)
137137 {
138138 pm_cpu_prep = s5pv210_pm_prepare;
139139 pm_cpu_sleep = s5pv210_cpu_suspend;
arch/arm/mach-sa1100/assabet.c+0−12
@@ -202,7 +202,6 @@ static struct irda_platform_data assabet_irda_data = { · 201 unmodified lines
202202 static struct mcp_plat_data assabet_mcp_data = {
203203 .mccr0 = MCCR0_ADM,
204204 .sclk_rate = 11981000,
205− .codec = "ucb1x00",
206205 };
207206
208207 static void __init assabet_init(void)
@@ -253,17 +252,6 @@ static void __init assabet_init(void) · 44 unmodified lines
253252 sa11x0_register_mtd(&assabet_flash_data, assabet_flash_resources,
254253 ARRAY_SIZE(assabet_flash_resources));
255254 sa11x0_register_irda(&assabet_irda_data);
256−
257− /*
258− * Setup the PPC unit correctly.
259− */
260− PPDR &= ~PPC_RXD4;
261− PPDR |= PPC_TXD4 | PPC_SCLK | PPC_SFRM;
262− PSDR |= PPC_RXD4;
263− PSDR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
264− PPSR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
265−
266− ASSABET_BCR_set(ASSABET_BCR_CODEC_RST);
267255 sa11x0_register_mcp(&assabet_mcp_data);
268256 }
269257
arch/arm/mach-sa1100/cerf.c+0−11
@@ -124,23 +124,12 @@ static void __init cerf_map_io(void) · 123 unmodified lines
124124 static struct mcp_plat_data cerf_mcp_data = {
125125 .mccr0 = MCCR0_ADM,
126126 .sclk_rate = 11981000,
127− .codec = "ucb1x00",
128127 };
129128
130129 static void __init cerf_init(void)
131130 {
132131 platform_add_devices(cerf_devices, ARRAY_SIZE(cerf_devices));
133132 sa11x0_register_mtd(&cerf_flash_data, &cerf_flash_resource, 1);
134−
135− /*
136− * Setup the PPC unit correctly.
137− */
138− PPDR &= ~PPC_RXD4;
139− PPDR |= PPC_TXD4 | PPC_SCLK | PPC_SFRM;
140− PSDR |= PPC_RXD4;
141− PSDR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
142− PPSR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
143−
144133 sa11x0_register_mcp(&cerf_mcp_data);
145134 }
146135
arch/arm/mach-sa1100/clock.c+25−66
@@ -11,39 +11,17 @@ · 10 unmodified lines
1111 #include <linux/clk.h>
1212 #include <linux/spinlock.h>
1313 #include <linux/mutex.h>
14−#include <linux/io.h>
15−#include <linux/clkdev.h>
1614
1715 #include <mach/hardware.h>
1816
19−struct clkops {
20− void (*enable)(struct clk *);
21− void (*disable)(struct clk *);
22− unsigned long (*getrate)(struct clk *);
23−};
24−
17+/*
18+ * Very simple clock implementation - we only have one clock to deal with.
19+ */
2520 struct clk {
26− const struct clkops *ops;
27− unsigned long rate;
2821 unsigned int enabled;
2922 };
3023
31−#define INIT_CLKREG(_clk, _devname, _conname) \
32− { \
33− .clk = _clk, \
34− .dev_id = _devname, \
35− .con_id = _conname, \
36− }
37−
38−#define DEFINE_CLK(_name, _ops, _rate) \
39−struct clk clk_##_name = { \
40− .ops = _ops, \
41− .rate = _rate, \
42− }
43−
44−static DEFINE_SPINLOCK(clocks_lock);
45−
46−static void clk_gpio27_enable(struct clk *clk)
24+static void clk_gpio27_enable(void)
4725 {
4826 /*
4927 * First, set up the 3.6864MHz clock on GPIO 27 for the SA-1111:
@@ -54,22 +32,38 @@ static void clk_gpio27_enable(struct clk *clk) · 4 unmodified lines
5432 TUCR = TUCR_3_6864MHz;
5533 }
5634
57−static void clk_gpio27_disable(struct clk *clk)
35+static void clk_gpio27_disable(void)
5836 {
5937 TUCR = 0;
6038 GPDR &= ~GPIO_32_768kHz;
6139 GAFR &= ~GPIO_32_768kHz;
6240 }
6341
42+static struct clk clk_gpio27;
43+
44+static DEFINE_SPINLOCK(clocks_lock);
45+
46+struct clk *clk_get(struct device *dev, const char *id)
47+{
48+ const char *devname = dev_name(dev);
49+
50+ return strcmp(devname, "sa1111.0") ? ERR_PTR(-ENOENT) : &clk_gpio27;
51+}
52+EXPORT_SYMBOL(clk_get);
53+
54+void clk_put(struct clk *clk)
55+{
56+}
57+EXPORT_SYMBOL(clk_put);
58+
6459 int clk_enable(struct clk *clk)
6560 {
6661 unsigned long flags;
6762
6863 spin_lock_irqsave(&clocks_lock, flags);
6964 if (clk->enabled++ == 0)
70− clk->ops->enable(clk);
65+ clk_gpio27_enable();
7166 spin_unlock_irqrestore(&clocks_lock, flags);
72−
7367 return 0;
7468 }
7569 EXPORT_SYMBOL(clk_enable);
@@ -82,48 +76,13 @@ void clk_disable(struct clk *clk) · 6 unmodified lines
8276
8377 spin_lock_irqsave(&clocks_lock, flags);
8478 if (--clk->enabled == 0)
85− clk->ops->disable(clk);
79+ clk_gpio27_disable();
8680 spin_unlock_irqrestore(&clocks_lock, flags);
8781 }
8882 EXPORT_SYMBOL(clk_disable);
8983
9084 unsigned long clk_get_rate(struct clk *clk)
9185 {
92− unsigned long rate;
93−
94− rate = clk->rate;
95− if (clk->ops->getrate)
96− rate = clk->ops->getrate(clk);
97−
98− return rate;
86+ return 3686400;
9987 }
10088 EXPORT_SYMBOL(clk_get_rate);
101−
102−const struct clkops clk_gpio27_ops = {
103− .enable = clk_gpio27_enable,
104− .disable = clk_gpio27_disable,
105−};
106−
107−static void clk_dummy_enable(struct clk *clk) { }
108−static void clk_dummy_disable(struct clk *clk) { }
109−
110−const struct clkops clk_dummy_ops = {
111− .enable = clk_dummy_enable,
112− .disable = clk_dummy_disable,
113−};
114−
115−static DEFINE_CLK(gpio27, &clk_gpio27_ops, 3686400);
116−static DEFINE_CLK(dummy, &clk_dummy_ops, 0);
117−
118−static struct clk_lookup sa11xx_clkregs[] = {
119− INIT_CLKREG(&clk_gpio27, "sa1111.0", NULL),
120− INIT_CLKREG(&clk_dummy, "sa1100-rtc", NULL),
121−};
122−
123−static int __init sa11xx_clk_init(void)
124−{
125− clkdev_add_table(sa11xx_clkregs, ARRAY_SIZE(sa11xx_clkregs));
126− return 0;
127−}
128−
129−postcore_initcall(sa11xx_clk_init);
arch/arm/mach-sa1100/collie.c+3−20
@@ -27,7 +27,6 @@ · 26 unmodified lines
2727 #include <linux/timer.h>
2828 #include <linux/gpio.h>
2929 #include <linux/pda_power.h>
30−#include <linux/mfd/ucb1x00.h>
3130
3231 #include <mach/hardware.h>
3332 #include <asm/mach-types.h>
@@ -86,15 +85,10 @@ static struct scoop_pcmcia_config collie_pcmcia_config = { · 52 unmodified lines
8685 .num_devs = 1,
8786 };
8887
89−static struct ucb1x00_plat_data collie_ucb1x00_data = {
90− .gpio_base = COLLIE_TC35143_GPIO_BASE,
91−};
92−
9388 static struct mcp_plat_data collie_mcp_data = {
9489 .mccr0 = MCCR0_ADM | MCCR0_ExtClk,
9590 .sclk_rate = 9216000,
96− .codec = "ucb1x00",
97− .codec_pdata = &collie_ucb1x00_data,
91+ .gpio_base = COLLIE_TC35143_GPIO_BASE,
9892 };
9993
10094 /*
@@ -144,8 +138,6 @@ static struct pda_power_pdata collie_power_data = { · 43 unmodified lines
144138 static struct resource collie_power_resource[] = {
145139 {
146140 .name = "ac",
147− .start = gpio_to_irq(COLLIE_GPIO_AC_IN),
148− .end = gpio_to_irq(COLLIE_GPIO_AC_IN),
149141 .flags = IORESOURCE_IRQ |
150142 IORESOURCE_IRQ_HIGHEDGE |
151143 IORESOURCE_IRQ_LOWEDGE,
@@ -347,7 +339,8 @@ static void __init collie_init(void) · 195 unmodified lines
347339
348340 GPSR |= _COLLIE_GPIO_UCB1x00_RESET;
349341
350−
342+ collie_power_resource[0].start = gpio_to_irq(COLLIE_GPIO_AC_IN);
343+ collie_power_resource[0].end = gpio_to_irq(COLLIE_GPIO_AC_IN);
351344 platform_scoop_config = &collie_pcmcia_config;
352345
353346 ret = platform_add_devices(devices, ARRAY_SIZE(devices));
@@ -357,16 +350,6 @@ static void __init collie_init(void) · 3 unmodified lines
357350
358351 sa11x0_register_mtd(&collie_flash_data, collie_flash_resources,
359352 ARRAY_SIZE(collie_flash_resources));
360−
361− /*
362− * Setup the PPC unit correctly.
363− */
364− PPDR &= ~PPC_RXD4;
365− PPDR |= PPC_TXD4 | PPC_SCLK | PPC_SFRM;
366− PSDR |= PPC_RXD4;
367− PSDR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
368− PPSR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
369−
370353 sa11x0_register_mcp(&collie_mcp_data);
371354
372355 sharpsl_save_param();
arch/arm/mach-sa1100/cpu-sa1100.c+1−1
@@ -228,7 +228,7 @@ static int __init sa1100_cpu_init(struct cpufreq_policy *policy) · 227 unmodified lines
228228 return 0;
229229 }
230230
231−static struct cpufreq_driver sa1100_driver = {
231+static struct cpufreq_driver sa1100_driver __refdata = {
232232 .flags = CPUFREQ_STICKY,
233233 .verify = sa11x0_verify_speed,
234234 .target = sa1100_target,
arch/arm/mach-sa1100/generic.c+1−26
@@ -217,15 +217,10 @@ static struct platform_device sa11x0uart3_device = { · 216 unmodified lines
217217 static struct resource sa11x0mcp_resources[] = {
218218 [0] = {
219219 .start = __PREG(Ser4MCCR0),
220− .end = __PREG(Ser4MCCR0) + 0x1C - 1,
220+ .end = __PREG(Ser4MCCR0) + 0xffff,
221221 .flags = IORESOURCE_MEM,
222222 },
223223 [1] = {
224− .start = __PREG(Ser4MCCR1),
225− .end = __PREG(Ser4MCCR1) + 0x4 - 1,
226− .flags = IORESOURCE_MEM,
227− },
228− [2] = {
229224 .start = IRQ_Ser4MCP,
230225 .end = IRQ_Ser4MCP,
231226 .flags = IORESOURCE_IRQ,
@@ -350,29 +345,9 @@ void sa11x0_register_irda(struct irda_platform_data *irda) · 118 unmodified lines
350345 sa11x0_register_device(&sa11x0ir_device, irda);
351346 }
352347
353−static struct resource sa11x0rtc_resources[] = {
354− [0] = {
355− .start = 0x90010000,
356− .end = 0x900100ff,
357− .flags = IORESOURCE_MEM,
358− },
359− [1] = {
360− .start = IRQ_RTC1Hz,
361− .end = IRQ_RTC1Hz,
362− .flags = IORESOURCE_IRQ,
363− },
364− [2] = {
365− .start = IRQ_RTCAlrm,
366− .end = IRQ_RTCAlrm,
367− .flags = IORESOURCE_IRQ,
368− },
369−};
370−
371348 static struct platform_device sa11x0rtc_device = {
372349 .name = "sa1100-rtc",
373350 .id = -1,
374− .resource = sa11x0rtc_resources,
375− .num_resources = ARRAY_SIZE(sa11x0rtc_resources),
376351 };
377352
378353 static struct platform_device *sa11x0_devices[] __initdata = {
arch/arm/mach-sa1100/include/mach/mcp.h+0−2
@@ -17,8 +17,6 @@ struct mcp_plat_data { · 16 unmodified lines
1717 u32 mccr1;
1818 unsigned int sclk_rate;
1919 int gpio_base;
20− const char *codec;
21− void *codec_pdata;
2220 };
2321
2422 #endif
arch/arm/mach-sa1100/jornada720_ssp.c+2−0
@@ -198,3 +198,5 @@ static int __init jornada_ssp_init(void) · 197 unmodified lines
198198 {
199199 return platform_driver_register(&jornadassp_driver);
200200 }
201+
202+module_init(jornada_ssp_init);
arch/arm/mach-sa1100/lart.c+0−10
@@ -24,20 +24,10 @@ · 23 unmodified lines
2424 static struct mcp_plat_data lart_mcp_data = {
2525 .mccr0 = MCCR0_ADM,
2626 .sclk_rate = 11981000,
27− .codec = "ucb1x00",
2827 };
2928
3029 static void __init lart_init(void)
3130 {
32− /*
33− * Setup the PPC unit correctly.
34− */
35− PPDR &= ~PPC_RXD4;
36− PPDR |= PPC_TXD4 | PPC_SCLK | PPC_SFRM;
37− PSDR |= PPC_RXD4;
38− PSDR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
39− PPSR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
40−
4131 sa11x0_register_mcp(&lart_mcp_data);
4232 }
4333
arch/arm/mach-sa1100/shannon.c+0−11
@@ -55,22 +55,11 @@ static struct resource shannon_flash_resource = { · 54 unmodified lines
5555 static struct mcp_plat_data shannon_mcp_data = {
5656 .mccr0 = MCCR0_ADM,
5757 .sclk_rate = 11981000,
58− .codec = "ucb1x00",
5958 };
6059
6160 static void __init shannon_init(void)
6261 {
6362 sa11x0_register_mtd(&shannon_flash_data, &shannon_flash_resource, 1);
64−
65− /*
66− * Setup the PPC unit correctly.
67− */
68− PPDR &= ~PPC_RXD4;
69− PPDR |= PPC_TXD4 | PPC_SCLK | PPC_SFRM;
70− PSDR |= PPC_RXD4;
71− PSDR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
72− PPSR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
73−
7463 sa11x0_register_mcp(&shannon_mcp_data);
7564 }
7665
arch/arm/mach-sa1100/simpad.c+1−17
@@ -14,7 +14,6 @@ · 13 unmodified lines
1414 #include <linux/mtd/partitions.h>
1515 #include <linux/io.h>
1616 #include <linux/gpio.h>
17−#include <linux/mfd/ucb1x00.h>
1817
1918 #include <asm/irq.h>
2019 #include <mach/hardware.h>
@@ -188,15 +187,10 @@ static struct resource simpad_flash_resources [] = { · 167 unmodified lines
188187 }
189188 };
190189
191−static struct ucb1x00_plat_data simpad_ucb1x00_data = {
192− .gpio_base = SIMPAD_UCB1X00_GPIO_BASE,
193−};
194−
195190 static struct mcp_plat_data simpad_mcp_data = {
196191 .mccr0 = MCCR0_ADM,
197192 .sclk_rate = 11981000,
198− .codec = "ucb1300",
199− .codec_pdata = &simpad_ucb1x00_data,
193+ .gpio_base = SIMPAD_UCB1X00_GPIO_BASE,
200194 };
201195
202196
@@ -384,16 +378,6 @@ static int __init simpad_init(void) · 181 unmodified lines
384378
385379 sa11x0_register_mtd(&simpad_flash_data, simpad_flash_resources,
386380 ARRAY_SIZE(simpad_flash_resources));
387−
388− /*
389− * Setup the PPC unit correctly.
390− */
391− PPDR &= ~PPC_RXD4;
392− PPDR |= PPC_TXD4 | PPC_SCLK | PPC_SFRM;
393− PSDR |= PPC_RXD4;
394− PSDR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
395− PPSR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
396−
397381 sa11x0_register_mcp(&simpad_mcp_data);
398382
399383 ret = platform_add_devices(devices, ARRAY_SIZE(devices));
arch/arm/mach-shmobile/setup-sh7372.c+14−3
@@ -445,31 +445,39 @@ static const struct sh_dmae_slave_config sh7372_dmae_slaves[] = { · 444 unmodified lines
445445 },
446446 };
447447
448+#define SH7372_CHCLR 0x220
449+
448450 static const struct sh_dmae_channel sh7372_dmae_channels[] = {
449451 {
450452 .offset = 0,
451453 .dmars = 0,
452454 .dmars_bit = 0,
455+ .chclr_offset = SH7372_CHCLR + 0,
453456 }, {
454457 .offset = 0x10,
455458 .dmars = 0,
456459 .dmars_bit = 8,
460+ .chclr_offset = SH7372_CHCLR + 0x10,
457461 }, {
458462 .offset = 0x20,
459463 .dmars = 4,
460464 .dmars_bit = 0,
465+ .chclr_offset = SH7372_CHCLR + 0x20,
461466 }, {
462467 .offset = 0x30,
463468 .dmars = 4,
464469 .dmars_bit = 8,
470+ .chclr_offset = SH7372_CHCLR + 0x30,
465471 }, {
466472 .offset = 0x50,
467473 .dmars = 8,
468474 .dmars_bit = 0,
475+ .chclr_offset = SH7372_CHCLR + 0x50,
469476 }, {
470477 .offset = 0x60,
471478 .dmars = 8,
472479 .dmars_bit = 8,
480+ .chclr_offset = SH7372_CHCLR + 0x60,
473481 }
474482 };
475483
@@ -487,6 +495,7 @@ static struct sh_dmae_pdata dma_platform_data = { · 11 unmodified lines
487495 .ts_shift = ts_shift,
488496 .ts_shift_num = ARRAY_SIZE(ts_shift),
489497 .dmaor_init = DMAOR_DME,
498+ .chclr_present = 1,
490499 };
491500
492501 /* Resource order important! */
@@ -494,7 +503,7 @@ static struct resource sh7372_dmae0_resources[] = { · 1 unmodified line
494503 {
495504 /* Channel registers and DMAOR */
496505 .start = 0xfe008020,
497− .end = 0xfe00808f,
506+ .end = 0xfe00828f,
498507 .flags = IORESOURCE_MEM,
499508 },
500509 {
@@ -522,7 +531,7 @@ static struct resource sh7372_dmae1_resources[] = { · 21 unmodified lines
522531 {
523532 /* Channel registers and DMAOR */
524533 .start = 0xfe018020,
525− .end = 0xfe01808f,
534+ .end = 0xfe01828f,
526535 .flags = IORESOURCE_MEM,
527536 },
528537 {
@@ -550,7 +559,7 @@ static struct resource sh7372_dmae2_resources[] = { · 21 unmodified lines
550559 {
551560 /* Channel registers and DMAOR */
552561 .start = 0xfe028020,
553− .end = 0xfe02808f,
562+ .end = 0xfe02828f,
554563 .flags = IORESOURCE_MEM,
555564 },
556565 {
@@ -653,6 +662,7 @@ static struct sh_dmae_pdata usb_dma0_platform_data = { · 96 unmodified lines
653662 .dmaor_is_32bit = 1,
654663 .needs_tend_set = 1,
655664 .no_dmars = 1,
665+ .slave_only = 1,
656666 };
657667
658668 static struct resource sh7372_usb_dmae0_resources[] = {
@@ -714,6 +724,7 @@ static struct sh_dmae_pdata usb_dma1_platform_data = { · 55 unmodified lines
714724 .dmaor_is_32bit = 1,
715725 .needs_tend_set = 1,
716726 .no_dmars = 1,
727+ .slave_only = 1,
717728 };
718729
719730 static struct resource sh7372_usb_dmae1_resources[] = {
arch/arm/mach-shmobile/smp-r8a7779.c+1−0
@@ -25,6 +25,7 @@ · 24 unmodified lines
2525 #include <linux/delay.h>
2626 #include <mach/common.h>
2727 #include <mach/r8a7779.h>
28+#include <asm/smp_plat.h>
2829 #include <asm/smp_scu.h>
2930 #include <asm/smp_twd.h>
3031 #include <asm/hardware/gic.h>
arch/arm/mach-shmobile/smp-sh73a0.c+1−0
@@ -23,6 +23,7 @@ · 22 unmodified lines
2323 #include <linux/spinlock.h>
2424 #include <linux/io.h>
2525 #include <mach/common.h>
26+#include <asm/smp_plat.h>
2627 #include <asm/smp_scu.h>
2728 #include <asm/smp_twd.h>
2829 #include <asm/hardware/gic.h>
arch/arm/mach-tegra/board-paz00.c+4−4
@@ -60,9 +60,9 @@ static struct plat_serial8250_port debug_uart_platform_data[] = { · 59 unmodified lines
6060 .uartclk = 216000000,
6161 }, {
6262 /* serial port on mini-pcie */
63− .membase = IO_ADDRESS(TEGRA_UARTD_BASE),
64− .mapbase = TEGRA_UARTD_BASE,
65− .irq = INT_UARTD,
63+ .membase = IO_ADDRESS(TEGRA_UARTC_BASE),
64+ .mapbase = TEGRA_UARTC_BASE,
65+ .irq = INT_UARTC,
6666 .flags = UPF_BOOT_AUTOCONF | UPF_FIXED_TYPE,
6767 .type = PORT_TEGRA,
6868 .iotype = UPIO_MEM,
@@ -174,7 +174,7 @@ static void __init tegra_paz00_fixup(struct tag *tags, char **cmdline, · 105 unmodified lines
174174 static __initdata struct tegra_clk_init_table paz00_clk_init_table[] = {
175175 /* name parent rate enabled */
176176 { "uarta", "pll_p", 216000000, true },
177− { "uartd", "pll_p", 216000000, true },
177+ { "uartc", "pll_p", 216000000, true },
178178
179179 { "pll_p_out4", "pll_p", 24000000, true },
180180 { "usbd", "clk_m", 12000000, false },
arch/arm/mach-tegra/board-paz00.h+1−1
@@ -22,7 +22,7 @@ · 21 unmodified lines
2222 /* SDCARD */
2323 #define TEGRA_GPIO_SD1_CD TEGRA_GPIO_PV5
2424 #define TEGRA_GPIO_SD1_WP TEGRA_GPIO_PH1
25−#define TEGRA_GPIO_SD1_POWER TEGRA_GPIO_PT3
25+#define TEGRA_GPIO_SD1_POWER TEGRA_GPIO_PV1
2626
2727 /* ULPI */
2828 #define TEGRA_ULPI_RST TEGRA_GPIO_PV0
arch/arm/mach-tegra/include/mach/dma.h+5−5
@@ -23,11 +23,6 @@ · 22 unmodified lines
2323
2424 #include <linux/list.h>
2525
26−#if defined(CONFIG_TEGRA_SYSTEM_DMA)
27−
28−struct tegra_dma_req;
29−struct tegra_dma_channel;
30−
3126 #define TEGRA_DMA_REQ_SEL_CNTR 0
3227 #define TEGRA_DMA_REQ_SEL_I2S_2 1
3328 #define TEGRA_DMA_REQ_SEL_I2S_1 2
@@ -56,6 +51,11 @@ struct tegra_dma_channel; · 22 unmodified lines
5651 #define TEGRA_DMA_REQ_SEL_OWR 25
5752 #define TEGRA_DMA_REQ_SEL_INVALID 31
5853
54+#if defined(CONFIG_TEGRA_SYSTEM_DMA)
55+
56+struct tegra_dma_req;
57+struct tegra_dma_channel;
58+
5959 enum tegra_dma_mode {
6060 TEGRA_DMA_SHARED = 1,
6161 TEGRA_DMA_MODE_CONTINOUS = 2,
arch/arm/mach-ux500/Kconfig+1−0
@@ -7,6 +7,7 @@ config UX500_SOC_COMMON · 6 unmodified lines
77 select HAS_MTU
88 select ARM_ERRATA_753970
99 select ARM_ERRATA_754322
10+ select ARM_ERRATA_764369
1011
1112 menu "Ux500 SoC"
1213
arch/arm/mach-ux500/board-mop500-sdi.c+2−0
@@ -261,6 +261,8 @@ void __init mop500_sdi_init(void) · 260 unmodified lines
261261
262262 void __init snowball_sdi_init(void)
263263 {
264+ /* On Snowball MMC_CAP_SD_HIGHSPEED isn't supported (Hardware issue?) */
265+ mop500_sdi0_data.capabilities &= ~MMC_CAP_SD_HIGHSPEED;
264266 /* On-board eMMC */
265267 db8500_add_sdi4(&mop500_sdi4_data, U8500_SDI_V2_PERIPHID);
266268 /* External Micro SD slot */
arch/arm/mach-ux500/cache-l2x0.c+7−41
@@ -12,44 +12,6 @@ · 11 unmodified lines
1212
1313 static void __iomem *l2x0_base;
1414
15−static inline void ux500_cache_wait(void __iomem *reg, unsigned long mask)
16−{
17− /* wait for the operation to complete */
18− while (readl_relaxed(reg) & mask)
19− cpu_relax();
20−}
21−
22−static inline void ux500_cache_sync(void)
23−{
24− writel_relaxed(0, l2x0_base + L2X0_CACHE_SYNC);
25− ux500_cache_wait(l2x0_base + L2X0_CACHE_SYNC, 1);
26−}
27−
28−/*
29− * The L2 cache cannot be turned off in the non-secure world.
30− * Dummy until a secure service is in place.
31− */
32−static void ux500_l2x0_disable(void)
33−{
34−}
35−
36−/*
37− * This is only called when doing a kexec, just after turning off the L2
38− * and L1 cache, and it is surrounded by a spinlock in the generic version.
39− * However, we're not really turning off the L2 cache right now and the
40− * PL310 does not support exclusive accesses (used to implement the spinlock).
41− * So, the invalidation needs to be done without the spinlock.
42− */
43−static void ux500_l2x0_inv_all(void)
44−{
45− uint32_t l2x0_way_mask = (1<<16) - 1; /* Bitmask of active ways */
46−
47− /* invalidate all ways */
48− writel_relaxed(l2x0_way_mask, l2x0_base + L2X0_INV_WAY);
49− ux500_cache_wait(l2x0_base + L2X0_INV_WAY, l2x0_way_mask);
50− ux500_cache_sync();
51−}
52−
5315 static int __init ux500_l2x0_unlock(void)
5416 {
5517 int i;
@@ -85,9 +47,13 @@ static int __init ux500_l2x0_init(void) · 29 unmodified lines
8547 /* 64KB way size, 8 way associativity, force WA */
8648 l2x0_init(l2x0_base, 0x3e060000, 0xc0000fff);
8749
88− /* Override invalidate function */
89− outer_cache.disable = ux500_l2x0_disable;
90− outer_cache.inv_all = ux500_l2x0_inv_all;
50+ /*
51+ * We can't disable l2 as we are in non secure mode, currently
52+ * this seems be called only during kexec path. So let's
53+ * override outer.disable with nasty assignment until we have
54+ * some SMI service available.
55+ */
56+ outer_cache.disable = NULL;
9157
9258 return 0;
9359 }
arch/arm/mach-ux500/headsmp.S+2−0
@@ -32,6 +32,8 @@ pen: ldr r7, [r6] · 31 unmodified lines
3232 * should now contain the SVC stack for this core
3333 */
3434 b secondary_startup
35+ENDPROC(u8500_secondary_startup)
3536
37+ .align 2
3638 1: .long .
3739 .long pen_release
arch/arm/mach-ux500/hotplug.c+1−0
@@ -13,6 +13,7 @@ · 12 unmodified lines
1313 #include <linux/smp.h>
1414
1515 #include <asm/cacheflush.h>
16+#include <asm/smp_plat.h>
1617
1718 extern volatile int pen_release;
1819
arch/arm/mach-ux500/platsmp.c+1−0
@@ -19,6 +19,7 @@ · 18 unmodified lines
1919
2020 #include <asm/cacheflush.h>
2121 #include <asm/hardware/gic.h>
22+#include <asm/smp_plat.h>
2223 #include <asm/smp_scu.h>
2324 #include <mach/hardware.h>
2425 #include <mach/setup.h>
arch/arm/mach-ux500/usb.c+0−6
@@ -95,13 +95,7 @@ static struct musb_hdrc_config musb_hdrc_config = { · 94 unmodified lines
9595 };
9696
9797 static struct musb_hdrc_platform_data musb_platform_data = {
98−#if defined(CONFIG_USB_MUSB_OTG)
9998 .mode = MUSB_OTG,
100−#elif defined(CONFIG_USB_MUSB_PERIPHERAL)
101− .mode = MUSB_PERIPHERAL,
102−#else /* defined(CONFIG_USB_MUSB_HOST) */
103− .mode = MUSB_HOST,
104−#endif
10599 .config = &musb_hdrc_config,
106100 .board_data = &musb_board_data,
107101 };
arch/arm/mach-vexpress/ct-ca9x4.c+2−2
@@ -217,7 +217,7 @@ static void __init ct_ca9x4_init(void) · 216 unmodified lines
217217 }
218218
219219 #ifdef CONFIG_SMP
220−static void ct_ca9x4_init_cpu_map(void)
220+static void __init ct_ca9x4_init_cpu_map(void)
221221 {
222222 int i, ncores = scu_get_core_count(MMIO_P2V(A9_MPCORE_SCU));
223223
@@ -233,7 +233,7 @@ static void ct_ca9x4_init_cpu_map(void) · 9 unmodified lines
233233 set_smp_cross_call(gic_raise_softirq);
234234 }
235235
236−static void ct_ca9x4_smp_enable(unsigned int max_cpus)
236+static void __init ct_ca9x4_smp_enable(unsigned int max_cpus)
237237 {
238238 scu_enable(MMIO_P2V(A9_MPCORE_SCU));
239239 }
arch/arm/mach-vexpress/hotplug.c+1−0
@@ -13,6 +13,7 @@ · 12 unmodified lines
1313 #include <linux/smp.h>
1414
1515 #include <asm/cacheflush.h>
16+#include <asm/smp_plat.h>
1617 #include <asm/system.h>
1718
1819 extern volatile int pen_release;
arch/arm/mach-vexpress/platsmp.c+1−3
@@ -13,8 +13,6 @@ · 12 unmodified lines
1313 #include <linux/smp.h>
1414 #include <linux/io.h>
1515
16−#include <asm/unified.h>
17−
1816 #include <mach/motherboard.h>
1917 #define V2M_PA_CS7 0x10000000
2018
@@ -46,6 +44,6 @@ void __init platform_smp_prepare_cpus(unsigned int max_cpus) · 25 unmodified lines
4644 * secondary CPU branches to this address.
4745 */
4846 writel(~0, MMIO_P2V(V2M_SYS_FLAGSCLR));
49− writel(BSYM(virt_to_phys(versatile_secondary_startup)),
47+ writel(virt_to_phys(versatile_secondary_startup),
5048 MMIO_P2V(V2M_SYS_FLAGSSET));
5149 }
arch/arm/mm/Kconfig+3−1
@@ -631,7 +631,8 @@ comment "Processor Features" · 630 unmodified lines
631631
632632 config ARM_LPAE
633633 bool "Support for the Large Physical Address Extension"
634− depends on MMU && CPU_V7
634+ depends on MMU && CPU_32v7 && !CPU_32v6 && !CPU_32v5 && \
635+ !CPU_32v4 && !CPU_32v3
635636 help
636637 Say Y if you have an ARMv7 processor supporting the LPAE page
637638 table format and you would like to access memory beyond the
@@ -882,6 +883,7 @@ config CACHE_XSC3L2 · 244 unmodified lines
882883
883884 config ARM_L1_CACHE_SHIFT_6
884885 bool
886+ default y if CPU_V7
885887 help
886888 Setting ARM L1 cache line size to 64 Bytes.
887889
arch/arm/mm/cache-v7.S+6−0
@@ -54,9 +54,15 @@ loop1: · 53 unmodified lines
5454 and r1, r1, #7 @ mask of the bits for current cache only
5555 cmp r1, #2 @ see what cache we have at this level
5656 blt skip @ skip if no cache, or just i-cache
57+#ifdef CONFIG_PREEMPT
58+ save_and_disable_irqs_notrace r9 @ make cssr&csidr read atomic
59+#endif
5760 mcr p15, 2, r10, c0, c0, 0 @ select current cache level in cssr
5861 isb @ isb to sych the new cssr&csidr
5962 mrc p15, 1, r1, c0, c0, 0 @ read the new csidr
63+#ifdef CONFIG_PREEMPT
64+ restore_irqs_notrace r9
65+#endif
6066 and r2, r1, #7 @ extract the length of the cache lines
6167 add r2, r2, #4 @ add 4 (line length offset)
6268 ldr r4, =0x3ff
arch/arm/mm/init.c+1−1
@@ -310,7 +310,7 @@ static void arm_memory_present(void) · 309 unmodified lines
310310
311311 static bool arm_memblock_steal_permitted = true;
312312
313−phys_addr_t arm_memblock_steal(phys_addr_t size, phys_addr_t align)
313+phys_addr_t __init arm_memblock_steal(phys_addr_t size, phys_addr_t align)
314314 {
315315 phys_addr_t phys;
316316
arch/arm/mm/proc-v7.S+10−16
@@ -148,10 +148,6 @@ ENDPROC(cpu_v7_do_resume) · 147 unmodified lines
148148 * Initialise TLB, Caches, and MMU state ready to switch the MMU
149149 * on. Return in r0 the new CP15 C1 control register setting.
150150 *
151− * We automatically detect if we have a Harvard cache, and use the
152− * Harvard cache control instructions insead of the unified cache
153− * control instructions.
154− *
155151 * This should be able to cover all ARMv7 cores.
156152 *
157153 * It is assumed that:
@@ -251,9 +247,7 @@ __v7_setup: · 93 unmodified lines
251247 #endif
252248
253249 3: mov r10, #0
254−#ifdef HARVARD_CACHE
255250 mcr p15, 0, r10, c7, c5, 0 @ I+BTB cache invalidate
256−#endif
257251 dsb
258252 #ifdef CONFIG_MMU
259253 mcr p15, 0, r10, c8, c7, 0 @ invalidate I + D TLBs
@@ -329,16 +323,6 @@ __v7_ca5mp_proc_info: · 69 unmodified lines
329323 __v7_proc __v7_ca5mp_setup
330324 .size __v7_ca5mp_proc_info, . - __v7_ca5mp_proc_info
331325
332− /*
333− * ARM Ltd. Cortex A7 processor.
334− */
335− .type __v7_ca7mp_proc_info, #object
336−__v7_ca7mp_proc_info:
337− .long 0x410fc070
338− .long 0xff0ffff0
339− __v7_proc __v7_ca7mp_setup, hwcaps = HWCAP_IDIV
340− .size __v7_ca7mp_proc_info, . - __v7_ca7mp_proc_info
341−
342326 /*
343327 * ARM Ltd. Cortex A9 processor.
344328 */
@@ -350,6 +334,16 @@ __v7_ca9mp_proc_info: · 5 unmodified lines
350334 .size __v7_ca9mp_proc_info, . - __v7_ca9mp_proc_info
351335 #endif /* CONFIG_ARM_LPAE */
352336
337+ /*
338+ * ARM Ltd. Cortex A7 processor.
339+ */
340+ .type __v7_ca7mp_proc_info, #object
341+__v7_ca7mp_proc_info:
342+ .long 0x410fc070
343+ .long 0xff0ffff0
344+ __v7_proc __v7_ca7mp_setup, hwcaps = HWCAP_IDIV
345+ .size __v7_ca7mp_proc_info, . - __v7_ca7mp_proc_info
346+
353347 /*
354348 * ARM Ltd. Cortex A15 processor.
355349 */
arch/arm/plat-mxc/Kconfig+3−12
@@ -17,26 +17,17 @@ config ARCH_IMX_V4_V5 · 16 unmodified lines
1717 and ARMv5 SoCs
1818
1919 config ARCH_IMX_V6_V7
20− bool "i.MX3, i.MX6"
20+ bool "i.MX3, i.MX5, i.MX6"
2121 select AUTO_ZRELADDR if !ZBOOT_ROM
2222 select ARM_PATCH_PHYS_VIRT
2323 select MIGHT_HAVE_CACHE_L2X0
2424 help
25− This enables support for systems based on the Freescale i.MX3 and i.MX6
26− family.
27−
28−config ARCH_MX5
29− bool "i.MX50, i.MX51, i.MX53"
30− select AUTO_ZRELADDR if !ZBOOT_ROM
31− select ARM_PATCH_PHYS_VIRT
32− help
33− This enables support for machines using Freescale's i.MX50 and i.MX53
34− processors.
25+ This enables support for systems based on the Freescale i.MX3, i.MX5
26+ and i.MX6 family.
3527
3628 endchoice
3729
3830 source "arch/arm/mach-imx/Kconfig"
39−source "arch/arm/mach-mx5/Kconfig"
4031
4132 endmenu
4233
arch/arm/plat-mxc/include/mach/iomux-v1.h+1−1
@@ -96,6 +96,6 @@ extern int mxc_gpio_mode(int gpio_mode); · 95 unmodified lines
9696 extern int mxc_gpio_setup_multiple_pins(const int *pin_list, unsigned count,
9797 const char *label);
9898
99−extern int __init imx_iomuxv1_init(void __iomem *base, int numports);
99+extern int imx_iomuxv1_init(void __iomem *base, int numports);
100100
101101 #endif /* __MACH_IOMUX_V1_H__ */
arch/arm/plat-mxc/include/mach/mx3fb.h+15−0
@@ -22,6 +22,20 @@ · 21 unmodified lines
2222 #define FB_SYNC_SWAP_RGB 0x04000000
2323 #define FB_SYNC_CLK_SEL_EN 0x02000000
2424
25+/*
26+ * Specify the way your display is connected. The IPU can arbitrarily
27+ * map the internal colors to the external data lines. We only support
28+ * the following mappings at the moment.
29+ */
30+enum disp_data_mapping {
31+ /* blue -> d[0..5], green -> d[6..11], red -> d[12..17] */
32+ IPU_DISP_DATA_MAPPING_RGB666,
33+ /* blue -> d[0..4], green -> d[5..10], red -> d[11..15] */
34+ IPU_DISP_DATA_MAPPING_RGB565,
35+ /* blue -> d[0..7], green -> d[8..15], red -> d[16..23] */
36+ IPU_DISP_DATA_MAPPING_RGB888,
37+};
38+
2539 /**
2640 * struct mx3fb_platform_data - mx3fb platform data
2741 *
@@ -33,6 +47,7 @@ struct mx3fb_platform_data { · 5 unmodified lines
3347 const char *name;
3448 const struct fb_videomode *mode;
3549 int num_modes;
50+ enum disp_data_mapping disp_data_fmt;
3651 };
3752
3853 #endif
arch/arm/plat-nomadik/include/plat/ste_dma40.h+8−3
@@ -113,7 +113,8 @@ struct stedma40_half_channel_info { · 112 unmodified lines
113113 * @dst_dev_type: Dst device type
114114 * @src_info: Parameters for dst half channel
115115 * @dst_info: Parameters for dst half channel
116− *
116+ * @use_fixed_channel: if true, use physical channel specified by phy_channel
117+ * @phy_channel: physical channel to use, only if use_fixed_channel is true
117118 *
118119 * This structure has to be filled by the client drivers.
119120 * It is recommended to do all dma configurations for clients in the machine.
@@ -129,6 +130,9 @@ struct stedma40_chan_cfg { · 9 unmodified lines
129130 int dst_dev_type;
130131 struct stedma40_half_channel_info src_info;
131132 struct stedma40_half_channel_info dst_info;
133+
134+ bool use_fixed_channel;
135+ int phy_channel;
132136 };
133137
134138 /**
@@ -153,6 +157,7 @@ struct stedma40_platform_data { · 18 unmodified lines
153157 struct stedma40_chan_cfg *memcpy_conf_phy;
154158 struct stedma40_chan_cfg *memcpy_conf_log;
155159 int disabled_channels[STEDMA40_MAX_PHYS];
160+ bool use_esram_lcla;
156161 };
157162
158163 #ifdef CONFIG_STE_DMA40
@@ -187,7 +192,7 @@ static inline struct · 28 unmodified lines
187192 dma_async_tx_descriptor *stedma40_slave_mem(struct dma_chan *chan,
188193 dma_addr_t addr,
189194 unsigned int size,
190− enum dma_data_direction direction,
195+ enum dma_transfer_direction direction,
191196 unsigned long flags)
192197 {
193198 struct scatterlist sg;
@@ -209,7 +214,7 @@ static inline struct · 15 unmodified lines
209214 dma_async_tx_descriptor *stedma40_slave_mem(struct dma_chan *chan,
210215 dma_addr_t addr,
211216 unsigned int size,
212− enum dma_data_direction direction,
217+ enum dma_transfer_direction direction,
213218 unsigned long flags)
214219 {
215220 return NULL;
arch/arm/plat-omap/include/plat/omap-secure.h+1−1
@@ -3,7 +3,7 @@ · 2 unmodified lines
33
44 #include <linux/types.h>
55
6−#ifdef CONFIG_ARCH_OMAP2PLUS
6+#if defined(CONFIG_ARCH_OMAP3) || defined(CONFIG_ARCH_OMAP4)
77 extern int omap_secure_ram_reserve_memblock(void);
88 #else
99 static inline void omap_secure_ram_reserve_memblock(void)
arch/arm/plat-orion/common.c+4−5
@@ -789,10 +789,7 @@ void __init orion_xor1_init(unsigned long mapbase_low, · 788 unmodified lines
789789 /*****************************************************************************
790790 * EHCI
791791 ****************************************************************************/
792−static struct orion_ehci_data orion_ehci_data = {
793− .phy_version = EHCI_PHY_NA,
794−};
795−
792+static struct orion_ehci_data orion_ehci_data;
796793 static u64 ehci_dmamask = DMA_BIT_MASK(32);
797794
798795
@@ -812,8 +809,10 @@ static struct platform_device orion_ehci = { · 13 unmodified lines
812809 };
813810
814811 void __init orion_ehci_init(unsigned long mapbase,
815− unsigned long irq)
812+ unsigned long irq,
813+ enum orion_ehci_phy_ver phy_version)
816814 {
815+ orion_ehci_data.phy_version = phy_version;
817816 fill_resources(&orion_ehci, orion_ehci_resources, mapbase, SZ_4K - 1,
818817 irq);
819818
arch/arm/plat-orion/include/plat/common.h+2−1
@@ -89,7 +89,8 @@ void __init orion_xor1_init(unsigned long mapbase_low, · 88 unmodified lines
8989 unsigned long irq_1);
9090
9191 void __init orion_ehci_init(unsigned long mapbase,
92− unsigned long irq);
92+ unsigned long irq,
93+ enum orion_ehci_phy_ver phy_version);
9394
9495 void __init orion_ehci_1_init(unsigned long mapbase,
9596 unsigned long irq);
arch/arm/plat-orion/mpp.c+1−2
@@ -64,8 +64,7 @@ void __init orion_mpp_conf(unsigned int *mpp_list, unsigned int variant_mask, · 63 unmodified lines
6464 gpio_mode |= GPIO_INPUT_OK;
6565 if (*mpp_list & MPP_OUTPUT_MASK)
6666 gpio_mode |= GPIO_OUTPUT_OK;
67− if (sel != 0)
68− gpio_mode = 0;
67+
6968 orion_gpio_set_valid(num, gpio_mode);
7069 }
7170
arch/arm/plat-samsung/devs.c+3−1
@@ -468,8 +468,10 @@ void __init s3c_i2c0_set_platdata(struct s3c2410_platform_i2c *pd) · 467 unmodified lines
468468 {
469469 struct s3c2410_platform_i2c *npd;
470470
471− if (!pd)
471+ if (!pd) {
472472 pd = &default_i2c_data;
473+ pd->bus_num = 0;
474+ }
473475
474476 npd = s3c_set_platdata(pd, sizeof(struct s3c2410_platform_i2c),
475477 &s3c_device_i2c0);
arch/arm/plat-samsung/dma-ops.c+2−2
@@ -37,14 +37,14 @@ static unsigned samsung_dmadev_request(enum dma_ch dma_ch, · 36 unmodified lines
3737 (void *)dma_ch;
3838 chan = dma_request_channel(mask, pl330_filter, filter_param);
3939
40− if (info->direction == DMA_FROM_DEVICE) {
40+ if (info->direction == DMA_DEV_TO_MEM) {
4141 memset(&slave_config, 0, sizeof(struct dma_slave_config));
4242 slave_config.direction = info->direction;
4343 slave_config.src_addr = info->fifo;
4444 slave_config.src_addr_width = info->width;
4545 slave_config.src_maxburst = 1;
4646 dmaengine_slave_config(chan, &slave_config);
47− } else if (info->direction == DMA_TO_DEVICE) {
47+ } else if (info->direction == DMA_MEM_TO_DEV) {
4848 memset(&slave_config, 0, sizeof(struct dma_slave_config));
4949 slave_config.direction = info->direction;
5050 slave_config.dst_addr = info->fifo;
arch/arm/plat-samsung/include/plat/dma-ops.h+3−2
@@ -14,10 +14,11 @@ · 13 unmodified lines
1414 #define __SAMSUNG_DMA_OPS_H_ __FILE__
1515
1616 #include <linux/dmaengine.h>
17+#include <mach/dma.h>
1718
1819 struct samsung_dma_prep_info {
1920 enum dma_transaction_type cap;
20− enum dma_data_direction direction;
21+ enum dma_transfer_direction direction;
2122 dma_addr_t buf;
2223 unsigned long period;
2324 unsigned long len;
@@ -27,7 +28,7 @@ struct samsung_dma_prep_info { · 3 unmodified lines
2728
2829 struct samsung_dma_info {
2930 enum dma_transaction_type cap;
30− enum dma_data_direction direction;
31+ enum dma_transfer_direction direction;
3132 enum dma_slave_buswidth width;
3233 dma_addr_t fifo;
3334 struct s3c2410_dma_client *client;
arch/arm/plat-samsung/include/plat/dma.h+5−1
@@ -10,6 +10,9 @@ · 9 unmodified lines
1010 * published by the Free Software Foundation.
1111 */
1212
13+#ifndef __PLAT_DMA_H
14+#define __PLAT_DMA_H
15+
1316 #include <linux/dma-mapping.h>
1417
1518 enum s3c2410_dma_buffresult {
@@ -122,5 +125,6 @@ extern int s3c2410_dma_getposition(enum dma_ch channel, · 106 unmodified lines
122125 extern int s3c2410_dma_set_opfn(enum dma_ch, s3c2410_dma_opfn_t rtn);
123126 extern int s3c2410_dma_set_buffdone_fn(enum dma_ch, s3c2410_dma_cbfn_t rtn);
124127
125−
126128 #include <plat/dma-ops.h>
129+
130+#endif
arch/arm/plat-samsung/include/plat/s3c64xx-spi.h+2−0
@@ -11,6 +11,8 @@ · 10 unmodified lines
1111 #ifndef __S3C64XX_PLAT_SPI_H
1212 #define __S3C64XX_PLAT_SPI_H
1313
14+struct platform_device;
15+
1416 /**
1517 * struct s3c64xx_spi_csinfo - ChipSelect description
1618 * @fb_delay: Slave specific feedback delay.
arch/arm/plat-versatile/headsmp.S+1−0
@@ -38,3 +38,4 @@ pen: ldr r7, [r6] · 37 unmodified lines
3838 .align
3939 1: .long .
4040 .long pen_release
41+ENDPROC(versatile_secondary_startup)
arch/arm/plat-versatile/platsmp.c+1−0
@@ -16,6 +16,7 @@ · 15 unmodified lines
1616 #include <linux/smp.h>
1717
1818 #include <asm/cacheflush.h>
19+#include <asm/smp_plat.h>
1920 #include <asm/hardware/gic.h>
2021
2122 /*
arch/avr32/Kconfig+1−0
@@ -8,6 +8,7 @@ config AVR32 · 7 unmodified lines
88 select HAVE_KPROBES
99 select HAVE_GENERIC_HARDIRQS
1010 select GENERIC_IRQ_PROBE
11+ select GENERIC_ATOMIC64
1112 select HARDIRQS_SW_RESEND
1213 select GENERIC_IRQ_SHOW
1314 select ARCH_HAVE_NMI_SAFE_CMPXCHG
arch/ia64/include/asm/ptrace.h+12−1
@@ -246,7 +246,18 @@ static inline unsigned long user_stack_pointer(struct pt_regs *regs) · 245 unmodified lines
246246 return regs->ar_bspstore;
247247 }
248248
249−#define regs_return_value(regs) ((regs)->r8)
249+static inline int is_syscall_success(struct pt_regs *regs)
250+{
251+ return regs->r10 != -1;
252+}
253+
254+static inline long regs_return_value(struct pt_regs *regs)
255+{
256+ if (is_syscall_success(regs))
257+ return regs->r8;
258+ else
259+ return -regs->r8;
260+}
250261
251262 /* Conserve space in histogram by encoding slot bits in address
252263 * bits 2 and 3 rather than bits 0 and 1.
arch/ia64/kernel/acpi.c+6−4
@@ -429,22 +429,24 @@ static u32 __devinitdata pxm_flag[PXM_FLAG_LEN]; · 428 unmodified lines
429429 static struct acpi_table_slit __initdata *slit_table;
430430 cpumask_t early_cpu_possible_map = CPU_MASK_NONE;
431431
432−static int get_processor_proximity_domain(struct acpi_srat_cpu_affinity *pa)
432+static int __init
433+get_processor_proximity_domain(struct acpi_srat_cpu_affinity *pa)
433434 {
434435 int pxm;
435436
436437 pxm = pa->proximity_domain_lo;
437− if (ia64_platform_is("sn2"))
438+ if (ia64_platform_is("sn2") || acpi_srat_revision >= 2)
438439 pxm += pa->proximity_domain_hi[0] << 8;
439440 return pxm;
440441 }
441442
442−static int get_memory_proximity_domain(struct acpi_srat_mem_affinity *ma)
443+static int __init
444+get_memory_proximity_domain(struct acpi_srat_mem_affinity *ma)
443445 {
444446 int pxm;
445447
446448 pxm = ma->proximity_domain;
447− if (!ia64_platform_is("sn2"))
449+ if (!ia64_platform_is("sn2") && acpi_srat_revision <= 1)
448450 pxm &= 0xff;
449451
450452 return pxm;
arch/ia64/kernel/ptrace.c+2−16
@@ -1246,15 +1246,8 @@ syscall_trace_enter (long arg0, long arg1, long arg2, long arg3, · 1245 unmodified lines
12461246 if (test_thread_flag(TIF_RESTORE_RSE))
12471247 ia64_sync_krbs();
12481248
1249− if (unlikely(current->audit_context)) {
1250− long syscall;
1251− int arch;
12521249
1253− syscall = regs.r15;
1254− arch = AUDIT_ARCH_IA64;
1255−
1256− audit_syscall_entry(arch, syscall, arg0, arg1, arg2, arg3);
1257− }
1250+ audit_syscall_entry(AUDIT_ARCH_IA64, regs.r15, arg0, arg1, arg2, arg3);
12581251
12591252 return 0;
12601253 }
@@ -1268,14 +1261,7 @@ syscall_trace_leave (long arg0, long arg1, long arg2, long arg3, · 7 unmodified lines
12681261 {
12691262 int step;
12701263
1271− if (unlikely(current->audit_context)) {
1272− int success = AUDITSC_RESULT(regs.r10);
1273− long result = regs.r8;
1274−
1275− if (success != AUDITSC_SUCCESS)
1276− result = -result;
1277− audit_syscall_exit(success, result);
1278− }
1264+ audit_syscall_exit(&regs);
12791265
12801266 step = test_thread_flag(TIF_SINGLESTEP);
12811267 if (step || test_thread_flag(TIF_SYSCALL_TRACE))
arch/m68k/atari/config.c+4−4
@@ -414,9 +414,9 @@ void __init config_atari(void) · 413 unmodified lines
414414 * FDC val = 4 -> Supervisor only */
415415 asm volatile ("\n"
416416 " .chip 68030\n"
417− " pmove %0@,%/tt1\n"
417+ " pmove %0,%/tt1\n"
418418 " .chip 68k"
419− : : "a" (&tt1_val));
419+ : : "m" (tt1_val));
420420 } else {
421421 asm volatile ("\n"
422422 " .chip 68040\n"
@@ -569,10 +569,10 @@ static void atari_reset(void) · 146 unmodified lines
569569 : "d0");
570570 } else
571571 asm volatile ("\n"
572− " pmove %0@,%%tc\n"
572+ " pmove %0,%%tc\n"
573573 " jmp %1@"
574574 : /* no outputs */
575− : "a" (&tc_val), "a" (reset_addr));
575+ : "m" (tc_val), "a" (reset_addr));
576576 }
577577
578578
arch/m68k/include/asm/irq.h+0−13
@@ -50,19 +50,6 @@ · 49 unmodified lines
5050
5151 #define IRQ_USER 8
5252
53−/*
54− * various flags for request_irq() - the Amiga now uses the standard
55− * mechanism like all other architectures - IRQF_DISABLED and
56− * IRQF_SHARED are your friends.
57− */
58−#ifndef MACH_AMIGA_ONLY
59−#define IRQ_FLG_LOCK (0x0001) /* handler is not replaceable */
60−#define IRQ_FLG_REPLACE (0x0002) /* replace existing handler */
61−#define IRQ_FLG_FAST (0x0004)
62−#define IRQ_FLG_SLOW (0x0008)
63−#define IRQ_FLG_STD (0x8000) /* internally used */
64−#endif
65−
6653 struct irq_data;
6754 struct irq_chip;
6855 struct irq_desc;
arch/m68k/include/asm/mcf_pgtable.h+2−1
@@ -78,7 +78,8 @@ · 77 unmodified lines
7878 | CF_PAGE_READABLE \
7979 | CF_PAGE_WRITABLE \
8080 | CF_PAGE_EXEC \
81− | CF_PAGE_SYSTEM)
81+ | CF_PAGE_SYSTEM \
82+ | CF_PAGE_SHARED)
8283
8384 #define PAGE_COPY __pgprot(CF_PAGE_VALID \
8485 | CF_PAGE_ACCESSED \
arch/m68k/kernel/process_mm.c+1−1
@@ -172,7 +172,7 @@ void flush_thread(void) · 171 unmodified lines
172172
173173 current->thread.fs = __USER_DS;
174174 if (!FPU_IS_EMU)
175− asm volatile ("frestore %0@" : : "a" (&zero) : "memory");
175+ asm volatile("frestore %0": :"m" (zero));
176176 }
177177
178178 /*
arch/m68k/kernel/process_no.c+2−2
@@ -163,8 +163,8 @@ void flush_thread(void) · 162 unmodified lines
163163 #ifdef CONFIG_FPU
164164 if (!FPU_IS_EMU)
165165 asm volatile (".chip 68k/68881\n\t"
166− "frestore %0@\n\t"
167− ".chip 68k" : : "a" (&zero));
166+ "frestore %0\n\t"
167+ ".chip 68k" : : "m" (zero));
168168 #endif
169169 }
170170
arch/m68k/kernel/traps.c+17−19
@@ -552,13 +552,13 @@ static inline void bus_error030 (struct frame *fp) · 551 unmodified lines
552552
553553 #ifdef DEBUG
554554 asm volatile ("ptestr %3,%2@,#7,%0\n\t"
555− "pmove %%psr,%1@"
556− : "=a&" (desc)
557− : "a" (&temp), "a" (addr), "d" (ssw));
555+ "pmove %%psr,%1"
556+ : "=a&" (desc), "=m" (temp)
557+ : "a" (addr), "d" (ssw));
558558 #else
559559 asm volatile ("ptestr %2,%1@,#7\n\t"
560− "pmove %%psr,%0@"
561− : : "a" (&temp), "a" (addr), "d" (ssw));
560+ "pmove %%psr,%0"
561+ : "=m" (temp) : "a" (addr), "d" (ssw));
562562 #endif
563563 mmusr = temp;
564564
@@ -605,20 +605,18 @@ static inline void bus_error030 (struct frame *fp) · 40 unmodified lines
605605 !(ssw & RW) ? "write" : "read", addr,
606606 fp->ptregs.pc, ssw);
607607 asm volatile ("ptestr #1,%1@,#0\n\t"
608− "pmove %%psr,%0@"
609− : /* no outputs */
610− : "a" (&temp), "a" (addr));
608+ "pmove %%psr,%0"
609+ : "=m" (temp)
610+ : "a" (addr));
611611 mmusr = temp;
612612
613613 printk ("level 0 mmusr is %#x\n", mmusr);
614614 #if 0
615− asm volatile ("pmove %%tt0,%0@"
616− : /* no outputs */
617− : "a" (&tlong));
615+ asm volatile ("pmove %%tt0,%0"
616+ : "=m" (tlong));
618617 printk("tt0 is %#lx, ", tlong);
619− asm volatile ("pmove %%tt1,%0@"
620− : /* no outputs */
621− : "a" (&tlong));
618+ asm volatile ("pmove %%tt1,%0"
619+ : "=m" (tlong));
622620 printk("tt1 is %#lx\n", tlong);
623621 #endif
624622 #ifdef DEBUG
@@ -668,13 +666,13 @@ static inline void bus_error030 (struct frame *fp) · 43 unmodified lines
668666
669667 #ifdef DEBUG
670668 asm volatile ("ptestr #1,%2@,#7,%0\n\t"
671− "pmove %%psr,%1@"
672− : "=a&" (desc)
673− : "a" (&temp), "a" (addr));
669+ "pmove %%psr,%1"
670+ : "=a&" (desc), "=m" (temp)
671+ : "a" (addr));
674672 #else
675673 asm volatile ("ptestr #1,%1@,#7\n\t"
676− "pmove %%psr,%0@"
677− : : "a" (&temp), "a" (addr));
674+ "pmove %%psr,%0"
675+ : "=m" (temp) : "a" (addr));
678676 #endif
679677 mmusr = temp;
680678
arch/m68k/mm/cache.c+3−3
@@ -52,9 +52,9 @@ static unsigned long virt_to_phys_slow(unsigned long vaddr) · 51 unmodified lines
5252 unsigned long *descaddr;
5353
5454 asm volatile ("ptestr %3,%2@,#7,%0\n\t"
55− "pmove %%psr,%1@"
56− : "=a&" (descaddr)
57− : "a" (&mmusr), "a" (vaddr), "d" (get_fs().seg));
55+ "pmove %%psr,%1"
56+ : "=a&" (descaddr), "=m" (mmusr)
57+ : "a" (vaddr), "d" (get_fs().seg));
5858 if (mmusr & (MMU_I|MMU_B|MMU_L))
5959 return 0;
6060 descaddr = phys_to_virt((unsigned long)descaddr);
arch/m68k/mm/mcfmmu.c+5−4
@@ -87,7 +87,7 @@ void __init paging_init(void) · 86 unmodified lines
8787
8888 int cf_tlb_miss(struct pt_regs *regs, int write, int dtlb, int extension_word)
8989 {
90− unsigned long flags, mmuar;
90+ unsigned long flags, mmuar, mmutr;
9191 struct mm_struct *mm;
9292 pgd_t *pgd;
9393 pmd_t *pmd;
@@ -137,9 +137,10 @@ int cf_tlb_miss(struct pt_regs *regs, int write, int dtlb, int extension_word) · 43 unmodified lines
137137 if (!pte_dirty(*pte) && !KMAPAREA(mmuar))
138138 set_pte(pte, pte_wrprotect(*pte));
139139
140− mmu_write(MMUTR, (mmuar & PAGE_MASK) | (asid << MMUTR_IDN) |
141− (((int)(pte->pte) & (int)CF_PAGE_MMUTR_MASK)
142− >> CF_PAGE_MMUTR_SHIFT) | MMUTR_V);
140+ mmutr = (mmuar & PAGE_MASK) | (asid << MMUTR_IDN) | MMUTR_V;
141+ if ((mmuar < TASK_UNMAPPED_BASE) || (mmuar >= TASK_SIZE))
142+ mmutr |= (pte->pte & CF_PAGE_MMUTR_MASK) >> CF_PAGE_MMUTR_SHIFT;
143+ mmu_write(MMUTR, mmutr);
143144
144145 mmu_write(MMUDR, (pte_val(*pte) & PAGE_MASK) |
145146 ((pte->pte) & CF_PAGE_MMUDR_MASK) | MMUDR_SZ_8KB | MMUDR_X);
arch/m68k/platform/coldfire/entry.S+1−3
@@ -136,7 +136,7 @@ Luser_return: · 135 unmodified lines
136136 movel %sp,%d1 /* get thread_info pointer */
137137 andl #-THREAD_SIZE,%d1 /* at base of kernel stack */
138138 movel %d1,%a0
139− movel %a0@(TINFO_FLAGS),%d1 /* get thread_info->flags */
139+ moveb %a0@(TINFO_FLAGS+3),%d1 /* thread_info->flags (low 8 bits) */
140140 jne Lwork_to_do /* still work to do */
141141
142142 Lreturn:
@@ -148,8 +148,6 @@ Lwork_to_do: · 5 unmodified lines
148148 btst #TIF_NEED_RESCHED,%d1
149149 jne reschedule
150150
151− /* GERG: do we need something here for TRACEing?? */
152−
153151 Lsignal_return:
154152 subql #4,%sp /* dummy return address */
155153 SAVE_SWITCH_STACK
arch/microblaze/Kconfig+1−0
@@ -19,6 +19,7 @@ config MICROBLAZE · 18 unmodified lines
1919 select GENERIC_IRQ_SHOW
2020 select GENERIC_PCI_IOMAP
2121 select GENERIC_CPU_DEVICES
22+ select GENERIC_ATOMIC64
2223
2324 config SWAP
2425 def_bool n
arch/microblaze/include/asm/atomic.h+1−0
@@ -2,6 +2,7 @@ · 1 unmodified line
22 #define _ASM_MICROBLAZE_ATOMIC_H
33
44 #include <asm-generic/atomic.h>
5+#include <asm-generic/atomic64.h>
56
67 /*
78 * Atomically test *v and decrement if it is greater than 0.
arch/microblaze/include/asm/ptrace.h+5−0
@@ -61,6 +61,11 @@ struct pt_regs { · 60 unmodified lines
6161 #define instruction_pointer(regs) ((regs)->pc)
6262 #define profile_pc(regs) instruction_pointer(regs)
6363
64+static inline long regs_return_value(struct pt_regs *regs)
65+{
66+ return regs->r3;
67+}
68+
6469 #else /* __KERNEL__ */
6570
6671 /* pt_regs offsets used by gdbserver etc in ptrace syscalls */
arch/microblaze/kernel/ptrace.c+3−6
@@ -147,10 +147,8 @@ asmlinkage long do_syscall_trace_enter(struct pt_regs *regs) · 146 unmodified lines
147147 */
148148 ret = -1L;
149149
150− if (unlikely(current->audit_context))
151− audit_syscall_entry(EM_MICROBLAZE, regs->r12,
152− regs->r5, regs->r6,
153− regs->r7, regs->r8);
150+ audit_syscall_entry(EM_MICROBLAZE, regs->r12, regs->r5, regs->r6,
151+ regs->r7, regs->r8);
154152
155153 return ret ?: regs->r12;
156154 }
@@ -159,8 +157,7 @@ asmlinkage void do_syscall_trace_leave(struct pt_regs *regs) · 2 unmodified lines
159157 {
160158 int step;
161159
162− if (unlikely(current->audit_context))
163− audit_syscall_exit(AUDITSC_RESULT(regs->r3), regs->r3);
160+ audit_syscall_exit(regs);
164161
165162 step = test_thread_flag(TIF_SINGLESTEP);
166163 if (step || test_thread_flag(TIF_SYSCALL_TRACE))
arch/mips/Kconfig+1−0
@@ -2356,6 +2356,7 @@ config PCI · 2355 unmodified lines
23562356 depends on HW_HAS_PCI
23572357 select PCI_DOMAINS
23582358 select GENERIC_PCI_IOMAP
2359+ select NO_GENERIC_PCI_IOPORT_MAP
23592360 help
23602361 Find out whether you have a PCI motherboard. PCI is the name of a
23612362 bus system, i.e. the way the CPU talks to the other stuff inside
arch/mips/include/asm/ptrace.h+13−1
@@ -137,7 +137,19 @@ extern int ptrace_set_watch_regs(struct task_struct *child, · 136 unmodified lines
137137 */
138138 #define user_mode(regs) (((regs)->cp0_status & KU_MASK) == KU_USER)
139139
140−#define regs_return_value(_regs) ((_regs)->regs[2])
140+static inline int is_syscall_success(struct pt_regs *regs)
141+{
142+ return !regs->regs[7];
143+}
144+
145+static inline long regs_return_value(struct pt_regs *regs)
146+{
147+ if (is_syscall_success(regs))
148+ return regs->regs[2];
149+ else
150+ return -regs->regs[2];
151+}
152+
141153 #define instruction_pointer(regs) ((regs)->cp0_epc)
142154 #define profile_pc(regs) instruction_pointer(regs)
143155
arch/mips/kernel/ptrace.c+4−7
@@ -560,10 +560,9 @@ asmlinkage void syscall_trace_enter(struct pt_regs *regs) · 559 unmodified lines
560560 }
561561
562562 out:
563− if (unlikely(current->audit_context))
564− audit_syscall_entry(audit_arch(), regs->regs[2],
565− regs->regs[4], regs->regs[5],
566− regs->regs[6], regs->regs[7]);
563+ audit_syscall_entry(audit_arch(), regs->regs[2],
564+ regs->regs[4], regs->regs[5],
565+ regs->regs[6], regs->regs[7]);
567566 }
568567
569568 /*
@@ -572,9 +571,7 @@ out: · 2 unmodified lines
572571 */
573572 asmlinkage void syscall_trace_leave(struct pt_regs *regs)
574573 {
575− if (unlikely(current->audit_context))
576− audit_syscall_exit(AUDITSC_RESULT(regs->regs[7]),
577− -regs->regs[2]);
574+ audit_syscall_exit(regs);
578575
579576 if (!(current->ptrace & PT_PTRACED))
580577 return;
arch/mips/lib/iomap-pci.c+2−2
@@ -10,8 +10,8 @@ · 9 unmodified lines
1010 #include <linux/module.h>
1111 #include <asm/io.h>
1212
13−static void __iomem *ioport_map_pci(struct pci_dev *dev,
14− unsigned long port, unsigned int nr)
13+void __iomem *__pci_ioport_map(struct pci_dev *dev,
14+ unsigned long port, unsigned int nr)
1515 {
1616 struct pci_controller *ctrl = dev->bus->sysdata;
1717 unsigned long base = ctrl->io_map_base;
arch/powerpc/boot/dts/fsl/mpc8536si-post.dtsi+4−0
@@ -236,6 +236,10 @@ · 235 unmodified lines
236236 };
237237
238238 /include/ "pq3-esdhc-0.dtsi"
239+ sdhc@2e000 {
240+ compatible = "fsl,mpc8536-esdhc", "fsl,esdhc";
241+ };
242+
239243 /include/ "pq3-sec3.0-0.dtsi"
240244 /include/ "pq3-mpic.dtsi"
241245 /include/ "pq3-mpic-timer-B.dtsi"
arch/powerpc/boot/dts/fsl/p1010si-post.dtsi+2−1
@@ -158,7 +158,8 @@ · 157 unmodified lines
158158 /include/ "pq3-usb2-dr-0.dtsi"
159159 /include/ "pq3-esdhc-0.dtsi"
160160 sdhc@2e000 {
161− fsl,sdhci-auto-cmd12;
161+ compatible = "fsl,p1010-esdhc", "fsl,esdhc";
162+ sdhci,auto-cmd12;
162163 };
163164
164165 /include/ "pq3-sec4.4-0.dtsi"
arch/powerpc/boot/dts/fsl/p1020si-post.dtsi+4−0
@@ -145,6 +145,10 @@ · 144 unmodified lines
145145 /include/ "pq3-usb2-dr-1.dtsi"
146146
147147 /include/ "pq3-esdhc-0.dtsi"
148+ sdhc@2e000 {
149+ compatible = "fsl,p1020-esdhc", "fsl,esdhc";
150+ sdhci,auto-cmd12;
151+ };
148152 /include/ "pq3-sec3.3-0.dtsi"
149153
150154 /include/ "pq3-mpic.dtsi"
arch/powerpc/boot/dts/fsl/p1022si-post.dtsi+2−1
@@ -203,7 +203,8 @@ · 202 unmodified lines
203203
204204 /include/ "pq3-esdhc-0.dtsi"
205205 sdhc@2e000 {
206− fsl,sdhci-auto-cmd12;
206+ compatible = "fsl,p1022-esdhc", "fsl,esdhc";
207+ sdhci,auto-cmd12;
207208 };
208209
209210 /include/ "pq3-sec3.3-0.dtsi"
arch/powerpc/boot/dts/fsl/p2020si-post.dtsi+4−0
@@ -182,6 +182,10 @@ · 181 unmodified lines
182182 /include/ "pq3-etsec1-1.dtsi"
183183 /include/ "pq3-etsec1-2.dtsi"
184184 /include/ "pq3-esdhc-0.dtsi"
185+ sdhc@2e000 {
186+ compatible = "fsl,p2020-esdhc", "fsl,esdhc";
187+ };
188+
185189 /include/ "pq3-sec3.1-0.dtsi"
186190 /include/ "pq3-mpic.dtsi"
187191 /include/ "pq3-mpic-timer-B.dtsi"
arch/powerpc/boot/dts/p1020rdb.dtsi+6−7
@@ -1,7 +1,7 @@
11 /*
22 * P1020 RDB Device Tree Source stub (no addresses or top-level ranges)
33 *
4− * Copyright 2011 Freescale Semiconductor Inc.
4+ * Copyright 2011-2012 Freescale Semiconductor Inc.
55 *
66 * Redistribution and use in source and binary forms, with or without
77 * modification, are permitted provided that the following conditions are met:
@@ -190,17 +190,16 @@ · 182 unmodified lines
190190
191191 usb@22000 {
192192 phy_type = "ulpi";
193+ dr_mode = "host";
193194 };
194195
195− /* USB2 is shared with localbus, so it must be disabled
196− by default. We can't put 'status = "disabled";' here
197− since U-Boot doesn't clear the status property when
198− it enables USB2. OTOH, U-Boot does create a new node
199− when there isn't any. So, just comment it out.
196+ /* USB2 is shared with localbus. It is used
197+ only in case of SPI and SD boot after
198+ appropriate device-tree fixup done by uboot */
200199 usb@23000 {
201200 phy_type = "ulpi";
201+ dr_mode = "host";
202202 };
203− */
204203
205204 mdio@24000 {
206205 phy0: ethernet-phy@0 {
arch/powerpc/boot/dts/p1021mds.dts+2−1
@@ -1,7 +1,7 @@
11 /*
22 * P1021 MDS Device Tree Source
33 *
4− * Copyright 2010 Freescale Semiconductor Inc.
4+ * Copyright 2010,2012 Freescale Semiconductor Inc.
55 *
66 * This program is free software; you can redistribute it and/or modify it
77 * under the terms of the GNU General Public License as published by the
@@ -151,6 +151,7 @@ · 143 unmodified lines
151151
152152 usb@22000 {
153153 phy_type = "ulpi";
154+ dr_mode = "host";
154155 };
155156
156157 mdio@24000 {
arch/powerpc/boot/dts/p2020ds.dtsi+2−1
@@ -1,7 +1,7 @@
11 /*
22 * P2020DS Device Tree Source stub (no addresses or top-level ranges)
33 *
4− * Copyright 2011 Freescale Semiconductor Inc.
4+ * Copyright 2011-2012 Freescale Semiconductor Inc.
55 *
66 * Redistribution and use in source and binary forms, with or without
77 * modification, are permitted provided that the following conditions are met:
@@ -134,6 +134,7 @@ · 126 unmodified lines
134134 &board_soc {
135135 usb@22000 {
136136 phy_type = "ulpi";
137+ dr_mode = "host";
137138 };
138139
139140 mdio@24520 {
arch/powerpc/boot/dts/p2020rdb.dts+2−1
@@ -1,7 +1,7 @@
11 /*
22 * P2020 RDB Device Tree Source
33 *
4− * Copyright 2009-2011 Freescale Semiconductor Inc.
4+ * Copyright 2009-2012 Freescale Semiconductor Inc.
55 *
66 * This program is free software; you can redistribute it and/or modify it
77 * under the terms of the GNU General Public License as published by the
@@ -197,6 +197,7 @@ · 189 unmodified lines
197197
198198 usb@22000 {
199199 phy_type = "ulpi";
200+ dr_mode = "host";
200201 };
201202
202203 mdio@24520 {
arch/powerpc/configs/ppc64_defconfig+0−5
@@ -24,10 +24,6 @@ CONFIG_PPC_SPLPAR=y · 23 unmodified lines
2424 CONFIG_SCANLOG=m
2525 CONFIG_PPC_SMLPAR=y
2626 CONFIG_DTL=y
27−CONFIG_PPC_ISERIES=y
28−CONFIG_VIODASD=y
29−CONFIG_VIOCD=m
30−CONFIG_VIOTAPE=m
3127 CONFIG_PPC_MAPLE=y
3228 CONFIG_PPC_PASEMI=y
3329 CONFIG_PPC_PASEMI_IOMMU=y
@@ -259,7 +255,6 @@ CONFIG_PASEMI_MAC=y · 225 unmodified lines
259255 CONFIG_MLX4_EN=m
260256 CONFIG_QLGE=m
261257 CONFIG_BE2NET=m
262−CONFIG_ISERIES_VETH=m
263258 CONFIG_PPP=m
264259 CONFIG_PPP_ASYNC=m
265260 CONFIG_PPP_SYNC_TTY=m
arch/powerpc/include/asm/ppc-pci.h+5−0
@@ -142,6 +142,11 @@ static inline const char *eeh_pci_name(struct pci_dev *pdev) · 141 unmodified lines
142142 return pdev ? pci_name(pdev) : "<null>";
143143 }
144144
145+static inline const char *eeh_driver_name(struct pci_dev *pdev)
146+{
147+ return (pdev && pdev->driver) ? pdev->driver->name : "<null>";
148+}
149+
145150 #endif /* CONFIG_EEH */
146151
147152 #else /* CONFIG_PCI */
arch/powerpc/include/asm/ptrace.h+21−6
@@ -83,17 +83,32 @@ struct pt_regs { · 82 unmodified lines
8383
8484 #ifndef __ASSEMBLY__
8585
86−#define instruction_pointer(regs) ((regs)->nip)
87−#define user_stack_pointer(regs) ((regs)->gpr[1])
88−#define kernel_stack_pointer(regs) ((regs)->gpr[1])
89−#define regs_return_value(regs) ((regs)->gpr[3])
86+#define GET_IP(regs) ((regs)->nip)
87+#define GET_USP(regs) ((regs)->gpr[1])
88+#define GET_FP(regs) (0)
89+#define SET_FP(regs, val)
9090
9191 #ifdef CONFIG_SMP
9292 extern unsigned long profile_pc(struct pt_regs *regs);
93−#else
94−#define profile_pc(regs) instruction_pointer(regs)
93+#define profile_pc profile_pc
9594 #endif
9695
96+#include <asm-generic/ptrace.h>
97+
98+#define kernel_stack_pointer(regs) ((regs)->gpr[1])
99+static inline int is_syscall_success(struct pt_regs *regs)
100+{
101+ return !(regs->ccr & 0x10000000);
102+}
103+
104+static inline long regs_return_value(struct pt_regs *regs)
105+{
106+ if (is_syscall_success(regs))
107+ return regs->gpr[3];
108+ else
109+ return -regs->gpr[3];
110+}
111+
97112 #ifdef __powerpc64__
98113 #define user_mode(regs) ((((regs)->msr) >> MSR_PR_LG) & 0x1)
99114 #else
arch/powerpc/kernel/crash.c+1−1
@@ -46,7 +46,6 @@ · 45 unmodified lines
4646
4747 /* This keeps a track of which one is the crashing cpu. */
4848 int crashing_cpu = -1;
49−static atomic_t cpus_in_crash;
5049 static int time_to_dump;
5150
5251 #define CRASH_HANDLER_MAX 3
@@ -66,6 +65,7 @@ static int handle_fault(struct pt_regs *regs) · 13 unmodified lines
6665
6766 #ifdef CONFIG_SMP
6867
68+static atomic_t cpus_in_crash;
6969 void crash_ipi_callback(struct pt_regs *regs)
7070 {
7171 static cpumask_t cpus_state_saved = CPU_MASK_NONE;
arch/powerpc/kernel/entry_32.S+1−1
@@ -1213,7 +1213,7 @@ do_user_signal: /* r10 contains MSR_KERNEL here */ · 1212 unmodified lines
12131213 stw r3,_TRAP(r1)
12141214 2: addi r3,r1,STACK_FRAME_OVERHEAD
12151215 mr r4,r9
1216− bl do_signal
1216+ bl do_notify_resume
12171217 REST_NVGPRS(r1)
12181218 b recheck
12191219
arch/powerpc/kernel/entry_64.S+5−1
@@ -751,12 +751,16 @@ user_work: · 750 unmodified lines
751751
752752 andi. r0,r4,_TIF_NEED_RESCHED
753753 beq 1f
754+ li r5,1
755+ TRACE_AND_RESTORE_IRQ(r5);
754756 bl .schedule
755757 b .ret_from_except_lite
756758
757759 1: bl .save_nvgprs
760+ li r5,1
761+ TRACE_AND_RESTORE_IRQ(r5);
758762 addi r3,r1,STACK_FRAME_OVERHEAD
759− bl .do_signal
763+ bl .do_notify_resume
760764 b .ret_from_except
761765
762766 unrecov_restore:
arch/powerpc/kernel/exceptions-64s.S+1−1
@@ -774,8 +774,8 @@ alignment_common: · 773 unmodified lines
774774 program_check_common:
775775 EXCEPTION_PROLOG_COMMON(0x700, PACA_EXGEN)
776776 bl .save_nvgprs
777+ DISABLE_INTS
777778 addi r3,r1,STACK_FRAME_OVERHEAD
778− ENABLE_INTS
779779 bl .program_check_exception
780780 b .ret_from_except
781781
arch/powerpc/kernel/irq.c+5−1
@@ -118,10 +118,14 @@ static inline notrace void set_soft_enabled(unsigned long enable) · 117 unmodified lines
118118 static inline notrace void decrementer_check_overflow(void)
119119 {
120120 u64 now = get_tb_or_rtc();
121− u64 *next_tb = &__get_cpu_var(decrementers_next_tb);
121+ u64 *next_tb;
122+
123+ preempt_disable();
124+ next_tb = &__get_cpu_var(decrementers_next_tb);
122125
123126 if (now >= *next_tb)
124127 set_dec(1);
128+ preempt_enable();
125129 }
126130
127131 notrace void arch_local_irq_restore(unsigned long en)
arch/powerpc/kernel/legacy_serial.c+2−0
@@ -442,8 +442,10 @@ static void __init fixup_port_irq(int index, · 441 unmodified lines
442442
443443 port->irq = virq;
444444
445+#ifdef CONFIG_SERIAL_8250_FSL
445446 if (of_device_is_compatible(np, "fsl,ns16550"))
446447 port->handle_irq = fsl8250_handle_irq;
448+#endif
447449 }
448450
449451 static void __init fixup_port_pio(int index,
arch/powerpc/kernel/perf_event.c+7−1
@@ -865,6 +865,7 @@ static void power_pmu_start(struct perf_event *event, int ef_flags) · 864 unmodified lines
865865 {
866866 unsigned long flags;
867867 s64 left;
868+ unsigned long val;
868869
869870 if (!event->hw.idx || !event->hw.sample_period)
870871 return;
@@ -880,7 +881,12 @@ static void power_pmu_start(struct perf_event *event, int ef_flags) · 9 unmodified lines
880881
881882 event->hw.state = 0;
882883 left = local64_read(&event->hw.period_left);
883− write_pmc(event->hw.idx, left);
884+
885+ val = 0;
886+ if (left < 0x80000000L)
887+ val = 0x80000000L - left;
888+
889+ write_pmc(event->hw.idx, val);
884890
885891 perf_event_update_userpage(event);
886892 perf_pmu_enable(event->pmu);
arch/powerpc/kernel/process.c+3−3
@@ -566,12 +566,12 @@ static void show_instructions(struct pt_regs *regs) · 565 unmodified lines
566566 */
567567 if (!__kernel_text_address(pc) ||
568568 __get_user(instr, (unsigned int __user *)pc)) {
569− printk("XXXXXXXX ");
569+ printk(KERN_CONT "XXXXXXXX ");
570570 } else {
571571 if (regs->nip == pc)
572− printk("<%08x> ", instr);
572+ printk(KERN_CONT "<%08x> ", instr);
573573 else
574− printk("%08x ", instr);
574+ printk(KERN_CONT "%08x ", instr);
575575 }
576576
577577 pc += sizeof(int);
arch/powerpc/kernel/ptrace.c+13−17
@@ -1724,22 +1724,20 @@ long do_syscall_trace_enter(struct pt_regs *regs) · 1723 unmodified lines
17241724 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
17251725 trace_sys_enter(regs, regs->gpr[0]);
17261726
1727− if (unlikely(current->audit_context)) {
17281727 #ifdef CONFIG_PPC64
1729− if (!is_32bit_task())
1730− audit_syscall_entry(AUDIT_ARCH_PPC64,
1731− regs->gpr[0],
1732− regs->gpr[3], regs->gpr[4],
1733− regs->gpr[5], regs->gpr[6]);
1734− else
1728+ if (!is_32bit_task())
1729+ audit_syscall_entry(AUDIT_ARCH_PPC64,
1730+ regs->gpr[0],
1731+ regs->gpr[3], regs->gpr[4],
1732+ regs->gpr[5], regs->gpr[6]);
1733+ else
17351734 #endif
1736− audit_syscall_entry(AUDIT_ARCH_PPC,
1737− regs->gpr[0],
1738− regs->gpr[3] & 0xffffffff,
1739− regs->gpr[4] & 0xffffffff,
1740− regs->gpr[5] & 0xffffffff,
1741− regs->gpr[6] & 0xffffffff);
1742− }
1735+ audit_syscall_entry(AUDIT_ARCH_PPC,
1736+ regs->gpr[0],
1737+ regs->gpr[3] & 0xffffffff,
1738+ regs->gpr[4] & 0xffffffff,
1739+ regs->gpr[5] & 0xffffffff,
1740+ regs->gpr[6] & 0xffffffff);
17431741
17441742 return ret ?: regs->gpr[0];
17451743 }
@@ -1748,9 +1746,7 @@ void do_syscall_trace_leave(struct pt_regs *regs) · 2 unmodified lines
17481746 {
17491747 int step;
17501748
1751− if (unlikely(current->audit_context))
1752− audit_syscall_exit((regs->ccr&0x10000000)?AUDITSC_FAILURE:AUDITSC_SUCCESS,
1753− regs->result);
1749+ audit_syscall_exit(regs);
17541750
17551751 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
17561752 trace_sys_exit(regs, regs->result);
arch/powerpc/kernel/rtas.c+3−2
@@ -716,7 +716,6 @@ static int __rtas_suspend_last_cpu(struct rtas_suspend_me_data *data, int wake_w · 715 unmodified lines
716716 int cpu;
717717
718718 slb_set_size(SLB_MIN_SIZE);
719− stop_topology_update();
720719 printk(KERN_DEBUG "calling ibm,suspend-me on cpu %i\n", smp_processor_id());
721720
722721 while (rc == H_MULTI_THREADS_ACTIVE && !atomic_read(&data->done) &&
@@ -732,7 +731,6 @@ static int __rtas_suspend_last_cpu(struct rtas_suspend_me_data *data, int wake_w · 9 unmodified lines
732731 rc = atomic_read(&data->error);
733732
734733 atomic_set(&data->error, rc);
735− start_topology_update();
736734 pSeries_coalesce_init();
737735
738736 if (wake_when_done) {
@@ -846,6 +844,7 @@ int rtas_ibm_suspend_me(struct rtas_args *args) · 107 unmodified lines
846844 atomic_set(&data.error, 0);
847845 data.token = rtas_token("ibm,suspend-me");
848846 data.complete = &done;
847+ stop_topology_update();
849848
850849 /* Call function on all CPUs. One of us will make the
851850 * rtas call
@@ -858,6 +857,8 @@ int rtas_ibm_suspend_me(struct rtas_args *args) · 6 unmodified lines
858857 if (atomic_read(&data.error) != 0)
859858 printk(KERN_ERR "Error doing global join\n");
860859
860+ start_topology_update();
861+
861862 return atomic_read(&data.error);
862863 }
863864 #else /* CONFIG_PPC_PSERIES */
arch/powerpc/kernel/signal.c+8−4
@@ -11,6 +11,7 @@ · 10 unmodified lines
1111
1212 #include <linux/tracehook.h>
1313 #include <linux/signal.h>
14+#include <linux/key.h>
1415 #include <asm/hw_breakpoint.h>
1516 #include <asm/uaccess.h>
1617 #include <asm/unistd.h>
@@ -113,8 +114,9 @@ static void check_syscall_restart(struct pt_regs *regs, struct k_sigaction *ka, · 96 unmodified lines
113114 }
114115 }
115116
116−static int do_signal_pending(sigset_t *oldset, struct pt_regs *regs)
117+static int do_signal(struct pt_regs *regs)
117118 {
119+ sigset_t *oldset;
118120 siginfo_t info;
119121 int signr;
120122 struct k_sigaction ka;
@@ -123,7 +125,7 @@ static int do_signal_pending(sigset_t *oldset, struct pt_regs *regs) · 2 unmodified lines
123125
124126 if (current_thread_info()->local_flags & _TLF_RESTORE_SIGMASK)
125127 oldset = &current->saved_sigmask;
126− else if (!oldset)
128+ else
127129 oldset = &current->blocked;
128130
129131 signr = get_signal_to_deliver(&info, &ka, regs, NULL);
@@ -191,14 +193,16 @@ static int do_signal_pending(sigset_t *oldset, struct pt_regs *regs) · 61 unmodified lines
191193 return ret;
192194 }
193195
194−void do_signal(struct pt_regs *regs, unsigned long thread_info_flags)
196+void do_notify_resume(struct pt_regs *regs, unsigned long thread_info_flags)
195197 {
196198 if (thread_info_flags & _TIF_SIGPENDING)
197− do_signal_pending(NULL, regs);
199+ do_signal(regs);
198200
199201 if (thread_info_flags & _TIF_NOTIFY_RESUME) {
200202 clear_thread_flag(TIF_NOTIFY_RESUME);
201203 tracehook_notify_resume(regs);
204+ if (current->replacement_session_keyring)
205+ key_replace_session_keyring();
202206 }
203207 }
204208
arch/powerpc/kernel/signal.h+1−1
@@ -12,7 +12,7 @@ · 11 unmodified lines
1212
1313 #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
1414
15−extern void do_signal(struct pt_regs *regs, unsigned long thread_info_flags);
15+extern void do_notify_resume(struct pt_regs *regs, unsigned long thread_info_flags);
1616
1717 extern void __user * get_sigframe(struct k_sigaction *ka, struct pt_regs *regs,
1818 size_t frame_size, int is_32);
arch/powerpc/platforms/85xx/p1022_ds.c+1−0
@@ -25,6 +25,7 @@ · 24 unmodified lines
2525
2626 #include <sysdev/fsl_soc.h>
2727 #include <sysdev/fsl_pci.h>
28+#include <asm/udbg.h>
2829 #include <asm/fsl_guts.h>
2930 #include "smp.h"
3031
arch/powerpc/platforms/powernv/pci-ioda.c+27−16
@@ -204,11 +204,10 @@ static void __devinit pnv_ioda_offset_bus(struct pci_bus *bus, · 203 unmodified lines
204204 pr_devel(" -> OBR %s [%x] +%016llx\n",
205205 bus->self ? pci_name(bus->self) : "root", flags, offset);
206206
207− for (i = 0; i < 2; i++) {
208− r = bus->resource[i];
207+ pci_bus_for_each_resource(bus, r, i) {
209208 if (r && (r->flags & flags)) {
210− bus->resource[i]->start += offset;
211− bus->resource[i]->end += offset;
209+ r->start += offset;
210+ r->end += offset;
212211 }
213212 }
214213 list_for_each_entry(dev, &bus->devices, bus_list)
@@ -288,12 +287,17 @@ static void __devinit pnv_ioda_calc_bus(struct pci_bus *bus, unsigned int flags, · 73 unmodified lines
288287 * assignment algorithm is going to be uber-trivial for now, we
289288 * can try to be smarter later at filling out holes.
290289 */
291− start = bus->self ? 0 : bus->resource[bres]->start;
292−
293− /* Don't hand out IO 0 */
294− if ((flags & IORESOURCE_IO) && !bus->self)
295− start += 0x1000;
296−
290+ if (bus->self) {
291+ /* No offset for downstream bridges */
292+ start = 0;
293+ } else {
294+ /* Offset from the root */
295+ if (flags & IORESOURCE_IO)
296+ /* Don't hand out IO 0 */
297+ start = hose->io_resource.start + 0x1000;
298+ else
299+ start = hose->mem_resources[0].start;
300+ }
297301 while(!list_empty(&head)) {
298302 w = list_first_entry(&head, struct resource_wrap, link);
299303 list_del(&w->link);
@@ -321,13 +325,20 @@ static void __devinit pnv_ioda_calc_bus(struct pci_bus *bus, unsigned int flags, · 21 unmodified lines
321325 empty:
322326 /* Only setup P2P's, not the PHB itself */
323327 if (bus->self) {
324− WARN_ON(bus->resource[bres] == NULL);
325− bus->resource[bres]->start = 0;
326− bus->resource[bres]->flags = (*size) ? flags : 0;
327− bus->resource[bres]->end = (*size) ? (*size - 1) : 0;
328+ struct resource *res = bus->resource[bres];
329+
330+ if (WARN_ON(res == NULL))
331+ return;
328332
329− /* Clear prefetch bus resources for now */
330− bus->resource[2]->flags = 0;
333+ /*
334+ * FIXME: We should probably export and call
335+ * pci_bridge_check_ranges() to properly re-initialize
336+ * the PCI portion of the flags here, and to detect
337+ * what the bridge actually supports.
338+ */
339+ res->start = 0;
340+ res->flags = (*size) ? flags : 0;
341+ res->end = (*size) ? (*size - 1) : 0;
331342 }
332343
333344 pr_devel("<- CBR %s [%x] *size=%016llx *align=%016llx\n",
arch/powerpc/platforms/powernv/pci.c+14−8
@@ -52,32 +52,38 @@ static int pnv_msi_check_device(struct pci_dev* pdev, int nvec, int type) · 51 unmodified lines
5252
5353 static unsigned int pnv_get_one_msi(struct pnv_phb *phb)
5454 {
55− unsigned int id;
55+ unsigned long flags;
56+ unsigned int id, rc;
57+
58+ spin_lock_irqsave(&phb->lock, flags);
5659
57− spin_lock(&phb->lock);
5860 id = find_next_zero_bit(phb->msi_map, phb->msi_count, phb->msi_next);
5961 if (id >= phb->msi_count && phb->msi_next)
6062 id = find_next_zero_bit(phb->msi_map, phb->msi_count, 0);
6163 if (id >= phb->msi_count) {
62− spin_unlock(&phb->lock);
63− return 0;
64+ rc = 0;
65+ goto out;
6466 }
6567 __set_bit(id, phb->msi_map);
66− spin_unlock(&phb->lock);
67− return id + phb->msi_base;
68+ rc = id + phb->msi_base;
69+out:
70+ spin_unlock_irqrestore(&phb->lock, flags);
71+ return rc;
6872 }
6973
7074 static void pnv_put_msi(struct pnv_phb *phb, unsigned int hwirq)
7175 {
76+ unsigned long flags;
7277 unsigned int id;
7378
7479 if (WARN_ON(hwirq < phb->msi_base ||
7580 hwirq >= (phb->msi_base + phb->msi_count)))
7681 return;
7782 id = hwirq - phb->msi_base;
78− spin_lock(&phb->lock);
83+
84+ spin_lock_irqsave(&phb->lock, flags);
7985 __clear_bit(id, phb->msi_map);
80− spin_unlock(&phb->lock);
86+ spin_unlock_irqrestore(&phb->lock, flags);
8187 }
8288
8389 static int pnv_setup_msi_irqs(struct pci_dev *pdev, int nvec, int type)
arch/powerpc/platforms/pseries/Kconfig+1−1
@@ -122,7 +122,7 @@ config DTL · 121 unmodified lines
122122 Say N if you are unsure.
123123
124124 config PSERIES_IDLE
125− tristate "Cpuidle driver for pSeries platforms"
125+ bool "Cpuidle driver for pSeries platforms"
126126 depends on CPU_IDLE
127127 depends on PPC_PSERIES
128128 default y
arch/powerpc/platforms/pseries/eeh.c+2−2
@@ -551,9 +551,9 @@ int eeh_dn_check_failure(struct device_node *dn, struct pci_dev *dev) · 550 unmodified lines
551551 printk (KERN_ERR "EEH: %d reads ignored for recovering device at "
552552 "location=%s driver=%s pci addr=%s\n",
553553 pdn->eeh_check_count, location,
554− dev->driver->name, eeh_pci_name(dev));
554+ eeh_driver_name(dev), eeh_pci_name(dev));
555555 printk (KERN_ERR "EEH: Might be infinite loop in %s driver\n",
556− dev->driver->name);
556+ eeh_driver_name(dev));
557557 dump_stack();
558558 }
559559 goto dn_unlock;
arch/powerpc/platforms/pseries/suspend.c+5−1
@@ -24,6 +24,7 @@ · 23 unmodified lines
2424 #include <asm/machdep.h>
2525 #include <asm/mmu.h>
2626 #include <asm/rtas.h>
27+#include <asm/topology.h>
2728
2829 static u64 stream_id;
2930 static struct device suspend_dev;
@@ -138,8 +139,11 @@ static ssize_t store_hibernate(struct device *dev, · 108 unmodified lines
138139 ssleep(1);
139140 } while (rc == -EAGAIN);
140141
141− if (!rc)
142+ if (!rc) {
143+ stop_topology_update();
142144 rc = pm_suspend(PM_SUSPEND_MEM);
145+ start_topology_update();
146+ }
143147
144148 stream_id = 0;
145149
arch/powerpc/platforms/wsp/ics.c+1−1
@@ -346,7 +346,7 @@ static int wsp_chip_set_affinity(struct irq_data *d, · 345 unmodified lines
346346 * For the moment only implement delivery to all cpus or one cpu.
347347 * Get current irq_server for the given irq
348348 */
349− ret = cache_hwirq_map(ics, d->irq, cpumask);
349+ ret = cache_hwirq_map(ics, hw_irq, cpumask);
350350 if (ret == -1) {
351351 char cpulist[128];
352352 cpumask_scnprintf(cpulist, sizeof(cpulist), cpumask);
arch/powerpc/platforms/wsp/smp.c+1−1
@@ -71,7 +71,7 @@ int __devinit smp_a2_kick_cpu(int nr) · 70 unmodified lines
7171
7272 static int __init smp_a2_probe(void)
7373 {
74− return cpus_weight(cpu_possible_map);
74+ return num_possible_cpus();
7575 }
7676
7777 static struct smp_ops_t a2_smp_ops = {
arch/powerpc/platforms/wsp/wsp_pci.c+4−4
@@ -468,15 +468,15 @@ static void __init wsp_pcie_configure_hw(struct pci_controller *hose) · 467 unmodified lines
468468 #define DUMP_REG(x) \
469469 pr_debug("%-30s : 0x%016llx\n", #x, in_be64(hose->cfg_data + x))
470470
471−#ifdef CONFIG_WSP_DD1_WORKAROUND_BAD_PCIE_CLASS
472− /* WSP DD1 has a bogus class code by default in the PCI-E
473− * root complex's built-in P2P bridge */
471+ /*
472+ * Some WSP variants has a bogus class code by default in the PCI-E
473+ * root complex's built-in P2P bridge
474+ */
474475 val = in_be64(hose->cfg_data + PCIE_REG_SYS_CFG1);
475476 pr_debug("PCI-E SYS_CFG1 : 0x%llx\n", val);
476477 out_be64(hose->cfg_data + PCIE_REG_SYS_CFG1,
477478 (val & ~PCIE_REG_SYS_CFG1_CLASS_CODE) | (PCI_CLASS_BRIDGE_PCI << 8));
478479 pr_debug("PCI-E SYS_CFG1 : 0x%llx\n", in_be64(hose->cfg_data + PCIE_REG_SYS_CFG1));
479−#endif /* CONFIG_WSP_DD1_WORKAROUND_BAD_PCIE_CLASS */
480480
481481 #ifdef CONFIG_WSP_DD1_WORKAROUND_DD1_TCE_BUGS
482482 /* XXX Disable TCE caching, it doesn't work on DD1 */
arch/powerpc/sysdev/fsl_pci.c+32−21
@@ -205,12 +205,12 @@ static void __init setup_pci_atmu(struct pci_controller *hose, · 204 unmodified lines
205205
206206 if (paddr_hi == paddr_lo) {
207207 pr_err("%s: No outbound window space\n", name);
208− return ;
208+ goto out;
209209 }
210210
211211 if (paddr_lo == 0) {
212212 pr_err("%s: No space for inbound window\n", name);
213− return ;
213+ goto out;
214214 }
215215
216216 /* setup PCSRBAR/PEXCSRBAR */
@@ -357,6 +357,7 @@ static void __init setup_pci_atmu(struct pci_controller *hose, · 140 unmodified lines
357357 (u64)hose->dma_window_size);
358358 }
359359
360+out:
360361 iounmap(pci);
361362 }
362363
@@ -384,26 +385,36 @@ static void __init setup_pci_cmd(struct pci_controller *hose) · 21 unmodified lines
384385 void fsl_pcibios_fixup_bus(struct pci_bus *bus)
385386 {
386387 struct pci_controller *hose = pci_bus_to_host(bus);
387− int i;
388−
389− if ((bus->parent == hose->bus) &&
390− ((fsl_pcie_bus_fixup &&
391− early_find_capability(hose, 0, 0, PCI_CAP_ID_EXP)) ||
392− (hose->indirect_type & PPC_INDIRECT_TYPE_NO_PCIE_LINK)))
393− {
394− for (i = 0; i < 4; ++i) {
388+ int i, is_pcie = 0, no_link;
389+
390+ /* The root complex bridge comes up with bogus resources,
391+ * we copy the PHB ones in.
392+ *
393+ * With the current generic PCI code, the PHB bus no longer
394+ * has bus->resource[0..4] set, so things are a bit more
395+ * tricky.
396+ */
397+
398+ if (fsl_pcie_bus_fixup)
399+ is_pcie = early_find_capability(hose, 0, 0, PCI_CAP_ID_EXP);
400+ no_link = !!(hose->indirect_type & PPC_INDIRECT_TYPE_NO_PCIE_LINK);
401+
402+ if (bus->parent == hose->bus && (is_pcie || no_link)) {
403+ for (i = 0; i < PCI_BRIDGE_RESOURCE_NUM; ++i) {
395404 struct resource *res = bus->resource[i];
396− struct resource *par = bus->parent->resource[i];
397− if (res) {
398− res->start = 0;
399− res->end = 0;
400− res->flags = 0;
401− }
402− if (res && par) {
403− res->start = par->start;
404− res->end = par->end;
405− res->flags = par->flags;
406− }
405+ struct resource *par;
406+
407+ if (!res)
408+ continue;
409+ if (i == 0)
410+ par = &hose->io_resource;
411+ else if (i < 4)
412+ par = &hose->mem_resources[i-1];
413+ else par = NULL;
414+
415+ res->start = par ? par->start : 0;
416+ res->end = par ? par->end : 0;
417+ res->flags = par ? par->flags : 0;
407418 }
408419 }
409420 }
arch/s390/Makefile+0−1
@@ -88,7 +88,6 @@ KBUILD_CFLAGS += -pipe -fno-strength-reduce -Wno-sign-compare · 87 unmodified lines
8888 KBUILD_AFLAGS += $(aflags-y)
8989
9090 OBJCOPYFLAGS := -O binary
91−LDFLAGS_vmlinux := -e start
9291
9392 head-y := arch/s390/kernel/head.o
9493 head-y += arch/s390/kernel/$(if $(CONFIG_64BIT),head64.o,head31.o)
arch/s390/include/asm/kexec.h+18−0
@@ -42,6 +42,24 @@ · 41 unmodified lines
4242 /* The native architecture */
4343 #define KEXEC_ARCH KEXEC_ARCH_S390
4444
45+/*
46+ * Size for s390x ELF notes per CPU
47+ *
48+ * Seven notes plus zero note at the end: prstatus, fpregset, timer,
49+ * tod_cmp, tod_reg, control regs, and prefix
50+ */
51+#define KEXEC_NOTE_BYTES \
52+ (ALIGN(sizeof(struct elf_note), 4) * 8 + \
53+ ALIGN(sizeof("CORE"), 4) * 7 + \
54+ ALIGN(sizeof(struct elf_prstatus), 4) + \
55+ ALIGN(sizeof(elf_fpregset_t), 4) + \
56+ ALIGN(sizeof(u64), 4) + \
57+ ALIGN(sizeof(u64), 4) + \
58+ ALIGN(sizeof(u32), 4) + \
59+ ALIGN(sizeof(u64) * 16, 4) + \
60+ ALIGN(sizeof(u32), 4) \
61+ )
62+
4563 /* Provide a dummy definition to avoid build failures. */
4664 static inline void crash_setup_regs(struct pt_regs *newregs,
4765 struct pt_regs *oldregs) { }
arch/s390/include/asm/ptrace.h+5−1
@@ -541,9 +541,13 @@ struct user_regs_struct · 540 unmodified lines
541541 #define user_mode(regs) (((regs)->psw.mask & PSW_MASK_PSTATE) != 0)
542542 #define instruction_pointer(regs) ((regs)->psw.addr & PSW_ADDR_INSN)
543543 #define user_stack_pointer(regs)((regs)->gprs[15])
544−#define regs_return_value(regs)((regs)->gprs[2])
545544 #define profile_pc(regs) instruction_pointer(regs)
546545
546+static inline long regs_return_value(struct pt_regs *regs)
547+{
548+ return regs->gprs[2];
549+}
550+
547551 int regs_query_register_offset(const char *name);
548552 const char *regs_query_register_name(unsigned int offset);
549553 unsigned long regs_get_register(struct pt_regs *regs, unsigned int offset);
arch/s390/kernel/compat_wrapper.S+1−1
@@ -662,7 +662,7 @@ ENTRY(sys32_getresuid16_wrapper) · 661 unmodified lines
662662 ENTRY(sys32_poll_wrapper)
663663 llgtr %r2,%r2 # struct pollfd *
664664 llgfr %r3,%r3 # unsigned int
665− lgfr %r4,%r4 # long
665+ lgfr %r4,%r4 # int
666666 jg sys_poll # branch to system call
667667
668668 ENTRY(sys32_setresgid16_wrapper)
arch/s390/kernel/process.c+3−2
@@ -76,7 +76,6 @@ static void default_idle(void) · 75 unmodified lines
7676 if (test_thread_flag(TIF_MCCK_PENDING)) {
7777 local_mcck_enable();
7878 local_irq_enable();
79− s390_handle_mcck();
8079 return;
8180 }
8281 trace_hardirqs_on();
@@ -93,10 +92,12 @@ void cpu_idle(void) · 10 unmodified lines
9392 for (;;) {
9493 tick_nohz_idle_enter();
9594 rcu_idle_enter();
96− while (!need_resched())
95+ while (!need_resched() && !test_thread_flag(TIF_MCCK_PENDING))
9796 default_idle();
9897 rcu_idle_exit();
9998 tick_nohz_idle_exit();
99+ if (test_thread_flag(TIF_MCCK_PENDING))
100+ s390_handle_mcck();
100101 preempt_enable_no_resched();
101102 schedule();
102103 preempt_disable();
arch/s390/kernel/ptrace.c+6−9
@@ -740,20 +740,17 @@ asmlinkage long do_syscall_trace_enter(struct pt_regs *regs) · 739 unmodified lines
740740 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
741741 trace_sys_enter(regs, regs->gprs[2]);
742742
743− if (unlikely(current->audit_context))
744− audit_syscall_entry(is_compat_task() ?
745− AUDIT_ARCH_S390 : AUDIT_ARCH_S390X,
746− regs->gprs[2], regs->orig_gpr2,
747− regs->gprs[3], regs->gprs[4],
748− regs->gprs[5]);
743+ audit_syscall_entry(is_compat_task() ?
744+ AUDIT_ARCH_S390 : AUDIT_ARCH_S390X,
745+ regs->gprs[2], regs->orig_gpr2,
746+ regs->gprs[3], regs->gprs[4],
747+ regs->gprs[5]);
749748 return ret ?: regs->gprs[2];
750749 }
751750
752751 asmlinkage void do_syscall_trace_exit(struct pt_regs *regs)
753752 {
754− if (unlikely(current->audit_context))
755− audit_syscall_exit(AUDITSC_RESULT(regs->gprs[2]),
756− regs->gprs[2]);
753+ audit_syscall_exit(regs);
757754
758755 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
759756 trace_sys_exit(regs, regs->gprs[2]);
arch/s390/kernel/time.c+5−2
@@ -113,11 +113,14 @@ static void fixup_clock_comparator(unsigned long long delta) · 112 unmodified lines
113113 static int s390_next_ktime(ktime_t expires,
114114 struct clock_event_device *evt)
115115 {
116+ struct timespec ts;
116117 u64 nsecs;
117118
118− nsecs = ktime_to_ns(ktime_sub(expires, ktime_get_monotonic_offset()));
119+ ts.tv_sec = ts.tv_nsec = 0;
120+ monotonic_to_bootbased(&ts);
121+ nsecs = ktime_to_ns(ktime_add(timespec_to_ktime(ts), expires));
119122 do_div(nsecs, 125);
120− S390_lowcore.clock_comparator = TOD_UNIX_EPOCH + (nsecs << 9);
123+ S390_lowcore.clock_comparator = sched_clock_base_cc + (nsecs << 9);
121124 set_clock_comparator(S390_lowcore.clock_comparator);
122125 return 0;
123126 }
arch/s390/kernel/vmlinux.lds.S+2−2
@@ -9,12 +9,12 @@ · 8 unmodified lines
99 #ifndef CONFIG_64BIT
1010 OUTPUT_FORMAT("elf32-s390", "elf32-s390", "elf32-s390")
1111 OUTPUT_ARCH(s390)
12−ENTRY(_start)
12+ENTRY(startup)
1313 jiffies = jiffies_64 + 4;
1414 #else
1515 OUTPUT_FORMAT("elf64-s390", "elf64-s390", "elf64-s390")
1616 OUTPUT_ARCH(s390:64-bit)
17−ENTRY(_start)
17+ENTRY(startup)
1818 jiffies = jiffies_64;
1919 #endif
2020
arch/s390/mm/pgtable.c+1−1
@@ -574,7 +574,7 @@ static inline void page_table_free_pgste(unsigned long *table) · 573 unmodified lines
574574 page = pfn_to_page(__pa(table) >> PAGE_SHIFT);
575575 mp = (struct gmap_pgtable *) page->index;
576576 BUG_ON(!list_empty(&mp->mapper));
577− pgtable_page_ctor(page);
577+ pgtable_page_dtor(page);
578578 atomic_set(&page->_mapcount, -1);
579579 kfree(mp);
580580 __free_page(page);
arch/score/kernel/entry.S+1−1
@@ -408,7 +408,7 @@ ENTRY(handle_sys) · 407 unmodified lines
408408 sw r9, [r0, PT_EPC]
409409
410410 cmpi.c r27, __NR_syscalls # check syscall number
411− bgtu illegal_syscall
411+ bgeu illegal_syscall
412412
413413 slli r8, r27, 2 # get syscall routine
414414 la r11, sys_call_table
arch/sh/Kconfig+1−0
@@ -859,6 +859,7 @@ config PCI · 858 unmodified lines
859859 depends on SYS_SUPPORTS_PCI
860860 select PCI_DOMAINS
861861 select GENERIC_PCI_IOMAP
862+ select NO_GENERIC_PCI_IOPORT_MAP
862863 help
863864 Find out whether you have a PCI motherboard. PCI is the name of a
864865 bus system, i.e. the way the CPU talks to the other stuff inside
arch/sh/drivers/pci/pci.c+2−2
@@ -356,8 +356,8 @@ int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, · 355 unmodified lines
356356
357357 #ifndef CONFIG_GENERIC_IOMAP
358358
359−static void __iomem *ioport_map_pci(struct pci_dev *dev,
360− unsigned long port, unsigned int nr)
359+void __iomem *__pci_ioport_map(struct pci_dev *dev,
360+ unsigned long port, unsigned int nr)
361361 {
362362 struct pci_channel *chan = dev->sysdata;
363363
arch/sh/include/asm/ptrace_32.h+4−1
@@ -76,7 +76,10 @@ struct pt_dspregs { · 75 unmodified lines
7676 #ifdef __KERNEL__
7777
7878 #define MAX_REG_OFFSET offsetof(struct pt_regs, tra)
79−#define regs_return_value(_regs) ((_regs)->regs[0])
79+static inline long regs_return_value(struct pt_regs *regs)
80+{
81+ return regs->regs[0];
82+}
8083
8184 #endif /* __KERNEL__ */
8285
arch/sh/include/asm/ptrace_64.h+4−1
@@ -13,7 +13,10 @@ struct pt_regs { · 12 unmodified lines
1313 #ifdef __KERNEL__
1414
1515 #define MAX_REG_OFFSET offsetof(struct pt_regs, tregs[7])
16−#define regs_return_value(_regs) ((_regs)->regs[3])
16+static inline long regs_return_value(struct pt_regs *regs)
17+{
18+ return regs->regs[3];
19+}
1720
1821 #endif /* __KERNEL__ */
1922
arch/sh/kernel/ptrace_32.c+4−7
@@ -518,10 +518,9 @@ asmlinkage long do_syscall_trace_enter(struct pt_regs *regs) · 517 unmodified lines
518518 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
519519 trace_sys_enter(regs, regs->regs[0]);
520520
521− if (unlikely(current->audit_context))
522− audit_syscall_entry(audit_arch(), regs->regs[3],
523− regs->regs[4], regs->regs[5],
524− regs->regs[6], regs->regs[7]);
521+ audit_syscall_entry(audit_arch(), regs->regs[3],
522+ regs->regs[4], regs->regs[5],
523+ regs->regs[6], regs->regs[7]);
525524
526525 return ret ?: regs->regs[0];
527526 }
@@ -530,9 +529,7 @@ asmlinkage void do_syscall_trace_leave(struct pt_regs *regs) · 2 unmodified lines
530529 {
531530 int step;
532531
533− if (unlikely(current->audit_context))
534− audit_syscall_exit(AUDITSC_RESULT(regs->regs[0]),
535− regs->regs[0]);
532+ audit_syscall_exit(regs);
536533
537534 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
538535 trace_sys_exit(regs, regs->regs[0]);
arch/sh/kernel/ptrace_64.c+4−7
@@ -536,10 +536,9 @@ asmlinkage long long do_syscall_trace_enter(struct pt_regs *regs) · 535 unmodified lines
536536 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
537537 trace_sys_enter(regs, regs->regs[9]);
538538
539− if (unlikely(current->audit_context))
540− audit_syscall_entry(audit_arch(), regs->regs[1],
541− regs->regs[2], regs->regs[3],
542− regs->regs[4], regs->regs[5]);
539+ audit_syscall_entry(audit_arch(), regs->regs[1],
540+ regs->regs[2], regs->regs[3],
541+ regs->regs[4], regs->regs[5]);
543542
544543 return ret ?: regs->regs[9];
545544 }
@@ -548,9 +547,7 @@ asmlinkage void do_syscall_trace_leave(struct pt_regs *regs) · 2 unmodified lines
548547 {
549548 int step;
550549
551− if (unlikely(current->audit_context))
552− audit_syscall_exit(AUDITSC_RESULT(regs->regs[9]),
553− regs->regs[9]);
550+ audit_syscall_exit(regs);
554551
555552 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
556553 trace_sys_exit(regs, regs->regs[9]);
arch/sparc/Kconfig+1−0
@@ -33,6 +33,7 @@ config SPARC · 32 unmodified lines
3333 config SPARC32
3434 def_bool !64BIT
3535 select GENERIC_ATOMIC64
36+ select CLZ_TAB
3637
3738 config SPARC64
3839 def_bool 64BIT
arch/sparc/include/asm/ptrace.h+9−1
@@ -207,7 +207,15 @@ do { current_thread_info()->syscall_noerror = 1; \ · 206 unmodified lines
207207 #define instruction_pointer(regs) ((regs)->tpc)
208208 #define instruction_pointer_set(regs, val) ((regs)->tpc = (val))
209209 #define user_stack_pointer(regs) ((regs)->u_regs[UREG_FP])
210−#define regs_return_value(regs) ((regs)->u_regs[UREG_I0])
210+static inline int is_syscall_success(struct pt_regs *regs)
211+{
212+ return !(regs->tstate & (TSTATE_XCARRY | TSTATE_ICARRY));
213+}
214+
215+static inline long regs_return_value(struct pt_regs *regs)
216+{
217+ return regs->u_regs[UREG_I0];
218+}
211219 #ifdef CONFIG_SMP
212220 extern unsigned long profile_pc(struct pt_regs *);
213221 #else
arch/sparc/kernel/ptrace_64.c+9−19
@@ -1071,32 +1071,22 @@ asmlinkage int syscall_trace_enter(struct pt_regs *regs) · 1070 unmodified lines
10711071 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
10721072 trace_sys_enter(regs, regs->u_regs[UREG_G1]);
10731073
1074− if (unlikely(current->audit_context) && !ret)
1075− audit_syscall_entry((test_thread_flag(TIF_32BIT) ?
1076− AUDIT_ARCH_SPARC :
1077− AUDIT_ARCH_SPARC64),
1078− regs->u_regs[UREG_G1],
1079− regs->u_regs[UREG_I0],
1080− regs->u_regs[UREG_I1],
1081− regs->u_regs[UREG_I2],
1082− regs->u_regs[UREG_I3]);
1074+ audit_syscall_entry((test_thread_flag(TIF_32BIT) ?
1075+ AUDIT_ARCH_SPARC :
1076+ AUDIT_ARCH_SPARC64),
1077+ regs->u_regs[UREG_G1],
1078+ regs->u_regs[UREG_I0],
1079+ regs->u_regs[UREG_I1],
1080+ regs->u_regs[UREG_I2],
1081+ regs->u_regs[UREG_I3]);
10831082
10841083 return ret;
10851084 }
10861085
10871086 asmlinkage void syscall_trace_leave(struct pt_regs *regs)
10881087 {
1089−#ifdef CONFIG_AUDITSYSCALL
1090− if (unlikely(current->audit_context)) {
1091− unsigned long tstate = regs->tstate;
1092− int result = AUDITSC_SUCCESS;
1088+ audit_syscall_exit(regs);
10931089
1094− if (unlikely(tstate & (TSTATE_XCARRY | TSTATE_ICARRY)))
1095− result = AUDITSC_FAILURE;
1096−
1097− audit_syscall_exit(result, regs->u_regs[UREG_I0]);
1098− }
1099−#endif
11001090 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
11011091 trace_sys_exit(regs, regs->u_regs[UREG_G1]);
11021092
arch/sparc/kernel/sun4m_irq.c+3−0
@@ -399,6 +399,9 @@ static void __init sun4m_init_timers(irq_handler_t counter_fn) · 398 unmodified lines
399399 timers_global = (void __iomem *)
400400 (unsigned long) addr[num_cpu_timers];
401401
402+ /* Every per-cpu timer works in timer mode */
403+ sbus_writel(0x00000000, &timers_global->timer_config);
404+
402405 sbus_writel((((1000000/HZ) + 1) << 10), &timers_global->l10_limit);
403406
404407 master_l10_counter = &timers_global->l10_count;
arch/sparc/lib/divdi3.S+1−15
@@ -17,23 +17,9 @@ along with GNU CC; see the file COPYING. If not, write to · 16 unmodified lines
1717 the Free Software Foundation, 59 Temple Place - Suite 330,
1818 Boston, MA 02111-1307, USA. */
1919
20− .data
21− .align 8
22− .globl __clz_tab
23−__clz_tab:
24− .byte 0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5
25− .byte 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6
26− .byte 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7
27− .byte 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7
28− .byte 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
29− .byte 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
30− .byte 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
31− .byte 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
32− .size __clz_tab,256
33− .global .udiv
34−
3520 .text
3621 .align 4
22+ .global .udiv
3723 .globl __divdi3
3824 __divdi3:
3925 save %sp,-104,%sp
arch/um/kernel/ptrace.c+9−11
@@ -167,17 +167,15 @@ void syscall_trace(struct uml_pt_regs *regs, int entryexit) · 166 unmodified lines
167167 int is_singlestep = (current->ptrace & PT_DTRACE) && entryexit;
168168 int tracesysgood;
169169
170− if (unlikely(current->audit_context)) {
171− if (!entryexit)
172− audit_syscall_entry(HOST_AUDIT_ARCH,
173− UPT_SYSCALL_NR(regs),
174− UPT_SYSCALL_ARG1(regs),
175− UPT_SYSCALL_ARG2(regs),
176− UPT_SYSCALL_ARG3(regs),
177− UPT_SYSCALL_ARG4(regs));
178− else audit_syscall_exit(AUDITSC_RESULT(UPT_SYSCALL_RET(regs)),
179− UPT_SYSCALL_RET(regs));
180− }
170+ if (!entryexit)
171+ audit_syscall_entry(HOST_AUDIT_ARCH,
172+ UPT_SYSCALL_NR(regs),
173+ UPT_SYSCALL_ARG1(regs),
174+ UPT_SYSCALL_ARG2(regs),
175+ UPT_SYSCALL_ARG3(regs),
176+ UPT_SYSCALL_ARG4(regs));
177+ else
178+ audit_syscall_exit(regs);
181179
182180 /* Fake a debug trap */
183181 if (is_singlestep)
arch/x86/.gitignore+1−0
@@ -1,3 +1,4 @@
11 boot/compressed/vmlinux
22 tools/test_get_len
3+tools/insn_sanity
34
arch/x86/Kconfig+10−11
@@ -125,16 +125,6 @@ config HAVE_LATENCYTOP_SUPPORT · 124 unmodified lines
125125 config MMU
126126 def_bool y
127127
128−config ZONE_DMA
129− bool "DMA memory allocation support" if EXPERT
130− default y
131− help
132− DMA memory allocation support allows devices with less than 32-bit
133− addressing to allocate within the first 16MB of address space.
134− Disable if no such devices will be used.
135−
136− If unsure, say Y.
137−
138128 config SBUS
139129 bool
140130
@@ -255,6 +245,16 @@ source "kernel/Kconfig.freezer" · 114 unmodified lines
255245
256246 menu "Processor type and features"
257247
248+config ZONE_DMA
249+ bool "DMA memory allocation support" if EXPERT
250+ default y
251+ help
252+ DMA memory allocation support allows devices with less than 32-bit
253+ addressing to allocate within the first 16MB of address space.
254+ Disable if no such devices will be used.
255+
256+ If unsure, say Y.
257+
258258 source "kernel/time/Kconfig"
259259
260260 config SMP
@@ -360,7 +360,6 @@ config X86_NUMACHIP · 99 unmodified lines
360360 depends on NUMA
361361 depends on SMP
362362 depends on X86_X2APIC
363− depends on !EDAC_AMD64
364363 ---help---
365364 Adds support for Numascale NumaChip large-SMP systems. Needed to
366365 enable more than ~168 cores.
arch/x86/boot/compressed/misc.c+2−0
@@ -321,6 +321,8 @@ static void parse_elf(void *output) · 320 unmodified lines
321321 default: /* Ignore other PT_* */ break;
322322 }
323323 }
324+
325+ free(phdrs);
324326 }
325327
326328 asmlinkage void decompress_kernel(void *rmode, memptr heap,
arch/x86/ia32/ia32entry.S+8−6
@@ -14,6 +14,7 @@ · 13 unmodified lines
1414 #include <asm/segment.h>
1515 #include <asm/irqflags.h>
1616 #include <linux/linkage.h>
17+#include <linux/err.h>
1718
1819 /* Avoid __ASSEMBLER__'ifying <linux/audit.h> just for this. */
1920 #include <linux/elf-em.h>
@@ -189,7 +190,7 @@ sysexit_from_sys_call: · 169 unmodified lines
189190 movl %ebx,%edx /* 3rd arg: 1st syscall arg */
190191 movl %eax,%esi /* 2nd arg: syscall number */
191192 movl $AUDIT_ARCH_I386,%edi /* 1st arg: audit arch */
192− call audit_syscall_entry
193+ call __audit_syscall_entry
193194 movl RAX-ARGOFFSET(%rsp),%eax /* reload syscall number */
194195 cmpq $(IA32_NR_syscalls-1),%rax
195196 ja ia32_badsys
@@ -206,12 +207,13 @@ sysexit_from_sys_call: · 10 unmodified lines
206207 TRACE_IRQS_ON
207208 sti
208209 movl %eax,%esi /* second arg, syscall return value */
209− cmpl $0,%eax /* is it < 0? */
210− setl %al /* 1 if so, 0 if not */
210+ cmpl $-MAX_ERRNO,%eax /* is it an error ? */
211+ jbe 1f
212+ movslq %eax, %rsi /* if error sign extend to 64 bits */
213+1: setbe %al /* 1 if error, 0 if not */
211214 movzbl %al,%edi /* zero-extend that into %edi */
212− inc %edi /* first arg, 0->1(AUDITSC_SUCCESS), 1->2(AUDITSC_FAILURE) */
213− call audit_syscall_exit
214− movl RAX-ARGOFFSET(%rsp),%eax /* reload syscall return value */
215+ call __audit_syscall_exit
216+ movq RAX-ARGOFFSET(%rsp),%rax /* reload syscall return value */
215217 movl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),%edi
216218 cli
217219 TRACE_IRQS_OFF
arch/x86/include/asm/cmpxchg.h+3−3
@@ -145,13 +145,13 @@ extern void __add_wrong_size(void) · 144 unmodified lines
145145
146146 #ifdef __HAVE_ARCH_CMPXCHG
147147 #define cmpxchg(ptr, old, new) \
148− __cmpxchg((ptr), (old), (new), sizeof(*ptr))
148+ __cmpxchg(ptr, old, new, sizeof(*(ptr)))
149149
150150 #define sync_cmpxchg(ptr, old, new) \
151− __sync_cmpxchg((ptr), (old), (new), sizeof(*ptr))
151+ __sync_cmpxchg(ptr, old, new, sizeof(*(ptr)))
152152
153153 #define cmpxchg_local(ptr, old, new) \
154− __cmpxchg_local((ptr), (old), (new), sizeof(*ptr))
154+ __cmpxchg_local(ptr, old, new, sizeof(*(ptr)))
155155 #endif
156156
157157 /*
arch/x86/include/asm/cpufeature.h+1−0
@@ -159,6 +159,7 @@ · 158 unmodified lines
159159 #define X86_FEATURE_WDT (6*32+13) /* Watchdog timer */
160160 #define X86_FEATURE_LWP (6*32+15) /* Light Weight Profiling */
161161 #define X86_FEATURE_FMA4 (6*32+16) /* 4 operands MAC instructions */
162+#define X86_FEATURE_TCE (6*32+17) /* translation cache extension */
162163 #define X86_FEATURE_NODEID_MSR (6*32+19) /* NodeId MSR */
163164 #define X86_FEATURE_TBM (6*32+21) /* trailing bit manipulations */
164165 #define X86_FEATURE_TOPOEXT (6*32+22) /* topology extensions CPUID leafs */
arch/x86/include/asm/i387.h+252−55
@@ -29,10 +29,11 @@ extern unsigned int sig_xstate_size; · 28 unmodified lines
2929 extern void fpu_init(void);
3030 extern void mxcsr_feature_mask_init(void);
3131 extern int init_fpu(struct task_struct *child);
32−extern asmlinkage void math_state_restore(void);
33−extern void __math_state_restore(void);
32+extern void math_state_restore(void);
3433 extern int dump_fpu(struct pt_regs *, struct user_i387_struct *);
3534
35+DECLARE_PER_CPU(struct task_struct *, fpu_owner_task);
36+
3637 extern user_regset_active_fn fpregs_active, xfpregs_active;
3738 extern user_regset_get_fn fpregs_get, xfpregs_get, fpregs_soft_get,
3839 xstateregs_get;
@@ -212,19 +213,11 @@ static inline void fpu_fxsave(struct fpu *fpu) · 173 unmodified lines
212213
213214 #endif /* CONFIG_X86_64 */
214215
215−/* We need a safe address that is cheap to find and that is already
216− in L1 during context switch. The best choices are unfortunately
217− different for UP and SMP */
218−#ifdef CONFIG_SMP
219−#define safe_address (__per_cpu_offset[0])
220−#else
221−#define safe_address (__get_cpu_var(kernel_cpustat).cpustat[CPUTIME_USER])
222−#endif
223−
224216 /*
225− * These must be called with preempt disabled
217+ * These must be called with preempt disabled. Returns
218+ * 'true' if the FPU state is still intact.
226219 */
227−static inline void fpu_save_init(struct fpu *fpu)
220+static inline int fpu_save_init(struct fpu *fpu)
228221 {
229222 if (use_xsave()) {
230223 fpu_xsave(fpu);
@@ -233,33 +226,33 @@ static inline void fpu_save_init(struct fpu *fpu) · 2 unmodified lines
233226 * xsave header may indicate the init state of the FP.
234227 */
235228 if (!(fpu->state->xsave.xsave_hdr.xstate_bv & XSTATE_FP))
236− return;
229+ return 1;
237230 } else if (use_fxsr()) {
238231 fpu_fxsave(fpu);
239232 } else {
240233 asm volatile("fnsave %[fx]; fwait"
241234 : [fx] "=m" (fpu->state->fsave));
242− return;
235+ return 0;
243236 }
244237
245− if (unlikely(fpu->state->fxsave.swd & X87_FSW_ES))
238+ /*
239+ * If exceptions are pending, we need to clear them so
240+ * that we don't randomly get exceptions later.
241+ *
242+ * FIXME! Is this perhaps only true for the old-style
243+ * irq13 case? Maybe we could leave the x87 state
244+ * intact otherwise?
245+ */
246+ if (unlikely(fpu->state->fxsave.swd & X87_FSW_ES)) {
246247 asm volatile("fnclex");
247−
248− /* AMD K7/K8 CPUs don't save/restore FDP/FIP/FOP unless an exception
249− is pending. Clear the x87 state here by setting it to fixed
250− values. safe_address is a random variable that should be in L1 */
251− alternative_input(
252− ASM_NOP8 ASM_NOP2,
253− "emms\n\t" /* clear stack tags */
254− "fildl %P[addr]", /* set F?P to defined value */
255− X86_FEATURE_FXSAVE_LEAK,
256− [addr] "m" (safe_address));
248+ return 0;
249+ }
250+ return 1;
257251 }
258252
259−static inline void __save_init_fpu(struct task_struct *tsk)
253+static inline int __save_init_fpu(struct task_struct *tsk)
260254 {
261− fpu_save_init(&tsk->thread.fpu);
262− task_thread_info(tsk)->status &= ~TS_USEDFPU;
255+ return fpu_save_init(&tsk->thread.fpu);
263256 }
264257
265258 static inline int fpu_fxrstor_checking(struct fpu *fpu)
@@ -277,44 +270,212 @@ static inline int fpu_restore_checking(struct fpu *fpu) · 11 unmodified lines
277270
278271 static inline int restore_fpu_checking(struct task_struct *tsk)
279272 {
273+ /* AMD K7/K8 CPUs don't save/restore FDP/FIP/FOP unless an exception
274+ is pending. Clear the x87 state here by setting it to fixed
275+ values. "m" is a random variable that should be in L1 */
276+ alternative_input(
277+ ASM_NOP8 ASM_NOP2,
278+ "emms\n\t" /* clear stack tags */
279+ "fildl %P[addr]", /* set F?P to defined value */
280+ X86_FEATURE_FXSAVE_LEAK,
281+ [addr] "m" (tsk->thread.fpu.has_fpu));
282+
280283 return fpu_restore_checking(&tsk->thread.fpu);
281284 }
282285
283286 /*
284− * Signal frame handlers...
287+ * Software FPU state helpers. Careful: these need to
288+ * be preemption protection *and* they need to be
289+ * properly paired with the CR0.TS changes!
285290 */
286−extern int save_i387_xstate(void __user *buf);
287−extern int restore_i387_xstate(void __user *buf);
291+static inline int __thread_has_fpu(struct task_struct *tsk)
292+{
293+ return tsk->thread.fpu.has_fpu;
294+}
288295
289−static inline void __unlazy_fpu(struct task_struct *tsk)
296+/* Must be paired with an 'stts' after! */
297+static inline void __thread_clear_has_fpu(struct task_struct *tsk)
290298 {
291− if (task_thread_info(tsk)->status & TS_USEDFPU) {
292− __save_init_fpu(tsk);
293− stts();
294− } else
295− tsk->fpu_counter = 0;
299+ tsk->thread.fpu.has_fpu = 0;
300+ percpu_write(fpu_owner_task, NULL);
301+}
302+
303+/* Must be paired with a 'clts' before! */
304+static inline void __thread_set_has_fpu(struct task_struct *tsk)
305+{
306+ tsk->thread.fpu.has_fpu = 1;
307+ percpu_write(fpu_owner_task, tsk);
308+}
309+
310+/*
311+ * Encapsulate the CR0.TS handling together with the
312+ * software flag.
313+ *
314+ * These generally need preemption protection to work,
315+ * do try to avoid using these on their own.
316+ */
317+static inline void __thread_fpu_end(struct task_struct *tsk)
318+{
319+ __thread_clear_has_fpu(tsk);
320+ stts();
321+}
322+
323+static inline void __thread_fpu_begin(struct task_struct *tsk)
324+{
325+ clts();
326+ __thread_set_has_fpu(tsk);
327+}
328+
329+/*
330+ * FPU state switching for scheduling.
331+ *
332+ * This is a two-stage process:
333+ *
334+ * - switch_fpu_prepare() saves the old state and
335+ * sets the new state of the CR0.TS bit. This is
336+ * done within the context of the old process.
337+ *
338+ * - switch_fpu_finish() restores the new state as
339+ * necessary.
340+ */
341+typedef struct { int preload; } fpu_switch_t;
342+
343+/*
344+ * FIXME! We could do a totally lazy restore, but we need to
345+ * add a per-cpu "this was the task that last touched the FPU
346+ * on this CPU" variable, and the task needs to have a "I last
347+ * touched the FPU on this CPU" and check them.
348+ *
349+ * We don't do that yet, so "fpu_lazy_restore()" always returns
350+ * false, but some day..
351+ */
352+static inline int fpu_lazy_restore(struct task_struct *new, unsigned int cpu)
353+{
354+ return new == percpu_read_stable(fpu_owner_task) &&
355+ cpu == new->thread.fpu.last_cpu;
356+}
357+
358+static inline fpu_switch_t switch_fpu_prepare(struct task_struct *old, struct task_struct *new, int cpu)
359+{
360+ fpu_switch_t fpu;
361+
362+ fpu.preload = tsk_used_math(new) && new->fpu_counter > 5;
363+ if (__thread_has_fpu(old)) {
364+ if (!__save_init_fpu(old))
365+ cpu = ~0;
366+ old->thread.fpu.last_cpu = cpu;
367+ old->thread.fpu.has_fpu = 0; /* But leave fpu_owner_task! */
368+
369+ /* Don't change CR0.TS if we just switch! */
370+ if (fpu.preload) {
371+ new->fpu_counter++;
372+ __thread_set_has_fpu(new);
373+ prefetch(new->thread.fpu.state);
374+ } else
375+ stts();
376+ } else {
377+ old->fpu_counter = 0;
378+ old->thread.fpu.last_cpu = ~0;
379+ if (fpu.preload) {
380+ new->fpu_counter++;
381+ if (fpu_lazy_restore(new, cpu))
382+ fpu.preload = 0;
383+ else
384+ prefetch(new->thread.fpu.state);
385+ __thread_fpu_begin(new);
386+ }
387+ }
388+ return fpu;
389+}
390+
391+/*
392+ * By the time this gets called, we've already cleared CR0.TS and
393+ * given the process the FPU if we are going to preload the FPU
394+ * state - all we need to do is to conditionally restore the register
395+ * state itself.
396+ */
397+static inline void switch_fpu_finish(struct task_struct *new, fpu_switch_t fpu)
398+{
399+ if (fpu.preload) {
400+ if (unlikely(restore_fpu_checking(new)))
401+ __thread_fpu_end(new);
402+ }
296403 }
297404
405+/*
406+ * Signal frame handlers...
407+ */
408+extern int save_i387_xstate(void __user *buf);
409+extern int restore_i387_xstate(void __user *buf);
410+
298411 static inline void __clear_fpu(struct task_struct *tsk)
299412 {
300− if (task_thread_info(tsk)->status & TS_USEDFPU) {
413+ if (__thread_has_fpu(tsk)) {
301414 /* Ignore delayed exceptions from user space */
302415 asm volatile("1: fwait\n"
303416 "2:\n"
304417 _ASM_EXTABLE(1b, 2b));
305− task_thread_info(tsk)->status &= ~TS_USEDFPU;
306− stts();
418+ __thread_fpu_end(tsk);
307419 }
308420 }
309421
422+/*
423+ * Were we in an interrupt that interrupted kernel mode?
424+ *
425+ * We can do a kernel_fpu_begin/end() pair *ONLY* if that
426+ * pair does nothing at all: the thread must not have fpu (so
427+ * that we don't try to save the FPU state), and TS must
428+ * be set (so that the clts/stts pair does nothing that is
429+ * visible in the interrupted kernel thread).
430+ */
431+static inline bool interrupted_kernel_fpu_idle(void)
432+{
433+ return !__thread_has_fpu(current) &&
434+ (read_cr0() & X86_CR0_TS);
435+}
436+
437+/*
438+ * Were we in user mode (or vm86 mode) when we were
439+ * interrupted?
440+ *
441+ * Doing kernel_fpu_begin/end() is ok if we are running
442+ * in an interrupt context from user mode - we'll just
443+ * save the FPU state as required.
444+ */
445+static inline bool interrupted_user_mode(void)
446+{
447+ struct pt_regs *regs = get_irq_regs();
448+ return regs && user_mode_vm(regs);
449+}
450+
451+/*
452+ * Can we use the FPU in kernel mode with the
453+ * whole "kernel_fpu_begin/end()" sequence?
454+ *
455+ * It's always ok in process context (ie "not interrupt")
456+ * but it is sometimes ok even from an irq.
457+ */
458+static inline bool irq_fpu_usable(void)
459+{
460+ return !in_interrupt() ||
461+ interrupted_user_mode() ||
462+ interrupted_kernel_fpu_idle();
463+}
464+
310465 static inline void kernel_fpu_begin(void)
311466 {
312− struct thread_info *me = current_thread_info();
467+ struct task_struct *me = current;
468+
469+ WARN_ON_ONCE(!irq_fpu_usable());
313470 preempt_disable();
314− if (me->status & TS_USEDFPU)
315− __save_init_fpu(me->task);
316− else
471+ if (__thread_has_fpu(me)) {
472+ __save_init_fpu(me);
473+ __thread_clear_has_fpu(me);
474+ /* We do 'stts()' in kernel_fpu_end() */
475+ } else {
476+ percpu_write(fpu_owner_task, NULL);
317477 clts();
478+ }
318479 }
319480
320481 static inline void kernel_fpu_end(void)
@@ -323,14 +484,6 @@ static inline void kernel_fpu_end(void) · 2 unmodified lines
323484 preempt_enable();
324485 }
325486
326−static inline bool irq_fpu_usable(void)
327−{
328− struct pt_regs *regs;
329−
330− return !in_interrupt() || !(regs = get_irq_regs()) || \
331− user_mode(regs) || (read_cr0() & X86_CR0_TS);
332−}
333−
334487 /*
335488 * Some instructions like VIA's padlock instructions generate a spurious
336489 * DNA fault but don't modify SSE registers. And these instructions
@@ -362,21 +515,65 @@ static inline void irq_ts_restore(int TS_state) · 25 unmodified lines
362515 stts();
363516 }
364517
518+/*
519+ * The question "does this thread have fpu access?"
520+ * is slightly racy, since preemption could come in
521+ * and revoke it immediately after the test.
522+ *
523+ * However, even in that very unlikely scenario,
524+ * we can just assume we have FPU access - typically
525+ * to save the FP state - we'll just take a #NM
526+ * fault and get the FPU access back.
527+ *
528+ * The actual user_fpu_begin/end() functions
529+ * need to be preemption-safe, though.
530+ *
531+ * NOTE! user_fpu_end() must be used only after you
532+ * have saved the FP state, and user_fpu_begin() must
533+ * be used only immediately before restoring it.
534+ * These functions do not do any save/restore on
535+ * their own.
536+ */
537+static inline int user_has_fpu(void)
538+{
539+ return __thread_has_fpu(current);
540+}
541+
542+static inline void user_fpu_end(void)
543+{
544+ preempt_disable();
545+ __thread_fpu_end(current);
546+ preempt_enable();
547+}
548+
549+static inline void user_fpu_begin(void)
550+{
551+ preempt_disable();
552+ if (!user_has_fpu())
553+ __thread_fpu_begin(current);
554+ preempt_enable();
555+}
556+
365557 /*
366558 * These disable preemption on their own and are safe
367559 */
368560 static inline void save_init_fpu(struct task_struct *tsk)
369561 {
562+ WARN_ON_ONCE(!__thread_has_fpu(tsk));
370563 preempt_disable();
371564 __save_init_fpu(tsk);
372− stts();
565+ __thread_fpu_end(tsk);
373566 preempt_enable();
374567 }
375568
376569 static inline void unlazy_fpu(struct task_struct *tsk)
377570 {
378571 preempt_disable();
379− __unlazy_fpu(tsk);
572+ if (__thread_has_fpu(tsk)) {
573+ __save_init_fpu(tsk);
574+ __thread_fpu_end(tsk);
575+ } else
576+ tsk->fpu_counter = 0;
380577 preempt_enable();
381578 }
382579
arch/x86/include/asm/kvm_emulate.h+16−0
@@ -190,6 +190,9 @@ struct x86_emulate_ops { · 189 unmodified lines
190190 int (*intercept)(struct x86_emulate_ctxt *ctxt,
191191 struct x86_instruction_info *info,
192192 enum x86_intercept_stage stage);
193+
194+ bool (*get_cpuid)(struct x86_emulate_ctxt *ctxt,
195+ u32 *eax, u32 *ebx, u32 *ecx, u32 *edx);
193196 };
194197
195198 typedef u32 __attribute__((vector_size(16))) sse128_t;
@@ -298,6 +301,19 @@ struct x86_emulate_ctxt { · 102 unmodified lines
298301 #define X86EMUL_MODE_PROT (X86EMUL_MODE_PROT16|X86EMUL_MODE_PROT32| \
299302 X86EMUL_MODE_PROT64)
300303
304+/* CPUID vendors */
305+#define X86EMUL_CPUID_VENDOR_AuthenticAMD_ebx 0x68747541
306+#define X86EMUL_CPUID_VENDOR_AuthenticAMD_ecx 0x444d4163
307+#define X86EMUL_CPUID_VENDOR_AuthenticAMD_edx 0x69746e65
308+
309+#define X86EMUL_CPUID_VENDOR_AMDisbetterI_ebx 0x69444d41
310+#define X86EMUL_CPUID_VENDOR_AMDisbetterI_ecx 0x21726574
311+#define X86EMUL_CPUID_VENDOR_AMDisbetterI_edx 0x74656273
312+
313+#define X86EMUL_CPUID_VENDOR_GenuineIntel_ebx 0x756e6547
314+#define X86EMUL_CPUID_VENDOR_GenuineIntel_ecx 0x6c65746e
315+#define X86EMUL_CPUID_VENDOR_GenuineIntel_edx 0x49656e69
316+
301317 enum x86_intercept_stage {
302318 X86_ICTP_NONE = 0, /* Allow zero-init to not match anything */
303319 X86_ICPT_PRE_EXCEPT,
arch/x86/include/asm/processor.h+2−0
@@ -374,6 +374,8 @@ union thread_xstate { · 373 unmodified lines
374374 };
375375
376376 struct fpu {
377+ unsigned int last_cpu;
378+ unsigned int has_fpu;
377379 union thread_xstate *state;
378380 };
379381
arch/x86/include/asm/thread_info.h+0−2
@@ -247,8 +247,6 @@ static inline struct thread_info *current_thread_info(void) · 246 unmodified lines
247247 * ever touches our thread-synchronous status, so we don't
248248 * have to worry about atomic accesses.
249249 */
250−#define TS_USEDFPU 0x0001 /* FPU was used by this task
251− this quantum (SMP) */
252250 #define TS_COMPAT 0x0002 /* 32bit syscall active (64BIT)*/
253251 #define TS_POLLING 0x0004 /* idle task polling need_resched,
254252 skip sending interrupt */
arch/x86/include/asm/unistd.h+1−0
@@ -7,6 +7,7 @@ · 6 unmodified lines
77 # include <asm/unistd_32.h>
88 # define __ARCH_WANT_IPC_PARSE_VERSION
99 # define __ARCH_WANT_STAT64
10+# define __ARCH_WANT_SYS_IPC
1011 # define __ARCH_WANT_SYS_OLD_MMAP
1112 # define __ARCH_WANT_SYS_OLD_SELECT
1213
arch/x86/include/asm/uv/uv_bau.h+99−8
@@ -65,7 +65,7 @@ · 64 unmodified lines
6565 * UV2: Bit 19 selects between
6666 * (0): 10 microsecond timebase and
6767 * (1): 80 microseconds
68− * we're using 655us, similar to UV1: 65 units of 10us
68+ * we're using 560us, similar to UV1: 65 units of 10us
6969 */
7070 #define UV1_INTD_SOFT_ACK_TIMEOUT_PERIOD (9UL)
7171 #define UV2_INTD_SOFT_ACK_TIMEOUT_PERIOD (15UL)
@@ -167,6 +167,7 @@ · 95 unmodified lines
167167 #define FLUSH_RETRY_TIMEOUT 2
168168 #define FLUSH_GIVEUP 3
169169 #define FLUSH_COMPLETE 4
170+#define FLUSH_RETRY_BUSYBUG 5
170171
171172 /*
172173 * tuning the action when the numalink network is extremely delayed
@@ -235,10 +236,10 @@ struct bau_msg_payload { · 62 unmodified lines
235236
236237
237238 /*
238− * Message header: 16 bytes (128 bits) (bytes 0x30-0x3f of descriptor)
239+ * UV1 Message header: 16 bytes (128 bits) (bytes 0x30-0x3f of descriptor)
239240 * see table 4.2.3.0.1 in broacast_assist spec.
240241 */
241−struct bau_msg_header {
242+struct uv1_bau_msg_header {
242243 unsigned int dest_subnodeid:6; /* must be 0x10, for the LB */
243244 /* bits 5:0 */
244245 unsigned int base_dest_nasid:15; /* nasid of the first bit */
@@ -317,20 +318,88 @@ struct bau_msg_header { · 72 unmodified lines
317318 /* bits 127:107 */
318319 };
319320
321+/*
322+ * UV2 Message header: 16 bytes (128 bits) (bytes 0x30-0x3f of descriptor)
323+ * see figure 9-2 of harp_sys.pdf
324+ */
325+struct uv2_bau_msg_header {
326+ unsigned int base_dest_nasid:15; /* nasid of the first bit */
327+ /* bits 14:0 */ /* in uvhub map */
328+ unsigned int dest_subnodeid:5; /* must be 0x10, for the LB */
329+ /* bits 19:15 */
330+ unsigned int rsvd_1:1; /* must be zero */
331+ /* bit 20 */
332+ /* Address bits 59:21 */
333+ /* bits 25:2 of address (44:21) are payload */
334+ /* these next 24 bits become bytes 12-14 of msg */
335+ /* bits 28:21 land in byte 12 */
336+ unsigned int replied_to:1; /* sent as 0 by the source to
337+ byte 12 */
338+ /* bit 21 */
339+ unsigned int msg_type:3; /* software type of the
340+ message */
341+ /* bits 24:22 */
342+ unsigned int canceled:1; /* message canceled, resource
343+ is to be freed*/
344+ /* bit 25 */
345+ unsigned int payload_1:3; /* not currently used */
346+ /* bits 28:26 */
347+
348+ /* bits 36:29 land in byte 13 */
349+ unsigned int payload_2a:3; /* not currently used */
350+ unsigned int payload_2b:5; /* not currently used */
351+ /* bits 36:29 */
352+
353+ /* bits 44:37 land in byte 14 */
354+ unsigned int payload_3:8; /* not currently used */
355+ /* bits 44:37 */
356+
357+ unsigned int rsvd_2:7; /* reserved */
358+ /* bits 51:45 */
359+ unsigned int swack_flag:1; /* software acknowledge flag */
360+ /* bit 52 */
361+ unsigned int rsvd_3a:3; /* must be zero */
362+ unsigned int rsvd_3b:8; /* must be zero */
363+ unsigned int rsvd_3c:8; /* must be zero */
364+ unsigned int rsvd_3d:3; /* must be zero */
365+ /* bits 74:53 */
366+ unsigned int fairness:3; /* usually zero */
367+ /* bits 77:75 */
368+
369+ unsigned int sequence:16; /* message sequence number */
370+ /* bits 93:78 Suppl_A */
371+ unsigned int chaining:1; /* next descriptor is part of
372+ this activation*/
373+ /* bit 94 */
374+ unsigned int multilevel:1; /* multi-level multicast
375+ format */
376+ /* bit 95 */
377+ unsigned int rsvd_4:24; /* ordered / source node /
378+ source subnode / aging
379+ must be zero */
380+ /* bits 119:96 */
381+ unsigned int command:8; /* message type */
382+ /* bits 127:120 */
383+};
384+
320385 /*
321386 * The activation descriptor:
322387 * The format of the message to send, plus all accompanying control
323388 * Should be 64 bytes
324389 */
325390 struct bau_desc {
326− struct pnmask distribution;
391+ struct pnmask distribution;
327392 /*
328393 * message template, consisting of header and payload:
329394 */
330− struct bau_msg_header header;
331− struct bau_msg_payload payload;
395+ union bau_msg_header {
396+ struct uv1_bau_msg_header uv1_hdr;
397+ struct uv2_bau_msg_header uv2_hdr;
398+ } header;
399+
400+ struct bau_msg_payload payload;
332401 };
333−/*
402+/* UV1:
334403 * -payload-- ---------header------
335404 * bytes 0-11 bits 41-56 bits 58-81
336405 * A B (2) C (3)
@@ -340,6 +409,16 @@ struct bau_desc { · 3 unmodified lines
340409 * bytes 0-11 bytes 12-14 bytes 16-17 (byte 15 filled in by hw as vector)
341410 * ------------payload queue-----------
342411 */
412+/* UV2:
413+ * -payload-- ---------header------
414+ * bytes 0-11 bits 70-78 bits 21-44
415+ * A B (2) C (3)
416+ *
417+ * A/B/C are moved to:
418+ * A C B
419+ * bytes 0-11 bytes 12-14 bytes 16-17 (byte 15 filled in by hw as vector)
420+ * ------------payload queue-----------
421+ */
343422
344423 /*
345424 * The payload queue on the destination side is an array of these.
@@ -385,7 +464,6 @@ struct bau_pq_entry { · 39 unmodified lines
385464 struct msg_desc {
386465 struct bau_pq_entry *msg;
387466 int msg_slot;
388− int swack_slot;
389467 struct bau_pq_entry *queue_first;
390468 struct bau_pq_entry *queue_last;
391469 };
@@ -405,6 +483,7 @@ struct ptc_stats { · 13 unmodified lines
405483 requests */
406484 unsigned long s_stimeout; /* source side timeouts */
407485 unsigned long s_dtimeout; /* destination side timeouts */
486+ unsigned long s_strongnacks; /* number of strong nack's */
408487 unsigned long s_time; /* time spent in sending side */
409488 unsigned long s_retriesok; /* successful retries */
410489 unsigned long s_ntargcpu; /* total number of cpu's
@@ -439,6 +518,9 @@ struct ptc_stats { · 28 unmodified lines
439518 unsigned long s_retry_messages; /* retry broadcasts */
440519 unsigned long s_bau_reenabled; /* for bau enable/disable */
441520 unsigned long s_bau_disabled; /* for bau enable/disable */
521+ unsigned long s_uv2_wars; /* uv2 workaround, perm. busy */
522+ unsigned long s_uv2_wars_hw; /* uv2 workaround, hiwater */
523+ unsigned long s_uv2_war_waits; /* uv2 workaround, long waits */
442524 /* destination statistics */
443525 unsigned long d_alltlb; /* times all tlb's on this
444526 cpu were flushed */
@@ -511,9 +593,12 @@ struct bau_control { · 66 unmodified lines
511593 short osnode;
512594 short uvhub_cpu;
513595 short uvhub;
596+ short uvhub_version;
514597 short cpus_in_socket;
515598 short cpus_in_uvhub;
516599 short partition_base_pnode;
600+ short using_desc; /* an index, like uvhub_cpu */
601+ unsigned int inuse_map;
517602 unsigned short message_number;
518603 unsigned short uvhub_quiesce;
519604 short socket_acknowledge_count[DEST_Q_SIZE];
@@ -531,6 +616,7 @@ struct bau_control { · 11 unmodified lines
531616 int cong_response_us;
532617 int cong_reps;
533618 int cong_period;
619+ unsigned long clocks_per_100_usec;
534620 cycles_t period_time;
535621 long period_requests;
536622 struct hub_and_pnode *thp;
@@ -591,6 +677,11 @@ static inline void write_mmr_sw_ack(unsigned long mr) · 54 unmodified lines
591677 uv_write_local_mmr(UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_ALIAS, mr);
592678 }
593679
680+static inline void write_gmmr_sw_ack(int pnode, unsigned long mr)
681+{
682+ write_gmmr(pnode, UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_ALIAS, mr);
683+}
684+
594685 static inline unsigned long read_mmr_sw_ack(void)
595686 {
596687 return read_lmmr(UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE);
arch/x86/include/asm/uv/uv_hub.h+2−2
@@ -318,13 +318,13 @@ uv_gpa_in_mmr_space(unsigned long gpa) · 317 unmodified lines
318318 /* UV global physical address --> socket phys RAM */
319319 static inline unsigned long uv_gpa_to_soc_phys_ram(unsigned long gpa)
320320 {
321− unsigned long paddr = gpa & uv_hub_info->gpa_mask;
321+ unsigned long paddr;
322322 unsigned long remap_base = uv_hub_info->lowmem_remap_base;
323323 unsigned long remap_top = uv_hub_info->lowmem_remap_top;
324324
325325 gpa = ((gpa << uv_hub_info->m_shift) >> uv_hub_info->m_shift) |
326326 ((gpa >> uv_hub_info->n_lshift) << uv_hub_info->m_val);
327− gpa = gpa & uv_hub_info->gpa_mask;
327+ paddr = gpa & uv_hub_info->gpa_mask;
328328 if (paddr >= remap_base && paddr < remap_base + remap_top)
329329 paddr -= remap_base;
330330 return paddr;
arch/x86/kernel/cpu/common.c+5−0
@@ -1044,6 +1044,9 @@ DEFINE_PER_CPU(char *, irq_stack_ptr) = · 1043 unmodified lines
10441044
10451045 DEFINE_PER_CPU(unsigned int, irq_count) = -1;
10461046
1047+DEFINE_PER_CPU(struct task_struct *, fpu_owner_task);
1048+EXPORT_PER_CPU_SYMBOL(fpu_owner_task);
1049+
10471050 /*
10481051 * Special IST stacks which the CPU switches to when it calls
10491052 * an IST-marked descriptor entry. Up to 7 stacks (hardware
@@ -1111,6 +1114,8 @@ void debug_stack_reset(void) · 61 unmodified lines
11111114
11121115 DEFINE_PER_CPU(struct task_struct *, current_task) = &init_task;
11131116 EXPORT_PER_CPU_SYMBOL(current_task);
1117+DEFINE_PER_CPU(struct task_struct *, fpu_owner_task);
1118+EXPORT_PER_CPU_SYMBOL(fpu_owner_task);
11141119
11151120 #ifdef CONFIG_CC_STACKPROTECTOR
11161121 DEFINE_PER_CPU_ALIGNED(struct stack_canary, stack_canary);
arch/x86/kernel/cpu/perf_event_intel_ds.c+0−1
@@ -439,7 +439,6 @@ void intel_pmu_pebs_enable(struct perf_event *event) · 438 unmodified lines
439439 hwc->config &= ~ARCH_PERFMON_EVENTSEL_INT;
440440
441441 cpuc->pebs_enabled |= 1ULL << hwc->idx;
442− WARN_ON_ONCE(cpuc->enabled);
443442
444443 if (x86_pmu.intel_cap.pebs_trap && event->attr.precise_ip > 1)
445444 intel_pmu_lbr_enable(event);
arch/x86/kernel/cpu/perf_event_intel_lbr.c+0−2
@@ -72,8 +72,6 @@ void intel_pmu_lbr_enable(struct perf_event *event) · 71 unmodified lines
7272 if (!x86_pmu.lbr_nr)
7373 return;
7474
75− WARN_ON_ONCE(cpuc->enabled);
76−
7775 /*
7876 * Reset the LBR stack if we changed task context to
7977 * avoid data leaks.
arch/x86/kernel/dumpstack.c+2−1
@@ -252,7 +252,8 @@ int __kprobes __die(const char *str, struct pt_regs *regs, long err) · 251 unmodified lines
252252 unsigned short ss;
253253 unsigned long sp;
254254 #endif
255− printk(KERN_EMERG "%s: %04lx [#%d] ", str, err & 0xffff, ++die_counter);
255+ printk(KERN_DEFAULT
256+ "%s: %04lx [#%d] ", str, err & 0xffff, ++die_counter);
256257 #ifdef CONFIG_PREEMPT
257258 printk("PREEMPT ");
258259 #endif
arch/x86/kernel/dumpstack_64.c+4−4
@@ -129,7 +129,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs, · 128 unmodified lines
129129 if (!stack) {
130130 if (regs)
131131 stack = (unsigned long *)regs->sp;
132− else if (task && task != current)
132+ else if (task != current)
133133 stack = (unsigned long *)task->thread.sp;
134134 else
135135 stack = &dummy;
@@ -269,11 +269,11 @@ void show_registers(struct pt_regs *regs) · 133 unmodified lines
269269 unsigned char c;
270270 u8 *ip;
271271
272− printk(KERN_EMERG "Stack:\n");
272+ printk(KERN_DEFAULT "Stack:\n");
273273 show_stack_log_lvl(NULL, regs, (unsigned long *)sp,
274− 0, KERN_EMERG);
274+ 0, KERN_DEFAULT);
275275
276− printk(KERN_EMERG "Code: ");
276+ printk(KERN_DEFAULT "Code: ");
277277
278278 ip = (u8 *)regs->ip - code_prologue;
279279 if (ip < (u8 *)PAGE_OFFSET || probe_kernel_address(ip, c)) {
arch/x86/kernel/e820.c+2−2
@@ -703,7 +703,7 @@ void __init e820_mark_nosave_regions(unsigned long limit_pfn) · 702 unmodified lines
703703 }
704704 #endif
705705
706−#ifdef CONFIG_HIBERNATION
706+#ifdef CONFIG_ACPI
707707 /**
708708 * Mark ACPI NVS memory region, so that we can save/restore it during
709709 * hibernation and the subsequent resume.
@@ -716,7 +716,7 @@ static int __init e820_mark_nvs_memory(void) · 6 unmodified lines
716716 struct e820entry *ei = &e820.map[i];
717717
718718 if (ei->type == E820_NVS)
719− suspend_nvs_register(ei->addr, ei->size);
719+ acpi_nvs_register(ei->addr, ei->size);
720720 }
721721
722722 return 0;
arch/x86/kernel/entry_32.S+5−5
@@ -42,6 +42,7 @@ · 41 unmodified lines
4242 */
4343
4444 #include <linux/linkage.h>
45+#include <linux/err.h>
4546 #include <asm/thread_info.h>
4647 #include <asm/irqflags.h>
4748 #include <asm/errno.h>
@@ -453,7 +454,7 @@ sysenter_audit: · 405 unmodified lines
453454 movl %ebx,%ecx /* 3rd arg: 1st syscall arg */
454455 movl %eax,%edx /* 2nd arg: syscall number */
455456 movl $AUDIT_ARCH_I386,%eax /* 1st arg: audit arch */
456− call audit_syscall_entry
457+ call __audit_syscall_entry
457458 pushl_cfi %ebx
458459 movl PT_EAX(%esp),%eax /* reload syscall number */
459460 jmp sysenter_do_call
@@ -464,11 +465,10 @@ sysexit_audit: · 4 unmodified lines
464465 TRACE_IRQS_ON
465466 ENABLE_INTERRUPTS(CLBR_ANY)
466467 movl %eax,%edx /* second arg, syscall return value */
467− cmpl $0,%eax /* is it < 0? */
468− setl %al /* 1 if so, 0 if not */
468+ cmpl $-MAX_ERRNO,%eax /* is it an error ? */
469+ setbe %al /* 1 if so, 0 if not */
469470 movzbl %al,%eax /* zero-extend that */
470− inc %eax /* first arg, 0->1(AUDITSC_SUCCESS), 1->2(AUDITSC_FAILURE) */
471− call audit_syscall_exit
471+ call __audit_syscall_exit
472472 DISABLE_INTERRUPTS(CLBR_ANY)
473473 TRACE_IRQS_OFF
474474 movl TI_flags(%ebp), %ecx
arch/x86/kernel/entry_64.S+7−7
@@ -55,6 +55,7 @@ · 54 unmodified lines
5555 #include <asm/paravirt.h>
5656 #include <asm/ftrace.h>
5757 #include <asm/percpu.h>
58+#include <linux/err.h>
5859
5960 /* Avoid __ASSEMBLER__'ifying <linux/audit.h> just for this. */
6061 #include <linux/elf-em.h>
@@ -548,7 +549,7 @@ badsys: · 487 unmodified lines
548549 #ifdef CONFIG_AUDITSYSCALL
549550 /*
550551 * Fast path for syscall audit without full syscall trace.
551− * We just call audit_syscall_entry() directly, and then
552+ * We just call __audit_syscall_entry() directly, and then
552553 * jump back to the normal fast path.
553554 */
554555 auditsys:
@@ -558,22 +559,21 @@ auditsys: · 3 unmodified lines
558559 movq %rdi,%rdx /* 3rd arg: 1st syscall arg */
559560 movq %rax,%rsi /* 2nd arg: syscall number */
560561 movl $AUDIT_ARCH_X86_64,%edi /* 1st arg: audit arch */
561− call audit_syscall_entry
562+ call __audit_syscall_entry
562563 LOAD_ARGS 0 /* reload call-clobbered registers */
563564 jmp system_call_fastpath
564565
565566 /*
566− * Return fast path for syscall audit. Call audit_syscall_exit()
567+ * Return fast path for syscall audit. Call __audit_syscall_exit()
567568 * directly and then jump back to the fast path with TIF_SYSCALL_AUDIT
568569 * masked off.
569570 */
570571 sysret_audit:
571572 movq RAX-ARGOFFSET(%rsp),%rsi /* second arg, syscall return value */
572− cmpq $0,%rsi /* is it < 0? */
573− setl %al /* 1 if so, 0 if not */
573+ cmpq $-MAX_ERRNO,%rsi /* is it < -MAX_ERRNO? */
574+ setbe %al /* 1 if so, 0 if not */
574575 movzbl %al,%edi /* zero-extend that into %edi */
575− inc %edi /* first arg, 0->1(AUDITSC_SUCCESS), 1->2(AUDITSC_FAILURE) */
576− call audit_syscall_exit
576+ call __audit_syscall_exit
577577 movl $(_TIF_ALLWORK_MASK & ~_TIF_SYSCALL_AUDIT),%edi
578578 jmp sysret_check
579579 #endif /* CONFIG_AUDITSYSCALL */
arch/x86/kernel/microcode_amd.c+22−2
@@ -311,13 +311,33 @@ out: · 310 unmodified lines
311311 return state;
312312 }
313313
314+/*
315+ * AMD microcode firmware naming convention, up to family 15h they are in
316+ * the legacy file:
317+ *
318+ * amd-ucode/microcode_amd.bin
319+ *
320+ * This legacy file is always smaller than 2K in size.
321+ *
322+ * Starting at family 15h they are in family specific firmware files:
323+ *
324+ * amd-ucode/microcode_amd_fam15h.bin
325+ * amd-ucode/microcode_amd_fam16h.bin
326+ * ...
327+ *
328+ * These might be larger than 2K.
329+ */
314330 static enum ucode_state request_microcode_amd(int cpu, struct device *device)
315331 {
316− const char *fw_name = "amd-ucode/microcode_amd.bin";
332+ char fw_name[36] = "amd-ucode/microcode_amd.bin";
317333 const struct firmware *fw;
318334 enum ucode_state ret = UCODE_NFOUND;
335+ struct cpuinfo_x86 *c = &cpu_data(cpu);
336+
337+ if (c->x86 >= 0x15)
338+ snprintf(fw_name, sizeof(fw_name), "amd-ucode/microcode_amd_fam%.2xh.bin", c->x86);
319339
320− if (request_firmware(&fw, fw_name, device)) {
340+ if (request_firmware(&fw, (const char *)fw_name, device)) {
321341 pr_err("failed to load file %s\n", fw_name);
322342 goto out;
323343 }
arch/x86/kernel/process_32.c+5−21
@@ -214,6 +214,7 @@ int copy_thread(unsigned long clone_flags, unsigned long sp, · 213 unmodified lines
214214
215215 task_user_gs(p) = get_user_gs(regs);
216216
217+ p->fpu_counter = 0;
217218 p->thread.io_bitmap_ptr = NULL;
218219 tsk = current;
219220 err = -ENOMEM;
@@ -299,22 +300,11 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) · 79 unmodified lines
299300 *next = &next_p->thread;
300301 int cpu = smp_processor_id();
301302 struct tss_struct *tss = &per_cpu(init_tss, cpu);
302− bool preload_fpu;
303+ fpu_switch_t fpu;
303304
304305 /* never put a printk in __switch_to... printk() calls wake_up*() indirectly */
305306
306− /*
307− * If the task has used fpu the last 5 timeslices, just do a full
308− * restore of the math state immediately to avoid the trap; the
309− * chances of needing FPU soon are obviously high now
310− */
311− preload_fpu = tsk_used_math(next_p) && next_p->fpu_counter > 5;
312−
313− __unlazy_fpu(prev_p);
314−
315− /* we're going to use this soon, after a few expensive things */
316− if (preload_fpu)
317− prefetch(next->fpu.state);
307+ fpu = switch_fpu_prepare(prev_p, next_p, cpu);
318308
319309 /*
320310 * Reload esp0.
@@ -354,11 +344,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) · 33 unmodified lines
354344 task_thread_info(next_p)->flags & _TIF_WORK_CTXSW_NEXT))
355345 __switch_to_xtra(prev_p, next_p, tss);
356346
357− /* If we're going to preload the fpu context, make sure clts
358− is run while we're batching the cpu state updates. */
359− if (preload_fpu)
360− clts();
361−
362347 /*
363348 * Leave lazy mode, flushing any hypercalls made here.
364349 * This must be done before restoring TLS segments so
@@ -368,15 +353,14 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) · 3 unmodified lines
368353 */
369354 arch_end_context_switch(next_p);
370355
371− if (preload_fpu)
372− __math_state_restore();
373−
374356 /*
375357 * Restore %gs if needed (which is common)
376358 */
377359 if (prev->gs | next->gs)
378360 lazy_load_gs(next->gs);
379361
362+ switch_fpu_finish(next_p, fpu);
363+
380364 percpu_write(current_task, next_p);
381365
382366 return prev_p;
arch/x86/kernel/process_64.c+5−25
@@ -286,6 +286,7 @@ int copy_thread(unsigned long clone_flags, unsigned long sp, · 285 unmodified lines
286286
287287 set_tsk_thread_flag(p, TIF_FORK);
288288
289+ p->fpu_counter = 0;
289290 p->thread.io_bitmap_ptr = NULL;
290291
291292 savesegment(gs, p->thread.gsindex);
@@ -386,18 +387,9 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) · 94 unmodified lines
386387 int cpu = smp_processor_id();
387388 struct tss_struct *tss = &per_cpu(init_tss, cpu);
388389 unsigned fsindex, gsindex;
389− bool preload_fpu;
390+ fpu_switch_t fpu;
390391
391− /*
392− * If the task has used fpu the last 5 timeslices, just do a full
393− * restore of the math state immediately to avoid the trap; the
394− * chances of needing FPU soon are obviously high now
395− */
396− preload_fpu = tsk_used_math(next_p) && next_p->fpu_counter > 5;
397−
398− /* we're going to use this soon, after a few expensive things */
399− if (preload_fpu)
400− prefetch(next->fpu.state);
392+ fpu = switch_fpu_prepare(prev_p, next_p, cpu);
401393
402394 /*
403395 * Reload esp0, LDT and the page table pointer:
@@ -427,13 +419,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) · 23 unmodified lines
427419
428420 load_TLS(next, cpu);
429421
430− /* Must be after DS reload */
431− __unlazy_fpu(prev_p);
432−
433− /* Make sure cpu is ready for new context */
434− if (preload_fpu)
435− clts();
436−
437422 /*
438423 * Leave lazy mode, flushing any hypercalls made here.
439424 * This must be done before restoring TLS segments so
@@ -474,6 +459,8 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) · 34 unmodified lines
474459 wrmsrl(MSR_KERNEL_GS_BASE, next->gs);
475460 prev->gsindex = gsindex;
476461
462+ switch_fpu_finish(next_p, fpu);
463+
477464 /*
478465 * Switch the PDA and FPU contexts.
479466 */
@@ -492,13 +479,6 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p) · 12 unmodified lines
492479 task_thread_info(prev_p)->flags & _TIF_WORK_CTXSW_PREV))
493480 __switch_to_xtra(prev_p, next_p, tss);
494481
495− /*
496− * Preload the FPU context, now that we've determined that the
497− * task is likely to be using it.
498− */
499− if (preload_fpu)
500− __math_state_restore();
501−
502482 return prev_p;
503483 }
504484
arch/x86/kernel/ptrace.c+11−14
@@ -1392,20 +1392,18 @@ long syscall_trace_enter(struct pt_regs *regs) · 1391 unmodified lines
13921392 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
13931393 trace_sys_enter(regs, regs->orig_ax);
13941394
1395− if (unlikely(current->audit_context)) {
1396− if (IS_IA32)
1397− audit_syscall_entry(AUDIT_ARCH_I386,
1398− regs->orig_ax,
1399− regs->bx, regs->cx,
1400− regs->dx, regs->si);
1395+ if (IS_IA32)
1396+ audit_syscall_entry(AUDIT_ARCH_I386,
1397+ regs->orig_ax,
1398+ regs->bx, regs->cx,
1399+ regs->dx, regs->si);
14011400 #ifdef CONFIG_X86_64
1402− else
1403− audit_syscall_entry(AUDIT_ARCH_X86_64,
1404− regs->orig_ax,
1405− regs->di, regs->si,
1406− regs->dx, regs->r10);
1401+ else
1402+ audit_syscall_entry(AUDIT_ARCH_X86_64,
1403+ regs->orig_ax,
1404+ regs->di, regs->si,
1405+ regs->dx, regs->r10);
14071406 #endif
1408− }
14091407
14101408 return ret ?: regs->orig_ax;
14111409 }
@@ -1414,8 +1412,7 @@ void syscall_trace_leave(struct pt_regs *regs) · 2 unmodified lines
14141412 {
14151413 bool step;
14161414
1417− if (unlikely(current->audit_context))
1418− audit_syscall_exit(AUDITSC_RESULT(regs->ax), regs->ax);
1415+ audit_syscall_exit(regs);
14191416
14201417 if (unlikely(test_thread_flag(TIF_SYSCALL_TRACEPOINT)))
14211418 trace_sys_exit(regs, regs->ax);
arch/x86/kernel/reboot.c+26−10
@@ -39,6 +39,14 @@ static int reboot_mode; · 38 unmodified lines
3939 enum reboot_type reboot_type = BOOT_ACPI;
4040 int reboot_force;
4141
42+/* This variable is used privately to keep track of whether or not
43+ * reboot_type is still set to its default value (i.e., reboot= hasn't
44+ * been set on the command line). This is needed so that we can
45+ * suppress DMI scanning for reboot quirks. Without it, it's
46+ * impossible to override a faulty reboot quirk without recompiling.
47+ */
48+static int reboot_default = 1;
49+
4250 #if defined(CONFIG_X86_32) && defined(CONFIG_SMP)
4351 static int reboot_cpu = -1;
4452 #endif
@@ -67,6 +75,12 @@ bool port_cf9_safe = false; · 22 unmodified lines
6775 static int __init reboot_setup(char *str)
6876 {
6977 for (;;) {
78+ /* Having anything passed on the command line via
79+ * reboot= will cause us to disable DMI checking
80+ * below.
81+ */
82+ reboot_default = 0;
83+
7084 switch (*str) {
7185 case 'w':
7286 reboot_mode = 0x1234;
@@ -295,14 +309,6 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = { · 222 unmodified lines
295309 DMI_MATCH(DMI_BOARD_NAME, "P4S800"),
296310 },
297311 },
298− { /* Handle problems with rebooting on VersaLogic Menlow boards */
299− .callback = set_bios_reboot,
300− .ident = "VersaLogic Menlow based board",
301− .matches = {
302− DMI_MATCH(DMI_BOARD_VENDOR, "VersaLogic Corporation"),
303− DMI_MATCH(DMI_BOARD_NAME, "VersaLogic Menlow board"),
304− },
305− },
306312 { /* Handle reboot issue on Acer Aspire one */
307313 .callback = set_kbd_reboot,
308314 .ident = "Acer Aspire One A110",
@@ -316,7 +322,12 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = { · 7 unmodified lines
316322
317323 static int __init reboot_init(void)
318324 {
319− dmi_check_system(reboot_dmi_table);
325+ /* Only do the DMI check if reboot_type hasn't been overridden
326+ * on the command line
327+ */
328+ if (reboot_default) {
329+ dmi_check_system(reboot_dmi_table);
330+ }
320331 return 0;
321332 }
322333 core_initcall(reboot_init);
@@ -465,7 +476,12 @@ static struct dmi_system_id __initdata pci_reboot_dmi_table[] = { · 142 unmodified lines
465476
466477 static int __init pci_reboot_init(void)
467478 {
468− dmi_check_system(pci_reboot_dmi_table);
479+ /* Only do the DMI check if reboot_type hasn't been overridden
480+ * on the command line
481+ */
482+ if (reboot_default) {
483+ dmi_check_system(pci_reboot_dmi_table);
484+ }
469485 return 0;
470486 }
471487 core_initcall(pci_reboot_init);
arch/x86/kernel/traps.c+14−29
@@ -570,28 +570,6 @@ asmlinkage void __attribute__((weak)) smp_threshold_interrupt(void) · 569 unmodified lines
570570 {
571571 }
572572
573−/*
574− * __math_state_restore assumes that cr0.TS is already clear and the
575− * fpu state is all ready for use. Used during context switch.
576− */
577−void __math_state_restore(void)
578−{
579− struct thread_info *thread = current_thread_info();
580− struct task_struct *tsk = thread->task;
581−
582− /*
583− * Paranoid restore. send a SIGSEGV if we fail to restore the state.
584− */
585− if (unlikely(restore_fpu_checking(tsk))) {
586− stts();
587− force_sig(SIGSEGV, tsk);
588− return;
589− }
590−
591− thread->status |= TS_USEDFPU; /* So we fnsave on switch_to() */
592− tsk->fpu_counter++;
593−}
594−
595573 /*
596574 * 'math_state_restore()' saves the current math information in the
597575 * old math state array, and gets the new ones from the current task
@@ -599,13 +577,12 @@ void __math_state_restore(void) · 1 unmodified line
599577 * Careful.. There are problems with IBM-designed IRQ13 behaviour.
600578 * Don't touch unless you *really* know how it works.
601579 *
602− * Must be called with kernel preemption disabled (in this case,
603− * local interrupts are disabled at the call-site in entry.S).
580+ * Must be called with kernel preemption disabled (eg with local
581+ * local interrupts as in the case of do_device_not_available).
604582 */
605−asmlinkage void math_state_restore(void)
583+void math_state_restore(void)
606584 {
607− struct thread_info *thread = current_thread_info();
608− struct task_struct *tsk = thread->task;
585+ struct task_struct *tsk = current;
609586
610587 if (!tsk_used_math(tsk)) {
611588 local_irq_enable();
@@ -622,9 +599,17 @@ asmlinkage void math_state_restore(void) · 10 unmodified lines
622599 local_irq_disable();
623600 }
624601
625− clts(); /* Allow maths ops (or we recurse) */
602+ __thread_fpu_begin(tsk);
603+ /*
604+ * Paranoid restore. send a SIGSEGV if we fail to restore the state.
605+ */
606+ if (unlikely(restore_fpu_checking(tsk))) {
607+ __thread_fpu_end(tsk);
608+ force_sig(SIGSEGV, tsk);
609+ return;
610+ }
626611
627− __math_state_restore();
612+ tsk->fpu_counter++;
628613 }
629614 EXPORT_SYMBOL_GPL(math_state_restore);
630615
arch/x86/kernel/tsc.c+6−8
@@ -290,14 +290,15 @@ static inline int pit_verify_msb(unsigned char val) · 289 unmodified lines
290290 static inline int pit_expect_msb(unsigned char val, u64 *tscp, unsigned long *deltap)
291291 {
292292 int count;
293− u64 tsc = 0;
293+ u64 tsc = 0, prev_tsc = 0;
294294
295295 for (count = 0; count < 50000; count++) {
296296 if (!pit_verify_msb(val))
297297 break;
298+ prev_tsc = tsc;
298299 tsc = get_cycles();
299300 }
300− *deltap = get_cycles() - tsc;
301+ *deltap = get_cycles() - prev_tsc;
301302 *tscp = tsc;
302303
303304 /*
@@ -311,9 +312,9 @@ static inline int pit_expect_msb(unsigned char val, u64 *tscp, unsigned long *de · 7 unmodified lines
311312 * How many MSB values do we want to see? We aim for
312313 * a maximum error rate of 500ppm (in practice the
313314 * real error is much smaller), but refuse to spend
314− * more than 25ms on it.
315+ * more than 50ms on it.
315316 */
316−#define MAX_QUICK_PIT_MS 25
317+#define MAX_QUICK_PIT_MS 50
317318 #define MAX_QUICK_PIT_ITERATIONS (MAX_QUICK_PIT_MS * PIT_TICK_RATE / 1000 / 256)
318319
319320 static unsigned long quick_pit_calibrate(void)
@@ -383,15 +384,12 @@ success: · 63 unmodified lines
383384 *
384385 * As a result, we can depend on there not being
385386 * any odd delays anywhere, and the TSC reads are
386− * reliable (within the error). We also adjust the
387− * delta to the middle of the error bars, just
388− * because it looks nicer.
387+ * reliable (within the error).
389388 *
390389 * kHz = ticks / time-in-seconds / 1000;
391390 * kHz = (t2 - t1) / (I * 256 / PIT_TICK_RATE) / 1000
392391 * kHz = ((t2 - t1) * PIT_TICK_RATE) / (I * 256 * 1000)
393392 */
394− delta += (long)(d2 - d1)/2;
395393 delta *= PIT_TICK_RATE;
396394 do_div(delta, i*256*1000);
397395 printk("Fast TSC calibration using PIT\n");
arch/x86/kernel/vm86_32.c+4−2
@@ -335,9 +335,11 @@ static void do_sys_vm86(struct kernel_vm86_struct *info, struct task_struct *tsk · 334 unmodified lines
335335 if (info->flags & VM86_SCREEN_BITMAP)
336336 mark_screen_rdonly(tsk->mm);
337337
338− /*call audit_syscall_exit since we do not exit via the normal paths */
338+ /*call __audit_syscall_exit since we do not exit via the normal paths */
339+#ifdef CONFIG_AUDITSYSCALL
339340 if (unlikely(current->audit_context))
340− audit_syscall_exit(AUDITSC_RESULT(0), 0);
341+ __audit_syscall_exit(1, 0);
342+#endif
341343
342344 __asm__ __volatile__(
343345 "movl %0,%%esp\n\t"
arch/x86/kernel/xsave.c+4−8
@@ -47,7 +47,7 @@ void __sanitize_i387_state(struct task_struct *tsk) · 46 unmodified lines
4747 if (!fx)
4848 return;
4949
50− BUG_ON(task_thread_info(tsk)->status & TS_USEDFPU);
50+ BUG_ON(__thread_has_fpu(tsk));
5151
5252 xstate_bv = tsk->thread.fpu.state->xsave.xsave_hdr.xstate_bv;
5353
@@ -168,7 +168,7 @@ int save_i387_xstate(void __user *buf) · 114 unmodified lines
168168 if (!used_math())
169169 return 0;
170170
171− if (task_thread_info(tsk)->status & TS_USEDFPU) {
171+ if (user_has_fpu()) {
172172 if (use_xsave())
173173 err = xsave_user(buf);
174174 else
@@ -176,8 +176,7 @@ int save_i387_xstate(void __user *buf) · 1 unmodified line
176176
177177 if (err)
178178 return err;
179− task_thread_info(tsk)->status &= ~TS_USEDFPU;
180− stts();
179+ user_fpu_end();
181180 } else {
182181 sanitize_i387_state(tsk);
183182 if (__copy_to_user(buf, &tsk->thread.fpu.state->fxsave,
@@ -292,10 +291,7 @@ int restore_i387_xstate(void __user *buf) · 108 unmodified lines
292291 return err;
293292 }
294293
295− if (!(task_thread_info(current)->status & TS_USEDFPU)) {
296− clts();
297− task_thread_info(current)->status |= TS_USEDFPU;
298− }
294+ user_fpu_begin();
299295 if (use_xsave())
300296 err = restore_user_xstate(buf);
301297 else
arch/x86/kvm/emulate.c+51−0
@@ -1891,6 +1891,51 @@ setup_syscalls_segments(struct x86_emulate_ctxt *ctxt, · 1890 unmodified lines
18911891 ss->p = 1;
18921892 }
18931893
1894+static bool em_syscall_is_enabled(struct x86_emulate_ctxt *ctxt)
1895+{
1896+ struct x86_emulate_ops *ops = ctxt->ops;
1897+ u32 eax, ebx, ecx, edx;
1898+
1899+ /*
1900+ * syscall should always be enabled in longmode - so only become
1901+ * vendor specific (cpuid) if other modes are active...
1902+ */
1903+ if (ctxt->mode == X86EMUL_MODE_PROT64)
1904+ return true;
1905+
1906+ eax = 0x00000000;
1907+ ecx = 0x00000000;
1908+ if (ops->get_cpuid(ctxt, &eax, &ebx, &ecx, &edx)) {
1909+ /*
1910+ * Intel ("GenuineIntel")
1911+ * remark: Intel CPUs only support "syscall" in 64bit
1912+ * longmode. Also an 64bit guest with a
1913+ * 32bit compat-app running will #UD !! While this
1914+ * behaviour can be fixed (by emulating) into AMD
1915+ * response - CPUs of AMD can't behave like Intel.
1916+ */
1917+ if (ebx == X86EMUL_CPUID_VENDOR_GenuineIntel_ebx &&
1918+ ecx == X86EMUL_CPUID_VENDOR_GenuineIntel_ecx &&
1919+ edx == X86EMUL_CPUID_VENDOR_GenuineIntel_edx)
1920+ return false;
1921+
1922+ /* AMD ("AuthenticAMD") */
1923+ if (ebx == X86EMUL_CPUID_VENDOR_AuthenticAMD_ebx &&
1924+ ecx == X86EMUL_CPUID_VENDOR_AuthenticAMD_ecx &&
1925+ edx == X86EMUL_CPUID_VENDOR_AuthenticAMD_edx)
1926+ return true;
1927+
1928+ /* AMD ("AMDisbetter!") */
1929+ if (ebx == X86EMUL_CPUID_VENDOR_AMDisbetterI_ebx &&
1930+ ecx == X86EMUL_CPUID_VENDOR_AMDisbetterI_ecx &&
1931+ edx == X86EMUL_CPUID_VENDOR_AMDisbetterI_edx)
1932+ return true;
1933+ }
1934+
1935+ /* default: (not Intel, not AMD), apply Intel's stricter rules... */
1936+ return false;
1937+}
1938+
18941939 static int em_syscall(struct x86_emulate_ctxt *ctxt)
18951940 {
18961941 struct x86_emulate_ops *ops = ctxt->ops;
@@ -1904,9 +1949,15 @@ static int em_syscall(struct x86_emulate_ctxt *ctxt) · 7 unmodified lines
19041949 ctxt->mode == X86EMUL_MODE_VM86)
19051950 return emulate_ud(ctxt);
19061951
1952+ if (!(em_syscall_is_enabled(ctxt)))
1953+ return emulate_ud(ctxt);
1954+
19071955 ops->get_msr(ctxt, MSR_EFER, &efer);
19081956 setup_syscalls_segments(ctxt, &cs, &ss);
19091957
1958+ if (!(efer & EFER_SCE))
1959+ return emulate_ud(ctxt);
1960+
19101961 ops->get_msr(ctxt, MSR_STAR, &msr_data);
19111962 msr_data >>= 32;
19121963 cs_sel = (u16)(msr_data & 0xfffc);
arch/x86/kvm/vmx.c+1−1
@@ -1457,7 +1457,7 @@ static void __vmx_load_host_state(struct vcpu_vmx *vmx) · 1456 unmodified lines
14571457 #ifdef CONFIG_X86_64
14581458 wrmsrl(MSR_KERNEL_GS_BASE, vmx->msr_host_kernel_gs_base);
14591459 #endif
1460− if (current_thread_info()->status & TS_USEDFPU)
1460+ if (__thread_has_fpu(current))
14611461 clts();
14621462 load_gdt(&__get_cpu_var(host_gdt));
14631463 }
arch/x86/kvm/x86.c+45−0
@@ -1495,6 +1495,8 @@ static void record_steal_time(struct kvm_vcpu *vcpu) · 1494 unmodified lines
14951495
14961496 int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data)
14971497 {
1498+ bool pr = false;
1499+
14981500 switch (msr) {
14991501 case MSR_EFER:
15001502 return set_efer(vcpu, data);
@@ -1635,6 +1637,18 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data) · 134 unmodified lines
16351637 pr_unimpl(vcpu, "unimplemented perfctr wrmsr: "
16361638 "0x%x data 0x%llx\n", msr, data);
16371639 break;
1640+ case MSR_P6_PERFCTR0:
1641+ case MSR_P6_PERFCTR1:
1642+ pr = true;
1643+ case MSR_P6_EVNTSEL0:
1644+ case MSR_P6_EVNTSEL1:
1645+ if (kvm_pmu_msr(vcpu, msr))
1646+ return kvm_pmu_set_msr(vcpu, msr, data);
1647+
1648+ if (pr || data != 0)
1649+ pr_unimpl(vcpu, "disabled perfctr wrmsr: "
1650+ "0x%x data 0x%llx\n", msr, data);
1651+ break;
16381652 case MSR_K7_CLK_CTL:
16391653 /*
16401654 * Ignore all writes to this no longer documented MSR.
@@ -1835,6 +1849,14 @@ int kvm_get_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 *pdata) · 194 unmodified lines
18351849 case MSR_FAM10H_MMIO_CONF_BASE:
18361850 data = 0;
18371851 break;
1852+ case MSR_P6_PERFCTR0:
1853+ case MSR_P6_PERFCTR1:
1854+ case MSR_P6_EVNTSEL0:
1855+ case MSR_P6_EVNTSEL1:
1856+ if (kvm_pmu_msr(vcpu, msr))
1857+ return kvm_pmu_get_msr(vcpu, msr, pdata);
1858+ data = 0;
1859+ break;
18381860 case MSR_IA32_UCODE_REV:
18391861 data = 0x100000000ULL;
18401862 break;
@@ -4180,6 +4202,28 @@ static int emulator_intercept(struct x86_emulate_ctxt *ctxt, · 2339 unmodified lines
41804202 return kvm_x86_ops->check_intercept(emul_to_vcpu(ctxt), info, stage);
41814203 }
41824204
4205+static bool emulator_get_cpuid(struct x86_emulate_ctxt *ctxt,
4206+ u32 *eax, u32 *ebx, u32 *ecx, u32 *edx)
4207+{
4208+ struct kvm_cpuid_entry2 *cpuid = NULL;
4209+
4210+ if (eax && ecx)
4211+ cpuid = kvm_find_cpuid_entry(emul_to_vcpu(ctxt),
4212+ *eax, *ecx);
4213+
4214+ if (cpuid) {
4215+ *eax = cpuid->eax;
4216+ *ecx = cpuid->ecx;
4217+ if (ebx)
4218+ *ebx = cpuid->ebx;
4219+ if (edx)
4220+ *edx = cpuid->edx;
4221+ return true;
4222+ }
4223+
4224+ return false;
4225+}
4226+
41834227 static struct x86_emulate_ops emulate_ops = {
41844228 .read_std = kvm_read_guest_virt_system,
41854229 .write_std = kvm_write_guest_virt_system,
@@ -4211,6 +4255,7 @@ static struct x86_emulate_ops emulate_ops = { · 25 unmodified lines
42114255 .get_fpu = emulator_get_fpu,
42124256 .put_fpu = emulator_put_fpu,
42134257 .intercept = emulator_intercept,
4258+ .get_cpuid = emulator_get_cpuid,
42144259 };
42154260
42164261 static void cache_all_regs(struct kvm_vcpu *vcpu)
arch/x86/lib/x86-opcode-map.txt+5−3
@@ -219,7 +219,9 @@ ab: STOS/W/D/Q Yv,rAX · 218 unmodified lines
219219 ac: LODS/B AL,Xb
220220 ad: LODS/W/D/Q rAX,Xv
221221 ae: SCAS/B AL,Yb
222−af: SCAS/W/D/Q rAX,Xv
222+# Note: The May 2011 Intel manual shows Xv for the second parameter of the
223+# next instruction but Yv is correct
224+af: SCAS/W/D/Q rAX,Yv
223225 # 0xb0 - 0xbf
224226 b0: MOV AL/R8L,Ib
225227 b1: MOV CL/R9L,Ib
@@ -729,8 +731,8 @@ de: VAESDEC Vdq,Hdq,Wdq (66),(v1) · 503 unmodified lines
729731 df: VAESDECLAST Vdq,Hdq,Wdq (66),(v1)
730732 f0: MOVBE Gy,My | MOVBE Gw,Mw (66) | CRC32 Gd,Eb (F2)
731733 f1: MOVBE My,Gy | MOVBE Mw,Gw (66) | CRC32 Gd,Ey (F2)
732−f3: ANDN Gy,By,Ey (v)
733−f4: Grp17 (1A)
734+f2: ANDN Gy,By,Ey (v)
735+f3: Grp17 (1A)
734736 f5: BZHI Gy,Ey,By (v) | PEXT Gy,By,Ey (F3),(v) | PDEP Gy,By,Ey (F2),(v)
735737 f6: MULX By,Gy,rDX,Ey (F2),(v)
736738 f7: BEXTR Gy,Ey,By (v) | SHLX Gy,Ey,By (66),(v) | SARX Gy,Ey,By (F3),(v) | SHRX Gy,Ey,By (F2),(v)
arch/x86/mm/fault.c+2−2
@@ -673,7 +673,7 @@ no_context(struct pt_regs *regs, unsigned long error_code, · 672 unmodified lines
673673
674674 stackend = end_of_stack(tsk);
675675 if (tsk != &init_task && *stackend != STACK_END_MAGIC)
676− printk(KERN_ALERT "Thread overran stack, or stack corrupted\n");
676+ printk(KERN_EMERG "Thread overran stack, or stack corrupted\n");
677677
678678 tsk->thread.cr2 = address;
679679 tsk->thread.trap_no = 14;
@@ -684,7 +684,7 @@ no_context(struct pt_regs *regs, unsigned long error_code, · 4 unmodified lines
684684 sig = 0;
685685
686686 /* Executive summary in case the body of the oops scrolled away */
687− printk(KERN_EMERG "CR2: %016lx\n", address);
687+ printk(KERN_DEFAULT "CR2: %016lx\n", address);
688688
689689 oops_end(flags, regs, sig);
690690 }
arch/x86/mm/srat.c+4−0
@@ -109,6 +109,8 @@ acpi_numa_processor_affinity_init(struct acpi_srat_cpu_affinity *pa) · 108 unmodified lines
109109 if ((pa->flags & ACPI_SRAT_CPU_ENABLED) == 0)
110110 return;
111111 pxm = pa->proximity_domain_lo;
112+ if (acpi_srat_revision >= 2)
113+ pxm |= *((unsigned int*)pa->proximity_domain_hi) << 8;
112114 node = setup_node(pxm);
113115 if (node < 0) {
114116 printk(KERN_ERR "SRAT: Too many proximity domains %x\n", pxm);
@@ -160,6 +162,8 @@ acpi_numa_memory_affinity_init(struct acpi_srat_mem_affinity *ma) · 45 unmodified lines
160162 start = ma->base_address;
161163 end = start + ma->length;
162164 pxm = ma->proximity_domain;
165+ if (acpi_srat_revision <= 1)
166+ pxm &= 0xff;
163167 node = setup_node(pxm);
164168 if (node < 0) {
165169 printk(KERN_ERR "SRAT: Too many proximity domains.\n");
arch/x86/net/bpf_jit_comp.c+22−14
@@ -151,17 +151,18 @@ void bpf_jit_compile(struct sk_filter *fp) · 150 unmodified lines
151151 cleanup_addr = proglen; /* epilogue address */
152152
153153 for (pass = 0; pass < 10; pass++) {
154+ u8 seen_or_pass0 = (pass == 0) ? (SEEN_XREG | SEEN_DATAREF | SEEN_MEM) : seen;
154155 /* no prologue/epilogue for trivial filters (RET something) */
155156 proglen = 0;
156157 prog = temp;
157158
158− if (seen) {
159+ if (seen_or_pass0) {
159160 EMIT4(0x55, 0x48, 0x89, 0xe5); /* push %rbp; mov %rsp,%rbp */
160161 EMIT4(0x48, 0x83, 0xec, 96); /* subq $96,%rsp */
161162 /* note : must save %rbx in case bpf_error is hit */
162− if (seen & (SEEN_XREG | SEEN_DATAREF))
163+ if (seen_or_pass0 & (SEEN_XREG | SEEN_DATAREF))
163164 EMIT4(0x48, 0x89, 0x5d, 0xf8); /* mov %rbx, -8(%rbp) */
164− if (seen & SEEN_XREG)
165+ if (seen_or_pass0 & SEEN_XREG)
165166 CLEAR_X(); /* make sure we dont leek kernel memory */
166167
167168 /*
@@ -170,7 +171,7 @@ void bpf_jit_compile(struct sk_filter *fp) · 2 unmodified lines
170171 * r9 = skb->len - skb->data_len
171172 * r8 = skb->data
172173 */
173− if (seen & SEEN_DATAREF) {
174+ if (seen_or_pass0 & SEEN_DATAREF) {
174175 if (offsetof(struct sk_buff, len) <= 127)
175176 /* mov off8(%rdi),%r9d */
176177 EMIT4(0x44, 0x8b, 0x4f, offsetof(struct sk_buff, len));
@@ -260,9 +261,14 @@ void bpf_jit_compile(struct sk_filter *fp) · 83 unmodified lines
260261 case BPF_S_ALU_DIV_X: /* A /= X; */
261262 seen |= SEEN_XREG;
262263 EMIT2(0x85, 0xdb); /* test %ebx,%ebx */
263− if (pc_ret0 != -1)
264− EMIT_COND_JMP(X86_JE, addrs[pc_ret0] - (addrs[i] - 4));
265− else {
264+ if (pc_ret0 > 0) {
265+ /* addrs[pc_ret0 - 1] is start address of target
266+ * (addrs[i] - 4) is the address following this jmp
267+ * ("xor %edx,%edx; div %ebx" being 4 bytes long)
268+ */
269+ EMIT_COND_JMP(X86_JE, addrs[pc_ret0 - 1] -
270+ (addrs[i] - 4));
271+ } else {
266272 EMIT_COND_JMP(X86_JNE, 2 + 5);
267273 CLEAR_A();
268274 EMIT1_off32(0xe9, cleanup_addr - (addrs[i] - 4)); /* jmp .+off32 */
@@ -335,12 +341,12 @@ void bpf_jit_compile(struct sk_filter *fp) · 66 unmodified lines
335341 }
336342 /* fallinto */
337343 case BPF_S_RET_A:
338− if (seen) {
344+ if (seen_or_pass0) {
339345 if (i != flen - 1) {
340346 EMIT_JMP(cleanup_addr - addrs[i]);
341347 break;
342348 }
343− if (seen & SEEN_XREG)
349+ if (seen_or_pass0 & SEEN_XREG)
344350 EMIT4(0x48, 0x8b, 0x5d, 0xf8); /* mov -8(%rbp),%rbx */
345351 EMIT1(0xc9); /* leaveq */
346352 }
@@ -483,8 +489,9 @@ common_load: seen |= SEEN_DATAREF; · 136 unmodified lines
483489 goto common_load;
484490 case BPF_S_LDX_B_MSH:
485491 if ((int)K < 0) {
486− if (pc_ret0 != -1) {
487− EMIT_JMP(addrs[pc_ret0] - addrs[i]);
492+ if (pc_ret0 > 0) {
493+ /* addrs[pc_ret0 - 1] is the start address */
494+ EMIT_JMP(addrs[pc_ret0 - 1] - addrs[i]);
488495 break;
489496 }
490497 CLEAR_A();
@@ -599,13 +606,14 @@ cond_branch: f_offset = addrs[i + filter[i].jf] - addrs[i]; · 108 unmodified lines
599606 * use it to give the cleanup instruction(s) addr
600607 */
601608 cleanup_addr = proglen - 1; /* ret */
602− if (seen)
609+ if (seen_or_pass0)
603610 cleanup_addr -= 1; /* leaveq */
604− if (seen & SEEN_XREG)
611+ if (seen_or_pass0 & SEEN_XREG)
605612 cleanup_addr -= 4; /* mov -8(%rbp),%rbx */
606613
607614 if (image) {
608− WARN_ON(proglen != oldproglen);
615+ if (proglen != oldproglen)
616+ pr_err("bpb_jit_compile proglen=%u != oldproglen=%u\n", proglen, oldproglen);
609617 break;
610618 }
611619 if (proglen == oldproglen) {
arch/x86/pci/xen.c+1−1
@@ -374,7 +374,7 @@ int __init pci_xen_init(void) · 373 unmodified lines
374374
375375 int __init pci_xen_hvm_init(void)
376376 {
377− if (!xen_feature(XENFEAT_hvm_pirqs))
377+ if (!xen_have_vector_callback || !xen_feature(XENFEAT_hvm_pirqs))
378378 return 0;
379379
380380 #ifdef CONFIG_ACPI
arch/x86/platform/uv/tlb_uv.c+318−72
@@ -157,13 +157,14 @@ static int __init uvhub_to_first_apicid(int uvhub) · 156 unmodified lines
157157 * clear of the Timeout bit (as well) will free the resource. No reply will
158158 * be sent (the hardware will only do one reply per message).
159159 */
160−static void reply_to_message(struct msg_desc *mdp, struct bau_control *bcp)
160+static void reply_to_message(struct msg_desc *mdp, struct bau_control *bcp,
161+ int do_acknowledge)
161162 {
162163 unsigned long dw;
163164 struct bau_pq_entry *msg;
164165
165166 msg = mdp->msg;
166− if (!msg->canceled) {
167+ if (!msg->canceled && do_acknowledge) {
167168 dw = (msg->swack_vec << UV_SW_ACK_NPENDING) | msg->swack_vec;
168169 write_mmr_sw_ack(dw);
169170 }
@@ -212,8 +213,8 @@ static void bau_process_retry_msg(struct msg_desc *mdp, · 42 unmodified lines
212213 if (mmr & (msg_res << UV_SW_ACK_NPENDING)) {
213214 unsigned long mr;
214215 /*
215− * is the resource timed out?
216− * make everyone ignore the cancelled message.
216+ * Is the resource timed out?
217+ * Make everyone ignore the cancelled message.
217218 */
218219 msg2->canceled = 1;
219220 stat->d_canceled++;
@@ -231,8 +232,8 @@ static void bau_process_retry_msg(struct msg_desc *mdp, · 11 unmodified lines
231232 * Do all the things a cpu should do for a TLB shootdown message.
232233 * Other cpu's may come here at the same time for this message.
233234 */
234−static void bau_process_message(struct msg_desc *mdp,
235− struct bau_control *bcp)
235+static void bau_process_message(struct msg_desc *mdp, struct bau_control *bcp,
236+ int do_acknowledge)
236237 {
237238 short socket_ack_count = 0;
238239 short *sp;
@@ -284,8 +285,9 @@ static void bau_process_message(struct msg_desc *mdp, · 45 unmodified lines
284285 if (msg_ack_count == bcp->cpus_in_uvhub) {
285286 /*
286287 * All cpus in uvhub saw it; reply
288+ * (unless we are in the UV2 workaround)
287289 */
288− reply_to_message(mdp, bcp);
290+ reply_to_message(mdp, bcp, do_acknowledge);
289291 }
290292 }
291293
@@ -491,27 +493,138 @@ static int uv1_wait_completion(struct bau_desc *bau_desc, · 199 unmodified lines
491493 /*
492494 * UV2 has an extra bit of status in the ACTIVATION_STATUS_2 register.
493495 */
494−static unsigned long uv2_read_status(unsigned long offset, int rshft, int cpu)
496+static unsigned long uv2_read_status(unsigned long offset, int rshft, int desc)
495497 {
496498 unsigned long descriptor_status;
497499 unsigned long descriptor_status2;
498500
499501 descriptor_status = ((read_lmmr(offset) >> rshft) & UV_ACT_STATUS_MASK);
500− descriptor_status2 = (read_mmr_uv2_status() >> cpu) & 0x1UL;
502+ descriptor_status2 = (read_mmr_uv2_status() >> desc) & 0x1UL;
501503 descriptor_status = (descriptor_status << 1) | descriptor_status2;
502504 return descriptor_status;
503505 }
504506
507+/*
508+ * Return whether the status of the descriptor that is normally used for this
509+ * cpu (the one indexed by its hub-relative cpu number) is busy.
510+ * The status of the original 32 descriptors is always reflected in the 64
511+ * bits of UVH_LB_BAU_SB_ACTIVATION_STATUS_0.
512+ * The bit provided by the activation_status_2 register is irrelevant to
513+ * the status if it is only being tested for busy or not busy.
514+ */
515+int normal_busy(struct bau_control *bcp)
516+{
517+ int cpu = bcp->uvhub_cpu;
518+ int mmr_offset;
519+ int right_shift;
520+
521+ mmr_offset = UVH_LB_BAU_SB_ACTIVATION_STATUS_0;
522+ right_shift = cpu * UV_ACT_STATUS_SIZE;
523+ return (((((read_lmmr(mmr_offset) >> right_shift) &
524+ UV_ACT_STATUS_MASK)) << 1) == UV2H_DESC_BUSY);
525+}
526+
527+/*
528+ * Entered when a bau descriptor has gone into a permanent busy wait because
529+ * of a hardware bug.
530+ * Workaround the bug.
531+ */
532+int handle_uv2_busy(struct bau_control *bcp)
533+{
534+ int busy_one = bcp->using_desc;
535+ int normal = bcp->uvhub_cpu;
536+ int selected = -1;
537+ int i;
538+ unsigned long descriptor_status;
539+ unsigned long status;
540+ int mmr_offset;
541+ struct bau_desc *bau_desc_old;
542+ struct bau_desc *bau_desc_new;
543+ struct bau_control *hmaster = bcp->uvhub_master;
544+ struct ptc_stats *stat = bcp->statp;
545+ cycles_t ttm;
546+
547+ stat->s_uv2_wars++;
548+ spin_lock(&hmaster->uvhub_lock);
549+ /* try for the original first */
550+ if (busy_one != normal) {
551+ if (!normal_busy(bcp))
552+ selected = normal;
553+ }
554+ if (selected < 0) {
555+ /* can't use the normal, select an alternate */
556+ mmr_offset = UVH_LB_BAU_SB_ACTIVATION_STATUS_1;
557+ descriptor_status = read_lmmr(mmr_offset);
558+
559+ /* scan available descriptors 32-63 */
560+ for (i = 0; i < UV_CPUS_PER_AS; i++) {
561+ if ((hmaster->inuse_map & (1 << i)) == 0) {
562+ status = ((descriptor_status >>
563+ (i * UV_ACT_STATUS_SIZE)) &
564+ UV_ACT_STATUS_MASK) << 1;
565+ if (status != UV2H_DESC_BUSY) {
566+ selected = i + UV_CPUS_PER_AS;
567+ break;
568+ }
569+ }
570+ }
571+ }
572+
573+ if (busy_one != normal)
574+ /* mark the busy alternate as not in-use */
575+ hmaster->inuse_map &= ~(1 << (busy_one - UV_CPUS_PER_AS));
576+
577+ if (selected >= 0) {
578+ /* switch to the selected descriptor */
579+ if (selected != normal) {
580+ /* set the selected alternate as in-use */
581+ hmaster->inuse_map |=
582+ (1 << (selected - UV_CPUS_PER_AS));
583+ if (selected > stat->s_uv2_wars_hw)
584+ stat->s_uv2_wars_hw = selected;
585+ }
586+ bau_desc_old = bcp->descriptor_base;
587+ bau_desc_old += (ITEMS_PER_DESC * busy_one);
588+ bcp->using_desc = selected;
589+ bau_desc_new = bcp->descriptor_base;
590+ bau_desc_new += (ITEMS_PER_DESC * selected);
591+ *bau_desc_new = *bau_desc_old;
592+ } else {
593+ /*
594+ * All are busy. Wait for the normal one for this cpu to
595+ * free up.
596+ */
597+ stat->s_uv2_war_waits++;
598+ spin_unlock(&hmaster->uvhub_lock);
599+ ttm = get_cycles();
600+ do {
601+ cpu_relax();
602+ } while (normal_busy(bcp));
603+ spin_lock(&hmaster->uvhub_lock);
604+ /* switch to the original descriptor */
605+ bcp->using_desc = normal;
606+ bau_desc_old = bcp->descriptor_base;
607+ bau_desc_old += (ITEMS_PER_DESC * bcp->using_desc);
608+ bcp->using_desc = (ITEMS_PER_DESC * normal);
609+ bau_desc_new = bcp->descriptor_base;
610+ bau_desc_new += (ITEMS_PER_DESC * normal);
611+ *bau_desc_new = *bau_desc_old; /* copy the entire descriptor */
612+ }
613+ spin_unlock(&hmaster->uvhub_lock);
614+ return FLUSH_RETRY_BUSYBUG;
615+}
616+
505617 static int uv2_wait_completion(struct bau_desc *bau_desc,
506618 unsigned long mmr_offset, int right_shift,
507619 struct bau_control *bcp, long try)
508620 {
509621 unsigned long descriptor_stat;
510622 cycles_t ttm;
511− int cpu = bcp->uvhub_cpu;
623+ int desc = bcp->using_desc;
624+ long busy_reps = 0;
512625 struct ptc_stats *stat = bcp->statp;
513626
514− descriptor_stat = uv2_read_status(mmr_offset, right_shift, cpu);
627+ descriptor_stat = uv2_read_status(mmr_offset, right_shift, desc);
515628
516629 /* spin on the status MMR, waiting for it to go idle */
517630 while (descriptor_stat != UV2H_DESC_IDLE) {
@@ -522,32 +635,35 @@ static int uv2_wait_completion(struct bau_desc *bau_desc, · 4 unmodified lines
522635 * our message and its state will stay IDLE.
523636 */
524637 if ((descriptor_stat == UV2H_DESC_SOURCE_TIMEOUT) ||
525− (descriptor_stat == UV2H_DESC_DEST_STRONG_NACK) ||
526638 (descriptor_stat == UV2H_DESC_DEST_PUT_ERR)) {
527639 stat->s_stimeout++;
528640 return FLUSH_GIVEUP;
641+ } else if (descriptor_stat == UV2H_DESC_DEST_STRONG_NACK) {
642+ stat->s_strongnacks++;
643+ bcp->conseccompletes = 0;
644+ return FLUSH_GIVEUP;
529645 } else if (descriptor_stat == UV2H_DESC_DEST_TIMEOUT) {
530646 stat->s_dtimeout++;
531− ttm = get_cycles();
532− /*
533− * Our retries may be blocked by all destination
534− * swack resources being consumed, and a timeout
535− * pending. In that case hardware returns the
536− * ERROR that looks like a destination timeout.
537− */
538− if (cycles_2_us(ttm - bcp->send_message) < timeout_us) {
539− bcp->conseccompletes = 0;
540− return FLUSH_RETRY_PLUGGED;
541− }
542647 bcp->conseccompletes = 0;
543648 return FLUSH_RETRY_TIMEOUT;
544649 } else {
650+ busy_reps++;
651+ if (busy_reps > 1000000) {
652+ /* not to hammer on the clock */
653+ busy_reps = 0;
654+ ttm = get_cycles();
655+ if ((ttm - bcp->send_message) >
656+ (bcp->clocks_per_100_usec)) {
657+ return handle_uv2_busy(bcp);
658+ }
659+ }
545660 /*
546661 * descriptor_stat is still BUSY
547662 */
548663 cpu_relax();
549664 }
550− descriptor_stat = uv2_read_status(mmr_offset, right_shift, cpu);
665+ descriptor_stat = uv2_read_status(mmr_offset, right_shift,
666+ desc);
551667 }
552668 bcp->conseccompletes++;
553669 return FLUSH_COMPLETE;
@@ -563,17 +679,17 @@ static int wait_completion(struct bau_desc *bau_desc, · 9 unmodified lines
563679 {
564680 int right_shift;
565681 unsigned long mmr_offset;
566− int cpu = bcp->uvhub_cpu;
682+ int desc = bcp->using_desc;
567683
568− if (cpu < UV_CPUS_PER_AS) {
684+ if (desc < UV_CPUS_PER_AS) {
569685 mmr_offset = UVH_LB_BAU_SB_ACTIVATION_STATUS_0;
570− right_shift = cpu * UV_ACT_STATUS_SIZE;
686+ right_shift = desc * UV_ACT_STATUS_SIZE;
571687 } else {
572688 mmr_offset = UVH_LB_BAU_SB_ACTIVATION_STATUS_1;
573− right_shift = ((cpu - UV_CPUS_PER_AS) * UV_ACT_STATUS_SIZE);
689+ right_shift = ((desc - UV_CPUS_PER_AS) * UV_ACT_STATUS_SIZE);
574690 }
575691
576− if (is_uv1_hub())
692+ if (bcp->uvhub_version == 1)
577693 return uv1_wait_completion(bau_desc, mmr_offset, right_shift,
578694 bcp, try);
579695 else
@@ -752,19 +868,22 @@ static void handle_cmplt(int completion_status, struct bau_desc *bau_desc, · 172 unmodified lines
752868 * Returns 1 if it gives up entirely and the original cpu mask is to be
753869 * returned to the kernel.
754870 */
755−int uv_flush_send_and_wait(struct bau_desc *bau_desc,
756− struct cpumask *flush_mask, struct bau_control *bcp)
871+int uv_flush_send_and_wait(struct cpumask *flush_mask, struct bau_control *bcp)
757872 {
758873 int seq_number = 0;
759874 int completion_stat = 0;
875+ int uv1 = 0;
760876 long try = 0;
761877 unsigned long index;
762878 cycles_t time1;
763879 cycles_t time2;
764880 struct ptc_stats *stat = bcp->statp;
765881 struct bau_control *hmaster = bcp->uvhub_master;
882+ struct uv1_bau_msg_header *uv1_hdr = NULL;
883+ struct uv2_bau_msg_header *uv2_hdr = NULL;
884+ struct bau_desc *bau_desc;
766885
767− if (is_uv1_hub())
886+ if (bcp->uvhub_version == 1)
768887 uv1_throttle(hmaster, stat);
769888
770889 while (hmaster->uvhub_quiesce)
@@ -772,22 +891,39 @@ int uv_flush_send_and_wait(struct bau_desc *bau_desc, · 1 unmodified line
772891
773892 time1 = get_cycles();
774893 do {
775− if (try == 0) {
776− bau_desc->header.msg_type = MSG_REGULAR;
894+ bau_desc = bcp->descriptor_base;
895+ bau_desc += (ITEMS_PER_DESC * bcp->using_desc);
896+ if (bcp->uvhub_version == 1) {
897+ uv1 = 1;
898+ uv1_hdr = &bau_desc->header.uv1_hdr;
899+ } else
900+ uv2_hdr = &bau_desc->header.uv2_hdr;
901+ if ((try == 0) || (completion_stat == FLUSH_RETRY_BUSYBUG)) {
902+ if (uv1)
903+ uv1_hdr->msg_type = MSG_REGULAR;
904+ else
905+ uv2_hdr->msg_type = MSG_REGULAR;
777906 seq_number = bcp->message_number++;
778907 } else {
779− bau_desc->header.msg_type = MSG_RETRY;
908+ if (uv1)
909+ uv1_hdr->msg_type = MSG_RETRY;
910+ else
911+ uv2_hdr->msg_type = MSG_RETRY;
780912 stat->s_retry_messages++;
781913 }
782914
783− bau_desc->header.sequence = seq_number;
784− index = (1UL << AS_PUSH_SHIFT) | bcp->uvhub_cpu;
915+ if (uv1)
916+ uv1_hdr->sequence = seq_number;
917+ else
918+ uv2_hdr->sequence = seq_number;
919+ index = (1UL << AS_PUSH_SHIFT) | bcp->using_desc;
785920 bcp->send_message = get_cycles();
786921
787922 write_mmr_activation(index);
788923
789924 try++;
790925 completion_stat = wait_completion(bau_desc, bcp, try);
926+ /* UV2: wait_completion() may change the bcp->using_desc */
791927
792928 handle_cmplt(completion_stat, bau_desc, bcp, hmaster, stat);
793929
@@ -798,6 +934,7 @@ int uv_flush_send_and_wait(struct bau_desc *bau_desc, · 4 unmodified lines
798934 }
799935 cpu_relax();
800936 } while ((completion_stat == FLUSH_RETRY_PLUGGED) ||
937+ (completion_stat == FLUSH_RETRY_BUSYBUG) ||
801938 (completion_stat == FLUSH_RETRY_TIMEOUT));
802939
803940 time2 = get_cycles();
@@ -812,6 +949,7 @@ int uv_flush_send_and_wait(struct bau_desc *bau_desc, · 8 unmodified lines
812949 record_send_stats(time1, time2, bcp, stat, completion_stat, try);
813950
814951 if (completion_stat == FLUSH_GIVEUP)
952+ /* FLUSH_GIVEUP will fall back to using IPI's for tlb flush */
815953 return 1;
816954 return 0;
817955 }
@@ -967,7 +1105,7 @@ const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask, · 149 unmodified lines
9671105 stat->s_ntargself++;
9681106
9691107 bau_desc = bcp->descriptor_base;
970− bau_desc += ITEMS_PER_DESC * bcp->uvhub_cpu;
1108+ bau_desc += (ITEMS_PER_DESC * bcp->using_desc);
9711109 bau_uvhubs_clear(&bau_desc->distribution, UV_DISTRIBUTION_SIZE);
9721110 if (set_distrib_bits(flush_mask, bcp, bau_desc, &locals, &remotes))
9731111 return NULL;
@@ -980,12 +1118,85 @@ const struct cpumask *uv_flush_tlb_others(const struct cpumask *cpumask, · 6 unmodified lines
9801118 * uv_flush_send_and_wait returns 0 if all cpu's were messaged,
9811119 * or 1 if it gave up and the original cpumask should be returned.
9821120 */
983− if (!uv_flush_send_and_wait(bau_desc, flush_mask, bcp))
1121+ if (!uv_flush_send_and_wait(flush_mask, bcp))
9841122 return NULL;
9851123 else
9861124 return cpumask;
9871125 }
9881126
1127+/*
1128+ * Search the message queue for any 'other' message with the same software
1129+ * acknowledge resource bit vector.
1130+ */
1131+struct bau_pq_entry *find_another_by_swack(struct bau_pq_entry *msg,
1132+ struct bau_control *bcp, unsigned char swack_vec)
1133+{
1134+ struct bau_pq_entry *msg_next = msg + 1;
1135+
1136+ if (msg_next > bcp->queue_last)
1137+ msg_next = bcp->queue_first;
1138+ while ((msg_next->swack_vec != 0) && (msg_next != msg)) {
1139+ if (msg_next->swack_vec == swack_vec)
1140+ return msg_next;
1141+ msg_next++;
1142+ if (msg_next > bcp->queue_last)
1143+ msg_next = bcp->queue_first;
1144+ }
1145+ return NULL;
1146+}
1147+
1148+/*
1149+ * UV2 needs to work around a bug in which an arriving message has not
1150+ * set a bit in the UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE register.
1151+ * Such a message must be ignored.
1152+ */
1153+void process_uv2_message(struct msg_desc *mdp, struct bau_control *bcp)
1154+{
1155+ unsigned long mmr_image;
1156+ unsigned char swack_vec;
1157+ struct bau_pq_entry *msg = mdp->msg;
1158+ struct bau_pq_entry *other_msg;
1159+
1160+ mmr_image = read_mmr_sw_ack();
1161+ swack_vec = msg->swack_vec;
1162+
1163+ if ((swack_vec & mmr_image) == 0) {
1164+ /*
1165+ * This message was assigned a swack resource, but no
1166+ * reserved acknowlegment is pending.
1167+ * The bug has prevented this message from setting the MMR.
1168+ * And no other message has used the same sw_ack resource.
1169+ * Do the requested shootdown but do not reply to the msg.
1170+ * (the 0 means make no acknowledge)
1171+ */
1172+ bau_process_message(mdp, bcp, 0);
1173+ return;
1174+ }
1175+
1176+ /*
1177+ * Some message has set the MMR 'pending' bit; it might have been
1178+ * another message. Look for that message.
1179+ */
1180+ other_msg = find_another_by_swack(msg, bcp, msg->swack_vec);
1181+ if (other_msg) {
1182+ /* There is another. Do not ack the current one. */
1183+ bau_process_message(mdp, bcp, 0);
1184+ /*
1185+ * Let the natural processing of that message acknowledge
1186+ * it. Don't get the processing of sw_ack's out of order.
1187+ */
1188+ return;
1189+ }
1190+
1191+ /*
1192+ * There is no other message using this sw_ack, so it is safe to
1193+ * acknowledge it.
1194+ */
1195+ bau_process_message(mdp, bcp, 1);
1196+
1197+ return;
1198+}
1199+
9891200 /*
9901201 * The BAU message interrupt comes here. (registered by set_intr_gate)
9911202 * See entry_64.S
@@ -1009,6 +1220,7 @@ void uv_bau_message_interrupt(struct pt_regs *regs) · 17 unmodified lines
10091220 struct ptc_stats *stat;
10101221 struct msg_desc msgdesc;
10111222
1223+ ack_APIC_irq();
10121224 time_start = get_cycles();
10131225
10141226 bcp = &per_cpu(bau_control, smp_processor_id());
@@ -1022,9 +1234,11 @@ void uv_bau_message_interrupt(struct pt_regs *regs) · 7 unmodified lines
10221234 count++;
10231235
10241236 msgdesc.msg_slot = msg - msgdesc.queue_first;
1025− msgdesc.swack_slot = ffs(msg->swack_vec) - 1;
10261237 msgdesc.msg = msg;
1027− bau_process_message(&msgdesc, bcp);
1238+ if (bcp->uvhub_version == 2)
1239+ process_uv2_message(&msgdesc, bcp);
1240+ else
1241+ bau_process_message(&msgdesc, bcp, 1);
10281242
10291243 msg++;
10301244 if (msg > msgdesc.queue_last)
@@ -1036,8 +1250,6 @@ void uv_bau_message_interrupt(struct pt_regs *regs) · 5 unmodified lines
10361250 stat->d_nomsg++;
10371251 else if (count > 1)
10381252 stat->d_multmsg++;
1039−
1040− ack_APIC_irq();
10411253 }
10421254
10431255 /*
@@ -1083,7 +1295,7 @@ static void __init enable_timeouts(void) · 39 unmodified lines
10831295 */
10841296 mmr_image |= (1L << SOFTACK_MSHIFT);
10851297 if (is_uv2_hub()) {
1086− mmr_image |= (1L << UV2_LEG_SHFT);
1298+ mmr_image &= ~(1L << UV2_LEG_SHFT);
10871299 mmr_image |= (1L << UV2_EXT_SHFT);
10881300 }
10891301 write_mmr_misc_control(pnode, mmr_image);
@@ -1136,13 +1348,13 @@ static int ptc_seq_show(struct seq_file *file, void *data) · 46 unmodified lines
11361348 seq_printf(file,
11371349 "remotehub numuvhubs numuvhubs16 numuvhubs8 ");
11381350 seq_printf(file,
1139− "numuvhubs4 numuvhubs2 numuvhubs1 dto retries rok ");
1351+ "numuvhubs4 numuvhubs2 numuvhubs1 dto snacks retries rok ");
11401352 seq_printf(file,
11411353 "resetp resett giveup sto bz throt swack recv rtime ");
11421354 seq_printf(file,
11431355 "all one mult none retry canc nocan reset rcan ");
11441356 seq_printf(file,
1145− "disable enable\n");
1357+ "disable enable wars warshw warwaits\n");
11461358 }
11471359 if (cpu < num_possible_cpus() && cpu_online(cpu)) {
11481360 stat = &per_cpu(ptcstats, cpu);
@@ -1154,10 +1366,10 @@ static int ptc_seq_show(struct seq_file *file, void *data) · 5 unmodified lines
11541366 stat->s_ntargremotes, stat->s_ntargcpu,
11551367 stat->s_ntarglocaluvhub, stat->s_ntargremoteuvhub,
11561368 stat->s_ntarguvhub, stat->s_ntarguvhub16);
1157− seq_printf(file, "%ld %ld %ld %ld %ld ",
1369+ seq_printf(file, "%ld %ld %ld %ld %ld %ld ",
11581370 stat->s_ntarguvhub8, stat->s_ntarguvhub4,
11591371 stat->s_ntarguvhub2, stat->s_ntarguvhub1,
1160− stat->s_dtimeout);
1372+ stat->s_dtimeout, stat->s_strongnacks);
11611373 seq_printf(file, "%ld %ld %ld %ld %ld %ld %ld %ld ",
11621374 stat->s_retry_messages, stat->s_retriesok,
11631375 stat->s_resets_plug, stat->s_resets_timeout,
@@ -1173,8 +1385,10 @@ static int ptc_seq_show(struct seq_file *file, void *data) · 9 unmodified lines
11731385 stat->d_nomsg, stat->d_retries, stat->d_canceled,
11741386 stat->d_nocanceled, stat->d_resets,
11751387 stat->d_rcanceled);
1176− seq_printf(file, "%ld %ld\n",
1177− stat->s_bau_disabled, stat->s_bau_reenabled);
1388+ seq_printf(file, "%ld %ld %ld %ld %ld\n",
1389+ stat->s_bau_disabled, stat->s_bau_reenabled,
1390+ stat->s_uv2_wars, stat->s_uv2_wars_hw,
1391+ stat->s_uv2_war_waits);
11781392 }
11791393 return 0;
11801394 }
@@ -1432,12 +1646,15 @@ static void activation_descriptor_init(int node, int pnode, int base_pnode) · 251 unmodified lines
14321646 {
14331647 int i;
14341648 int cpu;
1649+ int uv1 = 0;
14351650 unsigned long gpa;
14361651 unsigned long m;
14371652 unsigned long n;
14381653 size_t dsize;
14391654 struct bau_desc *bau_desc;
14401655 struct bau_desc *bd2;
1656+ struct uv1_bau_msg_header *uv1_hdr;
1657+ struct uv2_bau_msg_header *uv2_hdr;
14411658 struct bau_control *bcp;
14421659
14431660 /*
@@ -1451,6 +1668,8 @@ static void activation_descriptor_init(int node, int pnode, int base_pnode) · 7 unmodified lines
14511668 gpa = uv_gpa(bau_desc);
14521669 n = uv_gpa_to_gnode(gpa);
14531670 m = uv_gpa_to_offset(gpa);
1671+ if (is_uv1_hub())
1672+ uv1 = 1;
14541673
14551674 /* the 14-bit pnode */
14561675 write_mmr_descriptor_base(pnode, (n << UV_DESC_PSHIFT | m));
@@ -1461,21 +1680,33 @@ static void activation_descriptor_init(int node, int pnode, int base_pnode) · 4 unmodified lines
14611680 */
14621681 for (i = 0, bd2 = bau_desc; i < (ADP_SZ * ITEMS_PER_DESC); i++, bd2++) {
14631682 memset(bd2, 0, sizeof(struct bau_desc));
1464− bd2->header.swack_flag = 1;
1465− /*
1466− * The base_dest_nasid set in the message header is the nasid
1467− * of the first uvhub in the partition. The bit map will
1468− * indicate destination pnode numbers relative to that base.
1469− * They may not be consecutive if nasid striding is being used.
1470− */
1471− bd2->header.base_dest_nasid = UV_PNODE_TO_NASID(base_pnode);
1472− bd2->header.dest_subnodeid = UV_LB_SUBNODEID;
1473− bd2->header.command = UV_NET_ENDPOINT_INTD;
1474− bd2->header.int_both = 1;
1475− /*
1476− * all others need to be set to zero:
1477− * fairness chaining multilevel count replied_to
1478− */
1683+ if (uv1) {
1684+ uv1_hdr = &bd2->header.uv1_hdr;
1685+ uv1_hdr->swack_flag = 1;
1686+ /*
1687+ * The base_dest_nasid set in the message header
1688+ * is the nasid of the first uvhub in the partition.
1689+ * The bit map will indicate destination pnode numbers
1690+ * relative to that base. They may not be consecutive
1691+ * if nasid striding is being used.
1692+ */
1693+ uv1_hdr->base_dest_nasid =
1694+ UV_PNODE_TO_NASID(base_pnode);
1695+ uv1_hdr->dest_subnodeid = UV_LB_SUBNODEID;
1696+ uv1_hdr->command = UV_NET_ENDPOINT_INTD;
1697+ uv1_hdr->int_both = 1;
1698+ /*
1699+ * all others need to be set to zero:
1700+ * fairness chaining multilevel count replied_to
1701+ */
1702+ } else {
1703+ uv2_hdr = &bd2->header.uv2_hdr;
1704+ uv2_hdr->swack_flag = 1;
1705+ uv2_hdr->base_dest_nasid =
1706+ UV_PNODE_TO_NASID(base_pnode);
1707+ uv2_hdr->dest_subnodeid = UV_LB_SUBNODEID;
1708+ uv2_hdr->command = UV_NET_ENDPOINT_INTD;
1709+ }
14791710 }
14801711 for_each_present_cpu(cpu) {
14811712 if (pnode != uv_blade_to_pnode(uv_cpu_to_blade_id(cpu)))
@@ -1531,6 +1762,7 @@ static void pq_init(int node, int pnode) · 49 unmodified lines
15311762 write_mmr_payload_first(pnode, pn_first);
15321763 write_mmr_payload_tail(pnode, first);
15331764 write_mmr_payload_last(pnode, last);
1765+ write_gmmr_sw_ack(pnode, 0xffffUL);
15341766
15351767 /* in effect, all msg_type's are set to MSG_NOOP */
15361768 memset(pqp, 0, sizeof(struct bau_pq_entry) * DEST_Q_SIZE);
@@ -1584,14 +1816,14 @@ static int calculate_destination_timeout(void) · 47 unmodified lines
15841816 ts_ns = base * mult1 * mult2;
15851817 ret = ts_ns / 1000;
15861818 } else {
1587− /* 4 bits 0/1 for 10/80us, 3 bits of multiplier */
1588− mmr_image = uv_read_local_mmr(UVH_AGING_PRESCALE_SEL);
1819+ /* 4 bits 0/1 for 10/80us base, 3 bits of multiplier */
1820+ mmr_image = uv_read_local_mmr(UVH_LB_BAU_MISC_CONTROL);
15891821 mmr_image = (mmr_image & UV_SA_MASK) >> UV_SA_SHFT;
15901822 if (mmr_image & (1L << UV2_ACK_UNITS_SHFT))
1591− mult1 = 80;
1823+ base = 80;
15921824 else
1593− mult1 = 10;
1594− base = mmr_image & UV2_ACK_MASK;
1825+ base = 10;
1826+ mult1 = mmr_image & UV2_ACK_MASK;
15951827 ret = mult1 * base;
15961828 }
15971829 return ret;
@@ -1618,6 +1850,9 @@ static void __init init_per_cpu_tunables(void) · 20 unmodified lines
16181850 bcp->cong_response_us = congested_respns_us;
16191851 bcp->cong_reps = congested_reps;
16201852 bcp->cong_period = congested_period;
1853+ bcp->clocks_per_100_usec = usec_2_cycles(100);
1854+ spin_lock_init(&bcp->queue_lock);
1855+ spin_lock_init(&bcp->uvhub_lock);
16211856 }
16221857 }
16231858
@@ -1728,8 +1963,17 @@ static int scan_sock(struct socket_desc *sdp, struct uvhub_desc *bdp, · 104 unmodified lines
17281963 bcp->cpus_in_socket = sdp->num_cpus;
17291964 bcp->socket_master = *smasterp;
17301965 bcp->uvhub = bdp->uvhub;
1966+ if (is_uv1_hub())
1967+ bcp->uvhub_version = 1;
1968+ else if (is_uv2_hub())
1969+ bcp->uvhub_version = 2;
1970+ else {
1971+ printk(KERN_EMERG "uvhub version not 1 or 2\n");
1972+ return 1;
1973+ }
17311974 bcp->uvhub_master = *hmasterp;
17321975 bcp->uvhub_cpu = uv_cpu_hub_info(cpu)->blade_processor_id;
1976+ bcp->using_desc = bcp->uvhub_cpu;
17331977 if (bcp->uvhub_cpu >= MAX_CPUS_PER_UVHUB) {
17341978 printk(KERN_EMERG "%d cpus per uvhub invalid\n",
17351979 bcp->uvhub_cpu);
@@ -1845,6 +2089,8 @@ static int __init uv_bau_init(void) · 109 unmodified lines
18452089 uv_base_pnode = uv_blade_to_pnode(uvhub);
18462090 }
18472091
2092+ enable_timeouts();
2093+
18482094 if (init_per_cpu(nuvhubs, uv_base_pnode)) {
18492095 nobau = 1;
18502096 return 0;
@@ -1855,7 +2101,6 @@ static int __init uv_bau_init(void) · 4 unmodified lines
18552101 if (uv_blade_nr_possible_cpus(uvhub))
18562102 init_uvhub(uvhub, vector, uv_base_pnode);
18572103
1858− enable_timeouts();
18592104 alloc_intr_gate(vector, uv_bau_message_intr1);
18602105
18612106 for_each_possible_blade(uvhub) {
@@ -1867,7 +2112,8 @@ static int __init uv_bau_init(void) · 5 unmodified lines
18672112 val = 1L << 63;
18682113 write_gmmr_activation(pnode, val);
18692114 mmr = 1; /* should be 1 to broadcast to both sockets */
1870− write_mmr_data_broadcast(pnode, mmr);
2115+ if (!is_uv1_hub())
2116+ write_mmr_data_broadcast(pnode, mmr);
18712117 }
18722118 }
18732119
arch/x86/platform/uv/uv_irq.c+1−1
@@ -25,7 +25,7 @@ struct uv_irq_2_mmr_pnode{ · 24 unmodified lines
2525 int irq;
2626 };
2727
28−static spinlock_t uv_irq_lock;
28+static DEFINE_SPINLOCK(uv_irq_lock);
2929 static struct rb_root uv_irq_root;
3030
3131 static int uv_set_irq_affinity(struct irq_data *, const struct cpumask *, bool);
arch/x86/um/shared/sysdep/ptrace.h+10−0
@@ -1,5 +1,15 @@
1+#ifndef __SYSDEP_X86_PTRACE_H
2+#define __SYSDEP_X86_PTRACE_H
3+
14 #ifdef __i386__
25 #include "ptrace_32.h"
36 #else
47 #include "ptrace_64.h"
58 #endif
9+
10+static inline long regs_return_value(struct uml_pt_regs *regs)
11+{
12+ return UPT_SYSCALL_RET(regs);
13+}
14+
15+#endif /* __SYSDEP_X86_PTRACE_H */
arch/x86/xen/smp.c+7−0
@@ -409,6 +409,13 @@ static void __cpuinit xen_play_dead(void) /* used only with HOTPLUG_CPU */ · 408 unmodified lines
409409 play_dead_common();
410410 HYPERVISOR_vcpu_op(VCPUOP_down, smp_processor_id(), NULL);
411411 cpu_bringup();
412+ /*
413+ * Balance out the preempt calls - as we are running in cpu_idle
414+ * loop which has been called at bootup from cpu_bringup_and_idle.
415+ * The cpucpu_bringup_and_idle called cpu_bringup which made a
416+ * preempt_disable() So this preempt_enable will balance it out.
417+ */
418+ preempt_enable();
412419 }
413420
414421 #else /* !CONFIG_HOTPLUG_CPU */
arch/x86/xen/spinlock.c+22−5
@@ -116,9 +116,26 @@ static inline void spin_time_accum_blocked(u64 start) · 115 unmodified lines
116116 }
117117 #endif /* CONFIG_XEN_DEBUG_FS */
118118
119+/*
120+ * Size struct xen_spinlock so it's the same as arch_spinlock_t.
121+ */
122+#if NR_CPUS < 256
123+typedef u8 xen_spinners_t;
124+# define inc_spinners(xl) \
125+ asm(LOCK_PREFIX " incb %0" : "+m" ((xl)->spinners) : : "memory");
126+# define dec_spinners(xl) \
127+ asm(LOCK_PREFIX " decb %0" : "+m" ((xl)->spinners) : : "memory");
128+#else
129+typedef u16 xen_spinners_t;
130+# define inc_spinners(xl) \
131+ asm(LOCK_PREFIX " incw %0" : "+m" ((xl)->spinners) : : "memory");
132+# define dec_spinners(xl) \
133+ asm(LOCK_PREFIX " decw %0" : "+m" ((xl)->spinners) : : "memory");
134+#endif
135+
119136 struct xen_spinlock {
120137 unsigned char lock; /* 0 -> free; 1 -> locked */
121− unsigned short spinners; /* count of waiting cpus */
138+ xen_spinners_t spinners; /* count of waiting cpus */
122139 };
123140
124141 static int xen_spin_is_locked(struct arch_spinlock *lock)
@@ -164,8 +181,7 @@ static inline struct xen_spinlock *spinning_lock(struct xen_spinlock *xl) · 39 unmodified lines
164181
165182 wmb(); /* set lock of interest before count */
166183
167− asm(LOCK_PREFIX " incw %0"
168− : "+m" (xl->spinners) : : "memory");
184+ inc_spinners(xl);
169185
170186 return prev;
171187 }
@@ -176,8 +192,7 @@ static inline struct xen_spinlock *spinning_lock(struct xen_spinlock *xl) · 4 unmodified lines
176192 */
177193 static inline void unspinning_lock(struct xen_spinlock *xl, struct xen_spinlock *prev)
178194 {
179− asm(LOCK_PREFIX " decw %0"
180− : "+m" (xl->spinners) : : "memory");
195+ dec_spinners(xl);
181196 wmb(); /* decrement count before restoring lock */
182197 __this_cpu_write(lock_spinners, prev);
183198 }
@@ -373,6 +388,8 @@ void xen_uninit_lock_cpu(int cpu) · 189 unmodified lines
373388
374389 void __init xen_init_spinlocks(void)
375390 {
391+ BUILD_BUG_ON(sizeof(struct xen_spinlock) > sizeof(arch_spinlock_t));
392+
376393 pv_lock_ops.spin_is_locked = xen_spin_is_locked;
377394 pv_lock_ops.spin_is_contended = xen_spin_is_contended;
378395 pv_lock_ops.spin_lock = xen_spin_lock;
arch/xtensa/include/asm/string.h+0−3
@@ -118,7 +118,4 @@ extern void *memmove(void *__dest, __const__ void *__src, size_t __n); · 117 unmodified lines
118118 /* Don't build bcopy at all ... */
119119 #define __HAVE_ARCH_BCOPY
120120
121−#define __HAVE_ARCH_MEMSCAN
122−#define memscan memchr
123−
124121 #endif /* _XTENSA_STRING_H */
arch/xtensa/kernel/ptrace.c+1−2
@@ -334,8 +334,7 @@ void do_syscall_trace_enter(struct pt_regs *regs) · 333 unmodified lines
334334 do_syscall_trace();
335335
336336 #if 0
337− if (unlikely(current->audit_context))
338− audit_syscall_entry(current, AUDIT_ARCH_XTENSA..);
337+ audit_syscall_entry(current, AUDIT_ARCH_XTENSA..);
339338 #endif
340339 }
341340
block/blk-cgroup.c+1−1
@@ -1659,7 +1659,7 @@ static void blkiocg_attach(struct cgroup_subsys *ss, struct cgroup *cgrp, · 1658 unmodified lines
16591659 ioc = get_task_io_context(task, GFP_ATOMIC, NUMA_NO_NODE);
16601660 if (ioc) {
16611661 ioc_cgroup_changed(ioc);
1662− put_io_context(ioc, NULL);
1662+ put_io_context(ioc);
16631663 }
16641664 }
16651665 }
block/blk-core.c+17−16
@@ -642,7 +642,7 @@ static inline void blk_free_request(struct request_queue *q, struct request *rq) · 641 unmodified lines
642642 if (rq->cmd_flags & REQ_ELVPRIV) {
643643 elv_put_request(q, rq);
644644 if (rq->elv.icq)
645− put_io_context(rq->elv.icq->ioc, q);
645+ put_io_context(rq->elv.icq->ioc);
646646 }
647647
648648 mempool_free(rq, q->rq.rq_pool);
@@ -872,13 +872,15 @@ retry: · 223 unmodified lines
872872 spin_unlock_irq(q->queue_lock);
873873
874874 /* create icq if missing */
875− if (unlikely(et->icq_cache && !icq))
875+ if ((rw_flags & REQ_ELVPRIV) && unlikely(et->icq_cache && !icq)) {
876876 icq = ioc_create_icq(q, gfp_mask);
877+ if (!icq)
878+ goto fail_icq;
879+ }
877880
878− /* rqs are guaranteed to have icq on elv_set_request() if requested */
879− if (likely(!et->icq_cache || icq))
880− rq = blk_alloc_request(q, icq, rw_flags, gfp_mask);
881+ rq = blk_alloc_request(q, icq, rw_flags, gfp_mask);
881882
883+fail_icq:
882884 if (unlikely(!rq)) {
883885 /*
884886 * Allocation failed presumably due to memory. Undo anything
@@ -1210,7 +1212,6 @@ static bool bio_attempt_back_merge(struct request_queue *q, struct request *req, · 325 unmodified lines
12101212 req->ioprio = ioprio_best(req->ioprio, bio_prio(bio));
12111213
12121214 drive_stat_acct(req, 0);
1213− elv_bio_merged(q, req, bio);
12141215 return true;
12151216 }
12161217
@@ -1241,7 +1242,6 @@ static bool bio_attempt_front_merge(struct request_queue *q, · 24 unmodified lines
12411242 req->ioprio = ioprio_best(req->ioprio, bio_prio(bio));
12421243
12431244 drive_stat_acct(req, 0);
1244− elv_bio_merged(q, req, bio);
12451245 return true;
12461246 }
12471247
@@ -1255,13 +1255,12 @@ static bool bio_attempt_front_merge(struct request_queue *q, · 7 unmodified lines
12551255 * on %current's plugged list. Returns %true if merge was successful,
12561256 * otherwise %false.
12571257 *
1258− * This function is called without @q->queue_lock; however, elevator is
1259− * accessed iff there already are requests on the plugged list which in
1260− * turn guarantees validity of the elevator.
1261− *
1262− * Note that, on successful merge, elevator operation
1263− * elevator_bio_merged_fn() will be called without queue lock. Elevator
1264− * must be ready for this.
1258+ * Plugging coalesces IOs from the same issuer for the same purpose without
1259+ * going through @q->queue_lock. As such it's more of an issuing mechanism
1260+ * than scheduling, and the request, while may have elvpriv data, is not
1261+ * added on the elevator at this point. In addition, we don't have
1262+ * reliable access to the elevator outside queue lock. Only check basic
1263+ * merging parameters without querying the elevator.
12651264 */
12661265 static bool attempt_plug_merge(struct request_queue *q, struct bio *bio,
12671266 unsigned int *request_count)
@@ -1280,10 +1279,10 @@ static bool attempt_plug_merge(struct request_queue *q, struct bio *bio, · 12 unmodified lines
12801279
12811280 (*request_count)++;
12821281
1283− if (rq->q != q)
1282+ if (rq->q != q || !blk_rq_merge_ok(rq, bio))
12841283 continue;
12851284
1286− el_ret = elv_try_merge(rq, bio);
1285+ el_ret = blk_try_merge(rq, bio);
12871286 if (el_ret == ELEVATOR_BACK_MERGE) {
12881287 ret = bio_attempt_back_merge(q, rq, bio);
12891288 if (ret)
@@ -1345,12 +1344,14 @@ void blk_queue_bio(struct request_queue *q, struct bio *bio) · 55 unmodified lines
13451344 el_ret = elv_merge(q, &req, bio);
13461345 if (el_ret == ELEVATOR_BACK_MERGE) {
13471346 if (bio_attempt_back_merge(q, req, bio)) {
1347+ elv_bio_merged(q, req, bio);
13481348 if (!attempt_back_merge(q, req))
13491349 elv_merged_request(q, req, el_ret);
13501350 goto out_unlock;
13511351 }
13521352 } else if (el_ret == ELEVATOR_FRONT_MERGE) {
13531353 if (bio_attempt_front_merge(q, req, bio)) {
1354+ elv_bio_merged(q, req, bio);
13541355 if (!attempt_front_merge(q, req))
13551356 elv_merged_request(q, req, el_ret);
13561357 goto out_unlock;
block/blk-ioc.c+25−86
@@ -29,21 +29,6 @@ void get_io_context(struct io_context *ioc) · 28 unmodified lines
2929 }
3030 EXPORT_SYMBOL(get_io_context);
3131
32−/*
33− * Releasing ioc may nest into another put_io_context() leading to nested
34− * fast path release. As the ioc's can't be the same, this is okay but
35− * makes lockdep whine. Keep track of nesting and use it as subclass.
36− */
37−#ifdef CONFIG_LOCKDEP
38−#define ioc_release_depth(q) ((q) ? (q)->ioc_release_depth : 0)
39−#define ioc_release_depth_inc(q) (q)->ioc_release_depth++
40−#define ioc_release_depth_dec(q) (q)->ioc_release_depth--
41−#else
42−#define ioc_release_depth(q) 0
43−#define ioc_release_depth_inc(q) do { } while (0)
44−#define ioc_release_depth_dec(q) do { } while (0)
45−#endif
46−
4732 static void icq_free_icq_rcu(struct rcu_head *head)
4833 {
4934 struct io_cq *icq = container_of(head, struct io_cq, __rcu_head);
@@ -75,11 +60,8 @@ static void ioc_exit_icq(struct io_cq *icq) · 25 unmodified lines
7560 if (rcu_dereference_raw(ioc->icq_hint) == icq)
7661 rcu_assign_pointer(ioc->icq_hint, NULL);
7762
78− if (et->ops.elevator_exit_icq_fn) {
79− ioc_release_depth_inc(q);
63+ if (et->ops.elevator_exit_icq_fn)
8064 et->ops.elevator_exit_icq_fn(icq);
81− ioc_release_depth_dec(q);
82− }
8365
8466 /*
8567 * @icq->q might have gone away by the time RCU callback runs
@@ -98,8 +80,15 @@ static void ioc_release_fn(struct work_struct *work) · 12 unmodified lines
9880 struct io_context *ioc = container_of(work, struct io_context,
9981 release_work);
10082 struct request_queue *last_q = NULL;
83+ unsigned long flags;
10184
102− spin_lock_irq(&ioc->lock);
85+ /*
86+ * Exiting icq may call into put_io_context() through elevator
87+ * which will trigger lockdep warning. The ioc's are guaranteed to
88+ * be different, use a different locking subclass here. Use
89+ * irqsave variant as there's no spin_lock_irq_nested().
90+ */
91+ spin_lock_irqsave_nested(&ioc->lock, flags, 1);
10392
10493 while (!hlist_empty(&ioc->icq_list)) {
10594 struct io_cq *icq = hlist_entry(ioc->icq_list.first,
@@ -121,15 +110,15 @@ static void ioc_release_fn(struct work_struct *work) · 15 unmodified lines
121110 */
122111 if (last_q) {
123112 spin_unlock(last_q->queue_lock);
124− spin_unlock_irq(&ioc->lock);
113+ spin_unlock_irqrestore(&ioc->lock, flags);
125114 blk_put_queue(last_q);
126115 } else {
127− spin_unlock_irq(&ioc->lock);
116+ spin_unlock_irqrestore(&ioc->lock, flags);
128117 }
129118
130119 last_q = this_q;
131− spin_lock_irq(this_q->queue_lock);
132− spin_lock(&ioc->lock);
120+ spin_lock_irqsave(this_q->queue_lock, flags);
121+ spin_lock_nested(&ioc->lock, 1);
133122 continue;
134123 }
135124 ioc_exit_icq(icq);
@@ -137,10 +126,10 @@ static void ioc_release_fn(struct work_struct *work) · 1 unmodified line
137126
138127 if (last_q) {
139128 spin_unlock(last_q->queue_lock);
140− spin_unlock_irq(&ioc->lock);
129+ spin_unlock_irqrestore(&ioc->lock, flags);
141130 blk_put_queue(last_q);
142131 } else {
143− spin_unlock_irq(&ioc->lock);
132+ spin_unlock_irqrestore(&ioc->lock, flags);
144133 }
145134
146135 kmem_cache_free(iocontext_cachep, ioc);
@@ -149,79 +138,29 @@ static void ioc_release_fn(struct work_struct *work) · 2 unmodified lines
149138 /**
150139 * put_io_context - put a reference of io_context
151140 * @ioc: io_context to put
152− * @locked_q: request_queue the caller is holding queue_lock of (hint)
153141 *
154142 * Decrement reference count of @ioc and release it if the count reaches
155− * zero. If the caller is holding queue_lock of a queue, it can indicate
156− * that with @locked_q. This is an optimization hint and the caller is
157− * allowed to pass in %NULL even when it's holding a queue_lock.
143+ * zero.
158144 */
159−void put_io_context(struct io_context *ioc, struct request_queue *locked_q)
145+void put_io_context(struct io_context *ioc)
160146 {
161− struct request_queue *last_q = locked_q;
162147 unsigned long flags;
163148
164149 if (ioc == NULL)
165150 return;
166151
167152 BUG_ON(atomic_long_read(&ioc->refcount) <= 0);
168− if (locked_q)
169− lockdep_assert_held(locked_q->queue_lock);
170−
171− if (!atomic_long_dec_and_test(&ioc->refcount))
172− return;
173153
174154 /*
175− * Destroy @ioc. This is a bit messy because icq's are chained
176− * from both ioc and queue, and ioc->lock nests inside queue_lock.
177− * The inner ioc->lock should be held to walk our icq_list and then
178− * for each icq the outer matching queue_lock should be grabbed.
179− * ie. We need to do reverse-order double lock dancing.
180− *
181− * Another twist is that we are often called with one of the
182− * matching queue_locks held as indicated by @locked_q, which
183− * prevents performing double-lock dance for other queues.
184− *
185− * So, we do it in two stages. The fast path uses the queue_lock
186− * the caller is holding and, if other queues need to be accessed,
187− * uses trylock to avoid introducing locking dependency. This can
188− * handle most cases, especially if @ioc was performing IO on only
189− * single device.
190− *
191− * If trylock doesn't cut it, we defer to @ioc->release_work which
192− * can do all the double-locking dancing.
155+ * Releasing ioc requires reverse order double locking and we may
156+ * already be holding a queue_lock. Do it asynchronously from wq.
193157 */
194− spin_lock_irqsave_nested(&ioc->lock, flags,
195− ioc_release_depth(locked_q));
196−
197− while (!hlist_empty(&ioc->icq_list)) {
198− struct io_cq *icq = hlist_entry(ioc->icq_list.first,
199− struct io_cq, ioc_node);
200− struct request_queue *this_q = icq->q;
201−
202− if (this_q != last_q) {
203− if (last_q && last_q != locked_q)
204− spin_unlock(last_q->queue_lock);
205− last_q = NULL;
206−
207− if (!spin_trylock(this_q->queue_lock))
208− break;
209− last_q = this_q;
210− continue;
211− }
212− ioc_exit_icq(icq);
158+ if (atomic_long_dec_and_test(&ioc->refcount)) {
159+ spin_lock_irqsave(&ioc->lock, flags);
160+ if (!hlist_empty(&ioc->icq_list))
161+ schedule_work(&ioc->release_work);
162+ spin_unlock_irqrestore(&ioc->lock, flags);
213163 }
214−
215− if (last_q && last_q != locked_q)
216− spin_unlock(last_q->queue_lock);
217−
218− spin_unlock_irqrestore(&ioc->lock, flags);
219−
220− /* if no icq is left, we're done; otherwise, kick release_work */
221− if (hlist_empty(&ioc->icq_list))
222− kmem_cache_free(iocontext_cachep, ioc);
223− else
224− schedule_work(&ioc->release_work);
225164 }
226165 EXPORT_SYMBOL(put_io_context);
227166
@@ -236,7 +175,7 @@ void exit_io_context(struct task_struct *task) · 8 unmodified lines
236175 task_unlock(task);
237176
238177 atomic_dec(&ioc->nr_tasks);
239− put_io_context(ioc, NULL);
178+ put_io_context(ioc);
240179 }
241180
242181 /**
block/blk-merge.c+37−0
@@ -471,3 +471,40 @@ int blk_attempt_req_merge(struct request_queue *q, struct request *rq, · 470 unmodified lines
471471 {
472472 return attempt_merge(q, rq, next);
473473 }
474+
475+bool blk_rq_merge_ok(struct request *rq, struct bio *bio)
476+{
477+ if (!rq_mergeable(rq))
478+ return false;
479+
480+ /* don't merge file system requests and discard requests */
481+ if ((bio->bi_rw & REQ_DISCARD) != (rq->bio->bi_rw & REQ_DISCARD))
482+ return false;
483+
484+ /* don't merge discard requests and secure discard requests */
485+ if ((bio->bi_rw & REQ_SECURE) != (rq->bio->bi_rw & REQ_SECURE))
486+ return false;
487+
488+ /* different data direction or already started, don't merge */
489+ if (bio_data_dir(bio) != rq_data_dir(rq))
490+ return false;
491+
492+ /* must be same device and not a special request */
493+ if (rq->rq_disk != bio->bi_bdev->bd_disk || rq->special)
494+ return false;
495+
496+ /* only merge integrity protected bio into ditto rq */
497+ if (bio_integrity(bio) != blk_integrity_rq(rq))
498+ return false;
499+
500+ return true;
501+}
502+
503+int blk_try_merge(struct request *rq, struct bio *bio)
504+{
505+ if (blk_rq_pos(rq) + blk_rq_sectors(rq) == bio->bi_sector)
506+ return ELEVATOR_BACK_MERGE;
507+ else if (blk_rq_pos(rq) - bio_sectors(bio) == bio->bi_sector)
508+ return ELEVATOR_FRONT_MERGE;
509+ return ELEVATOR_NO_MERGE;
510+}
block/blk.h+2−0
@@ -137,6 +137,8 @@ int blk_attempt_req_merge(struct request_queue *q, struct request *rq, · 136 unmodified lines
137137 struct request *next);
138138 void blk_recalc_rq_segments(struct request *rq);
139139 void blk_rq_set_mixed_merge(struct request *rq);
140+bool blk_rq_merge_ok(struct request *rq, struct bio *bio);
141+int blk_try_merge(struct request *rq, struct bio *bio);
140142
141143 void blk_queue_congestion_threshold(struct request_queue *q);
142144
block/bsg.c+2−1
@@ -983,7 +983,8 @@ void bsg_unregister_queue(struct request_queue *q) · 982 unmodified lines
983983
984984 mutex_lock(&bsg_mutex);
985985 idr_remove(&bsg_minor_idr, bcd->minor);
986− sysfs_remove_link(&q->kobj, "bsg");
986+ if (q->kobj.sd)
987+ sysfs_remove_link(&q->kobj, "bsg");
987988 device_unregister(bcd->class_dev);
988989 bcd->class_dev = NULL;
989990 kref_put(&bcd->ref, bsg_kref_release_function);
block/cfq-iosched.c+7−14
@@ -1699,18 +1699,11 @@ static int cfq_allow_merge(struct request_queue *q, struct request *rq, · 1698 unmodified lines
16991699
17001700 /*
17011701 * Lookup the cfqq that this bio will be queued with and allow
1702− * merge only if rq is queued there. This function can be called
1703− * from plug merge without queue_lock. In such cases, ioc of @rq
1704− * and %current are guaranteed to be equal. Avoid lookup which
1705− * requires queue_lock by using @rq's cic.
1702+ * merge only if rq is queued there.
17061703 */
1707− if (current->io_context == RQ_CIC(rq)->icq.ioc) {
1708− cic = RQ_CIC(rq);
1709− } else {
1710− cic = cfq_cic_lookup(cfqd, current->io_context);
1711− if (!cic)
1712− return false;
1713− }
1704+ cic = cfq_cic_lookup(cfqd, current->io_context);
1705+ if (!cic)
1706+ return false;
17141707
17151708 cfqq = cic_to_cfqq(cic, cfq_bio_sync(bio));
17161709 return cfqq == RQ_CFQQ(rq);
@@ -1794,7 +1787,7 @@ __cfq_slice_expired(struct cfq_data *cfqd, struct cfq_queue *cfqq, · 77 unmodified lines
17941787 cfqd->active_queue = NULL;
17951788
17961789 if (cfqd->active_cic) {
1797− put_io_context(cfqd->active_cic->icq.ioc, cfqd->queue);
1790+ put_io_context(cfqd->active_cic->icq.ioc);
17981791 cfqd->active_cic = NULL;
17991792 }
18001793 }
@@ -3117,7 +3110,7 @@ cfq_should_preempt(struct cfq_data *cfqd, struct cfq_queue *new_cfqq, · 1316 unmodified lines
31173110 */
31183111 static void cfq_preempt_queue(struct cfq_data *cfqd, struct cfq_queue *cfqq)
31193112 {
3120− struct cfq_queue *old_cfqq = cfqd->active_queue;
3113+ enum wl_type_t old_type = cfqq_type(cfqd->active_queue);
31213114
31223115 cfq_log_cfqq(cfqd, cfqq, "preempt");
31233116 cfq_slice_expired(cfqd, 1);
@@ -3126,7 +3119,7 @@ static void cfq_preempt_queue(struct cfq_data *cfqd, struct cfq_queue *cfqq) · 2 unmodified lines
31263119 * workload type is changed, don't save slice, otherwise preempt
31273120 * doesn't happen
31283121 */
3129− if (cfqq_type(old_cfqq) != cfqq_type(cfqq))
3122+ if (old_type != cfqq_type(cfqq))
31303123 cfqq->cfqg->saved_workload_slice = 0;
31313124
31323125 /*
block/elevator.c+4−51
@@ -70,39 +70,9 @@ static int elv_iosched_allow_merge(struct request *rq, struct bio *bio) · 69 unmodified lines
7070 /*
7171 * can we safely merge with this request?
7272 */
73−int elv_rq_merge_ok(struct request *rq, struct bio *bio)
73+bool elv_rq_merge_ok(struct request *rq, struct bio *bio)
7474 {
75− if (!rq_mergeable(rq))
76− return 0;
77−
78− /*
79− * Don't merge file system requests and discard requests
80− */
81− if ((bio->bi_rw & REQ_DISCARD) != (rq->bio->bi_rw & REQ_DISCARD))
82− return 0;
83−
84− /*
85− * Don't merge discard requests and secure discard requests
86− */
87− if ((bio->bi_rw & REQ_SECURE) != (rq->bio->bi_rw & REQ_SECURE))
88− return 0;
89−
90− /*
91− * different data direction or already started, don't merge
92− */
93− if (bio_data_dir(bio) != rq_data_dir(rq))
94− return 0;
95−
96− /*
97− * must be same device and not a special request
98− */
99− if (rq->rq_disk != bio->bi_bdev->bd_disk || rq->special)
100− return 0;
101−
102− /*
103− * only merge integrity protected bio into ditto rq
104− */
105− if (bio_integrity(bio) != blk_integrity_rq(rq))
75+ if (!blk_rq_merge_ok(rq, bio))
10676 return 0;
10777
10878 if (!elv_iosched_allow_merge(rq, bio))
@@ -112,23 +82,6 @@ int elv_rq_merge_ok(struct request *rq, struct bio *bio) · 3 unmodified lines
11282 }
11383 EXPORT_SYMBOL(elv_rq_merge_ok);
11484
115−int elv_try_merge(struct request *__rq, struct bio *bio)
116−{
117− int ret = ELEVATOR_NO_MERGE;
118−
119− /*
120− * we can merge and sequence is ok, check if it's possible
121− */
122− if (elv_rq_merge_ok(__rq, bio)) {
123− if (blk_rq_pos(__rq) + blk_rq_sectors(__rq) == bio->bi_sector)
124− ret = ELEVATOR_BACK_MERGE;
125− else if (blk_rq_pos(__rq) - bio_sectors(bio) == bio->bi_sector)
126− ret = ELEVATOR_FRONT_MERGE;
127− }
128−
129− return ret;
130−}
131−
13285 static struct elevator_type *elevator_find(const char *name)
13386 {
13487 struct elevator_type *e;
@@ -478,8 +431,8 @@ int elv_merge(struct request_queue *q, struct request **req, struct bio *bio) · 343 unmodified lines
478431 /*
479432 * First try one-hit cache.
480433 */
481− if (q->last_merge) {
482− ret = elv_try_merge(q->last_merge, bio);
434+ if (q->last_merge && elv_rq_merge_ok(q->last_merge, bio)) {
435+ ret = blk_try_merge(q->last_merge, bio);
483436 if (ret != ELEVATOR_NO_MERGE) {
484437 *req = q->last_merge;
485438 return ret;
crypto/sha512_generic.c+28−31
@@ -21,8 +21,6 @@ · 20 unmodified lines
2121 #include <linux/percpu.h>
2222 #include <asm/byteorder.h>
2323
24−static DEFINE_PER_CPU(u64[80], msg_schedule);
25−
2624 static inline u64 Ch(u64 x, u64 y, u64 z)
2725 {
2826 return z ^ (x & (y ^ z));
@@ -33,11 +31,6 @@ static inline u64 Maj(u64 x, u64 y, u64 z) · 4 unmodified lines
3331 return (x & y) | (z & (x | y));
3432 }
3533
36−static inline u64 RORu64(u64 x, u64 y)
37−{
38− return (x >> y) | (x << (64 - y));
39−}
40−
4134 static const u64 sha512_K[80] = {
4235 0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, 0xb5c0fbcfec4d3b2fULL,
4336 0xe9b5dba58189dbbcULL, 0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL,
@@ -68,10 +61,10 @@ static const u64 sha512_K[80] = { · 24 unmodified lines
6861 0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL,
6962 };
7063
71−#define e0(x) (RORu64(x,28) ^ RORu64(x,34) ^ RORu64(x,39))
72−#define e1(x) (RORu64(x,14) ^ RORu64(x,18) ^ RORu64(x,41))
73−#define s0(x) (RORu64(x, 1) ^ RORu64(x, 8) ^ (x >> 7))
74−#define s1(x) (RORu64(x,19) ^ RORu64(x,61) ^ (x >> 6))
64+#define e0(x) (ror64(x,28) ^ ror64(x,34) ^ ror64(x,39))
65+#define e1(x) (ror64(x,14) ^ ror64(x,18) ^ ror64(x,41))
66+#define s0(x) (ror64(x, 1) ^ ror64(x, 8) ^ (x >> 7))
67+#define s1(x) (ror64(x,19) ^ ror64(x,61) ^ (x >> 6))
7568
7669 static inline void LOAD_OP(int I, u64 *W, const u8 *input)
7770 {
@@ -80,7 +73,7 @@ static inline void LOAD_OP(int I, u64 *W, const u8 *input) · 2 unmodified lines
8073
8174 static inline void BLEND_OP(int I, u64 *W)
8275 {
83− W[I] = s1(W[I-2]) + W[I-7] + s0(W[I-15]) + W[I-16];
76+ W[I & 15] += s1(W[(I-2) & 15]) + W[(I-7) & 15] + s0(W[(I-15) & 15]);
8477 }
8578
8679 static void
@@ -89,15 +82,7 @@ sha512_transform(u64 *state, const u8 *input) · 2 unmodified lines
8982 u64 a, b, c, d, e, f, g, h, t1, t2;
9083
9184 int i;
92− u64 *W = get_cpu_var(msg_schedule);
93−
94− /* load the input */
95− for (i = 0; i < 16; i++)
96− LOAD_OP(i, W, input);
97−
98− for (i = 16; i < 80; i++) {
99− BLEND_OP(i, W);
100− }
85+ u64 W[16];
10186
10287 /* load the state into our registers */
10388 a=state[0]; b=state[1]; c=state[2]; d=state[3];
@@ -105,21 +90,35 @@ sha512_transform(u64 *state, const u8 *input) · 1 unmodified line
10590
10691 /* now iterate */
10792 for (i=0; i<80; i+=8) {
108− t1 = h + e1(e) + Ch(e,f,g) + sha512_K[i ] + W[i ];
93+ if (!(i & 8)) {
94+ int j;
95+
96+ if (i < 16) {
97+ /* load the input */
98+ for (j = 0; j < 16; j++)
99+ LOAD_OP(i + j, W, input);
100+ } else {
101+ for (j = 0; j < 16; j++) {
102+ BLEND_OP(i + j, W);
103+ }
104+ }
105+ }
106+
107+ t1 = h + e1(e) + Ch(e,f,g) + sha512_K[i ] + W[(i & 15)];
109108 t2 = e0(a) + Maj(a,b,c); d+=t1; h=t1+t2;
110− t1 = g + e1(d) + Ch(d,e,f) + sha512_K[i+1] + W[i+1];
109+ t1 = g + e1(d) + Ch(d,e,f) + sha512_K[i+1] + W[(i & 15) + 1];
111110 t2 = e0(h) + Maj(h,a,b); c+=t1; g=t1+t2;
112− t1 = f + e1(c) + Ch(c,d,e) + sha512_K[i+2] + W[i+2];
111+ t1 = f + e1(c) + Ch(c,d,e) + sha512_K[i+2] + W[(i & 15) + 2];
113112 t2 = e0(g) + Maj(g,h,a); b+=t1; f=t1+t2;
114− t1 = e + e1(b) + Ch(b,c,d) + sha512_K[i+3] + W[i+3];
113+ t1 = e + e1(b) + Ch(b,c,d) + sha512_K[i+3] + W[(i & 15) + 3];
115114 t2 = e0(f) + Maj(f,g,h); a+=t1; e=t1+t2;
116− t1 = d + e1(a) + Ch(a,b,c) + sha512_K[i+4] + W[i+4];
115+ t1 = d + e1(a) + Ch(a,b,c) + sha512_K[i+4] + W[(i & 15) + 4];
117116 t2 = e0(e) + Maj(e,f,g); h+=t1; d=t1+t2;
118− t1 = c + e1(h) + Ch(h,a,b) + sha512_K[i+5] + W[i+5];
117+ t1 = c + e1(h) + Ch(h,a,b) + sha512_K[i+5] + W[(i & 15) + 5];
119118 t2 = e0(d) + Maj(d,e,f); g+=t1; c=t1+t2;
120− t1 = b + e1(g) + Ch(g,h,a) + sha512_K[i+6] + W[i+6];
119+ t1 = b + e1(g) + Ch(g,h,a) + sha512_K[i+6] + W[(i & 15) + 6];
121120 t2 = e0(c) + Maj(c,d,e); f+=t1; b=t1+t2;
122− t1 = a + e1(f) + Ch(f,g,h) + sha512_K[i+7] + W[i+7];
121+ t1 = a + e1(f) + Ch(f,g,h) + sha512_K[i+7] + W[(i & 15) + 7];
123122 t2 = e0(b) + Maj(b,c,d); e+=t1; a=t1+t2;
124123 }
125124
@@ -128,8 +127,6 @@ sha512_transform(u64 *state, const u8 *input) · 2 unmodified lines
128127
129128 /* erase our data */
130129 a = b = c = d = e = f = g = h = t1 = t2 = 0;
131− memset(W, 0, sizeof(__get_cpu_var(msg_schedule)));
132− put_cpu_var(msg_schedule);
133130 }
134131
135132 static int
drivers/acpi/Makefile+2−2
@@ -19,12 +19,12 @@ obj-y += acpi.o \ · 18 unmodified lines
1919
2020 # All the builtin files are in the "acpi." module_param namespace.
2121 acpi-y += osl.o utils.o reboot.o
22−acpi-y += atomicio.o
22+acpi-y += nvs.o
2323
2424 # sleep related files
2525 acpi-y += wakeup.o
2626 acpi-y += sleep.o
27−acpi-$(CONFIG_ACPI_SLEEP) += proc.o nvs.o
27+acpi-$(CONFIG_ACPI_SLEEP) += proc.o
2828
2929
3030 #
drivers/acpi/acpica/Makefile+134−24
@@ -8,41 +8,151 @@ ccflags-$(CONFIG_ACPI_DEBUG) += -DACPI_DEBUG_OUTPUT · 7 unmodified lines
88 # use acpi.o to put all files here into acpi.o modparam namespace
99 obj-y += acpi.o
1010
11−acpi-y := dsfield.o dsmthdat.o dsopcode.o dswexec.o dswscope.o \
12− dsmethod.o dsobject.o dsutils.o dswload.o dswstate.o \
13− dsinit.o dsargs.o dscontrol.o dswload2.o
11+acpi-y := \
12+ dsargs.o \
13+ dscontrol.o \
14+ dsfield.o \
15+ dsinit.o \
16+ dsmethod.o \
17+ dsmthdat.o \
18+ dsobject.o \
19+ dsopcode.o \
20+ dsutils.o \
21+ dswexec.o \
22+ dswload.o \
23+ dswload2.o \
24+ dswscope.o \
25+ dswstate.o
1426
15−acpi-y += evevent.o evregion.o evsci.o evxfevnt.o \
16− evmisc.o evrgnini.o evxface.o evxfregn.o \
17− evgpe.o evgpeblk.o evgpeinit.o evgpeutil.o evxfgpe.o evglock.o
27+acpi-y += \
28+ evevent.o \
29+ evgpe.o \
30+ evgpeblk.o \
31+ evgpeinit.o \
32+ evgpeutil.o \
33+ evglock.o \
34+ evmisc.o \
35+ evregion.o \
36+ evrgnini.o \
37+ evsci.o \
38+ evxface.o \
39+ evxfevnt.o \
40+ evxfgpe.o \
41+ evxfregn.o
1842
19−acpi-y += exconfig.o exfield.o exnames.o exoparg6.o exresolv.o exstorob.o\
20− exconvrt.o exfldio.o exoparg1.o exprep.o exresop.o exsystem.o\
21− excreate.o exmisc.o exoparg2.o exregion.o exstore.o exutils.o \
22− exdump.o exmutex.o exoparg3.o exresnte.o exstoren.o exdebug.o
43+acpi-y += \
44+ exconfig.o \
45+ exconvrt.o \
46+ excreate.o \
47+ exdebug.o \
48+ exdump.o \
49+ exfield.o \
50+ exfldio.o \
51+ exmutex.o \
52+ exnames.o \
53+ exoparg1.o \
54+ exoparg2.o \
55+ exoparg3.o \
56+ exoparg6.o \
57+ exprep.o \
58+ exmisc.o \
59+ exregion.o \
60+ exresnte.o \
61+ exresolv.o \
62+ exresop.o \
63+ exstore.o \
64+ exstoren.o \
65+ exstorob.o \
66+ exsystem.o \
67+ exutils.o
2368
24−acpi-y += hwacpi.o hwgpe.o hwregs.o hwsleep.o hwxface.o hwvalid.o hwpci.o
69+acpi-y += \
70+ hwacpi.o \
71+ hwgpe.o \
72+ hwpci.o \
73+ hwregs.o \
74+ hwsleep.o \
75+ hwvalid.o \
76+ hwxface.o
2577
2678 acpi-$(ACPI_FUTURE_USAGE) += hwtimer.o
2779
28−acpi-y += nsaccess.o nsload.o nssearch.o nsxfeval.o \
29− nsalloc.o nseval.o nsnames.o nsutils.o nsxfname.o \
30− nsdump.o nsinit.o nsobject.o nswalk.o nsxfobj.o \
31− nsparse.o nspredef.o nsrepair.o nsrepair2.o
80+acpi-y += \
81+ nsaccess.o \
82+ nsalloc.o \
83+ nsdump.o \
84+ nseval.o \
85+ nsinit.o \
86+ nsload.o \
87+ nsnames.o \
88+ nsobject.o \
89+ nsparse.o \
90+ nspredef.o \
91+ nsrepair.o \
92+ nsrepair2.o \
93+ nssearch.o \
94+ nsutils.o \
95+ nswalk.o \
96+ nsxfeval.o \
97+ nsxfname.o \
98+ nsxfobj.o
3299
33100 acpi-$(ACPI_FUTURE_USAGE) += nsdumpdv.o
34101
35−acpi-y += psargs.o psparse.o psloop.o pstree.o pswalk.o \
36− psopcode.o psscope.o psutils.o psxface.o
102+acpi-y += \
103+ psargs.o \
104+ psloop.o \
105+ psopcode.o \
106+ psparse.o \
107+ psscope.o \
108+ pstree.o \
109+ psutils.o \
110+ pswalk.o \
111+ psxface.o
37112
38−acpi-y += rsaddr.o rscreate.o rsinfo.o rsio.o rslist.o rsmisc.o rsxface.o \
39− rscalc.o rsirq.o rsmemory.o rsutils.o
113+acpi-y += \
114+ rsaddr.o \
115+ rscalc.o \
116+ rscreate.o \
117+ rsinfo.o \
118+ rsio.o \
119+ rsirq.o \
120+ rslist.o \
121+ rsmemory.o \
122+ rsmisc.o \
123+ rsserial.o \
124+ rsutils.o \
125+ rsxface.o
40126
41127 acpi-$(ACPI_FUTURE_USAGE) += rsdump.o
42128
43−acpi-y += tbxface.o tbinstal.o tbutils.o tbfind.o tbfadt.o tbxfroot.o
129+acpi-y += \
130+ tbfadt.o \
131+ tbfind.o \
132+ tbinstal.o \
133+ tbutils.o \
134+ tbxface.o \
135+ tbxfroot.o
44136
45−acpi-y += utalloc.o utdebug.o uteval.o utinit.o utmisc.o utxface.o \
46− utcopy.o utdelete.o utglobal.o utmath.o utobject.o \
47− utstate.o utmutex.o utobject.o utresrc.o utlock.o utids.o \
48− utosi.o utxferror.o utdecode.o
137+acpi-y += \
138+ utaddress.o \
139+ utalloc.o \
140+ utcopy.o \
141+ utdebug.o \
142+ utdecode.o \
143+ utdelete.o \
144+ uteval.o \
145+ utglobal.o \
146+ utids.o \
147+ utinit.o \
148+ utlock.o \
149+ utmath.o \
150+ utmisc.o \
151+ utmutex.o \
152+ utobject.o \
153+ utosi.o \
154+ utresrc.o \
155+ utstate.o \
156+ utxface.o \
157+ utxferror.o \
158+ utxfmutex.o
drivers/acpi/acpica/accommon.h+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/acconfig.h+7−2
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -123,6 +123,10 @@ · 111 unmodified lines
123123
124124 #define ACPI_MAX_SLEEP 2000 /* Two seconds */
125125
126+/* Address Range lists are per-space_id (Memory and I/O only) */
127+
128+#define ACPI_ADDRESS_RANGE_MAX 2
129+
126130 /******************************************************************************
127131 *
128132 * ACPI Specification constants (Do not change unless the specification changes)
@@ -202,9 +206,10 @@ · 73 unmodified lines
202206 #define ACPI_RSDP_CHECKSUM_LENGTH 20
203207 #define ACPI_RSDP_XCHECKSUM_LENGTH 36
204208
205−/* SMBus and IPMI bidirectional buffer size */
209+/* SMBus, GSBus and IPMI bidirectional buffer size */
206210
207211 #define ACPI_SMBUS_BUFFER_SIZE 34
212+#define ACPI_GSBUS_BUFFER_SIZE 34
208213 #define ACPI_IPMI_BUFFER_SIZE 66
209214
210215 /* _sx_d and _sx_w control methods */
drivers/acpi/acpica/acdebug.h+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/acdispat.h+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/acevents.h+2−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -162,6 +162,7 @@ acpi_status acpi_ev_initialize_op_regions(void); · 150 unmodified lines
162162
163163 acpi_status
164164 acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,
165+ union acpi_operand_object *field_obj,
165166 u32 function,
166167 u32 region_offset, u32 bit_width, u64 *value);
167168
drivers/acpi/acpica/acglobal.h+15−2
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -140,8 +140,19 @@ u32 acpi_gbl_trace_flags; · 128 unmodified lines
140140 acpi_name acpi_gbl_trace_method_name;
141141 u8 acpi_gbl_system_awake_and_running;
142142
143+/*
144+ * ACPI 5.0 introduces the concept of a "reduced hardware platform", meaning
145+ * that the ACPI hardware is no longer required. A flag in the FADT indicates
146+ * a reduced HW machine, and that flag is duplicated here for convenience.
147+ */
148+u8 acpi_gbl_reduced_hardware;
149+
143150 #endif
144151
152+/* Do not disassemble buffers to resource descriptors */
153+
154+ACPI_EXTERN u8 ACPI_INIT_GLOBAL(acpi_gbl_no_resource_disassembly, FALSE);
155+
145156 /*****************************************************************************
146157 *
147158 * Debug support
@@ -207,7 +218,7 @@ ACPI_EXTERN struct acpi_rw_lock acpi_gbl_namespace_rw_lock; · 59 unmodified lines
207218
208219 /*****************************************************************************
209220 *
210− * Mutual exlusion within ACPICA subsystem
221+ * Mutual exclusion within ACPICA subsystem
211222 *
212223 ****************************************************************************/
213224
@@ -295,6 +306,8 @@ ACPI_EXTERN u8 acpi_gbl_acpi_hardware_present; · 81 unmodified lines
295306 ACPI_EXTERN u8 acpi_gbl_events_initialized;
296307 ACPI_EXTERN u8 acpi_gbl_osi_data;
297308 ACPI_EXTERN struct acpi_interface_info *acpi_gbl_supported_interfaces;
309+ACPI_EXTERN struct acpi_address_range
310+ *acpi_gbl_address_range_list[ACPI_ADDRESS_RANGE_MAX];
298311
299312 #ifndef DEFINE_ACPI_GLOBALS
300313
drivers/acpi/acpica/achware.h+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/acinterp.h+3−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -468,6 +468,8 @@ void acpi_ex_eisa_id_to_string(char *dest, u64 compressed_id); · 456 unmodified lines
468468
469469 void acpi_ex_integer_to_string(char *dest, u64 value);
470470
471+u8 acpi_is_valid_space_id(u8 space_id);
472+
471473 /*
472474 * exregion - default op_region handlers
473475 */
drivers/acpi/acpica/aclocal.h+21−5
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -53,7 +53,7 @@ typedef u32 acpi_mutex_handle; · 41 unmodified lines
5353
5454 /* Total number of aml opcodes defined */
5555
56−#define AML_NUM_OPCODES 0x7F
56+#define AML_NUM_OPCODES 0x81
5757
5858 /* Forward declarations */
5959
@@ -249,12 +249,16 @@ struct acpi_create_field_info { · 189 unmodified lines
249249 struct acpi_namespace_node *field_node;
250250 struct acpi_namespace_node *register_node;
251251 struct acpi_namespace_node *data_register_node;
252+ struct acpi_namespace_node *connection_node;
253+ u8 *resource_buffer;
252254 u32 bank_value;
253255 u32 field_bit_position;
254256 u32 field_bit_length;
257+ u16 resource_length;
255258 u8 field_flags;
256259 u8 attribute;
257260 u8 field_type;
261+ u8 access_length;
258262 };
259263
260264 typedef
@@ -315,7 +319,8 @@ struct acpi_name_info { · 54 unmodified lines
315319
316320 /*
317321 * Used for ACPI_PTYPE1_FIXED, ACPI_PTYPE1_VAR, ACPI_PTYPE2,
318− * ACPI_PTYPE2_MIN, ACPI_PTYPE2_PKG_COUNT, ACPI_PTYPE2_COUNT
322+ * ACPI_PTYPE2_MIN, ACPI_PTYPE2_PKG_COUNT, ACPI_PTYPE2_COUNT,
323+ * ACPI_PTYPE2_FIX_VAR
319324 */
320325 struct acpi_package_info {
321326 u8 type;
@@ -625,6 +630,15 @@ union acpi_generic_state { · 303 unmodified lines
625630
626631 typedef acpi_status(*ACPI_EXECUTE_OP) (struct acpi_walk_state * walk_state);
627632
633+/* Address Range info block */
634+
635+struct acpi_address_range {
636+ struct acpi_address_range *next;
637+ struct acpi_namespace_node *region_node;
638+ acpi_physical_address start_address;
639+ acpi_physical_address end_address;
640+};
641+
628642 /*****************************************************************************
629643 *
630644 * Parser typedefs and structs
@@ -951,7 +965,7 @@ struct acpi_port_info { · 320 unmodified lines
951965 #define ACPI_RESOURCE_NAME_END_DEPENDENT 0x38
952966 #define ACPI_RESOURCE_NAME_IO 0x40
953967 #define ACPI_RESOURCE_NAME_FIXED_IO 0x48
954−#define ACPI_RESOURCE_NAME_RESERVED_S1 0x50
968+#define ACPI_RESOURCE_NAME_FIXED_DMA 0x50
955969 #define ACPI_RESOURCE_NAME_RESERVED_S2 0x58
956970 #define ACPI_RESOURCE_NAME_RESERVED_S3 0x60
957971 #define ACPI_RESOURCE_NAME_RESERVED_S4 0x68
@@ -973,7 +987,9 @@ struct acpi_port_info { · 15 unmodified lines
973987 #define ACPI_RESOURCE_NAME_EXTENDED_IRQ 0x89
974988 #define ACPI_RESOURCE_NAME_ADDRESS64 0x8A
975989 #define ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64 0x8B
976−#define ACPI_RESOURCE_NAME_LARGE_MAX 0x8B
990+#define ACPI_RESOURCE_NAME_GPIO 0x8C
991+#define ACPI_RESOURCE_NAME_SERIAL_BUS 0x8E
992+#define ACPI_RESOURCE_NAME_LARGE_MAX 0x8E
977993
978994 /*****************************************************************************
979995 *
drivers/acpi/acpica/acmacros.h+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/acnamesp.h+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/acobject.h+6−2
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
@@ -254,6 +254,7 @@ ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_NOTIFY_INFO}; · 241 unmodified lines
254254 u32 base_byte_offset; /* Byte offset within containing object */\
255255 u32 value; /* Value to store into the Bank or Index register */\
256256 u8 start_field_bit_offset;/* Bit offset within first field datum (0-63) */\
257+ u8 access_length; /* For serial regions/fields */
257258
258259
259260 struct acpi_object_field_common { /* COMMON FIELD (for BUFFER, REGION, BANK, and INDEX fields) */
@@ -261,7 +262,9 @@ struct acpi_object_field_common { /* COMMON FIELD (for BUFFER, REGION, BANK, and · 1 unmodified line
261262 };
262263
263264 struct acpi_object_region_field {
264− ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object *region_obj; /* Containing op_region object */
265+ ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO u16 resource_length;
266+ union acpi_operand_object *region_obj; /* Containing op_region object */
267+ u8 *resource_buffer; /* resource_template for serial regions/fields */
265268 };
266269
267270 struct acpi_object_bank_field {
@@ -358,6 +361,7 @@ typedef enum { · 90 unmodified lines
358361 */
359362 struct acpi_object_extra {
360363 ACPI_OBJECT_COMMON_HEADER struct acpi_namespace_node *method_REG; /* _REG method for this region (if any) */
364+ struct acpi_namespace_node *scope_node;
361365 void *region_context; /* Region-specific data */
362366 u8 *aml_start;
363367 u32 aml_length;
drivers/acpi/acpica/acopcode.h+5−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -93,6 +93,7 @@ · 81 unmodified lines
9393 #define ARGP_CONCAT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
9494 #define ARGP_CONCAT_RES_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
9595 #define ARGP_COND_REF_OF_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_SUPERNAME)
96+#define ARGP_CONNECTFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING)
9697 #define ARGP_CONTINUE_OP ARG_NONE
9798 #define ARGP_COPY_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_SIMPLENAME)
9899 #define ARGP_CREATE_BIT_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME)
@@ -164,6 +165,7 @@ · 65 unmodified lines
164165 #define ARGP_RETURN_OP ARGP_LIST1 (ARGP_TERMARG)
165166 #define ARGP_REVISION_OP ARG_NONE
166167 #define ARGP_SCOPE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_TERMLIST)
168+#define ARGP_SERIALFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING)
167169 #define ARGP_SHIFT_LEFT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
168170 #define ARGP_SHIFT_RIGHT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)
169171 #define ARGP_SIGNAL_OP ARGP_LIST1 (ARGP_SUPERNAME)
@@ -223,6 +225,7 @@ · 53 unmodified lines
223225 #define ARGI_CONCAT_OP ARGI_LIST3 (ARGI_COMPUTEDATA,ARGI_COMPUTEDATA, ARGI_TARGETREF)
224226 #define ARGI_CONCAT_RES_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_BUFFER, ARGI_TARGETREF)
225227 #define ARGI_COND_REF_OF_OP ARGI_LIST2 (ARGI_OBJECT_REF, ARGI_TARGETREF)
228+#define ARGI_CONNECTFIELD_OP ARGI_INVALID_OPCODE
226229 #define ARGI_CONTINUE_OP ARGI_INVALID_OPCODE
227230 #define ARGI_COPY_OP ARGI_LIST2 (ARGI_ANYTYPE, ARGI_SIMPLE_TARGET)
228231 #define ARGI_CREATE_BIT_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE)
@@ -294,6 +297,7 @@ · 65 unmodified lines
294297 #define ARGI_RETURN_OP ARGI_INVALID_OPCODE
295298 #define ARGI_REVISION_OP ARG_NONE
296299 #define ARGI_SCOPE_OP ARGI_INVALID_OPCODE
300+#define ARGI_SERIALFIELD_OP ARGI_INVALID_OPCODE
297301 #define ARGI_SHIFT_LEFT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
298302 #define ARGI_SHIFT_RIGHT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF)
299303 #define ARGI_SIGNAL_OP ARGI_LIST1 (ARGI_EVENT)
drivers/acpi/acpica/acparser.h+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/acpredef.h+39−2
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
@@ -94,6 +94,14 @@ · 81 unmodified lines
9494 * ACPI_PTYPE2_REV_FIXED: Revision at start, each subpackage is Fixed-length
9595 * (Used for _ART, _FPS)
9696 *
97+ * ACPI_PTYPE2_FIX_VAR: Each subpackage consists of some fixed-length elements
98+ * followed by an optional element
99+ * object type
100+ * count
101+ * object type
102+ * count = 0 (optional)
103+ * (Used for _DLM)
104+ *
97105 *****************************************************************************/
98106
99107 enum acpi_return_package_types {
@@ -105,7 +113,8 @@ enum acpi_return_package_types { · 5 unmodified lines
105113 ACPI_PTYPE2_PKG_COUNT = 6,
106114 ACPI_PTYPE2_FIXED = 7,
107115 ACPI_PTYPE2_MIN = 8,
108− ACPI_PTYPE2_REV_FIXED = 9
116+ ACPI_PTYPE2_REV_FIXED = 9,
117+ ACPI_PTYPE2_FIX_VAR = 10
109118 };
110119
111120 #ifdef ACPI_CREATE_PREDEFINED_TABLE
@@ -154,6 +163,7 @@ static const union acpi_predefined_info predefined_names[] = · 42 unmodified lines
154163 {{"_AC8", 0, ACPI_RTYPE_INTEGER}},
155164 {{"_AC9", 0, ACPI_RTYPE_INTEGER}},
156165 {{"_ADR", 0, ACPI_RTYPE_INTEGER}},
166+ {{"_AEI", 0, ACPI_RTYPE_BUFFER}},
157167 {{"_AL0", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
158168 {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
159169
@@ -229,6 +239,13 @@ static const union acpi_predefined_info predefined_names[] = · 69 unmodified lines
229239 {{"_CID", 0, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING | ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints/Strs) */
230240 {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING, 0,0}, 0,0}},
231241
242+ {{"_CLS", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (3 Int) */
243+ {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3, 0}, 0, 0}},
244+
245+ {{"_CPC", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints/Bufs) */
246+ {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER | ACPI_RTYPE_BUFFER, 0, 0}, 0,
247+ 0}},
248+
232249 {{"_CRS", 0, ACPI_RTYPE_BUFFER}},
233250 {{"_CRT", 0, ACPI_RTYPE_INTEGER}},
234251 {{"_CSD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (1 Int(n), n-1 Int) */
@@ -237,12 +254,21 @@ static const union acpi_predefined_info predefined_names[] = · 2 unmodified lines
237254 {{"_CST", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (1 Int(n), n Pkg (1 Buf/3 Int) */
238255 {{{ACPI_PTYPE2_PKG_COUNT,ACPI_RTYPE_BUFFER, 1, ACPI_RTYPE_INTEGER}, 3,0}},
239256
257+ {{"_CWS", 1, ACPI_RTYPE_INTEGER}},
240258 {{"_DCK", 1, ACPI_RTYPE_INTEGER}},
241259 {{"_DCS", 0, ACPI_RTYPE_INTEGER}},
242260 {{"_DDC", 1, ACPI_RTYPE_INTEGER | ACPI_RTYPE_BUFFER}},
243261 {{"_DDN", 0, ACPI_RTYPE_STRING}},
262+ {{"_DEP", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
263+ {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}},
264+
244265 {{"_DGS", 0, ACPI_RTYPE_INTEGER}},
245266 {{"_DIS", 0, 0}},
267+
268+ {{"_DLM", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (1 Ref, 0/1 Optional Buf/Ref) */
269+ {{{ACPI_PTYPE2_FIX_VAR, ACPI_RTYPE_REFERENCE, 1,
270+ ACPI_RTYPE_REFERENCE | ACPI_RTYPE_BUFFER}, 0, 0}},
271+
246272 {{"_DMA", 0, ACPI_RTYPE_BUFFER}},
247273 {{"_DOD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Ints) */
248274 {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0,0}, 0,0}},
@@ -262,6 +288,7 @@ static const union acpi_predefined_info predefined_names[] = · 13 unmodified lines
262288 {{"_EJ3", 1, 0}},
263289 {{"_EJ4", 1, 0}},
264290 {{"_EJD", 0, ACPI_RTYPE_STRING}},
291+ {{"_EVT", 1, 0}},
265292 {{"_FDE", 0, ACPI_RTYPE_BUFFER}},
266293 {{"_FDI", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (16 Int) */
267294 {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 16,0}, 0,0}},
@@ -281,14 +308,17 @@ static const union acpi_predefined_info predefined_names[] = · 13 unmodified lines
281308 {{{ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3, 0}, 0, 0}},
282309
283310 {{"_GAI", 0, ACPI_RTYPE_INTEGER}},
311+ {{"_GCP", 0, ACPI_RTYPE_INTEGER}},
284312 {{"_GHL", 0, ACPI_RTYPE_INTEGER}},
285313 {{"_GLK", 0, ACPI_RTYPE_INTEGER}},
286314 {{"_GPD", 0, ACPI_RTYPE_INTEGER}},
287315 {{"_GPE", 0, ACPI_RTYPE_INTEGER}}, /* _GPE method, not _GPE scope */
316+ {{"_GRT", 0, ACPI_RTYPE_BUFFER}},
288317 {{"_GSB", 0, ACPI_RTYPE_INTEGER}},
289318 {{"_GTF", 0, ACPI_RTYPE_BUFFER}},
290319 {{"_GTM", 0, ACPI_RTYPE_BUFFER}},
291320 {{"_GTS", 1, 0}},
321+ {{"_GWS", 1, ACPI_RTYPE_INTEGER}},
292322 {{"_HID", 0, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING}},
293323 {{"_HOT", 0, ACPI_RTYPE_INTEGER}},
294324 {{"_HPP", 0, ACPI_RTYPE_PACKAGE}}, /* Fixed-length (4 Int) */
@@ -303,6 +333,7 @@ static const union acpi_predefined_info predefined_names[] = · 8 unmodified lines
303333 {{"_HPX", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (var Ints) */
304334 {{{ACPI_PTYPE2_MIN, ACPI_RTYPE_INTEGER, 5,0}, 0,0}},
305335
336+ {{"_HRV", 0, ACPI_RTYPE_INTEGER}},
306337 {{"_IFT", 0, ACPI_RTYPE_INTEGER}}, /* See IPMI spec */
307338 {{"_INI", 0, 0}},
308339 {{"_IRC", 0, 0}},
@@ -361,6 +392,9 @@ static const union acpi_predefined_info predefined_names[] = · 52 unmodified lines
361392 {{"_PR3", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
362393 {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}},
363394
395+ {{"_PRE", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
396+ {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}},
397+
364398 {{"_PRL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
365399 {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0, 0}, 0, 0}},
366400
@@ -391,6 +425,7 @@ static const union acpi_predefined_info predefined_names[] = · 24 unmodified lines
391425 {{"_PSD", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Pkgs) each (5 Int) with count */
392426 {{{ACPI_PTYPE2_COUNT, ACPI_RTYPE_INTEGER,0,0}, 0,0}},
393427
428+ {{"_PSE", 1, 0}},
394429 {{"_PSL", 0, ACPI_RTYPE_PACKAGE}}, /* Variable-length (Refs) */
395430 {{{ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0}, 0,0}},
396431
@@ -457,6 +492,7 @@ static const union acpi_predefined_info predefined_names[] = · 60 unmodified lines
457492 {{"_SLI", 0, ACPI_RTYPE_BUFFER}},
458493 {{"_SPD", 1, ACPI_RTYPE_INTEGER}},
459494 {{"_SRS", 1, 0}},
495+ {{"_SRT", 1, ACPI_RTYPE_INTEGER}},
460496 {{"_SRV", 0, ACPI_RTYPE_INTEGER}}, /* See IPMI spec */
461497 {{"_SST", 1, 0}},
462498 {{"_STA", 0, ACPI_RTYPE_INTEGER}},
@@ -464,6 +500,7 @@ static const union acpi_predefined_info predefined_names[] = · 1 unmodified line
464500 {{"_STP", 2, ACPI_RTYPE_INTEGER}},
465501 {{"_STR", 0, ACPI_RTYPE_BUFFER}},
466502 {{"_STV", 2, ACPI_RTYPE_INTEGER}},
503+ {{"_SUB", 0, ACPI_RTYPE_STRING}},
467504 {{"_SUN", 0, ACPI_RTYPE_INTEGER}},
468505 {{"_SWS", 0, ACPI_RTYPE_INTEGER}},
469506 {{"_TC1", 0, ACPI_RTYPE_INTEGER}},
drivers/acpi/acpica/acresrc.h+78−37
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -73,28 +73,40 @@ typedef const struct acpi_rsconvert_info { · 61 unmodified lines
7373
7474 /* Resource conversion opcodes */
7575
76−#define ACPI_RSC_INITGET 0
77−#define ACPI_RSC_INITSET 1
78−#define ACPI_RSC_FLAGINIT 2
79−#define ACPI_RSC_1BITFLAG 3
80−#define ACPI_RSC_2BITFLAG 4
81−#define ACPI_RSC_COUNT 5
82−#define ACPI_RSC_COUNT16 6
83−#define ACPI_RSC_LENGTH 7
84−#define ACPI_RSC_MOVE8 8
85−#define ACPI_RSC_MOVE16 9
86−#define ACPI_RSC_MOVE32 10
87−#define ACPI_RSC_MOVE64 11
88−#define ACPI_RSC_SET8 12
89−#define ACPI_RSC_DATA8 13
90−#define ACPI_RSC_ADDRESS 14
91−#define ACPI_RSC_SOURCE 15
92−#define ACPI_RSC_SOURCEX 16
93−#define ACPI_RSC_BITMASK 17
94−#define ACPI_RSC_BITMASK16 18
95−#define ACPI_RSC_EXIT_NE 19
96−#define ACPI_RSC_EXIT_LE 20
97−#define ACPI_RSC_EXIT_EQ 21
76+typedef enum {
77+ ACPI_RSC_INITGET = 0,
78+ ACPI_RSC_INITSET,
79+ ACPI_RSC_FLAGINIT,
80+ ACPI_RSC_1BITFLAG,
81+ ACPI_RSC_2BITFLAG,
82+ ACPI_RSC_3BITFLAG,
83+ ACPI_RSC_ADDRESS,
84+ ACPI_RSC_BITMASK,
85+ ACPI_RSC_BITMASK16,
86+ ACPI_RSC_COUNT,
87+ ACPI_RSC_COUNT16,
88+ ACPI_RSC_COUNT_GPIO_PIN,
89+ ACPI_RSC_COUNT_GPIO_RES,
90+ ACPI_RSC_COUNT_GPIO_VEN,
91+ ACPI_RSC_COUNT_SERIAL_RES,
92+ ACPI_RSC_COUNT_SERIAL_VEN,
93+ ACPI_RSC_DATA8,
94+ ACPI_RSC_EXIT_EQ,
95+ ACPI_RSC_EXIT_LE,
96+ ACPI_RSC_EXIT_NE,
97+ ACPI_RSC_LENGTH,
98+ ACPI_RSC_MOVE_GPIO_PIN,
99+ ACPI_RSC_MOVE_GPIO_RES,
100+ ACPI_RSC_MOVE_SERIAL_RES,
101+ ACPI_RSC_MOVE_SERIAL_VEN,
102+ ACPI_RSC_MOVE8,
103+ ACPI_RSC_MOVE16,
104+ ACPI_RSC_MOVE32,
105+ ACPI_RSC_MOVE64,
106+ ACPI_RSC_SET8,
107+ ACPI_RSC_SOURCE,
108+ ACPI_RSC_SOURCEX
109+} ACPI_RSCONVERT_OPCODES;
98110
99111 /* Resource Conversion sub-opcodes */
100112
@@ -106,6 +118,9 @@ typedef const struct acpi_rsconvert_info { · 5 unmodified lines
106118 #define ACPI_RS_OFFSET(f) (u8) ACPI_OFFSET (struct acpi_resource,f)
107119 #define AML_OFFSET(f) (u8) ACPI_OFFSET (union aml_resource,f)
108120
121+/*
122+ * Individual entry for the resource dump tables
123+ */
109124 typedef const struct acpi_rsdump_info {
110125 u8 opcode;
111126 u8 offset;
@@ -116,20 +131,25 @@ typedef const struct acpi_rsdump_info { · 4 unmodified lines
116131
117132 /* Values for the Opcode field above */
118133
119−#define ACPI_RSD_TITLE 0
120−#define ACPI_RSD_LITERAL 1
121−#define ACPI_RSD_STRING 2
122−#define ACPI_RSD_UINT8 3
123−#define ACPI_RSD_UINT16 4
124−#define ACPI_RSD_UINT32 5
125−#define ACPI_RSD_UINT64 6
126−#define ACPI_RSD_1BITFLAG 7
127−#define ACPI_RSD_2BITFLAG 8
128−#define ACPI_RSD_SHORTLIST 9
129−#define ACPI_RSD_LONGLIST 10
130−#define ACPI_RSD_DWORDLIST 11
131−#define ACPI_RSD_ADDRESS 12
132−#define ACPI_RSD_SOURCE 13
134+typedef enum {
135+ ACPI_RSD_TITLE = 0,
136+ ACPI_RSD_1BITFLAG,
137+ ACPI_RSD_2BITFLAG,
138+ ACPI_RSD_3BITFLAG,
139+ ACPI_RSD_ADDRESS,
140+ ACPI_RSD_DWORDLIST,
141+ ACPI_RSD_LITERAL,
142+ ACPI_RSD_LONGLIST,
143+ ACPI_RSD_SHORTLIST,
144+ ACPI_RSD_SHORTLISTX,
145+ ACPI_RSD_SOURCE,
146+ ACPI_RSD_STRING,
147+ ACPI_RSD_UINT8,
148+ ACPI_RSD_UINT16,
149+ ACPI_RSD_UINT32,
150+ ACPI_RSD_UINT64,
151+ ACPI_RSD_WORDLIST
152+} ACPI_RSDUMP_OPCODES;
133153
134154 /* restore default alignment */
135155
@@ -138,13 +158,18 @@ typedef const struct acpi_rsdump_info { · 2 unmodified lines
138158 /* Resource tables indexed by internal resource type */
139159
140160 extern const u8 acpi_gbl_aml_resource_sizes[];
161+extern const u8 acpi_gbl_aml_resource_serial_bus_sizes[];
141162 extern struct acpi_rsconvert_info *acpi_gbl_set_resource_dispatch[];
142163
143164 /* Resource tables indexed by raw AML resource descriptor type */
144165
145166 extern const u8 acpi_gbl_resource_struct_sizes[];
167+extern const u8 acpi_gbl_resource_struct_serial_bus_sizes[];
146168 extern struct acpi_rsconvert_info *acpi_gbl_get_resource_dispatch[];
147169
170+extern struct acpi_rsconvert_info
171+ *acpi_gbl_convert_resource_serial_bus_dispatch[];
172+
148173 struct acpi_vendor_walk_info {
149174 struct acpi_vendor_uuid *uuid;
150175 struct acpi_buffer *buffer;
@@ -190,6 +215,10 @@ acpi_status · 39 unmodified lines
190215 acpi_rs_set_srs_method_data(struct acpi_namespace_node *node,
191216 struct acpi_buffer *ret_buffer);
192217
218+acpi_status
219+acpi_rs_get_aei_method_data(struct acpi_namespace_node *node,
220+ struct acpi_buffer *ret_buffer);
221+
193222 /*
194223 * rscalc
195224 */
@@ -293,6 +322,11 @@ extern struct acpi_rsconvert_info acpi_rs_convert_address16[]; · 97 unmodified lines
293322 extern struct acpi_rsconvert_info acpi_rs_convert_ext_irq[];
294323 extern struct acpi_rsconvert_info acpi_rs_convert_address64[];
295324 extern struct acpi_rsconvert_info acpi_rs_convert_ext_address64[];
325+extern struct acpi_rsconvert_info acpi_rs_convert_gpio[];
326+extern struct acpi_rsconvert_info acpi_rs_convert_fixed_dma[];
327+extern struct acpi_rsconvert_info acpi_rs_convert_i2c_serial_bus[];
328+extern struct acpi_rsconvert_info acpi_rs_convert_spi_serial_bus[];
329+extern struct acpi_rsconvert_info acpi_rs_convert_uart_serial_bus[];
296330
297331 /* These resources require separate get/set tables */
298332
@@ -310,6 +344,7 @@ extern struct acpi_rsconvert_info acpi_rs_set_vendor[]; · 11 unmodified lines
310344 * rsinfo
311345 */
312346 extern struct acpi_rsdump_info *acpi_gbl_dump_resource_dispatch[];
347+extern struct acpi_rsdump_info *acpi_gbl_dump_serial_bus_dispatch[];
313348
314349 /*
315350 * rsdump
@@ -331,6 +366,12 @@ extern struct acpi_rsdump_info acpi_rs_dump_address64[]; · 15 unmodified lines
331366 extern struct acpi_rsdump_info acpi_rs_dump_ext_address64[];
332367 extern struct acpi_rsdump_info acpi_rs_dump_ext_irq[];
333368 extern struct acpi_rsdump_info acpi_rs_dump_generic_reg[];
369+extern struct acpi_rsdump_info acpi_rs_dump_gpio[];
370+extern struct acpi_rsdump_info acpi_rs_dump_fixed_dma[];
371+extern struct acpi_rsdump_info acpi_rs_dump_common_serial_bus[];
372+extern struct acpi_rsdump_info acpi_rs_dump_i2c_serial_bus[];
373+extern struct acpi_rsdump_info acpi_rs_dump_spi_serial_bus[];
374+extern struct acpi_rsdump_info acpi_rs_dump_uart_serial_bus[];
334375 #endif
335376
336377 #endif /* __ACRESRC_H__ */
drivers/acpi/acpica/acstruct.h+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/actables.h+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/acutils.h+20−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -45,6 +45,7 @@ · 33 unmodified lines
4545 #define _ACUTILS_H
4646
4747 extern const u8 acpi_gbl_resource_aml_sizes[];
48+extern const u8 acpi_gbl_resource_aml_serial_bus_sizes[];
4849
4950 /* Strings used by the disassembler and debugger resource dump routines */
5051
@@ -578,6 +579,24 @@ acpi_ut_create_list(char *list_name, · 527 unmodified lines
578579
579580 #endif /* ACPI_DBG_TRACK_ALLOCATIONS */
580581
582+/*
583+ * utaddress - address range check
584+ */
585+acpi_status
586+acpi_ut_add_address_range(acpi_adr_space_type space_id,
587+ acpi_physical_address address,
588+ u32 length, struct acpi_namespace_node *region_node);
589+
590+void
591+acpi_ut_remove_address_range(acpi_adr_space_type space_id,
592+ struct acpi_namespace_node *region_node);
593+
594+u32
595+acpi_ut_check_address_range(acpi_adr_space_type space_id,
596+ acpi_physical_address address, u32 length, u8 warn);
597+
598+void acpi_ut_delete_address_lists(void);
599+
581600 /*
582601 * utxferror - various error/warning output functions
583602 */
drivers/acpi/acpica/amlcode.h+21−8
@@ -7,7 +7,7 @@ · 6 unmodified lines
77 *****************************************************************************/
88
99 /*
10− * Copyright (C) 2000 - 2011, Intel Corp.
10+ * Copyright (C) 2000 - 2012, Intel Corp.
1111 * All rights reserved.
1212 *
1313 * Redistribution and use in source and binary forms, with or without
@@ -188,6 +188,14 @@ · 174 unmodified lines
188188 #define AML_LLESSEQUAL_OP (u16) 0x9294
189189 #define AML_LNOTEQUAL_OP (u16) 0x9293
190190
191+/*
192+ * Opcodes for "Field" operators
193+ */
194+#define AML_FIELD_OFFSET_OP (u8) 0x00
195+#define AML_FIELD_ACCESS_OP (u8) 0x01
196+#define AML_FIELD_CONNECTION_OP (u8) 0x02 /* ACPI 5.0 */
197+#define AML_FIELD_EXT_ACCESS_OP (u8) 0x03 /* ACPI 5.0 */
198+
191199 /*
192200 * Internal opcodes
193201 * Use only "Unknown" AML opcodes, don't attempt to use
@@ -202,6 +210,8 @@ · 8 unmodified lines
202210 #define AML_INT_METHODCALL_OP (u16) 0x0035
203211 #define AML_INT_RETURN_VALUE_OP (u16) 0x0036
204212 #define AML_INT_EVAL_SUBTREE_OP (u16) 0x0037
213+#define AML_INT_CONNECTION_OP (u16) 0x0038
214+#define AML_INT_EXTACCESSFIELD_OP (u16) 0x0039
205215
206216 #define ARG_NONE 0x0
207217
@@ -456,13 +466,16 @@ typedef enum { · 248 unmodified lines
456466 * access_as keyword
457467 */
458468 typedef enum {
459− AML_FIELD_ATTRIB_SMB_QUICK = 0x02,
460− AML_FIELD_ATTRIB_SMB_SEND_RCV = 0x04,
461− AML_FIELD_ATTRIB_SMB_BYTE = 0x06,
462− AML_FIELD_ATTRIB_SMB_WORD = 0x08,
463− AML_FIELD_ATTRIB_SMB_BLOCK = 0x0A,
464− AML_FIELD_ATTRIB_SMB_WORD_CALL = 0x0C,
465− AML_FIELD_ATTRIB_SMB_BLOCK_CALL = 0x0D
469+ AML_FIELD_ATTRIB_QUICK = 0x02,
470+ AML_FIELD_ATTRIB_SEND_RCV = 0x04,
471+ AML_FIELD_ATTRIB_BYTE = 0x06,
472+ AML_FIELD_ATTRIB_WORD = 0x08,
473+ AML_FIELD_ATTRIB_BLOCK = 0x0A,
474+ AML_FIELD_ATTRIB_MULTIBYTE = 0x0B,
475+ AML_FIELD_ATTRIB_WORD_CALL = 0x0C,
476+ AML_FIELD_ATTRIB_BLOCK_CALL = 0x0D,
477+ AML_FIELD_ATTRIB_RAW_BYTES = 0x0E,
478+ AML_FIELD_ATTRIB_RAW_PROCESS = 0x0F
466479 } AML_ACCESS_ATTRIBUTE;
467480
468481 /* Bit fields in the AML method_flags byte */
drivers/acpi/acpica/amlresrc.h+137−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
@@ -58,29 +58,48 @@ · 45 unmodified lines
5858 #define ACPI_RESTAG_TYPESPECIFICATTRIBUTES "_ATT"
5959 #define ACPI_RESTAG_BASEADDRESS "_BAS"
6060 #define ACPI_RESTAG_BUSMASTER "_BM_" /* Master(1), Slave(0) */
61+#define ACPI_RESTAG_DEBOUNCETIME "_DBT"
6162 #define ACPI_RESTAG_DECODE "_DEC"
63+#define ACPI_RESTAG_DEVICEPOLARITY "_DPL"
6264 #define ACPI_RESTAG_DMA "_DMA"
6365 #define ACPI_RESTAG_DMATYPE "_TYP" /* Compatible(0), A(1), B(2), F(3) */
66+#define ACPI_RESTAG_DRIVESTRENGTH "_DRS"
67+#define ACPI_RESTAG_ENDIANNESS "_END"
68+#define ACPI_RESTAG_FLOWCONTROL "_FLC"
6469 #define ACPI_RESTAG_GRANULARITY "_GRA"
6570 #define ACPI_RESTAG_INTERRUPT "_INT"
6671 #define ACPI_RESTAG_INTERRUPTLEVEL "_LL_" /* active_lo(1), active_hi(0) */
6772 #define ACPI_RESTAG_INTERRUPTSHARE "_SHR" /* Shareable(1), no_share(0) */
6873 #define ACPI_RESTAG_INTERRUPTTYPE "_HE_" /* Edge(1), Level(0) */
74+#define ACPI_RESTAG_IORESTRICTION "_IOR"
6975 #define ACPI_RESTAG_LENGTH "_LEN"
76+#define ACPI_RESTAG_LINE "_LIN"
7077 #define ACPI_RESTAG_MEMATTRIBUTES "_MTP" /* Memory(0), Reserved(1), ACPI(2), NVS(3) */
7178 #define ACPI_RESTAG_MEMTYPE "_MEM" /* non_cache(0), Cacheable(1) Cache+combine(2), Cache+prefetch(3) */
7279 #define ACPI_RESTAG_MAXADDR "_MAX"
7380 #define ACPI_RESTAG_MINADDR "_MIN"
7481 #define ACPI_RESTAG_MAXTYPE "_MAF"
7582 #define ACPI_RESTAG_MINTYPE "_MIF"
83+#define ACPI_RESTAG_MODE "_MOD"
84+#define ACPI_RESTAG_PARITY "_PAR"
85+#define ACPI_RESTAG_PHASE "_PHA"
86+#define ACPI_RESTAG_PIN "_PIN"
87+#define ACPI_RESTAG_PINCONFIG "_PPI"
88+#define ACPI_RESTAG_POLARITY "_POL"
7689 #define ACPI_RESTAG_REGISTERBITOFFSET "_RBO"
7790 #define ACPI_RESTAG_REGISTERBITWIDTH "_RBW"
7891 #define ACPI_RESTAG_RANGETYPE "_RNG"
7992 #define ACPI_RESTAG_READWRITETYPE "_RW_" /* read_only(0), Writeable (1) */
93+#define ACPI_RESTAG_LENGTH_RX "_RXL"
94+#define ACPI_RESTAG_LENGTH_TX "_TXL"
95+#define ACPI_RESTAG_SLAVEMODE "_SLV"
96+#define ACPI_RESTAG_SPEED "_SPE"
97+#define ACPI_RESTAG_STOPBITS "_STB"
8098 #define ACPI_RESTAG_TRANSLATION "_TRA"
8199 #define ACPI_RESTAG_TRANSTYPE "_TRS" /* Sparse(1), Dense(0) */
82100 #define ACPI_RESTAG_TYPE "_TTP" /* Translation(1), Static (0) */
83101 #define ACPI_RESTAG_XFERTYPE "_SIZ" /* 8(0), 8_and16(1), 16(2) */
102+#define ACPI_RESTAG_VENDORDATA "_VEN"
84103
85104 /* Default sizes for "small" resource descriptors */
86105
@@ -90,6 +109,7 @@ · 3 unmodified lines
90109 #define ASL_RDESC_END_DEPEND_SIZE 0x00
91110 #define ASL_RDESC_IO_SIZE 0x07
92111 #define ASL_RDESC_FIXED_IO_SIZE 0x03
112+#define ASL_RDESC_FIXED_DMA_SIZE 0x05
93113 #define ASL_RDESC_END_TAG_SIZE 0x01
94114
95115 struct asl_resource_node {
@@ -164,6 +184,12 @@ struct aml_resource_end_tag { · 68 unmodified lines
164184 AML_RESOURCE_SMALL_HEADER_COMMON u8 checksum;
165185 };
166186
187+struct aml_resource_fixed_dma {
188+ AML_RESOURCE_SMALL_HEADER_COMMON u16 request_lines;
189+ u16 channels;
190+ u8 width;
191+};
192+
167193 /*
168194 * LARGE descriptors
169195 */
@@ -263,6 +289,110 @@ struct aml_resource_generic_register { · 93 unmodified lines
263289 u64 address;
264290 };
265291
292+/* Common descriptor for gpio_int and gpio_io (ACPI 5.0) */
293+
294+struct aml_resource_gpio {
295+ AML_RESOURCE_LARGE_HEADER_COMMON u8 revision_id;
296+ u8 connection_type;
297+ u16 flags;
298+ u16 int_flags;
299+ u8 pin_config;
300+ u16 drive_strength;
301+ u16 debounce_timeout;
302+ u16 pin_table_offset;
303+ u8 res_source_index;
304+ u16 res_source_offset;
305+ u16 vendor_offset;
306+ u16 vendor_length;
307+ /*
308+ * Optional fields follow immediately:
309+ * 1) PIN list (Words)
310+ * 2) Resource Source String
311+ * 3) Vendor Data bytes
312+ */
313+};
314+
315+#define AML_RESOURCE_GPIO_REVISION 1 /* ACPI 5.0 */
316+
317+/* Values for connection_type above */
318+
319+#define AML_RESOURCE_GPIO_TYPE_INT 0
320+#define AML_RESOURCE_GPIO_TYPE_IO 1
321+#define AML_RESOURCE_MAX_GPIOTYPE 1
322+
323+/* Common preamble for all serial descriptors (ACPI 5.0) */
324+
325+#define AML_RESOURCE_SERIAL_COMMON \
326+ u8 revision_id; \
327+ u8 res_source_index; \
328+ u8 type; \
329+ u8 flags; \
330+ u16 type_specific_flags; \
331+ u8 type_revision_id; \
332+ u16 type_data_length; \
333+
334+/* Values for the type field above */
335+
336+#define AML_RESOURCE_I2C_SERIALBUSTYPE 1
337+#define AML_RESOURCE_SPI_SERIALBUSTYPE 2
338+#define AML_RESOURCE_UART_SERIALBUSTYPE 3
339+#define AML_RESOURCE_MAX_SERIALBUSTYPE 3
340+#define AML_RESOURCE_VENDOR_SERIALBUSTYPE 192 /* Vendor defined is 0xC0-0xFF (NOT SUPPORTED) */
341+
342+struct aml_resource_common_serialbus {
343+AML_RESOURCE_LARGE_HEADER_COMMON AML_RESOURCE_SERIAL_COMMON};
344+
345+struct aml_resource_i2c_serialbus {
346+ AML_RESOURCE_LARGE_HEADER_COMMON
347+ AML_RESOURCE_SERIAL_COMMON u32 connection_speed;
348+ u16 slave_address;
349+ /*
350+ * Optional fields follow immediately:
351+ * 1) Vendor Data bytes
352+ * 2) Resource Source String
353+ */
354+};
355+
356+#define AML_RESOURCE_I2C_REVISION 1 /* ACPI 5.0 */
357+#define AML_RESOURCE_I2C_TYPE_REVISION 1 /* ACPI 5.0 */
358+#define AML_RESOURCE_I2C_MIN_DATA_LEN 6
359+
360+struct aml_resource_spi_serialbus {
361+ AML_RESOURCE_LARGE_HEADER_COMMON
362+ AML_RESOURCE_SERIAL_COMMON u32 connection_speed;
363+ u8 data_bit_length;
364+ u8 clock_phase;
365+ u8 clock_polarity;
366+ u16 device_selection;
367+ /*
368+ * Optional fields follow immediately:
369+ * 1) Vendor Data bytes
370+ * 2) Resource Source String
371+ */
372+};
373+
374+#define AML_RESOURCE_SPI_REVISION 1 /* ACPI 5.0 */
375+#define AML_RESOURCE_SPI_TYPE_REVISION 1 /* ACPI 5.0 */
376+#define AML_RESOURCE_SPI_MIN_DATA_LEN 9
377+
378+struct aml_resource_uart_serialbus {
379+ AML_RESOURCE_LARGE_HEADER_COMMON
380+ AML_RESOURCE_SERIAL_COMMON u32 default_baud_rate;
381+ u16 rx_fifo_size;
382+ u16 tx_fifo_size;
383+ u8 parity;
384+ u8 lines_enabled;
385+ /*
386+ * Optional fields follow immediately:
387+ * 1) Vendor Data bytes
388+ * 2) Resource Source String
389+ */
390+};
391+
392+#define AML_RESOURCE_UART_REVISION 1 /* ACPI 5.0 */
393+#define AML_RESOURCE_UART_TYPE_REVISION 1 /* ACPI 5.0 */
394+#define AML_RESOURCE_UART_MIN_DATA_LEN 10
395+
266396 /* restore default alignment */
267397
268398 #pragma pack()
@@ -284,6 +414,7 @@ union aml_resource { · 15 unmodified lines
284414 struct aml_resource_end_dependent end_dpf;
285415 struct aml_resource_io io;
286416 struct aml_resource_fixed_io fixed_io;
417+ struct aml_resource_fixed_dma fixed_dma;
287418 struct aml_resource_vendor_small vendor_small;
288419 struct aml_resource_end_tag end_tag;
289420
@@ -299,6 +430,11 @@ union aml_resource { · 9 unmodified lines
299430 struct aml_resource_address64 address64;
300431 struct aml_resource_extended_address64 ext_address64;
301432 struct aml_resource_extended_irq extended_irq;
433+ struct aml_resource_gpio gpio;
434+ struct aml_resource_i2c_serialbus i2c_serial_bus;
435+ struct aml_resource_spi_serialbus spi_serial_bus;
436+ struct aml_resource_uart_serialbus uart_serial_bus;
437+ struct aml_resource_common_serialbus common_serial_bus;
302438
303439 /* Utility overlays */
304440
drivers/acpi/acpica/dsargs.c+16−2
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
@@ -250,6 +250,13 @@ acpi_ds_get_bank_field_arguments(union acpi_operand_object *obj_desc) · 237 unmodified lines
250250 status = acpi_ds_execute_arguments(node, node->parent,
251251 extra_desc->extra.aml_length,
252252 extra_desc->extra.aml_start);
253+ if (ACPI_FAILURE(status)) {
254+ return_ACPI_STATUS(status);
255+ }
256+
257+ status = acpi_ut_add_address_range(obj_desc->region.space_id,
258+ obj_desc->region.address,
259+ obj_desc->region.length, node);
253260 return_ACPI_STATUS(status);
254261 }
255262
@@ -384,8 +391,15 @@ acpi_status acpi_ds_get_region_arguments(union acpi_operand_object *obj_desc) · 128 unmodified lines
384391
385392 /* Execute the argument AML */
386393
387− status = acpi_ds_execute_arguments(node, node->parent,
394+ status = acpi_ds_execute_arguments(node, extra_desc->extra.scope_node,
388395 extra_desc->extra.aml_length,
389396 extra_desc->extra.aml_start);
397+ if (ACPI_FAILURE(status)) {
398+ return_ACPI_STATUS(status);
399+ }
400+
401+ status = acpi_ut_add_address_range(obj_desc->region.space_id,
402+ obj_desc->region.address,
403+ obj_desc->region.length, node);
390404 return_ACPI_STATUS(status);
391405 }
drivers/acpi/acpica/dscontrol.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/dsfield.c+67−16
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -221,6 +221,7 @@ acpi_ds_get_field_names(struct acpi_create_field_info *info, · 209 unmodified lines
221221 {
222222 acpi_status status;
223223 u64 position;
224+ union acpi_parse_object *child;
224225
225226 ACPI_FUNCTION_TRACE_PTR(ds_get_field_names, info);
226227
@@ -232,10 +233,11 @@ acpi_ds_get_field_names(struct acpi_create_field_info *info, · 5 unmodified lines
232233
233234 while (arg) {
234235 /*
235− * Three types of field elements are handled:
236− * 1) Offset - specifies a bit offset
237− * 2) access_as - changes the access mode
238− * 3) Name - Enters a new named field into the namespace
236+ * Four types of field elements are handled:
237+ * 1) Name - Enters a new named field into the namespace
238+ * 2) Offset - specifies a bit offset
239+ * 3) access_as - changes the access mode/attributes
240+ * 4) Connection - Associate a resource template with the field
239241 */
240242 switch (arg->common.aml_opcode) {
241243 case AML_INT_RESERVEDFIELD_OP:
@@ -253,21 +255,70 @@ acpi_ds_get_field_names(struct acpi_create_field_info *info, · 11 unmodified lines
253255 break;
254256
255257 case AML_INT_ACCESSFIELD_OP:
256−
258+ case AML_INT_EXTACCESSFIELD_OP:
257259 /*
258− * Get a new access_type and access_attribute -- to be used for all
259− * field units that follow, until field end or another access_as
260− * keyword.
260+ * Get new access_type, access_attribute, and access_length fields
261+ * -- to be used for all field units that follow, until the
262+ * end-of-field or another access_as keyword is encountered.
263+ * NOTE. These three bytes are encoded in the integer value
264+ * of the parseop for convenience.
261265 *
262266 * In field_flags, preserve the flag bits other than the
263− * ACCESS_TYPE bits
267+ * ACCESS_TYPE bits.
264268 */
269+
270+ /* access_type (byte_acc, word_acc, etc.) */
271+
265272 info->field_flags = (u8)
266273 ((info->
267274 field_flags & ~(AML_FIELD_ACCESS_TYPE_MASK)) |
268− ((u8) ((u32) arg->common.value.integer >> 8)));
275+ ((u8)((u32)(arg->common.value.integer & 0x07))));
276+
277+ /* access_attribute (attrib_quick, attrib_byte, etc.) */
278+
279+ info->attribute =
280+ (u8)((arg->common.value.integer >> 8) & 0xFF);
281+
282+ /* access_length (for serial/buffer protocols) */
283+
284+ info->access_length =
285+ (u8)((arg->common.value.integer >> 16) & 0xFF);
286+ break;
287+
288+ case AML_INT_CONNECTION_OP:
289+ /*
290+ * Clear any previous connection. New connection is used for all
291+ * fields that follow, similar to access_as
292+ */
293+ info->resource_buffer = NULL;
294+ info->connection_node = NULL;
269295
270− info->attribute = (u8) (arg->common.value.integer);
296+ /*
297+ * A Connection() is either an actual resource descriptor (buffer)
298+ * or a named reference to a resource template
299+ */
300+ child = arg->common.value.arg;
301+ if (child->common.aml_opcode == AML_INT_BYTELIST_OP) {
302+ info->resource_buffer = child->named.data;
303+ info->resource_length =
304+ (u16)child->named.value.integer;
305+ } else {
306+ /* Lookup the Connection() namepath, it should already exist */
307+
308+ status = acpi_ns_lookup(walk_state->scope_info,
309+ child->common.value.
310+ name, ACPI_TYPE_ANY,
311+ ACPI_IMODE_EXECUTE,
312+ ACPI_NS_DONT_OPEN_SCOPE,
313+ walk_state,
314+ &info->connection_node);
315+ if (ACPI_FAILURE(status)) {
316+ ACPI_ERROR_NAMESPACE(child->common.
317+ value.name,
318+ status);
319+ return_ACPI_STATUS(status);
320+ }
321+ }
271322 break;
272323
273324 case AML_INT_NAMEDFIELD_OP:
@@ -374,6 +425,8 @@ acpi_ds_create_field(union acpi_parse_object *op, · 100 unmodified lines
374425 }
375426 }
376427
428+ ACPI_MEMSET(&info, 0, sizeof(struct acpi_create_field_info));
429+
377430 /* Second arg is the field flags */
378431
379432 arg = arg->common.next;
@@ -386,7 +439,6 @@ acpi_ds_create_field(union acpi_parse_object *op, · 6 unmodified lines
386439 info.region_node = region_node;
387440
388441 status = acpi_ds_get_field_names(&info, walk_state, arg->common.next);
389−
390442 return_ACPI_STATUS(status);
391443 }
392444
@@ -474,8 +526,8 @@ acpi_ds_init_field_objects(union acpi_parse_object *op, · 81 unmodified lines
474526 */
475527 while (arg) {
476528 /*
477− * Ignore OFFSET and ACCESSAS terms here; we are only interested in the
478− * field names in order to enter them into the namespace.
529+ * Ignore OFFSET/ACCESSAS/CONNECTION terms here; we are only interested
530+ * in the field names in order to enter them into the namespace.
479531 */
480532 if (arg->common.aml_opcode == AML_INT_NAMEDFIELD_OP) {
481533 status = acpi_ns_lookup(walk_state->scope_info,
@@ -651,6 +703,5 @@ acpi_ds_create_index_field(union acpi_parse_object *op, · 169 unmodified lines
651703 info.region_node = region_node;
652704
653705 status = acpi_ds_get_field_names(&info, walk_state, arg->common.next);
654−
655706 return_ACPI_STATUS(status);
656707 }
drivers/acpi/acpica/dsinit.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/dsmethod.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/dsmthdat.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/dsobject.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/dsopcode.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/dsutils.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/dswexec.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/dswload.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/dswload2.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/dswscope.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/dswstate.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/evevent.c+13−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -71,6 +71,12 @@ acpi_status acpi_ev_initialize_events(void) · 59 unmodified lines
7171
7272 ACPI_FUNCTION_TRACE(ev_initialize_events);
7373
74+ /* If Hardware Reduced flag is set, there are no fixed events */
75+
76+ if (acpi_gbl_reduced_hardware) {
77+ return_ACPI_STATUS(AE_OK);
78+ }
79+
7480 /*
7581 * Initialize the Fixed and General Purpose Events. This is done prior to
7682 * enabling SCIs to prevent interrupts from occurring before the handlers
@@ -111,6 +117,12 @@ acpi_status acpi_ev_install_xrupt_handlers(void) · 34 unmodified lines
111117
112118 ACPI_FUNCTION_TRACE(ev_install_xrupt_handlers);
113119
120+ /* If Hardware Reduced flag is set, there is no ACPI h/w */
121+
122+ if (acpi_gbl_reduced_hardware) {
123+ return_ACPI_STATUS(AE_OK);
124+ }
125+
114126 /* Install the SCI handler */
115127
116128 status = acpi_ev_install_sci_handler();
drivers/acpi/acpica/evglock.c+7−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -70,6 +70,12 @@ acpi_status acpi_ev_init_global_lock_handler(void) · 58 unmodified lines
7070
7171 ACPI_FUNCTION_TRACE(ev_init_global_lock_handler);
7272
73+ /* If Hardware Reduced flag is set, there is no global lock */
74+
75+ if (acpi_gbl_reduced_hardware) {
76+ return_ACPI_STATUS(AE_OK);
77+ }
78+
7379 /* Attempt installation of the global lock handler */
7480
7581 status = acpi_install_fixed_event_handler(ACPI_EVENT_GLOBAL,
drivers/acpi/acpica/evgpe.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/evgpeblk.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/evgpeinit.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/evgpeutil.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/evmisc.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/evregion.c+27−4
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -329,6 +329,7 @@ acpi_ev_execute_reg_method(union acpi_operand_object *region_obj, u32 function) · 317 unmodified lines
329329 * FUNCTION: acpi_ev_address_space_dispatch
330330 *
331331 * PARAMETERS: region_obj - Internal region object
332+ * field_obj - Corresponding field. Can be NULL.
332333 * Function - Read or Write operation
333334 * region_offset - Where in the region to read or write
334335 * bit_width - Field width in bits (8, 16, 32, or 64)
@@ -344,6 +345,7 @@ acpi_ev_execute_reg_method(union acpi_operand_object *region_obj, u32 function) · 9 unmodified lines
344345
345346 acpi_status
346347 acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj,
348+ union acpi_operand_object *field_obj,
347349 u32 function,
348350 u32 region_offset, u32 bit_width, u64 *value)
349351 {
@@ -353,6 +355,7 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj, · 3 unmodified lines
353355 union acpi_operand_object *handler_desc;
354356 union acpi_operand_object *region_obj2;
355357 void *region_context = NULL;
358+ struct acpi_connection_info *context;
356359
357360 ACPI_FUNCTION_TRACE(ev_address_space_dispatch);
358361
@@ -375,6 +378,8 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj, · 16 unmodified lines
375378 return_ACPI_STATUS(AE_NOT_EXIST);
376379 }
377380
381+ context = handler_desc->address_space.context;
382+
378383 /*
379384 * It may be the case that the region has never been initialized.
380385 * Some types of regions require special init code
@@ -404,8 +409,7 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj, · 23 unmodified lines
404409 acpi_ex_exit_interpreter();
405410
406411 status = region_setup(region_obj, ACPI_REGION_ACTIVATE,
407− handler_desc->address_space.context,
408− &region_context);
412+ context, &region_context);
409413
410414 /* Re-enter the interpreter */
411415
@@ -455,6 +459,25 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj, · 43 unmodified lines
455459 acpi_ut_get_region_name(region_obj->region.
456460 space_id)));
457461
462+ /*
463+ * Special handling for generic_serial_bus and general_purpose_io:
464+ * There are three extra parameters that must be passed to the
465+ * handler via the context:
466+ * 1) Connection buffer, a resource template from Connection() op.
467+ * 2) Length of the above buffer.
468+ * 3) Actual access length from the access_as() op.
469+ */
470+ if (((region_obj->region.space_id == ACPI_ADR_SPACE_GSBUS) ||
471+ (region_obj->region.space_id == ACPI_ADR_SPACE_GPIO)) &&
472+ context && field_obj) {
473+
474+ /* Get the Connection (resource_template) buffer */
475+
476+ context->connection = field_obj->field.resource_buffer;
477+ context->length = field_obj->field.resource_length;
478+ context->access_length = field_obj->field.access_length;
479+ }
480+
458481 if (!(handler_desc->address_space.handler_flags &
459482 ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) {
460483 /*
@@ -469,7 +492,7 @@ acpi_ev_address_space_dispatch(union acpi_operand_object *region_obj, · 8 unmodified lines
469492
470493 status = handler(function,
471494 (region_obj->region.address + region_offset),
472− bit_width, value, handler_desc->address_space.context,
495+ bit_width, value, context,
473496 region_obj2->extra.region_context);
474497
475498 if (ACPI_FAILURE(status)) {
drivers/acpi/acpica/evrgnini.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/evsci.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 ******************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/evxface.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/evxfevnt.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/evxfgpe.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/evxfregn.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exconfig.c+4−4
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -297,9 +297,9 @@ acpi_ex_region_read(union acpi_operand_object *obj_desc, u32 length, u8 *buffer) · 285 unmodified lines
297297 /* Bytewise reads */
298298
299299 for (i = 0; i < length; i++) {
300− status = acpi_ev_address_space_dispatch(obj_desc, ACPI_READ,
301− region_offset, 8,
302− &value);
300+ status =
301+ acpi_ev_address_space_dispatch(obj_desc, NULL, ACPI_READ,
302+ region_offset, 8, &value);
303303 if (ACPI_FAILURE(status)) {
304304 return status;
305305 }
drivers/acpi/acpica/exconvrt.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/excreate.c+20−11
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -267,7 +267,7 @@ acpi_status acpi_ex_create_mutex(struct acpi_walk_state *walk_state) · 255 unmodified lines
267267 *
268268 * PARAMETERS: aml_start - Pointer to the region declaration AML
269269 * aml_length - Max length of the declaration AML
270− * region_space - space_iD for the region
270+ * space_id - Address space ID for the region
271271 * walk_state - Current state
272272 *
273273 * RETURN: Status
@@ -279,7 +279,7 @@ acpi_status acpi_ex_create_mutex(struct acpi_walk_state *walk_state) · 5 unmodified lines
279279 acpi_status
280280 acpi_ex_create_region(u8 * aml_start,
281281 u32 aml_length,
282− u8 region_space, struct acpi_walk_state *walk_state)
282+ u8 space_id, struct acpi_walk_state *walk_state)
283283 {
284284 acpi_status status;
285285 union acpi_operand_object *obj_desc;
@@ -304,16 +304,19 @@ acpi_ex_create_region(u8 * aml_start, · 18 unmodified lines
304304 * Space ID must be one of the predefined IDs, or in the user-defined
305305 * range
306306 */
307− if ((region_space >= ACPI_NUM_PREDEFINED_REGIONS) &&
308− (region_space < ACPI_USER_REGION_BEGIN) &&
309− (region_space != ACPI_ADR_SPACE_DATA_TABLE)) {
310− ACPI_ERROR((AE_INFO, "Invalid AddressSpace type 0x%X",
311− region_space));
312− return_ACPI_STATUS(AE_AML_INVALID_SPACE_ID);
307+ if (!acpi_is_valid_space_id(space_id)) {
308+ /*
309+ * Print an error message, but continue. We don't want to abort
310+ * a table load for this exception. Instead, if the region is
311+ * actually used at runtime, abort the executing method.
312+ */
313+ ACPI_ERROR((AE_INFO,
314+ "Invalid/unknown Address Space ID: 0x%2.2X",
315+ space_id));
313316 }
314317
315318 ACPI_DEBUG_PRINT((ACPI_DB_LOAD, "Region Type - %s (0x%X)\n",
316− acpi_ut_get_region_name(region_space), region_space));
319+ acpi_ut_get_region_name(space_id), space_id));
317320
318321 /* Create the region descriptor */
319322
@@ -330,10 +333,16 @@ acpi_ex_create_region(u8 * aml_start, · 10 unmodified lines
330333 region_obj2 = obj_desc->common.next_object;
331334 region_obj2->extra.aml_start = aml_start;
332335 region_obj2->extra.aml_length = aml_length;
336+ if (walk_state->scope_info) {
337+ region_obj2->extra.scope_node =
338+ walk_state->scope_info->scope.node;
339+ } else {
340+ region_obj2->extra.scope_node = node;
341+ }
333342
334343 /* Init the region from the operands */
335344
336− obj_desc->region.space_id = region_space;
345+ obj_desc->region.space_id = space_id;
337346 obj_desc->region.address = 0;
338347 obj_desc->region.length = 0;
339348 obj_desc->region.node = node;
drivers/acpi/acpica/exdebug.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exdump.c+6−3
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -192,10 +192,13 @@ static struct acpi_exdump_info acpi_ex_dump_buffer_field[3] = { · 180 unmodified lines
192192 "Buffer Object"}
193193 };
194194
195−static struct acpi_exdump_info acpi_ex_dump_region_field[3] = {
195+static struct acpi_exdump_info acpi_ex_dump_region_field[5] = {
196196 {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE(acpi_ex_dump_region_field), NULL},
197197 {ACPI_EXD_FIELD, 0, NULL},
198− {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(field.region_obj), "Region Object"}
198+ {ACPI_EXD_UINT8, ACPI_EXD_OFFSET(field.access_length), "AccessLength"},
199+ {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(field.region_obj), "Region Object"},
200+ {ACPI_EXD_POINTER, ACPI_EXD_OFFSET(field.resource_buffer),
201+ "ResourceBuffer"}
199202 };
200203
201204 static struct acpi_exdump_info acpi_ex_dump_bank_field[5] = {
drivers/acpi/acpica/exfield.c+22−8
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -100,18 +100,25 @@ acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state, · 88 unmodified lines
100100 (obj_desc->field.region_obj->region.space_id ==
101101 ACPI_ADR_SPACE_SMBUS
102102 || obj_desc->field.region_obj->region.space_id ==
103+ ACPI_ADR_SPACE_GSBUS
104+ || obj_desc->field.region_obj->region.space_id ==
103105 ACPI_ADR_SPACE_IPMI)) {
104106 /*
105− * This is an SMBus or IPMI read. We must create a buffer to hold
107+ * This is an SMBus, GSBus or IPMI read. We must create a buffer to hold
106108 * the data and then directly access the region handler.
107109 *
108− * Note: Smbus protocol value is passed in upper 16-bits of Function
110+ * Note: SMBus and GSBus protocol value is passed in upper 16-bits of Function
109111 */
110112 if (obj_desc->field.region_obj->region.space_id ==
111113 ACPI_ADR_SPACE_SMBUS) {
112114 length = ACPI_SMBUS_BUFFER_SIZE;
113115 function =
114116 ACPI_READ | (obj_desc->field.attribute << 16);
117+ } else if (obj_desc->field.region_obj->region.space_id ==
118+ ACPI_ADR_SPACE_GSBUS) {
119+ length = ACPI_GSBUS_BUFFER_SIZE;
120+ function =
121+ ACPI_READ | (obj_desc->field.attribute << 16);
115122 } else { /* IPMI */
116123
117124 length = ACPI_IPMI_BUFFER_SIZE;
@@ -248,21 +255,23 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc, · 130 unmodified lines
248255 (obj_desc->field.region_obj->region.space_id ==
249256 ACPI_ADR_SPACE_SMBUS
250257 || obj_desc->field.region_obj->region.space_id ==
258+ ACPI_ADR_SPACE_GSBUS
259+ || obj_desc->field.region_obj->region.space_id ==
251260 ACPI_ADR_SPACE_IPMI)) {
252261 /*
253− * This is an SMBus or IPMI write. We will bypass the entire field
262+ * This is an SMBus, GSBus or IPMI write. We will bypass the entire field
254263 * mechanism and handoff the buffer directly to the handler. For
255264 * these address spaces, the buffer is bi-directional; on a write,
256265 * return data is returned in the same buffer.
257266 *
258267 * Source must be a buffer of sufficient size:
259− * ACPI_SMBUS_BUFFER_SIZE or ACPI_IPMI_BUFFER_SIZE.
268+ * ACPI_SMBUS_BUFFER_SIZE, ACPI_GSBUS_BUFFER_SIZE, or ACPI_IPMI_BUFFER_SIZE.
260269 *
261− * Note: SMBus protocol type is passed in upper 16-bits of Function
270+ * Note: SMBus and GSBus protocol type is passed in upper 16-bits of Function
262271 */
263272 if (source_desc->common.type != ACPI_TYPE_BUFFER) {
264273 ACPI_ERROR((AE_INFO,
265− "SMBus or IPMI write requires Buffer, found type %s",
274+ "SMBus/IPMI/GenericSerialBus write requires Buffer, found type %s",
266275 acpi_ut_get_object_type_name(source_desc)));
267276
268277 return_ACPI_STATUS(AE_AML_OPERAND_TYPE);
@@ -273,6 +282,11 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc, · 4 unmodified lines
273282 length = ACPI_SMBUS_BUFFER_SIZE;
274283 function =
275284 ACPI_WRITE | (obj_desc->field.attribute << 16);
285+ } else if (obj_desc->field.region_obj->region.space_id ==
286+ ACPI_ADR_SPACE_GSBUS) {
287+ length = ACPI_GSBUS_BUFFER_SIZE;
288+ function =
289+ ACPI_WRITE | (obj_desc->field.attribute << 16);
276290 } else { /* IPMI */
277291
278292 length = ACPI_IPMI_BUFFER_SIZE;
@@ -281,7 +295,7 @@ acpi_ex_write_data_to_field(union acpi_operand_object *source_desc, · 2 unmodified lines
281295
282296 if (source_desc->buffer.length < length) {
283297 ACPI_ERROR((AE_INFO,
284− "SMBus or IPMI write requires Buffer of length %u, found length %u",
298+ "SMBus/IPMI/GenericSerialBus write requires Buffer of length %u, found length %u",
285299 length, source_desc->buffer.length));
286300
287301 return_ACPI_STATUS(AE_AML_BUFFER_LIMIT);
drivers/acpi/acpica/exfldio.c+29−9
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -86,6 +86,7 @@ acpi_ex_setup_region(union acpi_operand_object *obj_desc, · 74 unmodified lines
8686 {
8787 acpi_status status = AE_OK;
8888 union acpi_operand_object *rgn_desc;
89+ u8 space_id;
8990
9091 ACPI_FUNCTION_TRACE_U32(ex_setup_region, field_datum_byte_offset);
9192
@@ -101,6 +102,17 @@ acpi_ex_setup_region(union acpi_operand_object *obj_desc, · 9 unmodified lines
101102 return_ACPI_STATUS(AE_AML_OPERAND_TYPE);
102103 }
103104
105+ space_id = rgn_desc->region.space_id;
106+
107+ /* Validate the Space ID */
108+
109+ if (!acpi_is_valid_space_id(space_id)) {
110+ ACPI_ERROR((AE_INFO,
111+ "Invalid/unknown Address Space ID: 0x%2.2X",
112+ space_id));
113+ return_ACPI_STATUS(AE_AML_INVALID_SPACE_ID);
114+ }
115+
104116 /*
105117 * If the Region Address and Length have not been previously evaluated,
106118 * evaluate them now and save the results.
@@ -119,11 +131,12 @@ acpi_ex_setup_region(union acpi_operand_object *obj_desc, · 12 unmodified lines
119131 }
120132
121133 /*
122− * Exit now for SMBus or IPMI address space, it has a non-linear
134+ * Exit now for SMBus, GSBus or IPMI address space, it has a non-linear
123135 * address space and the request cannot be directly validated
124136 */
125− if (rgn_desc->region.space_id == ACPI_ADR_SPACE_SMBUS ||
126− rgn_desc->region.space_id == ACPI_ADR_SPACE_IPMI) {
137+ if (space_id == ACPI_ADR_SPACE_SMBUS ||
138+ space_id == ACPI_ADR_SPACE_GSBUS ||
139+ space_id == ACPI_ADR_SPACE_IPMI) {
127140
128141 /* SMBus or IPMI has a non-linear address space */
129142
@@ -271,11 +284,12 @@ acpi_ex_access_region(union acpi_operand_object *obj_desc, · 141 unmodified lines
271284
272285 /* Invoke the appropriate address_space/op_region handler */
273286
274− status =
275− acpi_ev_address_space_dispatch(rgn_desc, function, region_offset,
276− ACPI_MUL_8(obj_desc->common_field.
277− access_byte_width),
278− value);
287+ status = acpi_ev_address_space_dispatch(rgn_desc, obj_desc,
288+ function, region_offset,
289+ ACPI_MUL_8(obj_desc->
290+ common_field.
291+ access_byte_width),
292+ value);
279293
280294 if (ACPI_FAILURE(status)) {
281295 if (status == AE_NOT_IMPLEMENTED) {
@@ -316,6 +330,7 @@ acpi_ex_access_region(union acpi_operand_object *obj_desc, · 34 unmodified lines
316330 static u8
317331 acpi_ex_register_overflow(union acpi_operand_object *obj_desc, u64 value)
318332 {
333+ ACPI_FUNCTION_NAME(ex_register_overflow);
319334
320335 if (obj_desc->common_field.bit_length >= ACPI_INTEGER_BIT_SIZE) {
321336 /*
@@ -330,6 +345,11 @@ acpi_ex_register_overflow(union acpi_operand_object *obj_desc, u64 value) · 8 unmodified lines
330345 * The Value is larger than the maximum value that can fit into
331346 * the register.
332347 */
348+ ACPI_ERROR((AE_INFO,
349+ "Index value 0x%8.8X%8.8X overflows field width 0x%X",
350+ ACPI_FORMAT_UINT64(value),
351+ obj_desc->common_field.bit_length));
352+
333353 return (TRUE);
334354 }
335355
drivers/acpi/acpica/exmisc.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exmutex.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exnames.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exoparg1.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exoparg2.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exoparg3.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exoparg6.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exprep.c+26−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
@@ -47,6 +47,7 @@ · 34 unmodified lines
4747 #include "acinterp.h"
4848 #include "amlcode.h"
4949 #include "acnamesp.h"
50+#include "acdispat.h"
5051
5152 #define _COMPONENT ACPI_EXECUTER
5253 ACPI_MODULE_NAME("exprep")
@@ -455,6 +456,30 @@ acpi_status acpi_ex_prep_field_value(struct acpi_create_field_info *info) · 402 unmodified lines
455456 obj_desc->field.region_obj =
456457 acpi_ns_get_attached_object(info->region_node);
457458
459+ /* Fields specific to generic_serial_bus fields */
460+
461+ obj_desc->field.access_length = info->access_length;
462+
463+ if (info->connection_node) {
464+ second_desc = info->connection_node->object;
465+ if (!(second_desc->common.flags & AOPOBJ_DATA_VALID)) {
466+ status =
467+ acpi_ds_get_buffer_arguments(second_desc);
468+ if (ACPI_FAILURE(status)) {
469+ acpi_ut_delete_object_desc(obj_desc);
470+ return_ACPI_STATUS(status);
471+ }
472+ }
473+
474+ obj_desc->field.resource_buffer =
475+ second_desc->buffer.pointer;
476+ obj_desc->field.resource_length =
477+ (u16)second_desc->buffer.length;
478+ } else if (info->resource_buffer) {
479+ obj_desc->field.resource_buffer = info->resource_buffer;
480+ obj_desc->field.resource_length = info->resource_length;
481+ }
482+
458483 /* Allow full data read from EC address space */
459484
460485 if ((obj_desc->field.region_obj->region.space_id ==
drivers/acpi/acpica/exregion.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exresnte.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exresolv.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exresop.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exstore.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exstoren.c+1−1
@@ -7,7 +7,7 @@ · 6 unmodified lines
77 *****************************************************************************/
88
99 /*
10− * Copyright (C) 2000 - 2011, Intel Corp.
10+ * Copyright (C) 2000 - 2012, Intel Corp.
1111 * All rights reserved.
1212 *
1313 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exstorob.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exsystem.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/exutils.c+26−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
@@ -435,4 +435,29 @@ void acpi_ex_integer_to_string(char *out_string, u64 value) · 422 unmodified lines
435435 }
436436 }
437437
438+/*******************************************************************************
439+ *
440+ * FUNCTION: acpi_is_valid_space_id
441+ *
442+ * PARAMETERS: space_id - ID to be validated
443+ *
444+ * RETURN: TRUE if valid/supported ID.
445+ *
446+ * DESCRIPTION: Validate an operation region space_iD.
447+ *
448+ ******************************************************************************/
449+
450+u8 acpi_is_valid_space_id(u8 space_id)
451+{
452+
453+ if ((space_id >= ACPI_NUM_PREDEFINED_REGIONS) &&
454+ (space_id < ACPI_USER_REGION_BEGIN) &&
455+ (space_id != ACPI_ADR_SPACE_DATA_TABLE) &&
456+ (space_id != ACPI_ADR_SPACE_FIXED_HARDWARE)) {
457+ return (FALSE);
458+ }
459+
460+ return (TRUE);
461+}
462+
438463 #endif
drivers/acpi/acpica/hwacpi.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/hwgpe.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/hwpci.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/hwregs.c+1−1
@@ -7,7 +7,7 @@ · 6 unmodified lines
77 ******************************************************************************/
88
99 /*
10− * Copyright (C) 2000 - 2011, Intel Corp.
10+ * Copyright (C) 2000 - 2012, Intel Corp.
1111 * All rights reserved.
1212 *
1313 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/hwsleep.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/hwtimer.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/hwvalid.c+3−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
@@ -134,6 +134,8 @@ acpi_hw_validate_io_request(acpi_io_address address, u32 bit_width) · 121 unmodified lines
134134 /* Supported widths are 8/16/32 */
135135
136136 if ((bit_width != 8) && (bit_width != 16) && (bit_width != 32)) {
137+ ACPI_ERROR((AE_INFO,
138+ "Bad BitWidth parameter: %8.8X", bit_width));
137139 return AE_BAD_PARAMETER;
138140 }
139141
drivers/acpi/acpica/hwxface.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsaccess.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsalloc.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsdump.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsdumpdv.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nseval.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsinit.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsload.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsnames.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsobject.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 ******************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsparse.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nspredef.c+30−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
@@ -620,6 +620,7 @@ acpi_ns_check_package(struct acpi_predefined_data *data, · 607 unmodified lines
620620 case ACPI_PTYPE2_FIXED:
621621 case ACPI_PTYPE2_MIN:
622622 case ACPI_PTYPE2_COUNT:
623+ case ACPI_PTYPE2_FIX_VAR:
623624
624625 /*
625626 * These types all return a single Package that consists of a
@@ -759,6 +760,34 @@ acpi_ns_check_package_list(struct acpi_predefined_data *data, · 133 unmodified lines
759760 }
760761 break;
761762
763+ case ACPI_PTYPE2_FIX_VAR:
764+ /*
765+ * Each subpackage has a fixed number of elements and an
766+ * optional element
767+ */
768+ expected_count =
769+ package->ret_info.count1 + package->ret_info.count2;
770+ if (sub_package->package.count < expected_count) {
771+ goto package_too_small;
772+ }
773+
774+ status =
775+ acpi_ns_check_package_elements(data, sub_elements,
776+ package->ret_info.
777+ object_type1,
778+ package->ret_info.
779+ count1,
780+ package->ret_info.
781+ object_type2,
782+ sub_package->package.
783+ count -
784+ package->ret_info.
785+ count1, 0);
786+ if (ACPI_FAILURE(status)) {
787+ return (status);
788+ }
789+ break;
790+
762791 case ACPI_PTYPE2_FIXED:
763792
764793 /* Each sub-package has a fixed length */
drivers/acpi/acpica/nsrepair.c+2−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -634,6 +634,7 @@ acpi_ns_remove_null_elements(struct acpi_predefined_data *data, · 622 unmodified lines
634634 case ACPI_PTYPE2_FIXED:
635635 case ACPI_PTYPE2_MIN:
636636 case ACPI_PTYPE2_REV_FIXED:
637+ case ACPI_PTYPE2_FIX_VAR:
637638 break;
638639
639640 default:
drivers/acpi/acpica/nsrepair2.c+4−3
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
@@ -467,11 +467,12 @@ acpi_ns_repair_HID(struct acpi_predefined_data *data, · 454 unmodified lines
467467 }
468468
469469 /*
470− * Copy and uppercase the string. From the ACPI specification:
470+ * Copy and uppercase the string. From the ACPI 5.0 specification:
471471 *
472472 * A valid PNP ID must be of the form "AAA####" where A is an uppercase
473473 * letter and # is a hex digit. A valid ACPI ID must be of the form
474− * "ACPI####" where # is a hex digit.
474+ * "NNNN####" where N is an uppercase letter or decimal digit, and
475+ * # is a hex digit.
475476 */
476477 for (dest = new_string->string.pointer; *source; dest++, source++) {
477478 *dest = (char)ACPI_TOUPPER(*source);
drivers/acpi/acpica/nssearch.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsutils.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nswalk.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsxfeval.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 ******************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsxfname.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/nsxfobj.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 ******************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/psargs.c+129−14
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -484,34 +484,54 @@ acpi_ps_get_next_simple_arg(struct acpi_parse_state *parser_state, · 472 unmodified lines
484484 static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_state
485485 *parser_state)
486486 {
487− u32 aml_offset = (u32)
488− ACPI_PTR_DIFF(parser_state->aml,
489− parser_state->aml_start);
487+ u32 aml_offset;
490488 union acpi_parse_object *field;
489+ union acpi_parse_object *arg = NULL;
491490 u16 opcode;
492491 u32 name;
492+ u8 access_type;
493+ u8 access_attribute;
494+ u8 access_length;
495+ u32 pkg_length;
496+ u8 *pkg_end;
497+ u32 buffer_length;
493498
494499 ACPI_FUNCTION_TRACE(ps_get_next_field);
495500
501+ aml_offset =
502+ (u32)ACPI_PTR_DIFF(parser_state->aml, parser_state->aml_start);
503+
496504 /* Determine field type */
497505
498506 switch (ACPI_GET8(parser_state->aml)) {
499− default:
507+ case AML_FIELD_OFFSET_OP:
500508
501− opcode = AML_INT_NAMEDFIELD_OP;
509+ opcode = AML_INT_RESERVEDFIELD_OP;
510+ parser_state->aml++;
502511 break;
503512
504− case 0x00:
513+ case AML_FIELD_ACCESS_OP:
505514
506− opcode = AML_INT_RESERVEDFIELD_OP;
515+ opcode = AML_INT_ACCESSFIELD_OP;
507516 parser_state->aml++;
508517 break;
509518
510− case 0x01:
519+ case AML_FIELD_CONNECTION_OP:
511520
512− opcode = AML_INT_ACCESSFIELD_OP;
521+ opcode = AML_INT_CONNECTION_OP;
522+ parser_state->aml++;
523+ break;
524+
525+ case AML_FIELD_EXT_ACCESS_OP:
526+
527+ opcode = AML_INT_EXTACCESSFIELD_OP;
513528 parser_state->aml++;
514529 break;
530+
531+ default:
532+
533+ opcode = AML_INT_NAMEDFIELD_OP;
534+ break;
515535 }
516536
517537 /* Allocate a new field op */
@@ -549,16 +569,111 @@ static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_state · 31 unmodified lines
549569 break;
550570
551571 case AML_INT_ACCESSFIELD_OP:
572+ case AML_INT_EXTACCESSFIELD_OP:
552573
553574 /*
554575 * Get access_type and access_attrib and merge into the field Op
555− * access_type is first operand, access_attribute is second
576+ * access_type is first operand, access_attribute is second. stuff
577+ * these bytes into the node integer value for convenience.
556578 */
557− field->common.value.integer =
558− (((u32) ACPI_GET8(parser_state->aml) << 8));
579+
580+ /* Get the two bytes (Type/Attribute) */
581+
582+ access_type = ACPI_GET8(parser_state->aml);
559583 parser_state->aml++;
560− field->common.value.integer |= ACPI_GET8(parser_state->aml);
584+ access_attribute = ACPI_GET8(parser_state->aml);
561585 parser_state->aml++;
586+
587+ field->common.value.integer = (u8)access_type;
588+ field->common.value.integer |= (u16)(access_attribute << 8);
589+
590+ /* This opcode has a third byte, access_length */
591+
592+ if (opcode == AML_INT_EXTACCESSFIELD_OP) {
593+ access_length = ACPI_GET8(parser_state->aml);
594+ parser_state->aml++;
595+
596+ field->common.value.integer |=
597+ (u32)(access_length << 16);
598+ }
599+ break;
600+
601+ case AML_INT_CONNECTION_OP:
602+
603+ /*
604+ * Argument for Connection operator can be either a Buffer
605+ * (resource descriptor), or a name_string.
606+ */
607+ if (ACPI_GET8(parser_state->aml) == AML_BUFFER_OP) {
608+ parser_state->aml++;
609+
610+ pkg_end = parser_state->aml;
611+ pkg_length =
612+ acpi_ps_get_next_package_length(parser_state);
613+ pkg_end += pkg_length;
614+
615+ if (parser_state->aml < pkg_end) {
616+
617+ /* Non-empty list */
618+
619+ arg = acpi_ps_alloc_op(AML_INT_BYTELIST_OP);
620+ if (!arg) {
621+ return_PTR(NULL);
622+ }
623+
624+ /* Get the actual buffer length argument */
625+
626+ opcode = ACPI_GET8(parser_state->aml);
627+ parser_state->aml++;
628+
629+ switch (opcode) {
630+ case AML_BYTE_OP: /* AML_BYTEDATA_ARG */
631+ buffer_length =
632+ ACPI_GET8(parser_state->aml);
633+ parser_state->aml += 1;
634+ break;
635+
636+ case AML_WORD_OP: /* AML_WORDDATA_ARG */
637+ buffer_length =
638+ ACPI_GET16(parser_state->aml);
639+ parser_state->aml += 2;
640+ break;
641+
642+ case AML_DWORD_OP: /* AML_DWORDATA_ARG */
643+ buffer_length =
644+ ACPI_GET32(parser_state->aml);
645+ parser_state->aml += 4;
646+ break;
647+
648+ default:
649+ buffer_length = 0;
650+ break;
651+ }
652+
653+ /* Fill in bytelist data */
654+
655+ arg->named.value.size = buffer_length;
656+ arg->named.data = parser_state->aml;
657+ }
658+
659+ /* Skip to End of byte data */
660+
661+ parser_state->aml = pkg_end;
662+ } else {
663+ arg = acpi_ps_alloc_op(AML_INT_NAMEPATH_OP);
664+ if (!arg) {
665+ return_PTR(NULL);
666+ }
667+
668+ /* Get the Namestring argument */
669+
670+ arg->common.value.name =
671+ acpi_ps_get_next_namestring(parser_state);
672+ }
673+
674+ /* Link the buffer/namestring to parent (CONNECTION_OP) */
675+
676+ acpi_ps_append_arg(field, arg);
562677 break;
563678
564679 default:
drivers/acpi/acpica/psloop.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/psopcode.c+12−3
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -638,7 +638,16 @@ const struct acpi_opcode_info acpi_gbl_aml_op_info[AML_NUM_OPCODES] = { · 626 unmodified lines
638638
639639 /* 7E */ ACPI_OP("Timer", ARGP_TIMER_OP, ARGI_TIMER_OP, ACPI_TYPE_ANY,
640640 AML_CLASS_EXECUTE, AML_TYPE_EXEC_0A_0T_1R,
641− AML_FLAGS_EXEC_0A_0T_1R)
641+ AML_FLAGS_EXEC_0A_0T_1R),
642+
643+/* ACPI 5.0 opcodes */
644+
645+/* 7F */ ACPI_OP("-ConnectField-", ARGP_CONNECTFIELD_OP,
646+ ARGI_CONNECTFIELD_OP, ACPI_TYPE_ANY,
647+ AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS),
648+/* 80 */ ACPI_OP("-ExtAccessField-", ARGP_CONNECTFIELD_OP,
649+ ARGI_CONNECTFIELD_OP, ACPI_TYPE_ANY,
650+ AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0)
642651
643652 /*! [End] no source code translation !*/
644653 };
@@ -657,7 +666,7 @@ static const u8 acpi_gbl_short_op_index[256] = { · 12 unmodified lines
657666 /* 0x20 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
658667 /* 0x28 */ _UNK, _UNK, _UNK, _UNK, _UNK, 0x63, _PFX, _PFX,
659668 /* 0x30 */ 0x67, 0x66, 0x68, 0x65, 0x69, 0x64, 0x6A, 0x7D,
660−/* 0x38 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
669+/* 0x38 */ 0x7F, 0x80, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
661670 /* 0x40 */ _UNK, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC,
662671 /* 0x48 */ _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC,
663672 /* 0x50 */ _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC,
drivers/acpi/acpica/psparse.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/psscope.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/pstree.c+7−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -74,6 +74,12 @@ union acpi_parse_object *acpi_ps_get_arg(union acpi_parse_object *op, u32 argn) · 62 unmodified lines
7474
7575 ACPI_FUNCTION_ENTRY();
7676
77+/*
78+ if (Op->Common.aml_opcode == AML_INT_CONNECTION_OP)
79+ {
80+ return (Op->Common.Value.Arg);
81+ }
82+*/
7783 /* Get the info structure for this opcode */
7884
7985 op_info = acpi_ps_get_opcode_info(op->common.aml_opcode);
drivers/acpi/acpica/psutils.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/pswalk.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/psxface.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/rsaddr.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/rscalc.c+81−8
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -313,6 +313,38 @@ acpi_rs_get_aml_length(struct acpi_resource * resource, acpi_size * size_needed) · 301 unmodified lines
313313 resource_source));
314314 break;
315315
316+ case ACPI_RESOURCE_TYPE_GPIO:
317+
318+ total_size =
319+ (acpi_rs_length) (total_size +
320+ (resource->data.gpio.
321+ pin_table_length * 2) +
322+ resource->data.gpio.
323+ resource_source.string_length +
324+ resource->data.gpio.
325+ vendor_length);
326+
327+ break;
328+
329+ case ACPI_RESOURCE_TYPE_SERIAL_BUS:
330+
331+ total_size =
332+ acpi_gbl_aml_resource_serial_bus_sizes[resource->
333+ data.
334+ common_serial_bus.
335+ type];
336+
337+ total_size = (acpi_rs_length) (total_size +
338+ resource->data.
339+ i2c_serial_bus.
340+ resource_source.
341+ string_length +
342+ resource->data.
343+ i2c_serial_bus.
344+ vendor_length);
345+
346+ break;
347+
316348 default:
317349 break;
318350 }
@@ -362,10 +394,11 @@ acpi_rs_get_list_length(u8 * aml_buffer, · 43 unmodified lines
362394 u32 extra_struct_bytes;
363395 u8 resource_index;
364396 u8 minimum_aml_resource_length;
397+ union aml_resource *aml_resource;
365398
366399 ACPI_FUNCTION_TRACE(rs_get_list_length);
367400
368− *size_needed = 0;
401+ *size_needed = ACPI_RS_SIZE_MIN; /* Minimum size is one end_tag */
369402 end_aml = aml_buffer + aml_buffer_length;
370403
371404 /* Walk the list of AML resource descriptors */
@@ -376,9 +409,15 @@ acpi_rs_get_list_length(u8 * aml_buffer, · 4 unmodified lines
376409
377410 status = acpi_ut_validate_resource(aml_buffer, &resource_index);
378411 if (ACPI_FAILURE(status)) {
412+ /*
413+ * Exit on failure. Cannot continue because the descriptor length
414+ * may be bogus also.
415+ */
379416 return_ACPI_STATUS(status);
380417 }
381418
419+ aml_resource = (void *)aml_buffer;
420+
382421 /* Get the resource length and base (minimum) AML size */
383422
384423 resource_length = acpi_ut_get_resource_length(aml_buffer);
@@ -422,10 +461,8 @@ acpi_rs_get_list_length(u8 * aml_buffer, · 37 unmodified lines
422461
423462 case ACPI_RESOURCE_NAME_END_TAG:
424463 /*
425− * End Tag:
426− * This is the normal exit, add size of end_tag
464+ * End Tag: This is the normal exit
427465 */
428− *size_needed += ACPI_RS_SIZE_MIN;
429466 return_ACPI_STATUS(AE_OK);
430467
431468 case ACPI_RESOURCE_NAME_ADDRESS32:
@@ -457,6 +494,33 @@ acpi_rs_get_list_length(u8 * aml_buffer, · 25 unmodified lines
457494 minimum_aml_resource_length);
458495 break;
459496
497+ case ACPI_RESOURCE_NAME_GPIO:
498+
499+ /* Vendor data is optional */
500+
501+ if (aml_resource->gpio.vendor_length) {
502+ extra_struct_bytes +=
503+ aml_resource->gpio.vendor_offset -
504+ aml_resource->gpio.pin_table_offset +
505+ aml_resource->gpio.vendor_length;
506+ } else {
507+ extra_struct_bytes +=
508+ aml_resource->large_header.resource_length +
509+ sizeof(struct aml_resource_large_header) -
510+ aml_resource->gpio.pin_table_offset;
511+ }
512+ break;
513+
514+ case ACPI_RESOURCE_NAME_SERIAL_BUS:
515+
516+ minimum_aml_resource_length =
517+ acpi_gbl_resource_aml_serial_bus_sizes
518+ [aml_resource->common_serial_bus.type];
519+ extra_struct_bytes +=
520+ aml_resource->common_serial_bus.resource_length -
521+ minimum_aml_resource_length;
522+ break;
523+
460524 default:
461525 break;
462526 }
@@ -467,9 +531,18 @@ acpi_rs_get_list_length(u8 * aml_buffer, · 4 unmodified lines
467531 * Important: Round the size up for the appropriate alignment. This
468532 * is a requirement on IA64.
469533 */
470− buffer_size = acpi_gbl_resource_struct_sizes[resource_index] +
471− extra_struct_bytes;
472− buffer_size = (u32) ACPI_ROUND_UP_TO_NATIVE_WORD(buffer_size);
534+ if (acpi_ut_get_resource_type(aml_buffer) ==
535+ ACPI_RESOURCE_NAME_SERIAL_BUS) {
536+ buffer_size =
537+ acpi_gbl_resource_struct_serial_bus_sizes
538+ [aml_resource->common_serial_bus.type] +
539+ extra_struct_bytes;
540+ } else {
541+ buffer_size =
542+ acpi_gbl_resource_struct_sizes[resource_index] +
543+ extra_struct_bytes;
544+ }
545+ buffer_size = (u32)ACPI_ROUND_UP_TO_NATIVE_WORD(buffer_size);
473546
474547 *size_needed += buffer_size;
475548
drivers/acpi/acpica/rscreate.c+67−2
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -49,6 +49,70 @@ · 37 unmodified lines
4949 #define _COMPONENT ACPI_RESOURCES
5050 ACPI_MODULE_NAME("rscreate")
5151
52+/*******************************************************************************
53+ *
54+ * FUNCTION: acpi_buffer_to_resource
55+ *
56+ * PARAMETERS: aml_buffer - Pointer to the resource byte stream
57+ * aml_buffer_length - Length of the aml_buffer
58+ * resource_ptr - Where the converted resource is returned
59+ *
60+ * RETURN: Status
61+ *
62+ * DESCRIPTION: Convert a raw AML buffer to a resource list
63+ *
64+ ******************************************************************************/
65+acpi_status
66+acpi_buffer_to_resource(u8 *aml_buffer,
67+ u16 aml_buffer_length,
68+ struct acpi_resource **resource_ptr)
69+{
70+ acpi_status status;
71+ acpi_size list_size_needed;
72+ void *resource;
73+ void *current_resource_ptr;
74+
75+ /*
76+ * Note: we allow AE_AML_NO_RESOURCE_END_TAG, since an end tag
77+ * is not required here.
78+ */
79+
80+ /* Get the required length for the converted resource */
81+
82+ status = acpi_rs_get_list_length(aml_buffer, aml_buffer_length,
83+ &list_size_needed);
84+ if (status == AE_AML_NO_RESOURCE_END_TAG) {
85+ status = AE_OK;
86+ }
87+ if (ACPI_FAILURE(status)) {
88+ return (status);
89+ }
90+
91+ /* Allocate a buffer for the converted resource */
92+
93+ resource = ACPI_ALLOCATE_ZEROED(list_size_needed);
94+ current_resource_ptr = resource;
95+ if (!resource) {
96+ return (AE_NO_MEMORY);
97+ }
98+
99+ /* Perform the AML-to-Resource conversion */
100+
101+ status = acpi_ut_walk_aml_resources(aml_buffer, aml_buffer_length,
102+ acpi_rs_convert_aml_to_resources,
103+ &current_resource_ptr);
104+ if (status == AE_AML_NO_RESOURCE_END_TAG) {
105+ status = AE_OK;
106+ }
107+ if (ACPI_FAILURE(status)) {
108+ ACPI_FREE(resource);
109+ } else {
110+ *resource_ptr = resource;
111+ }
112+
113+ return (status);
114+}
115+
52116 /*******************************************************************************
53117 *
54118 * FUNCTION: acpi_rs_create_resource_list
@@ -66,9 +130,10 @@ ACPI_MODULE_NAME("rscreate") · 11 unmodified lines
66130 * of device resources.
67131 *
68132 ******************************************************************************/
133+
69134 acpi_status
70135 acpi_rs_create_resource_list(union acpi_operand_object *aml_buffer,
71− struct acpi_buffer *output_buffer)
136+ struct acpi_buffer * output_buffer)
72137 {
73138
74139 acpi_status status;
drivers/acpi/acpica/rsdump.c+186−10
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -61,11 +61,13 @@ static void acpi_rs_out_integer64(char *title, u64 value); · 49 unmodified lines
6161
6262 static void acpi_rs_out_title(char *title);
6363
64−static void acpi_rs_dump_byte_list(u16 length, u8 * data);
64+static void acpi_rs_dump_byte_list(u16 length, u8 *data);
6565
66−static void acpi_rs_dump_dword_list(u8 length, u32 * data);
66+static void acpi_rs_dump_word_list(u16 length, u16 *data);
6767
68−static void acpi_rs_dump_short_byte_list(u8 length, u8 * data);
68+static void acpi_rs_dump_dword_list(u8 length, u32 *data);
69+
70+static void acpi_rs_dump_short_byte_list(u8 length, u8 *data);
6971
7072 static void
7173 acpi_rs_dump_resource_source(struct acpi_resource_source *resource_source);
@@ -309,6 +311,125 @@ struct acpi_rsdump_info acpi_rs_dump_generic_reg[6] = { · 237 unmodified lines
309311 {ACPI_RSD_UINT64, ACPI_RSD_OFFSET(generic_reg.address), "Address", NULL}
310312 };
311313
314+struct acpi_rsdump_info acpi_rs_dump_gpio[16] = {
315+ {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_gpio), "GPIO", NULL},
316+ {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(gpio.revision_id), "RevisionId", NULL},
317+ {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(gpio.connection_type),
318+ "ConnectionType", acpi_gbl_ct_decode},
319+ {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(gpio.producer_consumer),
320+ "ProducerConsumer", acpi_gbl_consume_decode},
321+ {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(gpio.pin_config), "PinConfig",
322+ acpi_gbl_ppc_decode},
323+ {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(gpio.sharable), "Sharable",
324+ acpi_gbl_shr_decode},
325+ {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(gpio.io_restriction),
326+ "IoRestriction", acpi_gbl_ior_decode},
327+ {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(gpio.triggering), "Triggering",
328+ acpi_gbl_he_decode},
329+ {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(gpio.polarity), "Polarity",
330+ acpi_gbl_ll_decode},
331+ {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(gpio.drive_strength), "DriveStrength",
332+ NULL},
333+ {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(gpio.debounce_timeout),
334+ "DebounceTimeout", NULL},
335+ {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET(gpio.resource_source),
336+ "ResourceSource", NULL},
337+ {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(gpio.pin_table_length),
338+ "PinTableLength", NULL},
339+ {ACPI_RSD_WORDLIST, ACPI_RSD_OFFSET(gpio.pin_table), "PinTable", NULL},
340+ {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(gpio.vendor_length), "VendorLength",
341+ NULL},
342+ {ACPI_RSD_SHORTLISTX, ACPI_RSD_OFFSET(gpio.vendor_data), "VendorData",
343+ NULL},
344+};
345+
346+struct acpi_rsdump_info acpi_rs_dump_fixed_dma[4] = {
347+ {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_fixed_dma),
348+ "FixedDma", NULL},
349+ {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(fixed_dma.request_lines),
350+ "RequestLines", NULL},
351+ {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(fixed_dma.channels), "Channels",
352+ NULL},
353+ {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(fixed_dma.width), "TransferWidth",
354+ acpi_gbl_dts_decode},
355+};
356+
357+#define ACPI_RS_DUMP_COMMON_SERIAL_BUS \
358+ {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (common_serial_bus.revision_id), "RevisionId", NULL}, \
359+ {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (common_serial_bus.type), "Type", acpi_gbl_sbt_decode}, \
360+ {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (common_serial_bus.producer_consumer), "ProducerConsumer", acpi_gbl_consume_decode}, \
361+ {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (common_serial_bus.slave_mode), "SlaveMode", acpi_gbl_sm_decode}, \
362+ {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (common_serial_bus.type_revision_id), "TypeRevisionId", NULL}, \
363+ {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (common_serial_bus.type_data_length), "TypeDataLength", NULL}, \
364+ {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET (common_serial_bus.resource_source), "ResourceSource", NULL}, \
365+ {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (common_serial_bus.vendor_length), "VendorLength", NULL}, \
366+ {ACPI_RSD_SHORTLISTX,ACPI_RSD_OFFSET (common_serial_bus.vendor_data), "VendorData", NULL},
367+
368+struct acpi_rsdump_info acpi_rs_dump_common_serial_bus[10] = {
369+ {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_common_serial_bus),
370+ "Common Serial Bus", NULL},
371+ ACPI_RS_DUMP_COMMON_SERIAL_BUS
372+};
373+
374+struct acpi_rsdump_info acpi_rs_dump_i2c_serial_bus[13] = {
375+ {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_i2c_serial_bus),
376+ "I2C Serial Bus", NULL},
377+ ACPI_RS_DUMP_COMMON_SERIAL_BUS {ACPI_RSD_1BITFLAG,
378+ ACPI_RSD_OFFSET(i2c_serial_bus.
379+ access_mode),
380+ "AccessMode", acpi_gbl_am_decode},
381+ {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(i2c_serial_bus.connection_speed),
382+ "ConnectionSpeed", NULL},
383+ {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(i2c_serial_bus.slave_address),
384+ "SlaveAddress", NULL},
385+};
386+
387+struct acpi_rsdump_info acpi_rs_dump_spi_serial_bus[17] = {
388+ {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_spi_serial_bus),
389+ "Spi Serial Bus", NULL},
390+ ACPI_RS_DUMP_COMMON_SERIAL_BUS {ACPI_RSD_1BITFLAG,
391+ ACPI_RSD_OFFSET(spi_serial_bus.
392+ wire_mode), "WireMode",
393+ acpi_gbl_wm_decode},
394+ {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(spi_serial_bus.device_polarity),
395+ "DevicePolarity", acpi_gbl_dp_decode},
396+ {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(spi_serial_bus.data_bit_length),
397+ "DataBitLength", NULL},
398+ {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(spi_serial_bus.clock_phase),
399+ "ClockPhase", acpi_gbl_cph_decode},
400+ {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(spi_serial_bus.clock_polarity),
401+ "ClockPolarity", acpi_gbl_cpo_decode},
402+ {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(spi_serial_bus.device_selection),
403+ "DeviceSelection", NULL},
404+ {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(spi_serial_bus.connection_speed),
405+ "ConnectionSpeed", NULL},
406+};
407+
408+struct acpi_rsdump_info acpi_rs_dump_uart_serial_bus[19] = {
409+ {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE(acpi_rs_dump_uart_serial_bus),
410+ "Uart Serial Bus", NULL},
411+ ACPI_RS_DUMP_COMMON_SERIAL_BUS {ACPI_RSD_2BITFLAG,
412+ ACPI_RSD_OFFSET(uart_serial_bus.
413+ flow_control),
414+ "FlowControl", acpi_gbl_fc_decode},
415+ {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET(uart_serial_bus.stop_bits),
416+ "StopBits", acpi_gbl_sb_decode},
417+ {ACPI_RSD_3BITFLAG, ACPI_RSD_OFFSET(uart_serial_bus.data_bits),
418+ "DataBits", acpi_gbl_bpb_decode},
419+ {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET(uart_serial_bus.endian), "Endian",
420+ acpi_gbl_ed_decode},
421+ {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(uart_serial_bus.parity), "Parity",
422+ acpi_gbl_pt_decode},
423+ {ACPI_RSD_UINT8, ACPI_RSD_OFFSET(uart_serial_bus.lines_enabled),
424+ "LinesEnabled", NULL},
425+ {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(uart_serial_bus.rx_fifo_size),
426+ "RxFifoSize", NULL},
427+ {ACPI_RSD_UINT16, ACPI_RSD_OFFSET(uart_serial_bus.tx_fifo_size),
428+ "TxFifoSize", NULL},
429+ {ACPI_RSD_UINT32, ACPI_RSD_OFFSET(uart_serial_bus.default_baud_rate),
430+ "ConnectionSpeed", NULL},
431+};
432+
312433 /*
313434 * Tables used for common address descriptor flag fields
314435 */
@@ -413,7 +534,14 @@ acpi_rs_dump_descriptor(void *resource, struct acpi_rsdump_info *table) · 98 unmodified lines
413534 /* Data items, 8/16/32/64 bit */
414535
415536 case ACPI_RSD_UINT8:
416− acpi_rs_out_integer8(name, ACPI_GET8(target));
537+ if (table->pointer) {
538+ acpi_rs_out_string(name, ACPI_CAST_PTR(char,
539+ table->
540+ pointer
541+ [*target]));
542+ } else {
543+ acpi_rs_out_integer8(name, ACPI_GET8(target));
544+ }
417545 break;
418546
419547 case ACPI_RSD_UINT16:
@@ -444,6 +572,13 @@ acpi_rs_dump_descriptor(void *resource, struct acpi_rsdump_info *table) · 24 unmodified lines
444572 0x03]));
445573 break;
446574
575+ case ACPI_RSD_3BITFLAG:
576+ acpi_rs_out_string(name, ACPI_CAST_PTR(char,
577+ table->
578+ pointer[*target &
579+ 0x07]));
580+ break;
581+
447582 case ACPI_RSD_SHORTLIST:
448583 /*
449584 * Short byte list (single line output) for DMA and IRQ resources
@@ -456,6 +591,20 @@ acpi_rs_dump_descriptor(void *resource, struct acpi_rsdump_info *table) · 6 unmodified lines
456591 }
457592 break;
458593
594+ case ACPI_RSD_SHORTLISTX:
595+ /*
596+ * Short byte list (single line output) for GPIO vendor data
597+ * Note: The list length is obtained from the previous table entry
598+ */
599+ if (previous_target) {
600+ acpi_rs_out_title(name);
601+ acpi_rs_dump_short_byte_list(*previous_target,
602+ *
603+ (ACPI_CAST_INDIRECT_PTR
604+ (u8, target)));
605+ }
606+ break;
607+
459608 case ACPI_RSD_LONGLIST:
460609 /*
461610 * Long byte list for Vendor resource data
@@ -480,6 +629,18 @@ acpi_rs_dump_descriptor(void *resource, struct acpi_rsdump_info *table) · 18 unmodified lines
480629 }
481630 break;
482631
632+ case ACPI_RSD_WORDLIST:
633+ /*
634+ * Word list for GPIO Pin Table
635+ * Note: The list length is obtained from the previous table entry
636+ */
637+ if (previous_target) {
638+ acpi_rs_dump_word_list(*previous_target,
639+ *(ACPI_CAST_INDIRECT_PTR
640+ (u16, target)));
641+ }
642+ break;
643+
483644 case ACPI_RSD_ADDRESS:
484645 /*
485646 * Common flags for all Address resources
@@ -627,14 +788,20 @@ void acpi_rs_dump_resource_list(struct acpi_resource *resource_list) · 141 unmodified lines
627788
628789 /* Dump the resource descriptor */
629790
630− acpi_rs_dump_descriptor(&resource_list->data,
631− acpi_gbl_dump_resource_dispatch[type]);
791+ if (type == ACPI_RESOURCE_TYPE_SERIAL_BUS) {
792+ acpi_rs_dump_descriptor(&resource_list->data,
793+ acpi_gbl_dump_serial_bus_dispatch
794+ [resource_list->data.
795+ common_serial_bus.type]);
796+ } else {
797+ acpi_rs_dump_descriptor(&resource_list->data,
798+ acpi_gbl_dump_resource_dispatch
799+ [type]);
800+ }
632801
633802 /* Point to the next resource structure */
634803
635− resource_list =
636− ACPI_ADD_PTR(struct acpi_resource, resource_list,
637− resource_list->length);
804+ resource_list = ACPI_NEXT_RESOURCE(resource_list);
638805
639806 /* Exit when END_TAG descriptor is reached */
640807
@@ -768,4 +935,13 @@ static void acpi_rs_dump_dword_list(u8 length, u32 * data) · 127 unmodified lines
768935 }
769936 }
770937
938+static void acpi_rs_dump_word_list(u16 length, u16 *data)
939+{
940+ u16 i;
941+
942+ for (i = 0; i < length; i++) {
943+ acpi_os_printf("%25s%2.2X : %4.4X\n", "Word", i, data[i]);
944+ }
945+}
946+
771947 #endif
drivers/acpi/acpica/rsinfo.c+51−7
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -76,7 +76,10 @@ struct acpi_rsconvert_info *acpi_gbl_set_resource_dispatch[] = { · 64 unmodified lines
7676 acpi_rs_convert_address64, /* 0x0D, ACPI_RESOURCE_TYPE_ADDRESS64 */
7777 acpi_rs_convert_ext_address64, /* 0x0E, ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 */
7878 acpi_rs_convert_ext_irq, /* 0x0F, ACPI_RESOURCE_TYPE_EXTENDED_IRQ */
79− acpi_rs_convert_generic_reg /* 0x10, ACPI_RESOURCE_TYPE_GENERIC_REGISTER */
79+ acpi_rs_convert_generic_reg, /* 0x10, ACPI_RESOURCE_TYPE_GENERIC_REGISTER */
80+ acpi_rs_convert_gpio, /* 0x11, ACPI_RESOURCE_TYPE_GPIO */
81+ acpi_rs_convert_fixed_dma, /* 0x12, ACPI_RESOURCE_TYPE_FIXED_DMA */
82+ NULL, /* 0x13, ACPI_RESOURCE_TYPE_SERIAL_BUS - Use subtype table below */
8083 };
8184
8285 /* Dispatch tables for AML-to-resource (Get Resource) conversion functions */
@@ -94,7 +97,7 @@ struct acpi_rsconvert_info *acpi_gbl_get_resource_dispatch[] = { · 11 unmodified lines
9497 acpi_rs_convert_end_dpf, /* 0x07, ACPI_RESOURCE_NAME_END_DEPENDENT */
9598 acpi_rs_convert_io, /* 0x08, ACPI_RESOURCE_NAME_IO */
9699 acpi_rs_convert_fixed_io, /* 0x09, ACPI_RESOURCE_NAME_FIXED_IO */
97− NULL, /* 0x0A, Reserved */
100+ acpi_rs_convert_fixed_dma, /* 0x0A, ACPI_RESOURCE_NAME_FIXED_DMA */
98101 NULL, /* 0x0B, Reserved */
99102 NULL, /* 0x0C, Reserved */
100103 NULL, /* 0x0D, Reserved */
@@ -114,7 +117,19 @@ struct acpi_rsconvert_info *acpi_gbl_get_resource_dispatch[] = { · 13 unmodified lines
114117 acpi_rs_convert_address16, /* 0x08, ACPI_RESOURCE_NAME_ADDRESS16 */
115118 acpi_rs_convert_ext_irq, /* 0x09, ACPI_RESOURCE_NAME_EXTENDED_IRQ */
116119 acpi_rs_convert_address64, /* 0x0A, ACPI_RESOURCE_NAME_ADDRESS64 */
117− acpi_rs_convert_ext_address64 /* 0x0B, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64 */
120+ acpi_rs_convert_ext_address64, /* 0x0B, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64 */
121+ acpi_rs_convert_gpio, /* 0x0C, ACPI_RESOURCE_NAME_GPIO */
122+ NULL, /* 0x0D, Reserved */
123+ NULL, /* 0x0E, ACPI_RESOURCE_NAME_SERIAL_BUS - Use subtype table below */
124+};
125+
126+/* Subtype table for serial_bus -- I2C, SPI, and UART */
127+
128+struct acpi_rsconvert_info *acpi_gbl_convert_resource_serial_bus_dispatch[] = {
129+ NULL,
130+ acpi_rs_convert_i2c_serial_bus,
131+ acpi_rs_convert_spi_serial_bus,
132+ acpi_rs_convert_uart_serial_bus,
118133 };
119134
120135 #ifdef ACPI_FUTURE_USAGE
@@ -140,6 +155,16 @@ struct acpi_rsdump_info *acpi_gbl_dump_resource_dispatch[] = { · 19 unmodified lines
140155 acpi_rs_dump_ext_address64, /* ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 */
141156 acpi_rs_dump_ext_irq, /* ACPI_RESOURCE_TYPE_EXTENDED_IRQ */
142157 acpi_rs_dump_generic_reg, /* ACPI_RESOURCE_TYPE_GENERIC_REGISTER */
158+ acpi_rs_dump_gpio, /* ACPI_RESOURCE_TYPE_GPIO */
159+ acpi_rs_dump_fixed_dma, /* ACPI_RESOURCE_TYPE_FIXED_DMA */
160+ NULL, /* ACPI_RESOURCE_TYPE_SERIAL_BUS */
161+};
162+
163+struct acpi_rsdump_info *acpi_gbl_dump_serial_bus_dispatch[] = {
164+ NULL,
165+ acpi_rs_dump_i2c_serial_bus, /* AML_RESOURCE_I2C_BUS_TYPE */
166+ acpi_rs_dump_spi_serial_bus, /* AML_RESOURCE_SPI_BUS_TYPE */
167+ acpi_rs_dump_uart_serial_bus, /* AML_RESOURCE_UART_BUS_TYPE */
143168 };
144169 #endif
145170
@@ -166,7 +191,10 @@ const u8 acpi_gbl_aml_resource_sizes[] = { · 20 unmodified lines
166191 sizeof(struct aml_resource_address64), /* ACPI_RESOURCE_TYPE_ADDRESS64 */
167192 sizeof(struct aml_resource_extended_address64), /*ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 */
168193 sizeof(struct aml_resource_extended_irq), /* ACPI_RESOURCE_TYPE_EXTENDED_IRQ */
169− sizeof(struct aml_resource_generic_register) /* ACPI_RESOURCE_TYPE_GENERIC_REGISTER */
194+ sizeof(struct aml_resource_generic_register), /* ACPI_RESOURCE_TYPE_GENERIC_REGISTER */
195+ sizeof(struct aml_resource_gpio), /* ACPI_RESOURCE_TYPE_GPIO */
196+ sizeof(struct aml_resource_fixed_dma), /* ACPI_RESOURCE_TYPE_FIXED_DMA */
197+ sizeof(struct aml_resource_common_serialbus), /* ACPI_RESOURCE_TYPE_SERIAL_BUS */
170198 };
171199
172200 const u8 acpi_gbl_resource_struct_sizes[] = {
@@ -182,7 +210,7 @@ const u8 acpi_gbl_resource_struct_sizes[] = { · 9 unmodified lines
182210 ACPI_RS_SIZE_MIN,
183211 ACPI_RS_SIZE(struct acpi_resource_io),
184212 ACPI_RS_SIZE(struct acpi_resource_fixed_io),
185− 0,
213+ ACPI_RS_SIZE(struct acpi_resource_fixed_dma),
186214 0,
187215 0,
188216 0,
@@ -202,5 +230,21 @@ const u8 acpi_gbl_resource_struct_sizes[] = { · 13 unmodified lines
202230 ACPI_RS_SIZE(struct acpi_resource_address16),
203231 ACPI_RS_SIZE(struct acpi_resource_extended_irq),
204232 ACPI_RS_SIZE(struct acpi_resource_address64),
205− ACPI_RS_SIZE(struct acpi_resource_extended_address64)
233+ ACPI_RS_SIZE(struct acpi_resource_extended_address64),
234+ ACPI_RS_SIZE(struct acpi_resource_gpio),
235+ ACPI_RS_SIZE(struct acpi_resource_common_serialbus)
236+};
237+
238+const u8 acpi_gbl_aml_resource_serial_bus_sizes[] = {
239+ 0,
240+ sizeof(struct aml_resource_i2c_serialbus),
241+ sizeof(struct aml_resource_spi_serialbus),
242+ sizeof(struct aml_resource_uart_serialbus),
243+};
244+
245+const u8 acpi_gbl_resource_struct_serial_bus_sizes[] = {
246+ 0,
247+ ACPI_RS_SIZE(struct acpi_resource_i2c_serialbus),
248+ ACPI_RS_SIZE(struct acpi_resource_spi_serialbus),
249+ ACPI_RS_SIZE(struct acpi_resource_uart_serialbus),
206250 };
drivers/acpi/acpica/rsio.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/rsirq.c+32−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -264,3 +264,34 @@ struct acpi_rsconvert_info acpi_rs_convert_dma[6] = { · 252 unmodified lines
264264 AML_OFFSET(dma.dma_channel_mask),
265265 ACPI_RS_OFFSET(data.dma.channel_count)}
266266 };
267+
268+/*******************************************************************************
269+ *
270+ * acpi_rs_convert_fixed_dma
271+ *
272+ ******************************************************************************/
273+
274+struct acpi_rsconvert_info acpi_rs_convert_fixed_dma[4] = {
275+ {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_FIXED_DMA,
276+ ACPI_RS_SIZE(struct acpi_resource_fixed_dma),
277+ ACPI_RSC_TABLE_SIZE(acpi_rs_convert_fixed_dma)},
278+
279+ {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_FIXED_DMA,
280+ sizeof(struct aml_resource_fixed_dma),
281+ 0},
282+
283+ /*
284+ * These fields are contiguous in both the source and destination:
285+ * request_lines
286+ * Channels
287+ */
288+
289+ {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.fixed_dma.request_lines),
290+ AML_OFFSET(fixed_dma.request_lines),
291+ 2},
292+
293+ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.fixed_dma.width),
294+ AML_OFFSET(fixed_dma.width),
295+ 1},
296+
297+};
drivers/acpi/acpica/rslist.c+62−15
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -70,6 +70,8 @@ acpi_rs_convert_aml_to_resources(u8 * aml, · 58 unmodified lines
7070 struct acpi_resource **resource_ptr =
7171 ACPI_CAST_INDIRECT_PTR(struct acpi_resource, context);
7272 struct acpi_resource *resource;
73+ union aml_resource *aml_resource;
74+ struct acpi_rsconvert_info *conversion_table;
7375 acpi_status status;
7476
7577 ACPI_FUNCTION_TRACE(rs_convert_aml_to_resources);
@@ -84,14 +86,37 @@ acpi_rs_convert_aml_to_resources(u8 * aml, · 8 unmodified lines
8486 "Misaligned resource pointer %p", resource));
8587 }
8688
89+ /* Get the appropriate conversion info table */
90+
91+ aml_resource = ACPI_CAST_PTR(union aml_resource, aml);
92+ if (acpi_ut_get_resource_type(aml) == ACPI_RESOURCE_NAME_SERIAL_BUS) {
93+ if (aml_resource->common_serial_bus.type >
94+ AML_RESOURCE_MAX_SERIALBUSTYPE) {
95+ conversion_table = NULL;
96+ } else {
97+ /* This is an I2C, SPI, or UART serial_bus descriptor */
98+
99+ conversion_table =
100+ acpi_gbl_convert_resource_serial_bus_dispatch
101+ [aml_resource->common_serial_bus.type];
102+ }
103+ } else {
104+ conversion_table =
105+ acpi_gbl_get_resource_dispatch[resource_index];
106+ }
107+
108+ if (!conversion_table) {
109+ ACPI_ERROR((AE_INFO,
110+ "Invalid/unsupported resource descriptor: Type 0x%2.2X",
111+ resource_index));
112+ return (AE_AML_INVALID_RESOURCE_TYPE);
113+ }
114+
87115 /* Convert the AML byte stream resource to a local resource struct */
88116
89117 status =
90− acpi_rs_convert_aml_to_resource(resource,
91− ACPI_CAST_PTR(union aml_resource,
92− aml),
93− acpi_gbl_get_resource_dispatch
94− [resource_index]);
118+ acpi_rs_convert_aml_to_resource(resource, aml_resource,
119+ conversion_table);
95120 if (ACPI_FAILURE(status)) {
96121 ACPI_EXCEPTION((AE_INFO, status,
97122 "Could not convert AML resource (Type 0x%X)",
@@ -106,7 +131,7 @@ acpi_rs_convert_aml_to_resources(u8 * aml, · 8 unmodified lines
106131
107132 /* Point to the next structure in the output buffer */
108133
109− *resource_ptr = ACPI_ADD_PTR(void, resource, resource->length);
134+ *resource_ptr = ACPI_NEXT_RESOURCE(resource);
110135 return_ACPI_STATUS(AE_OK);
111136 }
112137
@@ -135,6 +160,7 @@ acpi_rs_convert_resources_to_aml(struct acpi_resource *resource, · 22 unmodified lines
135160 {
136161 u8 *aml = output_buffer;
137162 u8 *end_aml = output_buffer + aml_size_needed;
163+ struct acpi_rsconvert_info *conversion_table;
138164 acpi_status status;
139165
140166 ACPI_FUNCTION_TRACE(rs_convert_resources_to_aml);
@@ -154,11 +180,34 @@ acpi_rs_convert_resources_to_aml(struct acpi_resource *resource, · 13 unmodified lines
154180
155181 /* Perform the conversion */
156182
157− status = acpi_rs_convert_resource_to_aml(resource, ACPI_CAST_PTR(union
158− aml_resource,
159− aml),
160− acpi_gbl_set_resource_dispatch
161− [resource->type]);
183+ if (resource->type == ACPI_RESOURCE_TYPE_SERIAL_BUS) {
184+ if (resource->data.common_serial_bus.type >
185+ AML_RESOURCE_MAX_SERIALBUSTYPE) {
186+ conversion_table = NULL;
187+ } else {
188+ /* This is an I2C, SPI, or UART serial_bus descriptor */
189+
190+ conversion_table =
191+ acpi_gbl_convert_resource_serial_bus_dispatch
192+ [resource->data.common_serial_bus.type];
193+ }
194+ } else {
195+ conversion_table =
196+ acpi_gbl_set_resource_dispatch[resource->type];
197+ }
198+
199+ if (!conversion_table) {
200+ ACPI_ERROR((AE_INFO,
201+ "Invalid/unsupported resource descriptor: Type 0x%2.2X",
202+ resource->type));
203+ return (AE_AML_INVALID_RESOURCE_TYPE);
204+ }
205+
206+ status = acpi_rs_convert_resource_to_aml(resource,
207+ ACPI_CAST_PTR(union
208+ aml_resource,
209+ aml),
210+ conversion_table);
162211 if (ACPI_FAILURE(status)) {
163212 ACPI_EXCEPTION((AE_INFO, status,
164213 "Could not convert resource (type 0x%X) to AML",
@@ -192,9 +241,7 @@ acpi_rs_convert_resources_to_aml(struct acpi_resource *resource, · 27 unmodified lines
192241
193242 /* Point to the next input resource descriptor */
194243
195− resource =
196− ACPI_ADD_PTR(struct acpi_resource, resource,
197− resource->length);
244+ resource = ACPI_NEXT_RESOURCE(resource);
198245 }
199246
200247 /* Completed buffer, but did not find an end_tag resource descriptor */
drivers/acpi/acpica/rsmemory.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/rsmisc.c+263−6
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -83,6 +83,10 @@ acpi_rs_convert_aml_to_resource(struct acpi_resource *resource, · 71 unmodified lines
8383
8484 ACPI_FUNCTION_TRACE(rs_convert_aml_to_resource);
8585
86+ if (!info) {
87+ return_ACPI_STATUS(AE_BAD_PARAMETER);
88+ }
89+
8690 if (((acpi_size) resource) & 0x3) {
8791
8892 /* Each internal resource struct is expected to be 32-bit aligned */
@@ -101,7 +105,6 @@ acpi_rs_convert_aml_to_resource(struct acpi_resource *resource, · 12 unmodified lines
101105 * table length (# of table entries)
102106 */
103107 count = INIT_TABLE_LENGTH(info);
104−
105108 while (count) {
106109 /*
107110 * Source is the external AML byte stream buffer,
@@ -145,6 +148,14 @@ acpi_rs_convert_aml_to_resource(struct acpi_resource *resource, · 37 unmodified lines
145148 ((ACPI_GET8(source) >> info->value) & 0x03);
146149 break;
147150
151+ case ACPI_RSC_3BITFLAG:
152+ /*
153+ * Mask and shift the flag bits
154+ */
155+ ACPI_SET8(destination) = (u8)
156+ ((ACPI_GET8(source) >> info->value) & 0x07);
157+ break;
158+
148159 case ACPI_RSC_COUNT:
149160
150161 item_count = ACPI_GET8(source);
@@ -163,6 +174,69 @@ acpi_rs_convert_aml_to_resource(struct acpi_resource *resource, · 12 unmodified lines
163174 (info->value * (item_count - 1));
164175 break;
165176
177+ case ACPI_RSC_COUNT_GPIO_PIN:
178+
179+ target = ACPI_ADD_PTR(void, aml, info->value);
180+ item_count = ACPI_GET16(target) - ACPI_GET16(source);
181+
182+ resource->length = resource->length + item_count;
183+ item_count = item_count / 2;
184+ ACPI_SET16(destination) = item_count;
185+ break;
186+
187+ case ACPI_RSC_COUNT_GPIO_VEN:
188+
189+ item_count = ACPI_GET8(source);
190+ ACPI_SET8(destination) = (u8)item_count;
191+
192+ resource->length = resource->length +
193+ (info->value * item_count);
194+ break;
195+
196+ case ACPI_RSC_COUNT_GPIO_RES:
197+
198+ /*
199+ * Vendor data is optional (length/offset may both be zero)
200+ * Examine vendor data length field first
201+ */
202+ target = ACPI_ADD_PTR(void, aml, (info->value + 2));
203+ if (ACPI_GET16(target)) {
204+
205+ /* Use vendor offset to get resource source length */
206+
207+ target = ACPI_ADD_PTR(void, aml, info->value);
208+ item_count =
209+ ACPI_GET16(target) - ACPI_GET16(source);
210+ } else {
211+ /* No vendor data to worry about */
212+
213+ item_count = aml->large_header.resource_length +
214+ sizeof(struct aml_resource_large_header) -
215+ ACPI_GET16(source);
216+ }
217+
218+ resource->length = resource->length + item_count;
219+ ACPI_SET16(destination) = item_count;
220+ break;
221+
222+ case ACPI_RSC_COUNT_SERIAL_VEN:
223+
224+ item_count = ACPI_GET16(source) - info->value;
225+
226+ resource->length = resource->length + item_count;
227+ ACPI_SET16(destination) = item_count;
228+ break;
229+
230+ case ACPI_RSC_COUNT_SERIAL_RES:
231+
232+ item_count = (aml_resource_length +
233+ sizeof(struct aml_resource_large_header))
234+ - ACPI_GET16(source) - info->value;
235+
236+ resource->length = resource->length + item_count;
237+ ACPI_SET16(destination) = item_count;
238+ break;
239+
166240 case ACPI_RSC_LENGTH:
167241
168242 resource->length = resource->length + info->value;
@@ -183,6 +257,72 @@ acpi_rs_convert_aml_to_resource(struct acpi_resource *resource, · 14 unmodified lines
183257 info->opcode);
184258 break;
185259
260+ case ACPI_RSC_MOVE_GPIO_PIN:
261+
262+ /* Generate and set the PIN data pointer */
263+
264+ target = (char *)ACPI_ADD_PTR(void, resource,
265+ (resource->length -
266+ item_count * 2));
267+ *(u16 **)destination = ACPI_CAST_PTR(u16, target);
268+
269+ /* Copy the PIN data */
270+
271+ source = ACPI_ADD_PTR(void, aml, ACPI_GET16(source));
272+ acpi_rs_move_data(target, source, item_count,
273+ info->opcode);
274+ break;
275+
276+ case ACPI_RSC_MOVE_GPIO_RES:
277+
278+ /* Generate and set the resource_source string pointer */
279+
280+ target = (char *)ACPI_ADD_PTR(void, resource,
281+ (resource->length -
282+ item_count));
283+ *(u8 **)destination = ACPI_CAST_PTR(u8, target);
284+
285+ /* Copy the resource_source string */
286+
287+ source = ACPI_ADD_PTR(void, aml, ACPI_GET16(source));
288+ acpi_rs_move_data(target, source, item_count,
289+ info->opcode);
290+ break;
291+
292+ case ACPI_RSC_MOVE_SERIAL_VEN:
293+
294+ /* Generate and set the Vendor Data pointer */
295+
296+ target = (char *)ACPI_ADD_PTR(void, resource,
297+ (resource->length -
298+ item_count));
299+ *(u8 **)destination = ACPI_CAST_PTR(u8, target);
300+
301+ /* Copy the Vendor Data */
302+
303+ source = ACPI_ADD_PTR(void, aml, info->value);
304+ acpi_rs_move_data(target, source, item_count,
305+ info->opcode);
306+ break;
307+
308+ case ACPI_RSC_MOVE_SERIAL_RES:
309+
310+ /* Generate and set the resource_source string pointer */
311+
312+ target = (char *)ACPI_ADD_PTR(void, resource,
313+ (resource->length -
314+ item_count));
315+ *(u8 **)destination = ACPI_CAST_PTR(u8, target);
316+
317+ /* Copy the resource_source string */
318+
319+ source =
320+ ACPI_ADD_PTR(void, aml,
321+ (ACPI_GET16(source) + info->value));
322+ acpi_rs_move_data(target, source, item_count,
323+ info->opcode);
324+ break;
325+
186326 case ACPI_RSC_SET8:
187327
188328 ACPI_MEMSET(destination, info->aml_offset, info->value);
@@ -219,13 +359,18 @@ acpi_rs_convert_aml_to_resource(struct acpi_resource *resource, · 30 unmodified lines
219359 * Optional resource_source (Index and String). This is the more
220360 * complicated case used by the Interrupt() macro
221361 */
222− target =
223− ACPI_ADD_PTR(char, resource,
224− info->aml_offset + (item_count * 4));
362+ target = ACPI_ADD_PTR(char, resource,
363+ info->aml_offset +
364+ (item_count * 4));
225365
226366 resource->length +=
227367 acpi_rs_get_resource_source(aml_resource_length,
228− (acpi_rs_length) (((item_count - 1) * sizeof(u32)) + info->value), destination, aml, target);
368+ (acpi_rs_length)
369+ (((item_count -
370+ 1) * sizeof(u32)) +
371+ info->value),
372+ destination, aml,
373+ target);
229374 break;
230375
231376 case ACPI_RSC_BITMASK:
@@ -327,6 +472,7 @@ acpi_rs_convert_resource_to_aml(struct acpi_resource *resource, · 95 unmodified lines
327472 {
328473 void *source = NULL;
329474 void *destination;
475+ char *target;
330476 acpi_rsdesc_size aml_length = 0;
331477 u8 count;
332478 u16 temp16 = 0;
@@ -334,6 +480,10 @@ acpi_rs_convert_resource_to_aml(struct acpi_resource *resource, · 1 unmodified line
334480
335481 ACPI_FUNCTION_TRACE(rs_convert_resource_to_aml);
336482
483+ if (!info) {
484+ return_ACPI_STATUS(AE_BAD_PARAMETER);
485+ }
486+
337487 /*
338488 * First table entry must be ACPI_RSC_INITxxx and must contain the
339489 * table length (# of table entries)
@@ -383,6 +533,14 @@ acpi_rs_convert_resource_to_aml(struct acpi_resource *resource, · 43 unmodified lines
383533 ((ACPI_GET8(source) & 0x03) << info->value);
384534 break;
385535
536+ case ACPI_RSC_3BITFLAG:
537+ /*
538+ * Mask and shift the flag bits
539+ */
540+ ACPI_SET8(destination) |= (u8)
541+ ((ACPI_GET8(source) & 0x07) << info->value);
542+ break;
543+
386544 case ACPI_RSC_COUNT:
387545
388546 item_count = ACPI_GET8(source);
@@ -400,6 +558,63 @@ acpi_rs_convert_resource_to_aml(struct acpi_resource *resource, · 11 unmodified lines
400558 acpi_rs_set_resource_length(aml_length, aml);
401559 break;
402560
561+ case ACPI_RSC_COUNT_GPIO_PIN:
562+
563+ item_count = ACPI_GET16(source);
564+ ACPI_SET16(destination) = (u16)aml_length;
565+
566+ aml_length = (u16)(aml_length + item_count * 2);
567+ target = ACPI_ADD_PTR(void, aml, info->value);
568+ ACPI_SET16(target) = (u16)aml_length;
569+ acpi_rs_set_resource_length(aml_length, aml);
570+ break;
571+
572+ case ACPI_RSC_COUNT_GPIO_VEN:
573+
574+ item_count = ACPI_GET16(source);
575+ ACPI_SET16(destination) = (u16)item_count;
576+
577+ aml_length =
578+ (u16)(aml_length + (info->value * item_count));
579+ acpi_rs_set_resource_length(aml_length, aml);
580+ break;
581+
582+ case ACPI_RSC_COUNT_GPIO_RES:
583+
584+ /* Set resource source string length */
585+
586+ item_count = ACPI_GET16(source);
587+ ACPI_SET16(destination) = (u16)aml_length;
588+
589+ /* Compute offset for the Vendor Data */
590+
591+ aml_length = (u16)(aml_length + item_count);
592+ target = ACPI_ADD_PTR(void, aml, info->value);
593+
594+ /* Set vendor offset only if there is vendor data */
595+
596+ if (resource->data.gpio.vendor_length) {
597+ ACPI_SET16(target) = (u16)aml_length;
598+ }
599+
600+ acpi_rs_set_resource_length(aml_length, aml);
601+ break;
602+
603+ case ACPI_RSC_COUNT_SERIAL_VEN:
604+
605+ item_count = ACPI_GET16(source);
606+ ACPI_SET16(destination) = item_count + info->value;
607+ aml_length = (u16)(aml_length + item_count);
608+ acpi_rs_set_resource_length(aml_length, aml);
609+ break;
610+
611+ case ACPI_RSC_COUNT_SERIAL_RES:
612+
613+ item_count = ACPI_GET16(source);
614+ aml_length = (u16)(aml_length + item_count);
615+ acpi_rs_set_resource_length(aml_length, aml);
616+ break;
617+
403618 case ACPI_RSC_LENGTH:
404619
405620 acpi_rs_set_resource_length(info->value, aml);
@@ -417,6 +632,48 @@ acpi_rs_convert_resource_to_aml(struct acpi_resource *resource, · 11 unmodified lines
417632 info->opcode);
418633 break;
419634
635+ case ACPI_RSC_MOVE_GPIO_PIN:
636+
637+ destination = (char *)ACPI_ADD_PTR(void, aml,
638+ ACPI_GET16
639+ (destination));
640+ source = *(u16 **)source;
641+ acpi_rs_move_data(destination, source, item_count,
642+ info->opcode);
643+ break;
644+
645+ case ACPI_RSC_MOVE_GPIO_RES:
646+
647+ /* Used for both resource_source string and vendor_data */
648+
649+ destination = (char *)ACPI_ADD_PTR(void, aml,
650+ ACPI_GET16
651+ (destination));
652+ source = *(u8 **)source;
653+ acpi_rs_move_data(destination, source, item_count,
654+ info->opcode);
655+ break;
656+
657+ case ACPI_RSC_MOVE_SERIAL_VEN:
658+
659+ destination = (char *)ACPI_ADD_PTR(void, aml,
660+ (aml_length -
661+ item_count));
662+ source = *(u8 **)source;
663+ acpi_rs_move_data(destination, source, item_count,
664+ info->opcode);
665+ break;
666+
667+ case ACPI_RSC_MOVE_SERIAL_RES:
668+
669+ destination = (char *)ACPI_ADD_PTR(void, aml,
670+ (aml_length -
671+ item_count));
672+ source = *(u8 **)source;
673+ acpi_rs_move_data(destination, source, item_count,
674+ info->opcode);
675+ break;
676+
420677 case ACPI_RSC_ADDRESS:
421678
422679 /* Set the Resource Type, General Flags, and Type-Specific Flags */
drivers/acpi/acpica/rsserial.c+441−0
@@ -0,0 +1,441 @@
1+/*******************************************************************************
2+ *
3+ * Module Name: rsserial - GPIO/serial_bus resource descriptors
4+ *
5+ ******************************************************************************/
6+
7+/*
8+ * Copyright (C) 2000 - 2012, Intel Corp.
9+ * All rights reserved.
10+ *
11+ * Redistribution and use in source and binary forms, with or without
12+ * modification, are permitted provided that the following conditions
13+ * are met:
14+ * 1. Redistributions of source code must retain the above copyright
15+ * notice, this list of conditions, and the following disclaimer,
16+ * without modification.
17+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18+ * substantially similar to the "NO WARRANTY" disclaimer below
19+ * ("Disclaimer") and any redistribution must be conditioned upon
20+ * including a substantially similar Disclaimer requirement for further
21+ * binary redistribution.
22+ * 3. Neither the names of the above-listed copyright holders nor the names
23+ * of any contributors may be used to endorse or promote products derived
24+ * from this software without specific prior written permission.
25+ *
26+ * Alternatively, this software may be distributed under the terms of the
27+ * GNU General Public License ("GPL") version 2 as published by the Free
28+ * Software Foundation.
29+ *
30+ * NO WARRANTY
31+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35+ * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41+ * POSSIBILITY OF SUCH DAMAGES.
42+ */
43+
44+#include <acpi/acpi.h>
45+#include "accommon.h"
46+#include "acresrc.h"
47+
48+#define _COMPONENT ACPI_RESOURCES
49+ACPI_MODULE_NAME("rsserial")
50+
51+/*******************************************************************************
52+ *
53+ * acpi_rs_convert_gpio
54+ *
55+ ******************************************************************************/
56+struct acpi_rsconvert_info acpi_rs_convert_gpio[17] = {
57+ {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_GPIO,
58+ ACPI_RS_SIZE(struct acpi_resource_gpio),
59+ ACPI_RSC_TABLE_SIZE(acpi_rs_convert_gpio)},
60+
61+ {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_GPIO,
62+ sizeof(struct aml_resource_gpio),
63+ 0},
64+
65+ /*
66+ * These fields are contiguous in both the source and destination:
67+ * revision_id
68+ * connection_type
69+ */
70+ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.gpio.revision_id),
71+ AML_OFFSET(gpio.revision_id),
72+ 2},
73+
74+ {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.gpio.producer_consumer),
75+ AML_OFFSET(gpio.flags),
76+ 0},
77+
78+ {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.gpio.sharable),
79+ AML_OFFSET(gpio.int_flags),
80+ 3},
81+
82+ {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.gpio.io_restriction),
83+ AML_OFFSET(gpio.int_flags),
84+ 0},
85+
86+ {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.gpio.triggering),
87+ AML_OFFSET(gpio.int_flags),
88+ 0},
89+
90+ {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.gpio.polarity),
91+ AML_OFFSET(gpio.int_flags),
92+ 1},
93+
94+ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.gpio.pin_config),
95+ AML_OFFSET(gpio.pin_config),
96+ 1},
97+
98+ /*
99+ * These fields are contiguous in both the source and destination:
100+ * drive_strength
101+ * debounce_timeout
102+ */
103+ {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.gpio.drive_strength),
104+ AML_OFFSET(gpio.drive_strength),
105+ 2},
106+
107+ /* Pin Table */
108+
109+ {ACPI_RSC_COUNT_GPIO_PIN, ACPI_RS_OFFSET(data.gpio.pin_table_length),
110+ AML_OFFSET(gpio.pin_table_offset),
111+ AML_OFFSET(gpio.res_source_offset)},
112+
113+ {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET(data.gpio.pin_table),
114+ AML_OFFSET(gpio.pin_table_offset),
115+ 0},
116+
117+ /* Resource Source */
118+
119+ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.gpio.resource_source.index),
120+ AML_OFFSET(gpio.res_source_index),
121+ 1},
122+
123+ {ACPI_RSC_COUNT_GPIO_RES,
124+ ACPI_RS_OFFSET(data.gpio.resource_source.string_length),
125+ AML_OFFSET(gpio.res_source_offset),
126+ AML_OFFSET(gpio.vendor_offset)},
127+
128+ {ACPI_RSC_MOVE_GPIO_RES,
129+ ACPI_RS_OFFSET(data.gpio.resource_source.string_ptr),
130+ AML_OFFSET(gpio.res_source_offset),
131+ 0},
132+
133+ /* Vendor Data */
134+
135+ {ACPI_RSC_COUNT_GPIO_VEN, ACPI_RS_OFFSET(data.gpio.vendor_length),
136+ AML_OFFSET(gpio.vendor_length),
137+ 1},
138+
139+ {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET(data.gpio.vendor_data),
140+ AML_OFFSET(gpio.vendor_offset),
141+ 0},
142+};
143+
144+/*******************************************************************************
145+ *
146+ * acpi_rs_convert_i2c_serial_bus
147+ *
148+ ******************************************************************************/
149+
150+struct acpi_rsconvert_info acpi_rs_convert_i2c_serial_bus[16] = {
151+ {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_SERIAL_BUS,
152+ ACPI_RS_SIZE(struct acpi_resource_i2c_serialbus),
153+ ACPI_RSC_TABLE_SIZE(acpi_rs_convert_i2c_serial_bus)},
154+
155+ {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
156+ sizeof(struct aml_resource_i2c_serialbus),
157+ 0},
158+
159+ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id),
160+ AML_OFFSET(common_serial_bus.revision_id),
161+ 1},
162+
163+ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.type),
164+ AML_OFFSET(common_serial_bus.type),
165+ 1},
166+
167+ {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.common_serial_bus.slave_mode),
168+ AML_OFFSET(common_serial_bus.flags),
169+ 0},
170+
171+ {ACPI_RSC_1BITFLAG,
172+ ACPI_RS_OFFSET(data.common_serial_bus.producer_consumer),
173+ AML_OFFSET(common_serial_bus.flags),
174+ 1},
175+
176+ {ACPI_RSC_MOVE8,
177+ ACPI_RS_OFFSET(data.common_serial_bus.type_revision_id),
178+ AML_OFFSET(common_serial_bus.type_revision_id),
179+ 1},
180+
181+ {ACPI_RSC_MOVE16,
182+ ACPI_RS_OFFSET(data.common_serial_bus.type_data_length),
183+ AML_OFFSET(common_serial_bus.type_data_length),
184+ 1},
185+
186+ /* Vendor data */
187+
188+ {ACPI_RSC_COUNT_SERIAL_VEN,
189+ ACPI_RS_OFFSET(data.common_serial_bus.vendor_length),
190+ AML_OFFSET(common_serial_bus.type_data_length),
191+ AML_RESOURCE_I2C_MIN_DATA_LEN},
192+
193+ {ACPI_RSC_MOVE_SERIAL_VEN,
194+ ACPI_RS_OFFSET(data.common_serial_bus.vendor_data),
195+ 0,
196+ sizeof(struct aml_resource_i2c_serialbus)},
197+
198+ /* Resource Source */
199+
200+ {ACPI_RSC_MOVE8,
201+ ACPI_RS_OFFSET(data.common_serial_bus.resource_source.index),
202+ AML_OFFSET(common_serial_bus.res_source_index),
203+ 1},
204+
205+ {ACPI_RSC_COUNT_SERIAL_RES,
206+ ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_length),
207+ AML_OFFSET(common_serial_bus.type_data_length),
208+ sizeof(struct aml_resource_common_serialbus)},
209+
210+ {ACPI_RSC_MOVE_SERIAL_RES,
211+ ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_ptr),
212+ AML_OFFSET(common_serial_bus.type_data_length),
213+ sizeof(struct aml_resource_common_serialbus)},
214+
215+ /* I2C bus type specific */
216+
217+ {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.i2c_serial_bus.access_mode),
218+ AML_OFFSET(i2c_serial_bus.type_specific_flags),
219+ 0},
220+
221+ {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.i2c_serial_bus.connection_speed),
222+ AML_OFFSET(i2c_serial_bus.connection_speed),
223+ 1},
224+
225+ {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.i2c_serial_bus.slave_address),
226+ AML_OFFSET(i2c_serial_bus.slave_address),
227+ 1},
228+};
229+
230+/*******************************************************************************
231+ *
232+ * acpi_rs_convert_spi_serial_bus
233+ *
234+ ******************************************************************************/
235+
236+struct acpi_rsconvert_info acpi_rs_convert_spi_serial_bus[20] = {
237+ {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_SERIAL_BUS,
238+ ACPI_RS_SIZE(struct acpi_resource_spi_serialbus),
239+ ACPI_RSC_TABLE_SIZE(acpi_rs_convert_spi_serial_bus)},
240+
241+ {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
242+ sizeof(struct aml_resource_spi_serialbus),
243+ 0},
244+
245+ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id),
246+ AML_OFFSET(common_serial_bus.revision_id),
247+ 1},
248+
249+ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.type),
250+ AML_OFFSET(common_serial_bus.type),
251+ 1},
252+
253+ {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.common_serial_bus.slave_mode),
254+ AML_OFFSET(common_serial_bus.flags),
255+ 0},
256+
257+ {ACPI_RSC_1BITFLAG,
258+ ACPI_RS_OFFSET(data.common_serial_bus.producer_consumer),
259+ AML_OFFSET(common_serial_bus.flags),
260+ 1},
261+
262+ {ACPI_RSC_MOVE8,
263+ ACPI_RS_OFFSET(data.common_serial_bus.type_revision_id),
264+ AML_OFFSET(common_serial_bus.type_revision_id),
265+ 1},
266+
267+ {ACPI_RSC_MOVE16,
268+ ACPI_RS_OFFSET(data.common_serial_bus.type_data_length),
269+ AML_OFFSET(common_serial_bus.type_data_length),
270+ 1},
271+
272+ /* Vendor data */
273+
274+ {ACPI_RSC_COUNT_SERIAL_VEN,
275+ ACPI_RS_OFFSET(data.common_serial_bus.vendor_length),
276+ AML_OFFSET(common_serial_bus.type_data_length),
277+ AML_RESOURCE_SPI_MIN_DATA_LEN},
278+
279+ {ACPI_RSC_MOVE_SERIAL_VEN,
280+ ACPI_RS_OFFSET(data.common_serial_bus.vendor_data),
281+ 0,
282+ sizeof(struct aml_resource_spi_serialbus)},
283+
284+ /* Resource Source */
285+
286+ {ACPI_RSC_MOVE8,
287+ ACPI_RS_OFFSET(data.common_serial_bus.resource_source.index),
288+ AML_OFFSET(common_serial_bus.res_source_index),
289+ 1},
290+
291+ {ACPI_RSC_COUNT_SERIAL_RES,
292+ ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_length),
293+ AML_OFFSET(common_serial_bus.type_data_length),
294+ sizeof(struct aml_resource_common_serialbus)},
295+
296+ {ACPI_RSC_MOVE_SERIAL_RES,
297+ ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_ptr),
298+ AML_OFFSET(common_serial_bus.type_data_length),
299+ sizeof(struct aml_resource_common_serialbus)},
300+
301+ /* Spi bus type specific */
302+
303+ {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.spi_serial_bus.wire_mode),
304+ AML_OFFSET(spi_serial_bus.type_specific_flags),
305+ 0},
306+
307+ {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.spi_serial_bus.device_polarity),
308+ AML_OFFSET(spi_serial_bus.type_specific_flags),
309+ 1},
310+
311+ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.spi_serial_bus.data_bit_length),
312+ AML_OFFSET(spi_serial_bus.data_bit_length),
313+ 1},
314+
315+ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.spi_serial_bus.clock_phase),
316+ AML_OFFSET(spi_serial_bus.clock_phase),
317+ 1},
318+
319+ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.spi_serial_bus.clock_polarity),
320+ AML_OFFSET(spi_serial_bus.clock_polarity),
321+ 1},
322+
323+ {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.spi_serial_bus.device_selection),
324+ AML_OFFSET(spi_serial_bus.device_selection),
325+ 1},
326+
327+ {ACPI_RSC_MOVE32, ACPI_RS_OFFSET(data.spi_serial_bus.connection_speed),
328+ AML_OFFSET(spi_serial_bus.connection_speed),
329+ 1},
330+};
331+
332+/*******************************************************************************
333+ *
334+ * acpi_rs_convert_uart_serial_bus
335+ *
336+ ******************************************************************************/
337+
338+struct acpi_rsconvert_info acpi_rs_convert_uart_serial_bus[22] = {
339+ {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_SERIAL_BUS,
340+ ACPI_RS_SIZE(struct acpi_resource_uart_serialbus),
341+ ACPI_RSC_TABLE_SIZE(acpi_rs_convert_uart_serial_bus)},
342+
343+ {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS,
344+ sizeof(struct aml_resource_uart_serialbus),
345+ 0},
346+
347+ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.revision_id),
348+ AML_OFFSET(common_serial_bus.revision_id),
349+ 1},
350+
351+ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.common_serial_bus.type),
352+ AML_OFFSET(common_serial_bus.type),
353+ 1},
354+
355+ {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.common_serial_bus.slave_mode),
356+ AML_OFFSET(common_serial_bus.flags),
357+ 0},
358+
359+ {ACPI_RSC_1BITFLAG,
360+ ACPI_RS_OFFSET(data.common_serial_bus.producer_consumer),
361+ AML_OFFSET(common_serial_bus.flags),
362+ 1},
363+
364+ {ACPI_RSC_MOVE8,
365+ ACPI_RS_OFFSET(data.common_serial_bus.type_revision_id),
366+ AML_OFFSET(common_serial_bus.type_revision_id),
367+ 1},
368+
369+ {ACPI_RSC_MOVE16,
370+ ACPI_RS_OFFSET(data.common_serial_bus.type_data_length),
371+ AML_OFFSET(common_serial_bus.type_data_length),
372+ 1},
373+
374+ /* Vendor data */
375+
376+ {ACPI_RSC_COUNT_SERIAL_VEN,
377+ ACPI_RS_OFFSET(data.common_serial_bus.vendor_length),
378+ AML_OFFSET(common_serial_bus.type_data_length),
379+ AML_RESOURCE_UART_MIN_DATA_LEN},
380+
381+ {ACPI_RSC_MOVE_SERIAL_VEN,
382+ ACPI_RS_OFFSET(data.common_serial_bus.vendor_data),
383+ 0,
384+ sizeof(struct aml_resource_uart_serialbus)},
385+
386+ /* Resource Source */
387+
388+ {ACPI_RSC_MOVE8,
389+ ACPI_RS_OFFSET(data.common_serial_bus.resource_source.index),
390+ AML_OFFSET(common_serial_bus.res_source_index),
391+ 1},
392+
393+ {ACPI_RSC_COUNT_SERIAL_RES,
394+ ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_length),
395+ AML_OFFSET(common_serial_bus.type_data_length),
396+ sizeof(struct aml_resource_common_serialbus)},
397+
398+ {ACPI_RSC_MOVE_SERIAL_RES,
399+ ACPI_RS_OFFSET(data.common_serial_bus.resource_source.string_ptr),
400+ AML_OFFSET(common_serial_bus.type_data_length),
401+ sizeof(struct aml_resource_common_serialbus)},
402+
403+ /* Uart bus type specific */
404+
405+ {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.flow_control),
406+ AML_OFFSET(uart_serial_bus.type_specific_flags),
407+ 0},
408+
409+ {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.stop_bits),
410+ AML_OFFSET(uart_serial_bus.type_specific_flags),
411+ 2},
412+
413+ {ACPI_RSC_3BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.data_bits),
414+ AML_OFFSET(uart_serial_bus.type_specific_flags),
415+ 4},
416+
417+ {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET(data.uart_serial_bus.endian),
418+ AML_OFFSET(uart_serial_bus.type_specific_flags),
419+ 7},
420+
421+ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.uart_serial_bus.parity),
422+ AML_OFFSET(uart_serial_bus.parity),
423+ 1},
424+
425+ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET(data.uart_serial_bus.lines_enabled),
426+ AML_OFFSET(uart_serial_bus.lines_enabled),
427+ 1},
428+
429+ {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.uart_serial_bus.rx_fifo_size),
430+ AML_OFFSET(uart_serial_bus.rx_fifo_size),
431+ 1},
432+
433+ {ACPI_RSC_MOVE16, ACPI_RS_OFFSET(data.uart_serial_bus.tx_fifo_size),
434+ AML_OFFSET(uart_serial_bus.tx_fifo_size),
435+ 1},
436+
437+ {ACPI_RSC_MOVE32,
438+ ACPI_RS_OFFSET(data.uart_serial_bus.default_baud_rate),
439+ AML_OFFSET(uart_serial_bus.default_baud_rate),
440+ 1},
441+};
drivers/acpi/acpica/rsutils.c+55−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -144,6 +144,9 @@ acpi_rs_move_data(void *destination, void *source, u16 item_count, u8 move_type) · 132 unmodified lines
144144 * since there are no alignment or endian issues
145145 */
146146 case ACPI_RSC_MOVE8:
147+ case ACPI_RSC_MOVE_GPIO_RES:
148+ case ACPI_RSC_MOVE_SERIAL_VEN:
149+ case ACPI_RSC_MOVE_SERIAL_RES:
147150 ACPI_MEMCPY(destination, source, item_count);
148151 return;
149152
@@ -153,6 +156,7 @@ acpi_rs_move_data(void *destination, void *source, u16 item_count, u8 move_type) · 3 unmodified lines
153156 * misaligned memory transfers
154157 */
155158 case ACPI_RSC_MOVE16:
159+ case ACPI_RSC_MOVE_GPIO_PIN:
156160 ACPI_MOVE_16_TO_16(&ACPI_CAST_PTR(u16, destination)[i],
157161 &ACPI_CAST_PTR(u16, source)[i]);
158162 break;
@@ -588,6 +592,56 @@ acpi_rs_get_prs_method_data(struct acpi_namespace_node *node, · 429 unmodified lines
588592 }
589593 #endif /* ACPI_FUTURE_USAGE */
590594
595+/*******************************************************************************
596+ *
597+ * FUNCTION: acpi_rs_get_aei_method_data
598+ *
599+ * PARAMETERS: Node - Device node
600+ * ret_buffer - Pointer to a buffer structure for the
601+ * results
602+ *
603+ * RETURN: Status
604+ *
605+ * DESCRIPTION: This function is called to get the _AEI value of an object
606+ * contained in an object specified by the handle passed in
607+ *
608+ * If the function fails an appropriate status will be returned
609+ * and the contents of the callers buffer is undefined.
610+ *
611+ ******************************************************************************/
612+
613+acpi_status
614+acpi_rs_get_aei_method_data(struct acpi_namespace_node *node,
615+ struct acpi_buffer *ret_buffer)
616+{
617+ union acpi_operand_object *obj_desc;
618+ acpi_status status;
619+
620+ ACPI_FUNCTION_TRACE(rs_get_aei_method_data);
621+
622+ /* Parameters guaranteed valid by caller */
623+
624+ /* Execute the method, no parameters */
625+
626+ status = acpi_ut_evaluate_object(node, METHOD_NAME__AEI,
627+ ACPI_BTYPE_BUFFER, &obj_desc);
628+ if (ACPI_FAILURE(status)) {
629+ return_ACPI_STATUS(status);
630+ }
631+
632+ /*
633+ * Make the call to create a resource linked list from the
634+ * byte stream buffer that comes back from the _CRS method
635+ * execution.
636+ */
637+ status = acpi_rs_create_resource_list(obj_desc, ret_buffer);
638+
639+ /* On exit, we must delete the object returned by evaluate_object */
640+
641+ acpi_ut_remove_reference(obj_desc);
642+ return_ACPI_STATUS(status);
643+}
644+
591645 /*******************************************************************************
592646 *
593647 * FUNCTION: acpi_rs_get_method_data
drivers/acpi/acpica/rsxface.c+47−5
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -307,6 +307,46 @@ acpi_set_current_resources(acpi_handle device_handle, · 295 unmodified lines
307307
308308 ACPI_EXPORT_SYMBOL(acpi_set_current_resources)
309309
310+/*******************************************************************************
311+ *
312+ * FUNCTION: acpi_get_event_resources
313+ *
314+ * PARAMETERS: device_handle - Handle to the device object for the
315+ * device we are getting resources
316+ * in_buffer - Pointer to a buffer containing the
317+ * resources to be set for the device
318+ *
319+ * RETURN: Status
320+ *
321+ * DESCRIPTION: This function is called to get the event resources for a
322+ * specific device. The caller must first acquire a handle for
323+ * the desired device. The resource data is passed to the routine
324+ * the buffer pointed to by the in_buffer variable. Uses the
325+ * _AEI method.
326+ *
327+ ******************************************************************************/
328+acpi_status
329+acpi_get_event_resources(acpi_handle device_handle,
330+ struct acpi_buffer *ret_buffer)
331+{
332+ acpi_status status;
333+ struct acpi_namespace_node *node;
334+
335+ ACPI_FUNCTION_TRACE(acpi_get_event_resources);
336+
337+ /* Validate parameters then dispatch to internal routine */
338+
339+ status = acpi_rs_validate_parameters(device_handle, ret_buffer, &node);
340+ if (ACPI_FAILURE(status)) {
341+ return_ACPI_STATUS(status);
342+ }
343+
344+ status = acpi_rs_get_aei_method_data(node, ret_buffer);
345+ return_ACPI_STATUS(status);
346+}
347+
348+ACPI_EXPORT_SYMBOL(acpi_get_event_resources)
349+
310350 /******************************************************************************
311351 *
312352 * FUNCTION: acpi_resource_to_address64
@@ -486,8 +526,9 @@ acpi_rs_match_vendor_resource(struct acpi_resource *resource, void *context) · 173 unmodified lines
486526 *
487527 * PARAMETERS: device_handle - Handle to the device object for the
488528 * device we are querying
489− * Name - Method name of the resources we want
490− * (METHOD_NAME__CRS or METHOD_NAME__PRS)
529+ * Name - Method name of the resources we want.
530+ * (METHOD_NAME__CRS, METHOD_NAME__PRS, or
531+ * METHOD_NAME__AEI)
491532 * user_function - Called for each resource
492533 * Context - Passed to user_function
493534 *
@@ -514,11 +555,12 @@ acpi_walk_resources(acpi_handle device_handle, · 20 unmodified lines
514555
515556 if (!device_handle || !user_function || !name ||
516557 (!ACPI_COMPARE_NAME(name, METHOD_NAME__CRS) &&
517− !ACPI_COMPARE_NAME(name, METHOD_NAME__PRS))) {
558+ !ACPI_COMPARE_NAME(name, METHOD_NAME__PRS) &&
559+ !ACPI_COMPARE_NAME(name, METHOD_NAME__AEI))) {
518560 return_ACPI_STATUS(AE_BAD_PARAMETER);
519561 }
520562
521− /* Get the _CRS or _PRS resource list */
563+ /* Get the _CRS/_PRS/_AEI resource list */
522564
523565 buffer.length = ACPI_ALLOCATE_LOCAL_BUFFER;
524566 status = acpi_rs_get_method_data(device_handle, name, &buffer);
drivers/acpi/acpica/tbfadt.c+30−11
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -63,14 +63,15 @@ static void acpi_tb_setup_fadt_registers(void); · 51 unmodified lines
6363
6464 typedef struct acpi_fadt_info {
6565 char *name;
66− u8 address64;
67− u8 address32;
68− u8 length;
66+ u16 address64;
67+ u16 address32;
68+ u16 length;
6969 u8 default_length;
7070 u8 type;
7171
7272 } acpi_fadt_info;
7373
74+#define ACPI_FADT_OPTIONAL 0
7475 #define ACPI_FADT_REQUIRED 1
7576 #define ACPI_FADT_SEPARATE_LENGTH 2
7677
@@ -87,7 +88,7 @@ static struct acpi_fadt_info fadt_info_table[] = { · 10 unmodified lines
8788 ACPI_FADT_OFFSET(pm1b_event_block),
8889 ACPI_FADT_OFFSET(pm1_event_length),
8990 ACPI_PM1_REGISTER_WIDTH * 2, /* Enable + Status register */
90− 0},
91+ ACPI_FADT_OPTIONAL},
9192
9293 {"Pm1aControlBlock",
9394 ACPI_FADT_OFFSET(xpm1a_control_block),
@@ -101,7 +102,7 @@ static struct acpi_fadt_info fadt_info_table[] = { · 7 unmodified lines
101102 ACPI_FADT_OFFSET(pm1b_control_block),
102103 ACPI_FADT_OFFSET(pm1_control_length),
103104 ACPI_PM1_REGISTER_WIDTH,
104− 0},
105+ ACPI_FADT_OPTIONAL},
105106
106107 {"Pm2ControlBlock",
107108 ACPI_FADT_OFFSET(xpm2_control_block),
@@ -139,7 +140,7 @@ static struct acpi_fadt_info fadt_info_table[] = { · 31 unmodified lines
139140
140141 typedef struct acpi_fadt_pm_info {
141142 struct acpi_generic_address *target;
142− u8 source;
143+ u16 source;
143144 u8 register_num;
144145
145146 } acpi_fadt_pm_info;
@@ -253,8 +254,13 @@ void acpi_tb_parse_fadt(u32 table_index) · 107 unmodified lines
253254 acpi_tb_install_table((acpi_physical_address) acpi_gbl_FADT.Xdsdt,
254255 ACPI_SIG_DSDT, ACPI_TABLE_INDEX_DSDT);
255256
256− acpi_tb_install_table((acpi_physical_address) acpi_gbl_FADT.Xfacs,
257− ACPI_SIG_FACS, ACPI_TABLE_INDEX_FACS);
257+ /* If Hardware Reduced flag is set, there is no FACS */
258+
259+ if (!acpi_gbl_reduced_hardware) {
260+ acpi_tb_install_table((acpi_physical_address) acpi_gbl_FADT.
261+ Xfacs, ACPI_SIG_FACS,
262+ ACPI_TABLE_INDEX_FACS);
263+ }
258264 }
259265
260266 /*******************************************************************************
@@ -277,12 +283,12 @@ void acpi_tb_create_local_fadt(struct acpi_table_header *table, u32 length) · 16 unmodified lines
277283 {
278284 /*
279285 * Check if the FADT is larger than the largest table that we expect
280− * (the ACPI 2.0/3.0 version). If so, truncate the table, and issue
286+ * (the ACPI 5.0 version). If so, truncate the table, and issue
281287 * a warning.
282288 */
283289 if (length > sizeof(struct acpi_table_fadt)) {
284290 ACPI_WARNING((AE_INFO,
285− "FADT (revision %u) is longer than ACPI 2.0 version, "
291+ "FADT (revision %u) is longer than ACPI 5.0 version, "
286292 "truncating length %u to %u",
287293 table->revision, length,
288294 (u32)sizeof(struct acpi_table_fadt)));
@@ -297,6 +303,13 @@ void acpi_tb_create_local_fadt(struct acpi_table_header *table, u32 length) · 8 unmodified lines
297303 ACPI_MEMCPY(&acpi_gbl_FADT, table,
298304 ACPI_MIN(length, sizeof(struct acpi_table_fadt)));
299305
306+ /* Take a copy of the Hardware Reduced flag */
307+
308+ acpi_gbl_reduced_hardware = FALSE;
309+ if (acpi_gbl_FADT.flags & ACPI_FADT_HW_REDUCED) {
310+ acpi_gbl_reduced_hardware = TRUE;
311+ }
312+
300313 /* Convert the local copy of the FADT to the common internal format */
301314
302315 acpi_tb_convert_fadt();
@@ -502,6 +515,12 @@ static void acpi_tb_validate_fadt(void) · 199 unmodified lines
502515 acpi_gbl_FADT.Xdsdt = (u64) acpi_gbl_FADT.dsdt;
503516 }
504517
518+ /* If Hardware Reduced flag is set, we are all done */
519+
520+ if (acpi_gbl_reduced_hardware) {
521+ return;
522+ }
523+
505524 /* Examine all of the 64-bit extended address fields (X fields) */
506525
507526 for (i = 0; i < ACPI_FADT_INFO_ENTRIES; i++) {
drivers/acpi/acpica/tbfind.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/tbinstal.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/tbutils.c+8−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -135,6 +135,13 @@ acpi_status acpi_tb_initialize_facs(void) · 123 unmodified lines
135135 {
136136 acpi_status status;
137137
138+ /* If Hardware Reduced flag is set, there is no FACS */
139+
140+ if (acpi_gbl_reduced_hardware) {
141+ acpi_gbl_FACS = NULL;
142+ return (AE_OK);
143+ }
144+
138145 status = acpi_get_table_by_index(ACPI_TABLE_INDEX_FACS,
139146 ACPI_CAST_INDIRECT_PTR(struct
140147 acpi_table_header,
drivers/acpi/acpica/tbxface.c+1−1
@@ -6,7 +6,7 @@ · 5 unmodified lines
66 *****************************************************************************/
77
88 /*
9− * Copyright (C) 2000 - 2011, Intel Corp.
9+ * Copyright (C) 2000 - 2012, Intel Corp.
1010 * All rights reserved.
1111 *
1212 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/tbxfroot.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utaddress.c+294−0
@@ -0,0 +1,294 @@
1+/******************************************************************************
2+ *
3+ * Module Name: utaddress - op_region address range check
4+ *
5+ *****************************************************************************/
6+
7+/*
8+ * Copyright (C) 2000 - 2012, Intel Corp.
9+ * All rights reserved.
10+ *
11+ * Redistribution and use in source and binary forms, with or without
12+ * modification, are permitted provided that the following conditions
13+ * are met:
14+ * 1. Redistributions of source code must retain the above copyright
15+ * notice, this list of conditions, and the following disclaimer,
16+ * without modification.
17+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18+ * substantially similar to the "NO WARRANTY" disclaimer below
19+ * ("Disclaimer") and any redistribution must be conditioned upon
20+ * including a substantially similar Disclaimer requirement for further
21+ * binary redistribution.
22+ * 3. Neither the names of the above-listed copyright holders nor the names
23+ * of any contributors may be used to endorse or promote products derived
24+ * from this software without specific prior written permission.
25+ *
26+ * Alternatively, this software may be distributed under the terms of the
27+ * GNU General Public License ("GPL") version 2 as published by the Free
28+ * Software Foundation.
29+ *
30+ * NO WARRANTY
31+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35+ * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41+ * POSSIBILITY OF SUCH DAMAGES.
42+ */
43+
44+#include <acpi/acpi.h>
45+#include "accommon.h"
46+#include "acnamesp.h"
47+
48+#define _COMPONENT ACPI_UTILITIES
49+ACPI_MODULE_NAME("utaddress")
50+
51+/*******************************************************************************
52+ *
53+ * FUNCTION: acpi_ut_add_address_range
54+ *
55+ * PARAMETERS: space_id - Address space ID
56+ * Address - op_region start address
57+ * Length - op_region length
58+ * region_node - op_region namespace node
59+ *
60+ * RETURN: Status
61+ *
62+ * DESCRIPTION: Add the Operation Region address range to the global list.
63+ * The only supported Space IDs are Memory and I/O. Called when
64+ * the op_region address/length operands are fully evaluated.
65+ *
66+ * MUTEX: Locks the namespace
67+ *
68+ * NOTE: Because this interface is only called when an op_region argument
69+ * list is evaluated, there cannot be any duplicate region_nodes.
70+ * Duplicate Address/Length values are allowed, however, so that multiple
71+ * address conflicts can be detected.
72+ *
73+ ******************************************************************************/
74+acpi_status
75+acpi_ut_add_address_range(acpi_adr_space_type space_id,
76+ acpi_physical_address address,
77+ u32 length, struct acpi_namespace_node *region_node)
78+{
79+ struct acpi_address_range *range_info;
80+ acpi_status status;
81+
82+ ACPI_FUNCTION_TRACE(ut_add_address_range);
83+
84+ if ((space_id != ACPI_ADR_SPACE_SYSTEM_MEMORY) &&
85+ (space_id != ACPI_ADR_SPACE_SYSTEM_IO)) {
86+ return_ACPI_STATUS(AE_OK);
87+ }
88+
89+ /* Allocate/init a new info block, add it to the appropriate list */
90+
91+ range_info = ACPI_ALLOCATE(sizeof(struct acpi_address_range));
92+ if (!range_info) {
93+ return_ACPI_STATUS(AE_NO_MEMORY);
94+ }
95+
96+ range_info->start_address = address;
97+ range_info->end_address = (address + length - 1);
98+ range_info->region_node = region_node;
99+
100+ status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE);
101+ if (ACPI_FAILURE(status)) {
102+ ACPI_FREE(range_info);
103+ return_ACPI_STATUS(status);
104+ }
105+
106+ range_info->next = acpi_gbl_address_range_list[space_id];
107+ acpi_gbl_address_range_list[space_id] = range_info;
108+
109+ ACPI_DEBUG_PRINT((ACPI_DB_NAMES,
110+ "\nAdded [%4.4s] address range: 0x%p-0x%p\n",
111+ acpi_ut_get_node_name(range_info->region_node),
112+ ACPI_CAST_PTR(void, address),
113+ ACPI_CAST_PTR(void, range_info->end_address)));
114+
115+ (void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);
116+ return_ACPI_STATUS(AE_OK);
117+}
118+
119+/*******************************************************************************
120+ *
121+ * FUNCTION: acpi_ut_remove_address_range
122+ *
123+ * PARAMETERS: space_id - Address space ID
124+ * region_node - op_region namespace node
125+ *
126+ * RETURN: None
127+ *
128+ * DESCRIPTION: Remove the Operation Region from the global list. The only
129+ * supported Space IDs are Memory and I/O. Called when an
130+ * op_region is deleted.
131+ *
132+ * MUTEX: Assumes the namespace is locked
133+ *
134+ ******************************************************************************/
135+
136+void
137+acpi_ut_remove_address_range(acpi_adr_space_type space_id,
138+ struct acpi_namespace_node *region_node)
139+{
140+ struct acpi_address_range *range_info;
141+ struct acpi_address_range *prev;
142+
143+ ACPI_FUNCTION_TRACE(ut_remove_address_range);
144+
145+ if ((space_id != ACPI_ADR_SPACE_SYSTEM_MEMORY) &&
146+ (space_id != ACPI_ADR_SPACE_SYSTEM_IO)) {
147+ return_VOID;
148+ }
149+
150+ /* Get the appropriate list head and check the list */
151+
152+ range_info = prev = acpi_gbl_address_range_list[space_id];
153+ while (range_info) {
154+ if (range_info->region_node == region_node) {
155+ if (range_info == prev) { /* Found at list head */
156+ acpi_gbl_address_range_list[space_id] =
157+ range_info->next;
158+ } else {
159+ prev->next = range_info->next;
160+ }
161+
162+ ACPI_DEBUG_PRINT((ACPI_DB_NAMES,
163+ "\nRemoved [%4.4s] address range: 0x%p-0x%p\n",
164+ acpi_ut_get_node_name(range_info->
165+ region_node),
166+ ACPI_CAST_PTR(void,
167+ range_info->
168+ start_address),
169+ ACPI_CAST_PTR(void,
170+ range_info->
171+ end_address)));
172+
173+ ACPI_FREE(range_info);
174+ return_VOID;
175+ }
176+
177+ prev = range_info;
178+ range_info = range_info->next;
179+ }
180+
181+ return_VOID;
182+}
183+
184+/*******************************************************************************
185+ *
186+ * FUNCTION: acpi_ut_check_address_range
187+ *
188+ * PARAMETERS: space_id - Address space ID
189+ * Address - Start address
190+ * Length - Length of address range
191+ * Warn - TRUE if warning on overlap desired
192+ *
193+ * RETURN: Count of the number of conflicts detected. Zero is always
194+ * returned for Space IDs other than Memory or I/O.
195+ *
196+ * DESCRIPTION: Check if the input address range overlaps any of the
197+ * ASL operation region address ranges. The only supported
198+ * Space IDs are Memory and I/O.
199+ *
200+ * MUTEX: Assumes the namespace is locked.
201+ *
202+ ******************************************************************************/
203+
204+u32
205+acpi_ut_check_address_range(acpi_adr_space_type space_id,
206+ acpi_physical_address address, u32 length, u8 warn)
207+{
208+ struct acpi_address_range *range_info;
209+ acpi_physical_address end_address;
210+ char *pathname;
211+ u32 overlap_count = 0;
212+
213+ ACPI_FUNCTION_TRACE(ut_check_address_range);
214+
215+ if ((space_id != ACPI_ADR_SPACE_SYSTEM_MEMORY) &&
216+ (space_id != ACPI_ADR_SPACE_SYSTEM_IO)) {
217+ return_UINT32(0);
218+ }
219+
220+ range_info = acpi_gbl_address_range_list[space_id];
221+ end_address = address + length - 1;
222+
223+ /* Check entire list for all possible conflicts */
224+
225+ while (range_info) {
226+ /*
227+ * Check if the requested Address/Length overlaps this address_range.
228+ * Four cases to consider:
229+ *
230+ * 1) Input address/length is contained completely in the address range
231+ * 2) Input address/length overlaps range at the range start
232+ * 3) Input address/length overlaps range at the range end
233+ * 4) Input address/length completely encompasses the range
234+ */
235+ if ((address <= range_info->end_address) &&
236+ (end_address >= range_info->start_address)) {
237+
238+ /* Found an address range overlap */
239+
240+ overlap_count++;
241+ if (warn) { /* Optional warning message */
242+ pathname =
243+ acpi_ns_get_external_pathname(range_info->
244+ region_node);
245+
246+ ACPI_WARNING((AE_INFO,
247+ "0x%p-0x%p %s conflicts with Region %s %d",
248+ ACPI_CAST_PTR(void, address),
249+ ACPI_CAST_PTR(void, end_address),
250+ acpi_ut_get_region_name(space_id),
251+ pathname, overlap_count));
252+ ACPI_FREE(pathname);
253+ }
254+ }
255+
256+ range_info = range_info->next;
257+ }
258+
259+ return_UINT32(overlap_count);
260+}
261+
262+/*******************************************************************************
263+ *
264+ * FUNCTION: acpi_ut_delete_address_lists
265+ *
266+ * PARAMETERS: None
267+ *
268+ * RETURN: None
269+ *
270+ * DESCRIPTION: Delete all global address range lists (called during
271+ * subsystem shutdown).
272+ *
273+ ******************************************************************************/
274+
275+void acpi_ut_delete_address_lists(void)
276+{
277+ struct acpi_address_range *next;
278+ struct acpi_address_range *range_info;
279+ int i;
280+
281+ /* Delete all elements in all address range lists */
282+
283+ for (i = 0; i < ACPI_ADDRESS_RANGE_MAX; i++) {
284+ next = acpi_gbl_address_range_list[i];
285+
286+ while (next) {
287+ range_info = next;
288+ next = range_info->next;
289+ ACPI_FREE(range_info);
290+ }
291+
292+ acpi_gbl_address_range_list[i] = NULL;
293+ }
294+}
drivers/acpi/acpica/utalloc.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utcopy.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utdebug.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utdecode.c+4−2
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -171,7 +171,9 @@ const char *acpi_gbl_region_types[ACPI_NUM_PREDEFINED_REGIONS] = { · 159 unmodified lines
171171 "SMBus",
172172 "SystemCMOS",
173173 "PCIBARTarget",
174− "IPMI"
174+ "IPMI",
175+ "GeneralPurposeIo",
176+ "GenericSerialBus"
175177 };
176178
177179 char *acpi_ut_get_region_name(u8 space_id)
drivers/acpi/acpica/utdelete.c+9−6
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -215,11 +215,14 @@ static void acpi_ut_delete_internal_obj(union acpi_operand_object *object) · 203 unmodified lines
215215 ACPI_DEBUG_PRINT((ACPI_DB_ALLOCATIONS,
216216 "***** Region %p\n", object));
217217
218− /* Invalidate the region address/length via the host OS */
219−
220− acpi_os_invalidate_address(object->region.space_id,
221− object->region.address,
222− (acpi_size) object->region.length);
218+ /*
219+ * Update address_range list. However, only permanent regions
220+ * are installed in this list. (Not created within a method)
221+ */
222+ if (!(object->region.node->flags & ANOBJ_TEMPORARY)) {
223+ acpi_ut_remove_address_range(object->region.space_id,
224+ object->region.node);
225+ }
223226
224227 second_desc = acpi_ns_get_secondary_object(object);
225228 if (second_desc) {
drivers/acpi/acpica/uteval.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utglobal.c+7−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -264,6 +264,12 @@ acpi_status acpi_ut_init_globals(void) · 252 unmodified lines
264264 return_ACPI_STATUS(status);
265265 }
266266
267+ /* Address Range lists */
268+
269+ for (i = 0; i < ACPI_ADDRESS_RANGE_MAX; i++) {
270+ acpi_gbl_address_range_list[i] = NULL;
271+ }
272+
267273 /* Mutex locked flags */
268274
269275 for (i = 0; i < ACPI_NUM_MUTEX; i++) {
drivers/acpi/acpica/utids.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utinit.c+2−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -92,6 +92,7 @@ static void acpi_ut_terminate(void) · 80 unmodified lines
9292 gpe_xrupt_info = next_gpe_xrupt_info;
9393 }
9494
95+ acpi_ut_delete_address_lists();
9596 return_VOID;
9697 }
9798
drivers/acpi/acpica/utlock.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utmath.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utmisc.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utmutex.c+4−7
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -293,14 +293,10 @@ acpi_status acpi_ut_acquire_mutex(acpi_mutex_handle mutex_id) · 281 unmodified lines
293293
294294 acpi_status acpi_ut_release_mutex(acpi_mutex_handle mutex_id)
295295 {
296− acpi_thread_id this_thread_id;
297−
298296 ACPI_FUNCTION_NAME(ut_release_mutex);
299297
300− this_thread_id = acpi_os_get_thread_id();
301−
302298 ACPI_DEBUG_PRINT((ACPI_DB_MUTEX, "Thread %u releasing Mutex [%s]\n",
303− (u32)this_thread_id,
299+ (u32)acpi_os_get_thread_id(),
304300 acpi_ut_get_mutex_name(mutex_id)));
305301
306302 if (mutex_id > ACPI_MAX_MUTEX) {
@@ -329,7 +325,8 @@ acpi_status acpi_ut_release_mutex(acpi_mutex_handle mutex_id) · 22 unmodified lines
329325 * the ACPI subsystem code.
330326 */
331327 for (i = mutex_id; i < ACPI_NUM_MUTEX; i++) {
332− if (acpi_gbl_mutex_info[i].thread_id == this_thread_id) {
328+ if (acpi_gbl_mutex_info[i].thread_id ==
329+ acpi_os_get_thread_id()) {
333330 if (i == mutex_id) {
334331 continue;
335332 }
drivers/acpi/acpica/utobject.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utosi.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utresrc.c+243−35
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -43,7 +43,7 @@ · 31 unmodified lines
4343
4444 #include <acpi/acpi.h>
4545 #include "accommon.h"
46−#include "amlresrc.h"
46+#include "acresrc.h"
4747
4848 #define _COMPONENT ACPI_UTILITIES
4949 ACPI_MODULE_NAME("utresrc")
@@ -154,6 +154,138 @@ const char *acpi_gbl_typ_decode[] = { · 104 unmodified lines
154154 "TypeF"
155155 };
156156
157+const char *acpi_gbl_ppc_decode[] = {
158+ "PullDefault",
159+ "PullUp",
160+ "PullDown",
161+ "PullNone"
162+};
163+
164+const char *acpi_gbl_ior_decode[] = {
165+ "IoRestrictionNone",
166+ "IoRestrictionInputOnly",
167+ "IoRestrictionOutputOnly",
168+ "IoRestrictionNoneAndPreserve"
169+};
170+
171+const char *acpi_gbl_dts_decode[] = {
172+ "Width8bit",
173+ "Width16bit",
174+ "Width32bit",
175+ "Width64bit",
176+ "Width128bit",
177+ "Width256bit",
178+};
179+
180+/* GPIO connection type */
181+
182+const char *acpi_gbl_ct_decode[] = {
183+ "Interrupt",
184+ "I/O"
185+};
186+
187+/* Serial bus type */
188+
189+const char *acpi_gbl_sbt_decode[] = {
190+ "/* UNKNOWN serial bus type */",
191+ "I2C",
192+ "SPI",
193+ "UART"
194+};
195+
196+/* I2C serial bus access mode */
197+
198+const char *acpi_gbl_am_decode[] = {
199+ "AddressingMode7Bit",
200+ "AddressingMode10Bit"
201+};
202+
203+/* I2C serial bus slave mode */
204+
205+const char *acpi_gbl_sm_decode[] = {
206+ "ControllerInitiated",
207+ "DeviceInitiated"
208+};
209+
210+/* SPI serial bus wire mode */
211+
212+const char *acpi_gbl_wm_decode[] = {
213+ "FourWireMode",
214+ "ThreeWireMode"
215+};
216+
217+/* SPI serial clock phase */
218+
219+const char *acpi_gbl_cph_decode[] = {
220+ "ClockPhaseFirst",
221+ "ClockPhaseSecond"
222+};
223+
224+/* SPI serial bus clock polarity */
225+
226+const char *acpi_gbl_cpo_decode[] = {
227+ "ClockPolarityLow",
228+ "ClockPolarityHigh"
229+};
230+
231+/* SPI serial bus device polarity */
232+
233+const char *acpi_gbl_dp_decode[] = {
234+ "PolarityLow",
235+ "PolarityHigh"
236+};
237+
238+/* UART serial bus endian */
239+
240+const char *acpi_gbl_ed_decode[] = {
241+ "LittleEndian",
242+ "BigEndian"
243+};
244+
245+/* UART serial bus bits per byte */
246+
247+const char *acpi_gbl_bpb_decode[] = {
248+ "DataBitsFive",
249+ "DataBitsSix",
250+ "DataBitsSeven",
251+ "DataBitsEight",
252+ "DataBitsNine",
253+ "/* UNKNOWN Bits per byte */",
254+ "/* UNKNOWN Bits per byte */",
255+ "/* UNKNOWN Bits per byte */"
256+};
257+
258+/* UART serial bus stop bits */
259+
260+const char *acpi_gbl_sb_decode[] = {
261+ "StopBitsNone",
262+ "StopBitsOne",
263+ "StopBitsOnePlusHalf",
264+ "StopBitsTwo"
265+};
266+
267+/* UART serial bus flow control */
268+
269+const char *acpi_gbl_fc_decode[] = {
270+ "FlowControlNone",
271+ "FlowControlHardware",
272+ "FlowControlXON",
273+ "/* UNKNOWN flow control keyword */"
274+};
275+
276+/* UART serial bus parity type */
277+
278+const char *acpi_gbl_pt_decode[] = {
279+ "ParityTypeNone",
280+ "ParityTypeEven",
281+ "ParityTypeOdd",
282+ "ParityTypeMark",
283+ "ParityTypeSpace",
284+ "/* UNKNOWN parity keyword */",
285+ "/* UNKNOWN parity keyword */",
286+ "/* UNKNOWN parity keyword */"
287+};
288+
157289 #endif
158290
159291 /*
@@ -173,7 +305,7 @@ const u8 acpi_gbl_resource_aml_sizes[] = { · 13 unmodified lines
173305 ACPI_AML_SIZE_SMALL(struct aml_resource_end_dependent),
174306 ACPI_AML_SIZE_SMALL(struct aml_resource_io),
175307 ACPI_AML_SIZE_SMALL(struct aml_resource_fixed_io),
176− 0,
308+ ACPI_AML_SIZE_SMALL(struct aml_resource_fixed_dma),
177309 0,
178310 0,
179311 0,
@@ -193,7 +325,17 @@ const u8 acpi_gbl_resource_aml_sizes[] = { · 13 unmodified lines
193325 ACPI_AML_SIZE_LARGE(struct aml_resource_address16),
194326 ACPI_AML_SIZE_LARGE(struct aml_resource_extended_irq),
195327 ACPI_AML_SIZE_LARGE(struct aml_resource_address64),
196− ACPI_AML_SIZE_LARGE(struct aml_resource_extended_address64)
328+ ACPI_AML_SIZE_LARGE(struct aml_resource_extended_address64),
329+ ACPI_AML_SIZE_LARGE(struct aml_resource_gpio),
330+ 0,
331+ ACPI_AML_SIZE_LARGE(struct aml_resource_common_serialbus),
332+};
333+
334+const u8 acpi_gbl_resource_aml_serial_bus_sizes[] = {
335+ 0,
336+ ACPI_AML_SIZE_LARGE(struct aml_resource_i2c_serialbus),
337+ ACPI_AML_SIZE_LARGE(struct aml_resource_spi_serialbus),
338+ ACPI_AML_SIZE_LARGE(struct aml_resource_uart_serialbus),
197339 };
198340
199341 /*
@@ -209,35 +351,49 @@ static const u8 acpi_gbl_resource_types[] = { · 9 unmodified lines
209351 0,
210352 0,
211353 0,
212− ACPI_SMALL_VARIABLE_LENGTH,
213− ACPI_FIXED_LENGTH,
214− ACPI_SMALL_VARIABLE_LENGTH,
215− ACPI_FIXED_LENGTH,
216− ACPI_FIXED_LENGTH,
217− ACPI_FIXED_LENGTH,
218− 0,
354+ ACPI_SMALL_VARIABLE_LENGTH, /* 04 IRQ */
355+ ACPI_FIXED_LENGTH, /* 05 DMA */
356+ ACPI_SMALL_VARIABLE_LENGTH, /* 06 start_dependent_functions */
357+ ACPI_FIXED_LENGTH, /* 07 end_dependent_functions */
358+ ACPI_FIXED_LENGTH, /* 08 IO */
359+ ACPI_FIXED_LENGTH, /* 09 fixed_iO */
360+ ACPI_FIXED_LENGTH, /* 0_a fixed_dMA */
219361 0,
220362 0,
221363 0,
222− ACPI_VARIABLE_LENGTH,
223− ACPI_FIXED_LENGTH,
364+ ACPI_VARIABLE_LENGTH, /* 0_e vendor_short */
365+ ACPI_FIXED_LENGTH, /* 0_f end_tag */
224366
225367 /* Large descriptors */
226368
227369 0,
228− ACPI_FIXED_LENGTH,
229− ACPI_FIXED_LENGTH,
370+ ACPI_FIXED_LENGTH, /* 01 Memory24 */
371+ ACPI_FIXED_LENGTH, /* 02 generic_register */
230372 0,
231− ACPI_VARIABLE_LENGTH,
232− ACPI_FIXED_LENGTH,
233− ACPI_FIXED_LENGTH,
234− ACPI_VARIABLE_LENGTH,
235− ACPI_VARIABLE_LENGTH,
236− ACPI_VARIABLE_LENGTH,
237− ACPI_VARIABLE_LENGTH,
238− ACPI_FIXED_LENGTH
373+ ACPI_VARIABLE_LENGTH, /* 04 vendor_long */
374+ ACPI_FIXED_LENGTH, /* 05 Memory32 */
375+ ACPI_FIXED_LENGTH, /* 06 memory32_fixed */
376+ ACPI_VARIABLE_LENGTH, /* 07 Dword* address */
377+ ACPI_VARIABLE_LENGTH, /* 08 Word* address */
378+ ACPI_VARIABLE_LENGTH, /* 09 extended_iRQ */
379+ ACPI_VARIABLE_LENGTH, /* 0_a Qword* address */
380+ ACPI_FIXED_LENGTH, /* 0_b Extended* address */
381+ ACPI_VARIABLE_LENGTH, /* 0_c Gpio* */
382+ 0,
383+ ACPI_VARIABLE_LENGTH /* 0_e *serial_bus */
239384 };
240385
386+/*
387+ * For the i_aSL compiler/disassembler, we don't want any error messages
388+ * because the disassembler uses the resource validation code to determine
389+ * if Buffer objects are actually Resource Templates.
390+ */
391+#ifdef ACPI_ASL_COMPILER
392+#define ACPI_RESOURCE_ERROR(plist)
393+#else
394+#define ACPI_RESOURCE_ERROR(plist) ACPI_ERROR(plist)
395+#endif
396+
241397 /*******************************************************************************
242398 *
243399 * FUNCTION: acpi_ut_walk_aml_resources
@@ -265,6 +421,7 @@ acpi_ut_walk_aml_resources(u8 * aml, · 21 unmodified lines
265421 u8 resource_index;
266422 u32 length;
267423 u32 offset = 0;
424+ u8 end_tag[2] = { 0x79, 0x00 };
268425
269426 ACPI_FUNCTION_TRACE(ut_walk_aml_resources);
270427
@@ -286,6 +443,10 @@ acpi_ut_walk_aml_resources(u8 * aml, · 15 unmodified lines
286443
287444 status = acpi_ut_validate_resource(aml, &resource_index);
288445 if (ACPI_FAILURE(status)) {
446+ /*
447+ * Exit on failure. Cannot continue because the descriptor length
448+ * may be bogus also.
449+ */
289450 return_ACPI_STATUS(status);
290451 }
291452
@@ -300,7 +461,7 @@ acpi_ut_walk_aml_resources(u8 * aml, · 8 unmodified lines
300461 user_function(aml, length, offset, resource_index,
301462 context);
302463 if (ACPI_FAILURE(status)) {
303− return (status);
464+ return_ACPI_STATUS(status);
304465 }
305466 }
306467
@@ -333,7 +494,19 @@ acpi_ut_walk_aml_resources(u8 * aml, · 26 unmodified lines
333494
334495 /* Did not find an end_tag descriptor */
335496
336− return (AE_AML_NO_RESOURCE_END_TAG);
497+ if (user_function) {
498+
499+ /* Insert an end_tag anyway. acpi_rs_get_list_length always leaves room */
500+
501+ (void)acpi_ut_validate_resource(end_tag, &resource_index);
502+ status =
503+ user_function(end_tag, 2, offset, resource_index, context);
504+ if (ACPI_FAILURE(status)) {
505+ return_ACPI_STATUS(status);
506+ }
507+ }
508+
509+ return_ACPI_STATUS(AE_AML_NO_RESOURCE_END_TAG);
337510 }
338511
339512 /*******************************************************************************
@@ -354,6 +527,7 @@ acpi_ut_walk_aml_resources(u8 * aml, · 14 unmodified lines
354527
355528 acpi_status acpi_ut_validate_resource(void *aml, u8 * return_index)
356529 {
530+ union aml_resource *aml_resource;
357531 u8 resource_type;
358532 u8 resource_index;
359533 acpi_rs_length resource_length;
@@ -375,7 +549,7 @@ acpi_status acpi_ut_validate_resource(void *aml, u8 * return_index) · 15 unmodified lines
375549 /* Verify the large resource type (name) against the max */
376550
377551 if (resource_type > ACPI_RESOURCE_NAME_LARGE_MAX) {
378− return (AE_AML_INVALID_RESOURCE_TYPE);
552+ goto invalid_resource;
379553 }
380554
381555 /*
@@ -392,15 +566,17 @@ acpi_status acpi_ut_validate_resource(void *aml, u8 * return_index) · 10 unmodified lines
392566 ((resource_type & ACPI_RESOURCE_NAME_SMALL_MASK) >> 3);
393567 }
394568
395− /* Check validity of the resource type, zero indicates name is invalid */
396−
569+ /*
570+ * Check validity of the resource type, via acpi_gbl_resource_types. Zero
571+ * indicates an invalid resource.
572+ */
397573 if (!acpi_gbl_resource_types[resource_index]) {
398− return (AE_AML_INVALID_RESOURCE_TYPE);
574+ goto invalid_resource;
399575 }
400576
401577 /*
402− * 2) Validate the resource_length field. This ensures that the length
403− * is at least reasonable, and guarantees that it is non-zero.
578+ * Validate the resource_length field. This ensures that the length
579+ * is at least reasonable, and guarantees that it is non-zero.
404580 */
405581 resource_length = acpi_ut_get_resource_length(aml);
406582 minimum_resource_length = acpi_gbl_resource_aml_sizes[resource_index];
@@ -413,7 +589,7 @@ acpi_status acpi_ut_validate_resource(void *aml, u8 * return_index) · 6 unmodified lines
413589 /* Fixed length resource, length must match exactly */
414590
415591 if (resource_length != minimum_resource_length) {
416− return (AE_AML_BAD_RESOURCE_LENGTH);
592+ goto bad_resource_length;
417593 }
418594 break;
419595
@@ -422,7 +598,7 @@ acpi_status acpi_ut_validate_resource(void *aml, u8 * return_index) · 2 unmodified lines
422598 /* Variable length resource, length must be at least the minimum */
423599
424600 if (resource_length < minimum_resource_length) {
425− return (AE_AML_BAD_RESOURCE_LENGTH);
601+ goto bad_resource_length;
426602 }
427603 break;
428604
@@ -432,7 +608,7 @@ acpi_status acpi_ut_validate_resource(void *aml, u8 * return_index) · 3 unmodified lines
432608
433609 if ((resource_length > minimum_resource_length) ||
434610 (resource_length < (minimum_resource_length - 1))) {
435− return (AE_AML_BAD_RESOURCE_LENGTH);
611+ goto bad_resource_length;
436612 }
437613 break;
438614
@@ -440,7 +616,23 @@ acpi_status acpi_ut_validate_resource(void *aml, u8 * return_index) · 1 unmodified line
440616
441617 /* Shouldn't happen (because of validation earlier), but be sure */
442618
443− return (AE_AML_INVALID_RESOURCE_TYPE);
619+ goto invalid_resource;
620+ }
621+
622+ aml_resource = ACPI_CAST_PTR(union aml_resource, aml);
623+ if (resource_type == ACPI_RESOURCE_NAME_SERIAL_BUS) {
624+
625+ /* Validate the bus_type field */
626+
627+ if ((aml_resource->common_serial_bus.type == 0) ||
628+ (aml_resource->common_serial_bus.type >
629+ AML_RESOURCE_MAX_SERIALBUSTYPE)) {
630+ ACPI_RESOURCE_ERROR((AE_INFO,
631+ "Invalid/unsupported SerialBus resource descriptor: BusType 0x%2.2X",
632+ aml_resource->common_serial_bus.
633+ type));
634+ return (AE_AML_INVALID_RESOURCE_TYPE);
635+ }
444636 }
445637
446638 /* Optionally return the resource table index */
@@ -450,6 +642,22 @@ acpi_status acpi_ut_validate_resource(void *aml, u8 * return_index) · 3 unmodified lines
450642 }
451643
452644 return (AE_OK);
645+
646+ invalid_resource:
647+
648+ ACPI_RESOURCE_ERROR((AE_INFO,
649+ "Invalid/unsupported resource descriptor: Type 0x%2.2X",
650+ resource_type));
651+ return (AE_AML_INVALID_RESOURCE_TYPE);
652+
653+ bad_resource_length:
654+
655+ ACPI_RESOURCE_ERROR((AE_INFO,
656+ "Invalid resource descriptor length: Type "
657+ "0x%2.2X, Length 0x%4.4X, MinLength 0x%4.4X",
658+ resource_type, resource_length,
659+ minimum_resource_length));
660+ return (AE_AML_BAD_RESOURCE_LENGTH);
453661 }
454662
455663 /*******************************************************************************
drivers/acpi/acpica/utstate.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utxface.c+39−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 *****************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
@@ -48,6 +48,7 @@ · 36 unmodified lines
4848 #include "acnamesp.h"
4949 #include "acdebug.h"
5050 #include "actables.h"
51+#include "acinterp.h"
5152
5253 #define _COMPONENT ACPI_UTILITIES
5354 ACPI_MODULE_NAME("utxface")
@@ -640,4 +641,41 @@ acpi_status acpi_install_interface_handler(acpi_interface_handler handler) · 586 unmodified lines
640641 }
641642
642643 ACPI_EXPORT_SYMBOL(acpi_install_interface_handler)
644+
645+/*****************************************************************************
646+ *
647+ * FUNCTION: acpi_check_address_range
648+ *
649+ * PARAMETERS: space_id - Address space ID
650+ * Address - Start address
651+ * Length - Length
652+ * Warn - TRUE if warning on overlap desired
653+ *
654+ * RETURN: Count of the number of conflicts detected.
655+ *
656+ * DESCRIPTION: Check if the input address range overlaps any of the
657+ * ASL operation region address ranges.
658+ *
659+ ****************************************************************************/
660+u32
661+acpi_check_address_range(acpi_adr_space_type space_id,
662+ acpi_physical_address address,
663+ acpi_size length, u8 warn)
664+{
665+ u32 overlaps;
666+ acpi_status status;
667+
668+ status = acpi_ut_acquire_mutex(ACPI_MTX_NAMESPACE);
669+ if (ACPI_FAILURE(status)) {
670+ return (0);
671+ }
672+
673+ overlaps = acpi_ut_check_address_range(space_id, address,
674+ (u32)length, warn);
675+
676+ (void)acpi_ut_release_mutex(ACPI_MTX_NAMESPACE);
677+ return (overlaps);
678+}
679+
680+ACPI_EXPORT_SYMBOL(acpi_check_address_range)
643681 #endif /* !ACPI_ASL_COMPILER */
drivers/acpi/acpica/utxferror.c+1−1
@@ -5,7 +5,7 @@ · 4 unmodified lines
55 ******************************************************************************/
66
77 /*
8− * Copyright (C) 2000 - 2011, Intel Corp.
8+ * Copyright (C) 2000 - 2012, Intel Corp.
99 * All rights reserved.
1010 *
1111 * Redistribution and use in source and binary forms, with or without
drivers/acpi/acpica/utxfmutex.c+187−0
@@ -0,0 +1,187 @@
1+/*******************************************************************************
2+ *
3+ * Module Name: utxfmutex - external AML mutex access functions
4+ *
5+ ******************************************************************************/
6+
7+/*
8+ * Copyright (C) 2000 - 2012, Intel Corp.
9+ * All rights reserved.
10+ *
11+ * Redistribution and use in source and binary forms, with or without
12+ * modification, are permitted provided that the following conditions
13+ * are met:
14+ * 1. Redistributions of source code must retain the above copyright
15+ * notice, this list of conditions, and the following disclaimer,
16+ * without modification.
17+ * 2. Redistributions in binary form must reproduce at minimum a disclaimer
18+ * substantially similar to the "NO WARRANTY" disclaimer below
19+ * ("Disclaimer") and any redistribution must be conditioned upon
20+ * including a substantially similar Disclaimer requirement for further
21+ * binary redistribution.
22+ * 3. Neither the names of the above-listed copyright holders nor the names
23+ * of any contributors may be used to endorse or promote products derived
24+ * from this software without specific prior written permission.
25+ *
26+ * Alternatively, this software may be distributed under the terms of the
27+ * GNU General Public License ("GPL") version 2 as published by the Free
28+ * Software Foundation.
29+ *
30+ * NO WARRANTY
31+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35+ * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40+ * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41+ * POSSIBILITY OF SUCH DAMAGES.
42+ */
43+
44+#include <acpi/acpi.h>
45+#include "accommon.h"
46+#include "acnamesp.h"
47+
48+#define _COMPONENT ACPI_UTILITIES
49+ACPI_MODULE_NAME("utxfmutex")
50+
51+/* Local prototypes */
52+static acpi_status
53+acpi_ut_get_mutex_object(acpi_handle handle,
54+ acpi_string pathname,
55+ union acpi_operand_object **ret_obj);
56+
57+/*******************************************************************************
58+ *
59+ * FUNCTION: acpi_ut_get_mutex_object
60+ *
61+ * PARAMETERS: Handle - Mutex or prefix handle (optional)
62+ * Pathname - Mutex pathname (optional)
63+ * ret_obj - Where the mutex object is returned
64+ *
65+ * RETURN: Status
66+ *
67+ * DESCRIPTION: Get an AML mutex object. The mutex node is pointed to by
68+ * Handle:Pathname. Either Handle or Pathname can be NULL, but
69+ * not both.
70+ *
71+ ******************************************************************************/
72+
73+static acpi_status
74+acpi_ut_get_mutex_object(acpi_handle handle,
75+ acpi_string pathname,
76+ union acpi_operand_object **ret_obj)
77+{
78+ struct acpi_namespace_node *mutex_node;
79+ union acpi_operand_object *mutex_obj;
80+ acpi_status status;
81+
82+ /* Parameter validation */
83+
84+ if (!ret_obj || (!handle && !pathname)) {
85+ return (AE_BAD_PARAMETER);
86+ }
87+
88+ /* Get a the namespace node for the mutex */
89+
90+ mutex_node = handle;
91+ if (pathname != NULL) {
92+ status = acpi_get_handle(handle, pathname,
93+ ACPI_CAST_PTR(acpi_handle,
94+ &mutex_node));
95+ if (ACPI_FAILURE(status)) {
96+ return (status);
97+ }
98+ }
99+
100+ /* Ensure that we actually have a Mutex object */
101+
102+ if (!mutex_node || (mutex_node->type != ACPI_TYPE_MUTEX)) {
103+ return (AE_TYPE);
104+ }
105+

82 more lines aren’t shown here.

drivers/acpi/apei/apei-base.c+112−11

This diff is large: its 226 lines aren’t shown here.

drivers/acpi/apei/apei-internal.h+6−0

This diff is large: its 20 lines aren’t shown here.

drivers/acpi/apei/einj.c+256−59

This diff is large: its 457 lines aren’t shown here.

drivers/acpi/apei/erst.c+2−3

This diff is large: its 13 lines aren’t shown here.

drivers/acpi/apei/ghes.c+83−19

This diff is large: its 197 lines aren’t shown here.

drivers/acpi/apei/hest.c+2−3

This diff is large: its 13 lines aren’t shown here.

drivers/acpi/atomicio.c+0−365

This diff is large: its 366 lines aren’t shown here.

drivers/acpi/numa.c+6−0

This diff is large: its 23 lines aren’t shown here.

drivers/acpi/nvs.c+52−1

This diff is large: its 71 lines aren’t shown here.

drivers/acpi/osl.c+188−206

This diff is large: its 514 lines aren’t shown here.

drivers/acpi/processor_core.c+24−2

This diff is large: its 33 lines aren’t shown here.

drivers/acpi/processor_driver.c+117−52

This diff is large: its 244 lines aren’t shown here.

drivers/acpi/sleep.c+8−0

This diff is large: its 15 lines aren’t shown here.

drivers/ata/ata_piix.c+7−0

This diff is large: its 14 lines aren’t shown here.

drivers/ata/libata-core.c+2−0

This diff is large: its 9 lines aren’t shown here.

drivers/ata/libata-transport.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/ata/pata_at91.c+21−27

This diff is large: its 81 lines aren’t shown here.

drivers/ata/pata_bf54x.c+88−79

This diff is large: its 253 lines aren’t shown here.

drivers/ata/sata_fsl.c+11−0

This diff is large: its 32 lines aren’t shown here.

drivers/base/Makefile+1−1

This diff is large: its 8 lines aren’t shown here.

drivers/base/bus.c+5−4

This diff is large: its 24 lines aren’t shown here.

drivers/base/core.c+16−1

This diff is large: its 45 lines aren’t shown here.

drivers/base/cpu.c+21−0

This diff is large: its 37 lines aren’t shown here.

drivers/base/firmware_class.c+1−2

This diff is large: its 10 lines aren’t shown here.

drivers/base/memory.c+26−5

This diff is large: its 69 lines aren’t shown here.

drivers/base/node.c+8−0

This diff is large: its 16 lines aren’t shown here.

drivers/base/regmap/regcache.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/base/regmap/regmap.c+3−0

This diff is large: its 10 lines aren’t shown here.

drivers/base/sys.c+0−383

This diff is large: its 384 lines aren’t shown here.

drivers/bcma/bcma_private.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/bcma/host_pci.c+18−25

This diff is large: its 66 lines aren’t shown here.

drivers/bcma/main.c+25−3

This diff is large: its 50 lines aren’t shown here.

drivers/bcma/scan.c+11−8

This diff is large: its 27 lines aren’t shown here.

drivers/block/Kconfig+11−0

This diff is large: its 18 lines aren’t shown here.

drivers/block/Makefile+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/block/floppy.c+16−1

This diff is large: its 32 lines aren’t shown here.

drivers/block/loop.c+13−11

This diff is large: its 55 lines aren’t shown here.

drivers/block/mtip32xx/mtip32xx.c+5−6

This diff is large: its 46 lines aren’t shown here.

drivers/block/mtip32xx/mtip32xx.h+0−5

This diff is large: its 19 lines aren’t shown here.

drivers/block/nvme.c+1741−0

This diff is large: its 1742 lines aren’t shown here.

drivers/block/rbd.c+5−2

This diff is large: its 36 lines aren’t shown here.

drivers/cdrom/cdrom.c+6−14

This diff is large: its 83 lines aren’t shown here.

drivers/char/agp/backend.c+6−6

This diff is large: its 28 lines aren’t shown here.

drivers/char/tpm/tpm.c+9−0

This diff is large: its 16 lines aren’t shown here.

drivers/char/tpm/tpm.h+3−0

This diff is large: its 10 lines aren’t shown here.

drivers/cpuidle/Kconfig+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/dma/Kconfig+17−10

This diff is large: its 59 lines aren’t shown here.

drivers/dma/Makefile+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/dma/amba-pl08x.c+22−19

This diff is large: its 118 lines aren’t shown here.

drivers/dma/at_hdmac.c+83−24

This diff is large: its 261 lines aren’t shown here.

drivers/dma/at_hdmac_regs.h+9−9

This diff is large: its 45 lines aren’t shown here.

drivers/dma/coh901318.c+6−6

This diff is large: its 50 lines aren’t shown here.

drivers/dma/coh901318_lli.c+11−12

This diff is large: its 86 lines aren’t shown here.

drivers/dma/coh901318_lli.h+2−2

This diff is large: its 17 lines aren’t shown here.

drivers/dma/dmaengine.c+2−2

This diff is large: its 15 lines aren’t shown here.

drivers/dma/dmatest.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/dma/dw_dmac.c+48−35

This diff is large: its 196 lines aren’t shown here.

drivers/dma/dw_dmac_regs.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/dma/ep93xx_dma.c+63−27

This diff is large: its 226 lines aren’t shown here.

drivers/dma/fsldma.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/dma/imx-dma.c+5−5

This diff is large: its 45 lines aren’t shown here.

drivers/dma/imx-sdma.c+22−11

This diff is large: its 141 lines aren’t shown here.

drivers/dma/intel_mid_dma.c+25−14

This diff is large: its 157 lines aren’t shown here.

drivers/dma/intel_mid_dma_regs.h+2−2

This diff is large: its 17 lines aren’t shown here.

drivers/dma/iop-adma.c+2−14

This diff is large: its 31 lines aren’t shown here.

drivers/dma/ipu/ipu_idmac.c+3−26

This diff is large: its 64 lines aren’t shown here.

drivers/dma/mpc512x_dma.c+1−11

This diff is large: its 19 lines aren’t shown here.

drivers/dma/mxs-dma.c+13−40

This diff is large: its 182 lines aren’t shown here.

drivers/dma/pch_dma.c+12−8

This diff is large: its 84 lines aren’t shown here.

drivers/dma/pl330.c+9−22

This diff is large: its 92 lines aren’t shown here.

drivers/dma/shdma.c+45−30

This diff is large: its 219 lines aren’t shown here.

drivers/dma/sirf-dma.c+707−0

This diff is large: its 708 lines aren’t shown here.

drivers/dma/ste_dma40.c+391−50

This diff is large: its 880 lines aren’t shown here.

drivers/dma/ste_dma40_ll.h+11−0

This diff is large: its 25 lines aren’t shown here.

drivers/dma/timb_dma.c+10−20

This diff is large: its 88 lines aren’t shown here.

drivers/dma/txx9dmac.c+6−6

This diff is large: its 48 lines aren’t shown here.

drivers/edac/i3200_edac.c+2−13

This diff is large: its 29 lines aren’t shown here.

drivers/firewire/ohci.c+5−1

This diff is large: its 27 lines aren’t shown here.

drivers/gpio/Kconfig+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpio/gpio-lpc32xx.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpio/gpio-ml-ioh.c+5−4

This diff is large: its 44 lines aren’t shown here.

drivers/gpio/gpio-pch.c+3−2

This diff is large: its 26 lines aren’t shown here.

drivers/gpio/gpio-samsung.c+13−10

This diff is large: its 41 lines aren’t shown here.

drivers/gpio/gpio-tps65910.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/drm_auth.c+5−1

This diff is large: its 27 lines aren’t shown here.

drivers/gpu/drm/drm_fops.c+5−0

This diff is large: its 12 lines aren’t shown here.

drivers/gpu/drm/drm_gem.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/drm_ioc32.c+2−1

This diff is large: its 10 lines aren’t shown here.

drivers/gpu/drm/exynos/Kconfig+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_core.c+3−0

This diff is large: its 10 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_crtc.c+3−3

This diff is large: its 20 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_drv.c+18−8

This diff is large: its 56 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_encoder.c+34−0

This diff is large: its 41 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_encoder.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_fbdev.c+4−66

This diff is large: its 91 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_drm_fimd.c+65−51

This diff is large: its 168 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_hdmi.c+4−4

This diff is large: its 22 lines aren’t shown here.

drivers/gpu/drm/exynos/exynos_mixer.c+12−7

This diff is large: its 44 lines aren’t shown here.

drivers/gpu/drm/gma500/framebuffer.c+4−4

This diff is large: its 30 lines aren’t shown here.

drivers/gpu/drm/gma500/gtt.c+2−3

This diff is large: its 19 lines aren’t shown here.

drivers/gpu/drm/i810/i810_dma.c+6−11

This diff is large: its 32 lines aren’t shown here.

drivers/gpu/drm/i810/i810_drv.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/i810/i810_drv.h+4−2

This diff is large: its 17 lines aren’t shown here.

drivers/gpu/drm/i915/i915_debugfs.c+20−11

This diff is large: its 91 lines aren’t shown here.

drivers/gpu/drm/i915/i915_dma.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/i915/i915_drv.c+44−12

This diff is large: its 97 lines aren’t shown here.

drivers/gpu/drm/i915/i915_drv.h+7−3

This diff is large: its 24 lines aren’t shown here.

drivers/gpu/drm/i915/i915_irq.c+2−1

This diff is large: its 10 lines aren’t shown here.

drivers/gpu/drm/i915/i915_reg.h+15−0

This diff is large: its 29 lines aren’t shown here.

drivers/gpu/drm/i915/i915_suspend.c+8−3

This diff is large: its 39 lines aren’t shown here.

drivers/gpu/drm/i915/intel_bios.h+5−1

This diff is large: its 14 lines aren’t shown here.

drivers/gpu/drm/i915/intel_crt.c+23−0

This diff is large: its 44 lines aren’t shown here.

drivers/gpu/drm/i915/intel_display.c+38−16

This diff is large: its 124 lines aren’t shown here.

drivers/gpu/drm/i915/intel_dp.c+5−15

This diff is large: its 52 lines aren’t shown here.

drivers/gpu/drm/i915/intel_lvds.c+16−0

This diff is large: its 30 lines aren’t shown here.

drivers/gpu/drm/i915/intel_ringbuffer.c+25−16

This diff is large: its 96 lines aren’t shown here.

drivers/gpu/drm/i915/intel_sdvo.c+3−5

This diff is large: its 19 lines aren’t shown here.

drivers/gpu/drm/i915/intel_sprite.c+2−6

This diff is large: its 24 lines aren’t shown here.

drivers/gpu/drm/i915/intel_tv.c+8−130

This diff is large: its 215 lines aren’t shown here.

drivers/gpu/drm/nouveau/nouveau_bios.h+3−2

This diff is large: its 13 lines aren’t shown here.

drivers/gpu/drm/nouveau/nouveau_bo.c+4−0

This diff is large: its 11 lines aren’t shown here.

drivers/gpu/drm/nouveau/nouveau_display.c+10−0

This diff is large: its 17 lines aren’t shown here.

drivers/gpu/drm/nouveau/nouveau_drv.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/nouveau/nouveau_gem.c+21−2

This diff is large: its 44 lines aren’t shown here.

drivers/gpu/drm/nouveau/nouveau_mxm.c+9−0

This diff is large: its 17 lines aren’t shown here.

drivers/gpu/drm/nouveau/nv50_pm.c+2−2

This diff is large: its 12 lines aren’t shown here.

drivers/gpu/drm/radeon/atombios_crtc.c+32−32

This diff is large: its 179 lines aren’t shown here.

drivers/gpu/drm/radeon/atombios_dp.c+25−15

This diff is large: its 78 lines aren’t shown here.

drivers/gpu/drm/radeon/atombios_encoders.c+45−44

This diff is large: its 285 lines aren’t shown here.

drivers/gpu/drm/radeon/evergreen.c+3−0

This diff is large: its 24 lines aren’t shown here.

drivers/gpu/drm/radeon/evergreend.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/radeon/ni.c+2−0

This diff is large: its 16 lines aren’t shown here.

drivers/gpu/drm/radeon/nid.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/radeon/r100.c+8−4

This diff is large: its 33 lines aren’t shown here.

drivers/gpu/drm/radeon/r300.c+7−1

This diff is large: its 22 lines aren’t shown here.

drivers/gpu/drm/radeon/r420.c+7−1

This diff is large: its 22 lines aren’t shown here.

drivers/gpu/drm/radeon/r520.c+7−1

This diff is large: its 22 lines aren’t shown here.

drivers/gpu/drm/radeon/r600.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/radeon/r600_blit_kms.c+25−10

This diff is large: its 53 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon.h+42−42

This diff is large: its 105 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon_atombios.c+20−0

This diff is large: its 41 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon_atpx_handler.c+2−1

This diff is large: its 10 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon_bios.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon_cs.c+4−0

This diff is large: its 11 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon_device.c+9−3

This diff is large: its 41 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon_display.c+4−2

This diff is large: its 14 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon_encoders.c+77−0

This diff is large: its 88 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon_fence.c+3−1

This diff is large: its 12 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon_i2c.c+2−0

This diff is large: its 16 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon_irq_kms.c+6−0

This diff is large: its 13 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon_mode.h+8−0

This diff is large: its 31 lines aren’t shown here.

drivers/gpu/drm/radeon/radeon_ring.c+25−19

This diff is large: its 123 lines aren’t shown here.

drivers/gpu/drm/radeon/rs400.c+7−1

This diff is large: its 22 lines aren’t shown here.

drivers/gpu/drm/radeon/rs600.c+8−4

This diff is large: its 33 lines aren’t shown here.

drivers/gpu/drm/radeon/rs690.c+7−1

This diff is large: its 22 lines aren’t shown here.

drivers/gpu/drm/radeon/rv515.c+7−1

This diff is large: its 22 lines aren’t shown here.

drivers/gpu/drm/radeon/rv770.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/gpu/drm/sis/sis_drv.c+1−2

This diff is large: its 17 lines aren’t shown here.

drivers/gpu/drm/ttm/ttm_bo.c+13−4

This diff is large: its 32 lines aren’t shown here.

drivers/gpu/drm/vmwgfx/vmwgfx_kms.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/hid/hid-hyperv.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/hid/hid-wacom.c+4−3

This diff is large: its 34 lines aren’t shown here.

drivers/hid/hid-wiimote-core.c+2−2

This diff is large: its 17 lines aren’t shown here.

drivers/hid/usbhid/hiddev.c+2−2

This diff is large: its 14 lines aren’t shown here.

drivers/hwmon/f71805f.c+5−5

This diff is large: its 17 lines aren’t shown here.

drivers/hwmon/f75375s.c+5−6

This diff is large: its 46 lines aren’t shown here.

drivers/hwmon/sht15.c+2−1

This diff is large: its 17 lines aren’t shown here.

drivers/hwmon/w83627ehf.c+26−8

This diff is large: its 62 lines aren’t shown here.

drivers/i2c/busses/Kconfig+7−7

This diff is large: its 27 lines aren’t shown here.

drivers/i2c/busses/i2c-eg20t.c+12−7

This diff is large: its 67 lines aren’t shown here.

drivers/i2c/busses/i2c-omap.c+70−40

This diff is large: its 295 lines aren’t shown here.

drivers/i2c/busses/i2c-tegra.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/ide/Makefile+0−1

This diff is large: its 5 lines aren’t shown here.

drivers/ide/at91_ide.c+0−366

This diff is large: its 367 lines aren’t shown here.

drivers/idle/intel_idle.c+50−48

This diff is large: its 181 lines aren’t shown here.

drivers/infiniband/Kconfig+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/infiniband/Makefile+1−0

This diff is large: its 6 lines aren’t shown here.

drivers/infiniband/core/ucma.c+4−1

This diff is large: its 14 lines aren’t shown here.

drivers/infiniband/core/uverbs_cmd.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/infiniband/core/verbs.c+1−1

This diff is large: its 16 lines aren’t shown here.

drivers/infiniband/hw/ipath/ipath_fs.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/infiniband/hw/mlx4/mad.c+2−5

This diff is large: its 15 lines aren’t shown here.

drivers/infiniband/hw/nes/nes.c+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/infiniband/hw/nes/nes.h+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/infiniband/hw/nes/nes_cm.c+7−3

This diff is large: its 43 lines aren’t shown here.

drivers/infiniband/hw/nes/nes_cm.h+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/infiniband/hw/nes/nes_context.h+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/infiniband/hw/nes/nes_hw.c+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/infiniband/hw/nes/nes_hw.h+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/infiniband/hw/nes/nes_mgt.c+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/infiniband/hw/nes/nes_mgt.h+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/infiniband/hw/nes/nes_nic.c+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/infiniband/hw/nes/nes_user.h+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/infiniband/hw/nes/nes_utils.c+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/infiniband/hw/nes/nes_verbs.c+4−2

This diff is large: its 25 lines aren’t shown here.

drivers/infiniband/hw/nes/nes_verbs.h+1−1

This diff is large: its 7 lines aren’t shown here.

drivers/infiniband/hw/qib/qib_iba6120.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/infiniband/hw/qib/qib_pcie.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/infiniband/ulp/ipoib/ipoib.h+4−2

This diff is large: its 20 lines aren’t shown here.

drivers/infiniband/ulp/ipoib/ipoib_main.c+19−36

This diff is large: its 130 lines aren’t shown here.

drivers/infiniband/ulp/ipoib/ipoib_multicast.c+1−9

This diff is large: its 23 lines aren’t shown here.

drivers/infiniband/ulp/srpt/Kconfig+12−0

This diff is large: its 13 lines aren’t shown here.

drivers/infiniband/ulp/srpt/Makefile+2−0

This diff is large: its 3 lines aren’t shown here.

drivers/infiniband/ulp/srpt/ib_dm_mad.h+139−0

This diff is large: its 140 lines aren’t shown here.

drivers/infiniband/ulp/srpt/ib_srpt.c+4070−0

This diff is large: its 4071 lines aren’t shown here.

drivers/infiniband/ulp/srpt/ib_srpt.h+443−0

This diff is large: its 444 lines aren’t shown here.

drivers/input/evdev.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/input/keyboard/twl4030_keypad.c+1−3

This diff is large: its 22 lines aren’t shown here.

drivers/input/serio/i8042-x86ia64io.h+7−0

This diff is large: its 14 lines aren’t shown here.

drivers/input/serio/serio_raw.c+9−6

This diff is large: its 31 lines aren’t shown here.

drivers/iommu/amd_iommu.c+3−0

This diff is large: its 10 lines aren’t shown here.

drivers/iommu/msm_iommu.c+1−6

This diff is large: its 33 lines aren’t shown here.

drivers/isdn/i4l/isdn_net.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/leds/Kconfig+7−0

This diff is large: its 14 lines aren’t shown here.

drivers/leds/Makefile+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/leds/leds-lm3530.c+2−2

This diff is large: its 11 lines aren’t shown here.

drivers/leds/leds-ot200.c+171−0

This diff is large: its 172 lines aren’t shown here.

drivers/macintosh/adb.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/md/dm-raid.c+9−3

This diff is large: its 33 lines aren’t shown here.

drivers/md/md.c+3−2

This diff is large: its 21 lines aren’t shown here.

drivers/media/common/tuners/tuner-xc2028.c+21−6

This diff is large: its 64 lines aren’t shown here.

drivers/media/common/tuners/xc4000.c+86−0

This diff is large: its 128 lines aren’t shown here.

drivers/media/dvb/dvb-core/dvb_frontend.c+20−21

This diff is large: its 79 lines aren’t shown here.

drivers/media/dvb/dvb-usb/anysee.c+14−13

This diff is large: its 46 lines aren’t shown here.

drivers/media/dvb/dvb-usb/cinergyT2-fe.c+4−3

This diff is large: its 19 lines aren’t shown here.

drivers/media/dvb/dvb-usb/dib0700.h+2−0

This diff is large: its 9 lines aren’t shown here.

drivers/media/dvb/dvb-usb/dib0700_core.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/media/dvb/dvb-usb/dib0700_devices.c+137−13

This diff is large: its 190 lines aren’t shown here.

drivers/media/dvb/frontends/cxd2820r.h+2−4

This diff is large: its 17 lines aren’t shown here.

drivers/media/dvb/frontends/cxd2820r_core.c+22−6

This diff is large: its 76 lines aren’t shown here.

drivers/media/dvb/frontends/ds3000.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/media/dvb/frontends/mb86a20s.c+4−4

This diff is large: its 36 lines aren’t shown here.

drivers/media/dvb/frontends/tda18271c2dd.c+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/media/video/as3645a.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/media/video/atmel-isi.c+14−0

This diff is large: its 47 lines aren’t shown here.

drivers/media/video/cx18/cx18-fileops.c+14−27

This diff is large: its 76 lines aren’t shown here.

drivers/media/video/cx231xx/cx231xx-cards.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/media/video/cx23885/cx23885-cards.c+2−2

This diff is large: its 11 lines aren’t shown here.

drivers/media/video/cx23885/cx23885-dvb.c+5−0

This diff is large: its 12 lines aren’t shown here.

drivers/media/video/cx23885/cx23885-video.c+4−3

This diff is large: its 21 lines aren’t shown here.

drivers/media/video/cx88/cx88-cards.c+12−12

This diff is large: its 69 lines aren’t shown here.

drivers/media/video/em28xx/em28xx-dvb.c+1−2

This diff is large: its 10 lines aren’t shown here.

drivers/media/video/ivtv/ivtv-driver.c+0−3

This diff is large: its 10 lines aren’t shown here.

drivers/media/video/ivtv/ivtv-driver.h+1−2

This diff is large: its 17 lines aren’t shown here.

drivers/media/video/ivtv/ivtv-fileops.c+44−74

This diff is large: its 290 lines aren’t shown here.

drivers/media/video/ivtv/ivtv-ioctl.c+5−17

This diff is large: its 64 lines aren’t shown here.

drivers/media/video/ivtv/ivtv-irq.c+2−2

This diff is large: its 16 lines aren’t shown here.

drivers/media/video/ivtv/ivtv-streams.c+1−1

This diff is large: its 16 lines aren’t shown here.

drivers/media/video/ivtv/ivtv-yuv.c+19−3

This diff is large: its 51 lines aren’t shown here.

drivers/media/video/mx3_camera.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/media/video/omap/omap_vout.c+5−2

This diff is large: its 21 lines aren’t shown here.

drivers/media/video/pwc/pwc-ctrl.c+102−137

This diff is large: its 445 lines aren’t shown here.

drivers/media/video/pwc/pwc-dec1.c+4−12

This diff is large: its 24 lines aren’t shown here.

drivers/media/video/pwc/pwc-dec1.h+4−2

This diff is large: its 18 lines aren’t shown here.

drivers/media/video/pwc/pwc-dec23.c+18−23

This diff is large: its 86 lines aren’t shown here.

drivers/media/video/pwc/pwc-dec23.h+6−3

This diff is large: its 33 lines aren’t shown here.

drivers/media/video/pwc/pwc-if.c+16−159

This diff is large: its 289 lines aren’t shown here.

drivers/media/video/pwc/pwc-misc.c+0−1

This diff is large: its 6 lines aren’t shown here.

drivers/media/video/pwc/pwc-v4l.c+72−18

This diff is large: its 135 lines aren’t shown here.

drivers/media/video/pwc/pwc.h+8−6

This diff is large: its 50 lines aren’t shown here.

drivers/media/video/s5p-fimc/fimc-capture.c+4−3

This diff is large: its 28 lines aren’t shown here.

drivers/media/video/s5p-fimc/fimc-core.c+3−3

This diff is large: its 15 lines aren’t shown here.

drivers/media/video/s5p-fimc/fimc-mdevice.c+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/media/video/s5p-g2d/g2d.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/media/video/s5p-jpeg/jpeg-core.c+4−3

This diff is large: its 14 lines aren’t shown here.

drivers/media/video/s5p-mfc/s5p_mfc.c+1−2

This diff is large: its 17 lines aren’t shown here.

drivers/media/video/s5p-mfc/s5p_mfc_dec.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/media/video/saa7164/saa7164-cards.c+0−4

This diff is large: its 18 lines aren’t shown here.

drivers/media/video/timblogiw.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/media/video/tlg2300/pd-main.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/media/video/v4l2-ctrls.c+27−27

This diff is large: its 112 lines aren’t shown here.

drivers/media/video/v4l2-ioctl.c+7−1

This diff is large: its 24 lines aren’t shown here.

drivers/media/video/zoran/zoran_driver.c+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/mfd/Kconfig+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/mfd/mcp-core.c+13−48

This diff is large: its 114 lines aren’t shown here.

drivers/mfd/mcp-sa11x0.c+54−115

This diff is large: its 307 lines aren’t shown here.

drivers/mfd/twl-core.c+4−2

This diff is large: its 26 lines aren’t shown here.

drivers/mfd/twl4030-power.c+10−10

This diff is large: its 90 lines aren’t shown here.

drivers/mfd/twl6040-core.c+77−51

This diff is large: its 171 lines aren’t shown here.

drivers/mfd/ucb1x00-core.c+24−43

This diff is large: its 146 lines aren’t shown here.

drivers/mfd/ucb1x00-ts.c+6−28

This diff is large: its 90 lines aren’t shown here.

drivers/misc/Kconfig+3−14

This diff is large: its 34 lines aren’t shown here.

drivers/misc/c2port/c2port-duramar2150.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/misc/carma/carma-fpga-program.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/misc/cb710/core.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/misc/cs5535-mfgpt.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/misc/lkdtm.c+5−1

This diff is large: its 23 lines aren’t shown here.

drivers/misc/vmw_balloon.c+7−7

This diff is large: its 57 lines aren’t shown here.

drivers/mmc/card/block.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/mmc/core/core.c+39−10

This diff is large: its 129 lines aren’t shown here.

drivers/mmc/core/host.h+0−21

This diff is large: its 28 lines aren’t shown here.

drivers/mmc/core/mmc.c+17−9

This diff is large: its 77 lines aren’t shown here.

drivers/mmc/core/sd.c+18−4

This diff is large: its 65 lines aren’t shown here.

drivers/mmc/core/sdio.c+4−3

This diff is large: its 31 lines aren’t shown here.

drivers/mmc/core/sdio_irq.c+8−2

This diff is large: its 24 lines aren’t shown here.

drivers/mmc/host/Kconfig+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/mmc/host/atmel-mci.c+10−3

This diff is large: its 46 lines aren’t shown here.

drivers/mmc/host/dw_mmc.c+75−69

This diff is large: its 240 lines aren’t shown here.

drivers/mmc/host/mmci.c+7−4

This diff is large: its 41 lines aren’t shown here.

drivers/mmc/host/mxcmmc.c+7−3

This diff is large: its 33 lines aren’t shown here.

drivers/mmc/host/mxs-mmc.c+9−1

This diff is large: its 69 lines aren’t shown here.

drivers/mmc/host/of_mmc_spi.c+2−2

This diff is large: its 11 lines aren’t shown here.

drivers/mmc/host/sdhci-of-esdhc.c+32−0

This diff is large: its 46 lines aren’t shown here.

drivers/mmc/host/sdhci-pci.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/mmc/host/sdhci-pltfm.c+9−1

This diff is large: its 24 lines aren’t shown here.

drivers/mmc/host/sh_mmcif.c+11−9

This diff is large: its 58 lines aren’t shown here.

drivers/mmc/host/tmio_mmc.h+6−1

This diff is large: its 29 lines aren’t shown here.

drivers/mmc/host/tmio_mmc_dma.c+14−2

This diff is large: its 37 lines aren’t shown here.

drivers/mmc/host/tmio_mmc_pio.c+5−1

This diff is large: its 28 lines aren’t shown here.

drivers/mtd/mtdcore.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/mtd/nand/atmel_nand.c+41−4

This diff is large: its 76 lines aren’t shown here.

drivers/mtd/nand/gpmi-nand/gpmi-lib.c+26−14

This diff is large: its 132 lines aren’t shown here.

drivers/mtd/nand/nand_base.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/bonding/bond_alb.c+9−18

This diff is large: its 80 lines aren’t shown here.

drivers/net/can/cc770/cc770.c+3−1

This diff is large: its 16 lines aren’t shown here.

drivers/net/can/cc770/cc770_isa.c+15−1

This diff is large: its 41 lines aren’t shown here.

drivers/net/can/flexcan.c+6−1

This diff is large: its 21 lines aren’t shown here.

drivers/net/can/pch_can.c+2−1

This diff is large: its 17 lines aren’t shown here.

drivers/net/can/sja1000/peak_pci.c+9−14

This diff is large: its 75 lines aren’t shown here.

drivers/net/can/ti_hecc.c+2−1

This diff is large: its 12 lines aren’t shown here.

drivers/net/can/usb/ems_usb.c+0−9

This diff is large: its 30 lines aren’t shown here.

drivers/net/dsa/mv88e6060.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/net/dsa/mv88e6123_61_65.c+18−4

This diff is large: its 38 lines aren’t shown here.

drivers/net/dsa/mv88e6131.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/net/dsa/mv88e6xxx.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/net/ethernet/3com/3c59x.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/broadcom/bcm63xx_enet.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/broadcom/bnx2x/bnx2x_cmn.c+2−3

This diff is large: its 26 lines aren’t shown here.

drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c+49−69

This diff is large: its 187 lines aren’t shown here.

drivers/net/ethernet/broadcom/bnx2x/bnx2x_link.c+169−129

This diff is large: its 448 lines aren’t shown here.

drivers/net/ethernet/broadcom/bnx2x/bnx2x_main.c+7−21

This diff is large: its 89 lines aren’t shown here.

drivers/net/ethernet/broadcom/bnx2x/bnx2x_reg.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.c+43−1

This diff is large: its 108 lines aren’t shown here.

drivers/net/ethernet/broadcom/bnx2x/bnx2x_sp.h+11−0

This diff is large: its 30 lines aren’t shown here.

drivers/net/ethernet/broadcom/bnx2x/bnx2x_stats.c+4−4

This diff is large: its 22 lines aren’t shown here.

drivers/net/ethernet/broadcom/tg3.c+16−20

This diff is large: its 61 lines aren’t shown here.

drivers/net/ethernet/brocade/bna/bnad_ethtool.c+4−6

This diff is large: its 45 lines aren’t shown here.

drivers/net/ethernet/cisco/enic/enic.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/cisco/enic/enic_main.c+22−16

This diff is large: its 158 lines aren’t shown here.

drivers/net/ethernet/emulex/benet/be_ethtool.c+1−5

This diff is large: its 14 lines aren’t shown here.

drivers/net/ethernet/emulex/benet/be_main.c+1−2

This diff is large: its 10 lines aren’t shown here.

drivers/net/ethernet/faraday/ftgmac100.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/net/ethernet/faraday/ftmac100.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/net/ethernet/freescale/fec.c+2−2

This diff is large: its 14 lines aren’t shown here.

drivers/net/ethernet/ibm/ehea/ehea_ethtool.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/ibm/ehea/ehea_main.c+16−16

This diff is large: its 137 lines aren’t shown here.

drivers/net/ethernet/ibm/ehea/ehea_qmr.c+6−8

This diff is large: its 56 lines aren’t shown here.

drivers/net/ethernet/intel/e1000/e1000_main.c+6−4

This diff is large: its 19 lines aren’t shown here.

drivers/net/ethernet/intel/igb/Makefile+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_82575.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_82575.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_defines.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_hw.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_mac.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_mac.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_mbx.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_mbx.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_nvm.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_nvm.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_phy.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_phy.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/e1000_regs.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/igb.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/igb_ethtool.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igb/igb_main.c+7−6

This diff is large: its 48 lines aren’t shown here.

drivers/net/ethernet/intel/igbvf/Makefile+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igbvf/defines.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igbvf/ethtool.c+2−3

This diff is large: its 17 lines aren’t shown here.

drivers/net/ethernet/intel/igbvf/igbvf.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igbvf/mbx.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igbvf/mbx.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igbvf/netdev.c+2−7

This diff is large: its 30 lines aren’t shown here.

drivers/net/ethernet/intel/igbvf/regs.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igbvf/vf.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/igbvf/vf.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/Makefile+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_82598.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_common.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_common.h+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_dcb.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_dcb.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82598.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82598.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82599.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82599.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c+10−3

This diff is large: its 36 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c+53−39

This diff is large: its 162 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_main.c+13−9

This diff is large: its 67 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_phy.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_phy.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c+6−2

This diff is large: its 29 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_type.h+17−17

This diff is large: its 89 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbe/ixgbe_x540.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbevf/Makefile+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbevf/defines.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbevf/ethtool.c+4−3

This diff is large: its 28 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbevf/ixgbevf.h+5−5

This diff is large: its 26 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbevf/ixgbevf_main.c+27−20

This diff is large: its 83 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbevf/mbx.c+3−2

This diff is large: its 26 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbevf/mbx.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbevf/regs.h+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbevf/vf.c+20−8

This diff is large: its 95 lines aren’t shown here.

drivers/net/ethernet/intel/ixgbevf/vf.h+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/net/ethernet/marvell/mv643xx_eth.c+14−0

This diff is large: its 49 lines aren’t shown here.

drivers/net/ethernet/marvell/skge.c+25−13

This diff is large: its 92 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/cmd.c+13−6

This diff is large: its 55 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/cq.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/en_ethtool.c+143−16

This diff is large: its 214 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/en_main.c+1−5

This diff is large: its 27 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/en_netdev.c+28−13

This diff is large: its 82 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/en_rx.c+14−4

This diff is large: its 54 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/eq.c+12−14

This diff is large: its 63 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/fw.c+0−7

This diff is large: its 28 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/fw.h+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/main.c+1−2

This diff is large: its 17 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/mcg.c+8−8

This diff is large: its 72 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/mlx4.h+5−3

This diff is large: its 30 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/mlx4_en.h+4−2

This diff is large: its 31 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/mr.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/pd.c+1−2

This diff is large: its 10 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/port.c+23−0

This diff is large: its 37 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/profile.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/qp.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/resource_tracker.c+15−45

This diff is large: its 187 lines aren’t shown here.

drivers/net/ethernet/mellanox/mlx4/srq.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/micrel/Kconfig+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/net/ethernet/micrel/ks8842.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/net/ethernet/micrel/ks8851.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/micrel/ks8851_mll.c+6−8

This diff is large: its 52 lines aren’t shown here.

drivers/net/ethernet/octeon/octeon_mgmt.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/net/ethernet/oki-semi/pch_gbe/pch_gbe_main.c+14−3

This diff is large: its 31 lines aren’t shown here.

drivers/net/ethernet/renesas/sh_eth.c+4−2

This diff is large: its 27 lines aren’t shown here.

drivers/net/ethernet/renesas/sh_eth.h+0−3

This diff is large: its 10 lines aren’t shown here.

drivers/net/ethernet/stmicro/stmmac/common.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/net/ethernet/stmicro/stmmac/enh_desc.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/stmicro/stmmac/norm_desc.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/stmicro/stmmac/stmmac.h+3−2

This diff is large: its 16 lines aren’t shown here.

drivers/net/ethernet/stmicro/stmmac/stmmac_ethtool.c+6−1

This diff is large: its 44 lines aren’t shown here.

drivers/net/ethernet/stmicro/stmmac/stmmac_main.c+107−98

This diff is large: its 330 lines aren’t shown here.

drivers/net/ethernet/stmicro/stmmac/stmmac_mdio.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/stmicro/stmmac/stmmac_pci.c+5−7

This diff is large: its 29 lines aren’t shown here.

drivers/net/ethernet/stmicro/stmmac/stmmac_platform.c+10−13

This diff is large: its 41 lines aren’t shown here.

drivers/net/ethernet/ti/cpmac.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/net/ethernet/ti/davinci_emac.c+2−1

This diff is large: its 11 lines aren’t shown here.

drivers/net/ethernet/ti/davinci_mdio.c+1−1

This diff is large: its 11 lines aren’t shown here.

drivers/net/ethernet/toshiba/Kconfig+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/ethernet/via/via-velocity.c+0−3

This diff is large: its 10 lines aren’t shown here.

drivers/net/ethernet/xscale/ixp4xx_eth.c+2−1

This diff is large: its 10 lines aren’t shown here.

drivers/net/hyperv/netvsc_drv.c+12−11

This diff is large: its 91 lines aren’t shown here.

drivers/net/hyperv/rndis_filter.c+32−0

This diff is large: its 46 lines aren’t shown here.

drivers/net/macvlan.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/net/phy/mdio_bus.c+2−3

This diff is large: its 15 lines aren’t shown here.

drivers/net/team/team.c+90−46

This diff is large: its 308 lines aren’t shown here.

drivers/net/tokenring/Kconfig+4−1

This diff is large: its 19 lines aren’t shown here.

drivers/net/usb/ipheth.c+5−0

This diff is large: its 19 lines aren’t shown here.

drivers/net/veth.c+3−1

This diff is large: its 11 lines aren’t shown here.

drivers/net/wireless/ath/ath9k/ar9003_mac.c+3−2

This diff is large: its 14 lines aren’t shown here.

drivers/net/wireless/ath/ath9k/hw.c+5−2

This diff is large: its 19 lines aren’t shown here.

drivers/net/wireless/ath/ath9k/init.c+5−4

This diff is large: its 23 lines aren’t shown here.

drivers/net/wireless/ath/ath9k/mac.c+3−2

This diff is large: its 14 lines aren’t shown here.

drivers/net/wireless/ath/ath9k/rc.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/wireless/ath/ath9k/recv.c+8−0

This diff is large: its 15 lines aren’t shown here.

drivers/net/wireless/b43/Kconfig+6−0

This diff is large: its 13 lines aren’t shown here.

drivers/net/wireless/b43/main.c+6−1

This diff is large: its 30 lines aren’t shown here.

drivers/net/wireless/brcm80211/brcmfmac/wl_cfg80211.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c+4−36

This diff is large: its 60 lines aren’t shown here.

drivers/net/wireless/brcm80211/brcmsmac/main.c+9−1

This diff is large: its 23 lines aren’t shown here.

drivers/net/wireless/ipw2x00/ipw2200.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/net/wireless/iwlwifi/iwl-agn-tx.c+10−4

This diff is large: its 43 lines aren’t shown here.

drivers/net/wireless/iwlwifi/iwl-commands.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/net/wireless/iwlwifi/iwl-scan.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/net/wireless/iwlwifi/iwl-trans-pcie-rx.c+2−2

This diff is large: its 14 lines aren’t shown here.

drivers/net/wireless/iwlwifi/iwl-trans-pcie.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/net/wireless/mwifiex/init.c+2−1

This diff is large: its 10 lines aren’t shown here.

drivers/net/wireless/mwifiex/main.c+8−4

This diff is large: its 26 lines aren’t shown here.

drivers/net/wireless/mwifiex/sta_ioctl.c+7−1

This diff is large: its 36 lines aren’t shown here.

drivers/net/wireless/mwl8k.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/net/wireless/rt2x00/rt2800lib.c+4−4

This diff is large: its 22 lines aren’t shown here.

drivers/net/wireless/rt2x00/rt2800pci.c+8−20

This diff is large: its 42 lines aren’t shown here.

drivers/net/wireless/rtlwifi/pci.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/net/wireless/zd1211rw/zd_mac.c+8−0

This diff is large: its 15 lines aren’t shown here.

drivers/net/xen-netfront.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/pci/iov.c+1−2

This diff is large: its 17 lines aren’t shown here.

drivers/pci/pci.c+3−3

This diff is large: its 27 lines aren’t shown here.

drivers/pci/probe.c+5−0

This diff is large: its 12 lines aren’t shown here.

drivers/pci/remove.c+22−6

This diff is large: its 56 lines aren’t shown here.

drivers/pci/xen-pcifront.c+5−5

This diff is large: its 45 lines aren’t shown here.

drivers/pcmcia/ds.c+1−3

This diff is large: its 12 lines aren’t shown here.

drivers/pcmcia/sa1111_generic.c+2−1

This diff is large: its 10 lines aren’t shown here.

drivers/pinctrl/core.c+32−20

This diff is large: its 113 lines aren’t shown here.

drivers/pinctrl/core.h+3−0

This diff is large: its 10 lines aren’t shown here.

drivers/pinctrl/pinconf.c+4−2

This diff is large: its 21 lines aren’t shown here.

drivers/pinctrl/pinconf.h+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/pinctrl/pinmux.c+43−38

This diff is large: its 215 lines aren’t shown here.

drivers/pinctrl/pinmux.h+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/platform/x86/ibm_rtl.c+2−13

This diff is large: its 29 lines aren’t shown here.

drivers/platform/x86/intel_ips.c+2−13

This diff is large: its 29 lines aren’t shown here.

drivers/power/bq27x00_battery.c+5−10

This diff is large: its 40 lines aren’t shown here.

drivers/power/charger-manager.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/power/lp8727_charger.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/regulator/core.c+2−0

This diff is large: its 9 lines aren’t shown here.

drivers/regulator/max8649.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/regulator/mc13xxx-regulator-core.c+2−0

This diff is large: its 16 lines aren’t shown here.

drivers/regulator/of_regulator.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/rtc/Kconfig+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/rtc/rtc-at91sam9.c+10−3

This diff is large: its 41 lines aren’t shown here.

drivers/rtc/rtc-sa1100.c+113−182

This diff is large: its 462 lines aren’t shown here.

drivers/s390/block/dasd.c+6−0

This diff is large: its 13 lines aren’t shown here.

drivers/s390/block/dasd_alias.c+1−63

This diff is large: its 102 lines aren’t shown here.

drivers/s390/block/dasd_eckd.c+37−26

This diff is large: its 120 lines aren’t shown here.

drivers/s390/block/dasd_int.h+2−0

This diff is large: its 16 lines aren’t shown here.

drivers/s390/char/con3215.c+15−7

This diff is large: its 64 lines aren’t shown here.

drivers/scsi/Kconfig+0−5

This diff is large: its 17 lines aren’t shown here.

drivers/scsi/bfa/bfa_defs_svc.h+1−6

This diff is large: its 14 lines aren’t shown here.

drivers/scsi/bfa/bfa_fc.h+0−155

This diff is large: its 162 lines aren’t shown here.

drivers/scsi/bfa/bfa_fcpim.c+5−411

This diff is large: its 556 lines aren’t shown here.

drivers/scsi/bfa/bfa_fcpim.h+0−7

This diff is large: its 35 lines aren’t shown here.

drivers/scsi/bfa/bfa_svc.h+0−5

This diff is large: its 12 lines aren’t shown here.

drivers/scsi/bfa/bfad.c+2−0

This diff is large: its 16 lines aren’t shown here.

drivers/scsi/bfa/bfad_attr.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/scsi/bfa/bfad_bsg.c+24−3

This diff is large: its 43 lines aren’t shown here.

drivers/scsi/bfa/bfad_drv.h+2−0

This diff is large: its 16 lines aren’t shown here.

drivers/scsi/bfa/bfad_im.c+56−0

This diff is large: its 81 lines aren’t shown here.

drivers/scsi/bfa/bfad_im.h+27−0

This diff is large: its 39 lines aren’t shown here.

drivers/scsi/cxgbi/libcxgbi.c+3−2

This diff is large: its 12 lines aren’t shown here.

drivers/scsi/device_handler/scsi_dh_alua.c+5−0

This diff is large: its 12 lines aren’t shown here.

drivers/scsi/device_handler/scsi_dh_rdac.c+2−0

This diff is large: its 9 lines aren’t shown here.

drivers/scsi/fcoe/fcoe.c+25−21

This diff is large: its 159 lines aren’t shown here.

drivers/scsi/fcoe/fcoe.h+1−3

This diff is large: its 11 lines aren’t shown here.

drivers/scsi/hpsa.c+2−0

This diff is large: its 10 lines aren’t shown here.

drivers/scsi/isci/firmware/Makefile+0−19

This diff is large: its 20 lines aren’t shown here.

drivers/scsi/isci/firmware/README+0−36

This diff is large: its 37 lines aren’t shown here.

drivers/scsi/isci/firmware/create_fw.c+0−99

This diff is large: its 100 lines aren’t shown here.

drivers/scsi/isci/firmware/create_fw.h+0−77

This diff is large: its 78 lines aren’t shown here.

drivers/scsi/isci/host.c+263−77

This diff is large: its 502 lines aren’t shown here.

drivers/scsi/isci/host.h+26−1

This diff is large: its 38 lines aren’t shown here.

drivers/scsi/isci/init.c+21−4

This diff is large: its 67 lines aren’t shown here.

drivers/scsi/isci/isci.h+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/scsi/isci/phy.c+111−61

This diff is large: its 272 lines aren’t shown here.

drivers/scsi/isci/port.c+58−46

This diff is large: its 242 lines aren’t shown here.

drivers/scsi/isci/port.h+10−0

This diff is large: its 38 lines aren’t shown here.

drivers/scsi/isci/port_config.c+22−13

This diff is large: its 63 lines aren’t shown here.

drivers/scsi/isci/probe_roms.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/scsi/isci/probe_roms.h+86−3

This diff is large: its 110 lines aren’t shown here.

drivers/scsi/isci/remote_device.c+7−3

This diff is large: its 38 lines aren’t shown here.

drivers/scsi/isci/task.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/scsi/isci/task.h+3−4

This diff is large: its 30 lines aren’t shown here.

drivers/scsi/libfc/fc_disc.c+3−3

This diff is large: its 27 lines aren’t shown here.

drivers/scsi/libfc/fc_elsct.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/scsi/libfc/fc_exch.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/scsi/libfc/fc_fcp.c+1−3

This diff is large: its 18 lines aren’t shown here.

drivers/scsi/libfc/fc_lport.c+3−2

This diff is large: its 19 lines aren’t shown here.

drivers/scsi/libfc/fc_rport.c+5−5

This diff is large: its 38 lines aren’t shown here.

drivers/scsi/mac_esp.c+1−2

This diff is large: its 10 lines aren’t shown here.

drivers/scsi/mac_scsi.c+0−6

This diff is large: its 20 lines aren’t shown here.

drivers/scsi/megaraid.c+8−5

This diff is large: its 28 lines aren’t shown here.

drivers/scsi/megaraid/megaraid_sas.h+3−5

This diff is large: its 29 lines aren’t shown here.

drivers/scsi/megaraid/megaraid_sas_base.c+3−142

This diff is large: its 243 lines aren’t shown here.

drivers/scsi/megaraid/megaraid_sas_fp.c+3−1

This diff is large: its 11 lines aren’t shown here.

drivers/scsi/qla4xxx/ql4_def.h+3−0

This diff is large: its 17 lines aren’t shown here.

drivers/scsi/qla4xxx/ql4_init.c+3−0

This diff is large: its 10 lines aren’t shown here.

drivers/scsi/qla4xxx/ql4_mbx.c+7−0

This diff is large: its 14 lines aren’t shown here.

drivers/scsi/qla4xxx/ql4_nx.c+7−21

This diff is large: its 49 lines aren’t shown here.

drivers/scsi/qla4xxx/ql4_nx.h+19−3

This diff is large: its 32 lines aren’t shown here.

drivers/scsi/qla4xxx/ql4_os.c+326−185

This diff is large: its 680 lines aren’t shown here.

drivers/scsi/qla4xxx/ql4_version.h+1−1

This diff is large: its 6 lines aren’t shown here.

drivers/scsi/scsi_lib.c+1−6

This diff is large: its 17 lines aren’t shown here.

drivers/scsi/scsi_transport_fc.c+2−1

This diff is large: its 10 lines aren’t shown here.

drivers/scsi/sg.c+11−14

This diff is large: its 46 lines aren’t shown here.

drivers/scsi/sym53c8xx_2/sym_glue.c+4−0

This diff is large: its 11 lines aren’t shown here.

drivers/spi/Kconfig+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/spi/spi-dw-mid.c+4−4

This diff is large: its 34 lines aren’t shown here.

drivers/spi/spi-ep93xx.c+6−3

This diff is large: its 51 lines aren’t shown here.

drivers/spi/spi-pl022.c+4−4

This diff is large: its 32 lines aren’t shown here.

drivers/spi/spi-topcliff-pch.c+5−5

This diff is large: its 45 lines aren’t shown here.

drivers/ssb/driver_pcicore.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/staging/Kconfig+0−4

This diff is large: its 18 lines aren’t shown here.

drivers/staging/Makefile+0−2

This diff is large: its 16 lines aren’t shown here.

drivers/staging/android/Kconfig+1−4

This diff is large: its 19 lines aren’t shown here.

drivers/staging/android/Makefile+0−1

This diff is large: its 6 lines aren’t shown here.

drivers/staging/android/android_pmem.h+0−93

This diff is large: its 94 lines aren’t shown here.

drivers/staging/android/binder.c+11−2

This diff is large: its 66 lines aren’t shown here.

drivers/staging/android/lowmemorykiller.c+4−1

This diff is large: its 26 lines aren’t shown here.

drivers/staging/android/pmem.c+0−1345

This diff is large: its 1346 lines aren’t shown here.

drivers/staging/asus_oled/asus_oled.c+9−4

This diff is large: its 36 lines aren’t shown here.

drivers/staging/gma500/Kconfig+0−33

This diff is large: its 34 lines aren’t shown here.

drivers/staging/gma500/Makefile+0−52

This diff is large: its 53 lines aren’t shown here.

drivers/staging/gma500/TODO+0−15

This diff is large: its 16 lines aren’t shown here.

drivers/staging/gma500/accel_2d.c+0−414

This diff is large: its 415 lines aren’t shown here.

drivers/staging/gma500/backlight.c+0−49

This diff is large: its 50 lines aren’t shown here.

drivers/staging/gma500/cdv_device.c+0−350

This diff is large: its 351 lines aren’t shown here.

drivers/staging/gma500/cdv_device.h+0−36

This diff is large: its 37 lines aren’t shown here.

drivers/staging/gma500/cdv_intel_crt.c+0−326

This diff is large: its 327 lines aren’t shown here.

drivers/staging/gma500/cdv_intel_display.c+0−1508

This diff is large: its 1509 lines aren’t shown here.

drivers/staging/gma500/cdv_intel_hdmi.c+0−376

This diff is large: its 377 lines aren’t shown here.

drivers/staging/gma500/cdv_intel_lvds.c+0−721

This diff is large: its 722 lines aren’t shown here.

drivers/staging/gma500/displays/hdmi.h+0−33

This diff is large: its 34 lines aren’t shown here.

drivers/staging/gma500/displays/pyr_cmd.h+0−34

This diff is large: its 35 lines aren’t shown here.

drivers/staging/gma500/displays/pyr_vid.h+0−34

This diff is large: its 35 lines aren’t shown here.

drivers/staging/gma500/displays/tmd_cmd.h+0−34

This diff is large: its 35 lines aren’t shown here.

drivers/staging/gma500/displays/tmd_vid.h+0−34

This diff is large: its 35 lines aren’t shown here.

drivers/staging/gma500/displays/tpo_cmd.h+0−35

This diff is large: its 36 lines aren’t shown here.

drivers/staging/gma500/displays/tpo_vid.h+0−33

This diff is large: its 34 lines aren’t shown here.

drivers/staging/gma500/framebuffer.c+0−856

This diff is large: its 857 lines aren’t shown here.

drivers/staging/gma500/framebuffer.h+0−48

This diff is large: its 49 lines aren’t shown here.

drivers/staging/gma500/gem.c+0−292

This diff is large: its 293 lines aren’t shown here.

drivers/staging/gma500/gem_glue.c+0−89

This diff is large: its 90 lines aren’t shown here.

drivers/staging/gma500/gem_glue.h+0−2

This diff is large: its 3 lines aren’t shown here.

drivers/staging/gma500/gtt.c+0−553

This diff is large: its 554 lines aren’t shown here.

drivers/staging/gma500/gtt.h+0−64

This diff is large: its 65 lines aren’t shown here.

drivers/staging/gma500/intel_bios.c+0−303

This diff is large: its 304 lines aren’t shown here.

drivers/staging/gma500/intel_bios.h+0−430

This diff is large: its 431 lines aren’t shown here.

drivers/staging/gma500/intel_i2c.c+0−170

This diff is large: its 171 lines aren’t shown here.

drivers/staging/gma500/intel_opregion.c+0−81

This diff is large: its 82 lines aren’t shown here.

drivers/staging/gma500/mdfld_device.c+0−714

This diff is large: its 715 lines aren’t shown here.

drivers/staging/gma500/mdfld_dsi_dbi.c+0−761

This diff is large: its 762 lines aren’t shown here.

drivers/staging/gma500/mdfld_dsi_dbi.h+0−173

This diff is large: its 174 lines aren’t shown here.

drivers/staging/gma500/mdfld_dsi_dbi_dpu.c+0−778

This diff is large: its 779 lines aren’t shown here.

drivers/staging/gma500/mdfld_dsi_dbi_dpu.h+0−154

This diff is large: its 155 lines aren’t shown here.

drivers/staging/gma500/mdfld_dsi_dpi.c+0−805

This diff is large: its 806 lines aren’t shown here.

drivers/staging/gma500/mdfld_dsi_dpi.h+0−78

This diff is large: its 79 lines aren’t shown here.

drivers/staging/gma500/mdfld_dsi_output.c+0−1014

This diff is large: its 1015 lines aren’t shown here.

drivers/staging/gma500/mdfld_dsi_output.h+0−138

This diff is large: its 139 lines aren’t shown here.

drivers/staging/gma500/mdfld_dsi_pkg_sender.c+0−1484

This diff is large: its 1485 lines aren’t shown here.

drivers/staging/gma500/mdfld_dsi_pkg_sender.h+0−184

This diff is large: its 185 lines aren’t shown here.

drivers/staging/gma500/mdfld_intel_display.c+0−1404

This diff is large: its 1405 lines aren’t shown here.

drivers/staging/gma500/mdfld_msic.h+0−31

This diff is large: its 32 lines aren’t shown here.

drivers/staging/gma500/mdfld_output.c+0−171

This diff is large: its 172 lines aren’t shown here.

drivers/staging/gma500/mdfld_output.h+0−41

This diff is large: its 42 lines aren’t shown here.

drivers/staging/gma500/mdfld_pyr_cmd.c+0−558

This diff is large: its 559 lines aren’t shown here.

drivers/staging/gma500/mdfld_tmd_vid.c+0−206

This diff is large: its 207 lines aren’t shown here.

drivers/staging/gma500/mdfld_tpo_cmd.c+0−509

This diff is large: its 510 lines aren’t shown here.

drivers/staging/gma500/mdfld_tpo_vid.c+0−140

This diff is large: its 141 lines aren’t shown here.

drivers/staging/gma500/medfield.h+0−268

This diff is large: its 269 lines aren’t shown here.

drivers/staging/gma500/mid_bios.c+0−270

This diff is large: its 271 lines aren’t shown here.

drivers/staging/gma500/mid_bios.h+0−21

This diff is large: its 22 lines aren’t shown here.

drivers/staging/gma500/mmu.c+0−858

This diff is large: its 859 lines aren’t shown here.

drivers/staging/gma500/mrst.h+0−252

This diff is large: its 253 lines aren’t shown here.

drivers/staging/gma500/mrst_crtc.c+0−604

This diff is large: its 605 lines aren’t shown here.

drivers/staging/gma500/mrst_device.c+0−634

This diff is large: its 635 lines aren’t shown here.

drivers/staging/gma500/mrst_hdmi.c+0−852

This diff is large: its 853 lines aren’t shown here.

drivers/staging/gma500/mrst_hdmi_i2c.c+0−328

This diff is large: its 329 lines aren’t shown here.

drivers/staging/gma500/mrst_lvds.c+0−407

This diff is large: its 408 lines aren’t shown here.

drivers/staging/gma500/power.c+0−318

This diff is large: its 319 lines aren’t shown here.

drivers/staging/gma500/power.h+0−67

This diff is large: its 68 lines aren’t shown here.

drivers/staging/gma500/psb_device.c+0−321

This diff is large: its 322 lines aren’t shown here.

drivers/staging/gma500/psb_drm.h+0−219

This diff is large: its 220 lines aren’t shown here.

drivers/staging/gma500/psb_drv.c+0−1230

This diff is large: its 1231 lines aren’t shown here.

drivers/staging/gma500/psb_drv.h+0−952

This diff is large: its 953 lines aren’t shown here.

drivers/staging/gma500/psb_intel_display.c+0−1429

This diff is large: its 1430 lines aren’t shown here.

drivers/staging/gma500/psb_intel_display.h+0−28

This diff is large: its 29 lines aren’t shown here.

drivers/staging/gma500/psb_intel_drv.h+0−230

This diff is large: its 231 lines aren’t shown here.

drivers/staging/gma500/psb_intel_lvds.c+0−854

This diff is large: its 855 lines aren’t shown here.

drivers/staging/gma500/psb_intel_modes.c+0−77

This diff is large: its 78 lines aren’t shown here.

drivers/staging/gma500/psb_intel_reg.h+0−1235

This diff is large: its 1236 lines aren’t shown here.

drivers/staging/gma500/psb_intel_sdvo.c+0−1293

This diff is large: its 1294 lines aren’t shown here.

drivers/staging/gma500/psb_intel_sdvo_regs.h+0−338

This diff is large: its 339 lines aren’t shown here.

drivers/staging/gma500/psb_irq.c+0−627

This diff is large: its 628 lines aren’t shown here.

drivers/staging/gma500/psb_irq.h+0−45

This diff is large: its 46 lines aren’t shown here.

drivers/staging/gma500/psb_lid.c+0−88

This diff is large: its 89 lines aren’t shown here.

drivers/staging/gma500/psb_reg.h+0−582

This diff is large: its 583 lines aren’t shown here.

drivers/staging/media/go7007/go7007-usb.c+1−0

This diff is large: its 5 lines aren’t shown here.

drivers/staging/omapdrm/Makefile+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/staging/omapdrm/omap_crtc.c+45−146

This diff is large: its 292 lines aren’t shown here.

drivers/staging/omapdrm/omap_drv.c+48−33

This diff is large: its 144 lines aren’t shown here.

drivers/staging/omapdrm/omap_drv.h+46−6

This diff is large: its 86 lines aren’t shown here.

drivers/staging/omapdrm/omap_fb.c+167−57

This diff is large: its 313 lines aren’t shown here.

drivers/staging/omapdrm/omap_fbdev.c+37−22

This diff is large: its 116 lines aren’t shown here.

drivers/staging/omapdrm/omap_gem.c+19−4

This diff is large: its 65 lines aren’t shown here.

drivers/staging/omapdrm/omap_plane.c+344−0

This diff is large: its 345 lines aren’t shown here.

drivers/staging/omapdrm/omap_priv.h+10−2

This diff is large: its 25 lines aren’t shown here.

drivers/staging/pohmelfs/Kconfig+0−20

This diff is large: its 21 lines aren’t shown here.

drivers/staging/pohmelfs/Makefile+0−3

This diff is large: its 4 lines aren’t shown here.

drivers/staging/pohmelfs/config.c+0−611

This diff is large: its 612 lines aren’t shown here.

drivers/staging/pohmelfs/crypto.c+0−878

This diff is large: its 879 lines aren’t shown here.

drivers/staging/pohmelfs/dir.c+0−1102

This diff is large: its 1103 lines aren’t shown here.

drivers/staging/pohmelfs/inode.c+0−2055

This diff is large: its 2056 lines aren’t shown here.

drivers/staging/pohmelfs/lock.c+0−182

This diff is large: its 183 lines aren’t shown here.

drivers/staging/pohmelfs/mcache.c+0−171

This diff is large: its 172 lines aren’t shown here.

drivers/staging/pohmelfs/net.c+0−1209

This diff is large: its 1210 lines aren’t shown here.

drivers/staging/pohmelfs/netfs.h+0−919

This diff is large: its 920 lines aren’t shown here.

drivers/staging/pohmelfs/path_entry.c+0−120

This diff is large: its 121 lines aren’t shown here.

drivers/staging/pohmelfs/trans.c+0−706

This diff is large: its 707 lines aren’t shown here.

drivers/staging/rtl8712/drv_types.h+7−0

This diff is large: its 28 lines aren’t shown here.

drivers/staging/rtl8712/hal_init.c+43−19

This diff is large: its 109 lines aren’t shown here.

drivers/staging/rtl8712/os_intfs.c+11−3

This diff is large: its 65 lines aren’t shown here.

drivers/staging/rtl8712/rtl8712_hal.h+1−0

This diff is large: its 7 lines aren’t shown here.

drivers/staging/rtl8712/rtl871x_sta_mgt.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/staging/rtl8712/usb_intf.c+7−3

This diff is large: its 40 lines aren’t shown here.

drivers/staging/tidspbridge/core/tiomap3430.c+0−2

This diff is large: its 9 lines aren’t shown here.

drivers/staging/tidspbridge/rmgr/drv_interface.c+35−23

This diff is large: its 85 lines aren’t shown here.

drivers/staging/usbip/stub_main.c+2−2

This diff is large: its 19 lines aren’t shown here.

drivers/staging/zcache/zcache-main.c+12−13

This diff is large: its 86 lines aren’t shown here.

drivers/target/iscsi/iscsi_target.c+43−15

This diff is large: its 137 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_auth.c+20−16

This diff is large: its 130 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_configfs.c+4−8

This diff is large: its 35 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_core.h+4−2

This diff is large: its 27 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_device.c+1−2

This diff is large: its 10 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_erl0.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_erl1.c+3−3

This diff is large: its 27 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_erl2.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_login.c+47−15

This diff is large: its 171 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_nego.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_nodeattrib.c+1−2

This diff is large: its 17 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_stat.c+8−9

This diff is large: its 80 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_tmr.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_tpg.c+2−4

This diff is large: its 21 lines aren’t shown here.

drivers/target/iscsi/iscsi_target_util.c+14−5

This diff is large: its 47 lines aren’t shown here.

drivers/target/loopback/tcm_loop.c+11−22

This diff is large: its 92 lines aren’t shown here.

drivers/target/loopback/tcm_loop.h+1−10

This diff is large: its 18 lines aren’t shown here.

drivers/target/target_core_alua.c+7−8

This diff is large: its 53 lines aren’t shown here.

drivers/target/target_core_cdb.c+50−40

This diff is large: its 250 lines aren’t shown here.

drivers/target/target_core_cdb.h+0−14

This diff is large: its 15 lines aren’t shown here.

drivers/target/target_core_configfs.c+25−17

This diff is large: its 144 lines aren’t shown here.

drivers/target/target_core_device.c+18−25

This diff is large: its 118 lines aren’t shown here.

drivers/target/target_core_fabric_configfs.c+4−8

This diff is large: its 33 lines aren’t shown here.

drivers/target/target_core_fabric_lib.c+5−8

This diff is large: its 39 lines aren’t shown here.

drivers/target/target_core_file.c+7−8

This diff is large: its 57 lines aren’t shown here.

drivers/target/target_core_hba.c+3−4

This diff is large: its 15 lines aren’t shown here.

drivers/target/target_core_hba.h+0−7

This diff is large: its 8 lines aren’t shown here.

drivers/target/target_core_iblock.c+12−6

This diff is large: its 60 lines aren’t shown here.

drivers/target/target_core_internal.h+123−0

This diff is large: its 124 lines aren’t shown here.

drivers/target/target_core_pr.c+25−42

This diff is large: its 234 lines aren’t shown here.

drivers/target/target_core_pr.h+0−2

This diff is large: its 9 lines aren’t shown here.

drivers/target/target_core_pscsi.c+11−13

This diff is large: its 103 lines aren’t shown here.

drivers/target/target_core_rd.c+2−4

This diff is large: its 20 lines aren’t shown here.

drivers/target/target_core_stat.c+4−5

This diff is large: its 26 lines aren’t shown here.

drivers/target/target_core_stat.h+0−8

This diff is large: its 9 lines aren’t shown here.

drivers/target/target_core_tmr.c+22−14

This diff is large: its 80 lines aren’t shown here.

drivers/target/target_core_tpg.c+4−8

This diff is large: its 27 lines aren’t shown here.

drivers/target/target_core_transport.c+270−175

This diff is large: its 907 lines aren’t shown here.

drivers/target/target_core_ua.c+2−4

This diff is large: its 16 lines aren’t shown here.

drivers/target/tcm_fc/tfc_cmd.c+14−48

This diff is large: its 111 lines aren’t shown here.

drivers/target/tcm_fc/tfc_conf.c+1−5

This diff is large: its 14 lines aren’t shown here.

drivers/target/tcm_fc/tfc_io.c+1−4

This diff is large: its 12 lines aren’t shown here.

drivers/target/tcm_fc/tfc_sess.c+1−4

This diff is large: its 12 lines aren’t shown here.

drivers/thermal/thermal_sys.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/tty/serial/8250/8250.crenamed from drivers/tty/serial/8250.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/tty/serial/8250/8250.hrenamed from drivers/tty/serial/8250.h+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_accent.crenamed from drivers/tty/serial/8250_accent.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_acorn.crenamed from drivers/tty/serial/8250_acorn.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_boca.crenamed from drivers/tty/serial/8250_boca.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_dw.crenamed from drivers/tty/serial/8250_dw.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_early.crenamed from drivers/tty/serial/8250_early.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_exar_st16c554.crenamed from drivers/tty/serial/8250_exar_st16c554.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_fourport.crenamed from drivers/tty/serial/8250_fourport.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_fsl.crenamed from drivers/tty/serial/8250_fsl.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_gsc.crenamed from drivers/tty/serial/8250_gsc.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_hp300.crenamed from drivers/tty/serial/8250_hp300.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_hub6.crenamed from drivers/tty/serial/8250_hub6.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_mca.crenamed from drivers/tty/serial/8250_mca.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_pci.crenamed from drivers/tty/serial/8250_pci.c+0−0

File renamed without changes.

drivers/tty/serial/8250/8250_pnp.crenamed from drivers/tty/serial/8250_pnp.c+0−0

File renamed without changes.

drivers/tty/serial/8250/Kconfig+280−0

This diff is large: its 281 lines aren’t shown here.

drivers/tty/serial/8250/Makefile+20−0

This diff is large: its 21 lines aren’t shown here.

drivers/tty/serial/8250/serial_cs.crenamed from drivers/tty/serial/serial_cs.c+0−0

File renamed without changes.

drivers/tty/serial/Kconfig+1−282

This diff is large: its 297 lines aren’t shown here.

drivers/tty/serial/Makefile+3−17

This diff is large: its 34 lines aren’t shown here.

drivers/tty/serial/amba-pl011.c+32−6

This diff is large: its 120 lines aren’t shown here.

drivers/tty/serial/jsm/jsm_driver.c+1−0

This diff is large: its 8 lines aren’t shown here.

drivers/tty/serial/max3107-aava.c+0−344

This diff is large: its 345 lines aren’t shown here.

drivers/tty/serial/omap-serial.c+27−7

This diff is large: its 109 lines aren’t shown here.

drivers/tty/serial/pch_uart.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/tty/serial/samsung.c+2−1

This diff is large: its 10 lines aren’t shown here.

drivers/tty/serial/serial_core.c+3−3

This diff is large: its 15 lines aren’t shown here.

drivers/tty/serial/sh-sci.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/tty/tty_port.c+7−5

This diff is large: its 27 lines aren’t shown here.

drivers/tty/vt/vt_ioctl.c+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/usb/class/cdc-wdm.c+38−21

This diff is large: its 188 lines aren’t shown here.

drivers/usb/core/hcd-pci.c+4−1

This diff is large: its 12 lines aren’t shown here.

drivers/usb/core/hcd.c+4−2

This diff is large: its 13 lines aren’t shown here.

drivers/usb/core/hub.c+17−13

This diff is large: its 47 lines aren’t shown here.

drivers/usb/dwc3/ep0.c+4−11

This diff is large: its 33 lines aren’t shown here.

drivers/usb/dwc3/gadget.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/usb/gadget/composite.c+3−4

This diff is large: its 17 lines aren’t shown here.

drivers/usb/gadget/epautoconf.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/usb/gadget/f_loopback.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/usb/gadget/f_mass_storage.c+5−5

This diff is large: its 21 lines aren’t shown here.

drivers/usb/gadget/fsl_udc_core.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/usb/gadget/langwell_udc.c+10−97

This diff is large: its 300 lines aren’t shown here.

drivers/usb/gadget/langwell_udc.h+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/usb/gadget/storage_common.c+3−3

This diff is large: its 20 lines aren’t shown here.

drivers/usb/host/Kconfig+4−4

This diff is large: its 36 lines aren’t shown here.

drivers/usb/host/ehci-fsl.c+10−3

This diff is large: its 39 lines aren’t shown here.

drivers/usb/host/ehci-fsl.h+1−0

This diff is large: its 7 lines aren’t shown here.

drivers/usb/host/ehci-pci.c+6−0

This diff is large: its 20 lines aren’t shown here.

drivers/usb/host/ehci-xilinx-of.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/usb/host/ohci-at91.c+22−2

This diff is large: its 57 lines aren’t shown here.

drivers/usb/host/ohci-dbg.c+10−2

This diff is large: its 33 lines aren’t shown here.

drivers/usb/host/ohci-pci.c+4−0

This diff is large: its 11 lines aren’t shown here.

drivers/usb/host/pci-quirks.c+17−0

This diff is large: its 30 lines aren’t shown here.

drivers/usb/host/xhci-hub.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/usb/host/xhci-mem.c+24−8

This diff is large: its 59 lines aren’t shown here.

drivers/usb/host/xhci-ring.c+4−2

This diff is large: its 27 lines aren’t shown here.

drivers/usb/host/xhci.c+5−0

This diff is large: its 12 lines aren’t shown here.

drivers/usb/misc/emi26.c+0−3

This diff is large: its 10 lines aren’t shown here.

drivers/usb/misc/emi62.c+0−3

This diff is large: its 10 lines aren’t shown here.

drivers/usb/misc/usbsevseg.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/usb/musb/davinci.c+0−3

This diff is large: its 10 lines aren’t shown here.

drivers/usb/musb/musb_core.c+3−2

This diff is large: its 19 lines aren’t shown here.

drivers/usb/musb/musb_io.h+2−1

This diff is large: its 10 lines aren’t shown here.

drivers/usb/musb/omap2430.c+2−2

This diff is large: its 25 lines aren’t shown here.

drivers/usb/musb/ux500_dma.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/usb/otg/Kconfig+2−16

This diff is large: its 39 lines aren’t shown here.

drivers/usb/otg/Makefile+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/usb/otg/langwell_otg.c+0−2347

This diff is large: its 2348 lines aren’t shown here.

drivers/usb/otg/mv_otg.c+2−0

This diff is large: its 16 lines aren’t shown here.

drivers/usb/renesas_usbhs/fifo.c+2−2

This diff is large: its 13 lines aren’t shown here.

drivers/usb/renesas_usbhs/mod_gadget.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/usb/serial/cp210x.c+77−30

This diff is large: its 180 lines aren’t shown here.

drivers/usb/serial/ftdi_sio.c+11−4

This diff is large: its 62 lines aren’t shown here.

drivers/usb/serial/ftdi_sio_ids.h+26−0

This diff is large: its 44 lines aren’t shown here.

drivers/usb/serial/io_ti.c+2−8

This diff is large: its 32 lines aren’t shown here.

drivers/usb/serial/kobil_sct.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/usb/serial/option.c+30−15

This diff is large: its 133 lines aren’t shown here.

drivers/usb/serial/qcaux.c+6−1

This diff is large: its 21 lines aren’t shown here.

drivers/usb/serial/qcserial.c+14−2

This diff is large: its 38 lines aren’t shown here.

drivers/usb/serial/ti_usb_3410_5052.c+4−2

This diff is large: its 34 lines aren’t shown here.

drivers/usb/serial/ti_usb_3410_5052.h+4−0

This diff is large: its 11 lines aren’t shown here.

drivers/usb/storage/realtek_cr.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/usb/storage/usb.c+31−59

This diff is large: its 138 lines aren’t shown here.

drivers/usb/storage/usb.h+4−3

This diff is large: its 28 lines aren’t shown here.

drivers/usb/usb-skeleton.c+1−17

This diff is large: its 68 lines aren’t shown here.

drivers/usb/wusbcore/Kconfig+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/vhost/net.c+5−3

This diff is large: its 19 lines aren’t shown here.

drivers/video/atmel_lcdfb.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/video/backlight/adp8860_bl.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/video/backlight/adp8870_bl.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/video/backlight/l4f00242t03.c+2−0

This diff is large: its 16 lines aren’t shown here.

drivers/video/fsl-diu-fb.c+2−2

This diff is large: its 18 lines aren’t shown here.

drivers/video/intelfb/intelfbdrv.c+0−1

This diff is large: its 8 lines aren’t shown here.

drivers/video/macfb.c+28−32

This diff is large: its 175 lines aren’t shown here.

drivers/video/mx3fb.c+24−41

This diff is large: its 142 lines aren’t shown here.

drivers/video/omap2/dss/dispc.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/video/omap2/dss/dpi.c+5−0

This diff is large: its 12 lines aren’t shown here.

drivers/video/omap2/dss/dsi.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/video/omap2/dss/dss.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/video/omap2/dss/hdmi.c+4−1

This diff is large: its 26 lines aren’t shown here.

drivers/video/omap2/dss/rfbi.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/video/omap2/dss/ti_hdmi.h+4−0

This diff is large: its 11 lines aren’t shown here.

drivers/video/omap2/dss/ti_hdmi_4xxx_ip.c+64−4

This diff is large: its 102 lines aren’t shown here.

drivers/video/omap2/dss/venc.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/virtio/virtio_ring.c+4−4

This diff is large: its 22 lines aren’t shown here.

drivers/watchdog/dw_wdt.c+1−5

This diff is large: its 13 lines aren’t shown here.

drivers/watchdog/iTCO_wdt.c+35−0

This diff is large: its 63 lines aren’t shown here.

drivers/watchdog/imx2_wdt.c+1−10

This diff is large: its 25 lines aren’t shown here.

drivers/watchdog/nuc900_wdt.c+3−2

This diff is large: its 19 lines aren’t shown here.

drivers/watchdog/omap_wdt.c+2−0

This diff is large: its 16 lines aren’t shown here.

drivers/watchdog/pnx4008_wdt.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/watchdog/stmp3xxx_wdt.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/watchdog/via_wdt.c+3−3

This diff is large: its 27 lines aren’t shown here.

drivers/watchdog/wafer5823wdt.c+2−2

This diff is large: its 15 lines aren’t shown here.

drivers/watchdog/wm8350_wdt.c+2−2

This diff is large: its 13 lines aren’t shown here.

drivers/xen/biomerge.c+2−0

This diff is large: its 12 lines aren’t shown here.

drivers/xen/cpu_hotplug.c+2−1

This diff is large: its 10 lines aren’t shown here.

drivers/xen/grant-table.c+5−2

This diff is large: its 15 lines aren’t shown here.

drivers/xen/xen-balloon.c+1−1

This diff is large: its 9 lines aren’t shown here.

drivers/xen/xen-pciback/pci_stub.c+4−4

This diff is large: its 36 lines aren’t shown here.

drivers/xen/xen-pciback/xenbus.c+3−2

This diff is large: its 26 lines aren’t shown here.

drivers/xen/xenbus/xenbus_dev_frontend.c+4−0

This diff is large: its 11 lines aren’t shown here.

firmware/Makefile+0−1

This diff is large: its 8 lines aren’t shown here.

firmware/isci/isci_firmware.bin.ihex+0−16

This diff is large: its 17 lines aren’t shown here.

fs/autofs4/expire.c+2−0

This diff is large: its 16 lines aren’t shown here.

fs/bio.c+3−7

This diff is large: its 17 lines aren’t shown here.

fs/btrfs/Kconfig+19−0

This diff is large: its 23 lines aren’t shown here.

fs/btrfs/Makefile+2−1

This diff is large: its 9 lines aren’t shown here.

fs/btrfs/backref.c+878−253

This diff is large: its 1239 lines aren’t shown here.

fs/btrfs/backref.h+5−0

This diff is large: its 19 lines aren’t shown here.

fs/btrfs/btrfs_inode.h+3−0

This diff is large: its 10 lines aren’t shown here.

fs/btrfs/check-integrity.c+3069−0

This diff is large: its 3070 lines aren’t shown here.

fs/btrfs/check-integrity.h+36−0

This diff is large: its 37 lines aren’t shown here.

fs/btrfs/ctree.c+21−21

This diff is large: its 156 lines aren’t shown here.

fs/btrfs/ctree.h+217−22

This diff is large: its 375 lines aren’t shown here.

fs/btrfs/delayed-inode.c+33−12

This diff is large: its 106 lines aren’t shown here.

fs/btrfs/delayed-ref.c+106−47

This diff is large: its 317 lines aren’t shown here.

fs/btrfs/delayed-ref.h+91−13

This diff is large: its 149 lines aren’t shown here.

fs/btrfs/disk-io.c+84−42

This diff is large: its 308 lines aren’t shown here.

fs/btrfs/disk-io.h+3−3

This diff is large: its 13 lines aren’t shown here.

fs/btrfs/export.c+1−1

This diff is large: its 9 lines aren’t shown here.

fs/btrfs/extent-tree.c+373−141

This diff is large: its 1139 lines aren’t shown here.

fs/btrfs/extent_io.c+6−2

This diff is large: its 43 lines aren’t shown here.

fs/btrfs/extent_io.h+2−0

This diff is large: its 16 lines aren’t shown here.

fs/btrfs/file.c+5−6

This diff is large: its 53 lines aren’t shown here.

fs/btrfs/free-space-cache.c+259−163

This diff is large: its 703 lines aren’t shown here.

fs/btrfs/inode-map.c+4−0

This diff is large: its 18 lines aren’t shown here.

fs/btrfs/inode.c+41−35

This diff is large: its 241 lines aren’t shown here.

fs/btrfs/ioctl.c+237−33

This diff is large: its 473 lines aren’t shown here.

fs/btrfs/ioctl.h+54−0

This diff is large: its 68 lines aren’t shown here.

fs/btrfs/locking.c+51−2

This diff is large: its 106 lines aren’t shown here.

fs/btrfs/relocation.c+10−10

This diff is large: its 71 lines aren’t shown here.

fs/btrfs/scrub.c+7−5

This diff is large: its 59 lines aren’t shown here.

fs/btrfs/super.c+109−81

This diff is large: its 410 lines aren’t shown here.

fs/btrfs/transaction.c+10−10

This diff is large: its 63 lines aren’t shown here.

fs/btrfs/tree-log.c+5−3

This diff is large: its 29 lines aren’t shown here.

fs/btrfs/ulist.c+220−0

This diff is large: its 221 lines aren’t shown here.

fs/btrfs/ulist.h+68−0

This diff is large: its 69 lines aren’t shown here.

fs/btrfs/volumes.c+828−165

This diff is large: its 1316 lines aren’t shown here.

fs/btrfs/volumes.h+51−3

This diff is large: its 68 lines aren’t shown here.

fs/btrfs/xattr.c+1−1

This diff is large: its 9 lines aren’t shown here.

fs/ceph/caps.c+2−2

This diff is large: its 13 lines aren’t shown here.

fs/ceph/dir.c+2−2

This diff is large: its 13 lines aren’t shown here.

fs/ceph/mds_client.c+7−3

This diff is large: its 42 lines aren’t shown here.

fs/ceph/mds_client.h+5−2

This diff is large: its 16 lines aren’t shown here.

fs/ceph/xattr.c+3−1

This diff is large: its 12 lines aren’t shown here.

fs/cifs/Kconfig+3−4

This diff is large: its 21 lines aren’t shown here.

fs/cifs/cifs_debug.c+10−1

This diff is large: its 25 lines aren’t shown here.

fs/cifs/cifs_spnego.c+7−3

This diff is large: its 26 lines aren’t shown here.

fs/cifs/cifs_unicode.c+21−20

This diff is large: its 150 lines aren’t shown here.

fs/cifs/cifs_unicode.h+10−10

This diff is large: its 27 lines aren’t shown here.

fs/cifs/cifsacl.c+2−0

This diff is large: its 9 lines aren’t shown here.

fs/cifs/cifsencrypt.c+13−8

This diff is large: its 62 lines aren’t shown here.

fs/cifs/cifsglob.h+2−0

This diff is large: its 9 lines aren’t shown here.

fs/cifs/cifssmb.c+84−78

This diff is large: its 421 lines aren’t shown here.

fs/cifs/connect.c+254−64

This diff is large: its 465 lines aren’t shown here.

fs/cifs/dir.c+1−1

This diff is large: its 9 lines aren’t shown here.

fs/cifs/readdir.c+5−4

This diff is large: its 16 lines aren’t shown here.

fs/cifs/sess.c+24−21

This diff is large: its 125 lines aren’t shown here.

fs/cifs/smbencrypt.c+1−1

This diff is large: its 9 lines aren’t shown here.

fs/compat.c+25−31

This diff is large: its 67 lines aren’t shown here.

fs/dcache.c+4−4

This diff is large: its 34 lines aren’t shown here.

fs/debugfs/file.c+1−1

This diff is large: its 9 lines aren’t shown here.

fs/ecryptfs/crypto.c+70−52

This diff is large: its 200 lines aren’t shown here.

fs/ecryptfs/ecryptfs_kernel.h+11−0

This diff is large: its 31 lines aren’t shown here.

fs/ecryptfs/inode.c+38−12

This diff is large: its 85 lines aren’t shown here.

fs/ecryptfs/keystore.c+6−8

This diff is large: its 51 lines aren’t shown here.

fs/ecryptfs/miscdev.c+85−55

This diff is large: its 213 lines aren’t shown here.

fs/ecryptfs/mmap.c+6−6

This diff is large: its 40 lines aren’t shown here.

fs/ecryptfs/read_write.c+18−82

This diff is large: its 141 lines aren’t shown here.

fs/ecryptfs/super.c+13−1

This diff is large: its 31 lines aren’t shown here.

fs/exec.c+17−16

This diff is large: its 61 lines aren’t shown here.

fs/ext2/ioctl.c+16−6

This diff is large: its 48 lines aren’t shown here.

fs/fs-writeback.c+8−8

This diff is large: its 30 lines aren’t shown here.

fs/inode.c+4−7

This diff is large: its 44 lines aren’t shown here.

fs/ioprio.c+1−1

This diff is large: its 9 lines aren’t shown here.

fs/jbd/checkpoint.c+22−5

This diff is large: its 53 lines aren’t shown here.

fs/jbd/recovery.c+4−0

This diff is large: its 18 lines aren’t shown here.

fs/jffs2/erase.c+1−1

This diff is large: its 9 lines aren’t shown here.

fs/logfs/dev_mtd.c+0−6

This diff is large: its 20 lines aren’t shown here.

fs/logfs/dir.c+1−1

This diff is large: its 9 lines aren’t shown here.

fs/logfs/file.c+2−0

This diff is large: its 10 lines aren’t shown here.

fs/logfs/gc.c+1−1

This diff is large: its 9 lines aren’t shown here.

fs/logfs/inode.c+3−1

This diff is large: its 19 lines aren’t shown here.

fs/logfs/journal.c+0−1

This diff is large: its 8 lines aren’t shown here.

fs/logfs/logfs.h+4−1

This diff is large: its 26 lines aren’t shown here.

fs/logfs/readwrite.c+34−17

This diff is large: its 139 lines aren’t shown here.

fs/logfs/segment.c+39−12

This diff is large: its 107 lines aren’t shown here.

fs/logfs/super.c+2−1

This diff is large: its 17 lines aren’t shown here.

fs/namei.c+16−16

This diff is large: its 47 lines aren’t shown here.

fs/nfs/nfs4proc.c+55−75

This diff is large: its 196 lines aren’t shown here.

fs/nfs/nfs4state.c+2−0

This diff is large: its 9 lines aren’t shown here.

fs/nfs/nfs4xdr.c+4−1

This diff is large: its 19 lines aren’t shown here.

fs/nilfs2/ioctl.c+2−0

This diff is large: its 9 lines aren’t shown here.

fs/ocfs2/namei.c+1−1

This diff is large: its 9 lines aren’t shown here.

fs/proc/base.c+65−169

This diff is large: its 313 lines aren’t shown here.

fs/proc/stat.c+2−0

This diff is large: its 9 lines aren’t shown here.

fs/proc/task_mmu.c+3−0

This diff is large: its 10 lines aren’t shown here.

fs/qnx4/inode.c+25−37

This diff is large: its 88 lines aren’t shown here.

fs/quota/dquot.c+5−3

This diff is large: its 29 lines aren’t shown here.

fs/quota/quota.c+21−3

This diff is large: its 49 lines aren’t shown here.

fs/select.c+1−1

This diff is large: its 9 lines aren’t shown here.

fs/super.c+24−0

This diff is large: its 38 lines aren’t shown here.

fs/sysfs/file.c+6−0

This diff is large: its 13 lines aren’t shown here.

fs/sysfs/inode.c+4−1

This diff is large: its 13 lines aren’t shown here.

fs/xfs/kmem.h+0−6

This diff is large: its 11 lines aren’t shown here.

fs/xfs/xfs_aops.c+16−13

This diff is large: its 57 lines aren’t shown here.

fs/xfs/xfs_attr.c+0−4

This diff is large: its 11 lines aren’t shown here.

fs/xfs/xfs_attr_leaf.c+0−9

This diff is large: its 30 lines aren’t shown here.

fs/xfs/xfs_bmap.c+53−63

This diff is large: its 312 lines aren’t shown here.

fs/xfs/xfs_dfrag.c+21−22

This diff is large: its 70 lines aren’t shown here.

fs/xfs/xfs_dquot.c+38−89

This diff is large: its 195 lines aren’t shown here.

fs/xfs/xfs_file.c+51−133

This diff is large: its 357 lines aren’t shown here.

fs/xfs/xfs_fs_subr.c+1−1

This diff is large: its 9 lines aren’t shown here.

fs/xfs/xfs_iget.c+18−6

This diff is large: its 56 lines aren’t shown here.

fs/xfs/xfs_inode.c+45−148

This diff is large: its 333 lines aren’t shown here.

fs/xfs/xfs_inode.h+67−47

This diff is large: its 196 lines aren’t shown here.

fs/xfs/xfs_inode_item.c+3−5

This diff is large: its 36 lines aren’t shown here.

fs/xfs/xfs_iomap.c+23−23

This diff is large: its 90 lines aren’t shown here.

fs/xfs/xfs_iops.c+29−17

This diff is large: its 109 lines aren’t shown here.

fs/xfs/xfs_log_recover.c+4−4

This diff is large: its 36 lines aren’t shown here.

fs/xfs/xfs_qm.c+111−180

This diff is large: its 352 lines aren’t shown here.

fs/xfs/xfs_qm.h+0−14

This diff is large: its 40 lines aren’t shown here.

fs/xfs/xfs_qm_stats.c+2−2

This diff is large: its 12 lines aren’t shown here.

fs/xfs/xfs_qm_syscalls.c+9−3

This diff is large: its 42 lines aren’t shown here.

fs/xfs/xfs_super.c+0−8

This diff is large: its 15 lines aren’t shown here.

fs/xfs/xfs_sync.c+4−5

This diff is large: its 19 lines aren’t shown here.

fs/xfs/xfs_trace.h+10−24

This diff is large: its 141 lines aren’t shown here.

fs/xfs/xfs_trans.c+2−2

This diff is large: its 11 lines aren’t shown here.

fs/xfs/xfs_trans_dquot.c+6−4

This diff is large: its 31 lines aren’t shown here.

fs/xfs/xfs_vnodeops.c+30−17

This diff is large: its 126 lines aren’t shown here.

include/acpi/acnames.h+1−0

This diff is large: its 8 lines aren’t shown here.

include/acpi/acpi_numa.h+1−0

This diff is large: its 8 lines aren’t shown here.

include/acpi/acpiosxf.h+4−7

This diff is large: its 28 lines aren’t shown here.

include/acpi/acpixf.h+29−3

This diff is large: its 86 lines aren’t shown here.

include/acpi/acrestyp.h+203−4

This diff is large: its 275 lines aren’t shown here.

include/acpi/actbl.h+17−6

This diff is large: its 73 lines aren’t shown here.

include/acpi/actbl1.h+53−4

This diff is large: its 96 lines aren’t shown here.

include/acpi/actbl3.h+552−0

This diff is large: its 553 lines aren’t shown here.

include/acpi/actypes.h+11−1

This diff is large: its 27 lines aren’t shown here.

include/acpi/atomicio.h+0−10

This diff is large: its 11 lines aren’t shown here.

include/acpi/processor.h+1−0

This diff is large: its 8 lines aren’t shown here.

include/asm-generic/io-64-nonatomic-hi-lo.h+28−0

This diff is large: its 29 lines aren’t shown here.

include/asm-generic/io-64-nonatomic-lo-hi.h+28−0

This diff is large: its 29 lines aren’t shown here.

include/asm-generic/pci_iomap.h+10−0

This diff is large: its 17 lines aren’t shown here.

include/drm/drmP.h+1−0

This diff is large: its 8 lines aren’t shown here.

include/keys/user-type.h+2−1

This diff is large: its 17 lines aren’t shown here.

include/linux/acpi.h+14−6

This diff is large: its 37 lines aren’t shown here.

include/linux/acpi_io.h+3−0

This diff is large: its 8 lines aren’t shown here.

include/linux/amba/pl08x.h+2−2

This diff is large: its 18 lines aren’t shown here.

include/linux/audit.h+96−20

This diff is large: its 221 lines aren’t shown here.

include/linux/bcma/bcma.h+1−1

This diff is large: its 9 lines aren’t shown here.

include/linux/binfmts.h+2−1

This diff is large: its 17 lines aren’t shown here.

include/linux/bitops.h+20−0

This diff is large: its 27 lines aren’t shown here.

include/linux/blkdev.h+0−3

This diff is large: its 10 lines aren’t shown here.

include/linux/cdrom.h+2−1

This diff is large: its 10 lines aren’t shown here.

include/linux/cpuidle.h+7−0

This diff is large: its 15 lines aren’t shown here.

include/linux/device.h+10−5

This diff is large: its 36 lines aren’t shown here.

include/linux/digsig.h+4−4

This diff is large: its 35 lines aren’t shown here.

include/linux/dmaengine.h+92−7

This diff is large: its 147 lines aren’t shown here.

include/linux/dw_dmac.h+1−1

This diff is large: its 9 lines aren’t shown here.

include/linux/elevator.h+1−8

This diff is large: its 30 lines aren’t shown here.

include/linux/freezer.h+2−0

This diff is large: its 16 lines aren’t shown here.

include/linux/fs.h+2−1

This diff is large: its 24 lines aren’t shown here.

include/linux/gpio_keys.h+2−0

This diff is large: its 9 lines aren’t shown here.

include/linux/hyperv.h+1−1

This diff is large: its 9 lines aren’t shown here.

include/linux/if_team.h+10−0

This diff is large: its 38 lines aren’t shown here.

include/linux/iocontext.h+2−3

This diff is large: its 19 lines aren’t shown here.

include/linux/kexec.h+2−0

This diff is large: its 12 lines aren’t shown here.

include/linux/key.h+4−1

This diff is large: its 19 lines aren’t shown here.

include/linux/kref.h+1−0

This diff is large: its 8 lines aren’t shown here.

include/linux/lp8727.h+0−0

File mode changed from 100755 to 100644.

include/linux/mfd/mcp.h+6−6

This diff is large: its 49 lines aren’t shown here.

include/linux/mfd/twl6040.h+2−0

This diff is large: its 11 lines aren’t shown here.

include/linux/mfd/ucb1x00.h+1−4

This diff is large: its 19 lines aren’t shown here.

include/linux/migrate.h+1−13

This diff is large: its 24 lines aren’t shown here.

include/linux/migrate_mode.h+16−0

This diff is large: its 17 lines aren’t shown here.

include/linux/miscdevice.h+1−0

This diff is large: its 8 lines aren’t shown here.

include/linux/mlx4/device.h+1−0

This diff is large: its 8 lines aren’t shown here.

include/linux/mmc/card.h+4−0

This diff is large: its 26 lines aren’t shown here.

include/linux/mmc/dw_mmc.h+4−2

This diff is large: its 27 lines aren’t shown here.

include/linux/mmc/host.h+20−0

This diff is large: its 32 lines aren’t shown here.

include/linux/mod_devicetable.h+0−11

This diff is large: its 18 lines aren’t shown here.

include/linux/mpi.h+0−2

This diff is large: its 9 lines aren’t shown here.

include/linux/mtd/gpmi-nand.h+68−0

This diff is large: its 69 lines aren’t shown here.

include/linux/mtd/mtd.h+2−4

This diff is large: its 20 lines aren’t shown here.

include/linux/netfilter/nf_conntrack_common.h+0−4

This diff is large: its 11 lines aren’t shown here.

include/linux/netfilter/xt_CT.h+1−2

This diff is large: its 10 lines aren’t shown here.

include/linux/nfs_xdr.h+1−1

This diff is large: its 16 lines aren’t shown here.

include/linux/nvme.h+434−0

This diff is large: its 435 lines aren’t shown here.

include/linux/perf_event.h+1−0

This diff is large: its 8 lines aren’t shown here.

include/linux/pm_qos.h+13−1

This diff is large: its 21 lines aren’t shown here.

include/linux/proportions.h+4−0

This diff is large: its 12 lines aren’t shown here.

include/linux/ptrace.h+10−0

This diff is large: its 24 lines aren’t shown here.

include/linux/quota.h+5−1

This diff is large: its 13 lines aren’t shown here.

include/linux/res_counter.h+10−1

This diff is large: its 31 lines aren’t shown here.

include/linux/sched.h+8−2

This diff is large: its 25 lines aren’t shown here.

include/linux/sh_dma.h+4−1

This diff is large: its 26 lines aren’t shown here.

include/linux/shmem_fs.h+1−0

This diff is large: its 8 lines aren’t shown here.

include/linux/sirfsoc_dma.h+6−0

This diff is large: its 7 lines aren’t shown here.

include/linux/snmp.h+0−1

This diff is large: its 8 lines aren’t shown here.

include/linux/suspend.h+17−2

This diff is large: its 32 lines aren’t shown here.

include/linux/swap.h+1−1

This diff is large: its 9 lines aren’t shown here.

include/linux/syscalls.h+1−1

This diff is large: its 9 lines aren’t shown here.

include/linux/sysdev.h+0−164

This diff is large: its 165 lines aren’t shown here.

include/linux/thermal.h+2−2

This diff is large: its 12 lines aren’t shown here.

include/linux/tty_driver.h+0−1

This diff is large: its 8 lines aren’t shown here.

include/linux/usb.h+1−0

This diff is large: its 8 lines aren’t shown here.

include/linux/usb/ch11.h+2−8

This diff is large: its 24 lines aren’t shown here.

include/linux/usb/ch9.h+1−1

This diff is large: its 9 lines aren’t shown here.

include/linux/usb/langwell_otg.h+0−139

This diff is large: its 140 lines aren’t shown here.

include/media/tuner.h+2−1

This diff is large: its 17 lines aren’t shown here.

include/net/bluetooth/hci.h+1−1

This diff is large: its 8 lines aren’t shown here.

include/net/cfg80211.h+6−0

This diff is large: its 20 lines aren’t shown here.

include/net/flow.h+11−1

This diff is large: its 26 lines aren’t shown here.

include/net/netns/generic.h+1−0

This diff is large: its 8 lines aren’t shown here.

include/net/netprio_cgroup.h+40−9

This diff is large: its 68 lines aren’t shown here.

include/net/route.h+4−0

This diff is large: its 18 lines aren’t shown here.

include/net/sch_generic.h+8−1

This diff is large: its 18 lines aren’t shown here.

include/net/sock.h+7−7

This diff is large: its 52 lines aren’t shown here.

include/net/tcp.h+12−4

This diff is large: its 40 lines aren’t shown here.

include/scsi/libfc.h+1−1

This diff is large: its 9 lines aren’t shown here.

include/sound/core.h+2−0

This diff is large: its 15 lines aren’t shown here.

include/target/target_core_backend.h+65−0

This diff is large: its 66 lines aren’t shown here.

include/target/target_core_base.h+133−37

This diff is large: its 445 lines aren’t shown here.

include/target/target_core_device.h+0−63

This diff is large: its 64 lines aren’t shown here.

include/target/target_core_fabric.hrenamed from include/target/target_core_fabric_ops.h+88−6

This diff is large: its 109 lines aren’t shown here.

include/target/target_core_fabric_lib.h+0−28

This diff is large: its 29 lines aren’t shown here.

include/target/target_core_tmr.h+0−35

This diff is large: its 36 lines aren’t shown here.

include/target/target_core_tpg.h+0−35

This diff is large: its 36 lines aren’t shown here.

include/target/target_core_transport.h+0−287

This diff is large: its 288 lines aren’t shown here.

include/trace/events/btrfs.h+203−0

This diff is large: its 231 lines aren’t shown here.

include/trace/events/writeback.h+5−2

This diff is large: its 21 lines aren’t shown here.

include/video/omapdss.h+5−0

This diff is large: its 12 lines aren’t shown here.

init/Kconfig+15−1

This diff is large: its 30 lines aren’t shown here.

ipc/mqueue.c+1−2

This diff is large: its 17 lines aren’t shown here.

ipc/shm.c+22−15

This diff is large: its 55 lines aren’t shown here.

kernel/audit.c+2−2

This diff is large: its 18 lines aren’t shown here.

kernel/audit.h+1−5

This diff is large: its 14 lines aren’t shown here.

kernel/auditfilter.c+12−5

This diff is large: its 57 lines aren’t shown here.

kernel/auditsc.c+458−280

This diff is large: its 1159 lines aren’t shown here.

kernel/capability.c+1−1

This diff is large: its 9 lines aren’t shown here.

kernel/events/callchain.c+0−2

This diff is large: its 9 lines aren’t shown here.

kernel/events/core.c+81−44

This diff is large: its 245 lines aren’t shown here.

kernel/exit.c+17−2

This diff is large: its 33 lines aren’t shown here.

kernel/fork.c+21−3

This diff is large: its 45 lines aren’t shown here.

kernel/kprobes.c+6−2

This diff is large: its 30 lines aren’t shown here.

kernel/params.c+2−1

This diff is large: its 10 lines aren’t shown here.

kernel/pid.c+2−2

This diff is large: its 15 lines aren’t shown here.

kernel/power/power.h+22−2

This diff is large: its 31 lines aren’t shown here.

kernel/power/process.c+24−2

This diff is large: its 44 lines aren’t shown here.

kernel/power/snapshot.c+2−1

This diff is large: its 10 lines aren’t shown here.

kernel/power/user.c+13−2

This diff is large: its 34 lines aren’t shown here.

kernel/rcutorture.c+4−4

This diff is large: its 29 lines aren’t shown here.

kernel/relay.c+8−2

This diff is large: its 26 lines aren’t shown here.

kernel/res_counter.c+25−0

This diff is large: its 32 lines aren’t shown here.

kernel/sched/core.c+7−12

This diff is large: its 71 lines aren’t shown here.

kernel/sched/cpupri.c+1−2

This diff is large: its 17 lines aren’t shown here.

kernel/sched/fair.c+29−5

This diff is large: its 69 lines aren’t shown here.

kernel/sched/rt.c+5−0

This diff is large: its 12 lines aren’t shown here.

kernel/seccomp.c+2−0

This diff is large: its 16 lines aren’t shown here.

kernel/tracepoint.c+4−3

This diff is large: its 15 lines aren’t shown here.

kernel/watchdog.c+1−1

This diff is large: its 9 lines aren’t shown here.

lib/Kconfig+16−10

This diff is large: its 56 lines aren’t shown here.

lib/Makefile+3−1

This diff is large: its 11 lines aren’t shown here.

lib/bug.c+1−1

This diff is large: its 9 lines aren’t shown here.

lib/clz_tab.c+18−0

This diff is large: its 19 lines aren’t shown here.

lib/digsig.c+23−29

This diff is large: its 132 lines aren’t shown here.

lib/kstrtox.c+13−5

This diff is large: its 39 lines aren’t shown here.

lib/mpi/longlong.h+33−11

This diff is large: its 52 lines aren’t shown here.

lib/mpi/mpi-bit.c+0−19

This diff is large: its 26 lines aren’t shown here.

lib/mpi/mpi-div.c+5−0

This diff is large: its 19 lines aren’t shown here.

lib/mpi/mpi-pow.c+1−1

This diff is large: its 9 lines aren’t shown here.

lib/mpi/mpicoder.c+4−89

This diff is large: its 129 lines aren’t shown here.

lib/mpi/mpih-div.c+4−0

This diff is large: its 11 lines aren’t shown here.

lib/mpi/mpiutil.c+4−1

This diff is large: its 19 lines aren’t shown here.

lib/pci_iomap.c+1−1

This diff is large: its 9 lines aren’t shown here.

mm/backing-dev.c+18−5

This diff is large: its 59 lines aren’t shown here.

mm/compaction.c+23−1

This diff is large: its 36 lines aren’t shown here.

mm/filemap.c+4−4

This diff is large: its 37 lines aren’t shown here.

mm/filemap_xip.c+6−1

This diff is large: its 14 lines aren’t shown here.

mm/huge_memory.c+2−2

This diff is large: its 18 lines aren’t shown here.

mm/hugetlb.c+6−3

This diff is large: its 43 lines aren’t shown here.

mm/kmemleak.c+2−1

This diff is large: its 17 lines aren’t shown here.

mm/memblock.c+5−2

This diff is large: its 20 lines aren’t shown here.

mm/memcontrol.c+6−5

This diff is large: its 52 lines aren’t shown here.

mm/memory.c+28−9

This diff is large: its 51 lines aren’t shown here.

mm/migrate.c+1−1

This diff is large: its 16 lines aren’t shown here.

mm/page_alloc.c+20−1

This diff is large: its 35 lines aren’t shown here.

mm/process_vm_access.c+9−14

This diff is large: its 33 lines aren’t shown here.

mm/shmem.c+41−12

This diff is large: its 102 lines aren’t shown here.

mm/swap.c+1−1

This diff is large: its 9 lines aren’t shown here.

mm/vmscan.c+42−82

This diff is large: its 159 lines aren’t shown here.

net/bluetooth/hci_core.c+1−1

This diff is large: its 9 lines aren’t shown here.

net/bridge/br_fdb.c+2−2

This diff is large: its 18 lines aren’t shown here.

net/caif/caif_dev.c+11−27

This diff is large: its 117 lines aren’t shown here.

net/caif/caif_socket.c+6−4

This diff is large: its 26 lines aren’t shown here.

net/caif/caif_usb.c+1−2

This diff is large: its 17 lines aren’t shown here.

net/caif/cfcnfg.c+0−1

This diff is large: its 8 lines aren’t shown here.

net/caif/cfmuxl.c+3−9

This diff is large: its 26 lines aren’t shown here.

net/ceph/ceph_common.c+0−2

This diff is large: its 9 lines aren’t shown here.

net/ceph/mon_client.c+12−1

This diff is large: its 30 lines aren’t shown here.

net/core/dev.c+28−14

This diff is large: its 76 lines aren’t shown here.

net/core/ethtool.c+3−0

This diff is large: its 17 lines aren’t shown here.

net/core/flow_dissector.c+1−0

This diff is large: its 6 lines aren’t shown here.

net/core/net-sysfs.c+1−1

This diff is large: its 9 lines aren’t shown here.

net/core/net_namespace.c+16−15

This diff is large: its 66 lines aren’t shown here.

net/core/netpoll.c+1−1

This diff is large: its 9 lines aren’t shown here.

net/core/netprio_cgroup.c+5−10

This diff is large: its 45 lines aren’t shown here.

net/core/pktgen.c+2−2

This diff is large: its 11 lines aren’t shown here.

net/core/rtnetlink.c+3−0

This diff is large: its 10 lines aren’t shown here.

net/core/secure_seq.c+1−1

This diff is large: its 9 lines aren’t shown here.

net/core/sock.c+4−7

This diff is large: its 34 lines aren’t shown here.

net/ipv4/Kconfig+1−1

This diff is large: its 9 lines aren’t shown here.

net/ipv4/arp.c+2−1

This diff is large: its 10 lines aren’t shown here.

net/ipv4/inet_connection_sock.c+5−2

This diff is large: its 17 lines aren’t shown here.

net/ipv4/inetpeer.c+2−1

This diff is large: its 17 lines aren’t shown here.

net/ipv4/ip_gre.c+4−0

This diff is large: its 11 lines aren’t shown here.

net/ipv4/ip_options.c+1−1

This diff is large: its 10 lines aren’t shown here.

net/ipv4/ipconfig.c+4−4

This diff is large: its 22 lines aren’t shown here.

net/ipv4/ping.c+14−13

This diff is large: its 87 lines aren’t shown here.

net/ipv4/proc.c+0−1

This diff is large: its 8 lines aren’t shown here.

net/ipv4/sysctl_net_ipv4.c+1−6

This diff is large: its 21 lines aren’t shown here.

net/ipv4/tcp.c+30−8

This diff is large: its 78 lines aren’t shown here.

net/ipv4/tcp_bic.c+7−4

This diff is large: its 39 lines aren’t shown here.

net/ipv4/tcp_cubic.c+6−4

This diff is large: its 38 lines aren’t shown here.

net/ipv4/tcp_input.c+44−42

This diff is large: its 224 lines aren’t shown here.

net/ipv4/tcp_ipv4.c+6−1

This diff is large: its 21 lines aren’t shown here.

net/ipv4/tcp_output.c+2−4

This diff is large: its 14 lines aren’t shown here.

net/ipv4/tcp_timer.c+1−4

This diff is large: its 12 lines aren’t shown here.

net/ipv4/udp_diag.c+0−1

This diff is large: its 8 lines aren’t shown here.

net/ipv6/addrconf.c+40−21

This diff is large: its 117 lines aren’t shown here.

net/ipv6/datagram.c+1−1

This diff is large: its 9 lines aren’t shown here.

net/ipv6/proc.c+2−2

This diff is large: its 11 lines aren’t shown here.

net/ipv6/route.c+1−0

This diff is large: its 8 lines aren’t shown here.

net/ipv6/tcp_ipv6.c+1−1

This diff is large: its 9 lines aren’t shown here.

net/l2tp/l2tp_ip.c+0−5

This diff is large: its 12 lines aren’t shown here.

net/llc/af_llc.c+5−0

This diff is large: its 28 lines aren’t shown here.

net/mac80211/cfg.c+1−1

This diff is large: its 9 lines aren’t shown here.

net/mac80211/debugfs_key.c+4−3

This diff is large: its 22 lines aren’t shown here.

net/mac80211/ibss.c+1−0

This diff is large: its 8 lines aren’t shown here.

net/mac80211/iface.c+1−0

This diff is large: its 8 lines aren’t shown here.

net/mac80211/main.c+2−2

This diff is large: its 18 lines aren’t shown here.

net/mac80211/mesh_hwmp.c+4−4

This diff is large: its 30 lines aren’t shown here.

net/mac80211/mesh_plink.c+2−2

This diff is large: its 18 lines aren’t shown here.

net/mac80211/mlme.c+27−11

This diff is large: its 66 lines aren’t shown here.

net/mac80211/rx.c+2−1

This diff is large: its 17 lines aren’t shown here.

net/mac80211/sta_info.c+4−2

This diff is large: its 14 lines aren’t shown here.

net/mac80211/tx.c+1−9

This diff is large: its 24 lines aren’t shown here.

net/mac80211/wpa.c+19−0

This diff is large: its 23 lines aren’t shown here.

net/mac80211/wpa.h+2−0

This diff is large: its 8 lines aren’t shown here.

net/netfilter/ipset/ip_set_core.c+27−10

This diff is large: its 99 lines aren’t shown here.

net/netfilter/nf_conntrack_helper.c+0−12

This diff is large: its 19 lines aren’t shown here.

net/netfilter/nf_conntrack_netlink.c+0−4

This diff is large: its 11 lines aren’t shown here.

net/netfilter/xt_CT.c+3−5

This diff is large: its 22 lines aren’t shown here.

net/netfilter/xt_hashlimit.c+4−1

This diff is large: its 26 lines aren’t shown here.

net/openvswitch/datapath.c+3−5

This diff is large: its 27 lines aren’t shown here.

net/openvswitch/datapath.h+0−1

This diff is large: its 8 lines aren’t shown here.

net/openvswitch/flow.c+0−1

This diff is large: its 8 lines aren’t shown here.

net/openvswitch/vport-internal_dev.c+0−1

This diff is large: its 8 lines aren’t shown here.

net/openvswitch/vport.c+0−1

This diff is large: its 8 lines aren’t shown here.

net/rds/af_rds.c+8−12

This diff is large: its 87 lines aren’t shown here.

net/rxrpc/ar-key.c+2−2

This diff is large: its 18 lines aren’t shown here.

net/sched/sch_choke.c+1−2

This diff is large: its 10 lines aren’t shown here.

net/sched/sch_netem.c+2−3

This diff is large: its 19 lines aren’t shown here.

net/sched/sch_sfb.c+1−2

This diff is large: its 10 lines aren’t shown here.

net/sched/sch_sfq.c+2−3

This diff is large: its 12 lines aren’t shown here.

net/sunrpc/auth_generic.c+16−1

This diff is large: its 40 lines aren’t shown here.

net/unix/af_unix.c+4−15

This diff is large: its 57 lines aren’t shown here.

scripts/checkpatch.pl+6−0

This diff is large: its 13 lines aren’t shown here.

scripts/kernel-doc+2−1

This diff is large: its 17 lines aren’t shown here.

scripts/mod/file2alias.c+1−11

This diff is large: its 26 lines aren’t shown here.

scripts/mod/modpost.c+9−0

This diff is large: its 23 lines aren’t shown here.

security/integrity/Kconfig+2−2

This diff is large: its 14 lines aren’t shown here.

security/integrity/Makefile+1−1

This diff is large: its 9 lines aren’t shown here.

security/integrity/ima/ima_audit.c+5−3

This diff is large: its 15 lines aren’t shown here.

security/integrity/ima/ima_policy.c+2−1

This diff is large: its 17 lines aren’t shown here.

security/integrity/integrity.h+2−2

This diff is large: its 18 lines aren’t shown here.

security/keys/encrypted-keys/encrypted.c+3−3

This diff is large: its 27 lines aren’t shown here.

security/keys/encrypted-keys/masterkey_trusted.c+3−1

This diff is large: its 18 lines aren’t shown here.

security/keys/gc.c+3−1

This diff is large: its 11 lines aren’t shown here.

security/keys/internal.h+1−0

This diff is large: its 8 lines aren’t shown here.

security/keys/key.c+1−0

This diff is large: its 8 lines aren’t shown here.

security/keys/keyring.c+15−7

This diff is large: its 71 lines aren’t shown here.

security/keys/trusted.c+2−2

This diff is large: its 18 lines aren’t shown here.

security/keys/user_defined.c+40−3

This diff is large: its 82 lines aren’t shown here.

security/lsm_audit.c+15−12

This diff is large: its 57 lines aren’t shown here.

security/tomoyo/util.c+3−3

This diff is large: its 17 lines aren’t shown here.

sound/atmel/abdac.c+1−1

This diff is large: its 9 lines aren’t shown here.

sound/atmel/ac97c.c+5−5

This diff is large: its 45 lines aren’t shown here.

sound/core/Kconfig+3−10

This diff is large: its 27 lines aren’t shown here.

sound/core/compress_offload.c+8−5

This diff is large: its 28 lines aren’t shown here.

sound/isa/sb/emu8000_patch.c+0−1

This diff is large: its 8 lines aren’t shown here.

sound/pci/au88x0/au88x0.c+7−6

This diff is large: its 28 lines aren’t shown here.

sound/pci/au88x0/au88x0.h+1−0

This diff is large: its 8 lines aren’t shown here.

sound/pci/au88x0/au88x0_pcm.c+1−0

This diff is large: its 8 lines aren’t shown here.

sound/pci/hda/alc880_quirks.c+12−5

This diff is large: its 48 lines aren’t shown here.

sound/pci/hda/alc882_quirks.c+10−5

This diff is large: its 57 lines aren’t shown here.

sound/pci/hda/hda_codec.c+1−1

This diff is large: its 9 lines aren’t shown here.

sound/pci/hda/hda_intel.c+5−2

This diff is large: its 36 lines aren’t shown here.

sound/pci/hda/hda_jack.c+15−9

This diff is large: its 72 lines aren’t shown here.

sound/pci/hda/patch_ca0132.c+19−14

This diff is large: its 90 lines aren’t shown here.

sound/pci/hda/patch_cirrus.c+4−2

This diff is large: its 13 lines aren’t shown here.

sound/pci/hda/patch_conexant.c+1−1

This diff is large: its 9 lines aren’t shown here.

sound/pci/hda/patch_realtek.c+114−36

This diff is large: its 360 lines aren’t shown here.

sound/pci/hda/patch_sigmatel.c+17−8

This diff is large: its 73 lines aren’t shown here.

sound/pci/hda/patch_via.c+132−155

This diff is large: its 599 lines aren’t shown here.

sound/pci/intel8x0.c+6−0

This diff is large: its 13 lines aren’t shown here.

sound/pci/oxygen/oxygen_mixer.c+14−11

This diff is large: its 39 lines aren’t shown here.

sound/pci/oxygen/xonar_wm87x6.c+1−0

This diff is large: its 8 lines aren’t shown here.

sound/pci/ymfpci/ymfpci.c+13−8

This diff is large: its 31 lines aren’t shown here.

sound/pci/ymfpci/ymfpci_main.c+14−7

This diff is large: its 42 lines aren’t shown here.

sound/soc/codecs/ak4642.c+16−15

This diff is large: its 57 lines aren’t shown here.

sound/soc/codecs/cs42l73.c+1−1

This diff is large: its 9 lines aren’t shown here.

sound/soc/codecs/sgtl5000.c+14−5

This diff is large: its 42 lines aren’t shown here.

sound/soc/codecs/tlv320aic32x4.c+51−59

This diff is large: its 154 lines aren’t shown here.

sound/soc/codecs/wm2000.c+13−18

This diff is large: its 81 lines aren’t shown here.

sound/soc/codecs/wm5100.c+14−1

This diff is large: its 64 lines aren’t shown here.

sound/soc/codecs/wm8958-dsp2.c+1−1

This diff is large: its 9 lines aren’t shown here.

sound/soc/codecs/wm8962.c+5−5

This diff is large: its 35 lines aren’t shown here.

sound/soc/codecs/wm8993.c+6−0

This diff is large: its 13 lines aren’t shown here.

sound/soc/codecs/wm8994.c+10−6

This diff is large: its 44 lines aren’t shown here.

sound/soc/codecs/wm8996.c+7−2

This diff is large: its 44 lines aren’t shown here.

sound/soc/codecs/wm8996.h+4−0

This diff is large: its 11 lines aren’t shown here.

sound/soc/codecs/wm_hubs.c+12−6

This diff is large: its 63 lines aren’t shown here.

sound/soc/ep93xx/ep93xx-pcm.c+2−2

This diff is large: its 12 lines aren’t shown here.

sound/soc/imx/imx-pcm-dma-mx2.c+10−8

This diff is large: its 43 lines aren’t shown here.

sound/soc/mxs/mxs-pcm.c+1−1

This diff is large: its 9 lines aren’t shown here.

sound/soc/mxs/mxs-saif.c+5−0

This diff is large: its 26 lines aren’t shown here.

sound/soc/samsung/dma.c+2−2

This diff is large: its 18 lines aren’t shown here.

sound/soc/samsung/neo1973_wm8753.c+1−64

This diff is large: its 118 lines aren’t shown here.

sound/soc/sh/fsi.c+1−5

This diff is large: its 14 lines aren’t shown here.

sound/soc/sh/siu_pcm.c+2−2

This diff is large: its 18 lines aren’t shown here.

sound/soc/soc-core.c+15−0

This diff is large: its 29 lines aren’t shown here.

sound/soc/soc-dapm.c+1−1

This diff is large: its 9 lines aren’t shown here.

sound/soc/txx9/txx9aclc.c+1−1

This diff is large: its 9 lines aren’t shown here.

sound/usb/caiaq/audio.c+4−1

This diff is large: its 20 lines aren’t shown here.

sound/usb/card.h+1−0

This diff is large: its 8 lines aren’t shown here.

sound/usb/format.c+1−3

This diff is large: its 18 lines aren’t shown here.

sound/usb/quirks-table.h+8−0

This diff is large: its 15 lines aren’t shown here.

sound/usb/quirks.c+5−1

This diff is large: its 16 lines aren’t shown here.

tools/perf/Makefile+2−5

This diff is large: its 21 lines aren’t shown here.

tools/perf/bench/mem-memcpy-x86-64-asm.S+6−0

This diff is large: its 9 lines aren’t shown here.

tools/perf/builtin-probe.c+0−2

This diff is large: its 16 lines aren’t shown here.

tools/perf/builtin-top.c+10−3

This diff is large: its 35 lines aren’t shown here.

tools/perf/util/event.c+1−1

This diff is large: its 9 lines aren’t shown here.

tools/perf/util/evsel.c+1−0

This diff is large: its 8 lines aren’t shown here.

tools/perf/util/header.c+1−1

This diff is large: its 9 lines aren’t shown here.

tools/perf/util/probe-event.c+0−2

This diff is large: its 16 lines aren’t shown here.

tools/perf/util/symbol.c+0−1

This diff is large: its 5 lines aren’t shown here.

tools/perf/util/trace-event-parse.c+1−2

This diff is large: its 16 lines aren’t shown here.

tools/perf/util/ui/browsers/hists.c+0−2

This diff is large: its 7 lines aren’t shown here.

tools/perf/util/ui/helpline.c+0−1

This diff is large: its 5 lines aren’t shown here.

tools/perf/util/util.h+0−1

This diff is large: its 8 lines aren’t shown here.

tools/power/x86/turbostat/turbostat.c+2−0

This diff is large: its 9 lines aren’t shown here.

virt/kvm/kvm_main.c+1−1

This diff is large: its 9 lines aren’t shown here.

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t