Re: 2.6.22-rc3-mm1

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Cornelia Huck
Date: Thursday, May 31, 2007 - 5:09 am

On Wed, 30 May 2007 23:58:23 -0700,
Andrew Morton <akpm@linux-foundation.org> wrote:


With 


scsi fails to build on !HAS_DMA architectures:

drivers/built-in.o(.text+0x20af6): In function `scsi_dma_map':
: undefined reference to `dma_map_sg'
drivers/built-in.o(.text+0x20b5c): In function `scsi_dma_unmap':
: undefined reference to `dma_unmap_sg'

I split those functions out into a new file. Builds on s390 and i386.



scsi: Don't build scsi_dma_{map,unmap} for !HAS_DMA

Move scsi_dma_{map,unmap} into scsi_lib_dma.c which is only build
if HAS_DMA is set.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>

---
 drivers/scsi/Kconfig        |    5 ++++
 drivers/scsi/Makefile       |    6 ++---
 drivers/scsi/scsi_lib.c     |   38 ---------------------------------
 drivers/scsi/scsi_lib_dma.c |   50 ++++++++++++++++++++++++++++++++++++++++++++
 include/scsi/scsi_cmnd.h    |    2 +
 5 files changed, 60 insertions(+), 41 deletions(-)

--- linux-2.6.orig/drivers/scsi/Kconfig
+++ linux-2.6/drivers/scsi/Kconfig
@@ -10,6 +10,7 @@ config RAID_ATTRS
 config SCSI
 	tristate "SCSI device support"
 	depends on BLOCK
+	select SCSI_DMA if HAS_DMA
 	---help---
 	  If you want to use a SCSI hard disk, SCSI tape drive, SCSI CD-ROM or
 	  any other SCSI device under Linux, say Y and make sure that you know
@@ -29,6 +30,10 @@ config SCSI
 	  However, do not compile this as a module if your root file system
 	  (the one containing the directory /) is located on a SCSI device.
 
+config SCSI_DMA
+	bool
+	default n
+
 config SCSI_TGT
 	tristate "SCSI target support"
 	depends on SCSI && EXPERIMENTAL
--- linux-2.6.orig/drivers/scsi/Makefile
+++ linux-2.6/drivers/scsi/Makefile
@@ -145,9 +145,9 @@ obj-$(CONFIG_SCSI_DEBUG)	+= scsi_debug.o
 obj-$(CONFIG_SCSI_WAIT_SCAN)	+= scsi_wait_scan.o
 
 scsi_mod-y			+= scsi.o hosts.o scsi_ioctl.o constants.o \
-				   scsicam.o scsi_error.o scsi_lib.o \
-				   scsi_scan.o scsi_sysfs.o \
-				   scsi_devinfo.o
+				   scsicam.o scsi_error.o scsi_lib.o
+scsi_mod-$(CONFIG_SCSI_DMA)	+= scsi_lib_dma.o
+scsi_mod-y			+= scsi_scan.o scsi_sysfs.o scsi_devinfo.o
 scsi_mod-$(CONFIG_SCSI_NETLINK)	+= scsi_netlink.o
 scsi_mod-$(CONFIG_SYSCTL)	+= scsi_sysctl.o
 scsi_mod-$(CONFIG_SCSI_PROC_FS)	+= scsi_proc.o
--- linux-2.6.orig/drivers/scsi/scsi_lib.c
+++ linux-2.6/drivers/scsi/scsi_lib.c
@@ -2290,41 +2290,3 @@ void scsi_kunmap_atomic_sg(void *virt)
 	kunmap_atomic(virt, KM_BIO_SRC_IRQ);
 }
 EXPORT_SYMBOL(scsi_kunmap_atomic_sg);
