Sync up drivers/scsi/aic7xxx
Subsystems (2)
cover Sync up drivers/scsi/aic7xxx
Hello,
This and the following 28 patches sync up the
http://linux.bkbits.net/linux-2.5 tree as of
2004/09/27 (2.6.9-rc2) to the latestdrivers/scsi/aic7xxx/ which we have here.
This patch syncs up the kernel version
of aic7xxx/ to the "original" version which
is in our SCM. The following patches are
a difference off of this patch.
drivers/scsi/aic7xxx/Kconfig.aic79xx renamed from drivers/scsi/aic7xxx_orig/Kconfig.aic79xx +0 -0
@@ -4,7 +4,7 @@
#
config SCSI_AIC79XX
tristate "Adaptec AIC79xx U320 support"
- depends on PCI && SCSI
+ depends on PCI
help
This driver supports all of Adaptec's Ultra 320 PCI-X based SCSI controllers.
@@ -46,7 +46,7 @@
config AIC79XX_BUILD_FIRMWARE
bool "Build Adapter Firmware with Kernel Build"
- depends on SCSI_AIC79XX && !PREVENT_FIRMWARE_BUILD
+ depends on SCSI_AIC79XX
help
This option should only be enabled if you are modifying the firmware source to the aic79xx driver and wish to have the generated firmware
drivers/scsi/aic7xxx/Kconfig.aic7xxx renamed from drivers/scsi/aic7xxx_orig/Kconfig.aic7xxx +0 -0
@@ -4,15 +4,17 @@
#
config SCSI_AIC7XXX
tristate "Adaptec AIC7xxx Fast -> U160 support (New Driver)"
- depends on (PCI || EISA) && SCSI
+ depends on PCI || EISA
---help---
This driver supports all of Adaptec's Fast through Ultra 160 PCI based SCSI controllers as well as the aic7770 based EISA and VLB SCSI controllers (the 274x and 284x series). For AAA and ARO based configurations, only SCSI functionality is provided.
- To compile this driver as a module, choose M here: the
- module will be called aic7xxx.
+ If you want to compile the driver as a module ( = code which can be
+ inserted in and removed from the running kernel whenever you want),
+ say M here and read <file:Documentation/modules.txt>. The module
+ will be called aic7xxx.
config AIC7XXX_CMDS_PER_DEVICE
int "Maximum number of TCQ commands per device"
@@ -61,7 +63,7 @@
config AIC7XXX_BUILD_FIRMWARE
bool "Build Adapter Firmware with Kernel Build"
- depends on SCSI_AIC7XXX && !PREVENT_FIRMWARE_BUILD
+ depends on SCSI_AIC7XXX
help
This option should only be enabled if you are modifying the firmware source to the aic7xxx driver and wish to have the generated firmware
drivers/scsi/aic7xxx/Makefile renamed from drivers/scsi/aic7xxx_orig/Makefile +0 -0
@@ -1,7 +1,7 @@
#
# Makefile for the Linux aic7xxx SCSI driver.
#
-# $Id: //depot/linux-aic79xx-2.5.0/drivers/scsi/aic7xxx/Makefile#8 $ +# $Id: //depot/linux-aic79xx-2.5.0/drivers/scsi/aic7xxx/Makefile#7 $ #
# Let kbuild descend into aicasm when cleaning
@@ -33,10 +33,7 @@
aic79xx_proc.o \ aic79xx_osm_pci.o
-EXTRA_CFLAGS += -Idrivers/scsi
-ifdef WARNINGS_BECOME_ERRORS
-EXTRA_CFLAGS += -Werror
-endif
+EXTRA_CFLAGS += -Idrivers/scsi -Werror
#EXTRA_CFLAGS += -g
# Files generated that shall be removed upon make clean @@ -61,13 +58,6 @@
-p $(obj)/aic7xxx_reg_print.c -i aic7xxx_osm.h
ifeq ($(CONFIG_AIC7XXX_BUILD_FIRMWARE),y)
-# Create a dependency chain in generated files
-# to avoid concurrent invocations of the single
-# rule that builds them all.-aic7xxx_seq.h: aic7xxx_reg.h
-ifeq ($(CONFIG_AIC7XXX_REG_PRETTY_PRINT),y)-aic7xxx_reg.h: aic7xxx_reg_print.c
-endif
$(aic7xxx-gen-y): $(src)/aic7xxx.seq $(src)/aic7xxx.reg $(obj)/aicasm/aicasm
$(obj)/aicasm/aicasm -I$(src) -r $(obj)/aic7xxx_reg.h \ $(aicasm-7xxx-opts-y) -o $(obj)/aic7xxx_seq.h \ @@ -82,13 +72,6 @@ -p $(obj)/aic79xx_reg_print.c -i aic79xx_osm.h
ifeq ($(CONFIG_AIC79XX_BUILD_FIRMWARE),y)
-# Create a dependency chain in generated files
-# to avoid concurrent invocations of the single
-# rule that builds them all.-aic79xx_seq.h: aic79xx_reg.h
-ifeq ($(CONFIG_AIC79XX_REG_PRETTY_PRINT),y)-aic79xx_reg.h: aic79xx_reg_print.c
-endif
$(aic79xx-gen-y): $(src)/aic79xx.seq $(src)/aic79xx.reg $(obj)/aicasm/aicasm
$(obj)/aicasm/aicasm -I$(src) -r $(obj)/aic79xx_reg.h \ $(aicasm-79xx-opts-y) -o $(obj)/aic79xx_seq.h \
drivers/scsi/aic7xxx/aic7770.c renamed from drivers/scsi/aic7xxx_orig/aic7770.c +0 -0
@@ -64,7 +64,7 @@
static int aic7770_resume(struct ahc_softc *ahc); static int aha2840_load_seeprom(struct ahc_softc *ahc); static ahc_device_setup_t ahc_aic7770_VL_setup; -static ahc_device_setup_t ahc_aic7770_EISA_setup; +static ahc_device_setup_t ahc_aic7770_EISA_setup;; static ahc_device_setup_t ahc_aic7770_setup;
struct aic7770_identity aic7770_ident_table[] =
@@ -175,7 +175,7 @@
case 15:
break;
default:
- printf("aic7770_config: invalid irq setting %d\n", intdef);
+ printf("aic7770_config: illegal irq setting %d\n", intdef);
return (ENXIO);
}drivers/scsi/aic7xxx/aic7770_osm.c renamed from drivers/scsi/aic7xxx_orig/aic7770_osm.c +0 -0
@@ -73,7 +73,7 @@
static int aic7770_linux_config(struct aic7770_identity *entry,
aic7770_dev_t dev, u_int eisaBase);
-int
+voidahc_linux_eisa_init(void)
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
@@ -82,7 +82,7 @@
int i; if (aic7xxx_probe_eisa_vl == 0)
- return -ENODEV;
+ return;
/* * Linux requires the EISA IDs to be specified in @@ -93,7 +93,7 @@ (ahc_num_aic7770_devs + 1), M_DEVBUF, M_NOWAIT); if (aic7770_driver.id_table == NULL)
- return -ENOMEM;
+ return;
for (eid = (struct eisa_device_id *)aic7770_driver.id_table, id = aic7770_ident_table, i = 0; @@ -109,16 +109,15 @@ } eid->sig[0] = 0;
- return eisa_driver_register(&aic7770_driver);
+ eisa_driver_register(&aic7770_driver);
#else /* LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) */ struct aic7770_identity *entry; u_int slot; u_int eisaBase; u_int i;
- int ret = -ENODEV;
if (aic7xxx_probe_eisa_vl == 0)
- return ret;
+ return;
eisaBase = 0x1000 + AHC_EISA_SLOT_OFFSET;
for (slot = 1; slot < NUMSLOTS; eisaBase+=0x1000, slot++) {
@@ -147,22 +146,24 @@
continue; /* no EISA card in slot */
entry = aic7770_find_device(eisa_id);
- if (entry != NULL) {
+ if (entry != NULL)
aic7770_linux_config(entry, NULL, eisaBase);
- ret = 0;
- }
}- return ret;
#endif
}
voidahc_linux_eisa_exit(void)
{
- if(aic7xxx_probe_eisa_vl != 0 && aic7770_driver.id_table != NULL) {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
+ if (aic7xxx_probe_eisa_vl == 0)
+ return;
+
+ if (aic7770_driver.id_table != NULL) {
eisa_driver_unregister(&aic7770_driver);
free(aic7770_driver.id_table, M_DEVBUF);
}+#endif
}
static int
drivers/scsi/aic7xxx/aic79xx_core.c renamed from drivers/scsi/aic7xxx_orig/aic79xx_core.c +0 -0
@@ -173,7 +173,7 @@
struct ahd_devinfo *devinfo, u_int lun, cam_status status, char *message, int verbose_level);
-#ifdef AHD_TARGET_MODE
+#if AHD_TARGET_MODE
static void ahd_setup_target_msgin(struct ahd_softc *ahd,
struct ahd_devinfo *devinfo,
struct scb *scb);
@@ -1190,7 +1190,7 @@
ahd->msgin_index = 0;
}
}
-#ifdef AHD_TARGET_MODE
+#if AHD_TARGET_MODE
else {
if (bus_phase == P_MESGOUT) {
ahd->msg_type =@@ -5303,7 +5303,7 @@
tstate = ahd->enabled_targets[i];
if (tstate != NULL) {
-#ifdef AHD_TARGET_MODE
+#if AHD_TARGET_MODE
int j;
for (j = 0; j < AHD_NUM_LUNS; j++) {
@@ -5319,7 +5319,7 @@
free(tstate, M_DEVBUF);
}
}
-#ifdef AHD_TARGET_MODE
+#if AHD_TARGET_MODE
if (ahd->black_hole != NULL) {
xpt_free_path(ahd->black_hole->path);
free(ahd->black_hole, M_DEVBUF);
@@ -6575,7 +6575,7 @@
ahd_outb(ahd, CLRSINT3, NTRAMPERR|OSRAMPERR);
ahd_outb(ahd, CLRINT, CLRSCSIINT);-#ifdef NEEDS_MORE_TESTING
+#if NEEDS_MORE_TESTING
/*
* Always enable abort on incoming L_Qs if this feature is
* supported. We use this to catch invalid SCB references.
@@ -7157,7 +7157,7 @@
if (match != 0)
match = ((lun == slun) || (lun == CAM_LUN_WILDCARD));
if (match != 0) {
-#ifdef AHD_TARGET_MODE
+#if AHD_TARGET_MODE
int group;
group = XPT_FC_GROUP(scb->io_ctx->ccb_h.func_code);
@@ -7768,7 +7768,7 @@
/* Make sure the sequencer is in a safe location. */
ahd_clear_critical_section(ahd);-#ifdef AHD_TARGET_MODE
+#if AHD_TARGET_MODE
if ((ahd->flags & AHD_TARGETROLE) != 0) {
ahd_run_tqinfifo(ahd, /*paused*/TRUE);
}drivers/scsi/aic7xxx/aic79xx_osm.c renamed from drivers/scsi/aic7xxx_orig/aic79xx_osm.c +0 -0
@@ -61,7 +61,6 @@
#endif
#include <linux/mm.h> /* For fetching system memory size */
-#include <linux/delay.h> /* For ssleep/msleep */
/*
* Lock protecting manipulation of the ahd softc list. @@ -416,6 +415,7 @@
/*
* Module information and settable options.
*/
+#ifdef MODULE
static char *aic79xx = NULL;
/*
* Just in case someone uses commas to separate items on the insmod @@ -426,8 +426,9 @@
MODULE_AUTHOR("Maintainer: Justin T. Gibbs <[email protected]>"); MODULE_DESCRIPTION("Adaptec Aic790X U320 SCSI Host Bus Adapter driver"); +#ifdef MODULE_LICENSEMODULE_LICENSE("Dual BSD/GPL"); -MODULE_VERSION(AIC79XX_DRIVER_VERSION);
+#endifMODULE_PARM(aic79xx, "s");
MODULE_PARM_DESC(aic79xx,
"period delimited, options string.\n"
@@ -451,17 +452,18 @@
" seltime:<int> Selection Timeout:\n"
" (0/256ms,1/128ms,2/64ms,3/32ms)\n"
"\n"
-" Sample /etc/modprobe.conf line:\n"
+" Sample /etc/modules.conf line:\n"
" Enable verbose logging\n"
" Set tag depth on Controller 2/Target 2 to 10 tags\n"
" Shorten the selection timeout to 128ms\n"
"\n"
" options aic79xx 'aic79xx=verbose.tag_info:{{}.{}.{..10}}.seltime:1'\n"
"\n"
-" Sample /etc/modprobe.conf line:\n"
+" Sample /etc/modules.conf line:\n"
" Change Read Streaming for Controller's 2 and 3\n"
"\n"
" options aic79xx 'aic79xx=rd_strm:{..0xFFF0.0xC0F0}'");
+#endif
static void ahd_linux_handle_scsi_status(struct ahd_softc *,
struct ahd_linux_device *,
@@ -511,6 +513,9 @@
struct scsi_cmnd *cmd, struct ahd_devinfo *devinfo, struct ahd_linux_target *targ);
+static __inline int
+ ahd_linux_dv_fallback(struct ahd_softc *ahd,
+ struct ahd_devinfo *devinfo);
static int ahd_linux_fallback(struct ahd_softc *ahd,
struct ahd_devinfo *devinfo); static __inline int ahd_linux_dv_fallback(struct ahd_softc *ahd, @@ -1676,9 +1681,33 @@ .this_id = -1, .cmd_per_lun = 2, .use_clustering = ENABLE_CLUSTERING,
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,7)
+ /*
+ * We can only map 16MB per-SG
+ * so create a sector limit of
+ * "16MB" in 2K sectors.
+ */
+ .max_sectors = 8192,
+#endif
+#if defined CONFIG_HIGHIO || LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,10)
+/* Assume RedHat Distribution with its different HIGHIO conventions. */
+ .can_dma_32 = 1,
+ .single_sg_okay = 1,
+#else
+ .highmem_io = 1,
+#endif
+#endif
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
.slave_alloc = ahd_linux_slave_alloc,
.slave_configure = ahd_linux_slave_configure,
.slave_destroy = ahd_linux_slave_destroy,
+#else
+ .detect = ahd_linux_detect,
+ .release = ahd_linux_release,
+ .select_queue_depths = ahd_linux_select_queue_depth,
+ .use_new_eh_code = 1,
+#endif
};
/**************************** Tasklet Handler *********************************/ @@ -1771,18 +1800,12 @@
* our dma mask when doing allocations. */ if (ahd->dev_softc != NULL)
- if (ahd_pci_set_dma_mask(ahd->dev_softc, 0xFFFFFFFF)) {
- printk(KERN_WARNING "aic79xx: No suitable DMA available.\n");
- return (ENODEV);
- }
+ ahd_pci_set_dma_mask(ahd->dev_softc, 0xFFFFFFFF); *vaddr = pci_alloc_consistent(ahd->dev_softc, dmat->maxsize, &map->bus_addr); if (ahd->dev_softc != NULL)
- if (ahd_pci_set_dma_mask(ahd->dev_softc,
- ahd->platform_data->hw_dma_mask)) {
- printk(KERN_WARNING "aic79xx: No suitable DMA available.\n");
- return (ENODEV);
- }
+ ahd_pci_set_dma_mask(ahd->dev_softc,
+ ahd->platform_data->hw_dma_mask);
#else /* LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0) */ /* * At least in 2.2.14, malloc is a slab allocator so all @@ -2075,7 +2098,7 @@ u_long target; template->name = ahd->description; - host = scsi_host_alloc(template, sizeof(struct ahd_softc *)); + host = scsi_register(template, sizeof(struct ahd_softc *)); if (host == NULL) return (ENOMEM);
@@ -2150,8 +2173,7 @@
ahd_unlock(ahd, &s);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
- scsi_add_host(host, &ahd->dev_softc->dev); /* XXX handle failure */
- scsi_scan_host(host);
+ scsi_add_host(host, &ahd->dev_softc->dev);
#endif
return (0);
}
@@ -2286,7 +2308,7 @@
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
scsi_remove_host(ahd->platform_data->host);
#endif
- scsi_host_put(ahd->platform_data->host);
+ scsi_unregister(ahd->platform_data->host);
}
/* destroy all of the device and target objects */
@@ -2586,7 +2608,6 @@
sprintf(current->comm, "ahd_dv_%d", ahd->unit);
#else
daemonize("ahd_dv_%d", ahd->unit);
- current->flags |= PF_FREEZE;
#endif
unlock_kernel();@@ -2910,19 +2931,6 @@
ahd_unlock(ahd, &s); }
-static __inline int
-ahd_linux_dv_fallback(struct ahd_softc *ahd, struct ahd_devinfo *devinfo) -{
- u_long s;
- int retval;
-
- ahd_lock(ahd, &s);
- retval = ahd_linux_fallback(ahd, devinfo);
- ahd_unlock(ahd, &s);
-
- return (retval);
-}
-
static void
ahd_linux_dv_transition(struct ahd_softc *ahd, struct scsi_cmnd *cmd,
struct ahd_devinfo *devinfo,
@@ -3171,7 +3179,7 @@
break; } if (status & SSQ_DELAY)
- ssleep(1);
+ scsi_sleep(1 * HZ);
break;
case SS_START:
@@ -3331,7 +3339,7 @@
}
if (targ->dv_state_retry <= 10) {
if ((status & (SSQ_DELAY_RANDOM|SSQ_DELAY))!= 0)
- msleep(ahd->our_id*1000/10);
+ scsi_sleep(ahd->our_id*HZ/10);
break;
}
#ifdef AHD_DEBUG
@@ -3375,7 +3383,7 @@
targ->dv_state_retry--;
} else if (targ->dv_state_retry < 60) {
if ((status & SSQ_DELAY) != 0)
- ssleep(1);
+ scsi_sleep(1 * HZ);
} else {
#ifdef AHD_DEBUG
if (ahd_debug & AHD_SHOW_DV) {
@@ -3559,6 +3567,19 @@
cmd->cmnd[4] = le | SSS_START;
}+static __inline int
+ahd_linux_dv_fallback(struct ahd_softc *ahd, struct ahd_devinfo *devinfo) +{
+ u_long s;
+ int retval;
+
+ ahd_lock(ahd, &s);
+ retval = ahd_linux_fallback(ahd, devinfo);
+ ahd_unlock(ahd, &s);
+
+ return (retval);
+}
+
static intahd_linux_fallback(struct ahd_softc *ahd, struct ahd_devinfo *devinfo) {
drivers/scsi/aic7xxx/aic79xx_osm.h renamed from drivers/scsi/aic7xxx_orig/aic79xx_osm.h +0 -0
@@ -43,6 +43,7 @@
#define _AIC79XX_LINUX_H_
#include <linux/types.h>
+#include <linux/blk.h>
#include <linux/blkdev.h>
#include <linux/delay.h>
#include <linux/ioport.h>
@@ -68,7 +69,7 @@
/* Core SCSI definitions */
#define AIC_LIB_PREFIX ahd
#include "scsi.h"
-#include <scsi/scsi_host.h>
+#include "hosts.h"
/* Name space conflict with BSD queue macros */
#ifdef LIST_HEAD
@@ -788,7 +789,7 @@
}
static __inline void
-ahd_list_lockinit(void)
+ahd_list_lockinit()
{
spin_lock_init(&ahd_list_spinlock);
}drivers/scsi/aic7xxx/aic79xx_osm_pci.c renamed from drivers/scsi/aic7xxx_orig/aic79xx_osm_pci.c +0 -0
@@ -70,10 +70,10 @@
MODULE_DEVICE_TABLE(pci, ahd_linux_pci_id_table);
struct pci_driver aic79xx_pci_driver = {
- .name = "aic79xx",
- .probe = ahd_linux_pci_dev_probe,
- .remove = ahd_linux_pci_dev_remove,
- .id_table = ahd_linux_pci_id_table
+ name: "aic79xx",
+ probe: ahd_linux_pci_dev_probe,
+ remove: ahd_linux_pci_dev_remove,
+ id_table: ahd_linux_pci_id_table
};
static void
drivers/scsi/aic7xxx/aic79xx_pci.c renamed from drivers/scsi/aic7xxx_orig/aic79xx_pci.c +0 -0
@@ -452,10 +452,8 @@
* or read prefetching could be initiated by the
* CPU or host bridge. Our device does not support
* either, so look for data corruption and/or flaged
- * PCI errors. First pause without causing another
- * chip reset.
+ * PCI errors.
*/ - hcntrl &= ~CHIPRST; ahd_outb(ahd, HCNTRL, hcntrl|PAUSE); while (ahd_is_paused(ahd) == 0) ;
drivers/scsi/aic7xxx/aic7xxx_osm.c renamed from drivers/scsi/aic7xxx_orig/aic7xxx_osm.c +0 -0
@@ -139,8 +139,7 @@
#endif
#include <linux/mm.h> /* For fetching system memory size */
-#include <linux/blkdev.h> /* For block_size() */
-#include <linux/delay.h> /* For ssleep/msleep */
+#include <linux/blk.h> /* For block_size() */
/*
* Lock protecting manipulation of the ahc softc list. @@ -437,6 +436,7 @@
/*
* Module information and settable options.
*/
+#ifdef MODULE
static char *aic7xxx = NULL;
/*
* Just in case someone uses commas to separate items on the insmod @@ -447,8 +447,9 @@
MODULE_AUTHOR("Maintainer: Justin T. Gibbs <[email protected]>"); MODULE_DESCRIPTION("Adaptec Aic77XX/78XX SCSI Host Bus Adapter driver"); +#ifdef MODULE_LICENSEMODULE_LICENSE("Dual BSD/GPL"); -MODULE_VERSION(AIC7XXX_DRIVER_VERSION);
+#endifMODULE_PARM(aic7xxx, "s");
MODULE_PARM_DESC(aic7xxx,
"period delimited, options string.\n"
@@ -471,13 +472,14 @@
" seltime:<int> Selection Timeout\n"
" (0/256ms,1/128ms,2/64ms,3/32ms)\n"
"\n"
-" Sample /etc/modprobe.conf line:\n"
+" Sample /etc/modules.conf line:\n"
" Toggle EISA/VLB probing\n"
" Set tag depth on Controller 1/Target 1 to 10 tags\n"
" Shorten the selection timeout to 128ms\n"
"\n"
" options aic7xxx 'aic7xxx=probe_eisa_vl.tag_info:{{}.{.10}}.seltime:1'\n"
);
+#endif
static void ahc_linux_handle_scsi_status(struct ahc_softc *,
struct ahc_linux_device *,
@@ -841,7 +843,7 @@ahc_linux_detect(Scsi_Host_Template *template)
{
struct ahc_softc *ahc;- int found = 0;
+ int found;
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) /* @@ -889,25 +891,28 @@ */ ahc_list_lockinit();
- found = ahc_linux_pci_init();
- if (!ahc_linux_eisa_init())
- found++;
-
+#ifdef CONFIG_PCI
+ ahc_linux_pci_init();
+#endif
+
+#ifdef CONFIG_EISA
+ ahc_linux_eisa_init();
+#endif
+
/*
* Register with the SCSI layer all
* controllers we've found.
*/
+ found = 0;
TAILQ_FOREACH(ahc, &ahc_tailq, links) {
if (ahc_linux_register_host(ahc, template) == 0)
found++;
}
-
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
spin_lock_irq(&io_request_lock);
#endif
aic7xxx_detect_complete++;
-
return (found);
}@@ -1305,9 +1310,33 @@
.this_id = -1, .cmd_per_lun = 2, .use_clustering = ENABLE_CLUSTERING,
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,7)
+ /*
+ * We can only map 16MB per-SG
+ * so create a sector limit of
+ * "16MB" in 2K sectors.
+ */
+ .max_sectors = 8192,
+#endif
+#if defined CONFIG_HIGHIO || LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,10)
+/* Assume RedHat Distribution with its different HIGHIO conventions. */
+ .can_dma_32 = 1,
+ .single_sg_okay = 1,
+#else
+ .highmem_io = 1,
+#endif
+#endif
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
.slave_alloc = ahc_linux_slave_alloc,
.slave_configure = ahc_linux_slave_configure,
.slave_destroy = ahc_linux_slave_destroy,
+#else
+ .detect = ahc_linux_detect,
+ .release = ahc_linux_release,
+ .select_queue_depths = ahc_linux_select_queue_depth,
+ .use_new_eh_code = 1,
+#endif
};
/**************************** Tasklet Handler *********************************/ @@ -1406,18 +1435,12 @@
* our dma mask when doing allocations. */ if (ahc->dev_softc != NULL)
- if (ahc_pci_set_dma_mask(ahc->dev_softc, 0xFFFFFFFF)) {
- printk(KERN_WARNING "aic7xxx: No suitable DMA available.\n");
- return (ENODEV);
- }
+ ahc_pci_set_dma_mask(ahc->dev_softc, 0xFFFFFFFF); *vaddr = pci_alloc_consistent(ahc->dev_softc, dmat->maxsize, &map->bus_addr); if (ahc->dev_softc != NULL)
- if (ahc_pci_set_dma_mask(ahc->dev_softc,
- ahc->platform_data->hw_dma_mask)) {
- printk(KERN_WARNING "aic7xxx: No suitable DMA available.\n");
- return (ENODEV);
- }
+ ahc_pci_set_dma_mask(ahc->dev_softc,
+ ahc->platform_data->hw_dma_mask);
#else /* LINUX_VERSION_CODE < KERNEL_VERSION(2,3,0) */ /* * At least in 2.2.14, malloc is a slab allocator so all
@@ -1529,7 +1552,6 @@
/* Still equal. Sort by BIOS address, ioport, or bus/slot/func. */
switch (rvalue) {
-#ifdef CONFIG_PCI
case AHC_PCI:
{
char primary_channel;
@@ -1562,7 +1584,6 @@
value = 1;
break;
}
-#endif
case AHC_EISA:
if ((rahc->flags & AHC_BIOS_ENABLED) != 0) {
value = rahc->platform_data->bios_address
@@ -1707,7 +1728,7 @@
u_int targ_offset;
template->name = ahc->description;
- host = scsi_host_alloc(template, sizeof(struct ahc_softc *));
+ host = scsi_register(template, sizeof(struct ahc_softc *));
if (host == NULL)
return (ENOMEM);@@ -1793,8 +1814,7 @@
ahc_unlock(ahc, &s);
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
- scsi_add_host(host, (ahc->dev_softc ? &ahc->dev_softc->dev : NULL)); /* XXX handle failure */
- scsi_scan_host(host);
+ scsi_add_host(host, (ahc->dev_softc ? &ahc->dev_softc->dev : NULL));
#endif
return (0);
}
@@ -1961,7 +1981,7 @@
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
scsi_remove_host(ahc->platform_data->host);
#endif
- scsi_host_put(ahc->platform_data->host);
+ scsi_unregister(ahc->platform_data->host);
}
/* destroy all of the device and target objects */
@@ -2293,7 +2313,6 @@
sprintf(current->comm, "ahc_dv_%d", ahc->unit);
#else
daemonize("ahc_dv_%d", ahc->unit);
- current->flags |= PF_FREEZE;
#endif
unlock_kernel();@@ -2823,7 +2842,7 @@
break; } if (status & SSQ_DELAY)
- ssleep(1);
+ scsi_sleep(1 * HZ);
break;
case SS_START:
@@ -2983,7 +3002,7 @@
}
if (targ->dv_state_retry <= 10) {
if ((status & (SSQ_DELAY_RANDOM|SSQ_DELAY))!= 0)
- msleep(ahc->our_id*1000/10);
+ scsi_sleep(ahc->our_id*HZ/10);
break;
}
#ifdef AHC_DEBUG
@@ -3027,7 +3046,7 @@
targ->dv_state_retry--;
} else if (targ->dv_state_retry < 60) {
if ((status & SSQ_DELAY) != 0)
- ssleep(1);
+ scsi_sleep(1 * HZ);
} else {
#ifdef AHC_DEBUG
if (ahc_debug & AHC_SHOW_DV) {@@ -3967,10 +3986,11 @@
}
static void
-__ahc_linux_free_device(struct ahc_softc *ahc, struct ahc_linux_device *dev) +ahc_linux_free_device(struct ahc_softc *ahc, struct ahc_linux_device *dev)
{
struct ahc_linux_target *targ;+ del_timer_sync(&dev->timer); targ = dev->target; targ->devices[dev->lun] = NULL; free(dev, M_DEVBUF); @@ -3980,13 +4000,6 @@ ahc_linux_free_target(ahc, targ); }
-static void
-ahc_linux_free_device(struct ahc_softc *ahc, struct ahc_linux_device *dev) -{
- del_timer_sync(&dev->timer);
- __ahc_linux_free_device(ahc, dev);
-}
-
void
ahc_send_async(struct ahc_softc *ahc, char channel,
u_int target, u_int lun, ac_code code, void *arg)
@@ -4697,7 +4710,7 @@
ahc_linux_run_device_queue(ahc, dev); if (TAILQ_EMPTY(&dev->busyq) && dev->active == 0) - __ahc_linux_free_device(ahc, dev); + ahc_linux_free_device(ahc, dev); ahc_unlock(ahc, &s); }
@@ -5071,17 +5084,11 @@
} }
-static void ahc_linux_exit(void);
-
static int __initahc_linux_init(void)
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
- int rc = ahc_linux_detect(&aic7xxx_driver_template);
- if (rc)
- return rc;
- ahc_linux_exit();
- return -ENODEV;
+ return (ahc_linux_detect(&aic7xxx_driver_template) ? 0 : -ENODEV);
#else
scsi_register_module(MODULE_SCSI_HA, &aic7xxx_driver_template);
if (aic7xxx_driver_template.present == 0) {@@ -5094,7 +5101,7 @@
#endif
}
-static void
+static void __exitahc_linux_exit(void)
{
struct ahc_softc *ahc;
@@ -5121,8 +5128,12 @@
*/
scsi_unregister_module(MODULE_SCSI_HA, &aic7xxx_driver_template);
#endif
+#ifdef CONFIG_PCI
ahc_linux_pci_exit();
+#endif
+#ifdef CONFIG_EISA
ahc_linux_eisa_exit();+#endif
}
module_init(ahc_linux_init);
drivers/scsi/aic7xxx/aic7xxx_osm.h renamed from drivers/scsi/aic7xxx_orig/aic7xxx_osm.h +0 -0
@@ -60,6 +60,7 @@
#define _AIC7XXX_LINUX_H_
#include <linux/types.h>
+#include <linux/blk.h>
#include <linux/blkdev.h>
#include <linux/delay.h>
#include <linux/ioport.h>
@@ -85,7 +86,7 @@
/* Core SCSI definitions */
#define AIC_LIB_PREFIX ahc
#include "scsi.h"
-#include <scsi/scsi_host.h>
+#include "hosts.h"
/* Name space conflict with BSD queue macros */
#ifdef LIST_HEAD
@@ -840,17 +841,11 @@
#ifdef CONFIG_EISA
extern uint32_t aic7xxx_probe_eisa_vl;
-int ahc_linux_eisa_init(void);
+void ahc_linux_eisa_init(void);
void ahc_linux_eisa_exit(void);
int aic7770_map_registers(struct ahc_softc *ahc,
u_int port);
int aic7770_map_int(struct ahc_softc *ahc, u_int irq);
-#else
-static inline int ahc_linux_eisa_init(void) {
- return -ENODEV;
-}
-static inline void ahc_linux_eisa_exit(void) {
-}
#endif
/******************************* PCI Routines *********************************/ @@ -938,12 +933,6 @@
{
return (pci->bus->number);
}-#else
-static inline int ahc_linux_pci_init(void) {
- return 0;
-}
-static inline void ahc_linux_pci_exit(void) {
-}
#endif
static __inline void ahc_flush_device_writes(struct ahc_softc *);
drivers/scsi/aic7xxx/aic7xxx_osm_pci.c renamed from drivers/scsi/aic7xxx_orig/aic7xxx_osm_pci.c +0 -0
@@ -73,10 +73,10 @@
MODULE_DEVICE_TABLE(pci, ahc_linux_pci_id_table);
struct pci_driver aic7xxx_pci_driver = {
- .name = "aic7xxx",
- .probe = ahc_linux_pci_dev_probe,
- .remove = ahc_linux_pci_dev_remove,
- .id_table = ahc_linux_pci_id_table
+ name: "aic7xxx",
+ probe: ahc_linux_pci_dev_probe,
+ remove: ahc_linux_pci_dev_remove,
+ id_table: ahc_linux_pci_id_table
};
static void
@@ -166,10 +166,7 @@
ahc->flags |= AHC_39BIT_ADDRESSING;
ahc->platform_data->hw_dma_mask = mask_39bit;
} else {- if (ahc_pci_set_dma_mask(pdev, 0xFFFFFFFF)) {
- printk(KERN_WARNING "aic7xxx: No suitable DMA available.\n");
- return (-ENODEV);
- }
+ ahc_pci_set_dma_mask(pdev, 0xFFFFFFFF); ahc->platform_data->hw_dma_mask = 0xFFFFFFFF; }
#endif
@@ -198,8 +195,7 @@ahc_linux_pci_init(void)
{
#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
- /* Translate error or zero return into zero or one */
- return pci_module_init(&aic7xxx_pci_driver) ? 0 : 1;
+ return (pci_module_init(&aic7xxx_pci_driver));
#else struct pci_dev *pdev; u_int class;
drivers/scsi/aic7xxx/aic7xxx_pci.c renamed from drivers/scsi/aic7xxx_orig/aic7xxx_pci.c +0 -0
@@ -1284,10 +1284,8 @@
* or read prefetching could be initiated by the
* CPU or host bridge. Our device does not support
* either, so look for data corruption and/or flagged
- * PCI errors. First pause without causing another
- * chip reset.
+ * PCI errors.
*/ - hcntrl &= ~CHIPRST; ahc_outb(ahc, HCNTRL, hcntrl|PAUSE); while (ahc_is_paused(ahc) == 0) ;
drivers/scsi/aic7xxx/aicasm/Makefile renamed from drivers/scsi/aic7xxx_orig/aicasm/Makefile +0 -0
@@ -34,14 +34,10 @@
$(AICASM_CC) $(AICASM_CFLAGS) $(SRCS) -o $(PROG) $(LIBS)
aicdb.h:
- @if [ -e "/usr/include/db4/db_185.h" ]; then \
- echo "#include <db4/db_185.h>" > aicdb.h; \
- elif [ -e "/usr/include/db3/db_185.h" ]; then \
+ @if [ -e "/usr/include/db3/db_185.h" ]; then \ echo "#include <db3/db_185.h>" > aicdb.h; \ elif [ -e "/usr/include/db2/db_185.h" ]; then \ echo "#include <db2/db_185.h>" > aicdb.h; \ - elif [ -e "/usr/include/db1/db_185.h" ]; then \ - echo "#include <db1/db_185.h>" > aicdb.h; \ elif [ -e "/usr/include/db/db_185.h" ]; then \ echo "#include <db/db_185.h>" > aicdb.h; \ elif [ -e "/usr/include/db_185.h" ]; then \ @@ -53,19 +49,11 @@ clean: rm -f $(clean-files)
-# Create a dependency chain in generated files
-# to avoid concurrent invocations of the single
-# rule that builds them all.-aicasm_gram.c: aicasm_gram.haicasm_gram.c aicasm_gram.h: aicasm_gram.y
$(YACC) $(YFLAGS) -b $(<:.y=) $< mv $(<:.y=).tab.c $(<:.y=.c) mv $(<:.y=).tab.h $(<:.y=.h)
-# Create a dependency chain in generated files
-# to avoid concurrent invocations of the single -# rule that builds them all. -aicasm_macro_gram.c: aicasm_macro_gram.h aicasm_macro_gram.c aicasm_macro_gram.h: aicasm_macro_gram.y
$(YACC) $(YFLAGS) -b $(<:.y=) -p mm $< mv $(<:.y=).tab.c $(<:.y=.c)
drivers/scsi/aic7xxx/aiclib.c renamed from drivers/scsi/aic7xxx_orig/aiclib.c +0 -0
@@ -30,13 +30,14 @@
* $Id$
*/
+#include <linux/blk.h>
#include <linux/blkdev.h>
#include <linux/delay.h>
#include <linux/version.h>
/* Core SCSI definitions */
#include "scsi.h"
-#include <scsi/scsi_host.h>
+#include "hosts.h"
#include "aiclib.h"
#include "cam.h"
Review
Quoted 4 lines · Luben Tuikov
config
SCSI_AIC79XX
tristate "Adaptec AIC79xx U320 support"(quoted diff) +1
-1- depends on PCI && SCSI + depends on PCI
Wrong. This allows modular SCSI and non-modular AIC79xx. That's just daft and can't possibly work. Put the depend back.
Signature · 6 lines
"Next the statesmen will invent cheap lies, putting the blame upon the nation that is attacked, and every man will be glad of those conscience-soothing falsities, and will diligently study them, and refuse to examine any refutations of them; and thus he will by and by convince himself that the war is just, and will thank God for the better sleep he enjoys after this process of grotesque self-deception." -- Mark Twain
Quoted 8 lines · Matthew Wilcox
Review
Quoted 4 lines · Luben Tuikov
config
SCSI_AIC79XX
tristate "Adaptec AIC79xx U320 support"(quoted diff) +1
-1- depends on PCI && SCSI + depends on PCIWrong. This allows modular SCSI and non-modular AIC79xx. That's just daft and can't possibly work. Put the depend back.
Yes, I agree. The depend is in.
I just needed a "base" from which to start to apply the patches, so I needed to submit a patch which makes the driver look like it was 1.5 years ago, so that the rest of the patches from our SCM apply.
The "end" version of this depend is as it is in the kernel "depends on PCI && SCSI".
Luben
Quoted 4 lines · Luben Tuikov
I just needed a "base" from which to start to apply the patches, so I needed to submit a patch which makes the driver look like it was 1.5 years ago, so that the rest of the patches from our SCM apply.
How can we possibly review your patches if you do that? That's just ridiculous. Justin used to try stupid things like this all the time, and last time he promised it'd be the last time he did it. Even if you promise you'll never do something like this again, why should we believe you?
Signature · 6 lines
"Next the statesmen will invent cheap lies, putting the blame upon the nation that is attacked, and every man will be glad of those conscience-soothing falsities, and will diligently study them, and refuse to examine any refutations of them; and thus he will by and by convince himself that the war is just, and will thank God for the better sleep he enjoys after this process of grotesque self-deception." -- Mark Twain
Review
Quoted 4 lines
config
SCSI_AIC79XX
tristate "Adaptec AIC79xx U320 support"(quoted diff) +1
-1- depends on PCI && SCSI + depends on PCI
wrong.
Review
Quoted 4 lines
config
AIC79XX_BUILD_FIRMWARE
bool "Build Adapter Firmware with Kernel Build"(quoted diff) +1
-1- depends on SCSI_AIC79XX && !PREVENT_FIRMWARE_BUILD + depends on SCSI_AIC79XX
wrong.
Review
Quoted 2 lines
(quoted diff) +1
-1- depends on (PCI || EISA) && SCSI + depends on PCI || EISA
wrong.
Review
Quoted 12 lines
---help---
This driver supports all of Adaptec's Fast through Ultra 160 PCI based SCSI controllers as well as the aic7770 based EISA and VLB SCSI controllers (the 274x and 284x series). For AAA and ARO based configurations, only SCSI functionality is provided.(quoted diff) +4
-2- To compile this driver as a module, choose M here: the - module will be called aic7xxx. + If you want to compile the driver as a module ( = code which can be + inserted in and removed from the running kernel whenever you want), + say M here and read <file:Documentation/modules.txt>. The module + will be called aic7xxx.
wrong.
Review
Quoted 9 lines
config
AIC7XXX_CMDS_PER_DEVICE
int "Maximum number of TCQ commands per device"(quoted diff) +0
-0@@ -61,7 +63,7 @@config
AIC7XXX_BUILD_FIRMWARE
bool "Build Adapter Firmware with Kernel Build"(quoted diff) +1
-1- depends on SCSI_AIC7XXX && !PREVENT_FIRMWARE_BUILD + depends on SCSI_AIC7XXX
wrong.
Review
Quoted 4 lines
(quoted diff) +1
-3-ifdef WARNINGS_BECOME_ERRORS -EXTRA_CFLAGS += -Werror -endif +EXTRA_CFLAGS += -Idrivers/scsi -Werror
wrong.
Review
Quoted 8 lines
ifeq ($(CONFIG_AIC7XXX_BUILD_FIRMWARE),y)
(quoted diff) +0
-7-# Create a dependency chain in generated files -# to avoid concurrent invocations of the single -# rule that builds them all. -aic7xxx_seq.h: aic7xxx_reg.h -ifeq ($(CONFIG_AIC7XXX_REG_PRETTY_PRINT),y) -aic7xxx_reg.h: aic7xxx_reg_print.c -endif
wrong.
Review
Quoted 8 lines
ifeq ($(CONFIG_AIC79XX_BUILD_FIRMWARE),y)
(quoted diff) +0
-7-# Create a dependency chain in generated files -# to avoid concurrent invocations of the single -# rule that builds them all. -aic79xx_seq.h: aic79xx_reg.h -ifeq ($(CONFIG_AIC79XX_REG_PRETTY_PRINT),y) -aic79xx_reg.h: aic79xx_reg_print.c -endif
wrong.
Review
Quoted 2 lines
(quoted diff) +1
-1-static ahc_device_setup_t ahc_aic7770_EISA_setup; +static ahc_device_setup_t ahc_aic7770_EISA_setup;;
wrong,
Review
Quoted 2 lines
(quoted diff) +1
-1- printf("aic7770_config: invalid irq setting %d\n", intdef); + printf("aic7770_config: illegal irq setting %d\n", intdef);
wrong.
Luben, I give up on this patch. So far this is exclusively reverting fixes we had in mainline.
Quoted 84 lines · Christoph Hellwig
Review
Quoted 4 lines
config
SCSI_AIC79XX
tristate "Adaptec AIC79xx U320 support"(quoted diff) +1
-1- depends on PCI && SCSI + depends on PCIwrong.
Review
Quoted 4 lines
config
AIC79XX_BUILD_FIRMWARE
bool "Build Adapter Firmware with Kernel Build"(quoted diff) +1
-1- depends on SCSI_AIC79XX && !PREVENT_FIRMWARE_BUILD + depends on SCSI_AIC79XXwrong.
Review
Quoted 2 lines
(quoted diff) +1
-1- depends on (PCI || EISA) && SCSI + depends on PCI || EISAwrong.
Quoted 4 lines
---help---
This driver supports all of Adaptec's Fast through Ultra 160 PCI based SCSI controllers as well as the aic7770 based EISA and VLB SCSI controllers (the 274x and 284x series). For AAA and ARObased
Review
Quoted 5 lines
configurations, only SCSI functionality is provided.
(quoted diff) +1
-2- To compile this driver as a module, choose M here: the - module will be called aic7xxx. + If you want to compile the driver as a module ( = code whichcan be
Quoted 1 line
+ inserted in and removed from the running kernel whenever you
want),
Review
Quoted 2 lines
(quoted diff) +2
-0+ say M here and read <file:Documentation/modules.txt>. The module + will be called aic7xxx.wrong.
Review
Quoted 9 lines
config
AIC7XXX_CMDS_PER_DEVICE
int "Maximum number of TCQ commands per device"(quoted diff) +0
-0@@ -61,7 +63,7 @@config
AIC7XXX_BUILD_FIRMWARE
bool "Build Adapter Firmware with Kernel Build"(quoted diff) +1
-1- depends on SCSI_AIC7XXX && !PREVENT_FIRMWARE_BUILD + depends on SCSI_AIC7XXXwrong.
Review
Quoted 4 lines
(quoted diff) +1
-3-ifdef WARNINGS_BECOME_ERRORS -EXTRA_CFLAGS += -Werror -endif +EXTRA_CFLAGS += -Idrivers/scsi -Werrorwrong.
Review
Quoted 8 lines
ifeq ($(CONFIG_AIC7XXX_BUILD_FIRMWARE),y)
(quoted diff) +0
-7-# Create a dependency chain in generated files -# to avoid concurrent invocations of the single -# rule that builds them all. -aic7xxx_seq.h: aic7xxx_reg.h -ifeq ($(CONFIG_AIC7XXX_REG_PRETTY_PRINT),y) -aic7xxx_reg.h: aic7xxx_reg_print.c -endifwrong.
Review
Quoted 8 lines
ifeq ($(CONFIG_AIC79XX_BUILD_FIRMWARE),y)
(quoted diff) +0
-7-# Create a dependency chain in generated files -# to avoid concurrent invocations of the single -# rule that builds them all. -aic79xx_seq.h: aic79xx_reg.h -ifeq ($(CONFIG_AIC79XX_REG_PRETTY_PRINT),y) -aic79xx_reg.h: aic79xx_reg_print.c -endifwrong.
Review
Quoted 2 lines
(quoted diff) +1
-1-static ahc_device_setup_t ahc_aic7770_EISA_setup; +static ahc_device_setup_t ahc_aic7770_EISA_setup;;wrong,
Quoted 1 line
- printf("aic7770_config: invalid irq setting %d\n",
Quoted 8 lines
intdef);
Quoted 1 line
+ printf("aic7770_config: illegal irq setting %d\n",
intdef);
wrong.
Luben, I give up on this patch. So far this is exclusively reverting fixes we had in mainline.
True -- I just needed a base so as to be able to "link" the rest of the patches from our SCM.
The "final" version has all the dependencies right.
Luben
Quoted 4 lines · Luben Tuikov
True -- I just needed a base so as to be able to "link" the rest of the patches from our SCM.
The "final" version has all the dependencies right.
Then please don't bother us with the intermediate versions. Diff the current scsi-misc tree (which is ahead of mainline) vs your final version and split the patch into logical pieces.
Quoted 11 lines · Christoph Hellwig
Quoted 4 lines · Luben Tuikov
True -- I just needed a base so as to be able to "link" the rest of the patches from our SCM.
The "final" version has all the dependencies right.
Then please don't bother us with the intermediate versions. Diff the current scsi-misc tree (which is ahead of mainline) vs your final version and split the patch into logical pieces.
Hm, ok, you're the first one to mention doing it like this. From our previous emails I thought you wanted to see a gradual progression.
BTW, I've never tried generating such a patch -- not sure what would it look like and/or if it would be possible to subdivide it into logical pieces.
Luben
Quoted 7 lines · Luben Tuikov
Quoted 3 lines
Then please don't bother us with the intermediate versions. Diff the current scsi-misc tree (which is ahead of mainline) vs your final version and split the patch into logical pieces.
Hm, ok, you're the first one to mention doing it like this.
From our previous emails I thought you wanted to see
a gradual progression.
Yes, a gradual progression is exactly what I want to see. But based on _logical_ changes, aka fix this, rearchitect that, cleanup this.
I don't care about your SCM history at all.
Quoted 4 lines · Christoph Hellwig
Quoted 2 lines · Luben Tuikov
Quoted 2 lines
Then please don't bother us with the intermediate versions. Diff the current scsi-misc tree (which is ahead of mainline) vs your final
version
Quoted 8 lines
Quoted 5 lines
Quoted 1 line
and split the patch into logical pieces.
Hm, ok, you're the first one to mention doing it like this.
From our previous emails I thought you wanted to see
a gradual progression.Yes, a gradual progression is exactly what I want to see. But based on _logical_ changes, aka fix this, rearchitect that, cleanup this.
This isn't quite possible to be generated from a difference of the latest version which I have from the version in the linux kernel. They are just too far apart.
I'll give it a try, not sure how possible it would be to separate the difference into "logical" pieces.
Luben
Quoted 2 lines
I don't care about your SCM history at all.
Quoted 6 lines · Luben Tuikov
Quoted 2 lines
Yes, a gradual progression is exactly what I want to see. But based on _logical_ changes, aka fix this, rearchitect that, cleanup this.
This isn't quite possible to be generated from a difference of the latest version which I have from the version in the linux kernel. They are just too far apart.
This requires intensive manual work indeed. Splitting an enormous into logical pieces is an effort, but it usually pays off, both because of the additional review and better documentation.
I'd suggest you apply rule 1 of every lazy hacker and try to solve an easier partial problem first instead of a full resync. Like merging over all those local small fixes.
Quoted 3 lines · Luben Tuikov
Hm, ok, you're the first one to mention doing it like this. From our previous emails I thought you wanted to see a gradual progression.
Ideally, yes, that is what will happen, it is desired that you show the list (or the maintainer) in what order the patches are to be applied so the intermediate steps all compile.
Quoted 3 lines
BTW, I've never tried generating such a patch -- not sure what would it look like and/or if it would be possible to subdivide it into logical pieces.
For instance, if some part of the driver uses a new function in a different file, send patch 1 of 2 which add the function to file A and patch 2 of 2 which makes file B use the new function.
For instance, if you move one function or declaration to another file, send one patch that does just the move (remove from one file and add to the other file) and nothing else.
Another example, if you are adding orthogonal/independent features, say A. a debug option for negotiation and B. support for a new chip, send one debug patch and one "new chip supported" patch, not one that does both, even if they both touch the same file.
Does that help?
Signature · 3 lines
Matthias Andree Encrypted mail welcome: my GnuPG key ID is 0x052E7D95 (PGP/MIME preferred)
Quoted 7 lines · Luben Tuikov
diff -ruN -X exclude-files linux-2.5/drivers/scsi/aic7xxx_orig/Kconfig.aic79xx linux-2.5/drivers/scsi/aic7xxx/Kconfig.aic79xx
--- linux-2.5/drivers/scsi/aic7xxx_orig/Kconfig.aic79xx 2004-09-27
09:41:42.849518248 -0400
+++ linux-2.5/drivers/scsi/aic7xxx/Kconfig.aic79xx 2003-03-10
19:12:41.000000000 -0500
you should diff in the other direction.
And fix your mailer.
Signature · 7 lines
USB is for mice, FireWire is for men! sUse lINUX ag, nÜRNBERG - To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
Quoted 11 lines · Luben Tuikov
Hello,
This and the following 28 patches sync up the
http://linux.bkbits.net/linux-2.5 tree as of 2004/09/27 (2.6.9-rc2) to the latestdrivers/scsi/aic7xxx/which we have here.This patch syncs up the kernel version of aic7xxx/ to the "original" version which is in our SCM. The following patches are a difference off of this patch.
Where are the per-changeset descriptions?
"sync up aic7xxx" isn't an acceptable description for 28 patches...
Jeff