All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Gary R Hook <gary.hook@amd.com>,
	Herbert Xu <herbert@gondor.apana.org.au>
Subject: [PATCH 4.10 43/81] crypto: ccp - Make some CCP DMA channels private
Date: Thu,  6 Apr 2017 10:38:35 +0200	[thread overview]
Message-ID: <20170406083626.055669639@linuxfoundation.org> (raw)
In-Reply-To: <20170406083624.322941631@linuxfoundation.org>

4.10-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Gary R Hook <gary.hook@amd.com>

commit efc989fce8703914bac091dcc4b8ff7a72ccf987 upstream.

The CCP registers its queues as channels capable of handling
general DMA operations. The NTB driver will use DMA if
directed, but as public channels can be reserved for use in
asynchronous operations some channels should be held back
as private. Since the public/private determination is
handled at a device level, reserve the "other" (secondary)
CCP channels as private.

Add a module parameter that allows for override, to be
applied to all channels on all devices.

Signed-off-by: Gary R Hook <gary.hook@amd.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 drivers/crypto/ccp/ccp-dev-v5.c    |    1 
 drivers/crypto/ccp/ccp-dev.h       |    5 ++++
 drivers/crypto/ccp/ccp-dmaengine.c |   41 +++++++++++++++++++++++++++++++++++++
 3 files changed, 47 insertions(+)

--- a/drivers/crypto/ccp/ccp-dev-v5.c
+++ b/drivers/crypto/ccp/ccp-dev-v5.c
@@ -1014,6 +1014,7 @@ const struct ccp_vdata ccpv5a = {
 
 const struct ccp_vdata ccpv5b = {
 	.version = CCP_VERSION(5, 0),
+	.dma_chan_attr = DMA_PRIVATE,
 	.setup = ccp5other_config,
 	.perform = &ccp5_actions,
 	.bar = 2,
--- a/drivers/crypto/ccp/ccp-dev.h
+++ b/drivers/crypto/ccp/ccp-dev.h
@@ -179,6 +179,10 @@
 
 /* ------------------------ General CCP Defines ------------------------ */
 
+#define	CCP_DMA_DFLT			0x0
+#define	CCP_DMA_PRIV			0x1
+#define	CCP_DMA_PUB			0x2
+
 #define CCP_DMAPOOL_MAX_SIZE		64
 #define CCP_DMAPOOL_ALIGN		BIT(5)
 
@@ -635,6 +639,7 @@ struct ccp_actions {
 /* Structure to hold CCP version-specific values */
 struct ccp_vdata {
 	const unsigned int version;
+	const unsigned int dma_chan_attr;
 	void (*setup)(struct ccp_device *);
 	const struct ccp_actions *perform;
 	const unsigned int bar;
--- a/drivers/crypto/ccp/ccp-dmaengine.c
+++ b/drivers/crypto/ccp/ccp-dmaengine.c
@@ -10,6 +10,7 @@
  * published by the Free Software Foundation.
  */
 
+#include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/dmaengine.h>
 #include <linux/spinlock.h>
@@ -25,6 +26,37 @@
 	(mask == 0) ? 64 : fls64(mask);	\
 })
 
+/* The CCP as a DMA provider can be configured for public or private
+ * channels. Default is specified in the vdata for the device (PCI ID).
+ * This module parameter will override for all channels on all devices:
+ *   dma_chan_attr = 0x2 to force all channels public
+ *                 = 0x1 to force all channels private
+ *                 = 0x0 to defer to the vdata setting
+ *                 = any other value: warning, revert to 0x0
+ */
+static unsigned int dma_chan_attr = CCP_DMA_DFLT;
+module_param(dma_chan_attr, uint, 0444);
+MODULE_PARM_DESC(dma_chan_attr, "Set DMA channel visibility: 0 (default) = device defaults, 1 = make private, 2 = make public");
+
+unsigned int ccp_get_dma_chan_attr(struct ccp_device *ccp)
+{
+	switch (dma_chan_attr) {
+	case CCP_DMA_DFLT:
+		return ccp->vdata->dma_chan_attr;
+
+	case CCP_DMA_PRIV:
+		return DMA_PRIVATE;
+
+	case CCP_DMA_PUB:
+		return 0;
+
+	default:
+		dev_info_once(ccp->dev, "Invalid value for dma_chan_attr: %d\n",
+			      dma_chan_attr);
+		return ccp->vdata->dma_chan_attr;
+	}
+}
+
 static void ccp_free_cmd_resources(struct ccp_device *ccp,
 				   struct list_head *list)
 {
@@ -675,6 +707,15 @@ int ccp_dmaengine_register(struct ccp_de
 	dma_cap_set(DMA_SG, dma_dev->cap_mask);
 	dma_cap_set(DMA_INTERRUPT, dma_dev->cap_mask);
 
+	/* The DMA channels for this device can be set to public or private,
+	 * and overridden by the module parameter dma_chan_attr.
+	 * Default: according to the value in vdata (dma_chan_attr=0)
+	 * dma_chan_attr=0x1: all channels private (override vdata)
+	 * dma_chan_attr=0x2: all channels public (override vdata)
+	 */
+	if (ccp_get_dma_chan_attr(ccp) == DMA_PRIVATE)
+		dma_cap_set(DMA_PRIVATE, dma_dev->cap_mask);
+
 	INIT_LIST_HEAD(&dma_dev->channels);
 	for (i = 0; i < ccp->cmd_q_count; i++) {
 		chan = ccp->ccp_dma_chan + i;

  parent reply	other threads:[~2017-04-06  9:00 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-06  8:37 [PATCH 4.10 00/81] 4.10.9-stable review Greg Kroah-Hartman
2017-04-06  8:37 ` [PATCH 4.10 01/81] libceph: force GFP_NOIO for socket allocations Greg Kroah-Hartman
2017-04-06  8:37 ` [PATCH 4.10 02/81] KVM: nVMX: fix nested EPT detection Greg Kroah-Hartman
2017-04-06  8:37 ` [PATCH 4.10 03/81] xfs: pull up iolock from xfs_free_eofblocks() Greg Kroah-Hartman
2017-04-06  8:37 ` [PATCH 4.10 04/81] xfs: sync eofblocks scans under iolock are livelock prone Greg Kroah-Hartman
2017-04-06  8:37 ` [PATCH 4.10 05/81] xfs: fix eofblocks race with file extending async dio writes Greg Kroah-Hartman
2017-04-06  8:37 ` [PATCH 4.10 06/81] xfs: fix toctou race when locking an inode to access the data map Greg Kroah-Hartman
2017-04-06  8:37 ` [PATCH 4.10 07/81] xfs: fail _dir_open when readahead fails Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 08/81] xfs: filter out obviously bad btree pointers Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 09/81] xfs: check for obviously bad level values in the bmbt root Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 10/81] xfs: verify free block header fields Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 11/81] xfs: allow unwritten extents in the CoW fork Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 12/81] xfs: mark speculative prealloc CoW fork extents unwritten Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 13/81] xfs: reset b_first_retry_time when clear the retry status of xfs_buf_t Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 14/81] xfs: reject all unaligned direct writes to reflinked files Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 15/81] xfs: update ctime and mtime on clone destinatation inodes Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 16/81] xfs: correct null checks and error processing in xfs_initialize_perag Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 17/81] xfs: dont fail xfs_extent_busy allocation Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 18/81] xfs: handle indlen shortage on delalloc extent merge Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 19/81] xfs: split indlen reservations fairly when under reserved Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 20/81] xfs: fix uninitialized variable in _reflink_convert_cow Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 21/81] xfs: dont reserve blocks for right shift transactions Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 22/81] xfs: Use xfs_icluster_size_fsb() to calculate inode chunk alignment Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 23/81] xfs: tune down agno asserts in the bmap code Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 24/81] xfs: only reclaim unwritten COW extents periodically Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 25/81] xfs: fix and streamline error handling in xfs_end_io Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 26/81] xfs: Use xfs_icluster_size_fsb() to calculate inode alignment mask Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 27/81] xfs: use iomap new flag for newly allocated delalloc blocks Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 28/81] xfs: try any AG when allocating the first btree block when reflinking Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 29/81] scsi: sg: check length passed to SG_NEXT_CMD_LEN Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 30/81] scsi: libsas: fix ata xfer length Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 31/81] scsi: scsi_dh_alua: Check scsi_device_get() return value Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 32/81] scsi: scsi_dh_alua: Ensure that alua_activate() calls the completion function Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 34/81] PCI: thunder-pem: Use Cavium assigned hardware ID for ThunderX host controller Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 35/81] ALSA: seq: Fix race during FIFO resize Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 36/81] ALSA: hda - fix a problem for lineout on a Dell AIO machine Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 37/81] ASoC: atmel-classd: fix audio clock rate Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 38/81] ASoC: Intel: Skylake: fix invalid memory access due to wrong reference of pointer Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 39/81] ASoC: rt5665: fix getting wrong work handler container Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 40/81] HID: wacom: Dont add ghost interface as shared data Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 41/81] mmc: sdhci: Disable runtime pm when the sdio_irq is enabled Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 42/81] mmc: sdhci-of-at91: fix MMC_DDR_52 timing selection Greg Kroah-Hartman
2017-04-06  8:38 ` Greg Kroah-Hartman [this message]
2017-04-06  8:38 ` [PATCH 4.10 44/81] crypto: xts,lrw - fix out-of-bounds write after kmalloc failure Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 45/81] ARCv2: SLC: Make sure busy bit is set properly on SLC flushing Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 46/81] NFSv4.1 fix infinite loop on IO BAD_STATEID error Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 47/81] nfsd: map the ENOKEY to nfserr_perm for avoiding warning Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 48/81] dt-bindings: rng: clocks property on omap_rng not always mandatory Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 49/81] parisc: Clean up fixup routines for get_user()/put_user() Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 50/81] parisc: Avoid stalled CPU warnings after system shutdown Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 51/81] parisc: Fix access fault handling in pa_memcpy() Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 52/81] ACPI: Fix incompatibility with mcount-based function graph tracing Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 53/81] ACPI: Do not create a platform_device for IOAPIC/IOxAPIC Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 54/81] tty/serial: atmel: fix race condition (TX+DMA) Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 55/81] tty/serial: atmel: fix TX path in atmel_console_write() Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 56/81] xhci: Set URB actual length for stopped control transfers Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 57/81] USB: fix linked-list corruption in rh_call_control() Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 60/81] KVM: kvm_io_bus_unregister_dev() should never fail Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 62/81] drm/vc4: Allocate the right amount of space for boot-time CRTC state Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 63/81] drm/etnaviv: (re-)protect fence allocation with GPU mutex Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 64/81] drm/i915/kvmgt: Hold struct kvm reference Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 65/81] x86/mm/KASLR: Exclude EFI region from KASLR VA space randomization Greg Kroah-Hartman
2017-04-06  8:38   ` Greg Kroah-Hartman
2017-04-06  8:38 ` [PATCH 4.10 66/81] x86/mce: Fix copy/paste error in exception table entries Greg Kroah-Hartman
2017-04-06  8:39 ` [PATCH 4.10 68/81] mm: rmap: fix huge file mmap accounting in the memcg stats Greg Kroah-Hartman
2017-04-06  8:39 ` [PATCH 4.10 69/81] mm: workingset: fix premature shadow node shrinking with cgroups Greg Kroah-Hartman
2017-04-06  8:39 ` [PATCH 4.10 70/81] mm, hugetlb: use pte_present() instead of pmd_present() in follow_huge_pmd() Greg Kroah-Hartman
2017-04-06  8:39 ` [PATCH 4.10 71/81] drm/armada: Fix compile fail Greg Kroah-Hartman
2017-04-06  8:39 ` [PATCH 4.10 73/81] MIPS: Lantiq: Fix cascaded IRQ setup Greg Kroah-Hartman
2017-04-06  8:39 ` [PATCH 4.10 74/81] blk: improve order of bio handling in generic_make_request() Greg Kroah-Hartman
2017-04-06  8:39 ` [PATCH 4.10 75/81] blk: Ensure users for current->bio_list can see the full list Greg Kroah-Hartman
2017-04-06  8:39 ` [PATCH 4.10 76/81] padata: avoid race in reordering Greg Kroah-Hartman
2017-04-06  8:39 ` [PATCH 4.10 77/81] nvme/core: Fix race kicking freed request_queue Greg Kroah-Hartman
2017-04-06  8:39 ` [PATCH 4.10 78/81] nvme/pci: Disable on removal when disconnected Greg Kroah-Hartman
2017-04-06  8:39 ` [PATCH 4.10 80/81] drm/i915: Let execlist_update_context() cover !FULL_PPGTT mode Greg Kroah-Hartman
2017-04-06  8:39 ` [PATCH 4.10 81/81] drm/i915: A hotfix for making aliasing PPGTT work for GVT-g Greg Kroah-Hartman
2017-04-06 17:54 ` [PATCH 4.10 00/81] 4.10.9-stable review Shuah Khan
2017-04-06 18:01   ` Greg Kroah-Hartman
2017-04-06 21:53 ` Guenter Roeck
2017-04-07  8:07   ` Greg Kroah-Hartman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170406083626.055669639@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=gary.hook@amd.com \
    --cc=herbert@gondor.apana.org.au \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.