firefly-linux-kernel-4.4.55.git
11 years agoMerge remote-tracking branch 'origin/develop-3.0' into develop-3.0-jb
黄涛 [Tue, 21 Aug 2012 06:14:24 +0000 (14:14 +0800)]
Merge remote-tracking branch 'origin/develop-3.0' into develop-3.0-jb

Conflicts:
include/net/cfg80211.h

11 years agoMerge remote-tracking branch 'stable/linux-3.0.y' into develop-3.0-jb
黄涛 [Tue, 21 Aug 2012 05:11:48 +0000 (13:11 +0800)]
Merge remote-tracking branch 'stable/linux-3.0.y' into develop-3.0-jb

Conflicts:
Makefile
drivers/net/tun.c
drivers/net/wireless/rt2x00/rt61pci.c
drivers/usb/core/hub.c
sound/soc/codecs/wm8994.c

11 years agork2928:sdk and a720:support pmu sleep
张晴 [Tue, 21 Aug 2012 04:04:40 +0000 (12:04 +0800)]
rk2928:sdk and a720:support pmu sleep

11 years agologo: bmp: default n
黄涛 [Tue, 21 Aug 2012 03:57:29 +0000 (11:57 +0800)]
logo: bmp: default n

11 years agophonepad:add touch screen Kconfig again
lw [Tue, 21 Aug 2012 03:51:35 +0000 (11:51 +0800)]
phonepad:add touch screen Kconfig again

11 years agork30: rm the sram_printch(8)
许盛飞 [Tue, 21 Aug 2012 03:23:00 +0000 (11:23 +0800)]
rk30: rm the sram_printch(8)

11 years agoslove the bug -- support gpio3 and gpio4 interrupt wake up sysytem
许盛飞 [Tue, 21 Aug 2012 03:13:44 +0000 (11:13 +0800)]
slove the bug -- support gpio3 and gpio4 interrupt wake up sysytem

11 years agork2928: acodec: move audio codec platform device registration to board file to config...
Zheng Yang [Tue, 21 Aug 2012 01:50:46 +0000 (09:50 +0800)]
rk2928: acodec: move audio codec platform device registration to board file to configure speaker control pin.

11 years agork: usb_detect: mark board_usb_detect_init as __init, use irq_set_irq_type support...
黄涛 [Tue, 21 Aug 2012 01:36:17 +0000 (09:36 +0800)]
rk: usb_detect: mark board_usb_detect_init as __init, use irq_set_irq_type support both edge trigger

11 years agork2928: usb_detect: mark bvalid_init as __init, clear bvalid irq when init
黄涛 [Tue, 21 Aug 2012 01:08:32 +0000 (09:08 +0800)]
rk2928: usb_detect: mark bvalid_init as __init, clear bvalid irq when init

11 years agophonepad: make rt3261 incall volume control work.
宋秀杰 [Mon, 20 Aug 2012 14:35:49 +0000 (22:35 +0800)]
phonepad: make rt3261 incall volume control work.

11 years agork2928: pm: fix unable to suspend bug
黄涛 [Mon, 20 Aug 2012 12:53:41 +0000 (20:53 +0800)]
rk2928: pm: fix unable to suspend bug

11 years agork2928: usb_detect: support bvalid irq wake up system
黄涛 [Mon, 20 Aug 2012 12:52:44 +0000 (20:52 +0800)]
rk2928: usb_detect: support bvalid irq wake up system

11 years agork2928:sdk: default disable gpio clk
chenxing [Mon, 20 Aug 2012 12:31:16 +0000 (20:31 +0800)]
rk2928:sdk: default disable gpio clk

11 years agork2928:sdk: rename gpio(i)
chenxing [Mon, 20 Aug 2012 12:27:32 +0000 (20:27 +0800)]
rk2928:sdk: rename gpio(i)

11 years agork2928:sdk: disable unused clocks
chenxing [Mon, 20 Aug 2012 12:19:06 +0000 (20:19 +0800)]
rk2928:sdk: disable unused clocks

11 years agork2928:a720: setup frequency 600M for a720
chenxing [Mon, 20 Aug 2012 12:14:33 +0000 (20:14 +0800)]
rk2928:a720: setup frequency 600M for a720

11 years agork2928 codec: add speaker control.
Zheng Yang [Mon, 20 Aug 2012 10:40:47 +0000 (18:40 +0800)]
rk2928 codec: add speaker control.

11 years ago fix DLL off bug, fix ZQCR[1] bug, add to support change BL, add dsb()
hcy [Mon, 20 Aug 2012 09:58:39 +0000 (17:58 +0800)]
  fix DLL off bug, fix ZQCR[1] bug, add to support change BL, add dsb()

11 years agosdmmc: some card, SDHC 32G Class10, maybe miss the nobusy_INT. so close the nobusy_IN...
xbw [Mon, 20 Aug 2012 09:16:05 +0000 (17:16 +0800)]
sdmmc: some card, SDHC 32G Class10, maybe miss the nobusy_INT. so close the nobusy_INT function

11 years agocamera rk30: add scale by arm,rga and pp.
root [Mon, 20 Aug 2012 08:18:30 +0000 (16:18 +0800)]
camera rk30: add scale by arm,rga and pp.

11 years agoadd rtl8188eu to rkwifi_sys_iface.c
gwl [Mon, 20 Aug 2012 06:50:02 +0000 (14:50 +0800)]
add rtl8188eu to rkwifi_sys_iface.c

11 years agork2928:sdk: codec pll for sclk_lcdc only, aclk_vio_pre need yxj fixed, move other...
chenxing [Mon, 20 Aug 2012 06:22:55 +0000 (14:22 +0800)]
rk2928:sdk: codec pll for sclk_lcdc only, aclk_vio_pre need yxj fixed, move other clks to general pll

