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:
...@@ -12,7 +17,7 @@ side of the original CIFS Unix extensions and reviewing and implementing ...@@ -12,7 +17,7 @@ side of the original CIFS Unix extensions and reviewing and implementing
portions of the newer CIFS POSIX extensions into the Samba 3 file server. Thank portions of the newer CIFS POSIX extensions into the Samba 3 file server. Thank
Dave Boutcher of IBM Rochester (author of the OS/400 smb/cifs filesystem client) Dave Boutcher of IBM Rochester (author of the OS/400 smb/cifs filesystem client)
for proving years ago that very good smb/cifs clients could be done on Unix-like for proving years ago that very good smb/cifs clients could be done on Unix-like
operating systems. Volker Lendecke, Andrew Tridgell, Urban Widmark, John operating systems. Volker Lendecke, Andrew Tridgell, Urban Widmark, John
Newbigin and others for their work on the Linux smbfs module. Thanks to Newbigin and others for their work on the Linux smbfs module. Thanks to
the other members of the Storage Network Industry Association CIFS Technical the other members of the Storage Network Industry Association CIFS Technical
Workgroup for their work specifying this highly complex protocol and finally Workgroup for their work specifying this highly complex protocol and finally
...@@ -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
directories, the execute bit will be set if the corresponding 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
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
devices and sparse/thinly-provisioned LUNs. The FITRIM ioctl block device when blocks are freed. This is useful for SSD
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
a TRIM command to the block device is considered useful. a TRIM command to the block device is considered useful.
......
...@@ -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
UFS is a file system widely used in different operating systems. UFS is a file system widely used in different operating systems.
The problem are differences among implementations. Features of The problem are differences among implementations. Features of
some implementations are undocumented, so its hard to recognize some implementations are undocumented, so its hard to recognize
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,25 +32,29 @@ NB: we might get away with locking the the source (and target in exchange ...@@ -27,25 +32,29 @@ 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.
* if old parent is equal to or is a descendent of target * if old parent is equal to or is a descendent of target
fail with -ENOTEMPTY fail with -ENOTEMPTY
* if new parent is equal to or is a descendent of source * if new parent is equal to or is a descendent of source
fail with -ELOOP fail with -ELOOP
* If it's an exchange, lock both the source and the target. * If it's an exchange, lock both the source and the target.
* 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,48 +72,52 @@ a/ A dentry flag DCACHE_DISCONNECTED which is set on ...@@ -71,48 +72,52 @@ 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.
It returns NULL when the passed-in dentry is used, following the calling It returns NULL when the passed-in dentry is used, following the calling
convention of ->lookup. convention of ->lookup.
Filesystem Issues 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:
......
% UBIFS Authentication :orphan:
% sigma star gmbh
% 2018
# Introduction .. UBIFS Authentication
.. sigma star gmbh
.. 2018
Introduction
============
UBIFS utilizes the fscrypt framework to provide confidentiality for file UBIFS utilizes the fscrypt framework to provide confidentiality for file
contents and file names. This prevents attacks where an attacker is able to contents and file names. This prevents attacks where an attacker is able to
...@@ -33,7 +36,8 @@ existing features like key derivation can be utilized. It should however also ...@@ -33,7 +36,8 @@ existing features like key derivation can be utilized. It should however also
be possible to use UBIFS authentication without using encryption. be possible to use UBIFS authentication without using encryption.
## MTD, UBI & UBIFS MTD, UBI & UBIFS
----------------
On Linux, the MTD (Memory Technology Devices) subsystem provides a uniform On Linux, the MTD (Memory Technology Devices) subsystem provides a uniform
interface to access raw flash devices. One of the more prominent subsystems that interface to access raw flash devices. One of the more prominent subsystems that
...@@ -47,7 +51,7 @@ UBIFS is a filesystem for raw flash which operates on top of UBI. Thus, wear ...@@ -47,7 +51,7 @@ UBIFS is a filesystem for raw flash which operates on top of UBI. Thus, wear
leveling and some flash specifics are left to UBI, while UBIFS focuses on leveling and some flash specifics are left to UBI, while UBIFS focuses on
scalability, performance and recoverability. scalability, performance and recoverability.
::
+------------+ +*******+ +-----------+ +-----+ +------------+ +*******+ +-----------+ +-----+
| | * UBIFS * | UBI-BLOCK | | ... | | | * UBIFS * | UBI-BLOCK | | ... |
...@@ -84,7 +88,8 @@ persisted onto the flash directly. More details on UBIFS can also be found in ...@@ -84,7 +88,8 @@ persisted onto the flash directly. More details on UBIFS can also be found in
[UBIFS-WP]. [UBIFS-WP].
### UBIFS Index & Tree Node Cache UBIFS Index & Tree Node Cache
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Basic on-flash UBIFS entities are called *nodes*. UBIFS knows different types Basic on-flash UBIFS entities are called *nodes*. UBIFS knows different types
of nodes. Eg. data nodes (`struct ubifs_data_node`) which store chunks of file of nodes. Eg. data nodes (`struct ubifs_data_node`) which store chunks of file
...@@ -118,17 +123,18 @@ on-flash filesystem structures like the index. On every commit, the TNC nodes ...@@ -118,17 +123,18 @@ on-flash filesystem structures like the index. On every commit, the TNC nodes
marked as dirty are written to the flash to update the persisted index. marked as dirty are written to the flash to update the persisted index.
### Journal Journal
~~~~~~~
To avoid wearing out the flash, the index is only persisted (*commited*) when To avoid wearing out the flash, the index is only persisted (*commited*) when
certain conditions are met (eg. `fsync(2)`). The journal is used to record certain conditions are met (eg. ``fsync(2)``). The journal is used to record
any changes (in form of inode nodes, data nodes etc.) between commits any changes (in form of inode nodes, data nodes etc.) between commits
of the index. During mount, the journal is read from the flash and replayed of the index. During mount, the journal is read from the flash and replayed
onto the TNC (which will be created on-demand from the on-flash index). onto the TNC (which will be created on-demand from the on-flash index).
UBIFS reserves a bunch of LEBs just for the journal called *log area*. The UBIFS reserves a bunch of LEBs just for the journal called *log area*. The
amount of log area LEBs is configured on filesystem creation (using amount of log area LEBs is configured on filesystem creation (using
`mkfs.ubifs`) and stored in the superblock node. The log area contains only ``mkfs.ubifs``) and stored in the superblock node. The log area contains only
two types of nodes: *reference nodes* and *commit start nodes*. A commit start two types of nodes: *reference nodes* and *commit start nodes*. A commit start
node is written whenever an index commit is performed. Reference nodes are node is written whenever an index commit is performed. Reference nodes are
written on every journal update. Each reference node points to the position of written on every journal update. Each reference node points to the position of
...@@ -152,6 +158,7 @@ done for the last referenced LEB of the journal. Only this can become corrupt ...@@ -152,6 +158,7 @@ done for the last referenced LEB of the journal. Only this can become corrupt
because of a power cut. If the recovery fails, UBIFS will not mount. An error because of a power cut. If the recovery fails, UBIFS will not mount. An error
for every other LEB will directly cause UBIFS to fail the mount operation. for every other LEB will directly cause UBIFS to fail the mount operation.
::
| ---- LOG AREA ---- | ---------- MAIN AREA ------------ | | ---- LOG AREA ---- | ---------- MAIN AREA ------------ |
...@@ -172,10 +179,11 @@ for every other LEB will directly cause UBIFS to fail the mount operation. ...@@ -172,10 +179,11 @@ for every other LEB will directly cause UBIFS to fail the mount operation.
containing their buds containing their buds
### LEB Property Tree/Table LEB Property Tree/Table
~~~~~~~~~~~~~~~~~~~~~~~
The LEB property tree is used to store per-LEB information. This includes the The LEB property tree is used to store per-LEB information. This includes the
LEB type and amount of free and *dirty* (old, obsolete content) space [1] on LEB type and amount of free and *dirty* (old, obsolete content) space [1]_ on
the LEB. The type is important, because UBIFS never mixes index nodes with data the LEB. The type is important, because UBIFS never mixes index nodes with data
nodes on a single LEB and thus each LEB has a specific purpose. This again is nodes on a single LEB and thus each LEB has a specific purpose. This again is
useful for free space calculations. See [UBIFS-WP] for more details. useful for free space calculations. See [UBIFS-WP] for more details.
...@@ -185,19 +193,21 @@ index. Due to its smaller size it is always written as one chunk on every ...@@ -185,19 +193,21 @@ index. Due to its smaller size it is always written as one chunk on every
commit. Thus, saving the LPT is an atomic operation. commit. Thus, saving the LPT is an atomic operation.
[1] Since LEBs can only be appended and never overwritten, there is a .. [1] Since LEBs can only be appended and never overwritten, there is a
difference between free space ie. the remaining space left on the LEB to be difference between free space ie. the remaining space left on the LEB to be
written to without erasing it and previously written content that is obsolete written to without erasing it and previously written content that is obsolete
but can't be overwritten without erasing the full LEB. but can't be overwritten without erasing the full LEB.
# UBIFS Authentication UBIFS Authentication
====================
This chapter introduces UBIFS authentication which enables UBIFS to verify This chapter introduces UBIFS authentication which enables UBIFS to verify
the authenticity and integrity of metadata and file contents stored on flash. the authenticity and integrity of metadata and file contents stored on flash.
## Threat Model Threat Model
------------
UBIFS authentication enables detection of offline data modification. While it UBIFS authentication enables detection of offline data modification. While it
does not prevent it, it enables (trusted) code to check the integrity and does not prevent it, it enables (trusted) code to check the integrity and
...@@ -224,7 +234,8 @@ Additional measures like secure boot and trusted boot have to be taken to ...@@ -224,7 +234,8 @@ Additional measures like secure boot and trusted boot have to be taken to
ensure that only trusted code is executed on a device. ensure that only trusted code is executed on a device.
## Authentication Authentication
--------------
To be able to fully trust data read from flash, all UBIFS data structures To be able to fully trust data read from flash, all UBIFS data structures
stored on flash are authenticated. That is: stored on flash are authenticated. That is:
...@@ -236,7 +247,8 @@ stored on flash are authenticated. That is: ...@@ -236,7 +247,8 @@ stored on flash are authenticated. That is:
- The LPT which stores UBI LEB metadata which UBIFS uses for free space accounting - The LPT which stores UBI LEB metadata which UBIFS uses for free space accounting
### Index Authentication Index Authentication
~~~~~~~~~~~~~~~~~~~~
Through UBIFS' concept of a wandering tree, it already takes care of only Through UBIFS' concept of a wandering tree, it already takes care of only
updating and persisting changed parts from leaf node up to the root node updating and persisting changed parts from leaf node up to the root node
...@@ -260,6 +272,7 @@ include a hash. All other types of nodes will remain unchanged. This reduces ...@@ -260,6 +272,7 @@ include a hash. All other types of nodes will remain unchanged. This reduces
the storage overhead which is precious for users of UBIFS (ie. embedded the storage overhead which is precious for users of UBIFS (ie. embedded
devices). devices).
::
+---------------+ +---------------+
| Master Node | | Master Node |
...@@ -303,7 +316,8 @@ hashes to index nodes does not change this since each hash will be persisted ...@@ -303,7 +316,8 @@ hashes to index nodes does not change this since each hash will be persisted
atomically together with its respective node. atomically together with its respective node.
### Journal Authentication Journal Authentication
~~~~~~~~~~~~~~~~~~~~~~
The journal is authenticated too. Since the journal is continuously written The journal is authenticated too. Since the journal is continuously written
it is necessary to also add authentication information frequently to the it is necessary to also add authentication information frequently to the
...@@ -316,7 +330,7 @@ of the hash chain. That way a journal can be authenticated up to the last ...@@ -316,7 +330,7 @@ of the hash chain. That way a journal can be authenticated up to the last
authentication node. The tail of the journal which may not have a authentication authentication node. The tail of the journal which may not have a authentication
node cannot be authenticated and is skipped during journal replay. node cannot be authenticated and is skipped during journal replay.
We get this picture for journal authentication: We get this picture for journal authentication::
,,,,,,,, ,,,,,,,,
,......,........................................... ,......,...........................................
...@@ -352,7 +366,8 @@ the superblock struct. The superblock node is stored in LEB 0 and is only ...@@ -352,7 +366,8 @@ the superblock struct. The superblock node is stored in LEB 0 and is only
modified on feature flag or similar changes, but never on file changes. modified on feature flag or similar changes, but never on file changes.
### LPT Authentication LPT Authentication
~~~~~~~~~~~~~~~~~~
The location of the LPT root node on the flash is stored in the UBIFS master The location of the LPT root node on the flash is stored in the UBIFS master
node. Since the LPT is written and read atomically on every commit, there is node. Since the LPT is written and read atomically on every commit, there is
...@@ -363,7 +378,8 @@ be verified by verifying the authenticity of the master node and comparing the ...@@ -363,7 +378,8 @@ be verified by verifying the authenticity of the master node and comparing the
LTP hash stored there with the hash computed from the read on-flash LPT. LTP hash stored there with the hash computed from the read on-flash LPT.
## Key Management Key Management
--------------
For simplicity, UBIFS authentication uses a single key to compute the HMACs For simplicity, UBIFS authentication uses a single key to compute the HMACs
of superblock, master, commit start and reference nodes. This key has to be of superblock, master, commit start and reference nodes. This key has to be
...@@ -399,7 +415,8 @@ approach is similar to the approach proposed for fscrypt encryption policy v2 ...@@ -399,7 +415,8 @@ approach is similar to the approach proposed for fscrypt encryption policy v2
[FSCRYPT-POLICY2]. [FSCRYPT-POLICY2].
# Future Extensions Future Extensions
=================
In certain cases where a vendor wants to provide an authenticated filesystem In certain cases where a vendor wants to provide an authenticated filesystem
image to customers, it should be possible to do so without sharing the secret image to customers, it should be possible to do so without sharing the secret
...@@ -411,7 +428,8 @@ to the way the IMA/EVM subsystem deals with such situations. The HMAC key ...@@ -411,7 +428,8 @@ to the way the IMA/EVM subsystem deals with such situations. The HMAC key
will then have to be provided beforehand in the normal way. will then have to be provided beforehand in the normal way.
# References References
==========
[CRYPTSETUP2] http://www.saout.de/pipermail/dm-crypt/2017-November/005745.html [CRYPTSETUP2] http://www.saout.de/pipermail/dm-crypt/2017-November/005745.html
......
...@@ -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.
......
...@@ -75,7 +75,7 @@ Usage Notes ...@@ -75,7 +75,7 @@ Usage Notes
----------- -----------
This driver does not auto-detect devices. You will have to instantiate the This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices for devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details. details.
The ADM1075, unlike many other PMBus devices, does not support internal voltage The ADM1075, unlike many other PMBus devices, does not support internal voltage
......
...@@ -27,7 +27,7 @@ The devices communicate with the I2C protocol. All sensors are set to the same ...@@ -27,7 +27,7 @@ The devices communicate with the I2C protocol. All sensors are set to the same
I2C address 0x27 by default, so an entry with I2C_BOARD_INFO("hih6130", 0x27) I2C address 0x27 by default, so an entry with I2C_BOARD_INFO("hih6130", 0x27)
can be used in the board setup code. can be used in the board setup code.
Please see Documentation/i2c/instantiating-devices for details on how to Please see Documentation/i2c/instantiating-devices.rst for details on how to
instantiate I2C devices. instantiate I2C devices.
sysfs-Interface sysfs-Interface
......
...@@ -17,7 +17,7 @@ Usage Notes ...@@ -17,7 +17,7 @@ Usage Notes
----------- -----------
This driver does not auto-detect devices. You will have to instantiate the This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices for devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details. details.
Sysfs entries Sysfs entries
......
...@@ -76,7 +76,7 @@ Usage Notes ...@@ -76,7 +76,7 @@ Usage Notes
----------- -----------
This driver does not auto-detect devices. You will have to instantiate the This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices for devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details. details.
......
...@@ -28,7 +28,7 @@ Usage Notes ...@@ -28,7 +28,7 @@ Usage Notes
----------- -----------
This driver does not auto-detect devices. You will have to instantiate the This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices for devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details. details.
......
...@@ -79,7 +79,7 @@ Usage Notes ...@@ -79,7 +79,7 @@ Usage Notes
This driver does not probe for devices, since there is no register which This driver does not probe for devices, since there is no register which
can be safely used to identify the chip. You will have to instantiate can be safely used to identify the chip. You will have to instantiate
the devices explicitly. Please see Documentation/i2c/instantiating-devices for the devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details. details.
WARNING: Do not access chip registers using the i2cdump command, and do not use WARNING: Do not access chip registers using the i2cdump command, and do not use
......
...@@ -30,7 +30,7 @@ Usage Notes ...@@ -30,7 +30,7 @@ Usage Notes
----------- -----------
This driver does not auto-detect devices. You will have to instantiate the This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices for devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details. details.
......
...@@ -83,7 +83,7 @@ Usage Notes ...@@ -83,7 +83,7 @@ Usage Notes
----------- -----------
This driver does not auto-detect devices. You will have to instantiate the This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices for devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details. details.
For MAX34446, the value of the currX_crit attribute determines if current or For MAX34446, the value of the currX_crit attribute determines if current or
......
...@@ -55,7 +55,7 @@ Usage notes ...@@ -55,7 +55,7 @@ Usage notes
----------- -----------
This driver does not auto-detect devices. You will have to instantiate the This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices for devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details. details.
Module parameters Module parameters
......
...@@ -28,7 +28,7 @@ Usage Notes ...@@ -28,7 +28,7 @@ Usage Notes
----------- -----------
This driver does not auto-detect devices. You will have to instantiate the This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices for devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details. details.
......
...@@ -28,7 +28,7 @@ Usage Notes ...@@ -28,7 +28,7 @@ Usage Notes
This driver is part of the MFD driver named "menf21bmc" and does This driver is part of the MFD driver named "menf21bmc" and does
not auto-detect devices. not auto-detect devices.
You will have to instantiate the MFD driver explicitly. You will have to instantiate the MFD driver explicitly.
Please see Documentation/i2c/instantiating-devices for Please see Documentation/i2c/instantiating-devices.rst for
details. details.
Sysfs entries Sysfs entries
......
...@@ -68,7 +68,7 @@ Accessing PCF8591 via /sys interface ...@@ -68,7 +68,7 @@ Accessing PCF8591 via /sys interface
The PCF8591 is plainly impossible to detect! Thus the driver won't even The PCF8591 is plainly impossible to detect! Thus the driver won't even
try. You have to explicitly instantiate the device at the relevant try. You have to explicitly instantiate the device at the relevant
address (in the interval [0x48..0x4f]) either through platform data, or address (in the interval [0x48..0x4f]) either through platform data, or
using the sysfs interface. See Documentation/i2c/instantiating-devices using the sysfs interface. See Documentation/i2c/instantiating-devices.rst
for details. for details.
Directories are being created for each instantiated PCF8591: Directories are being created for each instantiated PCF8591:
......
...@@ -26,7 +26,7 @@ scaled by 1000, i.e. the value for 31.5 degrees celsius is 31500. ...@@ -26,7 +26,7 @@ scaled by 1000, i.e. the value for 31.5 degrees celsius is 31500.
The device communicates with the I2C protocol. Sensors can have the I2C The device communicates with the I2C protocol. Sensors can have the I2C
addresses 0x44 or 0x45, depending on the wiring. See addresses 0x44 or 0x45, depending on the wiring. See
Documentation/i2c/instantiating-devices for methods to instantiate the device. Documentation/i2c/instantiating-devices.rst for methods to instantiate the device.
There are two options configurable by means of sht3x_platform_data: There are two options configurable by means of sht3x_platform_data:
......
...@@ -45,7 +45,7 @@ chips, a humidity and temperature sensor. Temperature is measured in degrees ...@@ -45,7 +45,7 @@ chips, a humidity and temperature sensor. Temperature is measured in degrees
celsius, relative humidity is expressed as a percentage. celsius, relative humidity is expressed as a percentage.
The device communicates with the I2C protocol. All sensors are set to I2C The device communicates with the I2C protocol. All sensors are set to I2C
address 0x70. See Documentation/i2c/instantiating-devices for methods to address 0x70. See Documentation/i2c/instantiating-devices.rst for methods to
instantiate the device. instantiate the device.
There are two options configurable by means of shtc1_platform_data: There are two options configurable by means of shtc1_platform_data:
......
...@@ -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
...@@ -28,7 +28,7 @@ Usage Notes ...@@ -28,7 +28,7 @@ Usage Notes
----------- -----------
This driver does not auto-detect devices. You will have to instantiate the This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices for devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details. details.
......
...@@ -64,7 +64,7 @@ Usage Notes ...@@ -64,7 +64,7 @@ Usage Notes
----------- -----------
This driver does not auto-detect devices. You will have to instantiate the This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices for devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details. details.
......
...@@ -40,7 +40,7 @@ Usage Notes ...@@ -40,7 +40,7 @@ Usage Notes
----------- -----------
This driver does not auto-detect devices. You will have to instantiate the This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices for devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details. details.
......
...@@ -40,7 +40,7 @@ all as a 686A. ...@@ -40,7 +40,7 @@ all as a 686A.
The Via 686a southbridge has integrated hardware monitor functionality. The Via 686a southbridge has integrated hardware monitor functionality.
It also has an I2C bus, but this driver only supports the hardware monitor. It also has an I2C bus, but this driver only supports the hardware monitor.
For the I2C bus driver, see <file:Documentation/i2c/busses/i2c-viapro> For the I2C bus driver, see <file:Documentation/i2c/busses/i2c-viapro.rst>
The Via 686a implements three temperature sensors, two fan rotation speed The Via 686a implements three temperature sensors, two fan rotation speed
sensors, five voltage sensors and alarms. sensors, five voltage sensors and alarms.
......
...@@ -121,7 +121,7 @@ Usage Notes ...@@ -121,7 +121,7 @@ Usage Notes
----------- -----------
This driver does not auto-detect devices. You will have to instantiate the This driver does not auto-detect devices. You will have to instantiate the
devices explicitly. Please see Documentation/i2c/instantiating-devices for devices explicitly. Please see Documentation/i2c/instantiating-devices.rst for
details. details.
.. warning:: .. warning::
......
=========================
Kernel driver i2c-ali1535 Kernel driver i2c-ali1535
=========================
Supported adapters: Supported adapters:
* Acer Labs, Inc. ALI 1535 (south bridge) * Acer Labs, Inc. ALI 1535 (south bridge)
Datasheet: Now under NDA Datasheet: Now under NDA
http://www.ali.com.tw/ http://www.ali.com.tw/
Authors: Authors:
Frodo Looijaard <frodol@dds.nl>, - Frodo Looijaard <frodol@dds.nl>,
Philip Edelbrock <phil@netroedge.com>, - Philip Edelbrock <phil@netroedge.com>,
Mark D. Studebaker <mdsxyz123@yahoo.com>, - Mark D. Studebaker <mdsxyz123@yahoo.com>,
Dan Eaton <dan.eaton@rocketlogix.com>, - Dan Eaton <dan.eaton@rocketlogix.com>,
Stephen Rousset<stephen.rousset@rocketlogix.com> - Stephen Rousset<stephen.rousset@rocketlogix.com>
Description Description
----------- -----------
......
=========================
Kernel driver i2c-ali1563 Kernel driver i2c-ali1563
=========================
Supported adapters: Supported adapters:
* Acer Labs, Inc. ALI 1563 (south bridge) * Acer Labs, Inc. ALI 1563 (south bridge)
Datasheet: Now under NDA Datasheet: Now under NDA
http://www.ali.com.tw/ http://www.ali.com.tw/
......
=========================
Kernel driver i2c-ali15x3 Kernel driver i2c-ali15x3
=========================
Supported adapters: Supported adapters:
* Acer Labs, Inc. ALI 1533 and 1543C (south bridge) * Acer Labs, Inc. ALI 1533 and 1543C (south bridge)
Datasheet: Now under NDA Datasheet: Now under NDA
http://www.ali.com.tw/ http://www.ali.com.tw/
Authors: Authors:
Frodo Looijaard <frodol@dds.nl>, - Frodo Looijaard <frodol@dds.nl>,
Philip Edelbrock <phil@netroedge.com>, - Philip Edelbrock <phil@netroedge.com>,
Mark D. Studebaker <mdsxyz123@yahoo.com> - Mark D. Studebaker <mdsxyz123@yahoo.com>
Module Parameters Module Parameters
----------------- -----------------
* force_addr: int * force_addr: int
Initialize the base address of the i2c controller Initialize the base address of the i2c controller
Notes Notes
...@@ -25,7 +28,9 @@ the BIOS. Does not do a PCI force; the device must still be present in ...@@ -25,7 +28,9 @@ the BIOS. Does not do a PCI force; the device must still be present in
lspci. Don't use this unless the driver complains that the base address is lspci. Don't use this unless the driver complains that the base address is
not set. not set.
Example: 'modprobe i2c-ali15x3 force_addr=0xe800' Example::
modprobe i2c-ali15x3 force_addr=0xe800
SMBus periodically hangs on ASUS P5A motherboards and can only be cleared SMBus periodically hangs on ASUS P5A motherboards and can only be cleared
by a power cycle. Cause unknown (see Issues below). by a power cycle. Cause unknown (see Issues below).
...@@ -38,47 +43,53 @@ This is the driver for the SMB Host controller on Acer Labs Inc. (ALI) ...@@ -38,47 +43,53 @@ This is the driver for the SMB Host controller on Acer Labs Inc. (ALI)
M1541 and M1543C South Bridges. M1541 and M1543C South Bridges.
The M1543C is a South bridge for desktop systems. The M1543C is a South bridge for desktop systems.
The M1541 is a South bridge for portable systems. The M1541 is a South bridge for portable systems.
They are part of the following ALI chipsets: They are part of the following ALI chipsets:
* "Aladdin Pro 2" includes the M1621 Slot 1 North bridge with AGP and * "Aladdin Pro 2" includes the M1621 Slot 1 North bridge with AGP and
100MHz CPU Front Side bus 100MHz CPU Front Side bus
* "Aladdin V" includes the M1541 Socket 7 North bridge with AGP and 100MHz * "Aladdin V" includes the M1541 Socket 7 North bridge with AGP and 100MHz
CPU Front Side bus CPU Front Side bus
Some Aladdin V motherboards: Some Aladdin V motherboards:
Asus P5A - Asus P5A
Atrend ATC-5220 - Atrend ATC-5220
BCM/GVC VP1541 - BCM/GVC VP1541
Biostar M5ALA - Biostar M5ALA
Gigabyte GA-5AX (** Generally doesn't work because the BIOS doesn't - Gigabyte GA-5AX (Generally doesn't work because the BIOS doesn't
enable the 7101 device! **) enable the 7101 device!)
Iwill XA100 Plus - Iwill XA100 Plus
Micronics C200 - Micronics C200
Microstar (MSI) MS-5169 - Microstar (MSI) MS-5169
* "Aladdin IV" includes the M1541 Socket 7 North bridge * "Aladdin IV" includes the M1541 Socket 7 North bridge
with host bus up to 83.3 MHz. with host bus up to 83.3 MHz.
For an overview of these chips see http://www.acerlabs.com. At this time the For an overview of these chips see http://www.acerlabs.com. At this time the
full data sheets on the web site are password protected, however if you full data sheets on the web site are password protected, however if you
contact the ALI office in San Jose they may give you the password. contact the ALI office in San Jose they may give you the password.
The M1533/M1543C devices appear as FOUR separate devices on the PCI bus. An The M1533/M1543C devices appear as FOUR separate devices on the PCI bus. An
output of lspci will show something similar to the following: output of lspci will show something similar to the following::
00:02.0 USB Controller: Acer Laboratories Inc. M5237 (rev 03) 00:02.0 USB Controller: Acer Laboratories Inc. M5237 (rev 03)
00:03.0 Bridge: Acer Laboratories Inc. M7101 <= THIS IS THE ONE WE NEED 00:03.0 Bridge: Acer Laboratories Inc. M7101 <= THIS IS THE ONE WE NEED
00:07.0 ISA bridge: Acer Laboratories Inc. M1533 (rev c3) 00:07.0 ISA bridge: Acer Laboratories Inc. M1533 (rev c3)
00:0f.0 IDE interface: Acer Laboratories Inc. M5229 (rev c1) 00:0f.0 IDE interface: Acer Laboratories Inc. M5229 (rev c1)
** IMPORTANT ** .. important::
** If you have a M1533 or M1543C on the board and you get
** "ali15x3: Error: Can't detect ali15x3!" If you have a M1533 or M1543C on the board and you get
** then run lspci. "ali15x3: Error: Can't detect ali15x3!"
** If you see the 1533 and 5229 devices but NOT the 7101 device, then run lspci.
** then you must enable ACPI, the PMU, SMB, or something similar
** in the BIOS. If you see the 1533 and 5229 devices but NOT the 7101 device,
** The driver won't work if it can't find the M7101 device. then you must enable ACPI, the PMU, SMB, or something similar
in the BIOS.
The driver won't work if it can't find the M7101 device.
The SMB controller is part of the M7101 device, which is an ACPI-compliant The SMB controller is part of the M7101 device, which is an ACPI-compliant
Power Management Unit (PMU). Power Management Unit (PMU).
...@@ -109,4 +120,3 @@ There may be electrical problems on this board. ...@@ -109,4 +120,3 @@ There may be electrical problems on this board.
On the P5A, the W83781D sensor chip is on both the ISA and On the P5A, the W83781D sensor chip is on both the ISA and
SMBus. Therefore the SMBus hangs can generally be avoided SMBus. Therefore the SMBus hangs can generally be avoided
by accessing the W83781D on the ISA bus only. by accessing the W83781D on the ISA bus only.
=========================
Kernel driver i2c-amd-mp2 Kernel driver i2c-amd-mp2
=========================
Supported adapters: Supported adapters:
* AMD MP2 PCIe interface * AMD MP2 PCIe interface
...@@ -6,9 +8,9 @@ Supported adapters: ...@@ -6,9 +8,9 @@ Supported adapters:
Datasheet: not publicly available. Datasheet: not publicly available.
Authors: Authors:
Shyam Sundar S K <Shyam-sundar.S-k@amd.com> - Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
Nehal Shah <nehal-bakulchandra.shah@amd.com> - Nehal Shah <nehal-bakulchandra.shah@amd.com>
Elie Morisse <syniurge@gmail.com> - Elie Morisse <syniurge@gmail.com>
Description Description
----------- -----------
...@@ -16,8 +18,8 @@ Description ...@@ -16,8 +18,8 @@ Description
The MP2 is an ARM processor programmed as an I2C controller and communicating The MP2 is an ARM processor programmed as an I2C controller and communicating
with the x86 host through PCI. with the x86 host through PCI.
If you see something like this: If you see something like this::
03:00.7 MP2 I2C controller: Advanced Micro Devices, Inc. [AMD] Device 15e6 03:00.7 MP2 I2C controller: Advanced Micro Devices, Inc. [AMD] Device 15e6
in your 'lspci -v', then this driver is for your device. in your ``lspci -v``, then this driver is for your device.
========================
Kernel driver i2c-amd756 Kernel driver i2c-amd756
========================
Supported adapters: Supported adapters:
* AMD 756 * AMD 756
* AMD 766 * AMD 766
* AMD 768 * AMD 768
* AMD 8111 * AMD 8111
Datasheets: Publicly available on AMD website Datasheets: Publicly available on AMD website
* nVidia nForce * nVidia nForce
Datasheet: Unavailable Datasheet: Unavailable
Authors: Authors:
Frodo Looijaard <frodol@dds.nl>, - Frodo Looijaard <frodol@dds.nl>,
Philip Edelbrock <phil@netroedge.com> - Philip Edelbrock <phil@netroedge.com>
Description Description
----------- -----------
......
=========================
Kernel driver i2c-adm8111 Kernel driver i2c-adm8111
=========================
Supported adapters: Supported adapters:
* AMD-8111 SMBus 2.0 PCI interface * AMD-8111 SMBus 2.0 PCI interface
...@@ -13,14 +15,14 @@ Author: Vojtech Pavlik <vojtech@suse.cz> ...@@ -13,14 +15,14 @@ Author: Vojtech Pavlik <vojtech@suse.cz>
Description Description
----------- -----------
If you see something like this: If you see something like this::
00:07.2 SMBus: Advanced Micro Devices [AMD] AMD-8111 SMBus 2.0 (rev 02) 00:07.2 SMBus: Advanced Micro Devices [AMD] AMD-8111 SMBus 2.0 (rev 02)
Subsystem: Advanced Micro Devices [AMD] AMD-8111 SMBus 2.0 Subsystem: Advanced Micro Devices [AMD] AMD-8111 SMBus 2.0
Flags: medium devsel, IRQ 19 Flags: medium devsel, IRQ 19
I/O ports at d400 [size=32] I/O ports at d400 [size=32]
in your 'lspci -v', then this driver is for your chipset. in your ``lspci -v``, then this driver is for your chipset.
Process Call Support Process Call Support
-------------------- --------------------
......
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