]> pilppa.org Git - linux-2.6-omap-h63xx.git/log
linux-2.6-omap-h63xx.git
17 years agoPM: Remove legacy PM (fix)
Randy Dunlap [Fri, 28 Mar 2008 21:22:52 +0000 (14:22 -0700)]
PM: Remove legacy PM (fix)

Source file was removed.  Need to remove docbook reference also.

Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Cc: Pavel Machek <pavel@suse.cz>
Cc: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agoKobject: Replace list_for_each() with list_for_each_entry().
Robert P. J. Day [Thu, 27 Mar 2008 05:13:34 +0000 (01:13 -0400)]
Kobject: Replace list_for_each() with list_for_each_entry().

Use the more concise list_for_each_entry(), which allows for the
deletion of the to_kobj() routine at the same time.

Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agoSYSFS: Explicitly include required header file slab.h.
Robert P. J. Day [Fri, 14 Mar 2008 02:41:52 +0000 (22:41 -0400)]
SYSFS: Explicitly include required header file slab.h.

After an experimental deletion of the unnecessary inclusion of
<linux/slab.h> from the header file <linux/percpu.h>, the following
files under fs/sysfs were exposed as needing to explicitly include
<linux/slab.h>.

Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agoDriver core: make device_is_registered() work for class devices
Greg Kroah-Hartman [Thu, 13 Mar 2008 21:07:03 +0000 (17:07 -0400)]
Driver core: make device_is_registered() work for class devices

device_is_registered() can use the kobject value for this, so it will
now work with devices that are associated with only a class, not a bus
and a driver.

Cc: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agoPM: Convert wakeup flag accessors to inline functions
Alan Stern [Wed, 19 Mar 2008 21:39:13 +0000 (22:39 +0100)]
PM: Convert wakeup flag accessors to inline functions

This patch (as1058) improves the wakeup macros in include/linux/pm.h.
All but the trivial ones are converted to inline routines, which
requires moving them to a separate header file since they depend on
the definition of struct device.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agoPM: Make wakeup flags available whenever CONFIG_PM is set
Alan Stern [Wed, 19 Mar 2008 21:37:42 +0000 (22:37 +0100)]
PM: Make wakeup flags available whenever CONFIG_PM is set

The various wakeup flags and their accessor macros in struct
dev_pm_info should be available whenever CONFIG_PM is enabled, not
just when CONFIG_PM_SLEEP is on.  Otherwise remote wakeup won't always
be configurable for runtime power management.  This patch (as1056b)
fixes the oversight.

David Brownell adds:
More accurately, fixes the "regression" ... as noted sometime
last summer, after 296699de6bdc717189a331ab6bbe90e05c94db06
introduced CONFIG_SUSPEND.  But that didn't make the regression
list for that kernel, ergo the delay in fixing it.

[rjw: rebased]

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agoPM: Fix misuse of wakeup flag accessors in serial core
Alan Stern [Wed, 19 Mar 2008 21:35:13 +0000 (22:35 +0100)]
PM: Fix misuse of wakeup flag accessors in serial core

This patch (as1059) fixes a mistake in the way the serial core
initializes a device's wakeup settings.  It should use the accessor
routine instead of relying on a macro producing an lvalue.

Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agoDriver core: Call device_pm_add() after bus_add_device() in device_add()
Rafael J. Wysocki [Tue, 11 Mar 2008 23:59:38 +0000 (00:59 +0100)]
Driver core: Call device_pm_add() after bus_add_device() in device_add()

Include dpm_sysfs_add() into device_pm_add(), in analogy with
device_pm_remove(), and modify device_add() to call the latter after
bus_add_device(), to avoid situations in which the PM core may
attempt to suspend a device the registration of which has not been
successful.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agoPM: Handle device registrations during suspend/resume
Rafael J. Wysocki [Tue, 11 Mar 2008 23:57:22 +0000 (00:57 +0100)]
PM: Handle device registrations during suspend/resume

Modify the PM core to protect its data structures, specifically the
dpm_active list, from being corrupted if a child of the currently
suspending device is registered concurrently with its ->suspend()
callback.  In that case, since the new device (the child) is added
to dpm_active after its parent, the PM core will attempt to
suspend it after the parent, which is wrong.

Introduce a new member of struct dev_pm_info, called 'sleeping',
and use it to check if the parent of the device being added to
dpm_active has been suspended, in which case the device registration
fails.  Also, use 'sleeping' for checking if the ordering of devices
on dpm_active is correct.

Introduce variable 'all_sleeping' that will be set to 'true' once all
devices have been suspended and make new device registrations fail
until 'all_sleeping' is reset to 'false', in order to avoid having
unsuspended devices around while the system is going into a sleep state.

Remove pm_sleep_rwsem which is not necessary any more.

Special thanks to Alan Stern for discussions and suggestions that
lead to the creation of this patch.

Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Acked-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agoblock: send disk "change" event for rescan_partitions()
Kay Sievers [Sun, 9 Mar 2008 20:26:02 +0000 (21:26 +0100)]
block: send disk "change" event for rescan_partitions()

Userspace likes to get notified that the disk may have changed, when
rescan_partitions() is called after partitioning or media change. It will
make it possible to update the state of the disk with the "change" event,
before the following partition "add" events are handled.

Cc: David Zeuthen <david@fubar.dk>
Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agosysdev: detect multiple driver registrations
Ben Dooks [Tue, 4 Mar 2008 23:09:06 +0000 (15:09 -0800)]
sysdev: detect multiple driver registrations

I've just found how easy it is to accidentally register a sysdev_driver for
two different classes.  When this happens, bad things happen as the
sysdev_driver structure keeps has the list entry for the driver
registration.

The following patch makes a WARN_ON() if this happens, although I think
BUG_ON or returning -EAGAIN could also be valid responses to this.

Signed-off-by: Ben Dooks <ben@fluff.org>
Cc: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agodriver core: cpu: fix section mismatch in cpu.c:store_online
Sam Ravnborg [Tue, 4 Mar 2008 23:09:05 +0000 (15:09 -0800)]
driver core: cpu: fix section mismatch in cpu.c:store_online

Fix following warning:
WARNING: vmlinux.o(.text+0x64609c): Section mismatch in reference from the function store_online() to the function .cpuinit.text:cpu_up()

store_online() is defined inside a HOTPLUG_CPU block so references are OK.
Ignore references by annotating store_online() with __ref.

Note: This is needed because cpu_up() most likely should not have been
__cpuinit but all the hotplug cpu code misuses the __cpuinit annotation.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agopower_state: remove it from driver core
Pavel Machek [Thu, 21 Feb 2008 12:58:10 +0000 (13:58 +0100)]
power_state: remove it from driver core

power_state is scheduled for removal, and it is used only for debug
prints by driver core. Remove it.

Signed-off-by: Pavel Machek <pavel@suse.cz>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agoPNP: add all PNP card device id's as individual aliases
Kay Sievers [Wed, 20 Feb 2008 23:35:54 +0000 (00:35 +0100)]
PNP: add all PNP card device id's as individual aliases

The current PNP combined card + devices module aliase can
never ever match anything, because these values are not available
all at the same time to request a module.

Instead of adding the combined alias, we add the device id's
all as individual aliases. Device id's are exported by the PNP
bus and can now properly used to request the loading of a
matching module.

