Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 71529
b: refs/heads/master
c: 7018065
h: refs/heads/master
i:
  71527: 7a8358d
v: v3
  • Loading branch information
David S. Miller committed Oct 19, 2007
1 parent 7667c1f commit 63413c8
Show file tree
Hide file tree
Showing 490 changed files with 9,545 additions and 16,835 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 67a4cce4a89718d252b61aaf58882c69c0e2f6e3
refs/heads/master: 70180659a479b55387eca8cc1fa7024ba8410b14
25 changes: 15 additions & 10 deletions trunk/Documentation/IPMI.txt
Original file line number Diff line number Diff line change
Expand Up @@ -441,17 +441,20 @@ ACPI, and if none of those then a KCS device at the spec-specified
0xca2. If you want to turn this off, set the "trydefaults" option to
false.

If you have high-res timers compiled into the kernel, the driver will
use them to provide much better performance. Note that if you do not
have high-res timers enabled in the kernel and you don't have
interrupts enabled, the driver will run VERY slowly. Don't blame me,
If your IPMI interface does not support interrupts and is a KCS or
SMIC interface, the IPMI driver will start a kernel thread for the
interface to help speed things up. This is a low-priority kernel
thread that constantly polls the IPMI driver while an IPMI operation
is in progress. The force_kipmid module parameter will all the user to
force this thread on or off. If you force it off and don't have
interrupts, the driver will run VERY slowly. Don't blame me,
these interfaces suck.

The driver supports a hot add and remove of interfaces. This way,
interfaces can be added or removed after the kernel is up and running.
This is done using /sys/modules/ipmi_si/hotmod, which is a write-only
parameter. You write a string to this interface. The string has the
format:
This is done using /sys/modules/ipmi_si/parameters/hotmod, which is a
write-only parameter. You write a string to this interface. The string
has the format:
<op1>[:op2[:op3...]]
The "op"s are:
add|remove,kcs|bt|smic,mem|i/o,<address>[,<opt1>[,<opt2>[,...]]]
Expand Down Expand Up @@ -581,9 +584,11 @@ The watchdog will panic and start a 120 second reset timeout if it
gets a pre-action. During a panic or a reboot, the watchdog will
start a 120 timer if it is running to make sure the reboot occurs.

Note that if you use the NMI preaction for the watchdog, you MUST
NOT use nmi watchdog mode 1. If you use the NMI watchdog, you
must use mode 2.
Note that if you use the NMI preaction for the watchdog, you MUST NOT
use the nmi watchdog. There is no reasonable way to tell if an NMI
comes from the IPMI controller, so it must assume that if it gets an
otherwise unhandled NMI, it must be from IPMI and it will panic
immediately.

Once you open the watchdog timer, you must write a 'V' character to the
device to close it, or the timer will not stop. This is a new semantic
Expand Down
14 changes: 14 additions & 0 deletions trunk/Documentation/atomic_ops.txt
Original file line number Diff line number Diff line change
Expand Up @@ -418,6 +418,20 @@ brothers:
*/
smp_mb__after_clear_bit();

There are two special bitops with lock barrier semantics (acquire/release,
same as spinlocks). These operate in the same way as their non-_lock/unlock
postfixed variants, except that they are to provide acquire/release semantics,
respectively. This means they can be used for bit_spin_trylock and
bit_spin_unlock type operations without specifying any more barriers.

int test_and_set_bit_lock(unsigned long nr, unsigned long *addr);
void clear_bit_unlock(unsigned long nr, unsigned long *addr);
void __clear_bit_unlock(unsigned long nr, unsigned long *addr);

The __clear_bit_unlock version is non-atomic, however it still implements
unlock barrier semantics. This can be useful if the lock itself is protecting
the other bits in the word.

Finally, there are non-atomic versions of the bitmask operations
provided. They are used in contexts where some other higher-level SMP
locking scheme is being used to protect the bitmask, and thus less
Expand Down
42 changes: 35 additions & 7 deletions trunk/Documentation/feature-removal-schedule.txt
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,41 @@ Who: Dominik Brodowski <linux@brodo.de>

---------------------------

What: sys_sysctl
When: September 2010
Option: CONFIG_SYSCTL_SYSCALL
Why: The same information is available in a more convenient from
/proc/sys, and none of the sysctl variables appear to be
important performance wise.

Binary sysctls are a long standing source of subtle kernel
bugs and security issues.

When I looked several months ago all I could find after
searching several distributions were 5 user space programs and
glibc (which falls back to /proc/sys) using this syscall.

The man page for sysctl(2) documents it as unusable for user
space programs.

sysctl(2) is not generally ABI compatible to a 32bit user
space application on a 64bit and a 32bit kernel.

For the last several months the policy has been no new binary
sysctls and no one has put forward an argument to use them.

Binary sysctls issues seem to keep happening appearing so
properly deprecating them (with a warning to user space) and a
2 year grace warning period will mean eventually we can kill
them and end the pain.

