Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 108062
b: refs/heads/master
c: ab27712
h: refs/heads/master
v: v3
  • Loading branch information
Eric Miao committed Aug 5, 2008
1 parent 72fa5d5 commit 67d770e
Show file tree
Hide file tree
Showing 3,082 changed files with 44,141 additions and 46,838 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 1f4de5a0e3b4a4b8afa2cddb46429d32e1053c14
refs/heads/master: ab277121426edca2ee0601fc6318c9467350771e
2 changes: 2 additions & 0 deletions trunk/Documentation/00-INDEX
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,8 @@ cciss.txt
- info, major/minor #'s for Compaq's SMART Array Controllers.
cdrom/
- directory with information on the CD-ROM drivers that Linux has.
cli-sti-removal.txt
- cli()/sti() removal guide.
computone.txt
- info on Computone Intelliport II/Plus Multiport Serial Driver.
connector/
Expand Down
2 changes: 1 addition & 1 deletion trunk/Documentation/DocBook/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \
kernel-api.xml filesystems.xml lsm.xml usb.xml kgdb.xml \
gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \
genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \
mac80211.xml debugobjects.xml sh.xml
mac80211.xml debugobjects.xml

###
# The build process is as follows (targets):
Expand Down
8 changes: 4 additions & 4 deletions trunk/Documentation/DocBook/s390-drivers.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@
the hardware structures represented here, please consult the Principles
of Operation.
</para>
!Iarch/s390/include/asm/cio.h
!Iinclude/asm-s390/cio.h
</sect1>
<sect1 id="ccwdev">
<title>ccw devices</title>
Expand All @@ -114,7 +114,7 @@
ccw device structure. Device drivers must not bypass those functions
or strange side effects may happen.
</para>
!Iarch/s390/include/asm/ccwdev.h
!Iinclude/asm-s390/ccwdev.h
!Edrivers/s390/cio/device.c
!Edrivers/s390/cio/device_ops.c
</sect1>
Expand All @@ -125,7 +125,7 @@
measurement data which is made available by the channel subsystem
for each channel attached device.
</para>
!Iarch/s390/include/asm/cmb.h
!Iinclude/asm-s390/cmb.h
!Edrivers/s390/cio/cmf.c
</sect1>
</chapter>
Expand All @@ -142,7 +142,7 @@
</para>
<sect1 id="ccwgroupdevices">
<title>ccw group devices</title>
!Iarch/s390/include/asm/ccwgroup.h
!Iinclude/asm-s390/ccwgroup.h
!Edrivers/s390/cio/ccwgroup.c
</sect1>
</chapter>
Expand Down
105 changes: 0 additions & 105 deletions trunk/Documentation/DocBook/sh.tmpl

This file was deleted.

2 changes: 1 addition & 1 deletion trunk/Documentation/arm/IXP4xx
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ Linux currently supports the following features on the IXP4xx chips:
- Flash access (MTD/JFFS)
- I2C through GPIO on IXP42x
- GPIO for input/output/interrupts
See arch/arm/mach-ixp4xx/include/mach/platform.h for access functions.
See include/asm-arm/arch-ixp4xx/platform.h for access functions.
- Timers (watchdog, OS)

The following components of the chips are not supported by Linux and
Expand Down
2 changes: 1 addition & 1 deletion trunk/Documentation/arm/Interrupts
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ So, what's changed?
be re-checked for pending events. (see the Neponset IRQ handler for
details).

7. fixup_irq() is gone, as is arch/arm/mach-*/include/mach/irq.h
7. fixup_irq() is gone, as is include/asm-arm/arch-*/irq.h

Please note that this will not solve all problems - some of them are
hardware based. Mixing level-based and edge-based IRQs on the same
Expand Down
4 changes: 2 additions & 2 deletions trunk/Documentation/arm/README
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ Machine/Platform support
To this end, we now have arch/arm/mach-$(MACHINE) directories which are
designed to house the non-driver files for a particular machine (eg, PCI,
memory management, architecture definitions etc). For all future
machines, there should be a corresponding arch/arm/mach-$(MACHINE)/include/mach
machines, there should be a corresponding include/asm-arm/arch-$(MACHINE)
directory.


Expand Down Expand Up @@ -176,7 +176,7 @@ Kernel entry (head.S)
class typically based around one or more system on a chip devices, and
acts as a natural container around the actual implementations. These
classes are given directories - arch/arm/mach-<class> and
arch/arm/mach-<class> - which contain the source files to/include/mach
include/asm-arm/arch-<class> - which contain the source files to
support the machine class. This directories also contain any machine
specific supporting code.

Expand Down
8 changes: 4 additions & 4 deletions trunk/Documentation/arm/Samsung-S3C24XX/GPIO.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,13 +16,13 @@ Introduction
Headers
-------

See arch/arm/mach-s3c2410/include/mach/regs-gpio.h for the list
See include/asm-arm/arch-s3c2410/regs-gpio.h for the list
of GPIO pins, and the configuration values for them. This
is included by using #include <mach/regs-gpio.h>
is included by using #include <asm/arch/regs-gpio.h>

The GPIO management functions are defined in the hardware
header arch/arm/mach-s3c2410/include/mach/hardware.h which can be
included by #include <mach/hardware.h>
header include/asm-arm/arch-s3c2410/hardware.h which can be
included by #include <asm/arch/hardware.h>