The module snd-sbawe currently exports aliases, which can never
match anything:
  alias: pnp:cCTLXXXXdCTL0045dCTL0022*
  alias: pnp:cCTLXXXXdCTL0044dCTL0023*
  alias: pnp:cCTLXXXXdCTL0042dCTL0022*
  alias: pnp:cCTLXXXXdCTL0041dCTL0021*
  alias: pnp:cCTLXXXXdCTL0031dCTL0021*
  alias: pnp:cCTL00eddCTL0041dCTL0070*
  alias: pnp:cCTL00e9dCTL0045dCTL0022*
  alias: pnp:cCTL00e4dCTL0045dCTL0022*
  alias: pnp:cCTL00c7dCTL0045dCTL0022*
  alias: pnp:cCTL00c5dCTL0045dCTL0022*
  alias: pnp:cCTL00c3dCTL0045dCTL0022*
  alias: pnp:cCTL00c1dCTL0042dCTL0022*
  alias: pnp:cCTL00b2dCTL0044dCTL0023*
  alias: pnp:cCTL009edCTL0044dCTL0023*
  alias: pnp:cCTL009ddCTL0042dCTL0022*
  alias: pnp:cCTL009fdCTL0041dCTL0021*
  alias: pnp:cCTL009cdCTL0041dCTL0021*
  alias: pnp:cCTL009adCTL0041dCTL0021*
  alias: pnp:cCTL0054dCTL0031dCTL0021*
  alias: pnp:cCTL0048dCTL0031dCTL0021*
  alias: pnp:cCTL0047dCTL0031dCTL0021*
  alias: pnp:cCTL0046dCTL0031dCTL0021*
  alias: pnp:cCTL0045dCTL0031dCTL0021*
  alias: pnp:cCTL0044dCTL0031dCTL0021*
  alias: pnp:cCTL0043dCTL0031dCTL0021*
  alias: pnp:cCTL0042dCTL0031dCTL0021*
  alias: pnp:cCTL0039dCTL0031dCTL0021*
  alias: pnp:cCTL0035dCTL0031dCTL0021*

With this patch it exports only the device id's, as properly
matchable aliases:
  alias: pnp:dCTL0070*
  alias: pnp:dCTL0045*
  alias: pnp:dCTL0023*
  alias: pnp:dCTL0044*
  alias: pnp:dCTL0022*
  alias: pnp:dCTL0042*
  alias: pnp:dCTL0041*
  alias: pnp:dCTL0021*
  alias: pnp:dCTL0031*

