Date: Tue, 25 Sep 2007 11:21:12 +0400 From: "Andrey V. Elsukov" <bu7cher@yandex.ru> To: Nathan Butcher <n-butcher@fusiongol.com> Cc: Dave Grochowski <malus.x@gmail.com>, freebsd-current@freebsd.org, =?UTF-8?B?U8O4cmVuIFNjaG1pZHQ=?= <sos@FreeBSD.org> Subject: Re: SATA DVD-Drive Message-ID: <46F8B6E8.4040201@yandex.ru> In-Reply-To: <46F86249.9090800@fusiongol.com> References: <46F86249.9090800@fusiongol.com>
next in thread | previous in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format. --------------020100090709050609020004 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Nathan Butcher wrote: > I think somebody determined that there has been some regression here, > because the JMicron controller works on FreeBSD 6.2 apparently. > That counts as two SATA chipsets I've noticed regression in with > 7.0-CURRENT (Jmicron and Promise SATA 150/300 TX4), which I really hope > get fixed before 7.0-RELEASE. Hi, All. Seems only an AHCI controllers affected by this problem. I think the regression was introduced in the rev. 1.187 of ata-chipset.c: http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/dev/ata/ata-chipset.c.diff?r1=1.186;r2=1.187 But the cause of problem is not here. I think kern/111699 related to this problem too. The problem in the port signature reading. Before this commit we have the following code: if ((ATA_IDX_INB(ch, ATA_CYL_LSB) == ATAPI_MAGIC_LSB) && (ATA_IDX_INB(ch, ATA_CYL_MSB) == ATAPI_MAGIC_MSB)) ch->devices = ATA_ATAPI_MASTER; else ch->devices = ATA_ATA_MASTER; It works in the FreeBSD-6.x. Now we have: switch (ATA_INL(ctlr->r_res2, ATA_AHCI_P_SIG + offset)) { case 0xeb140101: ch->devices = ATA_ATAPI_MASTER; device_printf(ch->dev, "SATA ATAPI devices not supported yet\n"); ch->devices = 0; break; case 0x96690101: ch->devices = ATA_PORTMULTIPLIER; device_printf(ch->dev, "Portmultipliers not supported yet\n"); ch->devices = 0; break; case 0x00000101: ch->devices = ATA_ATA_MASTER; break; } And it don't work. The returned signature is 0xFFFFFFFF. As a workaround we can add the default: ch->devices = ATA_ATA_MASTER; This code will be similar to 6.x code. But i think this is not right. May be someone can test the attached patch? Patch try to read port signature after starting AHCI engine, like linux do. Maybe this will help.. PS. Sorry, i can't this patch, because i don't have working AHCI controller. -- WBR, Andrey V. Elsukov --------------020100090709050609020004 Content-Type: text/plain; name="ata-chipset.c.diff" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="ata-chipset.c.diff" LS0tIHNyYy9zeXMvZGV2L2F0YS9hdGEtY2hpcHNldC5jLm9yaWcJMjAwNy0wOS0xMCAyMzox NjozOS4wMDAwMDAwMDAgKzA0MDAKKysrIHNyYy9zeXMvZGV2L2F0YS9hdGEtY2hpcHNldC5j CTIwMDctMDktMjUgMDk6MjU6NDcuMDAwMDAwMDAwICswNDAwCkBAIC02NzgsNyArNjc4LDcg QEAgYXRhX2FoY2lfcmVzZXQoZGV2aWNlX3QgZGV2KQogICAgIHN0cnVjdCBhdGFfY2hhbm5l bCAqY2ggPSBkZXZpY2VfZ2V0X3NvZnRjKGRldik7CiAgICAgdV9pbnQzMl90IGNtZDsKICAg ICBpbnQgb2Zmc2V0ID0gY2gtPnVuaXQgPDwgNzsKLSAgICBpbnQgdGltZW91dDsKKyAgICBp bnQgdGltZW91dCwgcmV0OwogCiAgICAgaWYgKCEoQVRBX0lOTChjdGxyLT5yX3JlczIsIEFU QV9BSENJX1BJKSAmICgxIDw8IGNoLT51bml0KSkpIHsKIAlkZXZpY2VfcHJpbnRmKGRldiwg InBvcnQgbm90IGltcGxlbWVudGVkXG4iKTsKQEAgLTcyMCw4ICs3MjAsMjMgQEAgYXRhX2Fo Y2lfcmVzZXQoZGV2aWNlX3QgZGV2KQogICAgIEFUQV9PVVRMKGN0bHItPnJfcmVzMiwgQVRB X0FIQ0lfUF9DTUQgKyBvZmZzZXQsIEFUQV9BSENJX1BfQ01EX1NVRCk7CiAKICAgICAvKiBl bmFibGUgaW50ZXJmYWNlICovCi0gICAgaWYgKGF0YV9zYXRhX3BoeV9yZXNldChkZXYpKSB7 Ci0Jc3dpdGNoIChBVEFfSU5MKGN0bHItPnJfcmVzMiwgQVRBX0FIQ0lfUF9TSUcgKyBvZmZz ZXQpKSB7CisgICAgcmV0ID0gYXRhX3NhdGFfcGh5X3Jlc2V0KGRldik7CisKKyAgICAvKiBj bGVhciBhbnkgaW50ZXJydXB0cyBwZW5kaW5nIG9uIHRoaXMgY2hhbm5lbCAqLworICAgIEFU QV9PVVRMKGN0bHItPnJfcmVzMiwgQVRBX0FIQ0lfUF9JUyArIG9mZnNldCwKKwkgICAgIEFU QV9JTkwoY3Rsci0+cl9yZXMyLCBBVEFfQUhDSV9QX0lTICsgb2Zmc2V0KSk7CisKKyAgICAv KiBzdGFydCBvcGVyYXRpb25zIG9uIHRoaXMgY2hhbm5lbCAqLworICAgIEFUQV9PVVRMKGN0 bHItPnJfcmVzMiwgQVRBX0FIQ0lfUF9DTUQgKyBvZmZzZXQsCisJICAgICAoQVRBX0FIQ0lf UF9DTURfQUNUSVZFIHwgQVRBX0FIQ0lfUF9DTURfRlJFIHwKKwkgICAgICBBVEFfQUhDSV9Q X0NNRF9QT0QgfCBBVEFfQUhDSV9QX0NNRF9TVUQgfCBBVEFfQUhDSV9QX0NNRF9TVCkpOwor CisgICAgLyogUmVhZCBwb3J0IHNpZ25hdHVyZSAqLworICAgIGlmIChyZXQpIHsKKwljbWQg PSBBVEFfSU5MKGN0bHItPnJfcmVzMiwgQVRBX0FIQ0lfUF9TSUcgKyBvZmZzZXQpOworCWlm IChib290dmVyYm9zZSkKKwkgICAgZGV2aWNlX3ByaW50ZihjaC0+ZGV2LCAiUG9ydCBzaWdu YXR1cmU6IDB4JTA4eFxuIiwgY21kKTsKKwlzd2l0Y2ggKGNtZCkgewogCWNhc2UgMHhlYjE0 MDEwMToKIAkgICAgY2gtPmRldmljZXMgPSBBVEFfQVRBUElfTUFTVEVSOwogCSAgICBkZXZp Y2VfcHJpbnRmKGNoLT5kZXYsICJTQVRBIEFUQVBJIGRldmljZXMgbm90IHN1cHBvcnRlZCB5 ZXRcbiIpOwpAQCAtNzM3LDE1ICs3NTIsNiBAQCBhdGFfYWhjaV9yZXNldChkZXZpY2VfdCBk ZXYpCiAJICAgIGJyZWFrOwogCX0KICAgICB9Ci0KLSAgICAvKiBjbGVhciBhbnkgaW50ZXJy dXB0cyBwZW5kaW5nIG9uIHRoaXMgY2hhbm5lbCAqLwotICAgIEFUQV9PVVRMKGN0bHItPnJf cmVzMiwgQVRBX0FIQ0lfUF9JUyArIG9mZnNldCwKLQkgICAgIEFUQV9JTkwoY3Rsci0+cl9y ZXMyLCBBVEFfQUhDSV9QX0lTICsgb2Zmc2V0KSk7Ci0KLSAgICAvKiBzdGFydCBvcGVyYXRp b25zIG9uIHRoaXMgY2hhbm5lbCAqLwotICAgIEFUQV9PVVRMKGN0bHItPnJfcmVzMiwgQVRB X0FIQ0lfUF9DTUQgKyBvZmZzZXQsCi0JICAgICAoQVRBX0FIQ0lfUF9DTURfQUNUSVZFIHwg QVRBX0FIQ0lfUF9DTURfRlJFIHwKLQkgICAgICBBVEFfQUhDSV9QX0NNRF9QT0QgfCBBVEFf QUhDSV9QX0NNRF9TVUQgfCBBVEFfQUhDSV9QX0NNRF9TVCkpOwogfQogCiBzdGF0aWMgdm9p ZAo= --------------020100090709050609020004--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?46F8B6E8.4040201>
