Patrick Mochel [Wed, 13 Aug 2003 04:59:26 +0000 (21:59 -0700)]
[power] Various swsusp cleanups.
- Move SMP check to software_suspend() (from software_resume()), so we will
not even attempt to sleep with it enabled.
- Make software_resume() a late initcall, removing the explicit call from
prepare_namespace().
- Initialize software_suspend_enabled to 1, instead of doing it manually in
software_resume().
- Don't explicitly initialzie resume_file.
- Remove resume_status variable, as we can simply check for (non-) NULL
resume_file string.
- "noresume" setup function changed to simply zero first byte of resume_file
string, simplifying logic.
- Don't attempt to reset swap signature if noresume is specified.
- Downstream function (bdev_write_page() wasn't implemented anyway, so we
can just remove that also).
If noresume is specified, there will still be a suspend image left on the
swap partition. It may behoove us to never reset the swap signature, and
always leave the image intact on the disk, since it is a valid snapshot
that we can resume from at anytime.
This unconditional behavior would force the user to add 'mkswap <part>' to
their init scripts to reset the partition to swap use. IMO, this is better
anyway.
Patrick Mochel [Wed, 13 Aug 2003 03:55:13 +0000 (20:55 -0700)]
[swsusp] Remove two panic()s.
- Make software_suspend() return an int, so caller can tell what happened.
- Do check for HIGHMEM and DISCONTIGMEM early in software_suspend() and
fail gracefully, instead of checking far down the call chain and having
to call panic().
Patrick Mochel [Tue, 12 Aug 2003 02:47:08 +0000 (19:47 -0700)]
[power] Begin to add sysfs files for controlling device power states.
- Moves sysfs controls to drivers/base/power/sysfs.c
- Creates dpm_sysfs_{add,remove} to add/remove sysfs attribute group.
- Creates 'state' file in 'pm' directory that properly controls device
power state at runtime.
Patrick Mochel [Tue, 12 Aug 2003 02:25:20 +0000 (19:25 -0700)]
[power] Add hooks for runtime device power control.
dpm_runtime_{suspend,resume} control the power state of a single device
while the system is running.
dpm_runtime_suspend() will save state of the device, then attempt to power
it down. This happens with interrupts enabled, so if the device does not
support that, the device's state is restored, and we continue on our merry
way.
dpm_runtime_resume() powers the device back on, then restores state of the
device.
dpm_set_power_state() simply notifies the core of the power state the
device is in. Drivers can use this, since they are the only ones that can
really tell.
Patrick Mochel [Tue, 12 Aug 2003 02:15:14 +0000 (19:15 -0700)]
[driver model] Check for probing errors in drivers/base/bus.c
From Janice Girouard.
Currently if an error is detected when probing a device,
this error is not reported. Generally, an error value from
errno.h will be returned when the driver->probe function
fails. However, these errors are not logged, and the device
fails silently.
Patrick Mochel [Sun, 10 Aug 2003 04:58:35 +0000 (21:58 -0700)]
[power] Add PM usage counting
- Add ->pm_users and ->pm_parent fields to struct dev_pm_info.
- Add function device_pm_set_parent()
The default power parent for a device is the device's physical parent, but
a driver may change it to represent a tranversal power dependency.
Though it's not incorporated into the suspend/resume sequences yet, the
core will respect the power tree, rather than the physical/electrical one.
Also added is a power usage count for devices, which indicates how many
devices are dependent on that one for power (how many children it has in
the power tree). The core will use this count to determine whether or not
a device can be put into a low power state or not.
Thomas Molina [Sat, 9 Aug 2003 02:40:17 +0000 (19:40 -0700)]
[PATCH] Re: Linux 2.6.0-test3: logo patch
The following patch has been floating around forever. It is required
for several ARM framebuffer drivers, and several other drivers. James
has indicated that this is the correct fix back in May.
[PATCH] PowerMac: Ground work for new driver model
This provides the necessary infrastructure for PowerMac specific drivers
(and actually some Open Firmware platform drivers on non-PowerMacs as
well provided somebody port them) to be properly probed & referenced via
the new driver model and be part of sysfs.
As-is, this patch doesn't break anything nor change any driver. I'll
send you individual driver patches as I clean them up & get them tested
on as many machines as possible, though I don't expect much problems.
Jeff Garzik [Sat, 9 Aug 2003 02:39:26 +0000 (19:39 -0700)]
[PATCH] PATCH 2.6: fix X86_VENDOR_ID offset in head.S
While reviewing my 2.4 backport of the 2.6 cpu capabilities (including
the Via RNG support), Mikael Pettersson noticed a bug in both my
backport, and 2.6: when NCAPINTS (x86_capability array size) is
increased, one must adjust the offset in arch/i386/kernel/head.S also.
add CONFIG_WATCHDOG_NOWAYOUT support
changed watchdog_info to correctly reflect what the driver offers
added WDIOC_GETSTATUS, WDIOC_GETBOOTSTATUS and WDIOC_SETOPTIONS ioctls
use module_param
general cleanup of trailing spaces and comments
fix possible wdt_is_open race
add KERN_* to printk's
changed watchdog_info to correctly reflect what the driver offers
added WDIOC_GETSTATUS, WDIOC_GETBOOTSTATUS, WDIOC_SETTIMEOUT, WDIOC_GETTIMEOUT, and WDIOC_SETOPTIONS ioctls
made timeout (the emulated heartbeat) a module_param
made the keepalive ping an internal subroutine
added MODULE_AUTHOR and MODULE_DESCRIPTION info
Jean Tourrilhes [Fri, 8 Aug 2003 17:14:30 +0000 (13:14 -0400)]
[PATCH] irda-usb probe fix
ir260_usb_probe-4.diff :
~~~~~~~~~~~~~~~~~~~~~~
<Patch from Oliver Neukum and Daniele Bellucci>
o [CORRECT] minor fix to the probe failure path of irda-usb.
Jean Tourrilhes [Fri, 8 Aug 2003 17:13:41 +0000 (13:13 -0400)]
[PATCH] Donauboe probe fix
ir260_donau_cleanup.diff :
~~~~~~~~~~~~~~~~~~~~~~~~
<Patch from Christian Gennerat>
o [CORRECT] Disable chip probing that fail too often
o [FEATURE] Cleanup STATIC
Ivan Kokshaysky [Fri, 8 Aug 2003 10:03:19 +0000 (03:03 -0700)]
[PATCH] PCI: pci_enable_device vs bridges bugs
Bug #1 (found by Jay Estabrook).
On Alpha, under certain circumstances the firmware may close the IO
window of PCI-to-PCI bridge even if there is IO behind.
This wouldn't be a problem - linux PCI setup code does set up this
window properly, but in addition the firmware clears the IO-enable
bit in the PCI_COMMAND register of the bridge.
Since we don't call pci_enable_* routines for bridges in non-hotplug
path, we end up with disabled IO. Fixed by adding pci_enable_bridges()
to pci_assign_unassigned_resources().
Architectures which don't use the latter, but do use other setup-bus
code (parisc?) also should call pci_enable_bridges() for each root bus.
Bug #2 (closely related to #1).
As it turns out, pci_enable_device() doesn't work for bridges at all,
only for regular devices (header type 0) due to 0x3f mask passed to
pci_enable_device_bars(). The mask should be (1 << PCI_NUM_RESOURCES) - 1.
Bug #3 (quite a few archs, including i386).
pcibios_enable_device() does only check first 6 resources (regardless
of the mask) to decide whether or not to enable IO and MEM.
Bridge resources start at 7.
#2 and #3 affect hotplug. I wonder, has anybody ever tried *bridged*
PCI card behind a hot-plug controller?
Ian Abbott [Fri, 8 Aug 2003 09:35:07 +0000 (02:35 -0700)]
[PATCH] USB: ftdi_sio - VID/PID for ID TECH IDT1221U USB to RS-232 adapter
This patch adds support for ID TECH's IDT1221U USB to RS-232 adapter
(intended for use and/or supplied with some of their magnetic/smart
card readers). The VID and PID were provided by Steve Briggs on
the ftdi-usb-sio-devel list.
Wiktor Wodecki [Fri, 8 Aug 2003 09:33:00 +0000 (02:33 -0700)]
[PATCH] I2C: i2c sysfs rant
On Wed, Aug 06, 2003 at 04:22:44PM -0700, Greg KH wrote:
> On Wed, Aug 06, 2003 at 09:11:45PM +0200, Wiktor Wodecki wrote:
> > Hello folks,
> >
> > I just saw that I2C provides "/sys/bus/i2c/drivers/dev\ driver" in
> > 2.6.0-test2. It would be nice if you'd consider renaming this to
> > dev_driver, to avoid un-neccessary quoting in scripts.
> >
> > Thank You :-)
>
> Patches are always gladly accepted :)
Rob Radez [Fri, 8 Aug 2003 03:26:27 +0000 (20:26 -0700)]
[PATCH] remove unnecessary stubs from watchdog drivers
This removes some function stubs from 6 watchdog drivers.
The VFS already returns -EINVAL in cases where fop->read == NULL, so
there's no need to duplicate the code 6 times. This patch removes the
stubs and is compile tested.
David Mosberger [Fri, 8 Aug 2003 03:26:18 +0000 (20:26 -0700)]
[PATCH] modify data types in efi.h
From Matt Tolentino:
Here's a small patch to change several data types from u64 to
unsigned long in efi.h. These changes enable the use of the
same data structures and function prototypes for ia32 EFI kernels.
Bjorn Helgaas [Thu, 7 Aug 2003 16:48:13 +0000 (09:48 -0700)]
[PATCH] ia64: IOSAPIC .weak symbol cleanup
The patch below removes the .weak symbol stuff from iosapic.c.
As far as I can tell, iosapic.c is compiled for every flavor except
the simulator. I tried to boot the HP_SIM kernel on ski, but it
seems to loop in find_save_locs(). This happens both with and
without this patch, so maybe I have a local problem. (I started
with a clean tree, did make
Jesse Barnes [Thu, 7 Aug 2003 16:38:44 +0000 (09:38 -0700)]
[PATCH] ia64: sn2 pci fixes (among others)
sn2 still doesn't use ACPI to describe PCI busses on the system (I'm
working on it), so we have to do it the old fashioned way. This patch
also includes a few other fixes.
- Walk local dpm_active list when suspending devices, and move devices to
dpm_suspended list when ->suspend() is called.
- Walk dpm_suspended list to power down devices (with interrrupts enabled.)
- Try to power down devices with IRQs on.
- If they succeed, move them to dpm_off list.
- If they return -EAGAIN, move them to dpm_off_irq list.
- Disable interrupts and suspend devices needed interrupts off.
- Do converse on resume
- power on devices that need interrupts off and move them to
dpm_suspended.
- Enable interrupts.
- Power on all other devices and move them to dpm_suspended.
- Restore state of all devices and move them to dpm_active.
Having necessary resources, I've decided to take over the maintenance of
the defxx driver for the PDQ-based family of DEC FDDI controllers (the
DEFEA for EISA and the DEFPA for PCI are the models currently handled).
I've talked to Larry, the original author and the last maintainer of the
code, and he's said he'd be happy about it. He's asked me to update his
long-outdated contact information.
Here is a patch to update the driver to the PCI version of the DMA API.
The patch includes appropriate status and contact information updates.
Andrew Morton [Thu, 7 Aug 2003 04:15:16 +0000 (21:15 -0700)]
[PATCH] initialise page->private
From: Nathan Scott <nathans@sgi.com>
XFS wants to use page->private as a bitmap of uptodate indicators for
sub-page-sized blocks (which is one of the things ->provate was intended
for).
But someone needs to initialise ->private somewhere. best to do it in the
page allocator, so the zeroness of a new page's ->private becomes a
system-wide thing.
Andrew Morton [Thu, 7 Aug 2003 04:15:08 +0000 (21:15 -0700)]
[PATCH] mtrr race fix
From: john stultz <johnstul@us.ibm.com>
I've found a race in the mtrr ipi_handler() and set_mtrr() functions.
Basically the server, set_mtrr() does the following:
1.1 initialize a flag
1.2 send ipi
1.3 waits for all cpus to check in
1.4 toggle flag
1.5 do stuff
1.6 wait for all cpus to check out
1.7 toggle flag again
1.8 return
While the clients, running ipi_handler() do the following:
2.1 check in
2.2 wait for flag
2.3 do stuff
2.4 check out
2.5 wait for flag
2.6 return
The problem is the flag is on the servers stack! So if 1.7 and 1.8
executes before 2.5 happens, the client's pointer to the flag becomes
invalid (likely overwritten) which causes the client to never see the
flag change, hanging the box.
The patch fixes that by adding a final synchronisation step in which the
controlling CPU waits for all the IPI'ed CPUs to complete.
Andrew Morton [Thu, 7 Aug 2003 04:15:00 +0000 (21:15 -0700)]
[PATCH] declare struct irq_desc
From: Martin Pool <mbp@samba.org>
ia64_mv_irq_desc returns a 'struct irq_desc', which had a forward declaration
but did not actually exist. We're currently using a silly anonymous struct
typedefed to irq_desc_t.
Andrew Morton [Thu, 7 Aug 2003 04:14:45 +0000 (21:14 -0700)]
[PATCH] itimer resolution and rounding fixes
From: george anzinger <george@mvista.com>
a) Fixes bug 858 (http://bugme.osdl.org/show_bug.cgi?id=858)
The problem was caused by round off error in calculating the correct
jiffies value in micro seconds to do the round up to jiffies. The fix
is to do the round up AFTER conversion to jiffies, rather than before.
This only affected the timeval to jiffies calculation.
b) Changed the scale values to get the highest possible precision short
of going to full 64-bit math. This is particularly useful in the
scaling of the seconds part of time. The code now computes a trial
value at compile time and adjusts the scaling if the result is less than
32 bits.
c) Adds comments to time.h to remove (I hope) ALL the confusion that
this file use to generate.
Andrew Morton [Thu, 7 Aug 2003 04:14:37 +0000 (21:14 -0700)]
[PATCH] Add do_setitimer prototype to linux/time.h
From: Peter Chubb <peterc@gelato.unsw.edu.au>
Currently, do_setitimer() is used in several files, but doesn't appear
in any header. Thus its declaration is repeated in some files, and
its use causes a warning in others (because there is no declaration
present).
This patch:
-- adds a couple of declarations to linux/times.h
-- removes the (now duplicate) declarations from other files.
Andrew Morton [Thu, 7 Aug 2003 04:14:21 +0000 (21:14 -0700)]
[PATCH] fix free_all_bootmem_core for virtual memmap
From: jbarnes@sgi.com (Jesse Barnes)
Currently, free_all_bootmem_core() assumes that the bdata for a given
node will begin where the node's memory map begins. This isn't
necessarily true on machines that use a virtual memory map (e.g. ia64
discontig machines), so we fix page to point to the first actual page of
RAM on the node, which _does_ contain the bdata struct.
Andrew Morton [Thu, 7 Aug 2003 04:13:58 +0000 (21:13 -0700)]
[PATCH] might_sleep() checks for x86 usercopy functions
From: Matt Mackall <mpm@selenic.com>
This only checks in the non-__ versions, as those are occassionally
called inside things like kmap_atomic pairs which take a spinlock in
with highmem. It's all conditional on CONFIG_DEBUG_SPINLOCK_SLEEP
(which isn't quite the right name) so there's no overhead for normal
builds.
Andrew Morton [Thu, 7 Aug 2003 04:13:43 +0000 (21:13 -0700)]
[PATCH] move_one_page() atomicity fix
move_one_page() is awkward. It grabs an atomic_kmap of the source pte
(because it needs to know if there's really a page there) and then it needs
to allocate a pte for the dest. But it cannot allocate the dest pte while
holding the src's atomic kmap.
So it performs this little dance peeking at pagetables to predict if
alloc_one_pte_map() might need to perform a pte page allocation.
When I wrote this code I made it conditional on CONFIG_HIGHPTE. But that was
bogus: even in the !CONFIG_HIGHPTE case, get_one_pte_map_nested() will run
atomic_kmap() against the pte page, which disables preemption.
Net effect: with CONFIG_HIGHMEM && !CONFIG_HIGHPTE we can end up performing a
GFP_KERNEL pte page allocation while preemption is disabled. It triggers a
might_sleep() warning and indeed is buggy.
So the patch removes the conditionality: even in the !CONFIG_HIGHPTE case we
still do the pagetable peek and drop the kmap if necessary.
(Arguably, we shouldn't be performing the atomic_kmap() at all if
!CONFIG_HIGHPTE: all it does is a pointless preemption disable).
(Arguably, kmap_atomic() should not be disabling preemption if the target
page is not highmem. But we're doing it anyway at present for consistency
(ie: debug coverage) and because the filemap.c pagecache copying functions
rely on kmap_atomic() disabling do_no_page() for all pages: see
do_no_page()'s use of in_atomic()).