Commit 5da38d32824eb27c325d296bf3a39b5946578789

Authored by Linus Torvalds

Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev

* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jgarzik/libata-dev:
  libata: fix last_reset timestamp handling
  libata: Avoid overflow in ata_tf_read_block() when tf->hba_lbal > 127
  [libata] pata_pcmcia: another memory card support
  [libata] pata_sch: notice attached slave devices
  [libata] pata_cs553*.c: cleanup kernel-doc

Showing 6 changed files Side-by-side Diff

drivers/ata/libata-core.c
... ... @@ -612,7 +612,7 @@
612 612 if (tf->flags & ATA_TFLAG_LBA48) {
613 613 block |= (u64)tf->hob_lbah << 40;
614 614 block |= (u64)tf->hob_lbam << 32;
615   - block |= tf->hob_lbal << 24;
  615 + block |= (u64)tf->hob_lbal << 24;
616 616 } else
617 617 block |= (tf->device & 0xf) << 24;
618 618  
drivers/ata/libata-eh.c
... ... @@ -610,9 +610,6 @@
610 610 if (ata_ncq_enabled(dev))
611 611 ehc->saved_ncq_enabled |= 1 << devno;
612 612 }
613   -
614   - /* set last reset timestamp to some time in the past */
615   - ehc->last_reset = jiffies - 60 * HZ;
616 613 }
617 614  
618 615 ap->pflags |= ATA_PFLAG_EH_IN_PROGRESS;
619 616  
... ... @@ -2281,17 +2278,21 @@
2281 2278 if (link->flags & ATA_LFLAG_NO_SRST)
2282 2279 softreset = NULL;
2283 2280  
2284   - now = jiffies;
2285   - deadline = ata_deadline(ehc->last_reset, ATA_EH_RESET_COOL_DOWN);
2286   - if (time_before(now, deadline))
2287   - schedule_timeout_uninterruptible(deadline - now);
  2281 + /* make sure each reset attemp is at least COOL_DOWN apart */
  2282 + if (ehc->i.flags & ATA_EHI_DID_RESET) {
  2283 + now = jiffies;
  2284 + WARN_ON(time_after(ehc->last_reset, now));
  2285 + deadline = ata_deadline(ehc->last_reset,
  2286 + ATA_EH_RESET_COOL_DOWN);
  2287 + if (time_before(now, deadline))
  2288 + schedule_timeout_uninterruptible(deadline - now);
  2289 + }
2288 2290  
2289 2291 spin_lock_irqsave(ap->lock, flags);
2290 2292 ap->pflags |= ATA_PFLAG_RESETTING;
2291 2293 spin_unlock_irqrestore(ap->lock, flags);
2292 2294  
2293 2295 ata_eh_about_to_do(link, NULL, ATA_EH_RESET);
2294   - ehc->last_reset = jiffies;
2295 2296  
2296 2297 ata_link_for_each_dev(dev, link) {
2297 2298 /* If we issue an SRST then an ATA drive (not ATAPI)
... ... @@ -2379,7 +2380,6 @@
2379 2380 /*
2380 2381 * Perform reset
2381 2382 */
2382   - ehc->last_reset = jiffies;
2383 2383 if (ata_is_host_link(link))
2384 2384 ata_eh_freeze_port(ap);
2385 2385  
... ... @@ -2391,6 +2391,7 @@
2391 2391 reset == softreset ? "soft" : "hard");
2392 2392  
2393 2393 /* mark that this EH session started with reset */
  2394 + ehc->last_reset = jiffies;
2394 2395 if (reset == hardreset)
2395 2396 ehc->i.flags |= ATA_EHI_DID_HARDRESET;
2396 2397 else
... ... @@ -2535,7 +2536,7 @@
2535 2536 ata_eh_done(link, NULL, ATA_EH_RESET);
2536 2537 if (slave)
2537 2538 ata_eh_done(slave, NULL, ATA_EH_RESET);
2538   - ehc->last_reset = jiffies;
  2539 + ehc->last_reset = jiffies; /* update to completion time */
2539 2540 ehc->i.action |= ATA_EH_REVALIDATE;
2540 2541  
2541 2542 rc = 0;
drivers/ata/pata_cs5535.c
... ... @@ -72,7 +72,6 @@
72 72 /**
73 73 * cs5535_cable_detect - detect cable type
74 74 * @ap: Port to detect on
75   - * @deadline: deadline jiffies for the operation
76 75 *
77 76 * Perform cable detection for ATA66 capable cable. Return a libata
78 77 * cable type.
drivers/ata/pata_cs5536.c
... ... @@ -110,7 +110,6 @@
110 110 /**
111 111 * cs5536_cable_detect - detect cable type
112 112 * @ap: Port to detect on
113   - * @deadline: deadline jiffies for the operation
114 113 *
115 114 * Perform cable detection for ATA66 capable cable. Return a libata
116 115 * cable type.
drivers/ata/pata_pcmcia.c
... ... @@ -416,6 +416,7 @@
416 416 PCMCIA_DEVICE_PROD_ID1("STI Flash", 0xe4a13209),
417 417 PCMCIA_DEVICE_PROD_ID12("STI", "Flash 5.0", 0xbf2df18d, 0x8cb57a0e),
418 418 PCMCIA_MFC_DEVICE_PROD_ID12(1, "SanDisk", "ConnectPlus", 0x7a954bd9, 0x74be00c6),
  419 + PCMCIA_DEVICE_PROD_ID2("Flash Card", 0x5a362506),
419 420 PCMCIA_DEVICE_NULL,
420 421 };
421 422  
drivers/ata/pata_sch.c
... ... @@ -83,7 +83,7 @@
83 83 };
84 84  
85 85 static struct ata_port_info sch_port_info = {
86   - .flags = 0,
  86 + .flags = ATA_FLAG_SLAVE_POSS,
87 87 .pio_mask = ATA_PIO4, /* pio0-4 */
88 88 .mwdma_mask = ATA_MWDMA2, /* mwdma0-2 */
89 89 .udma_mask = ATA_UDMA5, /* udma0-5 */