aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* mm: avoid livelock on !__GFP_FS allocationsMel Gorman2011-10-261-0/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Under the following conditions, __alloc_pages_slowpath can loop forever: gfp_mask & __GFP_WAIT is true gfp_mask & __GFP_FS is false reclaim and compaction make no progress order <= PAGE_ALLOC_COSTLY_ORDER The gfp conditions are normally invalid, because !__GFP_FS disables most of the reclaim methods that __GFP_WAIT would wait for. However, these conditions happen very often during suspend and resume, when pm_restrict_gfp_mask() effectively converts all GFP_KERNEL allocations into __GFP_WAIT. The oom killer is not run because gfp_mask & __GFP_FS is false, but should_alloc_retry will always return true when order is less than PAGE_ALLOC_COSTLY_ORDER. __alloc_pages_slowpath will loop forever between the rebalance label and should_alloc_retry, unless another thread happens to release enough pages to satisfy the allocation. Add a check to detect when PM has disabled __GFP_FS, and do not retry if reclaim is not making any progress. [taken from patch on lkml by Mel Gorman, commit message by ccross] Change-Id: I864a24e9d9fd98bd0e3d6e9c1e85b6c1b766850e Signed-off-by: Colin Cross <ccross@android.com>
* mmc: block: Improve logging of handling emmc timeoutsKen Sumrall2011-10-261-3/+7
| | | | | | | | Add some logging to make it clear just how the emmc timeout was handled. Change-Id: Id33fd28d8b9778dc4e85db829e2637a328eddab4 Signed-off-by: Ken Sumrall <ksumrall@android.com>
* mmc: block: add checking of r/w command responseRussell King - ARM Linux2011-10-261-1/+25
| | | | | | | | | | | | Check the status bits in the r/w command response for any errors. If error bits are set, then we won't have seen any data transferred, so it's pointless doing any further checking. Change-Id: If118a4bcbb0e57a7d95b5e40d662fca87fdcba7f Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Linus Walleij <linus.walleij@linaro.org> Tested-by: Pawel Moll <pawel.moll@arm.com> Signed-off-by: Chris Ball <cjb@laptop.org>
* mmc: block: improve error recovery from command channel errorsRussell King - ARM Linux2011-10-261-50/+182
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Command channel errors fall into four classes: 1. The command was issued with the card in the wrong state 2. The command failed to be received by the card correctly 3. The cards response failed to be received by the host (CRC error) 4. The card failed to respond to the card For (1), in theory we should know that the card is in the correct state. However, a failed stop command (or other failure) may result in the card remaining in a data transfer state from the previous command. If we detect this condition, we try to recover by sending a stop command. For the initial commands (set block count and the read/write command) no data will have been transferred. All that we need deal with is retrying at this point. A failed stop command can be remedied as above. If we are unable to recover the card (eg, the card ignores our requests for status, or we don't recognise the error code) then we immediately fail the request. Change-Id: Ief109a57fd21a247381b38f1164c22f0344f0284 Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Linus Walleij <linus.walleij@linaro.org> Tested-by: Pawel Moll <pawel.moll@arm.com> Signed-off-by: Chris Ball <cjb@laptop.org>
* mmc: block: allow get_card_status() to return error statusRussell King - ARM Linux2011-10-262-24/+19
| | | | | | | | | | | | | | | If the MMC_SEND_STATUS command is not successful, we should not return a zero status word, but instead allow the caller to know positively that an error occurred. Convert the open-coded get_card_status() to use the helper function, and provide definitions for the card state field. Change-Id: Icfd6258af78a89c21abac386c556153fa3fac364 Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Acked-by: Linus Walleij <linus.walleij@linaro.org> Tested-by: Pawel Moll <pawel.moll@arm.com> Signed-off-by: Chris Ball <cjb@laptop.org>
* net: wireless: bcm4329: Prohibit FW access in case of FW crashDmitry Shmidt2011-10-264-8/+30
| | | | Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
* net: wireless: bcmdhd: Adjust scan parameters for wl_cfg80211_connect()Dmitry Shmidt2011-10-261-5/+3
| | | | Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
* net: wireless: bcmdhd: Update to version 5.90.125.94Dmitry Shmidt2011-10-269-217/+149
| | | | | | | | | - Fix WFD interface removal - Fix profile update - Keep same mode for softap or WFD during early suspend - Add dhd_console_ms parameter access Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
* ARM: common: fiq_debugger: protect the uart state from the sleep timerDima Zavin2011-10-251-0/+14
| | | | | Change-Id: I6b834d5cab96c3466042f758feb69eae6893ec49 Signed-off-by: Dima Zavin <dima@android.com>
* ARM: common: fiq_debugger: add suspend/resume handlersDima Zavin2011-10-252-2/+42
| | | | | Change-Id: If6eb75059fdf4867eb9a974d60b9d50e5e3350d4 Signed-off-by: Dima Zavin <dima@android.com>
* ARM: common: fiq_debugger: add uart_enable/disable platform callbacksDima Zavin2011-10-252-13/+43
| | | | | | | | | This allows the platform specific drivers to properly enable and disable the uart at the appropriate times. On some platforms, just managing the clock is not enough. Change-Id: I5feaab04cfe313a4a9470ca274838676b9684201 Signed-off-by: Dima Zavin <dima@android.com>
* ARM: common: fiq_debugger: add non-fiq debugger supportDima Zavin2011-10-251-50/+169
| | | | | | | | | | Add irq-only support to the debugger. This allows the debugger to always run at irq context. This introduces limitations to being able to debug certain kinds of issues, but it is still very useful as a debugging tool. Change-Id: I1e4223e886cb2d90ef5ed31419bdd5cdd7f904ca Signed-off-by: Dima Zavin <dima@android.com>
* ARM: common: fiq_debugger: peek the 0th char in ringbufDima Zavin2011-10-251-1/+1
| | | | | | | | ringbuf_consume advances the tail ptr, so peek should always just peek at offset 0 Change-Id: I8d3d22d2ec1e563d73b53ccbad302e6d74e64e53 Signed-off-by: Dima Zavin <dima@android.com>
* ARM: common: fiq_debugger: fix the cleanup on errors in probeDima Zavin2011-10-251-1/+4
| | | | | Change-Id: I58bd0604c0520b13e11bf02836eb4ddbadba1372 Signed-off-by: Dima Zavin <dima@android.com>
* ARM: common: fiq_debugger: do not disable debug when console is enabledDima Zavin2011-10-251-1/+1
| | | | | Change-Id: I5f8074a860f9b143ee0c87296683bbf2cffb5a36 Signed-off-by: Dima Zavin <dima@android.com>
* ram_console: pass in a boot info stringColin Cross2011-10-252-10/+57
| | | | | | | | Allow the board file to pass a boot info string through the platform data that is appended to the /proc/last_kmsg file. Change-Id: I37065fafb09676085465c93384d8e176fdd942d6 Signed-off-by: Colin Cross <ccross@android.com>
* net: wireless: bcmdhd: Fix crash in p2p OFFDmitry Shmidt2011-10-202-3/+4
| | | | Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
* ARM: smpboot: Enable irqs on secondary CPU after marking it online/activeThomas Gleixner2011-10-201-10/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Patch is the last version from tglx on Oct 7. Discussion is at: http://comments.gmane.org/gmane.linux.ports.arm.kernel/131919 The original commit message for the first patch version: Frank Rowand reported: I have a consistent (every boot) hang on boot with the RT patches. With a few hacks to get console output, I get: rcu_preempt_state detected stalls on CPUs/tasks I have also replicated the problem on the ARM RealView (in tree) and without the RT patches. The problem ended up being caused by the allowed cpus mask being set to all possible cpus for the ksoftirqd on the secondary processors. So the RCU softirq was never executing on the secondary cpu. The problem was that ksoftirqd was woken on the secondary processors before the secondary processors were online. This led to allowed cpus being set to all cpus. wake_up_process() try_to_wake_up() select_task_rq() if (... || !cpu_online(cpu)) select_fallback_rq(task_cpu(p), p) ... /* No more Mr. Nice Guy. */ dest_cpu = cpuset_cpus_allowed_fallback(p) do_set_cpus_allowed(p, cpu_possible_mask) # Thus ksoftirqd can now run on any cpu... </report> The reason is that the ARM SMP boot code for the secondary CPUs enables interrupts before the newly brought up CPU is marked online and active. That causes a wakeup of ksoftirqd or a wakeup of any other kernel thread which is affine to the brought up CPU break that threads affinity and therefor being scheduled on already online CPUs. This problem has been observed on x86 before and the only solution is to mark the CPU online and wait for the CPU active bit before the point where interrupts are enabled. Change-Id: If948ef52d434191579e1ca95d18d0c50e91a03b9 Signed-off-by: Dima Zavin <dima@android.com>
* ARM: smp: implement arch_trigger_all_cpus_backtrace using IPIDima Zavin2011-10-205-1/+76
| | | | | | | | | | | Based on a rough patch by frank.rowand@am.sony.com Since ARM doesn't have an NMI (fiq's are not always available), send an IPI to all other CPUs (current cpu prints the stack directly) to capture a backtrace. Change-Id: I8b163c8cec05d521b433ae133795865e8a33d4e2 Signed-off-by: Dima Zavin <dima@android.com>
* power: cpufreq interactive governor: use default sample time 20msTodd Poynor2011-10-201-1/+1
| | | | | | | | | | | Lower the default time at which a higher speed is allowed to run before lowering based on lower CPU load from 80ms to 20ms. Most Android devices should trade power for performance here, although tablets and non-battery-powered devices may want to override this default. Change-Id: I1a4f7faeca12793c51d5b92db30a63cca8d4f1be Signed-off-by: Todd Poynor <toddpoynor@google.com>
* net: wireless: bcmdhd: Add wake_lock to dhd_open() and dhd_stop()Dmitry Shmidt2011-10-191-10/+19
| | | | Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
* net: wireless: bcmdhd: Fix bssid profile updateDmitry Shmidt2011-10-192-16/+38
| | | | Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
* net: wireless: Fix CFG80211_ALLOW_RECONNECT option for disconnectDmitry Shmidt2011-10-181-0/+2
| | | | Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
* cpufreq: interactive governor: default timer 10ms, maxspeed load 95%Todd Poynor2011-10-161-2/+2
| | | | | | | | | | | | Modify default timer from 30ms to 10ms, sampling 2 jiffies after idle exit on ARM as in Honeycomb. Modify default go_maxspeed_load from 85% loaded to 95% loaded, for use in phones where power savings is more important (tablets may be best served overriding this). Change-Id: I3361a6279979bfae1df5262666a2e30ea7a44328 Signed-off-by: Todd Poynor <toddpoynor@google.com>
* net: wireless: bcmdhd: Add proper cleaning for ap_info structureDmitry Shmidt2011-10-162-3/+13
| | | | Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
* net: wireless: bcmdhd: Send cfg80211_disconnected() if fails to get rssiDmitry Shmidt2011-10-161-2/+6
| | | | Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
* netfilter: xt_qtaguid: fix crash on ctrl delete commandJP Abgrall2011-10-071-1/+9
| | | | | | | | | | | | | Because for now the xt_qtaguid module allows procs to use tags without having /dev/xt_qtaguid open, there was a case where it would try to delete a resources from a list that was proc specific. But that resource was never added to that list which is only used when /dev/xt_qtaguid has been opened by the proc. Once our userspace is fully updated, we won't need those exceptions. Change-Id: Idd4bfea926627190c74645142916e10832eb2504 Signed-off-by: JP Abgrall <jpa@google.com>
* bridge: Have tx_bytes count headers like rx_bytes.Ashish Sharma2011-10-071-5/+6
| | | | | | | | | | | | | | Since rx_bytes accounting does not include Ethernet Headers in br_input.c, excluding ETH_HLEN on the transmit path for consistent measurement of packet length on both the Tx and Rx chains. The clean way would be for Rx to include the eth header, but the skb len has already been adjusted by the time the br code sees the skb. This is only a temporary workaround until we can completely ignore or cleanly fix the skb->len handling. Change-Id: I910de95a4686b2119da7f1f326e2154ef31f9972 Signed-off-by: Ashish Sharma <ashishsharma@google.com>
* netfilter: xt_qtaguid: Fix the stats info display orderAshish Sharma2011-10-061-6/+6
| | | | | Change-Id: I3bf165c31f35a6c7dc212f23df5eefaeb8129d0d Signed-off-by: Ashish Sharma <ashishsharma@google.com>
* net: wireless: bcmdhd: Use spin_lock_irqsave instead of spin_lock_irqDmitry Shmidt2011-10-061-13/+21
| | | | Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
* net: wireless: bcmdhd: Fix event thread termination in case of empty queueDmitry Shmidt2011-10-061-15/+11
| | | | Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
* net: wireless: bcmdhd: Improve join functionalityDmitry Shmidt2011-10-064-7/+79
| | | | Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
* net: wireless: bcmdhd: Make sure that FW is UP after corresponding messageDmitry Shmidt2011-10-061-15/+16
| | | | Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
* net: wireless: bcmdhd: Fix profile update syncronizationDmitry Shmidt2011-10-061-16/+32
| | | | Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
* net: wireless: bcmdhd: Fix memory leak in wl_cfgp2p_down()Dmitry Shmidt2011-10-061-0/+1
| | | | Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
* cpufreq: interactive: fix possible Division by zero.Axel Haslam2011-10-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The following dump was seen sometimes while resuming, the only division by zero on this function can happen after delta_time is reassigned, since at the start of the function, there is jump that protects against values less than 1000. After that, If delta_time and delta_idle == 0, we will hit a div 0 Division by zero in kernel. Backtrace: [<c0057184>] (dump_backtrace+0x0/0x110) from [<c05d5ecc>] (dump_stack+0x18/0x1c) r6:010f3000 r5:c113dfb0 r4:c004afb0 r3:c6ff0000 [<c05d5eb4>] (dump_stack+0x0/0x1c) from [<c00572cc>] (__div0+0x1c/0x20) [<c00572b0>] (__div0+0x0/0x20) from [<c02195d4>] (Ldiv0+0x8/0x10) [<c03dfd64>] (cpufreq_interactive_timer+0x0/0x2c0) from [<c00a7efc>] (run_timer_softirq+0x154/0x260) [<c00a7da8>] (run_timer_softirq+0x0/0x260) from [<c00a0c8c>] (__do_softirq+0xc8/0x194) [<c00a0bc4>] (__do_softirq+0x0/0x194) from [<c00a1008>] (irq_exit+0xb4/0xb8) [<c00a0f54>] (irq_exit+0x0/0xb8) from [<c00584b4>] (ipi_timer+0x44/0x48) r4:c004a040 r3:00000001 [<c0058470>] (ipi_timer+0x0/0x48) from [<c004c3e4>] (do_local_timer+0x68/0x84) r5:c004ae2c r4:c07991e8 [<c004c37c>] (do_local_timer+0x0/0x84) from [<c0052948>] (__irq_svc+0x48/0xe0) Change-Id: I639882db67b8d711c5710778ebc212f0f6a998e3 Acked-by: Nishanth Menon <nm@ti.com> Signed-off-by: Axel Haslam <axelhaslam@ti.com>
* input: evdev: do not block waiting for an event if fd is nonblockDima Zavin2011-10-041-8/+6
| | | | | | | | | | If there is a full packet in the buffer, and we overflow that buffer right after checking for that condition, it would have been possible for us to block indefinitely (rather, until the next full packet) even if the file was marked as O_NONBLOCK. Change-Id: Icd0f59f8cc98392be4c4d13bd45b5cf94317eb5a Signed-off-by: Dima Zavin <dima@android.com>
* input: evdev: if no events and non-block, return EAGAIN not 0Dima Zavin2011-10-041-0/+2
| | | | | Change-Id: I5f0da721f74e5de111cffc7e7b375b72dd80e530 Signed-off-by: Dima Zavin <dima@android.com>
* input: evdev: only allow reading events if a full packet is presentDima Zavin2011-10-041-1/+1
| | | | | | | | | | | | | | Without this, it was possible for the reader to get ahead of packet_head. If the the input device generated a partial packet *right* after the reader got ahead, then we can get into a situation where the device is marked readable but read always returns 0 until the next packet is finished (i.e a SYN is generated by the input driver). This situation can also happen if we overflow the buffer while a reader is trying to read an event out. Change-Id: If01ab371bc7de1bf1f90c122dcc5a29242b01a09 Signed-off-by: Dima Zavin <dima@android.com>
* netfilter: ipv6: fix crash caused by ipv6_find_hdr()JP Abgrall2011-09-301-6/+8
| | | | | | | | | | | | | | | | When calling: ipv6_find_hdr(skb, &thoff, -1, NULL) on a fragmented packet, thoff would be left with a random value causing callers to read random memory offsets with: skb_header_pointer(skb, thoff, ...) Now we force ipv6_find_hdr() to return a failure in this case. Calling: ipv6_find_hdr(skb, &thoff, -1, &fragoff) will set fragoff as expected, and not return a failure. Change-Id: Ib474e8a4267dd2b300feca325811330329684a88 Signed-off-by: JP Abgrall <jpa@google.com>
* netfilter: xt_qtaguid: add missing tracking for no filp caseJP Abgrall2011-09-292-5/+26
| | | | | | | | | | In cases where the skb would have an sk_socket but no file, that skb would not be counted at all. Assigning to uid 0 now. Adding extra counters to track skb counts. Change-Id: If049b4b525e1fbd5afc9c72b4a174c0a435f2ca7 Signed-off-by: JP Abgrall <jpa@google.com>
* net: wireless: bcmdhd: Fix get_noa() and set_noa() commandsDmitry Shmidt2011-09-281-33/+50
| | | | Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
* net: wireless: bcmdhd: Combined P2P fixDmitry Shmidt2011-09-279-61/+62
| | | | | | | | | | | | | - Fix random kernel panic during p2p certification and change private command for set_ap_wps_ie of wpa_supplicant - Fix problem for 5.1.18 discoverability exchange of P2P sigma - Fix problem for 7.1.3 to change PM_FAST to PM_MAX (802.11 legacy power save) - Change type of signal variable in wl_inform_single_bss from uint to int - Fix crash on P2P interface removal - Add new DHD_BLOC logic for our internal purposes to keep track of FW crashes and build info Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
* usb: otg: Temporarily grab wakelock on charger and disconnect eventsTodd Poynor2011-09-261-77/+56
| | | | | Change-Id: If995d4af4adcb08e8369009483f2956ad9627267 Signed-off-by: Todd Poynor <toddpoynor@google.com>
* netfilter: xt_qtaguid: fix crash after using delete ctrl commandJP Abgrall2011-09-254-196/+449
| | | | | | | | | | | | | | | | | | | * Crash fix The delete command would delete a socket tag entry without removing it from the proc_qtu_data { ..., sock_tag_list, }. This in turn would cause an exiting process to crash while cleaning up its matching proc_qtu_data. * Added more aggressive tracking/cleanup of proc_qtu_data This should allow one process to cleanup qtu_tag_data{} left around from processes that didn't use resource tracking via /dev/xt_qtaguid. * Debug printing tweaks Better code inclusion/exclusion handling, and extra debug out of full state. Change-Id: I735965af2962ffcd7f3021cdc0068b3ab21245c2 Signed-off-by: JP Abgrall <jpa@google.com>
* PM: runtime: add might_sleep to PM runtime functionsColin Cross2011-09-232-0/+10
| | | | | | | | | | | | | | | | | | | The list of functions that can be called in atomic context is non-intuitive (pm_runtime_put_sync can not, but pm_runtime_put_sync_suspend can, if pm_runtime_irq_safe has been called?). The code is actively misleading - the entry points all start with spin_lock_irqsave, suggesting they are safe to call in atomic context, but may later enable interrupts. Add might_sleep_if to all the __pm_runtime_* entry points to enforce correct usage. Also add pm_runtime_put_sync_autosuspend to the list of functions that can be called in atomic context. Change-Id: Icac17a10d77c64d44bd2761a91a588dfd1d0c6f0 Signed-off-by: Colin Cross <ccross@android.com>
* net: wireless: bcmdhd: Remove unnecessary rtnl_lock() callsDmitry Shmidt2011-09-231-35/+49
| | | | Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
* net: wireless: bcmdhd: Fix SB address window cachingDmitry Shmidt2011-09-231-44/+72
| | | | Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
* net: wireless: bcmdhd: Fix scan notification in case of scan abortDmitry Shmidt2011-09-222-33/+24
| | | | Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
* HID: Add null check for hidinput.Jaikumar Ganesh2011-09-211-1/+1
| | | | | | | Add null check for hidinput before calling input_register. Change-Id: Ib3fc0507e4091192360f3395d13d489db9b5a4d2 Signed-off-by: Jaikumar Ganesh <jaikumarg@android.com>