Subject: Re: NetBSD/be
To: None <port-powerpc@NetBSD.ORG>
From: Kazuki Sakamoto <sakamoto@cec.co.jp>
List: port-powerpc
Date: 07/25/1997 13:51:50
NetBSD/be began to work somehow.
Current Status:
>single user mode up (/bin/sh works)
>single MPU support (MPU1 illuminates LED :-)
>DDB works (from OpenBSD/powerpc)
>available VGA & serial console
>NE2000 compatible ISA Ethernet CARD works (root mount via NFS)
I put snapshot of sources and binary on
<URL:http://www.cec.co.jp/usr/sakamoto/NetBSD/>.
nfs,bootparam,bootp server is necessary to work NetBSD/be single user mode.
How to start is as the following:
1. write disk image to floppy disks
% gunzip beboot.img.gz
% dd if=beboot.img of=/dev/fd0
In the same way, kernel.img.gz, too.
If your BeBox have older than AAPR BootROM,
It will fail to boot with "beboot.img" floppy.
Try this:
1. format floppy disk with BeOS filesystem
2. copy and rename "boot.pef" to "system/kernel"
Example:
$ cd floppy_disk_directory
$ mkdir system
$ cp /tmp/boot.pef system/kernel
2. setup nfs,bootparam,bootp server
root.tar.gz is root filesystem.
It includes some ELF binaries (NetBSD/powerpc compatible).
3. With the BeBox turned off, insert beboot.img floppy disk
in the floppy disk drive and Turn on the BeBox.
# Even if it is reset, it doesn't care.
4. Messages inform you.
>> NetBSD/be BOOT
>>
Eject the floppy disk, insert the kernel.img floppy disk,
and press Return.
...booting NetBSD kernel...
5. input root device name and file system name.
root device: ed0
file system (default generic): nfs
6. /bin/sh start!
There are two questions.
Before, too, though it was written, SIGSEGV occurs.
When SIGSEGV occurs, the value of prot is 0x5(VM_PROT_READ|VM_PROT_EXECUTE),
the value of fault_type is 0x3(VM_PROT_READ|VM_PROT_WRITE)
in vm/vm_map.c line 2373.
By way of experiment, I surrounded this with #if 0-#endif.
Doesn't this occur in NetBSD/powerpc current?
As for one more question,
So far as I read it, splx() call softnet() directly.
Doesn't a waste arise once in this when the reception of network interrupts?
Sequence receive interrupt:
edintr() -> ed_rint() -> ... -> ether_input() ->
schednetisr(NETISR_IP) -> setsoftnet() -> IF_ENQUEUE(inq, m)
setsoftnet() is soft_setsoftnet() with NetBSD/powerpc and NetBSD/be.
soft_setsoftnet() call soft_splx().
At this time, I don't think that receiving work is started
in the IP layer because IF_ENQUEUE() isn't being done with
soft_setsoftnet() when soft_splx() is called.
Kazuki Sakamoto
sakamoto@cec.co.jp