[PATCH] driver/FSL SATA:Fix wrong Device Error Register usage

Kushwaha Prabhakar-B32579 B32579 at freescale.com
Fri Feb 18 21:17:25 EST 2011


Thanks David for review comments!!

Please find my reply in-lined

> -----Original Message-----
> From: David Laight [mailto:David.Laight at ACULAB.COM]
> Sent: Friday, February 18, 2011 2:12 PM
> To: Kushwaha Prabhakar-B32579; linuxppc-dev at lists.ozlabs.org
> Cc: Kalra Ashish-B00888
> Subject: RE: [PATCH] driver/FSL SATA:Fix wrong Device Error Register 
> usage
> 
> 
> > +			if ((ffs(dereg)-1) < ap->nr_pmp_links) {
> > +				/* array start from 0 */
> > +				link = &ap->pmp_link[ffs(dereg)-1];
> 
> I'd only call ffs() once - it could be a slow library function.

This function is called during error handling. So it won't matter. 
Anyway, I will update the patch for singe usage of ffs(). 

> Any comment should note that ffs() returns 0 when no bits are set - 
> rather than anything about array indexes.
> 
sata_fsl_error_intr() is called during device error.
The mentioned scenario will never comes. It can be observed via code:-
	if (cereg) {   --> cereg is set on command error. Means there is at least 1 device present.
		abort = 1;
		---
		---
		---
		/* find out the offending link and qc */
		if (ap->nr_pmp_links) {  --> if Port multiplier 
			---
			---
			if ((ffs(dereg)-1) < ap->nr_pmp_links) {
		---
		---
		} else {  -->  Single device
			dereg = ioread32(hcr_base + DE);
			iowrite32(dereg, hcr_base + DE);
			iowrite32(cereg, hcr_base + CE);




More information about the Linuxppc-dev mailing list