[ixp] [ixp1200] rebooting the enp-2505
Kenneth M. Mackenzie
kenmac at cc.gatech.edu
Thu Jul 18 10:28:45 EDT 2002
[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"
More information about the ixp1200
mailing list