MULTICS TECHNICAL BULLETIN                                MTB-640

To:  MTB Distribution

From:  Chris Jones

Date:  28 November 1983

Subject:  Reconfiguration Extended

This MTB describes plans  for enhancements to the reconfiguration
software of Multics.  It is proposed that logical channels, MPCs,
IOMs, and FNPs be dynamically  reconfigurable much as CPUs, SCUs,
and page frames are today.

These extensions will  make it truly possible to  split a Multics
system into two or more  independent systems while it is running.
The increased flexibility will make it easier to perform off-line
testing of doubtful hardware without system interruption.

Comments and questions should be sent to the author:

by US mail

Christopher L. Jones
Honeywell / CISL
4 Cambridge Center
Cambridge MA 02142

by telephone

(617) 492-9330 or HVN 261-9330

by Multics mail

CLJones.Multics on System M or MIT-Multics

_________________________________________________________________

Multics  Project  internal  working  documentation.   Not  to  be

Page 2                                                    MTB-640

1 INTRODUCTION

Current  Multics  reconfiguration  software  allows  page frames,
SCUs, some devices (tapes and  disks), and CPUs to be dynamically
added  and  deleted from  the  system configuration.   It  is not
currently  possible to  do the  same with  certain other devices,
MPCs, FNPs, logical channels, or IOMs.

Many  customers   have  requested  the   ability  to  dynamically
reconfigure IOMs.  It was identified  as a desirable function for
MR10 by the  MR10 Design Review Board.  Funding  for this project
has been provided through an RPQ from HIS Canada for the Canadian
Department of National Defence.  The  project is now underway and
is scheduled for completion in mid-1984.

2 GENERAL PHILOSOPHY

The  reconfigurable  entities  that  we  are  concerned  with are
enumerated  below.   This list  is  a more  or  less hierarchical
ranking; in  general an item  is directly connected  to the items
above and below it in the list.

Reconfigurable Entities

- Devices (FNPs, Unit  Record Devices, Operator Consoles,
Special Devices)
- MPCs
- Logical Channels
- IOMs

The basic policy to be followed  is this:  No item can be deleted
from the configuration if it is  part of the only path to another
undeleted  item.  This  means, for  example, that  a disk channel
could not be deconfigured if it were the only channel which could
communicate with a disk which  was still configured.  If the disk
were  deconfigured  first,  however,  the channel  could  then be
deleted.  Conversely, no item can be  added which does not have a
path to it.  Thus,  an MPC cannot be added if the  only IOM it is
connected to is deleted.

In addition, there will be a  few other constraints.  Just as the
last CPU cannot be deleted, the last operator's console cannot be
deleted.   Disks,  channels, and  MPCs,  etc.  needed  for system
operation will not be able to be deleted.

Since  each of  the reconfigurable  entities mentioned  above has
some unique  characteristics, each will  be discussed separately.
In addition, there is some work  which has to be done which falls

MTB-640                                                    Page 3

3 MISCELLANEOUS TASKS

In order to allow the maximum flexibility when splitting a system
into  several independent  systems, the  following tasks  will be
done as part of this project:

- a command  will be provided to move  all of the process
directories  from one  logical volume  to other logical
volumes
- it will be possible to  boot the system from IOMs other
than IOM a
- to allow for recovery from a system crash when there is
no configured  operator's console, it  will be possible

Page 4                                                    MTB-640

4 RECONFIGURATION OF DEVICES

4.1 General

Multics  already  allows  disk and  tape  units be  be  added and
deleted.  In  order to support  full reconfiguration, it  will be
necessary  to add  reconfiguration support  for the  other device
types.   The types  of devices  for which  support must  be added
include

- unit record devices (printers, card readers, punches)
- operator consoles
- FNPs
- special devices

RCP manages these  devices for the most part  (FNPs are a notable
exception).   There  are  already deldev  and  adddev initializer
commands which  currently handle only  tape and disk  units.  The
RCP reconfiguration software would have  to be extended to manage
the  other  devices as  well.   Unit record  devices  and special
devices present no obvious problems  when it comes to adding this
support.

4.2 Operator Consoles

Effective in  MR10.2 operator console  output can be  assigned to
any configured operator's console by using the set_system_console
command.  It is  even possible to run with  no operator's console
enabled   at   all.    Thus,   it  becomes   trivial   to  extend
reconfiguration  to consoles.   The only restriction  is that you
cannot delete the current operator's console.