11 years agork2928: a720: touchscren && camera && sdmmc && usb wifi support
kfx [Mon, 20 Aug 2012 05:16:32 +0000 (13:16 +0800)]
rk2928: a720: touchscren && camera && sdmmc && usb wifi support

11 years agoMerge branch 'develop-3.0' of ssh://10.10.10.29/rk/kernel into develop-3.0
ywj [Mon, 20 Aug 2012 03:46:25 +0000 (11:46 +0800)]
Merge branch 'develop-3.0' of ssh://10.10.10.29/rk/kernel into develop-3.0

11 years agoremove bmp_logo option and del rk29_backlight.c printklog
ywj [Mon, 20 Aug 2012 03:40:56 +0000 (11:40 +0800)]
remove bmp_logo option and del rk29_backlight.c printklog

11 years agoamend DEVICE_ATTR 0660 of rk29_keys and rk29_backlight factorytool
ywj [Mon, 20 Aug 2012 03:29:51 +0000 (11:29 +0800)]
amend DEVICE_ATTR 0660 of rk29_keys and rk29_backlight factorytool

11 years agork2928 hdmi: remove unnecessary files and update low power mode
yzq [Mon, 20 Aug 2012 02:29:14 +0000 (10:29 +0800)]
rk2928 hdmi: remove unnecessary files and update low power mode

11 years agork30 hdmi: Modify Kconfig to support hdcp.
Zheng Yang [Mon, 20 Aug 2012 01:18:06 +0000 (09:18 +0800)]
rk30 hdmi: Modify Kconfig to support hdcp.

11 years agosensor:mask some debug information
lw [Sun, 19 Aug 2012 11:48:54 +0000 (19:48 +0800)]
sensor:mask some debug information

11 years agosensor:add setting gsensor orientation online support
lw@rock-chips.com [Sun, 19 Aug 2012 11:39:42 +0000 (19:39 +0800)]
sensor:add setting gsensor orientation online support

11 years agork2928: a720: cpufreq(1G) && pmic sleep io && backlight && gsensor
kfx [Sun, 19 Aug 2012 11:11:31 +0000 (19:11 +0800)]
rk2928: a720: cpufreq(1G) && pmic sleep io && backlight && gsensor

11 years agork2928 a720:add mma7660 support
lw [Sun, 19 Aug 2012 10:27:06 +0000 (18:27 +0800)]
rk2928 a720:add mma7660 support

11 years agosensor:add gsensor mma7660 support
lw [Sun, 19 Aug 2012 10:17:03 +0000 (18:17 +0800)]
sensor:add gsensor mma7660 support

11 years agork2928:a720: fix vdd_log dvfs error
chenxing [Sun, 19 Aug 2012 07:57:41 +0000 (15:57 +0800)]
rk2928:a720: fix vdd_log dvfs error

11 years agork2928: a720 init
kfx [Sun, 19 Aug 2012 07:18:44 +0000 (15:18 +0800)]
rk2928: a720 init

11 years agoRevert "add usb wifi rtl8188eus support."
黄涛 [Fri, 17 Aug 2012 14:59:47 +0000 (22:59 +0800)]
Revert "add usb wifi rtl8188eus support."

This reverts commit 1c9e9080691b9ce4f7e8c42643fa026bb020c596.

Conflicts:

drivers/net/wireless/Kconfig
drivers/net/wireless/Makefile
drivers/net/wireless/wifi_sys/rkwifi_sys_iface.c

11 years agork2928: sdk: defconfig: disable bmp logo
黄涛 [Fri, 17 Aug 2012 14:40:12 +0000 (22:40 +0800)]
rk2928: sdk: defconfig: disable bmp logo

11 years agork2928: devices.c: add dummy i2c check idle
黄涛 [Fri, 17 Aug 2012 14:37:19 +0000 (22:37 +0800)]
rk2928: devices.c: add dummy i2c check idle

11 years agork30: sdk: board-rk30-sdk.c include board-rk30-sdk-camera.c and board-rk30-sdk-key.c
黄涛 [Fri, 17 Aug 2012 14:16:19 +0000 (22:16 +0800)]
rk30: sdk: board-rk30-sdk.c include board-rk30-sdk-camera.c and board-rk30-sdk-key.c

11 years agork30: phonepad: fix gcc warning, "CONFIG_RK30_PWM_REGULATOR" is not defined
黄涛 [Fri, 17 Aug 2012 14:08:40 +0000 (22:08 +0800)]
rk30: phonepad: fix gcc warning, "CONFIG_RK30_PWM_REGULATOR" is not defined

11 years agork30: sdk: fix gcc warning, "CONFIG_RK30_PWM_REGULATOR" is not defined
黄涛 [Fri, 17 Aug 2012 14:08:24 +0000 (22:08 +0800)]
rk30: sdk: fix gcc warning, "CONFIG_RK30_PWM_REGULATOR" is not defined

11 years agork2928: sdk: fix gcc warning, "CONFIG_RK30_PWM_REGULATOR" is not defined
黄涛 [Fri, 17 Aug 2012 14:08:08 +0000 (22:08 +0800)]
rk2928: sdk: fix gcc warning, "CONFIG_RK30_PWM_REGULATOR" is not defined

11 years agoMerge remote-tracking branch 'origin/develop-3.0-rk2928' into develop-3.0
黄涛 [Fri, 17 Aug 2012 13:48:20 +0000 (21:48 +0800)]
Merge remote-tracking branch 'origin/develop-3.0-rk2928' into develop-3.0

