linux/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 [PATCH] for_each_possible_cpu: documentaion 2006-03-28 09:16:05 -08:00
aoe [PATCH] aoe [2/8]: support dynamic resizing of AoE devices 2006-03-23 22:01:55 -08:00
arm [ARM] 3416/1: Update LART site URL 2006-03-27 15:32:30 +01:00
block [PATCH] update max_sectors documentation 2006-03-27 09:29:01 +02:00
cdrom
connector [CONNECTOR]: Use netlink_has_listeners() to avoind unnecessary allocations. 2006-03-20 22:21:40 -08:00
cpu-freq
cris
crypto
device-mapper
driver-model [PATCH] Clean up Documentation/driver-model/overview.txt 2006-02-03 08:31:59 -08:00
drivers/edac [PATCH] EDAC: documentation spelling fixes 2006-03-26 08:57:08 -08:00
dvb Documentation/dvb/get_dvb_firmware: fix firmware URL 2006-03-22 00:43:59 +01:00
early-userspace
fb
filesystems [PATCH] Docs update: missing files and descriptions for filesystems/00-INDEX 2006-03-28 09:16:06 -08:00
firmware_class [PATCH] Doc: fix example firmware source code 2006-03-25 08:23:01 -08:00
fujitsu/frv [PATCH] FRV: Use virtual interrupt disablement 2006-02-14 16:09:35 -08:00
hwmon [PATCH] w83781d: Don't reset the chip by default 2006-03-23 14:21:53 -08:00
i2c [PATCH] I2C: i2c-piix4: Add Broadcom HT-1000 support 2006-03-23 14:21:55 -08:00
i2o
i386
ia64
infiniband
input Fix "stuct", "strut", "struc" typos 2006-01-15 02:12:54 +01:00
ioctl spelling: s/appropiate/appropriate/ 2006-01-15 02:00:17 +01:00
isdn
kbuild kbuild: in makefile.txt note that Makefile is preferred name for kbuild files 2006-03-10 00:23:32 +01:00
kdump
m68k [PATCH] Typo fixes 2006-03-28 09:16:08 -08:00
mips [MIPS] Update docs to reflect the latest status of the Alchemy IDE driver. 2006-02-14 19:13:23 +00:00
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 [PATCH] swsusp: userland interface 2006-03-23 07:38:07 -08:00
powerpc [PATCH] powerpc: Kill _machine and hard-coded platform numbers 2006-03-28 23:15:54 +11:00
s390 [PATCH] s390: cio documentation update 2006-03-24 07:33:15 -08:00
scsi [SCSI] megaraid_sas: support for 1078 type controller added 2006-02-04 16:38:41 -06:00
serial
sh
sound [PATCH] more s/fucn/func/ typo fixes 2006-03-26 08:57:09 -08:00
sparc
spi [PATCH] SPI: spi_butterfly, restore lost deltas 2006-02-06 12:17:17 -08:00
sysctl [PATCH] suspend-to-ram: allow video options to be set at runtime 2006-02-20 20:00:10 -08:00
telephony
uml
usb [PATCH] USB: ZC0301 driver bugfix 2006-03-20 14:50:01 -08:00
video4linux V4L/DVB (3599c): Whitespace cleanups under Documentation/video4linux 2006-03-25 09:29:32 -03:00
vm [PATCH] Page migration documentation update 2006-03-14 21:43:02 -08:00
w1 [PATCH] W1: Add the DS2482 I2C-to-w1 bridge driver. 2006-03-23 17:28:12 -08:00
watchdog
x86_64 [PATCH] x86_64: Better ATI timer fix 2006-02-26 09:53:31 -08:00
00-INDEX
BUG-HUNTING Documentation: Update to BUG-HUNTING 2006-03-22 00:37:42 +01:00
Changes Documentation/Changes: remove outdated translation references 2006-03-20 20:28:13 +01:00
CodingStyle
DMA-API.txt
DMA-ISA-LPC.txt
DMA-mapping.txt [PATCH] Replace 0xff.. with correct DMA_xBIT_MASK 2006-03-28 09:16:07 -08:00
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 [PATCH] Add flush_kernel_dcache_page() API 2006-03-26 08:56:53 -08:00
cciss.txt
cli-sti-removal.txt
computone.txt
cpqarray.txt
cpu-hotplug.txt [PATCH] for_each_possible_cpu: documentaion 2006-03-28 09:16:05 -08:00
cpusets.txt [PATCH] cpuset memory spread basic implementation 2006-03-24 07:33:22 -08:00
cputopology.txt [PATCH] trivial typos in Documentation/cputopology.txt 2006-03-28 09:16:08 -08:00
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 Documentation/hpet.txt typo 2006-01-15 02:09:54 +01:00
hrtimers.txt
hw_random.txt
ibm-acpi.txt
ide.txt
initrd.txt
io_ordering.txt
ioctl-number.txt [PATCH] arch/i386/kernel/microcode.c: remove the obsolete microcode_ioctl 2006-03-28 09:16:06 -08:00
iostats.txt
isapnp.txt
java.txt
kernel-doc-nano-HOWTO.txt [PATCH] Doc/kernel-doc: add more usage info 2006-02-01 08:53:27 -08:00
kernel-docs.txt
kernel-parameters.txt [PATCH] doc: more serial-console info 2006-03-25 08:23:00 -08:00
keys-request-key.txt
keys.txt
kobject.txt
kprobes.txt [PATCH] kprobes: Update Documentation/kprobes.txt 2006-02-14 16:09:34 -08:00
kref.txt
laptop-mode.txt spelling: s/appropiate/appropriate/ 2006-01-15 02:00:17 +01:00
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 [PATCH] Updated Documentation/nfsroot.txt 2006-03-24 07:33:27 -08:00
nmi_watchdog.txt
nommu-mmap.txt
numastat.txt
oops-tracing.txt
paride.txt
parport-lowlevel.txt [PATCH] parport: fix documentation 2006-02-03 08:32:06 -08:00
parport.txt
pci-error-recovery.txt [PATCH] Documentation: Updated PCI Error Recovery 2006-02-03 08:32:00 -08:00
pci.txt
pm.txt
pnp.txt [PATCH] pnp: PNP: adjust pnp_register_driver signature 2006-03-27 08:44:53 -08:00
preempt-locking.txt
prio_tree.txt
ramdisk.txt
riscom8.txt
robust-futex-ABI.txt [PATCH] lightweight robust futexes updates 2006-03-27 08:44:49 -08:00
robust-futexes.txt [PATCH] lightweight robust futexes updates 2006-03-27 08:44:49 -08:00
rocket.txt
rpc-cache.txt [PATCH] knfsd: Update rpc-cache.txt to match recent changes 2006-03-27 08:44:43 -08:00
rtc.txt
sched-arch.txt
sched-coding.txt
sched-design.txt
sched-domains.txt
sched-stats.txt
seclvl.txt
serial-console.txt [PATCH] doc: more serial-console info 2006-03-25 08:23:00 -08:00
sgi-ioc4.txt
sgi-visws.txt
sharedsubtree.txt
smart-config.txt kbuild: remove checkconfig.pl 2006-02-19 09:51:22 +01:00
smp.txt
sonypi.txt
sparse.txt
specialix.txt
spinlocks.txt fix rwlock usage example 2006-03-22 00:19:39 +01:00
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 [PATCH] unshare system call -v5: Documentation file 2006-02-07 16:12:34 -08:00
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/