4.3 FNPs

FNPs  are  a special  case.   FNP reconfiguration  is  already in
place.  FNPs  can be made  active and inactive  dynamically.  The
active  state  corresponds  to  the "on"  state  (of  a  CPU, for
example),  while inactive  corresponds to  the "off"  state.  The
current  state  of  an  FNP is  maintained  in  the  CDT (Channel
Definition Table).  As part of extending reconfiguration, we will
make the fnp card of the config deck include the current state of
the FNP.  We also will change the FNP reconfiguration commands to
communicate  this  information  to  IOI,  which  has  become  the
maintainer of the central  database for I/O reconfiguration.  IOI
needs this information  to allow it to decide when  an IOM can be
deleted (among other things, the  FNPs connected to that IOM must

MTB-640                                                    Page 5

FNPs  currently  employ  only   one  physical  channel  as  their
connection to the IOM.  This physical channel is addressed as one
logical channel.   In order to deconfigure  this logical channel,
we would require that the FNP  must first be made inactive.  Some
FNPs  have  available a  SECOND  physical channel.   Some thought
should be given as to how to dynamically switch from one physical
channel to  the other.  This is  a complicated problem, involving
synchronization  between  the  FNP   resident  programs  and  the
hardcore.   For  this  reason,  I propose  that  this  problem be
deferred until later.

Note:  Some future DIAs may  support more than one logical
channel  per physical  channel.  It  will take some
changes to  the FNP software to  be able to support
this feature.   When this is done,  there will also
be a  problem with deconfiguring  a logical channel
connected to an FNP, as  the FNP must be made aware
that  the  channel  is not  available.   This whole

Page 6                                                    MTB-640

5 LOGICAL CHANNEL RECONFIGURATION

5.1 General

While  not  inherently   difficult,  dynamic  reconfiguration  of
logical channels  is complicated by the  variety of modules which
manage them.  Logical channels can  be under the control of ioi_,
disk_control, ocdcm_, or FNPs.   The io_manager interface will be
extended to include adding and deleting channels, and IOI will be
the caller of these entries.  It is not necessary to consider the
non-IOI devices since these devices have only one channel, and in
order to  delete the channel,  the device would have  had to have
been  deleted first.   IOI will usurp  channels from disk_control
when  disk  channels  are deleted,  and  will cede  them  to disk
control when they are added.

5.2 Deleting Logical Channels

In order to delete a logical  channel, the channel must not be in
use.   Also, it  may not  be the  only logical  channel which can
reach an as yet undeleted device.  If it is, an appropriate error
code  is  returned.  The  other  check which  is performed  is to
ensure that the base logical channel of a physical channel is not
deleted if  the other logical  channels on that  physical channel
have not all been deleted.   This is done because certain special
interrupts  always  interrupt on  the  base logical  channel, and
deleting this channel would make  Multics unable to process these
interrupts.

Assuming that the channel is able  to be deleted, it is marked as
deleted  in  the iom_data  database.  Calls  to io_manager$assign
will return an error code indicating that the logical channel has
been deleted.

5.3 Adding Logical Channels

Adding  logical  channels  is a  straightforward  operation.  The

MTB-640                                                    Page 7

6 RECONFIGURATION OF MPCS

6.1 General

MPCs  (Microprogrammed Peripheral  Controllers) interface  on one
side  to peripheral  devices, and  on the  other side  to logical
channels (and hence, the IOM).  One  MPC may be connected to more
than one IOM, which somewhat complicates the job of reconfiguring
them.  The general philosopy remains the same:  an MPC may not be
deleted if it is part of  the only available path to an undeleted
device.  For example, in the figure below (from the configuration
of a large Multics site in the American southwest), if any of the
disk drives making up subsystem dskc are not deleted, then either
mspc or mspd may be deleted, but not both.

+-------+                                        +-------+
|       |                                        |       |
| iom a |    +------+                +------+    | iom b |
|       |====|      |                |      |====|       |
+-------+    | mspc |    +------+    | mspd |    +-------+
|      |====|      |====|      |
+------+    | dskc |    +------+
|      |
+------+

Figure 1.  Sample MPC configuration

When adding an MPC, it may be advisable to reload the firmware of
the MPC.   The routines which add  an MPC could allow  this as an
option.   In  the future,  we  should probably  add an  mpcs (MPC
state) card  which tells whether the  MPC is on or  off, and what
firmware is loaded  in it.  This would allow us  to boot a system
with a given  system in the off state, and  add it later, much as
can be done with memory and CPUs today.

Other  than firmware  considerations, adding and  deleting an MPC
consists of adding and deleting  the channels associated with it.
In fact, there will be no ring 0 support for explicitly adding or
deleting  an MPC.   The commands  will simply  add or  delete the

Page 8                                                    MTB-640

7 IOM RECONFIGURATION

7.1 Deleting IOMs

In order to  delete an IOM, all logical  channels connected to it
must have  been previously deleted.  This  can be accomplished in
one of two  ways:  the channels may be  deleted by explicit calls
(see "Logical Channel Reconfiguration" earlier in this paper), or
the user may specify that all necessary deconfiguration to effect
the deletion of  the IOM should be performed.   If for any reason
some part of this deconfiguration should fail, the effect will be
as  if  the call  had not  been issued:   nothing will  have been
deconfigured.

7.2 Adding IOMs

To add an  IOM to the configuration, it must  of course appear in
the config deck.  In addition, several consistency checks will be
made  in  an attempt  to  ensure that  adding  this IOM  will not
compromise the integrity of the system.  It appears impossible to
check all of the switch  settings on the IOM configuration panel,
but we already have to trust  them anyway on all but the bootload
IOM.  Since the consequences of adding  an IOM to the system with
incorrect switch  settings can be catastrophic  (the integrity of
the  storage  system could  be compromised),  we must  make every
effort to verify as much of these switch settings as possible.  A
clever use of the wrap-around channel of the IOM will be employed
here.

Just as it is possible for a  CPU to appear in the config deck as
off  when the  system is booted,  so will  the IOM be  able to be
marked as  off at bootload  time.  This denotes an  IOM which can
later  be  dynamically added.   When  adding an  IOM, it  will be
possible to  specify whether to  add only the IOM,  or whether to
add everything which, according to  the config deck, is connected

MTB-640                                                    Page 9

8 SUBROUTINE DESCRIPTIONS

This section gives the declarations  of the new subroutines which
will be added to Multics.  These  entries will be added to hphcs_
for the obvious reason.

          ______                                                     ______

hphcs_                                                     hphcs_
______                                                     ______

Name:  hphcs_

Entry:  hphcs_$add_channel

The  hphcs_$add_channel  entry  is  used  to  add  a logical
channel  which  is currently  deleted  to the  pool  of available
channels.  An error  will be returned if the  channel to be added
is not the  base logical channel of its  physical channel and the
base logical channel is currently deleted.  An error will also be
returned  if   the  logical  channel  is   connected  to  an  I/O
multiplexer which is currently deleted.

Usage

dcl hphcs_$add_channel entry (char (8) aligned,
fixed bin (35));

call hphcs_$add_channel (chanid, code);

where:

chanid                       (Input)
is  the  identifier  of  the  channel  (e.g.   "a19",
"b23").

code                         (Output)
is a standard system status code.

          ______                                                     ______

hphcs_                                                     hphcs_
______                                                     ______

Entry:  hphcs_$add_io_multiplexer

The hphcs_$add_io_multiplexer entry adds a currently deleted
I/O  multiplexer  to  the  pool of  available  multiplexers.  The
multiplexer  must appear  in the  config deck  and be  in the off
state.   No  logical channels  connected  to the  multiplexer are
added  by  this call;  they must  be added  by explicit  calls to
hphcs_$add_channel.

Usage

dcl hphcs_$add_io_multiplexer entry (char (1),
fixed bin (35));

call hphcs_$add_io_multiplexer (tag, code);

where:

tag                          (Input)
is  the tag  which identifies the  multiplexer in the
config  deck.   Currently  acceptable  tags  are  the
letters a through d.

code                         (Output)
is a standard system status code.

          ______                                                     ______

hphcs_                                                     hphcs_
______                                                     ______

Entry:  hphcs_$delete_channel

The   hphcs_$delete_channel   entry   removes   a  currently
available  logical  channel  from  the pool  of  logical channels
available for I/O.   A lgical channel cannot be  deleted if it is
part of the only currently available path to an undeleted device.
A  logical channel  cannot be deleted  if it is  the base logical
channel of its physical channel and there are currently undeleted
logical channels of the same physical channel.

Usage

dcl hphcs_$delete_channel entry (char (8) aligned,
fixed bin (35));

call hphcs_$delete_channel (chanid, code);

where:

chanid                       (Input)
is the channel identifier.

code                         (Output)
is a standard system status code.

          ______                                                     ______

hphcs_                                                     hphcs_
______                                                     ______

Entry:  hphcs_$delete_io_multiplexer

The   hphcs_$delete_io_multiplexer  entry   deletes  an  I/O
multiplexer  from  the   current  configuration.   The  specified
multiplexer  must  appear in  the config  deck and  be in  the on
state.   All logical  channels connected to  the multiplexer must
have previously been deleted.

Usage

dcl hphcs_$delete_io_multiplexer entry (char (1),
fixed bin (35));

call hphcs_$delete_io_multiplexer (tag, code);

where:

tag                          (Input)
is the  multiplexer tag as  it appears in  the config
deck.  Acceptable values are the letters a through d.

code                         (Output)
is a standard system status code.

          Page 14                                                   MTB-640

9 COMMAND DESCRIPTIONS

This section  gives the documentation  of the new  commands which
will be added to Multics.

          ______________                                     ______________

addchan (addc)                                     addchan (addc)
______________                                     ______________

Name:  addchan (addc)

SYNTAX AS A COMMAND:

addchan chanid {-control_args}

FUNCTION:  adds the specified logical channel.

ARGUMENTS:

chanid
is the logical channel's chanid (e.g.  a23, c53).

CONTROL ARGUMENTS:

-all, -a
adds any deleted devices which  now have an I/O path available
to  them.  If  any such devices  are unable to  be added, this
command  will  still succeed.   Any devices  so added  will be
announced (unless -brief is used).

-brief, -bf
Causes any devices added by this command not to be announced.

NOTES:

When adding an IOM to a running system, it is imperative that its
switch settings be  as described in Appendix A  of The Operator's
Guide to Multics  (Order No.  GB61).  While every  effort is made
by software  to verify these  switch settings, the  design of the
IOM prevents all relevant switch  settings from being verified.
FAILURE TO ENSURE  THAT THE IOM SWITCHES ARE  SET CORRECTLY COULD
RESULT IN A DISASTEROUS CRASH.

EXAMPLES:
addchan b19 -bf -a

          _____________                                       _____________

addiom (addi)                                       addiom (addi)
_____________                                       _____________

Name:  addiom (addi)

SYNTAX AS A COMMAND:

addiom tag {-control_args}

FUNCTION:  adds the specified IOM.

ARGUMENTS:

tag
is the IOM's tag as specified in the config deck.

CONTROL ARGUMENTS:

-all, -a
adds  all of  this IOM's  configured logical  channels and any
deleted devices which now have  an I/O path available to them.
If any such devices are unable  to be added, this command will
still succeed.  Any devices so added will be announced (unless
-brief is used).

-brief, -bf
Causes any devices added by this command not to be announced.

EXAMPLES:
addiom b -bf -a

          ______                                                     ______

addmpc                                                     addmpc
______                                                     ______

Name:  addmpc

SYNTAX AS A COMMAND:

addmpc mpc_name {-control_args}

FUNCTION:   adds  the  specified  MPC,  including  its associated
physical and logical channels.

ARGUMENTS:

mpc_name
is the name of the MPC to be added (e.g.  dskg, mtpc).

CONTROL ARGUMENTS:

-all, -a
adds any deleted devices which  now have an I/O path available
to  them.  If  any such devices  are unable to  be added, this
command  will  still succeed.   Any devices  so added  will be
announced (unless -brief is used).

-brief, -bf
Causes any devices added by this command not to be announced.

EXAMPLES:
addmpc mtpa -a
addmpc:   Also  added  devices  tapa_01,  tapa_02,  tapa_03,  and
tapa_04.

          ________                                                 ________

addpchan                                                 addpchan
________                                                 ________

Name:  addpchan

SYNTAX AS A COMMAND:

addpchan chanid {-control_args}

FUNCTION:   adds the  specified physical  channel as  well as its
associated logical channels.

ARGUMENTS:

chanid
is the  name of the  physical channel to be  added (e.g.  a24,
b30).  A physical channel is identified by the lowest numbered
logical channel  which is part  of the physical  channel.  For
example, if  a physical channel is  shared by logical channels
a24, a25, a26, and a27, it is identified as a24.

CONTROL ARGUMENTS:

-all, -a
adds any deleted devices which  now have an I/O path available
to  them.  If  any such devices  are unable to  be added, this
command  will  still succeed.   Any devices  so added  will be
announced (unless -brief is used).

-brief, -bf
Causes any devices added by this command not to be announced.

EXAMPLES:
addpchan a18 -a
addpchan:  Also added device tapa_03.

          ______________                                     ______________

delchan (delc)                                     delchan (delc)
______________                                     ______________

Name:  delchan (delc)

SYNTAX AS A COMMAND:

delc chanid {-control_args}

FUNCTION:  deletes the specified logical channel.

ARGUMENTS:

chanid
is the name of the channel to be deleted (e.g.  a32, b09).

CONTROL ARGUMENTS:

-force, -fc
deletes the channel even if  it must delete unattached devices
to do so.   No attached devices will be  deleted, however, and
this command will fail if there are such attached devices.  If
any unattached devices are deleted,  they will be announced by
this command (unless -brief is used).

-brief, -bf
Causes  any  devices  deleted  by   this  command  not  to  be
announced.

EXAMPLES:
delc a34

delc b27 -fc
delchan:  Also deleted device prtc.

          _____________                                       _____________

deliom (deli)                                       deliom (deli)
_____________                                       _____________

Name:  deliom (deli)

SYNTAX AS A COMMAND:

deld tag {-control_arg}

FUNCTION:  deletes the specified I/O multiplexer.

ARGUMENTS:

tag
is the tag of the IOM to be deleted (i.e.  a, b, c, or d)

CONTROL ARGUMENTS:

-force, -fc
deletes the channel even if  it must delete unattached devices
and channels to  do so.  No attached devices  will be deleted,
however, and this command will fail if there are such attached
devices.  If any unattached devices  are deleted, they will be
announced by this command.

EXAMPLES:
deli a

deli b

          ______                                                     ______

delmpc                                                     delmpc
______                                                     ______

Name:  delmpc

SYNTAX AS A COMMAND:

delmpc mpc_name {-control_args}

FUNCTION:   deletes  the specified  MPC including  its associated
physical and logical channels.

ARGUMENTS:

mpc_name
is the name of the MPC to be deleted (e.g.  mtpa, urpb).

CONTROL ARGUMENTS:

-force, -fc
deletes the MPC  even if it must delete  unattached devices to
do so.  No attached devices will be deleted, however, and this
command will fail if there  are such attached devices.  If any
unattached devices are deleted, they will be announced by this
command (unless -brief is used).

-brief, -bf
Causes  any  devices  deleted  by   this  command  not  to  be
announced.

EXAMPLES:
delmpc urpa

delmpc mtpa -fc
delmpc:  Also deleted device tapa_03.

          ________                                                 ________

delpchan                                                 delpchan
________                                                 ________

Name:  delpchan

SYNTAX AS A COMMAND:

delpchan chanid {-control_args}

FUNCTION:   deletes  the  specified   physical  channel  and  its
associated logical channels.

ARGUMENTS:

chanid
is the name of the physical  channel to be deleted (e.g.  a24,
b30).  A physical channel is identified by the lowest numbered
logical channel  which is part  of the physical  channel.  For
example, if  a physical channel is  shared by logical channels
a24, a25, a26, and a27, it is identified as a24.

CONTROL ARGUMENTS:

-force, -fc
deletes the physical channel even if it must delete unattached
devices  to  do  so.   No attached  devices  will  be deleted,
however, and this command will fail if there are such attached
devices.  If any unattached devices  are deleted, they will be
announced by this command (unless -brief is used).

-brief, -bf
Causes  any  devices  deleted  by   this  command  not  to  be
announced.

EXAMPLES:
delpchan a18 -fc
delpchan:  Also deleted device tapa_03.

          ________________________                 ________________________

vacate_pdir_volume (vpv)                 vacate_pdir_volume (vpv)
________________________                 ________________________

Name:  vacate_pdir_volume (vpv)

SYNTAX AS A COMMAND:

vacate_pdir_volume lvname

FUNCTION:  moves all process directories on the specified logical
volume  to  other logical  volumes.   The process  directories so
moved will  be distributed among the  other logical volumes which
are eligible  to receive process directories.   This command must
be  given to  move any process  directories off  a logical volume
which is about to be deleted.

ARGUMENTS:

lvname
is the name of the logical volume to be vacated.

EXAMPLES:  vpv Temp;dlv Temp