Commit 7c672abc authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'docs-5.4' of git://git.lwn.net/linux

Pull documentation updates from Jonathan Corbet:
 "It's a somewhat calmer cycle for docs this time, as the churn of the
  mass RST conversion is happily mostly behind us.

   - A new document on reproducible builds.

   - We finally got around to zapping the documentation for hardware
     support that was removed in 2004; one doesn't want to rush these
     things.

   - The usual assortment of fixes, typo corrections, etc"

* tag 'docs-5.4' of git://git.lwn.net/linux: (67 commits)
  Documentation: kbuild: Add document about reproducible builds
  docs: printk-formats: Stop encouraging use of unnecessary %h[xudi] and %hh[xudi]
  Documentation: Add "earlycon=sbi" to the admin guide
  doc:lock: remove reference to clever use of read-write lock
  devices.txt: improve entry for comedi (char major 98)
  docs: mtd: Update spi nor reference driver
  doc: arm64: fix grammar dtb placed in no attributes region
  Documentation: sysrq: don't recommend 'S' 'U' before 'B'
  mailmap: Update email address for Quentin Perret
  docs: ftrace: clarify when tracing is disabled by the trace file
  docs: process: fix broken link
  Documentation/arm/samsung-s3c24xx: Remove stray U+FEFF character to fix title
  Documentation/arm/sa1100/assabet: Fix 'make assabet_defconfig' command
  Documentation/arm/sa1100: Remove some obsolete documentation
  docs/zh_CN: update Chinese howto.rst for latexdocs making
  Documentation: virt: Fix broken reference to virt tree's index
  docs: Fix typo on pull requests guide
  kernel-doc: Allow anonymous enum
  Documentation: sphinx: Don't parse socket() as identifier reference
  Documentation: sphinx: Add missing comma to list of strings
  ...
