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