Port-vax archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Bountysource campaign for gcc-vax



On Fri, 18 Sep 2020, Jason Thorpe wrote:

> But I have also seen a couple of hints that others are also working on 
> MODE_CC or are interested in doing so, but have not seen any specific 
> updates or claims against the bounty.

 I'm back on track with this effort, however regrettably for some reason 
NetBSD does not like my 4000/90, which has caused me a month's delay while 
I was where my 4000/90 resides.

 First the installation I dd-ed from my 4000/60 to an identical disk boots 
only once:

>>> boot

-DKA200
>> NetBSD/vax boot [1.12 (Fri Feb 14 00:06:28 UTC 2020)] <<
>> Press any key to abort autoboot 0
nfs_open: must mount first.
open netbsd.vax: Device not configured
> boot netbsd
3293856+205208 [238480+226939]=0x3c821c
[   1.0000000] Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
[   1.0000000]     2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017,
[   1.0000000]     2018, 2019, 2020 The NetBSD Foundation, Inc.  All rights reserved.
[   1.0000000] Copyright (c) 1982, 1986, 1989, 1991, 1993
[   1.0000000]     The Regents of the University of California.  All rights reserved.

[   1.0000000] NetBSD 9.0 (GENERIC) #0: Fri Feb 14 00:06:28 UTC 2020
[   1.0000000] 	mkrepro%mkrepro.NetBSD.org@localhost:/usr/src/sys/arch/vax/compile/GENERIC
[   1.0000000] MicroVAX 4000/{90,90A,96}
[   1.0000000] total memory = 127 MB
[   1.0000000] avail memory = 119 MB
[   1.0000000] mainbus0 (root)
[   1.0000000] cpu0 at mainbus0: KA49, NVAX, 10KB L1 cache, 256KB L2 cache
[   1.0000000] ze0 at mainbus0
[   1.0000000] ze0: hardware address 08:00:2b:30:96:d8
[   1.0000000] vsbus0 at mainbus0
[   1.0000000] vsbus0: 8K entry DMA SGMAP at PA 0x27000000 (VA 0x8af97000)
[   1.0000000] vsbus0: interrupt mask 0
[   1.0000000] dz0 at vsbus0 csr 0x25000000 vec 524 ipl 17 maskbit 3
[   1.0000000] dz0: 4 lines
[   1.0000000] lkkbd0 at dz0
[   1.0000000] lkkbd0: no keyboard
[   1.0000000] wskbd0 at lkkbd0 mux 1
[   1.0000000] lkms0 at dz0
[   1.0000000] wsmouse0 at lkms0 mux 0
[   1.0000000] tc0 at vsbus0 csr 0x36800000 vec 504 ipl 17 maskbit 0: 12.5 MHz clock
[   1.0000000] le1 at tc0 slot 0 offset 0x0: address 08:00:2b:be:64:f5
[   1.0000000] le1: 32 receive buffers, 8 transmit buffers
[   1.0000000] asc0 at vsbus0 csr 0x26000080 vec 510 ipl 17 maskbit 1
[   1.0000000] asc0: NCR53C94, 25MHz, SCSI ID 6
[   1.0000000] scsibus0 at asc0: 8 targets, 8 luns per target
[   1.0000000] spx0 at vsbus0 csr 0x38000000 vec 514 ipl 15 maskbit 2
[   1.0000000] spx0: Using QVSS 8x15 font
[   1.0000000] spx0: RAMDAC ID: 0x4a, Bt459 (SPX/LCSPX) RAMDAC type
[   1.0000000] wsdisplay0 at spx0 kbdmux 1
[   1.0000000] vsaudio0 at vsbus0 csr 0x26800000 vec 530 ipl 17 maskbit 4
[   1.0000000] audio0 at vsaudio0: playback, capture, full duplex
[   1.0000000] audio0: slinear_le:16 -> mulaw:8 1ch 8000Hz, blk 40ms for playback
[   1.0000000] audio0: slinear_le:16 <- mulaw:8 1ch 8000Hz, blk 40ms for recording
[   1.0000000] spkr0 at audio0: PC Speaker (synthesized)
[   1.0000000] wsbell at spkr0 not configured
[   1.0000090] scsibus0: waiting 2 seconds for devices to settle...
[   3.4895450] sd0 at scsibus0 target 2 lun 0: <COMPAQ, C2490A, 5193> disk fixed
[   3.5195380] sd0: 2006 MB, 2630 cyl, 18 head, 86 sec, 512 bytes/sect x 4110000 sectors
[   3.5496080] asc0: unexpected disconnect [state 5, intr 20, stat 90, phase(c 100, p 6)]; sending REQUEST SENSE
[   4.5595300] boot device: sd0
[   4.5795310] root on sd0a dumps on sd0b
[   4.6495330] root file system type: ffs
[   4.6603140] kern.module.path=/stand/vax/9.0/modules
Sat Sep  5 01:09:12 GMT 2020
Starting root file system check:
/dev/rsd0a: file system is clean; not checking
[...]