Conflicts:
arch/arm/mach-rk30/include/mach/rk30_camera.h
arch/arm/plat-rk/include/plat/rk_camera.h
drivers/gpio/gpio-tps65910.c
drivers/media/video/rk30_camera_oneframe.c
drivers/mmc/host/rk29_sdmmc.c
drivers/net/wireless/Kconfig
drivers/net/wireless/Makefile
drivers/net/wireless/wifi_sys/rkwifi_sys_iface.c
drivers/regulator/rk30-pwm-regulator.c
drivers/usb/dwc_otg/dwc_otg_driver.c
drivers/usb/dwc_otg/dwc_otg_hcd.c
drivers/usb/dwc_otg/dwc_otg_pcd.c
sound/soc/codecs/Makefile
sound/soc/rk29/Kconfig

11 years agogitignore: ignore scripts/bmptologo
黄涛 [Fri, 17 Aug 2012 11:20:47 +0000 (19:20 +0800)]
gitignore: ignore scripts/bmptologo

11 years agobmptologo: fix gcc warning
黄涛 [Fri, 17 Aug 2012 11:17:19 +0000 (19:17 +0800)]
bmptologo: fix gcc warning

11 years agogsensor code result in system reboot,gsensor code by lw update
ywj [Fri, 17 Aug 2012 10:20:55 +0000 (18:20 +0800)]
gsensor code result in system reboot,gsensor code by lw update

11 years agocamera : support arm and rga to do digital zoom.
zyc [Fri, 17 Aug 2012 10:01:02 +0000 (18:01 +0800)]
camera : support arm and rga to do digital zoom.

11 years agoMerge branch 'develop-3.0' of ssh://10.10.10.29/rk/kernel into develop-3.0
ywj [Fri, 17 Aug 2012 09:58:04 +0000 (17:58 +0800)]
Merge branch 'develop-3.0' of ssh://10.10.10.29/rk/kernel into develop-3.0

11 years agoadd bmp photo for factory and del fb test log
ywj [Fri, 17 Aug 2012 09:57:15 +0000 (17:57 +0800)]
add bmp photo for factory and del fb test log

11 years agomerge rk2928 usb
yangkai [Fri, 17 Aug 2012 08:20:17 +0000 (16:20 +0800)]
merge rk2928 usb

11 years agoMerge branch 'develop-3.0-rk2928' of ssh://10.10.10.29/rk/kernel into develop-3.0...
gwl [Fri, 17 Aug 2012 07:10:51 +0000 (15:10 +0800)]
Merge branch 'develop-3.0-rk2928' of ssh://10.10.10.29/rk/kernel into develop-3.0-rk2928

11 years agoadd usb wifi rtl8188eus support.
gwl [Fri, 17 Aug 2012 07:10:37 +0000 (15:10 +0800)]
add usb wifi rtl8188eus support.

11 years agork2929 acodec: for internal audio codec, mclk = 64*bclk = 256*lrclk.
Zheng Yang [Fri, 17 Aug 2012 06:33:23 +0000 (14:33 +0800)]
rk2929 acodec: for internal audio codec, mclk = 64*bclk = 256*lrclk.

11 years agork30:sdk:support wm8326 early suspend and modify dcdc or ldo mode when in early suspend
张晴 [Fri, 17 Aug 2012 06:30:45 +0000 (14:30 +0800)]
rk30:sdk:support wm8326 early suspend and modify dcdc or ldo mode when in early suspend

11 years agocamera rk29: add support zoom by arm, version update to v0.x.11
ddl [Fri, 17 Aug 2012 04:24:33 +0000 (12:24 +0800)]
camera rk29: add support zoom by arm, version update to v0.x.11

11 years agoMerge branch 'develop-3.0' of ssh://10.10.10.29/rk/kernel into develop-3.0
ywj [Fri, 17 Aug 2012 03:33:49 +0000 (11:33 +0800)]
Merge branch 'develop-3.0' of ssh://10.10.10.29/rk/kernel into develop-3.0

11 years agoamend DEVICE_ATTR of rk30_factory_adc_battery for cts
ywj [Fri, 17 Aug 2012 03:32:40 +0000 (11:32 +0800)]
amend  DEVICE_ATTR of rk30_factory_adc_battery for cts

11 years agoMerge branch 'develop-3.0' of ssh://10.10.10.29/rk/kernel into develop-3.0
xbw [Fri, 17 Aug 2012 02:49:46 +0000 (10:49 +0800)]
Merge branch 'develop-3.0' of ssh://10.10.10.29/rk/kernel into develop-3.0

11 years agosdmmc: prepare for RK2918 and RK31
xbw [Fri, 17 Aug 2012 02:49:17 +0000 (10:49 +0800)]
sdmmc: prepare for RK2918 and RK31

11 years agocamera : fix conflict when merge to rk30
zyc [Fri, 17 Aug 2012 02:31:42 +0000 (10:31 +0800)]
camera : fix conflict when merge to rk30

11 years agocamera rk30 : fix conflict when merge 2928
root [Fri, 17 Aug 2012 02:25:57 +0000 (10:25 +0800)]
camera rk30 : fix conflict when merge 2928

11 years agoMerge branch 'develop-3.0' of ssh://10.10.10.29/rk/kernel into develop-3.0
ywj [Fri, 17 Aug 2012 02:03:12 +0000 (10:03 +0800)]
Merge branch 'develop-3.0' of ssh://10.10.10.29/rk/kernel into develop-3.0

11 years agosdmmc: modify the card is easy to run overtime due to data-busy.
xbw [Thu, 16 Aug 2012 12:56:48 +0000 (20:56 +0800)]
sdmmc: modify the card is easy to run overtime due to data-busy.

11 years ago3G: Support for more 3g devices
CMY [Thu, 16 Aug 2012 11:20:03 +0000 (19:20 +0800)]
3G: Support for more 3g devices