Now, the exported value of the PNP bus can be used to autoload
a matching module:
  $ modprobe --first-time -n -v pnp:dCTL0045
  insmod /lib/modules/2.6.24-rc6-g5b825ed2-dirty/kernel/sound/core/snd-rawmidi.ko
  insmod /lib/modules/2.6.24-rc6-g5b825ed2-dirty/kernel/sound/drivers/mpu401/snd-mpu401-uart.ko
  insmod /lib/modules/2.6.24-rc6-g5b825ed2-dirty/kernel/sound/core/snd-hwdep.ko
  insmod /lib/modules/2.6.24-rc6-g5b825ed2-dirty/kernel/sound/isa/sb/snd-sb-common.ko
  insmod /lib/modules/2.6.24-rc6-g5b825ed2-dirty/kernel/sound/isa/sb/snd-sb16-csp.ko
  insmod /lib/modules/2.6.24-rc6-g5b825ed2-dirty/kernel/sound/isa/sb/snd-sb16-dsp.ko
  insmod /lib/modules/2.6.24-rc6-g5b825ed2-dirty/kernel/sound/drivers/opl3/snd-opl3-lib.ko
  insmod /lib/modules/2.6.24-rc6-g5b825ed2-dirty/kernel/sound/isa/sb/snd-sbawe.ko

  $ grep CTL0045 /sys/bus/pnp/devices/*/id
  /sys/bus/pnp/devices/01:01.00/id:CTL0045

Signed-off-by: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agofirmware: clean up samples for coding style issues
Greg Kroah-Hartman [Thu, 21 Feb 2008 00:07:07 +0000 (16:07 -0800)]
firmware: clean up samples for coding style issues

This fixes up a number of coding style issues in the firmware sample files.

Yeah, it still doesn't build properly yet, that's next...

Cc: Randy Dunlap <randy.dunlap@oracle.com>
Cc: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agofirmware: move firmware_class from Documentation/ to samples/
Randy Dunlap [Wed, 20 Feb 2008 21:20:50 +0000 (13:20 -0800)]
firmware: move firmware_class from Documentation/ to samples/

Move the firmware_class sample drivers to samples/ so that they are
buildable and can be maintained.

Signed-off-by: Randy Dunlap <randy.dunlap@oracle.com>
Acked-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agosysfs: small header file cleanup for SYSFS=n
David Rientjes [Wed, 20 Feb 2008 01:39:02 +0000 (17:39 -0800)]
sysfs: small header file cleanup for SYSFS=n

Convert sysfs_remove_bin_file() to have a return type of 'void' for
!CONFIG_SYSFS configurations.  Also removes unnecessary colons from empty
void functions.

Signed-off-by: David Rientjes <rientjes@google.com>
Reviewed-by: Randy Dunlap <randy.dunlap@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agodriver core: Convert debug functions declared inline __attribute__((format (printf...
Joe Perches [Wed, 27 Feb 2008 03:08:42 +0000 (19:08 -0800)]
driver core: Convert debug functions declared inline __attribute__((format (printf,x,y) to statement expression macros

When DEBUG is not defined, pr_debug and dev_dbg and some
other local debugging functions are specified as:

"inline __attribute__((format (printf, x, y)))"

This is done to validate printk arguments when not debugging.

Converting these functions to macros or statement expressions
"do { if (0) printk(fmt, ##arg); } while (0)"
or
"({ if (0) printk(fmt, ##arg); 0; })
makes at least gcc 4.2.2 produce smaller objects.

This has the additional benefit of allowing the optimizer to
avoid calling functions like print_mac that might have been
arguments to the printk.

defconfig x86 current:

$ size vmlinux
   text    data     bss     dec     hex filename
4716770  474560  618496 5809826  58a6a2 vmlinux

all converted: (More patches follow)

$ size vmlinux
   text    data     bss     dec     hex filename
4716642  474560  618496 5809698  58a622 vmlinux

Even kernel/sched.o, which doesn't even use these
functions, becomes smaller.

It appears that merely having an indirect include
of <linux/device.h> can cause bigger objects.

$ size sched.inline.o sched.if0.o
   text    data     bss     dec     hex filename
  31385    2854     328   34567    8707 sched.inline.o
  31366    2854     328   34548    86f4 sched.if0.o

The current preprocessed only kernel/sched.i file contains:

# 612 "include/linux/device.h"
static inline __attribute__((always_inline)) int __attribute__ ((format (printf, 2, 3)))
dev_dbg(struct device *dev, const char *fmt, ...)
{
 return 0;
}
# 628 "include/linux/device.h"
static inline __attribute__((always_inline)) int __attribute__ ((format (printf, 2, 3)))
dev_vdbg(struct device *dev, const char *fmt, ...)
{
 return 0;
}

Removing these unused inlines from sched.i shrinks sched.o

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agodriver core: register_memory/unregister_memory clean ups and bugfix
Badari Pulavarty [Mon, 11 Feb 2008 17:23:18 +0000 (09:23 -0800)]
driver core: register_memory/unregister_memory clean ups and bugfix

register_memory()/unregister_memory() never gets called with
"root". unregister_memory() is accessing kobject_name of
the object just freed up. Since no one uses the code,
lets take the code out. And also, make register_memory() static.

Another bug fix - before calling unregister_memory()
remove_memory_block() gets a ref on kobject. unregister_memory()
need to drop that ref before calling sysdev_unregister().

Signed-off-by: Badari Pulavarty <pbadari@us.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agodriver core: memory: semaphore to mutex
Daniel Walker [Tue, 5 Feb 2008 07:35:47 +0000 (23:35 -0800)]
driver core: memory: semaphore to mutex

Signed-off-by: Daniel Walker <dwalker@mvista.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agoUIO: hold a reference to the device's owner while the device is open
Uwe Kleine-König [Fri, 11 Apr 2008 09:07:39 +0000 (11:07 +0200)]
UIO: hold a reference to the device's owner while the device is open

Otherwise the device might just disappear while /dev/uioX is being used
which results in an Oops.

Signed-off-by: Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com>
Signed-off-by: Hans J Koch <hjk@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agoUIO: Implement a UIO interface for the SMX Cryptengine
Ben Nizette [Thu, 13 Mar 2008 11:27:30 +0000 (22:27 +1100)]
UIO: Implement a UIO interface for the SMX Cryptengine

This patch implements a UIO interface for the SMX Cryptengine.

The Cryptengine found on the Nias Digital SMX board is best suited
for a UIO interface.  It is not wired in to the cryptographic API
as the engine handles it's own keys, algorithms, everything.  All
that we know about is that if there's room in the buffer, you can
write data to it and when there's data ready, you read it out again.

There isn't necessarily even any direct correlation between data
going in and data coming out again, the engine may consume or
generate data all on its own.

This driver is for proprietary hardware but we're always told to
submit the drivers anyway; here you are.  :-)

This is version 4 of this patch and addresses all issues raised by
Hans-Jürgen Koch and Paul Mundt in their reviews.  Slightly altered
is Paul's suggestion to use DRV_NAME and DRV_VERSION as the UIO
version and name.  While at the moment they are the same, there
is no reason for them to stay that way.  Nevertheless we now at
least provide a MODULE_VERSION macro to keep modinfo happy.

Signed-off-by: Ben Nizette <bn@niasdigital.com>
Acked-by: Paul Mundt <lethal@linux-sh.org>
Signed-off-by: Hans J Koch <hjk@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agoUIO: Remove needless PCI_DEVICE_ID definition from uio_cif.c
Hans-Jürgen Koch [Sun, 3 Feb 2008 00:48:28 +0000 (01:48 +0100)]
UIO: Remove needless PCI_DEVICE_ID definition from uio_cif.c

Meanwhile, PCI_DEVICE_ID_PLX_9030 is defined in pci_ids.h, no need to
define it again in the driver.

Signed-off-by: Hans J. Koch <hjk@linutronix.de>
CC: Benedikt Spranger <b.spranger@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agoUIO: arch/arm/Kconfig: Make UIO available on ARM architecture
Hans-Jürgen Koch [Tue, 19 Feb 2008 20:07:19 +0000 (21:07 +0100)]
UIO: arch/arm/Kconfig: Make UIO available on ARM architecture

Source drivers/uio/Kconfig to make UIO available in menuconfig if ARCH=arm.

Signed-off-by: Hans J Koch <hjk@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agouio: mark pci_device_id hilscher_pci_ids[] __devinitdata
Denis Cheng [Sat, 2 Feb 2008 09:51:36 +0000 (17:51 +0800)]
uio: mark pci_device_id hilscher_pci_ids[] __devinitdata

Signed-off-by: Denis Cheng <crquan@gmail.com>
Signed-off-by: Hans J. Koch <hjk@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agouio: Kconfig improvements
Denis Cheng [Sat, 2 Feb 2008 09:51:35 +0000 (17:51 +0800)]
uio: Kconfig improvements

Signed-off-by: Denis Cheng <crquan@gmail.com>
Signed-off-by: Hans J. Koch <hjk@linutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agokobject: catch kobjects that are not initialized
Greg Kroah-Hartman [Tue, 26 Feb 2008 17:36:38 +0000 (09:36 -0800)]
kobject: catch kobjects that are not initialized

Add warnings to kobject_put() to catch kobjects that are cleaned up but
were never initialized to begin with.

Cc: Kay Sievers <kay.sievers@vrfy.org>
Cc: Hannes Reinecke <hare@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
17 years agorose: Socket lock was not released before returning to user space
Bernard Pidoux [Sun, 20 Apr 2008 01:41:51 +0000 (18:41 -0700)]
rose: Socket lock was not released before returning to user space

================================================
[ BUG: lock held when returning to user space! ]
------------------------------------------------
xfbbd/3683 is leaving the kernel with locks still held!
1 lock held by xfbbd/3683:
  #0:  (sk_lock-AF_ROSE){--..}, at: [<c8cd1eb3>] rose_connect+0x73/0x420 [rose]

INFO: task xfbbd:3683 blocked for more than 120 seconds.
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
xfbbd         D 00000246     0  3683   3669
        c6965ee0 00000092 c02c5c40 00000246 c0f6b5f0 c0f6b5c0 c0f6b5f0 c0f6b5c0
        c0f6b614 c6965f18 c024b74b ffffffff c06ba070 00000000 00000000 00000001
        c6ab07c0 c012d450 c0f6b634 c0f6b634 c7b5bf10 c0d6004c c7b5bf10 c6965f40
Call Trace:
  [<c024b74b>] lock_sock_nested+0x6b/0xd0
  [<c012d450>] ? autoremove_wake_function+0x0/0x40
  [<c02488f1>] sock_fasync+0x41/0x150
  [<c0249e69>] sock_close+0x19/0x40
  [<c0175d54>] __fput+0xb4/0x170
  [<c0176018>] fput+0x18/0x20
  [<c017300e>] filp_close+0x3e/0x70
  [<c01744e9>] sys_close+0x69/0xb0
  [<c0103bda>] sysenter_past_esp+0x5f/0xa5
  =======================
INFO: lockdep is turned off.

Signed-off-by: Bernard Pidoux <f6bvp@amsat.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years agohci_usb: remove code obfuscation
Pavel Machek [Sun, 20 Apr 2008 01:17:26 +0000 (18:17 -0700)]
hci_usb: remove code obfuscation

_urb_free is an alias for kfree... making code longer & harder to
read. Remove it.

Signed-off-by: Pavel Machek <pavel@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years agodrivers/net/appletalk: use time_before, time_before_eq, etc
Julia Lawall [Sun, 20 Apr 2008 01:15:41 +0000 (18:15 -0700)]
drivers/net/appletalk: use time_before, time_before_eq, etc

The functions time_before, time_before_eq, time_after, and time_after_eq
are more robust for comparing jiffies against other values.

A simplified version of the semantic patch making this change is as follows:
(http://www.emn.fr/x-info/coccinelle/)

// <smpl>
@ change_compare_np @
expression E;
@@

(
- jiffies <= E
+ time_before_eq(jiffies,E)
|
- jiffies >= E
+ time_after_eq(jiffies,E)
|
- jiffies < E
+ time_before(jiffies,E)
|
- jiffies > E
+ time_after(jiffies,E)
)

@ include depends on change_compare_np @
@@

#include <linux/jiffies.h>

@ no_include depends on !include && change_compare_np @
@@

  #include <linux/...>
+ #include <linux/jiffies.h>
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years agodrivers/atm: use time_before, time_before_eq, etc
Julia Lawall [Sun, 20 Apr 2008 01:14:50 +0000 (18:14 -0700)]
drivers/atm: use time_before, time_before_eq, etc

The functions time_before, time_before_eq, time_after, and time_after_eq
are more robust for comparing jiffies against other values.

A simplified version of the semantic patch making this change is as follows:
(http://www.emn.fr/x-info/coccinelle/)

// <smpl>
@ change_compare_np @
expression E;
@@

(
- jiffies <= E
+ time_before_eq(jiffies,E)
|
- jiffies >= E
+ time_after_eq(jiffies,E)
|
- jiffies < E
+ time_before(jiffies,E)
|
- jiffies > E
+ time_after(jiffies,E)
)

@ include depends on change_compare_np @
@@

#include <linux/jiffies.h>

@ no_include depends on !include && change_compare_np @
@@

  #include <linux/...>
+ #include <linux/jiffies.h>
// </smpl>

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years agohci_usb: do not initialize static variables to 0
Pavel Machek [Sun, 20 Apr 2008 01:13:40 +0000 (18:13 -0700)]
hci_usb: do not initialize static variables to 0

hci_usb: do not initialize static variables to 0.

Signed-off-by: Pavel Machek <pavel@suse.cz>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years agotg3: 5701 DMA corruption fix
Matt Carlson [Sun, 20 Apr 2008 01:12:33 +0000 (18:12 -0700)]
tg3: 5701 DMA corruption fix

Herbert Xu's commit fb93134dfc2a6e6fbedc7c270a31da03fce88db9, entitled
"[TCP]: Fix size calculation in sk_stream_alloc_pskb", has triggered a
bug in the 5701 where the 5701 DMA engine will corrupt outgoing
packets.  This problem only happens when the starting address of the
packet matches a certain range of offsets and only when the 5701 is
placed downstream of a particular Intel bridge.

This patch detects the problematic bridge and if present, readjusts the
starting address of the packet data to a dword aligned boundary.

Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years agoatm nicstar: Removal of debug code containing deprecated calls to cli()/sti()
Mark Asselstine [Sun, 20 Apr 2008 01:10:46 +0000 (18:10 -0700)]
atm nicstar: Removal of debug code containing deprecated calls to cli()/sti()

Code within NS_DEBUG_SPINLOCKS contained deprecated cli()/sti()
function calls.  NS_DEBUG_SPINLOCKS and the associated code seems to
be of little use these days so the strategy of removing this code
rather then updating it to use spinlocks has been taken.

Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
Reviewed-by: Matthew Wilcox <willy@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years agoiwlwifi: Fix unconditional access to station->tidp[].agg.
David S. Miller [Sun, 20 Apr 2008 01:09:39 +0000 (18:09 -0700)]
iwlwifi: Fix unconditional access to station->tidp[].agg.

Reportred by Ingo Molnar:

drivers/net/wireless/iwlwifi/iwl-debugfs.c: In function 'iwl_dbgfs_stations_read':
drivers/net/wireless/iwlwifi/iwl-debugfs.c:256: error: 'struct iwl4965_tid_data' has no member named 'agg'

Needs CONFIG_IWL4965_HT protection.

Signed-off-by: David S. Miller <davem@davemloft.net>
17 years agonetfilter: Fix SIP conntrack build with NAT disabled.
Patrick McHardy [Sun, 20 Apr 2008 00:53:52 +0000 (17:53 -0700)]
netfilter: Fix SIP conntrack build with NAT disabled.

Reported by Ingo Molnar.

The SIP helper is also useful without NAT. This patch adds an ifdef
around the RTP call optimization for NATed clients.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years agonetfilter: Fix SCTP nat build.
Patrick McHardy [Sun, 20 Apr 2008 00:52:51 +0000 (17:52 -0700)]
netfilter: Fix SCTP nat build.

We need to select LIBCRC32C.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
17 years agoavr32: Add hardware power-down function call
Peter Ma [Sat, 19 Apr 2008 07:24:25 +0000 (00:24 -0700)]
avr32: Add hardware power-down function call

This patch adds in the indirect call to pm_power_off(), as is done in
other architectures (e.g. ARM).

Tested on NGW100, with custom board with GPIO control over main DC
power.

Signed-off-by: Peter Ma <pma@mediamatech.com>
Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
17 years agoavr32: add include/asm-avr32/serial.h
Adrian Bunk [Mon, 14 Apr 2008 18:42:20 +0000 (21:42 +0300)]
avr32: add include/asm-avr32/serial.h

On Mon, Apr 14, 2008 at 03:36:24PM +0100, Alan Cox wrote:
> On Mon, 14 Apr 2008 17:17:21 +0300
> Adrian Bunk <bunk@kernel.org> wrote:
>
> > This patch fixes the following build error:
> >
> > <--  snip  -->
> >
> > ...
> >   CC [M]  drivers/serial/8250.o
> > /home/bunk/linux/kernel-2.6/git/linux-2.6/drivers/serial/8250.c:95:24: error: asm/serial.h: No such file or directory
> > make[3]: *** [drivers/serial/8250.o] Error 1
> >
> > <--  snip  -->
> >
> > Signed-off-by: Adrian Bunk <bunk@kernel.org>
> >
> > ---
> > 3cb4ef80d75e118ccfd44f7006aea3db54afb31c diff --git a/drivers/serial/Kconfig b/drivers/serial/Kconfig
> > index b1bbaa0..b0e216d 100644
> > --- a/drivers/serial/Kconfig
> > +++ b/drivers/serial/Kconfig
> > @@ -11,7 +11,7 @@ menu "Serial drivers"
> >  # The new 8250/16550 serial drivers
> >  config SERIAL_8250
> >   tristate "8250/16550 and compatible serial support"
> > - depends on (BROKEN || !SPARC)
> > + depends on (BROKEN || !SPARC) && !AVR32
> >   select SERIAL_CORE
> >   ---help---
>
> NAK.
>
> Add an asm/serial.h to the platform as it has PCI so will have 8250 PCI
> devices available to it. A copy of the MIPS one should be right.

Patch below.

> Alan

cu
Adrian

<--  snip  -->

This patch fixes the following build error with CONFIG_SERIAL_8250:

<--  snip  -->

...
  CC [M]  drivers/serial/8250.o
/home/bunk/linux/kernel-2.6/git/linux-2.6/drivers/serial/8250.c:95:24: error: asm/serial.h: No such file or directory
make[3]: *** [drivers/serial/8250.o] Error 1

<--  snip  -->

Signed-off-by: Adrian Bunk <bunk@kernel.org>
Acked-by: Alan Cox <alan@redhat.com>
Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
17 years agoavr32: don't offer PARPORT_PC
Adrian Bunk [Mon, 14 Apr 2008 14:16:53 +0000 (17:16 +0300)]
avr32: don't offer PARPORT_PC

This patch fixes the following compile error:

<--  snip  -->

...
  CC [M]  drivers/parport/parport_pc.o
/home/bunk/linux/kernel-2.6/git/linux-2.6/drivers/parport/parport_pc.c:67:25: error: asm/parport.h: No such file or directory
/home/bunk/linux/kernel-2.6/git/linux-2.6/drivers/parport/parport_pc.c: In function 'parport_pc_find_ports':
/home/bunk/linux/kernel-2.6/git/linux-2.6/drivers/parport/parport_pc.c:3215: error: implicit declaration of function 'parport_pc_find_nonpci_ports'
make[3]: *** [drivers/parport/parport_pc.o] Error 1

<--  snip  -->

Signed-off-by: Adrian Bunk <bunk@kernel.org>
Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
17 years agoavr32: don't offer CONFIG_GEN_RTC
Adrian Bunk [Mon, 14 Apr 2008 14:16:44 +0000 (17:16 +0300)]
avr32: don't offer CONFIG_GEN_RTC

This patch fixes the following compile error:

<--  snip  -->

...
  CC [M]  drivers/char/genrtc.o
/home/bunk/linux/kernel-2.6/git/linux-2.6/drivers/char/genrtc.c:58:21: error: asm/rtc.h: No such file or directory
...
make[3]: *** [drivers/char/genrtc.o] Error 1

<--  snip  -->

Signed-off-by: Adrian Bunk <bunk@kernel.org>
Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
17 years agoavr32: don't offer CONFIG_RTC
Adrian Bunk [Mon, 14 Apr 2008 14:16:40 +0000 (17:16 +0300)]
avr32: don't offer CONFIG_RTC

This patch fixes the following compile error:

<--  snip  -->

...
  CC [M]  drivers/char/rtc.o
In file included from /home/bunk/linux/kernel-2.6/git/linux-2.6/drivers/char/rtc.c:70:
/home/bunk/linux/kernel-2.6/git/linux-2.6/include/linux/mc146818rtc.h:16:59: error: asm/mc146818rtc.h: No such file or directory
...
make[3]: *** [drivers/char/rtc.o] Error 1

<--  snip  -->

Signed-off-by: Adrian Bunk <bunk@kernel.org>
Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
17 years agoadd include/asm-avr32/xor.h
Adrian Bunk [Mon, 14 Apr 2008 14:16:32 +0000 (17:16 +0300)]
add include/asm-avr32/xor.h

This patch fixes the following compile error with CONFIG_MD_RAID456
on avr32:

<--  snip  -->

...
  CC [M]  crypto/xor.o
/home/bunk/linux/kernel-2.6/git/linux-2.6/crypto/xor.c:23:21: error: asm/xor.h: No such file or directory
/home/bunk/linux/kernel-2.6/git/linux-2.6/crypto/xor.c: In function 'calibrate_xor_blocks':
/home/bunk/linux/kernel-2.6/git/linux-2.6/crypto/xor.c:131: error: 'XOR_TRY_TEMPLATES' undeclared (first use in this function)
/home/bunk/linux/kernel-2.6/git/linux-2.6/crypto/xor.c:131: error: (Each undeclared identifier is reported only once
/home/bunk/linux/kernel-2.6/git/linux-2.6/crypto/xor.c:131: error: for each function it appears in.)
make[2]: *** [crypto/xor.o] Error 1

<--  snip  -->

Signed-off-by: Adrian Bunk <bunk@kernel.org>
Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
17 years agoavr32: Remove two unused #defines from mm/init.c
Johannes Weiner [Thu, 10 Apr 2008 04:40:54 +0000 (06:40 +0200)]
avr32: Remove two unused #defines from mm/init.c

Signed-off-by: Johannes Weiner <hannes@saeurebad.de>
Signed-off-by: Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
17 years agoavr32: Implement set_rate(), set_parent() and mode() for pll1
Hans-Christian Egtvedt [Wed, 19 Dec 2007 08:29:19 +0000 (09:29 +0100)]
avr32: Implement set_rate(), set_parent() and mode() for pll1

This patch is a take two of adding full functionality to PLL1 on
AT32AP7000.  This allows board-specific code and drivers to configure
and enable PLL1. This is useful when precise control over the
frequency of e.g. a genclock is needed and requested by users for the
ABDAC device.

The patch is based upon previous patches from both Haavard Skinnemoen
and David Brownell.

Signed-off-by: Hans-Christian Egtvedt <hcegtvedt@atmel.com>
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
17 years agoavr32: Generic clockevents support
David Brownell [Thu, 14 Feb 2008 19:24:02 +0000 (11:24 -0800)]
avr32: Generic clockevents support

This combines three patches from David Brownell:
  * avr32: tclib support
  * avr32: simplify clocksources
  * avr32: Turn count/compare into a oneshot clockevent device

Register both TC blocks (instead of just the first one) so that
the AT32/AT91 tclib code will pick them up (instead of just the
avr32-only PIT-style clocksource).

Rename the first one and its resources appropriately.

More cleanups to the cycle counter clocksource code

 - Disable all the weak symbol magic; remove the AVR32-only TCB-based
   clocksource code (source and header).

 - Mark the __init code properly.

 - Don't forget to report IRQF_TIMER.

 - Make the system work properly with this clocksource, by preventing
   use of the CPU "idle" sleep state in the idle loop when it's used.

Package the avr32 count/compare timekeeping support as a oneshot
clockevent device, so it supports NO_HZ and high res timers.
This means it also supports plugging in other clockevent devices
and clocksources.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
17 years agoavr32: Move sleep code into mach-at32ap
Haavard Skinnemoen [Sun, 24 Feb 2008 22:24:26 +0000 (23:24 +0100)]
avr32: Move sleep code into mach-at32ap

Create a new file, pm-at32ap700x.S, in mach-at32ap and move the CPU
idle sleep code there. Make it possible to disable the sleep code.

Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
17 years agoavr32: Use constants from sysreg.h in asm.h
Haavard Skinnemoen [Sun, 24 Feb 2008 22:19:22 +0000 (23:19 +0100)]
avr32: Use constants from sysreg.h in asm.h

Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
17 years agoavr32: Delete mostly unused header asm/intc.h
Haavard Skinnemoen [Sun, 24 Feb 2008 13:09:25 +0000 (14:09 +0100)]
avr32: Delete mostly unused header asm/intc.h

Move the only thing that was actually implemented and used in
asm/intc.h, intc_get_pending(), into asm/irq.h and delete asm/intc.h

Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
17 years agoavr32: start clocksource cleanup
David Brownell [Tue, 12 Feb 2008 22:45:49 +0000 (14:45 -0800)]
avr32: start clocksource cleanup

Start cleaning up the AVR32 clocksource mess, starting with the cycle
counter clocksource:  remove unneeded pseudo-RTC (just inline that
call to mktime) and associated build warning, and unused sysdev.

Add comment about the problem using the cycle counter register,
and adjust the clocksource rating accordingly.  Later patches can
make this usable again (by disabling use of the idle state and
providing a proper clocksource without the weak binding hacks)
and move towards TCB-based clockevent support (including high
resolution timers) that's shared between AT91 and AVR32.

Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
17 years agoavr32: pass i2c board info through at32_add_device_twi
Ben Nizette [Thu, 7 Feb 2008 04:28:57 +0000 (15:28 +1100)]
avr32: pass i2c board info through at32_add_device_twi

New-style I2C drivers require that motherboard-mounted I2C devices are
registered with the I2C core, typically at arch_initcall time.  This
can be done nice and neat by passing the struct i2c_board_info[]
through at32_add_device_twi just like we do for the SPI board info.

While we've got the hood up, remove a duplicate declaration of
at32_add_device_twi() in board.h.

[hskinnemoen@atmel.com: add missing i2c_board_info forward-declaration]
Signed-Off-By: Ben Nizette <bn@niasdigital.com>
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
17 years agoavr32: cleanup - use _AC macro to define PAGE_SIZE
Cyrill Gorcunov [Sun, 3 Feb 2008 11:22:18 +0000 (14:22 +0300)]
avr32: cleanup - use _AC macro to define PAGE_SIZE

PAGE_SIZE is used both from assembly and C code. We want to have type
specifiers when using it from C, but this will make the assembler
confused, so we need to make it conditional.

This is exactly what the _AC macro is for, so using it allows us to
get rid of a few lines of cpp noise.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
17 years agoGenerate raw keyboard codes for AVR32 architecture
Hans-Christian Egtvedt [Tue, 4 Dec 2007 12:15:41 +0000 (13:15 +0100)]
Generate raw keyboard codes for AVR32 architecture

This patchs adds the AVR32 architecture to the list of archs to generate a
table of raw keyboard keycodes.

Signed-off-by: Hans-Christian Egtvedt <hcegtvedt@atmel.com>
Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
17 years agoMerge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen...
Haavard Skinnemoen [Sun, 20 Apr 2008 00:38:41 +0000 (20:38 -0400)]
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/usba-2.6.26 into base

17 years agoMerge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen...
Haavard Skinnemoen [Sun, 20 Apr 2008 00:38:13 +0000 (20:38 -0400)]
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/hskinnemoen/tclib into base

17 years agomake nfs_automount_list static
Adrian Bunk [Mon, 14 Apr 2008 18:41:32 +0000 (21:41 +0300)]
make nfs_automount_list static

nfs_automount_list can now become static.

Signed-off-by: Adrian Bunk <bunk@kernel.org>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoNFS: remove duplicate flags assignment from nfs_validate_mount_data
Jeff Layton [Fri, 11 Apr 2008 15:50:58 +0000 (11:50 -0400)]
NFS: remove duplicate flags assignment from nfs_validate_mount_data

Signed-off-by: Jeff Layton <jlayton@redhat.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoNFS - fix potential NULL pointer dereference v2
Cyrill Gorcunov [Thu, 17 Apr 2008 16:42:09 +0000 (20:42 +0400)]
NFS - fix potential NULL pointer dereference v2

There is possible NULL pointer dereference if kstr[n]dup failed.
So fix them for safety.

Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoSUNRPC: Don't change the RPCSEC_GSS context on a credential that is in use
Trond Myklebust [Thu, 17 Apr 2008 21:03:58 +0000 (17:03 -0400)]
SUNRPC: Don't change the RPCSEC_GSS context on a credential that is in use

When a server rejects our credential with an AUTH_REJECTEDCRED or similar,
we need to refresh the credential and then retry the request.
However, we do want to allow any requests that are in flight to finish
executing, so that we can at least attempt to process the replies that
depend on this instance of the credential.

The solution is to ensure that gss_refresh() looks up an entirely new
RPCSEC_GSS credential instead of attempting to create a context for the
existing invalid credential.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoSUNRPC: Fix a race in gss_refresh_upcall()
Trond Myklebust [Thu, 17 Apr 2008 20:53:01 +0000 (16:53 -0400)]
SUNRPC: Fix a race in gss_refresh_upcall()

If the downcall completes before we get the spin_lock then we currently
fail to refresh the credential.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoSUNRPC: Don't disconnect more than once if retransmitting NFSv4 requests
Trond Myklebust [Thu, 17 Apr 2008 20:52:57 +0000 (16:52 -0400)]
SUNRPC: Don't disconnect more than once if retransmitting NFSv4 requests

NFSv4 requires us to ensure that we break the TCP connection before we're
allowed to retransmit a request. However in the case where we're
retransmitting several requests that have been sent on the same
connection, we need to ensure that we don't interfere with the attempt to
reconnect and/or break the connection again once it has been established.

We therefore introduce a 'connection' cookie that is bumped every time a
connection is broken. This allows requests to track if they need to force a
disconnection.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoSUNRPC: Remove the unused export of xprt_force_disconnect
Trond Myklebust [Thu, 17 Apr 2008 18:00:47 +0000 (14:00 -0400)]
SUNRPC: Remove the unused export of xprt_force_disconnect

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoSUNRPC: remove XS_SENDMSG_RETRY
Trond Myklebust [Wed, 16 Apr 2008 20:51:38 +0000 (16:51 -0400)]
SUNRPC: remove XS_SENDMSG_RETRY

The condition for exiting from the loop in xs_tcp_send_request() should be
that we find we're not making progress (i.e. number of bytes sent is 0).

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoSUNRPC: Protect creds against early garbage collection
Trond Myklebust [Mon, 14 Apr 2008 22:13:37 +0000 (18:13 -0400)]
SUNRPC: Protect creds against early garbage collection

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoNFSv4: Attempt to use machine credentials in SETCLIENTID calls
Trond Myklebust [Tue, 8 Apr 2008 20:02:17 +0000 (16:02 -0400)]
NFSv4: Attempt to use machine credentials in SETCLIENTID calls

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoNFSv4: Reintroduce machine creds
Trond Myklebust [Tue, 8 Apr 2008 00:50:11 +0000 (20:50 -0400)]
NFSv4: Reintroduce machine creds

We need to try to ensure that we always use the same credentials whenever
we re-establish the clientid on the server. If not, the server won't
recognise that we're the same client, and so may not allow us to recover
state.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoNFSv4: Don't use cred->cr_ops->cr_name in nfs4_proc_setclientid()
Trond Myklebust [Tue, 8 Apr 2008 00:49:28 +0000 (20:49 -0400)]
NFSv4: Don't use cred->cr_ops->cr_name in nfs4_proc_setclientid()

With the recent change to generic creds, we can no longer use
cred->cr_ops->cr_name to distinguish between RPCSEC_GSS principals and
AUTH_SYS/AUTH_NULL identities. Replace it with the rpc_authops->au_name
instead...

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agonfs: fix printout of multiword bitfields
Fred Isaman [Wed, 2 Apr 2008 12:21:15 +0000 (15:21 +0300)]
nfs: fix printout of multiword bitfields

Benny points out that zero-padding of multiword bitfields is necessary,
and that delimiting each word is nice to avoid endianess confusion.

bhalevy: without zero padding output can be ambiguous. Also,
since the printed array of two 32-bit unsigned integers is not a
64-bit number, delimiting the output with a semicolon makes more sense.

Signed-off-by: Fred Isaman <iisaman@citi.umich.edu>
Signed-off-by: Benny Halevy <bhalevy@panasas.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agonfs: return negative error value from nfs{,4}_stat_to_errno
Benny Halevy [Mon, 31 Mar 2008 14:39:06 +0000 (17:39 +0300)]
nfs: return negative error value from nfs{,4}_stat_to_errno

All use sites for nfs{,4}_stat_to_errno negate their return value.
It's more efficient to return a negative error from the stat_to_errno convertors
rather than negating its return value everywhere. This also produces slightly
smaller code.

Signed-off-by: Benny Halevy <bhalevy@panasas.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoNLM/lockd: Ensure client locking calls use correct credentials
Trond Myklebust [Wed, 2 Apr 2008 18:44:05 +0000 (14:44 -0400)]
NLM/lockd: Ensure client locking calls use correct credentials

Now that we've added the 'generic' credentials (that are independent of the
rpc_client) to the nfs_open_context, we can use those in the NLM client to
ensure that the lock/unlock requests are authenticated to whoever
originally opened the file.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoNFS: Remove the buggy lock-if-signalled case from do_setlk()
Trond Myklebust [Wed, 2 Apr 2008 00:26:52 +0000 (20:26 -0400)]
NFS: Remove the buggy lock-if-signalled case from do_setlk()

Both NLM and NFSv4 should be able to clean up adequately in the case where
the user interrupts the RPC call...

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoNLM/lockd: Fix a race when cancelling a blocking lock
Trond Myklebust [Wed, 2 Apr 2008 00:26:22 +0000 (20:26 -0400)]
NLM/lockd: Fix a race when cancelling a blocking lock

We shouldn't remove the lock from the list of blocked locks until the
CANCEL call has completed since we may be racing with a GRANTED callback.

Also ensure that we send an UNLOCK if the CANCEL request failed. Normally
that should only happen if the process gets hit with a fatal signal.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoNLM/lockd: Ensure that nlmclnt_cancel() returns results of the CANCEL call
Trond Myklebust [Wed, 2 Apr 2008 18:40:53 +0000 (14:40 -0400)]
NLM/lockd: Ensure that nlmclnt_cancel() returns results of the CANCEL call

Currently, it returns success as long as the RPC call was sent. We'd like
to know if the CANCEL operation succeeded on the server.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoNLM: Remove the signal masking in nlmclnt_proc/nlmclnt_cancel
Trond Myklebust [Fri, 28 Mar 2008 20:04:51 +0000 (16:04 -0400)]
NLM: Remove the signal masking in nlmclnt_proc/nlmclnt_cancel

The signal masks have been rendered obsolete by the preceding patch.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoNLM/lockd: convert __nlm_async_call to use rpc_run_task()
Trond Myklebust [Fri, 28 Mar 2008 20:04:36 +0000 (16:04 -0400)]
NLM/lockd: convert __nlm_async_call to use rpc_run_task()

Peter Staubach comments:

> In the course of investigating testing failures in the locking phase of
> the Connectathon testsuite, I discovered a couple of things.  One was
> that one of the tests in the locking tests was racy when it didn't seem
> to need to be and two, that the NFS client asynchronously releases locks
> when a process is exiting.
...
> The Single UNIX Specification Version 3 specifies that:  "All locks
> associated with a file for a given process shall be removed when a file
> descriptor for that file is closed by that process or the process holding
> that file descriptor terminates.".
>
> This does not specify whether those locks must be released prior to the
> completion of the exit processing for the process or not.  However,
> general assumptions seem to be that those locks will be released.  This
> leads to more deterministic behavior under normal circumstances.

The following patch converts the NFSv2/v3 locking code to use the same
mechanism as NFSv4 for sending asynchronous RPC calls and then waiting for
them to complete. This ensures that the UNLOCK and CANCEL RPC calls will
complete even if the user interrupts the call, yet satisfies the
above request for synchronous behaviour on process exit.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoNLM/lockd: Add a reference counter to struct nlm_rqst
Trond Myklebust [Tue, 1 Apr 2008 22:58:49 +0000 (18:58 -0400)]
NLM/lockd: Add a reference counter to struct nlm_rqst

When we replace the existing synchronous RPC calls with asynchronous calls,
the reference count will be needed in order to allow us to examine the
result of the RPC call.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoNFSv4: Ensure we don't corrupt fl->fl_flags in nfs4_proc_unlck
Trond Myklebust [Fri, 4 Apr 2008 19:08:02 +0000 (15:08 -0400)]
NFSv4: Ensure we don't corrupt fl->fl_flags in nfs4_proc_unlck

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoNLM/lockd: Ensure we don't corrupt fl->fl_flags in nlmclnt_unlock()
Trond Myklebust [Tue, 1 Apr 2008 22:57:06 +0000 (18:57 -0400)]
NLM/lockd: Ensure we don't corrupt fl->fl_flags in nlmclnt_unlock()

Also fix up nlmclnt_lock() so that it doesn't pass modified versions of
fl->fl_flags to nlmclnt_cancel() and other helpers.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoSUNRPC: Fix read ordering problems with req->rq_private_buf.len
Trond Myklebust [Fri, 21 Mar 2008 20:19:41 +0000 (16:19 -0400)]
SUNRPC: Fix read ordering problems with req->rq_private_buf.len

We want to ensure that req->rq_private_buf.len is updated before
req->rq_received, so that call_decode() doesn't use an old value for
req->rq_rcv_buf.len.

In 'call_decode()' itself, instead of using task->tk_status (which is set
using req->rq_received) must use the actual value of
req->rq_private_buf.len when deciding whether or not the received RPC reply
is too short.

Finally ensure that we set req->rq_rcv_buf.len to zero when retrying a
request. A typo meant that we were resetting req->rq_private_buf.len in
call_decode(), and then clobbering that value with the old rq_rcv_buf.len
again in xprt_transmit().

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoNFSv4: Only increment the sequence id if the server saw it
Trond Myklebust [Mon, 7 Apr 2008 17:20:54 +0000 (13:20 -0400)]
NFSv4: Only increment the sequence id if the server saw it

It is quite possible that the OPEN, CLOSE, LOCK, LOCKU,... compounds fail
before the actual stateful operation has been executed (for instance in the
PUTFH call). There is no way to tell from the overall status result which
operations were executed from the COMPOUND.

The fix is to move incrementing of the sequence id into the XDR layer,
so that we do it as we process the results from the stateful operation.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoNFSv4: Remove bogus call to nfs4_drop_state_owner() in _nfs4_open_expired()
Trond Myklebust [Sat, 5 Apr 2008 19:54:17 +0000 (15:54 -0400)]
NFSv4: Remove bogus call to nfs4_drop_state_owner() in _nfs4_open_expired()

There should be no need to invalidate a perfectly good state owner just
because of a stale filehandle. Doing so can cause the state recovery code
to break, since nfs4_get_renew_cred() and nfs4_get_setclientid_cred() rely
on finding active state owners.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoNFS: Ensure that rpc_run_task() errors are propagated back to the caller
Trond Myklebust [Mon, 14 Apr 2008 18:54:53 +0000 (14:54 -0400)]
NFS: Ensure that rpc_run_task() errors are propagated back to the caller

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoNFS: Ensure that the write code cleans up properly when rpc_run_task() fails
Trond Myklebust [Tue, 15 Apr 2008 20:56:39 +0000 (16:56 -0400)]
NFS: Ensure that the write code cleans up properly when rpc_run_task() fails

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoNFS: Ensure that the read code cleans up properly when rpc_run_task() fails
Trond Myklebust [Tue, 15 Apr 2008 20:33:58 +0000 (16:33 -0400)]
NFS: Ensure that the read code cleans up properly when rpc_run_task() fails

In the case of readpage() we need to ensure that the pages get unlocked,
and that the error is flagged.

In the case of O_DIRECT, we need to ensure that the pages are all released.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoNFS: Fix nfs_wb_page() to always exit with an error or a clean page
Trond Myklebust [Fri, 11 Apr 2008 20:03:54 +0000 (16:03 -0400)]
NFS: Fix nfs_wb_page() to always exit with an error or a clean page

It is possible for nfs_wb_page() to sometimes exit with 0 return value, yet
the page is left in a dirty state.
For instance in the case where the server rebooted, and the COMMIT request
failed, then all the previously "clean" pages which were cached by the
server, but were not guaranteed to have been writted out to disk,
have to be redirtied and resent to the server.
The fix is to have nfs_wb_page_priority() check that the page is clean
before it exits...

This fixes a condition that triggers the BUG_ON(PagePrivate(page)) in
nfs_create_request() when we're in the nfs_readpage() path.

Also eliminate a redundant BUG_ON(!PageLocked(page)) while we're at it. It
turns out that clear_page_dirty_for_io() has the exact same test.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoSUNRPC: Don't attempt to destroy expired RPCSEC_GSS credentials..
Trond Myklebust [Sat, 19 Apr 2008 18:22:31 +0000 (14:22 -0400)]
SUNRPC: Don't attempt to destroy expired RPCSEC_GSS credentials..

..and always destroy using a 'soft' RPC call. Destroying GSS credentials
isn't mandatory; the server can always cope with a few credentials not
getting destroyed in a timely fashion.

This actually fixes a hang situation. Basically, some servers will decide
that the client is crazy if it tries to destroy an RPC context for which
they have sent an RPCSEC_GSS_CREDPROBLEM, and so will refuse to talk to it
for a while.
The regression therefor probably was introduced by commit
0df7fb74fbb709591301871a38aac7735a1d6583.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoSUNRPC: Fix up xprt_write_space()
Trond Myklebust [Thu, 17 Apr 2008 22:52:19 +0000 (18:52 -0400)]
SUNRPC: Fix up xprt_write_space()

The rest of the networking layer uses SOCK_ASYNC_NOSPACE to signal whether
or not we have someone waiting for buffer memory. Convert the SUNRPC layer
to use the same idiom.
Remove the unlikely()s in xs_udp_write_space and xs_tcp_write_space. In
fact, the most common case will be that there is nobody waiting for buffer
space.

SOCK_NOSPACE is there to tell the TCP layer whether or not the cwnd was
limited by the application window. Ensure that we follow the same idiom as
the rest of the networking layer here too.

Finally, ensure that we clear SOCK_ASYNC_NOSPACE once we wake up, so that
write_space() doesn't keep waking things up on xprt->pending.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoSUNRPC: Fix a bug in call_decode()
Trond Myklebust [Sat, 19 Apr 2008 17:15:47 +0000 (13:15 -0400)]
SUNRPC: Fix a bug in call_decode()

call_verify() can, under certain circumstances, free the RPC slot. In that
case, our cached pointer 'req = task->tk_rqstp' is invalid. Bug was
introduced in commit 220bcc2afd7011b3e0569fc178331fa983c92c1b (SUNRPC:
Don't call xprt_release in call refresh).

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
17 years agoUBI: fix mean EC calculation
Artem Bityutskiy [Sat, 19 Apr 2008 17:44:31 +0000 (20:44 +0300)]
UBI: fix mean EC calculation

(a + b) / (c + d) != a / c + b / d. The old code errornously
assumed this incorrect formuld. Instead, just sum all erase
counters in a 64-bit variable and divide to the number of EBs
at the end.

Thanks to Adrian Hunter for pointing this out.

Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
17 years agoDeprecate the asm/semaphore.h files in feature-removal-schedule.
Matthew Wilcox [Sat, 19 Apr 2008 17:49:34 +0000 (13:49 -0400)]
Deprecate the asm/semaphore.h files in feature-removal-schedule.

Signed-off-by: Matthew Wilcox <willy@linux.intel.com>
17 years agosched: build fix
Ingo Molnar [Sat, 19 Apr 2008 10:11:10 +0000 (12:11 +0200)]
sched: build fix

Signed-off-by: Ingo Molnar <mingo@elte.hu>
17 years agosched: better rt-group documentation
Viktor Radnai [Sat, 19 Apr 2008 17:45:01 +0000 (19:45 +0200)]
sched: better rt-group documentation

Viktor was nice enough to enhance the document based on my replies to
his questions on the subject.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
17 years agosched: features fix
Ingo Molnar [Fri, 18 Apr 2008 08:55:34 +0000 (10:55 +0200)]
sched: features fix

Signed-off-by: Ingo Molnar <mingo@elte.hu>
17 years agosched: /debug/sched_features
Peter Zijlstra [Sat, 19 Apr 2008 17:45:00 +0000 (19:45 +0200)]
sched: /debug/sched_features

provide a text based interface to the scheduler features; this saves the
'user' from setting bits using decimal arithmetic.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
17 years agosched: add SCHED_FEAT_DEADLINE
Ingo Molnar [Sat, 19 Apr 2008 07:25:58 +0000 (09:25 +0200)]
sched: add SCHED_FEAT_DEADLINE

unused at the moment.

Signed-off-by: Ingo Molnar <mingo@elte.hu>
17 years agosched: debug: show a weight tree
Peter Zijlstra [Sat, 19 Apr 2008 17:45:00 +0000 (19:45 +0200)]
sched: debug: show a weight tree

Print a tree of weights.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
17 years agosched: fair: weight calculations
Peter Zijlstra [Sat, 19 Apr 2008 17:45:00 +0000 (19:45 +0200)]
sched: fair: weight calculations

In order to level the hierarchy, we need to calculate load based on the
root view. That is, each task's load is in the same unit.

             A
            / \
           B   1
          / \
         2   3

To compute 1's load we do:

   weight(1)
--------------
 rq_weight(A)

To compute 2's load we do:

  weight(2)      weight(B)
------------ * -----------
rq_weight(B)   rw_weight(A)

This yields load fractions in comparable units.

The consequence is that it changes virtual time. We used to have:

                time_{i}
  vtime_{i} = ------------
               weight_{i}

  vtime = \Sum vtime_{i} = time / rq_weight.

But with the new way of load calculation we get that vtime equals time.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
17 years agosched: fair-group: de-couple load-balancing from the rb-trees
Peter Zijlstra [Sat, 19 Apr 2008 17:45:00 +0000 (19:45 +0200)]
sched: fair-group: de-couple load-balancing from the rb-trees

De-couple load-balancing from the rb-trees, so that I can change their
organization.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
17 years agosched: fair-group scheduling vs latency
Peter Zijlstra [Sat, 19 Apr 2008 17:45:00 +0000 (19:45 +0200)]
sched: fair-group scheduling vs latency

Currently FAIR_GROUP sched grows the scheduler latency outside of
sysctl_sched_latency, invert this so it stays within.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
17 years agosched: rt-group: optimize dequeue_rt_stack
Peter Zijlstra [Sat, 19 Apr 2008 17:45:00 +0000 (19:45 +0200)]
sched: rt-group: optimize dequeue_rt_stack

Now that the group hierarchy can have an arbitrary depth the O(n^2) nature
of RT task dequeues will really hurt. Optimize this by providing space to
store the tree path, so we can walk it the other way.

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>