In the mean time individual binary sysctls can be dealt with
in a piecewise fashion.

Who: Eric Biederman <ebiederm@xmission.com>

---------------------------

What: a.out interpreter support for ELF executables
When: 2.6.25
Files: fs/binfmt_elf.c
Expand Down Expand Up @@ -184,13 +219,6 @@ Who: Jean Delvare <khali@linux-fr.org>,

---------------------------

What: drivers depending on OBSOLETE_OSS
When: options in 2.6.22, code in 2.6.24
Why: OSS drivers with ALSA replacements
Who: Adrian Bunk <bunk@stusta.de>

---------------------------

What: ACPI procfs interface
When: July 2008
Why: ACPI sysfs conversion should be finished by January 2008.
Expand Down
10 changes: 10 additions & 0 deletions trunk/Documentation/kernel-parameters.txt
Original file line number Diff line number Diff line change
Expand Up @@ -479,6 +479,16 @@ and is between 256 and 4096 characters. It is defined in the file
UART at the specified I/O port or MMIO address.
The options are the same as for ttyS, above.

no_console_suspend
[HW] Never suspend the console
Disable suspending of consoles during suspend and
hibernate operations. Once disabled, debugging
messages can reach various consoles while the rest
of the system is being put to sleep (ie, while
debugging driver suspend/resume hooks). This may
not work reliably with all consoles, but is known
to work with serial and VGA consoles.

cpcihp_generic= [HW,PCI] Generic port I/O CompactPCI driver
Format:
<first_slot>,<last_slot>,<port>,<enum_bit>[,<debug>]
Expand Down
14 changes: 12 additions & 2 deletions trunk/Documentation/memory-barriers.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1479,7 +1479,8 @@ kernel.

Any atomic operation that modifies some state in memory and returns information
about the state (old or new) implies an SMP-conditional general memory barrier
(smp_mb()) on each side of the actual operation. These include:
(smp_mb()) on each side of the actual operation (with the exception of
explicit lock operations, described later). These include:

xchg();
cmpxchg();
Expand Down Expand Up @@ -1536,10 +1537,19 @@ If they're used for constructing a lock of some description, then they probably
do need memory barriers as a lock primitive generally has to do things in a
specific order.


Basically, each usage case has to be carefully considered as to whether memory
barriers are needed or not.

The following operations are special locking primitives:

test_and_set_bit_lock();
clear_bit_unlock();
__clear_bit_unlock();

These implement LOCK-class and UNLOCK-class operations. These should be used in
preference to other operations when implementing locking primitives, because
their implementations can be optimised on many architectures.

[!] Note that special memory barrier primitives are available for these
situations because on some CPUs the atomic instructions used imply full memory
barriers, and so barrier instructions are superfluous in conjunction with them,
Expand Down
29 changes: 3 additions & 26 deletions trunk/Documentation/parport-lowlevel.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ Global functions:
parport_open
parport_close
parport_device_id
parport_device_num
parport_device_coords
parport_find_class
parport_find_device
Expand Down Expand Up @@ -735,7 +734,7 @@ NULL is returned.

SEE ALSO

parport_register_device, parport_device_num
parport_register_device

parport_close - unregister device for particular device number
-------------
Expand Down Expand Up @@ -787,29 +786,7 @@ Many devices have ill-formed IEEE 1284 Device IDs.

SEE ALSO

parport_find_class, parport_find_device, parport_device_num

parport_device_num - convert device coordinates to device number
------------------

SYNOPSIS

#include <linux/parport.h>

int parport_device_num (int parport, int mux, int daisy);

DESCRIPTION

Convert between device coordinates (port, multiplexor, daisy chain
address) and device number (zero-based).

RETURN VALUE

Device number, or -1 if no device at given coordinates.

SEE ALSO

parport_device_coords, parport_open, parport_device_id
parport_find_class, parport_find_device

