Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge 3.15-rc3 into staging-next

+2319 -1448
+1 -1
Makefile
··· 1 1 VERSION = 3 2 2 PATCHLEVEL = 15 3 3 SUBLEVEL = 0 4 - EXTRAVERSION = -rc2 4 + EXTRAVERSION = -rc3 5 5 NAME = Shuffling Zombie Juror 6 6 7 7 # *DOCUMENTATION*
+9 -8
arch/arm/Kconfig
··· 30 30 select HAVE_ARCH_SECCOMP_FILTER if (AEABI && !OABI_COMPAT) 31 31 select HAVE_ARCH_TRACEHOOK 32 32 select HAVE_BPF_JIT 33 + select HAVE_CC_STACKPROTECTOR 33 34 select HAVE_CONTEXT_TRACKING 34 35 select HAVE_C_RECORDMCOUNT 35 - select HAVE_CC_STACKPROTECTOR 36 36 select HAVE_DEBUG_KMEMLEAK 37 37 select HAVE_DMA_API_DEBUG 38 38 select HAVE_DMA_ATTRS ··· 311 311 select ARM_HAS_SG_CHAIN 312 312 select ARM_PATCH_PHYS_VIRT 313 313 select AUTO_ZRELADDR 314 + select CLKSRC_OF 314 315 select COMMON_CLK 315 316 select GENERIC_CLOCKEVENTS 316 317 select MULTI_IRQ_HANDLER ··· 423 422 bool "Energy Micro efm32" 424 423 depends on !MMU 425 424 select ARCH_REQUIRE_GPIOLIB 426 - select AUTO_ZRELADDR 427 425 select ARM_NVIC 426 + select AUTO_ZRELADDR 428 427 select CLKSRC_OF 429 428 select COMMON_CLK 430 429 select CPU_V7M ··· 512 511 bool "IXP4xx-based" 513 512 depends on MMU 514 513 select ARCH_HAS_DMA_SET_COHERENT_MASK 515 - select ARCH_SUPPORTS_BIG_ENDIAN 516 514 select ARCH_REQUIRE_GPIOLIB 515 + select ARCH_SUPPORTS_BIG_ENDIAN 517 516 select CLKSRC_MMIO 518 517 select CPU_XSCALE 519 518 select DMABOUNCE if PCI ··· 1111 1110 default 8 1112 1111 1113 1112 config IWMMXT 1114 - bool "Enable iWMMXt support" if !CPU_PJ4 1115 - depends on CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_PJ4 1116 - default y if PXA27x || PXA3xx || ARCH_MMP || CPU_PJ4 1113 + bool "Enable iWMMXt support" 1114 + depends on CPU_XSCALE || CPU_XSC3 || CPU_MOHAWK || CPU_PJ4 || CPU_PJ4B 1115 + default y if PXA27x || PXA3xx || ARCH_MMP || CPU_PJ4 || CPU_PJ4B 1117 1116 help 1118 1117 Enable support for iWMMXt context switching at run time if 1119 1118 running on a CPU that supports it. ··· 1576 1575 config BL_SWITCHER 1577 1576 bool "big.LITTLE switcher support" 1578 1577 depends on BIG_LITTLE && MCPM && HOTPLUG_CPU 1579 - select CPU_PM 1580 1578 select ARM_CPU_SUSPEND 1579 + select CPU_PM 1581 1580 help 1582 1581 The big.LITTLE "switcher" provides the core functionality to 1583 1582 transparently handle transition between a cluster of A15's ··· 1921 1920 depends on CPU_V7 && !CPU_V6 1922 1921 depends on !GENERIC_ATOMIC64 1923 1922 depends on MMU 1923 + select ARCH_DMA_ADDR_T_64BIT 1924 1924 select ARM_PSCI 1925 1925 select SWIOTLB_XEN 1926 - select ARCH_DMA_ADDR_T_64BIT 1927 1926 help 1928 1927 Say Y if you want to run Linux in a Virtual Machine on Xen on ARM. 1929 1928
+6 -6
arch/arm/Kconfig.debug
··· 1030 1030 default 0x40100000 if DEBUG_PXA_UART1 1031 1031 default 0x42000000 if ARCH_GEMINI 1032 1032 default 0x7c0003f8 if FOOTBRIDGE 1033 - default 0x80230000 if DEBUG_PICOXCELL_UART 1034 1033 default 0x80070000 if DEBUG_IMX23_UART 1035 1034 default 0x80074000 if DEBUG_IMX28_UART 1035 + default 0x80230000 if DEBUG_PICOXCELL_UART 1036 1036 default 0x808c0000 if ARCH_EP93XX 1037 1037 default 0x90020000 if DEBUG_NSPIRE_CLASSIC_UART || DEBUG_NSPIRE_CX_UART 1038 1038 default 0xb0090000 if DEBUG_VEXPRESS_UART0_CRX ··· 1096 1096 default 0xfeb26000 if DEBUG_RK3X_UART1 1097 1097 default 0xfeb30c00 if DEBUG_KEYSTONE_UART0 1098 1098 default 0xfeb31000 if DEBUG_KEYSTONE_UART1 1099 - default 0xfec12000 if DEBUG_MVEBU_UART || DEBUG_MVEBU_UART_ALTERNATE 1100 - default 0xfed60000 if DEBUG_RK29_UART0 1101 - default 0xfed64000 if DEBUG_RK29_UART1 || DEBUG_RK3X_UART2 1102 - default 0xfed68000 if DEBUG_RK29_UART2 || DEBUG_RK3X_UART3 1103 1099 default 0xfec02000 if DEBUG_SOCFPGA_UART 1100 + default 0xfec12000 if DEBUG_MVEBU_UART || DEBUG_MVEBU_UART_ALTERNATE 1104 1101 default 0xfec20000 if DEBUG_DAVINCI_DMx_UART0 1105 1102 default 0xfed0c000 if DEBUG_DAVINCI_DA8XX_UART1 1106 1103 default 0xfed0d000 if DEBUG_DAVINCI_DA8XX_UART2 1107 1104 default 0xfed12000 if ARCH_KIRKWOOD 1105 + default 0xfed60000 if DEBUG_RK29_UART0 1106 + default 0xfed64000 if DEBUG_RK29_UART1 || DEBUG_RK3X_UART2 1107 + default 0xfed68000 if DEBUG_RK29_UART2 || DEBUG_RK3X_UART3 1108 1108 default 0xfedc0000 if ARCH_EP93XX 1109 1109 default 0xfee003f8 if FOOTBRIDGE 1110 1110 default 0xfee20000 if DEBUG_NSPIRE_CLASSIC_UART || DEBUG_NSPIRE_CX_UART 1111 - default 0xfef36000 if DEBUG_HIGHBANK_UART 1112 1111 default 0xfee82340 if ARCH_IOP13XX 1113 1112 default 0xfef00000 if ARCH_IXP4XX && !CPU_BIG_ENDIAN 1114 1113 default 0xfef00003 if ARCH_IXP4XX && CPU_BIG_ENDIAN 1114 + default 0xfef36000 if DEBUG_HIGHBANK_UART 1115 1115 default 0xfefff700 if ARCH_IOP33X 1116 1116 default 0xff003000 if DEBUG_U300_UART 1117 1117 default DEBUG_UART_PHYS if !MMU
+10 -10
arch/arm/boot/dts/Makefile
··· 51 51 52 52 dtb-$(CONFIG_ARCH_ATLAS6) += atlas6-evb.dtb 53 53 dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb 54 + dtb-$(CONFIG_ARCH_BCM_5301X) += bcm4708-netgear-r6250.dtb 54 55 dtb-$(CONFIG_ARCH_BCM_MOBILE) += bcm28155-ap.dtb \ 55 56 bcm21664-garnet.dtb 56 - dtb-$(CONFIG_ARCH_BCM2835) += bcm2835-rpi-b.dtb 57 - dtb-$(CONFIG_ARCH_BCM_5301X) += bcm4708-netgear-r6250.dtb 58 57 dtb-$(CONFIG_ARCH_BERLIN) += \ 59 58 berlin2-sony-nsz-gs7.dtb \ 60 59 berlin2cd-google-chromecast.dtb ··· 245 246 omap3-sbc-t3730.dtb \ 246 247 omap3-devkit8000.dtb \ 247 248 omap3-beagle-xm.dtb \ 249 + omap3-beagle-xm-ab.dtb \ 248 250 omap3-evm.dtb \ 249 251 omap3-evm-37xx.dtb \ 250 252 omap3-ldp.dtb \ ··· 294 294 dtb-$(CONFIG_ARCH_QCOM) += qcom-msm8660-surf.dtb \ 295 295 qcom-msm8960-cdp.dtb \ 296 296 qcom-apq8074-dragonboard.dtb 297 - dtb-$(CONFIG_ARCH_U8500) += ste-snowball.dtb \ 298 - ste-hrefprev60-stuib.dtb \ 299 - ste-hrefprev60-tvk.dtb \ 300 - ste-hrefv60plus-stuib.dtb \ 301 - ste-hrefv60plus-tvk.dtb \ 302 - ste-ccu8540.dtb \ 303 - ste-ccu9540.dtb 304 297 dtb-$(CONFIG_ARCH_S3C24XX) += s3c2416-smdk2416.dtb 305 298 dtb-$(CONFIG_ARCH_S3C64XX) += s3c6410-mini6410.dtb \ 306 299 s3c6410-smdk6410.dtb ··· 362 369 tegra30-cardhu-a04.dtb \ 363 370 tegra114-dalmore.dtb \ 364 371 tegra124-venice2.dtb 372 + dtb-$(CONFIG_ARCH_U300) += ste-u300.dtb 373 + dtb-$(CONFIG_ARCH_U8500) += ste-snowball.dtb \ 374 + ste-hrefprev60-stuib.dtb \ 375 + ste-hrefprev60-tvk.dtb \ 376 + ste-hrefv60plus-stuib.dtb \ 377 + ste-hrefv60plus-tvk.dtb \ 378 + ste-ccu8540.dtb \ 379 + ste-ccu9540.dtb 365 380 dtb-$(CONFIG_ARCH_VERSATILE) += versatile-ab.dtb \ 366 381 versatile-pb.dtb 367 - dtb-$(CONFIG_ARCH_U300) += ste-u300.dtb 368 382 dtb-$(CONFIG_ARCH_VEXPRESS) += vexpress-v2p-ca5s.dtb \ 369 383 vexpress-v2p-ca9.dtb \ 370 384 vexpress-v2p-ca15-tc1.dtb \
+2 -2
arch/arm/boot/dts/am335x-bone-common.dtsi
··· 183 183 &usb { 184 184 status = "okay"; 185 185 186 - control@44e10000 { 186 + control@44e10620 { 187 187 status = "okay"; 188 188 }; 189 189 ··· 204 204 dr_mode = "host"; 205 205 }; 206 206 207 - dma-controller@07402000 { 207 + dma-controller@47402000 { 208 208 status = "okay"; 209 209 }; 210 210 };
+4 -4
arch/arm/boot/dts/am335x-evm.dts
··· 301 301 302 302 am335x_evm_audio_pins: am335x_evm_audio_pins { 303 303 pinctrl-single,pins = < 304 - 0x10c (PIN_INPUT_PULLDOWN | MUX_MODE4) /* mii1_rx_dv.mcasp1_aclkx */ 305 - 0x110 (PIN_INPUT_PULLDOWN | MUX_MODE4) /* mii1_txd3.mcasp1_fsx */ 304 + 0x10c (PIN_INPUT_PULLDOWN | MUX_MODE4) /* mii1_crs.mcasp1_aclkx */ 305 + 0x110 (PIN_INPUT_PULLDOWN | MUX_MODE4) /* mii1_rxerr.mcasp1_fsx */ 306 306 0x108 (PIN_OUTPUT_PULLDOWN | MUX_MODE4) /* mii1_col.mcasp1_axr2 */ 307 307 0x144 (PIN_INPUT_PULLDOWN | MUX_MODE4) /* rmii1_ref_clk.mcasp1_axr3 */ 308 308 >; ··· 331 331 &usb { 332 332 status = "okay"; 333 333 334 - control@44e10000 { 334 + control@44e10620 { 335 335 status = "okay"; 336 336 }; 337 337 ··· 352 352 dr_mode = "host"; 353 353 }; 354 354 355 - dma-controller@07402000 { 355 + dma-controller@47402000 { 356 356 status = "okay"; 357 357 }; 358 358 };
+2 -2
arch/arm/boot/dts/am335x-evmsk.dts
··· 364 364 &usb { 365 365 status = "okay"; 366 366 367 - control@44e10000 { 367 + control@44e10620 { 368 368 status = "okay"; 369 369 }; 370 370 ··· 385 385 dr_mode = "host"; 386 386 }; 387 387 388 - dma-controller@07402000 { 388 + dma-controller@47402000 { 389 389 status = "okay"; 390 390 }; 391 391 };
+2 -3
arch/arm/boot/dts/am335x-igep0033.dtsi
··· 118 118 reg = <0 0 0>; /* CS0, offset 0 */ 119 119 nand-bus-width = <8>; 120 120 ti,nand-ecc-opt = "bch8"; 121 - gpmc,device-nand = "true"; 122 121 gpmc,device-width = <1>; 123 122 gpmc,sync-clk-ps = <0>; 124 123 gpmc,cs-on-ns = <0>; ··· 201 202 &usb { 202 203 status = "okay"; 203 204 204 - control@44e10000 { 205 + control@44e10620 { 205 206 status = "okay"; 206 207 }; 207 208 ··· 222 223 dr_mode = "host"; 223 224 }; 224 225 225 - dma-controller@07402000 { 226 + dma-controller@47402000 { 226 227 status = "okay"; 227 228 }; 228 229 };
+3 -3
arch/arm/boot/dts/am33xx.dtsi
··· 72 72 }; 73 73 74 74 /* 75 - * The soc node represents the soc top level view. It is uses for IPs 75 + * The soc node represents the soc top level view. It is used for IPs 76 76 * that are not memory mapped in the MPU view or for the MPU itself. 77 77 */ 78 78 soc { ··· 94 94 95 95 /* 96 96 * XXX: Use a flat representation of the AM33XX interconnect. 97 - * The real AM33XX interconnect network is quite complex.Since 98 - * that will not bring real advantage to represent that in DT 97 + * The real AM33XX interconnect network is quite complex. Since 98 + * it will not bring real advantage to represent that in DT 99 99 * for the moment, just use a fake OCP bus entry to represent 100 100 * the whole bus hierarchy. 101 101 */
+1
arch/arm/boot/dts/armada-370-xp.dtsi
··· 230 230 #size-cells = <0>; 231 231 compatible = "marvell,orion-mdio"; 232 232 reg = <0x72004 0x4>; 233 + clocks = <&gateclk 4>; 233 234 }; 234 235 235 236 eth1: ethernet@74000 {
+1
arch/arm/boot/dts/armada-38x.dtsi
··· 336 336 #size-cells = <0>; 337 337 compatible = "marvell,orion-mdio"; 338 338 reg = <0x72004 0x4>; 339 + clocks = <&gateclk 4>; 339 340 }; 340 341 341 342 coredivclk: clock@e4250 {
+2 -2
arch/arm/boot/dts/dra7.dtsi
··· 80 80 }; 81 81 82 82 /* 83 - * The soc node represents the soc top level view. It is uses for IPs 83 + * The soc node represents the soc top level view. It is used for IPs 84 84 * that are not memory mapped in the MPU view or for the MPU itself. 85 85 */ 86 86 soc { ··· 94 94 /* 95 95 * XXX: Use a flat representation of the SOC interconnect. 96 96 * The real OMAP interconnect network is quite complex. 97 - * Since that will not bring real advantage to represent that in DT for 97 + * Since it will not bring real advantage to represent that in DT for 98 98 * the moment, just use a fake OCP bus entry to represent the whole bus 99 99 * hierarchy. 100 100 */
+1 -1
arch/arm/boot/dts/dra7xx-clocks.dtsi
··· 1640 1640 #clock-cells = <0>; 1641 1641 compatible = "ti,mux-clock"; 1642 1642 clocks = <&abe_24m_fclk>, <&abe_sys_clk_div>, <&func_24m_clk>, <&atlclkin3_ck>, <&atl_clkin2_ck>, <&atl_clkin1_ck>, <&atl_clkin0_ck>, <&sys_clkin2>, <&ref_clkin0_ck>, <&ref_clkin1_ck>, <&ref_clkin2_ck>, <&ref_clkin3_ck>, <&mlb_clk>, <&mlbp_clk>; 1643 - ti,bit-shift = <28>; 1643 + ti,bit-shift = <24>; 1644 1644 reg = <0x1860>; 1645 1645 }; 1646 1646
+1
arch/arm/boot/dts/imx25.dtsi
··· 56 56 57 57 osc { 58 58 compatible = "fsl,imx-osc", "fixed-clock"; 59 + #clock-cells = <0>; 59 60 clock-frequency = <24000000>; 60 61 }; 61 62 };
+1
arch/arm/boot/dts/imx27-apf27.dts
··· 29 29 30 30 osc26m { 31 31 compatible = "fsl,imx-osc26m", "fixed-clock"; 32 + #clock-cells = <0>; 32 33 clock-frequency = <0>; 33 34 }; 34 35 };
+1
arch/arm/boot/dts/imx27.dtsi
··· 48 48 49 49 osc26m { 50 50 compatible = "fsl,imx-osc26m", "fixed-clock"; 51 + #clock-cells = <0>; 51 52 clock-frequency = <26000000>; 52 53 }; 53 54 };
+4
arch/arm/boot/dts/imx50.dtsi
··· 53 53 54 54 ckil { 55 55 compatible = "fsl,imx-ckil", "fixed-clock"; 56 + #clock-cells = <0>; 56 57 clock-frequency = <32768>; 57 58 }; 58 59 59 60 ckih1 { 60 61 compatible = "fsl,imx-ckih1", "fixed-clock"; 62 + #clock-cells = <0>; 61 63 clock-frequency = <22579200>; 62 64 }; 63 65 64 66 ckih2 { 65 67 compatible = "fsl,imx-ckih2", "fixed-clock"; 68 + #clock-cells = <0>; 66 69 clock-frequency = <0>; 67 70 }; 68 71 69 72 osc { 70 73 compatible = "fsl,imx-osc", "fixed-clock"; 74 + #clock-cells = <0>; 71 75 clock-frequency = <24000000>; 72 76 }; 73 77 };
+4
arch/arm/boot/dts/imx51.dtsi
··· 50 50 51 51 ckil { 52 52 compatible = "fsl,imx-ckil", "fixed-clock"; 53 + #clock-cells = <0>; 53 54 clock-frequency = <32768>; 54 55 }; 55 56 56 57 ckih1 { 57 58 compatible = "fsl,imx-ckih1", "fixed-clock"; 59 + #clock-cells = <0>; 58 60 clock-frequency = <0>; 59 61 }; 60 62 61 63 ckih2 { 62 64 compatible = "fsl,imx-ckih2", "fixed-clock"; 65 + #clock-cells = <0>; 63 66 clock-frequency = <0>; 64 67 }; 65 68 66 69 osc { 67 70 compatible = "fsl,imx-osc", "fixed-clock"; 71 + #clock-cells = <0>; 68 72 clock-frequency = <24000000>; 69 73 }; 70 74 };
+12 -11
arch/arm/boot/dts/imx53-m53evk.dts
··· 17 17 compatible = "denx,imx53-m53evk", "fsl,imx53"; 18 18 19 19 memory { 20 - reg = <0x70000000 0x20000000>; 20 + reg = <0x70000000 0x20000000>, 21 + <0xb0000000 0x20000000>; 21 22 }; 22 23 23 24 soc { ··· 194 193 irq-trigger = <0x1>; 195 194 196 195 stmpe_touchscreen { 197 - compatible = "stmpe,ts"; 196 + compatible = "st,stmpe-ts"; 198 197 reg = <0>; 199 - ts,sample-time = <4>; 200 - ts,mod-12b = <1>; 201 - ts,ref-sel = <0>; 202 - ts,adc-freq = <1>; 203 - ts,ave-ctrl = <3>; 204 - ts,touch-det-delay = <3>; 205 - ts,settling = <4>; 206 - ts,fraction-z = <7>; 207 - ts,i-drive = <1>; 198 + st,sample-time = <4>; 199 + st,mod-12b = <1>; 200 + st,ref-sel = <0>; 201 + st,adc-freq = <1>; 202 + st,ave-ctrl = <3>; 203 + st,touch-det-delay = <3>; 204 + st,settling = <4>; 205 + st,fraction-z = <7>; 206 + st,i-drive = <1>; 208 207 }; 209 208 }; 210 209
+2 -1
arch/arm/boot/dts/imx53-qsb-common.dtsi
··· 14 14 15 15 / { 16 16 memory { 17 - reg = <0x70000000 0x40000000>; 17 + reg = <0x70000000 0x20000000>, 18 + <0xb0000000 0x20000000>; 18 19 }; 19 20 20 21 display0: display@di0 {
+10 -1
arch/arm/boot/dts/imx53-tx53-x03x.dts
··· 25 25 soc { 26 26 display: display@di0 { 27 27 compatible = "fsl,imx-parallel-display"; 28 - crtcs = <&ipu 0>; 29 28 interface-pix-fmt = "rgb24"; 30 29 pinctrl-names = "default"; 31 30 pinctrl-0 = <&pinctrl_rgb24_vga1>; 32 31 status = "okay"; 32 + 33 + port { 34 + display0_in: endpoint { 35 + remote-endpoint = <&ipu_di0_disp0>; 36 + }; 37 + }; 33 38 34 39 display-timings { 35 40 VGA { ··· 296 291 >; 297 292 }; 298 293 }; 294 + }; 295 + 296 + &ipu_di0_disp0 { 297 + remote-endpoint = <&display0_in>; 299 298 }; 300 299 301 300 &kpp {
+5 -1
arch/arm/boot/dts/imx53.dtsi
··· 70 70 71 71 ckil { 72 72 compatible = "fsl,imx-ckil", "fixed-clock"; 73 + #clock-cells = <0>; 73 74 clock-frequency = <32768>; 74 75 }; 75 76 76 77 ckih1 { 77 78 compatible = "fsl,imx-ckih1", "fixed-clock"; 79 + #clock-cells = <0>; 78 80 clock-frequency = <22579200>; 79 81 }; 80 82 81 83 ckih2 { 82 84 compatible = "fsl,imx-ckih2", "fixed-clock"; 85 + #clock-cells = <0>; 83 86 clock-frequency = <0>; 84 87 }; 85 88 86 89 osc { 87 90 compatible = "fsl,imx-osc", "fixed-clock"; 91 + #clock-cells = <0>; 88 92 clock-frequency = <24000000>; 89 93 }; 90 94 }; ··· 434 430 435 431 port { 436 432 lvds1_in: endpoint { 437 - remote-endpoint = <&ipu_di0_lvds0>; 433 + remote-endpoint = <&ipu_di1_lvds1>; 438 434 }; 439 435 }; 440 436 };
+35 -13
arch/arm/boot/dts/imx6q-dmo-edmqmx6.dts
··· 19 19 compatible = "dmo,imx6q-edmqmx6", "fsl,imx6q"; 20 20 21 21 aliases { 22 - gpio7 = &stmpe_gpio; 22 + gpio7 = &stmpe_gpio1; 23 + gpio8 = &stmpe_gpio2; 24 + stmpe-i2c0 = &stmpe1; 25 + stmpe-i2c1 = &stmpe2; 23 26 }; 24 27 25 28 memory { ··· 43 40 regulator-always-on; 44 41 }; 45 42 46 - reg_usb_otg_vbus: regulator@1 { 43 + reg_usb_otg_switch: regulator@1 { 47 44 compatible = "regulator-fixed"; 48 45 reg = <1>; 49 - regulator-name = "usb_otg_vbus"; 46 + regulator-name = "usb_otg_switch"; 50 47 regulator-min-microvolt = <5000000>; 51 48 regulator-max-microvolt = <5000000>; 52 49 gpio = <&gpio7 12 0>; 50 + regulator-boot-on; 51 + regulator-always-on; 53 52 }; 54 53 55 54 reg_usb_host1: regulator@2 { ··· 70 65 71 66 led-blue { 72 67 label = "blue"; 73 - gpios = <&stmpe_gpio 8 GPIO_ACTIVE_HIGH>; 68 + gpios = <&stmpe_gpio1 8 GPIO_ACTIVE_HIGH>; 74 69 linux,default-trigger = "heartbeat"; 75 70 }; 76 71 77 72 led-green { 78 73 label = "green"; 79 - gpios = <&stmpe_gpio 9 GPIO_ACTIVE_HIGH>; 74 + gpios = <&stmpe_gpio1 9 GPIO_ACTIVE_HIGH>; 80 75 }; 81 76 82 77 led-pink { 83 78 label = "pink"; 84 - gpios = <&stmpe_gpio 10 GPIO_ACTIVE_HIGH>; 79 + gpios = <&stmpe_gpio1 10 GPIO_ACTIVE_HIGH>; 85 80 }; 86 81 87 82 led-red { 88 83 label = "red"; 89 - gpios = <&stmpe_gpio 11 GPIO_ACTIVE_HIGH>; 84 + gpios = <&stmpe_gpio1 11 GPIO_ACTIVE_HIGH>; 90 85 }; 91 86 }; 92 87 }; ··· 104 99 clock-frequency = <100000>; 105 100 pinctrl-names = "default"; 106 101 pinctrl-0 = <&pinctrl_i2c2 107 - &pinctrl_stmpe>; 102 + &pinctrl_stmpe1 103 + &pinctrl_stmpe2>; 108 104 status = "okay"; 109 105 110 106 pmic: pfuze100@08 { ··· 211 205 }; 212 206 }; 213 207 214 - stmpe: stmpe1601@40 { 208 + stmpe1: stmpe1601@40 { 215 209 compatible = "st,stmpe1601"; 216 210 reg = <0x40>; 217 211 interrupts = <30 0>; 218 212 interrupt-parent = <&gpio3>; 219 213 220 - stmpe_gpio: stmpe_gpio { 214 + stmpe_gpio1: stmpe_gpio { 215 + #gpio-cells = <2>; 216 + compatible = "st,stmpe-gpio"; 217 + }; 218 + }; 219 + 220 + stmpe2: stmpe1601@44 { 221 + compatible = "st,stmpe1601"; 222 + reg = <0x44>; 223 + interrupts = <2 0>; 224 + interrupt-parent = <&gpio5>; 225 + 226 + stmpe_gpio2: stmpe_gpio { 221 227 #gpio-cells = <2>; 222 228 compatible = "st,stmpe-gpio"; 223 229 }; ··· 291 273 >; 292 274 }; 293 275 294 - pinctrl_stmpe: stmpegrp { 276 + pinctrl_stmpe1: stmpe1grp { 295 277 fsl,pins = <MX6QDL_PAD_EIM_D30__GPIO3_IO30 0x80000000>; 278 + }; 279 + 280 + pinctrl_stmpe2: stmpe2grp { 281 + fsl,pins = <MX6QDL_PAD_EIM_A25__GPIO5_IO02 0x80000000>; 296 282 }; 297 283 298 284 pinctrl_uart1: uart1grp { ··· 315 293 316 294 pinctrl_usbotg: usbotggrp { 317 295 fsl,pins = < 318 - MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x17059 296 + MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x17059 319 297 >; 320 298 }; 321 299 ··· 366 344 &usbh1 { 367 345 vbus-supply = <&reg_usb_host1>; 368 346 disable-over-current; 347 + dr_mode = "host"; 369 348 status = "okay"; 370 349 }; 371 350 372 351 &usbotg { 373 - vbus-supply = <&reg_usb_otg_vbus>; 374 352 pinctrl-names = "default"; 375 353 pinctrl-0 = <&pinctrl_usbotg>; 376 354 disable-over-current;
-3
arch/arm/boot/dts/imx6q-gw5400-a.dts
··· 487 487 488 488 &ldb { 489 489 status = "okay"; 490 - lvds-channel@0 { 491 - crtcs = <&ipu1 0>, <&ipu1 1>, <&ipu2 0>, <&ipu2 1>; 492 - }; 493 490 }; 494 491 495 492 &pcie {
-3
arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
··· 436 436 437 437 &ldb { 438 438 status = "okay"; 439 - lvds-channel@0 { 440 - crtcs = <&ipu1 0>, <&ipu1 1>; 441 - }; 442 439 }; 443 440 444 441 &pcie {
+11 -11
arch/arm/boot/dts/imx6qdl-microsom-ar8035.dtsi
··· 26 26 /* GPIO16 -> AR8035 25MHz */ 27 27 MX6QDL_PAD_GPIO_16__ENET_REF_CLK 0xc0000000 28 28 MX6QDL_PAD_RGMII_TXC__RGMII_TXC 0x80000000 29 - MX6QDL_PAD_RGMII_TD0__RGMII_TD0 0x1b0b0 30 - MX6QDL_PAD_RGMII_TD1__RGMII_TD1 0x1b0b0 31 - MX6QDL_PAD_RGMII_TD2__RGMII_TD2 0x1b0b0 32 - MX6QDL_PAD_RGMII_TD3__RGMII_TD3 0x1b0b0 33 - MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b0b0 29 + MX6QDL_PAD_RGMII_TD0__RGMII_TD0 0x1b030 30 + MX6QDL_PAD_RGMII_TD1__RGMII_TD1 0x1b030 31 + MX6QDL_PAD_RGMII_TD2__RGMII_TD2 0x1b030 32 + MX6QDL_PAD_RGMII_TD3__RGMII_TD3 0x1b030 33 + MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b030 34 34 /* AR8035 CLK_25M --> ENET_REF_CLK (V22) */ 35 35 MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x0a0b1 36 36 /* AR8035 pin strapping: IO voltage: pull up */ 37 - MX6QDL_PAD_RGMII_RXC__RGMII_RXC 0x1b0b0 37 + MX6QDL_PAD_RGMII_RXC__RGMII_RXC 0x1b030 38 38 /* AR8035 pin strapping: PHYADDR#0: pull down */ 39 - MX6QDL_PAD_RGMII_RD0__RGMII_RD0 0x130b0 39 + MX6QDL_PAD_RGMII_RD0__RGMII_RD0 0x13030 40 40 /* AR8035 pin strapping: PHYADDR#1: pull down */ 41 - MX6QDL_PAD_RGMII_RD1__RGMII_RD1 0x130b0 41 + MX6QDL_PAD_RGMII_RD1__RGMII_RD1 0x13030 42 42 /* AR8035 pin strapping: MODE#1: pull up */ 43 - MX6QDL_PAD_RGMII_RD2__RGMII_RD2 0x1b0b0 43 + MX6QDL_PAD_RGMII_RD2__RGMII_RD2 0x1b030 44 44 /* AR8035 pin strapping: MODE#3: pull up */ 45 - MX6QDL_PAD_RGMII_RD3__RGMII_RD3 0x1b0b0 45 + MX6QDL_PAD_RGMII_RD3__RGMII_RD3 0x1b030 46 46 /* AR8035 pin strapping: MODE#0: pull down */ 47 - MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x130b0 47 + MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x13030 48 48 49 49 /* 50 50 * As the RMII pins are also connected to RGMII
+11 -2
arch/arm/boot/dts/imx6qdl.dtsi
··· 10 10 * http://www.gnu.org/copyleft/gpl.html 11 11 */ 12 12 13 + #include <dt-bindings/interrupt-controller/arm-gic.h> 14 + 13 15 #include "skeleton.dtsi" 14 16 15 17 / { ··· 48 46 intc: interrupt-controller@00a01000 { 49 47 compatible = "arm,cortex-a9-gic"; 50 48 #interrupt-cells = <3>; 51 - #address-cells = <1>; 52 - #size-cells = <1>; 53 49 interrupt-controller; 54 50 reg = <0x00a01000 0x1000>, 55 51 <0x00a00100 0x100>; ··· 59 59 60 60 ckil { 61 61 compatible = "fsl,imx-ckil", "fixed-clock"; 62 + #clock-cells = <0>; 62 63 clock-frequency = <32768>; 63 64 }; 64 65 65 66 ckih1 { 66 67 compatible = "fsl,imx-ckih1", "fixed-clock"; 68 + #clock-cells = <0>; 67 69 clock-frequency = <0>; 68 70 }; 69 71 70 72 osc { 71 73 compatible = "fsl,imx-osc", "fixed-clock"; 74 + #clock-cells = <0>; 72 75 clock-frequency = <24000000>; 73 76 }; 74 77 }; ··· 141 138 0x82000000 0 0x01000000 0x01000000 0 0x00f00000>; /* non-prefetchable memory */ 142 139 num-lanes = <1>; 143 140 interrupts = <0 123 IRQ_TYPE_LEVEL_HIGH>; 141 + #interrupt-cells = <1>; 142 + interrupt-map-mask = <0 0 0 0x7>; 143 + interrupt-map = <0 0 0 1 &intc GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>, 144 + <0 0 0 2 &intc GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>, 145 + <0 0 0 3 &intc GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>, 146 + <0 0 0 4 &intc GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>; 144 147 clocks = <&clks 189>, <&clks 187>, <&clks 206>, <&clks 144>; 145 148 clock-names = "pcie_ref_125m", "sata_ref_100m", "lvds_gate", "pcie_axi"; 146 149 status = "disabled";
+1
arch/arm/boot/dts/imx6sl-evk.dts
··· 282 282 MX6SL_PAD_ECSPI1_MISO__ECSPI1_MISO 0x100b1 283 283 MX6SL_PAD_ECSPI1_MOSI__ECSPI1_MOSI 0x100b1 284 284 MX6SL_PAD_ECSPI1_SCLK__ECSPI1_SCLK 0x100b1 285 + MX6SL_PAD_ECSPI1_SS0__GPIO4_IO11 0x80000000 285 286 >; 286 287 }; 287 288
+2 -2
arch/arm/boot/dts/imx6sl.dtsi
··· 68 68 intc: interrupt-controller@00a01000 { 69 69 compatible = "arm,cortex-a9-gic"; 70 70 #interrupt-cells = <3>; 71 - #address-cells = <1>; 72 - #size-cells = <1>; 73 71 interrupt-controller; 74 72 reg = <0x00a01000 0x1000>, 75 73 <0x00a00100 0x100>; ··· 79 81 80 82 ckil { 81 83 compatible = "fixed-clock"; 84 + #clock-cells = <0>; 82 85 clock-frequency = <32768>; 83 86 }; 84 87 85 88 osc { 86 89 compatible = "fixed-clock"; 90 + #clock-cells = <0>; 87 91 clock-frequency = <24000000>; 88 92 }; 89 93 };
+1 -1
arch/arm/boot/dts/kirkwood-b3.dts
··· 75 75 m25p16@0 { 76 76 #address-cells = <1>; 77 77 #size-cells = <1>; 78 - compatible = "m25p16"; 78 + compatible = "st,m25p16"; 79 79 reg = <0>; 80 80 spi-max-frequency = <40000000>; 81 81 mode = <0>;
+1 -1
arch/arm/boot/dts/kirkwood-cloudbox.dts
··· 46 46 flash@0 { 47 47 #address-cells = <1>; 48 48 #size-cells = <1>; 49 - compatible = "mx25l4005a"; 49 + compatible = "mxicy,mx25l4005a"; 50 50 reg = <0>; 51 51 spi-max-frequency = <20000000>; 52 52 mode = <0>;
+1 -1
arch/arm/boot/dts/kirkwood-dreamplug.dts
··· 43 43 m25p40@0 { 44 44 #address-cells = <1>; 45 45 #size-cells = <1>; 46 - compatible = "mx25l1606e"; 46 + compatible = "mxicy,mx25l1606e"; 47 47 reg = <0>; 48 48 spi-max-frequency = <50000000>; 49 49 mode = <0>;
+1 -1
arch/arm/boot/dts/kirkwood-laplug.dts
··· 48 48 status = "okay"; 49 49 50 50 eeprom@50 { 51 - compatible = "at,24c04"; 51 + compatible = "atmel,24c04"; 52 52 pagesize = <16>; 53 53 reg = <0x50>; 54 54 };
+1 -1
arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts
··· 56 56 flash@0 { 57 57 #address-cells = <1>; 58 58 #size-cells = <1>; 59 - compatible = "mx25l12805d"; 59 + compatible = "mxicy,mx25l12805d"; 60 60 reg = <0>; 61 61 spi-max-frequency = <50000000>; 62 62 mode = <0>;
+2 -2
arch/arm/boot/dts/kirkwood-ns2-common.dtsi
··· 32 32 flash@0 { 33 33 #address-cells = <1>; 34 34 #size-cells = <1>; 35 - compatible = "mx25l4005a"; 35 + compatible = "mxicy,mx25l4005a"; 36 36 reg = <0>; 37 37 spi-max-frequency = <20000000>; 38 38 mode = <0>; ··· 50 50 status = "okay"; 51 51 52 52 eeprom@50 { 53 - compatible = "at,24c04"; 53 + compatible = "atmel,24c04"; 54 54 pagesize = <16>; 55 55 reg = <0x50>; 56 56 };
+1 -1
arch/arm/boot/dts/kirkwood-nsa310.dts
··· 104 104 status = "okay"; 105 105 106 106 adt7476: adt7476a@2e { 107 - compatible = "adt7476"; 107 + compatible = "adi,adt7476"; 108 108 reg = <0x2e>; 109 109 }; 110 110 };
+1 -1
arch/arm/boot/dts/kirkwood-nsa310a.dts
··· 94 94 status = "okay"; 95 95 96 96 lm85: lm85@2e { 97 - compatible = "lm85"; 97 + compatible = "national,lm85"; 98 98 reg = <0x2e>; 99 99 }; 100 100 };
+1 -1
arch/arm/boot/dts/kirkwood-openblocks_a6.dts
··· 40 40 pinctrl-names = "default"; 41 41 42 42 s35390a: s35390a@30 { 43 - compatible = "s35390a"; 43 + compatible = "sii,s35390a"; 44 44 reg = <0x30>; 45 45 }; 46 46 };
+1 -1
arch/arm/boot/dts/kirkwood-openblocks_a7.dts
··· 52 52 pinctrl-names = "default"; 53 53 54 54 s24c02: s24c02@50 { 55 - compatible = "24c02"; 55 + compatible = "atmel,24c02"; 56 56 reg = <0x50>; 57 57 }; 58 58 };
+16
arch/arm/boot/dts/omap3-beagle-xm-ab.dts
··· 1 + /* 2 + * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ 3 + * 4 + * This program is free software; you can redistribute it and/or modify 5 + * it under the terms of the GNU General Public License version 2 as 6 + * published by the Free Software Foundation. 7 + */ 8 + 9 + #include "omap3-beagle-xm.dts" 10 + 11 + / { 12 + /* HS USB Port 2 Power enable was inverted with the xM C */ 13 + hsusb2_power: hsusb2_power_reg { 14 + enable-active-high; 15 + }; 16 + };
-1
arch/arm/boot/dts/omap3-devkit8000.dts
··· 112 112 reg = <0 0 0>; /* CS0, offset 0 */ 113 113 nand-bus-width = <16>; 114 114 115 - gpmc,device-nand; 116 115 gpmc,sync-clk-ps = <0>; 117 116 gpmc,cs-on-ns = <0>; 118 117 gpmc,cs-rd-off-ns = <44>;
-1
arch/arm/boot/dts/omap3-lilly-a83x.dtsi
··· 368 368 /* no elm on omap3 */ 369 369 370 370 gpmc,mux-add-data = <0>; 371 - gpmc,device-nand; 372 371 gpmc,device-width = <2>; 373 372 gpmc,wait-pin = <0>; 374 373 gpmc,wait-monitoring-ns = <0>;
+1 -1
arch/arm/boot/dts/omap3.dtsi
··· 74 74 /* 75 75 * XXX: Use a flat representation of the OMAP3 interconnect. 76 76 * The real OMAP interconnect network is quite complex. 77 - * Since that will not bring real advantage to represent that in DT for 77 + * Since it will not bring real advantage to represent that in DT for 78 78 * the moment, just use a fake OCP bus entry to represent the whole bus 79 79 * hierarchy. 80 80 */
+2 -2
arch/arm/boot/dts/omap4.dtsi
··· 72 72 }; 73 73 74 74 /* 75 - * The soc node represents the soc top level view. It is uses for IPs 75 + * The soc node represents the soc top level view. It is used for IPs 76 76 * that are not memory mapped in the MPU view or for the MPU itself. 77 77 */ 78 78 soc { ··· 96 96 /* 97 97 * XXX: Use a flat representation of the OMAP4 interconnect. 98 98 * The real OMAP interconnect network is quite complex. 99 - * Since that will not bring real advantage to represent that in DT for 99 + * Since it will not bring real advantage to represent that in DT for 100 100 * the moment, just use a fake OCP bus entry to represent the whole bus 101 101 * hierarchy. 102 102 */
+8 -2
arch/arm/boot/dts/omap5.dtsi
··· 93 93 }; 94 94 95 95 /* 96 - * The soc node represents the soc top level view. It is uses for IPs 96 + * The soc node represents the soc top level view. It is used for IPs 97 97 * that are not memory mapped in the MPU view or for the MPU itself. 98 98 */ 99 99 soc { ··· 107 107 /* 108 108 * XXX: Use a flat representation of the OMAP3 interconnect. 109 109 * The real OMAP interconnect network is quite complex. 110 - * Since that will not bring real advantage to represent that in DT for 110 + * Since it will not bring real advantage to represent that in DT for 111 111 * the moment, just use a fake OCP bus entry to represent the whole bus 112 112 * hierarchy. 113 113 */ ··· 813 813 <0x4a084c00 0x40>; 814 814 reg-names = "phy_rx", "phy_tx", "pll_ctrl"; 815 815 ctrl-module = <&omap_control_usb3phy>; 816 + clocks = <&usb_phy_cm_clk32k>, 817 + <&sys_clkin>, 818 + <&usb_otg_ss_refclk960m>; 819 + clock-names = "wkupclk", 820 + "sysclk", 821 + "refclk"; 816 822 #phy-cells = <0>; 817 823 }; 818 824 };
-1
arch/arm/boot/dts/r8a7740.dtsi
··· 28 28 gic: interrupt-controller@c2800000 { 29 29 compatible = "arm,cortex-a9-gic"; 30 30 #interrupt-cells = <3>; 31 - #address-cells = <1>; 32 31 interrupt-controller; 33 32 reg = <0xc2800000 0x1000>, 34 33 <0xc2000000 0x1000>;
+2 -2
arch/arm/boot/dts/r8a7790-lager.dts
··· 141 141 }; 142 142 143 143 sdhi0_pins: sd0 { 144 - renesas,gpios = "sdhi0_data4", "sdhi0_ctrl"; 144 + renesas,groups = "sdhi0_data4", "sdhi0_ctrl"; 145 145 renesas,function = "sdhi0"; 146 146 }; 147 147 148 148 sdhi2_pins: sd2 { 149 - renesas,gpios = "sdhi2_data4", "sdhi2_ctrl"; 149 + renesas,groups = "sdhi2_data4", "sdhi2_ctrl"; 150 150 renesas,function = "sdhi2"; 151 151 }; 152 152
+3 -3
arch/arm/boot/dts/r8a7791-koelsch.dts
··· 230 230 }; 231 231 232 232 sdhi0_pins: sd0 { 233 - renesas,gpios = "sdhi0_data4", "sdhi0_ctrl"; 233 + renesas,groups = "sdhi0_data4", "sdhi0_ctrl"; 234 234 renesas,function = "sdhi0"; 235 235 }; 236 236 237 237 sdhi1_pins: sd1 { 238 - renesas,gpios = "sdhi1_data4", "sdhi1_ctrl"; 238 + renesas,groups = "sdhi1_data4", "sdhi1_ctrl"; 239 239 renesas,function = "sdhi1"; 240 240 }; 241 241 242 242 sdhi2_pins: sd2 { 243 - renesas,gpios = "sdhi2_data4", "sdhi2_ctrl"; 243 + renesas,groups = "sdhi2_data4", "sdhi2_ctrl"; 244 244 renesas,function = "sdhi2"; 245 245 }; 246 246
+4 -4
arch/arm/boot/dts/rk3188.dtsi
··· 149 149 150 150 uart0 { 151 151 uart0_xfer: uart0-xfer { 152 - rockchip,pins = <RK_GPIO1 0 RK_FUNC_1 &pcfg_pull_none>, 152 + rockchip,pins = <RK_GPIO1 0 RK_FUNC_1 &pcfg_pull_up>, 153 153 <RK_GPIO1 1 RK_FUNC_1 &pcfg_pull_none>; 154 154 }; 155 155 ··· 164 164 165 165 uart1 { 166 166 uart1_xfer: uart1-xfer { 167 - rockchip,pins = <RK_GPIO1 4 RK_FUNC_1 &pcfg_pull_none>, 167 + rockchip,pins = <RK_GPIO1 4 RK_FUNC_1 &pcfg_pull_up>, 168 168 <RK_GPIO1 5 RK_FUNC_1 &pcfg_pull_none>; 169 169 }; 170 170 ··· 179 179 180 180 uart2 { 181 181 uart2_xfer: uart2-xfer { 182 - rockchip,pins = <RK_GPIO1 8 RK_FUNC_1 &pcfg_pull_none>, 182 + rockchip,pins = <RK_GPIO1 8 RK_FUNC_1 &pcfg_pull_up>, 183 183 <RK_GPIO1 9 RK_FUNC_1 &pcfg_pull_none>; 184 184 }; 185 185 /* no rts / cts for uart2 */ ··· 187 187 188 188 uart3 { 189 189 uart3_xfer: uart3-xfer { 190 - rockchip,pins = <RK_GPIO1 10 RK_FUNC_1 &pcfg_pull_none>, 190 + rockchip,pins = <RK_GPIO1 10 RK_FUNC_1 &pcfg_pull_up>, 191 191 <RK_GPIO1 11 RK_FUNC_1 &pcfg_pull_none>; 192 192 }; 193 193
-1
arch/arm/boot/dts/sh73a0.dtsi
··· 34 34 gic: interrupt-controller@f0001000 { 35 35 compatible = "arm,cortex-a9-gic"; 36 36 #interrupt-cells = <3>; 37 - #address-cells = <1>; 38 37 interrupt-controller; 39 38 reg = <0xf0001000 0x1000>, 40 39 <0xf0000100 0x100>;
-13
arch/arm/boot/dts/tegra124.dtsi
··· 233 233 status = "disabled"; 234 234 }; 235 235 236 - serial@0,70006400 { 237 - compatible = "nvidia,tegra124-uart", "nvidia,tegra20-uart"; 238 - reg = <0x0 0x70006400 0x0 0x40>; 239 - reg-shift = <2>; 240 - interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>; 241 - clocks = <&tegra_car TEGRA124_CLK_UARTE>; 242 - resets = <&tegra_car 66>; 243 - reset-names = "serial"; 244 - dmas = <&apbdma 20>, <&apbdma 20>; 245 - dma-names = "rx", "tx"; 246 - status = "disabled"; 247 - }; 248 - 249 236 pwm@0,7000a000 { 250 237 compatible = "nvidia,tegra124-pwm", "nvidia,tegra20-pwm"; 251 238 reg = <0x0 0x7000a000 0x0 0x100>;
+2
arch/arm/boot/dts/vf610-twr.dts
··· 25 25 clocks { 26 26 audio_ext { 27 27 compatible = "fixed-clock"; 28 + #clock-cells = <0>; 28 29 clock-frequency = <24576000>; 29 30 }; 30 31 31 32 enet_ext { 32 33 compatible = "fixed-clock"; 34 + #clock-cells = <0>; 33 35 clock-frequency = <50000000>; 34 36 }; 35 37 };
+2 -2
arch/arm/boot/dts/vf610.dtsi
··· 45 45 46 46 sxosc { 47 47 compatible = "fixed-clock"; 48 + #clock-cells = <0>; 48 49 clock-frequency = <32768>; 49 50 }; 50 51 51 52 fxosc { 52 53 compatible = "fixed-clock"; 54 + #clock-cells = <0>; 53 55 clock-frequency = <24000000>; 54 56 }; 55 57 }; ··· 74 72 intc: interrupt-controller@40002000 { 75 73 compatible = "arm,cortex-a9-gic"; 76 74 #interrupt-cells = <3>; 77 - #address-cells = <1>; 78 - #size-cells = <1>; 79 75 interrupt-controller; 80 76 reg = <0x40003000 0x1000>, 81 77 <0x40002100 0x100>;
+23
arch/arm/boot/dts/zynq-7000.dtsi
··· 24 24 device_type = "cpu"; 25 25 reg = <0>; 26 26 clocks = <&clkc 3>; 27 + clock-latency = <1000>; 27 28 operating-points = < 28 29 /* kHz uV */ 29 30 666667 1000000 ··· 54 53 #size-cells = <1>; 55 54 interrupt-parent = <&intc>; 56 55 ranges; 56 + 57 + i2c0: zynq-i2c@e0004000 { 58 + compatible = "cdns,i2c-r1p10"; 59 + status = "disabled"; 60 + clocks = <&clkc 38>; 61 + interrupt-parent = <&intc>; 62 + interrupts = <0 25 4>; 63 + reg = <0xe0004000 0x1000>; 64 + #address-cells = <1>; 65 + #size-cells = <0>; 66 + }; 67 + 68 + i2c1: zynq-i2c@e0005000 { 69 + compatible = "cdns,i2c-r1p10"; 70 + status = "disabled"; 71 + clocks = <&clkc 39>; 72 + interrupt-parent = <&intc>; 73 + interrupts = <0 48 4>; 74 + reg = <0xe0005000 0x1000>; 75 + #address-cells = <1>; 76 + #size-cells = <0>; 77 + }; 57 78 58 79 intc: interrupt-controller@f8f01000 { 59 80 compatible = "arm,cortex-a9-gic";
+76
arch/arm/boot/dts/zynq-zc702.dts
··· 34 34 phy-mode = "rgmii"; 35 35 }; 36 36 37 + &i2c0 { 38 + status = "okay"; 39 + clock-frequency = <400000>; 40 + 41 + i2cswitch@74 { 42 + compatible = "nxp,pca9548"; 43 + #address-cells = <1>; 44 + #size-cells = <0>; 45 + reg = <0x74>; 46 + 47 + i2c@0 { 48 + #address-cells = <1>; 49 + #size-cells = <0>; 50 + reg = <0>; 51 + si570: clock-generator@5d { 52 + #clock-cells = <0>; 53 + compatible = "silabs,si570"; 54 + temperature-stability = <50>; 55 + reg = <0x5d>; 56 + factory-fout = <156250000>; 57 + clock-frequency = <148500000>; 58 + }; 59 + }; 60 + 61 + i2c@2 { 62 + #address-cells = <1>; 63 + #size-cells = <0>; 64 + reg = <2>; 65 + eeprom@54 { 66 + compatible = "at,24c08"; 67 + reg = <0x54>; 68 + }; 69 + }; 70 + 71 + i2c@3 { 72 + #address-cells = <1>; 73 + #size-cells = <0>; 74 + reg = <3>; 75 + gpio@21 { 76 + compatible = "ti,tca6416"; 77 + reg = <0x21>; 78 + gpio-controller; 79 + #gpio-cells = <2>; 80 + }; 81 + }; 82 + 83 + i2c@4 { 84 + #address-cells = <1>; 85 + #size-cells = <0>; 86 + reg = <4>; 87 + rtc@51 { 88 + compatible = "nxp,pcf8563"; 89 + reg = <0x51>; 90 + }; 91 + }; 92 + 93 + i2c@7 { 94 + #address-cells = <1>; 95 + #size-cells = <0>; 96 + reg = <7>; 97 + hwmon@52 { 98 + compatible = "ti,ucd9248"; 99 + reg = <52>; 100 + }; 101 + hwmon@53 { 102 + compatible = "ti,ucd9248"; 103 + reg = <53>; 104 + }; 105 + hwmon@54 { 106 + compatible = "ti,ucd9248"; 107 + reg = <54>; 108 + }; 109 + }; 110 + }; 111 + }; 112 + 37 113 &sdhci0 { 38 114 status = "okay"; 39 115 };
+68
arch/arm/boot/dts/zynq-zc706.dts
··· 35 35 phy-mode = "rgmii"; 36 36 }; 37 37 38 + &i2c0 { 39 + status = "okay"; 40 + clock-frequency = <400000>; 41 + 42 + i2cswitch@74 { 43 + compatible = "nxp,pca9548"; 44 + #address-cells = <1>; 45 + #size-cells = <0>; 46 + reg = <0x74>; 47 + 48 + i2c@0 { 49 + #address-cells = <1>; 50 + #size-cells = <0>; 51 + reg = <0>; 52 + si570: clock-generator@5d { 53 + #clock-cells = <0>; 54 + compatible = "silabs,si570"; 55 + temperature-stability = <50>; 56 + reg = <0x5d>; 57 + factory-fout = <156250000>; 58 + clock-frequency = <148500000>; 59 + }; 60 + }; 61 + 62 + i2c@2 { 63 + #address-cells = <1>; 64 + #size-cells = <0>; 65 + reg = <2>; 66 + eeprom@54 { 67 + compatible = "at,24c08"; 68 + reg = <0x54>; 69 + }; 70 + }; 71 + 72 + i2c@3 { 73 + #address-cells = <1>; 74 + #size-cells = <0>; 75 + reg = <3>; 76 + gpio@21 { 77 + compatible = "ti,tca6416"; 78 + reg = <0x21>; 79 + gpio-controller; 80 + #gpio-cells = <2>; 81 + }; 82 + }; 83 + 84 + i2c@4 { 85 + #address-cells = <1>; 86 + #size-cells = <0>; 87 + reg = <4>; 88 + rtc@51 { 89 + compatible = "nxp,pcf8563"; 90 + reg = <0x51>; 91 + }; 92 + }; 93 + 94 + i2c@7 { 95 + #address-cells = <1>; 96 + #size-cells = <0>; 97 + reg = <7>; 98 + ucd90120@65 { 99 + compatible = "ti,ucd90120"; 100 + reg = <0x65>; 101 + }; 102 + }; 103 + }; 104 + }; 105 + 38 106 &sdhci0 { 39 107 status = "okay"; 40 108 };
+2 -4
arch/arm/common/bL_switcher.c
··· 797 797 { 798 798 int ret; 799 799 800 - if (MAX_NR_CLUSTERS != 2) { 801 - pr_err("%s: only dual cluster systems are supported\n", __func__); 802 - return -EINVAL; 803 - } 800 + if (!mcpm_is_available()) 801 + return -ENODEV; 804 802 805 803 cpu_notifier(bL_switcher_hotplug_callback, 0); 806 804
+5
arch/arm/common/mcpm_entry.c
··· 48 48 return 0; 49 49 } 50 50 51 + bool mcpm_is_available(void) 52 + { 53 + return (platform_ops) ? true : false; 54 + } 55 + 51 56 int mcpm_cpu_power_up(unsigned int cpu, unsigned int cluster) 52 57 { 53 58 if (!platform_ops)
+1 -1
arch/arm/configs/omap2plus_defconfig
··· 226 226 CONFIG_USB_TEST=y 227 227 CONFIG_NOP_USB_XCEIV=y 228 228 CONFIG_OMAP_USB2=y 229 - CONFIG_OMAP_USB3=y 229 + CONFIG_TI_PIPE3=y 230 230 CONFIG_AM335X_PHY_USB=y 231 231 CONFIG_USB_GADGET=y 232 232 CONFIG_USB_GADGET_DEBUG=y
+2 -2
arch/arm/configs/u300_defconfig
··· 11 11 CONFIG_MODULE_UNLOAD=y 12 12 # CONFIG_LBDAF is not set 13 13 # CONFIG_BLK_DEV_BSG is not set 14 + CONFIG_PARTITION_ADVANCED=y 14 15 # CONFIG_IOSCHED_CFQ is not set 15 16 # CONFIG_ARCH_MULTI_V7 is not set 16 17 CONFIG_ARCH_U300=y ··· 22 21 CONFIG_ZBOOT_ROM_BSS=0x0 23 22 CONFIG_CMDLINE="root=/dev/ram0 rw rootfstype=rootfs console=ttyAMA0,115200n8 lpj=515072" 24 23 CONFIG_CPU_IDLE=y 25 - CONFIG_FPE_NWFPE=y 26 24 # CONFIG_SUSPEND is not set 27 25 CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 28 26 # CONFIG_PREVENT_FIRMWARE_BUILD is not set ··· 64 64 CONFIG_NLS_CODEPAGE_437=y 65 65 CONFIG_NLS_ISO8859_1=y 66 66 CONFIG_PRINTK_TIME=y 67 + CONFIG_DEBUG_INFO=y 67 68 CONFIG_DEBUG_FS=y 68 69 # CONFIG_SCHED_DEBUG is not set 69 70 CONFIG_TIMER_STATS=y 70 71 # CONFIG_DEBUG_PREEMPT is not set 71 - CONFIG_DEBUG_INFO=y
+15 -9
arch/arm/configs/u8500_defconfig
··· 1 1 # CONFIG_SWAP is not set 2 2 CONFIG_SYSVIPC=y 3 - CONFIG_NO_HZ=y 3 + CONFIG_NO_HZ_IDLE=y 4 4 CONFIG_HIGH_RES_TIMERS=y 5 5 CONFIG_BLK_DEV_INITRD=y 6 6 CONFIG_KALLSYMS_ALL=y 7 7 CONFIG_MODULES=y 8 8 CONFIG_MODULE_UNLOAD=y 9 9 # CONFIG_BLK_DEV_BSG is not set 10 + CONFIG_PARTITION_ADVANCED=y 10 11 CONFIG_ARCH_U8500=y 11 12 CONFIG_MACH_HREFV60=y 12 13 CONFIG_MACH_SNOWBALL=y 13 - CONFIG_MACH_UX500_DT=y 14 14 CONFIG_SMP=y 15 15 CONFIG_NR_CPUS=2 16 16 CONFIG_PREEMPT=y ··· 34 34 CONFIG_IP_PNP_DHCP=y 35 35 CONFIG_NETFILTER=y 36 36 CONFIG_PHONET=y 37 - # CONFIG_WIRELESS is not set 37 + CONFIG_CFG80211=y 38 + CONFIG_CFG80211_DEBUGFS=y 39 + CONFIG_MAC80211=y 40 + CONFIG_MAC80211_LEDS=y 38 41 CONFIG_CAIF=y 39 42 CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 43 + CONFIG_DEVTMPFS=y 44 + CONFIG_DEVTMPFS_MOUNT=y 40 45 CONFIG_BLK_DEV_RAM=y 41 46 CONFIG_BLK_DEV_RAM_SIZE=65536 42 47 CONFIG_SENSORS_BH1780=y 43 48 CONFIG_NETDEVICES=y 44 49 CONFIG_SMSC911X=y 45 50 CONFIG_SMSC_PHY=y 46 - # CONFIG_WLAN is not set 51 + CONFIG_CW1200=y 52 + CONFIG_CW1200_WLAN_SDIO=y 47 53 # CONFIG_INPUT_MOUSEDEV_PSAUX is not set 48 54 CONFIG_INPUT_EVDEV=y 49 55 # CONFIG_KEYBOARD_ATKBD is not set ··· 91 85 CONFIG_USB_GADGET=y 92 86 CONFIG_USB_ETH=m 93 87 CONFIG_MMC=y 94 - CONFIG_MMC_UNSAFE_RESUME=y 95 - # CONFIG_MMC_BLOCK_BOUNCE is not set 96 88 CONFIG_MMC_ARMMMCI=y 97 89 CONFIG_NEW_LEDS=y 98 90 CONFIG_LEDS_CLASS=y 99 91 CONFIG_LEDS_LM3530=y 100 92 CONFIG_LEDS_GPIO=y 101 93 CONFIG_LEDS_LP5521=y 102 - CONFIG_LEDS_TRIGGERS=y 103 94 CONFIG_LEDS_TRIGGER_HEARTBEAT=y 104 95 CONFIG_RTC_CLASS=y 105 96 CONFIG_RTC_DRV_AB8500=y ··· 106 103 CONFIG_STAGING=y 107 104 CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4=y 108 105 CONFIG_HSEM_U8500=y 106 + CONFIG_IIO=y 107 + CONFIG_IIO_ST_ACCEL_3AXIS=y 108 + CONFIG_IIO_ST_GYRO_3AXIS=y 109 + CONFIG_IIO_ST_MAGN_3AXIS=y 110 + CONFIG_IIO_ST_PRESS=y 109 111 CONFIG_EXT2_FS=y 110 112 CONFIG_EXT2_FS_XATTR=y 111 113 CONFIG_EXT2_FS_POSIX_ACL=y ··· 118 110 CONFIG_EXT3_FS=y 119 111 CONFIG_EXT4_FS=y 120 112 CONFIG_VFAT_FS=y 121 - CONFIG_DEVTMPFS=y 122 - CONFIG_DEVTMPFS_MOUNT=y 123 113 CONFIG_TMPFS=y 124 114 CONFIG_TMPFS_POSIX_ACL=y 125 115 # CONFIG_MISC_FILESYSTEMS is not set
+7 -7
arch/arm/include/asm/cputype.h
··· 222 222 #endif 223 223 224 224 /* 225 - * Marvell's PJ4 core is based on V7 version. It has some modification 226 - * for coprocessor setting. For this reason, we need a way to distinguish 227 - * it. 225 + * Marvell's PJ4 and PJ4B cores are based on V7 version, 226 + * but require a specical sequence for enabling coprocessors. 227 + * For this reason, we need a way to distinguish them. 228 228 */ 229 - #ifndef CONFIG_CPU_PJ4 230 - #define cpu_is_pj4() 0 231 - #else 229 + #if defined(CONFIG_CPU_PJ4) || defined(CONFIG_CPU_PJ4B) 232 230 static inline int cpu_is_pj4(void) 233 231 { 234 232 unsigned int id; 235 233 236 234 id = read_cpuid_id(); 237 - if ((id & 0xfffffff0) == 0x562f5840) 235 + if ((id & 0xff0fff00) == 0x560f5800) 238 236 return 1; 239 237 240 238 return 0; 241 239 } 240 + #else 241 + #define cpu_is_pj4() 0 242 242 #endif 243 243 #endif
+1 -1
arch/arm/include/asm/div64.h
··· 156 156 /* Select the best insn combination to perform the */ \ 157 157 /* actual __m * __n / (__p << 64) operation. */ \ 158 158 if (!__c) { \ 159 - asm ( "umull %Q0, %R0, %1, %Q2\n\t" \ 159 + asm ( "umull %Q0, %R0, %Q1, %Q2\n\t" \ 160 160 "mov %Q0, #0" \ 161 161 : "=&r" (__res) \ 162 162 : "r" (__m), "r" (__n) \
+7
arch/arm/include/asm/mcpm.h
··· 54 54 */ 55 55 56 56 /** 57 + * mcpm_is_available - returns whether MCPM is initialized and available 58 + * 59 + * This returns true or false accordingly. 60 + */ 61 + bool mcpm_is_available(void); 62 + 63 + /** 57 64 * mcpm_cpu_power_up - make given CPU in given cluster runable 58 65 * 59 66 * @cpu: CPU number within given cluster
+11 -1
arch/arm/include/asm/tlb.h
··· 98 98 } 99 99 } 100 100 101 - static inline void tlb_flush_mmu(struct mmu_gather *tlb) 101 + static inline void tlb_flush_mmu_tlbonly(struct mmu_gather *tlb) 102 102 { 103 103 tlb_flush(tlb); 104 + } 105 + 106 + static inline void tlb_flush_mmu_free(struct mmu_gather *tlb) 107 + { 104 108 free_pages_and_swap_cache(tlb->pages, tlb->nr); 105 109 tlb->nr = 0; 106 110 if (tlb->pages == tlb->local) 107 111 __tlb_alloc_page(tlb); 112 + } 113 + 114 + static inline void tlb_flush_mmu(struct mmu_gather *tlb) 115 + { 116 + tlb_flush_mmu_tlbonly(tlb); 117 + tlb_flush_mmu_free(tlb); 108 118 } 109 119 110 120 static inline void
+1
arch/arm/include/uapi/asm/unistd.h
··· 408 408 #define __NR_finit_module (__NR_SYSCALL_BASE+379) 409 409 #define __NR_sched_setattr (__NR_SYSCALL_BASE+380) 410 410 #define __NR_sched_getattr (__NR_SYSCALL_BASE+381) 411 + #define __NR_renameat2 (__NR_SYSCALL_BASE+382) 411 412 412 413 /* 413 414 * This may need to be greater than __NR_last_syscall+1 in order to
+1
arch/arm/kernel/Makefile
··· 79 79 obj-$(CONFIG_CPU_XSC3) += xscale-cp0.o 80 80 obj-$(CONFIG_CPU_MOHAWK) += xscale-cp0.o 81 81 obj-$(CONFIG_CPU_PJ4) += pj4-cp0.o 82 + obj-$(CONFIG_CPU_PJ4B) += pj4-cp0.o 82 83 obj-$(CONFIG_IWMMXT) += iwmmxt.o 83 84 obj-$(CONFIG_PERF_EVENTS) += perf_regs.o 84 85 obj-$(CONFIG_HW_PERF_EVENTS) += perf_event.o perf_event_cpu.o
+1
arch/arm/kernel/calls.S
··· 391 391 CALL(sys_finit_module) 392 392 /* 380 */ CALL(sys_sched_setattr) 393 393 CALL(sys_sched_getattr) 394 + CALL(sys_renameat2) 394 395 #ifndef syscalls_counted 395 396 .equ syscalls_padding, ((NR_syscalls + 3) & ~3) - NR_syscalls 396 397 #define syscalls_counted
+1 -1
arch/arm/kernel/head.S
··· 587 587 add r6, r6, r3 @ adjust __pv_phys_pfn_offset address 588 588 add r7, r7, r3 @ adjust __pv_offset address 589 589 mov r0, r8, lsr #12 @ convert to PFN 590 - str r0, [r6, #LOW_OFFSET] @ save computed PHYS_OFFSET to __pv_phys_pfn_offset 590 + str r0, [r6] @ save computed PHYS_OFFSET to __pv_phys_pfn_offset 591 591 strcc ip, [r7, #HIGH_OFFSET] @ save to __pv_offset high bits 592 592 mov r6, r3, lsr #24 @ constant for add/sub instructions 593 593 teq r3, r6, lsl #24 @ must be 16MiB aligned
+6 -2
arch/arm/kernel/iwmmxt.S
··· 19 19 #include <asm/thread_info.h> 20 20 #include <asm/asm-offsets.h> 21 21 22 - #if defined(CONFIG_CPU_PJ4) 22 + #if defined(CONFIG_CPU_PJ4) || defined(CONFIG_CPU_PJ4B) 23 23 #define PJ4(code...) code 24 24 #define XSC(code...) 25 - #else 25 + #elif defined(CONFIG_CPU_MOHAWK) || \ 26 + defined(CONFIG_CPU_XSC3) || \ 27 + defined(CONFIG_CPU_XSCALE) 26 28 #define PJ4(code...) 27 29 #define XSC(code...) code 30 + #else 31 + #error "Unsupported iWMMXt architecture" 28 32 #endif 29 33 30 34 #define MMX_WR0 (0x00)
+7
arch/arm/kernel/machine_kexec.c
··· 184 184 185 185 soft_restart(reboot_entry_phys); 186 186 } 187 + 188 + void arch_crash_save_vmcoreinfo(void) 189 + { 190 + #ifdef CONFIG_ARM_LPAE 191 + VMCOREINFO_CONFIG(ARM_LPAE); 192 + #endif 193 + }
+39 -3
arch/arm/kernel/pj4-cp0.c
··· 45 45 return NOTIFY_DONE; 46 46 } 47 47 48 - static struct notifier_block iwmmxt_notifier_block = { 48 + static struct notifier_block __maybe_unused iwmmxt_notifier_block = { 49 49 .notifier_call = iwmmxt_do, 50 50 }; 51 51 ··· 72 72 : "=r" (temp) : "r" (value)); 73 73 } 74 74 75 + static int __init pj4_get_iwmmxt_version(void) 76 + { 77 + u32 cp_access, wcid; 78 + 79 + cp_access = pj4_cp_access_read(); 80 + pj4_cp_access_write(cp_access | 0xf); 81 + 82 + /* check if coprocessor 0 and 1 are available */ 83 + if ((pj4_cp_access_read() & 0xf) != 0xf) { 84 + pj4_cp_access_write(cp_access); 85 + return -ENODEV; 86 + } 87 + 88 + /* read iWMMXt coprocessor id register p1, c0 */ 89 + __asm__ __volatile__ ("mrc p1, 0, %0, c0, c0, 0\n" : "=r" (wcid)); 90 + 91 + pj4_cp_access_write(cp_access); 92 + 93 + /* iWMMXt v1 */ 94 + if ((wcid & 0xffffff00) == 0x56051000) 95 + return 1; 96 + /* iWMMXt v2 */ 97 + if ((wcid & 0xffffff00) == 0x56052000) 98 + return 2; 99 + 100 + return -EINVAL; 101 + } 75 102 76 103 /* 77 104 * Disable CP0/CP1 on boot, and let call_fpe() and the iWMMXt lazy ··· 106 79 */ 107 80 static int __init pj4_cp0_init(void) 108 81 { 109 - u32 cp_access; 82 + u32 __maybe_unused cp_access; 83 + int vers; 110 84 111 85 if (!cpu_is_pj4()) 112 86 return 0; 113 87 88 + vers = pj4_get_iwmmxt_version(); 89 + if (vers < 0) 90 + return 0; 91 + 92 + #ifndef CONFIG_IWMMXT 93 + pr_info("PJ4 iWMMXt coprocessor detected, but kernel support is missing.\n"); 94 + #else 114 95 cp_access = pj4_cp_access_read() & ~0xf; 115 96 pj4_cp_access_write(cp_access); 116 97 117 - printk(KERN_INFO "PJ4 iWMMXt coprocessor enabled.\n"); 98 + pr_info("PJ4 iWMMXt v%d coprocessor enabled.\n", vers); 118 99 elf_hwcap |= HWCAP_IWMMXT; 119 100 thread_register_notifier(&iwmmxt_notifier_block); 101 + #endif 120 102 121 103 return 0; 122 104 }
+3 -3
arch/arm/kernel/sys_oabi-compat.c
··· 203 203 int ret; 204 204 205 205 switch (cmd) { 206 - case F_GETLKP: 207 - case F_SETLKP: 208 - case F_SETLKPW: 206 + case F_OFD_GETLK: 207 + case F_OFD_SETLK: 208 + case F_OFD_SETLKW: 209 209 case F_GETLK64: 210 210 case F_SETLK64: 211 211 case F_SETLKW64:
+1 -1
arch/arm/mach-at91/at91sam9260_devices.c
··· 1296 1296 }; 1297 1297 1298 1298 static struct platform_device at91_adc_device = { 1299 - .name = "at91_adc", 1299 + .name = "at91sam9260-adc", 1300 1300 .id = -1, 1301 1301 .dev = { 1302 1302 .platform_data = &adc_data,
+1 -1
arch/arm/mach-at91/at91sam9g45_devices.c
··· 1204 1204 }; 1205 1205 1206 1206 static struct platform_device at91_adc_device = { 1207 - .name = "at91_adc", 1207 + .name = "at91sam9g45-adc", 1208 1208 .id = -1, 1209 1209 .dev = { 1210 1210 .platform_data = &adc_data,
+19 -10
arch/arm/mach-imx/clk-imx6q.c
··· 208 208 * the "output_enable" bit as a gate, even though it's really just 209 209 * enabling clock output. 210 210 */ 211 - clk[lvds1_gate] = imx_clk_gate("lvds1_gate", "dummy", base + 0x160, 10); 212 - clk[lvds2_gate] = imx_clk_gate("lvds2_gate", "dummy", base + 0x160, 11); 211 + clk[lvds1_gate] = imx_clk_gate("lvds1_gate", "lvds1_sel", base + 0x160, 10); 212 + clk[lvds2_gate] = imx_clk_gate("lvds2_gate", "lvds2_sel", base + 0x160, 11); 213 213 214 214 /* name parent_name reg idx */ 215 215 clk[pll2_pfd0_352m] = imx_clk_pfd("pll2_pfd0_352m", "pll2_bus", base + 0x100, 0); ··· 258 258 clk[ipu2_sel] = imx_clk_mux("ipu2_sel", base + 0x3c, 14, 2, ipu_sels, ARRAY_SIZE(ipu_sels)); 259 259 clk[ldb_di0_sel] = imx_clk_mux_flags("ldb_di0_sel", base + 0x2c, 9, 3, ldb_di_sels, ARRAY_SIZE(ldb_di_sels), CLK_SET_RATE_PARENT); 260 260 clk[ldb_di1_sel] = imx_clk_mux_flags("ldb_di1_sel", base + 0x2c, 12, 3, ldb_di_sels, ARRAY_SIZE(ldb_di_sels), CLK_SET_RATE_PARENT); 261 - clk[ipu1_di0_pre_sel] = imx_clk_mux("ipu1_di0_pre_sel", base + 0x34, 6, 3, ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels)); 262 - clk[ipu1_di1_pre_sel] = imx_clk_mux("ipu1_di1_pre_sel", base + 0x34, 15, 3, ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels)); 263 - clk[ipu2_di0_pre_sel] = imx_clk_mux("ipu2_di0_pre_sel", base + 0x38, 6, 3, ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels)); 264 - clk[ipu2_di1_pre_sel] = imx_clk_mux("ipu2_di1_pre_sel", base + 0x38, 15, 3, ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels)); 265 - clk[ipu1_di0_sel] = imx_clk_mux("ipu1_di0_sel", base + 0x34, 0, 3, ipu1_di0_sels, ARRAY_SIZE(ipu1_di0_sels)); 266 - clk[ipu1_di1_sel] = imx_clk_mux("ipu1_di1_sel", base + 0x34, 9, 3, ipu1_di1_sels, ARRAY_SIZE(ipu1_di1_sels)); 267 - clk[ipu2_di0_sel] = imx_clk_mux("ipu2_di0_sel", base + 0x38, 0, 3, ipu2_di0_sels, ARRAY_SIZE(ipu2_di0_sels)); 268 - clk[ipu2_di1_sel] = imx_clk_mux("ipu2_di1_sel", base + 0x38, 9, 3, ipu2_di1_sels, ARRAY_SIZE(ipu2_di1_sels)); 261 + clk[ipu1_di0_pre_sel] = imx_clk_mux_flags("ipu1_di0_pre_sel", base + 0x34, 6, 3, ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels), CLK_SET_RATE_PARENT); 262 + clk[ipu1_di1_pre_sel] = imx_clk_mux_flags("ipu1_di1_pre_sel", base + 0x34, 15, 3, ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels), CLK_SET_RATE_PARENT); 263 + clk[ipu2_di0_pre_sel] = imx_clk_mux_flags("ipu2_di0_pre_sel", base + 0x38, 6, 3, ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels), CLK_SET_RATE_PARENT); 264 + clk[ipu2_di1_pre_sel] = imx_clk_mux_flags("ipu2_di1_pre_sel", base + 0x38, 15, 3, ipu_di_pre_sels, ARRAY_SIZE(ipu_di_pre_sels), CLK_SET_RATE_PARENT); 265 + clk[ipu1_di0_sel] = imx_clk_mux_flags("ipu1_di0_sel", base + 0x34, 0, 3, ipu1_di0_sels, ARRAY_SIZE(ipu1_di0_sels), CLK_SET_RATE_PARENT); 266 + clk[ipu1_di1_sel] = imx_clk_mux_flags("ipu1_di1_sel", base + 0x34, 9, 3, ipu1_di1_sels, ARRAY_SIZE(ipu1_di1_sels), CLK_SET_RATE_PARENT); 267 + clk[ipu2_di0_sel] = imx_clk_mux_flags("ipu2_di0_sel", base + 0x38, 0, 3, ipu2_di0_sels, ARRAY_SIZE(ipu2_di0_sels), CLK_SET_RATE_PARENT); 268 + clk[ipu2_di1_sel] = imx_clk_mux_flags("ipu2_di1_sel", base + 0x38, 9, 3, ipu2_di1_sels, ARRAY_SIZE(ipu2_di1_sels), CLK_SET_RATE_PARENT); 269 269 clk[hsi_tx_sel] = imx_clk_mux("hsi_tx_sel", base + 0x30, 28, 1, hsi_tx_sels, ARRAY_SIZE(hsi_tx_sels)); 270 270 clk[pcie_axi_sel] = imx_clk_mux("pcie_axi_sel", base + 0x18, 10, 1, pcie_axi_sels, ARRAY_SIZE(pcie_axi_sels)); 271 271 clk[ssi1_sel] = imx_clk_fixup_mux("ssi1_sel", base + 0x1c, 10, 2, ssi_sels, ARRAY_SIZE(ssi_sels), imx_cscmr1_fixup); ··· 444 444 clk_set_parent(clk[ldb_di0_sel], clk[pll5_video_div]); 445 445 clk_set_parent(clk[ldb_di1_sel], clk[pll5_video_div]); 446 446 } 447 + 448 + clk_set_parent(clk[ipu1_di0_pre_sel], clk[pll5_video_div]); 449 + clk_set_parent(clk[ipu1_di1_pre_sel], clk[pll5_video_div]); 450 + clk_set_parent(clk[ipu2_di0_pre_sel], clk[pll5_video_div]); 451 + clk_set_parent(clk[ipu2_di1_pre_sel], clk[pll5_video_div]); 452 + clk_set_parent(clk[ipu1_di0_sel], clk[ipu1_di0_pre]); 453 + clk_set_parent(clk[ipu1_di1_sel], clk[ipu1_di1_pre]); 454 + clk_set_parent(clk[ipu2_di0_sel], clk[ipu2_di0_pre]); 455 + clk_set_parent(clk[ipu2_di1_sel], clk[ipu2_di1_pre]); 447 456 448 457 /* 449 458 * The gpmi needs 100MHz frequency in the EDO/Sync mode,
+1 -1
arch/arm/mach-omap2/board-rx51-video.c
··· 48 48 49 49 static int __init rx51_video_init(void) 50 50 { 51 - if (!machine_is_nokia_rx51() && !of_machine_is_compatible("nokia,omap3-n900")) 51 + if (!machine_is_nokia_rx51()) 52 52 return 0; 53 53 54 54 if (omap_mux_init_gpio(RX51_LCD_RESET_GPIO, OMAP_PIN_OUTPUT)) {
+2 -2
arch/arm/mach-omap2/clkt_dpll.c
··· 209 209 if (v == OMAP3XXX_EN_DPLL_LPBYPASS || 210 210 v == OMAP3XXX_EN_DPLL_FRBYPASS) 211 211 return 1; 212 - } else if (soc_is_am33xx() || cpu_is_omap44xx()) { 212 + } else if (soc_is_am33xx() || cpu_is_omap44xx() || soc_is_am43xx()) { 213 213 if (v == OMAP4XXX_EN_DPLL_LPBYPASS || 214 214 v == OMAP4XXX_EN_DPLL_FRBYPASS || 215 215 v == OMAP4XXX_EN_DPLL_MNBYPASS) ··· 255 255 if (v == OMAP3XXX_EN_DPLL_LPBYPASS || 256 256 v == OMAP3XXX_EN_DPLL_FRBYPASS) 257 257 return __clk_get_rate(dd->clk_bypass); 258 - } else if (soc_is_am33xx() || cpu_is_omap44xx()) { 258 + } else if (soc_is_am33xx() || cpu_is_omap44xx() || soc_is_am43xx()) { 259 259 if (v == OMAP4XXX_EN_DPLL_LPBYPASS || 260 260 v == OMAP4XXX_EN_DPLL_FRBYPASS || 261 261 v == OMAP4XXX_EN_DPLL_MNBYPASS)
+13 -2
arch/arm/mach-omap2/gpmc.c
··· 501 501 int r; 502 502 503 503 spin_lock(&gpmc_mem_lock); 504 - r = release_resource(&gpmc_cs_mem[cs]); 504 + r = release_resource(res); 505 505 res->start = 0; 506 506 res->end = 0; 507 507 spin_unlock(&gpmc_mem_lock); ··· 527 527 pr_err("%s: requested chip-select is disabled\n", __func__); 528 528 return -ENODEV; 529 529 } 530 + 531 + /* 532 + * Make sure we ignore any device offsets from the GPMC partition 533 + * allocated for the chip select and that the new base confirms 534 + * to the GPMC 16MB minimum granularity. 535 + */ 536 + base &= ~(SZ_16M - 1); 537 + 530 538 gpmc_cs_get_memconf(cs, &old_base, &size); 531 539 if (base == old_base) 532 540 return 0; ··· 594 586 595 587 void gpmc_cs_free(int cs) 596 588 { 589 + struct resource *res = &gpmc_cs_mem[cs]; 590 + 597 591 spin_lock(&gpmc_mem_lock); 598 592 if (cs >= gpmc_cs_num || cs < 0 || !gpmc_cs_reserved(cs)) { 599 593 printk(KERN_ERR "Trying to free non-reserved GPMC CS%d\n", cs); ··· 604 594 return; 605 595 } 606 596 gpmc_cs_disable_mem(cs); 607 - release_resource(&gpmc_cs_mem[cs]); 597 + if (res->flags) 598 + release_resource(res); 608 599 gpmc_cs_set_reserved(cs, 0); 609 600 spin_unlock(&gpmc_mem_lock); 610 601 }
+2 -1
arch/arm/mach-omap2/omap_hwmod.c
··· 2546 2546 return -EINVAL; 2547 2547 } 2548 2548 2549 - if (np) 2549 + if (np) { 2550 2550 if (of_find_property(np, "ti,no-reset-on-init", NULL)) 2551 2551 oh->flags |= HWMOD_INIT_NO_RESET; 2552 2552 if (of_find_property(np, "ti,no-idle-on-init", NULL)) 2553 2553 oh->flags |= HWMOD_INIT_NO_IDLE; 2554 + } 2554 2555 2555 2556 oh->_state = _HWMOD_STATE_INITIALIZED; 2556 2557
+2 -2
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
··· 1964 1964 static struct omap_hwmod omap3xxx_usb_host_hs_hwmod = { 1965 1965 .name = "usb_host_hs", 1966 1966 .class = &omap3xxx_usb_host_hs_hwmod_class, 1967 - .clkdm_name = "l3_init_clkdm", 1967 + .clkdm_name = "usbhost_clkdm", 1968 1968 .mpu_irqs = omap3xxx_usb_host_hs_irqs, 1969 1969 .main_clk = "usbhost_48m_fck", 1970 1970 .prcm = { ··· 2047 2047 static struct omap_hwmod omap3xxx_usb_tll_hs_hwmod = { 2048 2048 .name = "usb_tll_hs", 2049 2049 .class = &omap3xxx_usb_tll_hs_hwmod_class, 2050 - .clkdm_name = "l3_init_clkdm", 2050 + .clkdm_name = "core_l4_clkdm", 2051 2051 .mpu_irqs = omap3xxx_usb_tll_hs_irqs, 2052 2052 .main_clk = "usbtll_fck", 2053 2053 .prcm = {
-4
arch/arm/mach-omap2/pm34xx.c
··· 330 330 omap3_sram_restore_context(); 331 331 omap2_sms_restore_context(); 332 332 } 333 - if (core_next_state == PWRDM_POWER_OFF) 334 - omap2_prm_clear_mod_reg_bits(OMAP3430_AUTO_OFF_MASK, 335 - OMAP3430_GR_MOD, 336 - OMAP3_PRM_VOLTCTRL_OFFSET); 337 333 } 338 334 omap3_intc_resume_idle(); 339 335
+1
arch/arm/mach-pxa/include/mach/hx4700.h
··· 14 14 15 15 #include <linux/gpio.h> 16 16 #include <linux/mfd/asic3.h> 17 + #include "irqs.h" /* PXA_NR_BUILTIN_GPIO */ 17 18 18 19 #define HX4700_ASIC3_GPIO_BASE PXA_NR_BUILTIN_GPIO 19 20 #define HX4700_EGPIO_BASE (HX4700_ASIC3_GPIO_BASE + ASIC3_NUM_GPIOS)
+1 -1
arch/arm/mach-rockchip/platsmp.c
··· 152 152 153 153 node = of_find_compatible_node(NULL, NULL, "rockchip,rk3066-pmu"); 154 154 if (!node) { 155 - pr_err("%s: could not find sram dt node\n", __func__); 155 + pr_err("%s: could not find pmu dt node\n", __func__); 156 156 return; 157 157 } 158 158
+1
arch/arm/mach-shmobile/board-armadillo800eva.c
··· 992 992 .platform = "sh_fsi2", 993 993 .daifmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_CBM_CFM, 994 994 .cpu_dai = { 995 + .fmt = SND_SOC_DAIFMT_IB_NF, 995 996 .name = "fsia-dai", 996 997 }, 997 998 .codec_dai = {
+1 -3
arch/arm/mach-shmobile/board-lager.c
··· 588 588 .card = "SSI01-AK4643", 589 589 .codec = "ak4642-codec.2-0012", 590 590 .platform = "rcar_sound", 591 - .daifmt = SND_SOC_DAIFMT_LEFT_J, 591 + .daifmt = SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_CBM_CFM, 592 592 .cpu_dai = { 593 593 .name = "rcar_sound", 594 - .fmt = SND_SOC_DAIFMT_CBS_CFS, 595 594 }, 596 595 .codec_dai = { 597 596 .name = "ak4642-hifi", 598 - .fmt = SND_SOC_DAIFMT_CBM_CFM, 599 597 .sysclk = 11289600, 600 598 }, 601 599 };
+1 -1
arch/arm/mach-shmobile/clock-r8a7778.c
··· 170 170 [MSTP010] = SH_CLK_MSTP32(&p_clk, MSTPCR0, 10, 0), /* SSI2 */ 171 171 [MSTP009] = SH_CLK_MSTP32(&p_clk, MSTPCR0, 9, 0), /* SSI3 */ 172 172 [MSTP008] = SH_CLK_MSTP32(&p_clk, MSTPCR0, 8, 0), /* SRU */ 173 - [MSTP007] = SH_CLK_MSTP32(&p_clk, MSTPCR0, 7, 0), /* HSPI */ 173 + [MSTP007] = SH_CLK_MSTP32(&s_clk, MSTPCR0, 7, 0), /* HSPI */ 174 174 }; 175 175 176 176 static struct clk_lookup lookups[] = {
+1 -1
arch/arm/mach-spear/time.c
··· 71 71 static int clockevent_next_event(unsigned long evt, 72 72 struct clock_event_device *clk_event_dev); 73 73 74 - static void spear_clocksource_init(void) 74 + static void __init spear_clocksource_init(void) 75 75 { 76 76 u32 tick_rate; 77 77 u16 val;
-3
arch/arm/mach-tegra/Kconfig
··· 70 70 which controls AHB bus master arbitration and some 71 71 performance parameters(priority, prefech size). 72 72 73 - config TEGRA_EMC_SCALING_ENABLE 74 - bool "Enable scaling the memory frequency" 75 - 76 73 endmenu
+5 -2
arch/arm/mach-vexpress/dcscb.c
··· 51 51 static int dcscb_power_up(unsigned int cpu, unsigned int cluster) 52 52 { 53 53 unsigned int rst_hold, cpumask = (1 << cpu); 54 - unsigned int all_mask = dcscb_allcpus_mask[cluster]; 54 + unsigned int all_mask; 55 55 56 56 pr_debug("%s: cpu %u cluster %u\n", __func__, cpu, cluster); 57 57 if (cpu >= 4 || cluster >= 2) 58 58 return -EINVAL; 59 + 60 + all_mask = dcscb_allcpus_mask[cluster]; 59 61 60 62 /* 61 63 * Since this is called with IRQs enabled, and no arch_spin_lock_irq ··· 103 101 cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0); 104 102 cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1); 105 103 cpumask = (1 << cpu); 106 - all_mask = dcscb_allcpus_mask[cluster]; 107 104 108 105 pr_debug("%s: cpu %u cluster %u\n", __func__, cpu, cluster); 109 106 BUG_ON(cpu >= 4 || cluster >= 2); 107 + 108 + all_mask = dcscb_allcpus_mask[cluster]; 110 109 111 110 __mcpm_cpu_going_down(cpu, cluster); 112 111
+2 -2
arch/arm/mach-vexpress/spc.c
··· 392 392 * +--------------------------+ 393 393 * | 31 20 | 19 0 | 394 394 * +--------------------------+ 395 - * | u_volt | freq(kHz) | 395 + * | m_volt | freq(kHz) | 396 396 * +--------------------------+ 397 397 */ 398 398 #define MULT_FACTOR 20 ··· 414 414 ret = ve_spc_read_sys_cfg(SYSCFG_SCC, off, &data); 415 415 if (!ret) { 416 416 opps->freq = (data & FREQ_MASK) * MULT_FACTOR; 417 - opps->u_volt = data >> VOLT_SHIFT; 417 + opps->u_volt = (data >> VOLT_SHIFT) * 1000; 418 418 } else { 419 419 break; 420 420 }
+4 -4
arch/arm/mm/Kconfig
··· 420 420 bool 421 421 select CPU_USE_DOMAINS if MMU 422 422 select NEEDS_SYSCALL_FOR_CMPXCHG if SMP 423 - select TLS_REG_EMUL if SMP || !MMU 424 423 select NEED_KUSER_HELPERS 424 + select TLS_REG_EMUL if SMP || !MMU 425 425 426 426 config CPU_32v4 427 427 bool 428 428 select CPU_USE_DOMAINS if MMU 429 429 select NEEDS_SYSCALL_FOR_CMPXCHG if SMP 430 - select TLS_REG_EMUL if SMP || !MMU 431 430 select NEED_KUSER_HELPERS 431 + select TLS_REG_EMUL if SMP || !MMU 432 432 433 433 config CPU_32v4T 434 434 bool 435 435 select CPU_USE_DOMAINS if MMU 436 436 select NEEDS_SYSCALL_FOR_CMPXCHG if SMP 437 - select TLS_REG_EMUL if SMP || !MMU 438 437 select NEED_KUSER_HELPERS 438 + select TLS_REG_EMUL if SMP || !MMU 439 439 440 440 config CPU_32v5 441 441 bool 442 442 select CPU_USE_DOMAINS if MMU 443 443 select NEEDS_SYSCALL_FOR_CMPXCHG if SMP 444 - select TLS_REG_EMUL if SMP || !MMU 445 444 select NEED_KUSER_HELPERS 445 + select TLS_REG_EMUL if SMP || !MMU 446 446 447 447 config CPU_32v6 448 448 bool
+1 -1
arch/arm/mm/dma-mapping.c
··· 1963 1963 mapping->nr_bitmaps = 1; 1964 1964 mapping->extensions = extensions; 1965 1965 mapping->base = base; 1966 - mapping->size = bitmap_size << PAGE_SHIFT; 1967 1966 mapping->bits = BITS_PER_BYTE * bitmap_size; 1967 + mapping->size = mapping->bits << PAGE_SHIFT; 1968 1968 1969 1969 spin_lock_init(&mapping->lock); 1970 1970
+2
arch/arm/vfp/vfpdouble.c
··· 866 866 vdp.sign = vfp_sign_negate(vdp.sign); 867 867 868 868 vfp_double_unpack(&vdn, vfp_get_double(dd)); 869 + if (vdn.exponent == 0 && vdn.significand) 870 + vfp_double_normalise_denormal(&vdn); 869 871 if (negate & NEG_SUBTRACT) 870 872 vdn.sign = vfp_sign_negate(vdn.sign); 871 873
+2
arch/arm/vfp/vfpsingle.c
··· 915 915 v = vfp_get_float(sd); 916 916 pr_debug("VFP: s%u = %08x\n", sd, v); 917 917 vfp_single_unpack(&vsn, v); 918 + if (vsn.exponent == 0 && vsn.significand) 919 + vfp_single_normalise_denormal(&vsn); 918 920 if (negate & NEG_SUBTRACT) 919 921 vsn.sign = vfp_sign_negate(vsn.sign); 920 922
-2
arch/arm64/Kconfig
··· 323 323 324 324 source "drivers/cpuidle/Kconfig" 325 325 326 - source "kernel/power/Kconfig" 327 - 328 326 source "drivers/cpufreq/Kconfig" 329 327 330 328 endmenu
+3
arch/arm64/include/asm/mmu.h
··· 22 22 void *vdso; 23 23 } mm_context_t; 24 24 25 + #define INIT_MM_CONTEXT(name) \ 26 + .context.id_lock = __RAW_SPIN_LOCK_UNLOCKED(name.context.id_lock), 27 + 25 28 #define ASID(mm) ((mm)->context.id & 0xffff) 26 29 27 30 extern void paging_init(void);
+6
arch/arm64/include/asm/tlb.h
··· 19 19 #ifndef __ASM_TLB_H 20 20 #define __ASM_TLB_H 21 21 22 + #define __tlb_remove_pmd_tlb_entry __tlb_remove_pmd_tlb_entry 22 23 23 24 #include <asm-generic/tlb.h> 24 25 ··· 100 99 } 101 100 #endif 102 101 102 + static inline void __tlb_remove_pmd_tlb_entry(struct mmu_gather *tlb, pmd_t *pmdp, 103 + unsigned long address) 104 + { 105 + tlb_add_flush(tlb, address); 106 + } 103 107 104 108 #endif
+2 -1
arch/arm64/include/asm/unistd32.h
··· 403 403 __SYSCALL(379, sys_finit_module) 404 404 __SYSCALL(380, sys_sched_setattr) 405 405 __SYSCALL(381, sys_sched_getattr) 406 + __SYSCALL(382, sys_renameat2) 406 407 407 - #define __NR_compat_syscalls 379 408 + #define __NR_compat_syscalls 383 408 409 409 410 /* 410 411 * Compat syscall numbers used by the AArch64 kernel.
-3
arch/arm64/kernel/debug-monitors.c
··· 318 318 if (call_break_hook(regs, esr) == DBG_HOOK_HANDLED) 319 319 return 0; 320 320 321 - pr_warn("unexpected brk exception at %lx, esr=0x%x\n", 322 - (long)instruction_pointer(regs), esr); 323 - 324 321 if (!user_mode(regs)) 325 322 return -EFAULT; 326 323
-1
arch/arm64/kernel/setup.c
··· 393 393 394 394 static int __init arm64_device_init(void) 395 395 { 396 - of_clk_init(NULL); 397 396 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 398 397 return 0; 399 398 }
+2
arch/arm64/kernel/time.c
··· 33 33 #include <linux/irq.h> 34 34 #include <linux/delay.h> 35 35 #include <linux/clocksource.h> 36 + #include <linux/clk-provider.h> 36 37 37 38 #include <clocksource/arm_arch_timer.h> 38 39 ··· 66 65 { 67 66 u32 arch_timer_rate; 68 67 68 + of_clk_init(NULL); 69 69 clocksource_of_init(); 70 70 71 71 arch_timer_rate = arch_timer_get_rate();
+32 -10
arch/ia64/include/asm/tlb.h
··· 91 91 #define RR_RID_MASK 0x00000000ffffff00L 92 92 #define RR_TO_RID(val) ((val >> 8) & 0xffffff) 93 93 94 - /* 95 - * Flush the TLB for address range START to END and, if not in fast mode, release the 96 - * freed pages that where gathered up to this point. 97 - */ 98 94 static inline void 99 - ia64_tlb_flush_mmu (struct mmu_gather *tlb, unsigned long start, unsigned long end) 95 + ia64_tlb_flush_mmu_tlbonly(struct mmu_gather *tlb, unsigned long start, unsigned long end) 100 96 { 101 - unsigned long i; 102 - unsigned int nr; 103 - 104 - if (!tlb->need_flush) 105 - return; 106 97 tlb->need_flush = 0; 107 98 108 99 if (tlb->fullmm) { ··· 126 135 flush_tlb_range(&vma, ia64_thash(start), ia64_thash(end)); 127 136 } 128 137 138 + } 139 + 140 + static inline void 141 + ia64_tlb_flush_mmu_free(struct mmu_gather *tlb) 142 + { 143 + unsigned long i; 144 + unsigned int nr; 145 + 129 146 /* lastly, release the freed pages */ 130 147 nr = tlb->nr; 131 148 ··· 141 142 tlb->start_addr = ~0UL; 142 143 for (i = 0; i < nr; ++i) 143 144 free_page_and_swap_cache(tlb->pages[i]); 145 + } 146 + 147 + /* 148 + * Flush the TLB for address range START to END and, if not in fast mode, release the 149 + * freed pages that where gathered up to this point. 150 + */ 151 + static inline void 152 + ia64_tlb_flush_mmu (struct mmu_gather *tlb, unsigned long start, unsigned long end) 153 + { 154 + if (!tlb->need_flush) 155 + return; 156 + ia64_tlb_flush_mmu_tlbonly(tlb, start, end); 157 + ia64_tlb_flush_mmu_free(tlb); 144 158 } 145 159 146 160 static inline void __tlb_alloc_page(struct mmu_gather *tlb) ··· 216 204 VM_BUG_ON(tlb->nr > tlb->max); 217 205 218 206 return tlb->max - tlb->nr; 207 + } 208 + 209 + static inline void tlb_flush_mmu_tlbonly(struct mmu_gather *tlb) 210 + { 211 + ia64_tlb_flush_mmu_tlbonly(tlb, tlb->start_addr, tlb->end_addr); 212 + } 213 + 214 + static inline void tlb_flush_mmu_free(struct mmu_gather *tlb) 215 + { 216 + ia64_tlb_flush_mmu_free(tlb); 219 217 } 220 218 221 219 static inline void tlb_flush_mmu(struct mmu_gather *tlb)
+1 -1
arch/mips/cavium-octeon/octeon-irq.c
··· 635 635 cpumask_clear(&new_affinity); 636 636 cpumask_set_cpu(cpumask_first(cpu_online_mask), &new_affinity); 637 637 } 638 - __irq_set_affinity_locked(data, &new_affinity); 638 + irq_set_affinity_locked(data, &new_affinity, false); 639 639 } 640 640 641 641 static int octeon_irq_ciu_set_affinity(struct irq_data *data,
+1 -1
arch/s390/include/asm/ccwgroup.h
··· 22 22 /* public: */ 23 23 unsigned int count; 24 24 struct device dev; 25 - struct ccw_device *cdev[0]; 26 25 struct work_struct ungroup_work; 26 + struct ccw_device *cdev[0]; 27 27 }; 28 28 29 29 /**
+12 -1
arch/s390/include/asm/tlb.h
··· 59 59 tlb->batch = NULL; 60 60 } 61 61 62 - static inline void tlb_flush_mmu(struct mmu_gather *tlb) 62 + static inline void tlb_flush_mmu_tlbonly(struct mmu_gather *tlb) 63 63 { 64 64 __tlb_flush_mm_lazy(tlb->mm); 65 + } 66 + 67 + static inline void tlb_flush_mmu_free(struct mmu_gather *tlb) 68 + { 65 69 tlb_table_flush(tlb); 70 + } 71 + 72 + 73 + static inline void tlb_flush_mmu(struct mmu_gather *tlb) 74 + { 75 + tlb_flush_mmu_tlbonly(tlb); 76 + tlb_flush_mmu_free(tlb); 66 77 } 67 78 68 79 static inline void tlb_finish_mmu(struct mmu_gather *tlb,
+8
arch/sh/include/asm/tlb.h
··· 86 86 } 87 87 } 88 88 89 + static inline void tlb_flush_mmu_tlbonly(struct mmu_gather *tlb) 90 + { 91 + } 92 + 93 + static inline void tlb_flush_mmu_free(struct mmu_gather *tlb) 94 + { 95 + } 96 + 89 97 static inline void tlb_flush_mmu(struct mmu_gather *tlb) 90 98 { 91 99 }
+14 -2
arch/um/include/asm/tlb.h
··· 59 59 unsigned long end); 60 60 61 61 static inline void 62 + tlb_flush_mmu_tlbonly(struct mmu_gather *tlb) 63 + { 64 + flush_tlb_mm_range(tlb->mm, tlb->start, tlb->end); 65 + } 66 + 67 + static inline void 68 + tlb_flush_mmu_free(struct mmu_gather *tlb) 69 + { 70 + init_tlb_gather(tlb); 71 + } 72 + 73 + static inline void 62 74 tlb_flush_mmu(struct mmu_gather *tlb) 63 75 { 64 76 if (!tlb->need_flush) 65 77 return; 66 78 67 - flush_tlb_mm_range(tlb->mm, tlb->start, tlb->end); 68 - init_tlb_gather(tlb); 79 + tlb_flush_mmu_tlbonly(tlb); 80 + tlb_flush_mmu_free(tlb); 69 81 } 70 82 71 83 /* tlb_finish_mmu
+1
arch/um/include/shared/os.h
··· 136 136 extern int os_get_ifname(int fd, char *namebuf); 137 137 extern int os_set_slip(int fd); 138 138 extern int os_mode_fd(int fd, int mode); 139 + extern int os_fsync_file(int fd); 139 140 140 141 extern int os_seek_file(int fd, unsigned long long offset); 141 142 extern int os_open_file(const char *file, struct openflags flags, int mode);
+1
arch/um/kernel/physmem.c
··· 103 103 */ 104 104 os_seek_file(physmem_fd, __pa(&__syscall_stub_start)); 105 105 os_write_file(physmem_fd, &__syscall_stub_start, PAGE_SIZE); 106 + os_fsync_file(physmem_fd); 106 107 107 108 bootmap_size = init_bootmem(pfn, pfn + delta); 108 109 free_bootmem(__pa(reserve_end) + bootmap_size,
+6
arch/um/os-Linux/file.c
··· 237 237 { 238 238 close(fd); 239 239 } 240 + int os_fsync_file(int fd) 241 + { 242 + if (fsync(fd) < 0) 243 + return -errno; 244 + return 0; 245 + } 240 246 241 247 int os_seek_file(int fd, unsigned long long offset) 242 248 {
+1
arch/um/os-Linux/main.c
··· 151 151 #endif 152 152 153 153 do_uml_initcalls(); 154 + change_sig(SIGPIPE, 0); 154 155 ret = linux_main(argc, argv); 155 156 156 157 /*
+89 -311
arch/um/os-Linux/mem.c
··· 12 12 #include <string.h> 13 13 #include <sys/stat.h> 14 14 #include <sys/mman.h> 15 - #include <sys/param.h> 15 + #include <sys/vfs.h> 16 + #include <linux/magic.h> 16 17 #include <init.h> 17 18 #include <os.h> 18 19 19 - /* Modified by which_tmpdir, which is called during early boot */ 20 - static char *default_tmpdir = "/tmp"; 21 - 22 - /* 23 - * Modified when creating the physical memory file and when checking 24 - * the tmp filesystem for usability, both happening during early boot. 25 - */ 20 + /* Set by make_tempfile() during early boot. */ 26 21 static char *tempdir = NULL; 27 22 28 - static void __init find_tempdir(void) 23 + /* Check if dir is on tmpfs. Return 0 if yes, -1 if no or error. */ 24 + static int __init check_tmpfs(const char *dir) 29 25 { 30 - const char *dirs[] = { "TMP", "TEMP", "TMPDIR", NULL }; 31 - int i; 32 - char *dir = NULL; 26 + struct statfs st; 33 27 34 - if (tempdir != NULL) 35 - /* We've already been called */ 36 - return; 37 - for (i = 0; dirs[i]; i++) { 38 - dir = getenv(dirs[i]); 39 - if ((dir != NULL) && (*dir != '\0')) 40 - break; 41 - } 42 - if ((dir == NULL) || (*dir == '\0')) 43 - dir = default_tmpdir; 44 - 45 - tempdir = malloc(strlen(dir) + 2); 46 - if (tempdir == NULL) { 47 - fprintf(stderr, "Failed to malloc tempdir, " 48 - "errno = %d\n", errno); 49 - return; 50 - } 51 - strcpy(tempdir, dir); 52 - strcat(tempdir, "/"); 53 - } 54 - 55 - /* 56 - * Remove bytes from the front of the buffer and refill it so that if there's a 57 - * partial string that we care about, it will be completed, and we can recognize 58 - * it. 59 - */ 60 - static int pop(int fd, char *buf, size_t size, size_t npop) 61 - { 62 - ssize_t n; 63 - size_t len = strlen(&buf[npop]); 64 - 65 - memmove(buf, &buf[npop], len + 1); 66 - n = read(fd, &buf[len], size - len - 1); 67 - if (n < 0) 68 - return -errno; 69 - 70 - buf[len + n] = '\0'; 71 - return 1; 72 - } 73 - 74 - /* 75 - * This will return 1, with the first character in buf being the 76 - * character following the next instance of c in the file. This will 77 - * read the file as needed. If there's an error, -errno is returned; 78 - * if the end of the file is reached, 0 is returned. 79 - */ 80 - static int next(int fd, char *buf, size_t size, char c) 81 - { 82 - ssize_t n; 83 - char *ptr; 84 - 85 - while ((ptr = strchr(buf, c)) == NULL) { 86 - n = read(fd, buf, size - 1); 87 - if (n == 0) 88 - return 0; 89 - else if (n < 0) 90 - return -errno; 91 - 92 - buf[n] = '\0'; 93 - } 94 - 95 - return pop(fd, buf, size, ptr - buf + 1); 96 - } 97 - 98 - /* 99 - * Decode an octal-escaped and space-terminated path of the form used by 100 - * /proc/mounts. May be used to decode a path in-place. "out" must be at least 101 - * as large as the input. The output is always null-terminated. "len" gets the 102 - * length of the output, excluding the trailing null. Returns 0 if a full path 103 - * was successfully decoded, otherwise an error. 104 - */ 105 - static int decode_path(const char *in, char *out, size_t *len) 106 - { 107 - char *first = out; 108 - int c; 109 - int i; 110 - int ret = -EINVAL; 111 - while (1) { 112 - switch (*in) { 113 - case '\0': 114 - goto out; 115 - 116 - case ' ': 117 - ret = 0; 118 - goto out; 119 - 120 - case '\\': 121 - in++; 122 - c = 0; 123 - for (i = 0; i < 3; i++) { 124 - if (*in < '0' || *in > '7') 125 - goto out; 126 - c = (c << 3) | (*in++ - '0'); 127 - } 128 - *(unsigned char *)out++ = (unsigned char) c; 129 - break; 130 - 131 - default: 132 - *out++ = *in++; 133 - break; 134 - } 135 - } 136 - 137 - out: 138 - *out = '\0'; 139 - *len = out - first; 140 - return ret; 141 - } 142 - 143 - /* 144 - * Computes the length of s when encoded with three-digit octal escape sequences 145 - * for the characters in chars. 146 - */ 147 - static size_t octal_encoded_length(const char *s, const char *chars) 148 - { 149 - size_t len = strlen(s); 150 - while ((s = strpbrk(s, chars)) != NULL) { 151 - len += 3; 152 - s++; 153 - } 154 - 155 - return len; 156 - } 157 - 158 - enum { 159 - OUTCOME_NOTHING_MOUNTED, 160 - OUTCOME_TMPFS_MOUNT, 161 - OUTCOME_NON_TMPFS_MOUNT, 162 - }; 163 - 164 - /* Read a line of /proc/mounts data looking for a tmpfs mount at "path". */ 165 - static int read_mount(int fd, char *buf, size_t bufsize, const char *path, 166 - int *outcome) 167 - { 168 - int found; 169 - int match; 170 - char *space; 171 - size_t len; 172 - 173 - enum { 174 - MATCH_NONE, 175 - MATCH_EXACT, 176 - MATCH_PARENT, 177 - }; 178 - 179 - found = next(fd, buf, bufsize, ' '); 180 - if (found != 1) 181 - return found; 182 - 183 - /* 184 - * If there's no following space in the buffer, then this path is 185 - * truncated, so it can't be the one we're looking for. 186 - */ 187 - space = strchr(buf, ' '); 188 - if (space) { 189 - match = MATCH_NONE; 190 - if (!decode_path(buf, buf, &len)) { 191 - if (!strcmp(buf, path)) 192 - match = MATCH_EXACT; 193 - else if (!strncmp(buf, path, len) 194 - && (path[len] == '/' || !strcmp(buf, "/"))) 195 - match = MATCH_PARENT; 196 - } 197 - 198 - found = pop(fd, buf, bufsize, space - buf + 1); 199 - if (found != 1) 200 - return found; 201 - 202 - switch (match) { 203 - case MATCH_EXACT: 204 - if (!strncmp(buf, "tmpfs", strlen("tmpfs"))) 205 - *outcome = OUTCOME_TMPFS_MOUNT; 206 - else 207 - *outcome = OUTCOME_NON_TMPFS_MOUNT; 208 - break; 209 - 210 - case MATCH_PARENT: 211 - /* This mount obscures any previous ones. */ 212 - *outcome = OUTCOME_NOTHING_MOUNTED; 213 - break; 214 - } 215 - } 216 - 217 - return next(fd, buf, bufsize, '\n'); 218 - } 219 - 220 - /* which_tmpdir is called only during early boot */ 221 - static int checked_tmpdir = 0; 222 - 223 - /* 224 - * Look for a tmpfs mounted at /dev/shm. I couldn't find a cleaner 225 - * way to do this than to parse /proc/mounts. statfs will return the 226 - * same filesystem magic number and fs id for both /dev and /dev/shm 227 - * when they are both tmpfs, so you can't tell if they are different 228 - * filesystems. Also, there seems to be no other way of finding the 229 - * mount point of a filesystem from within it. 230 - * 231 - * If a /dev/shm tmpfs entry is found, then we switch to using it. 232 - * Otherwise, we stay with the default /tmp. 233 - */ 234 - static void which_tmpdir(void) 235 - { 236 - int fd; 237 - int found; 238 - int outcome; 239 - char *path; 240 - char *buf; 241 - size_t bufsize; 242 - 243 - if (checked_tmpdir) 244 - return; 245 - 246 - checked_tmpdir = 1; 247 - 248 - printf("Checking for tmpfs mount on /dev/shm..."); 249 - 250 - path = realpath("/dev/shm", NULL); 251 - if (!path) { 252 - printf("failed to check real path, errno = %d\n", errno); 253 - return; 254 - } 255 - printf("%s...", path); 256 - 257 - /* 258 - * The buffer needs to be able to fit the full octal-escaped path, a 259 - * space, and a trailing null in order to successfully decode it. 260 - */ 261 - bufsize = octal_encoded_length(path, " \t\n\\") + 2; 262 - 263 - if (bufsize < 128) 264 - bufsize = 128; 265 - 266 - buf = malloc(bufsize); 267 - if (!buf) { 268 - printf("malloc failed, errno = %d\n", errno); 269 - goto out; 270 - } 271 - buf[0] = '\0'; 272 - 273 - fd = open("/proc/mounts", O_RDONLY); 274 - if (fd < 0) { 275 - printf("failed to open /proc/mounts, errno = %d\n", errno); 276 - goto out1; 277 - } 278 - 279 - outcome = OUTCOME_NOTHING_MOUNTED; 280 - while (1) { 281 - found = read_mount(fd, buf, bufsize, path, &outcome); 282 - if (found != 1) 283 - break; 284 - } 285 - 286 - if (found < 0) { 287 - printf("read returned errno %d\n", -found); 28 + printf("Checking if %s is on tmpfs...", dir); 29 + if (statfs(dir, &st) < 0) { 30 + printf("%s\n", strerror(errno)); 31 + } else if (st.f_type != TMPFS_MAGIC) { 32 + printf("no\n"); 288 33 } else { 289 - switch (outcome) { 290 - case OUTCOME_TMPFS_MOUNT: 291 - printf("OK\n"); 292 - default_tmpdir = "/dev/shm"; 293 - break; 294 - 295 - case OUTCOME_NON_TMPFS_MOUNT: 296 - printf("not tmpfs\n"); 297 - break; 298 - 299 - default: 300 - printf("nothing mounted on /dev/shm\n"); 301 - break; 302 - } 34 + printf("OK\n"); 35 + return 0; 303 36 } 304 - 305 - close(fd); 306 - out1: 307 - free(buf); 308 - out: 309 - free(path); 37 + return -1; 310 38 } 311 39 312 - static int __init make_tempfile(const char *template, char **out_tempname, 313 - int do_unlink) 40 + /* 41 + * Choose the tempdir to use. We want something on tmpfs so that our memory is 42 + * not subject to the host's vm.dirty_ratio. If a tempdir is specified in the 43 + * environment, we use that even if it's not on tmpfs, but we warn the user. 44 + * Otherwise, we try common tmpfs locations, and if no tmpfs directory is found 45 + * then we fall back to /tmp. 46 + */ 47 + static char * __init choose_tempdir(void) 48 + { 49 + static const char * const vars[] = { 50 + "TMPDIR", 51 + "TMP", 52 + "TEMP", 53 + NULL 54 + }; 55 + static const char fallback_dir[] = "/tmp"; 56 + static const char * const tmpfs_dirs[] = { 57 + "/dev/shm", 58 + fallback_dir, 59 + NULL 60 + }; 61 + int i; 62 + const char *dir; 63 + 64 + printf("Checking environment variables for a tempdir..."); 65 + for (i = 0; vars[i]; i++) { 66 + dir = getenv(vars[i]); 67 + if ((dir != NULL) && (*dir != '\0')) { 68 + printf("%s\n", dir); 69 + if (check_tmpfs(dir) >= 0) 70 + goto done; 71 + else 72 + goto warn; 73 + } 74 + } 75 + printf("none found\n"); 76 + 77 + for (i = 0; tmpfs_dirs[i]; i++) { 78 + dir = tmpfs_dirs[i]; 79 + if (check_tmpfs(dir) >= 0) 80 + goto done; 81 + } 82 + 83 + dir = fallback_dir; 84 + warn: 85 + printf("Warning: tempdir %s is not on tmpfs\n", dir); 86 + done: 87 + /* Make a copy since getenv results may not remain valid forever. */ 88 + return strdup(dir); 89 + } 90 + 91 + /* 92 + * Create an unlinked tempfile in a suitable tempdir. template must be the 93 + * basename part of the template with a leading '/'. 94 + */ 95 + static int __init make_tempfile(const char *template) 314 96 { 315 97 char *tempname; 316 98 int fd; 317 99 318 - which_tmpdir(); 319 - tempname = malloc(MAXPATHLEN); 100 + if (tempdir == NULL) { 101 + tempdir = choose_tempdir(); 102 + if (tempdir == NULL) { 103 + fprintf(stderr, "Failed to choose tempdir: %s\n", 104 + strerror(errno)); 105 + return -1; 106 + } 107 + } 108 + 109 + tempname = malloc(strlen(tempdir) + strlen(template) + 1); 320 110 if (tempname == NULL) 321 111 return -1; 322 112 323 - find_tempdir(); 324 - if ((tempdir == NULL) || (strlen(tempdir) >= MAXPATHLEN)) 325 - goto out; 326 - 327 - if (template[0] != '/') 328 - strcpy(tempname, tempdir); 329 - else 330 - tempname[0] = '\0'; 331 - strncat(tempname, template, MAXPATHLEN-1-strlen(tempname)); 113 + strcpy(tempname, tempdir); 114 + strcat(tempname, template); 332 115 fd = mkstemp(tempname); 333 116 if (fd < 0) { 334 117 fprintf(stderr, "open - cannot create %s: %s\n", tempname, 335 118 strerror(errno)); 336 119 goto out; 337 120 } 338 - if (do_unlink && (unlink(tempname) < 0)) { 121 + if (unlink(tempname) < 0) { 339 122 perror("unlink"); 340 123 goto close; 341 124 } 342 - if (out_tempname) { 343 - *out_tempname = tempname; 344 - } else 345 - free(tempname); 125 + free(tempname); 346 126 return fd; 347 127 close: 348 128 close(fd); ··· 131 351 return -1; 132 352 } 133 353 134 - #define TEMPNAME_TEMPLATE "vm_file-XXXXXX" 354 + #define TEMPNAME_TEMPLATE "/vm_file-XXXXXX" 135 355 136 356 static int __init create_tmp_file(unsigned long long len) 137 357 { 138 358 int fd, err; 139 359 char zero; 140 360 141 - fd = make_tempfile(TEMPNAME_TEMPLATE, NULL, 1); 361 + fd = make_tempfile(TEMPNAME_TEMPLATE); 142 362 if (fd < 0) 143 363 exit(1); 144 364 ··· 182 402 return fd; 183 403 } 184 404 185 - 186 405 void __init check_tmpexec(void) 187 406 { 188 407 void *addr; ··· 189 410 190 411 addr = mmap(NULL, UM_KERN_PAGE_SIZE, 191 412 PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE, fd, 0); 192 - printf("Checking PROT_EXEC mmap in %s...",tempdir); 193 - fflush(stdout); 413 + printf("Checking PROT_EXEC mmap in %s...", tempdir); 194 414 if (addr == MAP_FAILED) { 195 415 err = errno; 196 - perror("failed"); 416 + printf("%s\n", strerror(err)); 197 417 close(fd); 198 418 if (err == EPERM) 199 - printf("%s must be not mounted noexec\n",tempdir); 419 + printf("%s must be not mounted noexec\n", tempdir); 200 420 exit(1); 201 421 } 202 422 printf("OK\n");
+8 -11
arch/x86/vdso/vdso-layout.lds.S
··· 9 9 #ifdef BUILD_VDSO32 10 10 #include <asm/vdso32.h> 11 11 12 - .hpet_sect : { 13 - hpet_page = . - VDSO_OFFSET(VDSO_HPET_PAGE); 14 - } :text :hpet_sect 12 + hpet_page = . - VDSO_OFFSET(VDSO_HPET_PAGE); 15 13 16 - .vvar_sect : { 17 - vvar = . - VDSO_OFFSET(VDSO_VVAR_PAGE); 14 + vvar = . - VDSO_OFFSET(VDSO_VVAR_PAGE); 18 15 19 16 /* Place all vvars at the offsets in asm/vvar.h. */ 20 17 #define EMIT_VVAR(name, offset) vvar_ ## name = vvar + offset; ··· 19 22 #include <asm/vvar.h> 20 23 #undef __VVAR_KERNEL_LDS 21 24 #undef EMIT_VVAR 22 - } :text :vvar_sect 23 25 #endif 24 26 . = SIZEOF_HEADERS; 25 27 ··· 57 61 */ 58 62 . = ALIGN(0x100); 59 63 60 - .text : { *(.text*) } :text =0x90909090 64 + .text : { *(.text*) } :text =0x90909090, 65 + 66 + /* 67 + * The comma above works around a bug in gold: 68 + * https://sourceware.org/bugzilla/show_bug.cgi?id=16804 69 + */ 61 70 62 71 /DISCARD/ : { 63 72 *(.discard) ··· 85 84 dynamic PT_DYNAMIC FLAGS(4); /* PF_R */ 86 85 note PT_NOTE FLAGS(4); /* PF_R */ 87 86 eh_frame_hdr PT_GNU_EH_FRAME; 88 - #ifdef BUILD_VDSO32 89 - vvar_sect PT_NULL FLAGS(4); /* PF_R */ 90 - hpet_sect PT_NULL FLAGS(4); /* PF_R */ 91 - #endif 92 87 }
+97 -7
drivers/acpi/acpica/exfield.c
··· 45 45 #include "accommon.h" 46 46 #include "acdispat.h" 47 47 #include "acinterp.h" 48 + #include "amlcode.h" 48 49 49 50 #define _COMPONENT ACPI_EXECUTER 50 51 ACPI_MODULE_NAME("exfield") 52 + 53 + /* Local prototypes */ 54 + static u32 55 + acpi_ex_get_serial_access_length(u32 accessor_type, u32 access_length); 56 + 57 + /******************************************************************************* 58 + * 59 + * FUNCTION: acpi_get_serial_access_bytes 60 + * 61 + * PARAMETERS: accessor_type - The type of the protocol indicated by region 62 + * field access attributes 63 + * access_length - The access length of the region field 64 + * 65 + * RETURN: Decoded access length 66 + * 67 + * DESCRIPTION: This routine returns the length of the generic_serial_bus 68 + * protocol bytes 69 + * 70 + ******************************************************************************/ 71 + 72 + static u32 73 + acpi_ex_get_serial_access_length(u32 accessor_type, u32 access_length) 74 + { 75 + u32 length; 76 + 77 + switch (accessor_type) { 78 + case AML_FIELD_ATTRIB_QUICK: 79 + 80 + length = 0; 81 + break; 82 + 83 + case AML_FIELD_ATTRIB_SEND_RCV: 84 + case AML_FIELD_ATTRIB_BYTE: 85 + 86 + length = 1; 87 + break; 88 + 89 + case AML_FIELD_ATTRIB_WORD: 90 + case AML_FIELD_ATTRIB_WORD_CALL: 91 + 92 + length = 2; 93 + break; 94 + 95 + case AML_FIELD_ATTRIB_MULTIBYTE: 96 + case AML_FIELD_ATTRIB_RAW_BYTES: 97 + case AML_FIELD_ATTRIB_RAW_PROCESS: 98 + 99 + length = access_length; 100 + break; 101 + 102 + case AML_FIELD_ATTRIB_BLOCK: 103 + case AML_FIELD_ATTRIB_BLOCK_CALL: 104 + default: 105 + 106 + length = ACPI_GSBUS_BUFFER_SIZE; 107 + break; 108 + } 109 + 110 + return (length); 111 + } 51 112 52 113 /******************************************************************************* 53 114 * ··· 124 63 * Buffer, depending on the size of the field. 125 64 * 126 65 ******************************************************************************/ 66 + 127 67 acpi_status 128 - acpi_ex_read_data_from_field(struct acpi_walk_state *walk_state, 68 + acpi_ex_read_data_from_field(struct acpi_walk_state * walk_state, 129 69 union acpi_operand_object *obj_desc, 130 70 union acpi_operand_object **ret_buffer_desc) 131 71 { ··· 135 73 acpi_size length; 136 74 void *buffer; 137 75 u32 function; 76 + u16 accessor_type; 138 77 139 78 ACPI_FUNCTION_TRACE_PTR(ex_read_data_from_field, obj_desc); 140 79 ··· 179 116 ACPI_READ | (obj_desc->field.attribute << 16); 180 117 } else if (obj_desc->field.region_obj->region.space_id == 181 118 ACPI_ADR_SPACE_GSBUS) { 182 - length = ACPI_GSBUS_BUFFER_SIZE; 183 - function = 184 - ACPI_READ | (obj_desc->field.attribute << 16); 119 + accessor_type = obj_desc->field.attribute; 120 + length = acpi_ex_get_serial_access_length(accessor_type, 121 + obj_desc-> 122 + field. 123 + access_length); 124 + 125 + /* 126 + * Add additional 2 bytes for modeled generic_serial_bus data buffer: 127 + * typedef struct { 128 + * BYTEStatus; // Byte 0 of the data buffer 129 + * BYTELength; // Byte 1 of the data buffer 130 + * BYTE[x-1]Data; // Bytes 2-x of the arbitrary length data buffer, 131 + * } 132 + */ 133 + length += 2; 134 + function = ACPI_READ | (accessor_type << 16); 185 135 } else { /* IPMI */ 186 136 187 137 length = ACPI_IPMI_BUFFER_SIZE; ··· 307 231 void *buffer; 308 232 union acpi_operand_object *buffer_desc; 309 233 u32 function; 234 + u16 accessor_type; 310 235 311 236 ACPI_FUNCTION_TRACE_PTR(ex_write_data_to_field, obj_desc); 312 237 ··· 361 284 ACPI_WRITE | (obj_desc->field.attribute << 16); 362 285 } else if (obj_desc->field.region_obj->region.space_id == 363 286 ACPI_ADR_SPACE_GSBUS) { 364 - length = ACPI_GSBUS_BUFFER_SIZE; 365 - function = 366 - ACPI_WRITE | (obj_desc->field.attribute << 16); 287 + accessor_type = obj_desc->field.attribute; 288 + length = acpi_ex_get_serial_access_length(accessor_type, 289 + obj_desc-> 290 + field. 291 + access_length); 292 + 293 + /* 294 + * Add additional 2 bytes for modeled generic_serial_bus data buffer: 295 + * typedef struct { 296 + * BYTEStatus; // Byte 0 of the data buffer 297 + * BYTELength; // Byte 1 of the data buffer 298 + * BYTE[x-1]Data; // Bytes 2-x of the arbitrary length data buffer, 299 + * } 300 + */ 301 + length += 2; 302 + function = ACPI_WRITE | (accessor_type << 16); 367 303 } else { /* IPMI */ 368 304 369 305 length = ACPI_IPMI_BUFFER_SIZE;
+2 -3
drivers/acpi/bus.c
··· 380 380 break; 381 381 382 382 default: 383 - acpi_handle_warn(handle, "Unsupported event type 0x%x\n", type); 384 - ost_code = ACPI_OST_SC_UNRECOGNIZED_NOTIFY; 385 - goto err; 383 + acpi_handle_debug(handle, "Unknown event type 0x%x\n", type); 384 + break; 386 385 } 387 386 388 387 adev = acpi_bus_get_acpi_device(handle);
+2 -3
drivers/ata/Kconfig
··· 116 116 117 117 config AHCI_IMX 118 118 tristate "Freescale i.MX AHCI SATA support" 119 - depends on MFD_SYSCON 119 + depends on MFD_SYSCON && (ARCH_MXC || COMPILE_TEST) 120 120 help 121 121 This option enables support for the Freescale i.MX SoC's 122 122 onboard AHCI SATA. ··· 134 134 135 135 config AHCI_XGENE 136 136 tristate "APM X-Gene 6.0Gbps AHCI SATA host controller support" 137 - depends on ARM64 || COMPILE_TEST 138 - select PHY_XGENE 137 + depends on PHY_XGENE 139 138 help 140 139 This option enables support for APM X-Gene SoC SATA host controller. 141 140
+21 -14
drivers/ata/ahci.c
··· 1164 1164 #endif 1165 1165 1166 1166 static int ahci_init_interrupts(struct pci_dev *pdev, unsigned int n_ports, 1167 - struct ahci_host_priv *hpriv) 1167 + struct ahci_host_priv *hpriv) 1168 1168 { 1169 - int nvec; 1169 + int rc, nvec; 1170 1170 1171 1171 if (hpriv->flags & AHCI_HFLAG_NO_MSI) 1172 1172 goto intx; ··· 1183 1183 if (nvec < n_ports) 1184 1184 goto single_msi; 1185 1185 1186 - nvec = pci_enable_msi_range(pdev, nvec, nvec); 1187 - if (nvec == -ENOSPC) 1186 + rc = pci_enable_msi_exact(pdev, nvec); 1187 + if (rc == -ENOSPC) 1188 1188 goto single_msi; 1189 - else if (nvec < 0) 1189 + else if (rc < 0) 1190 1190 goto intx; 1191 + 1192 + /* fallback to single MSI mode if the controller enforced MRSM mode */ 1193 + if (readl(hpriv->mmio + HOST_CTL) & HOST_MRSM) { 1194 + pci_disable_msi(pdev); 1195 + printk(KERN_INFO "ahci: MRSM is on, fallback to single MSI\n"); 1196 + goto single_msi; 1197 + } 1191 1198 1192 1199 return nvec; 1193 1200 ··· 1239 1232 return rc; 1240 1233 1241 1234 for (i = 0; i < host->n_ports; i++) { 1242 - const char* desc; 1243 1235 struct ahci_port_priv *pp = host->ports[i]->private_data; 1244 1236 1245 - /* pp is NULL for dummy ports */ 1246 - if (pp) 1247 - desc = pp->irq_desc; 1248 - else 1249 - desc = dev_driver_string(host->dev); 1237 + /* Do not receive interrupts sent by dummy ports */ 1238 + if (!pp) { 1239 + disable_irq(irq + i); 1240 + continue; 1241 + } 1250 1242 1251 - rc = devm_request_threaded_irq(host->dev, 1252 - irq + i, ahci_hw_interrupt, ahci_thread_fn, IRQF_SHARED, 1253 - desc, host->ports[i]); 1243 + rc = devm_request_threaded_irq(host->dev, irq + i, 1244 + ahci_hw_interrupt, 1245 + ahci_thread_fn, IRQF_SHARED, 1246 + pp->irq_desc, host->ports[i]); 1254 1247 if (rc) 1255 1248 goto out_free_irqs; 1256 1249 }
+1
drivers/ata/ahci.h
··· 94 94 /* HOST_CTL bits */ 95 95 HOST_RESET = (1 << 0), /* reset controller; self-clear */ 96 96 HOST_IRQ_EN = (1 << 1), /* global IRQ enable */ 97 + HOST_MRSM = (1 << 2), /* MSI Revert to Single Message */ 97 98 HOST_AHCI_EN = (1 << 31), /* AHCI enabled */ 98 99 99 100 /* HOST_CAP bits */
+17 -10
drivers/ata/libata-core.c
··· 4224 4224 { "PIONEER DVD-RW DVR-216D", NULL, ATA_HORKAGE_NOSETXFER }, 4225 4225 4226 4226 /* devices that don't properly handle queued TRIM commands */ 4227 - { "Micron_M500*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, }, 4228 - { "Crucial_CT???M500SSD*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, }, 4227 + { "Micron_M500*", "MU0[1-4]*", ATA_HORKAGE_NO_NCQ_TRIM, }, 4228 + { "Crucial_CT???M500SSD*", "MU0[1-4]*", ATA_HORKAGE_NO_NCQ_TRIM, }, 4229 + { "Micron_M550*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, }, 4230 + { "Crucial_CT???M550SSD*", NULL, ATA_HORKAGE_NO_NCQ_TRIM, }, 4229 4231 4230 4232 /* 4231 4233 * Some WD SATA-I drives spin up and down erratically when the link ··· 4794 4792 static struct ata_queued_cmd *ata_qc_new(struct ata_port *ap) 4795 4793 { 4796 4794 struct ata_queued_cmd *qc = NULL; 4797 - unsigned int i; 4795 + unsigned int i, tag; 4798 4796 4799 4797 /* no command while frozen */ 4800 4798 if (unlikely(ap->pflags & ATA_PFLAG_FROZEN)) 4801 4799 return NULL; 4802 4800 4803 - /* the last tag is reserved for internal command. */ 4804 - for (i = 0; i < ATA_MAX_QUEUE - 1; i++) 4805 - if (!test_and_set_bit(i, &ap->qc_allocated)) { 4806 - qc = __ata_qc_from_tag(ap, i); 4801 + for (i = 0; i < ATA_MAX_QUEUE; i++) { 4802 + tag = (i + ap->last_tag + 1) % ATA_MAX_QUEUE; 4803 + 4804 + /* the last tag is reserved for internal command. */ 4805 + if (tag == ATA_TAG_INTERNAL) 4806 + continue; 4807 + 4808 + if (!test_and_set_bit(tag, &ap->qc_allocated)) { 4809 + qc = __ata_qc_from_tag(ap, tag); 4810 + qc->tag = tag; 4811 + ap->last_tag = tag; 4807 4812 break; 4808 4813 } 4809 - 4810 - if (qc) 4811 - qc->tag = i; 4814 + } 4812 4815 4813 4816 return qc; 4814 4817 }
+5 -2
drivers/ata/pata_arasan_cf.c
··· 898 898 899 899 cf_card_detect(acdev, 0); 900 900 901 - return ata_host_activate(host, acdev->irq, irq_handler, 0, 902 - &arasan_cf_sht); 901 + ret = ata_host_activate(host, acdev->irq, irq_handler, 0, 902 + &arasan_cf_sht); 903 + if (!ret) 904 + return 0; 903 905 906 + cf_exit(acdev); 904 907 free_clk: 905 908 clk_put(acdev->clk); 906 909 return ret;
+6 -5
drivers/ata/pata_at91.c
··· 407 407 408 408 host->private_data = info; 409 409 410 - return ata_host_activate(host, gpio_is_valid(irq) ? gpio_to_irq(irq) : 0, 411 - gpio_is_valid(irq) ? ata_sff_interrupt : NULL, 412 - irq_flags, &pata_at91_sht); 410 + ret = ata_host_activate(host, gpio_is_valid(irq) ? gpio_to_irq(irq) : 0, 411 + gpio_is_valid(irq) ? ata_sff_interrupt : NULL, 412 + irq_flags, &pata_at91_sht); 413 + if (ret) 414 + goto err_put; 413 415 414 - if (!ret) 415 - return 0; 416 + return 0; 416 417 417 418 err_put: 418 419 clk_put(info->mck);
+7 -3
drivers/ata/pata_samsung_cf.c
··· 594 594 595 595 platform_set_drvdata(pdev, host); 596 596 597 - return ata_host_activate(host, info->irq, 598 - info->irq ? pata_s3c_irq : NULL, 599 - 0, &pata_s3c_sht); 597 + ret = ata_host_activate(host, info->irq, 598 + info->irq ? pata_s3c_irq : NULL, 599 + 0, &pata_s3c_sht); 600 + if (ret) 601 + goto stop_clk; 602 + 603 + return 0; 600 604 601 605 stop_clk: 602 606 clk_disable(info->clk);
-3
drivers/clk/tegra/clk-tegra124.c
··· 764 764 [tegra_clk_sdmmc2_8] = { .dt_id = TEGRA124_CLK_SDMMC2, .present = true }, 765 765 [tegra_clk_i2s1] = { .dt_id = TEGRA124_CLK_I2S1, .present = true }, 766 766 [tegra_clk_i2c1] = { .dt_id = TEGRA124_CLK_I2C1, .present = true }, 767 - [tegra_clk_ndflash] = { .dt_id = TEGRA124_CLK_NDFLASH, .present = true }, 768 767 [tegra_clk_sdmmc1_8] = { .dt_id = TEGRA124_CLK_SDMMC1, .present = true }, 769 768 [tegra_clk_sdmmc4_8] = { .dt_id = TEGRA124_CLK_SDMMC4, .present = true }, 770 769 [tegra_clk_pwm] = { .dt_id = TEGRA124_CLK_PWM, .present = true }, ··· 808 809 [tegra_clk_trace] = { .dt_id = TEGRA124_CLK_TRACE, .present = true }, 809 810 [tegra_clk_soc_therm] = { .dt_id = TEGRA124_CLK_SOC_THERM, .present = true }, 810 811 [tegra_clk_dtv] = { .dt_id = TEGRA124_CLK_DTV, .present = true }, 811 - [tegra_clk_ndspeed] = { .dt_id = TEGRA124_CLK_NDSPEED, .present = true }, 812 812 [tegra_clk_i2cslow] = { .dt_id = TEGRA124_CLK_I2CSLOW, .present = true }, 813 813 [tegra_clk_dsib] = { .dt_id = TEGRA124_CLK_DSIB, .present = true }, 814 814 [tegra_clk_tsec] = { .dt_id = TEGRA124_CLK_TSEC, .present = true }, ··· 950 952 [tegra_clk_clk_out_3_mux] = { .dt_id = TEGRA124_CLK_CLK_OUT_3_MUX, .present = true }, 951 953 [tegra_clk_dsia_mux] = { .dt_id = TEGRA124_CLK_DSIA_MUX, .present = true }, 952 954 [tegra_clk_dsib_mux] = { .dt_id = TEGRA124_CLK_DSIB_MUX, .present = true }, 953 - [tegra_clk_uarte] = { .dt_id = TEGRA124_CLK_UARTE, .present = true }, 954 955 }; 955 956 956 957 static struct tegra_devclk devclks[] __initdata = {
+1 -1
drivers/clk/versatile/clk-vexpress-osc.c
··· 102 102 103 103 osc = kzalloc(sizeof(*osc), GFP_KERNEL); 104 104 if (!osc) 105 - goto error; 105 + return; 106 106 107 107 osc->func = vexpress_config_func_get_by_node(node); 108 108 if (!osc->func) {
+3 -9
drivers/clocksource/exynos_mct.c
··· 416 416 evt->set_mode = exynos4_tick_set_mode; 417 417 evt->features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT; 418 418 evt->rating = 450; 419 - clockevents_config_and_register(evt, clk_rate / (TICK_BASE_CNT + 1), 420 - 0xf, 0x7fffffff); 421 419 422 420 exynos4_mct_write(TICK_BASE_CNT, mevt->base + MCT_L_TCNTB_OFFSET); 423 421 ··· 428 430 evt->irq); 429 431 return -EIO; 430 432 } 433 + irq_force_affinity(mct_irqs[MCT_L0_IRQ + cpu], cpumask_of(cpu)); 431 434 } else { 432 435 enable_percpu_irq(mct_irqs[MCT_L0_IRQ], 0); 433 436 } 437 + clockevents_config_and_register(evt, clk_rate / (TICK_BASE_CNT + 1), 438 + 0xf, 0x7fffffff); 434 439 435 440 return 0; 436 441 } ··· 451 450 unsigned long action, void *hcpu) 452 451 { 453 452 struct mct_clock_event_device *mevt; 454 - unsigned int cpu; 455 453 456 454 /* 457 455 * Grab cpu pointer in each case to avoid spurious ··· 460 460 case CPU_STARTING: 461 461 mevt = this_cpu_ptr(&percpu_mct_tick); 462 462 exynos4_local_timer_setup(&mevt->evt); 463 - break; 464 - case CPU_ONLINE: 465 - cpu = (unsigned long)hcpu; 466 - if (mct_int_type == MCT_INT_SPI) 467 - irq_set_affinity(mct_irqs[MCT_L0_IRQ + cpu], 468 - cpumask_of(cpu)); 469 463 break; 470 464 case CPU_DYING: 471 465 mevt = this_cpu_ptr(&percpu_mct_tick);
+1 -5
drivers/cpufreq/Kconfig.arm
··· 92 92 93 93 config ARM_HIGHBANK_CPUFREQ 94 94 tristate "Calxeda Highbank-based" 95 - depends on ARCH_HIGHBANK 96 - select GENERIC_CPUFREQ_CPU0 97 - select PM_OPP 98 - select REGULATOR 99 - 95 + depends on ARCH_HIGHBANK && GENERIC_CPUFREQ_CPU0 && REGULATOR 100 96 default m 101 97 help 102 98 This adds the CPUFreq driver for Calxeda Highbank SoC
+1
drivers/cpufreq/powernv-cpufreq.c
··· 29 29 30 30 #include <asm/cputhreads.h> 31 31 #include <asm/reg.h> 32 + #include <asm/smp.h> /* Required for cpu_sibling_mask() in UP configs */ 32 33 33 34 #define POWERNV_MAX_PSTATES 256 34 35
+1 -1
drivers/cpufreq/ppc-corenet-cpufreq.c
··· 206 206 per_cpu(cpu_data, i) = data; 207 207 208 208 policy->cpuinfo.transition_latency = 209 - (12 * NSEC_PER_SEC) / fsl_get_sys_freq(); 209 + (12ULL * NSEC_PER_SEC) / fsl_get_sys_freq(); 210 210 of_node_put(np); 211 211 212 212 return 0;
+1 -3
drivers/cpufreq/unicore2-cpufreq.c
··· 60 60 policy->max = policy->cpuinfo.max_freq = 1000000; 61 61 policy->cpuinfo.transition_latency = CPUFREQ_ETERNAL; 62 62 policy->clk = clk_get(NULL, "MAIN_CLK"); 63 - if (IS_ERR(policy->clk)) 64 - return PTR_ERR(policy->clk); 65 - return 0; 63 + return PTR_ERR_OR_ZERO(policy->clk); 66 64 } 67 65 68 66 static struct cpufreq_driver ucv2_driver = {
+9 -3
drivers/gpio/gpiolib-acpi.c
··· 233 233 { 234 234 struct gpio_chip *chip = acpi_gpio->chip; 235 235 236 - if (!chip->dev || !chip->to_irq) 236 + if (!chip->to_irq) 237 237 return; 238 238 239 239 INIT_LIST_HEAD(&acpi_gpio->events); ··· 253 253 struct acpi_gpio_event *event, *ep; 254 254 struct gpio_chip *chip = acpi_gpio->chip; 255 255 256 - if (!chip->dev || !chip->to_irq) 256 + if (!chip->to_irq) 257 257 return; 258 258 259 259 list_for_each_entry_safe_reverse(event, ep, &acpi_gpio->events, node) { ··· 451 451 if (function == ACPI_WRITE) 452 452 gpiod_set_raw_value(desc, !!((1 << i) & *value)); 453 453 else 454 - *value |= gpiod_get_raw_value(desc) << i; 454 + *value |= (u64)gpiod_get_raw_value(desc) << i; 455 455 } 456 456 457 457 out: ··· 501 501 acpi_handle handle; 502 502 acpi_status status; 503 503 504 + if (!chip || !chip->dev) 505 + return; 506 + 504 507 handle = ACPI_HANDLE(chip->dev); 505 508 if (!handle) 506 509 return; ··· 533 530 struct acpi_gpio_chip *acpi_gpio; 534 531 acpi_handle handle; 535 532 acpi_status status; 533 + 534 + if (!chip || !chip->dev) 535 + return; 536 536 537 537 handle = ACPI_HANDLE(chip->dev); 538 538 if (!handle)
+1 -1
drivers/gpio/gpiolib.c
··· 1387 1387 { 1388 1388 struct gpio_chip *chip = d->host_data; 1389 1389 1390 - irq_set_chip_and_handler(irq, chip->irqchip, chip->irq_handler); 1391 1390 irq_set_chip_data(irq, chip); 1391 + irq_set_chip_and_handler(irq, chip->irqchip, chip->irq_handler); 1392 1392 #ifdef CONFIG_ARM 1393 1393 set_irq_flags(irq, IRQF_VALID); 1394 1394 #else
+1
drivers/gpu/drm/radeon/atombios_dp.c
··· 209 209 { 210 210 int ret; 211 211 212 + radeon_connector->ddc_bus->rec.hpd = radeon_connector->hpd.hpd; 212 213 radeon_connector->ddc_bus->aux.dev = radeon_connector->base.kdev; 213 214 radeon_connector->ddc_bus->aux.transfer = radeon_dp_aux_transfer; 214 215 ret = drm_dp_aux_register_i2c_bus(&radeon_connector->ddc_bus->aux);
+1 -1
drivers/gpu/drm/radeon/cik_sdma.c
··· 597 597 tmp = 0xCAFEDEAD; 598 598 writel(tmp, ptr); 599 599 600 - r = radeon_ring_lock(rdev, ring, 4); 600 + r = radeon_ring_lock(rdev, ring, 5); 601 601 if (r) { 602 602 DRM_ERROR("radeon: dma failed to lock ring %d (%d).\n", ring->idx, r); 603 603 return r;
+19 -16
drivers/gpu/drm/radeon/r600_dpm.c
··· 158 158 u32 line_time_us, vblank_lines; 159 159 u32 vblank_time_us = 0xffffffff; /* if the displays are off, vblank time is max */ 160 160 161 - list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { 162 - radeon_crtc = to_radeon_crtc(crtc); 163 - if (crtc->enabled && radeon_crtc->enabled && radeon_crtc->hw_mode.clock) { 164 - line_time_us = (radeon_crtc->hw_mode.crtc_htotal * 1000) / 165 - radeon_crtc->hw_mode.clock; 166 - vblank_lines = radeon_crtc->hw_mode.crtc_vblank_end - 167 - radeon_crtc->hw_mode.crtc_vdisplay + 168 - (radeon_crtc->v_border * 2); 169 - vblank_time_us = vblank_lines * line_time_us; 170 - break; 161 + if (rdev->num_crtc && rdev->mode_info.mode_config_initialized) { 162 + list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { 163 + radeon_crtc = to_radeon_crtc(crtc); 164 + if (crtc->enabled && radeon_crtc->enabled && radeon_crtc->hw_mode.clock) { 165 + line_time_us = (radeon_crtc->hw_mode.crtc_htotal * 1000) / 166 + radeon_crtc->hw_mode.clock; 167 + vblank_lines = radeon_crtc->hw_mode.crtc_vblank_end - 168 + radeon_crtc->hw_mode.crtc_vdisplay + 169 + (radeon_crtc->v_border * 2); 170 + vblank_time_us = vblank_lines * line_time_us; 171 + break; 172 + } 171 173 } 172 174 } 173 175 ··· 183 181 struct radeon_crtc *radeon_crtc; 184 182 u32 vrefresh = 0; 185 183 186 - list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { 187 - radeon_crtc = to_radeon_crtc(crtc); 188 - if (crtc->enabled && radeon_crtc->enabled && radeon_crtc->hw_mode.clock) { 189 - vrefresh = radeon_crtc->hw_mode.vrefresh; 190 - break; 184 + if (rdev->num_crtc && rdev->mode_info.mode_config_initialized) { 185 + list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { 186 + radeon_crtc = to_radeon_crtc(crtc); 187 + if (crtc->enabled && radeon_crtc->enabled && radeon_crtc->hw_mode.clock) { 188 + vrefresh = radeon_crtc->hw_mode.vrefresh; 189 + break; 190 + } 191 191 } 192 192 } 193 - 194 193 return vrefresh; 195 194 } 196 195
+7
drivers/gpu/drm/radeon/radeon_atpx_handler.c
··· 528 528 has_atpx |= (radeon_atpx_pci_probe_handle(pdev) == true); 529 529 } 530 530 531 + /* some newer PX laptops mark the dGPU as a non-VGA display device */ 532 + while ((pdev = pci_get_class(PCI_CLASS_DISPLAY_OTHER << 8, pdev)) != NULL) { 533 + vga_count++; 534 + 535 + has_atpx |= (radeon_atpx_pci_probe_handle(pdev) == true); 536 + } 537 + 531 538 if (has_atpx && vga_count == 2) { 532 539 acpi_get_name(radeon_atpx_priv.atpx.handle, ACPI_FULL_PATHNAME, &buffer); 533 540 printk(KERN_INFO "VGA switcheroo: detected switching method %s handle\n",
+57 -27
drivers/gpu/drm/radeon/radeon_display.c
··· 840 840 } 841 841 842 842 /** 843 + * avivo_get_fb_ref_div - feedback and ref divider calculation 844 + * 845 + * @nom: nominator 846 + * @den: denominator 847 + * @post_div: post divider 848 + * @fb_div_max: feedback divider maximum 849 + * @ref_div_max: reference divider maximum 850 + * @fb_div: resulting feedback divider 851 + * @ref_div: resulting reference divider 852 + * 853 + * Calculate feedback and reference divider for a given post divider. Makes 854 + * sure we stay within the limits. 855 + */ 856 + static void avivo_get_fb_ref_div(unsigned nom, unsigned den, unsigned post_div, 857 + unsigned fb_div_max, unsigned ref_div_max, 858 + unsigned *fb_div, unsigned *ref_div) 859 + { 860 + /* limit reference * post divider to a maximum */ 861 + ref_div_max = min(210 / post_div, ref_div_max); 862 + 863 + /* get matching reference and feedback divider */ 864 + *ref_div = min(max(DIV_ROUND_CLOSEST(den, post_div), 1u), ref_div_max); 865 + *fb_div = DIV_ROUND_CLOSEST(nom * *ref_div * post_div, den); 866 + 867 + /* limit fb divider to its maximum */ 868 + if (*fb_div > fb_div_max) { 869 + *ref_div = DIV_ROUND_CLOSEST(*ref_div * fb_div_max, *fb_div); 870 + *fb_div = fb_div_max; 871 + } 872 + } 873 + 874 + /** 843 875 * radeon_compute_pll_avivo - compute PLL paramaters 844 876 * 845 877 * @pll: information about the PLL ··· 892 860 u32 *ref_div_p, 893 861 u32 *post_div_p) 894 862 { 863 + unsigned target_clock = pll->flags & RADEON_PLL_USE_FRAC_FB_DIV ? 864 + freq : freq / 10; 865 + 895 866 unsigned fb_div_min, fb_div_max, fb_div; 896 867 unsigned post_div_min, post_div_max, post_div; 897 868 unsigned ref_div_min, ref_div_max, ref_div; ··· 915 880 ref_div_min = pll->reference_div; 916 881 else 917 882 ref_div_min = pll->min_ref_div; 918 - ref_div_max = pll->max_ref_div; 883 + 884 + if (pll->flags & RADEON_PLL_USE_FRAC_FB_DIV && 885 + pll->flags & RADEON_PLL_USE_REF_DIV) 886 + ref_div_max = pll->reference_div; 887 + else 888 + ref_div_max = pll->max_ref_div; 919 889 920 890 /* determine allowed post divider range */ 921 891 if (pll->flags & RADEON_PLL_USE_POST_DIV) { 922 892 post_div_min = pll->post_div; 923 893 post_div_max = pll->post_div; 924 894 } else { 925 - unsigned target_clock = freq / 10; 926 895 unsigned vco_min, vco_max; 927 896 928 897 if (pll->flags & RADEON_PLL_IS_LCD) { ··· 935 896 } else { 936 897 vco_min = pll->pll_out_min; 937 898 vco_max = pll->pll_out_max; 899 + } 900 + 901 + if (pll->flags & RADEON_PLL_USE_FRAC_FB_DIV) { 902 + vco_min *= 10; 903 + vco_max *= 10; 938 904 } 939 905 940 906 post_div_min = vco_min / target_clock; ··· 956 912 } 957 913 958 914 /* represent the searched ratio as fractional number */ 959 - nom = pll->flags & RADEON_PLL_USE_FRAC_FB_DIV ? freq : freq / 10; 915 + nom = target_clock; 960 916 den = pll->reference_freq; 961 917 962 918 /* reduce the numbers to a simpler ratio */ ··· 970 926 diff_best = ~0; 971 927 972 928 for (post_div = post_div_min; post_div <= post_div_max; ++post_div) { 973 - unsigned diff = abs(den - den / post_div * post_div); 929 + unsigned diff; 930 + avivo_get_fb_ref_div(nom, den, post_div, fb_div_max, 931 + ref_div_max, &fb_div, &ref_div); 932 + diff = abs(target_clock - (pll->reference_freq * fb_div) / 933 + (ref_div * post_div)); 934 + 974 935 if (diff < diff_best || (diff == diff_best && 975 936 !(pll->flags & RADEON_PLL_PREFER_MINM_OVER_MAXP))) { 976 937 ··· 985 936 } 986 937 post_div = post_div_best; 987 938 988 - /* limit reference * post divider to a maximum */ 989 - ref_div_max = min(210 / post_div, ref_div_max); 990 - 991 - /* get matching reference and feedback divider */ 992 - ref_div = max(DIV_ROUND_CLOSEST(den, post_div), 1u); 993 - fb_div = DIV_ROUND_CLOSEST(nom * ref_div * post_div, den); 994 - 995 - /* we're almost done, but reference and feedback 996 - divider might be to large now */ 997 - 998 - nom = fb_div; 999 - den = ref_div; 1000 - 1001 - if (fb_div > fb_div_max) { 1002 - ref_div = DIV_ROUND_CLOSEST(den * fb_div_max, nom); 1003 - fb_div = fb_div_max; 1004 - } 1005 - 1006 - if (ref_div > ref_div_max) { 1007 - ref_div = ref_div_max; 1008 - fb_div = DIV_ROUND_CLOSEST(nom * ref_div_max, den); 1009 - } 939 + /* get the feedback and reference divider for the optimal value */ 940 + avivo_get_fb_ref_div(nom, den, post_div, fb_div_max, ref_div_max, 941 + &fb_div, &ref_div); 1010 942 1011 943 /* reduce the numbers to a simpler ratio once more */ 1012 944 /* this also makes sure that the reference divider is large enough */ ··· 1009 979 *post_div_p = post_div; 1010 980 1011 981 DRM_DEBUG_KMS("%d - %d, pll dividers - fb: %d.%d ref: %d, post %d\n", 1012 - freq, *dot_clock_p, *fb_div_p, *frac_fb_div_p, 982 + freq, *dot_clock_p * 10, *fb_div_p, *frac_fb_div_p, 1013 983 ref_div, post_div); 1014 984 } 1015 985
+3 -5
drivers/gpu/drm/radeon/radeon_kms.c
··· 107 107 flags |= RADEON_IS_PCI; 108 108 } 109 109 110 - if (radeon_runtime_pm == 1) 111 - flags |= RADEON_IS_PX; 112 - else if ((radeon_runtime_pm == -1) && 113 - radeon_has_atpx() && 114 - ((flags & RADEON_IS_IGP) == 0)) 110 + if ((radeon_runtime_pm != 0) && 111 + radeon_has_atpx() && 112 + ((flags & RADEON_IS_IGP) == 0)) 115 113 flags |= RADEON_IS_PX; 116 114 117 115 /* radeon_device_init should report only fatal error
+32 -19
drivers/gpu/drm/radeon/radeon_pm.c
··· 603 603 static int radeon_hwmon_init(struct radeon_device *rdev) 604 604 { 605 605 int err = 0; 606 - struct device *hwmon_dev; 607 606 608 607 switch (rdev->pm.int_thermal_type) { 609 608 case THERMAL_TYPE_RV6XX: ··· 615 616 case THERMAL_TYPE_KV: 616 617 if (rdev->asic->pm.get_temperature == NULL) 617 618 return err; 618 - hwmon_dev = hwmon_device_register_with_groups(rdev->dev, 619 - "radeon", rdev, 620 - hwmon_groups); 621 - if (IS_ERR(hwmon_dev)) { 622 - err = PTR_ERR(hwmon_dev); 619 + rdev->pm.int_hwmon_dev = hwmon_device_register_with_groups(rdev->dev, 620 + "radeon", rdev, 621 + hwmon_groups); 622 + if (IS_ERR(rdev->pm.int_hwmon_dev)) { 623 + err = PTR_ERR(rdev->pm.int_hwmon_dev); 623 624 dev_err(rdev->dev, 624 625 "Unable to register hwmon device: %d\n", err); 625 626 } ··· 629 630 } 630 631 631 632 return err; 633 + } 634 + 635 + static void radeon_hwmon_fini(struct radeon_device *rdev) 636 + { 637 + if (rdev->pm.int_hwmon_dev) 638 + hwmon_device_unregister(rdev->pm.int_hwmon_dev); 632 639 } 633 640 634 641 static void radeon_dpm_thermal_work_handler(struct work_struct *work) ··· 1262 1257 case CHIP_RV670: 1263 1258 case CHIP_RS780: 1264 1259 case CHIP_RS880: 1260 + case CHIP_RV770: 1265 1261 case CHIP_BARTS: 1266 1262 case CHIP_TURKS: 1267 1263 case CHIP_CAICOS: ··· 1279 1273 else 1280 1274 rdev->pm.pm_method = PM_METHOD_PROFILE; 1281 1275 break; 1282 - case CHIP_RV770: 1283 1276 case CHIP_RV730: 1284 1277 case CHIP_RV710: 1285 1278 case CHIP_RV740: ··· 1358 1353 device_remove_file(rdev->dev, &dev_attr_power_method); 1359 1354 } 1360 1355 1356 + radeon_hwmon_fini(rdev); 1357 + 1361 1358 if (rdev->pm.power_state) 1362 1359 kfree(rdev->pm.power_state); 1363 1360 } ··· 1378 1371 device_remove_file(rdev->dev, &dev_attr_power_method); 1379 1372 } 1380 1373 radeon_dpm_fini(rdev); 1374 + 1375 + radeon_hwmon_fini(rdev); 1381 1376 1382 1377 if (rdev->pm.power_state) 1383 1378 kfree(rdev->pm.power_state); ··· 1406 1397 1407 1398 rdev->pm.active_crtcs = 0; 1408 1399 rdev->pm.active_crtc_count = 0; 1409 - list_for_each_entry(crtc, 1410 - &ddev->mode_config.crtc_list, head) { 1411 - radeon_crtc = to_radeon_crtc(crtc); 1412 - if (radeon_crtc->enabled) { 1413 - rdev->pm.active_crtcs |= (1 << radeon_crtc->crtc_id); 1414 - rdev->pm.active_crtc_count++; 1400 + if (rdev->num_crtc && rdev->mode_info.mode_config_initialized) { 1401 + list_for_each_entry(crtc, 1402 + &ddev->mode_config.crtc_list, head) { 1403 + radeon_crtc = to_radeon_crtc(crtc); 1404 + if (radeon_crtc->enabled) { 1405 + rdev->pm.active_crtcs |= (1 << radeon_crtc->crtc_id); 1406 + rdev->pm.active_crtc_count++; 1407 + } 1415 1408 } 1416 1409 } 1417 1410 ··· 1480 1469 /* update active crtc counts */ 1481 1470 rdev->pm.dpm.new_active_crtcs = 0; 1482 1471 rdev->pm.dpm.new_active_crtc_count = 0; 1483 - list_for_each_entry(crtc, 1484 - &ddev->mode_config.crtc_list, head) { 1485 - radeon_crtc = to_radeon_crtc(crtc); 1486 - if (crtc->enabled) { 1487 - rdev->pm.dpm.new_active_crtcs |= (1 << radeon_crtc->crtc_id); 1488 - rdev->pm.dpm.new_active_crtc_count++; 1472 + if (rdev->num_crtc && rdev->mode_info.mode_config_initialized) { 1473 + list_for_each_entry(crtc, 1474 + &ddev->mode_config.crtc_list, head) { 1475 + radeon_crtc = to_radeon_crtc(crtc); 1476 + if (crtc->enabled) { 1477 + rdev->pm.dpm.new_active_crtcs |= (1 << radeon_crtc->crtc_id); 1478 + rdev->pm.dpm.new_active_crtc_count++; 1479 + } 1489 1480 } 1490 1481 } 1491 1482
+3 -3
drivers/hwmon/ltc2945.c
··· 1 - /* 1 + /* 2 2 * Driver for Linear Technology LTC2945 I2C Power Monitor 3 3 * 4 4 * Copyright (c) 2014 Guenter Roeck ··· 314 314 reg = LTC2945_MAX_ADIN_H; 315 315 break; 316 316 default: 317 - BUG(); 318 - break; 317 + WARN_ONCE(1, "Bad register: 0x%x\n", reg); 318 + return -EINVAL; 319 319 } 320 320 /* Reset maximum */ 321 321 ret = regmap_bulk_write(regmap, reg, buf_max, num_regs);
+71 -12
drivers/hwmon/vexpress.c
··· 27 27 struct vexpress_hwmon_data { 28 28 struct device *hwmon_dev; 29 29 struct vexpress_config_func *func; 30 + const char *name; 30 31 }; 31 32 32 33 static ssize_t vexpress_hwmon_name_show(struct device *dev, 33 34 struct device_attribute *dev_attr, char *buffer) 34 35 { 35 - const char *compatible = of_get_property(dev->of_node, "compatible", 36 - NULL); 36 + struct vexpress_hwmon_data *data = dev_get_drvdata(dev); 37 37 38 - return sprintf(buffer, "%s\n", compatible); 38 + return sprintf(buffer, "%s\n", data->name); 39 39 } 40 40 41 41 static ssize_t vexpress_hwmon_label_show(struct device *dev, 42 42 struct device_attribute *dev_attr, char *buffer) 43 43 { 44 44 const char *label = of_get_property(dev->of_node, "label", NULL); 45 - 46 - if (!label) 47 - return -ENOENT; 48 45 49 46 return snprintf(buffer, PAGE_SIZE, "%s\n", label); 50 47 } ··· 81 84 to_sensor_dev_attr(dev_attr)->index)); 82 85 } 83 86 87 + static umode_t vexpress_hwmon_attr_is_visible(struct kobject *kobj, 88 + struct attribute *attr, int index) 89 + { 90 + struct device *dev = kobj_to_dev(kobj); 91 + struct device_attribute *dev_attr = container_of(attr, 92 + struct device_attribute, attr); 93 + 94 + if (dev_attr->show == vexpress_hwmon_label_show && 95 + !of_get_property(dev->of_node, "label", NULL)) 96 + return 0; 97 + 98 + return attr->mode; 99 + } 100 + 84 101 static DEVICE_ATTR(name, S_IRUGO, vexpress_hwmon_name_show, NULL); 85 102 86 103 #define VEXPRESS_HWMON_ATTRS(_name, _label_attr, _input_attr) \ ··· 105 94 NULL \ 106 95 } 107 96 97 + struct vexpress_hwmon_type { 98 + const char *name; 99 + const struct attribute_group **attr_groups; 100 + }; 101 + 108 102 #if !defined(CONFIG_REGULATOR_VEXPRESS) 109 103 static DEVICE_ATTR(in1_label, S_IRUGO, vexpress_hwmon_label_show, NULL); 110 104 static SENSOR_DEVICE_ATTR(in1_input, S_IRUGO, vexpress_hwmon_u32_show, 111 105 NULL, 1000); 112 106 static VEXPRESS_HWMON_ATTRS(volt, in1_label, in1_input); 113 107 static struct attribute_group vexpress_hwmon_group_volt = { 108 + .is_visible = vexpress_hwmon_attr_is_visible, 114 109 .attrs = vexpress_hwmon_attrs_volt, 110 + }; 111 + static struct vexpress_hwmon_type vexpress_hwmon_volt = { 112 + .name = "vexpress_volt", 113 + .attr_groups = (const struct attribute_group *[]) { 114 + &vexpress_hwmon_group_volt, 115 + NULL, 116 + }, 115 117 }; 116 118 #endif 117 119 ··· 133 109 NULL, 1000); 134 110 static VEXPRESS_HWMON_ATTRS(amp, curr1_label, curr1_input); 135 111 static struct attribute_group vexpress_hwmon_group_amp = { 112 + .is_visible = vexpress_hwmon_attr_is_visible, 136 113 .attrs = vexpress_hwmon_attrs_amp, 114 + }; 115 + static struct vexpress_hwmon_type vexpress_hwmon_amp = { 116 + .name = "vexpress_amp", 117 + .attr_groups = (const struct attribute_group *[]) { 118 + &vexpress_hwmon_group_amp, 119 + NULL 120 + }, 137 121 }; 138 122 139 123 static DEVICE_ATTR(temp1_label, S_IRUGO, vexpress_hwmon_label_show, NULL); ··· 149 117 NULL, 1000); 150 118 static VEXPRESS_HWMON_ATTRS(temp, temp1_label, temp1_input); 151 119 static struct attribute_group vexpress_hwmon_group_temp = { 120 + .is_visible = vexpress_hwmon_attr_is_visible, 152 121 .attrs = vexpress_hwmon_attrs_temp, 122 + }; 123 + static struct vexpress_hwmon_type vexpress_hwmon_temp = { 124 + .name = "vexpress_temp", 125 + .attr_groups = (const struct attribute_group *[]) { 126 + &vexpress_hwmon_group_temp, 127 + NULL 128 + }, 153 129 }; 154 130 155 131 static DEVICE_ATTR(power1_label, S_IRUGO, vexpress_hwmon_label_show, NULL); ··· 165 125 NULL, 1); 166 126 static VEXPRESS_HWMON_ATTRS(power, power1_label, power1_input); 167 127 static struct attribute_group vexpress_hwmon_group_power = { 128 + .is_visible = vexpress_hwmon_attr_is_visible, 168 129 .attrs = vexpress_hwmon_attrs_power, 130 + }; 131 + static struct vexpress_hwmon_type vexpress_hwmon_power = { 132 + .name = "vexpress_power", 133 + .attr_groups = (const struct attribute_group *[]) { 134 + &vexpress_hwmon_group_power, 135 + NULL 136 + }, 169 137 }; 170 138 171 139 static DEVICE_ATTR(energy1_label, S_IRUGO, vexpress_hwmon_label_show, NULL); ··· 181 133 NULL, 1); 182 134 static VEXPRESS_HWMON_ATTRS(energy, energy1_label, energy1_input); 183 135 static struct attribute_group vexpress_hwmon_group_energy = { 136 + .is_visible = vexpress_hwmon_attr_is_visible, 184 137 .attrs = vexpress_hwmon_attrs_energy, 138 + }; 139 + static struct vexpress_hwmon_type vexpress_hwmon_energy = { 140 + .name = "vexpress_energy", 141 + .attr_groups = (const struct attribute_group *[]) { 142 + &vexpress_hwmon_group_energy, 143 + NULL 144 + }, 185 145 }; 186 146 187 147 static struct of_device_id vexpress_hwmon_of_match[] = { 188 148 #if !defined(CONFIG_REGULATOR_VEXPRESS) 189 149 { 190 150 .compatible = "arm,vexpress-volt", 191 - .data = &vexpress_hwmon_group_volt, 151 + .data = &vexpress_hwmon_volt, 192 152 }, 193 153 #endif 194 154 { 195 155 .compatible = "arm,vexpress-amp", 196 - .data = &vexpress_hwmon_group_amp, 156 + .data = &vexpress_hwmon_amp, 197 157 }, { 198 158 .compatible = "arm,vexpress-temp", 199 - .data = &vexpress_hwmon_group_temp, 159 + .data = &vexpress_hwmon_temp, 200 160 }, { 201 161 .compatible = "arm,vexpress-power", 202 - .data = &vexpress_hwmon_group_power, 162 + .data = &vexpress_hwmon_power, 203 163 }, { 204 164 .compatible = "arm,vexpress-energy", 205 - .data = &vexpress_hwmon_group_energy, 165 + .data = &vexpress_hwmon_energy, 206 166 }, 207 167 {} 208 168 }; ··· 221 165 int err; 222 166 const struct of_device_id *match; 223 167 struct vexpress_hwmon_data *data; 168 + const struct vexpress_hwmon_type *type; 224 169 225 170 data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); 226 171 if (!data) ··· 231 174 match = of_match_device(vexpress_hwmon_of_match, &pdev->dev); 232 175 if (!match) 233 176 return -ENODEV; 177 + type = match->data; 178 + data->name = type->name; 234 179 235 180 data->func = vexpress_config_func_get_by_dev(&pdev->dev); 236 181 if (!data->func) 237 182 return -ENODEV; 238 183 239 - err = sysfs_create_group(&pdev->dev.kobj, match->data); 184 + err = sysfs_create_groups(&pdev->dev.kobj, type->attr_groups); 240 185 if (err) 241 186 goto error; 242 187
+2 -1
drivers/idle/intel_idle.c
··· 750 750 if (package_num + 1 > num_sockets) { 751 751 num_sockets = package_num + 1; 752 752 753 - if (num_sockets > 4) 753 + if (num_sockets > 4) { 754 754 cpuidle_state_table = ivt_cstates_8s; 755 755 return; 756 + } 756 757 } 757 758 } 758 759
+27 -6
drivers/iio/adc/at91_adc.c
··· 765 765 if (!pdata) 766 766 return -EINVAL; 767 767 768 + st->caps = (struct at91_adc_caps *) 769 + platform_get_device_id(pdev)->driver_data; 770 + 768 771 st->use_external = pdata->use_external_triggers; 769 772 st->vref_mv = pdata->vref; 770 773 st->channels_mask = pdata->channels_used; 771 - st->num_channels = pdata->num_channels; 774 + st->num_channels = st->caps->num_channels; 772 775 st->startup_time = pdata->startup_time; 773 776 st->trigger_number = pdata->trigger_number; 774 777 st->trigger_list = pdata->trigger_list; 775 - st->registers = pdata->registers; 778 + st->registers = &st->caps->registers; 776 779 777 780 return 0; 778 781 } ··· 1007 1004 * the best converted final value between two channels selection 1008 1005 * The formula thus is : Sample and Hold Time = (shtim + 1) / ADCClock 1009 1006 */ 1010 - shtim = round_up((st->sample_hold_time * adc_clk_khz / 1011 - 1000) - 1, 1); 1007 + if (st->sample_hold_time > 0) 1008 + shtim = round_up((st->sample_hold_time * adc_clk_khz / 1000) 1009 + - 1, 1); 1010 + else 1011 + shtim = 0; 1012 1012 1013 1013 reg = AT91_ADC_PRESCAL_(prsc) & st->registers->mr_prescal_mask; 1014 1014 reg |= AT91_ADC_STARTUP_(ticks) & st->registers->mr_startup_mask; ··· 1107 1101 return 0; 1108 1102 } 1109 1103 1110 - #ifdef CONFIG_OF 1111 1104 static struct at91_adc_caps at91sam9260_caps = { 1112 1105 .calc_startup_ticks = calc_startup_ticks_9260, 1113 1106 .num_channels = 4, ··· 1159 1154 {}, 1160 1155 }; 1161 1156 MODULE_DEVICE_TABLE(of, at91_adc_dt_ids); 1162 - #endif 1157 + 1158 + static const struct platform_device_id at91_adc_ids[] = { 1159 + { 1160 + .name = "at91sam9260-adc", 1161 + .driver_data = (unsigned long)&at91sam9260_caps, 1162 + }, { 1163 + .name = "at91sam9g45-adc", 1164 + .driver_data = (unsigned long)&at91sam9g45_caps, 1165 + }, { 1166 + .name = "at91sam9x5-adc", 1167 + .driver_data = (unsigned long)&at91sam9x5_caps, 1168 + }, { 1169 + /* terminator */ 1170 + } 1171 + }; 1172 + MODULE_DEVICE_TABLE(platform, at91_adc_ids); 1163 1173 1164 1174 static struct platform_driver at91_adc_driver = { 1165 1175 .probe = at91_adc_probe, 1166 1176 .remove = at91_adc_remove, 1177 + .id_table = at91_adc_ids, 1167 1178 .driver = { 1168 1179 .name = DRIVER_NAME, 1169 1180 .of_match_table = of_match_ptr(at91_adc_dt_ids),
+4 -2
drivers/iio/industrialio-buffer.c
··· 165 165 int ret; 166 166 struct iio_dev *indio_dev = dev_to_iio_dev(dev); 167 167 168 - ret = test_bit(to_iio_dev_attr(attr)->address, 168 + /* Ensure ret is 0 or 1. */ 169 + ret = !!test_bit(to_iio_dev_attr(attr)->address, 169 170 indio_dev->buffer->scan_mask); 170 171 171 172 return sprintf(buf, "%d\n", ret); ··· 863 862 if (!buffer->scan_mask) 864 863 return 0; 865 864 866 - return test_bit(bit, buffer->scan_mask); 865 + /* Ensure return value is 0 or 1. */ 866 + return !!test_bit(bit, buffer->scan_mask); 867 867 }; 868 868 EXPORT_SYMBOL_GPL(iio_scan_mask_query); 869 869
+1
drivers/iio/light/cm32181.c
··· 221 221 *val = cm32181->calibscale; 222 222 return IIO_VAL_INT; 223 223 case IIO_CHAN_INFO_INT_TIME: 224 + *val = 0; 224 225 ret = cm32181_read_als_it(cm32181, val2); 225 226 return ret; 226 227 }
+20 -2
drivers/iio/light/cm36651.c
··· 652 652 cm36651->client = client; 653 653 cm36651->ps_client = i2c_new_dummy(client->adapter, 654 654 CM36651_I2C_ADDR_PS); 655 + if (!cm36651->ps_client) { 656 + dev_err(&client->dev, "%s: new i2c device failed\n", __func__); 657 + ret = -ENODEV; 658 + goto error_disable_reg; 659 + } 660 + 655 661 cm36651->ara_client = i2c_new_dummy(client->adapter, CM36651_ARA); 662 + if (!cm36651->ara_client) { 663 + dev_err(&client->dev, "%s: new i2c device failed\n", __func__); 664 + ret = -ENODEV; 665 + goto error_i2c_unregister_ps; 666 + } 667 + 656 668 mutex_init(&cm36651->lock); 657 669 indio_dev->dev.parent = &client->dev; 658 670 indio_dev->channels = cm36651_channels; ··· 676 664 ret = cm36651_setup_reg(cm36651); 677 665 if (ret) { 678 666 dev_err(&client->dev, "%s: register setup failed\n", __func__); 679 - goto error_disable_reg; 667 + goto error_i2c_unregister_ara; 680 668 } 681 669 682 670 ret = request_threaded_irq(client->irq, NULL, cm36651_irq_handler, ··· 684 672 "cm36651", indio_dev); 685 673 if (ret) { 686 674 dev_err(&client->dev, "%s: request irq failed\n", __func__); 687 - goto error_disable_reg; 675 + goto error_i2c_unregister_ara; 688 676 } 689 677 690 678 ret = iio_device_register(indio_dev); ··· 697 685 698 686 error_free_irq: 699 687 free_irq(client->irq, indio_dev); 688 + error_i2c_unregister_ara: 689 + i2c_unregister_device(cm36651->ara_client); 690 + error_i2c_unregister_ps: 691 + i2c_unregister_device(cm36651->ps_client); 700 692 error_disable_reg: 701 693 regulator_disable(cm36651->vled_reg); 702 694 return ret; ··· 714 698 iio_device_unregister(indio_dev); 715 699 regulator_disable(cm36651->vled_reg); 716 700 free_irq(client->irq, indio_dev); 701 + i2c_unregister_device(cm36651->ps_client); 702 + i2c_unregister_device(cm36651->ara_client); 717 703 718 704 return 0; 719 705 }
-1
drivers/input/misc/da9055_onkey.c
··· 109 109 110 110 INIT_DELAYED_WORK(&onkey->work, da9055_onkey_work); 111 111 112 - irq = regmap_irq_get_virq(da9055->irq_data, irq); 113 112 err = request_threaded_irq(irq, NULL, da9055_onkey_irq, 114 113 IRQF_TRIGGER_HIGH | IRQF_ONESHOT, 115 114 "ONKEY", onkey);
+1
drivers/input/misc/soc_button_array.c
··· 169 169 soc_button_remove(pdev); 170 170 return error; 171 171 } 172 + continue; 172 173 } 173 174 174 175 priv->children[i] = pd;
+1
drivers/input/mouse/elantech.c
··· 1353 1353 case 6: 1354 1354 case 7: 1355 1355 case 8: 1356 + case 9: 1356 1357 etd->hw_version = 4; 1357 1358 break; 1358 1359 default:
+95 -2
drivers/input/mouse/synaptics.c
··· 117 117 } 118 118 119 119 #ifdef CONFIG_MOUSE_PS2_SYNAPTICS 120 + /* This list has been kindly provided by Synaptics. */ 121 + static const char * const topbuttonpad_pnp_ids[] = { 122 + "LEN0017", 123 + "LEN0018", 124 + "LEN0019", 125 + "LEN0023", 126 + "LEN002A", 127 + "LEN002B", 128 + "LEN002C", 129 + "LEN002D", 130 + "LEN002E", 131 + "LEN0033", /* Helix */ 132 + "LEN0034", /* T431s, T540, X1 Carbon 2nd */ 133 + "LEN0035", /* X240 */ 134 + "LEN0036", /* T440 */ 135 + "LEN0037", 136 + "LEN0038", 137 + "LEN0041", 138 + "LEN0042", /* Yoga */ 139 + "LEN0045", 140 + "LEN0046", 141 + "LEN0047", 142 + "LEN0048", 143 + "LEN0049", 144 + "LEN2000", 145 + "LEN2001", 146 + "LEN2002", 147 + "LEN2003", 148 + "LEN2004", /* L440 */ 149 + "LEN2005", 150 + "LEN2006", 151 + "LEN2007", 152 + "LEN2008", 153 + "LEN2009", 154 + "LEN200A", 155 + "LEN200B", 156 + NULL 157 + }; 120 158 121 159 /***************************************************************************** 122 160 * Synaptics communications functions ··· 1293 1255 input_abs_set_res(dev, y_code, priv->y_res); 1294 1256 } 1295 1257 1296 - static void set_input_params(struct input_dev *dev, struct synaptics_data *priv) 1258 + static void set_input_params(struct psmouse *psmouse, 1259 + struct synaptics_data *priv) 1297 1260 { 1261 + struct input_dev *dev = psmouse->dev; 1298 1262 int i; 1299 1263 1300 1264 /* Things that apply to both modes */ ··· 1365 1325 1366 1326 if (SYN_CAP_CLICKPAD(priv->ext_cap_0c)) { 1367 1327 __set_bit(INPUT_PROP_BUTTONPAD, dev->propbit); 1328 + /* See if this buttonpad has a top button area */ 1329 + if (!strncmp(psmouse->ps2dev.serio->firmware_id, "PNP:", 4)) { 1330 + for (i = 0; topbuttonpad_pnp_ids[i]; i++) { 1331 + if (strstr(psmouse->ps2dev.serio->firmware_id, 1332 + topbuttonpad_pnp_ids[i])) { 1333 + __set_bit(INPUT_PROP_TOPBUTTONPAD, 1334 + dev->propbit); 1335 + break; 1336 + } 1337 + } 1338 + } 1368 1339 /* Clickpads report only left button */ 1369 1340 __clear_bit(BTN_RIGHT, dev->keybit); 1370 1341 __clear_bit(BTN_MIDDLE, dev->keybit); ··· 1566 1515 .driver_data = (int []){1232, 5710, 1156, 4696}, 1567 1516 }, 1568 1517 { 1518 + /* Lenovo ThinkPad T431s */ 1519 + .matches = { 1520 + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), 1521 + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T431"), 1522 + }, 1523 + .driver_data = (int []){1024, 5112, 2024, 4832}, 1524 + }, 1525 + { 1569 1526 /* Lenovo ThinkPad T440s */ 1570 1527 .matches = { 1571 1528 DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), 1572 1529 DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T440"), 1530 + }, 1531 + .driver_data = (int []){1024, 5112, 2024, 4832}, 1532 + }, 1533 + { 1534 + /* Lenovo ThinkPad L440 */ 1535 + .matches = { 1536 + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), 1537 + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad L440"), 1573 1538 }, 1574 1539 .driver_data = (int []){1024, 5112, 2024, 4832}, 1575 1540 }, ··· 1596 1529 DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T540"), 1597 1530 }, 1598 1531 .driver_data = (int []){1024, 5056, 2058, 4832}, 1532 + }, 1533 + { 1534 + /* Lenovo ThinkPad L540 */ 1535 + .matches = { 1536 + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), 1537 + DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad L540"), 1538 + }, 1539 + .driver_data = (int []){1024, 5112, 2024, 4832}, 1540 + }, 1541 + { 1542 + /* Lenovo Yoga S1 */ 1543 + .matches = { 1544 + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), 1545 + DMI_EXACT_MATCH(DMI_PRODUCT_VERSION, 1546 + "ThinkPad S1 Yoga"), 1547 + }, 1548 + .driver_data = (int []){1232, 5710, 1156, 4696}, 1549 + }, 1550 + { 1551 + /* Lenovo ThinkPad X1 Carbon Haswell (3rd generation) */ 1552 + .matches = { 1553 + DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"), 1554 + DMI_MATCH(DMI_PRODUCT_VERSION, 1555 + "ThinkPad X1 Carbon 2nd"), 1556 + }, 1557 + .driver_data = (int []){1024, 5112, 2024, 4832}, 1599 1558 }, 1600 1559 #endif 1601 1560 { } ··· 1686 1593 priv->capabilities, priv->ext_cap, priv->ext_cap_0c, 1687 1594 priv->board_id, priv->firmware_id); 1688 1595 1689 - set_input_params(psmouse->dev, priv); 1596 + set_input_params(psmouse, priv); 1690 1597 1691 1598 /* 1692 1599 * Encode touchpad model so that it can be used to set
+15
drivers/input/serio/i8042-x86ia64io.h
··· 702 702 static char i8042_pnp_kbd_name[32]; 703 703 static char i8042_pnp_aux_name[32]; 704 704 705 + static void i8042_pnp_id_to_string(struct pnp_id *id, char *dst, int dst_size) 706 + { 707 + strlcpy(dst, "PNP:", dst_size); 708 + 709 + while (id) { 710 + strlcat(dst, " ", dst_size); 711 + strlcat(dst, id->id, dst_size); 712 + id = id->next; 713 + } 714 + } 715 + 705 716 static int i8042_pnp_kbd_probe(struct pnp_dev *dev, const struct pnp_device_id *did) 706 717 { 707 718 if (pnp_port_valid(dev, 0) && pnp_port_len(dev, 0) == 1) ··· 729 718 strlcat(i8042_pnp_kbd_name, ":", sizeof(i8042_pnp_kbd_name)); 730 719 strlcat(i8042_pnp_kbd_name, pnp_dev_name(dev), sizeof(i8042_pnp_kbd_name)); 731 720 } 721 + i8042_pnp_id_to_string(dev->id, i8042_kbd_firmware_id, 722 + sizeof(i8042_kbd_firmware_id)); 732 723 733 724 /* Keyboard ports are always supposed to be wakeup-enabled */ 734 725 device_set_wakeup_enable(&dev->dev, true); ··· 755 742 strlcat(i8042_pnp_aux_name, ":", sizeof(i8042_pnp_aux_name)); 756 743 strlcat(i8042_pnp_aux_name, pnp_dev_name(dev), sizeof(i8042_pnp_aux_name)); 757 744 } 745 + i8042_pnp_id_to_string(dev->id, i8042_aux_firmware_id, 746 + sizeof(i8042_aux_firmware_id)); 758 747 759 748 i8042_pnp_aux_devices++; 760 749 return 0;
+6
drivers/input/serio/i8042.c
··· 87 87 #endif 88 88 89 89 static bool i8042_bypass_aux_irq_test; 90 + static char i8042_kbd_firmware_id[128]; 91 + static char i8042_aux_firmware_id[128]; 90 92 91 93 #include "i8042.h" 92 94 ··· 1220 1218 serio->dev.parent = &i8042_platform_device->dev; 1221 1219 strlcpy(serio->name, "i8042 KBD port", sizeof(serio->name)); 1222 1220 strlcpy(serio->phys, I8042_KBD_PHYS_DESC, sizeof(serio->phys)); 1221 + strlcpy(serio->firmware_id, i8042_kbd_firmware_id, 1222 + sizeof(serio->firmware_id)); 1223 1223 1224 1224 port->serio = serio; 1225 1225 port->irq = I8042_KBD_IRQ; ··· 1248 1244 if (idx < 0) { 1249 1245 strlcpy(serio->name, "i8042 AUX port", sizeof(serio->name)); 1250 1246 strlcpy(serio->phys, I8042_AUX_PHYS_DESC, sizeof(serio->phys)); 1247 + strlcpy(serio->firmware_id, i8042_aux_firmware_id, 1248 + sizeof(serio->firmware_id)); 1251 1249 serio->close = i8042_port_close; 1252 1250 } else { 1253 1251 snprintf(serio->name, sizeof(serio->name), "i8042 AUX%d port", idx);
+14
drivers/input/serio/serio.c
··· 451 451 return retval; 452 452 } 453 453 454 + static ssize_t firmware_id_show(struct device *dev, struct device_attribute *attr, char *buf) 455 + { 456 + struct serio *serio = to_serio_port(dev); 457 + 458 + return sprintf(buf, "%s\n", serio->firmware_id); 459 + } 460 + 454 461 static DEVICE_ATTR_RO(type); 455 462 static DEVICE_ATTR_RO(proto); 456 463 static DEVICE_ATTR_RO(id); ··· 480 473 static DEVICE_ATTR_WO(drvctl); 481 474 static DEVICE_ATTR(description, S_IRUGO, serio_show_description, NULL); 482 475 static DEVICE_ATTR(bind_mode, S_IWUSR | S_IRUGO, serio_show_bind_mode, serio_set_bind_mode); 476 + static DEVICE_ATTR_RO(firmware_id); 483 477 484 478 static struct attribute *serio_device_attrs[] = { 485 479 &dev_attr_modalias.attr, 486 480 &dev_attr_description.attr, 487 481 &dev_attr_drvctl.attr, 488 482 &dev_attr_bind_mode.attr, 483 + &dev_attr_firmware_id.attr, 489 484 NULL 490 485 }; 491 486 ··· 930 921 SERIO_ADD_UEVENT_VAR("SERIO_PROTO=%02x", serio->id.proto); 931 922 SERIO_ADD_UEVENT_VAR("SERIO_ID=%02x", serio->id.id); 932 923 SERIO_ADD_UEVENT_VAR("SERIO_EXTRA=%02x", serio->id.extra); 924 + 933 925 SERIO_ADD_UEVENT_VAR("MODALIAS=serio:ty%02Xpr%02Xid%02Xex%02X", 934 926 serio->id.type, serio->id.proto, serio->id.id, serio->id.extra); 927 + 928 + if (serio->firmware_id[0]) 929 + SERIO_ADD_UEVENT_VAR("SERIO_FIRMWARE_ID=%s", 930 + serio->firmware_id); 935 931 936 932 return 0; 937 933 }
+112 -122
drivers/input/tablet/wacom_sys.c
··· 22 22 #define HID_USAGE_PAGE_DIGITIZER 0x0d 23 23 #define HID_USAGE_PAGE_DESKTOP 0x01 24 24 #define HID_USAGE 0x09 25 - #define HID_USAGE_X 0x30 26 - #define HID_USAGE_Y 0x31 27 - #define HID_USAGE_X_TILT 0x3d 28 - #define HID_USAGE_Y_TILT 0x3e 29 - #define HID_USAGE_FINGER 0x22 30 - #define HID_USAGE_STYLUS 0x20 31 - #define HID_USAGE_CONTACTMAX 0x55 25 + #define HID_USAGE_X ((HID_USAGE_PAGE_DESKTOP << 16) | 0x30) 26 + #define HID_USAGE_Y ((HID_USAGE_PAGE_DESKTOP << 16) | 0x31) 27 + #define HID_USAGE_PRESSURE ((HID_USAGE_PAGE_DIGITIZER << 16) | 0x30) 28 + #define HID_USAGE_X_TILT ((HID_USAGE_PAGE_DIGITIZER << 16) | 0x3d) 29 + #define HID_USAGE_Y_TILT ((HID_USAGE_PAGE_DIGITIZER << 16) | 0x3e) 30 + #define HID_USAGE_FINGER ((HID_USAGE_PAGE_DIGITIZER << 16) | 0x22) 31 + #define HID_USAGE_STYLUS ((HID_USAGE_PAGE_DIGITIZER << 16) | 0x20) 32 + #define HID_USAGE_CONTACTMAX ((HID_USAGE_PAGE_DIGITIZER << 16) | 0x55) 32 33 #define HID_COLLECTION 0xa1 33 34 #define HID_COLLECTION_LOGICAL 0x02 34 35 #define HID_COLLECTION_END 0xc0 35 - 36 - enum { 37 - WCM_UNDEFINED = 0, 38 - WCM_DESKTOP, 39 - WCM_DIGITIZER, 40 - }; 41 36 42 37 struct hid_descriptor { 43 38 struct usb_descriptor_header header; ··· 300 305 char limit = 0; 301 306 /* result has to be defined as int for some devices */ 302 307 int result = 0, touch_max = 0; 303 - int i = 0, usage = WCM_UNDEFINED, finger = 0, pen = 0; 308 + int i = 0, page = 0, finger = 0, pen = 0; 304 309 unsigned char *report; 305 310 306 311 report = kzalloc(hid_desc->wDescriptorLength, GFP_KERNEL); ··· 327 332 328 333 switch (report[i]) { 329 334 case HID_USAGE_PAGE: 330 - switch (report[i + 1]) { 331 - case HID_USAGE_PAGE_DIGITIZER: 332 - usage = WCM_DIGITIZER; 333 - i++; 334 - break; 335 - 336 - case HID_USAGE_PAGE_DESKTOP: 337 - usage = WCM_DESKTOP; 338 - i++; 339 - break; 340 - } 335 + page = report[i + 1]; 336 + i++; 341 337 break; 342 338 343 339 case HID_USAGE: 344 - switch (report[i + 1]) { 340 + switch (page << 16 | report[i + 1]) { 345 341 case HID_USAGE_X: 346 - if (usage == WCM_DESKTOP) { 347 - if (finger) { 348 - features->device_type = BTN_TOOL_FINGER; 349 - /* touch device at least supports one touch point */ 350 - touch_max = 1; 351 - switch (features->type) { 352 - case TABLETPC2FG: 353 - features->pktlen = WACOM_PKGLEN_TPC2FG; 354 - break; 342 + if (finger) { 343 + features->device_type = BTN_TOOL_FINGER; 344 + /* touch device at least supports one touch point */ 345 + touch_max = 1; 346 + switch (features->type) { 347 + case TABLETPC2FG: 348 + features->pktlen = WACOM_PKGLEN_TPC2FG; 349 + break; 355 350 356 - case MTSCREEN: 357 - case WACOM_24HDT: 358 - features->pktlen = WACOM_PKGLEN_MTOUCH; 359 - break; 351 + case MTSCREEN: 352 + case WACOM_24HDT: 353 + features->pktlen = WACOM_PKGLEN_MTOUCH; 354 + break; 360 355 361 - case MTTPC: 362 - features->pktlen = WACOM_PKGLEN_MTTPC; 363 - break; 356 + case MTTPC: 357 + features->pktlen = WACOM_PKGLEN_MTTPC; 358 + break; 364 359 365 - case BAMBOO_PT: 366 - features->pktlen = WACOM_PKGLEN_BBTOUCH; 367 - break; 360 + case BAMBOO_PT: 361 + features->pktlen = WACOM_PKGLEN_BBTOUCH; 362 + break; 368 363 369 - default: 370 - features->pktlen = WACOM_PKGLEN_GRAPHIRE; 371 - break; 372 - } 364 + default: 365 + features->pktlen = WACOM_PKGLEN_GRAPHIRE; 366 + break; 367 + } 373 368 374 - switch (features->type) { 375 - case BAMBOO_PT: 376 - features->x_phy = 377 - get_unaligned_le16(&report[i + 5]); 378 - features->x_max = 379 - get_unaligned_le16(&report[i + 8]); 380 - i += 15; 381 - break; 369 + switch (features->type) { 370 + case BAMBOO_PT: 371 + features->x_phy = 372 + get_unaligned_le16(&report[i + 5]); 373 + features->x_max = 374 + get_unaligned_le16(&report[i + 8]); 375 + i += 15; 376 + break; 382 377 383 - case WACOM_24HDT: 384 - features->x_max = 385 - get_unaligned_le16(&report[i + 3]); 386 - features->x_phy = 387 - get_unaligned_le16(&report[i + 8]); 388 - features->unit = report[i - 1]; 389 - features->unitExpo = report[i - 3]; 390 - i += 12; 391 - break; 392 - 393 - default: 394 - features->x_max = 395 - get_unaligned_le16(&report[i + 3]); 396 - features->x_phy = 397 - get_unaligned_le16(&report[i + 6]); 398 - features->unit = report[i + 9]; 399 - features->unitExpo = report[i + 11]; 400 - i += 12; 401 - break; 402 - } 403 - } else if (pen) { 404 - /* penabled only accepts exact bytes of data */ 405 - if (features->type >= TABLETPC) 406 - features->pktlen = WACOM_PKGLEN_GRAPHIRE; 407 - features->device_type = BTN_TOOL_PEN; 378 + case WACOM_24HDT: 408 379 features->x_max = 409 380 get_unaligned_le16(&report[i + 3]); 410 - i += 4; 381 + features->x_phy = 382 + get_unaligned_le16(&report[i + 8]); 383 + features->unit = report[i - 1]; 384 + features->unitExpo = report[i - 3]; 385 + i += 12; 386 + break; 387 + 388 + default: 389 + features->x_max = 390 + get_unaligned_le16(&report[i + 3]); 391 + features->x_phy = 392 + get_unaligned_le16(&report[i + 6]); 393 + features->unit = report[i + 9]; 394 + features->unitExpo = report[i + 11]; 395 + i += 12; 396 + break; 411 397 } 398 + } else if (pen) { 399 + /* penabled only accepts exact bytes of data */ 400 + if (features->type >= TABLETPC) 401 + features->pktlen = WACOM_PKGLEN_GRAPHIRE; 402 + features->device_type = BTN_TOOL_PEN; 403 + features->x_max = 404 + get_unaligned_le16(&report[i + 3]); 405 + i += 4; 412 406 } 413 407 break; 414 408 415 409 case HID_USAGE_Y: 416 - if (usage == WCM_DESKTOP) { 417 - if (finger) { 418 - switch (features->type) { 419 - case TABLETPC2FG: 420 - case MTSCREEN: 421 - case MTTPC: 422 - features->y_max = 423 - get_unaligned_le16(&report[i + 3]); 424 - features->y_phy = 425 - get_unaligned_le16(&report[i + 6]); 426 - i += 7; 427 - break; 428 - 429 - case WACOM_24HDT: 430 - features->y_max = 431 - get_unaligned_le16(&report[i + 3]); 432 - features->y_phy = 433 - get_unaligned_le16(&report[i - 2]); 434 - i += 7; 435 - break; 436 - 437 - case BAMBOO_PT: 438 - features->y_phy = 439 - get_unaligned_le16(&report[i + 3]); 440 - features->y_max = 441 - get_unaligned_le16(&report[i + 6]); 442 - i += 12; 443 - break; 444 - 445 - default: 446 - features->y_max = 447 - features->x_max; 448 - features->y_phy = 449 - get_unaligned_le16(&report[i + 3]); 450 - i += 4; 451 - break; 452 - } 453 - } else if (pen) { 410 + if (finger) { 411 + switch (features->type) { 412 + case TABLETPC2FG: 413 + case MTSCREEN: 414 + case MTTPC: 454 415 features->y_max = 455 416 get_unaligned_le16(&report[i + 3]); 417 + features->y_phy = 418 + get_unaligned_le16(&report[i + 6]); 419 + i += 7; 420 + break; 421 + 422 + case WACOM_24HDT: 423 + features->y_max = 424 + get_unaligned_le16(&report[i + 3]); 425 + features->y_phy = 426 + get_unaligned_le16(&report[i - 2]); 427 + i += 7; 428 + break; 429 + 430 + case BAMBOO_PT: 431 + features->y_phy = 432 + get_unaligned_le16(&report[i + 3]); 433 + features->y_max = 434 + get_unaligned_le16(&report[i + 6]); 435 + i += 12; 436 + break; 437 + 438 + default: 439 + features->y_max = 440 + features->x_max; 441 + features->y_phy = 442 + get_unaligned_le16(&report[i + 3]); 456 443 i += 4; 444 + break; 457 445 } 446 + } else if (pen) { 447 + features->y_max = 448 + get_unaligned_le16(&report[i + 3]); 449 + i += 4; 458 450 } 459 451 break; 460 452 ··· 466 484 wacom_retrieve_report_data(intf, features); 467 485 i++; 468 486 break; 487 + 488 + case HID_USAGE_PRESSURE: 489 + if (pen) { 490 + features->pressure_max = 491 + get_unaligned_le16(&report[i + 3]); 492 + i += 4; 493 + } 494 + break; 469 495 } 470 496 break; 471 497 472 498 case HID_COLLECTION_END: 473 499 /* reset UsagePage and Finger */ 474 - finger = usage = 0; 500 + finger = page = 0; 475 501 break; 476 502 477 503 case HID_COLLECTION:
+10 -19
drivers/input/tablet/wacom_wac.c
··· 178 178 179 179 static int wacom_dtu_irq(struct wacom_wac *wacom) 180 180 { 181 - struct wacom_features *features = &wacom->features; 182 - char *data = wacom->data; 181 + unsigned char *data = wacom->data; 183 182 struct input_dev *input = wacom->input; 184 - int prox = data[1] & 0x20, pressure; 183 + int prox = data[1] & 0x20; 185 184 186 185 dev_dbg(input->dev.parent, 187 186 "%s: received report #%d", __func__, data[0]); ··· 197 198 input_report_key(input, BTN_STYLUS2, data[1] & 0x10); 198 199 input_report_abs(input, ABS_X, le16_to_cpup((__le16 *)&data[2])); 199 200 input_report_abs(input, ABS_Y, le16_to_cpup((__le16 *)&data[4])); 200 - pressure = ((data[7] & 0x01) << 8) | data[6]; 201 - if (pressure < 0) 202 - pressure = features->pressure_max + pressure + 1; 203 - input_report_abs(input, ABS_PRESSURE, pressure); 201 + input_report_abs(input, ABS_PRESSURE, ((data[7] & 0x01) << 8) | data[6]); 204 202 input_report_key(input, BTN_TOUCH, data[1] & 0x05); 205 203 if (!prox) /* out-prox */ 206 204 wacom->id[0] = 0; ··· 902 906 static int wacom_24hdt_irq(struct wacom_wac *wacom) 903 907 { 904 908 struct input_dev *input = wacom->input; 905 - char *data = wacom->data; 909 + unsigned char *data = wacom->data; 906 910 int i; 907 911 int current_num_contacts = data[61]; 908 912 int contacts_to_send = 0; ··· 955 959 static int wacom_mt_touch(struct wacom_wac *wacom) 956 960 { 957 961 struct input_dev *input = wacom->input; 958 - char *data = wacom->data; 962 + unsigned char *data = wacom->data; 959 963 int i; 960 964 int current_num_contacts = data[2]; 961 965 int contacts_to_send = 0; ··· 1034 1038 1035 1039 static int wacom_tpc_single_touch(struct wacom_wac *wacom, size_t len) 1036 1040 { 1037 - char *data = wacom->data; 1041 + unsigned char *data = wacom->data; 1038 1042 struct input_dev *input = wacom->input; 1039 1043 bool prox; 1040 1044 int x = 0, y = 0; ··· 1070 1074 1071 1075 static int wacom_tpc_pen(struct wacom_wac *wacom) 1072 1076 { 1073 - struct wacom_features *features = &wacom->features; 1074 - char *data = wacom->data; 1077 + unsigned char *data = wacom->data; 1075 1078 struct input_dev *input = wacom->input; 1076 - int pressure; 1077 1079 bool prox = data[1] & 0x20; 1078 1080 1079 1081 if (!wacom->shared->stylus_in_proximity) /* first in prox */ ··· 1087 1093 input_report_key(input, BTN_STYLUS2, data[1] & 0x10); 1088 1094 input_report_abs(input, ABS_X, le16_to_cpup((__le16 *)&data[2])); 1089 1095 input_report_abs(input, ABS_Y, le16_to_cpup((__le16 *)&data[4])); 1090 - pressure = ((data[7] & 0x01) << 8) | data[6]; 1091 - if (pressure < 0) 1092 - pressure = features->pressure_max + pressure + 1; 1093 - input_report_abs(input, ABS_PRESSURE, pressure); 1096 + input_report_abs(input, ABS_PRESSURE, ((data[7] & 0x03) << 8) | data[6]); 1094 1097 input_report_key(input, BTN_TOUCH, data[1] & 0x05); 1095 1098 input_report_key(input, wacom->tool[0], prox); 1096 1099 return 1; ··· 1098 1107 1099 1108 static int wacom_tpc_irq(struct wacom_wac *wacom, size_t len) 1100 1109 { 1101 - char *data = wacom->data; 1110 + unsigned char *data = wacom->data; 1102 1111 1103 1112 dev_dbg(wacom->input->dev.parent, 1104 1113 "%s: received report #%d\n", __func__, data[0]); ··· 1829 1838 case DTU: 1830 1839 if (features->type == DTUS) { 1831 1840 input_set_capability(input_dev, EV_MSC, MSC_SERIAL); 1832 - for (i = 0; i < 3; i++) 1841 + for (i = 0; i < 4; i++) 1833 1842 __set_bit(BTN_0 + i, input_dev->keybit); 1834 1843 } 1835 1844 __set_bit(BTN_TOOL_PEN, input_dev->keybit);
+1 -1
drivers/input/touchscreen/ads7846.c
··· 425 425 name ## _show(struct device *dev, struct device_attribute *attr, char *buf) \ 426 426 { \ 427 427 struct ads7846 *ts = dev_get_drvdata(dev); \ 428 - ssize_t v = ads7846_read12_ser(dev, \ 428 + ssize_t v = ads7846_read12_ser(&ts->spi->dev, \ 429 429 READ_12BIT_SER(var)); \ 430 430 if (v < 0) \ 431 431 return v; \
+6 -2
drivers/irqchip/irq-gic.c
··· 246 246 bool force) 247 247 { 248 248 void __iomem *reg = gic_dist_base(d) + GIC_DIST_TARGET + (gic_irq(d) & ~3); 249 - unsigned int shift = (gic_irq(d) % 4) * 8; 250 - unsigned int cpu = cpumask_any_and(mask_val, cpu_online_mask); 249 + unsigned int cpu, shift = (gic_irq(d) % 4) * 8; 251 250 u32 val, mask, bit; 251 + 252 + if (!force) 253 + cpu = cpumask_any_and(mask_val, cpu_online_mask); 254 + else 255 + cpu = cpumask_first(mask_val); 252 256 253 257 if (cpu >= NR_GIC_CPU_IF || cpu >= nr_cpu_ids) 254 258 return -EINVAL;
+1
drivers/phy/Kconfig
··· 33 33 34 34 config OMAP_CONTROL_PHY 35 35 tristate "OMAP CONTROL PHY Driver" 36 + depends on ARCH_OMAP2PLUS || COMPILE_TEST 36 37 help 37 38 Enable this to add support for the PHY part present in the control 38 39 module. This driver has API to power on the USB2 PHY and to write to
+5 -4
drivers/phy/Makefile
··· 13 13 obj-$(CONFIG_TWL4030_USB) += phy-twl4030-usb.o 14 14 obj-$(CONFIG_PHY_EXYNOS5250_SATA) += phy-exynos5250-sata.o 15 15 obj-$(CONFIG_PHY_SUN4I_USB) += phy-sun4i-usb.o 16 - obj-$(CONFIG_PHY_SAMSUNG_USB2) += phy-samsung-usb2.o 17 - obj-$(CONFIG_PHY_EXYNOS4210_USB2) += phy-exynos4210-usb2.o 18 - obj-$(CONFIG_PHY_EXYNOS4X12_USB2) += phy-exynos4x12-usb2.o 19 - obj-$(CONFIG_PHY_EXYNOS5250_USB2) += phy-exynos5250-usb2.o 16 + obj-$(CONFIG_PHY_SAMSUNG_USB2) += phy-exynos-usb2.o 17 + phy-exynos-usb2-y += phy-samsung-usb2.o 18 + phy-exynos-usb2-$(CONFIG_PHY_EXYNOS4210_USB2) += phy-exynos4210-usb2.o 19 + phy-exynos-usb2-$(CONFIG_PHY_EXYNOS4X12_USB2) += phy-exynos4x12-usb2.o 20 + phy-exynos-usb2-$(CONFIG_PHY_EXYNOS5250_USB2) += phy-exynos5250-usb2.o 20 21 obj-$(CONFIG_PHY_XGENE) += phy-xgene.o
+3
drivers/phy/phy-core.c
··· 64 64 class_dev_iter_init(&iter, phy_class, NULL, NULL); 65 65 while ((dev = class_dev_iter_next(&iter))) { 66 66 phy = to_phy(dev); 67 + 68 + if (!phy->init_data) 69 + continue; 67 70 count = phy->init_data->num_consumers; 68 71 consumers = phy->init_data->consumers; 69 72 while (count--) {
+79
drivers/pnp/quirks.c
··· 15 15 16 16 #include <linux/types.h> 17 17 #include <linux/kernel.h> 18 + #include <linux/pci.h> 18 19 #include <linux/string.h> 19 20 #include <linux/slab.h> 20 21 #include <linux/pnp.h> ··· 335 334 } 336 335 #endif 337 336 337 + #ifdef CONFIG_X86 338 + /* Device IDs of parts that have 32KB MCH space */ 339 + static const unsigned int mch_quirk_devices[] = { 340 + 0x0154, /* Ivy Bridge */ 341 + 0x0c00, /* Haswell */ 342 + }; 343 + 344 + static struct pci_dev *get_intel_host(void) 345 + { 346 + int i; 347 + struct pci_dev *host; 348 + 349 + for (i = 0; i < ARRAY_SIZE(mch_quirk_devices); i++) { 350 + host = pci_get_device(PCI_VENDOR_ID_INTEL, mch_quirk_devices[i], 351 + NULL); 352 + if (host) 353 + return host; 354 + } 355 + return NULL; 356 + } 357 + 358 + static void quirk_intel_mch(struct pnp_dev *dev) 359 + { 360 + struct pci_dev *host; 361 + u32 addr_lo, addr_hi; 362 + struct pci_bus_region region; 363 + struct resource mch; 364 + struct pnp_resource *pnp_res; 365 + struct resource *res; 366 + 367 + host = get_intel_host(); 368 + if (!host) 369 + return; 370 + 371 + /* 372 + * MCHBAR is not an architected PCI BAR, so MCH space is usually 373 + * reported as a PNP0C02 resource. The MCH space was originally 374 + * 16KB, but is 32KB in newer parts. Some BIOSes still report a 375 + * PNP0C02 resource that is only 16KB, which means the rest of the 376 + * MCH space is consumed but unreported. 377 + */ 378 + 379 + /* 380 + * Read MCHBAR for Host Member Mapped Register Range Base 381 + * https://www-ssl.intel.com/content/www/us/en/processors/core/4th-gen-core-family-desktop-vol-2-datasheet 382 + * Sec 3.1.12. 383 + */ 384 + pci_read_config_dword(host, 0x48, &addr_lo); 385 + region.start = addr_lo & ~0x7fff; 386 + pci_read_config_dword(host, 0x4c, &addr_hi); 387 + region.start |= (u64) addr_hi << 32; 388 + region.end = region.start + 32*1024 - 1; 389 + 390 + memset(&mch, 0, sizeof(mch)); 391 + mch.flags = IORESOURCE_MEM; 392 + pcibios_bus_to_resource(host->bus, &mch, &region); 393 + 394 + list_for_each_entry(pnp_res, &dev->resources, list) { 395 + res = &pnp_res->res; 396 + if (res->end < mch.start || res->start > mch.end) 397 + continue; /* no overlap */ 398 + if (res->start == mch.start && res->end == mch.end) 399 + continue; /* exact match */ 400 + 401 + dev_info(&dev->dev, FW_BUG "PNP resource %pR covers only part of %s Intel MCH; extending to %pR\n", 402 + res, pci_name(host), &mch); 403 + res->start = mch.start; 404 + res->end = mch.end; 405 + break; 406 + } 407 + 408 + pci_dev_put(host); 409 + } 410 + #endif 411 + 338 412 /* 339 413 * PnP Quirks 340 414 * Cards or devices that need some tweaking due to incomplete resource info ··· 439 363 {"PNP0c02", quirk_system_pci_resources}, 440 364 #ifdef CONFIG_AMD_NB 441 365 {"PNP0c01", quirk_amd_mmconfig_area}, 366 + #endif 367 + #ifdef CONFIG_X86 368 + {"PNP0c02", quirk_intel_mch}, 442 369 #endif 443 370 {""} 444 371 };
+10 -9
drivers/power/reset/vexpress-poweroff.c
··· 11 11 * Copyright (C) 2012 ARM Limited 12 12 */ 13 13 14 - #include <linux/jiffies.h> 14 + #include <linux/delay.h> 15 15 #include <linux/of.h> 16 16 #include <linux/of_device.h> 17 17 #include <linux/platform_device.h> ··· 23 23 static void vexpress_reset_do(struct device *dev, const char *what) 24 24 { 25 25 int err = -ENOENT; 26 - struct vexpress_config_func *func = 27 - vexpress_config_func_get_by_dev(dev); 26 + struct vexpress_config_func *func = dev_get_drvdata(dev); 28 27 29 28 if (func) { 30 - unsigned long timeout; 31 - 32 29 err = vexpress_config_write(func, 0, 0); 33 - 34 - timeout = jiffies + HZ; 35 - while (time_before(jiffies, timeout)) 36 - cpu_relax(); 30 + if (!err) 31 + mdelay(1000); 37 32 } 38 33 39 34 dev_emerg(dev, "Unable to %s (%d)\n", what, err); ··· 91 96 enum vexpress_reset_func func; 92 97 const struct of_device_id *match = 93 98 of_match_device(vexpress_reset_of_match, &pdev->dev); 99 + struct vexpress_config_func *config_func; 94 100 95 101 if (match) 96 102 func = (enum vexpress_reset_func)match->data; 97 103 else 98 104 func = pdev->id_entry->driver_data; 105 + 106 + config_func = vexpress_config_func_get_by_dev(&pdev->dev); 107 + if (!config_func) 108 + return -EINVAL; 109 + dev_set_drvdata(&pdev->dev, config_func); 99 110 100 111 switch (func) { 101 112 case FUNC_SHUTDOWN:
+20 -56
drivers/regulator/pbias-regulator.c
··· 38 38 struct pbias_regulator_data { 39 39 struct regulator_desc desc; 40 40 void __iomem *pbias_addr; 41 - unsigned int pbias_reg; 42 41 struct regulator_dev *dev; 43 42 struct regmap *syscon; 44 43 const struct pbias_reg_info *info; 45 44 int voltage; 46 45 }; 47 46 48 - static int pbias_regulator_set_voltage(struct regulator_dev *dev, 49 - int min_uV, int max_uV, unsigned *selector) 50 - { 51 - struct pbias_regulator_data *data = rdev_get_drvdata(dev); 52 - const struct pbias_reg_info *info = data->info; 53 - int ret, vmode; 54 - 55 - if (min_uV <= 1800000) 56 - vmode = 0; 57 - else if (min_uV > 1800000) 58 - vmode = info->vmode; 59 - 60 - ret = regmap_update_bits(data->syscon, data->pbias_reg, 61 - info->vmode, vmode); 62 - 63 - return ret; 64 - } 65 - 66 - static int pbias_regulator_get_voltage(struct regulator_dev *rdev) 67 - { 68 - struct pbias_regulator_data *data = rdev_get_drvdata(rdev); 69 - const struct pbias_reg_info *info = data->info; 70 - int value, voltage; 71 - 72 - regmap_read(data->syscon, data->pbias_reg, &value); 73 - value &= info->vmode; 74 - 75 - voltage = value ? 3000000 : 1800000; 76 - 77 - return voltage; 78 - } 47 + static const unsigned int pbias_volt_table[] = { 48 + 1800000, 49 + 3000000 50 + }; 79 51 80 52 static int pbias_regulator_enable(struct regulator_dev *rdev) 81 53 { 82 54 struct pbias_regulator_data *data = rdev_get_drvdata(rdev); 83 55 const struct pbias_reg_info *info = data->info; 84 - int ret; 85 56 86 - ret = regmap_update_bits(data->syscon, data->pbias_reg, 87 - info->enable_mask, info->enable); 88 - 89 - return ret; 90 - } 91 - 92 - static int pbias_regulator_disable(struct regulator_dev *rdev) 93 - { 94 - struct pbias_regulator_data *data = rdev_get_drvdata(rdev); 95 - const struct pbias_reg_info *info = data->info; 96 - int ret; 97 - 98 - ret = regmap_update_bits(data->syscon, data->pbias_reg, 99 - info->enable_mask, 0); 100 - return ret; 57 + return regmap_update_bits(data->syscon, rdev->desc->enable_reg, 58 + info->enable_mask, info->enable); 101 59 } 102 60 103 61 static int pbias_regulator_is_enable(struct regulator_dev *rdev) ··· 64 106 const struct pbias_reg_info *info = data->info; 65 107 int value; 66 108 67 - regmap_read(data->syscon, data->pbias_reg, &value); 109 + regmap_read(data->syscon, rdev->desc->enable_reg, &value); 68 110 69 - return (value & info->enable_mask) == info->enable_mask; 111 + return (value & info->enable_mask) == info->enable; 70 112 } 71 113 72 114 static struct regulator_ops pbias_regulator_voltage_ops = { 73 - .set_voltage = pbias_regulator_set_voltage, 74 - .get_voltage = pbias_regulator_get_voltage, 75 - .enable = pbias_regulator_enable, 76 - .disable = pbias_regulator_disable, 77 - .is_enabled = pbias_regulator_is_enable, 115 + .list_voltage = regulator_list_voltage_table, 116 + .get_voltage_sel = regulator_get_voltage_sel_regmap, 117 + .set_voltage_sel = regulator_set_voltage_sel_regmap, 118 + .enable = pbias_regulator_enable, 119 + .disable = regulator_disable_regmap, 120 + .is_enabled = pbias_regulator_is_enable, 78 121 }; 79 122 80 123 static const struct pbias_reg_info pbias_mmc_omap2430 = { ··· 151 192 if (IS_ERR(syscon)) 152 193 return PTR_ERR(syscon); 153 194 195 + cfg.regmap = syscon; 154 196 cfg.dev = &pdev->dev; 155 197 156 198 for (idx = 0; idx < PBIAS_NUM_REGS && data_idx < count; idx++) { ··· 167 207 if (!res) 168 208 return -EINVAL; 169 209 170 - drvdata[data_idx].pbias_reg = res->start; 171 210 drvdata[data_idx].syscon = syscon; 172 211 drvdata[data_idx].info = info; 173 212 drvdata[data_idx].desc.name = info->name; 174 213 drvdata[data_idx].desc.owner = THIS_MODULE; 175 214 drvdata[data_idx].desc.type = REGULATOR_VOLTAGE; 176 215 drvdata[data_idx].desc.ops = &pbias_regulator_voltage_ops; 216 + drvdata[data_idx].desc.volt_table = pbias_volt_table; 177 217 drvdata[data_idx].desc.n_voltages = 2; 178 218 drvdata[data_idx].desc.enable_time = info->enable_time; 219 + drvdata[data_idx].desc.vsel_reg = res->start; 220 + drvdata[data_idx].desc.vsel_mask = info->vmode; 221 + drvdata[data_idx].desc.enable_reg = res->start; 222 + drvdata[data_idx].desc.enable_mask = info->enable_mask; 179 223 180 224 cfg.init_data = pbias_matches[idx].init_data; 181 225 cfg.driver_data = &drvdata[data_idx];
+4 -4
drivers/scsi/hpsa.c
··· 7463 7463 if (hpsa_simple_mode) 7464 7464 return; 7465 7465 7466 + trans_support = readl(&(h->cfgtable->TransportSupport)); 7467 + if (!(trans_support & PERFORMANT_MODE)) 7468 + return; 7469 + 7466 7470 /* Check for I/O accelerator mode support */ 7467 7471 if (trans_support & CFGTBL_Trans_io_accel1) { 7468 7472 transMethod |= CFGTBL_Trans_io_accel1 | ··· 7483 7479 } 7484 7480 7485 7481 /* TODO, check that this next line h->nreply_queues is correct */ 7486 - trans_support = readl(&(h->cfgtable->TransportSupport)); 7487 - if (!(trans_support & PERFORMANT_MODE)) 7488 - return; 7489 - 7490 7482 h->nreply_queues = h->msix_vector > 0 ? h->msix_vector : 1; 7491 7483 hpsa_get_max_perf_mode_cmds(h); 7492 7484 /* Performant mode ring buffer and supporting data structures */
+12
drivers/scsi/scsi_error.c
··· 189 189 /* 190 190 * Retry after abort failed, escalate to next level. 191 191 */ 192 + scmd->eh_eflags &= ~SCSI_EH_ABORT_SCHEDULED; 192 193 SCSI_LOG_ERROR_RECOVERY(3, 193 194 scmd_printk(KERN_INFO, scmd, 194 195 "scmd %p previous abort failed\n", scmd)); ··· 921 920 ses->prot_op = scmd->prot_op; 922 921 923 922 scmd->prot_op = SCSI_PROT_NORMAL; 923 + scmd->eh_eflags = 0; 924 924 scmd->cmnd = ses->eh_cmnd; 925 925 memset(scmd->cmnd, 0, BLK_MAX_CDB); 926 926 memset(&scmd->sdb, 0, sizeof(scmd->sdb)); 927 927 scmd->request->next_rq = NULL; 928 + scmd->result = 0; 928 929 929 930 if (sense_bytes) { 930 931 scmd->sdb.length = min_t(unsigned, SCSI_SENSE_BUFFERSIZE, ··· 1160 1157 __func__)); 1161 1158 break; 1162 1159 } 1160 + if (status_byte(scmd->result) != CHECK_CONDITION) 1161 + /* 1162 + * don't request sense if there's no check condition 1163 + * status because the error we're processing isn't one 1164 + * that has a sense code (and some devices get 1165 + * confused by sense requests out of the blue) 1166 + */ 1167 + continue; 1168 + 1163 1169 SCSI_LOG_ERROR_RECOVERY(2, scmd_printk(KERN_INFO, scmd, 1164 1170 "%s: requesting sense\n", 1165 1171 current->comm));
+4 -2
drivers/scsi/scsi_lib.c
··· 137 137 * lock such that the kblockd_schedule_work() call happens 138 138 * before blk_cleanup_queue() finishes. 139 139 */ 140 + cmd->result = 0; 140 141 spin_lock_irqsave(q->queue_lock, flags); 141 142 blk_requeue_request(q, cmd->request); 142 143 kblockd_schedule_work(q, &device->requeue_work); ··· 1045 1044 */ 1046 1045 int scsi_init_io(struct scsi_cmnd *cmd, gfp_t gfp_mask) 1047 1046 { 1047 + struct scsi_device *sdev = cmd->device; 1048 1048 struct request *rq = cmd->request; 1049 1049 1050 1050 int error = scsi_init_sgtable(rq, &cmd->sdb, gfp_mask); ··· 1093 1091 scsi_release_buffers(cmd); 1094 1092 cmd->request->special = NULL; 1095 1093 scsi_put_command(cmd); 1096 - put_device(&cmd->device->sdev_gendev); 1094 + put_device(&sdev->sdev_gendev); 1097 1095 return error; 1098 1096 } 1099 1097 EXPORT_SYMBOL(scsi_init_io); ··· 1275 1273 struct scsi_cmnd *cmd = req->special; 1276 1274 scsi_release_buffers(cmd); 1277 1275 scsi_put_command(cmd); 1278 - put_device(&cmd->device->sdev_gendev); 1276 + put_device(&sdev->sdev_gendev); 1279 1277 req->special = NULL; 1280 1278 } 1281 1279 break;
+3
drivers/spi/spi-atmel.c
··· 1115 1115 atmel_spi_next_xfer_pio(master, xfer); 1116 1116 } 1117 1117 1118 + /* interrupts are disabled, so free the lock for schedule */ 1119 + atmel_spi_unlock(as); 1118 1120 ret = wait_for_completion_timeout(&as->xfer_completion, 1119 1121 SPI_DMA_TIMEOUT); 1122 + atmel_spi_lock(as); 1120 1123 if (WARN_ON(ret == 0)) { 1121 1124 dev_err(&spi->dev, 1122 1125 "spi trasfer timeout, err %d\n", ret);
+1
drivers/spi/spi-bfin5xx.c
··· 12 12 #include <linux/module.h> 13 13 #include <linux/delay.h> 14 14 #include <linux/device.h> 15 + #include <linux/gpio.h> 15 16 #include <linux/slab.h> 16 17 #include <linux/io.h> 17 18 #include <linux/ioport.h>
+2 -2
drivers/spi/spi-sh-hspi.c
··· 244 244 return -ENOMEM; 245 245 } 246 246 247 - clk = clk_get(NULL, "shyway_clk"); 247 + clk = clk_get(&pdev->dev, NULL); 248 248 if (IS_ERR(clk)) { 249 - dev_err(&pdev->dev, "shyway_clk is required\n"); 249 + dev_err(&pdev->dev, "couldn't get clock\n"); 250 250 ret = -EINVAL; 251 251 goto error0; 252 252 }
+17 -3
drivers/spi/spi-sirf.c
··· 287 287 sspi->left_rx_word) 288 288 sspi->rx_word(sspi); 289 289 290 - if (spi_stat & (SIRFSOC_SPI_FIFO_EMPTY 291 - | SIRFSOC_SPI_TXFIFO_THD_REACH)) 290 + if (spi_stat & (SIRFSOC_SPI_TXFIFO_EMPTY | 291 + SIRFSOC_SPI_TXFIFO_THD_REACH)) 292 292 while (!((readl(sspi->base + SIRFSOC_SPI_TXFIFO_STATUS) 293 293 & SIRFSOC_SPI_FIFO_FULL)) && 294 294 sspi->left_tx_word) ··· 470 470 writel(regval, sspi->base + SIRFSOC_SPI_CTRL); 471 471 } else { 472 472 int gpio = sspi->chipselect[spi->chip_select]; 473 - gpio_direction_output(gpio, spi->mode & SPI_CS_HIGH ? 0 : 1); 473 + switch (value) { 474 + case BITBANG_CS_ACTIVE: 475 + gpio_direction_output(gpio, 476 + spi->mode & SPI_CS_HIGH ? 1 : 0); 477 + break; 478 + case BITBANG_CS_INACTIVE: 479 + gpio_direction_output(gpio, 480 + spi->mode & SPI_CS_HIGH ? 0 : 1); 481 + break; 482 + } 474 483 } 475 484 } 476 485 ··· 568 559 regval &= ~SIRFSOC_SPI_CMD_MODE; 569 560 sspi->tx_by_cmd = false; 570 561 } 562 + /* 563 + * set spi controller in RISC chipselect mode, we are controlling CS by 564 + * software BITBANG_CS_ACTIVE and BITBANG_CS_INACTIVE. 565 + */ 566 + regval |= SIRFSOC_SPI_CS_IO_MODE; 571 567 writel(regval, sspi->base + SIRFSOC_SPI_CTRL); 572 568 573 569 if (IS_DMA_VALID(t)) {
+3 -6
drivers/staging/comedi/drivers/usbdux.c
··· 493 493 /* pointer to the DA */ 494 494 *datap++ = val & 0xff; 495 495 *datap++ = (val >> 8) & 0xff; 496 - *datap++ = chan; 496 + *datap++ = chan << 6; 497 497 devpriv->ao_readback[chan] = val; 498 498 499 499 s->async->events |= COMEDI_CB_BLOCK; ··· 1042 1042 /* set current channel of the running acquisition to zero */ 1043 1043 s->async->cur_chan = 0; 1044 1044 1045 - for (i = 0; i < cmd->chanlist_len; ++i) { 1046 - unsigned int chan = CR_CHAN(cmd->chanlist[i]); 1047 - 1048 - devpriv->ao_chanlist[i] = chan << 6; 1049 - } 1045 + for (i = 0; i < cmd->chanlist_len; ++i) 1046 + devpriv->ao_chanlist[i] = CR_CHAN(cmd->chanlist[i]); 1050 1047 1051 1048 /* we count in steps of 1ms (125us) */ 1052 1049 /* 125us mode not used yet */
+1 -1
drivers/staging/iio/adc/mxs-lradc.c
··· 1526 1526 struct resource *iores; 1527 1527 int ret = 0, touch_ret; 1528 1528 int i, s; 1529 - unsigned int scale_uv; 1529 + uint64_t scale_uv; 1530 1530 1531 1531 /* Allocate the IIO device. */ 1532 1532 iio = devm_iio_device_alloc(dev, sizeof(*lradc));
+1
drivers/staging/iio/resolver/ad2s1200.c
··· 70 70 vel = (((s16)(st->rx[0])) << 4) | ((st->rx[1] & 0xF0) >> 4); 71 71 vel = (vel << 4) >> 4; 72 72 *val = vel; 73 + break; 73 74 default: 74 75 mutex_unlock(&st->lock); 75 76 return -EINVAL;
+1 -1
drivers/tty/serial/8250/8250_core.c
··· 1520 1520 status = serial8250_rx_chars(up, status); 1521 1521 } 1522 1522 serial8250_modem_status(up); 1523 - if (status & UART_LSR_THRE) 1523 + if (!up->dma && (status & UART_LSR_THRE)) 1524 1524 serial8250_tx_chars(up); 1525 1525 1526 1526 spin_unlock_irqrestore(&port->lock, flags);
+7 -2
drivers/tty/serial/8250/8250_dma.c
··· 20 20 struct uart_8250_port *p = param; 21 21 struct uart_8250_dma *dma = p->dma; 22 22 struct circ_buf *xmit = &p->port.state->xmit; 23 - 24 - dma->tx_running = 0; 23 + unsigned long flags; 25 24 26 25 dma_sync_single_for_cpu(dma->txchan->device->dev, dma->tx_addr, 27 26 UART_XMIT_SIZE, DMA_TO_DEVICE); 27 + 28 + spin_lock_irqsave(&p->port.lock, flags); 29 + 30 + dma->tx_running = 0; 28 31 29 32 xmit->tail += dma->tx_size; 30 33 xmit->tail &= UART_XMIT_SIZE - 1; ··· 38 35 39 36 if (!uart_circ_empty(xmit) && !uart_tx_stopped(&p->port)) 40 37 serial8250_tx_dma(p); 38 + 39 + spin_unlock_irqrestore(&p->port.lock, flags); 41 40 } 42 41 43 42 static void __dma_rx_complete(void *param)
+12 -11
drivers/tty/serial/samsung.c
··· 1446 1446 static void s3c24xx_serial_put_poll_char(struct uart_port *port, 1447 1447 unsigned char c) 1448 1448 { 1449 - unsigned int ufcon = rd_regl(cons_uart, S3C2410_UFCON); 1450 - unsigned int ucon = rd_regl(cons_uart, S3C2410_UCON); 1449 + unsigned int ufcon = rd_regl(port, S3C2410_UFCON); 1450 + unsigned int ucon = rd_regl(port, S3C2410_UCON); 1451 1451 1452 1452 /* not possible to xmit on unconfigured port */ 1453 1453 if (!s3c24xx_port_configured(ucon)) ··· 1455 1455 1456 1456 while (!s3c24xx_serial_console_txrdy(port, ufcon)) 1457 1457 cpu_relax(); 1458 - wr_regb(cons_uart, S3C2410_UTXH, c); 1458 + wr_regb(port, S3C2410_UTXH, c); 1459 1459 } 1460 1460 1461 1461 #endif /* CONFIG_CONSOLE_POLL */ ··· 1463 1463 static void 1464 1464 s3c24xx_serial_console_putchar(struct uart_port *port, int ch) 1465 1465 { 1466 - unsigned int ufcon = rd_regl(cons_uart, S3C2410_UFCON); 1467 - unsigned int ucon = rd_regl(cons_uart, S3C2410_UCON); 1468 - 1469 - /* not possible to xmit on unconfigured port */ 1470 - if (!s3c24xx_port_configured(ucon)) 1471 - return; 1466 + unsigned int ufcon = rd_regl(port, S3C2410_UFCON); 1472 1467 1473 1468 while (!s3c24xx_serial_console_txrdy(port, ufcon)) 1474 - barrier(); 1475 - wr_regb(cons_uart, S3C2410_UTXH, ch); 1469 + cpu_relax(); 1470 + wr_regb(port, S3C2410_UTXH, ch); 1476 1471 } 1477 1472 1478 1473 static void 1479 1474 s3c24xx_serial_console_write(struct console *co, const char *s, 1480 1475 unsigned int count) 1481 1476 { 1477 + unsigned int ucon = rd_regl(cons_uart, S3C2410_UCON); 1478 + 1479 + /* not possible to xmit on unconfigured port */ 1480 + if (!s3c24xx_port_configured(ucon)) 1481 + return; 1482 + 1482 1483 uart_console_write(cons_uart, s, count, s3c24xx_serial_console_putchar); 1483 1484 } 1484 1485
+21 -18
drivers/tty/serial/serial_core.c
··· 137 137 return 1; 138 138 139 139 /* 140 + * Make sure the device is in D0 state. 141 + */ 142 + uart_change_pm(state, UART_PM_STATE_ON); 143 + 144 + /* 140 145 * Initialise and allocate the transmit and temporary 141 146 * buffer. 142 147 */ ··· 830 825 * If we fail to request resources for the 831 826 * new port, try to restore the old settings. 832 827 */ 833 - if (retval && old_type != PORT_UNKNOWN) { 828 + if (retval) { 834 829 uport->iobase = old_iobase; 835 830 uport->type = old_type; 836 831 uport->hub6 = old_hub6; 837 832 uport->iotype = old_iotype; 838 833 uport->regshift = old_shift; 839 834 uport->mapbase = old_mapbase; 840 - retval = uport->ops->request_port(uport); 841 - /* 842 - * If we failed to restore the old settings, 843 - * we fail like this. 844 - */ 845 - if (retval) 846 - uport->type = PORT_UNKNOWN; 847 835 848 - /* 849 - * We failed anyway. 850 - */ 851 - retval = -EBUSY; 836 + if (old_type != PORT_UNKNOWN) { 837 + retval = uport->ops->request_port(uport); 838 + /* 839 + * If we failed to restore the old settings, 840 + * we fail like this. 841 + */ 842 + if (retval) 843 + uport->type = PORT_UNKNOWN; 844 + 845 + /* 846 + * We failed anyway. 847 + */ 848 + retval = -EBUSY; 849 + } 850 + 852 851 /* Added to return the correct error -Ram Gupta */ 853 852 goto exit; 854 853 } ··· 1578 1569 retval = -EAGAIN; 1579 1570 goto err_dec_count; 1580 1571 } 1581 - 1582 - /* 1583 - * Make sure the device is in D0 state. 1584 - */ 1585 - if (port->count == 1) 1586 - uart_change_pm(state, UART_PM_STATE_ON); 1587 1572 1588 1573 /* 1589 1574 * Start up the serial port.
+14 -2
drivers/tty/tty_buffer.c
··· 255 255 if (change || left < size) { 256 256 /* This is the slow path - looking for new buffers to use */ 257 257 if ((n = tty_buffer_alloc(port, size)) != NULL) { 258 + unsigned long iflags; 259 + 258 260 n->flags = flags; 259 261 buf->tail = n; 262 + 263 + spin_lock_irqsave(&buf->flush_lock, iflags); 260 264 b->commit = b->used; 261 - smp_mb(); 262 265 b->next = n; 266 + spin_unlock_irqrestore(&buf->flush_lock, iflags); 267 + 263 268 } else if (change) 264 269 size = 0; 265 270 else ··· 448 443 mutex_lock(&buf->lock); 449 444 450 445 while (1) { 446 + unsigned long flags; 451 447 struct tty_buffer *head = buf->head; 452 448 int count; 453 449 ··· 456 450 if (atomic_read(&buf->priority)) 457 451 break; 458 452 453 + spin_lock_irqsave(&buf->flush_lock, flags); 459 454 count = head->commit - head->read; 460 455 if (!count) { 461 - if (head->next == NULL) 456 + if (head->next == NULL) { 457 + spin_unlock_irqrestore(&buf->flush_lock, flags); 462 458 break; 459 + } 463 460 buf->head = head->next; 461 + spin_unlock_irqrestore(&buf->flush_lock, flags); 464 462 tty_buffer_free(port, head); 465 463 continue; 466 464 } 465 + spin_unlock_irqrestore(&buf->flush_lock, flags); 467 466 468 467 count = receive_buf(tty, head, count); 469 468 if (!count) ··· 523 512 struct tty_bufhead *buf = &port->buf; 524 513 525 514 mutex_init(&buf->lock); 515 + spin_lock_init(&buf->flush_lock); 526 516 tty_buffer_reset(&buf->sentinel, 0); 527 517 buf->head = &buf->sentinel; 528 518 buf->tail = &buf->sentinel;
+34 -3
drivers/usb/chipidea/core.c
··· 277 277 } 278 278 279 279 /** 280 + * ci_usb_phy_init: initialize phy according to different phy type 281 + * @ci: the controller 282 + * 283 + * This function returns an error code if usb_phy_init has failed 284 + */ 285 + static int ci_usb_phy_init(struct ci_hdrc *ci) 286 + { 287 + int ret; 288 + 289 + switch (ci->platdata->phy_mode) { 290 + case USBPHY_INTERFACE_MODE_UTMI: 291 + case USBPHY_INTERFACE_MODE_UTMIW: 292 + case USBPHY_INTERFACE_MODE_HSIC: 293 + ret = usb_phy_init(ci->transceiver); 294 + if (ret) 295 + return ret; 296 + hw_phymode_configure(ci); 297 + break; 298 + case USBPHY_INTERFACE_MODE_ULPI: 299 + case USBPHY_INTERFACE_MODE_SERIAL: 300 + hw_phymode_configure(ci); 301 + ret = usb_phy_init(ci->transceiver); 302 + if (ret) 303 + return ret; 304 + break; 305 + default: 306 + ret = usb_phy_init(ci->transceiver); 307 + } 308 + 309 + return ret; 310 + } 311 + 312 + /** 280 313 * hw_device_reset: resets chip (execute without interruption) 281 314 * @ci: the controller 282 315 * ··· 576 543 return -ENODEV; 577 544 } 578 545 579 - hw_phymode_configure(ci); 580 - 581 546 if (ci->platdata->phy) 582 547 ci->transceiver = ci->platdata->phy; 583 548 else ··· 595 564 return -EPROBE_DEFER; 596 565 } 597 566 598 - ret = usb_phy_init(ci->transceiver); 567 + ret = ci_usb_phy_init(ci); 599 568 if (ret) { 600 569 dev_err(dev, "unable to init phy: %d\n", ret); 601 570 return ret;
+1 -1
drivers/usb/dwc3/core.c
··· 821 821 822 822 spin_lock_irqsave(&dwc->lock, flags); 823 823 824 + dwc3_event_buffers_setup(dwc); 824 825 switch (dwc->dr_mode) { 825 826 case USB_DR_MODE_PERIPHERAL: 826 827 case USB_DR_MODE_OTG: ··· 829 828 /* FALLTHROUGH */ 830 829 case USB_DR_MODE_HOST: 831 830 default: 832 - dwc3_event_buffers_setup(dwc); 833 831 break; 834 832 } 835 833
+4 -8
drivers/usb/dwc3/gadget.c
··· 187 187 * improve this algorithm so that we better use the internal 188 188 * FIFO space 189 189 */ 190 - for (num = 0; num < DWC3_ENDPOINTS_NUM; num++) { 191 - struct dwc3_ep *dep = dwc->eps[num]; 192 - int fifo_number = dep->number >> 1; 190 + for (num = 0; num < dwc->num_in_eps; num++) { 191 + /* bit0 indicates direction; 1 means IN ep */ 192 + struct dwc3_ep *dep = dwc->eps[(num << 1) | 1]; 193 193 int mult = 1; 194 194 int tmp; 195 - 196 - if (!(dep->number & 1)) 197 - continue; 198 195 199 196 if (!(dep->flags & DWC3_EP_ENABLED)) 200 197 continue; ··· 221 224 dev_vdbg(dwc->dev, "%s: Fifo Addr %04x Size %d\n", 222 225 dep->name, last_fifo_depth, fifo_size & 0xffff); 223 226 224 - dwc3_writel(dwc->regs, DWC3_GTXFIFOSIZ(fifo_number), 225 - fifo_size); 227 + dwc3_writel(dwc->regs, DWC3_GTXFIFOSIZ(num), fifo_size); 226 228 227 229 last_fifo_depth += (fifo_size & 0xffff); 228 230 }
+7
drivers/usb/gadget/f_fs.c
··· 745 745 */ 746 746 struct usb_gadget *gadget = epfile->ffs->gadget; 747 747 748 + spin_lock_irq(&epfile->ffs->eps_lock); 749 + /* In the meantime, endpoint got disabled or changed. */ 750 + if (epfile->ep != ep) { 751 + spin_unlock_irq(&epfile->ffs->eps_lock); 752 + return -ESHUTDOWN; 753 + } 748 754 /* 749 755 * Controller may require buffer size to be aligned to 750 756 * maxpacketsize of an out endpoint. ··· 758 752 data_len = io_data->read ? 759 753 usb_ep_align_maybe(gadget, ep->ep, io_data->len) : 760 754 io_data->len; 755 + spin_unlock_irq(&epfile->ffs->eps_lock); 761 756 762 757 data = kmalloc(data_len, GFP_KERNEL); 763 758 if (unlikely(!data))
+1 -1
drivers/usb/gadget/f_rndis.c
··· 377 377 if (skb2) 378 378 rndis_add_hdr(skb2); 379 379 380 - dev_kfree_skb_any(skb); 380 + dev_kfree_skb(skb); 381 381 return skb2; 382 382 } 383 383
+5 -1
drivers/usb/gadget/fsl_udc_core.c
··· 1219 1219 struct fsl_udc *udc; 1220 1220 1221 1221 udc = container_of(gadget, struct fsl_udc, gadget); 1222 + 1223 + if (!udc->vbus_active) 1224 + return -EOPNOTSUPP; 1225 + 1222 1226 udc->softconnect = (is_on != 0); 1223 1227 if (can_pullup(udc)) 1224 1228 fsl_writel((fsl_readl(&dr_regs->usbcmd) | USB_CMD_RUN_STOP), ··· 2536 2532 if (!udc_controller) 2537 2533 return -ENODEV; 2538 2534 2539 - usb_del_gadget_udc(&udc_controller->gadget); 2540 2535 udc_controller->done = &done; 2536 + usb_del_gadget_udc(&udc_controller->gadget); 2541 2537 2542 2538 fsl_udc_clk_release(); 2543 2539
+1
drivers/usb/gadget/inode.c
··· 2043 2043 return -ESRCH; 2044 2044 2045 2045 /* fake probe to determine $CHIP */ 2046 + CHIP = NULL; 2046 2047 usb_gadget_probe_driver(&probe_driver); 2047 2048 if (!CHIP) 2048 2049 return -ENODEV;
+1
drivers/usb/gadget/rndis.c
··· 35 35 #include <asm/byteorder.h> 36 36 #include <asm/unaligned.h> 37 37 38 + #include "u_rndis.h" 38 39 39 40 #undef VERBOSE_DEBUG 40 41
+35 -66
drivers/usb/gadget/u_ether.c
··· 48 48 49 49 #define UETH__VERSION "29-May-2008" 50 50 51 - #define GETHER_NAPI_WEIGHT 32 52 - 53 51 struct eth_dev { 54 52 /* lock is held while accessing port_usb 55 53 */ ··· 72 74 struct sk_buff_head *list); 73 75 74 76 struct work_struct work; 75 - struct napi_struct rx_napi; 76 77 77 78 unsigned long todo; 78 79 #define WORK_RX_MEMORY 0 ··· 253 256 DBG(dev, "rx submit --> %d\n", retval); 254 257 if (skb) 255 258 dev_kfree_skb_any(skb); 259 + spin_lock_irqsave(&dev->req_lock, flags); 260 + list_add(&req->list, &dev->rx_reqs); 261 + spin_unlock_irqrestore(&dev->req_lock, flags); 256 262 } 257 263 return retval; 258 264 } 259 265 260 266 static void rx_complete(struct usb_ep *ep, struct usb_request *req) 261 267 { 262 - struct sk_buff *skb = req->context; 268 + struct sk_buff *skb = req->context, *skb2; 263 269 struct eth_dev *dev = ep->driver_data; 264 270 int status = req->status; 265 - bool rx_queue = 0; 266 271 267 272 switch (status) { 268 273 ··· 288 289 } else { 289 290 skb_queue_tail(&dev->rx_frames, skb); 290 291 } 291 - if (!status) 292 - rx_queue = 1; 292 + skb = NULL; 293 + 294 + skb2 = skb_dequeue(&dev->rx_frames); 295 + while (skb2) { 296 + if (status < 0 297 + || ETH_HLEN > skb2->len 298 + || skb2->len > VLAN_ETH_FRAME_LEN) { 299 + dev->net->stats.rx_errors++; 300 + dev->net->stats.rx_length_errors++; 301 + DBG(dev, "rx length %d\n", skb2->len); 302 + dev_kfree_skb_any(skb2); 303 + goto next_frame; 304 + } 305 + skb2->protocol = eth_type_trans(skb2, dev->net); 306 + dev->net->stats.rx_packets++; 307 + dev->net->stats.rx_bytes += skb2->len; 308 + 309 + /* no buffer copies needed, unless hardware can't 310 + * use skb buffers. 311 + */ 312 + status = netif_rx(skb2); 313 + next_frame: 314 + skb2 = skb_dequeue(&dev->rx_frames); 315 + } 293 316 break; 294 317 295 318 /* software-driven interface shutdown */ ··· 334 313 /* FALLTHROUGH */ 335 314 336 315 default: 337 - rx_queue = 1; 338 - dev_kfree_skb_any(skb); 339 316 dev->net->stats.rx_errors++; 340 317 DBG(dev, "rx status %d\n", status); 341 318 break; 342 319 } 343 320 321 + if (skb) 322 + dev_kfree_skb_any(skb); 323 + if (!netif_running(dev->net)) { 344 324 clean: 345 325 spin_lock(&dev->req_lock); 346 326 list_add(&req->list, &dev->rx_reqs); 347 327 spin_unlock(&dev->req_lock); 348 - 349 - if (rx_queue && likely(napi_schedule_prep(&dev->rx_napi))) 350 - __napi_schedule(&dev->rx_napi); 328 + req = NULL; 329 + } 330 + if (req) 331 + rx_submit(dev, req, GFP_ATOMIC); 351 332 } 352 333 353 334 static int prealloc(struct list_head *list, struct usb_ep *ep, unsigned n) ··· 414 391 { 415 392 struct usb_request *req; 416 393 unsigned long flags; 417 - int rx_counts = 0; 418 394 419 395 /* fill unused rxq slots with some skb */ 420 396 spin_lock_irqsave(&dev->req_lock, flags); 421 397 while (!list_empty(&dev->rx_reqs)) { 422 - 423 - if (++rx_counts > qlen(dev->gadget, dev->qmult)) 424 - break; 425 - 426 398 req = container_of(dev->rx_reqs.next, 427 399 struct usb_request, list); 428 400 list_del_init(&req->list); 429 401 spin_unlock_irqrestore(&dev->req_lock, flags); 430 402 431 403 if (rx_submit(dev, req, gfp_flags) < 0) { 432 - spin_lock_irqsave(&dev->req_lock, flags); 433 - list_add(&req->list, &dev->rx_reqs); 434 - spin_unlock_irqrestore(&dev->req_lock, flags); 435 404 defer_kevent(dev, WORK_RX_MEMORY); 436 405 return; 437 406 } ··· 431 416 spin_lock_irqsave(&dev->req_lock, flags); 432 417 } 433 418 spin_unlock_irqrestore(&dev->req_lock, flags); 434 - } 435 - 436 - static int gether_poll(struct napi_struct *napi, int budget) 437 - { 438 - struct eth_dev *dev = container_of(napi, struct eth_dev, rx_napi); 439 - struct sk_buff *skb; 440 - unsigned int work_done = 0; 441 - int status = 0; 442 - 443 - while ((skb = skb_dequeue(&dev->rx_frames))) { 444 - if (status < 0 445 - || ETH_HLEN > skb->len 446 - || skb->len > VLAN_ETH_FRAME_LEN) { 447 - dev->net->stats.rx_errors++; 448 - dev->net->stats.rx_length_errors++; 449 - DBG(dev, "rx length %d\n", skb->len); 450 - dev_kfree_skb_any(skb); 451 - continue; 452 - } 453 - skb->protocol = eth_type_trans(skb, dev->net); 454 - dev->net->stats.rx_packets++; 455 - dev->net->stats.rx_bytes += skb->len; 456 - 457 - status = netif_rx_ni(skb); 458 - } 459 - 460 - if (netif_running(dev->net)) { 461 - rx_fill(dev, GFP_KERNEL); 462 - work_done++; 463 - } 464 - 465 - if (work_done < budget) 466 - napi_complete(&dev->rx_napi); 467 - 468 - return work_done; 469 419 } 470 420 471 421 static void eth_work(struct work_struct *work) ··· 625 645 /* and open the tx floodgates */ 626 646 atomic_set(&dev->tx_qlen, 0); 627 647 netif_wake_queue(dev->net); 628 - napi_enable(&dev->rx_napi); 629 648 } 630 649 631 650 static int eth_open(struct net_device *net) ··· 651 672 unsigned long flags; 652 673 653 674 VDBG(dev, "%s\n", __func__); 654 - napi_disable(&dev->rx_napi); 655 675 netif_stop_queue(net); 656 676 657 677 DBG(dev, "stop stats: rx/tx %ld/%ld, errs %ld/%ld\n", ··· 768 790 return ERR_PTR(-ENOMEM); 769 791 770 792 dev = netdev_priv(net); 771 - netif_napi_add(net, &dev->rx_napi, gether_poll, GETHER_NAPI_WEIGHT); 772 793 spin_lock_init(&dev->lock); 773 794 spin_lock_init(&dev->req_lock); 774 795 INIT_WORK(&dev->work, eth_work); ··· 830 853 return ERR_PTR(-ENOMEM); 831 854 832 855 dev = netdev_priv(net); 833 - netif_napi_add(net, &dev->rx_napi, gether_poll, GETHER_NAPI_WEIGHT); 834 856 spin_lock_init(&dev->lock); 835 857 spin_lock_init(&dev->req_lock); 836 858 INIT_WORK(&dev->work, eth_work); ··· 1113 1137 { 1114 1138 struct eth_dev *dev = link->ioport; 1115 1139 struct usb_request *req; 1116 - struct sk_buff *skb; 1117 1140 1118 1141 WARN_ON(!dev); 1119 1142 if (!dev) ··· 1139 1164 spin_lock(&dev->req_lock); 1140 1165 } 1141 1166 spin_unlock(&dev->req_lock); 1142 - 1143 - spin_lock(&dev->rx_frames.lock); 1144 - while ((skb = __skb_dequeue(&dev->rx_frames))) 1145 - dev_kfree_skb_any(skb); 1146 - spin_unlock(&dev->rx_frames.lock); 1147 - 1148 1167 link->in_ep->driver_data = NULL; 1149 1168 link->in_ep->desc = NULL; 1150 1169
+1 -1
drivers/usb/gadget/zero.c
··· 300 300 ss_opts->isoc_interval = gzero_options.isoc_interval; 301 301 ss_opts->isoc_maxpacket = gzero_options.isoc_maxpacket; 302 302 ss_opts->isoc_mult = gzero_options.isoc_mult; 303 - ss_opts->isoc_maxburst = gzero_options.isoc_maxpacket; 303 + ss_opts->isoc_maxburst = gzero_options.isoc_maxburst; 304 304 ss_opts->bulk_buflen = gzero_options.bulk_buflen; 305 305 306 306 func_ss = usb_get_function(func_inst_ss);
+3 -3
drivers/usb/host/xhci-pci.c
··· 134 134 */ 135 135 if (pdev->subsystem_vendor == PCI_VENDOR_ID_HP) 136 136 xhci->quirks |= XHCI_SPURIOUS_WAKEUP; 137 + 138 + xhci->quirks |= XHCI_SPURIOUS_REBOOT; 137 139 } 138 140 if (pdev->vendor == PCI_VENDOR_ID_ETRON && 139 141 pdev->device == PCI_DEVICE_ID_ASROCK_P67) { ··· 145 143 xhci->quirks |= XHCI_TRUST_TX_LENGTH; 146 144 } 147 145 if (pdev->vendor == PCI_VENDOR_ID_RENESAS && 148 - pdev->device == 0x0015 && 149 - pdev->subsystem_vendor == PCI_VENDOR_ID_SAMSUNG && 150 - pdev->subsystem_device == 0xc0cd) 146 + pdev->device == 0x0015) 151 147 xhci->quirks |= XHCI_RESET_ON_RESUME; 152 148 if (pdev->vendor == PCI_VENDOR_ID_VIA) 153 149 xhci->quirks |= XHCI_RESET_ON_RESUME;
+31 -36
drivers/usb/host/xhci-ring.c
··· 550 550 struct xhci_ring *ep_ring; 551 551 struct xhci_generic_trb *trb; 552 552 dma_addr_t addr; 553 + u64 hw_dequeue; 553 554 554 555 ep_ring = xhci_triad_to_transfer_ring(xhci, slot_id, 555 556 ep_index, stream_id); ··· 558 557 xhci_warn(xhci, "WARN can't find new dequeue state " 559 558 "for invalid stream ID %u.\n", 560 559 stream_id); 561 - return; 562 - } 563 - state->new_cycle_state = 0; 564 - xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb, 565 - "Finding segment containing stopped TRB."); 566 - state->new_deq_seg = find_trb_seg(cur_td->start_seg, 567 - dev->eps[ep_index].stopped_trb, 568 - &state->new_cycle_state); 569 - if (!state->new_deq_seg) { 570 - WARN_ON(1); 571 560 return; 572 561 } 573 562 ··· 568 577 if (ep->ep_state & EP_HAS_STREAMS) { 569 578 struct xhci_stream_ctx *ctx = 570 579 &ep->stream_info->stream_ctx_array[stream_id]; 571 - state->new_cycle_state = 0x1 & le64_to_cpu(ctx->stream_ring); 580 + hw_dequeue = le64_to_cpu(ctx->stream_ring); 572 581 } else { 573 582 struct xhci_ep_ctx *ep_ctx 574 583 = xhci_get_ep_ctx(xhci, dev->out_ctx, ep_index); 575 - state->new_cycle_state = 0x1 & le64_to_cpu(ep_ctx->deq); 584 + hw_dequeue = le64_to_cpu(ep_ctx->deq); 576 585 } 586 + 587 + /* Find virtual address and segment of hardware dequeue pointer */ 588 + state->new_deq_seg = ep_ring->deq_seg; 589 + state->new_deq_ptr = ep_ring->dequeue; 590 + while (xhci_trb_virt_to_dma(state->new_deq_seg, state->new_deq_ptr) 591 + != (dma_addr_t)(hw_dequeue & ~0xf)) { 592 + next_trb(xhci, ep_ring, &state->new_deq_seg, 593 + &state->new_deq_ptr); 594 + if (state->new_deq_ptr == ep_ring->dequeue) { 595 + WARN_ON(1); 596 + return; 597 + } 598 + } 599 + /* 600 + * Find cycle state for last_trb, starting at old cycle state of 601 + * hw_dequeue. If there is only one segment ring, find_trb_seg() will 602 + * return immediately and cannot toggle the cycle state if this search 603 + * wraps around, so add one more toggle manually in that case. 604 + */ 605 + state->new_cycle_state = hw_dequeue & 0x1; 606 + if (ep_ring->first_seg == ep_ring->first_seg->next && 607 + cur_td->last_trb < state->new_deq_ptr) 608 + state->new_cycle_state ^= 0x1; 577 609 578 610 state->new_deq_ptr = cur_td->last_trb; 579 611 xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb, 580 612 "Finding segment containing last TRB in TD."); 581 613 state->new_deq_seg = find_trb_seg(state->new_deq_seg, 582 - state->new_deq_ptr, 583 - &state->new_cycle_state); 614 + state->new_deq_ptr, &state->new_cycle_state); 584 615 if (!state->new_deq_seg) { 585 616 WARN_ON(1); 586 617 return; 587 618 } 588 619 620 + /* Increment to find next TRB after last_trb. Cycle if appropriate. */ 589 621 trb = &state->new_deq_ptr->generic; 590 622 if (TRB_TYPE_LINK_LE32(trb->field[3]) && 591 623 (trb->field[3] & cpu_to_le32(LINK_TOGGLE))) 592 624 state->new_cycle_state ^= 0x1; 593 625 next_trb(xhci, ep_ring, &state->new_deq_seg, &state->new_deq_ptr); 594 626 595 - /* 596 - * If there is only one segment in a ring, find_trb_seg()'s while loop 597 - * will not run, and it will return before it has a chance to see if it 598 - * needs to toggle the cycle bit. It can't tell if the stalled transfer 599 - * ended just before the link TRB on a one-segment ring, or if the TD 600 - * wrapped around the top of the ring, because it doesn't have the TD in 601 - * question. Look for the one-segment case where stalled TRB's address 602 - * is greater than the new dequeue pointer address. 603 - */ 604 - if (ep_ring->first_seg == ep_ring->first_seg->next && 605 - state->new_deq_ptr < dev->eps[ep_index].stopped_trb) 606 - state->new_cycle_state ^= 0x1; 627 + /* Don't update the ring cycle state for the producer (us). */ 607 628 xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb, 608 629 "Cycle state = 0x%x", state->new_cycle_state); 609 630 610 - /* Don't update the ring cycle state for the producer (us). */ 611 631 xhci_dbg_trace(xhci, trace_xhci_dbg_cancel_urb, 612 632 "New dequeue segment = %p (virtual)", 613 633 state->new_deq_seg); ··· 801 799 if (list_empty(&ep->cancelled_td_list)) { 802 800 xhci_stop_watchdog_timer_in_irq(xhci, ep); 803 801 ep->stopped_td = NULL; 804 - ep->stopped_trb = NULL; 805 802 ring_doorbell_for_active_rings(xhci, slot_id, ep_index); 806 803 return; 807 804 } ··· 868 867 ring_doorbell_for_active_rings(xhci, slot_id, ep_index); 869 868 } 870 869 871 - /* Clear stopped_td and stopped_trb if endpoint is not halted */ 872 - if (!(ep->ep_state & EP_HALTED)) { 870 + /* Clear stopped_td if endpoint is not halted */ 871 + if (!(ep->ep_state & EP_HALTED)) 873 872 ep->stopped_td = NULL; 874 - ep->stopped_trb = NULL; 875 - } 876 873 877 874 /* 878 875 * Drop the lock and complete the URBs in the cancelled TD list. ··· 1940 1941 struct xhci_virt_ep *ep = &xhci->devs[slot_id]->eps[ep_index]; 1941 1942 ep->ep_state |= EP_HALTED; 1942 1943 ep->stopped_td = td; 1943 - ep->stopped_trb = event_trb; 1944 1944 ep->stopped_stream = stream_id; 1945 1945 1946 1946 xhci_queue_reset_ep(xhci, slot_id, ep_index); 1947 1947 xhci_cleanup_stalled_ring(xhci, td->urb->dev, ep_index); 1948 1948 1949 1949 ep->stopped_td = NULL; 1950 - ep->stopped_trb = NULL; 1951 1950 ep->stopped_stream = 0; 1952 1951 1953 1952 xhci_ring_cmd_db(xhci); ··· 2027 2030 * the ring dequeue pointer or take this TD off any lists yet. 2028 2031 */ 2029 2032 ep->stopped_td = td; 2030 - ep->stopped_trb = event_trb; 2031 2033 return 0; 2032 2034 } else { 2033 2035 if (trb_comp_code == COMP_STALL) { ··· 2038 2042 * USB class driver clear the stall later. 2039 2043 */ 2040 2044 ep->stopped_td = td; 2041 - ep->stopped_trb = event_trb; 2042 2045 ep->stopped_stream = ep_ring->stream_id; 2043 2046 } else if (xhci_requires_manual_halt_cleanup(xhci, 2044 2047 ep_ctx, trb_comp_code)) {
+3 -4
drivers/usb/host/xhci.c
··· 408 408 409 409 #else 410 410 411 - static int xhci_try_enable_msi(struct usb_hcd *hcd) 411 + static inline int xhci_try_enable_msi(struct usb_hcd *hcd) 412 412 { 413 413 return 0; 414 414 } 415 415 416 - static void xhci_cleanup_msix(struct xhci_hcd *xhci) 416 + static inline void xhci_cleanup_msix(struct xhci_hcd *xhci) 417 417 { 418 418 } 419 419 420 - static void xhci_msix_sync_irqs(struct xhci_hcd *xhci) 420 + static inline void xhci_msix_sync_irqs(struct xhci_hcd *xhci) 421 421 { 422 422 } 423 423 ··· 2954 2954 xhci_ring_cmd_db(xhci); 2955 2955 } 2956 2956 virt_ep->stopped_td = NULL; 2957 - virt_ep->stopped_trb = NULL; 2958 2957 virt_ep->stopped_stream = 0; 2959 2958 spin_unlock_irqrestore(&xhci->lock, flags); 2960 2959
-2
drivers/usb/host/xhci.h
··· 865 865 #define EP_GETTING_NO_STREAMS (1 << 5) 866 866 /* ---- Related to URB cancellation ---- */ 867 867 struct list_head cancelled_td_list; 868 - /* The TRB that was last reported in a stopped endpoint ring */ 869 - union xhci_trb *stopped_trb; 870 868 struct xhci_td *stopped_td; 871 869 unsigned int stopped_stream; 872 870 /* Watchdog timer for stop endpoint command to cancel URBs */
+2 -3
drivers/usb/musb/musb_dsps.c
··· 470 470 struct dsps_glue *glue = dev_get_drvdata(dev->parent); 471 471 472 472 del_timer_sync(&glue->timer); 473 - 474 473 usb_phy_shutdown(musb->xceiv); 474 + debugfs_remove_recursive(glue->dbgfs_root); 475 + 475 476 return 0; 476 477 } 477 478 ··· 708 707 /* disable usbss clocks */ 709 708 pm_runtime_put(&pdev->dev); 710 709 pm_runtime_disable(&pdev->dev); 711 - 712 - debugfs_remove_recursive(glue->dbgfs_root); 713 710 714 711 return 0; 715 712 }
+8
drivers/usb/musb/omap2430.c
··· 316 316 { 317 317 struct omap2430_glue *glue = container_of(mailbox_work, 318 318 struct omap2430_glue, omap_musb_mailbox_work); 319 + struct musb *musb = glue_to_musb(glue); 320 + struct device *dev = musb->controller; 321 + 322 + pm_runtime_get_sync(dev); 319 323 omap_musb_set_mailbox(glue); 324 + pm_runtime_mark_last_busy(dev); 325 + pm_runtime_put_autosuspend(dev); 320 326 } 321 327 322 328 static irqreturn_t omap2430_musb_interrupt(int irq, void *__hci) ··· 422 416 omap_musb_set_mailbox(glue); 423 417 424 418 phy_init(musb->phy); 419 + phy_power_on(musb->phy); 425 420 426 421 pm_runtime_put_noidle(musb->controller); 427 422 return 0; ··· 485 478 del_timer_sync(&musb_idle_timer); 486 479 487 480 omap2430_low_level_exit(musb); 481 + phy_power_off(musb->phy); 488 482 phy_exit(musb->phy); 489 483 490 484 return 0;
+9
drivers/usb/phy/phy-am335x-control.c
··· 3 3 #include <linux/err.h> 4 4 #include <linux/of.h> 5 5 #include <linux/io.h> 6 + #include <linux/delay.h> 6 7 #include "am35x-phy-control.h" 7 8 8 9 struct am335x_control_usb { ··· 87 86 } 88 87 89 88 writel(val, usb_ctrl->phy_reg + reg); 89 + 90 + /* 91 + * Give the PHY ~1ms to complete the power up operation. 92 + * Tests have shown unstable behaviour if other USB PHY related 93 + * registers are written too shortly after such a transition. 94 + */ 95 + if (on) 96 + mdelay(1); 90 97 } 91 98 92 99 static const struct phy_control ctrl_am335x = {
+3
drivers/usb/phy/phy.c
··· 132 132 if (IS_ERR(phy) || !try_module_get(phy->dev->driver->owner)) { 133 133 pr_debug("PHY: unable to find transceiver of type %s\n", 134 134 usb_phy_type_string(type)); 135 + if (!IS_ERR(phy)) 136 + phy = ERR_PTR(-ENODEV); 137 + 135 138 goto err0; 136 139 } 137 140
+33 -17
drivers/usb/serial/io_ti.c
··· 28 28 #include <linux/spinlock.h> 29 29 #include <linux/mutex.h> 30 30 #include <linux/serial.h> 31 + #include <linux/swab.h> 31 32 #include <linux/kfifo.h> 32 33 #include <linux/ioctl.h> 33 34 #include <linux/firmware.h> ··· 281 280 { 282 281 int status = 0; 283 282 __u8 read_length; 284 - __be16 be_start_address; 283 + u16 be_start_address; 285 284 286 285 dev_dbg(&dev->dev, "%s - @ %x for %d\n", __func__, start_address, length); 287 286 ··· 297 296 if (read_length > 1) { 298 297 dev_dbg(&dev->dev, "%s - @ %x for %d\n", __func__, start_address, read_length); 299 298 } 300 - be_start_address = cpu_to_be16(start_address); 299 + /* 300 + * NOTE: Must use swab as wIndex is sent in little-endian 301 + * byte order regardless of host byte order. 302 + */ 303 + be_start_address = swab16((u16)start_address); 301 304 status = ti_vread_sync(dev, UMPC_MEMORY_READ, 302 305 (__u16)address_type, 303 - (__force __u16)be_start_address, 306 + be_start_address, 304 307 buffer, read_length); 305 308 306 309 if (status) { ··· 399 394 struct device *dev = &serial->serial->dev->dev; 400 395 int status = 0; 401 396 int write_length; 402 - __be16 be_start_address; 397 + u16 be_start_address; 403 398 404 399 /* We can only send a maximum of 1 aligned byte page at a time */ 405 400 ··· 414 409 __func__, start_address, write_length); 415 410 usb_serial_debug_data(dev, __func__, write_length, buffer); 416 411 417 - /* Write first page */ 418 - be_start_address = cpu_to_be16(start_address); 412 + /* 413 + * Write first page. 414 + * 415 + * NOTE: Must use swab as wIndex is sent in little-endian byte order 416 + * regardless of host byte order. 417 + */ 418 + be_start_address = swab16((u16)start_address); 419 419 status = ti_vsend_sync(serial->serial->dev, 420 420 UMPC_MEMORY_WRITE, (__u16)address_type, 421 - (__force __u16)be_start_address, 421 + be_start_address, 422 422 buffer, write_length); 423 423 if (status) { 424 424 dev_dbg(dev, "%s - ERROR %d\n", __func__, status); ··· 446 436 __func__, start_address, write_length); 447 437 usb_serial_debug_data(dev, __func__, write_length, buffer); 448 438 449 - /* Write next page */ 450 - be_start_address = cpu_to_be16(start_address); 439 + /* 440 + * Write next page. 441 + * 442 + * NOTE: Must use swab as wIndex is sent in little-endian byte 443 + * order regardless of host byte order. 444 + */ 445 + be_start_address = swab16((u16)start_address); 451 446 status = ti_vsend_sync(serial->serial->dev, UMPC_MEMORY_WRITE, 452 447 (__u16)address_type, 453 - (__force __u16)be_start_address, 448 + be_start_address, 454 449 buffer, write_length); 455 450 if (status) { 456 451 dev_err(dev, "%s - ERROR %d\n", __func__, status); ··· 600 585 if (rom_desc->Type == desc_type) 601 586 return start_address; 602 587 603 - start_address = start_address + sizeof(struct ti_i2c_desc) 604 - + rom_desc->Size; 588 + start_address = start_address + sizeof(struct ti_i2c_desc) + 589 + le16_to_cpu(rom_desc->Size); 605 590 606 591 } while ((start_address < TI_MAX_I2C_SIZE) && rom_desc->Type); 607 592 ··· 614 599 __u16 i; 615 600 __u8 cs = 0; 616 601 617 - for (i = 0; i < rom_desc->Size; i++) 602 + for (i = 0; i < le16_to_cpu(rom_desc->Size); i++) 618 603 cs = (__u8)(cs + buffer[i]); 619 604 620 605 if (cs != rom_desc->CheckSum) { ··· 665 650 break; 666 651 667 652 if ((start_address + sizeof(struct ti_i2c_desc) + 668 - rom_desc->Size) > TI_MAX_I2C_SIZE) { 653 + le16_to_cpu(rom_desc->Size)) > TI_MAX_I2C_SIZE) { 669 654 status = -ENODEV; 670 655 dev_dbg(dev, "%s - structure too big, erroring out.\n", __func__); 671 656 break; ··· 680 665 /* Read the descriptor data */ 681 666 status = read_rom(serial, start_address + 682 667 sizeof(struct ti_i2c_desc), 683 - rom_desc->Size, buffer); 668 + le16_to_cpu(rom_desc->Size), 669 + buffer); 684 670 if (status) 685 671 break; 686 672 ··· 690 674 break; 691 675 } 692 676 start_address = start_address + sizeof(struct ti_i2c_desc) + 693 - rom_desc->Size; 677 + le16_to_cpu(rom_desc->Size); 694 678 695 679 } while ((rom_desc->Type != I2C_DESC_TYPE_ION) && 696 680 (start_address < TI_MAX_I2C_SIZE)); ··· 728 712 729 713 /* Read the descriptor data */ 730 714 status = read_rom(serial, start_address+sizeof(struct ti_i2c_desc), 731 - rom_desc->Size, buffer); 715 + le16_to_cpu(rom_desc->Size), buffer); 732 716 if (status) 733 717 goto exit; 734 718
+77 -4
drivers/usb/serial/option.c
··· 234 234 #define QUALCOMM_VENDOR_ID 0x05C6 235 235 236 236 #define CMOTECH_VENDOR_ID 0x16d8 237 - #define CMOTECH_PRODUCT_6008 0x6008 238 - #define CMOTECH_PRODUCT_6280 0x6280 237 + #define CMOTECH_PRODUCT_6001 0x6001 238 + #define CMOTECH_PRODUCT_CMU_300 0x6002 239 + #define CMOTECH_PRODUCT_6003 0x6003 240 + #define CMOTECH_PRODUCT_6004 0x6004 241 + #define CMOTECH_PRODUCT_6005 0x6005 242 + #define CMOTECH_PRODUCT_CGU_628A 0x6006 243 + #define CMOTECH_PRODUCT_CHE_628S 0x6007 244 + #define CMOTECH_PRODUCT_CMU_301 0x6008 245 + #define CMOTECH_PRODUCT_CHU_628 0x6280 246 + #define CMOTECH_PRODUCT_CHU_628S 0x6281 247 + #define CMOTECH_PRODUCT_CDU_680 0x6803 248 + #define CMOTECH_PRODUCT_CDU_685A 0x6804 249 + #define CMOTECH_PRODUCT_CHU_720S 0x7001 250 + #define CMOTECH_PRODUCT_7002 0x7002 251 + #define CMOTECH_PRODUCT_CHU_629K 0x7003 252 + #define CMOTECH_PRODUCT_7004 0x7004 253 + #define CMOTECH_PRODUCT_7005 0x7005 254 + #define CMOTECH_PRODUCT_CGU_629 0x7006 255 + #define CMOTECH_PRODUCT_CHU_629S 0x700a 256 + #define CMOTECH_PRODUCT_CHU_720I 0x7211 257 + #define CMOTECH_PRODUCT_7212 0x7212 258 + #define CMOTECH_PRODUCT_7213 0x7213 259 + #define CMOTECH_PRODUCT_7251 0x7251 260 + #define CMOTECH_PRODUCT_7252 0x7252 261 + #define CMOTECH_PRODUCT_7253 0x7253 239 262 240 263 #define TELIT_VENDOR_ID 0x1bc7 241 264 #define TELIT_PRODUCT_UC864E 0x1003 ··· 310 287 #define ALCATEL_PRODUCT_X060S_X200 0x0000 311 288 #define ALCATEL_PRODUCT_X220_X500D 0x0017 312 289 #define ALCATEL_PRODUCT_L100V 0x011e 290 + #define ALCATEL_PRODUCT_L800MA 0x0203 313 291 314 292 #define PIRELLI_VENDOR_ID 0x1266 315 293 #define PIRELLI_PRODUCT_C100_1 0x1002 ··· 373 349 #define OLIVETTI_PRODUCT_OLICARD100 0xc000 374 350 #define OLIVETTI_PRODUCT_OLICARD145 0xc003 375 351 #define OLIVETTI_PRODUCT_OLICARD200 0xc005 352 + #define OLIVETTI_PRODUCT_OLICARD500 0xc00b 376 353 377 354 /* Celot products */ 378 355 #define CELOT_VENDOR_ID 0x211f ··· 525 500 526 501 static const struct option_blacklist_info huawei_cdc12_blacklist = { 527 502 .reserved = BIT(1) | BIT(2), 503 + }; 504 + 505 + static const struct option_blacklist_info net_intf0_blacklist = { 506 + .reserved = BIT(0), 528 507 }; 529 508 530 509 static const struct option_blacklist_info net_intf1_blacklist = { ··· 1064 1035 { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */ 1065 1036 { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x0023)}, /* ONYX 3G device */ 1066 1037 { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x9000)}, /* SIMCom SIM5218 */ 1067 - { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6280) }, /* BP3-USB & BP3-EXT HSDPA */ 1068 - { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6008) }, 1038 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6001) }, 1039 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CMU_300) }, 1040 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6003), 1041 + .driver_info = (kernel_ulong_t)&net_intf0_blacklist }, 1042 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6004) }, 1043 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_6005) }, 1044 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CGU_628A) }, 1045 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CHE_628S), 1046 + .driver_info = (kernel_ulong_t)&net_intf0_blacklist }, 1047 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CMU_301), 1048 + .driver_info = (kernel_ulong_t)&net_intf0_blacklist }, 1049 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CHU_628), 1050 + .driver_info = (kernel_ulong_t)&net_intf0_blacklist }, 1051 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CHU_628S) }, 1052 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CDU_680) }, 1053 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CDU_685A) }, 1054 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CHU_720S), 1055 + .driver_info = (kernel_ulong_t)&net_intf0_blacklist }, 1056 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_7002), 1057 + .driver_info = (kernel_ulong_t)&net_intf0_blacklist }, 1058 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CHU_629K), 1059 + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, 1060 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_7004), 1061 + .driver_info = (kernel_ulong_t)&net_intf3_blacklist }, 1062 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_7005) }, 1063 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CGU_629), 1064 + .driver_info = (kernel_ulong_t)&net_intf5_blacklist }, 1065 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CHU_629S), 1066 + .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, 1067 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_CHU_720I), 1068 + .driver_info = (kernel_ulong_t)&net_intf0_blacklist }, 1069 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_7212), 1070 + .driver_info = (kernel_ulong_t)&net_intf0_blacklist }, 1071 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_7213), 1072 + .driver_info = (kernel_ulong_t)&net_intf0_blacklist }, 1073 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_7251), 1074 + .driver_info = (kernel_ulong_t)&net_intf1_blacklist }, 1075 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_7252), 1076 + .driver_info = (kernel_ulong_t)&net_intf1_blacklist }, 1077 + { USB_DEVICE(CMOTECH_VENDOR_ID, CMOTECH_PRODUCT_7253), 1078 + .driver_info = (kernel_ulong_t)&net_intf1_blacklist }, 1069 1079 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) }, 1070 1080 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864G) }, 1071 1081 { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_CC864_DUAL) }, ··· 1568 1500 .driver_info = (kernel_ulong_t)&net_intf5_blacklist }, 1569 1501 { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_L100V), 1570 1502 .driver_info = (kernel_ulong_t)&net_intf4_blacklist }, 1503 + { USB_DEVICE(ALCATEL_VENDOR_ID, ALCATEL_PRODUCT_L800MA), 1504 + .driver_info = (kernel_ulong_t)&net_intf2_blacklist }, 1571 1505 { USB_DEVICE(AIRPLUS_VENDOR_ID, AIRPLUS_PRODUCT_MCD650) }, 1572 1506 { USB_DEVICE(TLAYTECH_VENDOR_ID, TLAYTECH_PRODUCT_TEU800) }, 1573 1507 { USB_DEVICE(LONGCHEER_VENDOR_ID, FOUR_G_SYSTEMS_PRODUCT_W14), ··· 1614 1544 { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD145) }, 1615 1545 { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD200), 1616 1546 .driver_info = (kernel_ulong_t)&net_intf6_blacklist 1547 + }, 1548 + { USB_DEVICE(OLIVETTI_VENDOR_ID, OLIVETTI_PRODUCT_OLICARD500), 1549 + .driver_info = (kernel_ulong_t)&net_intf4_blacklist 1617 1550 }, 1618 1551 { USB_DEVICE(CELOT_VENDOR_ID, CELOT_PRODUCT_CT680M) }, /* CT-650 CDMA 450 1xEVDO modem */ 1619 1552 { USB_DEVICE_AND_INTERFACE_INFO(SAMSUNG_VENDOR_ID, SAMSUNG_PRODUCT_GT_B3730, USB_CLASS_CDC_DATA, 0x00, 0x00) }, /* Samsung GT-B3730 LTE USB modem.*/
+9
drivers/usb/serial/qcserial.c
··· 136 136 {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x68a2, 0)}, /* Sierra Wireless MC7710 Device Management */ 137 137 {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x68a2, 2)}, /* Sierra Wireless MC7710 NMEA */ 138 138 {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x68a2, 3)}, /* Sierra Wireless MC7710 Modem */ 139 + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x68c0, 0)}, /* Sierra Wireless MC73xx Device Management */ 140 + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x68c0, 2)}, /* Sierra Wireless MC73xx NMEA */ 141 + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x68c0, 3)}, /* Sierra Wireless MC73xx Modem */ 139 142 {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x901c, 0)}, /* Sierra Wireless EM7700 Device Management */ 140 143 {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x901c, 2)}, /* Sierra Wireless EM7700 NMEA */ 141 144 {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x901c, 3)}, /* Sierra Wireless EM7700 Modem */ 145 + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x901f, 0)}, /* Sierra Wireless EM7355 Device Management */ 146 + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x901f, 2)}, /* Sierra Wireless EM7355 NMEA */ 147 + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x901f, 3)}, /* Sierra Wireless EM7355 Modem */ 148 + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9041, 0)}, /* Sierra Wireless MC7305/MC7355 Device Management */ 149 + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9041, 2)}, /* Sierra Wireless MC7305/MC7355 NMEA */ 150 + {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9041, 3)}, /* Sierra Wireless MC7305/MC7355 Modem */ 142 151 {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9051, 0)}, /* Netgear AirCard 340U Device Management */ 143 152 {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9051, 2)}, /* Netgear AirCard 340U NMEA */ 144 153 {USB_DEVICE_INTERFACE_NUMBER(0x1199, 0x9051, 3)}, /* Netgear AirCard 340U Modem */
+3 -1
drivers/usb/serial/usb-serial.c
··· 1347 1347 static void usb_serial_deregister(struct usb_serial_driver *device) 1348 1348 { 1349 1349 pr_info("USB Serial deregistering driver %s\n", device->description); 1350 + 1350 1351 mutex_lock(&table_lock); 1351 1352 list_del(&device->driver_list); 1352 - usb_serial_bus_deregister(device); 1353 1353 mutex_unlock(&table_lock); 1354 + 1355 + usb_serial_bus_deregister(device); 1354 1356 } 1355 1357 1356 1358 /**
+1 -1
drivers/usb/wusbcore/mmc.c
··· 301 301 302 302 if (chid) 303 303 result = uwb_radio_start(&wusbhc->pal); 304 - else 304 + else if (wusbhc->uwb_rc) 305 305 uwb_radio_stop(&wusbhc->pal); 306 306 307 307 return result;
+2 -2
drivers/usb/wusbcore/wa-xfer.c
··· 2390 2390 done) { 2391 2391 2392 2392 dev_info(dev, "Control EP stall. Queue delayed work.\n"); 2393 - spin_lock_irq(&wa->xfer_list_lock); 2393 + spin_lock(&wa->xfer_list_lock); 2394 2394 /* move xfer from xfer_list to xfer_errored_list. */ 2395 2395 list_move_tail(&xfer->list_node, &wa->xfer_errored_list); 2396 - spin_unlock_irq(&wa->xfer_list_lock); 2396 + spin_unlock(&wa->xfer_list_lock); 2397 2397 spin_unlock_irqrestore(&xfer->lock, flags); 2398 2398 queue_work(wusbd, &wa->xfer_error_work); 2399 2399 } else {
+5 -4
drivers/uwb/drp.c
··· 59 59 struct uwb_rceb *reply, ssize_t reply_size) 60 60 { 61 61 struct uwb_rc_evt_set_drp_ie *r = (struct uwb_rc_evt_set_drp_ie *)reply; 62 + unsigned long flags; 62 63 63 64 if (r != NULL) { 64 65 if (r->bResultCode != UWB_RC_RES_SUCCESS) ··· 68 67 } else 69 68 dev_err(&rc->uwb_dev.dev, "SET-DRP-IE: timeout\n"); 70 69 71 - spin_lock_irq(&rc->rsvs_lock); 70 + spin_lock_irqsave(&rc->rsvs_lock, flags); 72 71 if (rc->set_drp_ie_pending > 1) { 73 72 rc->set_drp_ie_pending = 0; 74 - uwb_rsv_queue_update(rc); 73 + uwb_rsv_queue_update(rc); 75 74 } else { 76 - rc->set_drp_ie_pending = 0; 75 + rc->set_drp_ie_pending = 0; 77 76 } 78 - spin_unlock_irq(&rc->rsvs_lock); 77 + spin_unlock_irqrestore(&rc->rsvs_lock, flags); 79 78 } 80 79 81 80 /**
+14
fs/btrfs/ctree.h
··· 2058 2058 #define btrfs_raw_test_opt(o, opt) ((o) & BTRFS_MOUNT_##opt) 2059 2059 #define btrfs_test_opt(root, opt) ((root)->fs_info->mount_opt & \ 2060 2060 BTRFS_MOUNT_##opt) 2061 + #define btrfs_set_and_info(root, opt, fmt, args...) \ 2062 + { \ 2063 + if (!btrfs_test_opt(root, opt)) \ 2064 + btrfs_info(root->fs_info, fmt, ##args); \ 2065 + btrfs_set_opt(root->fs_info->mount_opt, opt); \ 2066 + } 2067 + 2068 + #define btrfs_clear_and_info(root, opt, fmt, args...) \ 2069 + { \ 2070 + if (btrfs_test_opt(root, opt)) \ 2071 + btrfs_info(root->fs_info, fmt, ##args); \ 2072 + btrfs_clear_opt(root->fs_info->mount_opt, opt); \ 2073 + } 2074 + 2061 2075 /* 2062 2076 * Inode flags 2063 2077 */
+5 -5
fs/btrfs/disk-io.c
··· 2861 2861 printk(KERN_ERR "BTRFS: failed to read log tree\n"); 2862 2862 free_extent_buffer(log_tree_root->node); 2863 2863 kfree(log_tree_root); 2864 - goto fail_trans_kthread; 2864 + goto fail_qgroup; 2865 2865 } 2866 2866 /* returns with log_tree_root freed on success */ 2867 2867 ret = btrfs_recover_log_trees(log_tree_root); ··· 2870 2870 "Failed to recover log tree"); 2871 2871 free_extent_buffer(log_tree_root->node); 2872 2872 kfree(log_tree_root); 2873 - goto fail_trans_kthread; 2873 + goto fail_qgroup; 2874 2874 } 2875 2875 2876 2876 if (sb->s_flags & MS_RDONLY) { 2877 2877 ret = btrfs_commit_super(tree_root); 2878 2878 if (ret) 2879 - goto fail_trans_kthread; 2879 + goto fail_qgroup; 2880 2880 } 2881 2881 } 2882 2882 2883 2883 ret = btrfs_find_orphan_roots(tree_root); 2884 2884 if (ret) 2885 - goto fail_trans_kthread; 2885 + goto fail_qgroup; 2886 2886 2887 2887 if (!(sb->s_flags & MS_RDONLY)) { 2888 2888 ret = btrfs_cleanup_fs_roots(fs_info); 2889 2889 if (ret) 2890 - goto fail_trans_kthread; 2890 + goto fail_qgroup; 2891 2891 2892 2892 ret = btrfs_recover_relocation(tree_root); 2893 2893 if (ret < 0) {
+5 -1
fs/btrfs/extent-tree.c
··· 1542 1542 ret = 0; 1543 1543 } 1544 1544 if (ret) { 1545 + key.objectid = bytenr; 1545 1546 key.type = BTRFS_EXTENT_ITEM_KEY; 1546 1547 key.offset = num_bytes; 1547 1548 btrfs_release_path(path); ··· 3543 3542 return extended_to_chunk(flags | tmp); 3544 3543 } 3545 3544 3546 - static u64 get_alloc_profile(struct btrfs_root *root, u64 flags) 3545 + static u64 get_alloc_profile(struct btrfs_root *root, u64 orig_flags) 3547 3546 { 3548 3547 unsigned seq; 3548 + u64 flags; 3549 3549 3550 3550 do { 3551 + flags = orig_flags; 3551 3552 seq = read_seqbegin(&root->fs_info->profiles_lock); 3552 3553 3553 3554 if (flags & BTRFS_BLOCK_GROUP_DATA) ··· 5722 5719 5723 5720 if (ret > 0 && skinny_metadata) { 5724 5721 skinny_metadata = false; 5722 + key.objectid = bytenr; 5725 5723 key.type = BTRFS_EXTENT_ITEM_KEY; 5726 5724 key.offset = num_bytes; 5727 5725 btrfs_release_path(path);
+4 -4
fs/btrfs/file.c
··· 800 800 if (start > key.offset && end < extent_end) { 801 801 BUG_ON(del_nr > 0); 802 802 if (extent_type == BTRFS_FILE_EXTENT_INLINE) { 803 - ret = -EINVAL; 803 + ret = -EOPNOTSUPP; 804 804 break; 805 805 } 806 806 ··· 846 846 */ 847 847 if (start <= key.offset && end < extent_end) { 848 848 if (extent_type == BTRFS_FILE_EXTENT_INLINE) { 849 - ret = -EINVAL; 849 + ret = -EOPNOTSUPP; 850 850 break; 851 851 } 852 852 ··· 872 872 if (start > key.offset && end >= extent_end) { 873 873 BUG_ON(del_nr > 0); 874 874 if (extent_type == BTRFS_FILE_EXTENT_INLINE) { 875 - ret = -EINVAL; 875 + ret = -EOPNOTSUPP; 876 876 break; 877 877 } 878 878 ··· 1777 1777 start_pos = round_down(pos, root->sectorsize); 1778 1778 if (start_pos > i_size_read(inode)) { 1779 1779 /* Expand hole size to cover write data, preventing empty gap */ 1780 - end_pos = round_up(pos + iov->iov_len, root->sectorsize); 1780 + end_pos = round_up(pos + count, root->sectorsize); 1781 1781 err = btrfs_cont_expand(inode, i_size_read(inode), end_pos); 1782 1782 if (err) { 1783 1783 mutex_unlock(&inode->i_mutex);
+7 -17
fs/btrfs/inode-map.c
··· 176 176 177 177 tsk = kthread_run(caching_kthread, root, "btrfs-ino-cache-%llu\n", 178 178 root->root_key.objectid); 179 - BUG_ON(IS_ERR(tsk)); /* -ENOMEM */ 179 + if (IS_ERR(tsk)) { 180 + btrfs_warn(root->fs_info, "failed to start inode caching task"); 181 + btrfs_clear_and_info(root, CHANGE_INODE_CACHE, 182 + "disabling inode map caching"); 183 + } 180 184 } 181 185 182 186 int btrfs_find_free_ino(struct btrfs_root *root, u64 *objectid) ··· 209 205 210 206 void btrfs_return_ino(struct btrfs_root *root, u64 objectid) 211 207 { 212 - struct btrfs_free_space_ctl *ctl = root->free_ino_ctl; 213 208 struct btrfs_free_space_ctl *pinned = root->free_ino_pinned; 214 209 215 210 if (!btrfs_test_opt(root, INODE_MAP_CACHE)) 216 211 return; 217 - 218 212 again: 219 213 if (root->cached == BTRFS_CACHE_FINISHED) { 220 - __btrfs_add_free_space(ctl, objectid, 1); 214 + __btrfs_add_free_space(pinned, objectid, 1); 221 215 } else { 222 - /* 223 - * If we are in the process of caching free ino chunks, 224 - * to avoid adding the same inode number to the free_ino 225 - * tree twice due to cross transaction, we'll leave it 226 - * in the pinned tree until a transaction is committed 227 - * or the caching work is done. 228 - */ 229 - 230 216 down_write(&root->fs_info->commit_root_sem); 231 217 spin_lock(&root->cache_lock); 232 218 if (root->cached == BTRFS_CACHE_FINISHED) { ··· 228 234 229 235 start_caching(root); 230 236 231 - if (objectid <= root->cache_progress || 232 - objectid >= root->highest_objectid) 233 - __btrfs_add_free_space(ctl, objectid, 1); 234 - else 235 - __btrfs_add_free_space(pinned, objectid, 1); 237 + __btrfs_add_free_space(pinned, objectid, 1); 236 238 237 239 up_write(&root->fs_info->commit_root_sem); 238 240 }
+2 -2
fs/btrfs/ioctl.c
··· 3066 3066 new_key.offset + datal, 3067 3067 1); 3068 3068 if (ret) { 3069 - if (ret != -EINVAL) 3069 + if (ret != -EOPNOTSUPP) 3070 3070 btrfs_abort_transaction(trans, 3071 3071 root, ret); 3072 3072 btrfs_end_transaction(trans, root); ··· 3141 3141 new_key.offset + datal, 3142 3142 1); 3143 3143 if (ret) { 3144 - if (ret != -EINVAL) 3144 + if (ret != -EOPNOTSUPP) 3145 3145 btrfs_abort_transaction(trans, 3146 3146 root, ret); 3147 3147 btrfs_end_transaction(trans, root);
+5
fs/btrfs/send.c
··· 349 349 if (p->buf_len >= len) 350 350 return 0; 351 351 352 + if (len > PATH_MAX) { 353 + WARN_ON(1); 354 + return -ENOMEM; 355 + } 356 + 352 357 path_len = p->end - p->start; 353 358 old_buf_len = p->buf_len; 354 359
+6 -16
fs/btrfs/super.c
··· 385 385 {Opt_err, NULL}, 386 386 }; 387 387 388 - #define btrfs_set_and_info(root, opt, fmt, args...) \ 389 - { \ 390 - if (!btrfs_test_opt(root, opt)) \ 391 - btrfs_info(root->fs_info, fmt, ##args); \ 392 - btrfs_set_opt(root->fs_info->mount_opt, opt); \ 393 - } 394 - 395 - #define btrfs_clear_and_info(root, opt, fmt, args...) \ 396 - { \ 397 - if (btrfs_test_opt(root, opt)) \ 398 - btrfs_info(root->fs_info, fmt, ##args); \ 399 - btrfs_clear_opt(root->fs_info->mount_opt, opt); \ 400 - } 401 - 402 388 /* 403 389 * Regular mount options parser. Everything that is needed only when 404 390 * reading in a new superblock is parsed here. ··· 1172 1186 return ERR_PTR(-ENOMEM); 1173 1187 mnt = vfs_kern_mount(&btrfs_fs_type, flags, device_name, 1174 1188 newargs); 1175 - kfree(newargs); 1176 1189 1177 1190 if (PTR_RET(mnt) == -EBUSY) { 1178 1191 if (flags & MS_RDONLY) { ··· 1181 1196 int r; 1182 1197 mnt = vfs_kern_mount(&btrfs_fs_type, flags | MS_RDONLY, device_name, 1183 1198 newargs); 1184 - if (IS_ERR(mnt)) 1199 + if (IS_ERR(mnt)) { 1200 + kfree(newargs); 1185 1201 return ERR_CAST(mnt); 1202 + } 1186 1203 1187 1204 r = btrfs_remount(mnt->mnt_sb, &flags, NULL); 1188 1205 if (r < 0) { 1189 1206 /* FIXME: release vfsmount mnt ??*/ 1207 + kfree(newargs); 1190 1208 return ERR_PTR(r); 1191 1209 } 1192 1210 } 1193 1211 } 1212 + 1213 + kfree(newargs); 1194 1214 1195 1215 if (IS_ERR(mnt)) 1196 1216 return ERR_CAST(mnt);
-3
fs/ceph/file.c
··· 1221 1221 if (!S_ISREG(inode->i_mode)) 1222 1222 return -EOPNOTSUPP; 1223 1223 1224 - if (IS_SWAPFILE(inode)) 1225 - return -ETXTBSY; 1226 - 1227 1224 mutex_lock(&inode->i_mutex); 1228 1225 1229 1226 if (ceph_snap(inode) != CEPH_NOSNAP) {
+7 -7
fs/compat.c
··· 457 457 case F_GETLK64: 458 458 case F_SETLK64: 459 459 case F_SETLKW64: 460 - case F_GETLKP: 461 - case F_SETLKP: 462 - case F_SETLKPW: 460 + case F_OFD_GETLK: 461 + case F_OFD_SETLK: 462 + case F_OFD_SETLKW: 463 463 ret = get_compat_flock64(&f, compat_ptr(arg)); 464 464 if (ret != 0) 465 465 break; ··· 468 468 conv_cmd = convert_fcntl_cmd(cmd); 469 469 ret = sys_fcntl(fd, conv_cmd, (unsigned long)&f); 470 470 set_fs(old_fs); 471 - if ((conv_cmd == F_GETLK || conv_cmd == F_GETLKP) && ret == 0) { 471 + if ((conv_cmd == F_GETLK || conv_cmd == F_OFD_GETLK) && ret == 0) { 472 472 /* need to return lock information - see above for commentary */ 473 473 if (f.l_start > COMPAT_LOFF_T_MAX) 474 474 ret = -EOVERFLOW; ··· 493 493 case F_GETLK64: 494 494 case F_SETLK64: 495 495 case F_SETLKW64: 496 - case F_GETLKP: 497 - case F_SETLKP: 498 - case F_SETLKPW: 496 + case F_OFD_GETLK: 497 + case F_OFD_SETLK: 498 + case F_OFD_SETLKW: 499 499 return -EINVAL; 500 500 } 501 501 return compat_sys_fcntl64(fd, cmd, arg);
+1 -1
fs/ext4/balloc.c
··· 667 667 continue; 668 668 669 669 x = ext4_count_free(bitmap_bh->b_data, 670 - EXT4_BLOCKS_PER_GROUP(sb) / 8); 670 + EXT4_CLUSTERS_PER_GROUP(sb) / 8); 671 671 printk(KERN_DEBUG "group %u: stored = %d, counted = %u\n", 672 672 i, ext4_free_group_clusters(sb, gdp), x); 673 673 bitmap_count += x;
-17
fs/ext4/ext4.h
··· 2466 2466 up_write(&EXT4_I(inode)->i_data_sem); 2467 2467 } 2468 2468 2469 - /* 2470 - * Update i_disksize after writeback has been started. Races with truncate 2471 - * are avoided by checking i_size under i_data_sem. 2472 - */ 2473 - static inline void ext4_wb_update_i_disksize(struct inode *inode, loff_t newsize) 2474 - { 2475 - loff_t i_size; 2476 - 2477 - down_write(&EXT4_I(inode)->i_data_sem); 2478 - i_size = i_size_read(inode); 2479 - if (newsize > i_size) 2480 - newsize = i_size; 2481 - if (newsize > EXT4_I(inode)->i_disksize) 2482 - EXT4_I(inode)->i_disksize = newsize; 2483 - up_write(&EXT4_I(inode)->i_data_sem); 2484 - } 2485 - 2486 2469 struct ext4_group_info { 2487 2470 unsigned long bb_state; 2488 2471 struct rb_root bb_free_root;
+76 -33
fs/ext4/extents.c
··· 3313 3313 return PTR_ERR(path); 3314 3314 depth = ext_depth(inode); 3315 3315 ex = path[depth].p_ext; 3316 + if (!ex) { 3317 + EXT4_ERROR_INODE(inode, "unexpected hole at %lu", 3318 + (unsigned long) map->m_lblk); 3319 + return -EIO; 3320 + } 3316 3321 uninitialized = ext4_ext_is_uninitialized(ex); 3317 3322 split_flag1 = 0; 3318 3323 ··· 3699 3694 } 3700 3695 depth = ext_depth(inode); 3701 3696 ex = path[depth].p_ext; 3697 + if (!ex) { 3698 + EXT4_ERROR_INODE(inode, "unexpected hole at %lu", 3699 + (unsigned long) map->m_lblk); 3700 + err = -EIO; 3701 + goto out; 3702 + } 3702 3703 } 3703 3704 3704 3705 err = ext4_ext_get_access(handle, inode, path + depth); ··· 4741 4730 4742 4731 trace_ext4_zero_range(inode, offset, len, mode); 4743 4732 4733 + if (!S_ISREG(inode->i_mode)) 4734 + return -EINVAL; 4735 + 4744 4736 /* 4745 4737 * Write out all dirty pages to avoid race conditions 4746 4738 * Then release them. ··· 4892 4878 if (mode & FALLOC_FL_PUNCH_HOLE) 4893 4879 return ext4_punch_hole(inode, offset, len); 4894 4880 4895 - if (mode & FALLOC_FL_COLLAPSE_RANGE) 4896 - return ext4_collapse_range(inode, offset, len); 4897 - 4898 4881 ret = ext4_convert_inline_data(inode); 4899 4882 if (ret) 4900 4883 return ret; ··· 4902 4891 */ 4903 4892 if (!(ext4_test_inode_flag(inode, EXT4_INODE_EXTENTS))) 4904 4893 return -EOPNOTSUPP; 4894 + 4895 + if (mode & FALLOC_FL_COLLAPSE_RANGE) 4896 + return ext4_collapse_range(inode, offset, len); 4905 4897 4906 4898 if (mode & FALLOC_FL_ZERO_RANGE) 4907 4899 return ext4_zero_range(file, offset, len, mode); ··· 5243 5229 if (ex_start == EXT_FIRST_EXTENT(path[depth].p_hdr)) 5244 5230 update = 1; 5245 5231 5246 - *start = ex_last->ee_block + 5232 + *start = le32_to_cpu(ex_last->ee_block) + 5247 5233 ext4_ext_get_actual_len(ex_last); 5248 5234 5249 5235 while (ex_start <= ex_last) { 5250 - ex_start->ee_block -= shift; 5251 - if (ex_start > 5252 - EXT_FIRST_EXTENT(path[depth].p_hdr)) { 5253 - if (ext4_ext_try_to_merge_right(inode, 5254 - path, ex_start - 1)) 5255 - ex_last--; 5256 - } 5257 - ex_start++; 5236 + le32_add_cpu(&ex_start->ee_block, -shift); 5237 + /* Try to merge to the left. */ 5238 + if ((ex_start > 5239 + EXT_FIRST_EXTENT(path[depth].p_hdr)) && 5240 + ext4_ext_try_to_merge_right(inode, 5241 + path, ex_start - 1)) 5242 + ex_last--; 5243 + else 5244 + ex_start++; 5258 5245 } 5259 5246 err = ext4_ext_dirty(handle, inode, path + depth); 5260 5247 if (err) ··· 5270 5255 if (err) 5271 5256 goto out; 5272 5257 5273 - path[depth].p_idx->ei_block -= shift; 5258 + le32_add_cpu(&path[depth].p_idx->ei_block, -shift); 5274 5259 err = ext4_ext_dirty(handle, inode, path + depth); 5275 5260 if (err) 5276 5261 goto out; ··· 5315 5300 return ret; 5316 5301 } 5317 5302 5318 - stop_block = extent->ee_block + ext4_ext_get_actual_len(extent); 5303 + stop_block = le32_to_cpu(extent->ee_block) + 5304 + ext4_ext_get_actual_len(extent); 5319 5305 ext4_ext_drop_refs(path); 5320 5306 kfree(path); 5321 5307 ··· 5329 5313 * enough to accomodate the shift. 5330 5314 */ 5331 5315 path = ext4_ext_find_extent(inode, start - 1, NULL, 0); 5316 + if (IS_ERR(path)) 5317 + return PTR_ERR(path); 5332 5318 depth = path->p_depth; 5333 5319 extent = path[depth].p_ext; 5334 - ex_start = extent->ee_block; 5335 - ex_end = extent->ee_block + ext4_ext_get_actual_len(extent); 5320 + if (extent) { 5321 + ex_start = le32_to_cpu(extent->ee_block); 5322 + ex_end = le32_to_cpu(extent->ee_block) + 5323 + ext4_ext_get_actual_len(extent); 5324 + } else { 5325 + ex_start = 0; 5326 + ex_end = 0; 5327 + } 5336 5328 ext4_ext_drop_refs(path); 5337 5329 kfree(path); 5338 5330 ··· 5355 5331 return PTR_ERR(path); 5356 5332 depth = path->p_depth; 5357 5333 extent = path[depth].p_ext; 5358 - current_block = extent->ee_block; 5334 + if (!extent) { 5335 + EXT4_ERROR_INODE(inode, "unexpected hole at %lu", 5336 + (unsigned long) start); 5337 + return -EIO; 5338 + } 5339 + 5340 + current_block = le32_to_cpu(extent->ee_block); 5359 5341 if (start > current_block) { 5360 5342 /* Hole, move to the next extent */ 5361 5343 ret = mext_next_extent(inode, path, &extent); ··· 5395 5365 ext4_lblk_t punch_start, punch_stop; 5396 5366 handle_t *handle; 5397 5367 unsigned int credits; 5398 - loff_t new_size; 5368 + loff_t new_size, ioffset; 5399 5369 int ret; 5400 - 5401 - BUG_ON(offset + len > i_size_read(inode)); 5402 5370 5403 5371 /* Collapse range works only on fs block size aligned offsets. */ 5404 5372 if (offset & (EXT4_BLOCK_SIZE(sb) - 1) || ··· 5404 5376 return -EINVAL; 5405 5377 5406 5378 if (!S_ISREG(inode->i_mode)) 5379 + return -EINVAL; 5380 + 5381 + if (EXT4_SB(inode->i_sb)->s_cluster_ratio > 1) 5407 5382 return -EOPNOTSUPP; 5408 5383 5409 5384 trace_ext4_collapse_range(inode, offset, len); ··· 5414 5383 punch_start = offset >> EXT4_BLOCK_SIZE_BITS(sb); 5415 5384 punch_stop = (offset + len) >> EXT4_BLOCK_SIZE_BITS(sb); 5416 5385 5386 + /* Call ext4_force_commit to flush all data in case of data=journal. */ 5387 + if (ext4_should_journal_data(inode)) { 5388 + ret = ext4_force_commit(inode->i_sb); 5389 + if (ret) 5390 + return ret; 5391 + } 5392 + 5393 + /* 5394 + * Need to round down offset to be aligned with page size boundary 5395 + * for page size > block size. 5396 + */ 5397 + ioffset = round_down(offset, PAGE_SIZE); 5398 + 5417 5399 /* Write out all dirty pages */ 5418 - ret = filemap_write_and_wait_range(inode->i_mapping, offset, -1); 5400 + ret = filemap_write_and_wait_range(inode->i_mapping, ioffset, 5401 + LLONG_MAX); 5419 5402 if (ret) 5420 5403 return ret; 5421 5404 5422 5405 /* Take mutex lock */ 5423 5406 mutex_lock(&inode->i_mutex); 5424 5407 5425 - /* It's not possible punch hole on append only file */ 5426 - if (IS_APPEND(inode) || IS_IMMUTABLE(inode)) { 5427 - ret = -EPERM; 5428 - goto out_mutex; 5429 - } 5430 - 5431 - if (IS_SWAPFILE(inode)) { 5432 - ret = -ETXTBSY; 5408 + /* 5409 + * There is no need to overlap collapse range with EOF, in which case 5410 + * it is effectively a truncate operation 5411 + */ 5412 + if (offset + len >= i_size_read(inode)) { 5413 + ret = -EINVAL; 5433 5414 goto out_mutex; 5434 5415 } 5435 5416 ··· 5451 5408 goto out_mutex; 5452 5409 } 5453 5410 5454 - truncate_pagecache_range(inode, offset, -1); 5411 + truncate_pagecache(inode, ioffset); 5455 5412 5456 5413 /* Wait for existing dio to complete */ 5457 5414 ext4_inode_block_unlocked_dio(inode); ··· 5468 5425 ext4_discard_preallocations(inode); 5469 5426 5470 5427 ret = ext4_es_remove_extent(inode, punch_start, 5471 - EXT_MAX_BLOCKS - punch_start - 1); 5428 + EXT_MAX_BLOCKS - punch_start); 5472 5429 if (ret) { 5473 5430 up_write(&EXT4_I(inode)->i_data_sem); 5474 5431 goto out_stop; ··· 5479 5436 up_write(&EXT4_I(inode)->i_data_sem); 5480 5437 goto out_stop; 5481 5438 } 5439 + ext4_discard_preallocations(inode); 5482 5440 5483 5441 ret = ext4_ext_shift_extents(inode, handle, punch_stop, 5484 5442 punch_stop - punch_start); ··· 5489 5445 } 5490 5446 5491 5447 new_size = i_size_read(inode) - len; 5492 - truncate_setsize(inode, new_size); 5448 + i_size_write(inode, new_size); 5493 5449 EXT4_I(inode)->i_disksize = new_size; 5494 5450 5495 - ext4_discard_preallocations(inode); 5496 5451 up_write(&EXT4_I(inode)->i_data_sem); 5497 5452 if (IS_SYNC(inode)) 5498 5453 ext4_handle_sync(handle);
+1 -1
fs/ext4/extents_status.c
··· 810 810 811 811 newes.es_lblk = end + 1; 812 812 newes.es_len = len2; 813 - block = 0x7FDEADBEEF; 813 + block = 0x7FDEADBEEFULL; 814 814 if (ext4_es_is_written(&orig_es) || 815 815 ext4_es_is_unwritten(&orig_es)) 816 816 block = ext4_es_pblock(&orig_es) +
+1 -1
fs/ext4/file.c
··· 82 82 size_t count = iov_length(iov, nr_segs); 83 83 loff_t final_size = pos + count; 84 84 85 - if (pos >= inode->i_size) 85 + if (pos >= i_size_read(inode)) 86 86 return 0; 87 87 88 88 if ((pos & blockmask) || (final_size & blockmask))
+27 -24
fs/ext4/inode.c
··· 522 522 if (unlikely(map->m_len > INT_MAX)) 523 523 map->m_len = INT_MAX; 524 524 525 + /* We can handle the block number less than EXT_MAX_BLOCKS */ 526 + if (unlikely(map->m_lblk >= EXT_MAX_BLOCKS)) 527 + return -EIO; 528 + 525 529 /* Lookup extent status tree firstly */ 526 530 if (ext4_es_lookup_extent(inode, map->m_lblk, &es)) { 527 531 ext4_es_lru_add(inode); ··· 2247 2243 return err; 2248 2244 } while (map->m_len); 2249 2245 2250 - /* Update on-disk size after IO is submitted */ 2246 + /* 2247 + * Update on-disk size after IO is submitted. Races with 2248 + * truncate are avoided by checking i_size under i_data_sem. 2249 + */ 2251 2250 disksize = ((loff_t)mpd->first_page) << PAGE_CACHE_SHIFT; 2252 2251 if (disksize > EXT4_I(inode)->i_disksize) { 2253 2252 int err2; 2253 + loff_t i_size; 2254 2254 2255 - ext4_wb_update_i_disksize(inode, disksize); 2255 + down_write(&EXT4_I(inode)->i_data_sem); 2256 + i_size = i_size_read(inode); 2257 + if (disksize > i_size) 2258 + disksize = i_size; 2259 + if (disksize > EXT4_I(inode)->i_disksize) 2260 + EXT4_I(inode)->i_disksize = disksize; 2256 2261 err2 = ext4_mark_inode_dirty(handle, inode); 2262 + up_write(&EXT4_I(inode)->i_data_sem); 2257 2263 if (err2) 2258 2264 ext4_error(inode->i_sb, 2259 2265 "Failed to mark inode %lu dirty", ··· 3541 3527 } 3542 3528 3543 3529 mutex_lock(&inode->i_mutex); 3544 - /* It's not possible punch hole on append only file */ 3545 - if (IS_APPEND(inode) || IS_IMMUTABLE(inode)) { 3546 - ret = -EPERM; 3547 - goto out_mutex; 3548 - } 3549 - if (IS_SWAPFILE(inode)) { 3550 - ret = -ETXTBSY; 3551 - goto out_mutex; 3552 - } 3553 3530 3554 3531 /* No need to punch hole beyond i_size */ 3555 3532 if (offset >= inode->i_size) ··· 3621 3616 ret = ext4_free_hole_blocks(handle, inode, first_block, 3622 3617 stop_block); 3623 3618 3624 - ext4_discard_preallocations(inode); 3625 3619 up_write(&EXT4_I(inode)->i_data_sem); 3626 3620 if (IS_SYNC(inode)) 3627 3621 ext4_handle_sync(handle); ··· 4427 4423 * 4428 4424 * We are called from a few places: 4429 4425 * 4430 - * - Within generic_file_write() for O_SYNC files. 4426 + * - Within generic_file_aio_write() -> generic_write_sync() for O_SYNC files. 4431 4427 * Here, there will be no transaction running. We wait for any running 4432 4428 * transaction to commit. 4433 4429 * 4434 - * - Within sys_sync(), kupdate and such. 4435 - * We wait on commit, if tol to. 4430 + * - Within flush work (sys_sync(), kupdate and such). 4431 + * We wait on commit, if told to. 4436 4432 * 4437 - * - Within prune_icache() (PF_MEMALLOC == true) 4438 - * Here we simply return. We can't afford to block kswapd on the 4439 - * journal commit. 4433 + * - Within iput_final() -> write_inode_now() 4434 + * We wait on commit, if told to. 4440 4435 * 4441 4436 * In all cases it is actually safe for us to return without doing anything, 4442 4437 * because the inode has been copied into a raw inode buffer in 4443 - * ext4_mark_inode_dirty(). This is a correctness thing for O_SYNC and for 4444 - * knfsd. 4438 + * ext4_mark_inode_dirty(). This is a correctness thing for WB_SYNC_ALL 4439 + * writeback. 4445 4440 * 4446 4441 * Note that we are absolutely dependent upon all inode dirtiers doing the 4447 4442 * right thing: they *must* call mark_inode_dirty() after dirtying info in ··· 4452 4449 * stuff(); 4453 4450 * inode->i_size = expr; 4454 4451 * 4455 - * is in error because a kswapd-driven write_inode() could occur while 4456 - * `stuff()' is running, and the new i_size will be lost. Plus the inode 4457 - * will no longer be on the superblock's dirty inode list. 4452 + * is in error because write_inode() could occur while `stuff()' is running, 4453 + * and the new i_size will be lost. Plus the inode will no longer be on the 4454 + * superblock's dirty inode list. 4458 4455 */ 4459 4456 int ext4_write_inode(struct inode *inode, struct writeback_control *wbc) 4460 4457 { 4461 4458 int err; 4462 4459 4463 - if (current->flags & PF_MEMALLOC) 4460 + if (WARN_ON_ONCE(current->flags & PF_MEMALLOC)) 4464 4461 return 0; 4465 4462 4466 4463 if (EXT4_SB(inode->i_sb)->s_journal) {
+14 -4
fs/ext4/mballoc.c
··· 989 989 poff = block % blocks_per_page; 990 990 page = find_or_create_page(inode->i_mapping, pnum, GFP_NOFS); 991 991 if (!page) 992 - return -EIO; 992 + return -ENOMEM; 993 993 BUG_ON(page->mapping != inode->i_mapping); 994 994 e4b->bd_bitmap_page = page; 995 995 e4b->bd_bitmap = page_address(page) + (poff * sb->s_blocksize); ··· 1003 1003 pnum = block / blocks_per_page; 1004 1004 page = find_or_create_page(inode->i_mapping, pnum, GFP_NOFS); 1005 1005 if (!page) 1006 - return -EIO; 1006 + return -ENOMEM; 1007 1007 BUG_ON(page->mapping != inode->i_mapping); 1008 1008 e4b->bd_buddy_page = page; 1009 1009 return 0; ··· 1168 1168 unlock_page(page); 1169 1169 } 1170 1170 } 1171 - if (page == NULL || !PageUptodate(page)) { 1171 + if (page == NULL) { 1172 + ret = -ENOMEM; 1173 + goto err; 1174 + } 1175 + if (!PageUptodate(page)) { 1172 1176 ret = -EIO; 1173 1177 goto err; 1174 1178 } ··· 1201 1197 unlock_page(page); 1202 1198 } 1203 1199 } 1204 - if (page == NULL || !PageUptodate(page)) { 1200 + if (page == NULL) { 1201 + ret = -ENOMEM; 1202 + goto err; 1203 + } 1204 + if (!PageUptodate(page)) { 1205 1205 ret = -EIO; 1206 1206 goto err; 1207 1207 } ··· 5016 5008 */ 5017 5009 static int ext4_trim_extent(struct super_block *sb, int start, int count, 5018 5010 ext4_group_t group, struct ext4_buddy *e4b) 5011 + __releases(bitlock) 5012 + __acquires(bitlock) 5019 5013 { 5020 5014 struct ext4_free_extent ex; 5021 5015 int ret = 0;
+3 -2
fs/ext4/page-io.c
··· 308 308 if (error) { 309 309 struct inode *inode = io_end->inode; 310 310 311 - ext4_warning(inode->i_sb, "I/O error writing to inode %lu " 311 + ext4_warning(inode->i_sb, "I/O error %d writing to inode %lu " 312 312 "(offset %llu size %ld starting block %llu)", 313 - inode->i_ino, 313 + error, inode->i_ino, 314 314 (unsigned long long) io_end->offset, 315 315 (long) io_end->size, 316 316 (unsigned long long) 317 317 bi_sector >> (inode->i_blkbits - 9)); 318 + mapping_set_error(inode->i_mapping, error); 318 319 } 319 320 320 321 if (io_end->flag & EXT4_IO_END_UNWRITTEN) {
+27 -24
fs/ext4/super.c
··· 3869 3869 goto failed_mount2; 3870 3870 } 3871 3871 } 3872 + 3873 + /* 3874 + * set up enough so that it can read an inode, 3875 + * and create new inode for buddy allocator 3876 + */ 3877 + sbi->s_gdb_count = db_count; 3878 + if (!test_opt(sb, NOLOAD) && 3879 + EXT4_HAS_COMPAT_FEATURE(sb, EXT4_FEATURE_COMPAT_HAS_JOURNAL)) 3880 + sb->s_op = &ext4_sops; 3881 + else 3882 + sb->s_op = &ext4_nojournal_sops; 3883 + 3884 + ext4_ext_init(sb); 3885 + err = ext4_mb_init(sb); 3886 + if (err) { 3887 + ext4_msg(sb, KERN_ERR, "failed to initialize mballoc (%d)", 3888 + err); 3889 + goto failed_mount2; 3890 + } 3891 + 3872 3892 if (!ext4_check_descriptors(sb, &first_not_zeroed)) { 3873 3893 ext4_msg(sb, KERN_ERR, "group descriptors corrupted!"); 3874 - goto failed_mount2; 3894 + goto failed_mount2a; 3875 3895 } 3876 3896 if (EXT4_HAS_INCOMPAT_FEATURE(sb, EXT4_FEATURE_INCOMPAT_FLEX_BG)) 3877 3897 if (!ext4_fill_flex_info(sb)) { 3878 3898 ext4_msg(sb, KERN_ERR, 3879 3899 "unable to initialize " 3880 3900 "flex_bg meta info!"); 3881 - goto failed_mount2; 3901 + goto failed_mount2a; 3882 3902 } 3883 3903 3884 - sbi->s_gdb_count = db_count; 3885 3904 get_random_bytes(&sbi->s_next_generation, sizeof(u32)); 3886 3905 spin_lock_init(&sbi->s_next_gen_lock); 3887 3906 ··· 3935 3916 sbi->s_stripe = ext4_get_stripe_size(sbi); 3936 3917 sbi->s_extent_max_zeroout_kb = 32; 3937 3918 3938 - /* 3939 - * set up enough so that it can read an inode 3940 - */ 3941 - if (!test_opt(sb, NOLOAD) && 3942 - EXT4_HAS_COMPAT_FEATURE(sb, EXT4_FEATURE_COMPAT_HAS_JOURNAL)) 3943 - sb->s_op = &ext4_sops; 3944 - else 3945 - sb->s_op = &ext4_nojournal_sops; 3946 3919 sb->s_export_op = &ext4_export_ops; 3947 3920 sb->s_xattr = ext4_xattr_handlers; 3948 3921 #ifdef CONFIG_QUOTA ··· 4124 4113 if (err) { 4125 4114 ext4_msg(sb, KERN_ERR, "failed to reserve %llu clusters for " 4126 4115 "reserved pool", ext4_calculate_resv_clusters(sb)); 4127 - goto failed_mount4a; 4116 + goto failed_mount5; 4128 4117 } 4129 4118 4130 4119 err = ext4_setup_system_zone(sb); 4131 4120 if (err) { 4132 4121 ext4_msg(sb, KERN_ERR, "failed to initialize system " 4133 4122 "zone (%d)", err); 4134 - goto failed_mount4a; 4135 - } 4136 - 4137 - ext4_ext_init(sb); 4138 - err = ext4_mb_init(sb); 4139 - if (err) { 4140 - ext4_msg(sb, KERN_ERR, "failed to initialize mballoc (%d)", 4141 - err); 4142 4123 goto failed_mount5; 4143 4124 } 4144 4125 ··· 4207 4204 failed_mount7: 4208 4205 ext4_unregister_li_request(sb); 4209 4206 failed_mount6: 4210 - ext4_mb_release(sb); 4211 - failed_mount5: 4212 - ext4_ext_release(sb); 4213 4207 ext4_release_system_zone(sb); 4214 - failed_mount4a: 4208 + failed_mount5: 4215 4209 dput(sb->s_root); 4216 4210 sb->s_root = NULL; 4217 4211 failed_mount4: ··· 4232 4232 percpu_counter_destroy(&sbi->s_extent_cache_cnt); 4233 4233 if (sbi->s_mmp_tsk) 4234 4234 kthread_stop(sbi->s_mmp_tsk); 4235 + failed_mount2a: 4236 + ext4_mb_release(sb); 4235 4237 failed_mount2: 4236 4238 for (i = 0; i < db_count; i++) 4237 4239 brelse(sbi->s_group_desc[i]); 4238 4240 ext4_kvfree(sbi->s_group_desc); 4239 4241 failed_mount: 4242 + ext4_ext_release(sb); 4240 4243 if (sbi->s_chksum_driver) 4241 4244 crypto_free_shash(sbi->s_chksum_driver); 4242 4245 if (sbi->s_proc) {
+19 -4
fs/ext4/xattr.c
··· 520 520 } 521 521 522 522 /* 523 - * Release the xattr block BH: If the reference count is > 1, decrement 524 - * it; otherwise free the block. 523 + * Release the xattr block BH: If the reference count is > 1, decrement it; 524 + * otherwise free the block. 525 525 */ 526 526 static void 527 527 ext4_xattr_release_block(handle_t *handle, struct inode *inode, ··· 542 542 if (ce) 543 543 mb_cache_entry_free(ce); 544 544 get_bh(bh); 545 + unlock_buffer(bh); 545 546 ext4_free_blocks(handle, inode, bh, 0, 1, 546 547 EXT4_FREE_BLOCKS_METADATA | 547 548 EXT4_FREE_BLOCKS_FORGET); 548 - unlock_buffer(bh); 549 549 } else { 550 550 le32_add_cpu(&BHDR(bh)->h_refcount, -1); 551 551 if (ce) 552 552 mb_cache_entry_release(ce); 553 + /* 554 + * Beware of this ugliness: Releasing of xattr block references 555 + * from different inodes can race and so we have to protect 556 + * from a race where someone else frees the block (and releases 557 + * its journal_head) before we are done dirtying the buffer. In 558 + * nojournal mode this race is harmless and we actually cannot 559 + * call ext4_handle_dirty_xattr_block() with locked buffer as 560 + * that function can call sync_dirty_buffer() so for that case 561 + * we handle the dirtying after unlocking the buffer. 562 + */ 563 + if (ext4_handle_valid(handle)) 564 + error = ext4_handle_dirty_xattr_block(handle, inode, 565 + bh); 553 566 unlock_buffer(bh); 554 - error = ext4_handle_dirty_xattr_block(handle, inode, bh); 567 + if (!ext4_handle_valid(handle)) 568 + error = ext4_handle_dirty_xattr_block(handle, inode, 569 + bh); 555 570 if (IS_SYNC(inode)) 556 571 ext4_handle_sync(handle); 557 572 dquot_free_block(inode, EXT4_C2B(EXT4_SB(inode->i_sb), 1));
+6 -6
fs/fcntl.c
··· 274 274 break; 275 275 #if BITS_PER_LONG != 32 276 276 /* 32-bit arches must use fcntl64() */ 277 - case F_GETLKP: 277 + case F_OFD_GETLK: 278 278 #endif 279 279 case F_GETLK: 280 280 err = fcntl_getlk(filp, cmd, (struct flock __user *) arg); 281 281 break; 282 282 #if BITS_PER_LONG != 32 283 283 /* 32-bit arches must use fcntl64() */ 284 - case F_SETLKP: 285 - case F_SETLKPW: 284 + case F_OFD_SETLK: 285 + case F_OFD_SETLKW: 286 286 #endif 287 287 /* Fallthrough */ 288 288 case F_SETLK: ··· 399 399 400 400 switch (cmd) { 401 401 case F_GETLK64: 402 - case F_GETLKP: 402 + case F_OFD_GETLK: 403 403 err = fcntl_getlk64(f.file, cmd, (struct flock64 __user *) arg); 404 404 break; 405 405 case F_SETLK64: 406 406 case F_SETLKW64: 407 - case F_SETLKP: 408 - case F_SETLKPW: 407 + case F_OFD_SETLK: 408 + case F_OFD_SETLKW: 409 409 err = fcntl_setlk64(fd, f.file, cmd, 410 410 (struct flock64 __user *) arg); 411 411 break;
+6 -3
fs/kernfs/dir.c
··· 232 232 struct rb_node **node = &kn->parent->dir.children.rb_node; 233 233 struct rb_node *parent = NULL; 234 234 235 - if (kernfs_type(kn) == KERNFS_DIR) 236 - kn->parent->dir.subdirs++; 237 - 238 235 while (*node) { 239 236 struct kernfs_node *pos; 240 237 int result; ··· 246 249 else 247 250 return -EEXIST; 248 251 } 252 + 249 253 /* add new node and rebalance the tree */ 250 254 rb_link_node(&kn->rb, parent, node); 251 255 rb_insert_color(&kn->rb, &kn->parent->dir.children); 256 + 257 + /* successfully added, account subdir number */ 258 + if (kernfs_type(kn) == KERNFS_DIR) 259 + kn->parent->dir.subdirs++; 260 + 252 261 return 0; 253 262 } 254 263
+2
fs/kernfs/file.c
··· 484 484 485 485 ops = kernfs_ops(of->kn); 486 486 rc = ops->mmap(of, vma); 487 + if (rc) 488 + goto out_put; 487 489 488 490 /* 489 491 * PowerPC's pci_mmap of legacy_mem uses shmem_zero_setup()
+27 -28
fs/locks.c
··· 135 135 #define IS_POSIX(fl) (fl->fl_flags & FL_POSIX) 136 136 #define IS_FLOCK(fl) (fl->fl_flags & FL_FLOCK) 137 137 #define IS_LEASE(fl) (fl->fl_flags & (FL_LEASE|FL_DELEG)) 138 - #define IS_FILE_PVT(fl) (fl->fl_flags & FL_FILE_PVT) 138 + #define IS_OFDLCK(fl) (fl->fl_flags & FL_OFDLCK) 139 139 140 140 static bool lease_breaking(struct file_lock *fl) 141 141 { ··· 564 564 BUG_ON(!list_empty(&waiter->fl_block)); 565 565 waiter->fl_next = blocker; 566 566 list_add_tail(&waiter->fl_block, &blocker->fl_block); 567 - if (IS_POSIX(blocker) && !IS_FILE_PVT(blocker)) 567 + if (IS_POSIX(blocker) && !IS_OFDLCK(blocker)) 568 568 locks_insert_global_blocked(waiter); 569 569 } 570 570 ··· 759 759 * of tasks (such as posix threads) sharing the same open file table. 760 760 * To handle those cases, we just bail out after a few iterations. 761 761 * 762 - * For FL_FILE_PVT locks, the owner is the filp, not the files_struct. 762 + * For FL_OFDLCK locks, the owner is the filp, not the files_struct. 763 763 * Because the owner is not even nominally tied to a thread of 764 764 * execution, the deadlock detection below can't reasonably work well. Just 765 765 * skip it for those. 766 766 * 767 - * In principle, we could do a more limited deadlock detection on FL_FILE_PVT 767 + * In principle, we could do a more limited deadlock detection on FL_OFDLCK 768 768 * locks that just checks for the case where two tasks are attempting to 769 769 * upgrade from read to write locks on the same inode. 770 770 */ ··· 791 791 792 792 /* 793 793 * This deadlock detector can't reasonably detect deadlocks with 794 - * FL_FILE_PVT locks, since they aren't owned by a process, per-se. 794 + * FL_OFDLCK locks, since they aren't owned by a process, per-se. 795 795 */ 796 - if (IS_FILE_PVT(caller_fl)) 796 + if (IS_OFDLCK(caller_fl)) 797 797 return 0; 798 798 799 799 while ((block_fl = what_owner_is_waiting_for(block_fl))) { ··· 1391 1391 1392 1392 restart: 1393 1393 break_time = flock->fl_break_time; 1394 - if (break_time != 0) { 1394 + if (break_time != 0) 1395 1395 break_time -= jiffies; 1396 - if (break_time == 0) 1397 - break_time++; 1398 - } 1396 + if (break_time == 0) 1397 + break_time++; 1399 1398 locks_insert_block(flock, new_fl); 1400 1399 spin_unlock(&inode->i_lock); 1401 1400 error = wait_event_interruptible_timeout(new_fl->fl_wait, ··· 1890 1891 1891 1892 static int posix_lock_to_flock(struct flock *flock, struct file_lock *fl) 1892 1893 { 1893 - flock->l_pid = IS_FILE_PVT(fl) ? -1 : fl->fl_pid; 1894 + flock->l_pid = IS_OFDLCK(fl) ? -1 : fl->fl_pid; 1894 1895 #if BITS_PER_LONG == 32 1895 1896 /* 1896 1897 * Make sure we can represent the posix lock via ··· 1912 1913 #if BITS_PER_LONG == 32 1913 1914 static void posix_lock_to_flock64(struct flock64 *flock, struct file_lock *fl) 1914 1915 { 1915 - flock->l_pid = IS_FILE_PVT(fl) ? -1 : fl->fl_pid; 1916 + flock->l_pid = IS_OFDLCK(fl) ? -1 : fl->fl_pid; 1916 1917 flock->l_start = fl->fl_start; 1917 1918 flock->l_len = fl->fl_end == OFFSET_MAX ? 0 : 1918 1919 fl->fl_end - fl->fl_start + 1; ··· 1941 1942 if (error) 1942 1943 goto out; 1943 1944 1944 - if (cmd == F_GETLKP) { 1945 + if (cmd == F_OFD_GETLK) { 1945 1946 error = -EINVAL; 1946 1947 if (flock.l_pid != 0) 1947 1948 goto out; 1948 1949 1949 1950 cmd = F_GETLK; 1950 - file_lock.fl_flags |= FL_FILE_PVT; 1951 + file_lock.fl_flags |= FL_OFDLCK; 1951 1952 file_lock.fl_owner = (fl_owner_t)filp; 1952 1953 } 1953 1954 ··· 2073 2074 2074 2075 /* 2075 2076 * If the cmd is requesting file-private locks, then set the 2076 - * FL_FILE_PVT flag and override the owner. 2077 + * FL_OFDLCK flag and override the owner. 2077 2078 */ 2078 2079 switch (cmd) { 2079 - case F_SETLKP: 2080 + case F_OFD_SETLK: 2080 2081 error = -EINVAL; 2081 2082 if (flock.l_pid != 0) 2082 2083 goto out; 2083 2084 2084 2085 cmd = F_SETLK; 2085 - file_lock->fl_flags |= FL_FILE_PVT; 2086 + file_lock->fl_flags |= FL_OFDLCK; 2086 2087 file_lock->fl_owner = (fl_owner_t)filp; 2087 2088 break; 2088 - case F_SETLKPW: 2089 + case F_OFD_SETLKW: 2089 2090 error = -EINVAL; 2090 2091 if (flock.l_pid != 0) 2091 2092 goto out; 2092 2093 2093 2094 cmd = F_SETLKW; 2094 - file_lock->fl_flags |= FL_FILE_PVT; 2095 + file_lock->fl_flags |= FL_OFDLCK; 2095 2096 file_lock->fl_owner = (fl_owner_t)filp; 2096 2097 /* Fallthrough */ 2097 2098 case F_SETLKW: ··· 2143 2144 if (error) 2144 2145 goto out; 2145 2146 2146 - if (cmd == F_GETLKP) { 2147 + if (cmd == F_OFD_GETLK) { 2147 2148 error = -EINVAL; 2148 2149 if (flock.l_pid != 0) 2149 2150 goto out; 2150 2151 2151 2152 cmd = F_GETLK64; 2152 - file_lock.fl_flags |= FL_FILE_PVT; 2153 + file_lock.fl_flags |= FL_OFDLCK; 2153 2154 file_lock.fl_owner = (fl_owner_t)filp; 2154 2155 } 2155 2156 ··· 2208 2209 2209 2210 /* 2210 2211 * If the cmd is requesting file-private locks, then set the 2211 - * FL_FILE_PVT flag and override the owner. 2212 + * FL_OFDLCK flag and override the owner. 2212 2213 */ 2213 2214 switch (cmd) { 2214 - case F_SETLKP: 2215 + case F_OFD_SETLK: 2215 2216 error = -EINVAL; 2216 2217 if (flock.l_pid != 0) 2217 2218 goto out; 2218 2219 2219 2220 cmd = F_SETLK64; 2220 - file_lock->fl_flags |= FL_FILE_PVT; 2221 + file_lock->fl_flags |= FL_OFDLCK; 2221 2222 file_lock->fl_owner = (fl_owner_t)filp; 2222 2223 break; 2223 - case F_SETLKPW: 2224 + case F_OFD_SETLKW: 2224 2225 error = -EINVAL; 2225 2226 if (flock.l_pid != 0) 2226 2227 goto out; 2227 2228 2228 2229 cmd = F_SETLKW64; 2229 - file_lock->fl_flags |= FL_FILE_PVT; 2230 + file_lock->fl_flags |= FL_OFDLCK; 2230 2231 file_lock->fl_owner = (fl_owner_t)filp; 2231 2232 /* Fallthrough */ 2232 2233 case F_SETLKW64: ··· 2412 2413 if (IS_POSIX(fl)) { 2413 2414 if (fl->fl_flags & FL_ACCESS) 2414 2415 seq_printf(f, "ACCESS"); 2415 - else if (IS_FILE_PVT(fl)) 2416 - seq_printf(f, "FLPVT "); 2416 + else if (IS_OFDLCK(fl)) 2417 + seq_printf(f, "OFDLCK"); 2417 2418 else 2418 2419 seq_printf(f, "POSIX "); 2419 2420
+3 -1
fs/nfsd/nfs4callback.c
··· 654 654 655 655 static int setup_callback_client(struct nfs4_client *clp, struct nfs4_cb_conn *conn, struct nfsd4_session *ses) 656 656 { 657 + int maxtime = max_cb_time(clp->net); 657 658 struct rpc_timeout timeparms = { 658 - .to_initval = max_cb_time(clp->net), 659 + .to_initval = maxtime, 659 660 .to_retries = 0, 661 + .to_maxval = maxtime, 660 662 }; 661 663 struct rpc_create_args args = { 662 664 .net = clp->net,
-8
fs/nfsd/nfs4xdr.c
··· 3627 3627 /* nfsd4_check_resp_size guarantees enough room for error status */ 3628 3628 if (!op->status) 3629 3629 op->status = nfsd4_check_resp_size(resp, 0); 3630 - if (op->status == nfserr_resource && nfsd4_has_session(&resp->cstate)) { 3631 - struct nfsd4_slot *slot = resp->cstate.slot; 3632 - 3633 - if (slot->sl_flags & NFSD4_SLOT_CACHETHIS) 3634 - op->status = nfserr_rep_too_big_to_cache; 3635 - else 3636 - op->status = nfserr_rep_too_big; 3637 - } 3638 3630 if (so) { 3639 3631 so->so_replay.rp_status = op->status; 3640 3632 so->so_replay.rp_buflen = (char *)resp->p - (char *)(statp+1);
+9 -12
fs/open.c
··· 254 254 return -EBADF; 255 255 256 256 /* 257 - * It's not possible to punch hole or perform collapse range 258 - * on append only file 257 + * We can only allow pure fallocate on append only files 259 258 */ 260 - if (mode & (FALLOC_FL_PUNCH_HOLE | FALLOC_FL_COLLAPSE_RANGE) 261 - && IS_APPEND(inode)) 259 + if ((mode & ~FALLOC_FL_KEEP_SIZE) && IS_APPEND(inode)) 262 260 return -EPERM; 263 261 264 262 if (IS_IMMUTABLE(inode)) 265 263 return -EPERM; 264 + 265 + /* 266 + * We can not allow to do any fallocate operation on an active 267 + * swapfile 268 + */ 269 + if (IS_SWAPFILE(inode)) 270 + ret = -ETXTBSY; 266 271 267 272 /* 268 273 * Revalidate the write permissions, in case security policy has ··· 290 285 /* Check for wrap through zero too */ 291 286 if (((offset + len) > inode->i_sb->s_maxbytes) || ((offset + len) < 0)) 292 287 return -EFBIG; 293 - 294 - /* 295 - * There is no need to overlap collapse range with EOF, in which case 296 - * it is effectively a truncate operation 297 - */ 298 - if ((mode & FALLOC_FL_COLLAPSE_RANGE) && 299 - (offset + len >= i_size_read(inode))) 300 - return -EINVAL; 301 288 302 289 if (!file->f_op->fallocate) 303 290 return -EOPNOTSUPP;
+9 -1
fs/xfs/xfs_file.c
··· 841 841 goto out_unlock; 842 842 } 843 843 844 - ASSERT(offset + len < i_size_read(inode)); 844 + /* 845 + * There is no need to overlap collapse range with EOF, 846 + * in which case it is effectively a truncate operation 847 + */ 848 + if (offset + len >= i_size_read(inode)) { 849 + error = -EINVAL; 850 + goto out_unlock; 851 + } 852 + 845 853 new_size = i_size_read(inode) - len; 846 854 847 855 error = xfs_collapse_file_space(ip, offset, len);
+2 -6
include/asm-generic/word-at-a-time.h
··· 50 50 } 51 51 52 52 #ifndef zero_bytemask 53 - #ifdef CONFIG_64BIT 54 - #define zero_bytemask(mask) (~0ul << fls64(mask)) 55 - #else 56 - #define zero_bytemask(mask) (~0ul << fls(mask)) 57 - #endif /* CONFIG_64BIT */ 58 - #endif /* zero_bytemask */ 53 + #define zero_bytemask(mask) (~0ul << __fls(mask) << 1) 54 + #endif 59 55 60 56 #endif /* _ASM_WORD_AT_A_TIME_H */
+3 -3
include/dt-bindings/clock/tegra124-car.h
··· 29 29 /* 10 (register bit affects spdif_in and spdif_out) */ 30 30 #define TEGRA124_CLK_I2S1 11 31 31 #define TEGRA124_CLK_I2C1 12 32 - #define TEGRA124_CLK_NDFLASH 13 32 + /* 13 */ 33 33 #define TEGRA124_CLK_SDMMC1 14 34 34 #define TEGRA124_CLK_SDMMC4 15 35 35 /* 16 */ ··· 83 83 84 84 /* 64 */ 85 85 #define TEGRA124_CLK_UARTD 65 86 - #define TEGRA124_CLK_UARTE 66 86 + /* 66 */ 87 87 #define TEGRA124_CLK_I2C3 67 88 88 #define TEGRA124_CLK_SBC4 68 89 89 #define TEGRA124_CLK_SDMMC3 69 ··· 97 97 #define TEGRA124_CLK_TRACE 77 98 98 #define TEGRA124_CLK_SOC_THERM 78 99 99 #define TEGRA124_CLK_DTV 79 100 - #define TEGRA124_CLK_NDSPEED 80 100 + /* 80 */ 101 101 #define TEGRA124_CLK_I2CSLOW 81 102 102 #define TEGRA124_CLK_DSIB 82 103 103 #define TEGRA124_CLK_TSEC 83
+1 -1
include/linux/fs.h
··· 815 815 #define FL_SLEEP 128 /* A blocking lock */ 816 816 #define FL_DOWNGRADE_PENDING 256 /* Lease is being downgraded */ 817 817 #define FL_UNLOCK_PENDING 512 /* Lease is being broken */ 818 - #define FL_FILE_PVT 1024 /* lock is private to the file */ 818 + #define FL_OFDLCK 1024 /* lock is "owned" by struct file */ 819 819 820 820 /* 821 821 * Special return value from posix_lock_file() and vfs_lock_file() for
+34 -1
include/linux/interrupt.h
··· 203 203 204 204 extern cpumask_var_t irq_default_affinity; 205 205 206 - extern int irq_set_affinity(unsigned int irq, const struct cpumask *cpumask); 206 + /* Internal implementation. Use the helpers below */ 207 + extern int __irq_set_affinity(unsigned int irq, const struct cpumask *cpumask, 208 + bool force); 209 + 210 + /** 211 + * irq_set_affinity - Set the irq affinity of a given irq 212 + * @irq: Interrupt to set affinity 213 + * @mask: cpumask 214 + * 215 + * Fails if cpumask does not contain an online CPU 216 + */ 217 + static inline int 218 + irq_set_affinity(unsigned int irq, const struct cpumask *cpumask) 219 + { 220 + return __irq_set_affinity(irq, cpumask, false); 221 + } 222 + 223 + /** 224 + * irq_force_affinity - Force the irq affinity of a given irq 225 + * @irq: Interrupt to set affinity 226 + * @mask: cpumask 227 + * 228 + * Same as irq_set_affinity, but without checking the mask against 229 + * online cpus. 230 + * 231 + * Solely for low level cpu hotplug code, where we need to make per 232 + * cpu interrupts affine before the cpu becomes online. 233 + */ 234 + static inline int 235 + irq_force_affinity(unsigned int irq, const struct cpumask *cpumask) 236 + { 237 + return __irq_set_affinity(irq, cpumask, true); 238 + } 239 + 207 240 extern int irq_can_set_affinity(unsigned int irq); 208 241 extern int irq_select_affinity(unsigned int irq); 209 242
+2 -1
include/linux/irq.h
··· 394 394 395 395 extern void irq_cpu_online(void); 396 396 extern void irq_cpu_offline(void); 397 - extern int __irq_set_affinity_locked(struct irq_data *data, const struct cpumask *cpumask); 397 + extern int irq_set_affinity_locked(struct irq_data *data, 398 + const struct cpumask *cpumask, bool force); 398 399 399 400 #if defined(CONFIG_SMP) && defined(CONFIG_GENERIC_PENDING_IRQ) 400 401 void irq_move_irq(struct irq_data *data);
+1
include/linux/libata.h
··· 822 822 unsigned long qc_allocated; 823 823 unsigned int qc_active; 824 824 int nr_active_links; /* #links with active qcs */ 825 + unsigned int last_tag; /* track next tag hw expects */ 825 826 826 827 struct ata_link link; /* host default link */ 827 828 struct ata_link *slave_link; /* see ata_slave_link_init() */
+16
include/linux/phy/phy.h
··· 174 174 #else 175 175 static inline int phy_pm_runtime_get(struct phy *phy) 176 176 { 177 + if (!phy) 178 + return 0; 177 179 return -ENOSYS; 178 180 } 179 181 180 182 static inline int phy_pm_runtime_get_sync(struct phy *phy) 181 183 { 184 + if (!phy) 185 + return 0; 182 186 return -ENOSYS; 183 187 } 184 188 185 189 static inline int phy_pm_runtime_put(struct phy *phy) 186 190 { 191 + if (!phy) 192 + return 0; 187 193 return -ENOSYS; 188 194 } 189 195 190 196 static inline int phy_pm_runtime_put_sync(struct phy *phy) 191 197 { 198 + if (!phy) 199 + return 0; 192 200 return -ENOSYS; 193 201 } 194 202 ··· 212 204 213 205 static inline int phy_init(struct phy *phy) 214 206 { 207 + if (!phy) 208 + return 0; 215 209 return -ENOSYS; 216 210 } 217 211 218 212 static inline int phy_exit(struct phy *phy) 219 213 { 214 + if (!phy) 215 + return 0; 220 216 return -ENOSYS; 221 217 } 222 218 223 219 static inline int phy_power_on(struct phy *phy) 224 220 { 221 + if (!phy) 222 + return 0; 225 223 return -ENOSYS; 226 224 } 227 225 228 226 static inline int phy_power_off(struct phy *phy) 229 227 { 228 + if (!phy) 229 + return 0; 230 230 return -ENOSYS; 231 231 } 232 232
+2 -2
include/linux/regulator/consumer.h
··· 258 258 static inline struct regulator *__must_check 259 259 regulator_get_optional(struct device *dev, const char *id) 260 260 { 261 - return NULL; 261 + return ERR_PTR(-ENODEV); 262 262 } 263 263 264 264 265 265 static inline struct regulator *__must_check 266 266 devm_regulator_get_optional(struct device *dev, const char *id) 267 267 { 268 - return NULL; 268 + return ERR_PTR(-ENODEV); 269 269 } 270 270 271 271 static inline void regulator_put(struct regulator *regulator)
+1
include/linux/serio.h
··· 23 23 24 24 char name[32]; 25 25 char phys[32]; 26 + char firmware_id[128]; 26 27 27 28 bool manual_bind; 28 29
+1
include/linux/tty.h
··· 61 61 struct tty_buffer *head; /* Queue head */ 62 62 struct work_struct work; 63 63 struct mutex lock; 64 + spinlock_t flush_lock; 64 65 atomic_t priority; 65 66 struct tty_buffer sentinel; 66 67 struct llist_head free; /* Free queue head */
-9
include/trace/events/ext4.h
··· 16 16 struct ext4_map_blocks; 17 17 struct extent_status; 18 18 19 - /* shim until we merge in the xfs_collapse_range branch */ 20 - #ifndef FALLOC_FL_COLLAPSE_RANGE 21 - #define FALLOC_FL_COLLAPSE_RANGE 0x08 22 - #endif 23 - 24 - #ifndef FALLOC_FL_ZERO_RANGE 25 - #define FALLOC_FL_ZERO_RANGE 0x10 26 - #endif 27 - 28 19 #define EXT4_I(inode) (container_of(inode, struct ext4_inode_info, vfs_inode)) 29 20 30 21 #define show_mballoc_flags(flags) __print_flags(flags, "|", \
+10 -10
include/uapi/asm-generic/fcntl.h
··· 133 133 #endif 134 134 135 135 /* 136 - * fd "private" POSIX locks. 136 + * Open File Description Locks 137 137 * 138 - * Usually POSIX locks held by a process are released on *any* close and are 138 + * Usually record locks held by a process are released on *any* close and are 139 139 * not inherited across a fork(). 140 140 * 141 - * These cmd values will set locks that conflict with normal POSIX locks, but 142 - * are "owned" by the opened file, not the process. This means that they are 143 - * inherited across fork() like BSD (flock) locks, and they are only released 144 - * automatically when the last reference to the the open file against which 145 - * they were acquired is put. 141 + * These cmd values will set locks that conflict with process-associated 142 + * record locks, but are "owned" by the open file description, not the 143 + * process. This means that they are inherited across fork() like BSD (flock) 144 + * locks, and they are only released automatically when the last reference to 145 + * the the open file against which they were acquired is put. 146 146 */ 147 - #define F_GETLKP 36 148 - #define F_SETLKP 37 149 - #define F_SETLKPW 38 147 + #define F_OFD_GETLK 36 148 + #define F_OFD_SETLK 37 149 + #define F_OFD_SETLKW 38 150 150 151 151 #define F_OWNER_TID 0 152 152 #define F_OWNER_PID 1
+1
include/uapi/linux/input.h
··· 164 164 #define INPUT_PROP_DIRECT 0x01 /* direct input devices */ 165 165 #define INPUT_PROP_BUTTONPAD 0x02 /* has button(s) under pad */ 166 166 #define INPUT_PROP_SEMI_MT 0x03 /* touch rectangle only */ 167 + #define INPUT_PROP_TOPBUTTONPAD 0x04 /* softbuttons at top of pad */ 167 168 168 169 #define INPUT_PROP_MAX 0x1f 169 170 #define INPUT_PROP_CNT (INPUT_PROP_MAX + 1)
+6 -11
kernel/irq/manage.c
··· 180 180 struct irq_chip *chip = irq_data_get_irq_chip(data); 181 181 int ret; 182 182 183 - ret = chip->irq_set_affinity(data, mask, false); 183 + ret = chip->irq_set_affinity(data, mask, force); 184 184 switch (ret) { 185 185 case IRQ_SET_MASK_OK: 186 186 cpumask_copy(data->affinity, mask); ··· 192 192 return ret; 193 193 } 194 194 195 - int __irq_set_affinity_locked(struct irq_data *data, const struct cpumask *mask) 195 + int irq_set_affinity_locked(struct irq_data *data, const struct cpumask *mask, 196 + bool force) 196 197 { 197 198 struct irq_chip *chip = irq_data_get_irq_chip(data); 198 199 struct irq_desc *desc = irq_data_to_desc(data); ··· 203 202 return -EINVAL; 204 203 205 204 if (irq_can_move_pcntxt(data)) { 206 - ret = irq_do_set_affinity(data, mask, false); 205 + ret = irq_do_set_affinity(data, mask, force); 207 206 } else { 208 207 irqd_set_move_pending(data); 209 208 irq_copy_pending(desc, mask); ··· 218 217 return ret; 219 218 } 220 219 221 - /** 222 - * irq_set_affinity - Set the irq affinity of a given irq 223 - * @irq: Interrupt to set affinity 224 - * @mask: cpumask 225 - * 226 - */ 227 - int irq_set_affinity(unsigned int irq, const struct cpumask *mask) 220 + int __irq_set_affinity(unsigned int irq, const struct cpumask *mask, bool force) 228 221 { 229 222 struct irq_desc *desc = irq_to_desc(irq); 230 223 unsigned long flags; ··· 228 233 return -EINVAL; 229 234 230 235 raw_spin_lock_irqsave(&desc->lock, flags); 231 - ret = __irq_set_affinity_locked(irq_desc_get_irq_data(desc), mask); 236 + ret = irq_set_affinity_locked(irq_desc_get_irq_data(desc), mask, force); 232 237 raw_spin_unlock_irqrestore(&desc->lock, flags); 233 238 return ret; 234 239 }
+3
kernel/power/suspend.c
··· 14 14 #include <linux/init.h> 15 15 #include <linux/console.h> 16 16 #include <linux/cpu.h> 17 + #include <linux/cpuidle.h> 17 18 #include <linux/syscalls.h> 18 19 #include <linux/gfp.h> 19 20 #include <linux/io.h> ··· 54 53 55 54 static void freeze_enter(void) 56 55 { 56 + cpuidle_resume(); 57 57 wait_event(suspend_freeze_wait_head, suspend_freeze_wake); 58 + cpuidle_pause(); 58 59 } 59 60 60 61 void freeze_wake(void)
+39 -19
mm/memory.c
··· 232 232 #endif 233 233 } 234 234 235 - void tlb_flush_mmu(struct mmu_gather *tlb) 235 + static void tlb_flush_mmu_tlbonly(struct mmu_gather *tlb) 236 236 { 237 - struct mmu_gather_batch *batch; 238 - 239 - if (!tlb->need_flush) 240 - return; 241 237 tlb->need_flush = 0; 242 238 tlb_flush(tlb); 243 239 #ifdef CONFIG_HAVE_RCU_TABLE_FREE 244 240 tlb_table_flush(tlb); 245 241 #endif 242 + } 243 + 244 + static void tlb_flush_mmu_free(struct mmu_gather *tlb) 245 + { 246 + struct mmu_gather_batch *batch; 246 247 247 248 for (batch = &tlb->local; batch; batch = batch->next) { 248 249 free_pages_and_swap_cache(batch->pages, batch->nr); 249 250 batch->nr = 0; 250 251 } 251 252 tlb->active = &tlb->local; 253 + } 254 + 255 + void tlb_flush_mmu(struct mmu_gather *tlb) 256 + { 257 + if (!tlb->need_flush) 258 + return; 259 + tlb_flush_mmu_tlbonly(tlb); 260 + tlb_flush_mmu_free(tlb); 252 261 } 253 262 254 263 /* tlb_finish_mmu ··· 1136 1127 if (PageAnon(page)) 1137 1128 rss[MM_ANONPAGES]--; 1138 1129 else { 1139 - if (pte_dirty(ptent)) 1130 + if (pte_dirty(ptent)) { 1131 + force_flush = 1; 1140 1132 set_page_dirty(page); 1133 + } 1141 1134 if (pte_young(ptent) && 1142 1135 likely(!(vma->vm_flags & VM_SEQ_READ))) 1143 1136 mark_page_accessed(page); ··· 1148 1137 page_remove_rmap(page); 1149 1138 if (unlikely(page_mapcount(page) < 0)) 1150 1139 print_bad_pte(vma, addr, ptent, page); 1151 - force_flush = !__tlb_remove_page(tlb, page); 1152 - if (force_flush) 1140 + if (unlikely(!__tlb_remove_page(tlb, page))) { 1141 + force_flush = 1; 1153 1142 break; 1143 + } 1154 1144 continue; 1155 1145 } 1156 1146 /* ··· 1186 1174 1187 1175 add_mm_rss_vec(mm, rss); 1188 1176 arch_leave_lazy_mmu_mode(); 1189 - pte_unmap_unlock(start_pte, ptl); 1190 1177 1191 - /* 1192 - * mmu_gather ran out of room to batch pages, we break out of 1193 - * the PTE lock to avoid doing the potential expensive TLB invalidate 1194 - * and page-free while holding it. 1195 - */ 1178 + /* Do the actual TLB flush before dropping ptl */ 1196 1179 if (force_flush) { 1197 1180 unsigned long old_end; 1198 - 1199 - force_flush = 0; 1200 1181 1201 1182 /* 1202 1183 * Flush the TLB just for the previous segment, ··· 1198 1193 */ 1199 1194 old_end = tlb->end; 1200 1195 tlb->end = addr; 1201 - 1202 - tlb_flush_mmu(tlb); 1203 - 1196 + tlb_flush_mmu_tlbonly(tlb); 1204 1197 tlb->start = addr; 1205 1198 tlb->end = old_end; 1199 + } 1200 + pte_unmap_unlock(start_pte, ptl); 1201 + 1202 + /* 1203 + * If we forced a TLB flush (either due to running out of 1204 + * batch buffers or because we needed to flush dirty TLB 1205 + * entries before releasing the ptl), free the batched 1206 + * memory too. Restart if we didn't do everything. 1207 + */ 1208 + if (force_flush) { 1209 + force_flush = 0; 1210 + tlb_flush_mmu_free(tlb); 1206 1211 1207 1212 if (addr != end) 1208 1213 goto again; ··· 1970 1955 unsigned long address, unsigned int fault_flags) 1971 1956 { 1972 1957 struct vm_area_struct *vma; 1958 + vm_flags_t vm_flags; 1973 1959 int ret; 1974 1960 1975 1961 vma = find_extend_vma(mm, address); 1976 1962 if (!vma || address < vma->vm_start) 1963 + return -EFAULT; 1964 + 1965 + vm_flags = (fault_flags & FAULT_FLAG_WRITE) ? VM_WRITE : VM_READ; 1966 + if (!(vm_flags & vma->vm_flags)) 1977 1967 return -EFAULT; 1978 1968 1979 1969 ret = handle_mm_fault(mm, vma, address, fault_flags);
+3 -3
security/selinux/hooks.c
··· 3317 3317 case F_GETLK: 3318 3318 case F_SETLK: 3319 3319 case F_SETLKW: 3320 - case F_GETLKP: 3321 - case F_SETLKP: 3322 - case F_SETLKPW: 3320 + case F_OFD_GETLK: 3321 + case F_OFD_SETLK: 3322 + case F_OFD_SETLKW: 3323 3323 #if BITS_PER_LONG == 32 3324 3324 case F_GETLK64: 3325 3325 case F_SETLK64:
+1 -10
tools/power/acpi/Makefile
··· 89 89 STRIPCMD = $(STRIP) -s --remove-section=.note --remove-section=.comment 90 90 endif 91 91 92 - # if DEBUG is enabled, then we do not strip or optimize 93 - ifeq ($(strip $(DEBUG)),true) 94 - CFLAGS += -O1 -g -DDEBUG 95 - STRIPCMD = /bin/true -Since_we_are_debugging 96 - else 97 - CFLAGS += $(OPTIMIZATION) -fomit-frame-pointer 98 - STRIPCMD = $(STRIP) -s --remove-section=.note --remove-section=.comment 99 - endif 100 - 101 92 # --- ACPIDUMP BEGIN --- 102 93 103 94 vpath %.c \ ··· 119 128 -rm -f $(OUTPUT)acpidump 120 129 121 130 install-tools: 122 - $(INSTALL) -d $(DESTDIR)${bindir} 131 + $(INSTALL) -d $(DESTDIR)${sbindir} 123 132 $(INSTALL_PROGRAM) $(OUTPUT)acpidump $(DESTDIR)${sbindir} 124 133 125 134 install-man: