# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
#	           ChangeSet	1.674.3.5 -> 1.674.3.6
#	drivers/scsi/53c7,8xx.c	1.11    -> 1.12   
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.1
# [PATCH] s390 update (1/27): arch.
# 
# s390 arch file changes for 2.5.39.
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.2
# [PATCH] s390 update (2/27): include.
# 
# s390 include file changes for 2.5.39.
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.3
# [PATCH] s390 update (3/27): drivers.
# 
# s390 minimal device drivers changes for 2.5.39.
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.4
# [PATCH] s390 update (4/27): syscalls.
# 
# New system calls: security, async. i/o and sys_exit_group. Add 31 bit emulation
# function for sys_futex.
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.5
# [PATCH] s390 update (5/27): ibm partition.
# 
# Correct includes in ibm.c to make it compile.
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.6
# [PATCH] s390 update (6/27): config.
# 
# Remove some configuration options that don't really make sense.
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.7
# [PATCH] s390 update (7/27): dasd driver.
# 
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.8
# [PATCH] s390 update (8/27): xpram driver.
# 
# Remove reference to xpram_release. Correct calls to bi_end_io and bio_io_error.
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.9
# [PATCH] s390 update (9/27): bottom half removal.
# 
# Replace IMMEDIATE_BH bottom half by tasklets in 3215, ctc and iucv driver.
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.10
# [PATCH] s390 update (10/27): bitops bug.
# 
# Fix broken bitops for unaligned atomic operations on s390.
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.11
# [PATCH] s390 update (11/27): 31 bit emulation.
# 
# Fix bug in 31 bit emulation of sys_msgsnd and rename sys32_pread/sys32_pwrite
# to sys32_pread64/sys32_pwrite64.
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.12
# [PATCH] s390 update (12/27): linker scripts.
# 
# Use a preprocessed linker script for building vmlinux on s390/s390x.
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.13
# [PATCH] s390 update (13/27): preemption support.
# 
# Add support for kernel preemption on s390/s390x.
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.14
# [PATCH] s390 update (14/27): inline optimizations.
# 
# Inline csum_partial for s390, the only reason it was out-of-line previously
# is that some older compilers could not get the inline version right.
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.15
# [PATCH] s390 update (15/27): 64 bit spinlocks.
# 
# Use diag 0x44 on s390x for spinlocks.
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.16
# [PATCH] s390 update (16/27): timer interrupts.
# 
# Make timer interrupt independent from boot cpu and do several ticks in one
# go if a virtual cpu didn't get an interrupt for a period of time > HZ.
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.17
# [PATCH] s390 update (17/27): beautification.
# 
# Remove bogus sanity checks and code cleanup.
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.18
# [PATCH] s390 update (18/27): fpu registers.
# 
# Cleanup load/store of fpu register on s390.
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.19
# [PATCH] s390 update (19/27): ptrace cleanup.
# 
# Rewrite s390 ptrace code in a more readable and less buggy way. As a part of
# this, all psw related definitions are moved into ptrace.h from a number of
# different locations.
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.20
# [PATCH] s390 update (20/27): signal quiesce.
# 
# Add 'signal quiesque' feature to s390 hardware console. A signal quiesce
# is sent from VM or the service element every time the system should shut
# down. We receive the quiesce signal and call ctrl_alt_del(). Finally the
# mainframes have ctrl-alt-del as well :-)
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.21
# [PATCH] s390 update (21/27): sync i/o bug.
# 
# Remove bogus sanity check from {en,dis}able_sync_isc() and really disable all
# interrupt sub classes except isc 7 in wait_cons_dev.
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.22
# [PATCH] s390 update (22/27): s390_process_IRQ.
# 
# Cleanup s390_process_IRQ a little, the ending_status argument is never
# really used.
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.23
# [PATCH] s390 update (23/27): channel paths.
# 
# Check if defined chpids are available. Some code simplification.
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.24
# [PATCH] s390 update (24/27): boot sequence.
# 
# Rework boot sequence on s390:
# 
# Traditionally, device detection os s390 is done completely
# at a _very_ early stage during bootup (from init_irq(),
# i.e. before memory management or the console are there).
# 
# This has always been a bad idea, but now it broke even more
# since the linux driver model requires devices detection
# to take place after the core_initcalls are done.
# 
# We now do only a small amount of scanning (probably
# less in the future) at the early stage, the bulk of it
# is done from a proper subsys_initcall(). This requires
# some changes in related areas:
# 
# - the machine check handler initialization is split in
#   two halves, since we want to catch major machine malfunctions
#   as early as possible, but device machine checks can only
#   be caught after the channel subsystem is up.
# 
# - some functions that are called from the css initialization
#   made some assumptions of when to use kmalloc or bootmem_alloc,
#   which were broken anyway. We fix this here and hopefully
#   can get rid of bootmem_alloc for the css completely in the future.
# 
# - the debug logging feature for s390 was not used for functions
#   in the initialization before, since it requires the memory
#   management to be working. Now that we can be sure that it
#   works, some special cases can be removed.
# 
# Now that these changes are done, a partial implementation of the
# device model for the channel subsystem is possible, but at this
# point, none of the device drivers make use of that yet.
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.25
# [PATCH] s390 update (25/27): init call.
# 
# Remove call to s390_init_machine_check in init/main.c, the new boot code
# on s390 calls it via arch_initcall.
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.26
# [PATCH] s390 update (26/27): /proc/interrupts.
# 
# Don't create /proc/interrupts on s390.
# --------------------------------------------
# 02/10/04	schwidefsky@de.ibm.com	1.663.9.27
# [PATCH] s390 update (27/27): control characters.
# 
# Replace IMMEDIATE_BH bottom half by tasklets in helper functions for
# console control characters. Fix a race condition and make it look nicer.
# --------------------------------------------
# 02/10/04	torvalds@penguin.transmeta.com	1.709
# Merge s390 update into current tree
# --------------------------------------------
# 02/10/04	greg@kroah.com	1.674.3.6
# PCI: remove pcibios_find_device() from the 53c7,8xx.c SCSI driver
# --------------------------------------------
#
diff -Nru a/drivers/scsi/53c7,8xx.c b/drivers/scsi/53c7,8xx.c
--- a/drivers/scsi/53c7,8xx.c	Fri Oct  4 13:47:23 2002
+++ b/drivers/scsi/53c7,8xx.c	Fri Oct  4 13:47:23 2002
@@ -1533,8 +1533,7 @@
     int i;
     int current_override;
     int count;			/* Number of boards detected */
-    unsigned char pci_bus, pci_device_fn;
-    static short pci_index=0;	/* Device index to PCI BIOS calls */
+    struct pci_dev *pdev = NULL;
 
     tpnt->proc_name = "ncr53c7xx";
 
@@ -1563,13 +1562,11 @@
 
     if (pci_present()) {
 	for (i = 0; i < NPCI_CHIP_IDS; ++i) 
-	    for (pci_index = 0;
-		!pcibios_find_device (PCI_VENDOR_ID_NCR, 
-		    pci_chip_ids[i].pci_device_id, pci_index, &pci_bus, 
-		    &pci_device_fn); 
-    		++pci_index)
+	    while ((pdev = pci_find_device (PCI_VENDOR_ID_NCR,
+					    pci_chip_ids[i].pci_device_id,
+					    pdev)))
 		if (!ncr_pci_init (tpnt, BOARD_GENERIC, pci_chip_ids[i].chip, 
-		    pci_bus, pci_device_fn, /* no options */ 0))
+		    pdev->bus->number, pdev->devfn, /* no options */ 0))
 		    ++count;
     }
     return count;
