SG_ALL wants to be ~0 meaning "any future size". Below group of drivers preallocate a scatter list buffer of max_size, so set that size to be 255 (Like before). A better schema can be advised with a more dynamic allocation. Perhaps from a kmem_cache. List of drivers/files: drivers/firewire/fw-sbp2.c drivers/ieee1394/sbp2.[ch] Signed-off-by: Boaz Harrosh <bharrosh@xxxxxxxxxxx> --- drivers/firewire/fw-sbp2.c | 6 ++++-- drivers/ieee1394/sbp2.c | 2 +- drivers/ieee1394/sbp2.h | 4 +++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/firewire/fw-sbp2.c b/drivers/firewire/fw-sbp2.c index c2169d2..078501c 100644 --- a/drivers/firewire/fw-sbp2.c +++ b/drivers/firewire/fw-sbp2.c @@ -151,6 +151,7 @@ struct sbp2_target { }; #define SBP2_MAX_SG_ELEMENT_LENGTH 0xf000 +#define SBP2_MAX_SG_COUNT 255 #define SBP2_MAX_SECTORS 255 /* Max sectors supported */ #define SBP2_ORB_TIMEOUT 2000 /* Timeout in ms */ @@ -272,7 +273,8 @@ struct sbp2_command_orb { scsi_done_fn_t done; struct sbp2_logical_unit *lu; - struct sbp2_pointer page_table[SG_ALL] __attribute__((aligned(8))); + struct sbp2_pointer page_table[SBP2_MAX_SG_COUNT] + __attribute__((aligned(8))); dma_addr_t page_table_bus; }; @@ -1329,7 +1331,7 @@ static struct scsi_host_template scsi_driver_template = { .slave_configure = sbp2_scsi_slave_configure, .eh_abort_handler = sbp2_scsi_abort, .this_id = -1, - .sg_tablesize = SG_ALL, + .sg_tablesize = SBP2_MAX_SG_COUNT, .use_clustering = ENABLE_CLUSTERING, .cmd_per_lun = 1, .can_queue = 1, diff --git a/drivers/ieee1394/sbp2.c b/drivers/ieee1394/sbp2.c index 1eda11a..070763a 100644 --- a/drivers/ieee1394/sbp2.c +++ b/drivers/ieee1394/sbp2.c @@ -324,7 +324,7 @@ static struct scsi_host_template sbp2_shost_template = { .slave_configure = sbp2scsi_slave_configure, .slave_destroy = sbp2scsi_slave_destroy, .this_id = -1, - .sg_tablesize = SG_ALL, + .sg_tablesize = SBP2_MAX_SG_COUNT, .use_clustering = ENABLE_CLUSTERING, .cmd_per_lun = SBP2_MAX_CMDS, .can_queue = SBP2_MAX_CMDS, diff --git a/drivers/ieee1394/sbp2.h b/drivers/ieee1394/sbp2.h index 333a4bb..ae31788 100644 --- a/drivers/ieee1394/sbp2.h +++ b/drivers/ieee1394/sbp2.h @@ -222,6 +222,7 @@ struct sbp2_status_block { */ #define SBP2_MAX_SG_ELEMENT_LENGTH 0xf000 +#define SBP2_MAX_SG_COUNT 255 #define SBP2_MAX_SECTORS 255 /* There is no real limitation of the queue depth (i.e. length of the linked * list of command ORBs) at the target. The chosen depth is merely an @@ -257,7 +258,8 @@ struct sbp2_command_info { /* Also need s/g structure for each sbp2 command */ struct sbp2_unrestricted_page_table - scatter_gather_element[SG_ALL] __attribute__((aligned(8))); + scatter_gather_element[SBP2_MAX_SG_COUNT] + __attribute__((aligned(8))); dma_addr_t sge_dma; void *sge_buffer; dma_addr_t cmd_dma; -- 1.5.3.3 - To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html