FreeBSD 9 Brainstorming / Wishlist

:!: This page is of historical interest only.

This is a rough list of ideas / goals / tasks to work on for FreeBSD 9.0 release. Nothing here is guaranteed. Many of these items have been long-term goals for many prior releases as well.

In the lists below, (E) means the suggestion came from the EuroBSDCon 200909, and (C) means it came from the BSDCan 201005.

A new page based on brainstorming for FreeBSD 10 is at FreeBSD10.

The following timescale was suggested at 201005:

7.4-RELEASE, then 8.2-RELEASE, then 9.0-RELEASE (aiming roughly for May 2011)

Networking Stack

  • (E) Ability to compile INET6 Only kernel
  • (EC) VIMAGE: More virtualization (BjoernZeeb)
  • (E) Remove if(4) send queue
  • (EC) Dispatch sets of packets (Packet batching) (JeffRoberson has some patches)
  • (EC) PCPU packet dispatch / Net taskq
    • Arguably this should be a generic interrupt thread task to convert interrupt threads to use more of a taskqueue-like model where interrupt handlers are scheduled events to reduce context switch overhead for processing concurrent interrupts.
  • (EC) Revised mbufs + tags (JeffRoberson / LuigiRizzo)
    • Align mbuf data and use extra space in resulting mbuf header area to store tags
  • (E) Pass input queue info up from device
    • Allow bpf to tap a specific input queue on a multiqueue NIC for example
  • (E) Fixing carp(4)
  • (EC) Multiq transmit support (if_transmit)
  • (EC) TCP Connection groups locking paradigm (RobertWatson) - Expected ~June/July 2010
  • (EC) CPU cache analysis, should we prefetch parts of mbufs (headers), etc.
  • (E) IEEE 802.1p (this may be already implemented?)
  • (C) mbuf performance optimisations (JeffRoberson) (~December 2010)
  • (C) Software TSO
  • (C) SIFTR (complete)
  • (C) TCP reassembly
  • (C) Modular Congestion Control (LawrenceStewart) (complete)

Wireless networking

  • (EC) 802.11n - High Throughput (RuiPaulo)

Device Driver Issues

  • (E) Parallel device attach
    • The idea here is running device probe and attach routines concurrently to reduce boot time.
    • Some tricky questions here are that non-deterministic device names across boots would be a substantial POLA violation and that many bus drivers may not be ready for this complexity.
  • (EC) USB video device support (including webcamd)
  • (E) Express Card
  • (E) External hardware integration
    • Not entirely sure what this is about – jhb@
  • (E) FlattenedDeviceTree support
  • (EC) Further ATA/CAM work
    • (E) Resolving different disk geometry under adaX vs adX?
    • (EC) Device naming
    • (C) NCQ, port multipliers etc (AlexanderMotin)
  • (EC) Device I/O resource management (PnP OS support) (JohnBaldwin)
    • (C) resource_list_reserve()
  • (E) Starting the scheduler sooner for most of device attach (JohnBaldwin)
  • (E) Power management
    • (E) Option to power down NICs (D1/D2/D3) when they are down (may multiple policies here)
    • (E) Handle C2+/C1E where local APIC timer is turned off (need backup timer (HPET?))
  • (EC) Infiniband - OpenFabric (JeffRoberson) (~March 2011)
  • (C) ATAoE?
  • (C) FPU save/restore for kernel use (kib@) (complete)
  • (C) HotPlug PCI (JohnBaldwin?)

