Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'for-3.11-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata

Pull libata fixes from Tejun Heo:
"This contains three commits all of which are updates for specific
devices which aren't too widespread. Pretty limited scope and nothing
too interesting or dangerous"

* 'for-3.11-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata:
sata_fsl: save irqs while coalescing
libata: apply behavioral quirks to sil3826 PMP
sata, highbank: fix ordering of SGPIO signals

+11 -10
+6 -6
drivers/ata/libata-pmp.c
··· 289 289 290 290 /* Disable sending Early R_OK. 291 291 * With "cached read" HDD testing and multiple ports busy on a SATA 292 - * host controller, 3726 PMP will very rarely drop a deferred 292 + * host controller, 3x26 PMP will very rarely drop a deferred 293 293 * R_OK that was intended for the host. Symptom will be all 294 294 * 5 drives under test will timeout, get reset, and recover. 295 295 */ 296 - if (vendor == 0x1095 && devid == 0x3726) { 296 + if (vendor == 0x1095 && (devid == 0x3726 || devid == 0x3826)) { 297 297 u32 reg; 298 298 299 299 err_mask = sata_pmp_read(&ap->link, PMP_GSCR_SII_POL, &reg); 300 300 if (err_mask) { 301 301 rc = -EIO; 302 - reason = "failed to read Sil3726 Private Register"; 302 + reason = "failed to read Sil3x26 Private Register"; 303 303 goto fail; 304 304 } 305 305 reg &= ~0x1; 306 306 err_mask = sata_pmp_write(&ap->link, PMP_GSCR_SII_POL, reg); 307 307 if (err_mask) { 308 308 rc = -EIO; 309 - reason = "failed to write Sil3726 Private Register"; 309 + reason = "failed to write Sil3x26 Private Register"; 310 310 goto fail; 311 311 } 312 312 } ··· 383 383 u16 devid = sata_pmp_gscr_devid(gscr); 384 384 struct ata_link *link; 385 385 386 - if (vendor == 0x1095 && devid == 0x3726) { 387 - /* sil3726 quirks */ 386 + if (vendor == 0x1095 && (devid == 0x3726 || devid == 0x3826)) { 387 + /* sil3x26 quirks */ 388 388 ata_for_each_link(link, ap, EDGE) { 389 389 /* link reports offline after LPM */ 390 390 link->flags |= ATA_LFLAG_NO_LPM;
+3 -2
drivers/ata/sata_fsl.c
··· 293 293 { 294 294 struct sata_fsl_host_priv *host_priv = host->private_data; 295 295 void __iomem *hcr_base = host_priv->hcr_base; 296 + unsigned long flags; 296 297 297 298 if (count > ICC_MAX_INT_COUNT_THRESHOLD) 298 299 count = ICC_MAX_INT_COUNT_THRESHOLD; ··· 306 305 (count > ICC_MIN_INT_COUNT_THRESHOLD)) 307 306 ticks = ICC_SAFE_INT_TICKS; 308 307 309 - spin_lock(&host->lock); 308 + spin_lock_irqsave(&host->lock, flags); 310 309 iowrite32((count << 24 | ticks), hcr_base + ICC); 311 310 312 311 intr_coalescing_count = count; 313 312 intr_coalescing_ticks = ticks; 314 - spin_unlock(&host->lock); 313 + spin_unlock_irqrestore(&host->lock, flags); 315 314 316 315 DPRINTK("interrupt coalescing, count = 0x%x, ticks = %x\n", 317 316 intr_coalescing_count, intr_coalescing_ticks);
+2 -2
drivers/ata/sata_highbank.c
··· 86 86 87 87 #define SGPIO_SIGNALS 3 88 88 #define ECX_ACTIVITY_BITS 0x300000 89 - #define ECX_ACTIVITY_SHIFT 2 89 + #define ECX_ACTIVITY_SHIFT 0 90 90 #define ECX_LOCATE_BITS 0x80000 91 91 #define ECX_LOCATE_SHIFT 1 92 92 #define ECX_FAULT_BITS 0x400000 93 - #define ECX_FAULT_SHIFT 0 93 + #define ECX_FAULT_SHIFT 2 94 94 static inline int sgpio_bit_shift(struct ecx_plat_data *pdata, u32 port, 95 95 u32 shift) 96 96 {