This is the ChangeLog for the Linux fully preemptible kernel patch

This is supported by MontaVista and maintained by Robert Love

Preempt-kernel is merged into 2.5 as of 2.5.4-pre6

SMP support is stable.

Supported arches on 2.4: ARM, i386, and SH
Supported arches on 2.5: ARM, i386, SPARC64, x86-64


20020301:

- fix the preempt_count for non-CPU0 idle       (George Anzinger)
  threads

20020210:

- (2.5 only) merge i386 codebase into official	(me, Linus)
- (2.5 only) remove /proc/<pid>/stat code	(me)

20020209:

- (2.5 only) cleanup entry.S			(Linus)
- (2.5 only) remove dependencies on sched.h	(Linus)
- (2.5 only) use current_thread_info()-> not	(Linus)
  current->thread_info->

20020208:

- (2.5 only) use new thread_info struct not the	(me)
  task_struct for preempt_count

20020207:

- barrier in preempt_schedule to enforce	(George Anzinger)
  proper ordering to ensure no missed
  preemptions

20020205:

- fix merge errors in 2.4 non-O(1) patch	(me)	

20020128:

- remove BUG statements				(me)
- (O1 only) remove fork race fix as it was	(me)
  merged into Ingo's O(1)

20020120:

- rename preempt_is_disabled =>			(me)
  preempt_get_count
- remove preempt_prefetch, it does more harm	(Ingo Molnar)
  than good
- optimize preempt_enable			(George Anzinger, Ingo Molnar)
- (O1 only) better locking in sched.c		(me)
- (O1 only) fix mismatched locking with SMP	(me)
  migration
- (O1 only) fix race on fork			(Ingo Molnar)
- use BUG_ON instead of BUG where applicable	(me)
  	o for 2.4, add BUG_ON macro
- update Documentation/preempt_locking.txt	(me)
- misc clean up					(me)

20020113:

- (O1 only) more preempt-safe work for new	(me)
  scheduling functions
- mark PREEMPT_ACTIVE jump in schedule		(me)
  unlikely
- optimize preempt_schedule:			(George Anzinger, me)
	o while => do/while
	o no need to add/sub 1 to preempt_count
	o no need for barrier since function
          should act as a barrier on call and
          exit.
- change value of PREEMPT_ACTIVE		(me)
  (0x40000000=>0x400000)
- (2.5 only) report preempt_count in		(me)
  /proc/pid/stat
- more comments					(me)

20020111:

- (2.5 only) make preempt-kernel and		(George Anzinger, me)
  Ingo's O(1) scheduler play nicely
- (2.5 only) more include additions		(me)
- various cleanups and such			(me)

20020106:

- (2.5 only) include linux/sched.h in		(me)
  fs/char_dev.c
- SH arch: fix certain code path not hitting	(Jeremy Siegel)
  preempt_enable

20011221:

- stop locking task to CPU across		(me)
  preemptions. 

20011213:

- back out console race fix as it was merged	(me)
  with mainline

20011209:

- merge SH arch support				(Jeremy Siegel)

20011122:

- tiny cleanup					(me)

20011112:

- mark preempt_enable conditional unlikely	(me)
- merge ARM arch support			(Nico Pitre)

20011102:

- (ac tree only) back out tty race fix as it	(me)
  was merged with mainline

20011030:

- convert to non-atomic model:			(George Anzinger)
	o preempt_count is now an int
	o memory validating is done via barrier()
	o this removes many of the macros
- rename preempt_is_disable =>			(me)
  preempt_is_disabled
- remove some extraneous ifdefs			(me)
- compile preempt_count into the task_struct	(me)
  regardless of whether CONFIG_PREEMPT is set.
  This way the offsets do not change depending
  on whether preemption is set.
- rediff all the patches off one codebase to	(me)
  insure no ambiguities,
- update tty race fix				(me)

20011021:

- add a Documentation/preempt-locking.txt	(me)
- merge fix to protect tty race on console	(Andrew Morton)
  close.  this isn't our problem but preempt
  induces it.

20011020:

- start pushing explicit preempt disable	(me)
  statements around per-CPU data
- fix highmem oops: we were disabling		(me)
  preemption too late in highmem.h::kmap_atomic
- if HIGHMEM_DEBUG was set, preemption could	(me)
  disable itself permantently by never hitting
  preempt_enable.
 
20011017:

- make int old_cpus_allowed in			(me)
  lock_to_this_cpu an unsigned long

20011011:

- remove pgalloc.h preemption disable		(me)
  statements
- fix compile on SMP in some configurations	(me)

20011005:

- rearrange sched.c so we can patch cleanly	(me)
  against rtsched (or vice versa)

20011004:

- prevent the case of preemption causing a	(George Anzinger)
  CPU switch by locking tasks to the current
  CPU in preempt_schedule
- revert to _raw_spin_xxx from _spin_xxx	(Nigel Gamble)
  since PPC uses that convention.

20011003:

- push pcmcia-cs tools fix into their next	(me, David Hinds)
  release

20011001:
- fix spin_lock_prefetch optimization causing	(me)
  compile warnings

20010928:

- have spin_lock_prefetch prefetch the		(George Anzinger)
  preempt_count, too
- some more ifdef and namespace cleanups	(me)

20010925:

- new "preemption bit": move from status to	(George Anzinger)
  the preempt_count
- the above removes the risk of race in		(me)
  ptrace and SIGSTOP signal handling, so we
  can back out those fixes.
- rearrange our namespace.  most notably,	(me)
  ctx_sw_on/off => preempt_enable/disable.
- cleanup some defines				(me)

20010923:

- fix strace race: make ptrace preempt safe	(George Anzinger)
- fix job control race: make SIGSTOP signal	(me)
  preempt safe
- include sched.h in fs/adfs/map		(me)

20010919:

- push XFS fix into XFS CVS			(Keith Owens)

20010916:

- fix instability with Athlon-optimized		(me)
  systems: make 3DNow!-based instructions
  preempt-safe 

20010913:

- fix crash with highmem enabled: prevent	(Manfred Spraul)
  preemption across kmap_atomic and
  kunmap_atomic

20010909:

- add include for sched.h to			(me)
  drivers/ieee1394/csr.c

20010906:

- fix newline/format buglet			(me)

20010829:

- new rule to enable CONFIG_HAVE_DEC_LOCK as	(me)
  needed to fix compile error

20010826:

- initial release from Nigel Gamble's 2.4.7-2	(me)
  release, synced to 2.4.8-ac12 and 2.4.9.
