Index: src/PATCHLEVEL diff -c src/PATCHLEVEL:1.1 src/PATCHLEVEL:1.1.2.3 *** src/PATCHLEVEL:1.1 Tue Dec 26 16:21:06 1995 --- src/PATCHLEVEL Mon Jan 15 23:46:44 1996 *************** *** 0 **** --- 1,21 ---- + This file describes official patches for the NetBSD 1.1 release. + + + Mondo patch 1: + + [kernel/i386]: Fix a compilation error when no DMA devices are + configured. + + [kernel/i386]: Fix a problem where processes trying to use the FPU for + the first time would sporadically core dump. Known to affect httpd + and gopherd, in particular. + + [kernel/i386]: Fix an oversight which caused the Ultrastor 24f probe + to always fail. + + [kernel/generic]: Fix a sgtty emulation problem which caused LITOUT + and PASS8 modes to sometimes be set erroneously (sometimes referred to + as `stair-stepping xterms'). + + [kernel/generic]: Fix a problem in FFS that could cause panics in + ffs_clusteracct() after running fsck(8). Index: src/sys/arch/i386/i386/pmap.c diff -c src/sys/arch/i386/i386/pmap.c:1.33 src/sys/arch/i386/i386/pmap.c:1.33.2.1 *** src/sys/arch/i386/i386/pmap.c:1.33 Mon Jun 26 01:21:58 1995 --- src/sys/arch/i386/i386/pmap.c Tue Dec 26 16:12:33 1995 *************** *** 1,4 **** ! /* $NetBSD: pmap.c,v 1.33 1995/06/26 05:21:58 cgd Exp $ */ /* * Copyright (c) 1993, 1994, 1995 Charles M. Hannum. All rights reserved. --- 1,4 ---- ! /* $NetBSD: pmap.c,v 1.33.2.1 1995/12/26 21:12:33 mycroft Exp $ */ /* * Copyright (c) 1993, 1994, 1995 Charles M. Hannum. All rights reserved. *************** *** 92,99 **** #include #include - #include "isa.h" - /* * Allocate various and sundry SYSMAPs used in the days of old VM * and not yet converted. XXX. --- 92,97 ---- *************** *** 276,282 **** * reserve special hunk of memory for use by bus dma as a bounce * buffer (contiguous virtual *and* physical memory). XXX */ ! #if NISA > 0 isaphysmem = pmap_steal_memory(DMA_BOUNCE * NBPG); #endif --- 274,281 ---- * reserve special hunk of memory for use by bus dma as a bounce * buffer (contiguous virtual *and* physical memory). XXX */ ! #include "isadma.h" ! #if NISADMA > 0 isaphysmem = pmap_steal_memory(DMA_BOUNCE * NBPG); #endif Index: src/sys/arch/i386/i386/vm_machdep.c diff -c src/sys/arch/i386/i386/vm_machdep.c:1.54 src/sys/arch/i386/i386/vm_machdep.c:1.54.2.1 *** src/sys/arch/i386/i386/vm_machdep.c:1.54 Thu Oct 12 13:56:48 1995 --- src/sys/arch/i386/i386/vm_machdep.c Tue Dec 26 16:13:02 1995 *************** *** 1,4 **** ! /* $NetBSD: vm_machdep.c,v 1.54 1995/10/12 17:56:48 mycroft Exp $ */ /*- * Copyright (c) 1995 Charles M. Hannum. All rights reserved. --- 1,4 ---- ! /* $NetBSD: vm_machdep.c,v 1.54.2.1 1995/12/26 21:13:02 mycroft Exp $ */ /*- * Copyright (c) 1995 Charles M. Hannum. All rights reserved. *************** *** 97,102 **** --- 97,104 ---- if (npxproc == p1) npxsave(); #endif + + p2->p_md.md_flags = p1->p_md.md_flags; /* Sync curpcb (which is presumably p1's PCB) and copy it to p2. */ savectx(curpcb); Index: src/sys/dev/isa/ultra14f.c diff -c src/sys/dev/isa/ultra14f.c:1.57 src/sys/dev/isa/ultra14f.c:1.57.2.1 *** src/sys/dev/isa/ultra14f.c:1.57 Tue Oct 3 20:35:07 1995 --- src/sys/dev/isa/ultra14f.c Tue Dec 26 16:13:27 1995 *************** *** 1,4 **** ! /* $NetBSD: ultra14f.c,v 1.57 1995/10/04 00:35:07 mycroft Exp $ */ /* * Copyright (c) 1994 Charles Hannum. All rights reserved. --- 1,4 ---- ! /* $NetBSD: ultra14f.c,v 1.57.2.1 1995/12/26 21:13:27 mycroft Exp $ */ /* * Copyright (c) 1994 Charles Hannum. All rights reserved. *************** *** 535,542 **** struct uha_softc *uha = match; struct isa_attach_args *ia = aux; - uha->sc_iobase = ia->ia_iobase; - /* * Try initialise a unit at this location * sets up dma and bus speed, loads uha->sc_irq --- 535,540 ---- *************** *** 911,917 **** struct uha_softc *uha; struct isa_attach_args *ia; { ! int iobase = uha->sc_iobase; u_short model, config; int resetcount = 4000; /* 4 secs? */ --- 909,915 ---- struct uha_softc *uha; struct isa_attach_args *ia; { ! int iobase = ia->ia_iobase; u_short model, config; int resetcount = 4000; /* 4 secs? */ *************** *** 988,993 **** --- 986,992 ---- uha->intr = u14intr; uha->init = u14_init; + uha->sc_iobase = iobase; return 0; } *************** *** 1083,1088 **** --- 1082,1088 ---- uha->intr = u24intr; uha->init = u24_init; + uha->sc_iobase = ia->ia_iobase = iobase; return 0; } *************** *** 1100,1107 **** printf("u14_init: lmask=%02x, smask=%02x\n", inb(iobase + U14_LMASK), inb(iobase + U14_SMASK)); #endif ! outb(0xd1, iobase + U14_LMASK); /* XXX */ ! outb(0x91, iobase + U14_SMASK); /* XXX */ } void --- 1100,1107 ---- printf("u14_init: lmask=%02x, smask=%02x\n", inb(iobase + U14_LMASK), inb(iobase + U14_SMASK)); #endif ! outb(iobase + U14_LMASK, 0xd1); /* XXX */ ! outb(iobase + U14_SMASK, 0x91); /* XXX */ } void *************** *** 1118,1125 **** printf("u24_init: lmask=%02x, smask=%02x\n", inb(iobase + U24_LMASK), inb(iobase + U24_SMASK)); #endif ! outb(0xd2, iobase + U24_LMASK); /* XXX */ ! outb(0x92, iobase + U24_SMASK); /* XXX */ } void --- 1118,1125 ---- printf("u24_init: lmask=%02x, smask=%02x\n", inb(iobase + U24_LMASK), inb(iobase + U24_SMASK)); #endif ! outb(iobase + U24_LMASK, 0xd2); /* XXX */ ! outb(iobase + U24_SMASK, 0x92); /* XXX */ } void Index: src/sys/kern/tty_compat.c diff -c src/sys/kern/tty_compat.c:1.26 src/sys/kern/tty_compat.c:1.26.2.1 *** src/sys/kern/tty_compat.c:1.26 Mon Oct 9 21:27:00 1995 --- src/sys/kern/tty_compat.c Tue Dec 26 16:14:04 1995 *************** *** 1,4 **** ! /* $NetBSD: tty_compat.c,v 1.26 1995/10/10 01:27:00 mycroft Exp $ */ /*- * Copyright (c) 1982, 1986, 1991, 1993 --- 1,4 ---- ! /* $NetBSD: tty_compat.c,v 1.26.2.1 1995/12/26 21:14:04 mycroft Exp $ */ /*- * Copyright (c) 1982, 1986, 1991, 1993 *************** *** 275,286 **** } else SET(flags, ANYP); } - if (ISSET(cflag, CSIZE) == CS8) { - if (!ISSET(iflag, ISTRIP)) - SET(flags, PASS8); - if (!ISSET(oflag, OPOST)) - SET(flags, LITOUT); - } if (!ISSET(lflag, ICANON)) { /* fudge */ --- 275,280 ---- *************** *** 290,295 **** --- 284,299 ---- else SET(flags, RAW); } + + if (ISSET(flags, RAW)) + SET(flags, ISSET(tp->t_flags, LITOUT|PASS8)); + else if (ISSET(cflag, CSIZE) == CS8) { + if (!ISSET(oflag, OPOST)) + SET(flags, LITOUT); + if (!ISSET(iflag, ISTRIP)) + SET(flags, PASS8); + } + if (ISSET(cflag, MDMBUF)) SET(flags, MDMBUF); if (!ISSET(cflag, HUPCL)) Index: src/sys/ufs/ffs/ffs_vfsops.c diff -c src/sys/ufs/ffs/ffs_vfsops.c:1.16.2.1 src/sys/ufs/ffs/ffs_vfsops.c:1.16.2.2 *** src/sys/ufs/ffs/ffs_vfsops.c:1.16.2.1 Tue Oct 31 19:06:34 1995 --- src/sys/ufs/ffs/ffs_vfsops.c Tue Dec 26 16:14:36 1995 *************** *** 1,4 **** ! /* $NetBSD: ffs_vfsops.c,v 1.16.2.1 1995/11/01 00:06:34 jtc Exp $ */ /* * Copyright (c) 1989, 1991, 1993, 1994 --- 1,4 ---- ! /* $NetBSD: ffs_vfsops.c,v 1.16.2.2 1995/12/26 21:14:36 mycroft Exp $ */ /* * Copyright (c) 1989, 1991, 1993, 1994 *************** *** 297,305 **** struct inode *ip; struct csum *space; struct buf *bp; ! struct fs *fs; struct partinfo dpart; int i, blks, size, error; if ((mountp->mnt_flag & MNT_RDONLY) == 0) return (EINVAL); --- 297,306 ---- struct inode *ip; struct csum *space; struct buf *bp; ! struct fs *fs, *newfs; struct partinfo dpart; int i, blks, size, error; + int32_t *lp; if ((mountp->mnt_flag & MNT_RDONLY) == 0) return (EINVAL); *************** *** 318,333 **** size = dpart.disklab->d_secsize; if (error = bread(devvp, (daddr_t)(SBOFF / size), SBSIZE, NOCRED, &bp)) return (error); ! fs = (struct fs *)bp->b_data; ! if (fs->fs_magic != FS_MAGIC || fs->fs_bsize > MAXBSIZE || ! fs->fs_bsize < sizeof(struct fs)) { brelse(bp); return (EIO); /* XXX needs translation */ } fs = VFSTOUFS(mountp)->um_fs; ! bcopy(&fs->fs_csp[0], &((struct fs *)bp->b_data)->fs_csp[0], ! sizeof(fs->fs_csp)); ! bcopy(bp->b_data, fs, (u_int)fs->fs_sbsize); if (fs->fs_sbsize < SBSIZE) bp->b_flags |= B_INVAL; brelse(bp); --- 319,339 ---- size = dpart.disklab->d_secsize; if (error = bread(devvp, (daddr_t)(SBOFF / size), SBSIZE, NOCRED, &bp)) return (error); ! newfs = (struct fs *)bp->b_data; ! if (newfs->fs_magic != FS_MAGIC || newfs->fs_bsize > MAXBSIZE || ! newfs->fs_bsize < sizeof(struct fs)) { brelse(bp); return (EIO); /* XXX needs translation */ } fs = VFSTOUFS(mountp)->um_fs; ! /* ! * Copy pointer fields back into superblock before copying in XXX ! * new superblock. These should really be in the ufsmount. XXX ! * Note that important parameters (eg fs_ncg) are unchanged. ! */ ! bcopy(&fs->fs_csp[0], &newfs->fs_csp[0], sizeof(fs->fs_csp)); ! newfs->fs_maxcluster = fs->fs_maxcluster; ! bcopy(newfs, fs, (u_int)fs->fs_sbsize); if (fs->fs_sbsize < SBSIZE) bp->b_flags |= B_INVAL; brelse(bp); *************** *** 348,353 **** --- 354,368 ---- bcopy(bp->b_data, fs->fs_csp[fragstoblks(fs, i)], (u_int)size); brelse(bp); } + /* + * We no longer know anything about clusters per cylinder group. + */ + if (fs->fs_contigsumsize > 0) { + lp = fs->fs_maxcluster; + for (i = 0; i < fs->fs_ncg; i++) + *lp++ = fs->fs_contigsumsize; + } + loop: for (vp = mountp->mnt_vnodelist.lh_first; vp != NULL; vp = nvp) { nvp = vp->v_mntvnodes.le_next;