summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [PATCH] umount_tree() will unhash everything itselfAl Viro2008-04-211-2/+1
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* [PATCH] get rid of more nameidata passing in namespace.cAl Viro2008-04-211-28/+25
| | | | | | | Further reduction of stack footprint (sys_pivot_root()); lose useless BKL in there, while we are at it. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* [PATCH] switch a bunch of LSM hooks from nameidata to pathAl Viro2008-04-216-52/+53
| | | | | | Namely, ones from namespace.c Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* [PATCH] lock exclusively in collect_mounts() and drop_collected_mounts()Al Viro2008-04-211-4/+4
| | | | | | | | | | Taking namespace_sem shared there isn't worth the trouble, especially with vfsmount ID allocation about to be added. That way we know that umount_tree(), copy_tree() and clone_mnt() are _always_ serialized by namespace_sem. umount_tree() still needs vfsmount_lock (it manipulates hash chains, among other things), but that's a separate story. Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* [PATCH] move a bunch of declarations to fs/internal.hAl Viro2008-04-216-9/+13
| | | | Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
* Merge branch 'for-linus' of ↵Linus Torvalds2008-04-217-35/+16
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: IB/ipath: Correct capitalization "IntX" -> "INTx" IB/ipath: Remove tests of PCI_MSI in ipath_iba7220.c IB/ipath: Remove dependency on PCI_MSI || HT_IRQ IB/ipath: Build IBA7220 code unconditionally IB/ipath: Remove reference to dev->class_dev IB/ipath: Fix module parameter description for disable_sma RDMA/nes: Remove unneeded function declarations Fix up conflict in drivers/infiniband/hw/ipath/ipath_verbs.c (by picking the solution from the infiniband branch)
| * IB/ipath: Correct capitalization "IntX" -> "INTx"Roland Dreier2008-04-212-6/+6
| | | | | | | | | | | | Match what the PCI specification uses. Signed-off-by: Roland Dreier <rolandd@cisco.com>
| * IB/ipath: Remove tests of PCI_MSI in ipath_iba7220.cRoland Dreier2008-04-211-9/+4
| | | | | | | | | | | | | | | | The PCI MSI interface is stubbed out properly so that all the functions just return failure if PCI_MSI=n, so there's no reason to have "#ifdef CONFIG_PCI_MSI" blocks in ipath_iba7220.c. Signed-off-by: Roland Dreier <rolandd@cisco.com>
| * IB/ipath: Remove dependency on PCI_MSI || HT_IRQRoland Dreier2008-04-211-1/+1
| | | | | | | | | | | | | | | | | | Before IBA7220 support was added, the ipath driver didn't support any hardware unless PCI_MSI and/or HT_IRQ was enabled. However, the IBA7220 can generate INTx interrupts, so it makes sense to allow the driver to be build even if PCI_MSI=n and HT_IRQ=n. Signed-off-by: Roland Dreier <rolandd@cisco.com>
| * IB/ipath: Build IBA7220 code unconditionallyRoland Dreier2008-04-211-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new IBA7220 code added a call to ipath_init_iba7220_funcs() that is compiled unconditionally, but only built the IBA7220 code if PCI_MSI is enabled. Fix this by building the IBA7220 file unconditonally. This fixes build breakage when PCI_MSI=n, HT_IRQ=y and INFINIBAND_IPATH=y reported by Ingo Molnar <mingo@elte.hu>: drivers/built-in.o: In function `ipath_init_one': ipath_driver.c:(.devinit.text+0x1e5bc): undefined reference to `ipath_init_iba7220_funcs' Signed-off-by: Roland Dreier <rolandd@cisco.com>
| * IB/ipath: Remove reference to dev->class_dev ↵Roland Dreier2008-04-211-1/+0
| | | | | | | | | | | | | | | | | | | | | | Commit 124b4dcb ("IB/ipath: add calls to new 7220 code and enable in build") inadvertently added core to set dev->class_dev.dev back into ib_ipath. This is completely redundant since commit 1912ffbb ("IB: Set class_dev->dev in core for nice device symlink"), which removed class_dev setting from low-level drivers, and also will break the build when class_dev is removed completely from struct ib_device. Signed-off-by: Roland Dreier <rolandd@cisco.com>
| * IB/ipath: Fix module parameter description for disable_smaPaul Bolle2008-04-211-1/+1
| | | | | | | | | | | | | | | | | | | | Describe disable_sma parameter with its name rather than the internal ib_ipath_disable_sma variable name, so that the description shows up properly in modinfo. Signed-off-by: Paul Bolle <pebolle@tiscali.nl> Acked-by: Ralph Campbell <ralph.campbell@qlogic.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
| * RDMA/nes: Remove unneeded function declarationsRoland Dreier2008-04-212-15/+0
| | | | | | | | | | | | | | Remove redundant static declarations of functions that are defined before they are used in the source. Signed-off-by: Roland Dreier <rolandd@cisco.com>
* | infiniband: class_device falloutStephen Rothwell2008-04-211-1/+1
|/ | | | | Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* Merge branch 'for-linus' of ↵Linus Torvalds2008-04-219-382/+778
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc: (26 commits) mmc: sdio_ops.c should #include "sdio_ops.h" mmc: proper prototypes for mmc_attach_*() mmc: make __mmc_release_bus() static sdhci: improve no card, no reset quirk MMC: OMAP: Do not busy wait for end of command for ever MMC: OMAP: Start new commands from work queue instead of irq MMC: OMAP: Lazy clock shutdown MMC: OMAP: Move failing command abortion to workqueue MMC: OMAP: Use tasklet instead of workqueue for cover switch notification MMC: OMAP: Check the get_cover_state function pointer if not set MMC: OMAP: Using setup_timer instead of init_timer MMC: OMAP: Abort stuck commands MMC: OMAP: General cleanup for MMC multislot support MMC: OMAP: Power functions modified to MMC multislot support MMC: OMAP: Fix timeout calculation for MMC multislot support MMC: OMAP: New release dma and abort xfer functions MMC: OMAP: Add back cover switch support MMC: OMAP: Introduce new multislot structure and change driver to use it MMC: OMAP: Remove cover switch handling to allow adding multislot support MMC: OMAP: Fix the BYTEBLOCK capability removal ...
| * mmc: sdio_ops.c should #include "sdio_ops.h"Adrian Bunk2008-04-181-0/+1
| | | | | | | | | | | | | | | | Every file should include the headers containing the externs for its global functions. Signed-off-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * mmc: proper prototypes for mmc_attach_*()Adrian Bunk2008-04-182-4/+4
| | | | | | | | | | | | | | | | This patch adds proper prototypes for mmc_attach_*() in drivers/mmc/core/core.h Signed-off-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * mmc: make __mmc_release_bus() staticAdrian Bunk2008-04-181-1/+1
| | | | | | | | | | | | | | This patch makes the needlessly global __mmc_release_bus() static. Signed-off-by: Adrian Bunk <bunk@kernel.org> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * sdhci: improve no card, no reset quirkPierre Ossman2008-04-181-2/+10
| | | | | | | | | | | | | | | | | | | | | | The quirk was meant to just inhibit some resets, but ended up blocking all of them. Fortunately, this was just what was needed. Change the comment to reflect reality. Also, this issue has just been observed on Samsung laptops, so reduce the number of chips the quirk affects. Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * MMC: OMAP: Do not busy wait for end of command for everJarkko Lavinen2008-04-181-1/+7
| | | | | | | | | | | | | | | | | | | | | | The limit was a fixed 100k limit in the busy loop, which is not accurate. It would better to have time limit for the worst case which occurs when sending 80 cycles at 400 kHz and takes about 200 microseconds, so limit the max time spend in the busy loop for some 250 microseconds. Signed-off-by: Jarkko Lavinen <jarkko.lavinen@nokia.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * MMC: OMAP: Start new commands from work queue instead of irqJarkko Lavinen2008-04-181-6/+42
| | | | | | | | | | | | | | | | | | Use work queues for starting new commands instead of starting them directly from irq handler. The command scheduling needs to be delayed a bit for some cards which should not be done from an interrupt. Signed-off-by: Jarkko Lavinen <jarkko.lavinen@nokia.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * MMC: OMAP: Lazy clock shutdownJarkko Lavinen2008-04-181-14/+75
| | | | | | | | | | | | | | | | | | | | MMCA spec says the mmc clock should be kept running for at least 8 cycles after the last RW request. Ensure this with lazy clock disable after a request, or with an explicit delay before switching a slot. Signed-off-by: Jarkko Lavinen <jarkko.lavinen@nokia.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * MMC: OMAP: Move failing command abortion to workqueueJarkko Lavinen2008-04-181-33/+49
| | | | | | | | | | | | | | | | Abort failed command from workqueue rather than from an interrupt, allowing longer delays in abortion. Signed-off-by: Jarkko Lavinen <jarkko.lavinen@nokia.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * MMC: OMAP: Use tasklet instead of workqueue for cover switch notificationJarkko Lavinen2008-04-181-27/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | The cover waitqueue is occasionally scheduled twice from timer and the interrupt and oops follows. It would have been possible to fix this problem with spinlocks but using tasklet was a dropin solution with no need for locking. This path also adds some cleanups. Signed-off-by: Jarkko Lavinen <jarkko.lavinen@nokia.com> Signed-off-by: Hiroshi DOYU <Hiroshi.DOYU@nokia.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * MMC: OMAP: Check the get_cover_state function pointer if not setKyungmin Park2008-04-181-1/+4
| | | | | | | | | | | | | | | | If the get_cover_state is not set, it occurs the oops. Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * MMC: OMAP: Using setup_timer instead of init_timerCarlos Eduardo Aguiar2008-04-181-10/+4
| | | | | | | | | | | | | | | | Using setup_timer() instead of init_timer() on omap.c file. Signed-off-by: Carlos Eduardo Aguiar <carlos.aguiar@indt.org.br> Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * MMC: OMAP: Abort stuck commandsJarkko Lavinen2008-04-181-10/+83
| | | | | | | | | | | | | | | | | | | | | | | | | | | | When a card is removed while it is being accessed, a command can get stuck so that no timeout or end of command interrupt ever occurs. The command getting stuck is almost always CDM12, but also the other commands can get stuck. Catch a stuck command with a timer and try sending the initialization stream until the controller starts running again and responds with the end of command status. Signed-off-by: Jarkko Lavinen <jarkko.lavinen@nokia.com> Signed-off-by: Carlos Eduardo Aguiar <carlos.aguiar@indt.org.br> Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * MMC: OMAP: General cleanup for MMC multislot supportJuha Yrjola2008-04-181-17/+29
| | | | | | | | | | | | | | | | | | | | General code cleanup, modifications at some dev_* functions and other hacks at mmc_omap_irq() for MMC multislot support. Signed-off-by: Juha Yrjola <juha.yrjola@solidboot.com> Signed-off-by: Carlos Eduardo Aguiar <carlos.aguiar@indt.org.br> Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * MMC: OMAP: Power functions modified to MMC multislot supportJuha Yrjola2008-04-181-51/+37
| | | | | | | | | | | | | | | | | | | | Modifications at power functions to MMC multislot support. This patch also move board-specific code out of MMC OMAP driver. Signed-off-by: Juha Yrjola <juha.yrjola@solidboot.com> Signed-off-by: Carlos Eduardo Aguiar <carlos.aguiar@indt.org.br> Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * MMC: OMAP: Fix timeout calculation for MMC multislot supportJuha Yrjola2008-04-181-5/+4
| | | | | | | | | | | | | | | | | | | | Fix the data timeout calculation for MMC multislot support. Signed-off-by: Juha Yrjola <juha.yrjola@solidboot.com> Signed-off-by: Jarkko Lavinen <jarkko.lavinen@nokia.com> Signed-off-by: Carlos Eduardo Aguiar <carlos.aguiar@indt.org.br> Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * MMC: OMAP: New release dma and abort xfer functionsJuha Yrjola2008-04-181-19/+60
| | | | | | | | | | | | | | | | | | | | New functions to support MMC multislot: mmc_omap_release_dma() and mmc_omap_abort_xfer(). Signed-off-by: Juha Yrjola <juha.yrjola@solidboot.com> Signed-off-by: Carlos Eduardo Aguiar <carlos.aguiar@indt.org.br> Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * MMC: OMAP: Add back cover switch supportJuha Yrjola2008-04-181-3/+84
| | | | | | | | | | | | | | | | | | | | | | This patch adds back MMC cover switch support in a way that supports multiple slots. Signed-off-by: Juha Yrjola <juha.yrjola@solidboot.com> Signed-off-by: Jarkko Lavinen <jarkko.lavinen@nokia.com> Signed-off-by: Carlos Eduardo Aguiar <carlos.aguiar@indt.org.br> Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * MMC: OMAP: Introduce new multislot structure and change driver to use itJuha Yrjola2008-04-182-110/+294
| | | | | | | | | | | | | | | | | | | | | | | | | | Introduce new MMC multislot structure and change driver to use it. Note that MMC clocking is now enabled in mmc_omap_select_slot() and disabled in mmc_omap_release_slot(). Signed-off-by: Juha Yrjola <juha.yrjola@solidboot.com> Signed-off-by: Jarkko Lavinen <jarkko.lavinen@nokia.com> Signed-off-by: Carlos Eduardo Aguiar <carlos.aguiar@indt.org.br> Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * MMC: OMAP: Remove cover switch handling to allow adding multislot supportTony Lindgren2008-04-181-151/+1
| | | | | | | | | | | | | | | | | | | | | | | | This patch removes the MMC cover switch handling temporarily to make following multislot patches cleaner. MMC cover switch handling will be added back in later patches after adding basic multislot support. Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Carlos Eduardo Aguiar <carlos.aguiar@indt.org.br> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * MMC: OMAP: Fix the BYTEBLOCK capability removalFrancisco Alecrim2008-04-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | According with commit 255d01af9a990fd5166f04ed0cc0b30b7b67e81e from Linux-OMAP tree, the BYTEBLOCK capability was removed by Pierre Ossman. MMC_CAP_BYTEBLOCK is not defined causing the compile error: drivers/mmc/host/omap.c: In function `mmc_omap_probe': drivers/mmc/host/omap.c:1077: error: `MMC_CAP_BYTEBLOCK' undeclared (first use in this function) drivers/mmc/host/omap.c:1077: error: (Each undeclared identifier is reported only once drivers/mmc/host/omap.c:1077: error: for each function it appears in.) Signed-off-by: Francisco Alecrim <francisco.alecrim@indt.org.br> Signed-off-by: Carlos Eduardo Aguiar <carlos.aguiar@indt.org.br> Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * MMC: OMAP: Remove extra divisor increaseTony Lindgren2008-04-181-1/+0
| | | | | | | | | | | | | | | | | | As noted by Kyungmin Park, the divisor calculation has an unnecessary increase. Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Carlos Eduardo Aguiar <carlos.aguiar@indt.org.br> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * MMC: OMAP: Remove some opcodes from host driverCarlos Eduardo Aguiar2008-04-181-8/+3
| | | | | | | | | | | | | | | | This patch removes some opcodes from host driver so there's no need on putting '#include <linux/mmc/mmc.h>', that should not be needed in host drivers. Signed-off-by: Carlos Eduardo Aguiar <carlos.aguiar@indt.org.br> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * mmc: use shorter, equivalent set_current_state()Robert P. J. Day2008-04-181-2/+2
| | | | | | | | | | | | Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * sdhci: allow led to be controlled freelyPierre Ossman2008-04-182-0/+48
| | | | | | | | | | | | | | Hook up the controller LED to the LED subsystem, allowing more flexible control than simply indicating an ongoing request. Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * sdhci: remove custom controller namePierre Ossman2008-04-182-32/+17
| | | | | | | | | | | | | | Remove the use of the sdhci specific device name and use the mmc controller name instead. Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
| * mmc: set controller name earlyPierre Ossman2008-04-181-17/+22
| | | | | | | | | | | | | | | | Reorganise code so that mmc_hostname() works directly after allocation. That way host drivers can use that name for resource allocations and messages during probing. Signed-off-by: Pierre Ossman <drzeus@drzeus.cx>
* | Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6Linus Torvalds2008-04-2176-11625/+172
|\ \ | | | | | | | | | | | | * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6: [SPARC]: Remove SunOS and Solaris binary support.
| * | [SPARC]: Remove SunOS and Solaris binary support.David S. Miller2008-04-2176-11625/+172
| | | | | | | | | | | | | | | | | | As per Documentation/feature-removal-schedule.txt Signed-off-by: David S. Miller <davem@davemloft.net>
* | | Merge branch 'for-linus' of ↵Linus Torvalds2008-04-2137-61/+63
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/juhl/trivial * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/juhl/trivial: (24 commits) DOC: A couple corrections and clarifications in USB doc. Generate a slightly more informative error msg for bad HZ fix typo "is" -> "if" in Makefile ext*: spelling fix prefered -> preferred DOCUMENTATION: Use newer DEFINE_SPINLOCK macro in docs. KEYS: Fix the comment to match the file name in rxrpc-type.h. RAID: remove trailing space from printk line DMA engine: typo fixes Remove unused MAX_NODES_SHIFT MAINTAINERS: Clarify access to OCFS2 development mailing list. V4L: Storage class should be before const qualifier (sn9c102) V4L: Storage class should be before const qualifier sonypi: Storage class should be before const qualifier intel_menlow: Storage class should be before const qualifier DVB: Storage class should be before const qualifier arm: Storage class should be before const qualifier ALSA: Storage class should be before const qualifier acpi: Storage class should be before const qualifier firmware_sample_driver.c: fix coding style MAINTAINERS: Add ati_remote2 driver ... Fixed up trivial conflicts in firmware_sample_driver.c
| * | | DOC: A couple corrections and clarifications in USB doc.Robert P. J. Day2008-04-211-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A couple of corrections and clarifications in USB documentation. Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca> Signed-off-by: Jesper Juhl <jesper.juhl@gmail.com>
| * | | Generate a slightly more informative error msg for bad HZRobert P. J. Day2008-04-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Generate a slightly more informative error msg for bad HZ in include/linux/jiffies.h Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca> Signed-off-by: Jesper Juhl <jesper.juhl@gmail.com>
| * | | fix typo "is" -> "if" in MakefileUwe Kleine-König2008-04-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | It should be "if" but is written as "is".. Signed-off-by: Uwe Kleine-Koenig <Uwe.Kleine-Koenig@digi.com> Signed-off-by: Jesper Juhl <jesper.juhl@gmail.com>
| * | | ext*: spelling fix prefered -> preferredBenoit Boissinot2008-04-216-11/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Spelling fix: prefered -> preferred Signed-off-by: Benoit Boissinot <benoit.boissinot@ens-lyon.org> Signed-off-by: Jesper Juhl <jesper.juhl@gmail.com>
| * | | DOCUMENTATION: Use newer DEFINE_SPINLOCK macro in docs.Robert P. J. Day2008-04-213-4/+4
| | | | | | | | | | | | | | | | | | | | Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca> Signed-off-by: Jesper Juhl <jesper.juhl@gmail.com>
| * | | KEYS: Fix the comment to match the file name in rxrpc-type.h.Robert P. J. Day2008-04-211-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca> Acked-by: David Howells <dhowells@redhat.com> Signed-off-by: Jesper Juhl <jesper.juhl@gmail.com>