summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2011-03-14kill __lookup_one_len()Al Viro
only one caller left Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-14switch non-create side of open() to use of do_last()Al Viro
Instead of path_lookupat() doing trailing symlink resolution, use the same scheme as on the O_CREAT side. Walk with LOOKUP_PARENT, then (in do_last()) look the final component up, then either open it or return error or, if it's a symlink, give the symlink back to path_openat() to be resolved there. The really messy complication here is RCU. We don't want to drop out of RCU mode before the final lookup, since we don't want to bounce parent directory ->d_count without a good reason. Result is _not_ pretty; later in the series we'll clean it up. For now we are roughly back where we'd been before the revert done by Nick's series - top-level logics of path_openat() is cleaned up, do_last() does actual opening, symlink resolution is done uniformly. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-14get rid of nd->fileAl Viro
Don't stash the struct file * used as starting point of walk in nameidata; pass file ** to path_init() instead. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-14get rid of the last LOOKUP_RCU dependencies in link_path_walk()Al Viro
New helper: terminate_walk(). An error has happened during pathname resolution and we either drop nd->path or terminate RCU, depending the mode we had been in. After that, nd is essentially empty. Switch link_path_walk() to using that for cleanup. Now the top-level logics in link_path_walk() is back to sanity. RCU dependencies are in the lower-level functions. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-14make nameidata_dentry_drop_rcu_maybe() always leave RCU modeAl Viro
Now we have do_follow_link() guaranteed to leave without dangling RCU and the next step will get LOOKUP_RCU logics completely out of link_path_walk(). Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-14make handle_dots() leave RCU mode on errorAl Viro
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-14clear RCU on all failure exits from link_path_walk()Al Viro
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-14pull handling of . and .. into inlined helperAl Viro
getting LOOKUP_RCU checks out of link_path_walk()... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-14kill out_dput: in link_path_walk()Al Viro
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-14separate -ESTALE/-ECHILD retries in do_filp_open() from real workAl Viro
new helper: path_openat(). Does what do_filp_open() does, except that it tries only the walk mode (RCU/normal/force revalidation) it had been told to. Both create and non-create branches are using path_lookupat() now. Fixed the double audit_inode() in non-create branch. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-14switch do_filp_open() to struct open_flagsAl Viro
take calculation of open_flags by open(2) arguments into new helper in fs/open.c, move filp_open() over there, have it and do_sys_open() use that helper, switch exec.c callers of do_filp_open() to explicit (and constant) struct open_flags. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-14Collect "operation mode" arguments of do_last() into a structureAl Viro
No point messing with passing shitloads of "operation mode" arguments to do_open() one by one, especially since they are not going to change during do_filp_open(). Collect them into a struct, fill it and pass to do_last() by reference. Make sure that lookup intent flags are correctly set and removed - we want them for do_last(), but they make no sense for __do_follow_link(). Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-14clean up the failure exits after __do_follow_link() in do_filp_open()Al Viro
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-14pull security_inode_follow_link() into __do_follow_link()Al Viro
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-14pull dropping RCU on success of link_path_walk() into path_lookupat()Al Viro
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-14untangle the "need_reval_dot" messAl Viro
instead of ad-hackery around need_reval_dot(), do the following: set a flag (LOOKUP_JUMPED) in the beginning of path, on absolute symlink traversal, on ".." and on procfs-style symlinks. Clear on normal components, leave unchanged on ".". Non-nested callers of link_path_walk() call handle_reval_path(), which checks that flag is set and that fs does want the final revalidate thing, then does ->d_revalidate(). In link_path_walk() all the return_reval stuff is gone. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-14merge component type recognitionAl Viro
no need to do it in three places... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-14merge path_init and path_init_rcuAl Viro
Actual dependency on whether we want RCU or not is in 3 small areas (as it ought to be) and everything around those is the same in both versions. Since each function has only one caller and those callers are on two sides of if (flags & LOOKUP_RCU), it's easier and cleaner to merge them and pull the checks inside. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-14sanitize path_walk() messAl Viro
New helper: path_lookupat(). Basically, what do_path_lookup() boils to modulo -ECHILD/-ESTALE handler. path_walk* family is gone; vfs_path_lookup() is using link_path_walk() directly, do_path_lookup() and do_filp_open() are using path_lookupat(). Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-14take RCU-dependent stuff around exec_permission() into a new helperAl Viro
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-14kill path_lookup()Al Viro
all remaining callers pass LOOKUP_PARENT to it, so flags argument can die; renamed to kern_path_parent() Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-14fix race in audit_get_nd()Al Viro
don't rely on pathname resolution ending up twice at the same point... Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
2011-03-14plat-nomadik: make GPIO interrupts work with cpuidle ApSleepRabin Vincent
Enable wakeups by default for any GPIO interrupts and in the suspend/resume path narrow this down to only the the real wakeup interrupts. This approach is based on the assumption that cpuidle ApSleep will be entered more often than system suspend. Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Reviewed-by: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com> [Fixup for genirq changes to struct irq_data on 2.6.38] Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14mach-u300: define a dummy filter function for coh901318Linus Walleij
All platform data has to be made conditional on as to avoid cluttering the code with other #ifdef:s. Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14mach-ux500: basic HREFv60 support v2Linus Walleij
The HREFv60 variant of the MOP500 family of boards remove the external GPIO expander and route these pins back to some of the readily available internal GPIO pins instead. Based on a patch by Bibek Basu <bibek.basu@stericsson.com> for an internal kernel version. Cc: Bibek Basu <bibek.basu@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14mach-ux500: add hrefv60 GPIO pinsBibek Basu
This will centralize all GPIO pin muxing for the different boards in the MOP500 family to a single file. It also kills off the deprecated support for the ED (Early Drop) ASIC, this should never be spotted in the open and ST-Ericsson have internally deprecated this hardware. Signed-off-by: Bibek Basu <bibek.basu@stericsson.com> [Rebasing and kill old ASIC support] Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14mach-ux500: move MOP500 pins to separate fileRabin Vincent
Split off pin definitions for the MOP500 board family to its own file. Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Mathieu Poirier <mathieu.poirier@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14plat-nomadik: fix compilation warningLinus Walleij
The compiler warns that [rf]wimsc may be used uninitialized in this function - the warning is actually false since the uses are in identical if()-clauses, but it can't hurt very much to read out the values to be modified early anyway and rid the warning. Cc: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14plat-nomadik: get rid of unused GPIO PM codeRabin Vincent
The NOMADIK_GPIO_PM config option is disabled by default, not user visible, and never selected by any other option: the code is therefore unused. The GPIO registers need not be saved and restored since their values are preserved when vAPE (on DB8500) is powered down. Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Reviewed-by: Jonas Aberg <jonas.aberg@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14plat-nomadik: change sleep/wakeup setting in GPIO SLPM registerRikard Olsson
This patch fixes a bug when setting SLPM register for DB8500. When calling__nmk_gpio_set_slpm(...) offset to GPIO is now used instead of the GPIO number itself. Signed-off-by: Rikard Olsson <rikard.p.olsson@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14plat-nomadik: implement safe switch sequence for Alt-CRabin Vincent
Setting pinmux alternative C for a GPIO pin is actually not so easy since it ivolves setting value "1" in two registers, and since the combined result will take effect for intermediate values (01 or 10) this will cause glitches while you wrote one register but have not yet written the other. This patch implements a series of kludges including an optional machine-specific callback to avoid glitches when changing pin mux mode to alternative C. Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14plat-nomadik: set altfunc to GPIO when enabling the sleep configRabin Vincent
Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14plat-nomadik: type secondary IRQ correctlyVirupax Sadashivpetimath
Coverity found that we were checking an unsigned variable for >= zero. Type it correctly so that the check works as intended. Signed-off-by: Virupax Sadashivpetimath <virupax.sadashivpetimath@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14plat-nomadik: pull-up/down settings for GPIO resumeJonas Aaberg
Suspend/resume didn't take care of pull-up and pull-down settings and writing back the DAT register at resume can change pull up/down settings, depending on pin input value. Output values are now also restored. Signed-off-by: Jonas Aaberg <jonas.aberg@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14plat-nomadik: support secondary GPIO interruptsRabin Vincent
When GPIOs wake up the system from sleep mode, the normal GPIO interrupt handler does not hit and the normal interrupt status register does not contain the status. Instead the secondary GPIO handler does, and the interrupt status needs to be retrieved from the wakeup status saved by the suspend/resume code. Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14plat-nomadik: implement suspend/resume for GPIORabin Vincent
Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14plat-nomadik: add custom dbg_show for GPIORabin Vincent
Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14plat-nomadik: support varying number of GPIOs per blockRabin Vincent
Signed-off-by: Rabin Vincent <rabin.vincent@stericsson.com> [Added constant 32-pin assignment in platform data] Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14mach-ux500: config Ux500 PL011 PL022 PL180 for DMALinus Walleij
This will configure the platform data for the PL011, PL022 and PL180 (derivate) PrimeCells found in the Ux500 to use DMA with the generic DMA engine for DMA40. Signed-off-by: Per Forlin <per.forlin@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14mach-u300: config U300 PL180 PL011 PL022 for DMALinus Walleij
This will configure the platform data for the PL180, PL011 and PL022 PrimeCells found in the U300 to use DMA with the generic PrimeCell DMA engine for COH 901 318. Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14mach-u300: use mmci driver for GPIO card detectLinus Walleij
The mmci driver can handle a GPIO pin for card detect, using IRQs and all just fine, so switch to using that. Delete the old bogus input device hack, if userspace need to detect MMC cards it should use udev like everyone else. Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14mach-ux500: add MUSB to db5500 devicesMian Yousaf Kaukab
- DMA tx and rx maps for usb channels are set to be configured at runtime - MUSB is enabled with soc specific base address, irq and dma configurations Signed-off-by: Mian Yousaf Kaukab <mian-yousaf.kaukab@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14mach-ux500: add MUSB to db8500 devicesMian Yousaf Kaukab
- DMA tx and rx maps for usb channels are set to be configured at runtime - GPIO configurations for usb are added - MUSB is enabled with soc specific base address, irq and dma configurations Signed-off-by: Mian Yousaf Kaukab <mian-yousaf.kaukab@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14mach-ux500: update MUSB clock configurationsMian Yousaf Kaukab
MUSB driver has been updated to separate out BSP layer from its generic parts, as separate driver. This patch configures the clock with the new platform driver name. Signed-off-by: Mian Yousaf Kaukab <mian-yousaf.kaukab@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14mach-ux500: add platform data for musbMian Yousaf Kaukab
USB resources and DMA40 configurations are dynamically with the data provided in ux500_add_usb() call. Though only DMA40 configurations differ between U8500 and U5500 (USB resource are common between them). Signed-off-by: Mian Yousaf Kaukab <mian-yousaf.kaukab@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14mach-ux500: fix inverted SD-card GPIO pinPhilippe Langlais
The levelshifter pins were set to inverted values, fix this up. Signed-off-by: Philippe Langlais <philippe.langlais@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14mach-ux500: set sd/mmc clock rate to 100MHzPhilippe Langlais
The clock speed for the SD/MMC clock was incorrect, rectify it. Signed-off-by: Philippe Langlais <philippe.langlais@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14mach-ux500: Add Rohm BH1780GLI Light Sensor to i2c_board_infoLee Jones
Signed-off-by: Lee Jones <lee.jones@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14mach-ux500: platform data for LP5521 leds driverPhilippe Langlais
Signed-off-by: Philippe Langlais <philippe.langlais@linaro.org> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2011-03-14mach-ux500: platform data for SFH7741 proximity sensor driverPhilippe Langlais
Proximity sensor is managed as an input event (SW_PROXIMITY). Signed-off-by: Philippe Langlais <philippe.langlais@linaro.org> [Named GPIO pin] Signed-off-by: Linus Walleij <linus.walleij@linaro.org>