[Tommy wrote:]
Hi everyone, I'm wondering if there is any safe way to reboot the board w/o rebooting the host system? I have the board installed in Linux and hated to reboot it just to rebooot the enp board. Thanks.
[Scott wrote:]
I don't know about the ENP-2505 board, but we reboot the evaluation systems all the time without rebooting Linux. The thing to watch for
Hi Tommy, The ENP-2505 is nicer about this because it has the PCI bridge chip in it. The bridge chip's PCI registers survive at least a soft reset of the IXP (what you get if you type "reboot" to linux on the IXP). So you do not have to do anything special on the host if you just type reboot to linux on the IXP. If you do *hard* reset of the ENP-2505 (by making a wiring change to the board to short the two reset pins), I suspect you will have to save/restore the bridge chip registers as Scott describes. There's yet a third way to reset the IXP (a squishy reset?) which is to write one the PCI space configuration registers. We don't actively use this one since early experiments we did suggested it didn't actually reset everything and we had to resort to the hard reset. In practice, I've found that for the things we do the soft reset covers almost all the problems we have. As a result we've been lazy and not even wired up a hard reset on most of our boards. In other words, we do a soft reset if we can and for a hard reset reboot the workstation. The latter is sufficiently rare that it hasn't been an annoyance. Here's a script we use that uses kermit to log into a card (via serial in case the pciDg connection is hosed), issue the reboot command, then remove the drivers from the host making it ready to boot again. It's specific to our site (uses one of our drivers, has serial port assignments wired in etc) but gives you an idea of what you could do. Scripting these sorts of things will measureably lower your blood pressure... regards, -- Ken ---------------- #!/bin/sh # 30-May-02 # # RCS: $Id: unbootixp,v 1.1 2002/06/13 20:24:46 kenmac Exp $ # unbootixp #********************************************************************# # # # this script shuts down IXP cards so that they can be rebooted from # # scratch. To shut down a card, do this: # # # # PHASE 1: (per bv) invoke "reboot" on the card # # PHASE 2: ifconfig down, rmmod drivers # # # #********************************************************************# PATH=/bin:/sbin:/usr/sbin:/usr/bin:. DEVICE=eth2 PASSWORD=******* KERMIT=/usr/bin/kermit phase0 () { echo START PHASE 0 ON IXP $IXPNO rm -f /tmp/bootit.tmp touch /tmp/bootit.tmp echo set line $SERIAL_LINE >> /tmp/bootit.tmp echo set baud 38400 >> /tmp/bootit.tmp echo set carrier-watch off >> /tmp/bootit.tmp echo output \\13 >> /tmp/bootit.tmp echo input 10 ogin: >> /tmp/bootit.tmp echo output root\\13 >> /tmp/bootit.tmp echo input 10 ssword: >> /tmp/bootit.tmp echo output $PASSWORD\\13 >> /tmp/bootit.tmp echo input 10 \$ >> /tmp/bootit.tmp echo output reboot\\13 >> /tmp/bootit.tmp echo input 10 \$ >> /tmp/bootit.tmp echo output exit\\13 >> /tmp/bootit.tmp echo hangup >> /tmp/bootit.tmp echo exit >> /tmp/bootit.tmp $KERMIT /tmp/bootit.tmp -0 rm -f /tmp/bootit.tmp echo END PHASE 0 ON IXP $IXPNO } #*****************# # # # guts of phase 0 # # # #*****************# echo START PHASE 0 if [ -e /proc/driver/ixp0 ]; then IXPNO=0 CARDNO=1 CARD_INTERNAL_IP=192.168.0.2 SERIAL_LINE=/dev/ttyS1 phase0 fi if [ -e /proc/driver/ixp1 ]; then IXPNO=1 CARDNO=2 CARD_INTERNAL_IP=192.168.0.3 SERIAL_LINE=/dev/ttyS0 phase0 fi echo END PHASE 0 #*************************# # # # phase 1: remove drivers # # # #*************************# echo START PHASE 1 ifconfig $DEVICE down rmmod pciDgNet rmmod pciDg rmmod ixp1200 echo END PHASE 1 echo "Done unbooting. Wait 10 seconds before running bootixp"