11 years agoMerge branch 'develop-3.0' of ssh://10.10.10.29/rk/kernel into develop-3.0
ywj [Thu, 16 Aug 2012 10:23:33 +0000 (18:23 +0800)]
Merge branch 'develop-3.0' of ssh://10.10.10.29/rk/kernel into develop-3.0

11 years agomerge new gsensor driver
ywj [Thu, 16 Aug 2012 09:59:08 +0000 (17:59 +0800)]
merge new gsensor driver

11 years agophonepad: codec set slave when BT incall, and set pll.
宋秀杰 [Thu, 16 Aug 2012 09:58:48 +0000 (17:58 +0800)]
phonepad: codec set slave when BT incall, and set pll.

11 years agork30 hdmi:
Zheng Yang [Thu, 16 Aug 2012 09:45:11 +0000 (17:45 +0800)]
rk30 hdmi:
1. Need not take tmds_clk pull up to 3.3V as a hdmi connection condition.
2. When parse unkown edid extensions, return false and set it as a hdmi sink.

11 years agorga: refactor rga_drv.c for support rk30/rk31/rk2928
黄涛 [Thu, 16 Aug 2012 07:55:57 +0000 (15:55 +0800)]
rga: refactor rga_drv.c for support rk30/rk31/rk2928

11 years agoInput: rk29_keys: close debug print, open by 9ea1329
黄涛 [Thu, 16 Aug 2012 04:57:25 +0000 (12:57 +0800)]
Input: rk29_keys: close debug print, open by 9ea1329

11 years agoMerge branch 'develop-3.0-rk2928' of ssh://10.10.10.29/rk/kernel into develop-3.0...
zsq [Thu, 16 Aug 2012 06:43:23 +0000 (14:43 +0800)]
Merge branch 'develop-3.0-rk2928' of ssh://10.10.10.29/rk/kernel into develop-3.0-rk2928

11 years agofix no async bug
zsq [Thu, 16 Aug 2012 06:43:06 +0000 (14:43 +0800)]
fix no async bug

11 years agonew add bmp logo for factorytool
ywj [Thu, 16 Aug 2012 06:33:38 +0000 (14:33 +0800)]
new add bmp logo for factorytool

11 years agonew add LCD driver for factorytool
ywj [Thu, 16 Aug 2012 06:31:09 +0000 (14:31 +0800)]
new add LCD driver for factorytool

11 years agonew add rk30_factory_adc_battery driver for factorytool
ywj [Thu, 16 Aug 2012 06:29:57 +0000 (14:29 +0800)]
new add rk30_factory_adc_battery driver for factorytool

11 years agoadd node of rk29_backlight and rk29_keys for factorytool
ywj [Thu, 16 Aug 2012 06:27:56 +0000 (14:27 +0800)]
add node of rk29_backlight and rk29_keys for factorytool

11 years agoadd gsensor orientation node for factorytool
ywj [Thu, 16 Aug 2012 06:25:47 +0000 (14:25 +0800)]
add gsensor orientation node for factorytool

11 years agogpio: rk2928: enable support rk30_gpiolib_pull_updown
黄涛 [Thu, 16 Aug 2012 03:51:17 +0000 (11:51 +0800)]
gpio: rk2928: enable support rk30_gpiolib_pull_updown

11 years agork2928: add initial pm support
黄涛 [Thu, 16 Aug 2012 01:43:53 +0000 (09:43 +0800)]
rk2928: add initial pm support

11 years agork2928: sram: fix loop use Thumb instruction set
黄涛 [Thu, 16 Aug 2012 01:18:32 +0000 (09:18 +0800)]
rk2928: sram: fix loop use Thumb instruction set

11 years agoi2c: rk: only rk29/rk30 need idle lock
黄涛 [Wed, 15 Aug 2012 02:41:41 +0000 (10:41 +0800)]
i2c: rk: only rk29/rk30 need idle lock

11 years agoLinux 3.0.41
Greg Kroah-Hartman [Wed, 15 Aug 2012 19:05:01 +0000 (12:05 -0700)]
Linux 3.0.41

11 years agort61pci: fix NULL pointer dereference in config_lna_gain
Stanislaw Gruszka [Fri, 3 Aug 2012 10:49:14 +0000 (12:49 +0200)]
rt61pci: fix NULL pointer dereference in config_lna_gain

commit deee0214def5d8a32b8112f11d9c2b1696e9c0cb upstream.

We can not pass NULL libconf->conf->channel to rt61pci_config() as it
is dereferenced unconditionally in rt61pci_config_lna_gain() subroutine.

Resolves:
https://bugzilla.kernel.org/show_bug.cgi?id=44361

Reported-and-tested-by: <dolohow@gmail.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agoInput: wacom - Bamboo One 1024 pressure fix
Chris Bagwell [Tue, 12 Jun 2012 07:25:48 +0000 (00:25 -0700)]
Input: wacom - Bamboo One 1024 pressure fix

commit 6dc463511d4a690f01a9248df3b384db717e0b1c upstream.

Bamboo One's with ID of 0x6a and 0x6b were added with correct
indication of 1024 pressure levels but the Graphire packet routine
was only looking at 9 bits.  Increased to 10 bits.

This bug caused these devices to roll over to zero pressure at half
way mark.

The other devices using this routine only support 256 or 512 range
and look to fix unused bits at zero.

Signed-off-by: Chris Bagwell <chris@cnpbagwell.com>
Reported-by: Tushant Mirchandani <tushantin@gmail.com>
Reviewed-by: Ping Cheng <pingc@wacom.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agoe1000e: NIC goes up and immediately goes down
Tushar Dave [Tue, 31 Jul 2012 02:02:43 +0000 (02:02 +0000)]
e1000e: NIC goes up and immediately goes down

commit b7ec70be01a87f2c85df3ae11046e74f9b67e323 upstream.

