Linux 2.2.18 Release Notes
Platforms:Alpha, M68K, PowerPC, S/390, Sparc, X86
Introduction
Linux 2.2.18 is the latest update to the Linux kernel tree. The out of
the box tree supports the Alpha, PPC, Sparc and X86 platforms. MIPS
and ARM are mostly merged but you should obtain the platform specific
tree.
Compilers
This code is intended to build with gcc 2.7.2 and egcs 1.1.2. Patches
for building with gcc 2.95 are merged but less tested than other
compilers. Caution is recommended when using gcc 2.95 and feedback is
sought.
Binary Compatibility
Linux 2.2.18 should on the whole be fully binary compatible with old
modules. There are no API changes, although 2.4 back compatibility
API's are also introduced in this release. In general you should not
assume binary compatibility between kernel object modules in Linux.
Security Notes
Linux 2.2.18 contains additional 2.4test ABI calls for controlling how
capabilities are handled when using setuid calls.
Architecture Updates
Alpha
+ Fixed a problem where csum_partial_copy could cause spurious
EFAULT returns
+ Fixed a problem with FPU division
ARM
The ARM tree has been partially synchronized with the ARM
working tree for 2.2
i386
The major thrust has been support for processors running in
excess of 2GHz, support for the CyrixIII processor and also
basic support for the Pentium IV. Unfortunately Intel chose to
ignore all precedent in model numbering via cpuid and report a
family of '15'. This sudden jump broke assumptions in the
kernel tree without any warning. Intel have failed to provide
good reasons for their change. We have chosen to continue to
report the Pentium IV as a '686' class processor. The full
family data is provided via cpuinfo.
In addition the early Pentium IV chips appear to have some
problems. You should be using stepping 7 or higher processors
with the latest shipping microcode update if you wish to run
Linux on a Pentium IV processor.
+ Added a DMI scanner to handle broken Dell laptop APM
+ Added microcode update support from the 2.4test tree
+ Added msr/cpuid driver backport from 2.4test
+ Added support for processors running at over 2GHz
+ Experimental Cyrix III support
+ Fixed slight abuse of gcc inline asm in maths emulator
+ Fixed some minor bugs in the CPU failure reporting
+ Fixed db6 handling when doing ptrace
+ Intel Pentium IV support
+ Support both keyboard and 'fast' A20 gating
+ Updated MTRR support to handle the K6 mobile
M68K
Merge with the forked off M68K stable kernel tree
PowerPC
Merge with the PPC maintainers. Fix a problem with the syscall
table
S/390
The S/390 tree has been brought back into sync with IBM
Sparc
+ Updates for DRM and other ioctl changes
+ Fix dcache and exec problems
Core Updates
Asynchronous I/O
Report failed fasync setup attempts rather than ignoring them.
Block sizes
Restore block sizes on devices after a partition scan
Capabilities
Added PR_GET/SET_KEEPCAPS from 2.4test
Elevator
Changed elevator algorithm to give better performance
ioremap
Fix a fencepost error in ioremap
Low level I/O
Fix a problem when a synchronous write occurred raw to a block
device that went off the end of the disk.
LRU corruption
Fix potential LRU list corruption
Memory Leaks
Fixed memory handling on obscure error paths in the following -
bttv, buz, qpmouse, ipddp, sdla, softoss, ixj, ax25
Partitions
Quietened down the partition table messages
RAID
Fix a raid1/vm deadlock
set_current_state
Fixed potential SMP race
set_scheduler
Fix lock inversion
Timekeeping
Fix locking between timers and rtc as well as CMOS locking
tq_scheduler
It was possible for tq_scheduler to sometimes run its tasks
with interrupts disabled.
Virtual Memory
Fix a problem where the box could get stuck when it ran out of
pages
vmalloc
Fix corner case that could cause crashes allocating large
amount of vmalloc space on large machines
Driver Updates
3c59x
Add support for the 3c556B
8139too
Add an improved new driver for the RTL8139 chips as an
alternative to the dual 8129/8139 driver
AC97 codecs
Fixed several bugs in the AC97 support. Start MIC input off to
avoid feedback
Acenic
Driver updates to fix a potential oops when using dhcp
Acenic
Fix problems when flushing jumbo ring. Fix setting the MAC
address
AGP
The AGP bus drivers from Linux 2.4test are now included
BTTV BT848/BT878 driver
The bttv driver now supports subwindow clipping
Compaq CISS
A driver for the SA5300 CISS card has been added
Compaq PCI Fibrechannel
Added support for the Compaq 64bit/66Mhz fibrechannel adapter
COSA
Fix a potential crash
CPQArray
Fixed a case where the cpq array driver could cause a kernel
oops
Crystal CS4281
Fixed hangs when playing sound on the cs4281
Crystal 46xx driver
Added more intelligence to the amplifier power control
DAC960
This driver has been updated
DRM
The 3D direct rendering manager is now included in 2.2 kernels
EEPro
Fix a bug when handling multiple cards
EEPro100
More PCI identifiers have been added
ESS Maestro
Added support for the radio interface on some Maestro cards
Floppy driver
Fix SMP locking problems
Framebuffer console
Fix a race in scroll back/paste
IBM token ring
Fix support for cable pulls/pcmcia problems
IDE
Avoid tuning older VIA chipsets that take offence
IDE
Added UDMA support for ALI1543 and 1543C devices
IDE CDROM
Fix a problem with CDROMPLAYTRKIND. Allow root to open the
CDROM door at all times. Fix a problem with Sanyo changers
IDE DVD
Fix a bug in the RPC state handling
IDE Floppy
Fix problems with IDE floppy on the Alpha
IDE multi-lun
Attempt to intelligently decide of an IDE ATAPI device has LUN
support
ISDN
Numerous small fixes
ISI Serial
Updated to support more cards
Joystick
Fix an option parsing bug
NBD
Fix a potential deadlock swapping over nbd
OV511 cameras
Updated to match the 2.4test tree
PAS audio
Fix a problem with the revision 'D' mixer support
Pinnacle audio
This driver now supports the Compaq Alpha platform
PS/2 mouse
Made reconnect parsing optional
Random number generator
Add support for the Intel i810 random number generator
RTL8139
This driver has been updated
SIS 900 ethernet
Add support for a new PHY
SK fddi
Support for the SK FDDI PCI adapters has been added
SMC9194 driver
A buffer handling bug has been fixed
SX audio
Updated and fixed
SyncLink
This driver has been updated
Thunderlan
Fix typos in the thunderlan driver
Toshiba Floppies
Handle odd interrupt returns seen on some Toshiba floppy drives
Trident audio
Added suport for onboard trident on Alpha machines
Trident audio
Fix hangs caused by attempts to initialise the midi on non Ali
devices
UART401
Fixed a harmless free memory misuse in the uart401 driver
USB
A port of the core USB code from Linux 2.4 and most of the USB
drivers is included.
VIA audio
Updated support for the VIA audio drivers
WDT Watchdog
Added support for the PCI card
XSpeed DSL
Added support for the XSpeed DSL card
Yamaha PCI audio
Add an initial native mode driver
File System Updates
ADFS
Updated to resync with the ARM tree
'Cache Locked' Error
Fix 'cache locked' messages from NFS layer
Ext2 fs
Fixed some potential races in the file system
Ext2 fs
Clear suid bit on truncate as per SuSv2
FAT FS
Fix FAT32 to work on Alpha
NCPfs
Fix incorrect handling of kernel/user copies in NCP file system
NFS
Added NFSv3 support and fixed multiple NFS problems
NFS locking
Implement sun style NFS cache/lockf barriers
NFS over TCP
Added experimental support for NFS over TCP
NTFS
Fix translation bug
Procfs
Fix unlink bugs
Quota
Fixed some potential races in the quota handling
SMB file system
Fixes for OS/2 problems and other updates. Work around truncate
problems with NetApp filers
Swap
Catch and report mis-sized swap partitions
Windows VFAT naming
We now use the same rules that windows appears to for
generating VFAT names.
Miscellaneous Updates
Code Pages
Fixed problems with Code Page cp932
Compiler
Automatically chose gcc272 or kgcc if present
Console
Added 'quiet' option as in 2.4test
Network Updates
Appletalk
Fix ioctl handler for physical layer ioctls issued via
appletalk sockets
Arpfilter
Arpfilter from 2.4test has been merged
Cisco HDLC
Quietly drop the newer Cisco 0x2000 info frames
Control messsages
Fix some corner cases in control message handling
Generic Frame Diverter
Added support for frame diversion when bridging
IPfw
Fix incorrect allocation flag
IPv4 proc
Fixed an off by one error
IPv6
Fixed memory handling bugs
IPv6
Fixed IPV6_TLV_ROUTERALERT, in6_addr, ip_decrease_ttl and mior
bits
IPv6 proc
Fixed an off by one error
Masquerading
Allow binding to all multicast ports when masquerading
Masquerading
Update the irc masquerade to handle newer irc clients that
support the DCC resume feature.
NAT
Fix obscure forwarding table bug with NAT
Port sysctl
Check range being set so that root cannot cause a crash by
accidentally misconfiguring
Standards
Return correct error code for an uknown socket family
SunRPC
Fix a problem handling null credentials in kernel
TCP
Fix a problem with round trip estimation on very long fast
links
TCP Options
Tidy up parsing and building. Fix a failure to honour
sk->allocation.
Transparent Proxy
Fix a problem with the socket lookup in one case
Unix domain sockets
Backport 2.4test garbage collector speedups
X.25
Backport 2.4test fixes
SCSI Updates
Advansys
Driver updated
Adaptec 1542
Fix memory scribbles when handling resets
AMI Megaraid
This driver has been updated
ATP870U
This driver has been updated and now supports more cards.
Emu10K driver
Added support for the EMU-APS
GDTH
This driver has been updated
IBM MCA SCSI
This driver has been updated
IBM Serveraid
Updated to version 4.20
Lun Scanning
Ignore LUNs that are reported as connectable but not currently
connected.
Lun Scanning
Added the Digital HSG80 and the Compaq 'logical volume'
identifiers to the multilun list
Removable Devices
Added support for opening empty removable devices
SCSI generic
Fix unload oops
Segate Driver
Remove broke bios parameter guessing code from the seagate
driver
Symbios/NCR driver
This has been updated to the latest official release
Tape driver
Updated to fix several bugs. Fix filemark status test. Fix
spacing to beginning
From: "Alan Cox" <[email protected]>
> Linux 2.2.18 Release Notes
patch-2.2.18.tar.gz size=2.9MBytes
from my scanning of the kernel archives, this is the *all time*
largest kernel patch (including 2.3/2.4 patches).
Go team :-)
Paul Fulghum
[Paul Fulghum]
> from my scanning of the kernel archives, this is the *all time*
> largest kernel patch (including 2.3/2.4 patches).
And thus it follows that 2.2.18 is the least buggy kernel ever, since
it has gotten the most bug fixes.
Right? (:
Peter
> ... added basic support for the Pentium IV. Unfortunately Intel
chose to
> ignore all precedent in model numbering via cpuid and report a
> family of '15'. This sudden jump broke assumptions in the
> kernel tree without any warning. Intel have failed to provide
> good reasons for their change. We have chosen to continue to
> report the Pentium IV as a '686' class processor. The full
> family data is provided via cpuinfo.
>
> In addition the early Pentium IV chips appear to have some
> problems. You should be using stepping 7 or higher processors
> with the latest shipping microcode update if you wish to run
> Linux on a Pentium IV processor.
>
> + Intel Pentium IV support
How is the Pentium IV more advanced than the Pentium III, other than speed?
Why would LInux care about a 1500 MHz clock or 400 MHz bus speed?
Just treat the PIV as a faster PIII.
-- Ted
[AC]
> > ... added basic support for the Pentium IV.
[Android]
> How is the Pentium IV more advanced than the Pentium III, other than
> speed? Why would LInux care about a 1500 MHz clock or 400 MHz bus
> speed? Just treat the PIV as a faster PIII.
It all sounds so simple, right? Several small things to worry about:
- CPU identification and categorization. The P4 reports itself as CPU
family 15 rather than family 6 like PPro, PII and PIII. Thus, Linux
code that tests for certain features by saying if(cpufamily==6)
didn't notice that the P4 would work. Also there was at least one
format string like sprintf(buf, "i%d86", cpufamily) which is supposed
to print "i686" but on the P4 would print "i1586"....
- metrics -- L1 cacheline size is the important one: you align array
elements to this size when you want a per-cpu array, so that multiple
CPUs do not share a cacheline for accessing their "own" structure.
Proper alignment avoids "cacheline ping-pong", as it's called,
whenever two CPUs need to access "their" element of the same array at
the same time.
- as to the MHz -- there was a wraparound bug if your CPU is faster
than 2 GHz (highest signed 32-bit int), which isn't a problem today
but will be tomorrow.
- Tigran's microcode driver -- some small changes were made so that it
could be used for P4's.
- maybe they'll need to patch lm_sensors to accommodate the increased
temperature range since the P4 runs so hot. (: (:
Peter
Peter Samuelson wrote:
>
> [AC]
> > > ... added basic support for the Pentium IV.
> [Android]
> > How is the Pentium IV more advanced than the Pentium III, other than
> > speed? Why would LInux care about a 1500 MHz clock or 400 MHz bus
> > speed? Just treat the PIV as a faster PIII.
>
> It all sounds so simple, right? Several small things to worry about:
> - maybe they'll need to patch lm_sensors to accommodate the increased
> temperature range since the P4 runs so hot. (: (:
Did someone go through the kernel and fix spin/wait's & spin/halt's
with new magic instructions? I remember Intel itself was working on
it, but I do not know if it was 2.4 only or 2.2 + 2.4.
On Mon, Dec 11, 2000 at 09:30:37PM -0600, Paul Fulghum wrote:
> From: "Alan Cox" <[email protected]>
> > Linux 2.2.18 Release Notes
>
> patch-2.2.18.tar.gz size=2.9MBytes
Ehrm?! A tar'ed-up patch?! You didn't mean something like:
3049653 Dec 11 00:45 patch-2.2.18.gz
now did you?! :^)
> from my scanning of the kernel archives, this is the *all time*
> largest kernel patch (including 2.3/2.4 patches).
Well, this one does contain sync of two platforms (m68k & arm) + the
USB-backport and several other biggies, so it's not too strange.
/David Weinehall
_ _
// David Weinehall <[email protected]> /> Northern lights wander \\
// Project MCA Linux hacker // Dance across the winter sky //
\> http://www.acc.umu.se/~tao/ </ Full colour fire </
> And thus it follows that 2.2.18 is the least buggy kernel ever, since
> it has gotten the most bug fixes.
>
> Right? (:
Hopefully not.
Remove
arch/m68k
arch/arm
include/asm-m68k
include/asm-arm
drivers/usb
drivers/char/agp
drivers/char/drm
..
and count the actual changes to existing code
> - maybe they'll need to patch lm_sensors to accommodate the increased
> temperature range since the P4 runs so hot. (: (:
Also there is a new 'rep nop' instruction that means 'short pause' and is
used in spinlocks.
Alan
On 2000-12-12T12:26:26,
Alan Cox <[email protected]> said:
> > And thus it follows that 2.2.18 is the least buggy kernel ever, since
> > it has gotten the most bug fixes.
> >
> > Right? (:
> Hopefully not.
I _do_ hope that 2.2.18 is the least buggy kernel ever... Why do you hope
otherwise? ;-)
Sincerely,
Lars Marowsky-Br?e <[email protected]>
--
Perfection is our goal, excellence will be tolerated. -- J. Yahl
> - metrics -- L1 cacheline size is the important one: you align array
> elements to this size when you want a per-cpu array, so that multiple
> CPUs do not share a cacheline for accessing their "own" structure.
> Proper alignment avoids "cacheline ping-pong", as it's called,
> whenever two CPUs need to access "their" element of the same array at
> the same time.
Anyone can give me some pointers on how this is done runtime ? (name of
the .c file is fine).
I'm still looking at the basic stuff, but haven't bumped into this one
yet...
Igmar
> > - metrics -- L1 cacheline size is the important one: you align array
...
> Anyone can give me some pointers on how this is done runtime ? (name of
> the .c file is fine).
kernel/sched.c:aligned_data. as mentioned elsewhere,
the correct alignment is not necessarily L1 linesize.