From ce3566cda73d3a6606e879c10f2414361befd0f8 Mon Sep 17 00:00:00 2001 From: "Stephen M. Cameron" Date: Mon, 19 Jul 2010 13:46:28 -0500 Subject: [PATCH] --- yaml --- r: 208311 b: refs/heads/master c: adfbc1ff342ece2e482254bcc5381fadfffbbb89 h: refs/heads/master i: 208309: 07333d71daa5c530618fb306b4dab457e6c8967a 208307: 14a130700d5672783da0fbbc351aabed5a67ba2e 208303: d0c20b0dd187023db2f24356759320eab4818428 v: v3 --- [refs] | 2 +- trunk/drivers/block/cciss.c | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index e5a62e7447c3..2ec84a9ed237 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: a6528d017234b483283274fbdd360f3541befe19 +refs/heads/master: adfbc1ff342ece2e482254bcc5381fadfffbbb89 diff --git a/trunk/drivers/block/cciss.c b/trunk/drivers/block/cciss.c index b3060eced553..6d4c4f227d55 100644 --- a/trunk/drivers/block/cciss.c +++ b/trunk/drivers/block/cciss.c @@ -4112,13 +4112,25 @@ static int __devinit cciss_find_cfgtables(ctlr_info_t *h) return 0; } +static void __devinit cciss_get_max_perf_mode_cmds(struct ctlr_info *h) +{ + h->max_commands = readl(&(h->cfgtable->MaxPerformantModeCommands)); + if (h->max_commands < 16) { + dev_warn(&h->pdev->dev, "Controller reports " + "max supported commands of %d, an obvious lie. " + "Using 16. Ensure that firmware is up to date.\n", + h->max_commands); + h->max_commands = 16; + } +} + /* Interrogate the hardware for some limits: * max commands, max SG elements without chaining, and with chaining, * SG chain block size, etc. */ static void __devinit cciss_find_board_params(ctlr_info_t *h) { - h->max_commands = readl(&(h->cfgtable->MaxPerformantModeCommands)); + cciss_get_max_perf_mode_cmds(h); h->nr_cmds = h->max_commands - 4; /* Allow room for some ioctls */ h->maxsgentries = readl(&(h->cfgtable->MaxSGElements)); /*