Merge branch 'linus' into x86/hyperv
Pick up upstream fixes to avoid conflicts.
This commit is contained in:
commit
ac94be498f
.clang-format.gitignore.mailmapCREDITSDMA-API.txt
Documentation
ABI
stable
testing
debugfs-hisi-zipdebugfs-moxtetdev-kmsgima_policysysfs-bus-iio-dfsdm-adc-stm32sysfs-bus-iio-timer-stm32sysfs-bus-intel_th-devices-mscsysfs-bus-moxtet-devicessysfs-class-backlightsysfs-class-micsysfs-class-remoteprocsysfs-class-wakeupsysfs-class-watchdogsysfs-devices-platform-stratix10-rsusysfs-devices-powersysfs-devices-socsysfs-devices-system-cpusysfs-driver-habanalabssysfs-firmware-efisysfs-firmware-turris-mox-rwtmsysfs-fs-f2fssysfs-kernel-btfsysfs-kernel-slabsysfs-platform-dfl-fmesysfs-platform-dfl-portsysfs-power
PCI
RCU
acpi/dsd
admin-guide
auxdisplay
cgroup-v1
cgroup-v2.rstcifs
conf.pydevice-mapper
devices.txthw-vuln
index.rstjfs.rstkernel-parameters.txtkernel-per-CPU-kthreads.rstlaptops
mm
perf
sysctl
sysrq.rstufs.rstwimax
xfs.rstarm
sa1100
adsbitsy.rstassabet.rstbrutus.rstfreebird.rstgraphicsclient.rstgraphicsmaster.rsthuw_webpanel.rstindex.rstitsy.rstnanoengine.rstpangolin.rstpleb.rsttifon.rstyopy.rst
samsung-s3c24xx
sh-mobile
arm64
auxdisplay
@ -107,10 +107,13 @@ ForEachMacros:
|
||||
- 'css_for_each_descendant_post'
|
||||
- 'css_for_each_descendant_pre'
|
||||
- 'device_for_each_child_node'
|
||||
- 'dma_fence_chain_for_each'
|
||||
- 'drm_atomic_crtc_for_each_plane'
|
||||
- 'drm_atomic_crtc_state_for_each_plane'
|
||||
- 'drm_atomic_crtc_state_for_each_plane_state'
|
||||
- 'drm_atomic_for_each_plane_damage'
|
||||
- 'drm_client_for_each_connector_iter'
|
||||
- 'drm_client_for_each_modeset'
|
||||
- 'drm_connector_for_each_possible_encoder'
|
||||
- 'drm_for_each_connector_iter'
|
||||
- 'drm_for_each_crtc'
|
||||
@ -126,6 +129,7 @@ ForEachMacros:
|
||||
- 'drm_mm_for_each_node_in_range'
|
||||
- 'drm_mm_for_each_node_safe'
|
||||
- 'flow_action_for_each'
|
||||
- 'for_each_active_dev_scope'
|
||||
- 'for_each_active_drhd_unit'
|
||||
- 'for_each_active_iommu'
|
||||
- 'for_each_available_child_of_node'
|
||||
@ -153,6 +157,8 @@ ForEachMacros:
|
||||
- 'for_each_cpu_not'
|
||||
- 'for_each_cpu_wrap'
|
||||
- 'for_each_dev_addr'
|
||||
- 'for_each_dev_scope'
|
||||
- 'for_each_displayid_db'
|
||||
- 'for_each_dma_cap_mask'
|
||||
- 'for_each_dpcm_be'
|
||||
- 'for_each_dpcm_be_rollback'
|
||||
@ -169,6 +175,8 @@ ForEachMacros:
|
||||
- 'for_each_evictable_lru'
|
||||
- 'for_each_fib6_node_rt_rcu'
|
||||
- 'for_each_fib6_walker_rt'
|
||||
- 'for_each_free_mem_pfn_range_in_zone'
|
||||
- 'for_each_free_mem_pfn_range_in_zone_from'
|
||||
- 'for_each_free_mem_range'
|
||||
- 'for_each_free_mem_range_reverse'
|
||||
- 'for_each_func_rsrc'
|
||||
@ -178,6 +186,7 @@ ForEachMacros:
|
||||
- 'for_each_ip_tunnel_rcu'
|
||||
- 'for_each_irq_nr'
|
||||
- 'for_each_link_codecs'
|
||||
- 'for_each_link_platforms'
|
||||
- 'for_each_lru'
|
||||
- 'for_each_matching_node'
|
||||
- 'for_each_matching_node_and_match'
|
||||
@ -302,7 +311,10 @@ ForEachMacros:
|
||||
- 'ide_port_for_each_present_dev'
|
||||
- 'idr_for_each_entry'
|
||||
- 'idr_for_each_entry_continue'
|
||||
- 'idr_for_each_entry_continue_ul'
|
||||
- 'idr_for_each_entry_ul'
|
||||
- 'in_dev_for_each_ifa_rcu'
|
||||
- 'in_dev_for_each_ifa_rtnl'
|
||||
- 'inet_bind_bucket_for_each'
|
||||
- 'inet_lhash2_for_each_icsk_rcu'
|
||||
- 'key_for_each'
|
||||
@ -343,8 +355,6 @@ ForEachMacros:
|
||||
- 'media_device_for_each_intf'
|
||||
- 'media_device_for_each_link'
|
||||
- 'media_device_for_each_pad'
|
||||
- 'mp_bvec_for_each_page'
|
||||
- 'mp_bvec_for_each_segment'
|
||||
- 'nanddev_io_for_each_page'
|
||||
- 'netdev_for_each_lower_dev'
|
||||
- 'netdev_for_each_lower_private'
|
||||
@ -381,18 +391,19 @@ ForEachMacros:
|
||||
- 'radix_tree_for_each_slot'
|
||||
- 'radix_tree_for_each_tagged'
|
||||
- 'rbtree_postorder_for_each_entry_safe'
|
||||
- 'rdma_for_each_block'
|
||||
- 'rdma_for_each_port'
|
||||
- 'resource_list_for_each_entry'
|
||||
- 'resource_list_for_each_entry_safe'
|
||||
- 'rhl_for_each_entry_rcu'
|
||||
- 'rhl_for_each_rcu'
|
||||
- 'rht_for_each'
|
||||
- 'rht_for_each_from'
|
||||
- 'rht_for_each_entry'
|
||||
- 'rht_for_each_entry_from'
|
||||
- 'rht_for_each_entry_rcu'
|
||||
- 'rht_for_each_entry_rcu_from'
|
||||
- 'rht_for_each_entry_safe'
|
||||
- 'rht_for_each_from'
|
||||
- 'rht_for_each_rcu'
|
||||
- 'rht_for_each_rcu_from'
|
||||
- '__rq_for_each_bio'
|
||||
|
6
.gitignore
vendored
6
.gitignore
vendored
@ -32,9 +32,9 @@
|
||||
*.lzo
|
||||
*.mod
|
||||
*.mod.c
|
||||
*.ns_deps
|
||||
*.o
|
||||
*.o.*
|
||||
*.order
|
||||
*.patch
|
||||
*.s
|
||||
*.so
|
||||
@ -46,6 +46,7 @@
|
||||
*.xz
|
||||
Module.symvers
|
||||
modules.builtin
|
||||
modules.order
|
||||
|
||||
#
|
||||
# Top-level generic files
|
||||
@ -142,3 +143,6 @@ x509.genkey
|
||||
|
||||
# Kdevelop4
|
||||
*.kdev4
|
||||
|
||||
# Clang's compilation database file
|
||||
/compile_commands.json
|
||||
|
37
.mailmap
37
.mailmap
@ -47,6 +47,8 @@ Boris Brezillon <bbrezillon@kernel.org> <b.brezillon.dev@gmail.com>
|
||||
Boris Brezillon <bbrezillon@kernel.org> <b.brezillon@overkiz.com>
|
||||
Brian Avery <b.avery@hp.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>
|
||||
Christophe Ricard <christophe.ricard@gmail.com>
|
||||
Corey Minyard <minyard@acm.org>
|
||||
@ -63,7 +65,11 @@ Dengcheng Zhu <dzhu@wavecomp.com> <dengcheng.zhu@mips.com>
|
||||
Dengcheng Zhu <dzhu@wavecomp.com> <dengcheng.zhu@imgtec.com>
|
||||
Dengcheng Zhu <dzhu@wavecomp.com> <dczhu@mips.com>
|
||||
Dengcheng Zhu <dzhu@wavecomp.com> <dengcheng.zhu@gmail.com>
|
||||
<dev.kurt@vandijck-laurijssen.be> <kurt.van.dijck@eia.be>
|
||||
Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
|
||||
Dmitry Safonov <0x7f454c46@gmail.com> <dsafonov@virtuozzo.com>
|
||||
Dmitry Safonov <0x7f454c46@gmail.com> <d.safonov@partner.samsung.com>
|
||||
Dmitry Safonov <0x7f454c46@gmail.com> <dima@arista.com>
|
||||
Domen Puncer <domen@coderock.org>
|
||||
Douglas Gilbert <dougg@torque.net>
|
||||
Ed L. Cashin <ecashin@coraid.com>
|
||||
@ -77,6 +83,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@sonymobile.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 <gregkh@suse.de>
|
||||
Greg Kroah-Hartman <greg@kroah.com>
|
||||
@ -87,6 +95,9 @@ Henrik Kretzschmar <henne@nachtwindheim.de>
|
||||
Henrik Rydberg <rydberg@bitmath.org>
|
||||
Herbert Xu <herbert@gondor.apana.org.au>
|
||||
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@titanic.il.steeleye.com>
|
||||
James E Wilson <wilson@specifix.com>
|
||||
@ -97,7 +108,12 @@ Jason Gunthorpe <jgg@ziepe.ca> <jgg@mellanox.com>
|
||||
Jason Gunthorpe <jgg@ziepe.ca> <jgunthorpe@obsidianresearch.com>
|
||||
Javi Merino <javi.merino@kernel.org> <javi.merino@arm.com>
|
||||
<javier@osg.samsung.com> <javier.martinez@collabora.co.uk>
|
||||
Jayachandran C <c.jayachandran@gmail.com> <jayachandranc@netlogicmicro.com>
|
||||
Jayachandran C <c.jayachandran@gmail.com> <jchandra@broadcom.com>
|
||||
Jayachandran C <c.jayachandran@gmail.com> <jchandra@digeo.com>
|
||||
Jayachandran C <c.jayachandran@gmail.com> <jnair@caviumnetworks.com>
|
||||
Jean Tourrilhes <jt@hpl.hp.com>
|
||||
<jean-philippe@linaro.org> <jean-philippe.brucker@arm.com>
|
||||
Jeff Garzik <jgarzik@pretzel.yyz.us>
|
||||
Jeff Layton <jlayton@kernel.org> <jlayton@redhat.com>
|
||||
Jeff Layton <jlayton@kernel.org> <jlayton@poochiereds.net>
|
||||
@ -116,6 +132,7 @@ John Stultz <johnstul@us.ibm.com>
|
||||
Juha Yrjola <at solidboot.com>
|
||||
Juha Yrjola <juha.yrjola@nokia.com>
|
||||
Juha Yrjola <juha.yrjola@solidboot.com>
|
||||
Julien Thierry <julien.thierry.kdev@gmail.com> <julien.thierry@arm.com>
|
||||
Kay Sievers <kay.sievers@vrfy.org>
|
||||
Kenneth W Chen <kenneth.w.chen@intel.com>
|
||||
Konstantin Khlebnikov <koct9i@gmail.com> <k.khlebnikov@samsung.com>
|
||||
@ -132,6 +149,7 @@ Linus Lüssing <linus.luessing@c0d3.blue> <linus.luessing@ascom.ch>
|
||||
Li Yang <leoyang.li@nxp.com> <leo@zh-kernel.org>
|
||||
Li Yang <leoyang.li@nxp.com> <leoli@freescale.com>
|
||||
Maciej W. Rozycki <macro@mips.com> <macro@imgtec.com>
|
||||
Marc Zyngier <maz@kernel.org> <marc.zyngier@arm.com>
|
||||
Marcin Nowakowski <marcin.nowakowski@mips.com> <marcin.nowakowski@imgtec.com>
|
||||
Mark Brown <broonie@sirena.org.uk>
|
||||
Mark Yao <markyao0591@gmail.com> <mark.yao@rock-chips.com>
|
||||
@ -157,6 +175,8 @@ Matt Ranostay <mranostay@gmail.com> Matthew Ranostay <mranostay@embeddedalley.co
|
||||
Matt Ranostay <mranostay@gmail.com> <matt.ranostay@intel.com>
|
||||
Matt Ranostay <matt.ranostay@konsulko.com> <matt@ranostay.consulting>
|
||||
Matt Redfearn <matt.redfearn@mips.com> <matt.redfearn@imgtec.com>
|
||||
Maxime Ripard <mripard@kernel.org> <maxime.ripard@bootlin.com>
|
||||
Maxime Ripard <mripard@kernel.org> <maxime.ripard@free-electrons.com>
|
||||
Mayuresh Janorkar <mayur@ti.com>
|
||||
Michael Buesch <m@bues.ch>
|
||||
Michel Dänzer <michel@tungstengraphics.com>
|
||||
@ -170,11 +190,18 @@ Morten Welinder <welinder@darter.rentec.com>
|
||||
Morten Welinder <welinder@troll.com>
|
||||
Mythri P K <mythripk@ti.com>
|
||||
Nguyen Anh Quynh <aquynh@gmail.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> <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>
|
||||
Patrick Mochel <mochel@digitalimplant.org>
|
||||
Paul Burton <paul.burton@mips.com> <paul.burton@imgtec.com>
|
||||
Paul Burton <paulburton@kernel.org> <paul.burton@imgtec.com>
|
||||
Paul Burton <paulburton@kernel.org> <paul.burton@mips.com>
|
||||
Peter A Jonsson <pj@ludd.ltu.se>
|
||||
Peter Oruba <peter@oruba.de>
|
||||
Peter Oruba <peter.oruba@amd.com>
|
||||
@ -182,11 +209,7 @@ Pratyush Anand <pratyush.anand@gmail.com> <pratyush.anand@st.com>
|
||||
Praveen BP <praveenbp@ti.com>
|
||||
Punit Agrawal <punitagrawal@gmail.com> <punit.agrawal@arm.com>
|
||||
Qais Yousef <qsyousef@gmail.com> <qais.yousef@imgtec.com>
|
||||
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>
|
||||
Quentin Perret <qperret@qperret.net> <quentin.perret@arm.com>
|
||||
Rajesh Shah <rajesh.shah@intel.com>
|
||||
Ralf Baechle <ralf@linux-mips.org>
|
||||
Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
|
||||
@ -211,6 +234,7 @@ Shuah Khan <shuah@kernel.org> <shuahkhan@gmail.com>
|
||||
Shuah Khan <shuah@kernel.org> <shuah.khan@hp.com>
|
||||
Shuah Khan <shuah@kernel.org> <shuahkh@osg.samsung.com>
|
||||
Shuah Khan <shuah@kernel.org> <shuah.kh@samsung.com>
|
||||
Simon Arlott <simon@octiron.net> <simon@fire.lp0.eu>
|
||||
Simon Kelley <simon@thekelleys.org.uk>
|
||||
Stéphane Witzmann <stephane.witzmann@ubpmes.univ-bpclermont.fr>
|
||||
Stephen Hemminger <shemminger@osdl.org>
|
||||
@ -221,6 +245,7 @@ Sumit Semwal <sumit.semwal@ti.com>
|
||||
Tejun Heo <htejun@gmail.com>
|
||||
Thomas Graf <tgraf@suug.ch>
|
||||
Thomas Pedersen <twp@codeaurora.org>
|
||||
Todor Tomov <todor.too@gmail.com> <todor.tomov@linaro.org>
|
||||
Tony Luck <tony.luck@intel.com>
|
||||
TripleX Chung <xxx.phy@gmail.com> <zhongyu@18mail.cn>
|
||||
TripleX Chung <xxx.phy@gmail.com> <triplex@zh-kernel.org>
|
||||
|
6
CREDITS
6
CREDITS
@ -751,7 +751,7 @@ S: Santa Cruz, California
|
||||
S: USA
|
||||
|
||||
N: Luis Correia
|
||||
E: lfcorreia@users.sf.net
|
||||
E: luisfcorreia@gmail.com
|
||||
D: Ralink rt2x00 WLAN driver
|
||||
S: Belas, Portugal
|
||||
|
||||
@ -1637,6 +1637,10 @@ S: Panoramastrasse 18
|
||||
S: D-69126 Heidelberg
|
||||
S: Germany
|
||||
|
||||
N: Simon Horman
|
||||
M: horms@verge.net.au
|
||||
D: Renesas ARM/ARM64 SoC maintainer
|
||||
|
||||
N: Christopher Horn
|
||||
E: chorn@warwick.net
|
||||
D: Miscellaneous sysctl hacks
|
||||
|
@ -6,6 +6,6 @@ Description: Bus scanning interval, microseconds component.
|
||||
control systems are attached/generate presence for as short as
|
||||
100 ms - hence the tens-to-hundreds milliseconds scan intervals
|
||||
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
|
||||
interval
|
||||
|
@ -2,7 +2,7 @@ What: /sys/bus/w1/devices/.../pio
|
||||
Date: May 2012
|
||||
Contact: Markus Franke <franm@hrz.tu-chemnitz.de>
|
||||
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
|
||||
|
||||
|
||||
@ -11,5 +11,5 @@ What: /sys/bus/w1/devices/.../eeprom
|
||||
Date: May 2012
|
||||
Contact: Markus Franke <franm@hrz.tu-chemnitz.de>
|
||||
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
|
||||
|
@ -2,5 +2,5 @@ What: /sys/bus/w1/devices/.../w1_seq
|
||||
Date: Apr 2015
|
||||
Contact: Matt Campbell <mattrcampbell@gmail.com>
|
||||
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
|
||||
|
50
Documentation/ABI/testing/debugfs-hisi-zip
Normal file
50
Documentation/ABI/testing/debugfs-hisi-zip
Normal file
@ -0,0 +1,50 @@
|
||||
What: /sys/kernel/debug/hisi_zip/<bdf>/comp_core[01]/regs
|
||||
Date: Nov 2018
|
||||
Contact: linux-crypto@vger.kernel.org
|
||||
Description: Dump of compression cores related debug registers.
|
||||
Only available for PF.
|
||||
|
||||
What: /sys/kernel/debug/hisi_zip/<bdf>/decomp_core[0-5]/regs
|
||||
Date: Nov 2018
|
||||
Contact: linux-crypto@vger.kernel.org
|
||||
Description: Dump of decompression cores related debug registers.
|
||||
Only available for PF.
|
||||
|
||||
What: /sys/kernel/debug/hisi_zip/<bdf>/clear_enable
|
||||
Date: Nov 2018
|
||||
Contact: linux-crypto@vger.kernel.org
|
||||
Description: Compression/decompression core debug registers read clear
|
||||
control. 1 means enable register read clear, otherwise 0.
|
||||
Writing to this file has no functional effect, only enable or
|
||||
disable counters clear after reading of these registers.
|
||||
Only available for PF.
|
||||
|
||||
What: /sys/kernel/debug/hisi_zip/<bdf>/current_qm
|
||||
Date: Nov 2018
|
||||
Contact: linux-crypto@vger.kernel.org
|
||||
Description: One ZIP controller has one PF and multiple VFs, each function
|
||||
has a QM. Select the QM which below qm refers to.
|
||||
Only available for PF.
|
||||
|
||||
What: /sys/kernel/debug/hisi_zip/<bdf>/qm/qm_regs
|
||||
Date: Nov 2018
|
||||
Contact: linux-crypto@vger.kernel.org
|
||||
Description: Dump of QM related debug registers.
|
||||
Available for PF and VF in host. VF in guest currently only
|
||||
has one debug register.
|
||||
|
||||
What: /sys/kernel/debug/hisi_zip/<bdf>/qm/current_q
|
||||
Date: Nov 2018
|
||||
Contact: linux-crypto@vger.kernel.org
|
||||
Description: One QM may contain multiple queues. Select specific queue to
|
||||
show its debug registers in above qm_regs.
|
||||
Only available for PF.
|
||||
|
||||
What: /sys/kernel/debug/hisi_zip/<bdf>/qm/clear_enable
|
||||
Date: Nov 2018
|
||||
Contact: linux-crypto@vger.kernel.org
|
||||
Description: QM debug registers(qm_regs) read clear control. 1 means enable
|
||||
register read clear, otherwise 0.
|
||||
Writing to this file has no functional effect, only enable or
|
||||
disable counters clear after reading of these registers.
|
||||
Only available for PF.
|
23
Documentation/ABI/testing/debugfs-moxtet
Normal file
23
Documentation/ABI/testing/debugfs-moxtet
Normal file
@ -0,0 +1,23 @@
|
||||
What: /sys/kernel/debug/moxtet/input
|
||||
Date: March 2019
|
||||
KernelVersion: 5.3
|
||||
Contact: Marek Behún <marek.behun@nic.cz>
|
||||
Description: (R) Read input from the shift registers, in hexadecimal.
|
||||
Returns N+1 bytes, where N is the number of Moxtet connected
|
||||
modules. The first byte is from the CPU board itself.
|
||||
Example: 101214
|
||||
10: CPU board with SD card
|
||||
12: 2 = PCIe module, 1 = IRQ not active
|
||||
14: 4 = Peridot module, 1 = IRQ not active
|
||||
|
||||
What: /sys/kernel/debug/moxtet/output
|
||||
Date: March 2019
|
||||
KernelVersion: 5.3
|
||||
Contact: Marek Behún <marek.behun@nic.cz>
|
||||
Description: (RW) Read last written value to the shift registers, in
|
||||
hexadecimal, or write values to the shift registers, also
|
||||
in hexadecimal.
|
||||
Example: 0102
|
||||
01: 01 was last written, or is to be written, to the
|
||||
first module's shift register
|
||||
02: the same for second module
|
@ -12,7 +12,7 @@ Description: The /dev/kmsg character device node provides userspace access
|
||||
The logged line can be prefixed with a <N> syslog prefix, which
|
||||
carries the syslog priority and facility. The single decimal
|
||||
prefix number is composed of the 3 lowest bits being the syslog
|
||||
priority and the higher bits the syslog facility number.
|
||||
priority and the next 8 bits the syslog facility number.
|
||||
|
||||
If no prefix is given, the priority number is the default kernel
|
||||
log priority and the facility number is set to LOG_USER (1). It
|
||||
@ -90,13 +90,12 @@ Description: The /dev/kmsg character device node provides userspace access
|
||||
+sound:card0 - subsystem:devname
|
||||
|
||||
The flags field carries '-' by default. A 'c' indicates a
|
||||
fragment of a line. All following fragments are flagged with
|
||||
'+'. Note, that these hints about continuation lines are not
|
||||
necessarily correct, and the stream could be interleaved with
|
||||
unrelated messages, but merging the lines in the output
|
||||
usually produces better human readable results. A similar
|
||||
logic is used internally when messages are printed to the
|
||||
console, /proc/kmsg or the syslog() syscall.
|
||||
fragment of a line. Note, that these hints about continuation
|
||||
lines are not necessarily correct, and the stream could be
|
||||
interleaved with unrelated messages, but merging the lines in
|
||||
the output usually produces better human readable results. A
|
||||
similar logic is used internally when messages are printed to
|
||||
the console, /proc/kmsg or the syslog() syscall.
|
||||
|
||||
By default, kernel tries to avoid fragments by concatenating
|
||||
when it can and fragments are rare; however, when extended
|
||||
|
@ -37,7 +37,7 @@ Description:
|
||||
euid:= decimal value
|
||||
fowner:= decimal value
|
||||
lsm: are LSM specific
|
||||
option: appraise_type:= [imasig]
|
||||
option: appraise_type:= [imasig] [imasig|modsig]
|
||||
template:= name of a defined IMA template type
|
||||
(eg, ima-ng). Only valid when action is "measure".
|
||||
pcr:= decimal value
|
||||
@ -105,3 +105,7 @@ Description:
|
||||
|
||||
measure func=KEXEC_KERNEL_CHECK pcr=4
|
||||
measure func=KEXEC_INITRAMFS_CHECK pcr=5
|
||||
|
||||
Example of appraise rule allowing modsig appended signatures:
|
||||
|
||||
appraise func=KEXEC_KERNEL_CHECK appraise_type=imasig|modsig
|
||||
|
@ -13,4 +13,4 @@ Description:
|
||||
error on writing
|
||||
If DFSDM input is SPI Slave:
|
||||
Reading returns value previously set.
|
||||
Writing value before starting conversions.
|
||||
Writing value before starting conversions.
|
||||
|
@ -91,29 +91,6 @@ Description:
|
||||
When counting down the counter start from preset value
|
||||
and fire event when reach 0.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_count_quadrature_mode_available
|
||||
KernelVersion: 4.12
|
||||
Contact: benjamin.gaignard@st.com
|
||||
Description:
|
||||
Reading returns the list possible quadrature modes.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_count0_quadrature_mode
|
||||
KernelVersion: 4.12
|
||||
Contact: benjamin.gaignard@st.com
|
||||
Description:
|
||||
Configure the device counter quadrature modes:
|
||||
channel_A:
|
||||
Encoder A input servers as the count input and B as
|
||||
the UP/DOWN direction control input.
|
||||
|
||||
channel_B:
|
||||
Encoder B input serves as the count input and A as
|
||||
the UP/DOWN direction control input.
|
||||
|
||||
quadrature:
|
||||
Encoder A and B inputs are mixed to get direction
|
||||
and count with a scale of 0.25.
|
||||
|
||||
What: /sys/bus/iio/devices/iio:deviceX/in_count_enable_mode_available
|
||||
KernelVersion: 4.12
|
||||
Contact: benjamin.gaignard@st.com
|
||||
|
@ -12,7 +12,8 @@ Description: (RW) Configure MSC operating mode:
|
||||
- "single", for contiguous buffer mode (high-order alloc);
|
||||
- "multi", for multiblock mode;
|
||||
- "ExI", for DCI handler mode;
|
||||
- "debug", for debug mode.
|
||||
- "debug", for debug mode;
|
||||
- any of the currently loaded buffer sinks.
|
||||
If operating mode changes, existing buffer is deallocated,
|
||||
provided there are no active users and tracing is not enabled,
|
||||
otherwise the write will fail.
|
||||
|
17
Documentation/ABI/testing/sysfs-bus-moxtet-devices
Normal file
17
Documentation/ABI/testing/sysfs-bus-moxtet-devices
Normal file
@ -0,0 +1,17 @@
|
||||
What: /sys/bus/moxtet/devices/moxtet-<name>.<addr>/module_description
|
||||
Date: March 2019
|
||||
KernelVersion: 5.3
|
||||
Contact: Marek Behún <marek.behun@nic.cz>
|
||||
Description: (R) Moxtet module description. Format: string
|
||||
|
||||
What: /sys/bus/moxtet/devices/moxtet-<name>.<addr>/module_id
|
||||
Date: March 2019
|
||||
KernelVersion: 5.3
|
||||
Contact: Marek Behún <marek.behun@nic.cz>
|
||||
Description: (R) Moxtet module ID. Format: %x
|
||||
|
||||
What: /sys/bus/moxtet/devices/moxtet-<name>.<addr>/module_name
|
||||
Date: March 2019
|
||||
KernelVersion: 5.3
|
||||
Contact: Marek Behún <marek.behun@nic.cz>
|
||||
Description: (R) Moxtet module name. Format: string
|
26
Documentation/ABI/testing/sysfs-class-backlight
Normal file
26
Documentation/ABI/testing/sysfs-class-backlight
Normal file
@ -0,0 +1,26 @@
|
||||
What: /sys/class/backlight/<backlight>/scale
|
||||
Date: July 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Daniel Thompson <daniel.thompson@linaro.org>
|
||||
Description:
|
||||
Description of the scale of the brightness curve.
|
||||
|
||||
The human eye senses brightness approximately logarithmically,
|
||||
hence linear changes in brightness are perceived as being
|
||||
non-linear. To achieve a linear perception of brightness changes
|
||||
controls like sliders need to apply a logarithmic mapping for
|
||||
backlights with a linear brightness curve.
|
||||
|
||||
Possible values of the attribute are:
|
||||
|
||||
unknown
|
||||
The scale of the brightness curve is unknown.
|
||||
|
||||
linear
|
||||
The brightness changes linearly with each step. Brightness
|
||||
controls should apply a logarithmic mapping for a linear
|
||||
perception.
|
||||
|
||||
non-linear
|
||||
The brightness changes non-linearly with each step. Brightness
|
||||
controls should use a linear mapping for a linear perception.
|
@ -48,3 +48,13 @@ Description: Remote processor state
|
||||
|
||||
Writing "stop" will attempt to halt the remote processor and
|
||||
return it to the "offline" state.
|
||||
|
||||
What: /sys/class/remoteproc/.../name
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Suman Anna <s-anna@ti.com>
|
||||
Description: Remote processor name
|
||||
|
||||
Reports the name of the remote processor. This can be used by
|
||||
userspace in exactly identifying a remote processor and ease
|
||||
up the usage in modifying the 'firmware' or 'state' files.
|
||||
|
76
Documentation/ABI/testing/sysfs-class-wakeup
Normal file
76
Documentation/ABI/testing/sysfs-class-wakeup
Normal file
@ -0,0 +1,76 @@
|
||||
What: /sys/class/wakeup/
|
||||
Date: June 2019
|
||||
Contact: Tri Vo <trong@android.com>
|
||||
Description:
|
||||
The /sys/class/wakeup/ directory contains pointers to all
|
||||
wakeup sources in the kernel at that moment in time.
|
||||
|
||||
What: /sys/class/wakeup/.../name
|
||||
Date: June 2019
|
||||
Contact: Tri Vo <trong@android.com>
|
||||
Description:
|
||||
This file contains the name of the wakeup source.
|
||||
|
||||
What: /sys/class/wakeup/.../active_count
|
||||
Date: June 2019
|
||||
Contact: Tri Vo <trong@android.com>
|
||||
Description:
|
||||
This file contains the number of times the wakeup source was
|
||||
activated.
|
||||
|
||||
What: /sys/class/wakeup/.../event_count
|
||||
Date: June 2019
|
||||
Contact: Tri Vo <trong@android.com>
|
||||
Description:
|
||||
This file contains the number of signaled wakeup events
|
||||
associated with the wakeup source.
|
||||
|
||||
What: /sys/class/wakeup/.../wakeup_count
|
||||
Date: June 2019
|
||||
Contact: Tri Vo <trong@android.com>
|
||||
Description:
|
||||
This file contains the number of times the wakeup source might
|
||||
abort suspend.
|
||||
|
||||
What: /sys/class/wakeup/.../expire_count
|
||||
Date: June 2019
|
||||
Contact: Tri Vo <trong@android.com>
|
||||
Description:
|
||||
This file contains the number of times the wakeup source's
|
||||
timeout has expired.
|
||||
|
||||
What: /sys/class/wakeup/.../active_time_ms
|
||||
Date: June 2019
|
||||
Contact: Tri Vo <trong@android.com>
|
||||
Description:
|
||||
This file contains the amount of time the wakeup source has
|
||||
been continuously active, in milliseconds. If the wakeup
|
||||
source is not active, this file contains '0'.
|
||||
|
||||
What: /sys/class/wakeup/.../total_time_ms
|
||||
Date: June 2019
|
||||
Contact: Tri Vo <trong@android.com>
|
||||
Description:
|
||||
This file contains the total amount of time this wakeup source
|
||||
has been active, in milliseconds.
|
||||
|
||||
What: /sys/class/wakeup/.../max_time_ms
|
||||
Date: June 2019
|
||||
Contact: Tri Vo <trong@android.com>
|
||||
Description:
|
||||
This file contains the maximum amount of time this wakeup
|
||||
source has been continuously active, in milliseconds.
|
||||
|
||||
What: /sys/class/wakeup/.../last_change_ms
|
||||
Date: June 2019
|
||||
Contact: Tri Vo <trong@android.com>
|
||||
Description:
|
||||
This file contains the monotonic clock time when the wakeup
|
||||
source was touched last time, in milliseconds.
|
||||
|
||||
What: /sys/class/wakeup/.../prevent_suspend_time_ms
|
||||
Date: June 2019
|
||||
Contact: Tri Vo <trong@android.com>
|
||||
Description:
|
||||
The file contains the total amount of time this wakeup source
|
||||
has been preventing autosleep, in milliseconds.
|
@ -72,3 +72,37 @@ Description:
|
||||
It is a read/write file. When read, the currently assigned
|
||||
pretimeout governor is returned. When written, it sets
|
||||
the pretimeout governor.
|
||||
|
||||
What: /sys/class/watchdog/watchdog1/access_cs0
|
||||
Date: August 2019
|
||||
Contact: Ivan Mikhaylov <i.mikhaylov@yadro.com>,
|
||||
Alexander Amelkin <a.amelkin@yadro.com>
|
||||
Description:
|
||||
It is a read/write file. This attribute exists only if the
|
||||
system has booted from the alternate flash chip due to
|
||||
expiration of a watchdog timer of AST2400/AST2500 when
|
||||
alternate boot function was enabled with 'aspeed,alt-boot'
|
||||
devicetree option for that watchdog or with an appropriate
|
||||
h/w strapping (for WDT2 only).
|
||||
|
||||
At alternate flash the 'access_cs0' sysfs node provides:
|
||||
ast2400: a way to get access to the primary SPI flash
|
||||
chip at CS0 after booting from the alternate
|
||||
chip at CS1.
|
||||
ast2500: a way to restore the normal address mapping
|
||||
from (CS0->CS1, CS1->CS0) to (CS0->CS0,
|
||||
CS1->CS1).
|
||||
|
||||
Clearing the boot code selection and timeout counter also
|
||||
resets to the initial state the chip select line mapping. When
|
||||
the SoC is in normal mapping state (i.e. booted from CS0),
|
||||
clearing those bits does nothing for both versions of the SoC.
|
||||
For alternate boot mode (booted from CS1 due to wdt2
|
||||
expiration) the behavior differs as described above.
|
||||
|
||||
This option can be used with wdt2 (watchdog1) only.
|
||||
|
||||
When read, the current status of the boot code selection is
|
||||
shown. When written with any non-zero value, it clears
|
||||
the boot code selection and the timeout counter, which results
|
||||
in chipselect reset for AST2400/AST2500.
|
||||
|
128
Documentation/ABI/testing/sysfs-devices-platform-stratix10-rsu
Normal file
128
Documentation/ABI/testing/sysfs-devices-platform-stratix10-rsu
Normal file
@ -0,0 +1,128 @@
|
||||
Intel Stratix10 Remote System Update (RSU) device attributes
|
||||
|
||||
What: /sys/devices/platform/stratix10-rsu.0/current_image
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Richard Gong <richard.gong@linux.intel.com>
|
||||
Description:
|
||||
(RO) the address in flash of currently running image.
|
||||
|
||||
What: /sys/devices/platform/stratix10-rsu.0/fail_image
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Richard Gong <richard.gong@linux.intel.com>
|
||||
Description:
|
||||
(RO) the address in flash of failed image.
|
||||
|
||||
What: /sys/devices/platform/stratix10-rsu.0/state
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Richard Gong <richard.gong@linux.intel.com>
|
||||
Description:
|
||||
(RO) the state of RSU system.
|
||||
The state field has two parts: major error code in
|
||||
upper 16 bits and minor error code in lower 16 bits.
|
||||
|
||||
b[15:0]
|
||||
Currently used only when major error is 0xF006
|
||||
(CPU watchdog timeout), in which case the minor
|
||||
error code is the value reported by CPU to
|
||||
firmware through the RSU notify command before
|
||||
the watchdog timeout occurs.
|
||||
|
||||
b[31:16]
|
||||
0xF001 bitstream error
|
||||
0xF002 hardware access failure
|
||||
0xF003 bitstream corruption
|
||||
0xF004 internal error
|
||||
0xF005 device error
|
||||
0xF006 CPU watchdog timeout
|
||||
0xF007 internal unknown error
|
||||
|
||||
What: /sys/devices/platform/stratix10-rsu.0/version
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Richard Gong <richard.gong@linux.intel.com>
|
||||
Description:
|
||||
(RO) the version number of RSU firmware. 19.3 or late
|
||||
version includes information about the firmware which
|
||||
reported the error.
|
||||
|
||||
pre 19.3:
|
||||
b[31:0]
|
||||
0x0 version number
|
||||
|
||||
19.3 or late:
|
||||
b[15:0]
|
||||
0x1 version number
|
||||
b[31:16]
|
||||
0x0 no error
|
||||
0x0DCF Decision CMF error
|
||||
0x0ACF Application CMF error
|
||||
|
||||
What: /sys/devices/platform/stratix10-rsu.0/error_location
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Richard Gong <richard.gong@linux.intel.com>
|
||||
Description:
|
||||
(RO) the error offset inside the image that failed.
|
||||
|
||||
What: /sys/devices/platform/stratix10-rsu.0/error_details
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Richard Gong <richard.gong@linux.intel.com>
|
||||
Description:
|
||||
(RO) error code.
|
||||
|
||||
What: /sys/devices/platform/stratix10-rsu.0/retry_counter
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Richard Gong <richard.gong@linux.intel.com>
|
||||
Description:
|
||||
(RO) the current image's retry counter, which is used by
|
||||
user to know how many times the images is still allowed
|
||||
to reload itself before giving up and starting RSU
|
||||
fail-over flow.
|
||||
|
||||
What: /sys/devices/platform/stratix10-rsu.0/reboot_image
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Richard Gong <richard.gong@linux.intel.com>
|
||||
Description:
|
||||
(WO) the address in flash of image to be loaded on next
|
||||
reboot command.
|
||||
|
||||
What: /sys/devices/platform/stratix10-rsu.0/notify
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Richard Gong <richard.gong@linux.intel.com>
|
||||
Description:
|
||||
(WO) client to notify firmware with different actions.
|
||||
|
||||
b[15:0]
|
||||
inform firmware the current software execution
|
||||
stage.
|
||||
0 the first stage bootloader didn't run or
|
||||
didn't reach the point of launching second
|
||||
stage bootloader.
|
||||
1 failed in second bootloader or didn't get
|
||||
to the point of launching the operating
|
||||
system.
|
||||
2 both first and second stage bootloader ran
|
||||
and the operating system launch was
|
||||
attempted.
|
||||
|
||||
b[16]
|
||||
1 firmware to reset current image retry
|
||||
counter.
|
||||
0 no action.
|
||||
|
||||
b[17]
|
||||
1 firmware to clear RSU log
|
||||
0 no action.
|
||||
|
||||
b[18]
|
||||
this is negative logic
|
||||
1 no action
|
||||
0 firmware record the notify code defined
|
||||
in b[15:0].
|
@ -260,3 +260,12 @@ Description:
|
||||
|
||||
This attribute has no effect on system-wide suspend/resume and
|
||||
hibernation.
|
||||
|
||||
What: /sys/devices/.../power/runtime_status
|
||||
Date: April 2010
|
||||
Contact: Rafael J. Wysocki <rjw@rjwysocki.net>
|
||||
Description:
|
||||
The /sys/devices/.../power/runtime_status attribute contains
|
||||
the current runtime PM status of the device, which may be
|
||||
"suspended", "suspending", "resuming", "active", "error" (fatal
|
||||
error), or "unsupported" (runtime PM is disabled).
|
||||
|
@ -26,6 +26,13 @@ Description:
|
||||
Read-only attribute common to all SoCs. Contains SoC family name
|
||||
(e.g. DB8500).
|
||||
|
||||
What: /sys/devices/socX/serial_number
|
||||
Date: January 2019
|
||||
contact: Bjorn Andersson <bjorn.andersson@linaro.org>
|
||||
Description:
|
||||
Read-only attribute supported by most SoCs. Contains the SoC's
|
||||
serial number, if available.
|
||||
|
||||
What: /sys/devices/socX/soc_id
|
||||
Date: January 2012
|
||||
contact: Lee Jones <lee.jones@linaro.org>
|
||||
|
@ -486,6 +486,8 @@ What: /sys/devices/system/cpu/vulnerabilities
|
||||
/sys/devices/system/cpu/vulnerabilities/spec_store_bypass
|
||||
/sys/devices/system/cpu/vulnerabilities/l1tf
|
||||
/sys/devices/system/cpu/vulnerabilities/mds
|
||||
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort
|
||||
/sys/devices/system/cpu/vulnerabilities/itlb_multihit
|
||||
Date: January 2018
|
||||
Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
|
||||
Description: Information about CPU vulnerabilities
|
||||
@ -562,3 +564,13 @@ Description: Umwait control
|
||||
or C0.2 state. The time is an unsigned 32-bit number.
|
||||
Note that a value of zero means there is no limit.
|
||||
Low order two bits must be zero.
|
||||
|
||||
What: /sys/devices/system/cpu/svm
|
||||
Date: August 2019
|
||||
Contact: Linux kernel mailing list <linux-kernel@vger.kernel.org>
|
||||
Linux for PowerPC mailing list <linuxppc-dev@ozlabs.org>
|
||||
Description: Secure Virtual Machine
|
||||
|
||||
If 1, it means the system is using the Protected Execution
|
||||
Facility in POWER9 and newer processors. i.e., it is a Secure
|
||||
Virtual Machine.
|
||||
|
@ -57,6 +57,7 @@ KernelVersion: 5.1
|
||||
Contact: oded.gabbay@gmail.com
|
||||
Description: Allows the user to set the maximum clock frequency for MME, TPC
|
||||
and IC when the power management profile is set to "automatic".
|
||||
This property is valid only for the Goya ASIC family
|
||||
|
||||
What: /sys/class/habanalabs/hl<n>/ic_clk
|
||||
Date: Jan 2019
|
||||
@ -127,8 +128,8 @@ Description: Power management profile. Values are "auto", "manual". In "auto"
|
||||
the max clock frequency to a low value when there are no user
|
||||
processes that are opened on the device's file. In "manual"
|
||||
mode, the user sets the maximum clock frequency by writing to
|
||||
ic_clk, mme_clk and tpc_clk
|
||||
|
||||
ic_clk, mme_clk and tpc_clk. This property is valid only for
|
||||
the Goya ASIC family
|
||||
|
||||
What: /sys/class/habanalabs/hl<n>/preboot_btl_ver
|
||||
Date: Jan 2019
|
||||
@ -186,11 +187,4 @@ What: /sys/class/habanalabs/hl<n>/uboot_ver
|
||||
Date: Jan 2019
|
||||
KernelVersion: 5.1
|
||||
Contact: oded.gabbay@gmail.com
|
||||
Description: Version of the u-boot running on the device's CPU
|
||||
|
||||
What: /sys/class/habanalabs/hl<n>/write_open_cnt
|
||||
Date: Jan 2019
|
||||
KernelVersion: 5.1
|
||||
Contact: oded.gabbay@gmail.com
|
||||
Description: Displays the total number of user processes that are currently
|
||||
opened on the device's file
|
||||
Description: Version of the u-boot running on the device's CPU
|
@ -28,3 +28,11 @@ Description: Displays the physical addresses of all EFI Configuration
|
||||
versions are always printed first, i.e. ACPI20 comes
|
||||
before ACPI.
|
||||
Users: dmidecode
|
||||
|
||||
What: /sys/firmware/efi/tables/rci2
|
||||
Date: July 2019
|
||||
Contact: Narendra K <Narendra.K@dell.com>, linux-bugs@dell.com
|
||||
Description: Displays the content of the Runtime Configuration Interface
|
||||
Table version 2 on Dell EMC PowerEdge systems in binary format
|
||||
Users: It is used by Dell EMC OpenManage Server Administrator tool to
|
||||
populate BIOS setup page.
|
||||
|
37
Documentation/ABI/testing/sysfs-firmware-turris-mox-rwtm
Normal file
37
Documentation/ABI/testing/sysfs-firmware-turris-mox-rwtm
Normal file
@ -0,0 +1,37 @@
|
||||
What: /sys/firmware/turris-mox-rwtm/board_version
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Marek Behún <marek.behun@nic.cz>
|
||||
Description: (R) Board version burned into eFuses of this Turris Mox board.
|
||||
Format: %i
|
||||
|
||||
What: /sys/firmware/turris-mox-rwtm/mac_address*
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Marek Behún <marek.behun@nic.cz>
|
||||
Description: (R) MAC addresses burned into eFuses of this Turris Mox board.
|
||||
Format: %pM
|
||||
|
||||
What: /sys/firmware/turris-mox-rwtm/pubkey
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Marek Behún <marek.behun@nic.cz>
|
||||
Description: (R) ECDSA public key (in pubkey hex compressed form) computed
|
||||
as pair to the ECDSA private key burned into eFuses of this
|
||||
Turris Mox Board.
|
||||
Format: string
|
||||
|
||||
What: /sys/firmware/turris-mox-rwtm/ram_size
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Marek Behún <marek.behun@nic.cz>
|
||||
Description: (R) RAM size in MiB of this Turris Mox board as was detected
|
||||
during manufacturing and burned into eFuses. Can be 512 or 1024.
|
||||
Format: %i
|
||||
|
||||
What: /sys/firmware/turris-mox-rwtm/serial_number
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Marek Behún <marek.behun@nic.cz>
|
||||
Description: (R) Serial number burned into eFuses of this Turris Mox device.
|
||||
Format: %016X
|
@ -251,3 +251,10 @@ Description:
|
||||
If checkpoint=disable, it displays the number of blocks that are unusable.
|
||||
If checkpoint=enable it displays the enumber of blocks that would be unusable
|
||||
if checkpoint=disable were to be set.
|
||||
|
||||
What: /sys/fs/f2fs/<disk>/encoding
|
||||
Date July 2019
|
||||
Contact: "Daniel Rosenberg" <drosen@google.com>
|
||||
Description:
|
||||
Displays name and version of the encoding set for the filesystem.
|
||||
If no encoding is set, displays (none)
|
||||
|
17
Documentation/ABI/testing/sysfs-kernel-btf
Normal file
17
Documentation/ABI/testing/sysfs-kernel-btf
Normal file
@ -0,0 +1,17 @@
|
||||
What: /sys/kernel/btf
|
||||
Date: Aug 2019
|
||||
KernelVersion: 5.5
|
||||
Contact: bpf@vger.kernel.org
|
||||
Description:
|
||||
Contains BTF type information and related data for kernel and
|
||||
kernel modules.
|
||||
|
||||
What: /sys/kernel/btf/vmlinux
|
||||
Date: Aug 2019
|
||||
KernelVersion: 5.5
|
||||
Contact: bpf@vger.kernel.org
|
||||
Description:
|
||||
Read-only binary attribute exposing kernel's own BTF type
|
||||
information with description of all internal kernel types. See
|
||||
Documentation/bpf/btf.rst for detailed description of format
|
||||
itself.
|
@ -429,10 +429,15 @@ KernelVersion: 2.6.22
|
||||
Contact: Pekka Enberg <penberg@cs.helsinki.fi>,
|
||||
Christoph Lameter <cl@linux-foundation.org>
|
||||
Description:
|
||||
The shrink file is written when memory should be reclaimed from
|
||||
a cache. Empty partial slabs are freed and the partial list is
|
||||
sorted so the slabs with the fewest available objects are used
|
||||
first.
|
||||
The shrink file is used to reclaim unused slab cache
|
||||
memory from a cache. Empty per-cpu or partial slabs
|
||||
are freed and the partial list is sorted so the slabs
|
||||
with the fewest available objects are used first.
|
||||
It only accepts a value of "1" on write for shrinking
|
||||
the cache. Other input values are considered invalid.
|
||||
Shrinking slab caches might be expensive and can
|
||||
adversely impact other running applications. So it
|
||||
should be used with care.
|
||||
|
||||
What: /sys/kernel/slab/cache/slab_size
|
||||
Date: May 2007
|
||||
|
@ -21,3 +21,88 @@ Contact: Wu Hao <hao.wu@intel.com>
|
||||
Description: Read-only. It returns Bitstream (static FPGA region) meta
|
||||
data, which includes the synthesis date, seed and other
|
||||
information of this static FPGA region.
|
||||
|
||||
What: /sys/bus/platform/devices/dfl-fme.0/cache_size
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Wu Hao <hao.wu@intel.com>
|
||||
Description: Read-only. It returns cache size of this FPGA device.
|
||||
|
||||
What: /sys/bus/platform/devices/dfl-fme.0/fabric_version
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Wu Hao <hao.wu@intel.com>
|
||||
Description: Read-only. It returns fabric version of this FPGA device.
|
||||
Userspace applications need this information to select
|
||||
best data channels per different fabric design.
|
||||
|
||||
What: /sys/bus/platform/devices/dfl-fme.0/socket_id
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Wu Hao <hao.wu@intel.com>
|
||||
Description: Read-only. It returns socket_id to indicate which socket
|
||||
this FPGA belongs to, only valid for integrated solution.
|
||||
User only needs this information, in case standard numa node
|
||||
can't provide correct information.
|
||||
|
||||
What: /sys/bus/platform/devices/dfl-fme.0/errors/pcie0_errors
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Wu Hao <hao.wu@intel.com>
|
||||
Description: Read-Write. Read this file for errors detected on pcie0 link.
|
||||
Write this file to clear errors logged in pcie0_errors. Write
|
||||
fails with -EINVAL if input parsing fails or input error code
|
||||
doesn't match.
|
||||
|
||||
What: /sys/bus/platform/devices/dfl-fme.0/errors/pcie1_errors
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Wu Hao <hao.wu@intel.com>
|
||||
Description: Read-Write. Read this file for errors detected on pcie1 link.
|
||||
Write this file to clear errors logged in pcie1_errors. Write
|
||||
fails with -EINVAL if input parsing fails or input error code
|
||||
doesn't match.
|
||||
|
||||
What: /sys/bus/platform/devices/dfl-fme.0/errors/nonfatal_errors
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Wu Hao <hao.wu@intel.com>
|
||||
Description: Read-only. It returns non-fatal errors detected.
|
||||
|
||||
What: /sys/bus/platform/devices/dfl-fme.0/errors/catfatal_errors
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Wu Hao <hao.wu@intel.com>
|
||||
Description: Read-only. It returns catastrophic and fatal errors detected.
|
||||
|
||||
What: /sys/bus/platform/devices/dfl-fme.0/errors/inject_errors
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Wu Hao <hao.wu@intel.com>
|
||||
Description: Read-Write. Read this file to check errors injected. Write this
|
||||
file to inject errors for testing purpose. Write fails with
|
||||
-EINVAL if input parsing fails or input inject error code isn't
|
||||
supported.
|
||||
|
||||
What: /sys/bus/platform/devices/dfl-fme.0/errors/fme_errors
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Wu Hao <hao.wu@intel.com>
|
||||
Description: Read-Write. Read this file to get errors detected on FME.
|
||||
Write this file to clear errors logged in fme_errors. Write
|
||||
fials with -EINVAL if input parsing fails or input error code
|
||||
doesn't match.
|
||||
|
||||
What: /sys/bus/platform/devices/dfl-fme.0/errors/first_error
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Wu Hao <hao.wu@intel.com>
|
||||
Description: Read-only. Read this file to get the first error detected by
|
||||
hardware.
|
||||
|
||||
What: /sys/bus/platform/devices/dfl-fme.0/errors/next_error
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Wu Hao <hao.wu@intel.com>
|
||||
Description: Read-only. Read this file to get the second error detected by
|
||||
hardware.
|
||||
|
@ -14,3 +14,88 @@ Description: Read-only. User can program different PR bitstreams to FPGA
|
||||
Accelerator Function Unit (AFU) for different functions. It
|
||||
returns uuid which could be used to identify which PR bitstream
|
||||
is programmed in this AFU.
|
||||
|
||||
What: /sys/bus/platform/devices/dfl-port.0/power_state
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Wu Hao <hao.wu@intel.com>
|
||||
Description: Read-only. It reports the APx (AFU Power) state, different APx
|
||||
means different throttling level. When reading this file, it
|
||||
returns "0" - Normal / "1" - AP1 / "2" - AP2 / "6" - AP6.
|
||||
|
||||
What: /sys/bus/platform/devices/dfl-port.0/ap1_event
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Wu Hao <hao.wu@intel.com>
|
||||
Description: Read-write. Read this file for AP1 (AFU Power State 1) event.
|
||||
It's used to indicate transient AP1 state. Write 1 to this
|
||||
file to clear AP1 event.
|
||||
|
||||
What: /sys/bus/platform/devices/dfl-port.0/ap2_event
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Wu Hao <hao.wu@intel.com>
|
||||
Description: Read-write. Read this file for AP2 (AFU Power State 2) event.
|
||||
It's used to indicate transient AP2 state. Write 1 to this
|
||||
file to clear AP2 event.
|
||||
|
||||
What: /sys/bus/platform/devices/dfl-port.0/ltr
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Wu Hao <hao.wu@intel.com>
|
||||
Description: Read-write. Read or set AFU latency tolerance reporting value.
|
||||
Set ltr to 1 if the AFU can tolerate latency >= 40us or set it
|
||||
to 0 if it is latency sensitive.
|
||||
|
||||
What: /sys/bus/platform/devices/dfl-port.0/userclk_freqcmd
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Wu Hao <hao.wu@intel.com>
|
||||
Description: Write-only. User writes command to this interface to set
|
||||
userclock to AFU.
|
||||
|
||||
What: /sys/bus/platform/devices/dfl-port.0/userclk_freqsts
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Wu Hao <hao.wu@intel.com>
|
||||
Description: Read-only. Read this file to get the status of issued command
|
||||
to userclck_freqcmd.
|
||||
|
||||
What: /sys/bus/platform/devices/dfl-port.0/userclk_freqcntrcmd
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Wu Hao <hao.wu@intel.com>
|
||||
Description: Write-only. User writes command to this interface to set
|
||||
userclock counter.
|
||||
|
||||
What: /sys/bus/platform/devices/dfl-port.0/userclk_freqcntrsts
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Wu Hao <hao.wu@intel.com>
|
||||
Description: Read-only. Read this file to get the status of issued command
|
||||
to userclck_freqcntrcmd.
|
||||
|
||||
What: /sys/bus/platform/devices/dfl-port.0/errors/errors
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Wu Hao <hao.wu@intel.com>
|
||||
Description: Read-Write. Read this file to get errors detected on port and
|
||||
Accelerated Function Unit (AFU). Write error code to this file
|
||||
to clear errors. Write fails with -EINVAL if input parsing
|
||||
fails or input error code doesn't match. Write fails with
|
||||
-EBUSY or -ETIMEDOUT if error can't be cleared as hardware
|
||||
in low power state (-EBUSY) or not respoding (-ETIMEDOUT).
|
||||
|
||||
What: /sys/bus/platform/devices/dfl-port.0/errors/first_error
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Wu Hao <hao.wu@intel.com>
|
||||
Description: Read-only. Read this file to get the first error detected by
|
||||
hardware.
|
||||
|
||||
What: /sys/bus/platform/devices/dfl-port.0/errors/first_malformed_req
|
||||
Date: August 2019
|
||||
KernelVersion: 5.4
|
||||
Contact: Wu Hao <hao.wu@intel.com>
|
||||
Description: Read-only. Read this file to get the first malformed request
|
||||
captured by hardware.
|
||||
|
@ -301,3 +301,109 @@ Description:
|
||||
|
||||
Using this sysfs file will override any values that were
|
||||
set using the kernel command line for disk offset.
|
||||
|
||||
What: /sys/power/suspend_stats
|
||||
Date: July 2019
|
||||
Contact: Kalesh Singh <kaleshsingh96@gmail.com>
|
||||
Description:
|
||||
The /sys/power/suspend_stats directory contains suspend related
|
||||
statistics.
|
||||
|
||||
What: /sys/power/suspend_stats/success
|
||||
Date: July 2019
|
||||
Contact: Kalesh Singh <kaleshsingh96@gmail.com>
|
||||
Description:
|
||||
The /sys/power/suspend_stats/success file contains the number
|
||||
of times entering system sleep state succeeded.
|
||||
|
||||
What: /sys/power/suspend_stats/fail
|
||||
Date: July 2019
|
||||
Contact: Kalesh Singh <kaleshsingh96@gmail.com>
|
||||
Description:
|
||||
The /sys/power/suspend_stats/fail file contains the number
|
||||
of times entering system sleep state failed.
|
||||
|
||||
What: /sys/power/suspend_stats/failed_freeze
|
||||
Date: July 2019
|
||||
Contact: Kalesh Singh <kaleshsingh96@gmail.com>
|
||||
Description:
|
||||
The /sys/power/suspend_stats/failed_freeze file contains the
|
||||
number of times freezing processes failed.
|
||||
|
||||
What: /sys/power/suspend_stats/failed_prepare
|
||||
Date: July 2019
|
||||
Contact: Kalesh Singh <kaleshsingh96@gmail.com>
|
||||
Description:
|
||||
The /sys/power/suspend_stats/failed_prepare file contains the
|
||||
number of times preparing all non-sysdev devices for
|
||||
a system PM transition failed.
|
||||
|
||||
What: /sys/power/suspend_stats/failed_resume
|
||||
Date: July 2019
|
||||
Contact: Kalesh Singh <kaleshsingh96@gmail.com>
|
||||
Description:
|
||||
The /sys/power/suspend_stats/failed_resume file contains the
|
||||
number of times executing "resume" callbacks of
|
||||
non-sysdev devices failed.
|
||||
|
||||
What: /sys/power/suspend_stats/failed_resume_early
|
||||
Date: July 2019
|
||||
Contact: Kalesh Singh <kaleshsingh96@gmail.com>
|
||||
Description:
|
||||
The /sys/power/suspend_stats/failed_resume_early file contains
|
||||
the number of times executing "early resume" callbacks
|
||||
of devices failed.
|
||||
|
||||
What: /sys/power/suspend_stats/failed_resume_noirq
|
||||
Date: July 2019
|
||||
Contact: Kalesh Singh <kaleshsingh96@gmail.com>
|
||||
Description:
|
||||
The /sys/power/suspend_stats/failed_resume_noirq file contains
|
||||
the number of times executing "noirq resume" callbacks
|
||||
of devices failed.
|
||||
|
||||
What: /sys/power/suspend_stats/failed_suspend
|
||||
Date: July 2019
|
||||
Contact: Kalesh Singh <kaleshsingh96@gmail.com>
|
||||
Description:
|
||||
The /sys/power/suspend_stats/failed_suspend file contains
|
||||
the number of times executing "suspend" callbacks
|
||||
of all non-sysdev devices failed.
|
||||
|
||||
What: /sys/power/suspend_stats/failed_suspend_late
|
||||
Date: July 2019
|
||||
Contact: Kalesh Singh <kaleshsingh96@gmail.com>
|
||||
Description:
|
||||
The /sys/power/suspend_stats/failed_suspend_late file contains
|
||||
the number of times executing "late suspend" callbacks
|
||||
of all devices failed.
|
||||
|
||||
What: /sys/power/suspend_stats/failed_suspend_noirq
|
||||
Date: July 2019
|
||||
Contact: Kalesh Singh <kaleshsingh96@gmail.com>
|
||||
Description:
|
||||
The /sys/power/suspend_stats/failed_suspend_noirq file contains
|
||||
the number of times executing "noirq suspend" callbacks
|
||||
of all devices failed.
|
||||
|
||||
What: /sys/power/suspend_stats/last_failed_dev
|
||||
Date: July 2019
|
||||
Contact: Kalesh Singh <kaleshsingh96@gmail.com>
|
||||
Description:
|
||||
The /sys/power/suspend_stats/last_failed_dev file contains
|
||||
the last device for which a suspend/resume callback failed.
|
||||
|
||||
What: /sys/power/suspend_stats/last_failed_errno
|
||||
Date: July 2019
|
||||
Contact: Kalesh Singh <kaleshsingh96@gmail.com>
|
||||
Description:
|
||||
The /sys/power/suspend_stats/last_failed_errno file contains
|
||||
the errno of the last failed attempt at entering
|
||||
system sleep state.
|
||||
|
||||
What: /sys/power/suspend_stats/last_failed_step
|
||||
Date: July 2019
|
||||
Contact: Kalesh Singh <kaleshsingh96@gmail.com>
|
||||
Description:
|
||||
The /sys/power/suspend_stats/last_failed_step file contains
|
||||
the last failed step in the suspend/resume path.
|
||||
|
@ -204,6 +204,14 @@ Returns the maximum size of a mapping for the device. The size parameter
|
||||
of the mapping functions like dma_map_single(), dma_map_page() and
|
||||
others should not be larger than the returned value.
|
||||
|
||||
::
|
||||
|
||||
unsigned long
|
||||
dma_get_merge_boundary(struct device *dev);
|
||||
|
||||
Returns the DMA merge boundary. If the device cannot merge any the DMA address
|
||||
segments, the function returns 0.
|
||||
|
||||
Part Id - Streaming DMA mappings
|
||||
--------------------------------
|
||||
|
||||
@ -595,17 +603,6 @@ For reasons of efficiency, most platforms choose to track the declared
|
||||
region only at the granularity of a page. For smaller allocations,
|
||||
you should use the dma_pool() API.
|
||||
|
||||
::
|
||||
|
||||
void
|
||||
dma_release_declared_memory(struct device *dev)
|
||||
|
||||
Remove the memory region previously declared from the system. This
|
||||
API performs *no* in-use checking for this region and will return
|
||||
unconditionally having removed all the required structures. It is the
|
||||
driver's job to ensure that no parts of this memory region are
|
||||
currently in use.
|
||||
|
||||
Part III - Debug drivers use of the DMA-API
|
||||
-------------------------------------------
|
||||
|
||||
|
@ -9,7 +9,7 @@ Linux PCI Bus Subsystem
|
||||
:numbered:
|
||||
|
||||
pci
|
||||
picebus-howto
|
||||
pciebus-howto
|
||||
pci-iov-howto
|
||||
msi-howto
|
||||
acpi-info
|
||||
|
@ -403,7 +403,7 @@ That is, the recovery API only requires that:
|
||||
.. note::
|
||||
|
||||
Implementation details for the powerpc platform are discussed in
|
||||
the file Documentation/powerpc/eeh-pci-error-recovery.txt
|
||||
the file Documentation/powerpc/eeh-pci-error-recovery.rst
|
||||
|
||||
As of this writing, there is a growing list of device drivers with
|
||||
patches implementing error recovery. Not all of these patches are in
|
||||
@ -421,4 +421,6 @@ That is, the recovery API only requires that:
|
||||
- drivers/net/ixgbe
|
||||
- drivers/net/cxgb3
|
||||
- drivers/net/s2io.c
|
||||
- drivers/net/qlge
|
||||
|
||||
The End
|
||||
-------
|
||||
|
@ -2129,6 +2129,8 @@ Some of the relevant points of interest are as follows:
|
||||
<li> <a href="#Hotplug CPU">Hotplug CPU</a>.
|
||||
<li> <a href="#Scheduler and RCU">Scheduler and RCU</a>.
|
||||
<li> <a href="#Tracing and RCU">Tracing and RCU</a>.
|
||||
<li> <a href="#Accesses to User Memory and RCU">
|
||||
Accesses to User Memory and RCU</a>.
|
||||
<li> <a href="#Energy Efficiency">Energy Efficiency</a>.
|
||||
<li> <a href="#Scheduling-Clock Interrupts and RCU">
|
||||
Scheduling-Clock Interrupts and RCU</a>.
|
||||
@ -2512,7 +2514,7 @@ disabled across the entire RCU read-side critical section.
|
||||
<p>
|
||||
It is possible to use tracing on RCU code, but tracing itself
|
||||
uses RCU.
|
||||
For this reason, <tt>rcu_dereference_raw_notrace()</tt>
|
||||
For this reason, <tt>rcu_dereference_raw_check()</tt>
|
||||
is provided for use by tracing, which avoids the destructive
|
||||
recursion that could otherwise ensue.
|
||||
This API is also used by virtualization in some architectures,
|
||||
@ -2521,6 +2523,75 @@ cannot be used.
|
||||
The tracing folks both located the requirement and provided the
|
||||
needed fix, so this surprise requirement was relatively painless.
|
||||
|
||||
<h3><a name="Accesses to User Memory and RCU">
|
||||
Accesses to User Memory and RCU</a></h3>
|
||||
|
||||
<p>
|
||||
The kernel needs to access user-space memory, for example, to access
|
||||
data referenced by system-call parameters.
|
||||
The <tt>get_user()</tt> macro does this job.
|
||||
|
||||
<p>
|
||||
However, user-space memory might well be paged out, which means
|
||||
that <tt>get_user()</tt> might well page-fault and thus block while
|
||||
waiting for the resulting I/O to complete.
|
||||
It would be a very bad thing for the compiler to reorder
|
||||
a <tt>get_user()</tt> invocation into an RCU read-side critical
|
||||
section.
|
||||
For example, suppose that the source code looked like this:
|
||||
|
||||
<blockquote>
|
||||
<pre>
|
||||
1 rcu_read_lock();
|
||||
2 p = rcu_dereference(gp);
|
||||
3 v = p->value;
|
||||
4 rcu_read_unlock();
|
||||
5 get_user(user_v, user_p);
|
||||
6 do_something_with(v, user_v);
|
||||
</pre>
|
||||
</blockquote>
|
||||
|
||||
<p>
|
||||
The compiler must not be permitted to transform this source code into
|
||||
the following:
|
||||
|
||||
<blockquote>
|
||||
<pre>
|
||||
1 rcu_read_lock();
|
||||
2 p = rcu_dereference(gp);
|
||||
3 get_user(user_v, user_p); // BUG: POSSIBLE PAGE FAULT!!!
|
||||
4 v = p->value;
|
||||
5 rcu_read_unlock();
|
||||
6 do_something_with(v, user_v);
|
||||
</pre>
|
||||
</blockquote>
|
||||
|
||||
<p>
|
||||
If the compiler did make this transformation in a
|
||||
<tt>CONFIG_PREEMPT=n</tt> kernel build, and if <tt>get_user()</tt> did
|
||||
page fault, the result would be a quiescent state in the middle
|
||||
of an RCU read-side critical section.
|
||||
This misplaced quiescent state could result in line 4 being
|
||||
a use-after-free access, which could be bad for your kernel's
|
||||
actuarial statistics.
|
||||
Similar examples can be constructed with the call to <tt>get_user()</tt>
|
||||
preceding the <tt>rcu_read_lock()</tt>.
|
||||
|
||||
<p>
|
||||
Unfortunately, <tt>get_user()</tt> doesn't have any particular
|
||||
ordering properties, and in some architectures the underlying <tt>asm</tt>
|
||||
isn't even marked <tt>volatile</tt>.
|
||||
And even if it was marked <tt>volatile</tt>, the above access to
|
||||
<tt>p->value</tt> is not volatile, so the compiler would not have any
|
||||
reason to keep those two accesses in order.
|
||||
|
||||
<p>
|
||||
Therefore, the Linux-kernel definitions of <tt>rcu_read_lock()</tt>
|
||||
and <tt>rcu_read_unlock()</tt> must act as compiler barriers,
|
||||
at least for outermost instances of <tt>rcu_read_lock()</tt> and
|
||||
<tt>rcu_read_unlock()</tt> within a nested set of RCU read-side critical
|
||||
sections.
|
||||
|
||||
<h3><a name="Energy Efficiency">Energy Efficiency</a></h3>
|
||||
|
||||
<p>
|
||||
|
@ -1,7 +1,7 @@
|
||||
Using hlist_nulls to protect read-mostly linked lists and
|
||||
objects using SLAB_TYPESAFE_BY_RCU allocations.
|
||||
|
||||
Please read the basics in Documentation/RCU/listRCU.txt
|
||||
Please read the basics in Documentation/RCU/listRCU.rst
|
||||
|
||||
Using special makers (called 'nulls') is a convenient way
|
||||
to solve following problem :
|
||||
|
@ -57,6 +57,12 @@ o A CPU-bound real-time task in a CONFIG_PREEMPT_RT kernel that
|
||||
CONFIG_PREEMPT_RCU case, you might see stall-warning
|
||||
messages.
|
||||
|
||||
You can use the rcutree.kthread_prio kernel boot parameter to
|
||||
increase the scheduling priority of RCU's kthreads, which can
|
||||
help avoid this problem. However, please note that doing this
|
||||
can increase your system's context-switch rate and thus degrade
|
||||
performance.
|
||||
|
||||
o A periodic interrupt whose handler takes longer than the time
|
||||
interval between successive pairs of interrupts. This can
|
||||
prevent RCU's kthreads and softirq handlers from running.
|
||||
|
@ -1,99 +0,0 @@
|
||||
Describing and referring to LEDs in ACPI
|
||||
|
||||
Individual LEDs are described by hierarchical data extension [6] nodes under the
|
||||
device node, the LED driver chip. The "reg" property in the LED specific nodes
|
||||
tells the numerical ID of each individual LED output to which the LEDs are
|
||||
connected. [3] The hierarchical data nodes are named "led@X", where X is the
|
||||
number of the LED output.
|
||||
|
||||
Referring to LEDs in Device tree is documented in [4], in "flash-leds" property
|
||||
documentation. In short, LEDs are directly referred to by using phandles.
|
||||
|
||||
While Device tree allows referring to any node in the tree[1], in ACPI
|
||||
references are limited to device nodes only [2]. For this reason using the same
|
||||
mechanism on ACPI is not possible. A mechanism to refer to non-device ACPI nodes
|
||||
is documented in [7].
|
||||
|
||||
ACPI allows (as does DT) using integer arguments after the reference. A
|
||||
combination of the LED driver device reference and an integer argument,
|
||||
referring to the "reg" property of the relevant LED, is used to identify
|
||||
individual LEDs. The value of the "reg" property is a contract between the
|
||||
firmware and software, it uniquely identifies the LED driver outputs.
|
||||
|
||||
Under the LED driver device, The first hierarchical data extension package list
|
||||
entry shall contain the string "led@" followed by the number of the LED,
|
||||
followed by the referred object name. That object shall be named "LED" followed
|
||||
by the number of the LED.
|
||||
|
||||
An ASL example of a camera sensor device and a LED driver device for two LEDs.
|
||||
Objects not relevant for LEDs or the references to them have been omitted.
|
||||
|
||||
Device (LED)
|
||||
{
|
||||
Name (_DSD, Package () {
|
||||
ToUUID("dbb8e3e6-5886-4ba6-8795-1319f52a966b"),
|
||||
Package () {
|
||||
Package () { "led@0", LED0 },
|
||||
Package () { "led@1", LED1 },
|
||||
}
|
||||
})
|
||||
Name (LED0, Package () {
|
||||
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
|
||||
Package () {
|
||||
Package () { "reg", 0 },
|
||||
Package () { "flash-max-microamp", 1000000 },
|
||||
Package () { "flash-timeout-us", 200000 },
|
||||
Package () { "led-max-microamp", 100000 },
|
||||
Package () { "label", "white:flash" },
|
||||
}
|
||||
})
|
||||
Name (LED1, Package () {
|
||||
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
|
||||
Package () {
|
||||
Package () { "reg", 1 },
|
||||
Package () { "led-max-microamp", 10000 },
|
||||
Package () { "label", "red:indicator" },
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Device (SEN)
|
||||
{
|
||||
Name (_DSD, Package () {
|
||||
ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
|
||||
Package () {
|
||||
Package () {
|
||||
"flash-leds",
|
||||
Package () { ^LED, "led@0", ^LED, "led@1" },
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
where
|
||||
|
||||
LED LED driver device
|
||||
LED0 First LED
|
||||
LED1 Second LED
|
||||
SEN Camera sensor device (or another device the LED is
|
||||
related to)
|
||||
|
||||
[1] Device tree. <URL:http://www.devicetree.org>, referenced 2019-02-21.
|
||||
|
||||
[2] Advanced Configuration and Power Interface Specification.
|
||||
<URL:https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf>,
|
||||
referenced 2019-02-21.
|
||||
|
||||
[3] Documentation/devicetree/bindings/leds/common.txt
|
||||
|
||||
[4] Documentation/devicetree/bindings/media/video-interfaces.txt
|
||||
|
||||
[5] Device Properties UUID For _DSD.
|
||||
<URL:http://www.uefi.org/sites/default/files/resources/_DSD-device-properties-UUID.pdf>,
|
||||
referenced 2019-02-21.
|
||||
|
||||
[6] Hierarchical Data Extension UUID For _DSD.
|
||||
<URL:http://www.uefi.org/sites/default/files/resources/_DSD-hierarchical-data-extension-UUID-v1.1.pdf>,
|
||||
referenced 2019-02-21.
|
||||
|
||||
[7] Documentation/firmware-guide/acpi/dsd/data-node-references.rst
|
98
Documentation/admin-guide/auxdisplay/cfag12864b.rst
Normal file
98
Documentation/admin-guide/auxdisplay/cfag12864b.rst
Normal file
@ -0,0 +1,98 @@
|
||||
===================================
|
||||
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.
|
16
Documentation/admin-guide/auxdisplay/index.rst
Normal file
16
Documentation/admin-guide/auxdisplay/index.rst
Normal file
@ -0,0 +1,16 @@
|
||||
=========================
|
||||
Auxiliary Display Support
|
||||
=========================
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
ks0108.rst
|
||||
cfag12864b.rst
|
||||
|
||||
.. only:: subproject and html
|
||||
|
||||
Indices
|
||||
=======
|
||||
|
||||
* :ref:`genindex`
|
50
Documentation/admin-guide/auxdisplay/ks0108.rst
Normal file
50
Documentation/admin-guide/auxdisplay/ks0108.rst
Normal file
@ -0,0 +1,50 @@
|
||||
==========================================
|
||||
ks0108 LCD Controller Driver Documentation
|
||||
==========================================
|
||||
|
||||
:License: GPLv2
|
||||
:Author & Maintainer: Miguel Ojeda Sandonis
|
||||
:Date: 2006-10-27
|
||||
|
||||
|
||||
|
||||
.. INDEX
|
||||
|
||||
1. DRIVER INFORMATION
|
||||
2. DEVICE INFORMATION
|
||||
3. WIRING
|
||||
|
||||
|
||||
1. Driver Information
|
||||
---------------------
|
||||
|
||||
This driver supports the ks0108 LCD controller.
|
||||
|
||||
|
||||
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
|
||||
|
||||
|
||||
3. Wiring
|
||||
---------
|
||||
|
||||
The driver supports data parallel port wiring.
|
||||
|
||||
If you aren't building LCD related hardware, you should check
|
||||
your LCD specific wiring information in the same folder.
|
||||
|
||||
For example, check Documentation/admin-guide/auxdisplay/cfag12864b.rst
|
@ -130,12 +130,6 @@ Proportional weight policy files
|
||||
dev weight
|
||||
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
|
||||
- disk time allocated to cgroup per device in milliseconds. First
|
||||
two fields specify the major and minor number of the device and
|
||||
|
@ -85,8 +85,10 @@ Brief summary of control files.
|
||||
memory.oom_control set/show oom controls.
|
||||
memory.numa_stat show the number of memory usage per numa
|
||||
node
|
||||
|
||||
memory.kmem.limit_in_bytes set/show hard limit for kernel memory
|
||||
This knob is deprecated and shouldn't be
|
||||
used. It is planned that this be removed in
|
||||
the foreseeable future.
|
||||
memory.kmem.usage_in_bytes show current kernel memory allocation
|
||||
memory.kmem.failcnt show the number of kernel memory usage
|
||||
hits limits
|
||||
|
@ -615,8 +615,8 @@ on an IO device and is an example of this type.
|
||||
Protections
|
||||
-----------
|
||||
|
||||
A cgroup is protected to be allocated upto the configured amount of
|
||||
the resource if the usages of all its ancestors are under their
|
||||
A cgroup is protected upto the configured amount of the resource
|
||||
as long as the usages of all its ancestors are under their
|
||||
protected levels. Protections can be hard guarantees or best effort
|
||||
soft boundaries. Protections can also be over-committed in which case
|
||||
only upto the amount available to the parent is protected among
|
||||
@ -951,6 +951,13 @@ controller implements weight and absolute bandwidth limit models for
|
||||
normal scheduling policy and absolute bandwidth allocation model for
|
||||
realtime scheduling policy.
|
||||
|
||||
In all the above models, cycles distribution is defined only on a temporal
|
||||
base and it does not account for the frequency at which tasks are executed.
|
||||
The (optional) utilization clamping support allows to hint the schedutil
|
||||
cpufreq governor about the minimum desired frequency which should always be
|
||||
provided by a CPU, as well as the maximum desired frequency, which should not
|
||||
be exceeded by a CPU.
|
||||
|
||||
WARNING: cgroup2 doesn't yet support control of realtime processes and
|
||||
the cpu controller can only be enabled when all RT processes are in
|
||||
the root cgroup. Be aware that system management software may already
|
||||
@ -1016,6 +1023,33 @@ All time durations are in microseconds.
|
||||
Shows pressure stall information for CPU. See
|
||||
Documentation/accounting/psi.rst for details.
|
||||
|
||||
cpu.uclamp.min
|
||||
A read-write single value file which exists on non-root cgroups.
|
||||
The default is "0", i.e. no utilization boosting.
|
||||
|
||||
The requested minimum utilization (protection) as a percentage
|
||||
rational number, e.g. 12.34 for 12.34%.
|
||||
|
||||
This interface allows reading and setting minimum utilization clamp
|
||||
values similar to the sched_setattr(2). This minimum utilization
|
||||
value is used to clamp the task specific minimum utilization clamp.
|
||||
|
||||
The requested minimum utilization (protection) is always capped by
|
||||
the current value for the maximum utilization (limit), i.e.
|
||||
`cpu.uclamp.max`.
|
||||
|
||||
cpu.uclamp.max
|
||||
A read-write single value file which exists on non-root cgroups.
|
||||
The default is "max". i.e. no utilization capping
|
||||
|
||||
The requested maximum utilization (limit) as a percentage rational
|
||||
number, e.g. 98.76 for 98.76%.
|
||||
|
||||
This interface allows reading and setting maximum utilization clamp
|
||||
values similar to the sched_setattr(2). This maximum utilization
|
||||
value is used to clamp the task specific maximum utilization clamp.
|
||||
|
||||
|
||||
|
||||
Memory
|
||||
------
|
||||
@ -1062,7 +1096,10 @@ PAGE_SIZE multiple when read back.
|
||||
is within its effective min boundary, the cgroup's memory
|
||||
won't be reclaimed under any conditions. If there is no
|
||||
unprotected reclaimable memory available, OOM killer
|
||||
is invoked.
|
||||
is invoked. Above the effective min boundary (or
|
||||
effective low boundary if it is higher), pages are reclaimed
|
||||
proportionally to the overage, reducing reclaim pressure for
|
||||
smaller overages.
|
||||
|
||||
Effective min boundary is limited by memory.min values of
|
||||
all ancestor cgroups. If there is memory.min overcommitment
|
||||
@ -1084,7 +1121,10 @@ PAGE_SIZE multiple when read back.
|
||||
Best-effort memory protection. If the memory usage of a
|
||||
cgroup is within its effective low boundary, the cgroup's
|
||||
memory won't be reclaimed unless memory can be reclaimed
|
||||
from unprotected cgroups.
|
||||
from unprotected cgroups. Above the effective low boundary (or
|
||||
effective min boundary if it is higher), pages are reclaimed
|
||||
proportionally to the overage, reducing reclaim pressure for
|
||||
smaller overages.
|
||||
|
||||
Effective low boundary is limited by memory.low values of
|
||||
all ancestor cgroups. If there is memory.low overcommitment
|
||||
@ -1435,6 +1475,103 @@ IO Interface Files
|
||||
8:16 rbytes=1459200 wbytes=314773504 rios=192 wios=353 dbytes=0 dios=0
|
||||
8:0 rbytes=90430464 wbytes=299008000 rios=8950 wios=1252 dbytes=50331648 dios=3021
|
||||
|
||||
io.cost.qos
|
||||
A read-write nested-keyed file with exists only on the root
|
||||
cgroup.
|
||||
|
||||
This file configures the Quality of Service of the IO cost
|
||||
model based controller (CONFIG_BLK_CGROUP_IOCOST) which
|
||||
currently implements "io.weight" proportional control. Lines
|
||||
are keyed by $MAJ:$MIN device numbers and not ordered. The
|
||||
line for a given device is populated on the first write for
|
||||
the device on "io.cost.qos" or "io.cost.model". The following
|
||||
nested keys are defined.
|
||||
|
||||
====== =====================================
|
||||
enable Weight-based control enable
|
||||
ctrl "auto" or "user"
|
||||
rpct Read latency percentile [0, 100]
|
||||
rlat Read latency threshold
|
||||
wpct Write latency percentile [0, 100]
|
||||
wlat Write latency threshold
|
||||
min Minimum scaling percentage [1, 10000]
|
||||
max Maximum scaling percentage [1, 10000]
|
||||
====== =====================================
|
||||
|
||||
The controller is disabled by default and can be enabled by
|
||||
setting "enable" to 1. "rpct" and "wpct" parameters default
|
||||
to zero and the controller uses internal device saturation
|
||||
state to adjust the overall IO rate between "min" and "max".
|
||||
|
||||
When a better control quality is needed, latency QoS
|
||||
parameters can be configured. For example::
|
||||
|
||||
8:16 enable=1 ctrl=auto rpct=95.00 rlat=75000 wpct=95.00 wlat=150000 min=50.00 max=150.0
|
||||
|
||||
shows that on sdb, the controller is enabled, will consider
|
||||
the device saturated if the 95th percentile of read completion
|
||||
latencies is above 75ms or write 150ms, and adjust the overall
|
||||
IO issue rate between 50% and 150% accordingly.
|
||||
|
||||
The lower the saturation point, the better the latency QoS at
|
||||
the cost of aggregate bandwidth. The narrower the allowed
|
||||
adjustment range between "min" and "max", the more conformant
|
||||
to the cost model the IO behavior. Note that the IO issue
|
||||
base rate may be far off from 100% and setting "min" and "max"
|
||||
blindly can lead to a significant loss of device capacity or
|
||||
control quality. "min" and "max" are useful for regulating
|
||||
devices which show wide temporary behavior changes - e.g. a
|
||||
ssd which accepts writes at the line speed for a while and
|
||||
then completely stalls for multiple seconds.
|
||||
|
||||
When "ctrl" is "auto", the parameters are controlled by the
|
||||
kernel and may change automatically. Setting "ctrl" to "user"
|
||||
or setting any of the percentile and latency parameters puts
|
||||
it into "user" mode and disables the automatic changes. The
|
||||
automatic mode can be restored by setting "ctrl" to "auto".
|
||||
|
||||
io.cost.model
|
||||
A read-write nested-keyed file with exists only on the root
|
||||
cgroup.
|
||||
|
||||
This file configures the cost model of the IO cost model based
|
||||
controller (CONFIG_BLK_CGROUP_IOCOST) which currently
|
||||
implements "io.weight" proportional control. Lines are keyed
|
||||
by $MAJ:$MIN device numbers and not ordered. The line for a
|
||||
given device is populated on the first write for the device on
|
||||
"io.cost.qos" or "io.cost.model". The following nested keys
|
||||
are defined.
|
||||
|
||||
===== ================================
|
||||
ctrl "auto" or "user"
|
||||
model The cost model in use - "linear"
|
||||
===== ================================
|
||||
|
||||
When "ctrl" is "auto", the kernel may change all parameters
|
||||
dynamically. When "ctrl" is set to "user" or any other
|
||||
parameters are written to, "ctrl" become "user" and the
|
||||
automatic changes are disabled.
|
||||
|
||||
When "model" is "linear", the following model parameters are
|
||||
defined.
|
||||
|
||||
============= ========================================
|
||||
[r|w]bps The maximum sequential IO throughput
|
||||
[r|w]seqiops The maximum 4k sequential IOs per second
|
||||
[r|w]randiops The maximum 4k random IOs per second
|
||||
============= ========================================
|
||||
|
||||
From the above, the builtin linear model determines the base
|
||||
costs of a sequential and random IO and the cost coefficient
|
||||
for the IO size. While simple, this model can cover most
|
||||
common device classes acceptably.
|
||||
|
||||
The IO cost model isn't expected to be accurate in absolute
|
||||
sense and is scaled to the device behavior dynamically.
|
||||
|
||||
If needed, tools/cgroup/iocost_coef_gen.py can be used to
|
||||
generate device-specific coefficients.
|
||||
|
||||
io.weight
|
||||
A read-write flat-keyed file which exists on non-root cgroups.
|
||||
The default is "default 100".
|
||||
@ -2351,8 +2488,10 @@ system performance due to overreclaim, to the point where the feature
|
||||
becomes self-defeating.
|
||||
|
||||
The memory.low boundary on the other hand is a top-down allocated
|
||||
reserve. A cgroup enjoys reclaim protection when it's within its low,
|
||||
which makes delegation of subtrees possible.
|
||||
reserve. A cgroup enjoys reclaim protection when it's within its
|
||||
effective low, which makes delegation of subtrees possible. It also
|
||||
enjoys having reclaim pressure proportional to its overage when
|
||||
above its effective low.
|
||||
|
||||
The original high boundary, the hard limit, is defined as a strict
|
||||
limit that can not budge, even if the OOM killer has to be called.
|
||||
|
69
Documentation/admin-guide/cifs/authors.rst
Normal file
69
Documentation/admin-guide/cifs/authors.rst
Normal file
@ -0,0 +1,69 @@
|
||||
=======
|
||||
Authors
|
||||
=======
|
||||
|
||||
Original Author
|
||||
---------------
|
||||
|
||||
Steve French (sfrench@samba.org)
|
||||
|
||||
The author wishes to express his appreciation and thanks to:
|
||||
Andrew Tridgell (Samba team) for his early suggestions about smb/cifs VFS
|
||||
improvements. Thanks to IBM for allowing me time and test resources to pursue
|
||||
this project, to Jim McDonough from IBM (and the Samba Team) for his help, to
|
||||
the IBM Linux JFS team for explaining many esoteric Linux filesystem features.
|
||||
Jeremy Allison of the Samba team has done invaluable work in adding the server
|
||||
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
|
||||
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
|
||||
operating systems. Volker Lendecke, Andrew Tridgell, Urban Widmark, John
|
||||
Newbigin and others for their work on the Linux smbfs module. Thanks to
|
||||
the other members of the Storage Network Industry Association CIFS Technical
|
||||
Workgroup for their work specifying this highly complex protocol and finally
|
||||
thanks to the Samba team for their technical advice and encouragement.
|
||||
|
||||
Patch Contributors
|
||||
------------------
|
||||
|
||||
- Zwane Mwaikambo
|
||||
- Andi Kleen
|
||||
- Amrut Joshi
|
||||
- Shobhit Dayal
|
||||
- Sergey Vlasov
|
||||
- Richard Hughes
|
||||
- Yury Umanets
|
||||
- Mark Hamzy (for some of the early cifs IPv6 work)
|
||||
- Domen Puncer
|
||||
- Jesper Juhl (in particular for lots of whitespace/formatting cleanup)
|
||||
- Vince Negri and Dave Stahl (for finding an important caching bug)
|
||||
- Adrian Bunk (kcalloc cleanups)
|
||||
- Miklos Szeredi
|
||||
- Kazeon team for various fixes especially for 2.4 version.
|
||||
- Asser Ferno (Change Notify support)
|
||||
- Shaggy (Dave Kleikamp) for innumerable small fs suggestions and some good cleanup
|
||||
- Gunter Kukkukk (testing and suggestions for support of old servers)
|
||||
- Igor Mammedov (DFS support)
|
||||
- Jeff Layton (many, many fixes, as well as great work on the cifs Kerberos code)
|
||||
- Scott Lovenberg
|
||||
- Pavel Shilovsky (for great work adding SMB2 support, and various SMB3 features)
|
||||
- Aurelien Aptel (for DFS SMB3 work and some key bug fixes)
|
||||
- Ronnie Sahlberg (for SMB3 xattr work, bug fixes, and lots of great work on compounding)
|
||||
- Shirish Pargaonkar (for many ACL patches over the years)
|
||||
- Sachin Prabhu (many bug fixes, including for reconnect, copy offload and security)
|
||||
- Paulo Alcantara
|
||||
- Long Li (some great work on RDMA, SMB Direct)
|
||||
|
||||
|
||||
Test case and Bug Report contributors
|
||||
-------------------------------------
|
||||
Thanks to those in the community who have submitted detailed bug reports
|
||||
and debug of problems they have found: Jochen Dolze, David Blaine,
|
||||
Rene Scharfe, Martin Josefsson, Alexander Wild, Anthony Liguori,
|
||||
Lars Muller, Urban Widmark, Massimiliano Ferrero, Howard Owen,
|
||||
Olaf Kirch, Kieron Briggs, Nick Millington and others. Also special
|
||||
mention to the Stanford Checker (SWAT) which pointed out many minor
|
||||
bugs in error paths. Valuable suggestions also have come from Al Viro
|
||||
and Dave Miller.
|
||||
|
||||
And thanks to the IBM LTC and Power test teams and SuSE and Citrix and RedHat testers for finding multiple bugs during excellent stress test runs.
|
8
Documentation/admin-guide/cifs/changes.rst
Normal file
8
Documentation/admin-guide/cifs/changes.rst
Normal file
@ -0,0 +1,8 @@
|
||||
=======
|
||||
Changes
|
||||
=======
|
||||
|
||||
See https://wiki.samba.org/index.php/LinuxCIFSKernel for summary
|
||||
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
|
||||
to cifs.ko module) by kernel version (and cifs internal module version).
|
21
Documentation/admin-guide/cifs/index.rst
Normal file
21
Documentation/admin-guide/cifs/index.rst
Normal file
@ -0,0 +1,21 @@
|
||||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
====
|
||||
CIFS
|
||||
====
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
introduction
|
||||
usage
|
||||
todo
|
||||
changes
|
||||
authors
|
||||
|
||||
.. only:: subproject and html
|
||||
|
||||
Indices
|
||||
=======
|
||||
|
||||
* :ref:`genindex`
|
53
Documentation/admin-guide/cifs/introduction.rst
Normal file
53
Documentation/admin-guide/cifs/introduction.rst
Normal file
@ -0,0 +1,53 @@
|
||||
============
|
||||
Introduction
|
||||
============
|
||||
|
||||
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)
|
||||
protocol which was the successor to the Server Message Block
|
||||
(SMB) protocol, the native file sharing mechanism for most early
|
||||
PC operating systems. New and improved versions of CIFS are now
|
||||
called SMB2 and SMB3. Use of SMB3 (and later, including SMB3.1.1)
|
||||
is strongly preferred over using older dialects like CIFS due to
|
||||
security reaasons. All modern dialects, including the most recent,
|
||||
SMB3.1.1 are supported by the CIFS VFS module. The SMB3 protocol
|
||||
is implemented and supported by all major file servers
|
||||
such as all modern versions of Windows (including Windows 2016
|
||||
Server), as well as by Samba (which provides excellent
|
||||
CIFS/SMB2/SMB3 server support and tools for Linux and many other
|
||||
operating systems). Apple systems also support SMB3 well, as
|
||||
do most Network Attached Storage vendors, so this network
|
||||
filesystem client can mount to a wide variety of systems.
|
||||
It also supports mounting to the cloud (for example
|
||||
Microsoft Azure), including the necessary security features.
|
||||
|
||||
The intent of this module is to provide the most advanced network
|
||||
file system function for SMB3 compliant servers, including advanced
|
||||
security features, excellent parallelized high performance i/o, better
|
||||
POSIX compliance, secure per-user session establishment, encryption,
|
||||
high performance safe distributed caching (leases/oplocks), optional packet
|
||||
signing, large files, Unicode support and other internationalization
|
||||
improvements. Since both Samba server and this filesystem client support
|
||||
the CIFS Unix extensions (and in the future SMB3 POSIX extensions),
|
||||
the combination can provide a reasonable alternative to other network and
|
||||
cluster file systems for fileserving in some Linux to Linux environments,
|
||||
not just in Linux to Windows (or Linux to Mac) environments.
|
||||
|
||||
This filesystem has a mount utility (mount.cifs) and various user space
|
||||
tools (including smbinfo and setcifsacl) that can be obtained from
|
||||
|
||||
https://git.samba.org/?p=cifs-utils.git
|
||||
|
||||
or
|
||||
|
||||
git://git.samba.org/cifs-utils.git
|
||||
|
||||
mount.cifs should be installed in the directory with the other mount helpers.
|
||||
|
||||
For more information on the module see the project wiki page at
|
||||
|
||||
https://wiki.samba.org/index.php/LinuxCIFS
|
||||
|
||||
and
|
||||
|
||||
https://wiki.samba.org/index.php/LinuxCIFS_utils
|
133
Documentation/admin-guide/cifs/todo.rst
Normal file
133
Documentation/admin-guide/cifs/todo.rst
Normal file
@ -0,0 +1,133 @@
|
||||
====
|
||||
TODO
|
||||
====
|
||||
|
||||
Version 2.14 December 21, 2018
|
||||
|
||||
A Partial List of Missing Features
|
||||
==================================
|
||||
|
||||
Contributions are welcome. There are plenty of opportunities
|
||||
for visible, important contributions to this module. Here
|
||||
is a partial list of the known problems and missing features:
|
||||
|
||||
a) SMB3 (and SMB3.1.1) missing optional features:
|
||||
|
||||
- multichannel (started), integration with RDMA
|
||||
- directory leases (improved metadata caching), started (root dir only)
|
||||
- T10 copy offload ie "ODX" (copy chunk, and "Duplicate Extents" ioctl
|
||||
currently the only two server side copy mechanisms supported)
|
||||
|
||||
b) improved sparse file support (fiemap and SEEK_HOLE are implemented
|
||||
but additional features would be supportable by the protocol).
|
||||
|
||||
c) Directory entry caching relies on a 1 second timer, rather than
|
||||
using Directory Leases, currently only the root file handle is cached longer
|
||||
|
||||
d) quota support (needs minor kernel change since quota calls
|
||||
to make it to network filesystems or deviceless filesystems)
|
||||
|
||||
e) Additional use cases can be optimized to use "compounding" (e.g.
|
||||
open/query/close and open/setinfo/close) to reduce the number of
|
||||
roundtrips to the server and improve performance. Various cases
|
||||
(stat, statfs, create, unlink, mkdir) already have been improved by
|
||||
using compounding but more can be done. In addition we could
|
||||
significantly reduce redundant opens by using deferred close (with
|
||||
handle caching leases) and better using reference counters on file
|
||||
handles.
|
||||
|
||||
f) Finish inotify support so kde and gnome file list windows
|
||||
will autorefresh (partially complete by Asser). Needs minor kernel
|
||||
vfs change to support removing D_NOTIFY on a file.
|
||||
|
||||
g) Add GUI tool to configure /proc/fs/cifs settings and for display of
|
||||
the CIFS statistics (started)
|
||||
|
||||
h) implement support for security and trusted categories of xattrs
|
||||
(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
|
||||
feature (may be especially useful for virtualization).
|
||||
|
||||
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
|
||||
exists. Also better integration with winbind for resolving SID owners
|
||||
|
||||
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 various SMB3 fsctls and query info and set info calls
|
||||
directly from user space) Add tools to make setting various non-POSIX
|
||||
metadata attributes easier from tools (e.g. extending what was done
|
||||
in smb-info tool).
|
||||
|
||||
l) encrypted file support
|
||||
|
||||
m) improved stats gathering tools (perhaps integration with nfsometer?)
|
||||
to extend and make easier to use what is currently in /proc/fs/cifs/Stats
|
||||
|
||||
n) Add support for claims based ACLs ("DAC")
|
||||
|
||||
o) mount helper GUI (to simplify the various configuration options on mount)
|
||||
|
||||
p) Add support for witness protocol (perhaps ioctl to cifs.ko from user space
|
||||
tool listening on witness protocol RPC) to allow for notification of share
|
||||
move, server failover, and server adapter changes. And also improve other
|
||||
failover scenarios, e.g. when client knows multiple DFS entries point to
|
||||
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
|
||||
or unsupported feature errors.
|
||||
|
||||
r) updating cifs documentation, and user guide.
|
||||
|
||||
s) Addressing bugs found by running a broader set of xfstests in standard
|
||||
file system xfstest suite.
|
||||
|
||||
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
|
||||
and simplify the code.
|
||||
|
||||
v) POSIX Extensions for SMB3.1.1 (started, create and mkdir support added
|
||||
so far).
|
||||
|
||||
w) Add support for additional strong encryption types, and additional spnego
|
||||
authentication mechanisms (see MS-SMB2)
|
||||
|
||||
x) Finish support for SMB3.1.1 compression
|
||||
|
||||
Known Bugs
|
||||
==========
|
||||
|
||||
See http://bugzilla.samba.org - search on product "CifsVFS" for
|
||||
current bug list. Also check http://bugzilla.kernel.org (Product = File System, Component = CIFS)
|
||||
|
||||
1) existing symbolic links (Windows reparse points) are recognized but
|
||||
can not be created remotely. They are implemented for Samba and those that
|
||||
support the CIFS Unix extensions, although earlier versions of Samba
|
||||
overly restrict the pathnames.
|
||||
2) follow_link and readdir code does not follow dfs junctions
|
||||
but recognizes them
|
||||
|
||||
Misc testing to do
|
||||
==================
|
||||
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
|
||||
|
||||
2) Improve xfstest's cifs/smb3 enablement and adapt xfstests where needed to test
|
||||
cifs/smb3 better
|
||||
|
||||
3) Additional performance testing and optimization using iozone and similar -
|
||||
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
|
||||
negotiated size) and send larger write sizes to modern servers.
|
||||
|
||||
4) More exhaustively test against less common servers
|
||||
|
||||
5) Continue to extend the smb3 "buildbot" which does automated xfstesting
|
||||
against Windows, Samba and Azure currently - to add additional tests and
|
||||
to allow the buildbot to execute the tests faster. The URL for the
|
||||
buildbot is: http://smb3-test-rhel-75.southcentralus.cloudapp.azure.com
|
||||
|
||||
6) Address various coverity warnings (most are not bugs per-se, but
|
||||
the more warnings are addressed, the easier it is to spot real
|
||||
problems that static analyzers will point out in the future).
|
869
Documentation/admin-guide/cifs/usage.rst
Normal file
869
Documentation/admin-guide/cifs/usage.rst
Normal file
@ -0,0 +1,869 @@
|
||||
=====
|
||||
Usage
|
||||
=====
|
||||
|
||||
This module supports the SMB3 family of advanced network protocols (as well
|
||||
as older dialects, originally called "CIFS" or SMB1).
|
||||
|
||||
The CIFS VFS module for Linux supports many advanced network filesystem
|
||||
features such as hierarchical DFS like namespace, hardlinks, locking and more.
|
||||
It was designed to comply with the SNIA CIFS Technical Reference (which
|
||||
supersedes the 1992 X/Open SMB Standard) as well as to perform best practice
|
||||
practical interoperability with Windows 2000, Windows XP, Samba and equivalent
|
||||
servers. This code was developed in participation with the Protocol Freedom
|
||||
Information Foundation. CIFS and now SMB3 has now become a defacto
|
||||
standard for interoperating between Macs and Windows and major NAS appliances.
|
||||
|
||||
Please see
|
||||
MS-SMB2 (for detailed SMB2/SMB3/SMB3.1.1 protocol specification)
|
||||
http://protocolfreedom.org/ and
|
||||
http://samba.org/samba/PFIF/
|
||||
for more details.
|
||||
|
||||
|
||||
For questions or bug reports please contact:
|
||||
|
||||
smfrench@gmail.com
|
||||
|
||||
See the project page at: https://wiki.samba.org/index.php/LinuxCIFS_utils
|
||||
|
||||
Build instructions
|
||||
==================
|
||||
|
||||
For Linux:
|
||||
|
||||
1) Download the kernel (e.g. from http://www.kernel.org)
|
||||
and change directory into the top of the kernel directory tree
|
||||
(e.g. /usr/src/linux-2.5.73)
|
||||
2) make menuconfig (or make xconfig)
|
||||
3) select cifs from within the network filesystem choices
|
||||
4) save and exit
|
||||
5) make
|
||||
|
||||
|
||||
Installation instructions
|
||||
=========================
|
||||
|
||||
If you have built the CIFS vfs as module (successfully) simply
|
||||
type ``make modules_install`` (or if you prefer, manually copy the file to
|
||||
the modules directory e.g. /lib/modules/2.4.10-4GB/kernel/fs/cifs/cifs.ko).
|
||||
|
||||
If you have built the CIFS vfs into the kernel itself, follow the instructions
|
||||
for your distribution on how to install a new kernel (usually you
|
||||
would simply type ``make install``).
|
||||
|
||||
If you do not have the utility mount.cifs (in the Samba 4.x source tree and on
|
||||
the CIFS VFS web site) copy it to the same directory in which mount helpers
|
||||
reside (usually /sbin). Although the helper software is not
|
||||
required, mount.cifs is recommended. Most distros include a ``cifs-utils``
|
||||
package that includes this utility so it is recommended to install this.
|
||||
|
||||
Note that running the Winbind pam/nss module (logon service) on all of your
|
||||
Linux clients is useful in mapping Uids and Gids consistently across the
|
||||
domain to the proper network user. The mount.cifs mount helper can be
|
||||
found at cifs-utils.git on git.samba.org
|
||||
|
||||
If cifs is built as a module, then the size and number of network buffers
|
||||
and maximum number of simultaneous requests to one server can be configured.
|
||||
Changing these from their defaults is not recommended. By executing modinfo::
|
||||
|
||||
modinfo kernel/fs/cifs/cifs.ko
|
||||
|
||||
on kernel/fs/cifs/cifs.ko the list of configuration changes that can be made
|
||||
at module initialization time (by running insmod cifs.ko) can be seen.
|
||||
|
||||
Recommendations
|
||||
===============
|
||||
|
||||
To improve security the SMB2.1 dialect or later (usually will get SMB3) is now
|
||||
the new default. To use old dialects (e.g. to mount Windows XP) use "vers=1.0"
|
||||
on mount (or vers=2.0 for Windows Vista). Note that the CIFS (vers=1.0) is
|
||||
much older and less secure than the default dialect SMB3 which includes
|
||||
many advanced security features such as downgrade attack detection
|
||||
and encrypted shares and stronger signing and authentication algorithms.
|
||||
There are additional mount options that may be helpful for SMB3 to get
|
||||
improved POSIX behavior (NB: can use vers=3.0 to force only SMB3, never 2.1):
|
||||
|
||||
``mfsymlinks`` and ``cifsacl`` and ``idsfromsid``
|
||||
|
||||
Allowing User Mounts
|
||||
====================
|
||||
|
||||
To permit users to mount and unmount over directories they own is possible
|
||||
with the cifs vfs. A way to enable such mounting is to mark the mount.cifs
|
||||
utility as suid (e.g. ``chmod +s /sbin/mount.cifs``). To enable users to
|
||||
umount shares they mount requires
|
||||
|
||||
1) mount.cifs version 1.4 or later
|
||||
2) an entry for the share in /etc/fstab indicating that a user may
|
||||
unmount it e.g.::
|
||||
|
||||
//server/usersharename /mnt/username cifs user 0 0
|
||||
|
||||
Note that when the mount.cifs utility is run suid (allowing user mounts),
|
||||
in order to reduce risks, the ``nosuid`` mount flag is passed in on mount to
|
||||
disallow execution of an suid program mounted on the remote target.
|
||||
When mount is executed as root, nosuid is not passed in by default,
|
||||
and execution of suid programs on the remote target would be enabled
|
||||
by default. This can be changed, as with nfs and other filesystems,
|
||||
by simply specifying ``nosuid`` among the mount options. For user mounts
|
||||
though to be able to pass the suid flag to mount requires rebuilding
|
||||
mount.cifs with the following flag: CIFS_ALLOW_USR_SUID
|
||||
|
||||
There is a corresponding manual page for cifs mounting in the Samba 3.0 and
|
||||
later source tree in docs/manpages/mount.cifs.8
|
||||
|
||||
Allowing User Unmounts
|
||||
======================
|
||||
|
||||
To permit users to ummount directories that they have user mounted (see above),
|
||||
the utility umount.cifs may be used. It may be invoked directly, or if
|
||||
umount.cifs is placed in /sbin, umount can invoke the cifs umount helper
|
||||
(at least for most versions of the umount utility) for umount of cifs
|
||||
mounts, unless umount is invoked with -i (which will avoid invoking a umount
|
||||
helper). As with mount.cifs, to enable user unmounts umount.cifs must be marked
|
||||
as suid (e.g. ``chmod +s /sbin/umount.cifs``) or equivalent (some distributions
|
||||
allow adding entries to a file to the /etc/permissions file to achieve the
|
||||
equivalent suid effect). For this utility to succeed the target path
|
||||
must be a cifs mount, and the uid of the current user must match the uid
|
||||
of the user who mounted the resource.
|
||||
|
||||
Also note that the customary way of allowing user mounts and unmounts is
|
||||
(instead of using mount.cifs and unmount.cifs as suid) to add a line
|
||||
to the file /etc/fstab for each //server/share you wish to mount, but
|
||||
this can become unwieldy when potential mount targets include many
|
||||
or unpredictable UNC names.
|
||||
|
||||
Samba Considerations
|
||||
====================
|
||||
|
||||
Most current servers support SMB2.1 and SMB3 which are more secure,
|
||||
but there are useful protocol extensions for the older less secure CIFS
|
||||
dialect, so to get the maximum benefit if mounting using the older dialect
|
||||
(CIFS/SMB1), we recommend using a server that supports the SNIA CIFS
|
||||
Unix Extensions standard (e.g. almost any version of Samba ie version
|
||||
2.2.5 or later) but the CIFS vfs works fine with a wide variety of CIFS servers.
|
||||
Note that uid, gid and file permissions will display default values if you do
|
||||
not have a server that supports the Unix extensions for CIFS (such as Samba
|
||||
2.2.5 or later). To enable the Unix CIFS Extensions in the Samba server, add
|
||||
the line::
|
||||
|
||||
unix extensions = yes
|
||||
|
||||
to your smb.conf file on the server. Note that the following smb.conf settings
|
||||
are also useful (on the Samba server) when the majority of clients are Unix or
|
||||
Linux::
|
||||
|
||||
case sensitive = yes
|
||||
delete readonly = yes
|
||||
ea support = yes
|
||||
|
||||
Note that server ea support is required for supporting xattrs from the Linux
|
||||
cifs client, and that EA support is present in later versions of Samba (e.g.
|
||||
3.0.6 and later (also EA support works in all versions of Windows, at least to
|
||||
shares on NTFS filesystems). Extended Attribute (xattr) support is an optional
|
||||
feature of most Linux filesystems which may require enabling via
|
||||
make menuconfig. Client support for extended attributes (user xattr) can be
|
||||
disabled on a per-mount basis by specifying ``nouser_xattr`` on mount.
|
||||
|
||||
The CIFS client can get and set POSIX ACLs (getfacl, setfacl) to Samba servers
|
||||
version 3.10 and later. Setting POSIX ACLs requires enabling both XATTR and
|
||||
then POSIX support in the CIFS configuration options when building the cifs
|
||||
module. POSIX ACL support can be disabled on a per mount basic by specifying
|
||||
``noacl`` on mount.
|
||||
|
||||
Some administrators may want to change Samba's smb.conf ``map archive`` and
|
||||
``create mask`` parameters from the default. Unless the create mask is changed
|
||||
newly created files can end up with an unnecessarily restrictive default mode,
|
||||
which may not be what you want, although if the CIFS Unix extensions are
|
||||
enabled on the server and client, subsequent setattr calls (e.g. chmod) can
|
||||
fix the mode. Note that creating special devices (mknod) remotely
|
||||
may require specifying a mkdev function to Samba if you are not using
|
||||
Samba 3.0.6 or later. For more information on these see the manual pages
|
||||
(``man smb.conf``) on the Samba server system. Note that the cifs vfs,
|
||||
unlike the smbfs vfs, does not read the smb.conf on the client system
|
||||
(the few optional settings are passed in on mount via -o parameters instead).
|
||||
Note that Samba 2.2.7 or later includes a fix that allows the CIFS VFS to delete
|
||||
open files (required for strict POSIX compliance). Windows Servers already
|
||||
supported this feature. Samba server does not allow symlinks that refer to files
|
||||
outside of the share, so in Samba versions prior to 3.0.6, most symlinks to
|
||||
files with absolute paths (ie beginning with slash) such as::
|
||||
|
||||
ln -s /mnt/foo bar
|
||||
|
||||
would be forbidden. Samba 3.0.6 server or later includes the ability to create
|
||||
such symlinks safely by converting unsafe symlinks (ie symlinks to server
|
||||
files that are outside of the share) to a samba specific format on the server
|
||||
that is ignored by local server applications and non-cifs clients and that will
|
||||
not be traversed by the Samba server). This is opaque to the Linux client
|
||||
application using the cifs vfs. Absolute symlinks will work to Samba 3.0.5 or
|
||||
later, but only for remote clients using the CIFS Unix extensions, and will
|
||||
be invisbile to Windows clients and typically will not affect local
|
||||
applications running on the same server as Samba.
|
||||
|
||||
Use instructions
|
||||
================
|
||||
|
||||
Once the CIFS VFS support is built into the kernel or installed as a module
|
||||
(cifs.ko), you can use mount syntax like the following to access Samba or
|
||||
Mac or Windows servers::
|
||||
|
||||
mount -t cifs //9.53.216.11/e$ /mnt -o username=myname,password=mypassword
|
||||
|
||||
Before -o the option -v may be specified to make the mount.cifs
|
||||
mount helper display the mount steps more verbosely.
|
||||
After -o the following commonly used cifs vfs specific options
|
||||
are supported::
|
||||
|
||||
username=<username>
|
||||
password=<password>
|
||||
domain=<domain name>
|
||||
|
||||
Other cifs mount options are described below. Use of TCP names (in addition to
|
||||
ip addresses) is available if the mount helper (mount.cifs) is installed. If
|
||||
you do not trust the server to which are mounted, or if you do not have
|
||||
cifs signing enabled (and the physical network is insecure), consider use
|
||||
of the standard mount options ``noexec`` and ``nosuid`` to reduce the risk of
|
||||
running an altered binary on your local system (downloaded from a hostile server
|
||||
or altered by a hostile router).
|
||||
|
||||
Although mounting using format corresponding to the CIFS URL specification is
|
||||
not possible in mount.cifs yet, it is possible to use an alternate format
|
||||
for the server and sharename (which is somewhat similar to NFS style mount
|
||||
syntax) instead of the more widely used UNC format (i.e. \\server\share)::
|
||||
|
||||
mount -t cifs tcp_name_of_server:share_name /mnt -o user=myname,pass=mypasswd
|
||||
|
||||
When using the mount helper mount.cifs, passwords may be specified via alternate
|
||||
mechanisms, instead of specifying it after -o using the normal ``pass=`` syntax
|
||||
on the command line:
|
||||
1) By including it in a credential file. Specify credentials=filename as one
|
||||
of the mount options. Credential files contain two lines::
|
||||
|
||||
username=someuser
|
||||
password=your_password
|
||||
|
||||
2) By specifying the password in the PASSWD environment variable (similarly
|
||||
the user name can be taken from the USER environment variable).
|
||||
3) By specifying the password in a file by name via PASSWD_FILE
|
||||
4) By specifying the password in a file by file descriptor via PASSWD_FD
|
||||
|
||||
If no password is provided, mount.cifs will prompt for password entry
|
||||
|
||||
Restrictions
|
||||
============
|
||||
|
||||
Servers must support either "pure-TCP" (port 445 TCP/IP CIFS connections) or RFC
|
||||
1001/1002 support for "Netbios-Over-TCP/IP." This is not likely to be a
|
||||
problem as most servers support this.
|
||||
|
||||
Valid filenames differ between Windows and Linux. Windows typically restricts
|
||||
filenames which contain certain reserved characters (e.g.the character :
|
||||
which is used to delimit the beginning of a stream name by Windows), while
|
||||
Linux allows a slightly wider set of valid characters in filenames. Windows
|
||||
servers can remap such characters when an explicit mapping is specified in
|
||||
the Server's registry. Samba starting with version 3.10 will allow such
|
||||
filenames (ie those which contain valid Linux characters, which normally
|
||||
would be forbidden for Windows/CIFS semantics) as long as the server is
|
||||
configured for Unix Extensions (and the client has not disabled
|
||||
/proc/fs/cifs/LinuxExtensionsEnabled). In addition the mount option
|
||||
``mapposix`` can be used on CIFS (vers=1.0) to force the mapping of
|
||||
illegal Windows/NTFS/SMB characters to a remap range (this mount parm
|
||||
is the default for SMB3). This remap (``mapposix``) range is also
|
||||
compatible with Mac (and "Services for Mac" on some older Windows).
|
||||
|
||||
CIFS VFS Mount Options
|
||||
======================
|
||||
A partial list of the supported mount options follows:
|
||||
|
||||
username
|
||||
The user name to use when trying to establish
|
||||
the CIFS session.
|
||||
password
|
||||
The user password. If the mount helper is
|
||||
installed, the user will be prompted for password
|
||||
if not supplied.
|
||||
ip
|
||||
The ip address of the target server
|
||||
unc
|
||||
The target server Universal Network Name (export) to
|
||||
mount.
|
||||
domain
|
||||
Set the SMB/CIFS workgroup name prepended to the
|
||||
username during CIFS session establishment
|
||||
forceuid
|
||||
Set the default uid for inodes to the uid
|
||||
passed in on mount. For mounts to servers
|
||||
which do support the CIFS Unix extensions, such as a
|
||||
properly configured Samba server, the server provides
|
||||
the uid, gid and mode so this parameter should not be
|
||||
specified unless the server and clients uid and gid
|
||||
numbering differ. If the server and client are in the
|
||||
same domain (e.g. running winbind or nss_ldap) and
|
||||
the server supports the Unix Extensions then the uid
|
||||
and gid can be retrieved from the server (and uid
|
||||
and gid would not have to be specified on the mount.
|
||||
For servers which do not support the CIFS Unix
|
||||
extensions, the default uid (and gid) returned on lookup
|
||||
of existing files will be the uid (gid) of the person
|
||||
who executed the mount (root, except when mount.cifs
|
||||
is configured setuid for user mounts) unless the ``uid=``
|
||||
(gid) mount option is specified. Also note that permission
|
||||
checks (authorization checks) on accesses to a file occur
|
||||
at the server, but there are cases in which an administrator
|
||||
may want to restrict at the client as well. For those
|
||||
servers which do not report a uid/gid owner
|
||||
(such as Windows), permissions can also be checked at the
|
||||
client, and a crude form of client side permission checking
|
||||
can be enabled by specifying file_mode and dir_mode on
|
||||
the client. (default)
|
||||
forcegid
|
||||
(similar to above but for the groupid instead of uid) (default)
|
||||
noforceuid
|
||||
Fill in file owner information (uid) by requesting it from
|
||||
the server if possible. With this option, the value given in
|
||||
the uid= option (on mount) will only be used if the server
|
||||
can not support returning uids on inodes.
|
||||
noforcegid
|
||||
(similar to above but for the group owner, gid, instead of uid)
|
||||
uid
|
||||
Set the default uid for inodes, and indicate to the
|
||||
cifs kernel driver which local user mounted. If the server
|
||||
supports the unix extensions the default uid is
|
||||
not used to fill in the owner fields of inodes (files)
|
||||
unless the ``forceuid`` parameter is specified.
|
||||
gid
|
||||
Set the default gid for inodes (similar to above).
|
||||
file_mode
|
||||
If CIFS Unix extensions are not supported by the server
|
||||
this overrides the default mode for file inodes.
|
||||
fsc
|
||||
Enable local disk caching using FS-Cache (off by default). This
|
||||
option could be useful to improve performance on a slow link,
|
||||
heavily loaded server and/or network where reading from the
|
||||
disk is faster than reading from the server (over the network).
|
||||
This could also impact scalability positively as the
|
||||
number of calls to the server are reduced. However, local
|
||||
caching is not suitable for all workloads for e.g. read-once
|
||||
type workloads. So, you need to consider carefully your
|
||||
workload/scenario before using this option. Currently, local
|
||||
disk caching is functional for CIFS files opened as read-only.
|
||||
dir_mode
|
||||
If CIFS Unix extensions are not supported by the server
|
||||
this overrides the default mode for directory inodes.
|
||||
port
|
||||
attempt to contact the server on this tcp port, before
|
||||
trying the usual ports (port 445, then 139).
|
||||
iocharset
|
||||
Codepage used to convert local path names to and from
|
||||
Unicode. Unicode is used by default for network path
|
||||
names if the server supports it. If iocharset is
|
||||
not specified then the nls_default specified
|
||||
during the local client kernel build will be used.
|
||||
If server does not support Unicode, this parameter is
|
||||
unused.
|
||||
rsize
|
||||
default read size (usually 16K). The client currently
|
||||
can not use rsize larger than CIFSMaxBufSize. CIFSMaxBufSize
|
||||
defaults to 16K and may be changed (from 8K to the maximum
|
||||
kmalloc size allowed by your kernel) at module install time
|
||||
for cifs.ko. Setting CIFSMaxBufSize to a very large value
|
||||
will cause cifs to use more memory and may reduce performance
|
||||
in some cases. To use rsize greater than 127K (the original
|
||||
cifs protocol maximum) also requires that the server support
|
||||
a new Unix Capability flag (for very large read) which some
|
||||
newer servers (e.g. Samba 3.0.26 or later) do. rsize can be
|
||||
set from a minimum of 2048 to a maximum of 130048 (127K or
|
||||
CIFSMaxBufSize, whichever is smaller)
|
||||
wsize
|
||||
default write size (default 57344)
|
||||
maximum wsize currently allowed by CIFS is 57344 (fourteen
|
||||
4096 byte pages)
|
||||
actimeo=n
|
||||
attribute cache timeout in seconds (default 1 second).
|
||||
After this timeout, the cifs client requests fresh attribute
|
||||
information from the server. This option allows to tune the
|
||||
attribute cache timeout to suit the workload needs. Shorter
|
||||
timeouts mean better the cache coherency, but increased number
|
||||
of calls to the server. Longer timeouts mean reduced number
|
||||
of calls to the server at the expense of less stricter cache
|
||||
coherency checks (i.e. incorrect attribute cache for a short
|
||||
period of time).
|
||||
rw
|
||||
mount the network share read-write (note that the
|
||||
server may still consider the share read-only)
|
||||
ro
|
||||
mount network share read-only
|
||||
version
|
||||
used to distinguish different versions of the
|
||||
mount helper utility (not typically needed)
|
||||
sep
|
||||
if first mount option (after the -o), overrides
|
||||
the comma as the separator between the mount
|
||||
parms. e.g.::
|
||||
|
||||
-o user=myname,password=mypassword,domain=mydom
|
||||
|
||||
could be passed instead with period as the separator by::
|
||||
|
||||
-o sep=.user=myname.password=mypassword.domain=mydom
|
||||
|
||||
this might be useful when comma is contained within username
|
||||
or password or domain. This option is less important
|
||||
when the cifs mount helper cifs.mount (version 1.1 or later)
|
||||
is used.
|
||||
nosuid
|
||||
Do not allow remote executables with the suid bit
|
||||
program to be executed. This is only meaningful for mounts
|
||||
to servers such as Samba which support the CIFS Unix Extensions.
|
||||
If you do not trust the servers in your network (your mount
|
||||
targets) it is recommended that you specify this option for
|
||||
greater security.
|
||||
exec
|
||||
Permit execution of binaries on the mount.
|
||||
noexec
|
||||
Do not permit execution of binaries on the mount.
|
||||
dev
|
||||
Recognize block devices on the remote mount.
|
||||
nodev
|
||||
Do not recognize devices on the remote mount.
|
||||
suid
|
||||
Allow remote files on this mountpoint with suid enabled to
|
||||
be executed (default for mounts when executed as root,
|
||||
nosuid is default for user mounts).
|
||||
credentials
|
||||
Although ignored by the cifs kernel component, it is used by
|
||||
the mount helper, mount.cifs. When mount.cifs is installed it
|
||||
opens and reads the credential file specified in order
|
||||
to obtain the userid and password arguments which are passed to
|
||||
the cifs vfs.
|
||||
guest
|
||||
Although ignored by the kernel component, the mount.cifs
|
||||
mount helper will not prompt the user for a password
|
||||
if guest is specified on the mount options. If no
|
||||
password is specified a null password will be used.
|
||||
perm
|
||||
Client does permission checks (vfs_permission check of uid
|
||||
and gid of the file against the mode and desired operation),
|
||||
Note that this is in addition to the normal ACL check on the
|
||||
target machine done by the server software.
|
||||
Client permission checking is enabled by default.
|
||||
noperm
|
||||
Client does not do permission checks. This can expose
|
||||
files on this mount to access by other users on the local
|
||||
client system. It is typically only needed when the server
|
||||
supports the CIFS Unix Extensions but the UIDs/GIDs on the
|
||||
client and server system do not match closely enough to allow
|
||||
access by the user doing the mount, but it may be useful with
|
||||
non CIFS Unix Extension mounts for cases in which the default
|
||||
mode is specified on the mount but is not to be enforced on the
|
||||
client (e.g. perhaps when MultiUserMount is enabled)
|
||||
Note that this does not affect the normal ACL check on the
|
||||
target machine done by the server software (of the server
|
||||
ACL against the user name provided at mount time).
|
||||
serverino
|
||||
Use server's inode numbers instead of generating automatically
|
||||
incrementing inode numbers on the client. Although this will
|
||||
make it easier to spot hardlinked files (as they will have
|
||||
the same inode numbers) and inode numbers may be persistent,
|
||||
note that the server does not guarantee that the inode numbers
|
||||
are unique if multiple server side mounts are exported under a
|
||||
single share (since inode numbers on the servers might not
|
||||
be unique if multiple filesystems are mounted under the same
|
||||
shared higher level directory). Note that some older
|
||||
(e.g. pre-Windows 2000) do not support returning UniqueIDs
|
||||
or the CIFS Unix Extensions equivalent and for those
|
||||
this mount option will have no effect. Exporting cifs mounts
|
||||
under nfsd requires this mount option on the cifs mount.
|
||||
This is now the default if server supports the
|
||||
required network operation.
|
||||
noserverino
|
||||
Client generates inode numbers (rather than using the actual one
|
||||
from the server). These inode numbers will vary after
|
||||
unmount or reboot which can confuse some applications,
|
||||
but not all server filesystems support unique inode
|
||||
numbers.
|
||||
setuids
|
||||
If the CIFS Unix extensions are negotiated with the server
|
||||
the client will attempt to set the effective uid and gid of
|
||||
the local process on newly created files, directories, and
|
||||
devices (create, mkdir, mknod). If the CIFS Unix Extensions
|
||||
are not negotiated, for newly created files and directories
|
||||
instead of using the default uid and gid specified on
|
||||
the mount, cache the new file's uid and gid locally which means
|
||||
that the uid for the file can change when the inode is
|
||||
reloaded (or the user remounts the share).
|
||||
nosetuids
|
||||
The client will not attempt to set the uid and gid on
|
||||
on newly created files, directories, and devices (create,
|
||||
mkdir, mknod) which will result in the server setting the
|
||||
uid and gid to the default (usually the server uid of the
|
||||
user who mounted the share). Letting the server (rather than
|
||||
the client) set the uid and gid is the default. If the CIFS
|
||||
Unix Extensions are not negotiated then the uid and gid for
|
||||
new files will appear to be the uid (gid) of the mounter or the
|
||||
uid (gid) parameter specified on the mount.
|
||||
netbiosname
|
||||
When mounting to servers via port 139, specifies the RFC1001
|
||||
source name to use to represent the client netbios machine
|
||||
name when doing the RFC1001 netbios session initialize.
|
||||
direct
|
||||
Do not do inode data caching on files opened on this mount.
|
||||
This precludes mmapping files on this mount. In some cases
|
||||
with fast networks and little or no caching benefits on the
|
||||
client (e.g. when the application is doing large sequential
|
||||
reads bigger than page size without rereading the same data)
|
||||
this can provide better performance than the default
|
||||
behavior which caches reads (readahead) and writes
|
||||
(writebehind) through the local Linux client pagecache
|
||||
if oplock (caching token) is granted and held. Note that
|
||||
direct allows write operations larger than page size
|
||||
to be sent to the server.
|
||||
strictcache
|
||||
Use for switching on strict cache mode. In this mode the
|
||||
client read from the cache all the time it has Oplock Level II,
|
||||
otherwise - read from the server. All written data are stored
|
||||
in the cache, but if the client doesn't have Exclusive Oplock,
|
||||
it writes the data to the server.
|
||||
rwpidforward
|
||||
Forward pid of a process who opened a file to any read or write
|
||||
operation on that file. This prevent applications like WINE
|
||||
from failing on read and write if we use mandatory brlock style.
|
||||
acl
|
||||
Allow setfacl and getfacl to manage posix ACLs if server
|
||||
supports them. (default)
|
||||
noacl
|
||||
Do not allow setfacl and getfacl calls on this mount
|
||||
user_xattr
|
||||
Allow getting and setting user xattrs (those attributes whose
|
||||
name begins with ``user.`` or ``os2.``) as OS/2 EAs (extended
|
||||
attributes) to the server. This allows support of the
|
||||
setfattr and getfattr utilities. (default)
|
||||
nouser_xattr
|
||||
Do not allow getfattr/setfattr to get/set/list xattrs
|
||||
mapchars
|
||||
Translate six of the seven reserved characters (not backslash)::
|
||||
|
||||
*?<>|:
|
||||
|
||||
to the remap range (above 0xF000), which also
|
||||
allows the CIFS client to recognize files created with
|
||||
such characters by Windows's POSIX emulation. This can
|
||||
also be useful when mounting to most versions of Samba
|
||||
(which also forbids creating and opening files
|
||||
whose names contain any of these seven characters).
|
||||
This has no effect if the server does not support
|
||||
Unicode on the wire.
|
||||
nomapchars
|
||||
Do not translate any of these seven characters (default).
|
||||
nocase
|
||||
Request case insensitive path name matching (case
|
||||
sensitive is the default if the server supports it).
|
||||
(mount option ``ignorecase`` is identical to ``nocase``)
|
||||
posixpaths
|
||||
If CIFS Unix extensions are supported, attempt to
|
||||
negotiate posix path name support which allows certain
|
||||
characters forbidden in typical CIFS filenames, without
|
||||
requiring remapping. (default)
|
||||
noposixpaths
|
||||
If CIFS Unix extensions are supported, do not request
|
||||
posix path name support (this may cause servers to
|
||||
reject creatingfile with certain reserved characters).
|
||||
nounix
|
||||
Disable the CIFS Unix Extensions for this mount (tree
|
||||
connection). This is rarely needed, but it may be useful
|
||||
in order to turn off multiple settings all at once (ie
|
||||
posix acls, posix locks, posix paths, symlink support
|
||||
and retrieving uids/gids/mode from the server) or to
|
||||
work around a bug in server which implement the Unix
|
||||
Extensions.
|
||||
nobrl
|
||||
Do not send byte range lock requests to the server.
|
||||
This is necessary for certain applications that break
|
||||
with cifs style mandatory byte range locks (and most
|
||||
cifs servers do not yet support requesting advisory
|
||||
byte range locks).
|
||||
forcemandatorylock
|
||||
Even if the server supports posix (advisory) byte range
|
||||
locking, send only mandatory lock requests. For some
|
||||
(presumably rare) applications, originally coded for
|
||||
DOS/Windows, which require Windows style mandatory byte range
|
||||
locking, they may be able to take advantage of this option,
|
||||
forcing the cifs client to only send mandatory locks
|
||||
even if the cifs server would support posix advisory locks.
|
||||
``forcemand`` is accepted as a shorter form of this mount
|
||||
option.
|
||||
nostrictsync
|
||||
If this mount option is set, when an application does an
|
||||
fsync call then the cifs client does not send an SMB Flush
|
||||
to the server (to force the server to write all dirty data
|
||||
for this file immediately to disk), although cifs still sends
|
||||
all dirty (cached) file data to the server and waits for the
|
||||
server to respond to the write. Since SMB Flush can be
|
||||
very slow, and some servers may be reliable enough (to risk
|
||||
delaying slightly flushing the data to disk on the server),
|
||||
turning on this option may be useful to improve performance for
|
||||
applications that fsync too much, at a small risk of server
|
||||
crash. If this mount option is not set, by default cifs will
|
||||
send an SMB flush request (and wait for a response) on every
|
||||
fsync call.
|
||||
nodfs
|
||||
Disable DFS (global name space support) even if the
|
||||
server claims to support it. This can help work around
|
||||
a problem with parsing of DFS paths with Samba server
|
||||
versions 3.0.24 and 3.0.25.
|
||||
remount
|
||||
remount the share (often used to change from ro to rw mounts
|
||||
or vice versa)
|
||||
cifsacl
|
||||
Report mode bits (e.g. on stat) based on the Windows ACL for
|
||||
the file. (EXPERIMENTAL)
|
||||
servern
|
||||
Specify the server 's netbios name (RFC1001 name) to use
|
||||
when attempting to setup a session to the server.
|
||||
This is needed for mounting to some older servers (such
|
||||
as OS/2 or Windows 98 and Windows ME) since they do not
|
||||
support a default server name. A server name can be up
|
||||
to 15 characters long and is usually uppercased.
|
||||
sfu
|
||||
When the CIFS Unix Extensions are not negotiated, attempt to
|
||||
create device files and fifos in a format compatible with
|
||||
Services for Unix (SFU). In addition retrieve bits 10-12
|
||||
of the mode via the SETFILEBITS extended attribute (as
|
||||
SFU does). In the future the bottom 9 bits of the
|
||||
mode also will be emulated using queries of the security
|
||||
descriptor (ACL).
|
||||
mfsymlinks
|
||||
Enable support for Minshall+French symlinks
|
||||
(see http://wiki.samba.org/index.php/UNIX_Extensions#Minshall.2BFrench_symlinks)
|
||||
This option is ignored when specified together with the
|
||||
'sfu' option. Minshall+French symlinks are used even if
|
||||
the server supports the CIFS Unix Extensions.
|
||||
sign
|
||||
Must use packet signing (helps avoid unwanted data modification
|
||||
by intermediate systems in the route). Note that signing
|
||||
does not work with lanman or plaintext authentication.
|
||||
seal
|
||||
Must seal (encrypt) all data on this mounted share before
|
||||
sending on the network. Requires support for Unix Extensions.
|
||||
Note that this differs from the sign mount option in that it
|
||||
causes encryption of data sent over this mounted share but other
|
||||
shares mounted to the same server are unaffected.
|
||||
locallease
|
||||
This option is rarely needed. Fcntl F_SETLEASE is
|
||||
used by some applications such as Samba and NFSv4 server to
|
||||
check to see whether a file is cacheable. CIFS has no way
|
||||
to explicitly request a lease, but can check whether a file
|
||||
is cacheable (oplocked). Unfortunately, even if a file
|
||||
is not oplocked, it could still be cacheable (ie cifs client
|
||||
could grant fcntl leases if no other local processes are using
|
||||
the file) for cases for example such as when the server does not
|
||||
support oplocks and the user is sure that the only updates to
|
||||
the file will be from this client. Specifying this mount option
|
||||
will allow the cifs client to check for leases (only) locally
|
||||
for files which are not oplocked instead of denying leases
|
||||
in that case. (EXPERIMENTAL)
|
||||
sec
|
||||
Security mode. Allowed values are:
|
||||
|
||||
none
|
||||
attempt to connection as a null user (no name)
|
||||
krb5
|
||||
Use Kerberos version 5 authentication
|
||||
krb5i
|
||||
Use Kerberos authentication and packet signing
|
||||
ntlm
|
||||
Use NTLM password hashing (default)
|
||||
ntlmi
|
||||
Use NTLM password hashing with signing (if
|
||||
/proc/fs/cifs/PacketSigningEnabled on or if
|
||||
server requires signing also can be the default)
|
||||
ntlmv2
|
||||
Use NTLMv2 password hashing
|
||||
ntlmv2i
|
||||
Use NTLMv2 password hashing with packet signing
|
||||
lanman
|
||||
(if configured in kernel config) use older
|
||||
lanman hash
|
||||
hard
|
||||
Retry file operations if server is not responding
|
||||
soft
|
||||
Limit retries to unresponsive servers (usually only
|
||||
one retry) before returning an error. (default)
|
||||
|
||||
The mount.cifs mount helper also accepts a few mount options before -o
|
||||
including:
|
||||
|
||||
=============== ===============================================================
|
||||
-S take password from stdin (equivalent to setting the environment
|
||||
variable ``PASSWD_FD=0``
|
||||
-V print mount.cifs version
|
||||
-? display simple usage information
|
||||
=============== ===============================================================
|
||||
|
||||
With most 2.6 kernel versions of modutils, the version of the cifs kernel
|
||||
module can be displayed via modinfo.
|
||||
|
||||
Misc /proc/fs/cifs Flags and Debug Info
|
||||
=======================================
|
||||
|
||||
Informational pseudo-files:
|
||||
|
||||
======================= =======================================================
|
||||
DebugData Displays information about active CIFS sessions and
|
||||
shares, features enabled as well as the cifs.ko
|
||||
version.
|
||||
Stats Lists summary resource usage information as well as per
|
||||
share statistics.
|
||||
======================= =======================================================
|
||||
|
||||
Configuration pseudo-files:
|
||||
|
||||
======================= =======================================================
|
||||
SecurityFlags Flags which control security negotiation and
|
||||
also packet signing. Authentication (may/must)
|
||||
flags (e.g. for NTLM and/or NTLMv2) may be combined with
|
||||
the signing flags. Specifying two different password
|
||||
hashing mechanisms (as "must use") on the other hand
|
||||
does not make much sense. Default flags are::
|
||||
|
||||
0x07007
|
||||
|
||||
(NTLM, NTLMv2 and packet signing allowed). The maximum
|
||||
allowable flags if you want to allow mounts to servers
|
||||
using weaker password hashes is 0x37037 (lanman,
|
||||
plaintext, ntlm, ntlmv2, signing allowed). Some
|
||||
SecurityFlags require the corresponding menuconfig
|
||||
options to be enabled (lanman and plaintext require
|
||||
CONFIG_CIFS_WEAK_PW_HASH for example). Enabling
|
||||
plaintext authentication currently requires also
|
||||
enabling lanman authentication in the security flags
|
||||
because the cifs module only supports sending
|
||||
laintext passwords using the older lanman dialect
|
||||
form of the session setup SMB. (e.g. for authentication
|
||||
using plain text passwords, set the SecurityFlags
|
||||
to 0x30030)::
|
||||
|
||||
may use packet signing 0x00001
|
||||
must use packet signing 0x01001
|
||||
may use NTLM (most common password hash) 0x00002
|
||||
must use NTLM 0x02002
|
||||
may use NTLMv2 0x00004
|
||||
must use NTLMv2 0x04004
|
||||
may use Kerberos security 0x00008
|
||||
must use Kerberos 0x08008
|
||||
may use lanman (weak) password hash 0x00010
|
||||
must use lanman password hash 0x10010
|
||||
may use plaintext passwords 0x00020
|
||||
must use plaintext passwords 0x20020
|
||||
(reserved for future packet encryption) 0x00040
|
||||
|
||||
cifsFYI If set to non-zero value, additional debug information
|
||||
will be logged to the system error log. This field
|
||||
contains three flags controlling different classes of
|
||||
debugging entries. The maximum value it can be set
|
||||
to is 7 which enables all debugging points (default 0).
|
||||
Some debugging statements are not compiled into the
|
||||
cifs kernel unless CONFIG_CIFS_DEBUG2 is enabled in the
|
||||
kernel configuration. cifsFYI may be set to one or
|
||||
nore of the following flags (7 sets them all)::
|
||||
|
||||
+-----------------------------------------------+------+
|
||||
| log cifs informational messages | 0x01 |
|
||||
+-----------------------------------------------+------+
|
||||
| log return codes from cifs entry points | 0x02 |
|
||||
+-----------------------------------------------+------+
|
||||
| log slow responses | 0x04 |
|
||||
| (ie which take longer than 1 second) | |
|
||||
| | |
|
||||
| CONFIG_CIFS_STATS2 must be enabled in .config | |
|
||||
+-----------------------------------------------+------+
|
||||
|
||||
traceSMB If set to one, debug information is logged to the
|
||||
system error log with the start of smb requests
|
||||
and responses (default 0)
|
||||
LookupCacheEnable If set to one, inode information is kept cached
|
||||
for one second improving performance of lookups
|
||||
(default 1)
|
||||
LinuxExtensionsEnabled If set to one then the client will attempt to
|
||||
use the CIFS "UNIX" extensions which are optional
|
||||
protocol enhancements that allow CIFS servers
|
||||
to return accurate UID/GID information as well
|
||||
as support symbolic links. If you use servers
|
||||
such as Samba that support the CIFS Unix
|
||||
extensions but do not want to use symbolic link
|
||||
support and want to map the uid and gid fields
|
||||
to values supplied at mount (rather than the
|
||||
actual values, then set this to zero. (default 1)
|
||||
======================= =======================================================
|
||||
|
||||
These experimental features and tracing can be enabled by changing flags in
|
||||
/proc/fs/cifs (after the cifs module has been installed or built into the
|
||||
kernel, e.g. insmod cifs). To enable a feature set it to 1 e.g. to enable
|
||||
tracing to the kernel message log type::
|
||||
|
||||
echo 7 > /proc/fs/cifs/cifsFYI
|
||||
|
||||
cifsFYI functions as a bit mask. Setting it to 1 enables additional kernel
|
||||
logging of various informational messages. 2 enables logging of non-zero
|
||||
SMB return codes while 4 enables logging of requests that take longer
|
||||
than one second to complete (except for byte range lock requests).
|
||||
Setting it to 4 requires CONFIG_CIFS_STATS2 to be set in kernel configuration
|
||||
(.config). Setting it to seven enables all three. Finally, tracing
|
||||
the start of smb requests and responses can be enabled via::
|
||||
|
||||
echo 1 > /proc/fs/cifs/traceSMB
|
||||
|
||||
Per share (per client mount) statistics are available in /proc/fs/cifs/Stats.
|
||||
Additional information is available if CONFIG_CIFS_STATS2 is enabled in the
|
||||
kernel configuration (.config). The statistics returned include counters which
|
||||
represent the number of attempted and failed (ie non-zero return code from the
|
||||
server) SMB3 (or cifs) requests grouped by request type (read, write, close etc.).
|
||||
Also recorded is the total bytes read and bytes written to the server for
|
||||
that share. Note that due to client caching effects this can be less than the
|
||||
number of bytes read and written by the application running on the client.
|
||||
Statistics can be reset to zero by ``echo 0 > /proc/fs/cifs/Stats`` which may be
|
||||
useful if comparing performance of two different scenarios.
|
||||
|
||||
Also note that ``cat /proc/fs/cifs/DebugData`` will display information about
|
||||
the active sessions and the shares that are mounted.
|
||||
|
||||
Enabling Kerberos (extended security) works but requires version 1.2 or later
|
||||
of the helper program cifs.upcall to be present and to be configured in the
|
||||
/etc/request-key.conf file. The cifs.upcall helper program is from the Samba
|
||||
project(http://www.samba.org). NTLM and NTLMv2 and LANMAN support do not
|
||||
require this helper. Note that NTLMv2 security (which does not require the
|
||||
cifs.upcall helper program), instead of using Kerberos, is sufficient for
|
||||
some use cases.
|
||||
|
||||
DFS support allows transparent redirection to shares in an MS-DFS name space.
|
||||
In addition, DFS support for target shares which are specified as UNC
|
||||
names which begin with host names (rather than IP addresses) requires
|
||||
a user space helper (such as cifs.upcall) to be present in order to
|
||||
translate host names to ip address, and the user space helper must also
|
||||
be configured in the file /etc/request-key.conf. Samba, Windows servers and
|
||||
many NAS appliances support DFS as a way of constructing a global name
|
||||
space to ease network configuration and improve reliability.
|
||||
|
||||
To use cifs Kerberos and DFS support, the Linux keyutils package should be
|
||||
installed and something like the following lines should be added to the
|
||||
/etc/request-key.conf file::
|
||||
|
||||
create cifs.spnego * * /usr/local/sbin/cifs.upcall %k
|
||||
create dns_resolver * * /usr/local/sbin/cifs.upcall %k
|
||||
|
||||
CIFS kernel module parameters
|
||||
=============================
|
||||
These module parameters can be specified or modified either during the time of
|
||||
module loading or during the runtime by using the interface::
|
||||
|
||||
/proc/module/cifs/parameters/<param>
|
||||
|
||||
i.e.::
|
||||
|
||||
echo "value" > /sys/module/cifs/parameters/<param>
|
||||
|
||||
================= ==========================================================
|
||||
1. enable_oplocks Enable or disable oplocks. Oplocks are enabled by default.
|
||||
[Y/y/1]. To disable use any of [N/n/0].
|
||||
================= ==========================================================
|
@ -1,10 +0,0 @@
|
||||
# -*- coding: utf-8; mode: python -*-
|
||||
|
||||
project = 'Linux Kernel User Documentation'
|
||||
|
||||
tags.add("subproject")
|
||||
|
||||
latex_documents = [
|
||||
('index', 'linux-user.tex', 'Linux Kernel User Documentation',
|
||||
'The kernel development community', 'manual'),
|
||||
]
|
333
Documentation/admin-guide/device-mapper/dm-clone.rst
Normal file
333
Documentation/admin-guide/device-mapper/dm-clone.rst
Normal file
@ -0,0 +1,333 @@
|
||||
.. SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
========
|
||||
dm-clone
|
||||
========
|
||||
|
||||
Introduction
|
||||
============
|
||||
|
||||
dm-clone is a device mapper target which produces a one-to-one copy of an
|
||||
existing, read-only source device into a writable destination device: It
|
||||
presents a virtual block device which makes all data appear immediately, and
|
||||
redirects reads and writes accordingly.
|
||||
|
||||
The main use case of dm-clone is to clone a potentially remote, high-latency,
|
||||
read-only, archival-type block device into a writable, fast, primary-type device
|
||||
for fast, low-latency I/O. The cloned device is visible/mountable immediately
|
||||
and the copy of the source device to the destination device happens in the
|
||||
background, in parallel with user I/O.
|
||||
|
||||
For example, one could restore an application backup from a read-only copy,
|
||||
accessible through a network storage protocol (NBD, Fibre Channel, iSCSI, AoE,
|
||||
etc.), into a local SSD or NVMe device, and start using the device immediately,
|
||||
without waiting for the restore to complete.
|
||||
|
||||
When the cloning completes, the dm-clone table can be removed altogether and be
|
||||
replaced, e.g., by a linear table, mapping directly to the destination device.
|
||||
|
||||
The dm-clone target reuses the metadata library used by the thin-provisioning
|
||||
target.
|
||||
|
||||
Glossary
|
||||
========
|
||||
|
||||
Hydration
|
||||
The process of filling a region of the destination device with data from
|
||||
the same region of the source device, i.e., copying the region from the
|
||||
source to the destination device.
|
||||
|
||||
Once a region gets hydrated we redirect all I/O regarding it to the destination
|
||||
device.
|
||||
|
||||
Design
|
||||
======
|
||||
|
||||
Sub-devices
|
||||
-----------
|
||||
|
||||
The target is constructed by passing three devices to it (along with other
|
||||
parameters detailed later):
|
||||
|
||||
1. A source device - the read-only device that gets cloned and source of the
|
||||
hydration.
|
||||
|
||||
2. A destination device - the destination of the hydration, which will become a
|
||||
clone of the source device.
|
||||
|
||||
3. A small metadata device - it records which regions are already valid in the
|
||||
destination device, i.e., which regions have already been hydrated, or have
|
||||
been written to directly, via user I/O.
|
||||
|
||||
The size of the destination device must be at least equal to the size of the
|
||||
source device.
|
||||
|
||||
Regions
|
||||
-------
|
||||
|
||||
dm-clone divides the source and destination devices in fixed sized regions.
|
||||
Regions are the unit of hydration, i.e., the minimum amount of data copied from
|
||||
the source to the destination device.
|
||||
|
||||
The region size is configurable when you first create the dm-clone device. The
|
||||
recommended region size is the same as the file system block size, which usually
|
||||
is 4KB. The region size must be between 8 sectors (4KB) and 2097152 sectors
|
||||
(1GB) and a power of two.
|
||||
|
||||
Reads and writes from/to hydrated regions are serviced from the destination
|
||||
device.
|
||||
|
||||
A read to a not yet hydrated region is serviced directly from the source device.
|
||||
|
||||
A write to a not yet hydrated region will be delayed until the corresponding
|
||||
region has been hydrated and the hydration of the region starts immediately.
|
||||
|
||||
Note that a write request with size equal to region size will skip copying of
|
||||
the corresponding region from the source device and overwrite the region of the
|
||||
destination device directly.
|
||||
|
||||
Discards
|
||||
--------
|
||||
|
||||
dm-clone interprets a discard request to a range that hasn't been hydrated yet
|
||||
as a hint to skip hydration of the regions covered by the request, i.e., it
|
||||
skips copying the region's data from the source to the destination device, and
|
||||
only updates its metadata.
|
||||
|
||||
If the destination device supports discards, then by default dm-clone will pass
|
||||
down discard requests to it.
|
||||
|
||||
Background Hydration
|
||||
--------------------
|
||||
|
||||
dm-clone copies continuously from the source to the destination device, until
|
||||
all of the device has been copied.
|
||||
|
||||
Copying data from the source to the destination device uses bandwidth. The user
|
||||
can set a throttle to prevent more than a certain amount of copying occurring at
|
||||
any one time. Moreover, dm-clone takes into account user I/O traffic going to
|
||||
the devices and pauses the background hydration when there is I/O in-flight.
|
||||
|
||||
A message `hydration_threshold <#regions>` can be used to set the maximum number
|
||||
of regions being copied, the default being 1 region.
|
||||
|
||||
dm-clone employs dm-kcopyd for copying portions of the source device to the
|
||||
destination device. By default, we issue copy requests of size equal to the
|
||||
region size. A message `hydration_batch_size <#regions>` can be used to tune the
|
||||
size of these copy requests. Increasing the hydration batch size results in
|
||||
dm-clone trying to batch together contiguous regions, so we copy the data in
|
||||
batches of this many regions.
|
||||
|
||||
When the hydration of the destination device finishes, a dm event will be sent
|
||||
to user space.
|
||||
|
||||
Updating on-disk metadata
|
||||
-------------------------
|
||||
|
||||
On-disk metadata is committed every time a FLUSH or FUA bio is written. If no
|
||||
such requests are made then commits will occur every second. This means the
|
||||
dm-clone device behaves like a physical disk that has a volatile write cache. If
|
||||
power is lost you may lose some recent writes. The metadata should always be
|
||||
consistent in spite of any crash.
|
||||
|
||||
Target Interface
|
||||
================
|
||||
|
||||
Constructor
|
||||
-----------
|
||||
|
||||
::
|
||||
|
||||
clone <metadata dev> <destination dev> <source dev> <region size>
|
||||
[<#feature args> [<feature arg>]* [<#core args> [<core arg>]*]]
|
||||
|
||||
================ ==============================================================
|
||||
metadata dev Fast device holding the persistent metadata
|
||||
destination dev The destination device, where the source will be cloned
|
||||
source dev Read only device containing the data that gets cloned
|
||||
region size The size of a region in sectors
|
||||
|
||||
#feature args Number of feature arguments passed
|
||||
feature args no_hydration or no_discard_passdown
|
||||
|
||||
#core args An even number of arguments corresponding to key/value pairs
|
||||
passed to dm-clone
|
||||
core args Key/value pairs passed to dm-clone, e.g. `hydration_threshold
|
||||
256`
|
||||
================ ==============================================================
|
||||
|
||||
Optional feature arguments are:
|
||||
|
||||
==================== =========================================================
|
||||
no_hydration Create a dm-clone instance with background hydration
|
||||
disabled
|
||||
no_discard_passdown Disable passing down discards to the destination device
|
||||
==================== =========================================================
|
||||
|
||||
Optional core arguments are:
|
||||
|
||||
================================ ==============================================
|
||||
hydration_threshold <#regions> Maximum number of regions being copied from
|
||||
the source to the destination device at any
|
||||
one time, during background hydration.
|
||||
hydration_batch_size <#regions> During background hydration, try to batch
|
||||
together contiguous regions, so we copy data
|
||||
from the source to the destination device in
|
||||
batches of this many regions.
|
||||
================================ ==============================================
|
||||
|
||||
Status
|
||||
------
|
||||
|
||||
::
|
||||
|
||||
<metadata block size> <#used metadata blocks>/<#total metadata blocks>
|
||||
<region size> <#hydrated regions>/<#total regions> <#hydrating regions>
|
||||
<#feature args> <feature args>* <#core args> <core args>*
|
||||
<clone metadata mode>
|
||||
|
||||
======================= =======================================================
|
||||
metadata block size Fixed block size for each metadata block in sectors
|
||||
#used metadata blocks Number of metadata blocks used
|
||||
#total metadata blocks Total number of metadata blocks
|
||||
region size Configurable region size for the device in sectors
|
||||
#hydrated regions Number of regions that have finished hydrating
|
||||
#total regions Total number of regions to hydrate
|
||||
#hydrating regions Number of regions currently hydrating
|
||||
#feature args Number of feature arguments to follow
|
||||
feature args Feature arguments, e.g. `no_hydration`
|
||||
#core args Even number of core arguments to follow
|
||||
core args Key/value pairs for tuning the core, e.g.
|
||||
`hydration_threshold 256`
|
||||
clone metadata mode ro if read-only, rw if read-write
|
||||
|
||||
In serious cases where even a read-only mode is deemed
|
||||
unsafe no further I/O will be permitted and the status
|
||||
will just contain the string 'Fail'. If the metadata
|
||||
mode changes, a dm event will be sent to user space.
|
||||
======================= =======================================================
|
||||
|
||||
Messages
|
||||
--------
|
||||
|
||||
`disable_hydration`
|
||||
Disable the background hydration of the destination device.
|
||||
|
||||
`enable_hydration`
|
||||
Enable the background hydration of the destination device.
|
||||
|
||||
`hydration_threshold <#regions>`
|
||||
Set background hydration threshold.
|
||||
|
||||
`hydration_batch_size <#regions>`
|
||||
Set background hydration batch size.
|
||||
|
||||
Examples
|
||||
========
|
||||
|
||||
Clone a device containing a file system
|
||||
---------------------------------------
|
||||
|
||||
1. Create the dm-clone device.
|
||||
|
||||
::
|
||||
|
||||
dmsetup create clone --table "0 1048576000 clone $metadata_dev $dest_dev \
|
||||
$source_dev 8 1 no_hydration"
|
||||
|
||||
2. Mount the device and trim the file system. dm-clone interprets the discards
|
||||
sent by the file system and it will not hydrate the unused space.
|
||||
|
||||
::
|
||||
|
||||
mount /dev/mapper/clone /mnt/cloned-fs
|
||||
fstrim /mnt/cloned-fs
|
||||
|
||||
3. Enable background hydration of the destination device.
|
||||
|
||||
::
|
||||
|
||||
dmsetup message clone 0 enable_hydration
|
||||
|
||||
4. When the hydration finishes, we can replace the dm-clone table with a linear
|
||||
table.
|
||||
|
||||
::
|
||||
|
||||
dmsetup suspend clone
|
||||
dmsetup load clone --table "0 1048576000 linear $dest_dev 0"
|
||||
dmsetup resume clone
|
||||
|
||||
The metadata device is no longer needed and can be safely discarded or reused
|
||||
for other purposes.
|
||||
|
||||
Known issues
|
||||
============
|
||||
|
||||
1. We redirect reads, to not-yet-hydrated regions, to the source device. If
|
||||
reading the source device has high latency and the user repeatedly reads from
|
||||
the same regions, this behaviour could degrade performance. We should use
|
||||
these reads as hints to hydrate the relevant regions sooner. Currently, we
|
||||
rely on the page cache to cache these regions, so we hopefully don't end up
|
||||
reading them multiple times from the source device.
|
||||
|
||||
2. Release in-core resources, i.e., the bitmaps tracking which regions are
|
||||
hydrated, after the hydration has finished.
|
||||
|
||||
3. During background hydration, if we fail to read the source or write to the
|
||||
destination device, we print an error message, but the hydration process
|
||||
continues indefinitely, until it succeeds. We should stop the background
|
||||
hydration after a number of failures and emit a dm event for user space to
|
||||
notice.
|
||||
|
||||
Why not...?
|
||||
===========
|
||||
|
||||
We explored the following alternatives before implementing dm-clone:
|
||||
|
||||
1. Use dm-cache with cache size equal to the source device and implement a new
|
||||
cloning policy:
|
||||
|
||||
* The resulting cache device is not a one-to-one mirror of the source device
|
||||
and thus we cannot remove the cache device once cloning completes.
|
||||
|
||||
* dm-cache writes to the source device, which violates our requirement that
|
||||
the source device must be treated as read-only.
|
||||
|
||||
* Caching is semantically different from cloning.
|
||||
|
||||
2. Use dm-snapshot with a COW device equal to the source device:
|
||||
|
||||
* dm-snapshot stores its metadata in the COW device, so the resulting device
|
||||
is not a one-to-one mirror of the source device.
|
||||
|
||||
* No background copying mechanism.
|
||||
|
||||
* dm-snapshot needs to commit its metadata whenever a pending exception
|
||||
completes, to ensure snapshot consistency. In the case of cloning, we don't
|
||||
need to be so strict and can rely on committing metadata every time a FLUSH
|
||||
or FUA bio is written, or periodically, like dm-thin and dm-cache do. This
|
||||
improves the performance significantly.
|
||||
|
||||
3. Use dm-mirror: The mirror target has a background copying/mirroring
|
||||
mechanism, but it writes to all mirrors, thus violating our requirement that
|
||||
the source device must be treated as read-only.
|
||||
|
||||
4. Use dm-thin's external snapshot functionality. This approach is the most
|
||||
promising among all alternatives, as the thinly-provisioned volume is a
|
||||
one-to-one mirror of the source device and handles reads and writes to
|
||||
un-provisioned/not-yet-cloned areas the same way as dm-clone does.
|
||||
|
||||
Still:
|
||||
|
||||
* There is no background copying mechanism, though one could be implemented.
|
||||
|
||||
* Most importantly, we want to support arbitrary block devices as the
|
||||
destination of the cloning process and not restrict ourselves to
|
||||
thinly-provisioned volumes. Thin-provisioning has an inherent metadata
|
||||
overhead, for maintaining the thin volume mappings, which significantly
|
||||
degrades performance.
|
||||
|
||||
Moreover, cloning a device shouldn't force the use of thin-provisioning. On
|
||||
the other hand, if we wish to use thin provisioning, we can just use a thin
|
||||
LV as dm-clone's destination device.
|
@ -125,6 +125,13 @@ check_at_most_once
|
||||
blocks, and a hash block will not be verified any more after all the data
|
||||
blocks it covers have been verified anyway.
|
||||
|
||||
root_hash_sig_key_desc <key_description>
|
||||
This is the description of the USER_KEY that the kernel will lookup to get
|
||||
the pkcs7 signature of the roothash. The pkcs7 signature is used to validate
|
||||
the root hash during the creation of the device mapper block device.
|
||||
Verification of roothash depends on the config DM_VERITY_VERIFY_ROOTHASH_SIG
|
||||
being set in the kernel.
|
||||
|
||||
Theory of operation
|
||||
===================
|
||||
|
||||
|
@ -1647,8 +1647,17 @@
|
||||
0 = /dev/comedi0 First 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
|
||||
0 = /dev/ubda First user-mode block device
|
||||
|
@ -12,3 +12,5 @@ are configurable at compile, boot or run time.
|
||||
spectre
|
||||
l1tf
|
||||
mds
|
||||
tsx_async_abort
|
||||
multihit.rst
|
||||
|
163
Documentation/admin-guide/hw-vuln/multihit.rst
Normal file
163
Documentation/admin-guide/hw-vuln/multihit.rst
Normal file
@ -0,0 +1,163 @@
|
||||
iTLB multihit
|
||||
=============
|
||||
|
||||
iTLB multihit is an erratum where some processors may incur a machine check
|
||||
error, possibly resulting in an unrecoverable CPU lockup, when an
|
||||
instruction fetch hits multiple entries in the instruction TLB. This can
|
||||
occur when the page size is changed along with either the physical address
|
||||
or cache type. A malicious guest running on a virtualized system can
|
||||
exploit this erratum to perform a denial of service attack.
|
||||
|
||||
|
||||
Affected processors
|
||||
-------------------
|
||||
|
||||
Variations of this erratum are present on most Intel Core and Xeon processor
|
||||
models. The erratum is not present on:
|
||||
|
||||
- non-Intel processors
|
||||
|
||||
- Some Atoms (Airmont, Bonnell, Goldmont, GoldmontPlus, Saltwell, Silvermont)
|
||||
|
||||
- Intel processors that have the PSCHANGE_MC_NO bit set in the
|
||||
IA32_ARCH_CAPABILITIES MSR.
|
||||
|
||||
|
||||
Related CVEs
|
||||
------------
|
||||
|
||||
The following CVE entry is related to this issue:
|
||||
|
||||
============== =================================================
|
||||
CVE-2018-12207 Machine Check Error Avoidance on Page Size Change
|
||||
============== =================================================
|
||||
|
||||
|
||||
Problem
|
||||
-------
|
||||
|
||||
Privileged software, including OS and virtual machine managers (VMM), are in
|
||||
charge of memory management. A key component in memory management is the control
|
||||
of the page tables. Modern processors use virtual memory, a technique that creates
|
||||
the illusion of a very large memory for processors. This virtual space is split
|
||||
into pages of a given size. Page tables translate virtual addresses to physical
|
||||
addresses.
|
||||
|
||||
To reduce latency when performing a virtual to physical address translation,
|
||||
processors include a structure, called TLB, that caches recent translations.
|
||||
There are separate TLBs for instruction (iTLB) and data (dTLB).
|
||||
|
||||
Under this errata, instructions are fetched from a linear address translated
|
||||
using a 4 KB translation cached in the iTLB. Privileged software modifies the
|
||||
paging structure so that the same linear address using large page size (2 MB, 4
|
||||
MB, 1 GB) with a different physical address or memory type. After the page
|
||||
structure modification but before the software invalidates any iTLB entries for
|
||||
the linear address, a code fetch that happens on the same linear address may
|
||||
cause a machine-check error which can result in a system hang or shutdown.
|
||||
|
||||
|
||||
Attack scenarios
|
||||
----------------
|
||||
|
||||
Attacks against the iTLB multihit erratum can be mounted from malicious
|
||||
guests in a virtualized system.
|
||||
|
||||
|
||||
iTLB multihit system information
|
||||
--------------------------------
|
||||
|
||||
The Linux kernel provides a sysfs interface to enumerate the current iTLB
|
||||
multihit status of the system:whether the system is vulnerable and which
|
||||
mitigations are active. The relevant sysfs file is:
|
||||
|
||||
/sys/devices/system/cpu/vulnerabilities/itlb_multihit
|
||||
|
||||
The possible values in this file are:
|
||||
|
||||
.. list-table::
|
||||
|
||||
* - Not affected
|
||||
- The processor is not vulnerable.
|
||||
* - KVM: Mitigation: Split huge pages
|
||||
- Software changes mitigate this issue.
|
||||
* - KVM: Vulnerable
|
||||
- The processor is vulnerable, but no mitigation enabled
|
||||
|
||||
|
||||
Enumeration of the erratum
|
||||
--------------------------------
|
||||
|
||||
A new bit has been allocated in the IA32_ARCH_CAPABILITIES (PSCHANGE_MC_NO) msr
|
||||
and will be set on CPU's which are mitigated against this issue.
|
||||
|
||||
======================================= =========== ===============================
|
||||
IA32_ARCH_CAPABILITIES MSR Not present Possibly vulnerable,check model
|
||||
IA32_ARCH_CAPABILITIES[PSCHANGE_MC_NO] '0' Likely vulnerable,check model
|
||||
IA32_ARCH_CAPABILITIES[PSCHANGE_MC_NO] '1' Not vulnerable
|
||||
======================================= =========== ===============================
|
||||
|
||||
|
||||
Mitigation mechanism
|
||||
-------------------------
|
||||
|
||||
This erratum can be mitigated by restricting the use of large page sizes to
|
||||
non-executable pages. This forces all iTLB entries to be 4K, and removes
|
||||
the possibility of multiple hits.
|
||||
|
||||
In order to mitigate the vulnerability, KVM initially marks all huge pages
|
||||
as non-executable. If the guest attempts to execute in one of those pages,
|
||||
the page is broken down into 4K pages, which are then marked executable.
|
||||
|
||||
If EPT is disabled or not available on the host, KVM is in control of TLB
|
||||
flushes and the problematic situation cannot happen. However, the shadow
|
||||
EPT paging mechanism used by nested virtualization is vulnerable, because
|
||||
the nested guest can trigger multiple iTLB hits by modifying its own
|
||||
(non-nested) page tables. For simplicity, KVM will make large pages
|
||||
non-executable in all shadow paging modes.
|
||||
|
||||
Mitigation control on the kernel command line and KVM - module parameter
|
||||
------------------------------------------------------------------------
|
||||
|
||||
The KVM hypervisor mitigation mechanism for marking huge pages as
|
||||
non-executable can be controlled with a module parameter "nx_huge_pages=".
|
||||
The kernel command line allows to control the iTLB multihit mitigations at
|
||||
boot time with the option "kvm.nx_huge_pages=".
|
||||
|
||||
The valid arguments for these options are:
|
||||
|
||||
========== ================================================================
|
||||
force Mitigation is enabled. In this case, the mitigation implements
|
||||
non-executable huge pages in Linux kernel KVM module. All huge
|
||||
pages in the EPT are marked as non-executable.
|
||||
If a guest attempts to execute in one of those pages, the page is
|
||||
broken down into 4K pages, which are then marked executable.
|
||||
|
||||
off Mitigation is disabled.
|
||||
|
||||
auto Enable mitigation only if the platform is affected and the kernel
|
||||
was not booted with the "mitigations=off" command line parameter.
|
||||
This is the default option.
|
||||
========== ================================================================
|
||||
|
||||
|
||||
Mitigation selection guide
|
||||
--------------------------
|
||||
|
||||
1. No virtualization in use
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The system is protected by the kernel unconditionally and no further
|
||||
action is required.
|
||||
|
||||
2. Virtualization with trusted guests
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
If the guest comes from a trusted source, you may assume that the guest will
|
||||
not attempt to maliciously exploit these errata and no further action is
|
||||
required.
|
||||
|
||||
3. Virtualization with untrusted guests
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
If the guest comes from an untrusted source, the guest host kernel will need
|
||||
to apply iTLB multihit mitigation via the kernel command line or kvm
|
||||
module parameter.
|
@ -41,10 +41,11 @@ Related CVEs
|
||||
|
||||
The following CVE entries describe Spectre variants:
|
||||
|
||||
============= ======================= =================
|
||||
============= ======================= ==========================
|
||||
CVE-2017-5753 Bounds check bypass Spectre variant 1
|
||||
CVE-2017-5715 Branch target injection Spectre variant 2
|
||||
============= ======================= =================
|
||||
CVE-2019-1125 Spectre v1 swapgs Spectre variant 1 (swapgs)
|
||||
============= ======================= ==========================
|
||||
|
||||
Problem
|
||||
-------
|
||||
@ -78,6 +79,13 @@ There are some extensions of Spectre variant 1 attacks for reading data
|
||||
over the network, see :ref:`[12] <spec_ref12>`. However such attacks
|
||||
are difficult, low bandwidth, fragile, and are considered low risk.
|
||||
|
||||
Note that, despite "Bounds Check Bypass" name, Spectre variant 1 is not
|
||||
only about user-controlled array bounds checks. It can affect any
|
||||
conditional checks. The kernel entry code interrupt, exception, and NMI
|
||||
handlers all have conditional swapgs checks. Those may be problematic
|
||||
in the context of Spectre v1, as kernel code can speculatively run with
|
||||
a user GS.
|
||||
|
||||
Spectre variant 2 (Branch Target Injection)
|
||||
-------------------------------------------
|
||||
|
||||
@ -132,6 +140,9 @@ not cover all possible attack vectors.
|
||||
1. A user process attacking the kernel
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Spectre variant 1
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
The attacker passes a parameter to the kernel via a register or
|
||||
via a known address in memory during a syscall. Such parameter may
|
||||
be used later by the kernel as an index to an array or to derive
|
||||
@ -144,7 +155,40 @@ not cover all possible attack vectors.
|
||||
potentially be influenced for Spectre attacks, new "nospec" accessor
|
||||
macros are used to prevent speculative loading of data.
|
||||
|
||||
Spectre variant 2 attacker can :ref:`poison <poison_btb>` the branch
|
||||
Spectre variant 1 (swapgs)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
An attacker can train the branch predictor to speculatively skip the
|
||||
swapgs path for an interrupt or exception. If they initialize
|
||||
the GS register to a user-space value, if the swapgs is speculatively
|
||||
skipped, subsequent GS-related percpu accesses in the speculation
|
||||
window will be done with the attacker-controlled GS value. This
|
||||
could cause privileged memory to be accessed and leaked.
|
||||
|
||||
For example:
|
||||
|
||||
::
|
||||
|
||||
if (coming from user space)
|
||||
swapgs
|
||||
mov %gs:<percpu_offset>, %reg
|
||||
mov (%reg), %reg1
|
||||
|
||||
When coming from user space, the CPU can speculatively skip the
|
||||
swapgs, and then do a speculative percpu load using the user GS
|
||||
value. So the user can speculatively force a read of any kernel
|
||||
value. If a gadget exists which uses the percpu value as an address
|
||||
in another load/store, then the contents of the kernel value may
|
||||
become visible via an L1 side channel attack.
|
||||
|
||||
A similar attack exists when coming from kernel space. The CPU can
|
||||
speculatively do the swapgs, causing the user GS to get used for the
|
||||
rest of the speculative window.
|
||||
|
||||
Spectre variant 2
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
A spectre variant 2 attacker can :ref:`poison <poison_btb>` the branch
|
||||
target buffer (BTB) before issuing syscall to launch an attack.
|
||||
After entering the kernel, the kernel could use the poisoned branch
|
||||
target buffer on indirect jump and jump to gadget code in speculative
|
||||
@ -280,11 +324,18 @@ The sysfs file showing Spectre variant 1 mitigation status is:
|
||||
|
||||
The possible values in this file are:
|
||||
|
||||
======================================= =================================
|
||||
'Mitigation: __user pointer sanitation' Protection in kernel on a case by
|
||||
case base with explicit pointer
|
||||
sanitation.
|
||||
======================================= =================================
|
||||
.. list-table::
|
||||
|
||||
* - 'Not affected'
|
||||
- The processor is not vulnerable.
|
||||
* - 'Vulnerable: __user pointer sanitization and usercopy barriers only; no swapgs barriers'
|
||||
- The swapgs protections are disabled; otherwise it has
|
||||
protection in the kernel on a case by case base with explicit
|
||||
pointer sanitation and usercopy LFENCE barriers.
|
||||
* - 'Mitigation: usercopy/swapgs barriers and __user pointer sanitization'
|
||||
- Protection in the kernel on a case by case base with explicit
|
||||
pointer sanitation, usercopy LFENCE barriers, and swapgs LFENCE
|
||||
barriers.
|
||||
|
||||
However, the protections are put in place on a case by case basis,
|
||||
and there is no guarantee that all possible attack vectors for Spectre
|
||||
@ -366,12 +417,27 @@ Turning on mitigation for Spectre variant 1 and Spectre variant 2
|
||||
1. Kernel mitigation
|
||||
^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Spectre variant 1
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
For the Spectre variant 1, vulnerable kernel code (as determined
|
||||
by code audit or scanning tools) is annotated on a case by case
|
||||
basis to use nospec accessor macros for bounds clipping :ref:`[2]
|
||||
<spec_ref2>` to avoid any usable disclosure gadgets. However, it may
|
||||
not cover all attack vectors for Spectre variant 1.
|
||||
|
||||
Copy-from-user code has an LFENCE barrier to prevent the access_ok()
|
||||
check from being mis-speculated. The barrier is done by the
|
||||
barrier_nospec() macro.
|
||||
|
||||
For the swapgs variant of Spectre variant 1, LFENCE barriers are
|
||||
added to interrupt, exception and NMI entry where needed. These
|
||||
barriers are done by the FENCE_SWAPGS_KERNEL_ENTRY and
|
||||
FENCE_SWAPGS_USER_ENTRY macros.
|
||||
|
||||
Spectre variant 2
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
For Spectre variant 2 mitigation, the compiler turns indirect calls or
|
||||
jumps in the kernel into equivalent return trampolines (retpolines)
|
||||
:ref:`[3] <spec_ref3>` :ref:`[9] <spec_ref9>` to go to the target
|
||||
@ -473,6 +539,12 @@ Mitigation control on the kernel command line
|
||||
Spectre variant 2 mitigation can be disabled or force enabled at the
|
||||
kernel command line.
|
||||
|
||||
nospectre_v1
|
||||
|
||||
[X86,PPC] Disable mitigations for Spectre Variant 1
|
||||
(bounds check bypass). With this option data leaks are
|
||||
possible in the system.
|
||||
|
||||
nospectre_v2
|
||||
|
||||
[X86] Disable all mitigations for the Spectre variant 2
|
||||
|
276
Documentation/admin-guide/hw-vuln/tsx_async_abort.rst
Normal file
276
Documentation/admin-guide/hw-vuln/tsx_async_abort.rst
Normal file
@ -0,0 +1,276 @@
|
||||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
TAA - TSX Asynchronous Abort
|
||||
======================================
|
||||
|
||||
TAA is a hardware vulnerability that allows unprivileged speculative access to
|
||||
data which is available in various CPU internal buffers by using asynchronous
|
||||
aborts within an Intel TSX transactional region.
|
||||
|
||||
Affected processors
|
||||
-------------------
|
||||
|
||||
This vulnerability only affects Intel processors that support Intel
|
||||
Transactional Synchronization Extensions (TSX) when the TAA_NO bit (bit 8)
|
||||
is 0 in the IA32_ARCH_CAPABILITIES MSR. On processors where the MDS_NO bit
|
||||
(bit 5) is 0 in the IA32_ARCH_CAPABILITIES MSR, the existing MDS mitigations
|
||||
also mitigate against TAA.
|
||||
|
||||
Whether a processor is affected or not can be read out from the TAA
|
||||
vulnerability file in sysfs. See :ref:`tsx_async_abort_sys_info`.
|
||||
|
||||
Related CVEs
|
||||
------------
|
||||
|
||||
The following CVE entry is related to this TAA issue:
|
||||
|
||||
============== ===== ===================================================
|
||||
CVE-2019-11135 TAA TSX Asynchronous Abort (TAA) condition on some
|
||||
microprocessors utilizing speculative execution may
|
||||
allow an authenticated user to potentially enable
|
||||
information disclosure via a side channel with
|
||||
local access.
|
||||
============== ===== ===================================================
|
||||
|
||||
Problem
|
||||
-------
|
||||
|
||||
When performing store, load or L1 refill operations, processors write
|
||||
data into temporary microarchitectural structures (buffers). The data in
|
||||
those buffers can be forwarded to load operations as an optimization.
|
||||
|
||||
Intel TSX is an extension to the x86 instruction set architecture that adds
|
||||
hardware transactional memory support to improve performance of multi-threaded
|
||||
software. TSX lets the processor expose and exploit concurrency hidden in an
|
||||
application due to dynamically avoiding unnecessary synchronization.
|
||||
|
||||
TSX supports atomic memory transactions that are either committed (success) or
|
||||
aborted. During an abort, operations that happened within the transactional region
|
||||
are rolled back. An asynchronous abort takes place, among other options, when a
|
||||
different thread accesses a cache line that is also used within the transactional
|
||||
region when that access might lead to a data race.
|
||||
|
||||
Immediately after an uncompleted asynchronous abort, certain speculatively
|
||||
executed loads may read data from those internal buffers and pass it to dependent
|
||||
operations. This can be then used to infer the value via a cache side channel
|
||||
attack.
|
||||
|
||||
Because the buffers are potentially shared between Hyper-Threads cross
|
||||
Hyper-Thread attacks are possible.
|
||||
|
||||
The victim of a malicious actor does not need to make use of TSX. Only the
|
||||
attacker needs to begin a TSX transaction and raise an asynchronous abort
|
||||
which in turn potenitally leaks data stored in the buffers.
|
||||
|
||||
More detailed technical information is available in the TAA specific x86
|
||||
architecture section: :ref:`Documentation/x86/tsx_async_abort.rst <tsx_async_abort>`.
|
||||
|
||||
|
||||
Attack scenarios
|
||||
----------------
|
||||
|
||||
Attacks against the TAA vulnerability can be implemented from unprivileged
|
||||
applications running on hosts or guests.
|
||||
|
||||
As for MDS, the attacker has no control over the memory addresses that can
|
||||
be leaked. Only the victim is responsible for bringing data to the CPU. As
|
||||
a result, the malicious actor has to sample as much data as possible and
|
||||
then postprocess it to try to infer any useful information from it.
|
||||
|
||||
A potential attacker only has read access to the data. Also, there is no direct
|
||||
privilege escalation by using this technique.
|
||||
|
||||
|
||||
.. _tsx_async_abort_sys_info:
|
||||
|
||||
TAA system information
|
||||
-----------------------
|
||||
|
||||
The Linux kernel provides a sysfs interface to enumerate the current TAA status
|
||||
of mitigated systems. The relevant sysfs file is:
|
||||
|
||||
/sys/devices/system/cpu/vulnerabilities/tsx_async_abort
|
||||
|
||||
The possible values in this file are:
|
||||
|
||||
.. list-table::
|
||||
|
||||
* - 'Vulnerable'
|
||||
- The CPU is affected by this vulnerability and the microcode and kernel mitigation are not applied.
|
||||
* - 'Vulnerable: Clear CPU buffers attempted, no microcode'
|
||||
- The system tries to clear the buffers but the microcode might not support the operation.
|
||||
* - 'Mitigation: Clear CPU buffers'
|
||||
- The microcode has been updated to clear the buffers. TSX is still enabled.
|
||||
* - 'Mitigation: TSX disabled'
|
||||
- TSX is disabled.
|
||||
* - 'Not affected'
|
||||
- The CPU is not affected by this issue.
|
||||
|
||||
.. _ucode_needed:
|
||||
|
||||
Best effort mitigation mode
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
If the processor is vulnerable, but the availability of the microcode-based
|
||||
mitigation mechanism is not advertised via CPUID the kernel selects a best
|
||||
effort mitigation mode. This mode invokes the mitigation instructions
|
||||
without a guarantee that they clear the CPU buffers.
|
||||
|
||||
This is done to address virtualization scenarios where the host has the
|
||||
microcode update applied, but the hypervisor is not yet updated to expose the
|
||||
CPUID to the guest. If the host has updated microcode the protection takes
|
||||
effect; otherwise a few CPU cycles are wasted pointlessly.
|
||||
|
||||
The state in the tsx_async_abort sysfs file reflects this situation
|
||||
accordingly.
|
||||
|
||||
|
||||
Mitigation mechanism
|
||||
--------------------
|
||||
|
||||
The kernel detects the affected CPUs and the presence of the microcode which is
|
||||
required. If a CPU is affected and the microcode is available, then the kernel
|
||||
enables the mitigation by default.
|
||||
|
||||
|
||||
The mitigation can be controlled at boot time via a kernel command line option.
|
||||
See :ref:`taa_mitigation_control_command_line`.
|
||||
|
||||
.. _virt_mechanism:
|
||||
|
||||
Virtualization mitigation
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
Affected systems where the host has TAA microcode and TAA is mitigated by
|
||||
having disabled TSX previously, are not vulnerable regardless of the status
|
||||
of the VMs.
|
||||
|
||||
In all other cases, if the host either does not have the TAA microcode or
|
||||
the kernel is not mitigated, the system might be vulnerable.
|
||||
|
||||
|
||||
.. _taa_mitigation_control_command_line:
|
||||
|
||||
Mitigation control on the kernel command line
|
||||
---------------------------------------------
|
||||
|
||||
The kernel command line allows to control the TAA mitigations at boot time with
|
||||
the option "tsx_async_abort=". The valid arguments for this option are:
|
||||
|
||||
============ =============================================================
|
||||
off This option disables the TAA mitigation on affected platforms.
|
||||
If the system has TSX enabled (see next parameter) and the CPU
|
||||
is affected, the system is vulnerable.
|
||||
|
||||
full TAA mitigation is enabled. If TSX is enabled, on an affected
|
||||
system it will clear CPU buffers on ring transitions. On
|
||||
systems which are MDS-affected and deploy MDS mitigation,
|
||||
TAA is also mitigated. Specifying this option on those
|
||||
systems will have no effect.
|
||||
|
||||
full,nosmt The same as tsx_async_abort=full, with SMT disabled on
|
||||
vulnerable CPUs that have TSX enabled. This is the complete
|
||||
mitigation. When TSX is disabled, SMT is not disabled because
|
||||
CPU is not vulnerable to cross-thread TAA attacks.
|
||||
============ =============================================================
|
||||
|
||||
Not specifying this option is equivalent to "tsx_async_abort=full".
|
||||
|
||||
The kernel command line also allows to control the TSX feature using the
|
||||
parameter "tsx=" on CPUs which support TSX control. MSR_IA32_TSX_CTRL is used
|
||||
to control the TSX feature and the enumeration of the TSX feature bits (RTM
|
||||
and HLE) in CPUID.
|
||||
|
||||
The valid options are:
|
||||
|
||||
============ =============================================================
|
||||
off Disables TSX on the system.
|
||||
|
||||
Note that this option takes effect only on newer CPUs which are
|
||||
not vulnerable to MDS, i.e., have MSR_IA32_ARCH_CAPABILITIES.MDS_NO=1
|
||||
and which get the new IA32_TSX_CTRL MSR through a microcode
|
||||
update. This new MSR allows for the reliable deactivation of
|
||||
the TSX functionality.
|
||||
|
||||
on Enables TSX.
|
||||
|
||||
Although there are mitigations for all known security
|
||||
vulnerabilities, TSX has been known to be an accelerator for
|
||||
several previous speculation-related CVEs, and so there may be
|
||||
unknown security risks associated with leaving it enabled.
|
||||
|
||||
auto Disables TSX if X86_BUG_TAA is present, otherwise enables TSX
|
||||
on the system.
|
||||
============ =============================================================
|
||||
|
||||
Not specifying this option is equivalent to "tsx=off".
|
||||
|
||||
The following combinations of the "tsx_async_abort" and "tsx" are possible. For
|
||||
affected platforms tsx=auto is equivalent to tsx=off and the result will be:
|
||||
|
||||
========= ========================== =========================================
|
||||
tsx=on tsx_async_abort=full The system will use VERW to clear CPU
|
||||
buffers. Cross-thread attacks are still
|
||||
possible on SMT machines.
|
||||
tsx=on tsx_async_abort=full,nosmt As above, cross-thread attacks on SMT
|
||||
mitigated.
|
||||
tsx=on tsx_async_abort=off The system is vulnerable.
|
||||
tsx=off tsx_async_abort=full TSX might be disabled if microcode
|
||||
provides a TSX control MSR. If so,
|
||||
system is not vulnerable.
|
||||
tsx=off tsx_async_abort=full,nosmt Ditto
|
||||
tsx=off tsx_async_abort=off ditto
|
||||
========= ========================== =========================================
|
||||
|
||||
|
||||
For unaffected platforms "tsx=on" and "tsx_async_abort=full" does not clear CPU
|
||||
buffers. For platforms without TSX control (MSR_IA32_ARCH_CAPABILITIES.MDS_NO=0)
|
||||
"tsx" command line argument has no effect.
|
||||
|
||||
For the affected platforms below table indicates the mitigation status for the
|
||||
combinations of CPUID bit MD_CLEAR and IA32_ARCH_CAPABILITIES MSR bits MDS_NO
|
||||
and TSX_CTRL_MSR.
|
||||
|
||||
======= ========= ============= ========================================
|
||||
MDS_NO MD_CLEAR TSX_CTRL_MSR Status
|
||||
======= ========= ============= ========================================
|
||||
0 0 0 Vulnerable (needs microcode)
|
||||
0 1 0 MDS and TAA mitigated via VERW
|
||||
1 1 0 MDS fixed, TAA vulnerable if TSX enabled
|
||||
because MD_CLEAR has no meaning and
|
||||
VERW is not guaranteed to clear buffers
|
||||
1 X 1 MDS fixed, TAA can be mitigated by
|
||||
VERW or TSX_CTRL_MSR
|
||||
======= ========= ============= ========================================
|
||||
|
||||
Mitigation selection guide
|
||||
--------------------------
|
||||
|
||||
1. Trusted userspace and guests
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
If all user space applications are from a trusted source and do not execute
|
||||
untrusted code which is supplied externally, then the mitigation can be
|
||||
disabled. The same applies to virtualized environments with trusted guests.
|
||||
|
||||
|
||||
2. Untrusted userspace and guests
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
If there are untrusted applications or guests on the system, enabling TSX
|
||||
might allow a malicious actor to leak data from the host or from other
|
||||
processes running on the same physical core.
|
||||
|
||||
If the microcode is available and the TSX is disabled on the host, attacks
|
||||
are prevented in a virtualized environment as well, even if the VMs do not
|
||||
explicitly enable the mitigation.
|
||||
|
||||
|
||||
.. _taa_default_mitigations:
|
||||
|
||||
Default mitigations
|
||||
-------------------
|
||||
|
||||
The kernel's default action for vulnerable processors is:
|
||||
|
||||
- Deploy TSX disable mitigation (tsx_async_abort=full tsx=off).
|
@ -77,7 +77,10 @@ configure specific aspects of kernel behavior to your liking.
|
||||
blockdev/index
|
||||
ext4
|
||||
binderfs
|
||||
cifs/index
|
||||
xfs
|
||||
jfs
|
||||
ufs
|
||||
pm/index
|
||||
thunderbolt
|
||||
LSM/index
|
||||
@ -98,6 +101,7 @@ configure specific aspects of kernel behavior to your liking.
|
||||
iostats
|
||||
kernel-per-CPU-kthreads
|
||||
laptops/index
|
||||
auxdisplay/index
|
||||
lcd-panel-cgram
|
||||
ldm
|
||||
lockup-watchdogs
|
||||
@ -105,6 +109,7 @@ configure specific aspects of kernel behavior to your liking.
|
||||
pnp
|
||||
rtc
|
||||
svga
|
||||
wimax/index
|
||||
video-output
|
||||
|
||||
.. only:: subproject and html
|
||||
|
66
Documentation/admin-guide/jfs.rst
Normal file
66
Documentation/admin-guide/jfs.rst
Normal file
@ -0,0 +1,66 @@
|
||||
===========================================
|
||||
IBM's Journaled File System (JFS) for Linux
|
||||
===========================================
|
||||
|
||||
JFS Homepage: http://jfs.sourceforge.net/
|
||||
|
||||
The following mount options are supported:
|
||||
|
||||
(*) == default
|
||||
|
||||
iocharset=name
|
||||
Character set to use for converting from Unicode to
|
||||
ASCII. The default is to do no conversion. Use
|
||||
iocharset=utf8 for UTF-8 translations. This requires
|
||||
CONFIG_NLS_UTF8 to be set in the kernel .config file.
|
||||
iocharset=none specifies the default behavior explicitly.
|
||||
|
||||
resize=value
|
||||
Resize the volume to <value> blocks. JFS only supports
|
||||
growing a volume, not shrinking it. This option is only
|
||||
valid during a remount, when the volume is mounted
|
||||
read-write. The resize keyword with no value will grow
|
||||
the volume to the full size of the partition.
|
||||
|
||||
nointegrity
|
||||
Do not write to the journal. The primary use of this option
|
||||
is to allow for higher performance when restoring a volume
|
||||
from backup media. The integrity of the volume is not
|
||||
guaranteed if the system abnormally abends.
|
||||
|
||||
integrity(*)
|
||||
Commit metadata changes to the journal. Use this option to
|
||||
remount a volume where the nointegrity option was
|
||||
previously specified in order to restore normal behavior.
|
||||
|
||||
errors=continue
|
||||
Keep going on a filesystem error.
|
||||
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
|
||||
gid=value
|
||||
Override on-disk gid with specified value
|
||||
umask=value
|
||||
Override on-disk umask with specified octal value. For
|
||||
directories, the execute bit will be set if the corresponding
|
||||
read bit is set.
|
||||
|
||||
discard=minlen, discard/nodiscard(*)
|
||||
This enables/disables the use of discard/TRIM commands.
|
||||
The discard/TRIM commands are sent to the underlying
|
||||
block device when blocks are freed. This is useful for SSD
|
||||
devices and sparse/thinly-provisioned LUNs. The FITRIM ioctl
|
||||
command is also available together with the nodiscard option.
|
||||
The value of minlen specifies the minimum blockcount, when
|
||||
a TRIM command to the block device is considered useful.
|
||||
When no value is given to the discard option, it defaults to
|
||||
64 blocks, which means 256KiB in JFS.
|
||||
The minlen value of discard overrides the minlen value given
|
||||
on an FITRIM ioctl().
|
||||
|
||||
The JFS mailing list can be subscribed to by using the link labeled
|
||||
"Mail list Subscribe" at our web page http://jfs.sourceforge.net/
|
@ -809,6 +809,8 @@
|
||||
enables the feature at boot time. By default, it is
|
||||
disabled and the system will work mostly the same as a
|
||||
kernel built without CONFIG_DEBUG_PAGEALLOC.
|
||||
Note: to get most of debug_pagealloc error reports, it's
|
||||
useful to also enable the page_owner functionality.
|
||||
on: enable the feature
|
||||
|
||||
debugpat [X86] Enable PAT debugging
|
||||
@ -860,6 +862,10 @@
|
||||
disable_radix [PPC]
|
||||
Disable RADIX MMU mode on POWER9
|
||||
|
||||
disable_tlbie [PPC]
|
||||
Disable TLBIE instruction. Currently does not work
|
||||
with KVM, with HASH MMU, or with coherent accelerators.
|
||||
|
||||
disable_cpu_apicid= [X86,APIC,SMP]
|
||||
Format: <int>
|
||||
The number of initial APIC ID for the
|
||||
@ -1044,6 +1050,10 @@
|
||||
specified address. The serial port must already be
|
||||
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.
|
||||
|
||||
s3c2410,<addr>
|
||||
@ -1090,6 +1100,12 @@
|
||||
the framebuffer, pass the 'ram' option so that it is
|
||||
mapped with the correct attributes.
|
||||
|
||||
linflex,<addr>
|
||||
Use early console provided by Freescale LinFlex UART
|
||||
serial driver for NXP S32V234 SoCs. A valid base
|
||||
address must be provided, and the serial port must
|
||||
already be setup and configured.
|
||||
|
||||
earlyprintk= [X86,SH,ARM,M68k,S390]
|
||||
earlyprintk=vga
|
||||
earlyprintk=sclp
|
||||
@ -1197,12 +1213,6 @@
|
||||
See comment before function elanfreq_setup() in
|
||||
arch/x86/kernel/cpu/cpufreq/elanfreq.c.
|
||||
|
||||
elevator= [IOSCHED]
|
||||
Format: { "mq-deadline" | "kyber" | "bfq" }
|
||||
See Documentation/block/deadline-iosched.rst,
|
||||
Documentation/block/kyber-iosched.rst and
|
||||
Documentation/block/bfq-iosched.rst for details.
|
||||
|
||||
elfcorehdr=[size[KMG]@]offset[KMG] [IA64,PPC,SH,X86,S390]
|
||||
Specifies physical address of start of kernel core
|
||||
image elf header and optionally the size. Generally
|
||||
@ -1732,6 +1742,11 @@
|
||||
Note that using this option lowers the security
|
||||
provided by tboot because it makes the system
|
||||
vulnerable to DMA attacks.
|
||||
nobounce [Default off]
|
||||
Disable bounce buffer for unstrusted devices such as
|
||||
the Thunderbolt devices. This will treat the untrusted
|
||||
devices as the trusted ones, hence might expose security
|
||||
risks of DMA attacks.
|
||||
|
||||
intel_idle.max_cstate= [KNL,HW,ACPI,X86]
|
||||
0 disables intel_idle and fall back on acpi_idle.
|
||||
@ -1811,7 +1826,7 @@
|
||||
synchronously.
|
||||
|
||||
iommu.passthrough=
|
||||
[ARM64] Configure DMA to bypass the IOMMU by default.
|
||||
[ARM64, X86] Configure DMA to bypass the IOMMU by default.
|
||||
Format: { "0" | "1" }
|
||||
0 - Use IOMMU translation for DMA.
|
||||
1 - Bypass the IOMMU for DMA.
|
||||
@ -2040,6 +2055,25 @@
|
||||
KVM MMU at runtime.
|
||||
Default is 0 (off)
|
||||
|
||||
kvm.nx_huge_pages=
|
||||
[KVM] Controls the software workaround for the
|
||||
X86_BUG_ITLB_MULTIHIT bug.
|
||||
force : Always deploy workaround.
|
||||
off : Never deploy workaround.
|
||||
auto : Deploy workaround based on the presence of
|
||||
X86_BUG_ITLB_MULTIHIT.
|
||||
|
||||
Default is 'auto'.
|
||||
|
||||
If the software workaround is enabled for the host,
|
||||
guests do need not to enable it for nested guests.
|
||||
|
||||
kvm.nx_huge_pages_recovery_ratio=
|
||||
[KVM] Controls how many 4KiB pages are periodically zapped
|
||||
back to huge pages. 0 disables the recovery, otherwise if
|
||||
the value is N KVM will zap 1/Nth of the 4KiB pages every
|
||||
minute. The default is 60.
|
||||
|
||||
kvm-amd.nested= [KVM,AMD] Allow nested virtualization in KVM/SVM.
|
||||
Default is 1 (enabled)
|
||||
|
||||
@ -2261,6 +2295,15 @@
|
||||
lockd.nlm_udpport=M [NFS] Assign UDP port.
|
||||
Format: <integer>
|
||||
|
||||
lockdown= [SECURITY]
|
||||
{ integrity | confidentiality }
|
||||
Enable the kernel lockdown feature. If set to
|
||||
integrity, kernel features that allow userland to
|
||||
modify the running kernel are disabled. If set to
|
||||
confidentiality, kernel features that allow userland
|
||||
to extract confidential information from the kernel
|
||||
are also disabled.
|
||||
|
||||
locktorture.nreaders_stress= [KNL]
|
||||
Set the number of locking read-acquisition kthreads.
|
||||
Defaults to being automatically set based on the
|
||||
@ -2373,7 +2416,7 @@
|
||||
|
||||
machvec= [IA-64] Force the use of a particular machine-vector
|
||||
(machvec) in a generic kernel.
|
||||
Example: machvec=hpzx1_swiotlb
|
||||
Example: machvec=hpzx1
|
||||
|
||||
machtype= [Loongson] Share the same kernel image file between different
|
||||
yeeloong laptop.
|
||||
@ -2545,7 +2588,7 @@
|
||||
mem_encrypt=on: Activate SME
|
||||
mem_encrypt=off: Do not activate SME
|
||||
|
||||
Refer to Documentation/virtual/kvm/amd-memory-encryption.rst
|
||||
Refer to Documentation/virt/kvm/amd-memory-encryption.rst
|
||||
for details on when memory encryption can be activated.
|
||||
|
||||
mem_sleep_default= [SUSPEND] Default system suspend mode:
|
||||
@ -2604,7 +2647,7 @@
|
||||
expose users to several CPU vulnerabilities.
|
||||
Equivalent to: nopti [X86,PPC]
|
||||
kpti=0 [ARM64]
|
||||
nospectre_v1 [PPC]
|
||||
nospectre_v1 [X86,PPC]
|
||||
nobp=0 [S390]
|
||||
nospectre_v2 [X86,PPC,S390,ARM64]
|
||||
spectre_v2_user=off [X86]
|
||||
@ -2612,6 +2655,13 @@
|
||||
ssbd=force-off [ARM64]
|
||||
l1tf=off [X86]
|
||||
mds=off [X86]
|
||||
tsx_async_abort=off [X86]
|
||||
kvm.nx_huge_pages=off [X86]
|
||||
|
||||
Exceptions:
|
||||
This does not have any effect on
|
||||
kvm.nx_huge_pages when
|
||||
kvm.nx_huge_pages=force.
|
||||
|
||||
auto (default)
|
||||
Mitigate all CPU vulnerabilities, but leave SMT
|
||||
@ -2627,6 +2677,7 @@
|
||||
be fully mitigated, even if it means losing SMT.
|
||||
Equivalent to: l1tf=flush,nosmt [X86]
|
||||
mds=full,nosmt [X86]
|
||||
tsx_async_abort=full,nosmt [X86]
|
||||
|
||||
mminit_loglevel=
|
||||
[KNL] When CONFIG_DEBUG_MEMORY_INIT is set, this
|
||||
@ -2965,9 +3016,9 @@
|
||||
nosmt=force: Force disable SMT, cannot be undone
|
||||
via the sysfs control file.
|
||||
|
||||
nospectre_v1 [PPC] Disable mitigations for Spectre Variant 1 (bounds
|
||||
check bypass). With this option data leaks are possible
|
||||
in the system.
|
||||
nospectre_v1 [X86,PPC] Disable mitigations for Spectre Variant 1
|
||||
(bounds check bypass). With this option data leaks are
|
||||
possible in the system.
|
||||
|
||||
nospectre_v2 [X86,PPC_FSL_BOOK3E,ARM64] Disable all mitigations for
|
||||
the Spectre variant 2 (indirect branch prediction)
|
||||
@ -3452,12 +3503,13 @@
|
||||
specify the device is described above.
|
||||
If <order of align> is not specified,
|
||||
PAGE_SIZE is used as alignment.
|
||||
PCI-PCI bridge can be specified, if resource
|
||||
A PCI-PCI bridge can be specified if resource
|
||||
windows need to be expanded.
|
||||
To specify the alignment for several
|
||||
instances of a device, the PCI vendor,
|
||||
device, subvendor, and subdevice may be
|
||||
specified, e.g., 4096@pci:8086:9c22:103c:198f
|
||||
specified, e.g., 12@pci:8086:9c22:103c:198f
|
||||
for 4096-byte alignment.
|
||||
ecrc= Enable/disable PCIe ECRC (transaction layer
|
||||
end-to-end CRC checking).
|
||||
bios: Use BIOS/firmware settings. This is the
|
||||
@ -3837,12 +3889,13 @@
|
||||
RCU_BOOST is not set, valid values are 0-99 and
|
||||
the default is zero (non-realtime operation).
|
||||
|
||||
rcutree.rcu_nocb_leader_stride= [KNL]
|
||||
Set the number of NOCB kthread groups, which
|
||||
defaults to the square root of the number of
|
||||
CPUs. Larger numbers reduces the wakeup overhead
|
||||
on the per-CPU grace-period kthreads, but increases
|
||||
that same overhead on each group's leader.
|
||||
rcutree.rcu_nocb_gp_stride= [KNL]
|
||||
Set the number of NOCB callback kthreads in
|
||||
each group, which defaults to the square root
|
||||
of the number of CPUs. Larger numbers reduce
|
||||
the wakeup overhead on the global grace-period
|
||||
kthread, but increases that same overhead on
|
||||
each group's NOCB grace-period kthread.
|
||||
|
||||
rcutree.qhimark= [KNL]
|
||||
Set threshold of queued RCU callbacks beyond which
|
||||
@ -4047,6 +4100,10 @@
|
||||
rcutorture.verbose= [KNL]
|
||||
Enable additional printk() statements.
|
||||
|
||||
rcupdate.rcu_cpu_stall_ftrace_dump= [KNL]
|
||||
Dump ftrace buffer after reporting RCU CPU
|
||||
stall warning.
|
||||
|
||||
rcupdate.rcu_cpu_stall_suppress= [KNL]
|
||||
Suppress RCU CPU stall warning messages.
|
||||
|
||||
@ -4090,6 +4147,13 @@
|
||||
Run specified binary instead of /init from the ramdisk,
|
||||
used for early userspace startup. See initrd.
|
||||
|
||||
rdrand= [X86]
|
||||
force - Override the decision by the kernel to hide the
|
||||
advertisement of RDRAND support (this affects
|
||||
certain AMD processors because of buggy BIOS
|
||||
support, specifically around the suspend/resume
|
||||
path).
|
||||
|
||||
rdt= [HW,X86,RDT]
|
||||
Turn on/off individual RDT features. List is:
|
||||
cmt, mbmtotal, mbmlocal, l3cat, l3cdp, l2cat, l2cdp,
|
||||
@ -4620,6 +4684,11 @@
|
||||
/sys/power/pm_test). Only available when CONFIG_PM_DEBUG
|
||||
is set. Default value is 5.
|
||||
|
||||
svm= [PPC]
|
||||
Format: { on | off | y | n | 1 | 0 }
|
||||
This parameter controls use of the Protected
|
||||
Execution Facility on pSeries.
|
||||
|
||||
swapaccount=[0|1]
|
||||
[KNL] Enable accounting of swap in memory resource
|
||||
controller if no parameter or 1 is given or disable
|
||||
@ -4806,6 +4875,71 @@
|
||||
interruptions from clocksource watchdog are not
|
||||
acceptable).
|
||||
|
||||
tsx= [X86] Control Transactional Synchronization
|
||||
Extensions (TSX) feature in Intel processors that
|
||||
support TSX control.
|
||||
|
||||
This parameter controls the TSX feature. The options are:
|
||||
|
||||
on - Enable TSX on the system. Although there are
|
||||
mitigations for all known security vulnerabilities,
|
||||
TSX has been known to be an accelerator for
|
||||
several previous speculation-related CVEs, and
|
||||
so there may be unknown security risks associated
|
||||
with leaving it enabled.
|
||||
|
||||
off - Disable TSX on the system. (Note that this
|
||||
option takes effect only on newer CPUs which are
|
||||
not vulnerable to MDS, i.e., have
|
||||
MSR_IA32_ARCH_CAPABILITIES.MDS_NO=1 and which get
|
||||
the new IA32_TSX_CTRL MSR through a microcode
|
||||
update. This new MSR allows for the reliable
|
||||
deactivation of the TSX functionality.)
|
||||
|
||||
auto - Disable TSX if X86_BUG_TAA is present,
|
||||
otherwise enable TSX on the system.
|
||||
|
||||
Not specifying this option is equivalent to tsx=off.
|
||||
|
||||
See Documentation/admin-guide/hw-vuln/tsx_async_abort.rst
|
||||
for more details.
|
||||
|
||||
tsx_async_abort= [X86,INTEL] Control mitigation for the TSX Async
|
||||
Abort (TAA) vulnerability.
|
||||
|
||||
Similar to Micro-architectural Data Sampling (MDS)
|
||||
certain CPUs that support Transactional
|
||||
Synchronization Extensions (TSX) are vulnerable to an
|
||||
exploit against CPU internal buffers which can forward
|
||||
information to a disclosure gadget under certain
|
||||
conditions.
|
||||
|
||||
In vulnerable processors, the speculatively forwarded
|
||||
data can be used in a cache side channel attack, to
|
||||
access data to which the attacker does not have direct
|
||||
access.
|
||||
|
||||
This parameter controls the TAA mitigation. The
|
||||
options are:
|
||||
|
||||
full - Enable TAA mitigation on vulnerable CPUs
|
||||
if TSX is enabled.
|
||||
|
||||
full,nosmt - Enable TAA mitigation and disable SMT on
|
||||
vulnerable CPUs. If TSX is disabled, SMT
|
||||
is not disabled because CPU is not
|
||||
vulnerable to cross-thread TAA attacks.
|
||||
off - Unconditionally disable TAA mitigation
|
||||
|
||||
Not specifying this option is equivalent to
|
||||
tsx_async_abort=full. On CPUs which are MDS affected
|
||||
and deploy MDS mitigation, TAA mitigation is not
|
||||
required and doesn't provide any additional
|
||||
mitigation.
|
||||
|
||||
For details see:
|
||||
Documentation/admin-guide/hw-vuln/tsx_async_abort.rst
|
||||
|
||||
turbografx.map[2|3]= [HW,JOY]
|
||||
TurboGraFX parallel port interface
|
||||
Format:
|
||||
@ -5260,6 +5394,10 @@
|
||||
the unplug protocol
|
||||
never -- do not unplug even if version check succeeds
|
||||
|
||||
xen_legacy_crash [X86,XEN]
|
||||
Crash from Xen panic notifier, without executing late
|
||||
panic() code such as dumping handler.
|
||||
|
||||
xen_nopvspin [X86,XEN]
|
||||
Disables the ticketlock slowpath using Xen PV
|
||||
optimizations.
|
||||
@ -5305,3 +5443,22 @@
|
||||
A hex value specifying bitmask with supplemental xhci
|
||||
host controller quirks. Meaning of each bit can be
|
||||
consulted in header drivers/usb/host/xhci.h.
|
||||
|
||||
xmon [PPC]
|
||||
Format: { early | on | rw | ro | off }
|
||||
Controls if xmon debugger is enabled. Default is off.
|
||||
Passing only "xmon" is equivalent to "xmon=early".
|
||||
early Call xmon as early as possible on boot; xmon
|
||||
debugger is called from setup_arch().
|
||||
on xmon debugger hooks will be installed so xmon
|
||||
is only called on a kernel crash. Default mode,
|
||||
i.e. either "ro" or "rw" mode, is controlled
|
||||
with CONFIG_XMON_DEFAULT_RO_MODE.
|
||||
rw xmon debugger hooks will be installed so xmon
|
||||
is called only on a kernel crash, mode is write,
|
||||
meaning SPR registers, memory and, other data
|
||||
can be written using xmon commands.
|
||||
ro same as "rw" option above but SPR registers,
|
||||
memory, and other data can't be written using
|
||||
xmon commands.
|
||||
off xmon is disabled.
|
||||
|
@ -274,9 +274,7 @@ To reduce its OS jitter, do any of the following:
|
||||
(based on an earlier one from Gilad Ben-Yossef) that
|
||||
reduces or even eliminates vmstat overhead for some
|
||||
workloads at https://lkml.org/lkml/2013/9/4/379.
|
||||
e. Boot with "elevator=noop" to avoid workqueue use by
|
||||
the block layer.
|
||||
f. If running on high-end powerpc servers, build with
|
||||
e. If running on high-end powerpc servers, build with
|
||||
CONFIG_PPC_RTAS_DAEMON=n. This prevents the RTAS
|
||||
daemon from running on each CPU every second or so.
|
||||
(This will require editing Kconfig files and will defeat
|
||||
@ -284,12 +282,12 @@ To reduce its OS jitter, do any of the following:
|
||||
due to the rtas_event_scan() function.
|
||||
WARNING: Please check your CPU specifications to
|
||||
make sure that this is safe on your particular system.
|
||||
g. If running on Cell Processor, build your kernel with
|
||||
f. If running on Cell Processor, build your kernel with
|
||||
CBE_CPUFREQ_SPU_GOVERNOR=n to avoid OS jitter from
|
||||
spu_gov_work().
|
||||
WARNING: Please check your CPU specifications to
|
||||
make sure that this is safe on your particular system.
|
||||
h. If running on PowerMAC, build your kernel with
|
||||
g. If running on PowerMAC, build your kernel with
|
||||
CONFIG_PMAC_RACKMETER=n to disable the CPU-meter,
|
||||
avoiding OS jitter from rackmeter_do_timer().
|
||||
|
||||
|
@ -49,6 +49,7 @@ detailed description):
|
||||
- Fan control and monitoring: fan speed, fan enable/disable
|
||||
- WAN enable and disable
|
||||
- UWB enable and disable
|
||||
- LCD Shadow (PrivacyGuard) enable and disable
|
||||
|
||||
A compatibility table by model and feature is maintained on the web
|
||||
site, http://ibm-acpi.sf.net/. I appreciate any success or failure
|
||||
@ -1409,6 +1410,28 @@ Sysfs notes
|
||||
Documentation/driver-api/rfkill.rst for details.
|
||||
|
||||
|
||||
LCD Shadow control
|
||||
------------------
|
||||
|
||||
procfs: /proc/acpi/ibm/lcdshadow
|
||||
|
||||
Some newer T480s and T490s ThinkPads provide a feature called
|
||||
PrivacyGuard. By turning this feature on, the usable vertical and
|
||||
horizontal viewing angles of the LCD can be limited (as if some privacy
|
||||
screen was applied manually in front of the display).
|
||||
|
||||
procfs notes
|
||||
^^^^^^^^^^^^
|
||||
|
||||
The available commands are::
|
||||
|
||||
echo '0' >/proc/acpi/ibm/lcdshadow
|
||||
echo '1' >/proc/acpi/ibm/lcdshadow
|
||||
|
||||
The first command ensures the best viewing angle and the latter one turns
|
||||
on the feature, restricting the viewing angles.
|
||||
|
||||
|
||||
EXPERIMENTAL: UWB
|
||||
-----------------
|
||||
|
||||
|
@ -53,7 +53,7 @@ disabled, there is ``khugepaged`` daemon that scans memory and
|
||||
collapses sequences of basic pages into huge pages.
|
||||
|
||||
The THP behaviour is controlled via :ref:`sysfs <thp_sysfs>`
|
||||
interface and using madivse(2) and prctl(2) system calls.
|
||||
interface and using madvise(2) and prctl(2) system calls.
|
||||
|
||||
Transparent Hugepage Support maximizes the usefulness of free memory
|
||||
if compared to the reservation approach of hugetlbfs by allowing all
|
||||
|
52
Documentation/admin-guide/perf/imx-ddr.rst
Normal file
52
Documentation/admin-guide/perf/imx-ddr.rst
Normal file
@ -0,0 +1,52 @@
|
||||
=====================================================
|
||||
Freescale i.MX8 DDR Performance Monitoring Unit (PMU)
|
||||
=====================================================
|
||||
|
||||
There are no performance counters inside the DRAM controller, so performance
|
||||
signals are brought out to the edge of the controller where a set of 4 x 32 bit
|
||||
counters is implemented. This is controlled by the CSV modes programed in counter
|
||||
control register which causes a large number of PERF signals to be generated.
|
||||
|
||||
Selection of the value for each counter is done via the config registers. There
|
||||
is one register for each counter. Counter 0 is special in that it always counts
|
||||
“time” and when expired causes a lock on itself and the other counters and an
|
||||
interrupt is raised. If any other counter overflows, it continues counting, and
|
||||
no interrupt is raised.
|
||||
|
||||
The "format" directory describes format of the config (event ID) and config1
|
||||
(AXI filtering) fields of the perf_event_attr structure, see /sys/bus/event_source/
|
||||
devices/imx8_ddr0/format/. The "events" directory describes the events types
|
||||
hardware supported that can be used with perf tool, see /sys/bus/event_source/
|
||||
devices/imx8_ddr0/events/.
|
||||
e.g.::
|
||||
perf stat -a -e imx8_ddr0/cycles/ cmd
|
||||
perf stat -a -e imx8_ddr0/read/,imx8_ddr0/write/ cmd
|
||||
|
||||
AXI filtering is only used by CSV modes 0x41 (axid-read) and 0x42 (axid-write)
|
||||
to count reading or writing matches filter setting. Filter setting is various
|
||||
from different DRAM controller implementations, which is distinguished by quirks
|
||||
in the driver.
|
||||
|
||||
* With DDR_CAP_AXI_ID_FILTER quirk.
|
||||
Filter is defined with two configuration parts:
|
||||
--AXI_ID defines AxID matching value.
|
||||
--AXI_MASKING defines which bits of AxID are meaningful for the matching.
|
||||
0:corresponding bit is masked.
|
||||
1: corresponding bit is not masked, i.e. used to do the matching.
|
||||
|
||||
AXI_ID and AXI_MASKING are mapped on DPCR1 register in performance counter.
|
||||
When non-masked bits are matching corresponding AXI_ID bits then counter is
|
||||
incremented. Perf counter is incremented if
|
||||
AxID && AXI_MASKING == AXI_ID && AXI_MASKING
|
||||
|
||||
This filter doesn't support filter different AXI ID for axid-read and axid-write
|
||||
event at the same time as this filter is shared between counters.
|
||||
e.g.::
|
||||
perf stat -a -e imx8_ddr0/axid-read,axi_mask=0xMMMM,axi_id=0xDDDD/ cmd
|
||||
perf stat -a -e imx8_ddr0/axid-write,axi_mask=0xMMMM,axi_id=0xDDDD/ cmd
|
||||
|
||||
NOTE: axi_mask is inverted in userspace(i.e. set bits are bits to mask), and
|
||||
it will be reverted in driver automatically. so that the user can just specify
|
||||
axi_id to monitor a specific id, rather than having to specify axi_mask.
|
||||
e.g.::
|
||||
perf stat -a -e imx8_ddr0/axid-read,axi_id=0x12/ cmd, which will monitor ARID=0x12
|
@ -39,7 +39,6 @@ Table : Subdirectories in /proc/sys/net
|
||||
802 E802 protocol ax25 AX25
|
||||
ethernet Ethernet protocol rose X.25 PLP layer
|
||||
ipv4 IP version 4 x25 X.25 protocol
|
||||
ipx IPX token-ring IBM token ring
|
||||
bridge Bridging decnet DEC net
|
||||
ipv6 IP version 6 tipc TIPC
|
||||
========= =================== = ========== ==================
|
||||
@ -401,33 +400,7 @@ interface.
|
||||
(network) that the route leads to, the router (may be directly connected), the
|
||||
route flags, and the device the route is using.
|
||||
|
||||
|
||||
5. IPX
|
||||
------
|
||||
|
||||
The IPX protocol has no tunable values in proc/sys/net.
|
||||
|
||||
The IPX protocol does, however, provide proc/net/ipx. This lists each IPX
|
||||
socket giving the local and remote addresses in Novell format (that is
|
||||
network:node:port). In accordance with the strange Novell tradition,
|
||||
everything but the port is in hex. Not_Connected is displayed for sockets that
|
||||
are not tied to a specific remote address. The Tx and Rx queue sizes indicate
|
||||
the number of bytes pending for transmission and reception. The state
|
||||
indicates the state the socket is in and the uid is the owning uid of the
|
||||
socket.
|
||||
|
||||
The /proc/net/ipx_interface file lists all IPX interfaces. For each interface
|
||||
it gives the network number, the node number, and indicates if the network is
|
||||
the primary network. It also indicates which device it is bound to (or
|
||||
Internal for internal networks) and the Frame Type if appropriate. Linux
|
||||
supports 802.3, 802.2, 802.2 SNAP and DIX (Blue Book) ethernet framing for
|
||||
IPX.
|
||||
|
||||
The /proc/net/ipx_route table holds a list of IPX routes. For each route it
|
||||
gives the destination network, the router node (or Directly) and the network
|
||||
address of the router (or Connected) for internal networks.
|
||||
|
||||
6. TIPC
|
||||
5. TIPC
|
||||
-------
|
||||
|
||||
tipc_rmem
|
||||
|
@ -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.
|
||||
(For example, X or a svgalib program.)
|
||||
|
||||
``reboot(b)`` is good when you're unable to shut down. But you should also
|
||||
``sync(s)`` and ``umount(u)`` first.
|
||||
``reboot(b)`` is good when you're unable to shut down, it is an equivalent
|
||||
of pressing the "reset" button.
|
||||
|
||||
``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.
|
||||
|
||||
``sync(s)`` is great when your system is locked up, it allows you to sync your
|
||||
disks and will certainly lessen the chance of data loss and fscking. Note
|
||||
that the sync hasn't taken place until you see the "OK" and "Done" appear
|
||||
on the screen. (If the kernel is really in strife, you may not ever get the
|
||||
OK or Done message...)
|
||||
``sync(s)`` is handy before yanking removable medium or after using a rescue
|
||||
shell that provides no graceful shutdown -- it will ensure your data is
|
||||
safely written to the disk. Note that the sync hasn't taken place until you see
|
||||
the "OK" and "Done" appear on the screen.
|
||||
|
||||
``umount(u)`` is basically useful in the same ways as ``sync(s)``. I generally
|
||||
``sync(s)``, ``umount(u)``, then ``reboot(b)`` when my system locks. It's saved
|
||||
me many a fsck. Again, the unmount (remount read-only) hasn't taken place until
|
||||
you see the "OK" and "Done" message appear on the screen.
|
||||
``umount(u)`` can be used to mark filesystems as properly unmounted. From the
|
||||
running system's point of view, they will be remounted read-only. The remount
|
||||
isn't complete until you see the "OK" and "Done" message appear on the screen.
|
||||
|
||||
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
|
||||
|
68
Documentation/admin-guide/ufs.rst
Normal file
68
Documentation/admin-guide/ufs.rst
Normal file
@ -0,0 +1,68 @@
|
||||
=========
|
||||
Using UFS
|
||||
=========
|
||||
|
||||
mount -t ufs -o ufstype=type_of_ufs device dir
|
||||
|
||||
|
||||
UFS Options
|
||||
===========
|
||||
|
||||
ufstype=type_of_ufs
|
||||
UFS is a file system widely used in different operating systems.
|
||||
The problem are differences among implementations. Features of
|
||||
some implementations are undocumented, so its hard to recognize
|
||||
type of ufs automatically. That's why user must specify type of
|
||||
ufs manually by mount option ufstype. Possible values are:
|
||||
|
||||
old
|
||||
old format of ufs
|
||||
default value, supported as read-only
|
||||
|
||||
44bsd
|
||||
used in FreeBSD, NetBSD, OpenBSD
|
||||
supported as read-write
|
||||
|
||||
ufs2
|
||||
used in FreeBSD 5.x
|
||||
supported as read-write
|
||||
|
||||
5xbsd
|
||||
synonym for ufs2
|
||||
|
||||
sun
|
||||
used in SunOS (Solaris)
|
||||
supported as read-write
|
||||
|
||||
sunx86
|
||||
used in SunOS for Intel (Solarisx86)
|
||||
supported as read-write
|
||||
|
||||
hp
|
||||
used in HP-UX
|
||||
supported as read-only
|
||||
|
||||
nextstep
|
||||
used in NextStep
|
||||
supported as read-only
|
||||
|
||||
nextstep-cd
|
||||
used for NextStep CDROMs (block_size == 2048)
|
||||
supported as read-only
|
||||
|
||||
openstep
|
||||
used in OpenStep
|
||||
supported as read-only
|
||||
|
||||
|
||||
Possible Problems
|
||||
-----------------
|
||||
|
||||
See next section, if you have any.
|
||||
|
||||
|
||||
Bug Reports
|
||||
-----------
|
||||
|
||||
Any ufs bug report you can send to daniel.pirkl@email.cz or
|
||||
to dushistov@mail.ru (do not send partition tables bug reports).
|
283
Documentation/admin-guide/wimax/i2400m.rst
Normal file
283
Documentation/admin-guide/wimax/i2400m.rst
Normal file
@ -0,0 +1,283 @@
|
||||
.. include:: <isonum.txt>
|
||||
|
||||
====================================================
|
||||
Driver for the Intel Wireless Wimax Connection 2400m
|
||||
====================================================
|
||||
|
||||
:Copyright: |copy| 2008 Intel Corporation < linux-wimax@intel.com >
|
||||
|
||||
This provides a driver for the Intel Wireless WiMAX Connection 2400m
|
||||
and a basic Linux kernel WiMAX stack.
|
||||
|
||||
1. Requirements
|
||||
===============
|
||||
|
||||
* Linux installation with Linux kernel 2.6.22 or newer (if building
|
||||
from a separate tree)
|
||||
* Intel i2400m Echo Peak or Baxter Peak; this includes the Intel
|
||||
Wireless WiMAX/WiFi Link 5x50 series.
|
||||
* build tools:
|
||||
|
||||
+ Linux kernel development package for the target kernel; to
|
||||
build against your currently running kernel, you need to have
|
||||
the kernel development package corresponding to the running
|
||||
image installed (usually if your kernel is named
|
||||
linux-VERSION, the development package is called
|
||||
linux-dev-VERSION or linux-headers-VERSION).
|
||||
+ GNU C Compiler, make
|
||||
|
||||
2. Compilation and installation
|
||||
===============================
|
||||
|
||||
2.1. Compilation of the drivers included in the kernel
|
||||
------------------------------------------------------
|
||||
|
||||
Configure the kernel; to enable the WiMAX drivers select Drivers >
|
||||
Networking Drivers > WiMAX device support. Enable all of them as
|
||||
modules (easier).
|
||||
|
||||
If USB or SDIO are not enabled in the kernel configuration, the options
|
||||
to build the i2400m USB or SDIO drivers will not show. Enable said
|
||||
subsystems and go back to the WiMAX menu to enable the drivers.
|
||||
|
||||
Compile and install your kernel as usual.
|
||||
|
||||
2.2. Compilation of the drivers distributed as an standalone module
|
||||
-------------------------------------------------------------------
|
||||
|
||||
To compile::
|
||||
|
||||
$ cd source/directory
|
||||
$ make
|
||||
|
||||
Once built you can load and unload using the provided load.sh script;
|
||||
load.sh will load the modules, load.sh u will unload them.
|
||||
|
||||
To install in the default kernel directories (and enable auto loading
|
||||
when the device is plugged)::
|
||||
|
||||
$ make install
|
||||
$ depmod -a
|
||||
|
||||
If your kernel development files are located in a non standard
|
||||
directory or if you want to build for a kernel that is not the
|
||||
currently running one, set KDIR to the right location::
|
||||
|
||||
$ make KDIR=/path/to/kernel/dev/tree
|
||||
|
||||
For more information, please contact linux-wimax@intel.com.
|
||||
|
||||
3. Installing the firmware
|
||||
--------------------------
|
||||
|
||||
The firmware can be obtained from http://linuxwimax.org or might have
|
||||
been supplied with your hardware.
|
||||
|
||||
It has to be installed in the target system::
|
||||
|
||||
$ cp FIRMWAREFILE.sbcf /lib/firmware/i2400m-fw-BUSTYPE-1.3.sbcf
|
||||
|
||||
* NOTE: if your firmware came in an .rpm or .deb file, just install
|
||||
it as normal, with the rpm (rpm -i FIRMWARE.rpm) or dpkg
|
||||
(dpkg -i FIRMWARE.deb) commands. No further action is needed.
|
||||
* BUSTYPE will be usb or sdio, depending on the hardware you have.
|
||||
Each hardware type comes with its own firmware and will not work
|
||||
with other types.
|
||||
|
||||
4. Design
|
||||
=========
|
||||
|
||||
This package contains two major parts: a WiMAX kernel stack and a
|
||||
driver for the Intel i2400m.
|
||||
|
||||
The WiMAX stack is designed to provide for common WiMAX control
|
||||
services to current and future WiMAX devices from any vendor; please
|
||||
see README.wimax for details.
|
||||
|
||||
The i2400m kernel driver is broken up in two main parts: the bus
|
||||
generic driver and the bus-specific drivers. The bus generic driver
|
||||
forms the drivercore and contain no knowledge of the actual method we
|
||||
use to connect to the device. The bus specific drivers are just the
|
||||
glue to connect the bus-generic driver and the device. Currently only
|
||||
USB and SDIO are supported. See drivers/net/wimax/i2400m/i2400m.h for
|
||||
more information.
|
||||
|
||||
The bus generic driver is logically broken up in two parts: OS-glue and
|
||||
hardware-glue. The OS-glue interfaces with Linux. The hardware-glue
|
||||
interfaces with the device on using an interface provided by the
|
||||
bus-specific driver. The reason for this breakup is to be able to
|
||||
easily reuse the hardware-glue to write drivers for other OSes; note
|
||||
the hardware glue part is written as a native Linux driver; no
|
||||
abstraction layers are used, so to port to another OS, the Linux kernel
|
||||
API calls should be replaced with the target OS's.
|
||||
|
||||
5. Usage
|
||||
========
|
||||
|
||||
To load the driver, follow the instructions in the install section;
|
||||
once the driver is loaded, plug in the device (unless it is permanently
|
||||
plugged in). The driver will enumerate the device, upload the firmware
|
||||
and output messages in the kernel log (dmesg, /var/log/messages or
|
||||
/var/log/kern.log) such as::
|
||||
|
||||
...
|
||||
i2400m_usb 5-4:1.0: firmware interface version 8.0.0
|
||||
i2400m_usb 5-4:1.0: WiMAX interface wmx0 (00:1d:e1:01:94:2c) ready
|
||||
|
||||
At this point the device is ready to work.
|
||||
|
||||
Current versions require the Intel WiMAX Network Service in userspace
|
||||
to make things work. See the network service's README for instructions
|
||||
on how to scan, connect and disconnect.
|
||||
|
||||
5.1. Module parameters
|
||||
----------------------
|
||||
|
||||
Module parameters can be set at kernel or module load time or by
|
||||
echoing values::
|
||||
|
||||
$ echo VALUE > /sys/module/MODULENAME/parameters/PARAMETERNAME
|
||||
|
||||
To make changes permanent, for example, for the i2400m module, you can
|
||||
also create a file named /etc/modprobe.d/i2400m containing::
|
||||
|
||||
options i2400m idle_mode_disabled=1
|
||||
|
||||
To find which parameters are supported by a module, run::
|
||||
|
||||
$ modinfo path/to/module.ko
|
||||
|
||||
During kernel bootup (if the driver is linked in the kernel), specify
|
||||
the following to the kernel command line::
|
||||
|
||||
i2400m.PARAMETER=VALUE
|
||||
|
||||
5.1.1. i2400m: idle_mode_disabled
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The i2400m module supports a parameter to disable idle mode. This
|
||||
parameter, once set, will take effect only when the device is
|
||||
reinitialized by the driver (eg: following a reset or a reconnect).
|
||||
|
||||
5.2. Debug operations: debugfs entries
|
||||
--------------------------------------
|
||||
|
||||
The driver will register debugfs entries that allow the user to tweak
|
||||
debug settings. There are three main container directories where
|
||||
entries are placed, which correspond to the three blocks a i2400m WiMAX
|
||||
driver has:
|
||||
|
||||
* /sys/kernel/debug/wimax:DEVNAME/ for the generic WiMAX stack
|
||||
controls
|
||||
* /sys/kernel/debug/wimax:DEVNAME/i2400m for the i2400m generic
|
||||
driver controls
|
||||
* /sys/kernel/debug/wimax:DEVNAME/i2400m-usb (or -sdio) for the
|
||||
bus-specific i2400m-usb or i2400m-sdio controls).
|
||||
|
||||
Of course, if debugfs is mounted in a directory other than
|
||||
/sys/kernel/debug, those paths will change.
|
||||
|
||||
5.2.1. Increasing debug output
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The files named *dl_* indicate knobs for controlling the debug output
|
||||
of different submodules::
|
||||
|
||||
# find /sys/kernel/debug/wimax\:wmx0 -name \*dl_\*
|
||||
/sys/kernel/debug/wimax:wmx0/i2400m-usb/dl_tx
|
||||
/sys/kernel/debug/wimax:wmx0/i2400m-usb/dl_rx
|
||||
/sys/kernel/debug/wimax:wmx0/i2400m-usb/dl_notif
|
||||
/sys/kernel/debug/wimax:wmx0/i2400m-usb/dl_fw
|
||||
/sys/kernel/debug/wimax:wmx0/i2400m-usb/dl_usb
|
||||
/sys/kernel/debug/wimax:wmx0/i2400m/dl_tx
|
||||
/sys/kernel/debug/wimax:wmx0/i2400m/dl_rx
|
||||
/sys/kernel/debug/wimax:wmx0/i2400m/dl_rfkill
|
||||
/sys/kernel/debug/wimax:wmx0/i2400m/dl_netdev
|
||||
/sys/kernel/debug/wimax:wmx0/i2400m/dl_fw
|
||||
/sys/kernel/debug/wimax:wmx0/i2400m/dl_debugfs
|
||||
/sys/kernel/debug/wimax:wmx0/i2400m/dl_driver
|
||||
/sys/kernel/debug/wimax:wmx0/i2400m/dl_control
|
||||
/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_reset
|
||||
/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_debugfs
|
||||
|
||||
By reading the file you can obtain the current value of said debug
|
||||
level; by writing to it, you can set it.
|
||||
|
||||
To increase the debug level of, for example, the i2400m's generic TX
|
||||
engine, just write::
|
||||
|
||||
$ echo 3 > /sys/kernel/debug/wimax:wmx0/i2400m/dl_tx
|
||||
|
||||
Increasing numbers yield increasing debug information; for details of
|
||||
what is printed and the available levels, check the source. The code
|
||||
uses 0 for disabled and increasing values until 8.
|
||||
|
||||
5.2.2. RX and TX statistics
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The i2400m/rx_stats and i2400m/tx_stats provide statistics about the
|
||||
data reception/delivery from the device::
|
||||
|
||||
$ cat /sys/kernel/debug/wimax:wmx0/i2400m/rx_stats
|
||||
45 1 3 34 3104 48 480
|
||||
|
||||
The numbers reported are:
|
||||
|
||||
* packets/RX-buffer: total, min, max
|
||||
* RX-buffers: total RX buffers received, accumulated RX buffer size
|
||||
in bytes, min size received, max size received
|
||||
|
||||
Thus, to find the average buffer size received, divide accumulated
|
||||
RX-buffer / total RX-buffers.
|
||||
|
||||
To clear the statistics back to 0, write anything to the rx_stats file::
|
||||
|
||||
$ echo 1 > /sys/kernel/debug/wimax:wmx0/i2400m_rx_stats
|
||||
|
||||
Likewise for TX.
|
||||
|
||||
Note the packets this debug file refers to are not network packet, but
|
||||
packets in the sense of the device-specific protocol for communication
|
||||
to the host. See drivers/net/wimax/i2400m/tx.c.
|
||||
|
||||
5.2.3. Tracing messages received from user space
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
To echo messages received from user space into the trace pipe that the
|
||||
i2400m driver creates, set the debug file i2400m/trace_msg_from_user to
|
||||
1::
|
||||
|
||||
$ echo 1 > /sys/kernel/debug/wimax:wmx0/i2400m/trace_msg_from_user
|
||||
|
||||
5.2.4. Performing a device reset
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
By writing a 0, a 1 or a 2 to the file
|
||||
/sys/kernel/debug/wimax:wmx0/reset, the driver performs a warm (without
|
||||
disconnecting from the bus), cold (disconnecting from the bus) or bus
|
||||
(bus specific) reset on the device.
|
||||
|
||||
5.2.5. Asking the device to enter power saving mode
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
By writing any value to the /sys/kernel/debug/wimax:wmx0 file, the
|
||||
device will attempt to enter power saving mode.
|
||||
|
||||
6. Troubleshooting
|
||||
==================
|
||||
|
||||
6.1. Driver complains about ``i2400m-fw-usb-1.2.sbcf: request failed``
|
||||
----------------------------------------------------------------------
|
||||
|
||||
If upon connecting the device, the following is output in the kernel
|
||||
log::
|
||||
|
||||
i2400m_usb 5-4:1.0: fw i2400m-fw-usb-1.3.sbcf: request failed: -2
|
||||
|
||||
This means that the driver cannot locate the firmware file named
|
||||
/lib/firmware/i2400m-fw-usb-1.2.sbcf. Check that the file is present in
|
||||
the right location.
|
19
Documentation/admin-guide/wimax/index.rst
Normal file
19
Documentation/admin-guide/wimax/index.rst
Normal file
@ -0,0 +1,19 @@
|
||||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
===============
|
||||
WiMAX subsystem
|
||||
===============
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
wimax
|
||||
|
||||
i2400m
|
||||
|
||||
.. only:: subproject and html
|
||||
|
||||
Indices
|
||||
=======
|
||||
|
||||
* :ref:`genindex`
|
89
Documentation/admin-guide/wimax/wimax.rst
Normal file
89
Documentation/admin-guide/wimax/wimax.rst
Normal file
@ -0,0 +1,89 @@
|
||||
.. include:: <isonum.txt>
|
||||
|
||||
========================
|
||||
Linux kernel WiMAX stack
|
||||
========================
|
||||
|
||||
:Copyright: |copy| 2008 Intel Corporation < linux-wimax@intel.com >
|
||||
|
||||
This provides a basic Linux kernel WiMAX stack to provide a common
|
||||
control API for WiMAX devices, usable from kernel and user space.
|
||||
|
||||
1. Design
|
||||
=========
|
||||
|
||||
The WiMAX stack is designed to provide for common WiMAX control
|
||||
services to current and future WiMAX devices from any vendor.
|
||||
|
||||
Because currently there is only one and we don't know what would be the
|
||||
common services, the APIs it currently provides are very minimal.
|
||||
However, it is done in such a way that it is easily extensible to
|
||||
accommodate future requirements.
|
||||
|
||||
The stack works by embedding a struct wimax_dev in your device's
|
||||
control structures. This provides a set of callbacks that the WiMAX
|
||||
stack will call in order to implement control operations requested by
|
||||
the user. As well, the stack provides API functions that the driver
|
||||
calls to notify about changes of state in the device.
|
||||
|
||||
The stack exports the API calls needed to control the device to user
|
||||
space using generic netlink as a marshalling mechanism. You can access
|
||||
them using your own code or use the wrappers provided for your
|
||||
convenience in libwimax (in the wimax-tools package).
|
||||
|
||||
For detailed information on the stack, please see
|
||||
include/linux/wimax.h.
|
||||
|
||||
2. Usage
|
||||
========
|
||||
|
||||
For usage in a driver (registration, API, etc) please refer to the
|
||||
instructions in the header file include/linux/wimax.h.
|
||||
|
||||
When a device is registered with the WiMAX stack, a set of debugfs
|
||||
files will appear in /sys/kernel/debug/wimax:wmxX can tweak for
|
||||
control.
|
||||
|
||||
2.1. Obtaining debug information: debugfs entries
|
||||
-------------------------------------------------
|
||||
|
||||
The WiMAX stack is compiled, by default, with debug messages that can
|
||||
be used to diagnose issues. By default, said messages are disabled.
|
||||
|
||||
The drivers will register debugfs entries that allow the user to tweak
|
||||
debug settings.
|
||||
|
||||
Each driver, when registering with the stack, will cause a debugfs
|
||||
directory named wimax:DEVICENAME to be created; optionally, it might
|
||||
create more subentries below it.
|
||||
|
||||
2.1.1. Increasing debug output
|
||||
------------------------------
|
||||
|
||||
The files named *dl_* indicate knobs for controlling the debug output
|
||||
of different submodules of the WiMAX stack::
|
||||
|
||||
# find /sys/kernel/debug/wimax\:wmx0 -name \*dl_\*
|
||||
/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_reset
|
||||
/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_debugfs
|
||||
/sys/kernel/debug/wimax:wmx0/.... # other driver specific files
|
||||
|
||||
NOTE:
|
||||
Of course, if debugfs is mounted in a directory other than
|
||||
/sys/kernel/debug, those paths will change.
|
||||
|
||||
By reading the file you can obtain the current value of said debug
|
||||
level; by writing to it, you can set it.
|
||||
|
||||
To increase the debug level of, for example, the id-table submodule,
|
||||
just write:
|
||||
|
||||
$ echo 3 > /sys/kernel/debug/wimax:wmx0/wimax_dl_id_table
|
||||
|
||||
Increasing numbers yield increasing debug information; for details of
|
||||
what is printed and the available levels, check the source. The code
|
||||
uses 0 for disabled and increasing values until 8.
|
@ -337,11 +337,12 @@ None at present.
|
||||
Removed Sysctls
|
||||
===============
|
||||
|
||||
============================= =======
|
||||
Name Removed
|
||||
---- -------
|
||||
============================= =======
|
||||
fs.xfs.xfsbufd_centisec v4.0
|
||||
fs.xfs.age_buffer_centisecs v4.0
|
||||
|
||||
============================= =======
|
||||
|
||||
Error handling
|
||||
==============
|
||||
|
@ -1,51 +0,0 @@
|
||||
===============================
|
||||
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
|
||||
|
||||
To build the kernel with current defaults::
|
||||
|
||||
make assabet_config
|
||||
make assabet_defconfig
|
||||
make oldconfig
|
||||
make zImage
|
||||
|
||||
|
@ -1,69 +0,0 @@
|
||||
======
|
||||
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 !
|
@ -1,25 +0,0 @@
|
||||
========
|
||||
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>
|
@ -1,102 +0,0 @@
|
||||
=============================================
|
||||
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!
|
@ -1,60 +0,0 @@
|
||||
========================================
|
||||
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!
|
@ -1,21 +0,0 @@
|
||||
=======================
|
||||
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
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
adsbitsy
|
||||
assabet
|
||||
brutus
|
||||
cerf
|
||||
freebird
|
||||
graphicsclient
|
||||
graphicsmaster
|
||||
huw_webpanel
|
||||
itsy
|
||||
lart
|
||||
nanoengine
|
||||
pangolin
|
||||
pleb
|
||||
serial_uart
|
||||
tifon
|
||||
yopy
|
||||
|
@ -1,47 +0,0 @@
|
||||
====
|
||||
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.
|
@ -1,11 +0,0 @@
|
||||
==========
|
||||
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
|
@ -1,29 +0,0 @@
|
||||
========
|
||||
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)
|
@ -1,13 +0,0 @@
|
||||
====
|
||||
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
|
@ -1,7 +0,0 @@
|
||||
=====
|
||||
Tifon
|
||||
=====
|
||||
|
||||
More info has to come...
|
||||
|
||||
Contact: Peter Danielsson <peter.danielsson@era-t.ericsson.se>
|
@ -1,5 +0,0 @@
|
||||
====
|
||||
Yopy
|
||||
====
|
||||
|
||||
See http://www.yopydeveloper.org for more.
|
@ -1,6 +1,6 @@
|
||||
.. SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
==========================
|
||||
==========================
|
||||
Samsung S3C24XX SoC Family
|
||||
==========================
|
||||
|
||||
|
1
Documentation/arm/sh-mobile/.gitignore
vendored
1
Documentation/arm/sh-mobile/.gitignore
vendored
@ -1 +0,0 @@
|
||||
vrl4
|
@ -16,6 +16,7 @@ ARM64 Architecture
|
||||
pointer-authentication
|
||||
silicon-errata
|
||||
sve
|
||||
tagged-address-abi
|
||||
tagged-pointers
|
||||
|
||||
.. only:: subproject and html
|
||||
|
27
Documentation/arm64/kasan-offsets.sh
Normal file
27
Documentation/arm64/kasan-offsets.sh
Normal file
@ -0,0 +1,27 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Print out the KASAN_SHADOW_OFFSETS required to place the KASAN SHADOW
|
||||
# start address at the mid-point of the kernel VA space
|
||||
|
||||
print_kasan_offset () {
|
||||
printf "%02d\t" $1
|
||||
printf "0x%08x00000000\n" $(( (0xffffffff & (-1 << ($1 - 1 - 32))) \
|
||||
+ (1 << ($1 - 32 - $2)) \
|
||||
- (1 << (64 - 32 - $2)) ))
|
||||
}
|
||||
|
||||
echo KASAN_SHADOW_SCALE_SHIFT = 3
|
||||
printf "VABITS\tKASAN_SHADOW_OFFSET\n"
|
||||
print_kasan_offset 48 3
|
||||
print_kasan_offset 47 3
|
||||
print_kasan_offset 42 3
|
||||
print_kasan_offset 39 3
|
||||
print_kasan_offset 36 3
|
||||
echo
|
||||
echo KASAN_SHADOW_SCALE_SHIFT = 4
|
||||
printf "VABITS\tKASAN_SHADOW_OFFSET\n"
|
||||
print_kasan_offset 48 4
|
||||
print_kasan_offset 47 4
|
||||
print_kasan_offset 42 4
|
||||
print_kasan_offset 39 4
|
||||
print_kasan_offset 36 4
|
@ -14,6 +14,10 @@ with the 4KB page configuration, allowing 39-bit (512GB) or 48-bit
|
||||
64KB pages, only 2 levels of translation tables, allowing 42-bit (4TB)
|
||||
virtual address, are used but the memory layout is the same.
|
||||
|
||||
ARMv8.2 adds optional support for Large Virtual Address space. This is
|
||||
only available when running with a 64KB page size and expands the
|
||||
number of descriptors in the first level of translation.
|
||||
|
||||
User addresses have bits 63:48 set to 0 while the kernel addresses have
|
||||
the same bits set to 1. TTBRx selection is given by bit 63 of the
|
||||
virtual address. The swapper_pg_dir contains only kernel (global)
|
||||
@ -22,40 +26,43 @@ The swapper_pg_dir address is written to TTBR1 and never written to
|
||||
TTBR0.
|
||||
|
||||
|
||||
AArch64 Linux memory layout with 4KB pages + 3 levels::
|
||||
|
||||
Start End Size Use
|
||||
-----------------------------------------------------------------------
|
||||
0000000000000000 0000007fffffffff 512GB user
|
||||
ffffff8000000000 ffffffffffffffff 512GB kernel
|
||||
|
||||
|
||||
AArch64 Linux memory layout with 4KB pages + 4 levels::
|
||||
AArch64 Linux memory layout with 4KB pages + 4 levels (48-bit)::
|
||||
|
||||
Start End Size Use
|
||||
-----------------------------------------------------------------------
|
||||
0000000000000000 0000ffffffffffff 256TB user
|
||||
ffff000000000000 ffffffffffffffff 256TB kernel
|
||||
ffff000000000000 ffff7fffffffffff 128TB kernel logical memory map
|
||||
ffff800000000000 ffff9fffffffffff 32TB kasan shadow region
|
||||
ffffa00000000000 ffffa00007ffffff 128MB bpf jit region
|
||||
ffffa00008000000 ffffa0000fffffff 128MB modules
|
||||
ffffa00010000000 fffffdffbffeffff ~93TB vmalloc
|
||||
fffffdffbfff0000 fffffdfffe5f8fff ~998MB [guard region]
|
||||
fffffdfffe5f9000 fffffdfffe9fffff 4124KB fixed mappings
|
||||
fffffdfffea00000 fffffdfffebfffff 2MB [guard region]
|
||||
fffffdfffec00000 fffffdffffbfffff 16MB PCI I/O space
|
||||
fffffdffffc00000 fffffdffffdfffff 2MB [guard region]
|
||||
fffffdffffe00000 ffffffffffdfffff 2TB vmemmap
|
||||
ffffffffffe00000 ffffffffffffffff 2MB [guard region]
|
||||
|
||||
|
||||
AArch64 Linux memory layout with 64KB pages + 2 levels::
|
||||
AArch64 Linux memory layout with 64KB pages + 3 levels (52-bit with HW support)::
|
||||
|
||||
Start End Size Use
|
||||
-----------------------------------------------------------------------
|
||||
0000000000000000 000003ffffffffff 4TB user
|
||||
fffffc0000000000 ffffffffffffffff 4TB kernel
|
||||
|
||||
|
||||
AArch64 Linux memory layout with 64KB pages + 3 levels::
|
||||
|
||||
Start End Size Use
|
||||
-----------------------------------------------------------------------
|
||||
0000000000000000 0000ffffffffffff 256TB user
|
||||
ffff000000000000 ffffffffffffffff 256TB kernel
|
||||
|
||||
|
||||
For details of the virtual kernel memory layout please see the kernel
|
||||
booting log.
|
||||
0000000000000000 000fffffffffffff 4PB user
|
||||
fff0000000000000 fff7ffffffffffff 2PB kernel logical memory map
|
||||
fff8000000000000 fffd9fffffffffff 1440TB [gap]
|
||||
fffda00000000000 ffff9fffffffffff 512TB kasan shadow region
|
||||
ffffa00000000000 ffffa00007ffffff 128MB bpf jit region
|
||||
ffffa00008000000 ffffa0000fffffff 128MB modules
|
||||
ffffa00010000000 fffff81ffffeffff ~88TB vmalloc
|
||||
fffff81fffff0000 fffffc1ffe58ffff ~3TB [guard region]
|
||||
fffffc1ffe590000 fffffc1ffe9fffff 4544KB fixed mappings
|
||||
fffffc1ffea00000 fffffc1ffebfffff 2MB [guard region]
|
||||
fffffc1ffec00000 fffffc1fffbfffff 16MB PCI I/O space
|
||||
fffffc1fffc00000 fffffc1fffdfffff 2MB [guard region]
|
||||
fffffc1fffe00000 ffffffffffdfffff 3968GB vmemmap
|
||||
ffffffffffe00000 ffffffffffffffff 2MB [guard region]
|
||||
|
||||
|
||||
Translation table lookup with 4KB pages::
|
||||
@ -83,7 +90,8 @@ Translation table lookup with 64KB pages::
|
||||
| | | | [15:0] in-page offset
|
||||
| | | +----------> [28:16] L3 index
|
||||
| | +--------------------------> [41:29] L2 index
|
||||
| +-------------------------------> [47:42] L1 index
|
||||
| +-------------------------------> [47:42] L1 index (48-bit)
|
||||
| [51:42] L1 index (52-bit)
|
||||
+-------------------------------------------------> [63] TTBR0/1
|
||||
|
||||
|
||||
@ -96,3 +104,69 @@ ARM64_HARDEN_EL2_VECTORS is selected for particular CPUs.
|
||||
|
||||
When using KVM with the Virtualization Host Extensions, no additional
|
||||
mappings are created, since the host kernel runs directly in EL2.
|
||||
|
||||
52-bit VA support in the kernel
|
||||
-------------------------------
|
||||
If the ARMv8.2-LVA optional feature is present, and we are running
|
||||
with a 64KB page size; then it is possible to use 52-bits of address
|
||||
space for both userspace and kernel addresses. However, any kernel
|
||||
binary that supports 52-bit must also be able to fall back to 48-bit
|
||||
at early boot time if the hardware feature is not present.
|
||||
|
||||
This fallback mechanism necessitates the kernel .text to be in the
|
||||
higher addresses such that they are invariant to 48/52-bit VAs. Due
|
||||
to the kasan shadow being a fraction of the entire kernel VA space,
|
||||
the end of the kasan shadow must also be in the higher half of the
|
||||
kernel VA space for both 48/52-bit. (Switching from 48-bit to 52-bit,
|
||||
the end of the kasan shadow is invariant and dependent on ~0UL,
|
||||
whilst the start address will "grow" towards the lower addresses).
|
||||
|
||||
In order to optimise phys_to_virt and virt_to_phys, the PAGE_OFFSET
|
||||
is kept constant at 0xFFF0000000000000 (corresponding to 52-bit),
|
||||
this obviates the need for an extra variable read. The physvirt
|
||||
offset and vmemmap offsets are computed at early boot to enable
|
||||
this logic.
|
||||
|
||||
As a single binary will need to support both 48-bit and 52-bit VA
|
||||
spaces, the VMEMMAP must be sized large enough for 52-bit VAs and
|
||||
also must be sized large enought to accommodate a fixed PAGE_OFFSET.
|
||||
|
||||
Most code in the kernel should not need to consider the VA_BITS, for
|
||||
code that does need to know the VA size the variables are
|
||||
defined as follows:
|
||||
|
||||
VA_BITS constant the *maximum* VA space size
|
||||
|
||||
VA_BITS_MIN constant the *minimum* VA space size
|
||||
|
||||
vabits_actual variable the *actual* VA space size
|
||||
|
||||
|
||||
Maximum and minimum sizes can be useful to ensure that buffers are
|
||||
sized large enough or that addresses are positioned close enough for
|
||||
the "worst" case.
|
||||
|
||||
52-bit userspace VAs
|
||||
--------------------
|
||||
To maintain compatibility with software that relies on the ARMv8.0
|
||||
VA space maximum size of 48-bits, the kernel will, by default,
|
||||
return virtual addresses to userspace from a 48-bit range.
|
||||
|
||||
Software can "opt-in" to receiving VAs from a 52-bit space by
|
||||
specifying an mmap hint parameter that is larger than 48-bit.
|
||||
|
||||
For example:
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
maybe_high_address = mmap(~0UL, size, prot, flags,...);
|
||||
|
||||
It is also possible to build a debug kernel that returns addresses
|
||||
from a 52-bit space by enabling the following kernel config options:
|
||||
|
||||
.. code-block:: sh
|
||||
|
||||
CONFIG_EXPERT=y && CONFIG_ARM64_FORCE_52BIT=y
|
||||
|
||||
Note that this option is only intended for debugging applications
|
||||
and should not be used in production.
|
||||
|
@ -91,6 +91,11 @@ stable kernels.
|
||||
| ARM | MMU-500 | #841119,826419 | N/A |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| Broadcom | Brahma-B53 | N/A | ARM64_ERRATUM_845719 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| Broadcom | Brahma-B53 | N/A | ARM64_ERRATUM_843419 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| Cavium | ThunderX ITS | #22375,24313 | CAVIUM_ERRATUM_22375 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| Cavium | ThunderX ITS | #23144 | CAVIUM_ERRATUM_23144 |
|
||||
@ -107,6 +112,8 @@ stable kernels.
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| Cavium | ThunderX2 SMMUv3| #126 | N/A |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| Cavium | ThunderX2 Core | #219 | CAVIUM_TX2_ERRATUM_219 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| Freescale/NXP | LS2080A/LS1043A | A-008585 | FSL_ERRATUM_A008585 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
@ -115,6 +122,8 @@ stable kernels.
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| Hisilicon | Hip0{6,7} | #161010701 | N/A |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| Hisilicon | Hip0{6,7} | #161010803 | N/A |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| Hisilicon | Hip07 | #161600802 | HISILICON_ERRATUM_161600802 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| Hisilicon | Hip08 SMMU PMCG | #162001800 | N/A |
|
||||
@ -122,7 +131,7 @@ stable kernels.
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| Qualcomm Tech. | Kryo/Falkor v1 | E1003 | QCOM_FALKOR_ERRATUM_1003 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| Qualcomm Tech. | Falkor v1 | E1009 | QCOM_FALKOR_ERRATUM_1009 |
|
||||
| Qualcomm Tech. | Kryo/Falkor v1 | E1009 | QCOM_FALKOR_ERRATUM_1009 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
| Qualcomm Tech. | QDF2400 ITS | E0065 | QCOM_QDF2400_ERRATUM_0065 |
|
||||
+----------------+-----------------+-----------------+-----------------------------+
|
||||
|
156
Documentation/arm64/tagged-address-abi.rst
Normal file
156
Documentation/arm64/tagged-address-abi.rst
Normal file
@ -0,0 +1,156 @@
|
||||
==========================
|
||||
AArch64 TAGGED ADDRESS ABI
|
||||
==========================
|
||||
|
||||
Authors: Vincenzo Frascino <vincenzo.frascino@arm.com>
|
||||
Catalin Marinas <catalin.marinas@arm.com>
|
||||
|
||||
Date: 21 August 2019
|
||||
|
||||
This document describes the usage and semantics of the Tagged Address
|
||||
ABI on AArch64 Linux.
|
||||
|
||||
1. Introduction
|
||||
---------------
|
||||
|
||||
On AArch64 the ``TCR_EL1.TBI0`` bit is set by default, allowing
|
||||
userspace (EL0) to perform memory accesses through 64-bit pointers with
|
||||
a non-zero top byte. This document describes the relaxation of the
|
||||
syscall ABI that allows userspace to pass certain tagged pointers to
|
||||
kernel syscalls.
|
||||
|
||||
2. AArch64 Tagged Address ABI
|
||||
-----------------------------
|
||||
|
||||
From the kernel syscall interface perspective and for the purposes of
|
||||
this document, a "valid tagged pointer" is a pointer with a potentially
|
||||
non-zero top-byte that references an address in the user process address
|
||||
space obtained in one of the following ways:
|
||||
|
||||
- ``mmap()`` syscall where either:
|
||||
|
||||
- flags have the ``MAP_ANONYMOUS`` bit set or
|
||||
- the file descriptor refers to a regular file (including those
|
||||
returned by ``memfd_create()``) or ``/dev/zero``
|
||||
|
||||
- ``brk()`` syscall (i.e. the heap area between the initial location of
|
||||
the program break at process creation and its current location).
|
||||
|
||||
- any memory mapped by the kernel in the address space of the process
|
||||
during creation and with the same restrictions as for ``mmap()`` above
|
||||
(e.g. data, bss, stack).
|
||||
|
||||
The AArch64 Tagged Address ABI has two stages of relaxation depending
|
||||
how the user addresses are used by the kernel:
|
||||
|
||||
1. User addresses not accessed by the kernel but used for address space
|
||||
management (e.g. ``mmap()``, ``mprotect()``, ``madvise()``). The use
|
||||
of valid tagged pointers in this context is always allowed.
|
||||
|
||||
2. User addresses accessed by the kernel (e.g. ``write()``). This ABI
|
||||
relaxation is disabled by default and the application thread needs to
|
||||
explicitly enable it via ``prctl()`` as follows:
|
||||
|
||||
- ``PR_SET_TAGGED_ADDR_CTRL``: enable or disable the AArch64 Tagged
|
||||
Address ABI for the calling thread.
|
||||
|
||||
The ``(unsigned int) arg2`` argument is a bit mask describing the
|
||||
control mode used:
|
||||
|
||||
- ``PR_TAGGED_ADDR_ENABLE``: enable AArch64 Tagged Address ABI.
|
||||
Default status is disabled.
|
||||
|
||||
Arguments ``arg3``, ``arg4``, and ``arg5`` must be 0.
|
||||
|
||||
- ``PR_GET_TAGGED_ADDR_CTRL``: get the status of the AArch64 Tagged
|
||||
Address ABI for the calling thread.
|
||||
|
||||
Arguments ``arg2``, ``arg3``, ``arg4``, and ``arg5`` must be 0.
|
||||
|
||||
The ABI properties described above are thread-scoped, inherited on
|
||||
clone() and fork() and cleared on exec().
|
||||
|
||||
Calling ``prctl(PR_SET_TAGGED_ADDR_CTRL, PR_TAGGED_ADDR_ENABLE, 0, 0, 0)``
|
||||
returns ``-EINVAL`` if the AArch64 Tagged Address ABI is globally
|
||||
disabled by ``sysctl abi.tagged_addr_disabled=1``. The default
|
||||
``sysctl abi.tagged_addr_disabled`` configuration is 0.
|
||||
|
||||
When the AArch64 Tagged Address ABI is enabled for a thread, the
|
||||
following behaviours are guaranteed:
|
||||
|
||||
- All syscalls except the cases mentioned in section 3 can accept any
|
||||
valid tagged pointer.
|
||||
|
||||
- The syscall behaviour is undefined for invalid tagged pointers: it may
|
||||
result in an error code being returned, a (fatal) signal being raised,
|
||||
or other modes of failure.
|
||||
|
||||
- The syscall behaviour for a valid tagged pointer is the same as for
|
||||
the corresponding untagged pointer.
|
||||
|
||||
|
||||
A definition of the meaning of tagged pointers on AArch64 can be found
|
||||
in Documentation/arm64/tagged-pointers.rst.
|
||||
|
||||
3. AArch64 Tagged Address ABI Exceptions
|
||||
-----------------------------------------
|
||||
|
||||
The following system call parameters must be untagged regardless of the
|
||||
ABI relaxation:
|
||||
|
||||
- ``prctl()`` other than pointers to user data either passed directly or
|
||||
indirectly as arguments to be accessed by the kernel.
|
||||
|
||||
- ``ioctl()`` other than pointers to user data either passed directly or
|
||||
indirectly as arguments to be accessed by the kernel.
|
||||
|
||||
- ``shmat()`` and ``shmdt()``.
|
||||
|
||||
Any attempt to use non-zero tagged pointers may result in an error code
|
||||
being returned, a (fatal) signal being raised, or other modes of
|
||||
failure.
|
||||
|
||||
4. Example of correct usage
|
||||
---------------------------
|
||||
.. code-block:: c
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/mman.h>
|
||||
#include <sys/prctl.h>
|
||||
|
||||
#define PR_SET_TAGGED_ADDR_CTRL 55
|
||||
#define PR_TAGGED_ADDR_ENABLE (1UL << 0)
|
||||
|
||||
#define TAG_SHIFT 56
|
||||
|
||||
int main(void)
|
||||
{
|
||||
int tbi_enabled = 0;
|
||||
unsigned long tag = 0;
|
||||
char *ptr;
|
||||
|
||||
/* check/enable the tagged address ABI */
|
||||
if (!prctl(PR_SET_TAGGED_ADDR_CTRL, PR_TAGGED_ADDR_ENABLE, 0, 0, 0))
|
||||
tbi_enabled = 1;
|
||||
|
||||
/* memory allocation */
|
||||
ptr = mmap(NULL, sysconf(_SC_PAGE_SIZE), PROT_READ | PROT_WRITE,
|
||||
MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
|
||||
if (ptr == MAP_FAILED)
|
||||
return 1;
|
||||
|
||||
/* set a non-zero tag if the ABI is available */
|
||||
if (tbi_enabled)
|
||||
tag = rand() & 0xff;
|
||||
ptr = (char *)((unsigned long)ptr | (tag << TAG_SHIFT));
|
||||
|
||||
/* memory access to a tagged address */
|
||||
strcpy(ptr, "tagged pointer\n");
|
||||
|
||||
/* syscall with a tagged pointer */
|
||||
write(1, ptr, strlen(ptr));
|
||||
|
||||
return 0;
|
||||
}
|
@ -20,7 +20,9 @@ Passing tagged addresses to the kernel
|
||||
--------------------------------------
|
||||
|
||||
All interpretation of userspace memory addresses by the kernel assumes
|
||||
an address tag of 0x00.
|
||||
an address tag of 0x00, unless the application enables the AArch64
|
||||
Tagged Address ABI explicitly
|
||||
(Documentation/arm64/tagged-address-abi.rst).
|
||||
|
||||
This includes, but is not limited to, addresses found in:
|
||||
|
||||
@ -33,13 +35,15 @@ This includes, but is not limited to, addresses found in:
|
||||
- the frame pointer (x29) and frame records, e.g. when interpreting
|
||||
them to generate a backtrace or call graph.
|
||||
|
||||
Using non-zero address tags in any of these locations may result in an
|
||||
error code being returned, a (fatal) signal being raised, or other modes
|
||||
of failure.
|
||||
Using non-zero address tags in any of these locations when the
|
||||
userspace application did not enable the AArch64 Tagged Address ABI may
|
||||
result in an error code being returned, a (fatal) signal being raised,
|
||||
or other modes of failure.
|
||||
|
||||
For these reasons, passing non-zero address tags to the kernel via
|
||||
system calls is forbidden, and using a non-zero address tag for sp is
|
||||
strongly discouraged.
|
||||
For these reasons, when the AArch64 Tagged Address ABI is disabled,
|
||||
passing non-zero address tags to the kernel via system calls is
|
||||
forbidden, and using a non-zero address tag for sp is strongly
|
||||
discouraged.
|
||||
|
||||
Programs maintaining a frame pointer and frame records that use non-zero
|
||||
address tags may suffer impaired or inaccurate debug and profiling
|
||||
@ -59,6 +63,9 @@ be preserved.
|
||||
The architecture prevents the use of a tagged PC, so the upper byte will
|
||||
be set to a sign-extension of bit 55 on exception return.
|
||||
|
||||
This behaviour is maintained when the AArch64 Tagged Address ABI is
|
||||
enabled.
|
||||
|
||||
|
||||
Other considerations
|
||||
--------------------
|
||||
|
@ -1,105 +0,0 @@
|
||||
===================================
|
||||
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.
|
@ -1,55 +0,0 @@
|
||||
==========================================
|
||||
ks0108 LCD Controller Driver Documentation
|
||||
==========================================
|
||||
|
||||
License: GPLv2
|
||||
Author & Maintainer: Miguel Ojeda Sandonis
|
||||
Date: 2006-10-27
|
||||
|
||||
|
||||
|
||||
--------
|
||||
0. INDEX
|
||||
--------
|
||||
|
||||
1. DRIVER INFORMATION
|
||||
2. DEVICE INFORMATION
|
||||
3. WIRING
|
||||
|
||||
|
||||
---------------------
|
||||
1. DRIVER INFORMATION
|
||||
---------------------
|
||||
|
||||
This driver supports the ks0108 LCD controller.
|
||||
|
||||
|
||||
---------------------
|
||||
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
|
||||
|
||||
|
||||
---------
|
||||
3. WIRING
|
||||
---------
|
||||
|
||||
The driver supports data parallel port wiring.
|
||||
|
||||
If you aren't building LCD related hardware, you should check
|
||||
your LCD specific wiring information in the same folder.
|
||||
|
||||
For example, check Documentation/auxdisplay/cfag12864b.
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user