]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - UPDATING
Merge ACPICA 20100702.
[FreeBSD/FreeBSD.git] / UPDATING
1 Updating Information for FreeBSD current users
2
3 This file is maintained and copyrighted by M. Warner Losh <imp@freebsd.org>.
4 See end of file for further details.  For commonly done items, please see the
5 COMMON ITEMS: section later in the file.  These instructions assume that you
6 basically know what you are doing.  If not, then please consult the FreeBSD
7 handbook.
8
9 Items affecting the ports and packages system can be found in
10 /usr/ports/UPDATING.  Please read that file before running portupgrade.
11
12 NOTE TO PEOPLE WHO THINK THAT FreeBSD 9.x IS SLOW:
13         FreeBSD 9.x has many debugging features turned on, in both the kernel
14         and userland.  These features attempt to detect incorrect use of
15         system primitives, and encourage loud failure through extra sanity
16         checking and fail stop semantics.  They also substantially impact
17         system performance.  If you want to do performance measurement,
18         benchmarking, and optimization, you'll want to turn them off.  This
19         includes various WITNESS- related kernel options, INVARIANTS, malloc
20         debugging flags in userland, and various verbose features in the
21         kernel.  Many developers choose to disable these features on build
22         machines to maximize performance.  (To disable malloc debugging, run
23         ln -s aj /etc/malloc.conf.)
24
25
26 20100429:
27         'vm_page's are now hashed by physical address to an array of mutexes.
28         Currently this is only used to serialize access to hold_count. Over 
29         time the page queue mutex will be peeled away. This changes the size
30         of pmap on every architecture. And requires all callers of vm_page_hold
31         and vm_page_unhold to be updated. 
32  
33 20100402:
34         WITH_CTF can now be specified in src.conf (not recommended, there
35         are some problems with static executables), make.conf (would also
36         affect ports which do not use GNU make and do not override the
37         compile targets) or in the kernel config (via "makeoptions
38         WITH_CTF=yes").
39         When WITH_CTF was specified there before this was silently ignored,
40         so make sure that WITH_CTF is not used in places which could lead
41         to unwanted behavior.
42
43 20100311:
44         The kernel option COMPAT_IA32 has been replaced with COMPAT_FREEBSD32
45         to allow 32-bit compatibility on non-x86 platforms. All kernel
46         configurations on amd64 and ia64 platforms using these options must
47         be modified accordingly.
48
49 20100113:
50         The utmp user accounting database has been replaced with utmpx,
51         the user accounting interface standardized by POSIX.
52         Unfortunately the semantics of utmp and utmpx don't match,
53         making it practically impossible to support both interfaces.
54         The user accounting database is used by tools like finger(1),
55         last(1), talk(1), w(1) and ac(8).
56
57         All applications in the base system use utmpx.  This means only
58         local binaries (e.g. from the ports tree) may still use these
59         utmp database files.  These applications must be rebuilt to make
60         use of utmpx.
61
62         After the system has been upgraded, it is safe to remove the old
63         log files (/var/run/utmp, /var/log/lastlog and /var/log/wtmp*),
64         assuming their contents is of no importance anymore.  Old wtmp
65         databases can only be used by last(1) and ac(8) after they have
66         been converted to the new format using wtmpcvt(1).
67
68 20100108:
69         Introduce the kernel thread "deadlock resolver" (which can be enabled
70         via the DEADLKRES option, see NOTES for more details) and the
71         sleepq_type() function for sleepqueues.
72
73 20091202:
74         The rc.firewall and rc.firewall6 were unified, and
75         rc.firewall6 and rc.d/ip6fw were removed.
76         According to the removal of rc.d/ip6fw, ipv6_firewall_* rc
77         variables are obsoleted.  Instead, the following new rc
78         variables are added to rc.d/ipfw:
79
80                 firewall_client_net_ipv6, firewall_simple_iif_ipv6,
81                 firewall_simple_inet_ipv6, firewall_simple_oif_ipv6,
82                 firewall_simple_onet_ipv6, firewall_trusted_ipv6
83
84         The meanings correspond to the relevant IPv4 variables.
85
86 20091125:
87         8.0-RELEASE.
88
89 20091113:
90         The default terminal emulation for syscons(4) has been changed
91         from cons25 to xterm on all platforms except pc98.  This means
92         that the /etc/ttys file needs to be updated to ensure correct
93         operation of applications on the console.
94
95         The terminal emulation style can be toggled per window by using
96         vidcontrol(1)'s -T flag.  The TEKEN_CONS25 kernel configuration
97         options can be used to change the compile-time default back to
98         cons25.
99
100         To prevent graphical artifacts, make sure the TERM environment
101         variable is set to match the terminal emulation that is being
102         performed by syscons(4).
103
104 20091109:
105         The layout of the structure ieee80211req_scan_result has changed.
106         Applications that require wireless scan results (e.g. ifconfig(8))
107         from net80211 need to be recompiled.
108
109         Applications such as wpa_supplicant(8) may require a full world
110         build without using NO_CLEAN in order to get synchronized with the
111         new structure.
112
113 20091025:
114         The iwn(4) driver has been updated to support the 5000 and 5150 series.
115         There's one kernel module for each firmware. Adding "device iwnfw"
116         to the kernel configuration file means including all three firmware
117         images inside the kernel. If you want to include just the one for
118         your wireless card, use the the devices iwn4965fw, iwn5000fw or
119         iwn5150fw.
120
121 20090926:
122         The rc.d/network_ipv6, IPv6 configuration script has been integrated
123         into rc.d/netif.  The changes are the following:
124
125         1. To use IPv6, simply define $ifconfig_IF_ipv6 like $ifconfig_IF
126            for IPv4.  For aliases, $ifconfig_IF_aliasN should be used.
127            Note that both variables need the "inet6" keyword at the head.
128
129            Do not set $ipv6_network_interfaces manually if you do not
130            understand what you are doing.  It is not needed in most cases. 
131
132            $ipv6_ifconfig_IF and $ipv6_ifconfig_IF_aliasN still work, but
133            they are obsolete.
134
135         2. $ipv6_enable is obsolete.  Use $ipv6_prefer and
136            "inet6 accept_rtadv" keyword in ifconfig(8) instead.
137
138            If you define $ipv6_enable=YES, it means $ipv6_prefer=YES and
139            all configured interfaces have "inet6 accept_rtadv" in the
140            $ifconfig_IF_ipv6.  These are for backward compatibility.
141
142         3. A new variable $ipv6_prefer has been added.  If NO, IPv6
143            functionality of interfaces with no corresponding
144            $ifconfig_IF_ipv6 is disabled by using "inet6 ifdisabled" flag,
145            and the default address selection policy of ip6addrctl(8) 
146            is the IPv4-preferred one (see rc.d/ip6addrctl for more details).
147            Note that if you want to configure IPv6 functionality on the
148            disabled interfaces after boot, first you need to clear the flag by
149            using ifconfig(8) like:
150
151                 ifconfig em0 inet6 -ifdisabled
152
153            If YES, the default address selection policy is set as
154            IPv6-preferred.
155
156            The default value of $ipv6_prefer is NO.
157
158         4. If your system need to receive Router Advertisement messages,
159            define "inet6 accept_rtadv" in $ifconfig_IF_ipv6.  The rc(8)
160            scripts automatically invoke rtsol(8) when the interface becomes
161            UP.  The Router Advertisement messages are used for SLAAC
162            (State-Less Address AutoConfiguration).
163
164 20090922:
165         802.11s D3.03 support was committed. This is incompatible with the
166         previous code, which was based on D3.0.
167
168 20090912:
169         A sysctl variable net.inet6.ip6.accept_rtadv now sets the default value
170         of a per-interface flag ND6_IFF_ACCEPT_RTADV, not a global knob to
171         control whether accepting Router Advertisement messages or not.
172         Also, a per-interface flag ND6_IFF_AUTO_LINKLOCAL has been added and
173         a sysctl variable net.inet6.ip6.auto_linklocal is its default value.
174         The ifconfig(8) utility now supports these flags.
175
176 20090910:
177         ZFS snapshots are now mounted with MNT_IGNORE flag. Use -v option for
178         mount(8) and -a option for df(1) to see them.
179
180 20090825:
181         The old tunable hw.bus.devctl_disable has been superseded by
182         hw.bus.devctl_queue.  hw.bus.devctl_disable=1 in loader.conf should be
183         replaced by hw.bus.devctl_queue=0.  The default for this new tunable
184         is 1000.
185
186 20090813:
187         Remove the option STOP_NMI.  The default action is now to use NMI only
188         for KDB via the newly introduced function stop_cpus_hard() and
189         maintain stop_cpus() to just use a normal IPI_STOP on ia32 and amd64.
190
191 20090803:
192         The stable/8 branch created in subversion.  This corresponds to the
193         RELENG_8 branch in CVS.
194
195 20090719:
196         Bump the shared library version numbers for all libraries that do not
197         use symbol versioning as part of the 8.0-RELEASE cycle.  Bump
198         __FreeBSD_version to 800105.
199
200 20090714:
201         Due to changes in the implementation of virtual network stack support,
202         all network-related kernel modules must be recompiled.  As this change
203         breaks the ABI, bump __FreeBSD_version to 800104.
204
205 20090713:
206         The TOE interface to the TCP syncache has been modified to remove
207         struct tcpopt (<netinet/tcp_var.h>) from the ABI of the network stack.
208         The cxgb driver is the only TOE consumer affected by this change, and
209         needs to be recompiled along with the kernel. As this change breaks
210         the ABI, bump __FreeBSD_version to 800103.
211
212 20090712: 
213         Padding has been added to struct tcpcb, sackhint and tcpstat in
214         <netinet/tcp_var.h> to facilitate future MFCs and bug fixes whilst
215         maintaining the ABI. However, this change breaks the ABI, so bump
216         __FreeBSD_version to 800102. User space tools that rely on the size of
217         any of these structs (e.g. sockstat) need to be recompiled.
218
219 20090630:
220         The NFS_LEGACYRPC option has been removed along with the old kernel
221         RPC implementation that this option selected. Kernel configurations
222         may need to be adjusted.
223
224 20090629:
225         The network interface device nodes at /dev/net/<interface> have been
226         removed.  All ioctl operations can be performed the normal way using
227         routing sockets.  The kqueue functionality can generally be replaced
228         with routing sockets.
229
230 20090628:
231         The documentation from the FreeBSD Documentation Project (Handbook,
232         FAQ, etc.) is now installed via packages by sysinstall(8) and under
233         the /usr/local/share/doc/freebsd directory instead of /usr/share/doc.
234
235 20090624:
236         The ABI of various structures related to the SYSV IPC API have been
237         changed.  As a result, the COMPAT_FREEBSD[456] and COMPAT_43 kernel
238         options now all require COMPAT_FREEBSD7.  Bump __FreeBSD_version to
239         800100.
240
241 20090622:
242         Layout of struct vnet has changed as routing related variables were
243         moved to their own Vimage module. Modules need to be recompiled.  Bump
244         __FreeBSD_version to 800099.
245
246 20090619:
247         NGROUPS_MAX and NGROUPS have been increased from 16 to 1023 and 1024
248         respectively.  As long as no more than 16 groups per process are used,
249         no changes should be visible.  When more than 16 groups are used, old
250         binaries may fail if they call getgroups() or getgrouplist() with
251         statically sized storage.  Recompiling will work around this, but
252         applications should be modified to use dynamically allocated storage
253         for group arrays as POSIX.1-2008 does not cap an implementation's
254         number of supported groups at NGROUPS_MAX+1 as previous versions did.
255
256         NFS and portalfs mounts may also be affected as the list of groups is
257         truncated to 16.  Users of NFS who use more than 16 groups, should
258         take care that negative group permissions are not used on the exported
259         file systems as they will not be reliable unless a GSSAPI based
260         authentication method is used.
261
262 20090616: 
263         The compiling option ADAPTIVE_LOCKMGRS has been introduced.  This
264         option compiles in the support for adaptive spinning for lockmgrs
265         which want to enable it.  The lockinit() function now accepts the flag
266         LK_ADAPTIVE in order to make the lock object subject to adaptive
267         spinning when both held in write and read mode.
268
269 20090613:
270         The layout of the structure returned by IEEE80211_IOC_STA_INFO has
271         changed.  User applications that use this ioctl need to be rebuilt.
272
273 20090611:
274         The layout of struct thread has changed.  Kernel and modules need to
275         be rebuilt.
276
277 20090608:
278         The layout of structs ifnet, domain, protosw and vnet_net has changed.
279         Kernel modules need to be rebuilt.  Bump __FreeBSD_version to 800097.
280
281 20090602:
282         window(1) has been removed from the base system. It can now be
283         installed from ports. The port is called misc/window.
284
285 20090601:
286         The way we are storing and accessing `routing table' entries has
287         changed. Programs reading the FIB, like netstat, need to be
288         re-compiled.
289
290 20090601:
291         A new netisr implementation has been added for FreeBSD 8.  Network
292         file system modules, such as igmp, ipdivert, and others, should be
293         rebuilt.
294         Bump __FreeBSD_version to 800096.
295
296 20090530:
297         Remove the tunable/sysctl debug.mpsafevfs as its initial purpose is no
298         more valid.
299
300 20090530:
301         Add VOP_ACCESSX(9).  File system modules need to be rebuilt.
302         Bump __FreeBSD_version to 800094.
303
304 20090529:
305         Add mnt_xflag field to 'struct mount'.  File system modules need to be
306         rebuilt.
307         Bump __FreeBSD_version to 800093.
308
309 20090528:
310         The compiling option ADAPTIVE_SX has been retired while it has been
311         introduced the option NO_ADAPTIVE_SX which handles the reversed logic.
312         The KPI for sx_init_flags() changes as accepting flags:
313         SX_ADAPTIVESPIN flag has been retired while the SX_NOADAPTIVE flag has
314         been introduced in order to handle the reversed logic.
315         Bump __FreeBSD_version to 800092.
316
317 20090527:
318         Add support for hierarchical jails.  Remove global securelevel.
319         Bump __FreeBSD_version to 800091.
320
321 20090523:
322         The layout of struct vnet_net has changed, therefore modules
323         need to be rebuilt.
324         Bump __FreeBSD_version to 800090.
325
326 20090523:
327         The newly imported zic(8) produces a new format in the output. Please
328         run tzsetup(8) to install the newly created data to /etc/localtime.
329
330 20090520:
331         The sysctl tree for the usb stack has renamed from hw.usb2.* to
332         hw.usb.* and is now consistent again with previous releases.
333
334 20090520:
335         802.11 monitor mode support was revised and driver api's were changed.
336         Drivers dependent on net80211 now support DLT_IEEE802_11_RADIO instead
337         of DLT_IEEE802_11.  No user-visible data structures were changed but
338         applications that use DLT_IEEE802_11 may require changes.
339         Bump __FreeBSD_version to 800088.
340
341 20090430:
342         The layout of the following structs has changed: sysctl_oid,
343         socket, ifnet, inpcbinfo, tcpcb, syncache_head, vnet_inet,
344         vnet_inet6 and vnet_ipfw.  Most modules need to be rebuild or
345         panics may be experienced.  World rebuild is required for
346         correctly checking networking state from userland.
347         Bump __FreeBSD_version to 800085.
348
349 20090429:
350         MLDv2 and Source-Specific Multicast (SSM) have been merged
351         to the IPv6 stack. VIMAGE hooks are in but not yet used.
352         The implementation of SSM within FreeBSD's IPv6 stack closely
353         follows the IPv4 implementation.
354
355         For kernel developers:
356
357         * The most important changes are that the ip6_output() and
358           ip6_input() paths no longer take the IN6_MULTI_LOCK,
359           and this lock has been downgraded to a non-recursive mutex.
360
361         * As with the changes to the IPv4 stack to support SSM, filtering
362           of inbound multicast traffic must now be performed by transport
363           protocols within the IPv6 stack. This does not apply to TCP and
364           SCTP, however, it does apply to UDP in IPv6 and raw IPv6.
365
366         * The KPIs used by IPv6 multicast are similar to those used by
367           the IPv4 stack, with the following differences:
368            * im6o_mc_filter() is analogous to imo_multicast_filter().
369            * The legacy KAME entry points in6_joingroup and in6_leavegroup()
370              are shimmed to in6_mc_join() and in6_mc_leave() respectively.
371            * IN6_LOOKUP_MULTI() has been deprecated and removed.
372            * IPv6 relies on MLD for the DAD mechanism. KAME's internal KPIs
373              for MLDv1 have an additional 'timer' argument which is used to
374              jitter the initial membership report for the solicited-node
375              multicast membership on-link.
376            * This is not strictly needed for MLDv2, which already jitters
377              its report transmissions.  However, the 'timer' argument is
378              preserved in case MLDv1 is active on the interface.
379
380         * The KAME linked-list based IPv6 membership implementation has
381           been refactored to use a vector similar to that used by the IPv4
382           stack.
383           Code which maintains a list of its own multicast memberships
384           internally, e.g. carp, has been updated to reflect the new
385           semantics.
386
387         * There is a known Lock Order Reversal (LOR) due to in6_setscope()
388           acquiring the IF_AFDATA_LOCK and being called within ip6_output().
389           Whilst MLDv2 tries to avoid this otherwise benign LOR, it is an
390           implementation constraint which needs to be addressed in HEAD.
391
392         For application developers:
393
394         * The changes are broadly similar to those made for the IPv4
395           stack.
396
397         * The use of IPv4 and IPv6 multicast socket options on the same
398           socket, using mapped addresses, HAS NOT been tested or supported.
399
400         * There are a number of issues with the implementation of various
401           IPv6 multicast APIs which need to be resolved in the API surface
402           before the implementation is fully compatible with KAME userland
403           use, and these are mostly to do with interface index treatment.
404
405         * The literature available discusses the use of either the delta / ASM
406           API with setsockopt(2)/getsockopt(2), or the full-state / ASM API
407           using setsourcefilter(3)/getsourcefilter(3). For more information
408           please refer to RFC 3768, 'Socket Interface Extensions for
409           Multicast Source Filters'.
410
411         * Applications which use the published RFC 3678 APIs should be fine.
412
413         For systems administrators:
414
415         * The mtest(8) utility has been refactored to support IPv6, in
416           addition to IPv4. Interface addresses are no longer accepted
417           as arguments, their names must be used instead. The utility
418           will map the interface name to its first IPv4 address as
419           returned by getifaddrs(3).
420
421         * The ifmcstat(8) utility has also been updated to print the MLDv2
422           endpoint state and source filter lists via sysctl(3).
423
424         * The net.inet6.ip6.mcast.loop sysctl may be tuned to 0 to disable
425           loopback of IPv6 multicast datagrams by default; it defaults to 1
426           to preserve the existing behaviour. Disabling multicast loopback is
427           recommended for optimal system performance.
428
429         * The IPv6 MROUTING code has been changed to examine this sysctl
430           instead of attempting to perform a group lookup before looping
431           back forwarded datagrams.
432
433         Bump __FreeBSD_version to 800084.
434
435 20090422:
436         Implement low-level Bluetooth HCI API.
437         Bump __FreeBSD_version to 800083.
438
439 20090419:
440         The layout of struct malloc_type, used by modules to register new
441         memory allocation types, has changed.  Most modules will need to
442         be rebuilt or panics may be experienced.
443         Bump __FreeBSD_version to 800081.
444
445 20090415:
446         Anticipate overflowing inp_flags - add inp_flags2.
447         This changes most offsets in inpcb, so checking v4 connection
448         state will require a world rebuild.
449         Bump __FreeBSD_version to 800080.
450
451 20090415:
452         Add an llentry to struct route and struct route_in6. Modules
453         embedding a struct route will need to be recompiled.
454         Bump __FreeBSD_version to 800079.
455
456 20090414:
457         The size of rt_metrics_lite and by extension rtentry has changed.
458         Networking administration apps will need to be recompiled.
459         The route command now supports show as an alias for get, weighting
460         of routes, sticky and nostick flags to alter the behavior of stateful
461         load balancing.
462         Bump __FreeBSD_version to 800078.
463
464 20090408:
465         Do not use Giant for kbdmux(4) locking. This is wrong and
466         apparently causing more problems than it solves. This will
467         re-open the issue where interrupt handlers may race with
468         kbdmux(4) in polling mode. Typical symptoms include (but
469         not limited to) duplicated and/or missing characters when
470         low level console functions (such as gets) are used while
471         interrupts are enabled (for example geli password prompt,
472         mountroot prompt etc.). Disabling kbdmux(4) may help.
473
474 20090407:
475         The size of structs vnet_net, vnet_inet and vnet_ipfw has changed;
476         kernel modules referencing any of the above need to be recompiled.
477         Bump __FreeBSD_version to 800075.
478
479 20090320:
480         GEOM_PART has become the default partition slicer for storage devices,
481         replacing GEOM_MBR, GEOM_BSD, GEOM_PC98 and GEOM_GPT slicers. It
482         introduces some changes:
483
484         MSDOS/EBR: the devices created from MSDOS extended partition entries
485         (EBR) can be named differently than with GEOM_MBR and are now symlinks
486         to devices with offset-based names. fstabs may need to be modified.
487
488         BSD: the "geometry does not match label" warning is harmless in most
489         cases but it points to problems in file system misalignment with
490         disk geometry. The "c" partition is now implicit, covers the whole
491         top-level drive and cannot be (mis)used by users.
492
493         General: Kernel dumps are now not allowed to be written to devices
494         whose partition types indicate they are meant to be used for file
495         systems (or, in case of MSDOS partitions, as something else than
496         the "386BSD" type).
497
498         Most of these changes date approximately from 200812.
499
500 20090319:
501         The uscanner(4) driver has been removed from the kernel. This follows
502         Linux removing theirs in 2.6 and making libusb the default interface
503         (supported by sane).
504
505 20090319:
506         The multicast forwarding code has been cleaned up. netstat(1)
507         only relies on KVM now for printing bandwidth upcall meters.
508         The IPv4 and IPv6 modules are split into ip_mroute_mod and
509         ip6_mroute_mod respectively. The config(5) options for statically
510         compiling this code remain the same, i.e. 'options MROUTING'.
511
512 20090315:
513         Support for the IFF_NEEDSGIANT network interface flag has been
514         removed, which means that non-MPSAFE network device drivers are no
515         longer supported.  In particular, if_ar, if_sr, and network device
516         drivers from the old (legacy) USB stack can no longer be built or
517         used.
518
519 20090313:
520         POSIX.1 Native Language Support (NLS) has been enabled in libc and
521         a bunch of new language catalog files have also been added.
522         This means that some common libc messages are now localized and
523         they depend on the LC_MESSAGES environmental variable.
524
525 20090313:
526         The k8temp(4) driver has been renamed to amdtemp(4) since
527         support for Family 10 and Family 11 CPU families was added.
528
529 20090309:
530         IGMPv3 and Source-Specific Multicast (SSM) have been merged
531         to the IPv4 stack. VIMAGE hooks are in but not yet used.
532
533         For kernel developers, the most important changes are that the
534         ip_output() and ip_input() paths no longer take the IN_MULTI_LOCK(),
535         and this lock has been downgraded to a non-recursive mutex.
536
537         Transport protocols (UDP, Raw IP) are now responsible for filtering
538         inbound multicast traffic according to group membership and source
539         filters. The imo_multicast_filter() KPI exists for this purpose.
540         Transports which do not use multicast (SCTP, TCP) already reject
541         multicast by default. Forwarding and receive performance may improve
542         as a mutex acquisition is no longer needed in the ip_input()
543         low-level input path.  in_addmulti() and in_delmulti() are shimmed
544         to new KPIs which exist to support SSM in-kernel.
545
546         For application developers, it is recommended that loopback of
547         multicast datagrams be disabled for best performance, as this
548         will still cause the lock to be taken for each looped-back
549         datagram transmission. The net.inet.ip.mcast.loop sysctl may
550         be tuned to 0 to disable loopback by default; it defaults to 1
551         to preserve the existing behaviour.
552
553         For systems administrators, to obtain best performance with
554         multicast reception and multiple groups, it is always recommended
555         that a card with a suitably precise hash filter is used. Hash
556         collisions will still result in the lock being taken within the
557         transport protocol input path to check group membership.
558
559         If deploying FreeBSD in an environment with IGMP snooping switches,
560         it is recommended that the net.inet.igmp.sendlocal sysctl remain
561         enabled; this forces 224.0.0.0/24 group membership to be announced
562         via IGMP.
563
564         The size of 'struct igmpstat' has changed; netstat needs to be
565         recompiled to reflect this.
566         Bump __FreeBSD_version to 800070.
567
568 20090309:
569         libusb20.so.1 is now installed as libusb.so.1 and the ports system
570         updated to use it. This requires a buildworld/installworld in order to
571         update the library and dependencies (usbconfig, etc). Its advisable to
572         rebuild all ports which uses libusb. More specific directions are given
573         in the ports collection UPDATING file. Any /etc/libmap.conf entries for
574         libusb are no longer required and can be removed.
575
576 20090302:
577         A workaround is committed to allow the creation of System V shared
578         memory segment of size > 2 GB on the 64-bit architectures.
579         Due to a limitation of the existing ABI, the shm_segsz member
580         of the struct shmid_ds, returned by shmctl(IPC_STAT) call is
581         wrong for large segments. Note that limits must be explicitly
582         raised to allow such segments to be created.
583
584 20090301:
585         The layout of struct ifnet has changed, requiring a rebuild of all
586         network device driver modules.
587
588 20090227:
589         The /dev handling for the new USB stack has changed, a
590         buildworld/installworld is required for libusb20.
591
592 20090223:
593         The new USB2 stack has now been permanently moved in and all kernel and
594         module names reverted to their previous values (eg, usb, ehci, ohci,
595         ums, ...).  The old usb stack can be compiled in by prefixing the name
596         with the letter 'o', the old usb modules have been removed.
597         Updating entry 20090216 for xorg and 20090215 for libmap may still
598         apply.
599
600 20090217:
601         The rc.conf(5) option if_up_delay has been renamed to
602         defaultroute_delay to better reflect its purpose. If you have
603         customized this setting in /etc/rc.conf you need to update it to
604         use the new name.
605
606 20090216:
607         xorg 7.4 wants to configure its input devices via hald which does not
608         yet work with USB2. If the keyboard/mouse does not work in xorg then
609         add
610                 Option "AllowEmptyInput" "off"
611         to your ServerLayout section.  This will cause X to use the configured
612         kbd and mouse sections from your xorg.conf.
613
614 20090215:
615         The GENERIC kernels for all architectures now default to the new USB2
616         stack. No kernel config options or code have been removed so if a
617         problem arises please report it and optionally revert to the old USB
618         stack. If you are loading USB kernel modules or have a custom kernel
619         that includes GENERIC then ensure that usb names are also changed over,
620         eg uftdi -> usb2_serial_ftdi.
621
622         Older programs linked against the ports libusb 0.1 need to be
623         redirected to the new stack's libusb20.  /etc/libmap.conf can
624         be used for this:
625                 # Map old usb library to new one for usb2 stack
626                 libusb-0.1.so.8 libusb20.so.1
627
628 20090209:
629         All USB ethernet devices now attach as interfaces under the name ueN
630         (eg. ue0). This is to provide a predictable name as vendors often
631         change usb chipsets in a product without notice.
632
633 20090203:
634         The ichsmb(4) driver has been changed to require SMBus slave
635         addresses be left-justified (xxxxxxx0b) rather than right-justified.
636         All of the other SMBus controller drivers require left-justified
637         slave addresses, so this change makes all the drivers provide the
638         same interface.
639
640 20090201:
641         INET6 statistics (struct ip6stat) was updated.
642         netstat(1) needs to be recompiled.
643
644 20090119:
645         NTFS has been removed from GENERIC kernel on amd64 to match
646         GENERIC on i386. Should not cause any issues since mount_ntfs(8)
647         will load ntfs.ko module automatically when NTFS support is
648         actually needed, unless ntfs.ko is not installed or security
649         level prohibits loading kernel modules. If either is the case,
650         "options NTFS" has to be added into kernel config.
651
652 20090115:
653         TCP Appropriate Byte Counting (RFC 3465) support added to kernel.
654         New field in struct tcpcb breaks ABI, so bump __FreeBSD_version to
655         800061. User space tools that rely on the size of struct tcpcb in
656         tcp_var.h (e.g. sockstat) need to be recompiled.
657
658 20081225:
659         ng_tty(4) module updated to match the new TTY subsystem.
660         Due to API change, user-level applications must be updated.
661         New API support added to mpd5 CVS and expected to be present
662         in next mpd5.3 release.
663
664 20081219:
665         With __FreeBSD_version 800060 the makefs tool is part of
666         the base system (it was a port).
667
668 20081216:
669         The afdata and ifnet locks have been changed from mutexes to
670         rwlocks, network modules will need to be re-compiled.
671
672 20081214:
673         __FreeBSD_version 800059 incorporates the new arp-v2 rewrite.
674         RTF_CLONING, RTF_LLINFO and RTF_WASCLONED flags are eliminated.
675         The new code reduced struct rtentry{} by 16 bytes on 32-bit
676         architecture and 40 bytes on 64-bit architecture. The userland
677         applications "arp" and "ndp" have been updated accordingly.
678         The output from "netstat -r" shows only routing entries and
679         none of the L2 information.
680
681 20081130:
682         __FreeBSD_version 800057 marks the switchover from the
683         binary ath hal to source code. Users must add the line:
684
685         options AH_SUPPORT_AR5416
686
687         to their kernel config files when specifying:
688
689         device  ath_hal
690
691         The ath_hal module no longer exists; the code is now compiled
692         together with the driver in the ath module.  It is now
693         possible to tailor chip support (i.e. reduce the set of chips
694         and thereby the code size); consult ath_hal(4) for details.
695
696 20081121:
697         __FreeBSD_version 800054 adds memory barriers to
698         <machine/atomic.h>, new interfaces to ifnet to facilitate
699         multiple hardware transmit queues for cards that support
700         them, and a lock-less ring-buffer implementation to
701         enable drivers to more efficiently manage queueing of
702         packets.
703
704 20081117:
705         A new version of ZFS (version 13) has been merged to -HEAD.
706         This version has zpool attribute "listsnapshots" off by
707         default, which means "zfs list" does not show snapshots,
708         and is the same as Solaris behavior.
709
710 20081028:
711         dummynet(4) ABI has changed. ipfw(8) needs to be recompiled.
712
713 20081009:
714         The uhci, ohci, ehci and slhci USB Host controller drivers have
715         been put into separate modules. If you load the usb module
716         separately through loader.conf you will need to load the
717         appropriate *hci module as well. E.g. for a UHCI-based USB 2.0
718         controller add the following to loader.conf:
719
720                 uhci_load="YES"
721                 ehci_load="YES"
722
723 20081009:
724         The ABI used by the PMC toolset has changed.  Please keep
725         userland (libpmc(3)) and the kernel module (hwpmc(4)) in
726         sync.
727
728 20081009:
729         atapci kernel module now includes only generic PCI ATA
730         driver. AHCI driver moved to ataahci kernel module.
731         All vendor-specific code moved into separate kernel modules:
732         ataacard, ataacerlabs, ataadaptec, ataamd, ataati, atacenatek,
733         atacypress, atacyrix, atahighpoint, ataintel, ataite, atajmicron,
734         atamarvell, atamicron, atanational, atanetcell, atanvidia,
735         atapromise, ataserverworks, atasiliconimage, atasis, atavia
736
737 20080820:
738         The TTY subsystem of the kernel has been replaced by a new
739         implementation, which provides better scalability and an
740         improved driver model. Most common drivers have been migrated to
741         the new TTY subsystem, while others have not. The following
742         drivers have not yet been ported to the new TTY layer:
743
744         PCI/ISA:
745                 cy, digi, rc, rp, sio
746
747         USB:
748                 ubser, ucycom
749
750         Line disciplines:
751                 ng_h4, ng_tty, ppp, sl, snp
752
753         Adding these drivers to your kernel configuration file shall
754         cause compilation to fail.
755
756 20080818:
757         ntpd has been upgraded to 4.2.4p5.
758
759 20080801:
760         OpenSSH has been upgraded to 5.1p1.
761
762         For many years, FreeBSD's version of OpenSSH preferred DSA
763         over RSA for host and user authentication keys.  With this
764         upgrade, we've switched to the vendor's default of RSA over
765         DSA.  This may cause upgraded clients to warn about unknown
766         host keys even for previously known hosts.  Users should
767         follow the usual procedure for verifying host keys before
768         accepting the RSA key.
769
770         This can be circumvented by setting the "HostKeyAlgorithms"
771         option to "ssh-dss,ssh-rsa" in ~/.ssh/config or on the ssh
772         command line.
773
774         Please note that the sequence of keys offered for
775         authentication has been changed as well.  You may want to
776         specify IdentityFile in a different order to revert this
777         behavior.
778
779 20080713:
780         The sio(4) driver has been removed from the i386 and amd64
781         kernel configuration files. This means uart(4) is now the
782         default serial port driver on those platforms as well.
783
784         To prevent collisions with the sio(4) driver, the uart(4) driver
785         uses different names for its device nodes. This means the
786         onboard serial port will now most likely be called "ttyu0"
787         instead of "ttyd0". You may need to reconfigure applications to
788         use the new device names.
789
790         When using the serial port as a boot console, be sure to update
791         /boot/device.hints and /etc/ttys before booting the new kernel.
792         If you forget to do so, you can still manually specify the hints
793         at the loader prompt:
794
795                 set hint.uart.0.at="isa"
796                 set hint.uart.0.port="0x3F8"
797                 set hint.uart.0.flags="0x10"
798                 set hint.uart.0.irq="4"
799                 boot -s
800
801 20080609:
802         The gpt(8) utility has been removed. Use gpart(8) to partition
803         disks instead.
804
805 20080603:
806         The version that Linuxulator emulates was changed from 2.4.2
807         to 2.6.16. If you experience any problems with Linux binaries
808         please try to set sysctl compat.linux.osrelease to 2.4.2 and
809         if it fixes the problem contact emulation mailing list.
810
811 20080525:
812         ISDN4BSD (I4B) was removed from the src tree. You may need to
813         update a your kernel configuration and remove relevant entries.
814
815 20080509:
816         I have checked in code to support multiple routing tables.
817         See the man pages setfib(1) and setfib(2).
818         This is a hopefully backwards compatible version,
819         but to make use of it you need to compile your kernel
820         with options ROUTETABLES=2 (or more up to 16).
821
822 20080420:
823         The 802.11 wireless support was redone to enable multi-bss
824         operation on devices that are capable.  The underlying device
825         is no longer used directly but instead wlanX devices are
826         cloned with ifconfig.  This requires changes to rc.conf files.
827         For example, change:
828                 ifconfig_ath0="WPA DHCP"
829         to
830                 wlans_ath0=wlan0
831                 ifconfig_wlan0="WPA DHCP"
832         see rc.conf(5) for more details.  In addition, mergemaster of
833         /etc/rc.d is highly recommended.  Simultaneous update of userland
834         and kernel wouldn't hurt either.
835
836         As part of the multi-bss changes the wlan_scan_ap and wlan_scan_sta
837         modules were merged into the base wlan module.  All references
838         to these modules (e.g. in kernel config files) must be removed.
839
840 20080408:
841         psm(4) has gained write(2) support in native operation level.
842         Arbitrary commands can be written to /dev/psm%d and status can
843         be read back from it.  Therefore, an application is responsible
844         for status validation and error recovery.  It is a no-op in
845         other operation levels.
846
847 20080312:
848         Support for KSE threading has been removed from the kernel.  To
849         run legacy applications linked against KSE libmap.conf may
850         be used.  The following libmap.conf may be used to ensure
851         compatibility with any prior release:
852
853         libpthread.so.1 libthr.so.1
854         libpthread.so.2 libthr.so.2
855         libkse.so.3 libthr.so.3
856
857 20080301:
858         The layout of struct vmspace has changed. This affects libkvm
859         and any executables that link against libkvm and use the
860         kvm_getprocs() function. In particular, but not exclusively,
861         it affects ps(1), fstat(1), pkill(1), systat(1), top(1) and w(1).
862         The effects are minimal, but it's advisable to upgrade world
863         nonetheless.
864
865 20080229:
866         The latest em driver no longer has support in it for the
867         82575 adapter, this is now moved to the igb driver. The
868         split was done to make new features that are incompatible
869         with older hardware easier to do.
870
871 20080220:
872         The new geom_lvm(4) geom class has been renamed to geom_linux_lvm(4),
873         likewise the kernel option is now GEOM_LINUX_LVM.
874
875 20080211:
876         The default NFS mount mode has changed from UDP to TCP for
877         increased reliability.  If you rely on (insecurely) NFS
878         mounting across a firewall you may need to update your
879         firewall rules.
880
881 20080208:
882         Belatedly note the addition of m_collapse for compacting
883         mbuf chains.
884
885 20080126:
886         The fts(3) structures have been changed to use adequate
887         integer types for their members and so to be able to cope
888         with huge file trees.  The old fts(3) ABI is preserved
889         through symbol versioning in libc, so third-party binaries
890         using fts(3) should still work, although they will not take
891         advantage of the extended types.  At the same time, some
892         third-party software might fail to build after this change
893         due to unportable assumptions made in its source code about
894         fts(3) structure members.  Such software should be fixed
895         by its vendor or, in the worst case, in the ports tree.
896         FreeBSD_version 800015 marks this change for the unlikely
897         case that a portable fix is impossible.
898
899 20080123:
900         To upgrade to -current after this date, you must be running
901         FreeBSD not older than 6.0-RELEASE.  Upgrading to -current
902         from 5.x now requires a stop over at RELENG_6 or RELENG_7 systems.
903
904 20071128:
905         The ADAPTIVE_GIANT kernel option has been retired because its
906         functionality is the default now.
907
908 20071118:
909         The AT keyboard emulation of sunkbd(4) has been turned on
910         by default. In order to make the special symbols of the Sun
911         keyboards driven by sunkbd(4) work under X these now have
912         to be configured the same way as Sun USB keyboards driven
913         by ukbd(4) (which also does AT keyboard emulation), f.e.:
914
915         Option  "XkbLayout" "us"
916         Option  "XkbRules" "xorg"
917         Option  "XkbSymbols" "pc(pc105)+sun_vndr/usb(sun_usb)+us"
918
919 20071024:
920         It has been decided that it is desirable to provide ABI
921         backwards compatibility to the FreeBSD 4/5/6 versions of the
922         PCIOCGETCONF, PCIOCREAD and PCIOCWRITE IOCTLs, which was
923         broken with the introduction of PCI domain support (see the
924         20070930 entry). Unfortunately, this required the ABI of
925         PCIOCGETCONF to be broken again in order to be able to
926         provide backwards compatibility to the old version of that
927         IOCTL. Thus consumers of PCIOCGETCONF have to be recompiled
928         again. As for prominent ports this affects neither pciutils
929         nor xorg-server this time, the hal port needs to be rebuilt
930         however.
931
932 20071020:
933         The misnamed kthread_create() and friends have been renamed
934         to kproc_create() etc. Many of the callers already
935         used kproc_start()..
936         I will return kthread_create() and friends in a while
937         with implementations that actually create threads, not procs.
938         Renaming corresponds with version 800002.
939
940 20071010:
941         RELENG_7 branched.
942
943 COMMON ITEMS:
944
945         General Notes
946         -------------
947         Avoid using make -j when upgrading.  While generally safe, there are
948         sometimes problems using -j to upgrade.  If your upgrade fails with
949         -j, please try again without -j.  From time to time in the past there
950         have been problems using -j with buildworld and/or installworld.  This
951         is especially true when upgrading between "distant" versions (eg one
952         that cross a major release boundary or several minor releases, or when
953         several months have passed on the -current branch).
954
955         Sometimes, obscure build problems are the result of environment
956         poisoning.  This can happen because the make utility reads its
957         environment when searching for values for global variables.  To run
958         your build attempts in an "environmental clean room", prefix all make
959         commands with 'env -i '.  See the env(1) manual page for more details.
960
961         When upgrading from one major version to another it is generally best
962         to upgrade to the latest code in the currently installed branch first,
963         then do an upgrade to the new branch. This is the best-tested upgrade
964         path, and has the highest probability of being successful.  Please try
965         this approach before reporting problems with a major version upgrade.
966
967         To build a kernel
968         -----------------
969         If you are updating from a prior version of FreeBSD (even one just
970         a few days old), you should follow this procedure.  It is the most
971         failsafe as it uses a /usr/obj tree with a fresh mini-buildworld,
972
973         make kernel-toolchain
974         make -DALWAYS_CHECK_MAKE buildkernel KERNCONF=YOUR_KERNEL_HERE
975         make -DALWAYS_CHECK_MAKE installkernel KERNCONF=YOUR_KERNEL_HERE
976
977         To test a kernel once
978         ---------------------
979         If you just want to boot a kernel once (because you are not sure
980         if it works, or if you want to boot a known bad kernel to provide
981         debugging information) run
982         make installkernel KERNCONF=YOUR_KERNEL_HERE KODIR=/boot/testkernel
983         nextboot -k testkernel
984
985         To just build a kernel when you know that it won't mess you up
986         --------------------------------------------------------------
987         This assumes you are already running a CURRENT system.  Replace
988         ${arch} with the architecture of your machine (e.g. "i386",
989         "arm", "amd64", "ia64", "pc98", "sparc64", "powerpc", "mips", etc).
990
991         cd src/sys/${arch}/conf
992         config KERNEL_NAME_HERE
993         cd ../compile/KERNEL_NAME_HERE
994         make depend
995         make
996         make install
997
998         If this fails, go to the "To build a kernel" section.
999
1000         To rebuild everything and install it on the current system.
1001         -----------------------------------------------------------
1002         # Note: sometimes if you are running current you gotta do more than
1003         # is listed here if you are upgrading from a really old current.
1004
1005         <make sure you have good level 0 dumps>
1006         make buildworld
1007         make kernel KERNCONF=YOUR_KERNEL_HERE
1008                                                         [1]
1009         <reboot in single user>                         [3]
1010         mergemaster -p                                  [5]
1011         make installworld
1012         make delete-old
1013         mergemaster -i                                  [4]
1014         <reboot>
1015
1016
1017         To cross-install current onto a separate partition
1018         --------------------------------------------------
1019         # In this approach we use a separate partition to hold
1020         # current's root, 'usr', and 'var' directories.   A partition
1021         # holding "/", "/usr" and "/var" should be about 2GB in
1022         # size.
1023
1024         <make sure you have good level 0 dumps>
1025         <boot into -stable>
1026         make buildworld
1027         make buildkernel KERNCONF=YOUR_KERNEL_HERE
1028         <maybe newfs current's root partition>
1029         <mount current's root partition on directory ${CURRENT_ROOT}>
1030         make installworld DESTDIR=${CURRENT_ROOT}
1031         make distribution DESTDIR=${CURRENT_ROOT} # if newfs'd
1032         make installkernel KERNCONF=YOUR_KERNEL_HERE DESTDIR=${CURRENT_ROOT}
1033         cp /etc/fstab ${CURRENT_ROOT}/etc/fstab                    # if newfs'd
1034         <edit ${CURRENT_ROOT}/etc/fstab to mount "/" from the correct partition>
1035         <reboot into current>
1036         <do a "native" rebuild/install as described in the previous section>
1037         <maybe install compatibility libraries from ports/misc/compat*>
1038         <reboot>
1039
1040
1041         To upgrade in-place from 8.x-stable to current
1042         ----------------------------------------------
1043         <make sure you have good level 0 dumps>
1044         make buildworld                                 [9]
1045         make kernel KERNCONF=YOUR_KERNEL_HERE           [8]
1046                                                         [1]
1047         <reboot in single user>                         [3]
1048         mergemaster -p                                  [5]
1049         make installworld
1050         make delete-old
1051         mergemaster -i                                  [4]
1052         <reboot>
1053
1054         Make sure that you've read the UPDATING file to understand the
1055         tweaks to various things you need.  At this point in the life
1056         cycle of current, things change often and you are on your own
1057         to cope.  The defaults can also change, so please read ALL of
1058         the UPDATING entries.
1059
1060         Also, if you are tracking -current, you must be subscribed to
1061         freebsd-current@freebsd.org.  Make sure that before you update
1062         your sources that you have read and understood all the recent
1063         messages there.  If in doubt, please track -stable which has
1064         much fewer pitfalls.
1065
1066         [1] If you have third party modules, such as vmware, you
1067         should disable them at this point so they don't crash your
1068         system on reboot.
1069
1070         [3] From the bootblocks, boot -s, and then do
1071                 fsck -p
1072                 mount -u /
1073                 mount -a
1074                 cd src
1075                 adjkerntz -i            # if CMOS is wall time
1076         Also, when doing a major release upgrade, it is required that
1077         you boot into single user mode to do the installworld.
1078
1079         [4] Note: This step is non-optional.  Failure to do this step
1080         can result in a significant reduction in the functionality of the
1081         system.  Attempting to do it by hand is not recommended and those
1082         that pursue this avenue should read this file carefully, as well
1083         as the archives of freebsd-current and freebsd-hackers mailing lists
1084         for potential gotchas.  The -U option is also useful to consider.
1085         See mergemaster(8) for more information.
1086
1087         [5] Usually this step is a noop.  However, from time to time
1088         you may need to do this if you get unknown user in the following
1089         step.  It never hurts to do it all the time.  You may need to
1090         install a new mergemaster (cd src/usr.sbin/mergemaster && make
1091         install) after the buildworld before this step if you last updated
1092         from current before 20020224 or from -stable before 20020408.
1093
1094         [8] In order to have a kernel that can run the 4.x binaries needed to
1095         do an installworld, you must include the COMPAT_FREEBSD4 option in
1096         your kernel.  Failure to do so may leave you with a system that is
1097         hard to boot to recover. A similar kernel option COMPAT_FREEBSD5 is
1098         required to run the 5.x binaries on more recent kernels.  And so on
1099         for COMPAT_FREEBSD6 and COMPAT_FREEBSD7.
1100
1101         Make sure that you merge any new devices from GENERIC since the
1102         last time you updated your kernel config file.
1103
1104         [9] When checking out sources, you must include the -P flag to have
1105         cvs prune empty directories.
1106
1107         If CPUTYPE is defined in your /etc/make.conf, make sure to use the
1108         "?=" instead of the "=" assignment operator, so that buildworld can
1109         override the CPUTYPE if it needs to.
1110
1111         MAKEOBJDIRPREFIX must be defined in an environment variable, and
1112         not on the command line, or in /etc/make.conf.  buildworld will
1113         warn if it is improperly defined.
1114 FORMAT:
1115
1116 This file contains a list, in reverse chronological order, of major
1117 breakages in tracking -current.  Not all things will be listed here,
1118 and it only starts on October 16, 2004.  Updating files can found in
1119 previous releases if your system is older than this.
1120
1121 Copyright information:
1122
1123 Copyright 1998-2009 M. Warner Losh.  All Rights Reserved.
1124
1125 Redistribution, publication, translation and use, with or without
1126 modification, in full or in part, in any form or format of this
1127 document are permitted without further permission from the author.
1128
1129 THIS DOCUMENT IS PROVIDED BY WARNER LOSH ``AS IS'' AND ANY EXPRESS OR
1130 IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1131 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1132 DISCLAIMED.  IN NO EVENT SHALL WARNER LOSH BE LIABLE FOR ANY DIRECT,
1133 INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
1134 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
1135 SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1136 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
1137 STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
1138 IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1139 POSSIBILITY OF SUCH DAMAGE.
1140
1141 Contact Warner Losh if you have any questions about your use of
1142 this document.
1143
1144 $FreeBSD$