and then kills itself somewhere on the way:

[...]
Removing block-type swap devices
swapctl: removing /dev/sd0b as swap device
Sat Sep  5 03:12:22 CEST 2020

Done running shutdown hooks.

lizzie# Sep [ 210.3992937] syncing disks... done
[ 210.4342131] unmounting file systems...
[ 211.1496834] unmounting done

?06 HLT INST
  PC= 80012423 PSL= 00DF0008

>>> boot

-DKA200
?06 HLT INST
  PC= 001003E5 PSL= 041F0008

>>> 

At this point the disk is no longer bootable and the halt always happens 
at the same PC.

 Second the network boot loader consistently fails to load the kernel:

>>> boot eza0

-EZA0
>> NetBSD/vax boot [1.12 (Fri Feb 14 00:06:28 UTC 2020)] <<
>> Press any key to abort autoboot 0
SGEC: Ethernet address 08:00:2b:30:96:d8
Trying BOOTP
Using IP address: 81.187.245.180
myip: angie.orcam.me.uk (81.187.245.180)
root addr=81.187.245.178 path=/export/cougar
3882276read section: Unknown error: code 60
> boot netbsd
SGEC: Ethernet address 08:00:2b:30:96:d8
open netbsd: Unknown error: code 60
netbsd: boot failed: Unknown error: code 60
> boot netbsd.gz
SGEC: Ethernet address 08:00:2b:30:96:d8
open netbsd.gz: Unknown error: code 60
netbsd.gz: boot failed: Unknown error: code 60
> boot netbsd.old
SGEC: Ethernet address 08:00:2b:30:96:d8
open netbsd.old: Unknown error: code 60
netbsd.old: boot failed: Unknown error: code 60
> boot gennetbsd
SGEC: Ethernet address 08:00:2b:30:96:d8
open gennetbsd: Unknown error: code 60
gennetbsd: boot failed: Unknown error: code 60
> halt

?06 HLT INST
PC= 007F0096 PSL= 04140000

>>> 

This is regardless of the version of the bootloader; I have tried numerous 
(what is error code 60 anyway?).

 So the only way to recover (available to me) for investigation, etc. is 
to dd the original image to the disk again, which is rather cumbersome.

 For the record here's the hardware configuration:

>>> sh conf

KA49-A V1.0-006-V4.0
08-00-2B-30-96-D8
128MB

DEVNBR    DEVNAM           INFO
------    --------    --------------------------
     1         NVR    OK
     2       LCSPX    OK
                      Highres 72Hz - 8 Plane 4Mpixel FB - V1.0
     3          DZ    OK
     4       CACHE    OK
     5         MEM    OK
                      128MB   0A,0B,0C,0D=16MB, 1E,1F,1G,1H=16MB
     6         FPU    OK
     7          IT    OK
     8         SYS    OK
     9          NI    OK
    10        SCSI    OK
                      2-C2490A  6-INITR
    11         AUD    OK
    13         TCA    OK
                       OPT PRS    V1.0

>>> 

 I have taken a second dump from the corrupt disk and I'll investigate 
what difference causes the system not to boot on subsequent attempts, but 
obviously this is not the highest priority right now.

 I'm now back at my lab where my 4000/60 resides and ultimately I will 
have the setup here configured for full remote operation, so I will be 
able to continue using 4000/60 even while at another place.  Right now I 
have succeeded running partial GCC verification (the C language frontend 
only) with results as follows:

		=== gcc Summary ===

# of expected passes		105263
# of unexpected failures	6439
# of unexpected successes	7
# of expected failures		566
# of unresolved testcases	32
# of unsupported tests		3131
/scratch/vax-netbsd/obj/gcc/gcc/xgcc  version 11.0.0 20200704 (experimental) (GCC)

make[1]: Leaving directory '/scratch/vax-netbsd/obj/gcc/gcc'
make: Leaving directory '/scratch/vax-netbsd/obj/gcc/gcc'
3947.73user 593.71system 10:15:32elapsed 12%CPU (0avgtext+0avgdata 808572maxresident)k
813680inputs+4530568outputs (2909major+217790261minor)pagefaults 0swaps

These are not stellar, but not catastrophic either, and obviously the 
primary objective of the effort is not to fix testsuite failures (though 
some may go away as a side effect, I imagine).  Most importantly the 
testsuite execucution time is only ~10 hours, which is quite reasonable; I 
worked with slower configurations before.

 I have one final question: how do I contribute code to NetBSD?  In the 
