Re: MNT Reform2 USB LCP flash

Staffan Thomén <[email protected]>
Newsgroups gmane.os.netbsd.devel.kernel
Message-ID <[email protected]>
Michael van Elst wrote:
> On Sat, Feb 03, 2024 at 09:55:47PM +0200, Staffan Thomén wrote:
>> Staffan Thomen wrote:
>>> [ 188.679957] sd0: 34816, 1 cyl, 64 head, 32 sec, 512 bytes/sect
>>> x 68 sectors [ 188.689958] autoconfiguration error: sd0: unable
>>> to open device, error = 5
>> Any thoughts of how to continue debugging this?
>
>
> A kernel compiled with SCSI_DEBUG can show which commands to the
> device actually fail and how. This should be the initial
> TEST_UNIT_READY and possibly the START command. No idea why, it's
> possible that these are not implemented and errors need to be
> ignored.

I built a kernel with options SCSIDEBUG, SCSIVERBOSE and SCSI_DEBUG, and
saw nothing new in the dmesg.

The man page for scsi(4) says that SCSIDEBUG (not SCSI_DEBUG) enables
ioctls for extra printfs, so I wrote this small program to run the
ioctl, but it still fails on the open call with Input/output error (EIO).

I tried /dev/sd0, /dev/sd0d, /dev/rsd0, /dev/rsd0d, /dev/sd0c and
/dev/rsd0c.

For good measure, I tried it on /dev/scsibus0 and that gave me an EFAULT
from ioctl.

I just now noticed that scsictl actually implements this ioctl as well,
but it also errors out with EIO.

The man page for scsictl(8) says that SCSIPI_DEBUG is the required option...

I think I'm more confused than before now. What enables scsi command
debugging?

Staffan

--8<--

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>

#include <unistd.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/scsiio.h>

int main(int argc, char **argv) {
         if (argc < 2) {
                 printf("Usage: %s <device>\n", getprogname());
                 return -1;
         }

         int fd = open(argv[1], O_RDONLY);

         if (fd == -1) {
                 perror("open");
                 return -1;
         }

         int result = ioctl(fd, SCIOCDEBUG, 0x15);

         if (result == -1)
                 perror("ioctl");

         close(fd);

         return 0;
}
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.