This announces the availability of version 1.2.13pl4 of Linux/68k. The source and a precompiled kernel are in /pub/linux/680x0 on tsx-11.mit.edu. BEFORE RUNNING THIS KERNEL, CAREFULLY READ EVERY PART OF THIS ANNOUNCEMENT, AND PLAY CLOSE ATTENTION TO THE *EXT2FS* SECTION: ****************************************************************** *** *** *** The bitmap order of ext2 filesystems has changed again!!! *** *** *** ****************************************************************** This kernel *cannot* be used with existing ext2fs filesystems from 0.9 or 1.2.13 up to pl3 without "fixing" them. See *EXT2FS* below. Changes against the last version: - Integrated patches 0.9.12 -> 0.9.13 (see announcement of 0.9.13) This also includes the driver for the GVP IO-Extender board by jds@kom.auc.dk and proper permissions for AFFS root dirs. (Tnx to schwab@issan.informatik.uni-dortmund.de for the adaption to 1.2) - I did some minor changes to Makefiles for cross compiling, most in arch/m68k/Makefile (setup), but also in net/Makefiles (it referenced ar and ranlib directly, not by the make variables) (myself) - Integrated the kswap patches for better swapping performance (these are really for 1.3 versions, but work well in 1.2 and they're worth it if there's a lot of swapping...) (Tnx to schwab@issan.informatik.uni-dortmund.de) - Updated the Zorro Autoconfig stuff: moved all Zorro specific things to zorro.h. Now there's also an API for the Zorro devices (cfr. FindConfigDev()) which should make it easier for device driver writers to find their boards. Now there are 32 parts for every board, which can be marked configured independently, to support boards with more than one part on it. Also added some new boards and fixed IDs for A590 and A2091. (Geert.Uytterhoeven@cs.kuleuven.ac.be) - New: Driver for both, parallel and serial parts of the Multiface III Amiga board. On the serial side, only one port is fully complete. See source for a describtion. (dorchain@mpi-sb.mpg.de) - Got rid of all the NTSC/PAL detections and the NTSC/PAL baud divisor tables. Now everything is derived from the E-Clock directly. Also added amiga_eclock (#define for the E-Clock value in the bootinfo: 700 kHz), amiga_colorclock (3.5 MHz) and amiga_masterclock (28 MHz), which are all derived from the E-Clock value. (Geert.Uytterhoeven@cs.kuleuven.ac.be) - Updated CREDITS.m68k (jmayer@informatik.uni-kl.de, Geert.Uytterhoeven@cs.kuleuven.ac.be and myself) - Updated Documentation/m68k/kernel-options.txt and copied some interesting files from the PC-Linux Documentation directory (myself) - Changed the bitmap order in ext2 filesystems again. There's one big advantage in this: ext2 filesystems become totally portable by this, i.e. every ext2 filesystem can be read and written on any Linux platform. Ok, the m68k kernel is still missing the byte swapping for multi-byte data, but this is a secondary problem. The more important is, that there's a uniform bitmap order now across all architectures. This common basis has been developed in a discussion with Linux Torvalds, Ted Ts'o, David Miller (Sparc port), Andreas Schwab and me. The internals: Now the ext2, minix, and kernel internal bitmap bit orders may be different. For a little endian machine, all are the same (little endian, of course :-). For the m68k as a big endian machine, the ext2 bitmap operations implement the same order as little endian machines do. By this, the ext2 bitmaps are portable. (And there are no performance tradeoffs by this compared to older 1.2.13 versions.) The kernel internal bit operations still use big endian order, to make set_bit() compatible with (1<32MB bug". (schwab@issan.informatik.uni-dortmund.de) - Major revision of the Atari DMA sound driver. In brief: New kernel option "atasound=" (see Documentation/m68k-kernel-options.txt); can now play samples at almost all frequencies; takes more care when expanding and if only small chunks of data are written; AFMT_QUERY implemented and supports negative arguments to setSpeed and setStereo to just report the current settings; fsync() implemented; settings for /dev/dsp are now correctly remembered over device open()s and close()s (itschere@TechFak.Uni-Bielefeld.DE, 1.2 adaptions by schwab@issan.informatik.uni-dortmund.de) - Fixed the bootstrap support for Magnum and BlowUp FX RAM (both cookie structures were buggy :-( ) The new Atari bootstrap has version 1.4. (myself together with the original authors) - New: Driver for Lance-based Ethernet boards (RieblCard on all bus systems, PAM VME board (untested yet)) for the Atari. It works easily like any Ethernet driver ("ifconfig eth0 ...") and you don't need any special preparations. One exception from this is the old RieblCard without a battery: For this, you must manually set the Ethernet address by the command ifconfig eth0 hw ether 00:00:36:04:xx:xx *before* the board is opened, i.e. before the usual ifconfig and other network setup stuff. (myself; tnx to Gunther Kemeny for supplying the board!) - New: Driver for the Atari SLM laser printer. This currently works with a statically allocated buffer of 1 MB, so configure this driver only if you need it (it's also omitted in the precompiled kernels on tsx-11). I also found a way to avoid the timing problems we discussed earlier, this point is absolutely uncritical. The SLM uses major 28 (like ACSI), but as character device. The minor is the number of the printer. So you need the following devices: mknod /dev/slm0 c 28 0 mknod /dev/slm1 c 28 1 ... Reading the printer device (e.g. "cat /dev/slm0") gives a status and mode report (similar to /proc files). On writing, the printer expects a raw page bitmap of the current page size (which must be queried before!). I've put my current printer spooling system onto tsx-11.mit.edu in bin/lpd-SLM.tar.gz as an example. It also includes a filter for preparing the page data from PostScript, and a tool for querying/setting printer modes (not all implemented in the kernel yet). The SLM driver is not really finished yet, but it works. What's still needed: dynamic allocation of the printer buffer (to avoid wasting 1 MB most of the time); more ioctls for getting/setting printer modes, but I still need a bit more infos about the MODE SENSE data of the SLM. (myself) - Corrected the frequencies of the Atari SCC: RTxC is really 3.672 MHz (not 3.6864 MHz), and PCLK is 8.0539763 MHz (instead of exact 8). This also caused some changes in the baud tables, specially for low rates. (drpiper@cix.compulink.co.uk) - Fixed a bug in the CTS handling of the serial drivers, when the tty is already hung up. (chrnadig@iiic.ethz.ch) - Handling of self-built-in CapsLock LEDs on the Atari (Gerald_Haese@hro.maus.de) - Changed handling of FDGETPRM in both (Amiga&Atari) floppy drivers to be compatible with PC Linux; this is necessary for the new e2fsprogs. The fdformat utility must be recompiled due to this! (schwab@issan.informatik.uni-dortmund.de) - If ROOT_DEV is a floppy and the kernel sees a "ramdisk=x" parameter, the ramdisk contents are read from another disk (like PC Linux does). This applies only if no ramdisk is specified by by bootstrap. (schwab@issan.informatik.uni-dortmund.de) - One more update_screen() was needed in vc_screen.c. (schwab@issan.informatik.uni-dortmund.de) - Some more functions defined as inline, like in 1.3.42 (schwab@issan.informatik.uni-dortmund.de) - I found the reason why the kernel sometimes died with "data write fault at 0x800000xx": The zorro_find() function didn't test for machtype == AMIGA, and if it was Atari, it interpreted some uninitialized part of the bootinfo as the autoconf structures... and eventually returned that there is an Amiga board of some type :-) (myself) - Removed the test in the Atari SCSI driver for "reselection after won arbitration?". It caused too much trouble... (myself) - Atari TT-High is now white on black again by default. The reason that didn't work was the missing new 'clear_inv' parameter to reset_terminal(). (myself) - I've ported the 'make xconfig' stuff from newer 1.3 kernel versions, that allow kernel configuration under X11 (you need Tcl/Tk for this). It worked nearly out-of-the-box, except one test in tkgen.c (look for "roman"). I've also adapted the Configure script and wrote some brief help texts for m68k. But still more work needs to be done on this... Any volunteers? (myself) - I implemented /proc/interrupts by adding a m68k-specific get_irq_list() function, that delegates part of its work to a machine specific function. This also requires a device name given in each call to add_isr(). I did this and the mach_get_irq_list for the Amiga part, too, but there may be improvements necessary... (myself) - Slight changes to the bitmap operations to give gcc more chances to optimize. (schwab@issan.informatik.uni-dortmund.de) - Renamed wait_for_IRQ() and update_timeout() to acsi_wait_for_IRQ() and scsi_update_timeout(), resp., to avoid the possibility of name clashes, since these functions aren't static anymore. (schwab@issan.informatik.uni-dortmund.de) - New IDE driver for both, Amiga and Atari. It is derived from the 1.2 PC-Linux IDE driver and should perform better than the old driver. It also has all the code to support ATAPI CD-ROMs, but Torsten has to check this for m68k first. Maybe that's ready in the next release. (t_ebelin@informatik.uni-kl.de) - BOOTP/TFTP support in the Atari bootstrap for remote booting over Ethernet. Since not many people are likely to use that, this feature must be enabled manually in arch/m68k/boot/Makefile by defining USE_BOOTP. Also the low-level Ethernet drivers have to configured by hand, but for now there's only one... (the Lance driver for RieblCard and PAM-VME). BOOTP/TFTP works by requesting an IP address and a kernel image name from a boot server, and then downloading the kernel from there. (myself) - On the Atari, the timer interrupt function now runs with all ints except the timer int enabled. This is done by a wrapper function that masks the timer int in the MFP and then does a sti(). Similar should be possible for the Amiga. (myself) - Some minor cleanups in head.S. (myself) - In get_kpointer_table(), one pointer too much was reserved. head.S only uses the first three slots. (myself) - Now SCSI on the Medusa should really work! The reason was that, on the Medusa, the NCR5380 "read overruns" (described by Drew Eckhardt for the PC) are reality, while they never occured on TTs and we had already thrown away the code... After re-writing the overrun handling code, also scatter-gather works now. But ---again--- one problem is left: The SCSI-DMA rest data register seems to behave different on the Medusa, so currently transfers that aren't a multiple of 4 have to be avoided. We're investigating on this... (floeck@wctc6.chemie.uni-wuppertal.de and me, also with some help from Freddi Aschwanden) - Amiga and Atari consoles now use the same (IBM-encoded) fonts, the ones from the Atari console. An IBM-Font is necessary for the block graphics of the VT100 graphics mode. The font files itself have been moved to arch/m68k/fonts. (dorchain@mpi-sb.mpg.de and me) - When formatting HD diks on an Atari, the gap before the first sector was too small. (schwab@issan.informatik.uni-dortmund.de) - There is a problem that forced me to switch back to hardware EOI mode on the Atari again: Interrupts from VME boards (e.g. a RieblCard :-) can be level-triggered instead of edge-triggered (like those from MFP and SCC). This implies that the IPL must not be lowered for them, else an "endless interrupt loop" occurs (until the int condition is turned off in the hardware, but the high-level int code cannot handle this). Andreas Schab and I already made our thoughts about that problem, but a bitfield for distinguishing both types of interrupts also didn't cure the problem :-( Again, a higher level interrupt can arrive before the int is turned off, and then lower the IPL itself (for instance, SCSI, or the timer int now). So, we'll stick with the hardware EOI mode for now, which avoids all the trouble by not lowering the IPL. - Together with the above change, the symbol USE_SOFTWARE_EOI in arch/m68k/atari/ataint.s has been renamed to ATARI_USE_SOFTWARE_EOI and was made global in atariints.h. The SCC driver needs this to know whether it should reset the SCC's highest IUS bit itself, or let atari_process_int() do this. Other drivers may need it as well in future. (myself) Known problems that aren't fixed yet: - There is a strange bug in the memory management, that may cause the machine to crash if you have between 24 MB (inclusive) and 32 MB (exclusive) of RAM. (May happen only on '040s) - On the Atari Medusa, the contents of a ramdisk may be trashed by the bootstrap if you have configured some other amount than exactly 8 MB of ST-RAM. If this happens: use 8 MB ST-RAM or throw out some accessories/auto-folder proggies. The precompiled kernel contains both, Amiga and Atari support, so it is very big. You propably want to compile your own kernel tailored to your personal needs. Note also that there have been some problems reported that such big kernels cannot be booted with Amiga Lilo. There are also several new/modified utility packages on tsx-11: - v1.2/filesys-for-pl4.gz: Ramdisk (ext2) with new e2fsprogs for pl4; this ramdisk is only intended for restucturing filesystems, not for a "rescue disk" - bin/atafdformat.tar.gz: Updates for new floppy size structures - bin/SLMtools.tar.gz: A special filter for the SLM printer to cut off the 75 pixel border, setSLM for setting printer modes, and an example spooling system *EXT2FS*: The bit order in the inode and block bitmaps of an ext2 filesystem has changed again (compared to 0.9.x versions of the kernel, or 1.2.13 versions up to pl3; see also the ANNOUNCE-* files for these). With this new change, we prepare for ext2fs portability over all platforms. In the near future, you'll be able to read an ext2 filesystem written on any Linux/* machine on any other one. This should be worth the trouble of changing the filesystem structure again :-) But it should be the last time... The effect of this change is that the inode and block bitmaps of existing ext2fs filesystems *cannot* be used by this 1.2.13pl4 kernel. If you want to use existing filesystems, you must boot the "filesys-for-pl4" ramdisk filesystem (in tsx-11's v1.2 directory), and run the /sbin/e2fsck program on every ext2fs filesystem you intend to use with the 1.2.13pl4 kernel. Note that after running the new e2fsck on these filesystems, they cannot be used by 0.9.x or 1.2.13plx (x <= 3) kernels unless you run the 0.9.x or 1.2.13pl3 e2fsck on them. If you wish to create a *new* ext2fs partition to use with 1.2.13pl4, use the mke2fs on the new ramdisk filesystem. (For those who already switched their filesystems to 1.2.13plx (x <= 3): the same procedure as from 0.9... :-) Roman