original_kernel/Documentation
David Howells 108b42b4b9 [PATCH] Document Linux's memory barriers [try #7]
The attached patch documents the Linux kernel's memory barriers.

I've updated it from the comments I've been given.

The per-arch notes sections are gone because it's clear that there are so many
exceptions, that it's not worth having them.

I've added a list of references to other documents.

I've tried to get rid of the concept of memory accesses appearing on the bus;
what matters is apparent behaviour with respect to other observers in the
system.

Interrupts barrier effects are now considered to be non-existent. They may be
there, but you may not rely on them.

I've added a couple of definition sections at the top of the document: one to
specify the minimum execution model that may be assumed, the other to specify
what this document refers to by the term "memory".

I've made greater mention of the use of mmiowb().

I've adjusted the way in which caches are described, and described the fun
that can be had with cache coherence maintenance being unordered and data
dependency not being necessarily implicit.

I've described (smp_)read_barrier_depends().

I've rearranged the order of the sections, so that memory barriers are
discussed in abstract first, and then described the memory barrier facilities
available on Linux, before going on to more real-world discussions and examples.

I've added information about the lack of memory barriering effects with atomic
ops and bitops.

I've added information about control dependencies.

I've added more diagrams to illustrate caching interactions between CPUs.

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-03-31 12:27:01 -08:00
..
DocBook [PATCH] libata: Simplex and other mode filtering logic 2006-03-29 19:30:28 -05:00
RCU
aoe
arm
block
cdrom
connector
cpu-freq
cris
crypto
device-mapper
driver-model
drivers/edac
dvb
early-userspace
fb
filesystems
firmware_class
fujitsu/frv
hwmon
i2c
i2o
i386
ia64
infiniband
input
ioctl
isdn
kbuild
kdump
m68k
mips
networking Merge branch 'upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 2006-03-29 17:30:19 -05:00
parisc
pcmcia
power
powerpc
s390
scsi
serial
sh
sound
sparc
spi
sysctl
telephony
uml
usb
video4linux
vm
w1
watchdog
x86_64
00-INDEX
BUG-HUNTING
Changes
CodingStyle
DMA-API.txt
DMA-ISA-LPC.txt
DMA-mapping.txt
HOWTO
IO-mapping.txt
IPMI.txt
IRQ-affinity.txt
MSI-HOWTO.txt
ManagementStyle
PCIEBUS-HOWTO.txt
README.DAC960
README.cycladesZ
SAK.txt
SecurityBugs
SubmittingDrivers
SubmittingPatches
VGA-softcursor.txt
acpi-hotkey.txt
applying-patches.txt
atomic_ops.txt
basic_profiling.txt
binfmt_misc.txt
cachetlb.txt
cciss.txt
cli-sti-removal.txt
computone.txt
cpqarray.txt
cpu-hotplug.txt
cpusets.txt
cputopology.txt
dcdbas.txt
debugging-modules.txt
dell_rbu.txt
devices.txt
digiepca.txt
dnotify.txt
dontdiff
eisa.txt
exception.txt
feature-removal-schedule.txt [PATCH] fs/namei.c: make lookup_hash() static 2006-03-31 12:19:01 -08:00
floppy.txt
ftape.txt
hayes-esp.txt
highuid.txt
hpet.txt
hrtimers.txt
hw_random.txt
ibm-acpi.txt
ide.txt
initrd.txt
io_ordering.txt
ioctl-number.txt
iostats.txt
isapnp.txt
java.txt
kernel-doc-nano-HOWTO.txt
kernel-docs.txt
kernel-parameters.txt
keys-request-key.txt
keys.txt
kobject.txt
kprobes.txt
kref.txt
laptop-mode.txt
ldm.txt
leds-class.txt [PATCH] LED: class documentation 2006-03-31 12:18:56 -08:00
locks.txt
logo.gif
logo.txt
magic-number.txt
mandatory.txt
mca.txt
md.txt
memory-barriers.txt [PATCH] Document Linux's memory barriers [try #7] 2006-03-31 12:27:01 -08:00
memory.txt
mono.txt
moxa-smartio
mtrr.txt
mutex-design.txt
nbd.txt
nfsroot.txt
nmi_watchdog.txt
nommu-mmap.txt
numastat.txt
oops-tracing.txt
paride.txt
parport-lowlevel.txt
parport.txt
pci-error-recovery.txt
pci.txt
pm.txt
pnp.txt
preempt-locking.txt
prio_tree.txt
ramdisk.txt
riscom8.txt
robust-futex-ABI.txt
robust-futexes.txt
rocket.txt
rpc-cache.txt
rtc.txt
sched-arch.txt
sched-coding.txt
sched-design.txt
sched-domains.txt
sched-stats.txt
seclvl.txt
serial-console.txt
sgi-ioc4.txt
sgi-visws.txt
sharedsubtree.txt
smart-config.txt
smp.txt
sonypi.txt
sparse.txt
specialix.txt
spinlocks.txt
stable_api_nonsense.txt
stable_kernel_rules.txt
stallion.txt
svga.txt
sx.txt
sysrq.txt
time_interpolators.txt
tipar.txt
tty.txt
unicode.txt
unshare.txt
voyager.txt
xterm-linux.xpm
zorro.txt

README.cycladesZ

The Cyclades-Z must have firmware loaded onto the card before it will
operate.  This operation should be performed during system startup,

The firmware, loader program and the latest device driver code are
available from Cyclades at
    ftp://ftp.cyclades.com/pub/cyclades/cyclades-z/linux/