Softreset failed....정말 답이 없나요..포기해야만 하는건가요

9.04부터 9.10에 이르기까지 늘 저를 찜찜하게 해온 부팅시 메시지…

ata1 : softreset failed (device not ready)
ata3 : softreset failed (device not ready)

만 2일간 추석연휴 꼬박 매달렸습니다만 ㅎ 뭐 아무리 검색해도 같은 증상을 겪은 사람만 많지 뚜렷한 해결책이 제시된 것이 없네요. 여기서 제가 올린 질문 글타래에 달린 유일한 댓글로 보면 AMD칩셋을 쓰는 사용자 중 일부가 겪는 문제인 것 같다는 정도가 전부로군요.

9.04일때는 그래도 부팅이 괜찮더니 9.10베타에서는 똑같은 오류 메시지에서 부팅속도가 윈7보다 더 느려지네요. 저걸 해결 못하면 9.10 갈아타는 의미가 많이 퇴색될 듯 하기도 하구요.

좀 도와주십셔.

글쎄 softreset failed 메시지 이후에 부팅이 안된다거나 다른 특별한 시스템상의 문제가
안생긴다면 걱정하실일은 아닌듯 보입니다.

[code:3ju23vu0]/* wait for link to become ready /
rc = ata_wait_after_reset(link, deadline, check_ready);
/
link occupied, -ENODEV too is an error */
if (rc) {
reason = "device not ready";
goto fail;
}
*class = ahci_dev_classify(ap);

DPRINTK("EXIT, class=%u\n", *class);
return 0;

fail:
ata_link_printk(link, KERN_ERR, "softreset failed (%s)\n", reason);
return rc;[/code:3ju23vu0]

[code:3ju23vu0]static int ahci_sb600_softreset(struct ata_link *link, unsigned int *class,
unsigned long deadline)
{
struct ata_port *ap = link->ap;
void __iomem *port_mmio = ahci_port_base(ap);
int pmp = sata_srst_pmp(link);
int rc;
u32 irq_sts;

DPRINTK("ENTER\n");

rc = ahci_do_softreset(link, class, pmp, deadline,
		       ahci_sb600_check_ready);

/*
 * Soft reset fails on some ATI chips with IPMS set when PMP
 * is enabled but SATA HDD/ODD is connected to SATA port,
 * do soft reset again to port 0.
 */
if (rc == -EIO) {
	irq_sts = readl(port_mmio + PORT_IRQ_STAT);
	if (irq_sts & PORT_IRQ_BAD_PMP) {
		ata_link_printk(link, KERN_WARNING,
				"failed due to HW bug, retry pmp=0\n");
		rc = ahci_do_softreset(link, class, 0, deadline,
				       ahci_check_ready);
	}
}

return rc;

}[/code:3ju23vu0]

위 커널 코드에서 볼수 있듯이 부팅과정에서 pmp port 에 대한 소프트리셋이 실패하더라도
failed due to HW bug, retry pmp=0 경고 메시지를 주고, port=0 으로 세팅한뒤
다시 정상적으로 소프트리셋 해주기 때문입니다.

이런 커널의 버그있는 하드웨어 정상처리 과정에서 부팅이 조금 늦어 질수있지만 정상적인 부팅입니다.

굳이 softreset failed 메시지를 보고싶지 않다면 SATA PORT MULTIPLIER support 를 커널에서
빼버리면 됩니다.

CONFIG_SATA_PMP=n

[quote="reandr":2ew7zyxo]글쎄 softreset failed 메시지 이후에 부팅이 안된다거나 다른 특별한 시스템상의 문제가
안생긴다면 걱정하실일은 아닌듯 보입니다.

위 커널 코드에서 볼수 있듯이 부팅과정에서 pmp port 에 대한 소프트리셋이 실패하더라도
failed due to HW bug, retry pmp=0 경고 메시지를 주고, port=0 으로 세팅한뒤
다시 정상적으로 소프트리셋 해주기 때문입니다.

이런 커널의 버그있는 하드웨어 정상처리 과정에서 부팅이 조금 늦어 질수있지만 정상적인 부팅입니다.

굳이 softreset failed 메시지를 보고싶지 않다면 SATA PORT MULTIPLIER support 를 커널에서
빼버리면 됩니다.

CONFIG_SATA_PMP=n[/quote:2ew7zyxo]

특별한 문제는 아닌 것 같습니다만 빠른 부팅을 기대했는데 더 느려져서 갑갑해서 그런거랄까요.
만약에 커널에서 SATA PORT MULTIPLIER support를 빼면 부팅속도가 달라지는건가요?

설명으로 올려주신 코드나 해결방법은 제가 전혀 이해를 못하는 상태라;; 공부를 더 해서 유용하게 이용하도록 노력하겠습니다. 어쨌든 답변 감사드립니다 :)

pmp support를 위한 하드웨어 탐색 과정이 생략되면 당연히 부팅도 빨라지고
경고메시지도 안나오게 됩니다.

이 문제는 단순한 경고 메시지가 과장된 언어로 표현되어서 사람들에게 불안감을 주는
대표적인 경우죠.

아마도 최신 커널에선 다른 좀더 안심이 되는 메시지(applying SB600 PMP SRST workaround and retrying)가 나올겁니다.

[code:1yjuca2l]Cc: Tejun Heo <tj@kernel.org>

diff -ruN a/drivers/ata/ahci.c b/drivers/ata/ahci.c
— a/drivers/ata/ahci.c 2009-07-29 14:38:39.000000000 +0800
+++ b/drivers/ata/ahci.c 2009-08-04 17:24:34.000000000 +0800
@@ -1769,7 +1769,8 @@
irq_sts = readl(port_mmio + PORT_IRQ_STAT);
if (irq_sts & PORT_IRQ_BAD_PMP) {
ata_link_printk(link, KERN_WARNING,

  •   			&quot;failed due to HW bug, retry pmp=0\n&quot;);
    
  •   			&quot;applying SB600 PMP SRST workaround &quot;
    
  •   			&quot;and retrying\n&quot;);
      	rc = ahci_do_softreset(link, class, 0, deadline,
      			       ahci_check_ready);
      }[/code:1yjuca2l]