A useful amount of documentation can be found in the hardware
header on how the GPIO functions (and others) work.
Expand Down
2 changes: 1 addition & 1 deletion trunk/Documentation/arm/Samsung-S3C24XX/Overview.txt
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ Layout
in arch/arm/mach-s3c2410 and S3C2440 in arch/arm/mach-s3c2440

Register, kernel and platform data definitions are held in the
arch/arm/mach-s3c2410 directory./include/mach
include/asm-arm/arch-s3c2410 directory.


Machines
Expand Down
2 changes: 1 addition & 1 deletion trunk/Documentation/arm/Samsung-S3C24XX/USB-Host.txt
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ Board Support
Platform Data
-------------

See arch/arm/mach-s3c2410/include/mach/usb-control.h for the
See linux/include/asm-arm/arch-s3c2410/usb-control.h for the
descriptions of the platform device data. An implementation
can be found in linux/arch/arm/mach-s3c2410/usb-simtec.c .

Expand Down
133 changes: 133 additions & 0 deletions trunk/Documentation/cli-sti-removal.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@

#### cli()/sti() removal guide, started by Ingo Molnar <mingo@redhat.com>


as of 2.5.28, five popular macros have been removed on SMP, and
are being phased out on UP:

cli(), sti(), save_flags(flags), save_flags_cli(flags), restore_flags(flags)

until now it was possible to protect driver code against interrupt
handlers via a cli(), but from now on other, more lightweight methods
have to be used for synchronization, such as spinlocks or semaphores.

for example, driver code that used to do something like:

struct driver_data;

irq_handler (...)
{
....
driver_data.finish = 1;
driver_data.new_work = 0;
....
}

...

ioctl_func (...)
{
...
cli();
...
driver_data.finish = 0;
driver_data.new_work = 2;
...
sti();
...
}

was SMP-correct because the cli() function ensured that no
interrupt handler (amongst them the above irq_handler()) function
would execute while the cli()-ed section is executing.

but from now on a more direct method of locking has to be used:

DEFINE_SPINLOCK(driver_lock);
struct driver_data;

irq_handler (...)
{
unsigned long flags;
....
spin_lock_irqsave(&driver_lock, flags);
....
driver_data.finish = 1;
driver_data.new_work = 0;
....
spin_unlock_irqrestore(&driver_lock, flags);
....
}

...

ioctl_func (...)
{
...
spin_lock_irq(&driver_lock);
...
driver_data.finish = 0;
driver_data.new_work = 2;
...
spin_unlock_irq(&driver_lock);
...
}

the above code has a number of advantages:

- the locking relation is easier to understand - actual lock usage
pinpoints the critical sections. cli() usage is too opaque.
Easier to understand means it's easier to debug.

- it's faster, because spinlocks are faster to acquire than the
potentially heavily-used IRQ lock. Furthermore, your driver does
not have to wait eg. for a big heavy SCSI interrupt to finish,
because the driver_lock spinlock is only used by your driver.
cli() on the other hand was used by many drivers, and extended
the critical section to the whole IRQ handler function - creating
serious lock contention.


to make the transition easier, we've still kept the cli(), sti(),
save_flags(), save_flags_cli() and restore_flags() macros defined
on UP systems - but their usage will be phased out until 2.6 is
released.

drivers that want to disable local interrupts (interrupts on the
current CPU), can use the following five macros:

local_irq_disable(), local_irq_enable(), local_save_flags(flags),
local_irq_save(flags), local_irq_restore(flags)

but beware, their meaning and semantics are much simpler, far from
that of the old cli(), sti(), save_flags(flags) and restore_flags(flags)
SMP meaning:

local_irq_disable() => turn local IRQs off

local_irq_enable() => turn local IRQs on

local_save_flags(flags) => save the current IRQ state into flags. The
state can be on or off. (on some
architectures there's even more bits in it.)

local_irq_save(flags) => save the current IRQ state into flags and
disable interrupts.

local_irq_restore(flags) => restore the IRQ state from flags.

(local_irq_save can save both irqs on and irqs off state, and
local_irq_restore can restore into both irqs on and irqs off state.)

another related change is that synchronize_irq() now takes a parameter:
synchronize_irq(irq). This change too has the purpose of making SMP
synchronization more lightweight - this way you can wait for your own
interrupt handler to finish, no need to wait for other IRQ sources.


why were these changes done? The main reason was the architectural burden
of maintaining the cli()/sti() interface - it became a real problem. The
new interrupt system is much more streamlined, easier to understand, debug,
and it's also a bit faster - the same happened to it that will happen to
cli()/sti() using drivers once they convert to spinlocks :-)

7 changes: 1 addition & 6 deletions trunk/Documentation/power/pm_qos_interface.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
PM Quality Of Service Interface.
PM quality of Service interface.

This interface provides a kernel and user mode interface for registering
performance expectations by drivers, subsystems and user space applications on
Expand All @@ -7,11 +7,6 @@ one of the parameters.
Currently we have {cpu_dma_latency, network_latency, network_throughput} as the
initial set of pm_qos parameters.

Each parameters have defined units:
* latency: usec
* timeout: usec
* throughput: kbs (kilo bit / sec)

The infrastructure exposes multiple misc device nodes one per implemented
parameter. The set of parameters implement is defined by pm_qos_power_init()
and pm_qos_params.h. This is done because having the available parameters
Expand Down
Loading

0 comments on commit 67d770e

Please sign in to comment.