2000-12-12 02:46:38

by Alan

[permalink] [raw]
Subject: Linux 2.2.18 release notes

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


2000-12-12 04:07:17

by Paul Fulghum

[permalink] [raw]
Subject: Re: Linux 2.2.18 release notes

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

2000-12-12 04:18:47

by Peter Samuelson

[permalink] [raw]
Subject: Re: Linux 2.2.18 release notes


[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

2000-12-12 05:55:45

by Android

[permalink] [raw]
Subject: Re: Linux 2.2.18 release notes

> ... 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

2000-12-12 06:10:53

by Peter Samuelson

[permalink] [raw]
Subject: Re: Linux 2.2.18 release notes

[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

2000-12-12 11:02:05

by Bruce Korb

[permalink] [raw]
Subject: Re: Linux 2.2.18 release notes

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.

2000-12-12 12:02:08

by David Weinehall

[permalink] [raw]
Subject: Re: Linux 2.2.18 release notes

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 </

2000-12-12 12:55:31

by Alan

[permalink] [raw]
Subject: Re: Linux 2.2.18 release notes

> 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

2000-12-12 12:57:21

by Alan

[permalink] [raw]
Subject: Re: Linux 2.2.18 release notes

> - 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

2000-12-12 12:59:31

by Lars Marowsky-Bree

[permalink] [raw]
Subject: Re: Linux 2.2.18 release notes

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

2000-12-13 00:48:26

by Igmar Palsenberg

[permalink] [raw]
Subject: Re: Linux 2.2.18 release notes


> - 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

2000-12-13 01:59:01

by Mark Hahn

[permalink] [raw]
Subject: Re: Linux 2.2.18 release notes

> > - 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.