parents 19023141 fe013f8b
...@@ -47,6 +47,8 @@ Boris Brezillon <bbrezillon@kernel.org> <b.brezillon.dev@gmail.com> ...@@ -47,6 +47,8 @@ Boris Brezillon <bbrezillon@kernel.org> <b.brezillon.dev@gmail.com>
Boris Brezillon <bbrezillon@kernel.org> <b.brezillon@overkiz.com> Boris Brezillon <bbrezillon@kernel.org> <b.brezillon@overkiz.com>
Brian Avery <b.avery@hp.com> Brian Avery <b.avery@hp.com>
Brian King <brking@us.ibm.com> Brian King <brking@us.ibm.com>
Chao Yu <chao@kernel.org> <chao2.yu@samsung.com>
Chao Yu <chao@kernel.org> <yuchao0@huawei.com>
Christoph Hellwig <hch@lst.de> Christoph Hellwig <hch@lst.de>
Christophe Ricard <christophe.ricard@gmail.com> Christophe Ricard <christophe.ricard@gmail.com>
Corey Minyard <minyard@acm.org> Corey Minyard <minyard@acm.org>
...@@ -80,6 +82,8 @@ Frank Rowand <frowand.list@gmail.com> <frowand@mvista.com> ...@@ -80,6 +82,8 @@ Frank Rowand <frowand.list@gmail.com> <frowand@mvista.com>
Frank Rowand <frowand.list@gmail.com> <frank.rowand@am.sony.com> Frank Rowand <frowand.list@gmail.com> <frank.rowand@am.sony.com>
Frank Rowand <frowand.list@gmail.com> <frank.rowand@sonymobile.com> Frank Rowand <frowand.list@gmail.com> <frank.rowand@sonymobile.com>
Frank Zago <fzago@systemfabricworks.com> Frank Zago <fzago@systemfabricworks.com>
Gao Xiang <xiang@kernel.org> <gaoxiang25@huawei.com>
Gao Xiang <xiang@kernel.org> <hsiangkao@aol.com>
Greg Kroah-Hartman <greg@echidna.(none)> Greg Kroah-Hartman <greg@echidna.(none)>
Greg Kroah-Hartman <gregkh@suse.de> Greg Kroah-Hartman <gregkh@suse.de>
Greg Kroah-Hartman <greg@kroah.com> Greg Kroah-Hartman <greg@kroah.com>
...@@ -90,6 +94,9 @@ Henrik Kretzschmar <henne@nachtwindheim.de> ...@@ -90,6 +94,9 @@ Henrik Kretzschmar <henne@nachtwindheim.de>
Henrik Rydberg <rydberg@bitmath.org> Henrik Rydberg <rydberg@bitmath.org>
Herbert Xu <herbert@gondor.apana.org.au> Herbert Xu <herbert@gondor.apana.org.au>
Jacob Shin <Jacob.Shin@amd.com> Jacob Shin <Jacob.Shin@amd.com>
Jaegeuk Kim <jaegeuk@kernel.org> <jaegeuk@google.com>
Jaegeuk Kim <jaegeuk@kernel.org> <jaegeuk@motorola.com>
Jaegeuk Kim <jaegeuk@kernel.org> <jaegeuk.kim@samsung.com>
James Bottomley <jejb@mulgrave.(none)> James Bottomley <jejb@mulgrave.(none)>
James Bottomley <jejb@titanic.il.steeleye.com> James Bottomley <jejb@titanic.il.steeleye.com>
James E Wilson <wilson@specifix.com> James E Wilson <wilson@specifix.com>
...@@ -181,6 +188,11 @@ Nguyen Anh Quynh <aquynh@gmail.com> ...@@ -181,6 +188,11 @@ Nguyen Anh Quynh <aquynh@gmail.com>
Nicolas Ferre <nicolas.ferre@microchip.com> <nicolas.ferre@atmel.com> Nicolas Ferre <nicolas.ferre@microchip.com> <nicolas.ferre@atmel.com>
Nicolas Pitre <nico@fluxnic.net> <nicolas.pitre@linaro.org> Nicolas Pitre <nico@fluxnic.net> <nicolas.pitre@linaro.org>
Nicolas Pitre <nico@fluxnic.net> <nico@linaro.org> Nicolas Pitre <nico@fluxnic.net> <nico@linaro.org>
Oleksij Rempel <linux@rempel-privat.de> <bug-track@fisher-privat.net>
Oleksij Rempel <linux@rempel-privat.de> <external.Oleksij.Rempel@de.bosch.com>
Oleksij Rempel <linux@rempel-privat.de> <fixed-term.Oleksij.Rempel@de.bosch.com>
Oleksij Rempel <linux@rempel-privat.de> <o.rempel@pengutronix.de>
Oleksij Rempel <linux@rempel-privat.de> <ore@pengutronix.de>
Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it> Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
Patrick Mochel <mochel@digitalimplant.org> Patrick Mochel <mochel@digitalimplant.org>
Paul Burton <paul.burton@mips.com> <paul.burton@imgtec.com> Paul Burton <paul.burton@mips.com> <paul.burton@imgtec.com>
...@@ -191,11 +203,7 @@ Pratyush Anand <pratyush.anand@gmail.com> <pratyush.anand@st.com> ...@@ -191,11 +203,7 @@ Pratyush Anand <pratyush.anand@gmail.com> <pratyush.anand@st.com>
Praveen BP <praveenbp@ti.com> Praveen BP <praveenbp@ti.com>
Punit Agrawal <punitagrawal@gmail.com> <punit.agrawal@arm.com> Punit Agrawal <punitagrawal@gmail.com> <punit.agrawal@arm.com>
Qais Yousef <qsyousef@gmail.com> <qais.yousef@imgtec.com> Qais Yousef <qsyousef@gmail.com> <qais.yousef@imgtec.com>
Oleksij Rempel <linux@rempel-privat.de> <bug-track@fisher-privat.net> Quentin Perret <qperret@qperret.net> <quentin.perret@arm.com>
Oleksij Rempel <linux@rempel-privat.de> <external.Oleksij.Rempel@de.bosch.com>
Oleksij Rempel <linux@rempel-privat.de> <fixed-term.Oleksij.Rempel@de.bosch.com>
Oleksij Rempel <linux@rempel-privat.de> <o.rempel@pengutronix.de>
Oleksij Rempel <linux@rempel-privat.de> <ore@pengutronix.de>
Rajesh Shah <rajesh.shah@intel.com> Rajesh Shah <rajesh.shah@intel.com>
Ralf Baechle <ralf@linux-mips.org> Ralf Baechle <ralf@linux-mips.org>
Ralf Wildenhues <Ralf.Wildenhues@gmx.de> Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
...@@ -230,6 +238,7 @@ Sumit Semwal <sumit.semwal@ti.com> ...@@ -230,6 +238,7 @@ Sumit Semwal <sumit.semwal@ti.com>
Tejun Heo <htejun@gmail.com> Tejun Heo <htejun@gmail.com>
Thomas Graf <tgraf@suug.ch> Thomas Graf <tgraf@suug.ch>
Thomas Pedersen <twp@codeaurora.org> Thomas Pedersen <twp@codeaurora.org>
Todor Tomov <todor.too@gmail.com> <todor.tomov@linaro.org>
Tony Luck <tony.luck@intel.com> Tony Luck <tony.luck@intel.com>
TripleX Chung <xxx.phy@gmail.com> <zhongyu@18mail.cn> TripleX Chung <xxx.phy@gmail.com> <zhongyu@18mail.cn>
TripleX Chung <xxx.phy@gmail.com> <triplex@zh-kernel.org> TripleX Chung <xxx.phy@gmail.com> <triplex@zh-kernel.org>
......
...@@ -6,6 +6,6 @@ Description: Bus scanning interval, microseconds component. ...@@ -6,6 +6,6 @@ Description: Bus scanning interval, microseconds component.
control systems are attached/generate presence for as short as control systems are attached/generate presence for as short as
100 ms - hence the tens-to-hundreds milliseconds scan intervals 100 ms - hence the tens-to-hundreds milliseconds scan intervals
are required. are required.
see Documentation/w1/w1.generic for detailed information. see Documentation/w1/w1-generic.rst for detailed information.
Users: any user space application which wants to know bus scanning Users: any user space application which wants to know bus scanning
interval interval
...@@ -2,7 +2,7 @@ What: /sys/bus/w1/devices/.../pio ...@@ -2,7 +2,7 @@ What: /sys/bus/w1/devices/.../pio
Date: May 2012 Date: May 2012
Contact: Markus Franke <franm@hrz.tu-chemnitz.de> Contact: Markus Franke <franm@hrz.tu-chemnitz.de>
Description: read/write the contents of the two PIO's of the DS28E04-100 Description: read/write the contents of the two PIO's of the DS28E04-100
see Documentation/w1/slaves/w1_ds28e04 for detailed information see Documentation/w1/slaves/w1_ds28e04.rst for detailed information
Users: any user space application which wants to communicate with DS28E04-100 Users: any user space application which wants to communicate with DS28E04-100
...@@ -11,5 +11,5 @@ What: /sys/bus/w1/devices/.../eeprom ...@@ -11,5 +11,5 @@ What: /sys/bus/w1/devices/.../eeprom
Date: May 2012 Date: May 2012
Contact: Markus Franke <franm@hrz.tu-chemnitz.de> Contact: Markus Franke <franm@hrz.tu-chemnitz.de>
Description: read/write the contents of the EEPROM memory of the DS28E04-100 Description: read/write the contents of the EEPROM memory of the DS28E04-100
see Documentation/w1/slaves/w1_ds28e04 for detailed information see Documentation/w1/slaves/w1_ds28e04.rst for detailed information
Users: any user space application which wants to communicate with DS28E04-100 Users: any user space application which wants to communicate with DS28E04-100
...@@ -2,5 +2,5 @@ What: /sys/bus/w1/devices/.../w1_seq ...@@ -2,5 +2,5 @@ What: /sys/bus/w1/devices/.../w1_seq
Date: Apr 2015 Date: Apr 2015
Contact: Matt Campbell <mattrcampbell@gmail.com> Contact: Matt Campbell <mattrcampbell@gmail.com>
Description: Support for the DS28EA00 chain sequence function Description: Support for the DS28EA00 chain sequence function
see Documentation/w1/slaves/w1_therm for detailed information see Documentation/w1/slaves/w1_therm.rst for detailed information
Users: any user space application which wants to communicate with DS28EA00 Users: any user space application which wants to communicate with DS28EA00
===================================
cfag12864b LCD Driver Documentation
===================================
:License: GPLv2
:Author & Maintainer: Miguel Ojeda Sandonis
:Date: 2006-10-27
.. INDEX
1. DRIVER INFORMATION
2. DEVICE INFORMATION
3. WIRING
4. USERSPACE PROGRAMMING
1. Driver Information
---------------------
This driver supports a cfag12864b LCD.
2. Device Information
---------------------
:Manufacturer: Crystalfontz
:Device Name: Crystalfontz 12864b LCD Series
:Device Code: cfag12864b
:Webpage: http://www.crystalfontz.com
:Device Webpage: http://www.crystalfontz.com/products/12864b/
:Type: LCD (Liquid Crystal Display)
:Width: 128
:Height: 64
:Colors: 2 (B/N)
:Controller: ks0108
:Controllers: 2
:Pages: 8 each controller
:Addresses: 64 each page
:Data size: 1 byte each address
:Memory size: 2 * 8 * 64 * 1 = 1024 bytes = 1 Kbyte
3. Wiring
---------
The cfag12864b LCD Series don't have official wiring.
The common wiring is done to the parallel port as shown::
Parallel Port cfag12864b
Name Pin# Pin# Name
Strobe ( 1)------------------------------(17) Enable
Data 0 ( 2)------------------------------( 4) Data 0
Data 1 ( 3)------------------------------( 5) Data 1
Data 2 ( 4)------------------------------( 6) Data 2
Data 3 ( 5)------------------------------( 7) Data 3
Data 4 ( 6)------------------------------( 8) Data 4
Data 5 ( 7)------------------------------( 9) Data 5
Data 6 ( 8)------------------------------(10) Data 6
Data 7 ( 9)------------------------------(11) Data 7
(10) [+5v]---( 1) Vdd
(11) [GND]---( 2) Ground
(12) [+5v]---(14) Reset
(13) [GND]---(15) Read / Write
Line (14)------------------------------(13) Controller Select 1
(15)
Init (16)------------------------------(12) Controller Select 2
Select (17)------------------------------(16) Data / Instruction
Ground (18)---[GND] [+5v]---(19) LED +
Ground (19)---[GND]
Ground (20)---[GND] E A Values:
Ground (21)---[GND] [GND]---[P1]---(18) Vee - R = Resistor = 22 ohm
Ground (22)---[GND] | - P1 = Preset = 10 Kohm
Ground (23)---[GND] ---- S ------( 3) V0 - P2 = Preset = 1 Kohm
Ground (24)---[GND] | |
Ground (25)---[GND] [GND]---[P2]---[R]---(20) LED -
4. Userspace Programming
------------------------
The cfag12864bfb describes a framebuffer device (/dev/fbX).
It has a size of 1024 bytes = 1 Kbyte.
Each bit represents one pixel. If the bit is high, the pixel will
turn on. If the pixel is low, the pixel will turn off.
You can use the framebuffer as a file: fopen, fwrite, fclose...
Although the LCD won't get updated until the next refresh time arrives.
Also, you can mmap the framebuffer: open & mmap, munmap & close...
which is the best option for most uses.
Check samples/auxdisplay/cfag12864b-example.c
for a real working userspace complete program with usage examples.
=========================
Auxiliary Display Support
=========================
.. toctree::
:maxdepth: 1
ks0108.rst
cfag12864b.rst
.. only:: subproject and html
Indices
=======
* :ref:`genindex`
========================================== ==========================================
ks0108 LCD Controller Driver Documentation ks0108 LCD Controller Driver Documentation
========================================== ==========================================
License: GPLv2 :License: GPLv2
Author & Maintainer: Miguel Ojeda Sandonis :Author & Maintainer: Miguel Ojeda Sandonis
Date: 2006-10-27 :Date: 2006-10-27
-------- .. INDEX
0. INDEX
--------
1. DRIVER INFORMATION 1. DRIVER INFORMATION
2. DEVICE INFORMATION 2. DEVICE INFORMATION
3. WIRING 3. WIRING
--------------------- 1. Driver Information
1. DRIVER INFORMATION
--------------------- ---------------------
This driver supports the ks0108 LCD controller. This driver supports the ks0108 LCD controller.
2. Device Information
--------------------- ---------------------
2. DEVICE INFORMATION
---------------------
Manufacturer: Samsung
Device Name: KS0108 LCD Controller
Device Code: ks0108
Webpage: -
Device Webpage: -
Type: LCD Controller (Liquid Crystal Display Controller)
Width: 64
Height: 64
Colors: 2 (B/N)
Pages: 8
Addresses: 64 each page
Data size: 1 byte each address
Memory size: 8 * 64 * 1 = 512 bytes
:Manufacturer: Samsung
--------- :Device Name: KS0108 LCD Controller
3. WIRING :Device Code: ks0108
:Webpage: -
:Device Webpage: -
:Type: LCD Controller (Liquid Crystal Display Controller)
:Width: 64
:Height: 64
:Colors: 2 (B/N)
:Pages: 8
:Addresses: 64 each page
:Data size: 1 byte each address
:Memory size: 8 * 64 * 1 = 512 bytes
3. Wiring
--------- ---------
The driver supports data parallel port wiring. The driver supports data parallel port wiring.
...@@ -52,4 +47,4 @@ The driver supports data parallel port wiring. ...@@ -52,4 +47,4 @@ The driver supports data parallel port wiring.
If you aren't building LCD related hardware, you should check If you aren't building LCD related hardware, you should check
your LCD specific wiring information in the same folder. your LCD specific wiring information in the same folder.
For example, check Documentation/auxdisplay/cfag12864b. For example, check Documentation/admin-guide/auxdisplay/cfag12864b.rst
...@@ -130,12 +130,6 @@ Proportional weight policy files ...@@ -130,12 +130,6 @@ Proportional weight policy files
dev weight dev weight
8:16 300 8:16 300
- blkio.leaf_weight[_device]
- Equivalents of blkio.weight[_device] for the purpose of
deciding how much weight tasks in the given cgroup has while
competing with the cgroup's child cgroups. For details,
please refer to Documentation/block/cfq-iosched.txt.
- blkio.time - blkio.time
- disk time allocated to cgroup per device in milliseconds. First - disk time allocated to cgroup per device in milliseconds. First
two fields specify the major and minor number of the device and two fields specify the major and minor number of the device and
......
=======
Authors
=======
Original Author Original Author
=============== ---------------
Steve French (sfrench@samba.org) Steve French (sfrench@samba.org)
The author wishes to express his appreciation and thanks to: The author wishes to express his appreciation and thanks to:
...@@ -20,33 +25,34 @@ thanks to the Samba team for their technical advice and encouragement. ...@@ -20,33 +25,34 @@ thanks to the Samba team for their technical advice and encouragement.
Patch Contributors Patch Contributors
------------------ ------------------
Zwane Mwaikambo
Andi Kleen - Zwane Mwaikambo
Amrut Joshi - Andi Kleen
Shobhit Dayal - Amrut Joshi
Sergey Vlasov - Shobhit Dayal
Richard Hughes - Sergey Vlasov
Yury Umanets - Richard Hughes
Mark Hamzy (for some of the early cifs IPv6 work) - Yury Umanets
Domen Puncer - Mark Hamzy (for some of the early cifs IPv6 work)
Jesper Juhl (in particular for lots of whitespace/formatting cleanup) - Domen Puncer
Vince Negri and Dave Stahl (for finding an important caching bug) - Jesper Juhl (in particular for lots of whitespace/formatting cleanup)
Adrian Bunk (kcalloc cleanups) - Vince Negri and Dave Stahl (for finding an important caching bug)
Miklos Szeredi - Adrian Bunk (kcalloc cleanups)
Kazeon team for various fixes especially for 2.4 version. - Miklos Szeredi
Asser Ferno (Change Notify support) - Kazeon team for various fixes especially for 2.4 version.
Shaggy (Dave Kleikamp) for innumerable small fs suggestions and some good cleanup - Asser Ferno (Change Notify support)
Gunter Kukkukk (testing and suggestions for support of old servers) - Shaggy (Dave Kleikamp) for innumerable small fs suggestions and some good cleanup
Igor Mammedov (DFS support) - Gunter Kukkukk (testing and suggestions for support of old servers)
Jeff Layton (many, many fixes, as well as great work on the cifs Kerberos code) - Igor Mammedov (DFS support)
Scott Lovenberg - Jeff Layton (many, many fixes, as well as great work on the cifs Kerberos code)
Pavel Shilovsky (for great work adding SMB2 support, and various SMB3 features) - Scott Lovenberg
Aurelien Aptel (for DFS SMB3 work and some key bug fixes) - Pavel Shilovsky (for great work adding SMB2 support, and various SMB3 features)
Ronnie Sahlberg (for SMB3 xattr work, bug fixes, and lots of great work on compounding) - Aurelien Aptel (for DFS SMB3 work and some key bug fixes)
Shirish Pargaonkar (for many ACL patches over the years) - Ronnie Sahlberg (for SMB3 xattr work, bug fixes, and lots of great work on compounding)
Sachin Prabhu (many bug fixes, including for reconnect, copy offload and security) - Shirish Pargaonkar (for many ACL patches over the years)
Paulo Alcantara - Sachin Prabhu (many bug fixes, including for reconnect, copy offload and security)
Long Li (some great work on RDMA, SMB Direct) - Paulo Alcantara
- Long Li (some great work on RDMA, SMB Direct)
Test case and Bug Report contributors Test case and Bug Report contributors
......
=======
Changes
=======
See https://wiki.samba.org/index.php/LinuxCIFSKernel for summary See https://wiki.samba.org/index.php/LinuxCIFSKernel for summary
information (that may be easier to read than parsing the output of information (that may be easier to read than parsing the output of
"git log fs/cifs") about fixes/improvements to CIFS/SMB2/SMB3 support (changes "git log fs/cifs") about fixes/improvements to CIFS/SMB2/SMB3 support (changes
......
.. SPDX-License-Identifier: GPL-2.0
====
CIFS
====
.. toctree::
:maxdepth: 2
introduction
usage
todo
changes
authors
.. only:: subproject and html
Indices
=======
* :ref:`genindex`
============
Introduction
============
This is the client VFS module for the SMB3 NAS protocol as well This is the client VFS module for the SMB3 NAS protocol as well
as for older dialects such as the Common Internet File System (CIFS) as for older dialects such as the Common Internet File System (CIFS)
protocol which was the successor to the Server Message Block protocol which was the successor to the Server Message Block
...@@ -33,7 +37,9 @@ ...@@ -33,7 +37,9 @@
tools (including smbinfo and setcifsacl) that can be obtained from tools (including smbinfo and setcifsacl) that can be obtained from
https://git.samba.org/?p=cifs-utils.git https://git.samba.org/?p=cifs-utils.git
or or
git://git.samba.org/cifs-utils.git git://git.samba.org/cifs-utils.git
mount.cifs should be installed in the directory with the other mount helpers. mount.cifs should be installed in the directory with the other mount helpers.
...@@ -41,5 +47,7 @@ ...@@ -41,5 +47,7 @@
For more information on the module see the project wiki page at For more information on the module see the project wiki page at
https://wiki.samba.org/index.php/LinuxCIFS https://wiki.samba.org/index.php/LinuxCIFS
and and
https://wiki.samba.org/index.php/LinuxCIFS_utils https://wiki.samba.org/index.php/LinuxCIFS_utils
====
TODO
====
Version 2.14 December 21, 2018 Version 2.14 December 21, 2018
A Partial List of Missing Features A Partial List of Missing Features
...@@ -8,55 +12,58 @@ for visible, important contributions to this module. Here ...@@ -8,55 +12,58 @@ for visible, important contributions to this module. Here
is a partial list of the known problems and missing features: is a partial list of the known problems and missing features:
a) SMB3 (and SMB3.1.1) missing optional features: a) SMB3 (and SMB3.1.1) missing optional features:
- multichannel (started), integration with RDMA - multichannel (started), integration with RDMA
- directory leases (improved metadata caching), started (root dir only) - directory leases (improved metadata caching), started (root dir only)
- T10 copy offload ie "ODX" (copy chunk, and "Duplicate Extents" ioctl - T10 copy offload ie "ODX" (copy chunk, and "Duplicate Extents" ioctl
currently the only two server side copy mechanisms supported) currently the only two server side copy mechanisms supported)
b) improved sparse file support (fiemap and SEEK_HOLE are implemented b) improved sparse file support (fiemap and SEEK_HOLE are implemented
but additional features would be supportable by the protocol). but additional features would be supportable by the protocol).
c) Directory entry caching relies on a 1 second timer, rather than c) Directory entry caching relies on a 1 second timer, rather than
using Directory Leases, currently only the root file handle is cached longer using Directory Leases, currently only the root file handle is cached longer
d) quota support (needs minor kernel change since quota calls d) quota support (needs minor kernel change since quota calls
to make it to network filesystems or deviceless filesystems) to make it to network filesystems or deviceless filesystems)
e) Additional use cases can be optimized to use "compounding" e) Additional use cases can be optimized to use "compounding" (e.g.
(e.g. open/query/close and open/setinfo/close) to reduce the number open/query/close and open/setinfo/close) to reduce the number of
of roundtrips to the server and improve performance. Various cases roundtrips to the server and improve performance. Various cases
(stat, statfs, create, unlink, mkdir) already have been improved by (stat, statfs, create, unlink, mkdir) already have been improved by
using compounding but more can be done. In addition we could significantly using compounding but more can be done. In addition we could
reduce redundant opens by using deferred close (with handle caching leases) significantly reduce redundant opens by using deferred close (with
and better using reference counters on file handles. handle caching leases) and better using reference counters on file
handles.
f) Finish inotify support so kde and gnome file list windows f) Finish inotify support so kde and gnome file list windows
will autorefresh (partially complete by Asser). Needs minor kernel will autorefresh (partially complete by Asser). Needs minor kernel
vfs change to support removing D_NOTIFY on a file. vfs change to support removing D_NOTIFY on a file.
g) Add GUI tool to configure /proc/fs/cifs settings and for display of g) Add GUI tool to configure /proc/fs/cifs settings and for display of
the CIFS statistics (started) the CIFS statistics (started)
h) implement support for security and trusted categories of xattrs h) implement support for security and trusted categories of xattrs
(requires minor protocol extension) to enable better support for SELINUX (requires minor protocol extension) to enable better support for SELINUX
i) Add support for tree connect contexts (see MS-SMB2) a new SMB3.1.1 protocol i) Add support for tree connect contexts (see MS-SMB2) a new SMB3.1.1 protocol
feature (may be especially useful for virtualization). feature (may be especially useful for virtualization).
j) Create UID mapping facility so server UIDs can be mapped on a per j) Create UID mapping facility so server UIDs can be mapped on a per
mount or a per server basis to client UIDs or nobody if no mapping mount or a per server basis to client UIDs or nobody if no mapping
exists. Also better integration with winbind for resolving SID owners exists. Also better integration with winbind for resolving SID owners
k) Add tools to take advantage of more smb3 specific ioctls and features k) Add tools to take advantage of more smb3 specific ioctls and features
(passthrough ioctl/fsctl is now implemented in cifs.ko to allow sending (passthrough ioctl/fsctl is now implemented in cifs.ko to allow
various SMB3 fsctls and query info and set info calls directly from user space) sending various SMB3 fsctls and query info and set info calls
Add tools to make setting various non-POSIX metadata attributes easier directly from user space) Add tools to make setting various non-POSIX
from tools (e.g. extending what was done in smb-info tool). metadata attributes easier from tools (e.g. extending what was done
in smb-info tool).
l) encrypted file support l) encrypted file support
m) improved stats gathering tools (perhaps integration with nfsometer?) m) improved stats gathering tools (perhaps integration with nfsometer?)
to extend and make easier to use what is currently in /proc/fs/cifs/Stats to extend and make easier to use what is currently in /proc/fs/cifs/Stats
n) Add support for claims based ACLs ("DAC") n) Add support for claims based ACLs ("DAC")
...@@ -69,57 +76,58 @@ p) Add support for witness protocol (perhaps ioctl to cifs.ko from user space ...@@ -69,57 +76,58 @@ p) Add support for witness protocol (perhaps ioctl to cifs.ko from user space
different servers, and the server we are connected to has gone down. different servers, and the server we are connected to has gone down.
q) Allow mount.cifs to be more verbose in reporting errors with dialect q) Allow mount.cifs to be more verbose in reporting errors with dialect
or unsupported feature errors. or unsupported feature errors.
r) updating cifs documentation, and user guide. r) updating cifs documentation, and user guide.
s) Addressing bugs found by running a broader set of xfstests in standard s) Addressing bugs found by running a broader set of xfstests in standard
file system xfstest suite. file system xfstest suite.
t) split cifs and smb3 support into separate modules so legacy (and less t) split cifs and smb3 support into separate modules so legacy (and less
secure) CIFS dialect can be disabled in environments that don't need it secure) CIFS dialect can be disabled in environments that don't need it
and simplify the code. and simplify the code.
v) POSIX Extensions for SMB3.1.1 (started, create and mkdir support added v) POSIX Extensions for SMB3.1.1 (started, create and mkdir support added
so far). so far).
w) Add support for additional strong encryption types, and additional spnego w) Add support for additional strong encryption types, and additional spnego
authentication mechanisms (see MS-SMB2) authentication mechanisms (see MS-SMB2)
x) Finish support for SMB3.1.1 compression x) Finish support for SMB3.1.1 compression
KNOWN BUGS Known Bugs
==================================== ==========
See http://bugzilla.samba.org - search on product "CifsVFS" for See http://bugzilla.samba.org - search on product "CifsVFS" for
current bug list. Also check http://bugzilla.kernel.org (Product = File System, Component = CIFS) current bug list. Also check http://bugzilla.kernel.org (Product = File System, Component = CIFS)
1) existing symbolic links (Windows reparse points) are recognized but 1) existing symbolic links (Windows reparse points) are recognized but
can not be created remotely. They are implemented for Samba and those that can not be created remotely. They are implemented for Samba and those that
support the CIFS Unix extensions, although earlier versions of Samba support the CIFS Unix extensions, although earlier versions of Samba
overly restrict the pathnames. overly restrict the pathnames.
2) follow_link and readdir code does not follow dfs junctions 2) follow_link and readdir code does not follow dfs junctions
but recognizes them but recognizes them
Misc testing to do Misc testing to do
================== ==================
1) check out max path names and max path name components against various server 1) check out max path names and max path name components against various server
types. Try nested symlinks (8 deep). Return max path name in stat -f information types. Try nested symlinks (8 deep). Return max path name in stat -f information
2) Improve xfstest's cifs/smb3 enablement and adapt xfstests where needed to test 2) Improve xfstest's cifs/smb3 enablement and adapt xfstests where needed to test
cifs/smb3 better cifs/smb3 better
3) Additional performance testing and optimization using iozone and similar - 3) Additional performance testing and optimization using iozone and similar -
there are some easy changes that can be done to parallelize sequential writes, there are some easy changes that can be done to parallelize sequential writes,
and when signing is disabled to request larger read sizes (larger than and when signing is disabled to request larger read sizes (larger than
negotiated size) and send larger write sizes to modern servers. negotiated size) and send larger write sizes to modern servers.
4) More exhaustively test against less common servers 4) More exhaustively test against less common servers
5) Continue to extend the smb3 "buildbot" which does automated xfstesting 5) Continue to extend the smb3 "buildbot" which does automated xfstesting
against Windows, Samba and Azure currently - to add additional tests and against Windows, Samba and Azure currently - to add additional tests and
to allow the buildbot to execute the tests faster. The URL for the to allow the buildbot to execute the tests faster. The URL for the
buildbot is: http://smb3-test-rhel-75.southcentralus.cloudapp.azure.com buildbot is: http://smb3-test-rhel-75.southcentralus.cloudapp.azure.com
6) Address various coverity warnings (most are not bugs per-se, but 6) Address various coverity warnings (most are not bugs per-se, but
the more warnings are addressed, the easier it is to spot real the more warnings are addressed, the easier it is to spot real
problems that static analyzers will point out in the future). problems that static analyzers will point out in the future).
...@@ -1647,8 +1647,17 @@ ...@@ -1647,8 +1647,17 @@
0 = /dev/comedi0 First comedi device 0 = /dev/comedi0 First comedi device
1 = /dev/comedi1 Second comedi device 1 = /dev/comedi1 Second comedi device
... ...
47 = /dev/comedi47 48th comedi device
See http://stm.lbl.gov/comedi. Minors 48 to 255 are reserved for comedi subdevices with
pathnames of the form "/dev/comediX_subdY", where "X" is the
minor number of the associated comedi device and "Y" is the
subdevice number. These subdevice minors are assigned
dynamically, so there is no fixed mapping from subdevice
pathnames to minor numbers.
See http://www.comedi.org/ for information about the Comedi
project.
98 block User-mode virtual block device 98 block User-mode virtual block device
0 = /dev/ubda First user-mode block device 0 = /dev/ubda First user-mode block device
......
...@@ -77,7 +77,10 @@ configure specific aspects of kernel behavior to your liking. ...@@ -77,7 +77,10 @@ configure specific aspects of kernel behavior to your liking.
blockdev/index blockdev/index
ext4 ext4
binderfs binderfs
cifs/index
xfs xfs
jfs
ufs
pm/index pm/index
thunderbolt thunderbolt
LSM/index LSM/index
...@@ -98,6 +101,7 @@ configure specific aspects of kernel behavior to your liking. ...@@ -98,6 +101,7 @@ configure specific aspects of kernel behavior to your liking.
iostats iostats
kernel-per-CPU-kthreads kernel-per-CPU-kthreads
laptops/index laptops/index
auxdisplay/index
lcd-panel-cgram lcd-panel-cgram
ldm ldm
lockup-watchdogs lockup-watchdogs
...@@ -105,6 +109,7 @@ configure specific aspects of kernel behavior to your liking. ...@@ -105,6 +109,7 @@ configure specific aspects of kernel behavior to your liking.
pnp pnp
rtc rtc
svga svga
wimax/index
video-output video-output
.. only:: subproject and html .. only:: subproject and html
......
===========================================
IBM's Journaled File System (JFS) for Linux IBM's Journaled File System (JFS) for Linux
===========================================
JFS Homepage: http://jfs.sourceforge.net/ JFS Homepage: http://jfs.sourceforge.net/
The following mount options are supported: The following mount options are supported:
(*) == default (*) == default
iocharset=name Character set to use for converting from Unicode to iocharset=name
Character set to use for converting from Unicode to
ASCII. The default is to do no conversion. Use ASCII. The default is to do no conversion. Use
iocharset=utf8 for UTF-8 translations. This requires iocharset=utf8 for UTF-8 translations. This requires
CONFIG_NLS_UTF8 to be set in the kernel .config file. CONFIG_NLS_UTF8 to be set in the kernel .config file.
iocharset=none specifies the default behavior explicitly. iocharset=none specifies the default behavior explicitly.
resize=value Resize the volume to <value> blocks. JFS only supports resize=value
Resize the volume to <value> blocks. JFS only supports
growing a volume, not shrinking it. This option is only growing a volume, not shrinking it. This option is only
valid during a remount, when the volume is mounted valid during a remount, when the volume is mounted
read-write. The resize keyword with no value will grow read-write. The resize keyword with no value will grow
the volume to the full size of the partition. the volume to the full size of the partition.
nointegrity Do not write to the journal. The primary use of this option nointegrity
Do not write to the journal. The primary use of this option
is to allow for higher performance when restoring a volume is to allow for higher performance when restoring a volume
from backup media. The integrity of the volume is not from backup media. The integrity of the volume is not
guaranteed if the system abnormally abends. guaranteed if the system abnormally abends.
integrity(*) Commit metadata changes to the journal. Use this option to integrity(*)
Commit metadata changes to the journal. Use this option to
remount a volume where the nointegrity option was remount a volume where the nointegrity option was
previously specified in order to restore normal behavior. previously specified in order to restore normal behavior.
errors=continue Keep going on a filesystem error. errors=continue
errors=remount-ro(*) Remount the filesystem read-only on an error. Keep going on a filesystem error.
errors=panic Panic and halt the machine if an error occurs. errors=remount-ro(*)
Remount the filesystem read-only on an error.
errors=panic
Panic and halt the machine if an error occurs.
uid=value Override on-disk uid with specified value uid=value
gid=value Override on-disk gid with specified value Override on-disk uid with specified value
umask=value Override on-disk umask with specified octal value. For gid=value
Override on-disk gid with specified value
umask=value
Override on-disk umask with specified octal value. For
directories, the execute bit will be set if the corresponding directories, the execute bit will be set if the corresponding
read bit is set. read bit is set.
discard=minlen This enables/disables the use of discard/TRIM commands. discard=minlen, discard/nodiscard(*)
discard The discard/TRIM commands are sent to the underlying This enables/disables the use of discard/TRIM commands.
nodiscard(*) block device when blocks are freed. This is useful for SSD The discard/TRIM commands are sent to the underlying
block device when blocks are freed. This is useful for SSD
devices and sparse/thinly-provisioned LUNs. The FITRIM ioctl devices and sparse/thinly-provisioned LUNs. The FITRIM ioctl
command is also available together with the nodiscard option. command is also available together with the nodiscard option.
The value of minlen specifies the minimum blockcount, when The value of minlen specifies the minimum blockcount, when
......
...@@ -1044,6 +1044,10 @@ ...@@ -1044,6 +1044,10 @@
specified address. The serial port must already be specified address. The serial port must already be
setup and configured. Options are not yet supported. setup and configured. Options are not yet supported.
sbi
Use RISC-V SBI (Supervisor Binary Interface) for early
console.
smh Use ARM semihosting calls for early console. smh Use ARM semihosting calls for early console.
s3c2410,<addr> s3c2410,<addr>
......
...@@ -171,22 +171,20 @@ It seems others find it useful as (System Attention Key) which is ...@@ -171,22 +171,20 @@ It seems others find it useful as (System Attention Key) which is
useful when you want to exit a program that will not let you switch consoles. useful when you want to exit a program that will not let you switch consoles.
(For example, X or a svgalib program.) (For example, X or a svgalib program.)
``reboot(b)`` is good when you're unable to shut down. But you should also ``reboot(b)`` is good when you're unable to shut down, it is an equivalent
``sync(s)`` and ``umount(u)`` first. of pressing the "reset" button.
``crash(c)`` can be used to manually trigger a crashdump when the system is hung. ``crash(c)`` can be used to manually trigger a crashdump when the system is hung.
Note that this just triggers a crash if there is no dump mechanism available. Note that this just triggers a crash if there is no dump mechanism available.
``sync(s)`` is great when your system is locked up, it allows you to sync your ``sync(s)`` is handy before yanking removable medium or after using a rescue
disks and will certainly lessen the chance of data loss and fscking. Note shell that provides no graceful shutdown -- it will ensure your data is
that the sync hasn't taken place until you see the "OK" and "Done" appear safely written to the disk. Note that the sync hasn't taken place until you see
on the screen. (If the kernel is really in strife, you may not ever get the the "OK" and "Done" appear on the screen.
OK or Done message...)
``umount(u)`` is basically useful in the same ways as ``sync(s)``. I generally ``umount(u)`` can be used to mark filesystems as properly unmounted. From the
``sync(s)``, ``umount(u)``, then ``reboot(b)`` when my system locks. It's saved running system's point of view, they will be remounted read-only. The remount
me many a fsck. Again, the unmount (remount read-only) hasn't taken place until isn't complete until you see the "OK" and "Done" message appear on the screen.
you see the "OK" and "Done" message appear on the screen.
The loglevels ``0``-``9`` are useful when your console is being flooded with The loglevels ``0``-``9`` are useful when your console is being flooded with
kernel messages you do not want to see. Selecting ``0`` will prevent all but kernel messages you do not want to see. Selecting ``0`` will prevent all but
......
USING UFS =========
Using UFS
========= =========
mount -t ufs -o ufstype=type_of_ufs device dir mount -t ufs -o ufstype=type_of_ufs device dir
UFS OPTIONS UFS Options
=========== ===========
ufstype=type_of_ufs ufstype=type_of_ufs
...@@ -14,24 +15,31 @@ ufstype=type_of_ufs ...@@ -14,24 +15,31 @@ ufstype=type_of_ufs
type of ufs automatically. That's why user must specify type of type of ufs automatically. That's why user must specify type of
ufs manually by mount option ufstype. Possible values are: ufs manually by mount option ufstype. Possible values are:
old old format of ufs old
old format of ufs
default value, supported as read-only default value, supported as read-only
44bsd used in FreeBSD, NetBSD, OpenBSD 44bsd
used in FreeBSD, NetBSD, OpenBSD
supported as read-write supported as read-write
ufs2 used in FreeBSD 5.x ufs2
used in FreeBSD 5.x
supported as read-write supported as read-write
5xbsd synonym for ufs2 5xbsd
synonym for ufs2
sun used in SunOS (Solaris) sun
used in SunOS (Solaris)
supported as read-write supported as read-write
sunx86 used in SunOS for Intel (Solarisx86) sunx86
used in SunOS for Intel (Solarisx86)
supported as read-write supported as read-write
hp used in HP-UX hp
used in HP-UX
supported as read-only supported as read-only
nextstep nextstep
...@@ -47,14 +55,14 @@ ufstype=type_of_ufs ...@@ -47,14 +55,14 @@ ufstype=type_of_ufs
supported as read-only supported as read-only
POSSIBLE PROBLEMS Possible Problems
================= -----------------
See next section, if you have any. See next section, if you have any.
BUG REPORTS Bug Reports
=========== -----------
Any ufs bug report you can send to daniel.pirkl@email.cz or Any ufs bug report you can send to daniel.pirkl@email.cz or
to dushistov@mail.ru (do not send partition tables bug reports). to dushistov@mail.ru (do not send partition tables bug reports).
.. SPDX-License-Identifier: GPL-2.0
===============
WiMAX subsystem
===============
.. toctree::
:maxdepth: 2
wimax
i2400m
.. only:: subproject and html
Indices
=======
* :ref:`genindex`
.. include:: <isonum.txt>
Linux kernel WiMAX stack ========================
Linux kernel WiMAX stack
========================
(C) 2008 Intel Corporation < linux-wimax@intel.com > :Copyright: |copy| 2008 Intel Corporation < linux-wimax@intel.com >
This provides a basic Linux kernel WiMAX stack to provide a common This provides a basic Linux kernel WiMAX stack to provide a common
control API for WiMAX devices, usable from kernel and user space. control API for WiMAX devices, usable from kernel and user space.
1. Design 1. Design
=========
The WiMAX stack is designed to provide for common WiMAX control The WiMAX stack is designed to provide for common WiMAX control
services to current and future WiMAX devices from any vendor. services to current and future WiMAX devices from any vendor.
...@@ -31,6 +35,7 @@ ...@@ -31,6 +35,7 @@
include/linux/wimax.h. include/linux/wimax.h.
2. Usage 2. Usage
========
For usage in a driver (registration, API, etc) please refer to the For usage in a driver (registration, API, etc) please refer to the
instructions in the header file include/linux/wimax.h. instructions in the header file include/linux/wimax.h.
...@@ -40,6 +45,7 @@ ...@@ -40,6 +45,7 @@
control. control.
2.1. Obtaining debug information: debugfs entries 2.1. Obtaining debug information: debugfs entries
-------------------------------------------------
The WiMAX stack is compiled, by default, with debug messages that can The WiMAX stack is compiled, by default, with debug messages that can
be used to diagnose issues. By default, said messages are disabled. be used to diagnose issues. By default, said messages are disabled.
...@@ -52,20 +58,22 @@ ...@@ -52,20 +58,22 @@
create more subentries below it. create more subentries below it.
2.1.1. Increasing debug output 2.1.1. Increasing debug output
------------------------------
The files named *dl_* indicate knobs for controlling the debug output The files named *dl_* indicate knobs for controlling the debug output
of different submodules of the WiMAX stack: of different submodules of the WiMAX stack::
*
# find /sys/kernel/debug/wimax\:wmx0 -name \*dl_\* # find /sys/kernel/debug/wimax\:wmx0 -name \*dl_\*
/sys/kernel/debug/wimax:wmx0/wimax_dl_stack /sys/kernel/debug/wimax:wmx0/wimax_dl_stack
/sys/kernel/debug/wimax:wmx0/wimax_dl_op_rfkill /sys/kernel/debug/wimax:wmx0/wimax_dl_op_rfkill
/sys/kernel/debug/wimax:wmx0/wimax_dl_op_reset /sys/kernel/debug/wimax:wmx0/wimax_dl_op_reset
/sys/kernel/debug/wimax:wmx0/wimax_dl_op_msg /sys/kernel/debug/wimax:wmx0/wimax_dl_op_msg
/sys/kernel/debug/wimax:wmx0/wimax_dl_id_table /sys/kernel/debug/wimax:wmx0/wimax_dl_id_table
/sys/kernel/debug/wimax:wmx0/wimax_dl_debugfs /sys/kernel/debug/wimax:wmx0/wimax_dl_debugfs
/sys/kernel/debug/wimax:wmx0/.... # other driver specific files /sys/kernel/debug/wimax:wmx0/.... # other driver specific files
NOTE: Of course, if debugfs is mounted in a directory other than NOTE:
Of course, if debugfs is mounted in a directory other than
/sys/kernel/debug, those paths will change. /sys/kernel/debug, those paths will change.
By reading the file you can obtain the current value of said debug By reading the file you can obtain the current value of said debug
...@@ -74,7 +82,7 @@ ...@@ -74,7 +82,7 @@
To increase the debug level of, for example, the id-table submodule, To increase the debug level of, for example, the id-table submodule,
just write: just write:
$ echo 3 > /sys/kernel/debug/wimax:wmx0/wimax_dl_id_table $ echo 3 > /sys/kernel/debug/wimax:wmx0/wimax_dl_id_table
Increasing numbers yield increasing debug information; for details of Increasing numbers yield increasing debug information; for details of
what is printed and the available levels, check the source. The code what is printed and the available levels, check the source. The code
......
...@@ -337,11 +337,12 @@ None at present. ...@@ -337,11 +337,12 @@ None at present.
Removed Sysctls Removed Sysctls
=============== ===============
============================= =======
Name Removed Name Removed
---- ------- ============================= =======
fs.xfs.xfsbufd_centisec v4.0 fs.xfs.xfsbufd_centisec v4.0
fs.xfs.age_buffer_centisecs v4.0 fs.xfs.age_buffer_centisecs v4.0
============================= =======
Error handling Error handling
============== ==============
......
===============================
ADS Bitsy Single Board Computer
===============================
(It is different from Bitsy(iPAQ) of Compaq)
For more details, contact Applied Data Systems or see
http://www.applieddata.net/products.html
The Linux support for this product has been provided by
Woojung Huh <whuh@applieddata.net>
Use 'make adsbitsy_config' before any 'make config'.
This will set up defaults for ADS Bitsy support.
The kernel zImage is linked to be loaded and executed at 0xc0400000.
Linux can be used with the ADS BootLoader that ships with the
newer rev boards. See their documentation on how to load Linux.
Supported peripherals
=====================
- SA1100 LCD frame buffer (8/16bpp...sort of)
- SA1111 USB Master
- SA1100 serial port
- pcmcia, compact flash
- touchscreen(ucb1200)
- console on LCD screen
- serial ports (ttyS[0-2])
- ttyS0 is default for serial console
To do
=====
- everything else! :-)
Notes
=====
- The flash on board is divided into 3 partitions.
You should be careful to use flash on board.
Its partition is different from GraphicsClient Plus and GraphicsMaster
- 16bpp mode requires a different cable than what ships with the board.
Contact ADS or look through the manual to wire your own. Currently,
if you compile with 16bit mode support and switch into a lower bpp
mode, the timing is off so the image is corrupted. This will be
fixed soon.
Any contribution can be sent to nico@fluxnic.net and will be greatly welcome!
...@@ -14,7 +14,7 @@ Building the kernel ...@@ -14,7 +14,7 @@ Building the kernel
To build the kernel with current defaults:: To build the kernel with current defaults::
make assabet_config make assabet_defconfig
make oldconfig make oldconfig
make zImage make zImage
......
======
Brutus
======
Brutus is an evaluation platform for the SA1100 manufactured by Intel.
For more details, see:
http://developer.intel.com
To compile for Brutus, you must issue the following commands::
make brutus_config
make config
[accept all the defaults]
make zImage
The resulting kernel will end up in linux/arch/arm/boot/zImage. This file
must be loaded at 0xc0008000 in Brutus's memory and execution started at
0xc0008000 as well with the value of registers r0 = 0 and r1 = 16 upon
entry.
But prior to execute the kernel, a ramdisk image must also be loaded in
memory. Use memory address 0xd8000000 for this. Note that the file
containing the (compressed) ramdisk image must not exceed 4 MB.
Typically, you'll need angelboot to load the kernel.
The following angelboot.opt file should be used::
base 0xc0008000
entry 0xc0008000
r0 0x00000000
r1 0x00000010
device /dev/ttyS0
options "9600 8N1"
baud 115200
otherfile ramdisk_img.gz
otherbase 0xd8000000
Then load the kernel and ramdisk with::
angelboot -f angelboot.opt zImage
The first Brutus serial port (assumed to be linked to /dev/ttyS0 on your
host PC) is used by angel to load the kernel and ramdisk image. The serial
console is provided through the second Brutus serial port. To access it,
you may use minicom configured with /dev/ttyS1, 9600 baud, 8N1, no flow
control.
Currently supported
===================
- RS232 serial ports
- audio output
- LCD screen
- keyboard
The actual Brutus support may not be complete without extra patches.
If such patches exist, they should be found from
ftp.netwinder.org/users/n/nico.
A full PCMCIA support is still missing, although it's possible to hack
some drivers in order to drive already inserted cards at boot time with
little modifications.
Any contribution is welcome.
Please send patches to nico@fluxnic.net
Have Fun !
========
Freebird
========
Freebird-1.1 is produced by Legend(C), Inc.
`http://web.archive.org/web/*/http://www.legend.com.cn`
and software/linux maintained by Coventive(C), Inc.
(http://www.coventive.com)
Based on the Nicolas's strongarm kernel tree.
Maintainer:
Chester Kuo
- <chester@coventive.com>
- <chester@linux.org.tw>
Author:
- Tim wu <timwu@coventive.com>
- CIH <cih@coventive.com>
- Eric Peng <ericpeng@coventive.com>
- Jeff Lee <jeff_lee@coventive.com>
- Allen Cheng
- Tony Liu <tonyliu@coventive.com>
=============================================
ADS GraphicsClient Plus Single Board Computer
=============================================
For more details, contact Applied Data Systems or see
http://www.applieddata.net/products.html
The original Linux support for this product has been provided by
Nicolas Pitre <nico@fluxnic.net>. Continued development work by
Woojung Huh <whuh@applieddata.net>
It's currently possible to mount a root filesystem via NFS providing a
complete Linux environment. Otherwise a ramdisk image may be used. The
board supports MTD/JFFS, so you could also mount something on there.
Use 'make graphicsclient_config' before any 'make config'. This will set up
defaults for GraphicsClient Plus support.
The kernel zImage is linked to be loaded and executed at 0xc0200000.
Also the following registers should have the specified values upon entry::
r0 = 0
r1 = 29 (this is the GraphicsClient architecture number)
Linux can be used with the ADS BootLoader that ships with the
newer rev boards. See their documentation on how to load Linux.
Angel is not available for the GraphicsClient Plus AFAIK.
There is a board known as just the GraphicsClient that ADS used to
produce but has end of lifed. This code will not work on the older
board with the ADS bootloader, but should still work with Angel,
as outlined below. In any case, if you're planning on deploying
something en masse, you should probably get the newer board.
If using Angel on the older boards, here is a typical angel.opt option file
if the kernel is loaded through the Angel Debug Monitor::
base 0xc0200000
entry 0xc0200000
r0 0x00000000
r1 0x0000001d
device /dev/ttyS1
options "38400 8N1"
baud 115200
#otherfile ramdisk.gz
#otherbase 0xc0800000
exec minicom
Then the kernel (and ramdisk if otherfile/otherbase lines above are
uncommented) would be loaded with::
angelboot -f angelboot.opt zImage
Here it is assumed that the board is connected to ttyS1 on your PC
and that minicom is preconfigured with /dev/ttyS1, 38400 baud, 8N1, no flow
control by default.
If any other bootloader is used, ensure it accomplish the same, especially
for r0/r1 register values before jumping into the kernel.
Supported peripherals
=====================
- SA1100 LCD frame buffer (8/16bpp...sort of)
- on-board SMC 92C96 ethernet NIC
- SA1100 serial port
- flash memory access (MTD/JFFS)
- pcmcia
- touchscreen(ucb1200)
- ps/2 keyboard
- console on LCD screen
- serial ports (ttyS[0-2])
- ttyS0 is default for serial console
- Smart I/O (ADC, keypad, digital inputs, etc)
See http://www.eurotech-inc.com/linux-sbc.asp for IOCTL documentation
and example user space code. ps/2 keybd is multiplexed through this driver
To do
=====
- UCB1200 audio with new ucb_generic layer
- everything else! :-)
Notes
=====
- The flash on board is divided into 3 partitions. mtd0 is where
the ADS boot ROM and zImage is stored. It's been marked as
read-only to keep you from blasting over the bootloader. :) mtd1 is
for the ramdisk.gz image. mtd2 is user flash space and can be
utilized for either JFFS or if you're feeling crazy, running ext2
on top of it. If you're not using the ADS bootloader, you're
welcome to blast over the mtd1 partition also.
- 16bpp mode requires a different cable than what ships with the board.
Contact ADS or look through the manual to wire your own. Currently,
if you compile with 16bit mode support and switch into a lower bpp
mode, the timing is off so the image is corrupted. This will be
fixed soon.
Any contribution can be sent to nico@fluxnic.net and will be greatly welcome!
========================================
ADS GraphicsMaster Single Board Computer
========================================
For more details, contact Applied Data Systems or see
http://www.applieddata.net/products.html
The original Linux support for this product has been provided by
Nicolas Pitre <nico@fluxnic.net>. Continued development work by
Woojung Huh <whuh@applieddata.net>
Use 'make graphicsmaster_config' before any 'make config'.
This will set up defaults for GraphicsMaster support.
The kernel zImage is linked to be loaded and executed at 0xc0400000.
Linux can be used with the ADS BootLoader that ships with the
newer rev boards. See their documentation on how to load Linux.
Supported peripherals
=====================
- SA1100 LCD frame buffer (8/16bpp...sort of)
- SA1111 USB Master
- on-board SMC 92C96 ethernet NIC
- SA1100 serial port
- flash memory access (MTD/JFFS)
- pcmcia, compact flash
- touchscreen(ucb1200)
- ps/2 keyboard
- console on LCD screen
- serial ports (ttyS[0-2])
- ttyS0 is default for serial console
- Smart I/O (ADC, keypad, digital inputs, etc)
See http://www.eurotech-inc.com/linux-sbc.asp for IOCTL documentation
and example user space code. ps/2 keybd is multiplexed through this driver
To do
=====
- everything else! :-)
Notes
=====
- The flash on board is divided into 3 partitions. mtd0 is where
the zImage is stored. It's been marked as read-only to keep you
from blasting over the bootloader. :) mtd1 is
for the ramdisk.gz image. mtd2 is user flash space and can be
utilized for either JFFS or if you're feeling crazy, running ext2
on top of it. If you're not using the ADS bootloader, you're
welcome to blast over the mtd1 partition also.
- 16bpp mode requires a different cable than what ships with the board.
Contact ADS or look through the manual to wire your own. Currently,
if you compile with 16bit mode support and switch into a lower bpp
mode, the timing is off so the image is corrupted. This will be
fixed soon.
Any contribution can be sent to nico@fluxnic.net and will be greatly welcome!
=======================
Hoeft & Wessel Webpanel
=======================
The HUW_WEBPANEL is a product of the german company Hoeft & Wessel AG
If you want more information, please visit
http://www.hoeft-wessel.de
To build the kernel::
make huw_webpanel_config
make oldconfig
[accept all defaults]
make zImage
Mostly of the work is done by:
Roman Jordan jor@hoeft-wessel.de
Christoph Schulz schu@hoeft-wessel.de
2000/12/18/
...@@ -7,19 +7,7 @@ Intel StrongARM 1100 ...@@ -7,19 +7,7 @@ Intel StrongARM 1100
.. toctree:: .. toctree::
:maxdepth: 1 :maxdepth: 1
adsbitsy
assabet assabet
brutus
cerf cerf
freebird
graphicsclient
graphicsmaster
huw_webpanel
itsy
lart lart
nanoengine
pangolin
pleb
serial_uart serial_uart
tifon
yopy
====
Itsy
====
Itsy is a research project done by the Western Research Lab, and Systems
Research Center in Palo Alto, CA. The Itsy project is one of several
research projects at Compaq that are related to pocket computing.
For more information, see:
http://www.hpl.hp.com/downloads/crl/itsy/
Notes on initial 2.4 Itsy support (8/27/2000) :
The port was done on an Itsy version 1.5 machine with a daughtercard with
64 Meg of DRAM and 32 Meg of Flash. The initial work includes support for
serial console (to see what you're doing). No other devices have been
enabled.
To build, do a "make menuconfig" (or xmenuconfig) and select Itsy support.
Disable Flash and LCD support. and then do a make zImage.
Finally, you will need to cd to arch/arm/boot/tools and execute a make there
to build the params-itsy program used to boot the kernel.
In order to install the port of 2.4 to the itsy, You will need to set the
configuration parameters in the monitor as follows::
Arg 1:0x08340000, Arg2: 0xC0000000, Arg3:18 (0x12), Arg4:0
Make sure the start-routine address is set to 0x00060000.
Next, flash the params-itsy program to 0x00060000 ("p 1 0x00060000" in the
flash menu) Flash the kernel in arch/arm/boot/zImage into 0x08340000
("p 1 0x00340000"). Finally flash an initial ramdisk into 0xC8000000
("p 2 0x0") We used ramdisk-2-30.gz from the 0.11 version directory on
handhelds.org.
The serial connection we established was at:
8-bit data, no parity, 1 stop bit(s), 115200.00 b/s. in the monitor, in the
params-itsy program, and in the kernel itself. This can be changed, but
not easily. The monitor parameters are easily changed, the params program
setup is assembly outl's, and the kernel is a configuration item specific to
the itsy. (i.e. grep for CONFIG_SA1100_ITSY and you'll find where it is.)
This should get you a properly booting 2.4 kernel on the itsy.
==========
nanoEngine
==========
"nanoEngine" is a SA1110 based single board computer from
Bright Star Engineering Inc. See www.brightstareng.com/arm
for more info.
(Ref: Stuart Adams <sja@brightstareng.com>)
Also visit Larry Doolittle's "Linux for the nanoEngine" site:
http://www.brightstareng.com/arm/nanoeng.htm
========
Pangolin
========
Pangolin is a StrongARM 1110-based evaluation platform produced
by Dialogue Technology (http://www.dialogue.com.tw/).
It has EISA slots for ease of configuration with SDRAM/Flash
memory card, USB/Serial/Audio card, Compact Flash card,
PCMCIA/IDE card and TFT-LCD card.
To compile for Pangolin, you must issue the following commands::
make pangolin_config
make oldconfig
make zImage
Supported peripherals
=====================
- SA1110 serial port (UART1/UART2/UART3)
- flash memory access
- compact flash driver
- UDA1341 sound driver
- SA1100 LCD controller for 800x600 16bpp TFT-LCD
- MQ-200 driver for 800x600 16bpp TFT-LCD
- Penmount(touch panel) driver
- PCMCIA driver
- SMC91C94 LAN driver
- IDE driver (experimental)
====
PLEB
====
The PLEB project was started as a student initiative at the School of
Computer Science and Engineering, University of New South Wales to make a
pocket computer capable of running the Linux Kernel.
PLEB support has yet to be fully integrated.
For more information, see:
http://www.cse.unsw.edu.au
=====
Tifon
=====
More info has to come...
Contact: Peter Danielsson <peter.danielsson@era-t.ericsson.se>
====
Yopy
====
See http://www.yopydeveloper.org for more.
.. SPDX-License-Identifier: GPL-2.0 .. SPDX-License-Identifier: GPL-2.0
========================== ==========================
Samsung S3C24XX SoC Family Samsung S3C24XX SoC Family
========================== ==========================
......
===================================
cfag12864b LCD Driver Documentation
===================================
License: GPLv2
Author & Maintainer: Miguel Ojeda Sandonis
Date: 2006-10-27
--------
0. INDEX
--------
1. DRIVER INFORMATION
2. DEVICE INFORMATION
3. WIRING
4. USERSPACE PROGRAMMING
---------------------
1. DRIVER INFORMATION
---------------------
This driver supports a cfag12864b LCD.
---------------------
2. DEVICE INFORMATION
---------------------
Manufacturer: Crystalfontz
Device Name: Crystalfontz 12864b LCD Series
Device Code: cfag12864b
Webpage: http://www.crystalfontz.com
Device Webpage: http://www.crystalfontz.com/products/12864b/
Type: LCD (Liquid Crystal Display)
Width: 128
Height: 64
Colors: 2 (B/N)
Controller: ks0108
Controllers: 2
Pages: 8 each controller
Addresses: 64 each page
Data size: 1 byte each address
Memory size: 2 * 8 * 64 * 1 = 1024 bytes = 1 Kbyte
---------
3. WIRING
---------
The cfag12864b LCD Series don't have official wiring.
The common wiring is done to the parallel port as shown:
Parallel Port cfag12864b
Name Pin# Pin# Name
Strobe ( 1)------------------------------(17) Enable
Data 0 ( 2)------------------------------( 4) Data 0
Data 1 ( 3)------------------------------( 5) Data 1
Data 2 ( 4)------------------------------( 6) Data 2
Data 3 ( 5)------------------------------( 7) Data 3
Data 4 ( 6)------------------------------( 8) Data 4
Data 5 ( 7)------------------------------( 9) Data 5
Data 6 ( 8)------------------------------(10) Data 6
Data 7 ( 9)------------------------------(11) Data 7
(10) [+5v]---( 1) Vdd
(11) [GND]---( 2) Ground
(12) [+5v]---(14) Reset
(13) [GND]---(15) Read / Write
Line (14)------------------------------(13) Controller Select 1
(15)
Init (16)------------------------------(12) Controller Select 2
Select (17)------------------------------(16) Data / Instruction
Ground (18)---[GND] [+5v]---(19) LED +
Ground (19)---[GND]
Ground (20)---[GND] E A Values:
Ground (21)---[GND] [GND]---[P1]---(18) Vee - R = Resistor = 22 ohm
Ground (22)---[GND] | - P1 = Preset = 10 Kohm
Ground (23)---[GND] ---- S ------( 3) V0 - P2 = Preset = 1 Kohm
Ground (24)---[GND] | |
Ground (25)---[GND] [GND]---[P2]---[R]---(20) LED -
------------------------
4. USERSPACE PROGRAMMING
------------------------
The cfag12864bfb describes a framebuffer device (/dev/fbX).
It has a size of 1024 bytes = 1 Kbyte.
Each bit represents one pixel. If the bit is high, the pixel will
turn on. If the pixel is low, the pixel will turn off.
You can use the framebuffer as a file: fopen, fwrite, fclose...
Although the LCD won't get updated until the next refresh time arrives.
Also, you can mmap the framebuffer: open & mmap, munmap & close...
which is the best option for most uses.
Check samples/auxdisplay/cfag12864b-example.c
for a real working userspace complete program with usage examples.
...@@ -25,6 +25,7 @@ Core utilities ...@@ -25,6 +25,7 @@ Core utilities
librs librs
genalloc genalloc
errseq errseq
packing
printk-formats printk-formats
circular-buffers circular-buffers
generic-radix-tree generic-radix-tree
...@@ -48,7 +49,7 @@ Interfaces for kernel debugging ...@@ -48,7 +49,7 @@ Interfaces for kernel debugging
debug-objects debug-objects
tracepoint tracepoint
.. only:: subproject .. only:: subproject and html
Indices Indices
======= =======
......
...@@ -30,6 +30,7 @@ The solution ...@@ -30,6 +30,7 @@ The solution
------------ ------------
This API deals with 2 basic operations: This API deals with 2 basic operations:
- Packing a CPU-usable number into a memory buffer (with hardware - Packing a CPU-usable number into a memory buffer (with hardware
constraints/quirks) constraints/quirks)
- Unpacking a memory buffer (which has hardware constraints/quirks) - Unpacking a memory buffer (which has hardware constraints/quirks)
...@@ -49,10 +50,12 @@ What the examples show is where the logical bytes and bits sit. ...@@ -49,10 +50,12 @@ What the examples show is where the logical bytes and bits sit.
1. Normally (no quirks), we would do it like this: 1. Normally (no quirks), we would do it like this:
63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 ::
7 6 5 4
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
3 2 1 0 7 6 5 4
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
3 2 1 0
That is, the MSByte (7) of the CPU-usable u64 sits at memory offset 0, and the That is, the MSByte (7) of the CPU-usable u64 sits at memory offset 0, and the
LSByte (0) of the u64 sits at memory offset 7. LSByte (0) of the u64 sits at memory offset 7.
...@@ -63,10 +66,12 @@ comments as "logical" notation. ...@@ -63,10 +66,12 @@ comments as "logical" notation.
2. If QUIRK_MSB_ON_THE_RIGHT is set, we do it like this: 2. If QUIRK_MSB_ON_THE_RIGHT is set, we do it like this:
56 57 58 59 60 61 62 63 48 49 50 51 52 53 54 55 40 41 42 43 44 45 46 47 32 33 34 35 36 37 38 39 ::
7 6 5 4
24 25 26 27 28 29 30 31 16 17 18 19 20 21 22 23 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 56 57 58 59 60 61 62 63 48 49 50 51 52 53 54 55 40 41 42 43 44 45 46 47 32 33 34 35 36 37 38 39
3 2 1 0 7 6 5 4
24 25 26 27 28 29 30 31 16 17 18 19 20 21 22 23 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7
3 2 1 0
That is, QUIRK_MSB_ON_THE_RIGHT does not affect byte positioning, but That is, QUIRK_MSB_ON_THE_RIGHT does not affect byte positioning, but
inverts bit offsets inside a byte. inverts bit offsets inside a byte.
...@@ -74,10 +79,12 @@ inverts bit offsets inside a byte. ...@@ -74,10 +79,12 @@ inverts bit offsets inside a byte.
3. If QUIRK_LITTLE_ENDIAN is set, we do it like this: 3. If QUIRK_LITTLE_ENDIAN is set, we do it like this:
39 38 37 36 35 34 33 32 47 46 45 44 43 42 41 40 55 54 53 52 51 50 49 48 63 62 61 60 59 58 57 56 ::
4 5 6 7
7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 23 22 21 20 19 18 17 16 31 30 29 28 27 26 25 24 39 38 37 36 35 34 33 32 47 46 45 44 43 42 41 40 55 54 53 52 51 50 49 48 63 62 61 60 59 58 57 56
0 1 2 3 4 5 6 7
7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 23 22 21 20 19 18 17 16 31 30 29 28 27 26 25 24
0 1 2 3
Therefore, QUIRK_LITTLE_ENDIAN means that inside the memory region, every Therefore, QUIRK_LITTLE_ENDIAN means that inside the memory region, every
byte from each 4-byte word is placed at its mirrored position compared to byte from each 4-byte word is placed at its mirrored position compared to
...@@ -86,18 +93,22 @@ the boundary of that word. ...@@ -86,18 +93,22 @@ the boundary of that word.
4. If QUIRK_MSB_ON_THE_RIGHT and QUIRK_LITTLE_ENDIAN are both set, we do it 4. If QUIRK_MSB_ON_THE_RIGHT and QUIRK_LITTLE_ENDIAN are both set, we do it
like this: like this:
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 ::
4 5 6 7
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 1 2 3
5. If just QUIRK_LSW32_IS_FIRST is set, we do it like this: 5. If just QUIRK_LSW32_IS_FIRST is set, we do it like this:
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 ::
3 2 1 0
63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32
7 6 5 4
In this case the 8 byte memory region is interpreted as follows: first In this case the 8 byte memory region is interpreted as follows: first
4 bytes correspond to the least significant 4-byte word, next 4 bytes to 4 bytes correspond to the least significant 4-byte word, next 4 bytes to
...@@ -107,28 +118,34 @@ the more significant 4-byte word. ...@@ -107,28 +118,34 @@ the more significant 4-byte word.
6. If QUIRK_LSW32_IS_FIRST and QUIRK_MSB_ON_THE_RIGHT are set, we do it like 6. If QUIRK_LSW32_IS_FIRST and QUIRK_MSB_ON_THE_RIGHT are set, we do it like
this: this:
24 25 26 27 28 29 30 31 16 17 18 19 20 21 22 23 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 ::
3 2 1 0
56 57 58 59 60 61 62 63 48 49 50 51 52 53 54 55 40 41 42 43 44 45 46 47 32 33 34 35 36 37 38 39 24 25 26 27 28 29 30 31 16 17 18 19 20 21 22 23 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7
7 6 5 4 3 2 1 0
56 57 58 59 60 61 62 63 48 49 50 51 52 53 54 55 40 41 42 43 44 45 46 47 32 33 34 35 36 37 38 39
7 6 5 4
7. If QUIRK_LSW32_IS_FIRST and QUIRK_LITTLE_ENDIAN are set, it looks like 7. If QUIRK_LSW32_IS_FIRST and QUIRK_LITTLE_ENDIAN are set, it looks like
this: this:
7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 23 22 21 20 19 18 17 16 31 30 29 28 27 26 25 24 ::
0 1 2 3
39 38 37 36 35 34 33 32 47 46 45 44 43 42 41 40 55 54 53 52 51 50 49 48 63 62 61 60 59 58 57 56 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 23 22 21 20 19 18 17 16 31 30 29 28 27 26 25 24
4 5 6 7 0 1 2 3
39 38 37 36 35 34 33 32 47 46 45 44 43 42 41 40 55 54 53 52 51 50 49 48 63 62 61 60 59 58 57 56
4 5 6 7
8. If QUIRK_LSW32_IS_FIRST, QUIRK_LITTLE_ENDIAN and QUIRK_MSB_ON_THE_RIGHT 8. If QUIRK_LSW32_IS_FIRST, QUIRK_LITTLE_ENDIAN and QUIRK_MSB_ON_THE_RIGHT
are set, it looks like this: are set, it looks like this:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ::
0 1 2 3
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
4 5 6 7 0 1 2 3
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
4 5 6 7
We always think of our offsets as if there were no quirk, and we translate We always think of our offsets as if there were no quirk, and we translate
......
...@@ -13,10 +13,10 @@ Integer types ...@@ -13,10 +13,10 @@ Integer types
If variable is of Type, use printk format specifier: If variable is of Type, use printk format specifier:
------------------------------------------------------------ ------------------------------------------------------------
char %hhd or %hhx char %d or %x
unsigned char %hhu or %hhx unsigned char %u or %x
short int %hd or %hx short int %d or %x
unsigned short int %hu or %hx unsigned short int %u or %x
int %d or %x int %d or %x
unsigned int %u or %x unsigned int %u or %x
long %ld or %lx long %ld or %lx
...@@ -25,10 +25,10 @@ Integer types ...@@ -25,10 +25,10 @@ Integer types
unsigned long long %llu or %llx unsigned long long %llu or %llx
size_t %zu or %zx size_t %zu or %zx
ssize_t %zd or %zx ssize_t %zd or %zx
s8 %hhd or %hhx s8 %d or %x
u8 %hhu or %hhx u8 %u or %x
s16 %hd or %hx s16 %d or %x
u16 %hu or %hx u16 %u or %x
s32 %d or %x s32 %d or %x
u32 %u or %x u32 %u or %x
s64 %lld or %llx s64 %lld or %llx
......
...@@ -42,7 +42,7 @@ Optional properties: ...@@ -42,7 +42,7 @@ Optional properties:
This means that no unrelated I2C transactions are allowed on the parent I2C This means that no unrelated I2C transactions are allowed on the parent I2C
adapter for the complete multiplexed I2C transaction. adapter for the complete multiplexed I2C transaction.
The properties of mux-locked and parent-locked multiplexers are discussed The properties of mux-locked and parent-locked multiplexers are discussed
in more detail in Documentation/i2c/i2c-topology. in more detail in Documentation/i2c/i2c-topology.rst.
For each i2c child node, an I2C child bus will be created. They will For each i2c child node, an I2C child bus will be created. They will
be numbered based on their order in the device tree. be numbered based on their order in the device tree.
......
...@@ -4,7 +4,7 @@ Allwinner SUN8I audio codec ...@@ -4,7 +4,7 @@ Allwinner SUN8I audio codec
On Sun8i-A33 SoCs, the audio is separated in different parts: On Sun8i-A33 SoCs, the audio is separated in different parts:
- A DAI driver. It uses the "sun4i-i2s" driver which is - A DAI driver. It uses the "sun4i-i2s" driver which is
documented here: documented here:
Documentation/devicetree/bindings/sound/sun4i-i2s.txt Documentation/devicetree/bindings/sound/allwinner,sun4i-a10-i2s.yaml
- An analog part of the codec which is handled as PRCM registers. - An analog part of the codec which is handled as PRCM registers.
See Documentation/devicetree/bindings/sound/sun8i-codec-analog.txt See Documentation/devicetree/bindings/sound/sun8i-codec-analog.txt
- An digital part of the codec which is documented in this current - An digital part of the codec which is documented in this current
......
# Writing DeviceTree Bindings in json-schema :orphan:
Writing DeviceTree Bindings in json-schema
==========================================
Devicetree bindings are written using json-schema vocabulary. Schema files are Devicetree bindings are written using json-schema vocabulary. Schema files are
written in a JSON compatible subset of YAML. YAML is used instead of JSON as it written in a JSON compatible subset of YAML. YAML is used instead of JSON as it
considered more human readable and has some advantages such as allowing considered more human readable and has some advantages such as allowing
comments (Prefixed with '#'). comments (Prefixed with '#').
## Schema Contents Schema Contents
---------------
Each schema doc is a structured json-schema which is defined by a set of Each schema doc is a structured json-schema which is defined by a set of
top-level properties. Generally, there is one binding defined per file. The top-level properties. Generally, there is one binding defined per file. The
top-level json-schema properties used are: top-level json-schema properties used are:
- __$id__ - A json-schema unique identifier string. The string must be a valid $id
URI typically containing the binding's filename and path. For DT schema, it must A json-schema unique identifier string. The string must be a valid
begin with "http://devicetree.org/schemas/". The URL is used in constructing URI typically containing the binding's filename and path. For DT schema, it must
references to other files specified in schema "$ref" properties. A $ref values begin with "http://devicetree.org/schemas/". The URL is used in constructing
with a leading '/' will have the hostname prepended. A $ref value a relative references to other files specified in schema "$ref" properties. A $ref values
path or filename only will be prepended with the hostname and path components with a leading '/' will have the hostname prepended. A $ref value a relative
of the current schema file's '$id' value. A URL is used even for local files, path or filename only will be prepended with the hostname and path components
but there may not actually be files present at those locations. of the current schema file's '$id' value. A URL is used even for local files,
but there may not actually be files present at those locations.
- __$schema__ - Indicates the meta-schema the schema file adheres to.
$schema
- __title__ - A one line description on the contents of the binding schema. Indicates the meta-schema the schema file adheres to.
- __maintainers__ - A DT specific property. Contains a list of email address(es) title
for maintainers of this binding. A one line description on the contents of the binding schema.
- __description__ - Optional. A multi-line text block containing any detailed maintainers
information about this binding. It should contain things such as what the block A DT specific property. Contains a list of email address(es)
or device does, standards the device conforms to, and links to datasheets for for maintainers of this binding.
more information.
description
- __select__ - Optional. A json-schema used to match nodes for applying the Optional. A multi-line text block containing any detailed
schema. By default without 'select', nodes are matched against their possible information about this binding. It should contain things such as what the block
compatible string values or node name. Most bindings should not need select. or device does, standards the device conforms to, and links to datasheets for
more information.
- __allOf__ - Optional. A list of other schemas to include. This is used to
include other schemas the binding conforms to. This may be schemas for a select
particular class of devices such as I2C or SPI controllers. Optional. A json-schema used to match nodes for applying the
schema. By default without 'select', nodes are matched against their possible
- __properties__ - A set of sub-schema defining all the DT properties for the compatible string values or node name. Most bindings should not need select.
binding. The exact schema syntax depends on whether properties are known,
common properties (e.g. 'interrupts') or are binding/vendor specific properties. allOf
Optional. A list of other schemas to include. This is used to
A property can also define a child DT node with child properties defined include other schemas the binding conforms to. This may be schemas for a
particular class of devices such as I2C or SPI controllers.
properties
A set of sub-schema defining all the DT properties for the
binding. The exact schema syntax depends on whether properties are known,
common properties (e.g. 'interrupts') or are binding/vendor specific properties.
A property can also define a child DT node with child properties defined
under it. under it.
For more details on properties sections, see 'Property Schema' section. For more details on properties sections, see 'Property Schema' section.
- __patternProperties__ - Optional. Similar to 'properties', but names are regex. patternProperties
Optional. Similar to 'properties', but names are regex.
- __required__ - A list of DT properties from the 'properties' section that required
must always be present. A list of DT properties from the 'properties' section that
must always be present.
- __examples__ - Optional. A list of one or more DTS hunks implementing the examples
binding. Note: YAML doesn't allow leading tabs, so spaces must be used instead. Optional. A list of one or more DTS hunks implementing the
binding. Note: YAML doesn't allow leading tabs, so spaces must be used instead.
Unless noted otherwise, all properties are required. Unless noted otherwise, all properties are required.
## Property Schema Property Schema
---------------
The 'properties' section of the schema contains all the DT properties for a The 'properties' section of the schema contains all the DT properties for a
binding. Each property contains a set of constraints using json-schema binding. Each property contains a set of constraints using json-schema
...@@ -89,42 +105,49 @@ The YAML Devicetree format also makes all string values an array and scalar ...@@ -89,42 +105,49 @@ The YAML Devicetree format also makes all string values an array and scalar
values a matrix (in order to define groupings) even when only a single value values a matrix (in order to define groupings) even when only a single value
is present. Single entries in schemas are fixed up to match this encoding. is present. Single entries in schemas are fixed up to match this encoding.
## Testing Testing
-------
### Dependencies Dependencies
~~~~~~~~~~~~
The DT schema project must be installed in order to validate the DT schema The DT schema project must be installed in order to validate the DT schema
binding documents and validate DTS files using the DT schema. The DT schema binding documents and validate DTS files using the DT schema. The DT schema
project can be installed with pip: project can be installed with pip::
`pip3 install git+https://github.com/devicetree-org/dt-schema.git@master` pip3 install git+https://github.com/devicetree-org/dt-schema.git@master
dtc must also be built with YAML output support enabled. This requires that dtc must also be built with YAML output support enabled. This requires that
libyaml and its headers be installed on the host system. libyaml and its headers be installed on the host system.
### Running checks Running checks
~~~~~~~~~~~~~~
The DT schema binding documents must be validated using the meta-schema (the The DT schema binding documents must be validated using the meta-schema (the
schema for the schema) to ensure they are both valid json-schema and valid schema for the schema) to ensure they are both valid json-schema and valid
binding schema. All of the DT binding documents can be validated using the binding schema. All of the DT binding documents can be validated using the
`dt_binding_check` target: ``dt_binding_check`` target::
`make dt_binding_check` make dt_binding_check
In order to perform validation of DT source files, use the `dtbs_check` target: In order to perform validation of DT source files, use the `dtbs_check` target::
`make dtbs_check` make dtbs_check
This will first run the `dt_binding_check` which generates the processed schema. This will first run the `dt_binding_check` which generates the processed schema.
It is also possible to run checks with a single schema file by setting the It is also possible to run checks with a single schema file by setting the
'DT_SCHEMA_FILES' variable to a specific schema file. ``DT_SCHEMA_FILES`` variable to a specific schema file.
::
make dtbs_check DT_SCHEMA_FILES=Documentation/devicetree/bindings/trivial-devices.yaml
`make dtbs_check DT_SCHEMA_FILES=Documentation/devicetree/bindings/trivial-devices.yaml`
json-schema Resources
---------------------
## json-schema Resources
[JSON-Schema Specifications](http://json-schema.org/) `JSON-Schema Specifications <http://json-schema.org/>`_
[Using JSON Schema Book](http://usingjsonschema.com/) `Using JSON Schema Book <http://usingjsonschema.com/>`_
...@@ -47,7 +47,7 @@ This book adds some notes about PXA DMA ...@@ -47,7 +47,7 @@ This book adds some notes about PXA DMA
pxa_dma pxa_dma
.. only:: subproject .. only:: subproject and html
Indices Indices
======= =======
......
...@@ -65,6 +65,7 @@ available subsections can be seen below. ...@@ -65,6 +65,7 @@ available subsections can be seen below.
dmaengine/index dmaengine/index
slimbus slimbus
soundwire/index soundwire/index
thermal/index
fpga/index fpga/index
acpi/index acpi/index
backlight/lp855x-driver.rst backlight/lp855x-driver.rst
...@@ -75,6 +76,7 @@ available subsections can be seen below. ...@@ -75,6 +76,7 @@ available subsections can be seen below.
dell_rbu dell_rbu
edid edid
eisa eisa
ipmb
isa isa
isapnp isapnp
generic-counter generic-counter
......
...@@ -83,7 +83,7 @@ Instantiate the device ...@@ -83,7 +83,7 @@ Instantiate the device
---------------------- ----------------------
After loading the driver, you can instantiate the device as After loading the driver, you can instantiate the device as
described in 'Documentation/i2c/instantiating-devices'. described in 'Documentation/i2c/instantiating-devices.rst'.
If you have multiple BMCs, each connected to your Satellite MC via If you have multiple BMCs, each connected to your Satellite MC via
a different I2C bus, you can instantiate a device for each of a different I2C bus, you can instantiate a device for each of
those BMCs. those BMCs.
......
...@@ -59,7 +59,7 @@ Part III - How can drivers use the framework? ...@@ -59,7 +59,7 @@ Part III - How can drivers use the framework?
The main API is spi_nor_scan(). Before you call the hook, a driver should The main API is spi_nor_scan(). Before you call the hook, a driver should
initialize the necessary fields for spi_nor{}. Please see initialize the necessary fields for spi_nor{}. Please see
drivers/mtd/spi-nor/spi-nor.c for detail. Please also refer to fsl-quadspi.c drivers/mtd/spi-nor/spi-nor.c for detail. Please also refer to spi-fsl-qspi.c
when you want to write a new driver for a SPI NOR controller. when you want to write a new driver for a SPI NOR controller.
Another API is spi_nor_restore(), this is used to restore the status of SPI Another API is spi_nor_restore(), this is used to restore the status of SPI
flash chip such as addressing mode. Call it whenever detach the driver from flash chip such as addressing mode. Call it whenever detach the driver from
......
...@@ -10,7 +10,7 @@ SoundWire Documentation ...@@ -10,7 +10,7 @@ SoundWire Documentation
error_handling error_handling
locking locking
.. only:: subproject .. only:: subproject and html
Indices Indices
======= =======
......
:orphan: .. SPDX-License-Identifier: GPL-2.0
======= =======
Thermal Thermal
......
...@@ -552,7 +552,7 @@ emul_temp ...@@ -552,7 +552,7 @@ emul_temp
sustainable_power sustainable_power
An estimate of the sustained power that can be dissipated by An estimate of the sustained power that can be dissipated by
the thermal zone. Used by the power allocator governor. For the thermal zone. Used by the power allocator governor. For
more information see Documentation/thermal/power_allocator.rst more information see Documentation/driver-api/thermal/power_allocator.rst
Unit: milliwatts Unit: milliwatts
...@@ -563,7 +563,7 @@ k_po ...@@ -563,7 +563,7 @@ k_po
controller during temperature overshoot. Temperature overshoot controller during temperature overshoot. Temperature overshoot
is when the current temperature is above the "desired is when the current temperature is above the "desired
temperature" trip point. For more information see temperature" trip point. For more information see
Documentation/thermal/power_allocator.rst Documentation/driver-api/thermal/power_allocator.rst
RW, Optional RW, Optional
...@@ -572,7 +572,7 @@ k_pu ...@@ -572,7 +572,7 @@ k_pu
controller during temperature undershoot. Temperature undershoot controller during temperature undershoot. Temperature undershoot
is when the current temperature is below the "desired is when the current temperature is below the "desired
temperature" trip point. For more information see temperature" trip point. For more information see
Documentation/thermal/power_allocator.rst Documentation/driver-api/thermal/power_allocator.rst
RW, Optional RW, Optional
...@@ -580,14 +580,14 @@ k_i ...@@ -580,14 +580,14 @@ k_i
The integral term of the power allocator governor's PID The integral term of the power allocator governor's PID
controller. This term allows the PID controller to compensate controller. This term allows the PID controller to compensate
for long term drift. For more information see for long term drift. For more information see
Documentation/thermal/power_allocator.rst Documentation/driver-api/thermal/power_allocator.rst
RW, Optional RW, Optional
k_d k_d
The derivative term of the power allocator governor's PID The derivative term of the power allocator governor's PID
controller. For more information see controller. For more information see
Documentation/thermal/power_allocator.rst Documentation/driver-api/thermal/power_allocator.rst
RW, Optional RW, Optional
...@@ -598,7 +598,7 @@ integral_cutoff ...@@ -598,7 +598,7 @@ integral_cutoff
example, if integral_cutoff is 0, then the integral term only example, if integral_cutoff is 0, then the integral term only
accumulates error when temperature is above the desired accumulates error when temperature is above the desired
temperature trip point. For more information see temperature trip point. For more information see
Documentation/thermal/power_allocator.rst Documentation/driver-api/thermal/power_allocator.rst
Unit: millidegree Celsius Unit: millidegree Celsius
......
...@@ -40,7 +40,7 @@ This contains two trip points: ...@@ -40,7 +40,7 @@ This contains two trip points:
- trip_point_1_temp - trip_point_1_temp
User can set any temperature between 0 to TJ-Max temperature. Temperature units User can set any temperature between 0 to TJ-Max temperature. Temperature units
are in milli-degree Celsius. Refer to "Documentation/thermal/sysfs-api.rst" for are in milli-degree Celsius. Refer to "Documentation/driver-api/thermal/sysfs-api.rst" for
thermal sys-fs details. thermal sys-fs details.
Any value other than 0 in these trip points, can trigger thermal notifications. Any value other than 0 in these trip points, can trigger thermal notifications.
......
...@@ -30,5 +30,5 @@ ...@@ -30,5 +30,5 @@
| um: | TODO | | um: | TODO |
| unicore32: | TODO | | unicore32: | TODO |
| x86: | ok | | x86: | ok |
| xtensa: | TODO | | xtensa: | ok |
----------------------- -----------------------
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
| alpha: | TODO | | alpha: | TODO |
| arc: | TODO | | arc: | TODO |
| arm: | TODO | | arm: | TODO |
| arm64: | TODO | | arm64: | ok |
| c6x: | TODO | | c6x: | TODO |
| csky: | TODO | | csky: | TODO |
| h8300: | TODO | | h8300: | TODO |
...@@ -30,5 +30,5 @@ ...@@ -30,5 +30,5 @@
| um: | TODO | | um: | TODO |
| unicore32: | TODO | | unicore32: | TODO |
| x86: | ok | | x86: | ok |
| xtensa: | TODO | | xtensa: | ok |
----------------------- -----------------------
#
# Feature name: rwsem-optimized
# Kconfig: !RWSEM_GENERIC_SPINLOCK
# description: arch provides optimized rwsem APIs
#
-----------------------
| arch |status|
-----------------------
| alpha: | ok |
| arc: | TODO |
| arm: | ok |
| arm64: | ok |
| c6x: | TODO |
| csky: | TODO |
| h8300: | TODO |
| hexagon: | TODO |
| ia64: | ok |
| m68k: | TODO |
| microblaze: | TODO |
| mips: | TODO |
| nds32: | TODO |
| nios2: | TODO |
| openrisc: | TODO |
| parisc: | TODO |
| powerpc: | TODO |
| riscv: | TODO |
| s390: | ok |
| sh: | ok |
| sparc: | ok |
| um: | ok |
| unicore32: | TODO |
| x86: | ok |
| xtensa: | ok |
-----------------------
...@@ -421,14 +421,14 @@ kernel support. ...@@ -421,14 +421,14 @@ kernel support.
The CodaCred structure defines a variety of user and group ids as The CodaCred structure defines a variety of user and group ids as
they are set for the calling process. The vuid_t and guid_t are 32 bit they are set for the calling process. The vuid_t and vgid_t are 32 bit
unsigned integers. It also defines group membership in an array. On unsigned integers. It also defines group membership in an array. On
Unix the CodaCred has proven sufficient to implement good security Unix the CodaCred has proven sufficient to implement good security
semantics for Coda but the structure may have to undergo modification semantics for Coda but the structure may have to undergo modification
for the Windows environment when these mature. for the Windows environment when these mature.
struct CodaCred { struct CodaCred {
vuid_t cr_uid, cr_euid, cr_suid, cr_fsuid; /* Real, effective, set, fs uid*/ vuid_t cr_uid, cr_euid, cr_suid, cr_fsuid; /* Real, effective, set, fs uid */
vgid_t cr_gid, cr_egid, cr_sgid, cr_fsgid; /* same for groups */ vgid_t cr_gid, cr_egid, cr_sgid, cr_fsgid; /* same for groups */
vgid_t cr_groups[NGROUPS]; /* Group membership for caller */ vgid_t cr_groups[NGROUPS]; /* Group membership for caller */
}; };
......
Locking scheme used for directory operations is based on two =================
Directory Locking
=================
Locking scheme used for directory operations is based on two
kinds of locks - per-inode (->i_rwsem) and per-filesystem kinds of locks - per-inode (->i_rwsem) and per-filesystem
(->s_vfs_rename_mutex). (->s_vfs_rename_mutex).
When taking the i_rwsem on multiple non-directory objects, we When taking the i_rwsem on multiple non-directory objects, we
always acquire the locks in order by increasing address. We'll call always acquire the locks in order by increasing address. We'll call
that "inode pointer" order in the following. that "inode pointer" order in the following.
For our purposes all operations fall in 5 classes: For our purposes all operations fall in 5 classes:
1) read access. Locking rules: caller locks directory we are accessing. 1) read access. Locking rules: caller locks directory we are accessing.
The lock is taken shared. The lock is taken shared.
...@@ -27,14 +32,17 @@ NB: we might get away with locking the the source (and target in exchange ...@@ -27,14 +32,17 @@ NB: we might get away with locking the the source (and target in exchange
case) shared. case) shared.
5) link creation. Locking rules: 5) link creation. Locking rules:
* lock parent * lock parent
* check that source is not a directory * check that source is not a directory
* lock source * lock source
* call the method. * call the method.
All locks are exclusive. All locks are exclusive.
6) cross-directory rename. The trickiest in the whole bunch. Locking 6) cross-directory rename. The trickiest in the whole bunch. Locking
rules: rules:
* lock the filesystem * lock the filesystem
* lock parents in "ancestors first" order. * lock parents in "ancestors first" order.
* find source and target. * find source and target.
...@@ -46,6 +54,7 @@ rules: ...@@ -46,6 +54,7 @@ rules:
* If the target exists, lock it. If the source is a non-directory, * If the target exists, lock it. If the source is a non-directory,
lock it. If we need to lock both, do so in inode pointer order. lock it. If we need to lock both, do so in inode pointer order.
* call the method. * call the method.
All ->i_rwsem are taken exclusive. Again, we might get away with locking All ->i_rwsem are taken exclusive. Again, we might get away with locking
the the source (and target in exchange case) shared. the the source (and target in exchange case) shared.
...@@ -54,10 +63,11 @@ read, modified or removed by method will be locked by caller. ...@@ -54,10 +63,11 @@ read, modified or removed by method will be locked by caller.
If no directory is its own ancestor, the scheme above is deadlock-free. If no directory is its own ancestor, the scheme above is deadlock-free.
Proof: Proof:
First of all, at any moment we have a partial ordering of the First of all, at any moment we have a partial ordering of the
objects - A < B iff A is an ancestor of B. objects - A < B iff A is an ancestor of B.
That ordering can change. However, the following is true: That ordering can change. However, the following is true:
...@@ -77,32 +87,32 @@ objects - A < B iff A is an ancestor of B. ...@@ -77,32 +87,32 @@ objects - A < B iff A is an ancestor of B.
non-directory object, except renames, which take locks on source and non-directory object, except renames, which take locks on source and
target in inode pointer order in the case they are not directories.) target in inode pointer order in the case they are not directories.)
Now consider the minimal deadlock. Each process is blocked on Now consider the minimal deadlock. Each process is blocked on
attempt to acquire some lock and already holds at least one lock. Let's attempt to acquire some lock and already holds at least one lock. Let's
consider the set of contended locks. First of all, filesystem lock is consider the set of contended locks. First of all, filesystem lock is
not contended, since any process blocked on it is not holding any locks. not contended, since any process blocked on it is not holding any locks.
Thus all processes are blocked on ->i_rwsem. Thus all processes are blocked on ->i_rwsem.
By (3), any process holding a non-directory lock can only be By (3), any process holding a non-directory lock can only be
waiting on another non-directory lock with a larger address. Therefore waiting on another non-directory lock with a larger address. Therefore
the process holding the "largest" such lock can always make progress, and the process holding the "largest" such lock can always make progress, and
non-directory objects are not included in the set of contended locks. non-directory objects are not included in the set of contended locks.
Thus link creation can't be a part of deadlock - it can't be Thus link creation can't be a part of deadlock - it can't be
blocked on source and it means that it doesn't hold any locks. blocked on source and it means that it doesn't hold any locks.
Any contended object is either held by cross-directory rename or Any contended object is either held by cross-directory rename or
has a child that is also contended. Indeed, suppose that it is held by has a child that is also contended. Indeed, suppose that it is held by
operation other than cross-directory rename. Then the lock this operation operation other than cross-directory rename. Then the lock this operation
is blocked on belongs to child of that object due to (1). is blocked on belongs to child of that object due to (1).
It means that one of the operations is cross-directory rename. It means that one of the operations is cross-directory rename.
Otherwise the set of contended objects would be infinite - each of them Otherwise the set of contended objects would be infinite - each of them
would have a contended child and we had assumed that no object is its would have a contended child and we had assumed that no object is its
own descendent. Moreover, there is exactly one cross-directory rename own descendent. Moreover, there is exactly one cross-directory rename
(see above). (see above).
Consider the object blocking the cross-directory rename. One Consider the object blocking the cross-directory rename. One
of its descendents is locked by cross-directory rename (otherwise we of its descendents is locked by cross-directory rename (otherwise we
would again have an infinite set of contended objects). But that would again have an infinite set of contended objects). But that
means that cross-directory rename is taking locks out of order. Due means that cross-directory rename is taking locks out of order. Due
...@@ -112,7 +122,7 @@ try to acquire lock on descendent before the lock on ancestor. ...@@ -112,7 +122,7 @@ try to acquire lock on descendent before the lock on ancestor.
Contradiction. I.e. deadlock is impossible. Q.E.D. Contradiction. I.e. deadlock is impossible. Q.E.D.
These operations are guaranteed to avoid loop creation. Indeed, These operations are guaranteed to avoid loop creation. Indeed,
the only operation that could introduce loops is cross-directory rename. the only operation that could introduce loops is cross-directory rename.
Since the only new (parent, child) pair added by rename() is (new parent, Since the only new (parent, child) pair added by rename() is (new parent,
source), such loop would have to contain these objects and the rest of it source), such loop would have to contain these objects and the rest of it
...@@ -123,13 +133,13 @@ new parent had been equal to or a descendent of source since the moment when ...@@ -123,13 +133,13 @@ new parent had been equal to or a descendent of source since the moment when
we had acquired filesystem lock and rename() would fail with -ELOOP in that we had acquired filesystem lock and rename() would fail with -ELOOP in that
case. case.
While this locking scheme works for arbitrary DAGs, it relies on While this locking scheme works for arbitrary DAGs, it relies on
ability to check that directory is a descendent of another object. Current ability to check that directory is a descendent of another object. Current
implementation assumes that directory graph is a tree. This assumption is implementation assumes that directory graph is a tree. This assumption is
also preserved by all operations (cross-directory rename on a tree that would also preserved by all operations (cross-directory rename on a tree that would
not introduce a cycle will leave it a tree and link() fails for directories). not introduce a cycle will leave it a tree and link() fails for directories).
Notice that "directory" in the above == "anything that might have Notice that "directory" in the above == "anything that might have
children", so if we are going to introduce hybrid objects we will need children", so if we are going to introduce hybrid objects we will need
either to make sure that link(2) doesn't work for them or to make changes either to make sure that link(2) doesn't work for them or to make changes
in is_subdir() that would make it work even in presence of such beasts. in is_subdir() that would make it work even in presence of such beasts.
...@@ -20,6 +20,10 @@ algorithms work. ...@@ -20,6 +20,10 @@ algorithms work.
path-lookup path-lookup
api-summary api-summary
splice splice
locking
directory-locking
porting
Filesystem support layers Filesystem support layers
========================= =========================
......
:orphan:
Making Filesystems Exportable Making Filesystems Exportable
============================= =============================
...@@ -42,9 +43,9 @@ filehandle fragment, there is no automatic creation of a path prefix ...@@ -42,9 +43,9 @@ filehandle fragment, there is no automatic creation of a path prefix
for the object. This leads to two related but distinct features of for the object. This leads to two related but distinct features of
the dcache that are not needed for normal filesystem access. the dcache that are not needed for normal filesystem access.
1/ The dcache must sometimes contain objects that are not part of the 1. The dcache must sometimes contain objects that are not part of the
proper prefix. i.e that are not connected to the root. proper prefix. i.e that are not connected to the root.
2/ The dcache must be prepared for a newly found (via ->lookup) directory 2. The dcache must be prepared for a newly found (via ->lookup) directory
to already have a (non-connected) dentry, and must be able to move to already have a (non-connected) dentry, and must be able to move
that dentry into place (based on the parent and name in the that dentry into place (based on the parent and name in the
->lookup). This is particularly needed for directories as ->lookup). This is particularly needed for directories as
...@@ -52,7 +53,7 @@ the dcache that are not needed for normal filesystem access. ...@@ -52,7 +53,7 @@ the dcache that are not needed for normal filesystem access.
To implement these features, the dcache has: To implement these features, the dcache has:
a/ A dentry flag DCACHE_DISCONNECTED which is set on a. A dentry flag DCACHE_DISCONNECTED which is set on
any dentry that might not be part of the proper prefix. any dentry that might not be part of the proper prefix.
This is set when anonymous dentries are created, and cleared when a This is set when anonymous dentries are created, and cleared when a
dentry is noticed to be a child of a dentry which is in the proper dentry is noticed to be a child of a dentry which is in the proper
...@@ -71,19 +72,23 @@ a/ A dentry flag DCACHE_DISCONNECTED which is set on ...@@ -71,19 +72,23 @@ a/ A dentry flag DCACHE_DISCONNECTED which is set on
dentries. That guarantees that we won't need to hunt them down upon dentries. That guarantees that we won't need to hunt them down upon
umount. umount.
b/ A primitive for creation of secondary roots - d_obtain_root(inode). b. A primitive for creation of secondary roots - d_obtain_root(inode).
Those do _not_ bear DCACHE_DISCONNECTED. They are placed on the Those do _not_ bear DCACHE_DISCONNECTED. They are placed on the
per-superblock list (->s_roots), so they can be located at umount per-superblock list (->s_roots), so they can be located at umount
time for eviction purposes. time for eviction purposes.
c/ Helper routines to allocate anonymous dentries, and to help attach c. Helper routines to allocate anonymous dentries, and to help attach
loose directory dentries at lookup time. They are: loose directory dentries at lookup time. They are:
d_obtain_alias(inode) will return a dentry for the given inode. d_obtain_alias(inode) will return a dentry for the given inode.
If the inode already has a dentry, one of those is returned. If the inode already has a dentry, one of those is returned.
If it doesn't, a new anonymous (IS_ROOT and If it doesn't, a new anonymous (IS_ROOT and
DCACHE_DISCONNECTED) dentry is allocated and attached. DCACHE_DISCONNECTED) dentry is allocated and attached.
In the case of a directory, care is taken that only one dentry In the case of a directory, care is taken that only one dentry
can ever be attached. can ever be attached.
d_splice_alias(inode, dentry) will introduce a new dentry into the tree; d_splice_alias(inode, dentry) will introduce a new dentry into the tree;
either the passed-in dentry or a preexisting alias for the given inode either the passed-in dentry or a preexisting alias for the given inode
(such as an anonymous one created by d_obtain_alias), if appropriate. (such as an anonymous one created by d_obtain_alias), if appropriate.
...@@ -95,24 +100,24 @@ Filesystem Issues ...@@ -95,24 +100,24 @@ Filesystem Issues
For a filesystem to be exportable it must: For a filesystem to be exportable it must:
1/ provide the filehandle fragment routines described below. 1. provide the filehandle fragment routines described below.
2/ make sure that d_splice_alias is used rather than d_add 2. make sure that d_splice_alias is used rather than d_add
when ->lookup finds an inode for a given parent and name. when ->lookup finds an inode for a given parent and name.
If inode is NULL, d_splice_alias(inode, dentry) is equivalent to If inode is NULL, d_splice_alias(inode, dentry) is equivalent to::
d_add(dentry, inode), NULL d_add(dentry, inode), NULL
Similarly, d_splice_alias(ERR_PTR(err), dentry) = ERR_PTR(err) Similarly, d_splice_alias(ERR_PTR(err), dentry) = ERR_PTR(err)
Typically the ->lookup routine will simply end with a: Typically the ->lookup routine will simply end with a::
return d_splice_alias(inode, dentry); return d_splice_alias(inode, dentry);
} }
A file system implementation declares that instances of the filesystem A file system implementation declares that instances of the filesystem
are exportable by setting the s_export_op field in the struct are exportable by setting the s_export_op field in the struct
super_block. This field must point to a "struct export_operations" super_block. This field must point to a "struct export_operations"
struct which has the following members: struct which has the following members:
......
...@@ -20,7 +20,7 @@ kernel which allows different filesystem implementations to coexist. ...@@ -20,7 +20,7 @@ kernel which allows different filesystem implementations to coexist.
VFS system calls open(2), stat(2), read(2), write(2), chmod(2) and so on VFS system calls open(2), stat(2), read(2), write(2), chmod(2) and so on
are called from a process context. Filesystem locking is described in are called from a process context. Filesystem locking is described in
the document Documentation/filesystems/Locking. the document Documentation/filesystems/locking.rst.
Directory Entry Cache (dcache) Directory Entry Cache (dcache)
......
...@@ -142,7 +142,7 @@ loading the adm1021 module, then things are good. ...@@ -142,7 +142,7 @@ loading the adm1021 module, then things are good.
If nothing happens when loading the adm1021 module, and you are certain If nothing happens when loading the adm1021 module, and you are certain
that your specific Xeon processor model includes compatible sensors, you that your specific Xeon processor model includes compatible sensors, you
will have to explicitly instantiate the sensor chips from user-space. See will have to explicitly instantiate the sensor chips from user-space. See
method 4 in Documentation/i2c/instantiating-devices. Possible slave method 4 in Documentation/i2c/instantiating-devices.rst. Possible slave
addresses are 0x18, 0x1a, 0x29, 0x2b, 0x4c, or 0x4e. It is likely that addresses are 0x18, 0x1a, 0x29, 0x2b, 0x4c, or 0x4e. It is likely that
only temp2 will be correct and temp1 will have to be ignored. only temp2 will be correct and temp1 will have to be ignored.
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -30,4 +30,4 @@ The driver provides the common sysfs-interface for temperatures (see ...@@ -30,4 +30,4 @@ The driver provides the common sysfs-interface for temperatures (see
Documentation/hwmon/sysfs-interface.rst under Temperatures). Documentation/hwmon/sysfs-interface.rst under Temperatures).
Please refer how to instantiate this driver: Please refer how to instantiate this driver:
Documentation/i2c/instantiating-devices Documentation/i2c/instantiating-devices.rst
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment