* [PATCH 0/6] ata: Missing HAS_DMA dependencies
@ 2017-01-03 18:09 Geert Uytterhoeven
2017-01-03 18:09 ` [PATCH 1/6] ata: SATA_MV should depend on HAS_DMA Geert Uytterhoeven
` (6 more replies)
0 siblings, 7 replies; 8+ messages in thread
From: Geert Uytterhoeven @ 2017-01-03 18:09 UTC (permalink / raw)
To: Tejun Heo, Bartlomiej Zolnierkiewicz
Cc: linux-ide, linux-m68k, linux-kernel, Geert Uytterhoeven
Hi all,
Bartlomiej's "[PATCH 1/3] ata: allow subsystem to be used on m68k arch"
exposed a few missing dependencies on HAS_DMA. This series allows to
build again "allmodconfig" and "allyesconfig" kernels tailored for
Sun-3, which sets NO_DMA=y.
Geert Uytterhoeven (6):
ata: SATA_MV should depend on HAS_DMA
ata: SATA_HIGHBANK should depend on HAS_DMA
ata: ATA_BMDMA should depend on HAS_DMA
ata: AHCI and other non-SFF native drivers should depend on HAS_DMA
libata: Make ata_sg_clean() static again
libata: Protect DMA core code by #ifdef CONFIG_HAS_DMA
drivers/ata/Kconfig | 7 ++++++
drivers/ata/libata-core.c | 61 +++++++++++++++++++++++++++--------------------
drivers/ata/libata.h | 1 -
3 files changed, 42 insertions(+), 27 deletions(-)
--
1.9.1
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/6] ata: SATA_MV should depend on HAS_DMA
2017-01-03 18:09 [PATCH 0/6] ata: Missing HAS_DMA dependencies Geert Uytterhoeven
@ 2017-01-03 18:09 ` Geert Uytterhoeven
2017-01-03 18:09 ` [PATCH 2/6] ata: SATA_HIGHBANK " Geert Uytterhoeven
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Geert Uytterhoeven @ 2017-01-03 18:09 UTC (permalink / raw)
To: Tejun Heo, Bartlomiej Zolnierkiewicz
Cc: linux-ide, linux-m68k, linux-kernel, Geert Uytterhoeven
If NO_DMA=y:
ERROR: "dma_pool_alloc" [drivers/ata/sata_mv.ko] undefined!
ERROR: "dmam_pool_create" [drivers/ata/sata_mv.ko] undefined!
ERROR: "dma_pool_free" [drivers/ata/sata_mv.ko] undefined!
Add a dependency on HAS_DMA to fix this.
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
drivers/ata/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
index cbd101933c69322a..7b36b791078a4806 100644
--- a/drivers/ata/Kconfig
+++ b/drivers/ata/Kconfig
@@ -353,6 +353,7 @@ config SATA_HIGHBANK
config SATA_MV
tristate "Marvell SATA support"
+ depends on HAS_DMA
depends on PCI || ARCH_DOVE || ARCH_MV78XX0 || \
ARCH_MVEBU || ARCH_ORION5X || COMPILE_TEST
select GENERIC_PHY
--
1.9.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/6] ata: SATA_HIGHBANK should depend on HAS_DMA
2017-01-03 18:09 [PATCH 0/6] ata: Missing HAS_DMA dependencies Geert Uytterhoeven
2017-01-03 18:09 ` [PATCH 1/6] ata: SATA_MV should depend on HAS_DMA Geert Uytterhoeven
@ 2017-01-03 18:09 ` Geert Uytterhoeven
2017-01-03 18:09 ` [PATCH 3/6] ata: ATA_BMDMA " Geert Uytterhoeven
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Geert Uytterhoeven @ 2017-01-03 18:09 UTC (permalink / raw)
To: Tejun Heo, Bartlomiej Zolnierkiewicz
Cc: linux-ide, linux-m68k, linux-kernel, Geert Uytterhoeven
If NO_DMA=y:
ERROR: "bad_dma_ops" [drivers/ata/sata_highbank.ko] undefined!
Add a dependency on HAS_DMA to fix this.
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
drivers/ata/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
index 7b36b791078a4806..275dbbded6dbe03b 100644
--- a/drivers/ata/Kconfig
+++ b/drivers/ata/Kconfig
@@ -344,6 +344,7 @@ config SATA_DWC_VDEBUG
config SATA_HIGHBANK
tristate "Calxeda Highbank SATA support"
+ depends on HAS_DMA
depends on ARCH_HIGHBANK || COMPILE_TEST
help
This option enables support for the Calxeda Highbank SoC's
--
1.9.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/6] ata: ATA_BMDMA should depend on HAS_DMA
2017-01-03 18:09 [PATCH 0/6] ata: Missing HAS_DMA dependencies Geert Uytterhoeven
2017-01-03 18:09 ` [PATCH 1/6] ata: SATA_MV should depend on HAS_DMA Geert Uytterhoeven
2017-01-03 18:09 ` [PATCH 2/6] ata: SATA_HIGHBANK " Geert Uytterhoeven
@ 2017-01-03 18:09 ` Geert Uytterhoeven
2017-01-03 18:09 ` [PATCH 4/6] ata: AHCI and other non-SFF native drivers " Geert Uytterhoeven
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Geert Uytterhoeven @ 2017-01-03 18:09 UTC (permalink / raw)
To: Tejun Heo, Bartlomiej Zolnierkiewicz
Cc: linux-ide, linux-m68k, linux-kernel, Geert Uytterhoeven
If NO_DMA=y:
ERROR: "dmam_alloc_coherent" [drivers/ata/libata.ko] undefined!
Add a dependency on HAS_DMA to fix this.
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
drivers/ata/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
index 275dbbded6dbe03b..a973aa8aa5513eea 100644
--- a/drivers/ata/Kconfig
+++ b/drivers/ata/Kconfig
@@ -289,6 +289,7 @@ config SATA_SX4
config ATA_BMDMA
bool "ATA BMDMA support"
+ depends on HAS_DMA
default y
help
This option adds support for SFF ATA controllers with BMDMA
--
1.9.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 4/6] ata: AHCI and other non-SFF native drivers should depend on HAS_DMA
2017-01-03 18:09 [PATCH 0/6] ata: Missing HAS_DMA dependencies Geert Uytterhoeven
` (2 preceding siblings ...)
2017-01-03 18:09 ` [PATCH 3/6] ata: ATA_BMDMA " Geert Uytterhoeven
@ 2017-01-03 18:09 ` Geert Uytterhoeven
2017-01-03 18:09 ` [PATCH 5/6] libata: Make ata_sg_clean() static again Geert Uytterhoeven
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Geert Uytterhoeven @ 2017-01-03 18:09 UTC (permalink / raw)
To: Tejun Heo, Bartlomiej Zolnierkiewicz
Cc: linux-ide, linux-m68k, linux-kernel, Geert Uytterhoeven
If NO_DMA=y:
ERROR: "bad_dma_ops" [drivers/ata/libahci_platform.ko] undefined!
ERROR: "dmam_alloc_coherent" [drivers/ata/libahci.ko] undefined!
Add a block dependency on HAS_DMA to fix this.
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
drivers/ata/Kconfig | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/ata/Kconfig b/drivers/ata/Kconfig
index a973aa8aa5513eea..78c00202102913a0 100644
--- a/drivers/ata/Kconfig
+++ b/drivers/ata/Kconfig
@@ -80,6 +80,8 @@ config SATA_PMP
This option adds support for SATA Port Multipliers
(the SATA version of an ethernet hub, or SAS expander).
+if HAS_DMA
+
comment "Controllers with non-SFF native interface"
config SATA_AHCI
@@ -232,6 +234,8 @@ config SATA_SIL24
If unsure, say N.
+endif # HAS_DMA
+
config ATA_SFF
bool "ATA SFF support (for legacy IDE and PATA)"
default y
--
1.9.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 5/6] libata: Make ata_sg_clean() static again
2017-01-03 18:09 [PATCH 0/6] ata: Missing HAS_DMA dependencies Geert Uytterhoeven
` (3 preceding siblings ...)
2017-01-03 18:09 ` [PATCH 4/6] ata: AHCI and other non-SFF native drivers " Geert Uytterhoeven
@ 2017-01-03 18:09 ` Geert Uytterhoeven
2017-01-03 18:09 ` [PATCH 6/6] libata: Protect DMA core code by #ifdef CONFIG_HAS_DMA Geert Uytterhoeven
2017-01-06 16:37 ` [PATCH 0/6] ata: Missing HAS_DMA dependencies Tejun Heo
6 siblings, 0 replies; 8+ messages in thread
From: Geert Uytterhoeven @ 2017-01-03 18:09 UTC (permalink / raw)
To: Tejun Heo, Bartlomiej Zolnierkiewicz
Cc: linux-ide, linux-m68k, linux-kernel, Geert Uytterhoeven
Commit 70e6ad0c6d1e6cb9 ("[PATCH] libata: prepare ata_sg_clean() for
invocation from EH") made ata_sg_clean() global, but no user outside
libata-core.c has ever materialized.
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
drivers/ata/libata-core.c | 2 +-
drivers/ata/libata.h | 1 -
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 9cd0a2d4181699d9..a7e3df5abaa3124f 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -4822,7 +4822,7 @@ static unsigned int ata_dev_init_params(struct ata_device *dev,
* LOCKING:
* spin_lock_irqsave(host lock)
*/
-void ata_sg_clean(struct ata_queued_cmd *qc)
+static void ata_sg_clean(struct ata_queued_cmd *qc)
{
struct ata_port *ap = qc->ap;
struct scatterlist *sg = qc->sg;
diff --git a/drivers/ata/libata.h b/drivers/ata/libata.h
index 8f3a5596dd676b95..1133e9439f9c537e 100644
--- a/drivers/ata/libata.h
+++ b/drivers/ata/libata.h
@@ -89,7 +89,6 @@ extern int ata_dev_revalidate(struct ata_device *dev, unsigned int new_class,
extern int ata_down_xfermask_limit(struct ata_device *dev, unsigned int sel);
extern unsigned int ata_dev_set_feature(struct ata_device *dev,
u8 enable, u8 feature);
-extern void ata_sg_clean(struct ata_queued_cmd *qc);
extern void ata_qc_free(struct ata_queued_cmd *qc);
extern void ata_qc_issue(struct ata_queued_cmd *qc);
extern void __ata_qc_complete(struct ata_queued_cmd *qc);
--
1.9.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 6/6] libata: Protect DMA core code by #ifdef CONFIG_HAS_DMA
2017-01-03 18:09 [PATCH 0/6] ata: Missing HAS_DMA dependencies Geert Uytterhoeven
` (4 preceding siblings ...)
2017-01-03 18:09 ` [PATCH 5/6] libata: Make ata_sg_clean() static again Geert Uytterhoeven
@ 2017-01-03 18:09 ` Geert Uytterhoeven
2017-01-06 16:37 ` [PATCH 0/6] ata: Missing HAS_DMA dependencies Tejun Heo
6 siblings, 0 replies; 8+ messages in thread
From: Geert Uytterhoeven @ 2017-01-03 18:09 UTC (permalink / raw)
To: Tejun Heo, Bartlomiej Zolnierkiewicz
Cc: linux-ide, linux-m68k, linux-kernel, Geert Uytterhoeven
If NO_DMA=y:
ERROR: "bad_dma_ops" [drivers/ata/libata.ko] undefined!
To fix this, protect the DMA code by #ifdef CONFIG_HAS_DMA, and provide
dummies of ata_sg_clean() and ata_sg_setup() for the !CONFIG_HAS_DMA
case.
Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
drivers/ata/libata-core.c | 61 +++++++++++++++++++++++++++--------------------
1 file changed, 35 insertions(+), 26 deletions(-)
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index a7e3df5abaa3124f..dc70b5f997f1f13e 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -4814,32 +4814,6 @@ static unsigned int ata_dev_init_params(struct ata_device *dev,
}
/**
- * ata_sg_clean - Unmap DMA memory associated with command
- * @qc: Command containing DMA memory to be released
- *
- * Unmap all mapped DMA memory associated with this command.
- *
- * LOCKING:
- * spin_lock_irqsave(host lock)
- */
-static void ata_sg_clean(struct ata_queued_cmd *qc)
-{
- struct ata_port *ap = qc->ap;
- struct scatterlist *sg = qc->sg;
- int dir = qc->dma_dir;
-
- WARN_ON_ONCE(sg == NULL);
-
- VPRINTK("unmapping %u sg elements\n", qc->n_elem);
-
- if (qc->n_elem)
- dma_unmap_sg(ap->dev, sg, qc->orig_n_elem, dir);
-
- qc->flags &= ~ATA_QCFLAG_DMAMAP;
- qc->sg = NULL;
-}
-
-/**
* atapi_check_dma - Check whether ATAPI DMA can be supported
* @qc: Metadata associated with taskfile to check
*
@@ -4923,6 +4897,34 @@ void ata_sg_init(struct ata_queued_cmd *qc, struct scatterlist *sg,
qc->cursg = qc->sg;
}
+#ifdef CONFIG_HAS_DMA
+
+/**
+ * ata_sg_clean - Unmap DMA memory associated with command
+ * @qc: Command containing DMA memory to be released
+ *
+ * Unmap all mapped DMA memory associated with this command.
+ *
+ * LOCKING:
+ * spin_lock_irqsave(host lock)
+ */
+void ata_sg_clean(struct ata_queued_cmd *qc)
+{
+ struct ata_port *ap = qc->ap;
+ struct scatterlist *sg = qc->sg;
+ int dir = qc->dma_dir;
+
+ WARN_ON_ONCE(sg == NULL);
+
+ VPRINTK("unmapping %u sg elements\n", qc->n_elem);
+
+ if (qc->n_elem)
+ dma_unmap_sg(ap->dev, sg, qc->orig_n_elem, dir);
+
+ qc->flags &= ~ATA_QCFLAG_DMAMAP;
+ qc->sg = NULL;
+}
+
/**
* ata_sg_setup - DMA-map the scatter-gather table associated with a command.
* @qc: Command with scatter-gather table to be mapped.
@@ -4955,6 +4957,13 @@ static int ata_sg_setup(struct ata_queued_cmd *qc)
return 0;
}
+#else /* !CONFIG_HAS_DMA */
+
+static inline void ata_sg_clean(struct ata_queued_cmd *qc) {}
+static inline int ata_sg_setup(struct ata_queued_cmd *qc) { return -1; }
+
+#endif /* !CONFIG_HAS_DMA */
+
/**
* swap_buf_le16 - swap halves of 16-bit words in place
* @buf: Buffer to swap
--
1.9.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 0/6] ata: Missing HAS_DMA dependencies
2017-01-03 18:09 [PATCH 0/6] ata: Missing HAS_DMA dependencies Geert Uytterhoeven
` (5 preceding siblings ...)
2017-01-03 18:09 ` [PATCH 6/6] libata: Protect DMA core code by #ifdef CONFIG_HAS_DMA Geert Uytterhoeven
@ 2017-01-06 16:37 ` Tejun Heo
6 siblings, 0 replies; 8+ messages in thread
From: Tejun Heo @ 2017-01-06 16:37 UTC (permalink / raw)
To: Geert Uytterhoeven
Cc: Bartlomiej Zolnierkiewicz, linux-ide, linux-m68k, linux-kernel
On Tue, Jan 03, 2017 at 07:09:43PM +0100, Geert Uytterhoeven wrote:
> Hi all,
>
> Bartlomiej's "[PATCH 1/3] ata: allow subsystem to be used on m68k arch"
> exposed a few missing dependencies on HAS_DMA. This series allows to
> build again "allmodconfig" and "allyesconfig" kernels tailored for
> Sun-3, which sets NO_DMA=y.
Applied to 1-6 to libata/for-4.11.
Thanks.
--
tejun
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2017-01-06 16:37 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-03 18:09 [PATCH 0/6] ata: Missing HAS_DMA dependencies Geert Uytterhoeven
2017-01-03 18:09 ` [PATCH 1/6] ata: SATA_MV should depend on HAS_DMA Geert Uytterhoeven
2017-01-03 18:09 ` [PATCH 2/6] ata: SATA_HIGHBANK " Geert Uytterhoeven
2017-01-03 18:09 ` [PATCH 3/6] ata: ATA_BMDMA " Geert Uytterhoeven
2017-01-03 18:09 ` [PATCH 4/6] ata: AHCI and other non-SFF native drivers " Geert Uytterhoeven
2017-01-03 18:09 ` [PATCH 5/6] libata: Make ata_sg_clean() static again Geert Uytterhoeven
2017-01-03 18:09 ` [PATCH 6/6] libata: Protect DMA core code by #ifdef CONFIG_HAS_DMA Geert Uytterhoeven
2017-01-06 16:37 ` [PATCH 0/6] ata: Missing HAS_DMA dependencies Tejun Heo
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).