more information:

term% pci -v
0.0.0:  brg  06.00.00 1106/0314   0
        VIA Technology
0.0.1:  brg  06.00.00 1106/1314   0
        VIA Technology
0.0.2:  brg  06.00.00 1106/2314   0
        VIA Technology
0.0.3:  brg  06.00.00 1106/3208   0
        VIA Technology PT890 CPU to PCI Bridge
0.0.4:  brg  06.00.00 1106/4314   0
        VIA Technology
0.0.7:  brg  06.00.00 1106/7314   0
        VIA Technology
0.1.0:  brg  06.04.00 1106/b198   0
        VIA Technology
0.15.0: disk 01.04.00 1106/3149  11 0:0000ff01 16 1:0000fe01 16 2:0000fd01 16 
3:0000fc01 16 4:0000fb01 16 5:0000f401 256
        VIA Technology VT8237  VT6410 SATA RAID Controller
0.15.1: disk 01.01.8a 1106/0571  10 4:0000fa01 16
        VIA Technology VT82C596x drivers
0.16.0: usb 0c.03.00 1106/3038  10 4:0000f901 32
        VIA Technology VT83C572, VT6202 USB 2.0 Controller
0.16.1: usb 0c.03.00 1106/3038  10 4:0000f801 32
        VIA Technology VT83C572, VT6202 USB 2.0 Controller
0.16.2: usb 0c.03.00 1106/3038  11 4:0000f701 32
        VIA Technology VT83C572, VT6202 USB 2.0 Controller
0.16.3: usb 0c.03.00 1106/3038  11 4:0000f601 32
        VIA Technology VT83C572, VT6202 USB 2.0 Controller
0.16.4: usb 0c.03.20 1106/3104   5 0:fdfff000 256
        VIA Technology VT6202 USB 2.0 Enhanced Host Controller
0.17.0: brg  06.01.00 1106/3227   0
        VIA Technology VT8237 PCI-to-ISA Bridge
0.17.5: ---  04.01.00 1106/3059   5 0:0000f201 256
        VIA Technology VT8233/33A/8235/8237/8251 AC97 Enhanced Audio Controller 
- the 8251 controller is different
0.18.0: net  02.00.00 1106/3065  10 0:0000f001 256 1:fdffe000 256
        VIA Technology VT6102 Rhine II PCI Fast Ethernet Controller
0.20.0: net  02.00.00 10ec/8139  11 0:0000ee01 256 1:fdffd000 256
        Realtek Semiconductor RTL8139 10/100 Mbps Fast Ethernet NIC
1.0.0:  vid  03.00.00 1106/3344  10 0:f4000008 67108864 1:fb000000 16777216
        VIA Technology


with the controller in RAID mode (this is the BIOS default) following:

% cat /dev/sdC0/ctl
inquiry WDC WD3200AAJS-0c0YFA0                   
config 427A capabilities 2F00 dma 00550040 dmactl 00000000 rwm 16 rwmctl 0 
lba48always off
geometry 625142448 512 16383 16 63
part data 0 625142448
part plan9 63 625137345
part 9fat 63 204863
part nvram 204863 204864
part fscfg 204864 204865
part fossil 204865 4112641
part 9hal.i.fossil 4112641 87998721
part 9hal.visect0 87998721 106873089
part 9hal.m.varena 106873089 625137345

% cat /dev/sdD0/ctl
inquiry SAMSUNG HD321KJ                         
config 0040 capabilities 2F00 rwm 16 rwmctl 0 lba48always off
geometry 625142448 512 16383 16 63
part data 0 625142448
part plan9 63 625137345
part 9hal.vbloom 3981569 4112641
part 9hal.i.fossil 4112641 87998721
part 9hal.visect1 87998721 106873089
part 9hal.m.varena 106873089 625137345

ok, i wrote a script that tests sequencial reading/writing:

fn rotest {
echo rotest1 $1
dd -if $1 -of /dev/null -bs $3 &
sleep $2
slay dd|rc

echo rotest2 $1
dd -if $1 -of /dev/null -bs $3 &
sleep 5
dd -if $1 -of /dev/null -bs $3 &
sleep $2
slay dd|rc
}

fn wrtest {
echo wrtest1 $1
dd -if /dev/zero -of $1 -bs $3 &
sleep $2
slay dd|rc

echo wrtest2 $1
dd -if /dev/zero -of $1 -bs $3 &
sleep 5
dd -if /dev/zero -of $1 -bs $3 &
sleep $2
slay dd|rc
}

fn rwtest {
echo rwtest2 $1
dd -if /dev/zero -of $1 -bs $3 &
sleep 5
dd -if $1 -of /dev/null -bs $3 &
sleep $2
slay dd|rc
}

slay dd|rc

t=300
b=65536

for(m in off on){
echo dma $m
echo dma $m >/dev/sdC0/ctl
echo dma $m >/dev/sdD0/ctl
for(d in /dev/sdC0/9hal.m.varena /dev/sdD0/9hal.m.varena){
        rotest $d $t $b
        wrtest $d $t $b
        rwtest $d $t $b
}
}

output:

term% ./dtest.rc
dma off
echo: write error: bad process or channel control request
rotest1 /dev/sdC0/9hal.m.varena
rotest2 /dev/sdC0/9hal.m.varena
wrtest1 /dev/sdC0/9hal.m.varena
wrtest2 /dev/sdC0/9hal.m.varena
rwtest2 /dev/sdC0/9hal.m.varena
rotest1 /dev/sdD0/9hal.m.varena
rotest2 /dev/sdD0/9hal.m.varena
wrtest1 /dev/sdD0/9hal.m.varena
wrtest2 /dev/sdD0/9hal.m.varena
rwtest2 /dev/sdD0/9hal.m.varena
dma on
echo: write error: bad process or channel control request
rotest1 /dev/sdC0/9hal.m.varena
rotest2 /dev/sdC0/9hal.m.varena
wrtest1 /dev/sdC0/9hal.m.varena
wrtest2 /dev/sdC0/9hal.m.varena
rwtest2 /dev/sdC0/9hal.m.varena
rotest1 /dev/sdD0/9hal.m.varena
rotest2 /dev/sdD0/9hal.m.varena
wrtest1 /dev/sdD0/9hal.m.varena
wrtest2 /dev/sdD0/9hal.m.varena
rwtest2 /dev/sdD0/9hal.m.varena

well, seems to work fine!

lets use both drives in paralel (dma still enabled):

term% dd -if /dev/sdC0/9hal.m.varena -of /dev/null -bs 65536 &
term% dd -if /dev/sdD0/9hal.m.varena -of /dev/null -bs 65536 &
term% read: i/o error
13967+0 records in
13967+0 records out

paralel reading and writing on both drives results in:

term% cat /dev/kprint
command C8
data f17fd360 limit f17ff160 dlen 65536 status 50 error 0
lba 106889089 -> 106889119, count 128 -> 98 (15)
 0x00 0x00 0xAD 0xFF 0x5E 0xE6 0x50
bmicx 09 bmisx 01 prdt f14df0b4
pa 0x017FD360 count 00000CA0
pa 0x017FE000 count 80001160
atagenioretry: disabling dma
sdC0: retry: dma 00000000 rwm 0000

ok, so far for now...

cinap

Reply via email to