]> pilppa.org Git - linux-2.6-omap-h63xx.git/commitdiff
Merge commit 'v2.6.29-rc1' into x86/cleanups
authorIngo Molnar <mingo@elte.hu>
Mon, 12 Jan 2009 10:22:30 +0000 (11:22 +0100)
committerIngo Molnar <mingo@elte.hu>
Mon, 12 Jan 2009 10:22:30 +0000 (11:22 +0100)
Makefile
drivers/ata/ahci.c
drivers/ata/libata-core.c
include/linux/libata.h
scripts/bootgraph.pl

index 28331288341fb79fb539fac5d68b680e5ae3298f..c06e250eca18cf5b3176a8af6a2295c5e5738a56 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 6
-SUBLEVEL = 28
-EXTRAVERSION =
+SUBLEVEL = 29
+EXTRAVERSION = -rc1
 NAME = Erotic Pickled Herring
 
 # *DOCUMENTATION*
index 7f701cbe14ab83400992c0dd9344705db8f54e68..96039671e3b9e6aac939833554fc95291609d6d1 100644 (file)
@@ -2660,6 +2660,9 @@ static int ahci_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
        host->iomap = pcim_iomap_table(pdev);
        host->private_data = hpriv;
 
+       if (!(hpriv->cap & HOST_CAP_SSS))
+               host->flags |= ATA_HOST_PARALLEL_SCAN;
+
        if (pi.flags & ATA_FLAG_EM)
                ahci_reset_em(host);
 
index c507a9ac78f475e8569d920f0b5404553fff7b90..71218d76d75e482df1a3f43237b936467fb04675 100644 (file)
@@ -5920,6 +5920,17 @@ static void async_port_probe(void *data, async_cookie_t cookie)
 {
        int rc;
        struct ata_port *ap = data;
+
+       /*
+        * If we're not allowed to scan this host in parallel,
+        * we need to wait until all previous scans have completed
+        * before going further.
+        * Jeff Garzik says this is only within a controller, so we
+        * don't need to wait for port 0, only for later ports.
+        */
+       if (!(ap->host->flags & ATA_HOST_PARALLEL_SCAN) && ap->port_no != 0)
+               async_synchronize_cookie(cookie);
+
        /* probe */
        if (ap->ops->error_handler) {
                struct ata_eh_info *ehi = &ap->link.eh_info;
index 4f7c8fb4d3fe6173b80788be019e5439efacdbbb..b6b8a7f3ec66064778cf2b63b6eaa4a03dc25495 100644 (file)
@@ -239,6 +239,7 @@ enum {
        /* host set flags */
        ATA_HOST_SIMPLEX        = (1 << 0),     /* Host is simplex, one DMA channel per host only */
        ATA_HOST_STARTED        = (1 << 1),     /* Host started */
+       ATA_HOST_PARALLEL_SCAN  = (1 << 2),     /* Ports on this host can be scanned in parallel */
 
        /* bits 24:31 of host->flags are reserved for LLD specific flags */
 
index 0a498e33b30b5293019b007ae001de63dec01208..b0246307aac497ae36b8266180b48a244c9c374d 100644 (file)
@@ -41,11 +41,13 @@ use strict;
 
 my %start;
 my %end;
+my %type;
 my $done = 0;
 my $maxtime = 0;
 my $firsttime = 100;
 my $count = 0;
 my %pids;
+my %pidctr;
 
 while (<>) {
        my $line = $_;
@@ -53,6 +55,7 @@ while (<>) {
                my $func = $2;
                if ($done == 0) {
                        $start{$func} = $1;
+                       $type{$func} = 0;
                        if ($1 < $firsttime) {
                                $firsttime = $1;
                        }
@@ -63,12 +66,40 @@ while (<>) {
                $count = $count + 1;
        }
 
+       if ($line =~ /([0-9\.]+)\] async_waiting @ ([0-9]+)/) {
+               my $pid = $2;
+               my $func;
+               if (!defined($pidctr{$pid})) {
+                       $func = "wait_" . $pid . "_1";
+                       $pidctr{$pid} = 1;
+               } else {
+                       $pidctr{$pid} = $pidctr{$pid} + 1;
+                       $func = "wait_" . $pid . "_" . $pidctr{$pid};
+               }
+               if ($done == 0) {
+                       $start{$func} = $1;
+                       $type{$func} = 1;
+                       if ($1 < $firsttime) {
+                               $firsttime = $1;
+                       }
+               }
+               $pids{$func} = $pid;
+               $count = $count + 1;
+       }
+
        if ($line =~ /([0-9\.]+)\] initcall ([a-zA-Z0-9\_]+)\+.*returned/) {
                if ($done == 0) {
                        $end{$2} = $1;
                        $maxtime = $1;
                }
        }
+
+       if ($line =~ /([0-9\.]+)\] async_continuing @ ([0-9]+)/) {
+               my $pid = $2;
+               my $func =  "wait_" . $pid . "_" . $pidctr{$pid};
+               $end{$func} = $1;
+               $maxtime = $1;
+       }
        if ($line =~ /Write protecting the/) {
                $done = 1;
        }
@@ -105,6 +136,8 @@ $styles[9] = "fill:rgb(255,255,128);fill-opacity:0.5;stroke-width:1;stroke:rgb(0
 $styles[10] = "fill:rgb(255,128,255);fill-opacity:0.5;stroke-width:1;stroke:rgb(0,0,0)";
 $styles[11] = "fill:rgb(128,255,255);fill-opacity:0.5;stroke-width:1;stroke:rgb(0,0,0)";
 
+my $style_wait = "fill:rgb(128,128,128);fill-opacity:0.5;stroke-width:0;stroke:rgb(0,0,0)";
+
 my $mult = 1950.0 / ($maxtime - $firsttime);
 my $threshold2 = ($maxtime - $firsttime) / 120.0;
 my $threshold = $threshold2/10;
@@ -139,11 +172,16 @@ foreach my $key (@initcalls) {
                        $stylecounter = 0;
                };
 
-               print "<rect x=\"$s\" width=\"$w\" y=\"$y\" height=\"145\" style=\"$style\"/>\n";
-               if ($duration >= $threshold2) {
-                       print "<text transform=\"translate($s2,$y2) rotate(90)\">$key</text>\n";
+               if ($type{$key} == 1) {
+                       $y = $y + 15;
+                       print "<rect x=\"$s\" width=\"$w\" y=\"$y\" height=\"115\" style=\"$style_wait\"/>\n";
                } else {
-                       print "<text transform=\"translate($s3,$y2) rotate(90)\" font-size=\"3pt\">$key</text>\n";
+                       print "<rect x=\"$s\" width=\"$w\" y=\"$y\" height=\"145\" style=\"$style\"/>\n";
+                       if ($duration >= $threshold2) {
+                               print "<text transform=\"translate($s2,$y2) rotate(90)\">$key</text>\n";
+                       } else {
+                               print "<text transform=\"translate($s3,$y2) rotate(90)\" font-size=\"3pt\">$key</text>\n";
+                       }
                }
        }
 }