-
-/**
- * scsi_dma_map - perform DMA mapping against command's sg lists
- * @cmd:	scsi command
- *
- * Returns the number of sg lists actually used, zero if the sg lists
- * is NULL, or -ENOMEM if the mapping failed.
- */
-int scsi_dma_map(struct scsi_cmnd *cmd)
-{
-	int nseg = 0;
-
-	if (scsi_sg_count(cmd)) {
-		struct device *dev = cmd->device->host->shost_gendev.parent;
-
-		nseg = dma_map_sg(dev, scsi_sglist(cmd), scsi_sg_count(cmd),
-				  cmd->sc_data_direction);
-		if (unlikely(!nseg))
-			return -ENOMEM;
-	}
-	return nseg;
-}
-EXPORT_SYMBOL(scsi_dma_map);
-
-/**
- * scsi_dma_unmap - unmap command's sg lists mapped by scsi_dma_map
- * @cmd:	scsi command
- */
-void scsi_dma_unmap(struct scsi_cmnd *cmd)
-{
-	if (scsi_sg_count(cmd)) {
-		struct device *dev = cmd->device->host->shost_gendev.parent;
-
-		dma_unmap_sg(dev, scsi_sglist(cmd), scsi_sg_count(cmd),
-			     cmd->sc_data_direction);
-	}
-}
-EXPORT_SYMBOL(scsi_dma_unmap);
--- linux-2.6.orig/include/scsi/scsi_cmnd.h
+++ linux-2.6/include/scsi/scsi_cmnd.h
@@ -135,8 +135,10 @@ extern void scsi_kunmap_atomic_sg(void *
 extern struct scatterlist *scsi_alloc_sgtable(struct scsi_cmnd *, gfp_t);
 extern void scsi_free_sgtable(struct scatterlist *, int);
 
+#ifdef CONFIG_SCSI_DMA
 extern int scsi_dma_map(struct scsi_cmnd *cmd);
 extern void scsi_dma_unmap(struct scsi_cmnd *cmd);
+#endif
 
 #define scsi_sg_count(cmd) ((cmd)->use_sg)
 #define scsi_sglist(cmd) ((struct scatterlist *)(cmd)->request_buffer)
--- /dev/null
+++ linux-2.6/drivers/scsi/scsi_lib_dma.c
@@ -0,0 +1,50 @@
+/*
+ * SCSI library functions depending on DMA
+ */
+
+#include <linux/blkdev.h>
+#include <linux/device.h>
+#include <linux/kernel.h>
+
+#include <scsi/scsi.h>
+#include <scsi/scsi_cmnd.h>
+#include <scsi/scsi_device.h>
+#include <scsi/scsi_host.h>
+
+/**
+ * scsi_dma_map - perform DMA mapping against command's sg lists
+ * @cmd:	scsi command
+ *
+ * Returns the number of sg lists actually used, zero if the sg lists
+ * is NULL, or -ENOMEM if the mapping failed.
+ */
+int scsi_dma_map(struct scsi_cmnd *cmd)
+{
+	int nseg = 0;
+
+	if (scsi_sg_count(cmd)) {
+		struct device *dev = cmd->device->host->shost_gendev.parent;
+
+		nseg = dma_map_sg(dev, scsi_sglist(cmd), scsi_sg_count(cmd),
+				  cmd->sc_data_direction);
+		if (unlikely(!nseg))
+			return -ENOMEM;
+	}
+	return nseg;
+}
+EXPORT_SYMBOL(scsi_dma_map);
+
+/**
+ * scsi_dma_unmap - unmap command's sg lists mapped by scsi_dma_map
+ * @cmd:	scsi command
+ */
+void scsi_dma_unmap(struct scsi_cmnd *cmd)
+{
+	if (scsi_sg_count(cmd)) {
+		struct device *dev = cmd->device->host->shost_gendev.parent;
+
+		dma_unmap_sg(dev, scsi_sglist(cmd), scsi_sg_count(cmd),
+			     cmd->sc_data_direction);
+	}
+}
+EXPORT_SYMBOL(scsi_dma_unmap);
-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
2.6.22-rc3-mm1, Andrew Morton, (Wed May 30, 11:58 pm)
Re: 2.6.22-rc3-mm1, Cornelia Huck, (Thu May 31, 5:09 am)
Re: 2.6.22-rc3-mm1, Matthew Wilcox, (Thu May 31, 5:15 am)
Re: 2.6.22-rc3-mm1, Cornelia Huck, (Thu May 31, 5:20 am)
Re: 2.6.22-rc3-mm1, Jeff Garzik, (Thu May 31, 5:35 am)
Re: 2.6.22-rc3-mm1, Cornelia Huck, (Thu May 31, 8:11 am)
Re: 2.6.22-rc3-mm1, Christoph Hellwig, (Thu May 31, 8:13 am)
Re: 2.6.22-rc3-mm1, Michal Piotrowski, (Thu May 31, 8:29 am)
Re: 2.6.22-rc3-mm1, Michal Piotrowski, (Thu May 31, 10:53 am)
Re: 2.6.22-rc3-mm1, Michal Piotrowski, (Thu May 31, 11:08 am)
Re: 2.6.22-rc3-mm1, Andrew Morton, (Thu May 31, 11:31 am)
Re: 2.6.22-rc3-mm1, Christoph Lameter, (Thu May 31, 11:41 am)
Re: 2.6.22-rc3-mm1, Andrew Morton, (Thu May 31, 11:53 am)
Re: 2.6.22-rc3-mm1, Christoph Lameter, (Thu May 31, 11:57 am)
Re: 2.6.22-rc3-mm1, Rafael J. Wysocki, (Thu May 31, 12:58 pm)
Re: 2.6.22-rc3-mm1, Mariusz Kozlowski, (Thu May 31, 1:43 pm)
Re: 2.6.22-rc3-mm1, Andrew Morton, (Thu May 31, 2:19 pm)
[PATCH -mm] Freezer: migration_thread should not be freeza ..., Rafael J. Wysocki, (Thu May 31, 2:30 pm)
Re: 2.6.22-rc3-mm1 - works-for-me and a meta-question..., Valdis.Kletnieks, (Thu May 31, 3:05 pm)
Re: 2.6.22-rc3-mm1, Andrew Morton, (Thu May 31, 3:10 pm)
Re: 2.6.22-rc3-mm1 - works-for-me and a meta-question..., Andrew Morton, (Thu May 31, 3:16 pm)
Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage, Mark Fasheh, (Thu May 31, 4:13 pm)
Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage, Nick Piggin, (Thu May 31, 6:01 pm)
Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage, Mark Fasheh, (Thu May 31, 6:24 pm)
Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage, Nick Piggin, (Thu May 31, 6:34 pm)
Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage, Mark Fasheh, (Thu May 31, 6:45 pm)
Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage, Nick Piggin, (Thu May 31, 6:53 pm)
Re: 2.6.22-rc3-mm1, Arnaldo Carvalho de Melo, (Thu May 31, 7:01 pm)
Re: 2.6.22-rc3-mm1, Andrew Morton, (Thu May 31, 7:12 pm)
Re: 2.6.22-rc3-mm1, Arnaldo Carvalho de Melo, (Thu May 31, 7:24 pm)
Re: 2.6.22-rc3-mm1, Michael Ellerman, (Thu May 31, 8:52 pm)
Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage, Mark Fasheh, (Thu May 31, 10:20 pm)
Re: 2.6.22-rc3-mm1, Eric W. Biederman, (Thu May 31, 10:55 pm)
Re: 2.6.22-rc3-mm1, Cornelia Huck, (Fri Jun 1, 12:09 am)
2.6.22-rc3-mm1: IA64 make allnoconfig broken, Mel Gorman, (Fri Jun 1, 9:42 am)
Re: 2.6.22-rc3-mm1: IA64 make allnoconfig broken, Andrew Morton, (Fri Jun 1, 10:00 am)
Re: 2.6.22-rc3-mm1: IA64 make allnoconfig broken, Mel Gorman, (Fri Jun 1, 11:50 am)
Re: 2.6.22-rc3-mm1, Mariusz Kozlowski, (Fri Jun 1, 1:50 pm)
[PATCH] Fix problem with IA64 make allnoconfig, Mel Gorman, (Fri Jun 1, 1:55 pm)
Re: 2.6.22-rc3-mm1, Andrew Morton, (Fri Jun 1, 2:02 pm)
Re: 2.6.22-rc3-mm1, Mariusz Kozlowski, (Fri Jun 1, 2:21 pm)
Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage, Mark Fasheh, (Fri Jun 1, 3:01 pm)
Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage, Andrew Morton, (Fri Jun 1, 3:25 pm)
Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage, Mark Fasheh, (Fri Jun 1, 3:33 pm)
Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage, Andrew Morton, (Fri Jun 1, 3:47 pm)
Re: 2.6.22-rc3-mm1 - page_mkwrite() breakage, Mark Fasheh, (Fri Jun 1, 3:53 pm)
Re: 2.6.22-rc3-mm1, Benjamin Herrenschmidt, (Fri Jun 1, 4:30 pm)
Re: 2.6.22-rc3-mm1, Segher Boessenkool, (Sat Jun 2, 1:40 am)
2.6.22-rc3-mm1: Xen compile error with X86_CMPXCHG=n, Adrian Bunk, (Sat Jun 2, 6:57 am)
[-mm patch] fix XEN_BLKDEV_FRONTEND Makefile entry, Adrian Bunk, (Sat Jun 2, 10:06 am)
[-mm patch] make xpad_play_effect() static, Adrian Bunk, (Sun Jun 3, 1:54 pm)
[-mm patch] fix the tea5761 tuner support, Adrian Bunk, (Sun Jun 3, 1:54 pm)
[-mm patch] e1000: #if 0 two functions, Adrian Bunk, (Mon Jun 4, 3:12 pm)
[-mm patch] drivers/mmc/core/core.{h,c}: cleanups, Adrian Bunk, (Mon Jun 4, 3:13 pm)
Re: 2.6.22-rc3-mm1, Ingo Molnar, (Tue Jun 5, 2:11 am)
Re: 2.6.22-rc3-mm1, Ingo Molnar, (Tue Jun 5, 2:18 am)
Re: 2.6.22-rc3-mm1, Andrew Morton, (Tue Jun 5, 2:24 am)
Re: 2.6.22-rc3-mm1, Ingo Molnar, (Tue Jun 5, 2:33 am)
Re: 2.6.22-rc3-mm1, Ingo Molnar, (Tue Jun 5, 2:39 am)
Re: 2.6.22-rc3-mm1, Ingo Molnar, (Tue Jun 5, 2:42 am)
Re: 2.6.22-rc3-mm1, Ingo Molnar, (Tue Jun 5, 2:45 am)
Re: 2.6.22-rc3-mm1, Ingo Molnar, (Tue Jun 5, 2:50 am)
Re: 2.6.22-rc3 nmi watchdog hang, Ingo Molnar, (Tue Jun 5, 2:56 am)
Re: 2.6.22-rc3-mm1, Rusty Russell, (Tue Jun 5, 8:16 am)
[-mm patch] kernel/power/disk.c: make code static, Adrian Bunk, (Tue Jun 5, 2:50 pm)
[-mm patch] kernel/sched{,_fair}.c: make code static, Adrian Bunk, (Tue Jun 5, 2:50 pm)
[-mm patch] fs/proc/base.c: make a struct static, Adrian Bunk, (Tue Jun 5, 2:51 pm)
Re: [-mm patch] kernel/power/disk.c: make code static, Rafael J. Wysocki, (Tue Jun 5, 3:10 pm)
Re: [-mm patch] kernel/sched{,_fair}.c: make code static, Andrew Morton, (Tue Jun 5, 11:54 pm)
Re: [-mm patch] fs/proc/base.c: make a struct static, Ingo Molnar, (Wed Jun 6, 12:32 am)
Re: [-mm patch] drivers/mmc/core/core.{h,c}: cleanups, Pierre Ossman, (Wed Jun 6, 11:36 am)
Re: 2.6.22-rc3 nmi watchdog hang, Björn, (Sun Jun 10, 11:10 am)
Re: 2.6.22-rc3 nmi watchdog hang, Ingo Molnar, (Mon Jun 18, 5:11 am)
Re: 2.6.22-rc3 nmi watchdog hang, Björn, (Mon Jun 18, 7:31 am)
Re: 2.6.22-rc3 nmi watchdog hang, Ingo Molnar, (Sun Jun 24, 11:18 pm)
Re: 2.6.22-rc3 nmi watchdog hang, Ingo Molnar, (Sun Jun 24, 11:59 pm)
[patch, 2.6.22-rc6] fix nmi_watchdog=2 bootup hang, Ingo Molnar, (Mon Jun 25, 1:05 am)
Re: [patch, 2.6.22-rc6] fix nmi_watchdog=2 bootup hang, Ingo Molnar, (Mon Jun 25, 1:26 am)
Re: [patch, 2.6.22-rc6] fix nmi_watchdog=2 bootup hang, Jeremy Fitzhardinge, (Mon Jun 25, 5:40 am)
Re: [patch, 2.6.22-rc6] fix nmi_watchdog=2 bootup hang, Jeremy Fitzhardinge, (Mon Jun 25, 5:49 am)
Re: 2.6.22-rc3-mm1: Xen compile error with X86_CMPXCHG=n, Jeremy Fitzhardinge, (Thu Jun 28, 8:21 pm)