aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2013-04-04ARM: tegra: Define Tegra114 CAR bindingPeter De Schrijver1-0/+303
The device tree binding models Tegra114 CAR (Clock And Reset) as a single monolithic clock provider. Signed-off-by: Peter De Schrijver <[email protected]> Acked-by: Mike Turquette <[email protected]> Signed-off-by: Stephen Warren <[email protected]>
2013-04-04clk: tegra: Workaround for Tegra114 MSENC problemPeter De Schrijver2-0/+11
Workaround a hardware bug in MSENC during clock enable. Signed-off-by: Peter De Schrijver <[email protected]> Acked-by: Mike Turquette <[email protected]> Signed-off-by: Stephen Warren <[email protected]>
2013-04-04clk: tegra: Add flags to tegra_clk_periph()Peter De Schrijver4-10/+14
We will need some tegra peripheral clocks with the CLK_IGNORE_UNUSED flag, most notably mselect, which is a bridge between AXI and most peripherals. Signed-off-by: Peter De Schrijver <[email protected]> Acked-by: Mike Turquette <[email protected]> Signed-off-by: Stephen Warren <[email protected]>
2013-04-04clk: tegra: Add new fields and PLL types for Tegra114Peter De Schrijver2-1/+888
Tegra114 introduces new PLL types. This requires new clocktypes as well as some new fields in the pll structure. Signed-off-by: Peter De Schrijver <[email protected]> Acked-by: Mike Turquette <[email protected]> Signed-off-by: Stephen Warren <[email protected]>
2013-04-04clk: tegra: move from a lock bit idx to a lock maskPeter De Schrijver4-25/+25
PLLC2 and PLLC3 on Tegra114 have separate phaselock and frequencylock bits. So switch to a lock mask to be able to test both at the same time. Signed-off-by: Peter De Schrijver <[email protected]> Acked-by: Mike Turquette <[email protected]> Signed-off-by: Stephen Warren <[email protected]>
2013-04-04clk: tegra: Add PLL post divider tablePeter De Schrijver4-6/+59
Some PLLs in Tegra114 don't use a power of 2 mapping for the post divider. Introduce a table based approach and switch PLLU to it. Signed-off-by: Peter De Schrijver <[email protected]> Acked-by: Mike Turquette <[email protected]> Signed-off-by: Stephen Warren <[email protected]>
2013-04-04clk: tegra: introduce TEGRA_PLL_HAS_LOCK_ENABLEPeter De Schrijver2-0/+7
Tegra114 PLLC2 and PLLC3 don't have a lock enable bit. The lock bits are always functional. Signed-off-by: Peter De Schrijver <[email protected]> Acked-by: Mike Turquette <[email protected]> Signed-off-by: Stephen Warren <[email protected]>
2013-04-04clk: tegra: Add TEGRA_PLL_BYPASS flagPeter De Schrijver2-4/+10
Not all PLLs in Tegra114 have a bypass bit. Adapt the common code to only use this bit when available. Signed-off-by: Peter De Schrijver <[email protected]> Acked-by: Mike Turquette <[email protected]> Signed-off-by: Stephen Warren <[email protected]>
2013-04-04clk: tegra: Refactor PLL programming codePeter De Schrijver4-293/+356
Refactor the PLL programming code to make it useable by the new PLL types introduced by Tegra114. The following changes were done: * Split programming the PLL into updating m,n,p and updating cpcon * Move locking from _update_pll_cpcon() to clk_pll_set_rate() * Introduce _get_pll_mnp() helper * Move check for identical m,n,p values to clk_pll_set_rate() * struct tegra_clk_pll_freq_table will always contain the values as defined by the hardware. * Simplify the arguments to clk_pll_wait_for_lock() * Split _tegra_clk_register_pll() Signed-off-by: Peter De Schrijver <[email protected]> Acked-by: Mike Turquette <[email protected]> Signed-off-by: Stephen Warren <[email protected]>
2013-04-04clk: tegra: provide dummy cpu car opsPeter De Schrijver1-1/+2
tegra_boot_secondary() relies on some of the car ops. This means having an uninitialized tegra_cpu_car_ops will lead to an early boot panic. Providing a dummy struct avoids this and makes adding Tegra114 clock support in a bisectable way a lot easier. Signed-off-by: Peter De Schrijver <[email protected]> Acked-by: Mike Turquette <[email protected]> Signed-off-by: Stephen Warren <[email protected]>
2013-04-04clk: tegra: defer application of init tableStephen Warren6-2/+29
The Tegra clock driver is initialized during the ARM machine descriptor's .init_irq() hook. It can't be initialized earlier, since dynamic memory usage is required. It can't be initialized later, since the .init_timer() hook needs the clocks initialized. However, at this time, udelay() doesn't work. The Tegra clock initialization table may enable some PLLs. Enabling a PLL may require usage of udelay(). Hence, this can't happen right when the clock driver is initialized. To solve this, separate the clock driver initialization from the clock table processing, so they can execute at separate times. Signed-off-by: Stephen Warren <[email protected]>
2013-04-04clk: tegra: Fix cdev1 and cdev2 IDsPrashant Gaikwad3-4/+4
Correct IDs for cdev1 and cdev2 are 94 and 93 respectively. Signed-off-by: Prashant Gaikwad <[email protected]> [swarren: split into separate driver and device-tree patches] Signed-off-by: Stephen Warren <[email protected]>
2013-04-04clk: tegra: Make gr2d and gr3d clocks children of pll_cThierry Reding2-0/+4
By default these clocks are children of pll_m, but in downstream kernels they are reparented to pll_c. While at it, decrease their frequencies to 300 MHz because the defaults aren't in the specified range. gr2d can reportedly run at much higher frequencies, but 300 MHz works and is a more conservative default. Signed-off-by: Thierry Reding <[email protected]> Acked-by: Mike Turquette <[email protected]> Acked-By: Peter De Schrijver <[email protected]> Signed-off-by: Stephen Warren <[email protected]>
2013-04-04clk: tegra: Export peripheral reset functionsThierry Reding1-0/+3
The tegra_periph_reset_assert() and tegra_periph_reset_deassert() functions can be used by drivers to reset peripherals. In order to allow such drivers to be built as modules, export the functions. Note that this restores the status quo as the functions were exported before the move to the drivers/clk tree. Signed-off-by: Thierry Reding <[email protected]> Acked-by: Mike Turquette <[email protected]> Signed-off-by: Stephen Warren <[email protected]>
2013-04-04clk: tegra: Fix periph_clk_to_bit macroYen Lin1-1/+1
The parameter name should be "gate", not "periph". This worked, however, because it happens that everywhere periph_clk_to_bit is called, "gate" was in the local scope. Signed-off-by: Yen Lin <[email protected]> Signed-off-by: Andrew Chew <[email protected]> Reviewed-by: Thierry Reding <[email protected]> Reviewed-by: Prashant Gaikwad <[email protected]> Acked-by: Peter De Schrijver <[email protected]> Acked-by: Mike Turquette <[email protected]> Signed-off-by: Stephen Warren <[email protected]>
2013-04-04Merge remote-tracking branch 'linaro_mturquette_linux/clk-for-3.10' into ↵Stephen Warren25-130/+1622
for-3.10/clk
2013-04-04Merge branch 'for-3.10/soc' into for-3.10/clkStephen Warren43-405/+1045
2013-04-03ARM: tegra: cpuidle: remove redundant parameters for powered-down modeJoseph Lo4-12/+4
After the patch series for system suspending support, tegra_idle_lp2_last() no longer uses its parameters cpu_on_time or cpu_off_time, so remove them. Signed-off-by: Joseph Lo <[email protected]> Signed-off-by: Stephen Warren <[email protected]>
2013-04-03ARM: tegra: pm: add platform suspend supportJoseph Lo5-17/+146
Adding suspend to RAM support for Tegra platform. There are three suspend mode for Tegra. The difference were below. * LP2: CPU voltage off * LP1: CPU voltage off, DRAM in self-refresh * LP0: CPU + Core voltage off, DRAM in self-refresh After this patch, the LP2 suspend mode will be supported. Signed-off-by: Joseph Lo <[email protected]> Signed-off-by: Stephen Warren <[email protected]>
2013-04-03ARM: dt: tegra: add bindings of power management configurations for PMCJoseph Lo3-0/+129
The PMC mostly controls the entry and exit of the system from different sleep modes. Different platform or system may have different configurations. The power management configurations of PMC is represented as some properties. The system needs to define the properties when the system supports deep sleep mode (i.e. suspend). Cc: Grant Likely <[email protected]> Cc: Rob Herring <[email protected]> Cc: [email protected] Signed-off-by: Joseph Lo <[email protected]> Signed-off-by: Stephen Warren <[email protected]>
2013-04-03ARM: tegra: irq: add wake up handlingJoseph Lo3-1/+103
Add the wake up handling for legacy irq controller, and using IRQCHIP_MASK_ON_SUSPEND for wake irq handling. Based on the work by: Varun Wadekar <[email protected]> Signed-off-by: Joseph Lo <[email protected]> Signed-off-by: Stephen Warren <[email protected]>
2013-04-03gpio: tegra: add gpio wakeup source handlingJoseph Lo1-2/+19
This patch add the gpio wakeup source handling for the Tegra platform. It was be done by enabling the irq for the gpio in the gpio controller and enabling the bank irq of the gpio in the Tegra legacy irq controller when the system going to suspend. Based on the work by: Varun Wadekar <[email protected]> Cc: Grant Likely <[email protected]> Cc: Linus Walleij <[email protected]> Signed-off-by: Joseph Lo <[email protected]> Acked-by: Linus Walleij <[email protected]> Signed-off-by: Stephen Warren <[email protected]>
2013-04-03ARM: tegra: moving the CPU power timer function to PMC driverJoseph Lo4-37/+41
The CPU power timer set up function was related to PMC register. Now moving it to PMC driver. And it also help to clean up the PM related code later. The timer was calculated based on the input clock of PMC. In this patch, we also get the clock from DT. Signed-off-by: Joseph Lo <[email protected]> Signed-off-by: Stephen Warren <[email protected]>
2013-04-03ARM: tegra: add clock source of PMC to device treesJoseph Lo16-1/+190
Adding the bindings of the clock source of PMC in DT. Signed-off-by: Joseph Lo <[email protected]> Signed-off-by: Stephen Warren <[email protected]>
2013-04-02clk: allow reentrant calls into the clk frameworkMike Turquette1-2/+42
Reentrancy into the clock framework is necessary for clock operations that result in nested calls to the clk api. A common example is a clock that is prepared via an i2c transaction, such as a clock inside of a discrete audio chip or a power management IC. The i2c subsystem itself will use the clk api resulting in a deadlock: clk_prepare(audio_clk) i2c_transfer(..) clk_prepare(i2c_controller_clk) The ability to reenter the clock framework prevents this deadlock. Other use cases exist such as allowing .set_rate callbacks to call clk_set_parent to achieve the best rate, or to save power in certain configurations. Yet another example is performing pinctrl operations from a clk_ops callback. Calls into the pinctrl subsystem may call clk_{un}prepare on an unrelated clock. Allowing for nested calls to reenter the clock framework enables both of these use cases. Reentrancy is implemented by two global pointers that track the owner currently holding a global lock. One pointer tracks the owner during sleepable, mutex-protected operations and the other one tracks the owner during non-interruptible, spinlock-protected operations. When the clk framework is entered we try to hold the global lock. If it is held we compare the current task against the current owner; a match implies a nested call and we reenter. If the values do not match then we block on the lock until it is released. Signed-off-by: Mike Turquette <[email protected]> Cc: Rajagopal Venkat <[email protected]> Cc: David Brown <[email protected]> Tested-by: Laurent Pinchart <[email protected]> Reviewed-by: Thomas Gleixner <[email protected]> Reviewed-by: Ulf Hansson <[email protected]>
2013-04-02clk: abstract locking out into helper functionsMike Turquette1-38/+61
Create locking helpers for the global mutex and global spinlock. The definitions of these helpers will be expanded upon in the next patch which introduces reentrancy into the locking scheme. Signed-off-by: Mike Turquette <[email protected]> Cc: Rajagopal Venkat <[email protected]> Cc: David Brown <[email protected]> Tested-by: Laurent Pinchart <[email protected]> Reviewed-by: Thomas Gleixner <[email protected]> Reviewed-by: Ulf Hansson <[email protected]>
2013-03-27clk: zynq: Add missing zynq clk headerMichal Simek1-0/+1
Include zynq clk header where init function is declared. It removes this sparse warning: drivers/clk/clk-zynq.c:373:13: warning: symbol 'xilinx_zynq_clocks_init' was not declared. Should it be static? Signed-off-by: Michal Simek <[email protected]> Signed-off-by: Mike Turquette <[email protected]>
2013-03-27clk: sunxi: rename compatible stringsEmilio López2-19/+19
During the introduction of the Allwinner SoC platforms, sunxi was initially meant as a generic name for all the variants of the Allwinner SoC. It was ok at the time of the support of only the A10 and A13 that look pretty much the same; but it's beginning to be troublesome with the future addition of the Allwinner A31 (sun6i) that is quite different, and would introduce some weird logic, where sunxi would actually mean in some case sun4i and sun5i but without sun6i... Moreover, it makes the compatible strings naming scheme not consistent with other architectures, where usually for this kind of compability, we just use the oldest SoC name that has this IP, so let's do just this. Signed-off-by: Emilio López <[email protected]> Signed-off-by: Mike Turquette <[email protected]>
2013-03-27arm: sunxi: Add useful information about sunxi clocksEmilio López1-0/+56
This patch contains useful bits of information about the sunxi clocks that may help and/or be interesting for current and future developers. Signed-off-by: Emilio López <[email protected]> Acked-by: Maxime Ripard <[email protected]> Signed-off-by: Mike Turquette <[email protected]>
2013-03-27clk: arm: sunxi: Add a new clock driver for sunxi SOCsEmilio López8-2/+643
This commit implements the base CPU clocks for sunxi devices. It has been tested using a slightly modified cpufreq driver from the linux-sunxi 3.0 tree. Additionally, document the new bindings introduced by this patch. Idling: / # cat /sys/kernel/debug/clk/clk_summary clock enable_cnt prepare_cnt rate --------------------------------------------------------------------- osc32k 0 0 32768 osc24M_fixed 0 0 24000000 osc24M 0 0 24000000 apb1_mux 0 0 24000000 apb1 0 0 24000000 pll1 0 0 60000000 cpu 0 0 60000000 axi 0 0 60000000 ahb 0 0 60000000 apb0 0 0 30000000 dummy 0 0 0 After "yes >/dev/null &": / # cat /sys/kernel/debug/clk/clk_summary clock enable_cnt prepare_cnt rate --------------------------------------------------------------------- osc32k 0 0 32768 osc24M_fixed 0 0 24000000 osc24M 0 0 24000000 apb1_mux 0 0 24000000 apb1 0 0 24000000 pll1 0 0 1008000000 cpu 0 0 1008000000 axi 0 0 336000000 ahb 0 0 168000000 apb0 0 0 84000000 dummy 0 0 0 Signed-off-by: Emilio López <[email protected]> Acked-by: Maxime Ripard <[email protected]> Signed-off-by: Mike Turquette <[email protected]>
2013-03-27clk: ux500: Fix prcmu clocks registrationMaxime Coquelin1-5/+5
In clk_reg_prcmu(), clk->hw.init field is assigned with a reference local to clk_reg_prcmu() function. This patch replaces references to clk->hw.init with calls to __clk_get_name when called after clock registration. This patch applies on top of v3.9-rc4. Signed-off-by: Maxime Coquelin <[email protected]> Acked-by: Ulf Hansson <[email protected]> Signed-off-by: Mike Turquette <[email protected]> [[email protected]: resolved trivial merge issues]
2013-03-27ARM: imx: adapt clk_busy_mux to new clk_mux structFabio Estevam1-1/+1
Commit ce4f3313b05 (clk: add table lookup to mux) caused the following build error on imx_v4_v5_defconfig/imx_v6_v7_defconfig: arch/arm/mach-imx/clk-busy.c:172:11: error: 'struct clk_mux' has no member named 'width' Fix it by passing the 'mask' field. Signed-off-by: Fabio Estevam <[email protected]> Acked-by: Peter De Schrijver <[email protected]> Signed-off-by: Mike Turquette <[email protected]> [[email protected]: shortened $SUBJECT line]
2013-03-26clk: Add composite clock typePrashant Gaikwad3-0/+233
Not all clocks are required to be decomposed into basic clock types but at the same time want to use the functionality provided by these basic clock types instead of duplicating. For example, Tegra SoC has ~100 clocks which can be decomposed into Mux -> Div -> Gate clock types making the clock count to ~300. Also, parent change operation can not be performed on gate clock which forces to use mux clock in driver if want to change the parent. Instead aggregate the basic clock types functionality into one clock and just use this clock for all operations. This clock type re-uses the functionality of basic clock types and not limited to basic clock types but any hardware-specific implementation. Signed-off-by: Prashant Gaikwad <[email protected]> Signed-off-by: Mike Turquette <[email protected]>
2013-03-23Linux 3.9-rc4Linus Torvalds1-1/+1
2013-03-23Merge git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pendingLinus Torvalds6-12/+29
Pull SCSI target fixes from Nicholas Bellinger: "These are mostly minor fixes this time around. The iscsi-target CHAP big-endian bugfix and bump FD_MAX_SECTORS=2048 default patch to allow 1MB sized I/Os for FILEIO backends on >= v3.5 code are both CC'ed to stable. Also, there is a persistent reservations regression that has recently been reported for >= v3.8.x code, that is currently being tracked down for v3.9." * git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: target/pscsi: Reject cross page boundary case in pscsi_map_sg target/file: Bump FD_MAX_SECTORS to 2048 to handle 1M sized I/Os tcm_vhost: Flush vhost_work in vhost_scsi_flush() tcm_vhost: Add missed lock in vhost_scsi_clear_endpoint() target: fix possible memory leak in core_tpg_register() target/iscsi: Fix mutual CHAP auth on big-endian arches target_core_sbc: use noop for SYNCHRONIZE_CACHE
2013-03-23Merge tag 'md-3.9-fixes' of git://neil.brown.name/mdLinus Torvalds6-47/+86
Pull md fixes from NeilBrown: "A few bugfixes for md - recent regressions in raid5 - recent regressions in dmraid - a few instances of CONFIG_MULTICORE_RAID456 linger Several tagged for -stable" * tag 'md-3.9-fixes' of git://neil.brown.name/md: md: remove CONFIG_MULTICORE_RAID456 entirely md/raid5: ensure sync and DISCARD don't happen at the same time. MD: Prevent sysfs operations on uninitialized kobjects MD RAID5: Avoid accessing gendisk or queue structs when not available md/raid5: schedule_construction should abort if nothing to do.
2013-03-23Merge tag 'upstream-linus' of ↵Linus Torvalds6-21/+16
git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev Pull libata updates from Jeff Garzik: "Simple stuff. See one-line summaries." * tag 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev: pata_samsung_cf: use module_platform_driver_probe() [libata] Avoid specialized TLA's in ZPODD's Kconfig libata-acpi.c: fix copy and paste mistake in ata_acpi_register_power_resource sata_fsl: Remove redundant NULL check before kfree ahci: Add Device IDs for Intel Wellsburg PCH ata_piix: Add MODULE_PARM_DESC to prefer_ms_hyperv
2013-03-23Merge branch 'i2c/for-current' of ↵Linus Torvalds5-4/+21
git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux Pull i2c fixes from Wolfram Sang: "One bugfix for the tegra driver. Two updates regarding email addresses and MAINTAINERS which I like to have up-to-date so people can be reached immediately. While we are here, there is on PCI_ID addition." * 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux: MAINTAINERS: add maintainer entry for atmel i2c driver i2c: Fix my e-mail address in drivers and documentation i2c: iSMT: add Intel Avoton DeviceIDs i2c: tegra: check the clk_prepare_enable() return value
2013-03-23Merge git://www.linux-watchdog.org/linux-watchdogLinus Torvalds2-121/+7
Pull watchdog fixes from Wim Van Sebroeck: "Fix a boot issues and correct the AcpiMmioSel bitmask in the sp5100_tco watchdog device driver" * git://www.linux-watchdog.org/linux-watchdog: watchdog: sp5100_tco: Set the AcpiMmioSel bitmask value to 1 instead of 2 watchdog: sp5100_tco: Remove code that may cause a boot failure
2013-03-23KMS: fix EDID detailed timing frame rateTorsten Duwe1-0/+1
When KMS has parsed an EDID "detailed timing", it leaves the frame rate zeroed. Consecutive (debug-) output of that mode thus yields 0 for vsync. This simple fix also speeds up future invocations of drm_mode_vrefresh(). While it is debatable whether this qualifies as a -stable fix I'd apply it for consistency's sake; drm_helper_probe_single_connector_modes() does the same thing already for all probed modes. Cc: [email protected] Signed-off-by: Torsten Duwe <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2013-03-23KMS: fix EDID detailed timing vsync parsingTorsten Duwe1-1/+1
EDID spreads some values across multiple bytes; bit-fiddling is needed to retrieve these. The current code to parse "detailed timings" has a cut&paste error that results in a vsync offset of at most 15 lines instead of 63. See http://en.wikipedia.org/wiki/EDID and in the "EDID Detailed Timing Descriptor" see bytes 10+11 show why that needs to be a left shift. Cc: [email protected] Signed-off-by: Torsten Duwe <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2013-03-22Merge git://git.infradead.org/users/willy/linux-nvmeLinus Torvalds3-9/+60
Pull NVMe driver update from Matthew Wilcox: "These patches have mostly been baking for a few months; sorry I didn't get them in during the merge window. They're all bug fixes, except for the addition of the SMART log and the addition to MAINTAINERS." * git://git.infradead.org/users/willy/linux-nvme: NVMe: Add namespaces with no LBA range feature MAINTAINERS: Add entry for the NVMe driver NVMe: Initialize iod nents to 0 NVMe: Define SMART log NVMe: Add result to nvme_get_features NVMe: Set result from user admin command NVMe: End queued bio requests when freeing queue NVMe: Free cmdid on nvme_submit_bio error
2013-03-22Merge branch 'akpm' (fixes from Andrew)Linus Torvalds15-114/+159
Merge misc fixes from Andrew Morton. * emailed patches from Andrew Morton <[email protected]>: mqueue: sys_mq_open: do not call mnt_drop_write() if read-only mm/hotplug: only free wait_table if it's allocated by vmalloc dma-debug: update DMA debug API to better handle multiple mappings of a buffer dma-debug: fix locking bug in check_unmap() drivers/rtc/rtc-at91rm9200.c: use a variable for storing IMR drivers/video/ep93xx-fb.c: include <linux/io.h> for devm_ioremap() drivers/rtc/rtc-da9052.c: fix for rtc device registration mm: zone_end_pfn is too small poweroff: change orderly_poweroff() to use schedule_work() mm/hugetlb: fix total hugetlbfs pages count when using memory overcommit accouting printk: Provide a wake_up_klogd() off-case irq_work.h: fix warning when CONFIG_IRQ_WORK=n
2013-03-22mqueue: sys_mq_open: do not call mnt_drop_write() if read-onlyVladimir Davydov1-1/+2
mnt_drop_write() must be called only if mnt_want_write() succeeded, otherwise the mnt_writers counter will diverge. mnt_writers counters are used to check if remounting FS as read-only is OK, so after an extra mnt_drop_write() call, it would be impossible to remount mqueue FS as read-only. Besides, on umount a warning would be printed like this one: ===================================== [ BUG: bad unlock balance detected! ] 3.9.0-rc3 #5 Not tainted ------------------------------------- a.out/12486 is trying to release lock (sb_writers) at: mnt_drop_write+0x1f/0x30 but there are no more locks to release! Signed-off-by: Vladimir Davydov <[email protected]> Cc: Doug Ledford <[email protected]> Cc: KOSAKI Motohiro <[email protected]> Cc: "Eric W. Biederman" <[email protected]> Cc: Al Viro <[email protected]> Cc: <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2013-03-22mm/hotplug: only free wait_table if it's allocated by vmallocJianguo Wu1-1/+5
zone->wait_table may be allocated from bootmem, it can not be freed. Signed-off-by: Jianguo Wu <[email protected]> Reviewed-by: Tang Chen <[email protected]> Cc: Tang Chen <[email protected]> Cc: Jiang Liu <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2013-03-22dma-debug: update DMA debug API to better handle multiple mappings of a bufferAlexander Duyck1-5/+19
There were reports of the igb driver unmapping buffers without calling dma_mapping_error. On closer inspection issues were found in the DMA debug API and how it handled multiple mappings of the same buffer. The issue I found is the fact that the debug_dma_mapping_error would only set the map_err_type to MAP_ERR_CHECKED in the case that the was only one match for device and device address. However in the case of non-IOMMU, multiple addresses existed and as a result it was not setting this field once a second mapping was instantiated. I have resolved this by changing the search so that it instead will now set MAP_ERR_CHECKED on the first buffer that matches the device and DMA address that is currently in the state MAP_ERR_NOT_CHECKED. A secondary side effect of this patch is that in the case of multiple buffers using the same address only the last mapping will have a valid map_err_type. The previous mappings will all end up with map_err_type set to MAP_ERR_CHECKED because of the dma_mapping_error call in debug_dma_map_page. However this behavior may be preferable as it means you will likely only see one real error per multi-mapped buffer, versus the current behavior of multiple false errors mer multi-mapped buffer. Signed-off-by: Alexander Duyck <[email protected]> Cc: Joerg Roedel <[email protected]> Reviewed-by: Shuah Khan <[email protected]> Tested-by: Shuah Khan <[email protected]> Cc: Jakub Kicinski <[email protected]> Cc: Konrad Rzeszutek Wilk <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2013-03-22dma-debug: fix locking bug in check_unmap()Alexander Duyck1-9/+12
In check_unmap() it is possible to get into a dead-locked state if dma_mapping_error is called. The problem is that the bucket is locked in check_unmap, and locked again by debug_dma_mapping_error which is called by dma_mapping_error. To resolve that we must release the lock on the bucket before making the call to dma_mapping_error. [[email protected]: restore 80-col trickery to be consistent with the rest of the file] Signed-off-by: Alexander Duyck <[email protected]> Cc: Joerg Roedel <[email protected]> Reviewed-by: Shuah Khan <[email protected]> Tested-by: Shuah Khan <[email protected]> Cc: Jakub Kicinski <[email protected]> Cc: Konrad Rzeszutek Wilk <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2013-03-22drivers/rtc/rtc-at91rm9200.c: use a variable for storing IMRNicolas Ferre2-20/+31
On some revisions of AT91 SoCs, the RTC IMR register is not working. Instead of elaborating a workaround for that specific SoC or IP version, we simply use a software variable to store the Interrupt Mask Register and modify it for each enabling/disabling of an interrupt. The overhead of this is negligible anyway. The interrupt mask register (IMR) for the RTC is broken on the AT91SAM9x5 sub-family of SoCs (good overview of the members here: http://www.eewiki.net/display/linuxonarm/AT91SAM9x5 ). The "user visible effect" is the RTC doesn't work. That sub-family is less than two years old and only has devicetree (DT) support and came online circa lk 3.7 . The dust is yet to settle on the DT stuff at least for AT91 SoCs (translation: lots of stuff is still broken, so much that it is hard to know where to start). The fix in the patch is pretty simple: just shadow the silicon IMR register with a variable in the driver. Some older SoCs (pre-DT) use the the rtc-at91rm9200 driver (e.g. obviously the AT91RM9200) and they should not be impacted by the change. There shouldn't be a large volume of interrupts associated with a RTC. Signed-off-by: Nicolas Ferre <[email protected]> Reported-by: Douglas Gilbert <[email protected]> Cc: Jean-Christophe PLAGNIOL-VILLARD <[email protected]> Cc: Ludovic Desroches <[email protected]> Cc: <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2013-03-22drivers/video/ep93xx-fb.c: include <linux/io.h> for devm_ioremap()H Hartley Sweeten1-0/+1
Commit be8678149701 ("drivers/video/ep93xx-fb.c: use devm_ functions") introduced a build error: drivers/video/ep93xx-fb.c: In function 'ep93xxfb_probe': drivers/video/ep93xx-fb.c:532: error: implicit declaration of function 'devm_ioremap' drivers/video/ep93xx-fb.c:533: warning: assignment makes pointer from integer without a cast Include <linux/io.h> to pickup the declaration of 'devm_ioremap'. Signed-off-by: H Hartley Sweeten <[email protected]> Cc: Florian Tobias Schandinat <[email protected]> Acked-by: Ryan Mallon <[email protected]> Cc: Damien Cassou <[email protected]> Cc: <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2013-03-22drivers/rtc/rtc-da9052.c: fix for rtc device registrationAshish Jangam1-5/+3
Add support for the virtual irq since now MFD only handles virtual irq Without this patch rtc device will fail in registration. (akpm: Ashish has a different version whcih will be needed for 3.8.x and earlier kernels) Signed-off-by: Ashish <[email protected]> Cc: <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>