The first CUBE code in the kernel, and deliberately only a reader: the write
authority has not moved yet, and PLAN-kernel-cubelinux.md records both that
decision and the hazard that makes the order matter — a kernel writing while a
userspace daemon still holds the same image loses one of the two writers' work,
silently. A reader cannot do that.
- drivers/cube/: a Rust module exposing /dev/cubelinux. Reading it reads the
pinned image from the block device through the kernel's own file layer
(filp_open + kernel_read — the path this kernel version binds for Rust, and
the reason no C helper was needed), parses the records, and returns one line:
digest curve=0 bytes=8400896 records=35318 value_bytes=6139148 fnv1a64=5e20f98455387b08 errors=0
The work happens on read, not at init, so there is no initcall ordering to get
wrong against the block driver that provides the device.
- The format is restated in the kernel (32-byte space, 24-byte key, 8-byte LE
length, value), including the two rules the userspace parser documents: a value
that runs past the buffer is a truncated record, and an all-zero frame ends the
records only when every remaining byte is zero — the rule that keeps a real
record at the origin from being read as padding.
- The digest is the point. A record count alone lets two different images agree;
folding the bytes in means the kernel and userspace are *compared* rather than
assumed to agree. `cube-image digest` prints the same line in the same field
order, and the QEMU gate fails if they differ by a byte.
Gate, on both images:
curated 11 records, 4,096 bytes, fnv1a64=161113085b1573b2 — match
snapshot 35,318 records, 8,400,896 bytes, fnv1a64=5e20f98455387b08 — match
The tree carries CONFIG_CUBELINUX_STORE=y on top of defconfig + RUST; a tree
without it boots and simply has no /dev/cubelinux.
261 lines
4.3 KiB
Plaintext
261 lines
4.3 KiB
Plaintext
# SPDX-License-Identifier: GPL-2.0
|
|
menu "Device Drivers"
|
|
|
|
# Keep I/O buses first
|
|
|
|
source "drivers/amba/Kconfig"
|
|
source "drivers/eisa/Kconfig"
|
|
source "drivers/pci/Kconfig"
|
|
source "drivers/cxl/Kconfig"
|
|
source "drivers/pcmcia/Kconfig"
|
|
source "drivers/rapidio/Kconfig"
|
|
|
|
config PC104
|
|
bool "PC/104 support" if EXPERT
|
|
help
|
|
Expose PC/104 form factor device drivers and options available for
|
|
selection and configuration. Enable this option if your target
|
|
machine has a PC/104 bus.
|
|
|
|
source "drivers/base/Kconfig"
|
|
|
|
source "drivers/bus/Kconfig"
|
|
|
|
source "drivers/cache/Kconfig"
|
|
|
|
source "drivers/connector/Kconfig"
|
|
|
|
source "drivers/firmware/Kconfig"
|
|
|
|
source "drivers/fwctl/Kconfig"
|
|
|
|
source "drivers/gnss/Kconfig"
|
|
|
|
source "drivers/mtd/Kconfig"
|
|
|
|
source "drivers/of/Kconfig"
|
|
|
|
source "drivers/parport/Kconfig"
|
|
|
|
source "drivers/pnp/Kconfig"
|
|
|
|
source "drivers/cube/Kconfig"
|
|
|
|
source "drivers/block/Kconfig"
|
|
|
|
source "drivers/nvme/Kconfig"
|
|
|
|
source "drivers/misc/Kconfig"
|
|
|
|
source "drivers/scsi/Kconfig"
|
|
|
|
source "drivers/ata/Kconfig"
|
|
|
|
source "drivers/md/Kconfig"
|
|
|
|
source "drivers/target/Kconfig"
|
|
|
|
source "drivers/message/fusion/Kconfig"
|
|
|
|
source "drivers/firewire/Kconfig"
|
|
|
|
source "drivers/macintosh/Kconfig"
|
|
|
|
source "drivers/net/Kconfig"
|
|
|
|
source "drivers/isdn/Kconfig"
|
|
|
|
# input before char - char/joystick depends on it. As does USB.
|
|
|
|
source "drivers/input/Kconfig"
|
|
|
|
source "drivers/char/Kconfig"
|
|
|
|
source "drivers/i2c/Kconfig"
|
|
|
|
source "drivers/i3c/Kconfig"
|
|
|
|
source "drivers/spi/Kconfig"
|
|
|
|
source "drivers/spmi/Kconfig"
|
|
|
|
source "drivers/hsi/Kconfig"
|
|
|
|
source "drivers/pps/Kconfig"
|
|
|
|
source "drivers/ptp/Kconfig"
|
|
|
|
source "drivers/dpll/Kconfig"
|
|
|
|
source "drivers/pinctrl/Kconfig"
|
|
|
|
source "drivers/gpio/Kconfig"
|
|
|
|
source "drivers/w1/Kconfig"
|
|
|
|
source "drivers/power/Kconfig"
|
|
|
|
source "drivers/hwmon/Kconfig"
|
|
|
|
source "drivers/thermal/Kconfig"
|
|
|
|
source "drivers/watchdog/Kconfig"
|
|
|
|
source "drivers/ssb/Kconfig"
|
|
|
|
source "drivers/bcma/Kconfig"
|
|
|
|
source "drivers/mfd/Kconfig"
|
|
|
|
source "drivers/regulator/Kconfig"
|
|
|
|
source "drivers/media/Kconfig"
|
|
|
|
source "drivers/video/Kconfig"
|
|
|
|
source "drivers/accel/Kconfig"
|
|
|
|
source "sound/Kconfig"
|
|
|
|
source "drivers/hid/Kconfig"
|
|
|
|
source "drivers/usb/Kconfig"
|
|
|
|
source "drivers/mmc/Kconfig"
|
|
|
|
source "drivers/ufs/Kconfig"
|
|
|
|
source "drivers/memstick/Kconfig"
|
|
|
|
source "drivers/leds/Kconfig"
|
|
|
|
source "drivers/accessibility/Kconfig"
|
|
|
|
source "drivers/infiniband/Kconfig"
|
|
|
|
source "drivers/edac/Kconfig"
|
|
|
|
source "drivers/rtc/Kconfig"
|
|
|
|
source "drivers/dma/Kconfig"
|
|
|
|
source "drivers/dma-buf/Kconfig"
|
|
|
|
source "drivers/dca/Kconfig"
|
|
|
|
source "drivers/uio/Kconfig"
|
|
|
|
source "drivers/vfio/Kconfig"
|
|
|
|
source "drivers/virt/Kconfig"
|
|
|
|
source "drivers/virtio/Kconfig"
|
|
|
|
source "drivers/vdpa/Kconfig"
|
|
|
|
source "drivers/vhost/Kconfig"
|
|
|
|
source "drivers/hv/Kconfig"
|
|
|
|
source "drivers/xen/Kconfig"
|
|
|
|
source "drivers/greybus/Kconfig"
|
|
|
|
source "drivers/comedi/Kconfig"
|
|
|
|
source "drivers/gpib/Kconfig"
|
|
|
|
source "drivers/staging/Kconfig"
|
|
|
|
source "drivers/platform/Kconfig"
|
|
|
|
source "drivers/clk/Kconfig"
|
|
|
|
source "drivers/hwspinlock/Kconfig"
|
|
|
|
source "drivers/clocksource/Kconfig"
|
|
|
|
source "drivers/mailbox/Kconfig"
|
|
|
|
source "drivers/iommu/Kconfig"
|
|
|
|
source "drivers/remoteproc/Kconfig"
|
|
|
|
source "drivers/rpmsg/Kconfig"
|
|
|
|
source "drivers/soundwire/Kconfig"
|
|
|
|
source "drivers/soc/Kconfig"
|
|
|
|
source "drivers/pmdomain/Kconfig"
|
|
|
|
source "drivers/devfreq/Kconfig"
|
|
|
|
source "drivers/extcon/Kconfig"
|
|
|
|
source "drivers/memory/Kconfig"
|
|
|
|
source "drivers/iio/Kconfig"
|
|
|
|
source "drivers/ntb/Kconfig"
|
|
|
|
source "drivers/pwm/Kconfig"
|
|
|
|
source "drivers/irqchip/Kconfig"
|
|
|
|
source "drivers/ipack/Kconfig"
|
|
|
|
source "drivers/reset/Kconfig"
|
|
|
|
source "drivers/phy/Kconfig"
|
|
|
|
source "drivers/powercap/Kconfig"
|
|
|
|
source "drivers/mcb/Kconfig"
|
|
|
|
source "drivers/perf/Kconfig"
|
|
|
|
source "drivers/ras/Kconfig"
|
|
|
|
source "drivers/thunderbolt/Kconfig"
|
|
|
|
source "drivers/android/Kconfig"
|
|
|
|
source "drivers/nvdimm/Kconfig"
|
|
|
|
source "drivers/dax/Kconfig"
|
|
|
|
source "drivers/nvmem/Kconfig"
|
|
|
|
source "drivers/hwtracing/Kconfig"
|
|
|
|
source "drivers/fpga/Kconfig"
|
|
|
|
source "drivers/fsi/Kconfig"
|
|
|
|
source "drivers/tee/Kconfig"
|
|
|
|
source "drivers/mux/Kconfig"
|
|
|
|
source "drivers/opp/Kconfig"
|
|
|
|
source "drivers/siox/Kconfig"
|
|
|
|
source "drivers/slimbus/Kconfig"
|
|
|
|
source "drivers/interconnect/Kconfig"
|
|
|
|
source "drivers/counter/Kconfig"
|
|
|
|
source "drivers/most/Kconfig"
|
|
|
|
source "drivers/peci/Kconfig"
|
|
|
|
source "drivers/hte/Kconfig"
|
|
|
|
source "drivers/cdx/Kconfig"
|
|
|
|
source "drivers/resctrl/Kconfig"
|
|
|
|
endmenu
|