aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/cachetlb.txt6
-rw-r--r--Documentation/cpusets.txt24
-rw-r--r--Documentation/fb/00-INDEX46
-rw-r--r--Documentation/fb/uvesafb.txt188
-rw-r--r--Documentation/filesystems/Locking9
-rw-r--r--Documentation/filesystems/vfs.txt51
-rw-r--r--Documentation/kernel-parameters.txt10
-rw-r--r--Documentation/spi/spi-summary25
-rw-r--r--Documentation/spi/spidev_test.c6
-rw-r--r--Documentation/vm/numa_memory_policy.txt33
-rw-r--r--Documentation/x86_64/mm.txt1
11 files changed, 328 insertions, 71 deletions
diff --git a/Documentation/cachetlb.txt b/Documentation/cachetlb.txt
index 866b76139420..552cabac0608 100644
--- a/Documentation/cachetlb.txt
+++ b/Documentation/cachetlb.txt
@@ -133,12 +133,6 @@ changes occur:
133 The ia64 sn2 platform is one example of a platform 133 The ia64 sn2 platform is one example of a platform
134 that uses this interface. 134 that uses this interface.
135 135
1368) void lazy_mmu_prot_update(pte_t pte)
137 This interface is called whenever the protection on
138 any user PTEs change. This interface provides a notification
139 to architecture specific code to take appropriate action.
140
141
142Next, we have the cache flushing interfaces. In general, when Linux 136Next, we have the cache flushing interfaces. In general, when Linux
143is changing an existing virtual-->physical mapping to a new value, 137is changing an existing virtual-->physical mapping to a new value,
144the sequence will be in one of the following forms: 138the sequence will be in one of the following forms:
diff --git a/Documentation/cpusets.txt b/Documentation/cpusets.txt
index f2c0a6842930..ec9de6917f01 100644
--- a/Documentation/cpusets.txt
+++ b/Documentation/cpusets.txt
@@ -35,7 +35,8 @@ CONTENTS:
35---------------------- 35----------------------
36 36
37Cpusets provide a mechanism for assigning a set of CPUs and Memory 37Cpusets provide a mechanism for assigning a set of CPUs and Memory
38Nodes to a set of tasks. 38Nodes to a set of tasks. In this document "Memory Node" refers to
39an on-line node that contains memory.
39 40
40Cpusets constrain the CPU and Memory placement of tasks to only 41Cpusets constrain the CPU and Memory placement of tasks to only
41the resources within a tasks current cpuset. They form a nested 42the resources within a tasks current cpuset. They form a nested
@@ -86,9 +87,6 @@ This can be especially valuable on:
86 and a database), or 87 and a database), or
87 * NUMA systems running large HPC applications with demanding 88 * NUMA systems running large HPC applications with demanding
88 performance characteristics. 89 performance characteristics.
89 * Also cpu_exclusive cpusets are useful for servers running orthogonal
90 workloads such as RT applications requiring low latency and HPC
91 applications that are throughput sensitive
92 90
93These subsets, or "soft partitions" must be able to be dynamically 91These subsets, or "soft partitions" must be able to be dynamically
94adjusted, as the job mix changes, without impacting other concurrently 92adjusted, as the job mix changes, without impacting other concurrently
@@ -131,8 +129,6 @@ Cpusets extends these two mechanisms as follows:
131 - A cpuset may be marked exclusive, which ensures that no other 129 - A cpuset may be marked exclusive, which ensures that no other
132 cpuset (except direct ancestors and descendents) may contain 130 cpuset (except direct ancestors and descendents) may contain
133 any overlapping CPUs or Memory Nodes. 131 any overlapping CPUs or Memory Nodes.
134 Also a cpu_exclusive cpuset would be associated with a sched
135 domain.
136 - You can list all the tasks (by pid) attached to any cpuset. 132 - You can list all the tasks (by pid) attached to any cpuset.
137 133
138The implementation of cpusets requires a few, simple hooks 134The implementation of cpusets requires a few, simple hooks
@@ -144,9 +140,6 @@ into the rest of the kernel, none in performance critical paths:
144 allowed in that tasks cpuset. 140 allowed in that tasks cpuset.
145 - in sched.c migrate_all_tasks(), to keep migrating tasks within 141 - in sched.c migrate_all_tasks(), to keep migrating tasks within
146 the CPUs allowed by their cpuset, if possible. 142 the CPUs allowed by their cpuset, if possible.
147 - in sched.c, a new API partition_sched_domains for handling
148 sched domain changes associated with cpu_exclusive cpusets
149 and related changes in both sched.c and arch/ia64/kernel/domain.c
150 - in the mbind and set_mempolicy system calls, to mask the requested 143 - in the mbind and set_mempolicy system calls, to mask the requested
151 Memory Nodes by what's allowed in that tasks cpuset. 144 Memory Nodes by what's allowed in that tasks cpuset.
152 - in page_alloc.c, to restrict memory to allowed nodes. 145 - in page_alloc.c, to restrict memory to allowed nodes.
@@ -220,8 +213,8 @@ and name space for cpusets, with a minimum of additional kernel code.
220The cpus and mems files in the root (top_cpuset) cpuset are 213The cpus and mems files in the root (top_cpuset) cpuset are
221read-only. The cpus file automatically tracks the value of 214read-only. The cpus file automatically tracks the value of
222cpu_online_map using a CPU hotplug notifier, and the mems file 215cpu_online_map using a CPU hotplug notifier, and the mems file
223automatically tracks the value of node_online_map using the 216automatically tracks the value of node_states[N_MEMORY]--i.e.,
224cpuset_track_online_nodes() hook. 217nodes with memory--using the cpuset_track_online_nodes() hook.
225 218
226 219
2271.4 What are exclusive cpusets ? 2201.4 What are exclusive cpusets ?
@@ -231,15 +224,6 @@ If a cpuset is cpu or mem exclusive, no other cpuset, other than
231a direct ancestor or descendent, may share any of the same CPUs or 224a direct ancestor or descendent, may share any of the same CPUs or
232Memory Nodes. 225Memory Nodes.
233 226
234A cpuset that is cpu_exclusive has a scheduler (sched) domain
235associated with it. The sched domain consists of all CPUs in the
236current cpuset that are not part of any exclusive child cpusets.
237This ensures that the scheduler load balancing code only balances
238against the CPUs that are in the sched domain as defined above and
239not all of the CPUs in the system. This removes any overhead due to
240load balancing code trying to pull tasks outside of the cpu_exclusive
241cpuset only to be prevented by the tasks' cpus_allowed mask.
242
243A cpuset that is mem_exclusive restricts kernel allocations for 227A cpuset that is mem_exclusive restricts kernel allocations for
244page, buffer and other data commonly shared by the kernel across 228page, buffer and other data commonly shared by the kernel across
245multiple users. All cpusets, whether mem_exclusive or not, restrict 229multiple users. All cpusets, whether mem_exclusive or not, restrict
diff --git a/Documentation/fb/00-INDEX b/Documentation/fb/00-INDEX
index 92e89aeef52e..caabbd395e61 100644
--- a/Documentation/fb/00-INDEX
+++ b/Documentation/fb/00-INDEX
@@ -5,21 +5,49 @@ please mail me.
5 5
600-INDEX 600-INDEX
7 - this file 7 - this file
8arkfb.txt
9 - info on the fbdev driver for ARK Logic chips.
10aty128fb.txt
11 - info on the ATI Rage128 frame buffer driver.
12cirrusfb.txt
13 - info on the driver for Cirrus Logic chipsets.
14cyblafb/
15 - directory with documentation files related to the cyblafb driver.
16deferred_io.txt
17 - an introduction to deferred IO.
18fbcon.txt
19 - intro to and usage guide for the framebuffer console (fbcon).
8framebuffer.txt 20framebuffer.txt
9 - introduction to frame buffer devices 21 - introduction to frame buffer devices.
22imacfb.txt
23 - info on the generic EFI platform driver for Intel based Macs.
24intel810.txt
25 - documentation for the Intel 810/815 framebuffer driver.
26intelfb.txt
27 - docs for Intel 830M/845G/852GM/855GM/865G/915G/945G fb driver.
10internals.txt 28internals.txt
11 - quick overview of frame buffer device internals 29 - quick overview of frame buffer device internals.
30matroxfb.txt
31 - info on the Matrox framebuffer driver for Alpha, Intel and PPC.
12modedb.txt 32modedb.txt
13 - info on the video mode database 33 - info on the video mode database.
14aty128fb.txt
15 - info on the ATI Rage128 frame buffer driver
16clgenfb.txt
17 - info on the Cirrus Logic frame buffer driver
18matroxfb.txt 34matroxfb.txt
19 - info on the Matrox frame buffer driver 35 - info on the Matrox frame buffer driver.
20pvr2fb.txt 36pvr2fb.txt
21 - info on the PowerVR 2 frame buffer driver 37 - info on the PowerVR 2 frame buffer driver.
38pxafb.txt
39 - info on the driver for the PXA25x LCD controller.
40s3fb.txt
41 - info on the fbdev driver for S3 Trio/Virge chips.
42sa1100fb.txt
43 - information about the driver for the SA-1100 LCD controller.
44sisfb.txt
45 - info on the framebuffer device driver for various SiS chips.
46sstfb.txt
47 - info on the frame buffer driver for 3dfx' Voodoo Graphics boards.
22tgafb.txt 48tgafb.txt
23 - info on the TGA (DECChip 21030) frame buffer driver 49 - info on the TGA (DECChip 21030) frame buffer driver
24vesafb.txt 50vesafb.txt
25 - info on the VESA frame buffer device 51 - info on the VESA frame buffer device
52vt8623fb.txt
53 - info on the fb driver for the graphics core in VIA VT8623 chipsets.
diff --git a/Documentation/fb/uvesafb.txt b/Documentation/fb/uvesafb.txt
new file mode 100644
index 000000000000..bcfc233a0080
--- /dev/null
+++ b/Documentation/fb/uvesafb.txt
@@ -0,0 +1,188 @@
1
2uvesafb - A Generic Driver for VBE2+ compliant video cards
3==========================================================
4
51. Requirements
6---------------
7
8uvesafb should work with any video card that has a Video BIOS compliant
9with the VBE 2.0 standard.
10
11Unlike other drivers, uvesafb makes use of a userspace helper called
12v86d. v86d is used to run the x86 Video BIOS code in a simulated and
13controlled environment. This allows uvesafb to function on arches other
14than x86. Check the v86d documentation for a list of currently supported
15arches.
16
17v86d source code can be downloaded from the following website:
18 http://dev.gentoo.org/~spock/projects/uvesafb
19
20Please refer to the v86d documentation for detailed configuration and
21installation instructions.
22
23Note that the v86d userspace helper has to be available at all times in
24order for uvesafb to work properly. If you want to use uvesafb during
25early boot, you will have to include v86d into an initramfs image, and
26either compile it into the kernel or use it as an initrd.
27
282. Caveats and limitations
29--------------------------
30
31uvesafb is a _generic_ driver which supports a wide variety of video
32cards, but which is ultimately limited by the Video BIOS interface.
33The most important limitations are:
34
35- Lack of any type of acceleration.
36- A strict and limited set of supported video modes. Often the native
37 or most optimal resolution/refresh rate for your setup will not work
38 with uvesafb, simply because the Video BIOS doesn't support the
39 video mode you want to use. This can be especially painful with
40 widescreen panels, where native video modes don't have the 4:3 aspect
41 ratio, which is what most BIOS-es are limited to.
42- Adjusting the refresh rate is only possible with a VBE 3.0 compliant
43 Video BIOS. Note that many nVidia Video BIOS-es claim to be VBE 3.0
44 compliant, while they simply ignore any refresh rate settings.
45
463. Configuration
47----------------
48
49uvesafb can be compiled either as a module, or directly into the kernel.
50In both cases it supports the same set of configuration options, which
51are either given on the kernel command line or as module parameters, e.g.:
52
53 video=uvesafb:1024x768-32,mtrr:3,ywrap (compiled into the kernel)
54
55 # modprobe uvesafb mode=1024x768-32 mtrr=3 scroll=ywrap (module)
56
57Accepted options:
58
59ypan Enable display panning using the VESA protected mode
60 interface. The visible screen is just a window of the
61 video memory, console scrolling is done by changing the
62 start of the window. Available on x86 only.
63
64ywrap Same as ypan, but assumes your gfx board can wrap-around
65 the video memory (i.e. starts reading from top if it
66 reaches the end of video memory). Faster than ypan.
67 Available on x86 only.
68
69redraw Scroll by redrawing the affected part of the screen, this
70 is the safe (and slow) default.
71
72(If you're using uvesafb as a module, the above three options are
73 used a parameter of the scroll option, e.g. scroll=ypan.)
74
75vgapal Use the standard VGA registers for palette changes.
76
77pmipal Use the protected mode interface for palette changes.
78 This is the default if the protected mode interface is
79 available. Available on x86 only.
80
81mtrr:n Setup memory type range registers for the framebuffer
82 where n:
83 0 - disabled (equivalent to nomtrr) (default)
84 1 - uncachable
85 2 - write-back
86 3 - write-combining
87 4 - write-through
88
89 If you see the following in dmesg, choose the type that matches
90 the old one. In this example, use "mtrr:2".
91...
92mtrr: type mismatch for e0000000,8000000 old: write-back new: write-combining
93...
94
95nomtrr Do not use memory type range registers.
96
97vremap:n
98 Remap 'n' MiB of video RAM. If 0 or not specified, remap memory
99 according to video mode.
100
101vtotal:n
102 If the video BIOS of your card incorrectly determines the total
103 amount of video RAM, use this option to override the BIOS (in MiB).
104
105<mode> The mode you want to set, in the standard modedb format. Refer to
106 modedb.txt for a detailed description. When uvesafb is compiled as
107 a module, the mode string should be provided as a value of the
108 'mode' option.
109
110vbemode:x
111 Force the use of VBE mode x. The mode will only be set if it's
112 found in the VBE-provided list of supported modes.
113 NOTE: The mode number 'x' should be specified in VESA mode number
114 notation, not the Linux kernel one (eg. 257 instead of 769).
115 HINT: If you use this option because normal <mode> parameter does
116 not work for you and you use a X server, you'll probably want to
117 set the 'nocrtc' option to ensure that the video mode is properly
118 restored after console <-> X switches.
119
120nocrtc Do not use CRTC timings while setting the video mode. This option
121 has any effect only if the Video BIOS is VBE 3.0 compliant. Use it
122 if you have problems with modes set the standard way. Note that
123 using this option implies that any refresh rate adjustments will
124 be ignored and the refresh rate will stay at your BIOS default (60 Hz).
125
126noedid Do not try to fetch and use EDID-provided modes.
127
128noblank Disable hardware blanking.
129
130v86d:path
131 Set path to the v86d executable. This option is only available as
132 a module parameter, and not as a part of the video= string. If you
133 need to use it and have uvesafb built into the kernel, use
134 uvesafb.v86d="path".
135
136Additionally, the following parameters may be provided. They all override the
137EDID-provided values and BIOS defaults. Refer to your monitor's specs to get
138the correct values for maxhf, maxvf and maxclk for your hardware.
139
140maxhf:n Maximum horizontal frequency (in kHz).
141maxvf:n Maximum vertical frequency (in Hz).
142maxclk:n Maximum pixel clock (in MHz).
143
1444. The sysfs interface
145----------------------
146
147uvesafb provides several sysfs nodes for configurable parameters and
148additional information.
149
150Driver attributes:
151
152/sys/bus/platform/drivers/uvesafb
153 - v86d (default: /sbin/v86d)
154 Path to the v86d executable. v86d is started by uvesafb
155 if an instance of the daemon isn't already running.
156
157Device attributes:
158
159/sys/bus/platform/drivers/uvesafb/uvesafb.0
160 - nocrtc
161 Use the default refresh rate (60 Hz) if set to 1.
162
163 - oem_product_name
164 - oem_product_rev
165 - oem_string
166 - oem_vendor
167 Information about the card and its maker.
168
169 - vbe_modes
170 A list of video modes supported by the Video BIOS along with their
171 VBE mode numbers in hex.
172
173 - vbe_version
174 A BCD value indicating the implemented VBE standard.
175
1765. Miscellaneous
177----------------
178
179Uvesafb will set a video mode with the default refresh rate and timings
180from the Video BIOS if you set pixclock to 0 in fb_var_screeninfo.
181
182
183--
184 Michal Januszewski <spock@gentoo.org>
185 Last updated: 2007-06-16
186
187 Documentation of the uvesafb options is loosely based on vesafb.txt.
188
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking
index f0f825808ca4..fe26cc978523 100644
--- a/Documentation/filesystems/Locking
+++ b/Documentation/filesystems/Locking
@@ -178,15 +178,18 @@ prototypes:
178locking rules: 178locking rules:
179 All except set_page_dirty may block 179 All except set_page_dirty may block
180 180
181 BKL PageLocked(page) 181 BKL PageLocked(page) i_sem
182writepage: no yes, unlocks (see below) 182writepage: no yes, unlocks (see below)
183readpage: no yes, unlocks 183readpage: no yes, unlocks
184sync_page: no maybe 184sync_page: no maybe
185writepages: no 185writepages: no
186set_page_dirty no no 186set_page_dirty no no
187readpages: no 187readpages: no
188prepare_write: no yes 188prepare_write: no yes yes
189commit_write: no yes 189commit_write: no yes yes
190write_begin: no locks the page yes
191write_end: no yes, unlocks yes
192perform_write: no n/a yes
190bmap: yes 193bmap: yes
191invalidatepage: no yes 194invalidatepage: no yes
192releasepage: no yes 195releasepage: no yes
diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt
index 045f3e055a28..6f8e16e3d6c0 100644
--- a/Documentation/filesystems/vfs.txt
+++ b/Documentation/filesystems/vfs.txt
@@ -537,6 +537,12 @@ struct address_space_operations {
537 struct list_head *pages, unsigned nr_pages); 537 struct list_head *pages, unsigned nr_pages);
538 int (*prepare_write)(struct file *, struct page *, unsigned, unsigned); 538 int (*prepare_write)(struct file *, struct page *, unsigned, unsigned);
539 int (*commit_write)(struct file *, struct page *, unsigned, unsigned); 539 int (*commit_write)(struct file *, struct page *, unsigned, unsigned);
540 int (*write_begin)(struct file *, struct address_space *mapping,
541 loff_t pos, unsigned len, unsigned flags,
542 struct page **pagep, void **fsdata);
543 int (*write_end)(struct file *, struct address_space *mapping,
544 loff_t pos, unsigned len, unsigned copied,
545 struct page *page, void *fsdata);
540 sector_t (*bmap)(struct address_space *, sector_t); 546 sector_t (*bmap)(struct address_space *, sector_t);
541 int (*invalidatepage) (struct page *, unsigned long); 547 int (*invalidatepage) (struct page *, unsigned long);
542 int (*releasepage) (struct page *, int); 548 int (*releasepage) (struct page *, int);
@@ -615,11 +621,7 @@ struct address_space_operations {
615 any basic-blocks on storage, then those blocks should be 621 any basic-blocks on storage, then those blocks should be
616 pre-read (if they haven't been read already) so that the 622 pre-read (if they haven't been read already) so that the
617 updated blocks can be written out properly. 623 updated blocks can be written out properly.
618 The page will be locked. If prepare_write wants to unlock the 624 The page will be locked.
619 page it, like readpage, may do so and return
620 AOP_TRUNCATED_PAGE.
621 In this case the prepare_write will be retried one the lock is
622 regained.
623 625
624 Note: the page _must not_ be marked uptodate in this function 626 Note: the page _must not_ be marked uptodate in this function
625 (or anywhere else) unless it actually is uptodate right now. As 627 (or anywhere else) unless it actually is uptodate right now. As
@@ -633,6 +635,45 @@ struct address_space_operations {
633 operations. It should avoid returning an error if possible - 635 operations. It should avoid returning an error if possible -
634 errors should have been handled by prepare_write. 636 errors should have been handled by prepare_write.
635 637
638 write_begin: This is intended as a replacement for prepare_write. The
639 key differences being that:
640 - it returns a locked page (in *pagep) rather than being
641 given a pre locked page;
642 - it must be able to cope with short writes (where the
643 length passed to write_begin is greater than the number
644 of bytes copied into the page).
645
646 Called by the generic buffered write code to ask the filesystem to
647 prepare to write len bytes at the given offset in the file. The
648 address_space should check that the write will be able to complete,
649 by allocating space if necessary and doing any other internal
650 housekeeping. If the write will update parts of any basic-blocks on
651 storage, then those blocks should be pre-read (if they haven't been
652 read already) so that the updated blocks can be written out properly.
653
654 The filesystem must return the locked pagecache page for the specified
655 offset, in *pagep, for the caller to write into.
656
657 flags is a field for AOP_FLAG_xxx flags, described in
658 include/linux/fs.h.
659
660 A void * may be returned in fsdata, which then gets passed into
661 write_end.
662
663 Returns 0 on success; < 0 on failure (which is the error code), in
664 which case write_end is not called.
665
666 write_end: After a successful write_begin, and data copy, write_end must
667 be called. len is the original len passed to write_begin, and copied
668 is the amount that was able to be copied (copied == len is always true
669 if write_begin was called with the AOP_FLAG_UNINTERRUPTIBLE flag).
670
671 The filesystem must take care of unlocking the page and releasing it
672 refcount, and updating i_size.
673
674 Returns < 0 on failure, otherwise the number of bytes (<= 'copied')
675 that were able to be copied into pagecache.
676
636 bmap: called by the VFS to map a logical block offset within object to 677 bmap: called by the VFS to map a logical block offset within object to
637 physical block number. This method is used by the FIBMAP 678 physical block number. This method is used by the FIBMAP
638 ioctl and for working with swap-files. To be able to swap to 679 ioctl and for working with swap-files. To be able to swap to
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt
index 085e4a095eaa..eb247997f679 100644
--- a/Documentation/kernel-parameters.txt
+++ b/Documentation/kernel-parameters.txt
@@ -349,6 +349,11 @@ and is between 256 and 4096 characters. It is defined in the file
349 blkmtd_bs= 349 blkmtd_bs=
350 blkmtd_count= 350 blkmtd_count=
351 351
352 boot_delay= Milliseconds to delay each printk during boot.
353 Values larger than 10 seconds (10000) are changed to
354 no delay (0).
355 Format: integer
356
352 bttv.card= [HW,V4L] bttv (bt848 + bt878 based grabber cards) 357 bttv.card= [HW,V4L] bttv (bt848 + bt878 based grabber cards)
353 bttv.radio= Most important insmod options are available as 358 bttv.radio= Most important insmod options are available as
354 kernel args too. 359 kernel args too.
@@ -906,6 +911,11 @@ and is between 256 and 4096 characters. It is defined in the file
906 n must be a power of two. The default size 911 n must be a power of two. The default size
907 is set in the kernel config file. 912 is set in the kernel config file.
908 913
914 logo.nologo [FB] Disables display of the built-in Linux logo.
915 This may be used to provide more screen space for
916 kernel log messages and is useful when debugging
917 kernel boot problems.
918
909 lp=0 [LP] Specify parallel ports to use, e.g, 919 lp=0 [LP] Specify parallel ports to use, e.g,
910 lp=port[,port...] lp=none,parport0 (lp0 not configured, lp1 uses 920 lp=port[,port...] lp=none,parport0 (lp0 not configured, lp1 uses
911 lp=reset first parallel port). 'lp=0' disables the 921 lp=reset first parallel port). 'lp=0' disables the
diff --git a/Documentation/spi/spi-summary b/Documentation/spi/spi-summary
index 76ea6c837be5..8861e47e5a2d 100644
--- a/Documentation/spi/spi-summary
+++ b/Documentation/spi/spi-summary
@@ -156,21 +156,29 @@ using the driver model to connect controller and protocol drivers using
156device tables provided by board specific initialization code. SPI 156device tables provided by board specific initialization code. SPI
157shows up in sysfs in several locations: 157shows up in sysfs in several locations:
158 158
159 /sys/devices/.../CTLR ... physical node for a given SPI controller
160
159 /sys/devices/.../CTLR/spiB.C ... spi_device on bus "B", 161 /sys/devices/.../CTLR/spiB.C ... spi_device on bus "B",
160 chipselect C, accessed through CTLR. 162 chipselect C, accessed through CTLR.
161 163
164 /sys/bus/spi/devices/spiB.C ... symlink to that physical
165 .../CTLR/spiB.C device
166
162 /sys/devices/.../CTLR/spiB.C/modalias ... identifies the driver 167 /sys/devices/.../CTLR/spiB.C/modalias ... identifies the driver
163 that should be used with this device (for hotplug/coldplug) 168 that should be used with this device (for hotplug/coldplug)
164 169
165 /sys/bus/spi/devices/spiB.C ... symlink to the physical
166 spiB.C device
167
168 /sys/bus/spi/drivers/D ... driver for one or more spi*.* devices 170 /sys/bus/spi/drivers/D ... driver for one or more spi*.* devices
169 171
170 /sys/class/spi_master/spiB ... class device for the controller 172 /sys/class/spi_master/spiB ... symlink (or actual device node) to
171 managing bus "B". All the spiB.* devices share the same 173 a logical node which could hold class related state for the
174 controller managing bus "B". All spiB.* devices share one
172 physical SPI bus segment, with SCLK, MOSI, and MISO. 175 physical SPI bus segment, with SCLK, MOSI, and MISO.
173 176
177Note that the actual location of the controller's class state depends
178on whether you enabled CONFIG_SYSFS_DEPRECATED or not. At this time,
179the only class-specific state is the bus number ("B" in "spiB"), so
180those /sys/class entries are only useful to quickly identify busses.
181
174 182
175How does board-specific init code declare SPI devices? 183How does board-specific init code declare SPI devices?
176------------------------------------------------------ 184------------------------------------------------------
@@ -337,7 +345,8 @@ SPI protocol drivers somewhat resemble platform device drivers:
337 345
338The driver core will autmatically attempt to bind this driver to any SPI 346The driver core will autmatically attempt to bind this driver to any SPI
339device whose board_info gave a modalias of "CHIP". Your probe() code 347device whose board_info gave a modalias of "CHIP". Your probe() code
340might look like this unless you're creating a class_device: 348might look like this unless you're creating a device which is managing
349a bus (appearing under /sys/class/spi_master).
341 350
342 static int __devinit CHIP_probe(struct spi_device *spi) 351 static int __devinit CHIP_probe(struct spi_device *spi)
343 { 352 {
@@ -442,7 +451,7 @@ An SPI controller will probably be registered on the platform_bus; write
442a driver to bind to the device, whichever bus is involved. 451a driver to bind to the device, whichever bus is involved.
443 452
444The main task of this type of driver is to provide an "spi_master". 453The main task of this type of driver is to provide an "spi_master".
445Use spi_alloc_master() to allocate the master, and class_get_devdata() 454Use spi_alloc_master() to allocate the master, and spi_master_get_devdata()
446to get the driver-private data allocated for that device. 455to get the driver-private data allocated for that device.
447 456
448 struct spi_master *master; 457 struct spi_master *master;
@@ -452,7 +461,7 @@ to get the driver-private data allocated for that device.
452 if (!master) 461 if (!master)
453 return -ENODEV; 462 return -ENODEV;
454 463
455 c = class_get_devdata(&master->cdev); 464 c = spi_master_get_devdata(master);
456 465
457The driver will initialize the fields of that spi_master, including the 466The driver will initialize the fields of that spi_master, including the
458bus number (maybe the same as the platform device ID) and three methods 467bus number (maybe the same as the platform device ID) and three methods
diff --git a/Documentation/spi/spidev_test.c b/Documentation/spi/spidev_test.c
index 218e86215297..cf0e3ce0d526 100644
--- a/Documentation/spi/spidev_test.c
+++ b/Documentation/spi/spidev_test.c
@@ -29,7 +29,7 @@ static void pabort(const char *s)
29 abort(); 29 abort();
30} 30}
31 31
32static char *device = "/dev/spidev1.1"; 32static const char *device = "/dev/spidev1.1";
33static uint8_t mode; 33static uint8_t mode;
34static uint8_t bits = 8; 34static uint8_t bits = 8;
35static uint32_t speed = 500000; 35static uint32_t speed = 500000;
@@ -69,7 +69,7 @@ static void transfer(int fd)
69 puts(""); 69 puts("");
70} 70}
71 71
72void print_usage(char *prog) 72void print_usage(const char *prog)
73{ 73{
74 printf("Usage: %s [-DsbdlHOLC3]\n", prog); 74 printf("Usage: %s [-DsbdlHOLC3]\n", prog);
75 puts(" -D --device device to use (default /dev/spidev1.1)\n" 75 puts(" -D --device device to use (default /dev/spidev1.1)\n"
@@ -88,7 +88,7 @@ void print_usage(char *prog)
88void parse_opts(int argc, char *argv[]) 88void parse_opts(int argc, char *argv[])
89{ 89{
90 while (1) { 90 while (1) {
91 static struct option lopts[] = { 91 static const struct option lopts[] = {
92 { "device", 1, 0, 'D' }, 92 { "device", 1, 0, 'D' },
93 { "speed", 1, 0, 's' }, 93 { "speed", 1, 0, 's' },
94 { "delay", 1, 0, 'd' }, 94 { "delay", 1, 0, 'd' },
diff --git a/Documentation/vm/numa_memory_policy.txt b/Documentation/vm/numa_memory_policy.txt
index 8242f52d0f22..dd4986497996 100644
--- a/Documentation/vm/numa_memory_policy.txt
+++ b/Documentation/vm/numa_memory_policy.txt
@@ -302,31 +302,30 @@ MEMORY POLICIES AND CPUSETS
302 302
303Memory policies work within cpusets as described above. For memory policies 303Memory policies work within cpusets as described above. For memory policies
304that require a node or set of nodes, the nodes are restricted to the set of 304that require a node or set of nodes, the nodes are restricted to the set of
305nodes whose memories are allowed by the cpuset constraints. If the 305nodes whose memories are allowed by the cpuset constraints. If the nodemask
306intersection of the set of nodes specified for the policy and the set of nodes 306specified for the policy contains nodes that are not allowed by the cpuset, or
307allowed by the cpuset is the empty set, the policy is considered invalid and 307the intersection of the set of nodes specified for the policy and the set of
308cannot be installed. 308nodes with memory is the empty set, the policy is considered invalid
309and cannot be installed.
309 310
310The interaction of memory policies and cpusets can be problematic for a 311The interaction of memory policies and cpusets can be problematic for a
311couple of reasons: 312couple of reasons:
312 313
3131) the memory policy APIs take physical node id's as arguments. However, the 3141) the memory policy APIs take physical node id's as arguments. As mentioned
314 memory policy APIs do not provide a way to determine what nodes are valid 315 above, it is illegal to specify nodes that are not allowed in the cpuset.
315 in the context where the application is running. An application MAY consult 316 The application must query the allowed nodes using the get_mempolicy()
316 the cpuset file system [directly or via an out of tree, and not generally 317 API with the MPOL_F_MEMS_ALLOWED flag to determine the allowed nodes and
317 available, libcpuset API] to obtain this information, but then the 318 restrict itself to those nodes. However, the resources available to a
318 application must be aware that it is running in a cpuset and use what are 319 cpuset can be changed by the system administrator, or a workload manager
319 intended primarily as administrative APIs. 320 application, at any time. So, a task may still get errors attempting to
320 321 specify policy nodes, and must query the allowed memories again.
321 However, as long as the policy specifies at least one node that is valid
322 in the controlling cpuset, the policy can be used.
323 322
3242) when tasks in two cpusets share access to a memory region, such as shared 3232) when tasks in two cpusets share access to a memory region, such as shared
325 memory segments created by shmget() of mmap() with the MAP_ANONYMOUS and 324 memory segments created by shmget() of mmap() with the MAP_ANONYMOUS and
326 MAP_SHARED flags, and any of the tasks install shared policy on the region, 325 MAP_SHARED flags, and any of the tasks install shared policy on the region,
327 only nodes whose memories are allowed in both cpusets may be used in the 326 only nodes whose memories are allowed in both cpusets may be used in the
328 policies. Again, obtaining this information requires "stepping outside" 327 policies. Obtaining this information requires "stepping outside" the
329 the memory policy APIs, as well as knowing in what cpusets other task might 328 memory policy APIs to use the cpuset information and requires that one
330 be attaching to the shared region, to use the cpuset information. 329 know in what cpusets other task might be attaching to the shared region.
331 Furthermore, if the cpusets' allowed memory sets are disjoint, "local" 330 Furthermore, if the cpusets' allowed memory sets are disjoint, "local"
332 allocation is the only valid policy. 331 allocation is the only valid policy.
diff --git a/Documentation/x86_64/mm.txt b/Documentation/x86_64/mm.txt
index f42798ed1c54..b89b6d2bebfa 100644
--- a/Documentation/x86_64/mm.txt
+++ b/Documentation/x86_64/mm.txt
@@ -9,6 +9,7 @@ ffff800000000000 - ffff80ffffffffff (=40 bits) guard hole
9ffff810000000000 - ffffc0ffffffffff (=46 bits) direct mapping of all phys. memory 9ffff810000000000 - ffffc0ffffffffff (=46 bits) direct mapping of all phys. memory
10ffffc10000000000 - ffffc1ffffffffff (=40 bits) hole 10ffffc10000000000 - ffffc1ffffffffff (=40 bits) hole
11ffffc20000000000 - ffffe1ffffffffff (=45 bits) vmalloc/ioremap space 11ffffc20000000000 - ffffe1ffffffffff (=45 bits) vmalloc/ioremap space
12ffffe20000000000 - ffffe2ffffffffff (=40 bits) virtual memory map (1TB)
12... unused hole ... 13... unused hole ...
13ffffffff80000000 - ffffffff82800000 (=40 MB) kernel text mapping, from phys 0 14ffffffff80000000 - ffffffff82800000 (=40 MB) kernel text mapping, from phys 0
14... unused hole ... 15... unused hole ...