diff options
Diffstat (limited to 'drivers/scsi/aacraid/rx.c')
-rw-r--r-- | drivers/scsi/aacraid/rx.c | 50 |
1 files changed, 23 insertions, 27 deletions
diff --git a/drivers/scsi/aacraid/rx.c b/drivers/scsi/aacraid/rx.c index 6f8a19462e40..391d4751338d 100644 --- a/drivers/scsi/aacraid/rx.c +++ b/drivers/scsi/aacraid/rx.c | |||
@@ -5,7 +5,7 @@ | |||
5 | * based on the old aacraid driver that is.. | 5 | * based on the old aacraid driver that is.. |
6 | * Adaptec aacraid device driver for Linux. | 6 | * Adaptec aacraid device driver for Linux. |
7 | * | 7 | * |
8 | * Copyright (c) 2000 Adaptec, Inc. (aacraid@adaptec.com) | 8 | * Copyright (c) 2000-2007 Adaptec, Inc. (aacraid@adaptec.com) |
9 | * | 9 | * |
10 | * This program is free software; you can redistribute it and/or modify | 10 | * This program is free software; you can redistribute it and/or modify |
11 | * it under the terms of the GNU General Public License as published by | 11 | * it under the terms of the GNU General Public License as published by |
@@ -57,25 +57,25 @@ static irqreturn_t aac_rx_intr_producer(int irq, void *dev_id) | |||
57 | * been enabled. | 57 | * been enabled. |
58 | * Check to see if this is our interrupt. If it isn't just return | 58 | * Check to see if this is our interrupt. If it isn't just return |
59 | */ | 59 | */ |
60 | if (intstat & ~(dev->OIMR)) { | 60 | if (likely(intstat & ~(dev->OIMR))) { |
61 | bellbits = rx_readl(dev, OutboundDoorbellReg); | 61 | bellbits = rx_readl(dev, OutboundDoorbellReg); |
62 | if (bellbits & DoorBellPrintfReady) { | 62 | if (unlikely(bellbits & DoorBellPrintfReady)) { |
63 | aac_printf(dev, readl (&dev->IndexRegs->Mailbox[5])); | 63 | aac_printf(dev, readl (&dev->IndexRegs->Mailbox[5])); |
64 | rx_writel(dev, MUnit.ODR,DoorBellPrintfReady); | 64 | rx_writel(dev, MUnit.ODR,DoorBellPrintfReady); |
65 | rx_writel(dev, InboundDoorbellReg,DoorBellPrintfDone); | 65 | rx_writel(dev, InboundDoorbellReg,DoorBellPrintfDone); |
66 | } | 66 | } |
67 | else if (bellbits & DoorBellAdapterNormCmdReady) { | 67 | else if (unlikely(bellbits & DoorBellAdapterNormCmdReady)) { |
68 | rx_writel(dev, MUnit.ODR, DoorBellAdapterNormCmdReady); | 68 | rx_writel(dev, MUnit.ODR, DoorBellAdapterNormCmdReady); |
69 | aac_command_normal(&dev->queues->queue[HostNormCmdQueue]); | 69 | aac_command_normal(&dev->queues->queue[HostNormCmdQueue]); |
70 | } | 70 | } |
71 | else if (bellbits & DoorBellAdapterNormRespReady) { | 71 | else if (likely(bellbits & DoorBellAdapterNormRespReady)) { |
72 | rx_writel(dev, MUnit.ODR,DoorBellAdapterNormRespReady); | 72 | rx_writel(dev, MUnit.ODR,DoorBellAdapterNormRespReady); |
73 | aac_response_normal(&dev->queues->queue[HostNormRespQueue]); | 73 | aac_response_normal(&dev->queues->queue[HostNormRespQueue]); |
74 | } | 74 | } |
75 | else if (bellbits & DoorBellAdapterNormCmdNotFull) { | 75 | else if (unlikely(bellbits & DoorBellAdapterNormCmdNotFull)) { |
76 | rx_writel(dev, MUnit.ODR, DoorBellAdapterNormCmdNotFull); | 76 | rx_writel(dev, MUnit.ODR, DoorBellAdapterNormCmdNotFull); |
77 | } | 77 | } |
78 | else if (bellbits & DoorBellAdapterNormRespNotFull) { | 78 | else if (unlikely(bellbits & DoorBellAdapterNormRespNotFull)) { |
79 | rx_writel(dev, MUnit.ODR, DoorBellAdapterNormCmdNotFull); | 79 | rx_writel(dev, MUnit.ODR, DoorBellAdapterNormCmdNotFull); |
80 | rx_writel(dev, MUnit.ODR, DoorBellAdapterNormRespNotFull); | 80 | rx_writel(dev, MUnit.ODR, DoorBellAdapterNormRespNotFull); |
81 | } | 81 | } |
@@ -88,11 +88,11 @@ static irqreturn_t aac_rx_intr_message(int irq, void *dev_id) | |||
88 | { | 88 | { |
89 | struct aac_dev *dev = dev_id; | 89 | struct aac_dev *dev = dev_id; |
90 | u32 Index = rx_readl(dev, MUnit.OutboundQueue); | 90 | u32 Index = rx_readl(dev, MUnit.OutboundQueue); |
91 | if (Index == 0xFFFFFFFFL) | 91 | if (unlikely(Index == 0xFFFFFFFFL)) |
92 | Index = rx_readl(dev, MUnit.OutboundQueue); | 92 | Index = rx_readl(dev, MUnit.OutboundQueue); |
93 | if (Index != 0xFFFFFFFFL) { | 93 | if (likely(Index != 0xFFFFFFFFL)) { |
94 | do { | 94 | do { |
95 | if (aac_intr_normal(dev, Index)) { | 95 | if (unlikely(aac_intr_normal(dev, Index))) { |
96 | rx_writel(dev, MUnit.OutboundQueue, Index); | 96 | rx_writel(dev, MUnit.OutboundQueue, Index); |
97 | rx_writel(dev, MUnit.ODR, DoorBellAdapterNormRespReady); | 97 | rx_writel(dev, MUnit.ODR, DoorBellAdapterNormRespReady); |
98 | } | 98 | } |
@@ -204,7 +204,7 @@ static int rx_sync_cmd(struct aac_dev *dev, u32 command, | |||
204 | */ | 204 | */ |
205 | msleep(1); | 205 | msleep(1); |
206 | } | 206 | } |
207 | if (ok != 1) { | 207 | if (unlikely(ok != 1)) { |
208 | /* | 208 | /* |
209 | * Restore interrupt mask even though we timed out | 209 | * Restore interrupt mask even though we timed out |
210 | */ | 210 | */ |
@@ -319,12 +319,12 @@ static int aac_rx_check_health(struct aac_dev *dev) | |||
319 | /* | 319 | /* |
320 | * Check to see if the board failed any self tests. | 320 | * Check to see if the board failed any self tests. |
321 | */ | 321 | */ |
322 | if (status & SELF_TEST_FAILED) | 322 | if (unlikely(status & SELF_TEST_FAILED)) |
323 | return -1; | 323 | return -1; |
324 | /* | 324 | /* |
325 | * Check to see if the board panic'd. | 325 | * Check to see if the board panic'd. |
326 | */ | 326 | */ |
327 | if (status & KERNEL_PANIC) { | 327 | if (unlikely(status & KERNEL_PANIC)) { |
328 | char * buffer; | 328 | char * buffer; |
329 | struct POSTSTATUS { | 329 | struct POSTSTATUS { |
330 | __le32 Post_Command; | 330 | __le32 Post_Command; |
@@ -333,15 +333,15 @@ static int aac_rx_check_health(struct aac_dev *dev) | |||
333 | dma_addr_t paddr, baddr; | 333 | dma_addr_t paddr, baddr; |
334 | int ret; | 334 | int ret; |
335 | 335 | ||
336 | if ((status & 0xFF000000L) == 0xBC000000L) | 336 | if (likely((status & 0xFF000000L) == 0xBC000000L)) |
337 | return (status >> 16) & 0xFF; | 337 | return (status >> 16) & 0xFF; |
338 | buffer = pci_alloc_consistent(dev->pdev, 512, &baddr); | 338 | buffer = pci_alloc_consistent(dev->pdev, 512, &baddr); |
339 | ret = -2; | 339 | ret = -2; |
340 | if (buffer == NULL) | 340 | if (unlikely(buffer == NULL)) |
341 | return ret; | 341 | return ret; |
342 | post = pci_alloc_consistent(dev->pdev, | 342 | post = pci_alloc_consistent(dev->pdev, |
343 | sizeof(struct POSTSTATUS), &paddr); | 343 | sizeof(struct POSTSTATUS), &paddr); |
344 | if (post == NULL) { | 344 | if (unlikely(post == NULL)) { |
345 | pci_free_consistent(dev->pdev, 512, buffer, baddr); | 345 | pci_free_consistent(dev->pdev, 512, buffer, baddr); |
346 | return ret; | 346 | return ret; |
347 | } | 347 | } |
@@ -353,7 +353,7 @@ static int aac_rx_check_health(struct aac_dev *dev) | |||
353 | NULL, NULL, NULL, NULL, NULL); | 353 | NULL, NULL, NULL, NULL, NULL); |
354 | pci_free_consistent(dev->pdev, sizeof(struct POSTSTATUS), | 354 | pci_free_consistent(dev->pdev, sizeof(struct POSTSTATUS), |
355 | post, paddr); | 355 | post, paddr); |
356 | if ((buffer[0] == '0') && ((buffer[1] == 'x') || (buffer[1] == 'X'))) { | 356 | if (likely((buffer[0] == '0') && ((buffer[1] == 'x') || (buffer[1] == 'X')))) { |
357 | ret = (buffer[2] <= '9') ? (buffer[2] - '0') : (buffer[2] - 'A' + 10); | 357 | ret = (buffer[2] <= '9') ? (buffer[2] - '0') : (buffer[2] - 'A' + 10); |
358 | ret <<= 4; | 358 | ret <<= 4; |
359 | ret += (buffer[3] <= '9') ? (buffer[3] - '0') : (buffer[3] - 'A' + 10); | 359 | ret += (buffer[3] <= '9') ? (buffer[3] - '0') : (buffer[3] - 'A' + 10); |
@@ -364,7 +364,7 @@ static int aac_rx_check_health(struct aac_dev *dev) | |||
364 | /* | 364 | /* |
365 | * Wait for the adapter to be up and running. | 365 | * Wait for the adapter to be up and running. |
366 | */ | 366 | */ |
367 | if (!(status & KERNEL_UP_AND_RUNNING)) | 367 | if (unlikely(!(status & KERNEL_UP_AND_RUNNING))) |
368 | return -3; | 368 | return -3; |
369 | /* | 369 | /* |
370 | * Everything is OK | 370 | * Everything is OK |
@@ -419,9 +419,9 @@ static int aac_rx_deliver_message(struct fib * fib) | |||
419 | spin_unlock_irqrestore(q->lock, qflags); | 419 | spin_unlock_irqrestore(q->lock, qflags); |
420 | for(;;) { | 420 | for(;;) { |
421 | Index = rx_readl(dev, MUnit.InboundQueue); | 421 | Index = rx_readl(dev, MUnit.InboundQueue); |
422 | if (Index == 0xFFFFFFFFL) | 422 | if (unlikely(Index == 0xFFFFFFFFL)) |
423 | Index = rx_readl(dev, MUnit.InboundQueue); | 423 | Index = rx_readl(dev, MUnit.InboundQueue); |
424 | if (Index != 0xFFFFFFFFL) | 424 | if (likely(Index != 0xFFFFFFFFL)) |
425 | break; | 425 | break; |
426 | if (--count == 0) { | 426 | if (--count == 0) { |
427 | spin_lock_irqsave(q->lock, qflags); | 427 | spin_lock_irqsave(q->lock, qflags); |
@@ -526,11 +526,8 @@ int _aac_rx_init(struct aac_dev *dev) | |||
526 | { | 526 | { |
527 | unsigned long start; | 527 | unsigned long start; |
528 | unsigned long status; | 528 | unsigned long status; |
529 | int instance; | 529 | int instance = dev->id; |
530 | const char * name; | 530 | const char * name = dev->name; |
531 | |||
532 | instance = dev->id; | ||
533 | name = dev->name; | ||
534 | 531 | ||
535 | if (aac_adapter_ioremap(dev, dev->base_size)) { | 532 | if (aac_adapter_ioremap(dev, dev->base_size)) { |
536 | printk(KERN_WARNING "%s: unable to map adapter.\n", name); | 533 | printk(KERN_WARNING "%s: unable to map adapter.\n", name); |
@@ -568,8 +565,7 @@ int _aac_rx_init(struct aac_dev *dev) | |||
568 | */ | 565 | */ |
569 | while (!((status = rx_readl(dev, MUnit.OMRx[0])) & KERNEL_UP_AND_RUNNING)) | 566 | while (!((status = rx_readl(dev, MUnit.OMRx[0])) & KERNEL_UP_AND_RUNNING)) |
570 | { | 567 | { |
571 | if(time_after(jiffies, start+startup_timeout*HZ)) | 568 | if(time_after(jiffies, start+startup_timeout*HZ)) { |
572 | { | ||
573 | printk(KERN_ERR "%s%d: adapter kernel failed to start, init status = %lx.\n", | 569 | printk(KERN_ERR "%s%d: adapter kernel failed to start, init status = %lx.\n", |
574 | dev->name, instance, status); | 570 | dev->name, instance, status); |
575 | goto error_iounmap; | 571 | goto error_iounmap; |