Found that commit d478eb44 was a bad commit.
If the link partner is transmitting codeword (even if NULL codeword),
then the RXCW.C bit will be set so check for RXCW.CW is unnecessary.
Ref: RH BZ 840642

Reported-by: Fabio Futigami <ffutigam@redhat.com>
Signed-off-by: Tushar Dave <tushar.n.dave@intel.com>
CC: Marcelo Ricardo Leitner <mleitner@redhat.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agocfg80211: fix interface combinations check for ADHOC(IBSS)
Liang Li [Thu, 2 Aug 2012 22:55:41 +0000 (18:55 -0400)]
cfg80211: fix interface combinations check for ADHOC(IBSS)

partial of commit 8e8b41f9d8c8e63fc92f899ace8da91a490ac573 upstream.

As part of commit 463454b5dbd8 ("cfg80211: fix interface
combinations check"), this extra check was introduced:

       if ((all_iftypes & used_iftypes) != used_iftypes)
               goto cont;

However, most wireless NIC drivers did not advertise ADHOC in
wiphy.iface_combinations[i].limits[] and hence we'll get -EBUSY
when we bring up a ADHOC wlan with commands similar to:

 # iwconfig wlan0 mode ad-hoc && ifconfig wlan0 up

In commit 8e8b41f9d8c8e ("cfg80211: enforce lack of interface
combinations"), the change below fixes the issue:

       if (total == 1)
               return 0;

But it also introduces other dependencies for stable. For example,
a full cherry pick of 8e8b41f9d8c8e would introduce additional
regressions unless we also start cherry picking driver specific
fixes like the following:

  9b4760e  ath5k: add possible wiphy interface combinations
  1ae2fc2  mac80211_hwsim: advertise interface combinations
  20c8e8d  ath9k: add possible wiphy interface combinations

And the purpose of the 'if (total == 1)' is to cover the specific
use case (IBSS, adhoc) that was mentioned above. So we just pick
the specific part out from 8e8b41f9d8c8e here.

Doing so gives stable kernels a way to fix the change introduced
by 463454b5dbd8, without having to make cherry picks specific to
various NIC drivers.

Signed-off-by: Liang Li <liang.li@windriver.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agocfg80211: process pending events when unregistering net device
Daniel Drake [Thu, 2 Aug 2012 17:41:48 +0000 (18:41 +0100)]
cfg80211: process pending events when unregistering net device

commit 1f6fc43e621167492ed4b7f3b4269c584c3d6ccc upstream.

libertas currently calls cfg80211_disconnected() when it is being
brought down. This causes an event to be allocated, but since the
wdev is already removed from the rdev by the time that the event
processing work executes, the event is never processed or freed.
http://article.gmane.org/gmane.linux.kernel.wireless.general/95666

Fix this leak, and other possible situations, by processing the event
queue when a device is being unregistered. Thanks to Johannes Berg for
the suggestion.

Signed-off-by: Daniel Drake <dsd@laptop.org>
Reviewed-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agoARM: pxa: remove irq_to_gpio from ezx-pcap driver
Arnd Bergmann [Sun, 5 Aug 2012 14:58:37 +0000 (14:58 +0000)]
ARM: pxa: remove irq_to_gpio from ezx-pcap driver

commit 59ee93a528b94ef4e81a08db252b0326feff171f upstream.

The irq_to_gpio function was removed from the pxa platform
in linux-3.2, and this driver has been broken since.

There is actually no in-tree user of this driver that adds
this platform device, but the driver can and does get enabled
on some platforms.

Without this patch, building ezx_defconfig results in:

drivers/mfd/ezx-pcap.c: In function 'pcap_isr_work':
drivers/mfd/ezx-pcap.c:205:2: error: implicit declaration of function 'irq_to_gpio' [-Werror=implicit-function-declaration]

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Haojian Zhuang <haojian.zhuang@gmail.com>
Cc: Samuel Ortiz <sameo@linux.intel.com>
Cc: Daniel Ribeiro <drwyrm@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agoARM: mxs: Remove MMAP_MIN_ADDR setting from mxs_defconfig
Marek Vasut [Fri, 3 Aug 2012 18:54:48 +0000 (20:54 +0200)]
ARM: mxs: Remove MMAP_MIN_ADDR setting from mxs_defconfig

commit 3bed491c8d28329e34f8a31e3fe64d03f3a350f1 upstream.

The CONFIG_DEFAULT_MMAP_MIN_ADDR was set to 65536 in mxs_defconfig,
this caused severe breakage of userland applications since the upper
limit for ARM is 32768. By default CONFIG_DEFAULT_MMAP_MIN_ADDR is
set to 4096 and can also be changed via /proc/sys/vm/mmap_min_addr
if needed.

Quoting Russell King [1]:

"4096 is also fine for ARM too. There's not much point in having
defconfigs change it - that would just be pure noise in the config
files."

the CONFIG_DEFAULT_MMAP_MIN_ADDR can be removed from the defconfig
altogether.

This problem was introduced by commit cde7c41 (ARM: configs: add
defconfig for mach-mxs).

[1] http://marc.info/?l=linux-arm-kernel&m=134401593807820&w=2

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Wolfgang Denk <wd@denx.de>
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agomm: hugetlbfs: close race during teardown of hugetlbfs shared page tables
Mel Gorman [Tue, 31 Jul 2012 23:46:20 +0000 (16:46 -0700)]
mm: hugetlbfs: close race during teardown of hugetlbfs shared page tables

commit d833352a4338dc31295ed832a30c9ccff5c7a183 upstream.

If a process creates a large hugetlbfs mapping that is eligible for page
table sharing and forks heavily with children some of whom fault and
others which destroy the mapping then it is possible for page tables to
get corrupted.  Some teardowns of the mapping encounter a "bad pmd" and
output a message to the kernel log.  The final teardown will trigger a
BUG_ON in mm/filemap.c.

This was reproduced in 3.4 but is known to have existed for a long time
and goes back at least as far as 2.6.37.  It was probably was introduced
in 2.6.20 by [39dde65c: shared page table for hugetlb page].  The messages
look like this;

[  ..........] Lots of bad pmd messages followed by this
[  127.164256] mm/memory.c:391: bad pmd ffff880412e04fe8(80000003de4000e7).
[  127.164257] mm/memory.c:391: bad pmd ffff880412e04ff0(80000003de6000e7).
[  127.164258] mm/memory.c:391: bad pmd ffff880412e04ff8(80000003de0000e7).
[  127.186778] ------------[ cut here ]------------
[  127.186781] kernel BUG at mm/filemap.c:134!
[  127.186782] invalid opcode: 0000 [#1] SMP
[  127.186783] CPU 7
[  127.186784] Modules linked in: af_packet cpufreq_conservative cpufreq_userspace cpufreq_powersave acpi_cpufreq mperf ext3 jbd dm_mod coretemp crc32c_intel usb_storage ghash_clmulni_intel aesni_intel i2c_i801 r8169 mii uas sr_mod cdrom sg iTCO_wdt iTCO_vendor_support shpchp serio_raw cryptd aes_x86_64 e1000e pci_hotplug dcdbas aes_generic container microcode ext4 mbcache jbd2 crc16 sd_mod crc_t10dif i915 drm_kms_helper drm i2c_algo_bit ehci_hcd ahci libahci usbcore rtc_cmos usb_common button i2c_core intel_agp video intel_gtt fan processor thermal thermal_sys hwmon ata_generic pata_atiixp libata scsi_mod
[  127.186801]
[  127.186802] Pid: 9017, comm: hugetlbfs-test Not tainted 3.4.0-autobuild #53 Dell Inc. OptiPlex 990/06D7TR
[  127.186804] RIP: 0010:[<ffffffff810ed6ce>]  [<ffffffff810ed6ce>] __delete_from_page_cache+0x15e/0x160
[  127.186809] RSP: 0000:ffff8804144b5c08  EFLAGS: 00010002
[  127.186810] RAX: 0000000000000001 RBX: ffffea000a5c9000 RCX: 00000000ffffffc0
[  127.186811] RDX: 0000000000000000 RSI: 0000000000000009 RDI: ffff88042dfdad00
[  127.186812] RBP: ffff8804144b5c18 R08: 0000000000000009 R09: 0000000000000003
[  127.186813] R10: 0000000000000000 R11: 000000000000002d R12: ffff880412ff83d8
[  127.186814] R13: ffff880412ff83d8 R14: 0000000000000000 R15: ffff880412ff83d8
[  127.186815] FS:  00007fe18ed2c700(0000) GS:ffff88042dce0000(0000) knlGS:0000000000000000
[  127.186816] CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
[  127.186817] CR2: 00007fe340000503 CR3: 0000000417a14000 CR4: 00000000000407e0
[  127.186818] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
[  127.186819] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
[  127.186820] Process hugetlbfs-test (pid: 9017, threadinfo ffff8804144b4000, task ffff880417f803c0)
[  127.186821] Stack:
[  127.186822]  ffffea000a5c9000 0000000000000000 ffff8804144b5c48 ffffffff810ed83b
[  127.186824]  ffff8804144b5c48 000000000000138a 0000000000001387 ffff8804144b5c98
[  127.186825]  ffff8804144b5d48 ffffffff811bc925 ffff8804144b5cb8 0000000000000000
[  127.186827] Call Trace:
[  127.186829]  [<ffffffff810ed83b>] delete_from_page_cache+0x3b/0x80
[  127.186832]  [<ffffffff811bc925>] truncate_hugepages+0x115/0x220
[  127.186834]  [<ffffffff811bca43>] hugetlbfs_evict_inode+0x13/0x30
[  127.186837]  [<ffffffff811655c7>] evict+0xa7/0x1b0
[  127.186839]  [<ffffffff811657a3>] iput_final+0xd3/0x1f0
[  127.186840]  [<ffffffff811658f9>] iput+0x39/0x50
[  127.186842]  [<ffffffff81162708>] d_kill+0xf8/0x130
[  127.186843]  [<ffffffff81162812>] dput+0xd2/0x1a0
[  127.186845]  [<ffffffff8114e2d0>] __fput+0x170/0x230
[  127.186848]  [<ffffffff81236e0e>] ? rb_erase+0xce/0x150
[  127.186849]  [<ffffffff8114e3ad>] fput+0x1d/0x30
[  127.186851]  [<ffffffff81117db7>] remove_vma+0x37/0x80
[  127.186853]  [<ffffffff81119182>] do_munmap+0x2d2/0x360
[  127.186855]  [<ffffffff811cc639>] sys_shmdt+0xc9/0x170
[  127.186857]  [<ffffffff81410a39>] system_call_fastpath+0x16/0x1b
[  127.186858] Code: 0f 1f 44 00 00 48 8b 43 08 48 8b 00 48 8b 40 28 8b b0 40 03 00 00 85 f6 0f 88 df fe ff ff 48 89 df e8 e7 cb 05 00 e9 d2 fe ff ff <0f> 0b 55 83 e2 fd 48 89 e5 48 83 ec 30 48 89 5d d8 4c 89 65 e0
[  127.186868] RIP  [<ffffffff810ed6ce>] __delete_from_page_cache+0x15e/0x160
[  127.186870]  RSP <ffff8804144b5c08>
[  127.186871] ---[ end trace 7cbac5d1db69f426 ]---

The bug is a race and not always easy to reproduce.  To reproduce it I was
doing the following on a single socket I7-based machine with 16G of RAM.

$ hugeadm --pool-pages-max DEFAULT:13G
$ echo $((18*1048576*1024)) > /proc/sys/kernel/shmmax
$ echo $((18*1048576*1024)) > /proc/sys/kernel/shmall
$ for i in `seq 1 9000`; do ./hugetlbfs-test; done

On my particular machine, it usually triggers within 10 minutes but
enabling debug options can change the timing such that it never hits.
Once the bug is triggered, the machine is in trouble and needs to be
rebooted.  The machine will respond but processes accessing proc like "ps
aux" will hang due to the BUG_ON.  shutdown will also hang and needs a
hard reset or a sysrq-b.

The basic problem is a race between page table sharing and teardown.  For
the most part page table sharing depends on i_mmap_mutex.  In some cases,
it is also taking the mm->page_table_lock for the PTE updates but with
shared page tables, it is the i_mmap_mutex that is more important.

Unfortunately it appears to be also insufficient. Consider the following
situation

Process A Process B
--------- ---------
hugetlb_fault shmdt
   LockWrite(mmap_sem)
       do_munmap
    unmap_region
      unmap_vmas
        unmap_single_vma
          unmap_hugepage_range
                   Lock(i_mmap_mutex)
    Lock(mm->page_table_lock)
    huge_pmd_unshare/unmap tables <--- (1)
    Unlock(mm->page_table_lock)
                   Unlock(i_mmap_mutex)
  huge_pte_alloc       ...
    Lock(i_mmap_mutex)       ...
    vma_prio_walk, find svma, spte       ...
    Lock(mm->page_table_lock)       ...
    share spte       ...
    Unlock(mm->page_table_lock)       ...
    Unlock(i_mmap_mutex)       ...
  hugetlb_no_page   <--- (2)
      free_pgtables
        unlink_file_vma
hugetlb_free_pgd_range
    remove_vma_list

In this scenario, it is possible for Process A to share page tables with
Process B that is trying to tear them down.  The i_mmap_mutex on its own
does not prevent Process A walking Process B's page tables.  At (1) above,
the page tables are not shared yet so it unmaps the PMDs.  Process A sets
up page table sharing and at (2) faults a new entry.  Process B then trips
up on it in free_pgtables.

This patch fixes the problem by adding a new function
__unmap_hugepage_range_final that is only called when the VMA is about to
be destroyed.  This function clears VM_MAYSHARE during
unmap_hugepage_range() under the i_mmap_mutex.  This makes the VMA
ineligible for sharing and avoids the race.  Superficially this looks like
it would then be vunerable to truncate and madvise issues but hugetlbfs
has its own truncate handlers so does not use unmap_mapping_range() and
does not support madvise(DONTNEED).

This should be treated as a -stable candidate if it is merged.

Test program is as follows. The test case was mostly written by Michal
Hocko with a few minor changes to reproduce this bug.

==== CUT HERE ====

static size_t huge_page_size = (2UL << 20);
static size_t nr_huge_page_A = 512;
static size_t nr_huge_page_B = 5632;

unsigned int get_random(unsigned int max)
{
struct timeval tv;

gettimeofday(&tv, NULL);
srandom(tv.tv_usec);
return random() % max;
}

static void play(void *addr, size_t size)
{
unsigned char *start = addr,
      *end = start + size,
      *a;
start += get_random(size/2);

/* we could itterate on huge pages but let's give it more time. */
for (a = start; a < end; a += 4096)
*a = 0;
}

int main(int argc, char **argv)
{
key_t key = IPC_PRIVATE;
size_t sizeA = nr_huge_page_A * huge_page_size;
size_t sizeB = nr_huge_page_B * huge_page_size;
int shmidA, shmidB;
void *addrA = NULL, *addrB = NULL;
int nr_children = 300, n = 0;

if ((shmidA = shmget(key, sizeA, IPC_CREAT|SHM_HUGETLB|0660)) == -1) {
perror("shmget:");
return 1;
}

if ((addrA = shmat(shmidA, addrA, SHM_R|SHM_W)) == (void *)-1UL) {
perror("shmat");
return 1;
}
if ((shmidB = shmget(key, sizeB, IPC_CREAT|SHM_HUGETLB|0660)) == -1) {
perror("shmget:");
return 1;
}

if ((addrB = shmat(shmidB, addrB, SHM_R|SHM_W)) == (void *)-1UL) {
perror("shmat");
return 1;
}

fork_child:
switch(fork()) {
case 0:
switch (n%3) {
case 0:
play(addrA, sizeA);
break;
case 1:
play(addrB, sizeB);
break;
case 2:
break;
}
break;
case -1:
perror("fork:");
break;
default:
if (++n < nr_children)
goto fork_child;
play(addrA, sizeA);
break;
}
shmdt(addrA);
shmdt(addrB);
do {
wait(NULL);
} while (--n > 0);
shmctl(shmidA, IPC_RMID, NULL);
shmctl(shmidB, IPC_RMID, NULL);
return 0;
}

[akpm@linux-foundation.org: name the declaration's args, fix CONFIG_HUGETLBFS=n build]
Signed-off-by: Hugh Dickins <hughd@google.com>
Reviewed-by: Michal Hocko <mhocko@suse.cz>
Signed-off-by: Mel Gorman <mgorman@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agox86, microcode: Sanitize per-cpu microcode reloading interface
Borislav Petkov [Thu, 21 Jun 2012 12:07:16 +0000 (14:07 +0200)]
x86, microcode: Sanitize per-cpu microcode reloading interface

commit c9fc3f778a6a215ace14ee556067c73982b6d40f upstream.

Microcode reloading in a per-core manner is a very bad idea for both
major x86 vendors. And the thing is, we have such interface with which
we can end up with different microcode versions applied on different
cores of an otherwise homogeneous wrt (family,model,stepping) system.

So turn off the possibility of doing that per core and allow it only
system-wide.

This is a minimal fix which we'd like to see in stable too thus the
more-or-less arbitrary decision to allow system-wide reloading only on
the BSP:

$ echo 1 > /sys/devices/system/cpu/cpu0/microcode/reload
...

and disable the interface on the other cores:

$ echo 1 > /sys/devices/system/cpu/cpu23/microcode/reload
-bash: echo: write error: Invalid argument

Also, allowing the reload only from one CPU (the BSP in
that case) doesn't allow the reload procedure to degenerate
into an O(n^2) deal when triggering reloads from all
/sys/devices/system/cpu/cpuX/microcode/reload sysfs nodes
simultaneously.

A more generic fix will follow.

Signed-off-by: Borislav Petkov <borislav.petkov@amd.com>
Cc: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1340280437-7718-2-git-send-email-bp@amd64.org
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agox86, microcode: microcode_core.c simple_strtoul cleanup
Shuah Khan [Sun, 6 May 2012 17:11:04 +0000 (11:11 -0600)]
x86, microcode: microcode_core.c simple_strtoul cleanup

commit e826abd523913f63eb03b59746ffb16153c53dc4 upstream.

Change reload_for_cpu() in kernel/microcode_core.c to call kstrtoul()
instead of calling obsoleted simple_strtoul().

Signed-off-by: Shuah Khan <shuahkhan@gmail.com>
Reviewed-by: Borislav Petkov <bp@alien8.de>
Link: http://lkml.kernel.org/r/1336324264.2897.9.camel@lorien2
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Cc: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agorandom: mix in architectural randomness in extract_buf()
H. Peter Anvin [Sat, 28 Jul 2012 02:26:08 +0000 (22:26 -0400)]
random: mix in architectural randomness in extract_buf()

commit d2e7c96af1e54b507ae2a6a7dd2baf588417a7e5 upstream.

Mix in any architectural randomness in extract_buf() instead of
xfer_secondary_buf().  This allows us to mix in more architectural
randomness, and it also makes xfer_secondary_buf() faster, moving a
tiny bit of additional CPU overhead to process which is extracting the
randomness.

[ Commit description modified by tytso to remove an extended
  advertisement for the RDRAND instruction. ]

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Acked-by: Ingo Molnar <mingo@kernel.org>
Cc: DJ Johnston <dj.johnston@intel.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agodmi: Feed DMI table to /dev/random driver
Tony Luck [Fri, 20 Jul 2012 20:15:20 +0000 (13:15 -0700)]
dmi: Feed DMI table to /dev/random driver

commit d114a33387472555188f142ed8e98acdb8181c6d upstream.

Send the entire DMI (SMBIOS) table to the /dev/random driver to
help seed its pools.

Signed-off-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agorandom: Add comment to random_initialize()
Tony Luck [Mon, 23 Jul 2012 16:47:57 +0000 (09:47 -0700)]
random: Add comment to random_initialize()

commit cbc96b7594b5691d61eba2db8b2ea723645be9ca upstream.

Many platforms have per-machine instance data (serial numbers,
asset tags, etc.) squirreled away in areas that are accessed
during early system bringup. Mixing this data into the random
pools has a very high value in providing better random data,
so we should allow (and even encourage) architecture code to
call add_device_randomness() from the setup_arch() paths.

However, this limits our options for internal structure of
the random driver since random_initialize() is not called
until long after setup_arch().

Add a big fat comment to rand_initialize() spelling out
this requirement.

Suggested-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agorandom: remove rand_initialize_irq()
Theodore Ts'o [Sun, 15 Jul 2012 00:27:52 +0000 (20:27 -0400)]
random: remove rand_initialize_irq()

commit c5857ccf293968348e5eb4ebedc68074de3dcda6 upstream.

With the new interrupt sampling system, we are no longer using the
timer_rand_state structure in the irq descriptor, so we can stop
initializing it now.

[ Merged in fixes from Sedat to find some last missing references to
  rand_initialize_irq() ]

Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Signed-off-by: Sedat Dilek <sedat.dilek@gmail.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agomfd: wm831x: Feed the device UUID into device_add_randomness()
Mark Brown [Thu, 5 Jul 2012 20:23:21 +0000 (20:23 +0000)]
mfd: wm831x: Feed the device UUID into device_add_randomness()

commit 27130f0cc3ab97560384da437e4621fc4e94f21c upstream.

wm831x devices contain a unique ID value. Feed this into the newly added
device_add_randomness() to add some per device seed data to the pool.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agortc: wm831x: Feed the write counter into device_add_randomness()
Mark Brown [Thu, 5 Jul 2012 20:19:17 +0000 (20:19 +0000)]
rtc: wm831x: Feed the write counter into device_add_randomness()

commit 9dccf55f4cb011a7552a8a2749a580662f5ed8ed upstream.

The tamper evident features of the RTC include the "write counter" which
is a pseudo-random number regenerated whenever we set the RTC. Since this
value is unpredictable it should provide some useful seeding to the random
number generator.

Only do this on boot since the goal is to seed the pool rather than add
useful entropy.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
11 years agoMAINTAINERS: Theodore Ts'o is taking over the random driver
Theodore Ts'o [Wed, 4 Jul 2012 15:32:48 +0000 (11:32 -0400)]
MAINTAINERS: Theodore Ts'o is taking over the random driver

commit 330e0a01d54c2b8606c56816f99af6ebc58ec92c upstream.

Matt Mackall stepped down as the /dev/random driver maintainer last
year, so Theodore Ts'o is taking back the /dev/random driver.

Cc: Matt Mackall <mpm@selenic.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>