Re: [hatari-devel] Cycle exact setting affects nf_scsidrv

[ Thread Index | Date Index | More lists.tuxfamily.org/hatari-devel Archives ]


Hi,

On 10/11/18 11:29 AM, Uwe Seimet wrote:
Some more information: There is the same problem when I enable prefetch
instead of cycle exact. With one of these options enabled, the first time
when I start HDDRUTIL after resetting, parts of the data provided by
nf_scsidrv.c (in particular the device names) are incomplete.
Looks as if both options have something in common that causes this.

Aranym doesn't emulate CPU caches, so you can't see cache related
issues with it.

However, the options you listed, are about caching, and Hatari does
emulate CPU caches.

Any writes that host side driver does to emulated memory, should be
accompanied with Atari data cache flush:
	M68000_Flush_Data_Cache(addr, size);

And if the written content may contain 68k instructions that might
also end up being executed by the emulated system (like GEMDOS Fread()
content in GEMDOS HD driver), both caches should be flushed instead:
	M68000_Flush_All_Caches(addr, size);

I don't see these flushes in your nf_scsidrv.c Hatari code.

Tested patches welcome! :-)


	- Eero

Yet another thread I'm afraid, related to the Cycle exact setting. With
this setting disabled and the SCSI Driver for Linux installed SDRVTEST (see
https://www.hddriver.net/en/downloads.html) the result is the attached
logfile SDRVTEST.L1. Now I press F12, enable Cycle exact and restart
Hatari. When running SDRVTEST again the output is broken, see attached
SDRVTEST.L2. Now I press F12 again, disabled Cacle exact, restart and
run SDRVTEST once more. This time the output is correct again.

This means that the Cycle exact setting either influences the code
execution of the native scsidrv_inout method in nf_scsidrv.c, or the
emulated code of NF_SCSI (also see https://www.hddriver.net/en/downloads.html)
behaves differently. I observe the same behavior with the Hatari 2.1.0
release version.

When launching HDDRUTIL the effect is similar: The device names are
incomplete, as if some of the data did not make it from the native part
into the emulated part of the code.

When I double-check with Aranym, where essentially the same native SCSI
Driver code and exactly the same emulated NF_SCSI code is running,
everything is fine. Only on Hatari with Cycle exact enabled the results
are not correct.

Best regards

Uwe

SCSI Driver test V1.35
? 2014-2018 Uwe Seimet

Found SCSI Driver version 1.01

Buses:
   ID: 0, Name: 'Atari ACSI', Maximum transfer length: 65536 ($10000)
   ID: 1, Name: 'Atari SCSI', Maximum transfer length: 268435456 ($10000000)
   ID: 31, Name: 'Linux Generic SCSI', Maximum transfer length: 65536 ($10000)

Testing bus 'Linux Generic SCSI', device ID 0
   CheckDev()
     Checking with illegal bus ID
     Checking with legal bus ID
   Open/Close()
     Available handles: 32
   TEST UNIT READY
   INQUIRY
     Calling with legal data
       Device type: Direct Access
       Device name: 'ATA     Samsung SSD 840 '
       Firmware revision: '6B0Q'
       SCSI/SPC version: SPC-3
       Additional length: $5B
     Calling with non-existing LUN 7
     ERROR: Call failed: 2
   REQUEST SENSE
     Calling REQUEST SENSE for existing LUN 0
       Additional sense length: $02
       ERROR: Additional sense length must be at least $0A
     Calling REQUEST SENSE for non-existing LUN 7
     ERROR: Call failed: 2
     ERROR: Call was not properly rejected
       Expected: SenseKey $05 ($00), ASC $25 ($00)
     Calling REQUEST SENSE again for existing LUN 0
   READ CAPACITY
     Reading capacity with READ CAPACITY (10)
       Maximum block number: 500118191
       Block size: 512
     Reading capacity with READ CAPACITY (16)
       Maximum block number hi: 0, maximum block number lo: 500118191
       Maximum block number: 500118191
       Block size: 512
       Logical sectors per physical sector: Unknown
     Reading last block (500118191)
     Trying to read last block + 1 (500118192)
   READ
     Reading block 0 with READ (6)
     Reading block 0 with READ (10)
     Reading block 0 with READ (12)
       READ (12) is not supported
     Reading block 0 with READ (16)
     Trying to read block 281474976710656 with READ (16)
     Reading block 0 to odd address with READ (6)
     Reading block 0 from non-existing LUN 7
   REPORT LUNS
     Number of LUNs: 1
       List of LUNs: 0
OK

Testing bus 'Linux Generic SCSI', device ID 1
   CheckDev()
     Checking with illegal bus ID
     Checking with legal bus ID
   Open/Close()
     Available handles: 32
   TEST UNIT READY
   INQUIRY
     Calling with legal data
       Device type: Direct Access
       Device name: 'ATA     Samsung SSD 850 '
       Firmware revision: '2B6Q'
       SCSI/SPC version: SPC-3
       Additional length: $5B
     Calling with non-existing LUN 7
     ERROR: Call failed: 2
   REQUEST SENSE
     Calling REQUEST SENSE for existing LUN 0
       Additional sense length: $02
       ERROR: Additional sense length must be at least $0A
     Calling REQUEST SENSE for non-existing LUN 7
     ERROR: Call failed: 2
     ERROR: Call was not properly rejected
       Expected: SenseKey $05 ($00), ASC $25 ($00)
     Calling REQUEST SENSE again for existing LUN 0
   READ CAPACITY
     Reading capacity with READ CAPACITY (10)
       Maximum block number: 500118191
       Block size: 512
     Reading capacity with READ CAPACITY (16)
       Maximum block number hi: 0, maximum block number lo: 500118191
       Maximum block number: 500118191
       Block size: 512
       Logical sectors per physical sector: Unknown
     Reading last block (500118191)
     Trying to read last block + 1 (500118192)
   READ
     Reading block 0 with READ (6)
     Reading block 0 with READ (10)
     Reading block 0 with READ (12)
       READ (12) is not supported
     Reading block 0 with READ (16)
     Trying to read block 281474976710656 with READ (16)
     Reading block 0 to odd address with READ (6)
     Reading block 0 from non-existing LUN 7
   REPORT LUNS
     Number of LUNs: 1
       List of LUNs: 0
OK

Testing bus 'Linux Generic SCSI', device ID 2
   CheckDev()
     Checking with illegal bus ID
     Checking with legal bus ID
   Open/Close()
     Available handles: 32
   TEST UNIT READY
     Medium not present
   INQUIRY
     Calling with legal data
       Device type: Direct Access
       Device name: 'Generic STORAGE DEVICE  '
       Firmware revision: '9744'
       SCSI/SPC version: -
       Additional length: $29
     Calling with non-existing LUN 7
     ERROR: Call failed: 2
   REQUEST SENSE
     Calling REQUEST SENSE for existing LUN 0
       Additional sense length: $0A
     Calling REQUEST SENSE for non-existing LUN 7
     ERROR: Call failed: 2
     ERROR: Call was not properly rejected
       Expected: SenseKey $05 ($00), ASC $25 ($00)
     Calling REQUEST SENSE again for existing LUN 0
   READ CAPACITY
     Reading capacity with READ CAPACITY (10)
     Medium not present
   REPORT LUNS
     No medium inserted
ERROR

Testing bus 'Linux Generic SCSI', device ID 3
   CheckDev()
     Checking with illegal bus ID
     Checking with legal bus ID
   Open/Close()
     Available handles: 32
   TEST UNIT READY
     Medium not present
   INQUIRY
     Calling with legal data
       Device type: Direct Access
       Device name: 'Generic STORAGE DEVICE  '
       Firmware revision: '9744'
       SCSI/SPC version: -
       Additional length: $29
     Calling with non-existing LUN 7
     ERROR: Call failed: 2
   REQUEST SENSE
     Calling REQUEST SENSE for existing LUN 0
       Additional sense length: $0A
     Calling REQUEST SENSE for non-existing LUN 7
     ERROR: Call failed: 2
     ERROR: Call was not properly rejected
       Expected: SenseKey $05 ($00), ASC $25 ($00)
     Calling REQUEST SENSE again for existing LUN 0
   READ CAPACITY
     Reading capacity with READ CAPACITY (10)
     Medium not present
   REPORT LUNS
     No medium inserted
ERROR

Testing bus 'Linux Generic SCSI', device ID 4
   CheckDev()
     Checking with illegal bus ID
     Checking with legal bus ID
   Open/Close()
     Available handles: 32
   TEST UNIT READY
     Medium not present
   INQUIRY
     Calling with legal data
       Device type: Direct Access
       Device name: 'Generic STORAGE DEVICE  '
       Firmware revision: '9744'
       SCSI/SPC version: -
       Additional length: $29
     Calling with non-existing LUN 7
     ERROR: Call failed: 2
   REQUEST SENSE
     Calling REQUEST SENSE for existing LUN 0
       Additional sense length: $0A
     Calling REQUEST SENSE for non-existing LUN 7
     ERROR: Call failed: 2
     ERROR: Call was not properly rejected
       Expected: SenseKey $05 ($00), ASC $25 ($00)
     Calling REQUEST SENSE again for existing LUN 0
   READ CAPACITY
     Reading capacity with READ CAPACITY (10)
     Medium not present
   REPORT LUNS
     No medium inserted
ERROR

Testing bus 'Linux Generic SCSI', device ID 5
   CheckDev()
     Checking with illegal bus ID
     Checking with legal bus ID
   Open/Close()
     Available handles: 32
   TEST UNIT READY
     Medium not present
   INQUIRY
     Calling with legal data
       Device type: Direct Access
       Device name: 'Generic STORAGE DEVICE  '
       Firmware revision: '9744'
       SCSI/SPC version: -
       Additional length: $29
     Calling with non-existing LUN 7
     ERROR: Call failed: 2
   REQUEST SENSE
     Calling REQUEST SENSE for existing LUN 0
       Additional sense length: $0A
     Calling REQUEST SENSE for non-existing LUN 7
     ERROR: Call failed: 2
     ERROR: Call was not properly rejected
       Expected: SenseKey $05 ($00), ASC $25 ($00)
     Calling REQUEST SENSE again for existing LUN 0
   READ CAPACITY
     Reading capacity with READ CAPACITY (10)
     Medium not present
   REPORT LUNS
     No medium inserted
ERROR

Testing bus 'Linux Generic SCSI', device ID 6
   CheckDev()
     Checking with illegal bus ID
     Checking with legal bus ID
   Open/Close()
     Available handles: 32
   TEST UNIT READY
     Medium not present
   INQUIRY
     Calling with legal data
       Device type: Direct Access
       Device name: 'Generic STORAGE DEVICE  '
       Firmware revision: '9744'
       SCSI/SPC version: -
       Additional length: $29
     Calling with non-existing LUN 7
     ERROR: Call failed: 2
   REQUEST SENSE
     Calling REQUEST SENSE for existing LUN 0
       Additional sense length: $0A
     Calling REQUEST SENSE for non-existing LUN 7
     ERROR: Call failed: 2
     ERROR: Call was not properly rejected
       Expected: SenseKey $05 ($00), ASC $25 ($00)
     Calling REQUEST SENSE again for existing LUN 0
   READ CAPACITY
     Reading capacity with READ CAPACITY (10)
     Medium not present
   REPORT LUNS
     No medium inserted
ERROR

SCSI Driver test V1.35
? 2014-2018 Uwe Seimet

Found SCSI Driver version 1.01

Buses:
   ID: 0, Name: 'Atari ACSI', Maximum transfer length: 65536 ($10000)
   ID: 1, Name: 'Atari SCSI', Maximum transfer length: 268435456 ($10000000)
   ID: 31, Name: 'Linux Generic SCSI', Maximum transfer length: 65536 ($10000)

Testing bus 'Linux Generic SCSI', device ID 0
   CheckDev()
     Checking with illegal bus ID
     Checking with legal bus ID
   Open/Close()
     Available handles: 32
   TEST UNIT READY
   INQUIRY
     Calling with legal data
       Device type: Direct Access
       Device name: ''
       Firmware revision: ''
       SCSI/SPC version: SPC-3
       Additional length: $5B
     Calling with non-existing LUN 7
     ERROR: Call failed: 2
   REQUEST SENSE
     Calling REQUEST SENSE for existing LUN 0
       Additional sense length: $02
       ERROR: Additional sense length must be at least $0A
     Calling REQUEST SENSE for non-existing LUN 7
     ERROR: Call failed: 2
     ERROR: Call was not properly rejected
       Expected: SenseKey $05 ($00), ASC $25 ($00)
     Calling REQUEST SENSE again for existing LUN 0
   READ CAPACITY
     Reading capacity with READ CAPACITY (10)
       Maximum block number: 500118191
       Block size: 512
     Reading capacity with READ CAPACITY (16)
       Maximum block number hi: 0, maximum block number lo: 500118191
       Maximum block number: 500118191
       Block size: 512
       Logical sectors per physical sector: Unknown
     Reading last block (500118191)
     Trying to read last block + 1 (500118192)
   READ
     Reading block 0 with READ (6)
     Reading block 0 with READ (10)
     Reading block 0 with READ (12)
       READ (12) is not supported
     Reading block 0 with READ (16)
     Trying to read block 281474976710656 with READ (16)
     Reading block 0 to odd address with READ (6)
     Reading block 0 from non-existing LUN 7
   REPORT LUNS
     Number of LUNs: 1048576
       List of LUNs: 0
OK

Testing bus 'Linux Generic SCSI', device ID 1
   CheckDev()
     Checking with illegal bus ID
     Checking with legal bus ID
   Open/Close()
     Available handles: 32
   TEST UNIT READY
   INQUIRY
     Calling with legal data
       Device type: Direct Access
       Device name: ''
       Firmware revision: ''
       SCSI/SPC version: SPC-3
       Additional length: $5B
     Calling with non-existing LUN 7
     ERROR: Call failed: 2
   REQUEST SENSE
     Calling REQUEST SENSE for existing LUN 0
       Additional sense length: $02
       ERROR: Additional sense length must be at least $0A
     Calling REQUEST SENSE for non-existing LUN 7
     ERROR: Call failed: 2
     ERROR: Call was not properly rejected
       Expected: SenseKey $05 ($00), ASC $25 ($00)
     Calling REQUEST SENSE again for existing LUN 0
   READ CAPACITY
     Reading capacity with READ CAPACITY (10)
       Maximum block number: 500118191
       Block size: 512
     Reading capacity with READ CAPACITY (16)
       Maximum block number hi: 0, maximum block number lo: 500118191
       Maximum block number: 500118191
       Block size: 512
       Logical sectors per physical sector: Unknown
     Reading last block (500118191)
     Trying to read last block + 1 (500118192)
   READ
     Reading block 0 with READ (6)
     Reading block 0 with READ (10)
     Reading block 0 with READ (12)
       READ (12) is not supported
     Reading block 0 with READ (16)
     Trying to read block 281474976710656 with READ (16)
     Reading block 0 to odd address with READ (6)
     Reading block 0 from non-existing LUN 7
   REPORT LUNS
     Number of LUNs: 1048576
       List of LUNs: 0
OK

Testing bus 'Linux Generic SCSI', device ID 2
   CheckDev()
     Checking with illegal bus ID
     Checking with legal bus ID
   Open/Close()
     Available handles: 32
   TEST UNIT READY
     Medium not present
   INQUIRY
     Calling with legal data
       Device type: Direct Access
       Device name: ''
       Firmware revision: ''
       SCSI/SPC version: -
       Additional length: $29
     Calling with non-existing LUN 7
     ERROR: Call failed: 2
   REQUEST SENSE
     Calling REQUEST SENSE for existing LUN 0
       Additional sense length: $0A
     Calling REQUEST SENSE for non-existing LUN 7
     ERROR: Call failed: 2
     ERROR: Call was not properly rejected
       Expected: SenseKey $05 ($00), ASC $25 ($00)
     Calling REQUEST SENSE again for existing LUN 0
   READ CAPACITY
     Reading capacity with READ CAPACITY (10)
     Medium not present
   REPORT LUNS
     No medium inserted
ERROR

Testing bus 'Linux Generic SCSI', device ID 3
   CheckDev()
     Checking with illegal bus ID
     Checking with legal bus ID
   Open/Close()
     Available handles: 32
   TEST UNIT READY
     Medium not present
   INQUIRY
     Calling with legal data
       Device type: Direct Access
       Device name: ''
       Firmware revision: ''
       SCSI/SPC version: -
       Additional length: $29
     Calling with non-existing LUN 7
     ERROR: Call failed: 2
   REQUEST SENSE
     Calling REQUEST SENSE for existing LUN 0
       Additional sense length: $0A
     Calling REQUEST SENSE for non-existing LUN 7
     ERROR: Call failed: 2
     ERROR: Call was not properly rejected
       Expected: SenseKey $05 ($00), ASC $25 ($00)
     Calling REQUEST SENSE again for existing LUN 0
   READ CAPACITY
     Reading capacity with READ CAPACITY (10)
     Medium not present
   REPORT LUNS
     No medium inserted
ERROR

Testing bus 'Linux Generic SCSI', device ID 4
   CheckDev()
     Checking with illegal bus ID
     Checking with legal bus ID
   Open/Close()
     Available handles: 32
   TEST UNIT READY
     Medium not present
   INQUIRY
     Calling with legal data
       Device type: Direct Access
       Device name: ''
       Firmware revision: ''
       SCSI/SPC version: -
       Additional length: $29
     Calling with non-existing LUN 7
     ERROR: Call failed: 2
   REQUEST SENSE
     Calling REQUEST SENSE for existing LUN 0
       Additional sense length: $0A
     Calling REQUEST SENSE for non-existing LUN 7
     ERROR: Call failed: 2
     ERROR: Call was not properly rejected
       Expected: SenseKey $05 ($00), ASC $25 ($00)
     Calling REQUEST SENSE again for existing LUN 0
   READ CAPACITY
     Reading capacity with READ CAPACITY (10)
     Medium not present
   REPORT LUNS
     No medium inserted
ERROR

Testing bus 'Linux Generic SCSI', device ID 5
   CheckDev()
     Checking with illegal bus ID
     Checking with legal bus ID
   Open/Close()
     Available handles: 32
   TEST UNIT READY
     Medium not present
   INQUIRY
     Calling with legal data
       Device type: Direct Access
       Device name: ''
       Firmware revision: ''
       SCSI/SPC version: -
       Additional length: $29
     Calling with non-existing LUN 7
     ERROR: Call failed: 2
   REQUEST SENSE
     Calling REQUEST SENSE for existing LUN 0
       Additional sense length: $0A
     Calling REQUEST SENSE for non-existing LUN 7
     ERROR: Call failed: 2
     ERROR: Call was not properly rejected
       Expected: SenseKey $05 ($00), ASC $25 ($00)
     Calling REQUEST SENSE again for existing LUN 0
   READ CAPACITY
     Reading capacity with READ CAPACITY (10)
     Medium not present
   REPORT LUNS
     No medium inserted
ERROR

Testing bus 'Linux Generic SCSI', device ID 6
   CheckDev()
     Checking with illegal bus ID
     Checking with legal bus ID
   Open/Close()
     Available handles: 32
   TEST UNIT READY
     Medium not present
   INQUIRY
     Calling with legal data
       Device type: Direct Access
       Device name: ''
       Firmware revision: ''
       SCSI/SPC version: -
       Additional length: $29
     Calling with non-existing LUN 7
     ERROR: Call failed: 2
   REQUEST SENSE
     Calling REQUEST SENSE for existing LUN 0
       Additional sense length: $0A
     Calling REQUEST SENSE for non-existing LUN 7
     ERROR: Call failed: 2
     ERROR: Call was not properly rejected
       Expected: SenseKey $05 ($00), ASC $25 ($00)
     Calling REQUEST SENSE again for existing LUN 0
   READ CAPACITY
     Reading capacity with READ CAPACITY (10)
     Medium not present
   REPORT LUNS
     No medium inserted
ERROR







Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/