linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* Re: [RFQ] aic7xxx driver panics under heavy swap.
@ 2001-06-20 13:56 Bulent Abali
  0 siblings, 0 replies; 3+ messages in thread
From: Bulent Abali @ 2001-06-20 13:56 UTC (permalink / raw)
  To: Justin T. Gibbs; +Cc: linux-mm, linux-kernel


Justin,
Your patch works for me.  printk "Temporary Resource Shortage"
has to go, or may be you can make it a debug option.

Here is the cleaned up patch for 2.4.5-ac15 with TAILQ
macros replaced with LIST macros.  Thanks for the help.
Bulent



--- aic7xxx_linux.c.save Mon Jun 18 20:25:35 2001
+++ aic7xxx_linux.c Tue Jun 19 17:35:55 2001
@@ -1516,7 +1516,11 @@
     }
     cmd->result = CAM_REQ_INPROG << 16;
     TAILQ_INSERT_TAIL(&dev->busyq, (struct ahc_cmd *)cmd, acmd_links.tqe);
-    ahc_linux_run_device_queue(ahc, dev);
+    if ((dev->flags & AHC_DEV_ON_RUN_LIST) == 0) {
+         LIST_INSERT_HEAD(&ahc->platform_data->device_runq, dev, links);
+         dev->flags |= AHC_DEV_ON_RUN_LIST;
+         ahc_linux_run_device_queues(ahc);
+    }
     ahc_unlock(ahc, &flags);
     return (0);
 }
@@ -1532,6 +1536,9 @@
     struct     ahc_tmode_tstate *tstate;
     uint16_t mask;

+    if ((dev->flags & AHC_DEV_ON_RUN_LIST) != 0)
+         panic("running device on run list");
+
     while ((acmd = TAILQ_FIRST(&dev->busyq)) != NULL
         && dev->openings > 0 && dev->qfrozen == 0) {

@@ -1540,8 +1547,6 @@
           * running is because the whole controller Q is frozen.
           */
          if (ahc->platform_data->qfrozen != 0) {
-              if ((dev->flags & AHC_DEV_ON_RUN_LIST) != 0)
-                   return;

               LIST_INSERT_HEAD(&ahc->platform_data->device_runq,
                          dev, links);
@@ -1552,8 +1557,6 @@
           * Get an scb to use.
           */
          if ((scb = ahc_get_scb(ahc)) == NULL) {
-              if ((dev->flags & AHC_DEV_ON_RUN_LIST) != 0)
-                   panic("running device on run list");
               LIST_INSERT_HEAD(&ahc->platform_data->device_runq,
                          dev, links);
               dev->flags |= AHC_DEV_ON_RUN_LIST;








--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/

^ permalink raw reply	[flat|nested] 3+ messages in thread
* [RFQ]  aic7xxx driver panics under heavy swap.
@ 2001-06-19 15:46 Bulent Abali
  2001-06-19 16:58 ` Justin T. Gibbs
  0 siblings, 1 reply; 3+ messages in thread
From: Bulent Abali @ 2001-06-19 15:46 UTC (permalink / raw)
  To: gibbs; +Cc: linux-mm, linux-kernel

Justin,
When free memory is low, I get a series of aic7xxx messages followed by
panic.
It appears to be a race condition in the code.  Should you panic?  I tried
the following
patch to not panic.  But I am not sure if it is functionally correct.
Bulent


scsi0: Temporary Resource Shortage
scsi0: Temporary Resource Shortage
scsi0: Temporary Resource Shortage
scsi0: Temporary Resource Shortage
scsi0: Temporary Resource Shortage
Kernel panic: running device on run list


--- aic7xxx_linux.c.save Mon Jun 18 20:25:35 2001
+++ aic7xxx_linux.c Mon Jun 18 20:26:29 2001
@@ -1552,12 +1552,14 @@
           * Get an scb to use.
           */
          if ((scb = ahc_get_scb(ahc)) == NULL) {
+              ahc->flags |= AHC_RESOURCE_SHORTAGE;
               if ((dev->flags & AHC_DEV_ON_RUN_LIST) != 0)
-                   panic("running device on run list");
+                   return;
+                   // panic("running device on run list");
               LIST_INSERT_HEAD(&ahc->platform_data->device_runq,
                          dev, links);
               dev->flags |= AHC_DEV_ON_RUN_LIST;
-              ahc->flags |= AHC_RESOURCE_SHORTAGE;
+              // ahc->flags |= AHC_RESOURCE_SHORTAGE;
               printf("%s: Temporary Resource Shortage\n",
                      ahc_name(ahc));
               return;



--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2001-06-20 13:56 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-06-20 13:56 [RFQ] aic7xxx driver panics under heavy swap Bulent Abali
  -- strict thread matches above, loose matches on Subject: below --
2001-06-19 15:46 Bulent Abali
2001-06-19 16:58 ` Justin T. Gibbs

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox