This announces the availability of version 1.2.13pl7 of Linux/68k. The source and a precompiled kernel are in /pub/Linux/LOCAL/680x0 on ftp.uni-erlangen.de and its mirrors. Changes against the last version: - Starting with the next patchlevel (pl8), the default terminal type will be "linux" instead of "console", as in 1.3. To avoid trouble with "unknown terminal type" errors, please add an entry for "linux" in your /etc/termcap. The kernel also prints a reminder before it starts init. - /dev/z2ram has the official major 37 (block) now, minors are for our free use. So we could also implement the splitting of the memory area over several minors... - Also joysticks have a official major now, it's 15 (char). Minors 0...127 are for analog joysticks (paddles, not yet implemented), and 128...255 for digital joysticks. For the Atari, a driver for two digital joysticks already exists. - If a keyboard overrun happens on the Atari, a key currently being repeated is stopped now. This avoids at least this annoying effect of such overruns. (myself) - The kernel has now a "debug=" command line option, that directs it to print certain kernel messages (in general register and stack dumps and panics) to the given device. Possible devices are "ser1", "ser2", "ser", and "par" for the Atari, "ser", and "par" for the Amiga. For more details see Documentation/m68k/kernel-options.txt. (myself, Amiga memory logging by Geert.Uytterhoeven@cs.kuleuven.ac.be) - Atari SCSI driver changes: o Improvement for tagged queuing: When the driver expected a tag message on reconnect, it didn't correctly acknowledge the previous message byte, which some targets didn't like. o Toshiba CD-ROMs need ten times the standard delay also after a SCSI reset... In case the longer delay for Toshibas is selected in the kernel config, the reset delay is extended to 2.5 sec. (reported by drpiper@cix.compulink.co.uk) o Fixed a silly typo in falcon_classify_command (READ instead of READ_6), which caused 512-byte reads to be done by PIO instead of DMA. o Some "unexpected interrupt" messages with MR=0x1 should be gone. The reason was that interrupts were disabled at the start of an arbitration, so a reselection from a target didn't come through correctly. o Some cosmetical changes in the source, and removed some more leftovers from the driver's PC days... (all myself) - When preparing a message for kerneld, it was possible that kmalloc() was called from an interrupt without GFP_ATOMIC. (schwab@issan.informatik.uni-dortmund.de) - Fixed serial restart problems for the MFC III. The Amiga builtin port didn't have that problems. (dorchain@cscip.uni-sb.de) - Fixed serial restart problems and an "always-sending-the-same-char" problem with the GVP IO-Extender (jds@kom.auc.dk) - Amiga boot procedure changes: o Extracted the code that boots Linux from amiga/bootstrap.[ch] and put it into linuxboot.[ch]. The latter is now also used by Amiga-lilo to make it easier to maintain the boot code (idea by J\"org Mayer). o Rewritten the Amiga model detection code. Now the following models should be detected correctly: 600, 1200, 3000+, 4000, 4000T, CDTV, CD32, Draco. The following are identified as `Amiga 2000'. This doesn't hurt because their hardware is very similar: 500, 500PLUS, 1000, 2000, 2500. And the 3000T is also identified as Amiga 3000. o Amiboot now has an extra option `-t'. It's used to override the detected Amiga model. It takes one numeric argument: the model number as defined in . o Amiboot now knows how to reset an Ariadne board (both Ethernet and the parallel ports). This allows you to boot Linux/m68k while the Ariadne is initialized. o Now arch/m68k/amiga/config.c fills in a `feature vector' (cfr. Atari) for the available hardware, based on the model identification (idea by J\'anos Farkas). The results of this are dumped on the console on boot up (cfr. Atari) and are available through /proc/hardware too. All drivers now use this `feature vector'. o Addition of some useful macros to : MACH_IS_AMIGA and MACH_IS_ATARI are shorthand replacements for the old "boot_info.machtype == MACH_xxx" constructs. o Amiga-lilo now uses the common `linuxboot' code, which is part of the kernel source tree. You also can override the Chip RAM size and the Fast RAM chunks using the `chipram' and `fastram' keywords (cfr. the amiboot memory file). This means you can now use non-AutoConfig memory if you boot using lilo. Furthermore, you can override the Amiga model detection using the `model' keyword. All that changes make previous versions of Amiga bootstrap and Amiga Lilo incompatible with the pl7 kernel. Please use the new version 3.0 or 0.6, resp. (all Geert.Uytterhoeven@cs.kuleuven.ac.be) - Made the stack dump and call trace in die_if_kernel() more senseful. The exception frame is now printed in decoded form and omitted from the stack dump and call trace. Similar output is now generated on bad kernel traps, too. (myself) - Total rewrite of the Atari interrupt handling. Brief description: All interrupts are now in one of this three classes, which are different in respect to which other interrupts are allowed during handling them: - SLOW: all other ints allowed, but not this one - PRIORITIZED: ints of higher IPL allowed - FAST: no other ints allowed The classes 'SLOW' and 'FAST' are more or less the same as in Linux/Intel. 'PRIO' is new and intended for ints where 'SLOW' can't be implemented (Atari: non-MFP ints). There are also some new functions for accessing the MFP interrupt registers (atari_{en,dis}able_irq, atari_turn{on,off}_irq, atari_clear_pending_irq, ...). These expand to only one assembler statement if the irq number is constant. So better use atari_{en,dis}able_irq() in Atari specific code than the general {en,dis}able_irq(). This new structure required me also to re-think about races in all the drivers... uff! A few points worth noting: o I had to hack the IDE driver, because it did lots of sti()s. This is strictly forbidden now, for not to reenter interrupted PRIO ints (e.g. SCC). My solution: a new macro STI(), which does sti() only on an Atari, and if intr_count == 0. No fear, other interrupts are already enabled, since the handler is SLOW. Hope that works... o For the same reason as mentioned above, the SCSI driver now doesn't call sti() anymore from its isr. This isn't necessary, since the int is SLOW already. (Ok, it's registered as PRIO on a TT, but the handler mimics SLOW after having clear the pending flag for the SCSI-DMA irq.) o The SCC interrupts (level 5) use class PRIO and don't disable interrupts themselves anymore. This should be sufficient, as no other SCC interrupt may slip in. And interrupting a SCC register access sequence shouldn't hurt (as long, of course, as no other SCC access is done in there). o The MFP serial interrupts use class FAST, since they're really fast, and must be protected against being interrupted by another MFP int from the same port. For more information see also comments in arch/m68k/atari/ataints.c and in the appropriate drivers. (myself) - Fixed an initialization bug in the Van Jacobsen header compression (used by SLIP and PPP). (Thorsten Floeck found the hint on the news) - The Amiga and Atari mice can now be build as modules. Also, both mice now allow multiple opens (no "/dev/mouse: device or resource busy" anymore when X starts up :-) (schwab@issan.informatik.uni-dortmund.de) - The Ethernet HW address for the Ariadne is now 00:60:30:xx:xx:xx instead of 00:80:10:Fx:xx:xx, since Villagetronic finally registered their own manufacturer ID. (Geert.Uytterhoeven@cs.kuleuven.ac.be, Frank.Neumann@arbi.informatik.uni-oldenburg.de) - Plugged in the new wd33c93 driver (version 1.17), which is a complete replacement for the old driver with many new features. See drivers/scsi/wd33c93.readme for details. (jshiffle@netcom.com) - If the size of a VC is changed, SIGWINCH is set to the tty's process group. Also update the attributes on a video mode change. (guenther@pool.informatik.rwth-aachen.de) - Speed up writes to consoles if OPOST is active by using fbcon_putcs. (guenther@pool.informatik.rwth-aachen.de) - Misc patches by schwab@issan.informatik.uni-dortmund.de: Avoid a race in the serial driver, avoid requesting a binfmt module for shell scripts, allow CDROMs with more than 700MB, allow opens of Unix domain sockets and FIFOs on read-only filesystems, plug a security hole with writing set[ug]id files. - The Amiga IDE "unexpected interrupt" phenomenon has been fixed by implementing the {en,dis}able_irq() functions also for the Amiga. This has been doubly sewed by setting the int handler before the actual command is given, as 1.3.68 does now also. (Geert.Uytterhoeven@cs.kuleuven.ac.be) - Amiga bootstrap: Reset Zorro boards after interrupts have been disabled, to avoid problems with CyberGrafX running. (Frank.Neumann@arbi.informatik.uni-oldenburg.de) - The Amiga floppy driver now really does some read retries, and first steps have been made toward multiple disk access working again. (dorchain@cscip.uni-sb.de) - Removed misc warnings in hydra.c, affs/inode.c and proc/array.c (myself) - There were serious errors in the XOFF/XON handling. Seems that noone ever used it :-) In case the TX was idle, the XOFF wasn't sent out. But RTS was set/reset, CRTSCTS enabled or not. While I fixed that, I also made some minor cleanups in serial.c and introduced some more convenience inline functions in serial.h that ease implementation of interrupt handlers. Hope I didn't break anything in the Amiga drivers... (myself) - Fixed a bug (or, better: two) in console.c that caused (more or less harmless) "kfree of non-kmalloc memory" messages and later kernel bus errors. It happened if there wasn't enough memory for the screen buffer when allocating a VC: the wrong vc_data structure was freed, but the pointer to it left intact. So the next open try didn't allocate a new structure+screen memory, and things went haywire... (myself) - Several '040 motherboards seem to dislike read-modify-write cycles (producing spurious crashes), which are produced by the TAS and CAS instructions (we have used them for elegant implementations of the xchg_u*() functions). This became worse by a '040 bug(let) of prolonging the RMW cycles if the affected data were dirty in the cache. There were two possible solutions: pushing the cache line manually before a CAS, or replacing it by an interrupt-protected simple variable swapping. The first is more elegant, but needs the phys. address and thus needs more time than a cli() kludge :-( With the modified xchg_u*() functions, Linux/68k is quite more stable on '040 machines. (jds@kom.auc.dk, in discussion with Geert, Andreas, Thorsten Floeck and me.) - Fixed a "bug" in the Atari SCC driver that caused spurious loss of received characters. The trick is that the interrupt pending bit is more reliable than the char available bit in the status register. (atwareck@novice.uwaterloo.ca) - I started a new file Documentation/m68k/differences.txt describing differences between Linux/68k and other Linuxes. Volunteers are welcome to add more infos to this file. (myself) - Updated Documentation/m68k/kernel-options.txt in some respects. (myself) Current Amiga bootstrap version: 3.0 (changed) Current Amiga-Lilo version : 0.6 (changed) Current Atari bootstrap version: 1.6 The precompiled kernel contains both, Amiga and Atari support, so it is very big. You probably want to compile your own kernel tailored to your personal needs. Roman