parport_device_coords - convert device number to device coordinates
------------------
Expand All @@ -833,7 +810,7 @@ Zero on success, in which case the coordinates are (*parport, *mux,

SEE ALSO

parport_device_num, parport_open, parport_device_id
parport_open, parport_device_id

parport_find_class - find a device by its class
------------------
Expand Down
4 changes: 2 additions & 2 deletions trunk/Documentation/power/basic-pm-debugging.txt
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,8 @@ c) Advanced debugging
In case the STD does not work on your system even in the minimal configuration
and compiling more drivers as modules is not practical or some modules cannot
be unloaded, you can use one of the more advanced debugging techniques to find
the problem. First, if there is a serial port in your box, you can set the
CONFIG_DISABLE_CONSOLE_SUSPEND kernel configuration option and try to log kernel
the problem. First, if there is a serial port in your box, you can boot the
kernel with the 'no_console_suspend' parameter and try to log kernel
messages using the serial console. This may provide you with some information
about the reasons of the suspend (resume) failure. Alternatively, it may be
possible to use a FireWire port for debugging with firescope
Expand Down
44 changes: 30 additions & 14 deletions trunk/Documentation/power/freezing-of-tasks.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,13 @@ we only consider hibernation, but the description also applies to suspend).
Namely, as the first step of the hibernation procedure the function
freeze_processes() (defined in kernel/power/process.c) is called. It executes
try_to_freeze_tasks() that sets TIF_FREEZE for all of the freezable tasks and
sends a fake signal to each of them. A task that receives such a signal and has
TIF_FREEZE set, should react to it by calling the refrigerator() function
(defined in kernel/power/process.c), which sets the task's PF_FROZEN flag,
changes its state to TASK_UNINTERRUPTIBLE and makes it loop until PF_FROZEN is
cleared for it. Then, we say that the task is 'frozen' and therefore the set of
functions handling this mechanism is called 'the freezer' (these functions are
either wakes them up, if they are kernel threads, or sends fake signals to them,
if they are user space processes. A task that has TIF_FREEZE set, should react
to it by calling the function called refrigerator() (defined in
kernel/power/process.c), which sets the task's PF_FROZEN flag, changes its state
to TASK_UNINTERRUPTIBLE and makes it loop until PF_FROZEN is cleared for it.
Then, we say that the task is 'frozen' and therefore the set of functions
handling this mechanism is referred to as 'the freezer' (these functions are
defined in kernel/power/process.c and include/linux/freezer.h). User space
processes are generally frozen before kernel threads.

Expand All @@ -35,21 +36,27 @@ task enter refrigerator() if the flag is set.

For user space processes try_to_freeze() is called automatically from the
signal-handling code, but the freezable kernel threads need to call it
explicitly in suitable places. The code to do this may look like the following:
explicitly in suitable places or use the wait_event_freezable() or
wait_event_freezable_timeout() macros (defined in include/linux/freezer.h)
that combine interruptible sleep with checking if TIF_FREEZE is set and calling
try_to_freeze(). The main loop of a freezable kernel thread may look like the
following one:

set_freezable();
do {
hub_events();
wait_event_interruptible(khubd_wait,
!list_empty(&hub_event_list));
try_to_freeze();
} while (!signal_pending(current));
wait_event_freezable(khubd_wait,
!list_empty(&hub_event_list) ||
kthread_should_stop());
} while (!kthread_should_stop() || !list_empty(&hub_event_list));

(from drivers/usb/core/hub.c::hub_thread()).

If a freezable kernel thread fails to call try_to_freeze() after the freezer has
set TIF_FREEZE for it, the freezing of tasks will fail and the entire
hibernation operation will be cancelled. For this reason, freezable kernel
threads must call try_to_freeze() somewhere.
threads must call try_to_freeze() somewhere or use one of the
wait_event_freezable() and wait_event_freezable_timeout() macros.

After the system memory state has been restored from a hibernation image and
devices have been reinitialized, the function thaw_processes() is called in
Expand Down Expand Up @@ -81,7 +88,16 @@ hibernation image has been created and before the system is finally powered off.
The majority of these are user space processes, but if any of the kernel threads
may cause something like this to happen, they have to be freezable.

2. The second reason is to prevent user space processes and some kernel threads
2. Next, to create the hibernation image we need to free a sufficient amount of
memory (approximately 50% of available RAM) and we need to do that before
devices are deactivated, because we generally need them for swapping out. Then,
after the memory for the image has been freed, we don't want tasks to allocate
additional memory and we prevent them from doing that by freezing them earlier.
[Of course, this also means that device drivers should not allocate substantial
amounts of memory from their .suspend() callbacks before hibernation, but this
is e separate issue.]

3. The third reason is to prevent user space processes and some kernel threads
from interfering with the suspending and resuming of devices. A user space
process running on a second CPU while we are suspending devices may, for
example, be troublesome and without the freezing of tasks we would need some
Expand Down Expand Up @@ -111,7 +127,7 @@ frozen before the driver's .suspend() callback is executed and it will be
thawed after the driver's .resume() callback has run, so it won't be accessing
the device while it's suspended.

3. Another reason for freezing tasks is to prevent user space processes from
4. Another reason for freezing tasks is to prevent user space processes from
realizing that hibernation (or suspend) operation takes place. Ideally, user
space processes should not notice that such a system-wide operation has occurred
and should continue running without any problems after the restore (or resume
Expand Down
2 changes: 1 addition & 1 deletion trunk/Documentation/power/interface.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ states.
/sys/power/disk controls the operating mode of the suspend-to-disk
mechanism. Suspend-to-disk can be handled in several ways. We have a
few options for putting the system to sleep - using the platform driver
(e.g. ACPI or other pm_ops), powering off the system or rebooting the
(e.g. ACPI or other suspend_ops), powering off the system or rebooting the
system (for testing).

Additionally, /sys/power/disk can be used to turn on one of the two testing
Expand Down
64 changes: 0 additions & 64 deletions trunk/Documentation/sound/oss/es1371

This file was deleted.

Loading

0 comments on commit 63413c8

Please sign in to comment.