RE: [PATCH] driver/FSL SATA:Fix wrong Device Error Register usage
flat view
From: Kushwaha Prabhakar-B32579 <hidden>
Date: 2011-02-18 10:17:38
Thanks David for review comments!! Please find my reply in-lined
-----Original Message----- From: David Laight [mailto:David.Laight@ACULAB.COM] Sent: Friday, February 18, 2011 2:12 PM To: Kushwaha Prabhakar-B32579; linuxppc-dev@lists.ozlabs.org Cc: Kalra Ashish-B00888 Subject: RE: [PATCH] driver/FSL SATA:Fix wrong Device Error Register=20 usage =20 =20quoted
+ if ((ffs(dereg)-1) < ap->nr_pmp_links) { + /* array start from 0 */ + link =3D &ap->pmp_link[ffs(dereg)-1];=20 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.=20 Anyway, I will update the patch for singe usage of ffs().=20
Any comment should note that ffs() returns 0 when no bits are set -=20 rather than anything about array indexes. =20
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 =3D 1;
---
---
---
/* find out the offending link and qc */
if (ap->nr_pmp_links) { --> if Port multiplier=20
---
---
if ((ffs(dereg)-1) < ap->nr_pmp_links) {
---
---
} else { --> Single device
dereg =3D ioread32(hcr_base + DE);
iowrite32(dereg, hcr_base + DE);
iowrite32(cereg, hcr_base + CE);