All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Kerin <eric@bootseg.com>
To: arjanv@redhat.com
Cc: linux-scsi@vger.kernel.org
Subject: Re: [PATCH] 2.6.0 aic7xxx and aic79xx stale pci_device list entry
Date: Sat, 03 Jan 2004 06:12:56 -0500	[thread overview]
Message-ID: <1073128375.5478.12.camel@opiate> (raw)
In-Reply-To: <1073120514.4429.0.camel@laptop.fenrus.com>

On Sat, 2004-01-03 at 04:01, Arjan van de Ven wrote: 
> On Fri, 2004-01-02 at 21:50, Eric Kerin wrote:
> > Loading the aic7xxx or aic79xx modules, on a machine that did not
> > contain the card, left a stale entry in the pci_device list.  This
> > caused an oops upon loading the next module that registered a
> > pci_device. 
> > 
> > The patches below will unregister the pci_device if it successfully
> > registers the device, but does not find any cards. 
> > 
> > Comments are appreciated.
> 
> well in 2.6 modules are supposed to remain loaded even though no device
> is found (since one can be hotplugged later) so that part of the driver
> needs changing; other than that yes the driver needs to deregister
> itself....

Yea, I saw examples of both cases (remain loaded, or don't remain
loaded), but there was a comment in include/linux/pci.h that said "For
the module case, a hotplug daemon of some sort should load a module in
response to an insert event."  So I put a little more weight on the ones
that unload being correct.  Oh well live and learn.

Here's a new patch, now it will leave the module loaded if it
successfully registers the pci device.

Eric Kerin



--- aic7xxx_osm.c.original	2004-01-02 03:56:32.000000000 -0500
+++ aic7xxx_osm.c	2004-01-03 05:03:41.000000000 -0500
@@ -844,6 +844,7 @@ ahc_linux_detect(Scsi_Host_Template *tem
 {
 	struct	ahc_softc *ahc;
 	int     found;
+	int	pci_reg_state;
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
 	/*
@@ -891,8 +892,9 @@ ahc_linux_detect(Scsi_Host_Template *tem
 	 */
 	ahc_list_lockinit();
 
+	pci_reg_state = -1;
 #ifdef CONFIG_PCI
-	ahc_linux_pci_init();
+	pci_reg_state = ahc_linux_pci_init();
 #endif
 
 #ifdef CONFIG_EISA
@@ -913,6 +915,10 @@ ahc_linux_detect(Scsi_Host_Template *tem
 	spin_lock_irq(&io_request_lock);
 #endif
 	aic7xxx_detect_complete++;
+	if(pci_reg_state == 0 && found == 0){
+		return(1); 
+	}
+
 	return (found);
 }
 


--- aic79xx_osm.c.original	2004-01-02 02:46:43.000000000 -0500
+++ aic79xx_osm.c	2004-01-03 05:05:52.000000000 -0500
@@ -856,6 +856,7 @@ ahd_linux_detect(Scsi_Host_Template *tem
 {
 	struct	ahd_softc *ahd;
 	int     found;
+	int	pci_reg_state;
 
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
 	/*
@@ -906,8 +907,9 @@ ahd_linux_detect(Scsi_Host_Template *tem
 	 */
 	ahd_list_lockinit();
 
+	pci_reg_state = -1;
 #ifdef CONFIG_PCI
-	ahd_linux_pci_init();
+	pci_reg_state = ahd_linux_pci_init();
 #endif
 
 	/*
@@ -924,6 +926,10 @@ ahd_linux_detect(Scsi_Host_Template *tem
 	spin_lock_irq(&io_request_lock);
 #endif
 	aic79xx_detect_complete++;
+	if(pci_reg_state == 0 && found == 0){
+		return(1); 
+	}
+
 	return (found);
 }
 



  reply	other threads:[~2004-01-03 11:15 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-01-02 20:50 [PATCH] 2.6.0 aic7xxx and aic79xx stale pci_device list entry Eric Kerin
2004-01-03  9:01 ` Arjan van de Ven
2004-01-03 11:12   ` Eric Kerin [this message]
2004-01-03 13:59     ` Jan-Benedict Glaw
2004-01-24 16:09     ` Eric Kerin
2004-01-03 22:24   ` Justin T. Gibbs
2004-01-04 10:04     ` Arjan van de Ven
2004-01-30  5:25       ` Justin T. Gibbs
2004-01-30 14:41         ` Arjan van de Ven
2004-01-30 15:03           ` Justin T. Gibbs
2004-01-03 22:24 ` Justin T. Gibbs

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1073128375.5478.12.camel@opiate \
    --to=eric@bootseg.com \
    --cc=arjanv@redhat.com \
    --cc=linux-scsi@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.