From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751439AbcHHFmQ (ORCPT ); Mon, 8 Aug 2016 01:42:16 -0400 Received: from mga14.intel.com ([192.55.52.115]:38435 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750798AbcHHFmP (ORCPT ); Mon, 8 Aug 2016 01:42:15 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.28,488,1464678000"; d="scan'208";a="745616859" Date: Mon, 8 Aug 2016 11:19:43 +0530 From: Vinod Koul To: Mitchel Humpherys Cc: Joerg Roedel , iommu@lists.linux-foundation.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Robin Murphy , Will Deacon , Marek Szyprowski , Jordan Crouse , Jeremy Gebben , Patrick Daly , Pratik Patel , Thomas Zeng , Dan Williams Subject: Re: [PATCH v5 5/6] dmaengine: pl330: Make sure microcode is privileged Message-ID: <20160808054943.GT9681@localhost> References: <20160727234208.2101-1-mitchelh@codeaurora.org> <20160727234208.2101-6-mitchelh@codeaurora.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20160727234208.2101-6-mitchelh@codeaurora.org> User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Jul 27, 2016 at 04:42:07PM -0700, Mitchel Humpherys wrote: > The PL330 performs privileged instruction fetches. This can result in > SMMU permission faults on SMMUs that implement the ARMv8 VMSA, which Lot of acronyms with no explanation whatsoever > specifies that mappings that are writeable at one execution level shall > not be executable at any higher-privileged level. Fix this by using the > DMA_ATTR_PRIVILEGED attribute, which will ensure that the microcode > IOMMU mapping is only accessible to the privileged level. And I get satndalone patch with no context for the series! > > Cc: Dan Williams > Cc: Vinod Koul > Reviewed-by: Robin Murphy > Tested-by: Robin Murphy > Signed-off-by: Mitchel Humpherys > --- > > Notes: > v3..v4 > > - Reworked against the new dma attrs format. > > drivers/dma/pl330.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c > index 4fc3ffbd5ca0..8cd624fc3760 100644 > --- a/drivers/dma/pl330.c > +++ b/drivers/dma/pl330.c > @@ -1854,14 +1854,16 @@ static int dmac_alloc_resources(struct pl330_dmac *pl330) > { > int chans = pl330->pcfg.num_chan; > int ret; > + unsigned long dma_attrs = DMA_ATTR_PRIVILEGED; > > /* > * Alloc MicroCode buffer for 'chans' Channel threads. > * A channel's buffer offset is (Channel_Id * MCODE_BUFF_PERCHAN) > */ > - pl330->mcode_cpu = dma_alloc_coherent(pl330->ddma.dev, > + pl330->mcode_cpu = dma_alloc_attrs(pl330->ddma.dev, > chans * pl330->mcbufsz, > - &pl330->mcode_bus, GFP_KERNEL); > + &pl330->mcode_bus, GFP_KERNEL, > + dma_attrs); > if (!pl330->mcode_cpu) { > dev_err(pl330->ddma.dev, "%s:%d Can't allocate memory!\n", > __func__, __LINE__); > -- > Qualcomm Innovation Center, Inc. > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, > a Linux Foundation Collaborative Project > -- ~Vinod