Skip to contentSkip to conversation

Initio 1623 driver question

DISCUSSION Matthieu Helder 2 participants 4 messages Aug 19, 2008 – Aug 21, 2008 libata

lore
Share & tools
lore
#0 lore raw

I've compiled and installed the 2.6.26.2 kernel.

Best regards,
Matthieu

Quoted 11 lines · Matthieu Helder

Dear Tejun,

I've experiencing a problem for which I searched many forums, but to no avail yet, so I decided to ask you.
I'm trying to install two Western Digital sata disks (750 GB each) with a PCI sata-controller that uses the Initio 1623 chipset. Operating system is SuSe 11.
The PC is an Compaq deskpro something with a Celeron and 512 MB of ram. It boots from a 10 GB ata disk.

Quoted 8 lines

The problem is that the controller card seems to be recognized correctly, the kernel module gets loaded and all, but the two disks are not detected: sata link down.
I'm using your sata_inic162x driver module, the version that contains lba48 support.
Do you have any idea what can be the case? At least I have the impression that the BIOS doesn't support lba48, could that be it? Below you'll find the output of some (hopefully relevant) commands.

Can you please cc [email protected] <mailto:[email protected]>? And can you try to roll your own kernel 2.6.26.2 <http://2.6.26.2> for the system so that we can try patches? Maybe the reset timing is too aggressive.

Thanks.

#1 lore raw
Quoted 1 line · Matthieu Helder

I've compiled and installed the 2.6.26.2 kernel.

Can you please apply the attached patch and report the resulting detection log?

Thanks.

Signature · 1 line
tejun
drivers/ata/libata-core.c +2 -0
index 9bef1a8..6670d4a 100644
@@ -3451,6 +3451,7 @@ int sata_link_debounce(struct ata_link *link, const unsigned long *params,
 
 		/* DET stable? */
 		if (cur == last) {
+			ata_link_printk(link, "XXX debounce: DET stable %x\n", cur);
 			if (cur == 1 && time_before(jiffies, deadline))
 				continue;
 			if (time_after(jiffies,
@@ -3459,6 +3460,7 @@ int sata_link_debounce(struct ata_link *link, const unsigned long *params,
 			continue;
 		}
 
+		ata_link_printk(link, "XXX debounce: DET unstable %x\n", cur);
 		/* unstable, start over */
 		last = cur;
 		last_jiffies = jiffies;
drivers/ata/sata_inic162x.c +2 -1
index 3ead02f..a215c2a 100644
@@ -615,7 +615,8 @@ static int inic_hardreset(struct ata_link *link, unsigned int *class,
 	struct ata_port *ap = link->ap;
 	void __iomem *port_base = inic_port_base(ap);
 	void __iomem *idma_ctl = port_base + PORT_IDMA_CTL;
-	const unsigned long *timing = sata_ehc_deb_timing(&link->eh_context);
+	//const unsigned long *timing = sata_ehc_deb_timing(&link->eh_context);
+	const unsigned long *timing = sata_deb_timing_long;
 	int rc;
 
 	/* hammer it into sane state */
#2 lore raw

The calls to ata_link_print() didn't contain the warning level. I've added KERN_WARNING.

Could you please provide me with a way to build just the needed modules? From a.o. the Linux Kernel Module Programming Guide I don't succeed in building just the two kernel modules. The system builds all configured modules, which takes rather a long time.

As soon as I have the requested log, I'll mail it to you. I assume I have to look in /var/log/messages for it?

Kind regards,
Matthieu

Quoted 11 lines · Tejun Heo
Quoted 1 line · Matthieu Helder

I've compiled and installed the 2.6.26.2 kernel.

Can you please apply the attached patch and report the resulting detection log?

Thanks.

--
tejun

#3 lore raw
Quoted 2 lines · Matthieu Helder

The calls to ata_link_print() didn't contain the warning level. I've added KERN_WARNING.

Eh... Sorry, I build tested it but my eyes just flew over the warning messages, it seems.

Quoted 7 lines

Could you please provide me with a way to build just the needed modules? From a.o. the Linux Kernel Module Programming Guide I don't succeed in building just the two kernel modules. The system builds all configured modules, which takes rather a long time.

As soon as I have the requested log, I'll mail it to you. I assume I have to look in /var/log/messages for it?

Well, once you rolled your own kernel, keep the build tree with you and apply the patch on top of it and run make. It will build only what has changed. If you wiped out the original build tree, copy the original .config file and run "make drivers/ata/libata.ko drivers/ata/sata_inic162x.ko". If it doesn't work, run make and let it go through initial stages of building (maybe a few tens of secs) and retry the module building. It usually does the trick.

Signature · 1 line
tejun