Other Kernel

  • (EC) Virtualize more subsystems (VIMAGE) (BjoernZeeb)
  • (EC) More embedded platform support
    • (EC) avr32
    • (EC) mips SMP, mips n64
    • (C) PPC64 + SMP
  • (EC) Further work on improving scaling to large numbers of cores (e.g. 128)
    • Cores and caches and threads! Oh my!
    • (E) Queued spin locks
    • (C) cpumask_t → cpuset_t (PeterWemm)
  • (EC) Dynamic CPU configuration (allowing CPUs to go offline/online) (AttilioRao)
  • (EC) ccNUMA support (AlanCox / JohnBaldwin) (Basics may be in by 9.0)
  • (EC) Remove Giant if possible (JohnBaldwin)
    • (E) SYSINIT()'s
    • (E) module event handlers
    • (E) !MPSAFE filesystems
    • (C) if_watchdog / if_timer now gone (complete)
  • (E) Unmapped disk I/O buffers (sglist in bio)
    • (E) bus_dmamap_load_bio()
    • (E) bio_adjust() / bio_start
  • (C) Memory descripter for unmapped IO (good if it was in by 9)
  • (EC) Fix the lemming syncer (AttilioRao)
  • (E) Per-mount syncer threads
  • (E) Modularity Hygiene (ask phk@ for more details)
    • Are optional things still optional or are things so intertwined that things are de facto required.
  • (E) MAC for ZFS
  • (E) Flash FS support / NAND filesystem?
  • (E) TRIM support
    • Depends on BIO_DELETE support in filesystems, would be implemented by BIO_DELETE requests
  • (EC) tickless kernel / deadline scheduling
  • (E) BIO_DELETE support for filesystems (KirkMcKusick and KonstantinBelousov) (complete)
  • (E) per-thread credentials (ZachLoafman)
  • (E) Kernel capabilities (RobertWatson)
    • Process file descriptors and capability rights used to sandbox processes.
  • (E) Performance monitoring counters (hwpmc(4)) support for embedded platforms
  • (E) 64-bit quotas for UFS (KirkMcKusick and DagErlingSmørgrav)
  • (E) Hibernate support (S4)
  • (E) VOP_OPLOCK support for allowing shared locking state between SMB / NFS, etc. (ZachLoafman)
  • (E) Shared page data to allow pure userland implementations of certain system calls
    • (E) Virtual system call proposal was probably related with this one
  • (E) Non-executable stack (KonstantinBelousov) (complete for amd64 and powerpc)
  • (E) Disallow mmap() to offset 0 from userspace (AlanCox and RobertWatson) (complete)
  • (E) Clock / power domain management
  • (E) Address space randomization
  • (E) Start using disk labels to mount filesystems more aggressively / by default
  • (E) Enable some sort of kernel debugging by default in release kernels
    • (E) At minimum we want to get a DDB stack trace by default. (complete)
    • (E) Possibly textdumps and/or kernel dumps with crashinfo enabled by default.
  • (E) Better config(8)
    • (E) Able to build modules with a custom set of kernel options
  • (E) Xen DOM0
  • (E) ZFS as default?
    • (E) sysinstall support
    • (E) Licensing?
  • (E) Linux 64-bit binary support in FreeBSD/amd64
  • (CE) Transactional NFS export updating (ZachLoafman)
  • (E) Move to disklabels
  • (E) Faster reboot (kernel part):
    • Don't go to the BIOS at 'reboot', but start the kernel from the beginning
  • (C) VM page queue lock pushdown (JeffRoberson) / KipMacy / AlanCox / KonstantinBelousov) (complete)
  • (C) SU+J (JeffRoberson) (complete)
  • (C) EFI booting
  • (C) Capsicum primitives into kernel (RobertWatson) (by 9.0)
  • (C) Range locking (JeffRoberson) (not by 9)
  • (C) Network kernel dump (Sandvine via AttilioRao)
  • (C) BSD ELF tools (JosephKoshy, KaiWang)
  • (C) pthread work queues (StaceySon)
  • (C) Clock stuff
  • (C) Enhanced redzones
  • (C) SYSVSHM tracking (AlfredPerlstein)
  • (EC) Get llvm into the tree alongside gcc (EdSchouten / RomanDivacky) (complete)
  • (EC) Userland DTrace (complete)
  • (E) Startup dependencies (MartinBlapp)
    • Change /etc/rc.d/foo scripts to autostart dependencies in single user mode (as an example)
  • (E) A library to provide multi-platform support for backtraces in userland applications
  • (E) Witness for pthreads (Warner)
  • (E) Better support for debugging tools: pstack/ltrace/strace
  • (E) Compiling 32-bit i386 binaries on amd64
  • (E) Improved support for running i386 binaries on amd64
  • (E) Better VirtualBOX support
  • (E) Always put 64-bit kernel on amd64-capable hardware
  • (E) Common install DVD for i386/amd64
  • (E) Better support for binary only systems
    • (E) Make GENERIC more generic so common tasks don't require custom kernels (network stack modularization may help with this) so that freebsd-update can update the kernel.
  • (E) Faster reboot
    • (E) Several possible ideas here including parallelized rc.d scripts
  • (E) Manual IPv6 support in sysinstall
  • (C) binutils update (2.17.50) (dim@) (By 9.0, barring disaster)
  • (C) External toolchain support (WarnerLosh)
  • (C) Ship FreeBSD VM images
  • (C) Remove texinfo (not possible for 9.0 due to GNU code, but hopefully for 10.0?)
  • (E) “Ports STABLE”
  • (E) Better Binary Support
    • Not sure exactly what this is referring to – jhb@
  • (E) Parallel pkg_add (fetching and adding packages concurrently)
  • (E) Switch pkg_add to using http instead of ftp by default due to firewalls, etc.
  • (E) Provide more package variants (e.g. -nox11 package builds)
    • Possibly add a ports variants concept ala MacPorts to avoid a profileration of metaports that exist solely to force variant packages to be built
  • (E) Cross building ports infrastructure
  • (E) Signed packages
  • (E) Building packages for a subset of ports/ tree (useful for embedded)
  • (E) Better jail management
  • (E) Connection manager-like facilities (more info needed about this one)
  • (C) chromium in ports? (decision ~July 2010)
  • Support for switching between different self-consistent package sets
  • (C) SU+J as default?
  • (C) Which NFS implementation? (~December 2010) (RickMacklem?)
  • (C) Clang?
  • (C) clang
  • (C) 64 bit quotas
  • (C) SU+J
  • (C) Documentation updates (handbook etc)
  • (C) KrisKennaway-style performance testing
  • freebsd9.txt
  • Last modified: 2026/10/12 10:55
  • (external edit)