summaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorgber <gber@FreeBSD.org>2012-05-17 10:11:18 +0000
committergber <gber@FreeBSD.org>2012-05-17 10:11:18 +0000
commit6f7c7353004e2ff9709b326a4008ce8ea63d9270 (patch)
treea325137a898341311de8641f7212e28b7d87950e /share
parent661b9d94414ea6d11d5b7960aef1f172975ce52b (diff)
downloadFreeBSD-src-6f7c7353004e2ff9709b326a4008ce8ea63d9270.zip
FreeBSD-src-6f7c7353004e2ff9709b326a4008ce8ea63d9270.tar.gz
Import work done under project/nand (@235533) into head.
The NAND Flash environment consists of several distinct components: - NAND framework (drivers harness for NAND controllers and NAND chips) - NAND simulator (NANDsim) - NAND file system (NAND FS) - Companion tools and utilities - Documentation (manual pages) This work is still experimental. Please use with caution. Obtained from: Semihalf Supported by: FreeBSD Foundation, Juniper Networks
Diffstat (limited to 'share')
-rw-r--r--share/man/man4/Makefile2
-rw-r--r--share/man/man4/nand.4140
-rw-r--r--share/man/man4/nandsim.4184
-rw-r--r--share/man/man5/Makefile4
-rw-r--r--share/man/man5/nandfs.5129
-rw-r--r--share/mk/bsd.own.mk1
6 files changed, 460 insertions, 0 deletions
diff --git a/share/man/man4/Makefile b/share/man/man4/Makefile
index dffe304..2c23a9c 100644
--- a/share/man/man4/Makefile
+++ b/share/man/man4/Makefile
@@ -250,6 +250,8 @@ MAN= aac.4 \
mwlfw.4 \
mxge.4 \
my.4 \
+ nand.4 \
+ nandsim.4 \
natm.4 \
natmip.4 \
ncr.4 \
diff --git a/share/man/man4/nand.4 b/share/man/man4/nand.4
new file mode 100644
index 0000000..d23e292
--- /dev/null
+++ b/share/man/man4/nand.4
@@ -0,0 +1,140 @@
+.\"
+.\" Copyright (c) 2012 The FreeBSD Foundation
+.\" All rights reserved.
+.\"
+.\" This documentation was written by Semihalf under sponsorship from
+.\" the FreeBSD Foundation.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd March 8, 2012
+.Dt NAND 4
+.Os
+.Sh NAME
+.Nm nand
+.Nd NAND Flash framework
+.Sh SYNOPSIS
+.Cd "device nand"
+.Sh DESCRIPTION
+The
+.Fx
+.Nm
+framework consists of a set of interfaces that aim to provide an extensible,
+object oriented environement for NAND controllers and NAND Flash memory chips
+from various hardware vendors, and to allow for uniform and flexible
+management of the NAND devices. It comprises of the following major
+components:
+.Bl -bullet
+.It
+NAND Flash controller (NFC) interface.
+.Pp
+Defines methods which allow to send commands as well as send/receive data
+between the controller and a NAND chip. Back-end drivers for specific NAND
+controllers plug into this interface and implement low-level routines for a
+given NAND controller.
+.Pp
+This layer implements basic functionality of a NAND Flash controller. It
+allows to send command and address to chip, drive CS (chip select line), as
+well as read/write to the selected NAND chip. This layer is independent of
+NAND chip devices actually connected to the controller.
+.It
+NAND chip interface.
+.Pp
+Provides basic operations like read page, program page, erase block. Currently
+three generic classes of drivers are available, which provide support for the
+following chips:
+.Bl -bullet
+.It
+large page
+.It
+small page
+.It
+ONFI-compliant
+.El
+.Pp
+This layer implements basic operations to be performed on a NAND chip, like
+read, program, erase, get status etc. Since these operations use specific
+commands (depending on the vendor), each chip has potentially its own
+implementation of the commands set.
+.Pp
+The framework is extensible so it is also possible to create a custom command
+set for a non standard chip support.
+.It
+NANDbus.
+.Pp
+This layer is responsible for enumerating NAND chips in the system and
+establishing the hierarchy between chips and their supervising controllers.
+.Pp
+Its main purpose is detecting type of NAND chips connected to a given chip
+select (CS line). It also allows manages locking access to the NAND
+controller. NANDbus passes requests from an active chip to the chip
+controller.
+.It
+NAND character / GEOM device.
+.Pp
+For each NAND chip found in a system a character and GEOM devices are created
+which allows to read / write directly to a device, as well as perform other
+specific operations (like via ioctl).
+.Pp
+There are two GEOM devices created for each NAND chip:
+.Bl -bullet
+.It
+raw device
+.It
+normal device
+.El
+.Pp
+Raw device allows to bypass ECC checking when reading/writing to it, while
+normal device always uses ECC algorithm to validate the read data.
+.Pp
+NAND character devices will be created for each NAND chip detected while
+probing the NAND controller.
+.El
+.Sh SEE ALSO
+.Xr libnandfs 3 ,
+.Xr gnand 4 ,
+.Xr nandsim 4 ,
+.Xr nandfs 5 ,
+.Xr makefs 8 ,
+.Xr mount_nandfs 8 ,
+.Xr nandfs 8 ,
+.Xr nandsim 8 ,
+.Xr nandtool 8 ,
+.Xr newfs_nandfs 8 ,
+.Xr umount_nandfs 8
+.Sh STANDARDS
+Open NAND Flash Interface Working Group
+.Pq Vt ONFI .
+.Sh HISTORY
+The
+.Nm
+framework support first appeared in
+.Fx 10.0 .
+.Sh AUTHOR
+The
+.Nm
+framework was designed and developed by
+.An Grzegorz Bernacki .
+This manual page was written by
+.An Rafal Jaworowski .
diff --git a/share/man/man4/nandsim.4 b/share/man/man4/nandsim.4
new file mode 100644
index 0000000..154d1ff
--- /dev/null
+++ b/share/man/man4/nandsim.4
@@ -0,0 +1,184 @@
+.\"
+.\" Copyright (c) 2012 The FreeBSD Foundation
+.\" All rights reserved.
+.\"
+.\" This documentation was written by Semihalf under sponsorship from
+.\" the FreeBSD Foundation.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd March 8, 2012
+.Dt NANDSIM 4
+.Os
+.Sh NAME
+.Nm nandsim
+.Nd NAND Flash simulator driver
+.Sh SYNOPSIS
+.Cd "device nand"
+.Cd "device nandsim"
+.Cd "options ALQ"
+.Sh DESCRIPTION
+The
+.Nm
+is part of the
+.Fx
+NAND framework
+.Xr nand 4
+and can be characterized with the following highlights:
+.Bl -bullet
+.It
+plugs into the
+.Xr nand 4
+framework APIs as if it were a hardware controller (hanging on the nexus bus)
+with real NAND chips connected to it
+.It
+physically part of the kernel code (either statically linked into the kernel
+image or built as a module)
+.It
+controlled with a user space program
+.Xr nandsim 8
+.El
+.Pp
+From the user perspective, the
+.Nm
+allows for imitating ONFI-compliant NAND Flash devices as if they were
+attached to the system via a virtual controller.
+.Pp
+Some
+.Nm
+features rely on the ability to log contents to a file, which is achieved
+through the
+.Xr alq 9
+facility.
+.Sh SEE ALSO
+.Xr nand 4 ,
+.Xr nandsim.conf 5 ,
+.Xr nandsim 8
+.Sh STANDARDS
+Open NAND Flash Interface Working Group
+.Pq Vt ONFI .
+.Sh HISTORY
+The
+.Nm
+support first appeared in
+.Fx 10.0 .
+.Sh AUTHOR
+The
+.Nm
+kernel driver was developed by
+.An Grzegorz Bernacki .
+This manual page was written by
+.An Rafal Jaworowski .
+.\"
+.\" Copyright (c) 2012 The FreeBSD Foundation
+.\" All rights reserved.
+.\"
+.\" This documentation was written by Semihalf under sponsorship from
+.\" the FreeBSD Foundation.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd March 8, 2012
+.Dt NANDSIM 4
+.Os
+.Sh NAME
+.Nm nandsim
+.Nd NAND Flash simulator driver
+.Sh SYNOPSIS
+.Cd "device nand"
+.Cd "device nandsim"
+.Cd "options ALQ"
+.Sh DESCRIPTION
+The
+.Nm
+is part of the
+.Fx
+NAND framework
+.Xr nand 4
+and can be characterized with the following highlights:
+.Bl -bullet
+.It
+plugs into the
+.Xr nand 4
+framework APIs as if it were a hardware controller (hanging on the nexus bus)
+with real NAND chips connected to it
+.It
+physically part of the kernel code (either statically linked into the kernel
+image or built as a module)
+.It
+controlled with a user space program
+.Xr nandsim 8
+.El
+.Pp
+From the user perspective, the
+.Nm
+allows for imitating ONFI-compliant NAND Flash devices as if they were
+attached to the system via a virtual controller.
+.Pp
+Some
+.Nm
+features rely on the ability to log contents to a file, which is achieved
+through the
+.Xr alq 9
+facility.
+.Sh SEE ALSO
+.Xr nand 4 ,
+.Xr nandsim.conf 5 ,
+.Xr nandsim 8
+.Sh STANDARDS
+Open NAND Flash Interface Working Group
+.Pq Vt ONFI .
+.Sh HISTORY
+The
+.Nm
+support first appeared in
+.Fx 10.0 .
+.Sh AUTHOR
+The
+.Nm
+kernel driver was developed by
+.An Grzegorz Bernacki .
+This manual page was written by
+.An Rafal Jaworowski .
diff --git a/share/man/man5/Makefile b/share/man/man5/Makefile
index b05c1eb..c7a3c59 100644
--- a/share/man/man5/Makefile
+++ b/share/man/man5/Makefile
@@ -85,6 +85,10 @@ MLINKS+=resolver.5 resolv.conf.5
MAN+= hesiod.conf.5
.endif
+.if ${MK_NAND} != "no"
+MAN+= nandfs.5
+.endif
+
.if ${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386"
_boot.config.5= boot.config.5
.endif
diff --git a/share/man/man5/nandfs.5 b/share/man/man5/nandfs.5
new file mode 100644
index 0000000..43d586c
--- /dev/null
+++ b/share/man/man5/nandfs.5
@@ -0,0 +1,129 @@
+.\"
+.\" Copyright (c) 2010 Semihalf
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\" $FreeBSD$
+.\"
+.Dd Nov 11, 2010
+.Dt NANDFS 5
+.Os
+.Sh NAME
+.Nm nandfs
+.Nd NAND Flash file system
+.Sh SYNOPSIS
+To compile support for the
+.Nm ,
+place the following in your kernel configuration file:
+.Bd -ragged -offset indent
+.Cd "options NANDFS"
+.Ed
+.Pp
+Even though the NAND FS can be used with any storage media, it has been
+optimized and designed towards NAND Flash devices, so typically the following
+driver is used:
+.Bd -ragged -offset indent
+.Cd "device nand"
+.Ed
+.Sh DESCRIPTION
+The
+.Nm
+driver enables
+.Fx
+with support for NAND-oriented file system.
+.Pp
+It is a log-structured style file system with the following major features and
+characteristics:
+.Bl -bullet
+.It
+Hard links, symbolic links support
+.It
+Block journaling
+.It
+Copy-On-Write
+.It
+Snapshots (continuous, taken automatically, simultaneously mountable)
+.It
+Quick crash recovery at mount time
+.It
+64-bit data structures; supports many files, large files and volumes
+.It
+POSIX file permissions
+.It
+Checksum / ECC
+.El
+.Sh EXAMPLES
+The most common usage is mounting the file system:
+.Pp
+.Dl "mount -t nandfs /dev/<gnandN> /mnt"
+.Pp
+or:
+.Dl "mount_nandfs /dev/<gnandN> /mnt"
+.Pp
+where
+.Ar gnandN
+is the GEOM device representing a Flash partition (slice) containing the
+.Nm
+structure, and
+.Pa /mnt
+is a mount point.
+.Pp
+.Pp
+It is possible to define an entry in
+.Pa /etc/fstab
+for the
+.Nm :
+.Bd -literal
+/dev/gnand0 /flash nandfs rw 0 0
+.Ed
+.Pp
+This will mount a
+.Nm
+partition at the specified mount point during system boot.
+.Sh SEE ALSO
+.Xr gnand 4 ,
+.Xr nand 4 ,
+.Xr mount_nandfs 8 ,
+.Xr nandfs 8 ,
+.Xr nandsim 8 ,
+.Xr nandtool 8 ,
+.Xr umount_nandfs 8
+.Sh HISTORY
+The NAND FS concepts are based on NILFS principles and initial implementation
+was derived from early NILFS NetBSD code (read only). Since then the NAND FS
+code diverged significantly and is by no means compatible with NILFS.
+.Pp
+The NAND Flash file system first appeared in
+.Fx 10.0 .
+.Sh AUTHOR
+The NAND FS was written by
+.An Grzegorz Bernacki with the help of
+.An Mateusz Guzik ,
+based on the NetBSD code created by
+.An Reinoud Zandijk .
+Additional help and support by
+.An Lukasz Plachno ,
+.An Jan Sieka and
+.An Lukasz Wojcik .
+This manual page was written by
+.An Rafal Jaworowski .
diff --git a/share/mk/bsd.own.mk b/share/mk/bsd.own.mk
index 9802e79..b19253e 100644
--- a/share/mk/bsd.own.mk
+++ b/share/mk/bsd.own.mk
@@ -426,6 +426,7 @@ __DEFAULT_NO_OPTIONS = \
ICONV \
IDEA \
LIBCPLUSPLUS \
+ NAND \
OFED \
SHARED_TOOLCHAIN
OpenPOWER on IntegriCloud