diff options
Diffstat (limited to 'Documentation')
-rw-r--r-- | Documentation/cachetlb.txt | 6 | ||||
-rw-r--r-- | Documentation/cpusets.txt | 24 | ||||
-rw-r--r-- | Documentation/fb/00-INDEX | 46 | ||||
-rw-r--r-- | Documentation/fb/uvesafb.txt | 188 | ||||
-rw-r--r-- | Documentation/filesystems/Locking | 9 | ||||
-rw-r--r-- | Documentation/filesystems/vfs.txt | 51 | ||||
-rw-r--r-- | Documentation/kernel-parameters.txt | 10 | ||||
-rw-r--r-- | Documentation/spi/spi-summary | 25 | ||||
-rw-r--r-- | Documentation/spi/spidev_test.c | 6 | ||||
-rw-r--r-- | Documentation/vm/numa_memory_policy.txt | 33 | ||||
-rw-r--r-- | Documentation/x86_64/mm.txt | 1 |
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 | ||
136 | 8) 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 | |||
142 | Next, we have the cache flushing interfaces. In general, when Linux | 136 | Next, we have the cache flushing interfaces. In general, when Linux |
143 | is changing an existing virtual-->physical mapping to a new value, | 137 | is changing an existing virtual-->physical mapping to a new value, |
144 | the sequence will be in one of the following forms: | 138 | the 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 | ||
37 | Cpusets provide a mechanism for assigning a set of CPUs and Memory | 37 | Cpusets provide a mechanism for assigning a set of CPUs and Memory |
38 | Nodes to a set of tasks. | 38 | Nodes to a set of tasks. In this document "Memory Node" refers to |
39 | an on-line node that contains memory. | ||
39 | 40 | ||
40 | Cpusets constrain the CPU and Memory placement of tasks to only | 41 | Cpusets constrain the CPU and Memory placement of tasks to only |
41 | the resources within a tasks current cpuset. They form a nested | 42 | the 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 | ||
93 | These subsets, or "soft partitions" must be able to be dynamically | 91 | These subsets, or "soft partitions" must be able to be dynamically |
94 | adjusted, as the job mix changes, without impacting other concurrently | 92 | adjusted, 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 | ||
138 | The implementation of cpusets requires a few, simple hooks | 134 | The 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. | |||
220 | The cpus and mems files in the root (top_cpuset) cpuset are | 213 | The cpus and mems files in the root (top_cpuset) cpuset are |
221 | read-only. The cpus file automatically tracks the value of | 214 | read-only. The cpus file automatically tracks the value of |
222 | cpu_online_map using a CPU hotplug notifier, and the mems file | 215 | cpu_online_map using a CPU hotplug notifier, and the mems file |
223 | automatically tracks the value of node_online_map using the | 216 | automatically tracks the value of node_states[N_MEMORY]--i.e., |
224 | cpuset_track_online_nodes() hook. | 217 | nodes with memory--using the cpuset_track_online_nodes() hook. |
225 | 218 | ||
226 | 219 | ||
227 | 1.4 What are exclusive cpusets ? | 220 | 1.4 What are exclusive cpusets ? |
@@ -231,15 +224,6 @@ If a cpuset is cpu or mem exclusive, no other cpuset, other than | |||
231 | a direct ancestor or descendent, may share any of the same CPUs or | 224 | a direct ancestor or descendent, may share any of the same CPUs or |
232 | Memory Nodes. | 225 | Memory Nodes. |
233 | 226 | ||
234 | A cpuset that is cpu_exclusive has a scheduler (sched) domain | ||
235 | associated with it. The sched domain consists of all CPUs in the | ||
236 | current cpuset that are not part of any exclusive child cpusets. | ||
237 | This ensures that the scheduler load balancing code only balances | ||
238 | against the CPUs that are in the sched domain as defined above and | ||
239 | not all of the CPUs in the system. This removes any overhead due to | ||
240 | load balancing code trying to pull tasks outside of the cpu_exclusive | ||
241 | cpuset only to be prevented by the tasks' cpus_allowed mask. | ||
242 | |||
243 | A cpuset that is mem_exclusive restricts kernel allocations for | 227 | A cpuset that is mem_exclusive restricts kernel allocations for |
244 | page, buffer and other data commonly shared by the kernel across | 228 | page, buffer and other data commonly shared by the kernel across |
245 | multiple users. All cpusets, whether mem_exclusive or not, restrict | 229 | multiple 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 | ||
6 | 00-INDEX | 6 | 00-INDEX |
7 | - this file | 7 | - this file |
8 | arkfb.txt | ||
9 | - info on the fbdev driver for ARK Logic chips. | ||
10 | aty128fb.txt | ||
11 | - info on the ATI Rage128 frame buffer driver. | ||
12 | cirrusfb.txt | ||
13 | - info on the driver for Cirrus Logic chipsets. | ||
14 | cyblafb/ | ||
15 | - directory with documentation files related to the cyblafb driver. | ||
16 | deferred_io.txt | ||
17 | - an introduction to deferred IO. | ||
18 | fbcon.txt | ||
19 | - intro to and usage guide for the framebuffer console (fbcon). | ||
8 | framebuffer.txt | 20 | framebuffer.txt |
9 | - introduction to frame buffer devices | 21 | - introduction to frame buffer devices. |
22 | imacfb.txt | ||
23 | - info on the generic EFI platform driver for Intel based Macs. | ||
24 | intel810.txt | ||
25 | - documentation for the Intel 810/815 framebuffer driver. | ||
26 | intelfb.txt | ||
27 | - docs for Intel 830M/845G/852GM/855GM/865G/915G/945G fb driver. | ||
10 | internals.txt | 28 | internals.txt |
11 | - quick overview of frame buffer device internals | 29 | - quick overview of frame buffer device internals. |
30 | matroxfb.txt | ||
31 | - info on the Matrox framebuffer driver for Alpha, Intel and PPC. | ||
12 | modedb.txt | 32 | modedb.txt |
13 | - info on the video mode database | 33 | - info on the video mode database. |
14 | aty128fb.txt | ||
15 | - info on the ATI Rage128 frame buffer driver | ||
16 | clgenfb.txt | ||
17 | - info on the Cirrus Logic frame buffer driver | ||
18 | matroxfb.txt | 34 | matroxfb.txt |
19 | - info on the Matrox frame buffer driver | 35 | - info on the Matrox frame buffer driver. |
20 | pvr2fb.txt | 36 | pvr2fb.txt |
21 | - info on the PowerVR 2 frame buffer driver | 37 | - info on the PowerVR 2 frame buffer driver. |
38 | pxafb.txt | ||
39 | - info on the driver for the PXA25x LCD controller. | ||
40 | s3fb.txt | ||
41 | - info on the fbdev driver for S3 Trio/Virge chips. | ||
42 | sa1100fb.txt | ||
43 | - information about the driver for the SA-1100 LCD controller. | ||
44 | sisfb.txt | ||
45 | - info on the framebuffer device driver for various SiS chips. | ||
46 | sstfb.txt | ||
47 | - info on the frame buffer driver for 3dfx' Voodoo Graphics boards. | ||
22 | tgafb.txt | 48 | tgafb.txt |
23 | - info on the TGA (DECChip 21030) frame buffer driver | 49 | - info on the TGA (DECChip 21030) frame buffer driver |
24 | vesafb.txt | 50 | vesafb.txt |
25 | - info on the VESA frame buffer device | 51 | - info on the VESA frame buffer device |
52 | vt8623fb.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 | |||
2 | uvesafb - A Generic Driver for VBE2+ compliant video cards | ||
3 | ========================================================== | ||
4 | |||
5 | 1. Requirements | ||
6 | --------------- | ||
7 | |||
8 | uvesafb should work with any video card that has a Video BIOS compliant | ||
9 | with the VBE 2.0 standard. | ||
10 | |||
11 | Unlike other drivers, uvesafb makes use of a userspace helper called | ||
12 | v86d. v86d is used to run the x86 Video BIOS code in a simulated and | ||
13 | controlled environment. This allows uvesafb to function on arches other | ||
14 | than x86. Check the v86d documentation for a list of currently supported | ||
15 | arches. | ||
16 | |||
17 | v86d source code can be downloaded from the following website: | ||
18 | http://dev.gentoo.org/~spock/projects/uvesafb | ||
19 | |||
20 | Please refer to the v86d documentation for detailed configuration and | ||
21 | installation instructions. | ||
22 | |||
23 | Note that the v86d userspace helper has to be available at all times in | ||
24 | order for uvesafb to work properly. If you want to use uvesafb during | ||
25 | early boot, you will have to include v86d into an initramfs image, and | ||
26 | either compile it into the kernel or use it as an initrd. | ||
27 | |||
28 | 2. Caveats and limitations | ||
29 | -------------------------- | ||
30 | |||
31 | uvesafb is a _generic_ driver which supports a wide variety of video | ||
32 | cards, but which is ultimately limited by the Video BIOS interface. | ||
33 | The 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 | |||
46 | 3. Configuration | ||
47 | ---------------- | ||
48 | |||
49 | uvesafb can be compiled either as a module, or directly into the kernel. | ||
50 | In both cases it supports the same set of configuration options, which | ||
51 | are 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 | |||
57 | Accepted options: | ||
58 | |||
59 | ypan 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 | |||
64 | ywrap 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 | |||
69 | redraw 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 | |||
75 | vgapal Use the standard VGA registers for palette changes. | ||
76 | |||
77 | pmipal 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 | |||
81 | mtrr: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 | ... | ||
92 | mtrr: type mismatch for e0000000,8000000 old: write-back new: write-combining | ||
93 | ... | ||
94 | |||
95 | nomtrr Do not use memory type range registers. | ||
96 | |||
97 | vremap:n | ||
98 | Remap 'n' MiB of video RAM. If 0 or not specified, remap memory | ||
99 | according to video mode. | ||
100 | |||
101 | vtotal: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 | |||
110 | vbemode: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 | |||
120 | nocrtc 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 | |||
126 | noedid Do not try to fetch and use EDID-provided modes. | ||
127 | |||
128 | noblank Disable hardware blanking. | ||
129 | |||
130 | v86d: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 | |||
136 | Additionally, the following parameters may be provided. They all override the | ||
137 | EDID-provided values and BIOS defaults. Refer to your monitor's specs to get | ||
138 | the correct values for maxhf, maxvf and maxclk for your hardware. | ||
139 | |||
140 | maxhf:n Maximum horizontal frequency (in kHz). | ||
141 | maxvf:n Maximum vertical frequency (in Hz). | ||
142 | maxclk:n Maximum pixel clock (in MHz). | ||
143 | |||
144 | 4. The sysfs interface | ||
145 | ---------------------- | ||
146 | |||
147 | uvesafb provides several sysfs nodes for configurable parameters and | ||
148 | additional information. | ||
149 | |||
150 | Driver 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 | |||
157 | Device 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 | |||
176 | 5. Miscellaneous | ||
177 | ---------------- | ||
178 | |||
179 | Uvesafb will set a video mode with the default refresh rate and timings | ||
180 | from 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: | |||
178 | locking rules: | 178 | locking 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 |
182 | writepage: no yes, unlocks (see below) | 182 | writepage: no yes, unlocks (see below) |
183 | readpage: no yes, unlocks | 183 | readpage: no yes, unlocks |
184 | sync_page: no maybe | 184 | sync_page: no maybe |
185 | writepages: no | 185 | writepages: no |
186 | set_page_dirty no no | 186 | set_page_dirty no no |
187 | readpages: no | 187 | readpages: no |
188 | prepare_write: no yes | 188 | prepare_write: no yes yes |
189 | commit_write: no yes | 189 | commit_write: no yes yes |
190 | write_begin: no locks the page yes | ||
191 | write_end: no yes, unlocks yes | ||
192 | perform_write: no n/a yes | ||
190 | bmap: yes | 193 | bmap: yes |
191 | invalidatepage: no yes | 194 | invalidatepage: no yes |
192 | releasepage: no yes | 195 | releasepage: 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 | |||
156 | device tables provided by board specific initialization code. SPI | 156 | device tables provided by board specific initialization code. SPI |
157 | shows up in sysfs in several locations: | 157 | shows 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 | ||
177 | Note that the actual location of the controller's class state depends | ||
178 | on whether you enabled CONFIG_SYSFS_DEPRECATED or not. At this time, | ||
179 | the only class-specific state is the bus number ("B" in "spiB"), so | ||
180 | those /sys/class entries are only useful to quickly identify busses. | ||
181 | |||
174 | 182 | ||
175 | How does board-specific init code declare SPI devices? | 183 | How does board-specific init code declare SPI devices? |
176 | ------------------------------------------------------ | 184 | ------------------------------------------------------ |
@@ -337,7 +345,8 @@ SPI protocol drivers somewhat resemble platform device drivers: | |||
337 | 345 | ||
338 | The driver core will autmatically attempt to bind this driver to any SPI | 346 | The driver core will autmatically attempt to bind this driver to any SPI |
339 | device whose board_info gave a modalias of "CHIP". Your probe() code | 347 | device whose board_info gave a modalias of "CHIP". Your probe() code |
340 | might look like this unless you're creating a class_device: | 348 | might look like this unless you're creating a device which is managing |
349 | a 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 | |||
442 | a driver to bind to the device, whichever bus is involved. | 451 | a driver to bind to the device, whichever bus is involved. |
443 | 452 | ||
444 | The main task of this type of driver is to provide an "spi_master". | 453 | The main task of this type of driver is to provide an "spi_master". |
445 | Use spi_alloc_master() to allocate the master, and class_get_devdata() | 454 | Use spi_alloc_master() to allocate the master, and spi_master_get_devdata() |
446 | to get the driver-private data allocated for that device. | 455 | to 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 | ||
457 | The driver will initialize the fields of that spi_master, including the | 466 | The driver will initialize the fields of that spi_master, including the |
458 | bus number (maybe the same as the platform device ID) and three methods | 467 | bus 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 | ||
32 | static char *device = "/dev/spidev1.1"; | 32 | static const char *device = "/dev/spidev1.1"; |
33 | static uint8_t mode; | 33 | static uint8_t mode; |
34 | static uint8_t bits = 8; | 34 | static uint8_t bits = 8; |
35 | static uint32_t speed = 500000; | 35 | static uint32_t speed = 500000; |
@@ -69,7 +69,7 @@ static void transfer(int fd) | |||
69 | puts(""); | 69 | puts(""); |
70 | } | 70 | } |
71 | 71 | ||
72 | void print_usage(char *prog) | 72 | void 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) | |||
88 | void parse_opts(int argc, char *argv[]) | 88 | void 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 | ||
303 | Memory policies work within cpusets as described above. For memory policies | 303 | Memory policies work within cpusets as described above. For memory policies |
304 | that require a node or set of nodes, the nodes are restricted to the set of | 304 | that require a node or set of nodes, the nodes are restricted to the set of |
305 | nodes whose memories are allowed by the cpuset constraints. If the | 305 | nodes whose memories are allowed by the cpuset constraints. If the nodemask |
306 | intersection of the set of nodes specified for the policy and the set of nodes | 306 | specified for the policy contains nodes that are not allowed by the cpuset, or |
307 | allowed by the cpuset is the empty set, the policy is considered invalid and | 307 | the intersection of the set of nodes specified for the policy and the set of |
308 | cannot be installed. | 308 | nodes with memory is the empty set, the policy is considered invalid |
309 | and cannot be installed. | ||
309 | 310 | ||
310 | The interaction of memory policies and cpusets can be problematic for a | 311 | The interaction of memory policies and cpusets can be problematic for a |
311 | couple of reasons: | 312 | couple of reasons: |
312 | 313 | ||
313 | 1) the memory policy APIs take physical node id's as arguments. However, the | 314 | 1) 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 | ||
324 | 2) when tasks in two cpusets share access to a memory region, such as shared | 323 | 2) 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 | |||
9 | ffff810000000000 - ffffc0ffffffffff (=46 bits) direct mapping of all phys. memory | 9 | ffff810000000000 - ffffc0ffffffffff (=46 bits) direct mapping of all phys. memory |
10 | ffffc10000000000 - ffffc1ffffffffff (=40 bits) hole | 10 | ffffc10000000000 - ffffc1ffffffffff (=40 bits) hole |
11 | ffffc20000000000 - ffffe1ffffffffff (=45 bits) vmalloc/ioremap space | 11 | ffffc20000000000 - ffffe1ffffffffff (=45 bits) vmalloc/ioremap space |
12 | ffffe20000000000 - ffffe2ffffffffff (=40 bits) virtual memory map (1TB) | ||
12 | ... unused hole ... | 13 | ... unused hole ... |
13 | ffffffff80000000 - ffffffff82800000 (=40 MB) kernel text mapping, from phys 0 | 14 | ffffffff80000000 - ffffffff82800000 (=40 MB) kernel text mapping, from phys 0 |
14 | ... unused hole ... | 15 | ... unused hole ... |