2009-03-10 08:20:30

by Norman Diamond

[permalink] [raw]
Subject: LIBATA told me it's broken

Sorry the kernel is 2.6.24.3 but I can't use a newer one
yet because TASKFILEs broke in newer ones. This time I
booted with kernel parameter hda=noprobe so the hard disk
went to LIBATA instead of IDE. The breakage shown below
is in LIBATA.

If LIBATA is fixed in newer kernel versions please say.
If there's a version of Slax where LIBATA works then maybe
I can recompile its kernel without IDE.

struct sg_io_hdr sg_io;
uint8_t cdb[16];
uint8_t sense[32];
uint8_t buffer[0x20000]; // length = 256 * 512
memset(&sg_io, 0, sizeof sg_io);
memset(&cdb, 0, sizeof cdb);
memset(&sense, 0, sizeof sense);
memset(&buffer, 0xe5, sizeof buffer);
cdb[0] = 0x8a; // WRITE (16)
cdb[6] = 0x0f;
cdb[7] = 0xff;
cdb[8] = 0xff;
cdb[9] = 0x00; // start = 0x0fffff00
cdb[12] = 0x01;
cdb[13] = 0x00; // count = 0x0100
sg_io.interface_id = 'S';
sg_io.cmdp = cdb;
sg_io.cmd_len = sizeof cdb;
sg_io.dxferp = buffer;
sg_io.dxfer_len = 256 * 512;
sg_io.dxfer_direction = SG_DXFER_TO_DEV;
sg_io.sbp = sense;
sg_io.mx_sb_len = sizeof sense;
sg_io.timeout = 2000;
fd = open("/dev/sda", O_WRONLY); // succeeded
ioctl(fd, SG_IO, &sg_io); // ioctl succeeded
// but LIBATA failed

CHECK CONDITION
sense:
72 0b 14 00 00 00 00 0c 00 0a 80 00 00 00 00 00
0f ff ff 00

/dev/sda is a 250GB SATA drive but Dell's Intel ICH7M
presents it as ATA. Ranges before and after the magic
LBA28 boundary wrote perfectly.



--------------------------------------
Power up the Internet with Yahoo! Toolbar.
http://pr.mail.yahoo.co.jp/toolbar/


2009-03-10 23:55:59

by Robert Hancock

[permalink] [raw]
Subject: Re: LIBATA told me it's broken

Norman Diamond wrote:
> Sorry the kernel is 2.6.24.3 but I can't use a newer one
> yet because TASKFILEs broke in newer ones. This time I
> booted with kernel parameter hda=noprobe so the hard disk
> went to LIBATA instead of IDE. The breakage shown below
> is in LIBATA.
>
> If LIBATA is fixed in newer kernel versions please say.
> If there's a version of Slax where LIBATA works then maybe
> I can recompile its kernel without IDE.

There have been a ton of changes in libata since 2.6.24, it's hard to
say whether anything has changed along the way that would affect this.
The easiest way to find out is to try a newer kernel.

>
> struct sg_io_hdr sg_io;
> uint8_t cdb[16];
> uint8_t sense[32];
> uint8_t buffer[0x20000]; // length = 256 * 512
> memset(&sg_io, 0, sizeof sg_io);
> memset(&cdb, 0, sizeof cdb);
> memset(&sense, 0, sizeof sense);
> memset(&buffer, 0xe5, sizeof buffer);
> cdb[0] = 0x8a; // WRITE (16)
> cdb[6] = 0x0f;
> cdb[7] = 0xff;
> cdb[8] = 0xff;
> cdb[9] = 0x00; // start = 0x0fffff00
> cdb[12] = 0x01;
> cdb[13] = 0x00; // count = 0x0100
> sg_io.interface_id = 'S';
> sg_io.cmdp = cdb;
> sg_io.cmd_len = sizeof cdb;
> sg_io.dxferp = buffer;
> sg_io.dxfer_len = 256 * 512;
> sg_io.dxfer_direction = SG_DXFER_TO_DEV;
> sg_io.sbp = sense;
> sg_io.mx_sb_len = sizeof sense;
> sg_io.timeout = 2000;
> fd = open("/dev/sda", O_WRONLY); // succeeded
> ioctl(fd, SG_IO, &sg_io); // ioctl succeeded
> // but LIBATA failed
>
> CHECK CONDITION
> sense:
> 72 0b 14 00 00 00 00 0c 00 0a 80 00 00 00 00 00
> 0f ff ff 00

Anything in dmesg?

>
> /dev/sda is a 250GB SATA drive but Dell's Intel ICH7M
> presents it as ATA. Ranges before and after the magic
> LBA28 boundary wrote perfectly.
>
>
>
> --------------------------------------
> Power up the Internet with Yahoo! Toolbar.
> http://pr.mail.yahoo.co.jp/toolbar/