From owner-p4-projects@FreeBSD.ORG Tue Apr 17 05:22:12 2007 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4321916A403; Tue, 17 Apr 2007 05:22:12 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D9B1516A401 for ; Tue, 17 Apr 2007 05:22:11 +0000 (UTC) (envelope-from scottl@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [69.147.83.41]) by mx1.freebsd.org (Postfix) with ESMTP id C97C813C459 for ; Tue, 17 Apr 2007 05:22:11 +0000 (UTC) (envelope-from scottl@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.8/8.13.8) with ESMTP id l3H5MBgE097517 for ; Tue, 17 Apr 2007 05:22:11 GMT (envelope-from scottl@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.8/8.13.8/Submit) id l3H5MBvN097514 for perforce@freebsd.org; Tue, 17 Apr 2007 05:22:11 GMT (envelope-from scottl@freebsd.org) Date: Tue, 17 Apr 2007 05:22:11 GMT Message-Id: <200704170522.l3H5MBvN097514@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to scottl@freebsd.org using -f From: Scott Long To: Perforce Change Reviews Cc: Subject: PERFORCE change 118286 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Apr 2007 05:22:12 -0000 http://perforce.freebsd.org/chv.cgi?CH=118286 Change 118286 by scottl@scottl-wv1u on 2007/04/17 05:21:56 Put the ahc and ahd drivers into a commitable form. Affected files ... .. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic7770.c#5 edit .. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic79xx.c#8 edit .. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic79xx.h#7 edit .. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic79xx_osm.c#17 edit .. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic79xx_osm.h#11 edit .. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic79xx_pci.c#7 edit .. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic7xxx.c#8 edit .. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic7xxx.h#5 edit .. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic7xxx_osm.c#15 edit .. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic7xxx_osm.h#12 edit .. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic7xxx_pci.c#5 edit .. //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic_osm_lib.c#7 edit Differences ... ==== //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic7770.c#5 (text+ko) ==== @@ -126,7 +126,6 @@ int aic7770_config(struct ahc_softc *ahc, struct aic7770_identity *entry, u_int io) { - u_long l; int error; int have_seeprom; u_int hostconf; @@ -254,7 +253,7 @@ if (error != 0) return (error); - ahc_list_lock(&l); + ahc_lock(ahc); /* * Link this softc in with all other ahc instances. */ @@ -265,7 +264,7 @@ */ ahc_outb(ahc, BCTL, ENABLE); - ahc_list_unlock(&l); + ahc_unlock(ahc); return (0); } ==== //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic79xx.c#8 (text+ko) ==== @@ -5271,6 +5271,7 @@ ahd_free(ahd); ahd = NULL; } + ahd_lockinit(ahd); #ifdef AHD_DEBUG if ((ahd_debug & AHD_SHOW_MEMORY) != 0) { printf("%s: scb size = 0x%x, hscb size = 0x%x\n", @@ -5342,22 +5343,6 @@ ahd->init_level++; } -/* - * Verify that the passed in softc pointer is for a - * controller that is still configured. - */ -struct ahd_softc * -ahd_find_softc(struct ahd_softc *ahd) -{ - struct ahd_softc *list_ahd; - - TAILQ_FOREACH(list_ahd, &ahd_tailq, links) { - if (list_ahd == ahd) - return (ahd); - } - return (NULL); -} - void ahd_set_unit(struct ahd_softc *ahd, int unit) { @@ -8061,19 +8046,10 @@ static void ahd_reset_poll(void *arg) { - struct ahd_softc *ahd; + struct ahd_softc *ahd = (struct ahd_softc *)arg; u_int scsiseq1; - u_long l; - u_long s; - ahd_list_lock(&l); - ahd = ahd_find_softc((struct ahd_softc *)arg); - if (ahd == NULL) { - printf("ahd_reset_poll: Instance %p no longer exists\n", arg); - ahd_list_unlock(&l); - return; - } - ahd_lock(ahd, &s); + ahd_lock(ahd); ahd_pause(ahd); ahd_update_modes(ahd); ahd_set_modes(ahd, AHD_MODE_SCSI, AHD_MODE_SCSI); @@ -8082,8 +8058,7 @@ aic_timer_reset(&ahd->reset_timer, AHD_RESET_POLL_MS, ahd_reset_poll, ahd); ahd_unpause(ahd); - ahd_unlock(ahd, &s); - ahd_list_unlock(&l); + ahd_unlock(ahd); return; } @@ -8094,28 +8069,17 @@ ahd_unpause(ahd); ahd->flags &= ~AHD_RESET_POLL_ACTIVE; aic_release_simq(ahd); - ahd_unlock(ahd, &s); - ahd_list_unlock(&l); + ahd_unlock(ahd); } /**************************** Statistics Processing ***************************/ static void ahd_stat_timer(void *arg) { - struct ahd_softc *ahd; - u_long l; - u_long s; + struct ahd_softc *ahd = (struct ahd_softc *)arg; int enint_coal; - ahd_list_lock(&l); - ahd = ahd_find_softc((struct ahd_softc *)arg); - if (ahd == NULL) { - printf("ahd_stat_timer: Instance %p no longer exists\n", arg); - ahd_list_unlock(&l); - return; - } - ahd_lock(ahd, &s); - + ahd_lock(ahd); enint_coal = ahd->hs_mailbox & ENINT_COALESCE; if (ahd->cmdcmplt_total > ahd->int_coalescing_threshold) enint_coal |= ENINT_COALESCE; @@ -8139,8 +8103,7 @@ ahd->cmdcmplt_counts[ahd->cmdcmplt_bucket] = 0; aic_timer_reset(&ahd->stat_timer, AHD_STAT_UPDATE_MS, ahd_stat_timer, ahd); - ahd_unlock(ahd, &s); - ahd_list_unlock(&l); + ahd_unlock(ahd); } /****************************** Status Processing *****************************/ @@ -9277,15 +9240,12 @@ ahd_timeout(struct scb *scb) { struct ahd_softc *ahd; - u_long s; ahd = scb->ahd_softc; if ((scb->flags & SCB_ACTIVE) != 0) { if ((scb->flags & SCB_TIMEDOUT) == 0) { - ahd_lock(ahd, &s); LIST_INSERT_HEAD(&ahd->timedout_scbs, scb, timedout_links); - ahd_unlock(ahd, &s); scb->flags |= SCB_TIMEDOUT; } ahd_wakeup_recovery_thread(ahd); @@ -9304,14 +9264,11 @@ { struct scb *scb; struct scb *active_scb; - long s; int found; int was_paused; u_int active_scbptr; u_int last_phase; - ahd_lock(ahd, &s); - /* * Pause the controller and manually flush any * commands that have just completed but that our @@ -9337,7 +9294,6 @@ printf("%s: Timedout SCBs already complete. " "Interrupts may not be functioning.\n", ahd_name(ahd)); ahd_unpause(ahd); - ahd_unlock(ahd, &s); return; } @@ -9528,7 +9484,6 @@ } ahd_unpause(ahd); - ahd_unlock(ahd, &s); } /* @@ -9944,13 +9899,9 @@ */ if ((ahd->flags & AHD_TARGETROLE) == 0 && ccb->ccb_h.target_id != CAM_TARGET_WILDCARD) { - u_long s; - printf("Configuring Target Mode\n"); - ahd_lock(ahd, &s); if (LIST_FIRST(&ahd->pending_scbs) != NULL) { ccb->ccb_h.status = CAM_BUSY; - ahd_unlock(ahd, &s); return; } ahd->flags |= AHD_TARGETROLE; @@ -9959,7 +9910,6 @@ ahd_pause(ahd); ahd_loadseq(ahd); ahd_restart(ahd); - ahd_unlock(ahd, &s); } cel = &ccb->cel; target = ccb->ccb_h.target_id; @@ -10025,7 +9975,6 @@ } SLIST_INIT(&lstate->accept_tios); SLIST_INIT(&lstate->immed_notifies); - ahd_lock(ahd, &s); ahd_pause(ahd); if (target != CAM_TARGET_WILDCARD) { tstate->enabled_luns[lun] = lstate; @@ -10084,7 +10033,6 @@ ahd_outb(ahd, SCSISEQ1, scsiseq1); } ahd_unpause(ahd); - ahd_unlock(ahd, &s); ccb->ccb_h.status = CAM_REQ_CMP; xpt_print_path(ccb->ccb_h.path); printf("Lun now enabled for target mode\n"); @@ -10097,8 +10045,6 @@ return; } - ahd_lock(ahd, &s); - ccb->ccb_h.status = CAM_REQ_CMP; LIST_FOREACH(scb, &ahd->pending_scbs, pending_links) { struct ccb_hdr *ccbh; @@ -10108,7 +10054,6 @@ && !xpt_path_comp(ccbh->path, ccb->ccb_h.path)){ printf("CTIO pending\n"); ccb->ccb_h.status = CAM_REQ_INVALID; - ahd_unlock(ahd, &s); return; } } @@ -10124,7 +10069,6 @@ } if (ccb->ccb_h.status != CAM_REQ_CMP) { - ahd_unlock(ahd, &s); return; } @@ -10191,7 +10135,6 @@ } } ahd_unpause(ahd); - ahd_unlock(ahd, &s); } #endif } ==== //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic79xx.h#7 (text+ko) ==== @@ -1398,7 +1398,6 @@ int ahd_suspend(struct ahd_softc *ahd); int ahd_resume(struct ahd_softc *ahd); void ahd_softc_insert(struct ahd_softc *); -struct ahd_softc *ahd_find_softc(struct ahd_softc *ahd); void ahd_set_unit(struct ahd_softc *, int); void ahd_set_name(struct ahd_softc *, char *); struct scb *ahd_get_scb(struct ahd_softc *ahd, u_int col_idx); ==== //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic79xx_osm.c#17 (text+ko) ==== @@ -114,16 +114,12 @@ struct cam_devq *devq; struct cam_sim *sim; struct cam_path *path; - u_long s; int count; count = 0; devq = NULL; sim = NULL; - ahd_lockinit(ahd); - ahd_list_lockinit(); - /* * Create a thread to perform all recovery. */ @@ -132,7 +128,7 @@ ahd_controller_info(ahd, ahd_info); printf("%s\n", ahd_info); - ahd_lock(ahd, &s); + ahd_lock(ahd); /* * Create the device queue for our SIM(s). @@ -178,7 +174,7 @@ fail: ahd->platform_data->sim = sim; ahd->platform_data->path = path; - ahd_unlock(ahd, &s); + ahd_unlock(ahd); if (count != 0) { /* We have to wait until after any system dumps... */ ahd->platform_data->eh = @@ -200,9 +196,9 @@ struct ahd_softc *ahd; ahd = (struct ahd_softc *)arg; - ahd_lock(ahd, NULL); + ahd_lock(ahd); ahd_intr(ahd); - ahd_unlock(ahd, NULL); + ahd_unlock(ahd); } /* @@ -1269,21 +1265,14 @@ ahd_detach(device_t dev) { struct ahd_softc *ahd; - u_long l; - ahd_list_lock(&l); device_printf(dev, "detaching device\n"); ahd = device_get_softc(dev); - ahd = ahd_find_softc(ahd); - if (ahd == NULL) { - device_printf(dev, "aic7xxx already detached\n"); - ahd_list_unlock(&l); - return (ENOENT); - } + ahd_lock(ahd); TAILQ_REMOVE(&ahd_tailq, ahd, links); - ahd_list_unlock(&l); ahd_intr_enable(ahd, FALSE); bus_teardown_intr(dev, ahd->platform_data->irq, ahd->platform_data->ih); + ahd_unlock(ahd); ahd_free(ahd); return (0); } ==== //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic79xx_osm.h#11 (text+ko) ==== @@ -190,14 +190,9 @@ /**************************** Locking Primitives ******************************/ /* Lock protecting internal data structures */ static __inline void ahd_lockinit(struct ahd_softc *); -static __inline void ahd_lock(struct ahd_softc *, unsigned long *flags); -static __inline void ahd_unlock(struct ahd_softc *, unsigned long *flags); +static __inline void ahd_lock(struct ahd_softc *); +static __inline void ahd_unlock(struct ahd_softc *); -/* Lock held during ahd_list manipulation and ahd softc frees */ -static __inline void ahd_list_lockinit(void); -static __inline void ahd_list_lock(unsigned long *flags); -static __inline void ahd_list_unlock(unsigned long *flags); - static __inline void ahd_lockinit(struct ahd_softc *ahd) { @@ -205,33 +200,17 @@ } static __inline void -ahd_lock(struct ahd_softc *ahd, unsigned long *flags) +ahd_lock(struct ahd_softc *ahd) { mtx_lock(&ahd->platform_data->mtx); } static __inline void -ahd_unlock(struct ahd_softc *ahd, unsigned long *flags) +ahd_unlock(struct ahd_softc *ahd) { mtx_unlock(&ahd->platform_data->mtx); } -/* Lock held during ahd_list manipulation and ahd softc frees */ -static __inline void -ahd_list_lockinit(void) -{ -} - -static __inline void -ahd_list_lock(unsigned long *flags) -{ -} - -static __inline void -ahd_list_unlock(unsigned long *flags) -{ -} - /********************************** PCI ***************************************/ int ahd_pci_map_registers(struct ahd_softc *ahd); int ahd_pci_map_int(struct ahd_softc *ahd); ==== //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic79xx_pci.c#7 (text+ko) ==== @@ -314,7 +314,6 @@ ahd_pci_config(struct ahd_softc *ahd, struct ahd_pci_identity *entry) { struct scb_data *shared_scb_data; - u_long l; u_int command; uint32_t devconfig; uint16_t device; @@ -423,12 +422,12 @@ if (error != 0) return (error); - ahd_list_lock(&l); + ahd_lock(ahd); /* * Link this softc in with all other ahd instances. */ ahd_softc_insert(ahd); - ahd_list_unlock(&l); + ahd_unlock(ahd); return (0); } ==== //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic7xxx.c#8 (text+ko) ==== @@ -3948,6 +3948,7 @@ ahc_free(ahc); ahc = NULL; } + ahc_lockinit(ahc); return (ahc); } @@ -4029,22 +4030,6 @@ ahc->init_level++; } -/* - * Verify that the passed in softc pointer is for a - * controller that is still configured. - */ -struct ahc_softc * -ahc_find_softc(struct ahc_softc *ahc) -{ - struct ahc_softc *list_ahc; - - TAILQ_FOREACH(list_ahc, &ahc_tailq, links) { - if (list_ahc == ahc) - return (ahc); - } - return (NULL); -} - void ahc_set_unit(struct ahc_softc *ahc, int unit) { @@ -6945,7 +6930,7 @@ struct ahc_softc *ahc; ahc = scb->ahc_softc; - ahc_lock(ahc, NULL); + ahc_lock(ahc); if ((scb->flags & SCB_ACTIVE) != 0) { if ((scb->flags & SCB_TIMEDOUT) == 0) { LIST_INSERT_HEAD(&ahc->timedout_scbs, scb, @@ -6954,7 +6939,7 @@ } ahc_wakeup_recovery_thread(ahc); } - ahc_unlock(ahc, NULL); + ahc_unlock(ahc); } /* @@ -7020,13 +7005,10 @@ ahc_recover_commands(struct ahc_softc *ahc) { struct scb *scb; - long s; int found; int restart_needed; u_int last_phase; - ahc_lock(ahc, &s); - /* * Pause the controller and manually flush any * commands that have just completed but that our @@ -7046,7 +7028,6 @@ printf("%s: Timedout SCBs already complete. " "Interrupts may not be functioning.\n", ahc_name(ahc)); ahc_unpause(ahc); - ahc_unlock(ahc, &s); return; } @@ -7299,7 +7280,6 @@ ahc_restart(ahc); else ahc_unpause(ahc); - ahc_unlock(ahc, &s); } /************************* Target Mode ****************************************/ @@ -7352,7 +7332,6 @@ struct ahc_tmode_lstate *lstate; struct ccb_en_lun *cel; cam_status status; - u_long s; u_int target; u_int lun; u_int target_mask; @@ -7434,14 +7413,11 @@ */ if ((ahc->flags & AHC_TARGETROLE) == 0 && ccb->ccb_h.target_id != CAM_TARGET_WILDCARD) { - u_long s; ahc_flag saved_flags; printf("Configuring Target Mode\n"); - ahc_lock(ahc, &s); if (LIST_FIRST(&ahc->pending_scbs) != NULL) { ccb->ccb_h.status = CAM_BUSY; - ahc_unlock(ahc, &s); return; } saved_flags = ahc->flags; @@ -7462,12 +7438,10 @@ ahc->flags = saved_flags; (void)ahc_loadseq(ahc); ahc_restart(ahc); - ahc_unlock(ahc, &s); ccb->ccb_h.status = CAM_FUNC_NOTAVAIL; return; } ahc_restart(ahc); - ahc_unlock(ahc, &s); } cel = &ccb->cel; target = ccb->ccb_h.target_id; @@ -7533,7 +7507,6 @@ } SLIST_INIT(&lstate->accept_tios); SLIST_INIT(&lstate->immed_notifies); - ahc_lock(ahc, &s); ahc_pause(ahc); if (target != CAM_TARGET_WILDCARD) { tstate->enabled_luns[lun] = lstate; @@ -7599,7 +7572,6 @@ ahc_outb(ahc, SCSISEQ, scsiseq); } ahc_unpause(ahc); - ahc_unlock(ahc, &s); ccb->ccb_h.status = CAM_REQ_CMP; xpt_print_path(ccb->ccb_h.path); printf("Lun now enabled for target mode\n"); @@ -7612,8 +7584,6 @@ return; } - ahc_lock(ahc, &s); - ccb->ccb_h.status = CAM_REQ_CMP; LIST_FOREACH(scb, &ahc->pending_scbs, pending_links) { struct ccb_hdr *ccbh; @@ -7623,7 +7593,6 @@ && !xpt_path_comp(ccbh->path, ccb->ccb_h.path)){ printf("CTIO pending\n"); ccb->ccb_h.status = CAM_REQ_INVALID; - ahc_unlock(ahc, &s); return; } } @@ -7639,7 +7608,6 @@ } if (ccb->ccb_h.status != CAM_REQ_CMP) { - ahc_unlock(ahc, &s); return; } @@ -7714,7 +7682,6 @@ } } ahc_unpause(ahc); - ahc_unlock(ahc, &s); } } ==== //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic7xxx.h#5 (text+ko) ==== @@ -1225,7 +1225,6 @@ int ahc_suspend(struct ahc_softc *ahc); int ahc_resume(struct ahc_softc *ahc); void ahc_softc_insert(struct ahc_softc *); -struct ahc_softc *ahc_find_softc(struct ahc_softc *ahc); void ahc_set_unit(struct ahc_softc *, int); void ahc_set_name(struct ahc_softc *, char *); void ahc_alloc_scbs(struct ahc_softc *ahc); ==== //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic7xxx_osm.c#15 (text+ko) ==== @@ -152,7 +152,6 @@ struct cam_sim *sim2; struct cam_path *path; struct cam_path *path2; - long s; int count; count = 0; @@ -162,9 +161,6 @@ path2 = NULL; - ahc_lockinit(ahc); - ahc_list_lockinit(); - /* * Create a thread to perform all recovery. */ @@ -173,7 +169,7 @@ ahc_controller_info(ahc, ahc_info); printf("%s\n", ahc_info); - ahc_lock(ahc, &s); + ahc_lock(ahc); /* * Attach secondary channel first if the user has @@ -283,7 +279,7 @@ ahc->platform_data->sim_b = sim2; ahc->platform_data->path_b = path2; } - ahc_unlock(ahc, &s); + ahc_unlock(ahc); if (count != 0) { /* We have to wait until after any system dumps... */ @@ -305,9 +301,9 @@ struct ahc_softc *ahc; ahc = (struct ahc_softc *)arg; - ahc_lock(ahc, NULL); + ahc_lock(ahc); ahc_intr(ahc); - ahc_unlock(ahc, NULL); + ahc_unlock(ahc); } /* @@ -1153,13 +1149,9 @@ if (hscb->cdb_len > sizeof(hscb->cdb32) || (ccb_h->flags & CAM_CDB_PHYS) != 0) { - u_long s; - aic_set_transaction_status(scb, CAM_REQ_INVALID); - ahc_lock(ahc, &s); ahc_free_scb(ahc, scb); - ahc_unlock(ahc, &s); xpt_done((union ccb *)csio); return; } @@ -1441,24 +1433,14 @@ ahc_detach(device_t dev) { struct ahc_softc *ahc; - u_long l; - u_long s; - ahc_list_lock(&l); device_printf(dev, "detaching device\n"); ahc = device_get_softc(dev); - ahc = ahc_find_softc(ahc); - if (ahc == NULL) { - device_printf(dev, "aic7xxx already detached\n"); - ahc_list_unlock(&l); - return (ENOENT); - } + ahc_lock(ahc); TAILQ_REMOVE(&ahc_tailq, ahc, links); - ahc_list_unlock(&l); - ahc_lock(ahc, &s); ahc_intr_enable(ahc, FALSE); bus_teardown_intr(dev, ahc->platform_data->irq, ahc->platform_data->ih); - ahc_unlock(ahc, &s); + ahc_unlock(ahc); ahc_free(ahc); return (0); } ==== //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic7xxx_osm.h#12 (text+ko) ==== @@ -188,14 +188,9 @@ /**************************** Locking Primitives ******************************/ /* Lock protecting internal data structures */ static __inline void ahc_lockinit(struct ahc_softc *); -static __inline void ahc_lock(struct ahc_softc *, unsigned long *flags); -static __inline void ahc_unlock(struct ahc_softc *, unsigned long *flags); +static __inline void ahc_lock(struct ahc_softc *); +static __inline void ahc_unlock(struct ahc_softc *); -/* Lock held during ahc_list manipulation and ahc softc frees */ -static __inline void ahc_list_lockinit(void); -static __inline void ahc_list_lock(unsigned long *flags); -static __inline void ahc_list_unlock(unsigned long *flags); - static __inline void ahc_lockinit(struct ahc_softc *ahc) { @@ -203,33 +198,17 @@ } static __inline void -ahc_lock(struct ahc_softc *ahc, unsigned long *flags) +ahc_lock(struct ahc_softc *ahc) { mtx_lock(&ahc->platform_data->mtx); } static __inline void -ahc_unlock(struct ahc_softc *ahc, unsigned long *flags) +ahc_unlock(struct ahc_softc *ahc) { mtx_unlock(&ahc->platform_data->mtx); } -/* Lock held during ahc_list manipulation and ahc softc frees */ -static __inline void -ahc_list_lockinit(void) -{ -} - -static __inline void -ahc_list_lock(unsigned long *flags) -{ -} - -static __inline void -ahc_list_unlock(unsigned long *flags) -{ -} - /************************* Initialization/Teardown ****************************/ int ahc_platform_alloc(struct ahc_softc *ahc, void *platform_arg); void ahc_platform_free(struct ahc_softc *ahc); ==== //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic7xxx_pci.c#5 (text+ko) ==== @@ -785,7 +785,6 @@ int ahc_pci_config(struct ahc_softc *ahc, struct ahc_pci_identity *entry) { - u_long l; u_int command; u_int our_id; u_int sxfrctl1; @@ -1045,12 +1044,12 @@ if (error != 0) return (error); - ahc_list_lock(&l); + ahc_lock(ahc); /* * Link this softc in with all other ahc instances. */ ahc_softc_insert(ahc); - ahc_list_unlock(&l); + ahc_unlock(ahc); return (0); } ==== //depot/projects/scottl-camlock/src/sys/dev/aic7xxx/aic_osm_lib.c#7 (text+ko) ==== @@ -66,12 +66,11 @@ aic_platform_timeout(void *arg) { struct scb *scb; - u_long s; scb = (struct scb *)arg; - aic_lock(scb->aic_softc, &s); + aic_lock(scb->aic_softc); aic_timeout(scb); - aic_unlock(scb->aic_softc, &s); + aic_unlock(scb->aic_softc); } int @@ -92,11 +91,8 @@ void aic_terminate_recovery_thread(struct aic_softc *aic) { - u_long s; - aic_lock(aic, &s); if (aic->platform_data->recovery_thread == NULL) { - aic_unlock(aic, &s); return; } aic->flags |= AIC_SHUTDOWN_RECOVERY; @@ -106,17 +102,15 @@ * for this interlock just for added safety. */ msleep(aic->platform_data, &aic->platform_data->mtx, PUSER, "thtrm", 0); - aic_unlock(aic, &s); } static void aic_recovery_thread(void *arg) { struct aic_softc *aic; - u_long s; aic = (struct aic_softc *)arg; - aic_lock(aic, &s); + aic_lock(aic); for (;;) { if (LIST_EMPTY(&aic->timedout_scbs) != 0 @@ -126,13 +120,13 @@ if ((aic->flags & AIC_SHUTDOWN_RECOVERY) != 0) break; - aic_unlock(aic, &s); + aic_unlock(aic); aic_recover_commands(aic); - aic_lock(aic, &s); + aic_lock(aic); } aic->platform_data->recovery_thread = NULL; wakeup(aic->platform_data); - aic_unlock(aic, &s); + aic_unlock(aic); kthread_exit(0); }