summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* [ARM] S3C6410: Add CAMIF clockWerner Almesberger2009-05-071-0/+29
| | | | | | | Add camera interface clock to S3C6410. Signed-off-by: Werner Almesberger <werner@openmoko.org> Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* [ARM] Merge next-s3c-s3c6410 into for-rmk-develBen Dooks2009-05-075-0/+586
|\ | | | | | | Merge branch 'next-s3c-s3c6410' into for-rmk-devel
| * [ARM] SMDK6410: Hook regulator control of VDDARM up for WM1190-EV1Mark Brown2009-05-011-0/+9
| | | | | | | | | | | | | | This allows the S3C CPUfreq driver to do DVFS. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Ben Dooks <ben-linux@fluff.org>
| * [PATCH] S3C64XX: Basic A&W6410 board support patch V2Kwangwoo Lee2009-05-013-0/+256
| | | | | | | | | | | | | | | | | | | | | | | | | | A&W6410 board uses Samsung S3C6410 SoC and it is registered with 2183. Framebuffer and ethernet devices are supported currently. Unnecessary header file is removed. Fix to use __raw_writel() and __raw_readl() for accessing mapped address. Thank you for your comments. Signed-off-by: Kwangwoo Lee <kwangwoo.lee@gmail.com> Signed-off-by: Ben Dooks <ben-linux@fluff.org>
| * [ARM] SMDK6410: Mark all supplies as always_onMark Brown2009-05-011-0/+3
| | | | | | | | | | | | | | | | | | Since no consumers are currently configured for the SMDK6410 mark all the supplies on the board as being always_on, ensuring interoperability with future regulator API changes to disable unused regulators. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Ben Dooks <ben-linux@fluff.org>
| * [ARM] SMDK6410: Use active high IRQ for the WM8350 on the WM1190-EV1Mark Brown2009-05-011-0/+1
| | | | | | | | | | | | | | | | | | | | Using an active high IRQ ensures that the WM8350 interrupt handling does not spin when used with a SMDK6410 which has not had R20 removed and R21 fitted to connect EINT12 to the PMIC module rather thant the fixed regulators on the CPU module. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Ben Dooks <ben-linux@fluff.org>
| * [ARM] S3C6410: Basic support for NCP board (v2)Kyungmin Park2009-05-013-0/+117
| | | | | | | | | | | | | | | | | | This is a basic support for NCP board based on s3c6410. Only enables the serial. also remove empty i2c device. Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Ben Dooks <ben-linux@fluff.org>
| * [ARM] SMDK6410: Support WM1190-EV1 PMIC boardMark Brown2009-05-012-0/+148
| | | | | | | | | | | | | | | | | | | | | | The SMDK6410 supports pluggable PMIC boards. One such board is the Wolfson Microelectronics 1190-EV1 for the WM8350 PMICs. This patch introduces initial support for this module. Further patches will add additional integration with the system as support for the S3C6410 and other devices on the system improves. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Ben Dooks <ben-linux@fluff.org>
| * [ARM] SMDK6410: Add support for SMSC9115 ethernet controllerMark Brown2009-05-011-0/+35
| | | | | | | | | | Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Ben Dooks <ben-linux@fluff.org>
| * [ARM] SMDK6410: Ensure LCD settings are setupBen Dooks2009-05-011-0/+17
| | | | | | | | | | | | | | | | | | Ensure that the LCD output type is RGB and that the modem interface is not bypassing the LCD block. This ensures the LCD interface output gets to the pins in the correct format. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* | [ARM] SMDK6400: Fix WM8753 i2c board definitionBen Dooks2009-05-071-1/+1
| | | | | | | | Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* | [ARM] S3C64XX: Add S3C6400 SDHCI setup supportBen Dooks2009-05-0710-40/+187
| | | | | | | | | | | | | | Add support for S3C6400 SDHCI channels 0 and 1, making the GPIO code common to both S3C6400 and S3C6410. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* | [ARM] S3C64XX: Add S3C6400 CPU detection.Ben Dooks2009-05-071-0/+8
| | | | | | | | | | | | | | Add detection support for the S3C6400 SoC which has it's id register in a different place to the S3C6410. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* | [ARM] S3C6400: Core support for S3C6400 SoCBen Dooks2009-05-074-4/+95
| | | | | | | | | | | | Add the core support files for the Samsung S3C6400 SoC. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* | [ARM] SMDK6400: Initial machine support for SMDK6400Ben Dooks2009-05-073-0/+109
| | | | | | | | | | | | | | Add minimial support for the SMDK6400 board to test the S3C6400 support. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* | [ARM] VIC: Add power management deviceBen Dooks2009-05-077-14/+228
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Add power management support to the VIC by registering each VIC as a system device to get suspend/resume events going. Since the VIC registeration is done early, we need to record the VICs in a static array which is used to add the system devices later once the initcalls are run. This means there is now a configuration value for the number of VICs in the system. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* | [ARM] S3C: GPIO PM core GPIOlib integrationBen Dooks2009-05-078-226/+438
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Move the GPIO suspend/resume support inline with the gpiolib support so that it will work with both the S3C24XX and S3C64XX series. The s3c_gpio_chip is extended to have a pm callback and a save block to keep the state of the GPIO over suspend, and the code from the s3c24xx implementation is added to a new common file. The suspend process now uses the list of registered chips to go through saving and restoring each one as appropriate, using the pm callback to select the appropriate routine depending on the type of control register present. This change also means that any additional GPIO added should not require changes to the PM. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* | [ARM] S3C64XX: Add IRQ PM codeBen Dooks2009-05-074-3/+119
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add support for saving the state of the IRQ registers over suspend. This requires moving the S3C64XX UART registers into <plat/regs-serial.h> and adding irq-pm.c which saves the state of all the IRQ registers. The irq-pm.c saves all the IRQ registers, including the IRQ_EINT and IRQ_EINT_GROUP registers as it was easier than adding three different files. Also ensuring that all the registers are restored to the same state as before suspend is considered to be the best thing to do. Note, we do not suspend the VIC here, this is done by the VIC driver itself. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* | [ARM] S3C64XX: Add generic s3c64xx sys device.Ben Dooks2009-05-072-0/+21
| | | | | | | | | | | | | | | | | | Add an s3c64xx_sysclass and device for items that currently want to bind to any s3c64xx processor. The first user of this will be parts of the s3c64xx suspend support which need to save device state over suspend/resume. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* | [ARM] S3C64XX: Add s3c6410_sysclass exportBen Dooks2009-05-071-0/+1
| | | | | | | | | | | | | | Add definition for s3c6410_sysclass which was missing from arch/arm/plat-s3c/include/plat/cpu.h. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* | [ARM] S3C64XX: Initial support for PM (suspend to RAM)Ben Dooks2009-05-0711-2/+479
| | | | | | | | | | | | | | | | | | | | Add the initial support for the S3C64XX based systems to use suspend-to-RAM to sleep. Includes basic debugging for use with the SMDK6410 usign the LEDs on the baseboard. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* | [ARM] S3C: PM save UART UDIVSLOT if doing PMBen Dooks2009-05-072-0/+11
| | | | | | | | | | | | | | Add the facility to save the UART UDIVSLOT register if the UART state is being saved over suspend. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* | [ARM] S3C: Add debug to UART save and a per-arch callback pre-restoreBen Dooks2009-05-072-0/+10
| | | | | | | | | | | | | | | | Add a simple debug message on saving the UART state and add a per-arch pre-restore function to be used by the s3c64xx restore code to ensure the UARTs control registers do not go through any illegal state changes. Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* | [ARM] S3C64XX: Add USB OHCI supportBen Dooks2009-05-072-0/+4
| | | | | | | | | | | | | | Add USB OHCI host definitions. Signed-off-by: Ben Dooks <ben@simtec.co.uk> Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* | [ARM] S3C: Rename S3C24XX_PA_USBHOST to S3C_PA_USBHOSTBen Dooks2009-05-073-4/+3
| | | | | | | | | | | | | | | | The USB host base address is available on both the S3C24XX and S3C64XX ranges. Signed-off-by: Ben Dooks <ben@simtec.co.uk> Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* | [ARM] SMDK6410: Add USB OHCI hostBen Dooks2009-05-072-0/+2
| | | | | | | | | | | | | | | | Add USB OHCI host capability to the SMDK6410 for either USB OtG or a single/double USB host port. Signed-off-by: Ben Dooks <ben@simtec.co.uk> Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* | [ARM] S3C: Add common USB OHCI device definitionBen Dooks2009-05-077-30/+72
|/ | | | | | | | Add common definition for USB OHCI platform device, add a Kconfig to selectively compile it and add update all the users. Signed-off-by: Ben Dooks <ben@simtec.co.uk> Signed-off-by: Ben Dooks <ben-linux@fluff.org>
* Linux 2.6.30-rc4v2.6.30-rc4Linus Torvalds2009-04-301-2/+2
|
* Merge branch 'for-linus' of ↵Linus Torvalds2009-04-301-2/+2
|\ | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6 * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6: eCryptfs: Fix min function comparison warning ecryptfs: fix printk format warning
| * eCryptfs: Fix min function comparison warningTyler Hicks2009-04-271-1/+1
| | | | | | | | | | | | | | | | | | This warning shows up on 64 bit builds: fs/ecryptfs/inode.c:693: warning: comparison of distinct pointer types lacks a cast Signed-off-by: Tyler Hicks <tyhicks@linux.vnet.ibm.com>
| * ecryptfs: fix printk format warningRandy Dunlap2009-04-271-1/+1
| | | | | | | | | | | | | | | | | | fs/ecryptfs/inode.c:670: warning: format '%d' expects type 'int', but argument 3 has type 'size_t' Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com> Signed-off-by: Tyler Hicks <tyhicks@linux.vnet.ibm.com> Cc: Dustin Kirkland <kirkland@canonical.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
* | Merge branch 'for_linus' of ↵Linus Torvalds2009-04-3011-41/+49
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6 * 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6: V4L/DVB (11652): au0828: fix kernel oops regression on USB disconnect. V4L/DVB (11626): cx23885: Two fixes for DViCO FusionHDTV DVB-T Dual Express V4L/DVB (11612): mx3_camera: Fix compilation with CONFIG_PM V4L/DVB (11570): patch: s2255drv: fix race condition on set mode V4L/DVB (11568): cx18: Fix the handling of i2c bus registration error V4L/DVB (11561a): move media after i2c V4L/DVB (11516): drivers/media/video/saa5246a.c: fix use-after-free V4L/DVB (11515): drivers/media/video/saa5249.c: fix use-after-free and leak V4L/DVB (11494a): cx231xx Kconfig fixes V4L/DVB (11494): cx18: Send correct input routing value to external audio multiplexers
| * V4L/DVB (11652): au0828: fix kernel oops regression on USB disconnect.Devin Heitmueller2009-04-291-2/+4
| | | | | | | | | | | | | | | | | | | | | | A regression was introduced in hg changeset 33810c734a0d, which resulted in a kernel panic whenever the device was disconnected from USB. The call to 4l2_device_register() was overwriting the pointer for usb_set_intfdata(), so when au0828_usb_disconnect() was called, the usb_get_intfdata() returned a pointer to the v4l2_device instead of the au0828_dev structure. Signed-off-by: Devin Heitmueller <dheitmueller@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| * V4L/DVB (11626): cx23885: Two fixes for DViCO FusionHDTV DVB-T Dual ExpressChristopher Pascoe2009-04-292-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | Two fixes for DViCO FusionHDTV DVB-T Dual Express: * Reset correct tuner when reinitializing xc3028. * Disable the I2C gate control to avoid locking up the I2C bus. Tested-by: John Knops <jknops@australiaonline.net.au> Reviewed-by: Steven Toth <stoth@linuxtv.org> Signed-off-by: Christopher Pascoe <linuxdvb@itee.uq.edu.au> Signed-off-by: Devin Heitmueller <dheitmueller@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| * V4L/DVB (11612): mx3_camera: Fix compilation with CONFIG_PMSascha Hauer2009-04-291-4/+0
| | | | | | | | | | | | Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de> Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| * V4L/DVB (11570): patch: s2255drv: fix race condition on set modeDean Anderson2009-04-291-1/+1
| | | | | | | | | | | | | | | | set_modeready flag must be set before command sent to USB in s2255_write_config. Signed-off-by: Dean Anderson <dean@sensoray.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| * V4L/DVB (11568): cx18: Fix the handling of i2c bus registration errorJean Delvare2009-04-291-3/+13
| | | | | | | | | | | | | | | | | | | | | | * Return actual error values as returned by the i2c subsystem, rather than 0 or 1. * If the registration of the second bus fails, unregister the first one before exiting, otherwise we are leaking resources. Signed-off-by: Jean Delvare <khali@linux-fr.org> Acked-by: Andy Walls <awalls@radix.net> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| * V4L/DVB (11561a): move media after i2cGuennadi Liakhovetski2009-04-291-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently drivers/media drivers are linked very early - directly after base, block, misc, and mfd and before ata, scsi, ide, input, firewire, usb, and i2c. This breaks static build of video4linux drivers, that use generic CPU i2c adapter drivers and the v4l2-subdev subsystem, because during video4linux probing the v4l2-subdev core requires a struct i2c_adapter context, which cannot be satisfied before the i2c subsystem is initialised. Moving drivers/media after drivers/i2c fixes this problem. The best way to trigger action is by submitting a patch:-) So, let's see what comes out of it - on the one hand I don't see any reason why media has to be linked this early, and nobody was able to give me one yesterday as this problem has been discussed on linux-media, OTOH, maybe indeed it would be better to move i2c the whole way up above media, but that'd be much bigger of a change, I think. -- To unsubscribe from this list: send the line "unsubscribe linux-media" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Signed-off-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de> Acked-by: Jean Delvare <khali@linux-fr.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| * V4L/DVB (11516): drivers/media/video/saa5246a.c: fix use-after-freeDan Carpenter2009-04-291-2/+1
| | | | | | | | | | | | | | | | | | I lowered the kfree(t) down a couple lines and removed the superflous "t->vdev = NULL;" Signed-off-by: Dan Carpenter <error27@gmail.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| * V4L/DVB (11515): drivers/media/video/saa5249.c: fix use-after-free and leakDan Carpenter2009-04-291-2/+2
| | | | | | | | | | | | | | I moved the kfree() down a couple lines. t->vdev is going to be in freed memory so there is no point setting it to NULL. I added a kfree(t) on a Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| * V4L/DVB (11494a): cx231xx Kconfig fixesMauro Carvalho Chehab2009-04-291-22/+22
| | | | | | | | | | | | | | | | selecting ALSA module breaks if !SND. Just remove select. While here, let's fix the whitespacing at the Kconfig. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
| * V4L/DVB (11494): cx18: Send correct input routing value to external audio ↵Andy Walls2009-04-291-1/+1
| | | | | | | | | | | | | | | | | | | | | | multiplexers A late v4l2_subdev framework change accidentally sent the audio input routing value to the external multiplexer, instead of the muxer input routing value to the external multiplexer. This change corrects that error. Signed-off-by: Andy Walls <awalls@radix.net> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
* | Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6Linus Torvalds2009-04-2933-447/+795
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (24 commits) e100: do not go D3 in shutdown unless system is powering off netfilter: revised locking for x_tables Bluetooth: Fix connection establishment with low security requirement Bluetooth: Add different pairing timeout for Legacy Pairing Bluetooth: Ensure that HCI sysfs add/del is preempt safe net: Avoid extra wakeups of threads blocked in wait_for_packet() net: Fix typo in net_device_ops description. ipv4: Limit size of route cache hash table Add reference to CAPI 2.0 standard Documentation/isdn/INTERFACE.CAPI update Documentation/isdn/00-INDEX ixgbe: Fix WoL functionality for 82599 KX4 devices veth: prevent oops caused by netdev destructor xfrm: wrong hash value for temporary SA forcedeth: tx timeout fix net: Fix LL_MAX_HEADER for CONFIG_TR_MODULE mlx4_en: Handle page allocation failure during receive mlx4_en: Fix cleanup flow on cq activation vlan: update vlan carrier state for admin up/down netfilter: xt_recent: fix stack overread in compat code ...
| * | e100: do not go D3 in shutdown unless system is powering offThadeu Lima de Souza Cascardo2009-04-291-7/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | After experimenting with kexec with the last merges after 2.6.29, I've had some problems when probing e100. It would not read the eeprom. After some bisects, I realized this has been like that since forever (at least 2.6.18). The problem is that shutdown is doing the same thing that suspend does and puts the device in D3 state. I couldn't find a way to get the device back to a sane state in the probe function. So, based on some similar patches from Rafael J. Wysocki for e1000, e1000e, and ixgbe, I wrote this one for e100. Signed-off-by: Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com> Acked-by: "Rafael J. Wysocki" <rjw@sisk.pl> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
| * | Merge branch 'master' of ↵David S. Miller2009-04-295-31/+61
| |\ \ | | | | | | | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-2.6
| | * | Bluetooth: Fix connection establishment with low security requirementMarcel Holtmann2009-04-281-6/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Bluetooth 2.1 specification introduced four different security modes that can be mapped using Legacy Pairing and Simple Pairing. With the usage of Simple Pairing it is required that all connections (except the ones for SDP) are encrypted. So even the low security requirement mandates an encrypted connection when using Simple Pairing. When using Legacy Pairing (for Bluetooth 2.0 devices and older) this is not required since it causes interoperability issues. To support this properly the low security requirement translates into different host controller transactions depending if Simple Pairing is supported or not. However in case of Simple Pairing the command to switch on encryption after a successful authentication is not triggered for the low security mode. This patch fixes this and actually makes the logic to differentiate between Simple Pairing and Legacy Pairing a lot simpler. Based on a report by Ville Tervo <ville.tervo@nokia.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
| | * | Bluetooth: Add different pairing timeout for Legacy PairingMarcel Holtmann2009-04-284-3/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The Bluetooth stack uses a reference counting for all established ACL links and if no user (L2CAP connection) is present, the link will be terminated to save power. The problem part is the dedicated pairing when using Legacy Pairing (Bluetooth 2.0 and before). At that point no user is present and pairing attempts will be disconnected within 10 seconds or less. In previous kernel version this was not a problem since the disconnect timeout wasn't triggered on incoming connections for the first time. However this caused issues with broken host stacks that kept the connections around after dedicated pairing. When the support for Simple Pairing got added, the link establishment procedure needed to be changed and now causes issues when using Legacy Pairing When using Simple Pairing it is possible to do a proper reference counting of ACL link users. With Legacy Pairing this is not possible since the specification is unclear in some areas and too many broken Bluetooth devices have already been deployed. So instead of trying to deal with all the broken devices, a special pairing timeout will be introduced that increases the timeout to 60 seconds when pairing is triggered. If a broken devices now puts the stack into an unforeseen state, the worst that happens is the disconnect timeout triggers after 120 seconds instead of 4 seconds. This allows successful pairings with legacy and broken devices now. Based on a report by Johan Hedberg <johan.hedberg@nokia.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
| | * | Bluetooth: Ensure that HCI sysfs add/del is preempt safeRoger Quadros2009-04-282-22/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use a different work_struct variables for add_conn() and del_conn() and use single work queue instead of two for adding and deleting connections. It eliminates the following error on a preemptible kernel: [ 204.358032] Unable to handle kernel NULL pointer dereference at virtual address 0000000c [ 204.370697] pgd = c0004000 [ 204.373443] [0000000c] *pgd=00000000 [ 204.378601] Internal error: Oops: 17 [#1] PREEMPT [ 204.383361] Modules linked in: vfat fat rfcomm sco l2cap sd_mod scsi_mod iphb pvr2d drm omaplfb ps [ 204.438537] CPU: 0 Not tainted (2.6.28-maemo2 #1) [ 204.443664] PC is at klist_put+0x2c/0xb4 [ 204.447601] LR is at klist_put+0x18/0xb4 [ 204.451568] pc : [<c0270f08>] lr : [<c0270ef4>] psr: a0000113 [ 204.451568] sp : cf1b3f10 ip : cf1b3f10 fp : cf1b3f2c [ 204.463104] r10: 00000000 r9 : 00000000 r8 : bf08029c [ 204.468353] r7 : c7869200 r6 : cfbe2690 r5 : c78692c8 r4 : 00000001 [ 204.474945] r3 : 00000001 r2 : cf1b2000 r1 : 00000001 r0 : 00000000 [ 204.481506] Flags: NzCv IRQs on FIQs on Mode SVC_32 ISA ARM Segment kernel [ 204.488861] Control: 10c5387d Table: 887fc018 DAC: 00000017 [ 204.494628] Process btdelconn (pid: 515, stack limit = 0xcf1b22e0) Signed-off-by: Roger Quadros <ext-roger.quadros@nokia.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
| * | | netfilter: revised locking for x_tablesStephen Hemminger2009-04-295-296/+204
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The x_tables are organized with a table structure and a per-cpu copies of the counters and rules. On older kernels there was a reader/writer lock per table which was a performance bottleneck. In 2.6.30-rc, this was converted to use RCU and the counters/rules which solved the performance problems for do_table but made replacing rules much slower because of the necessary RCU grace period. This version uses a per-cpu set of spinlocks and counters to allow to table processing to proceed without the cache thrashing of a global reader lock and keeps the same performance for table updates. Signed-off-by: Stephen Hemminger <shemminger@vyatta.com> Acked-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: David S. Miller <davem@davemloft.net>
| * | net: Avoid extra wakeups of threads blocked in wait_for_packet()Eric Dumazet2009-04-282-3/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In 2.6.25 we added UDP mem accounting. This unfortunatly added a penalty when a frame is transmitted, since we have at TX completion time to call sock_wfree() to perform necessary memory accounting. This calls sock_def_write_space() and utimately scheduler if any thread is waiting on the socket. Thread(s) waiting for an incoming frame was scheduled, then had to sleep again as event was meaningless. (All threads waiting on a socket are using same sk_sleep anchor) This adds lot of extra wakeups and increases latencies, as noted by Christoph Lameter, and slows down softirq handler. Reference : http://marc.info/?l=linux-netdev&m=124060437012283&w=2 Fortunatly, Davide Libenzi recently added concept of keyed wakeups into kernel, and particularly for sockets (see commit 37e5540b3c9d838eb20f2ca8ea2eb8072271e403 epoll keyed wakeups: make sockets use keyed wakeups) Davide goal was to optimize epoll, but this new wakeup infrastructure can help non epoll users as well, if they care to setup an appropriate handler. This patch introduces new DEFINE_WAIT_FUNC() helper and uses it in wait_for_packet(), so that only relevant event can wakeup a thread blocked in this function. Trace of function calls from bnx2 TX completion bnx2_poll_work() is : __kfree_skb() skb_release_head_state() sock_wfree() sock_def_write_space() __wake_up_sync_key() __wake_up_common() receiver_wake_function() : Stops here since thread is waiting for an INPUT Reported-by: Christoph Lameter <cl@linux.com> Signed-off-by: Eric Dumazet <dada1@cosmosbay.com> Signed-off-by: David S. Miller <davem@davemloft.net>