course of test environment preparation I had to patch mount_nfs(8) so as 
to make it accept the `noac' mount option, long supported by the kernel, 
but not the mount(8) program or otherwise NFS inconsistency causes a huge 
number of test execution failures (Ragge will have heard about that from 
me before).  Documentation asks one to use the problem report database, 
but there appears to be no way to submit a patch that way.

 For the record, I have included the patch below.  I'll follow up with a 
proper patch discussion with the actual submission (there are a couple of 
points to raise).

  Maciej

---
 sbin/mount_nfs/mount_nfs.8 |   16 +++++++++++++++-
 sbin/mount_nfs/mount_nfs.c |    7 +++++++
 2 files changed, 22 insertions(+), 1 deletion(-)

netbsd-mount_nfs-noac.diff
Index: src/sbin/mount_nfs/mount_nfs.8
===================================================================
--- src.orig/sbin/mount_nfs/mount_nfs.8
+++ src/sbin/mount_nfs/mount_nfs.8
@@ -37,7 +37,7 @@
 .Nd mount NFS file systems
 .Sh SYNOPSIS
 .Nm
-.Op Fl 23bCcdilPpqsTUuX
+.Op Fl 23AbCcdilPpqsTUuX
 .Op Fl a Ar maxreadahead
 .Op Fl D Ar deadthresh
 .Op Fl g Ar maxgroups
@@ -75,6 +75,17 @@ Use the NFS Version 2 protocol.
 Use the NFS Version 3 protocol.
 The default is to try version 3 first, and
 fall back to version 2 if the mount fails.
+.It Fl A
+Disable the attribute cache in the client, making it consult the server
+for the current version of a given file's attributes every time the file
+is accessed.
+
+By default the attribute cache is enabled, making the client only consult
+the server every handful of seconds.  This improves performance, however
+at the cost of the risk of a mid-air collision when changes are made
+simultaneously by different NFS clients and/or locally on the NFS server
+that affect the same file.  In that case changes made elsewhere may be
+missed, leading to consistency issues.
 .It Fl a Ar maxreadahead
 Set the read-ahead count to the specified value.
 This may be in the range of 0 - 4, and determines how many blocks
@@ -186,6 +197,9 @@ Same as
 .It Cm nfsv3
 Same as
 .Fl 3 .
+.It Cm noac
+Same as
+.Fl A .
 .It Cm noresport
 Same as
 .Fl p .
Index: src/sbin/mount_nfs/mount_nfs.c
===================================================================
--- src.orig/sbin/mount_nfs/mount_nfs.c
+++ src/sbin/mount_nfs/mount_nfs.c
@@ -79,6 +79,7 @@ __RCSID("$NetBSD: mount_nfs.c,v 1.72 201
 #define ALTF_CONN	0x00000002
 #define ALTF_DUMBTIMR	0x00000004
 #define ALTF_INTR	0x00000008
+#define ALTF_NOAC	0x00000010
 #define ALTF_NFSV3	0x00000020
 #define ALTF_RDIRPLUS	0x00000040
 #define	ALTF_MNTUDP	0x00000080
@@ -109,6 +110,7 @@ static const struct mntopt mopts[] = {
 	{ "conn", 0, ALTF_CONN, 1 },
 	{ "dumbtimer", 0, ALTF_DUMBTIMR, 1 },
 	{ "intr", 0, ALTF_INTR, 1 },
+	{ "ac", 1, ALTF_NOAC, 1 },
 	{ "nfsv3", 0, ALTF_NFSV3, 1 },
 	{ "rdirplus", 0, ALTF_RDIRPLUS, 1 },
 	{ "mntudp", 0, ALTF_MNTUDP, 1 },
@@ -217,6 +219,9 @@ mount_nfs_parseargs(int argc, char *argv
 			force2 = 1;
 			nfsargsp->flags &= ~NFSMNT_NFSV3;
 			break;
+		case 'A':
+			nfsargsp->flags |= NFSMNT_NOAC;
+			break;
 		case 'a':
 			num = strtol(optarg, &p, 10);
 			if (*p || num < 0)
@@ -281,6 +286,8 @@ mount_nfs_parseargs(int argc, char *argv
 				nfsargsp->flags |= NFSMNT_DUMBTIMR;
 			if (altflags & ALTF_INTR)
 				nfsargsp->flags |= NFSMNT_INT;
+			if (altflags & ALTF_NOAC)
+				nfsargsp->flags |= NFSMNT_NOAC;
 			if (altflags & (ALTF_NFSV3|ALTF_NQNFS)) {
 				if (force2)
 					errx(1, "conflicting version options");


Home | Main Index | Thread Index | Old Index