Files
freebsd/sys
Jaeyoon Choi ae31f29285 ufshci: add a passthrough ioctl
This ioctl is for a port of ufs-utils:
https://github.com/SanDisk-Open-Source/ufs-utils

The driver only exposed a CAM SIM. Reading a descriptor, an attribute
or a flag needs a query request, and a UniPro attribute needs a DME
command. The driver built both only for its own setup, so userland
could reach neither.

Add two ioctls on the control node. UFSHCI_PASSTHROUGH_CMD sends a
UPIU the caller built, sizes the request from its transaction code,
and copies the response UPIU back. UFSHCI_PASSTHROUGH_UIC carries the
four attribute commands and refuses the rest, which can drop the link
or power the device off. It keeps the raw argument2 so the caller can
read the result code the device reported, not just a failure.

Validate the input and bound it by what the controller can map. The
descriptor has no request length, so the controller reads it from the
UPIU header, and a header that declares more than was copied in would
reach past the descriptor. The ioctl layer copies output back only on
a zero return. So a command that reached the device is a success even
when it was refused. The caller reads the reason from the response
header, and an answerless failure comes back as EIO. Clear the
response before use so no stale bytes read as a device answer.

Reviewed by:	imp (mentor)
Sponsored by:	Samsung Electronics
Differential Revision:	https://reviews.freebsd.org/D59559
2026-09-15 01:44:33 +00:00
..
…
…
…
2026-09-14 14:37:46 +02:00
…
2026-09-15 01:44:33 +00:00
…
…
2026-09-13 14:27:18 +02:00
…
…
…
2026-09-15 01:44:33 +00:00
2026-09-12 05:12:36 -07:00
…
…
…
…
…
…
…
…
…
…

FreeBSD Kernel Source:

This directory contains the source files and build glue that make up the FreeBSD kernel and its modules, including both original and contributed software.

Kernel configuration files are located in the conf/ subdirectory of each architecture. GENERIC is the configuration used in release builds. NOTES contains documentation of all possible entries. LINT is a compile-only configuration used to maximize build coverage and detect regressions.

Documentation:

Source code documentation is maintained in a set of man pages, under section 9. These pages are located in share/man/man9, from the top-level of the src tree. Consult intro(9) for an overview of existing pages.

Some additional high-level documentation of the kernel is maintained in the Architecture Handbook.

Source Roadmap:

Directory Description
amd64 AMD64 (64-bit x86) architecture support
arm 32-bit ARM architecture support
arm64 64-bit ARM (AArch64) architecture support
bsm Basic Security Module headers - audit(4) and bsm(3)
cam Common Access Method storage subsystem - cam(4) and ctl(4)
cddl CDDL-licensed optional sources such as DTrace
compat Linux compatibility layer, FreeBSD 32-bit compatibility
conf kernel build glue
contrib 3rd-party imported software such as OpenZFS
crypto crypto drivers
ddb interactive kernel debugger - ddb(4)
dev device drivers and other arch independent code
dts FreeBSD-specific device tree sources
fs most filesystems, excluding UFS, NFS, and ZFS
gdb kernel remote GDB stub - gdb(4)
geom GEOM framework - geom(4)
gnu GPL-licensed sources
i386 i386 (32-bit x86) architecture support
isa PC ISA bus implementation
kern main part of the kernel
kgssapi kernel-space GSSAPI implementation
libkern libc-like and other support functions for kernel use
modules kernel module infrastructure
net core networking code
net80211 wireless networking (IEEE 802.11) - net80211(4)
netgraph graph-based networking subsystem - netgraph(4)
netinet IPv4 protocol implementation - inet(4)
netinet6 IPv6 protocol implementation - inet6(4)
netipsec IPsec protocol implementation - ipsec(4)
netlink kernel network configuration protocol - netlink(4)
netpfil packet filters - ipfw(4), pf(4), and ipfilter(4)
netsmb Server Message Block protocol implementation
nfs common code and headers for Network File System
nfsclient NFS client implementation for mounting and stats
nfsserver NFS server implementation for exporting local filesystems to network
nlm Network Lock Management protocol implementation
ofed OpenFabrics Enterprise Distribution implementation
opencrypto OpenCrypto framework - crypto(7)
powerpc PowerPC/POWER (32 and 64-bit) architecture support
riscv 64-bit RISC-V architecture support
rpc Open Network Computing Remote Procedure Call implementation - rpc(3)
security security facilities - audit(4) and mac(4)
sys kernel headers
teken terminal emulation interface implementation - teken(3)
tests kernel unit tests
tools kernel build scripts and utilities
ufs Unix File System - ffs(4)
vm virtual memory system
x86 code shared by AMD64 and i386 architectures
xdr External Data Representation implementation - xdr(3)
xen Xen hypervisor support - xen(4)