ADDITIONAL CORE ERRATA TO IEEE 1275-1994.


TABLE OF CONTENTS.

Open Firmware Working Group Home Page.


ABOUT THIS PAGE.

This page contains additional errata not covered in the Core errata document. Each item references a proposal or other document authorizing the items publication in this list.

Table of Contents.
Open Firmware Working Group Home Page.


ADDITIONAL ERRATA.


Stack Diagram Error in endcase AND b(endcase)

This item is authorized by OFWG Proposal #389.

The run-time stack diagram for endcase and b(endcase) in 1275 disagrees with the stack diagram for ENDCASE in ANS Forth.

It should be (corrected) as:

	endcase		( sel -- )

It should not be (as published in the core document):

	( sel | < nothing > -- ).

The < nothing > case does not exist, because endof transfers control to the point just after endcase. The run-time action of endcase executes only when no of clause succeeded, i.e. the default case.

I think this is just a documentation error, because I'm not aware of any implementation that does the wrong thing.


Fix SCSI example usage of max-transfer

This item is authorized by OFWG Proposal #396.

The definition of max-transfer requires it to be rounded down to a multiple of block-size. The sample SCSI driver in Annex E sets max-transfer to h# 7f.ffff. Block-size is generally a power of two, often 512 bytes.

Change the value of max-transfer in annex E to h# 80.0000 which is a power of two:

	: max-transfer ( -- n )
	    " max-transfer" ['] $call-parent catch if 2drop h# 80.0000 then
	;


SCSI annex: Medium not present should not be retryable

This item is authorized by OFWG Proposal #404.

Refer to 1275-1994, Annex E (SCSI Host Adapter Package Class), Sections E3.2.2, definition of "retry-command", and the sample implementation of "classify-sense" in E6.3 "hacom.fth".

The classification of the "not ready" sense key (sense key value 2) as "retryable" is too general. One of the subcases of "not ready" is "medium not present", as indicated by an Additional Sense Code (the byte at sense data offset decimal 12) value of hex 3A and an Additional Sense Code Qualifier (the byte at sense data offset decimal 13) value of 0.

In order for a sense condition to be properly classified as "retryable", it should be self-correcting, so that the overall operation is likely to eventually succeed if it is retried enough times. "Medium not present" is not a self-correcting condition, so it should not be retried.

One specific situation in which this problem shows up is when the list of boot devices (i.e. the value of the "boot-file" configuration variable) contains a tape drive at some position other than the end of the list. Typically, the desired behavior in such a situation is for the system to boot from the tape drive if a tape is present, otherwise to proceed to the next device in the list. If "medium not present" is retryable, the system will instead wait indefinitely for a tape to be inserted.

In addition to this problem, the example code for "classify-sense" in E6.3 also fails to handle the "9) Transaction aborted ..." case listed on P223 L33.


On 1275-1994 P223 L31 (and the identical line in the SPI binding):

  Replace:

	7) sense key = Not Ready is retryable

  With:

	7) sense key = Not Ready is:
	    - not retryable if Additional Sense Code = 0x3A
	      and Additional Sense Code Qualifier = 0
	      (thus indicating "medium not present")
	    - retryable otherwise

On 1275-1994 P229 L54-55:

  Replace:

	\ not-ready(2) and attention(6) are retryable
	dup 2 =  swap 6 =  or  if 1  else  -1  then

  With:

	\ not-ready(2) may be retryable
	dup 2 =  if
	   \ check (tapes, especially) for MEDIUM NOT PRESENT: if the
	   \ medium's not there the command is not retryable
	   drop sense-buf h# c + c@  h# 3a =  sense-buf h# d + c@ 0=  and
	   if  -1  else  1  then
	   exit
	then

	\ attention(6), and target aborted (b) are retryable.
	dup 6 =  swap 0b =  or if  1  else  -1  then


SCSI annex: Fix implementation of show-lun

This item is authorized by OFWG Proposal #425.

Refer to 1275-1994, Annex E (SCSI Host Adapter Package Class), Sections E6.2, the sample implementation of the "show-lun" method in hacom.fth.

The current implementation of the "show-lun" method neglects to take into account a returned Qualifier value of 1h. This results in the misleading display of disconnected Logical Units.

What seems like an attempt to print the Qualifier value is actually an attempt to print the SCSI-1 Device Modifier value, which is usually 00h and no longer supported.

Make the following Change:

Change the line which tests for both a Qualifier of 3h and a Device Type of 1Fh so that it's behavior is identical for all non-zero Qualifier values (Vendor-specific values excepted) ...

Replace:
	0 inq@	h# 7f =   if drop exit	then		( unit )

With:
	0 inq@	h# 60 and if drop exit	then		( unit )

Remove the line which attempts to display a Qualifier value ...

Remove:
	1 inq@	h# 7f and ?dup  if ." Qualifier  " .h then

Refer to Proposal #425 for a replacement version of the show-lun method.


Clarify the return value from the set-callback client interface

This item is authorized by OFWG Proposal #440.

The definition of the set-callback client interface in section 6.3.2.6 of the core document fails to specify the value returned if the previous callback handler is unset.

The following text augments the definition of the set-callback client interface, originally defined in section 6.3.2.6 of the core specification.

Change the last sentence of the first paragraph of text in the set-callback description to:

	The service sets the callback handler to *newfunc*
	and returns in *oldfunc* the address of the entry
	point of the previously installed callback handler
	or the value zero if there is no previously installed
	callback handler.


Table of Contents.
Open Firmware Working Group Home Page.