From: Vinod Koul <vinod.koul-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> To: Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org> Cc: Jassi Brar <jaswinder.singh-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org, devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org Subject: Re: [PATCH 1/9] dma: pl330: rip out broken, redundant ID probing Date: Wed, 12 Jun 2013 11:01:30 +0530 [thread overview] Message-ID: <20130612053130.GD4107@intel.com> (raw) In-Reply-To: <1370889285-22799-2-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org> On Mon, Jun 10, 2013 at 07:34:37PM +0100, Will Deacon wrote: > The PL330 driver probes the peripheral and primecell IDs of the device to > make sure that it is indeed an AMBA PL330. However, it does this by > making byte accesses to a device mapping of the word-aligned ID > registers, which is either UNPREDICTABLE or generates an alignment fault > (depending on the presence of the virtualisation extensions). > > Rather than fix this code, we can actually rip most of it out and let > the AMBA bus driver correctly do the probing for us. > > Cc: Jassi Brar <jaswinder.singh-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org> > Cc: Vinod Koul <vinod.koul-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> > Signed-off-by: Will Deacon <will.deacon-5wv7dgnIgG8@public.gmane.org> Applied, thanks -- ~Vinod > --- > drivers/dma/pl330.c | 27 +++------------------------ > 1 file changed, 3 insertions(+), 24 deletions(-) > > diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c > index 24e0754..22e2a8f 100644 > --- a/drivers/dma/pl330.c > +++ b/drivers/dma/pl330.c > @@ -157,7 +157,6 @@ enum pl330_reqtype { > #define PERIPH_REV_R0P0 0 > #define PERIPH_REV_R1P0 1 > #define PERIPH_REV_R1P1 2 > -#define PCELL_ID 0xff0 > > #define CR0_PERIPH_REQ_SET (1 << 0) > #define CR0_BOOT_EN_SET (1 << 1) > @@ -193,8 +192,6 @@ enum pl330_reqtype { > #define INTEG_CFG 0x0 > #define PERIPH_ID_VAL ((PART << 0) | (DESIGNER << 12)) > > -#define PCELL_ID_VAL 0xb105f00d > - > #define PL330_STATE_STOPPED (1 << 0) > #define PL330_STATE_EXECUTING (1 << 1) > #define PL330_STATE_WFE (1 << 2) > @@ -292,7 +289,6 @@ static unsigned cmd_line; > /* Populated by the PL330 core driver for DMA API driver's info */ > struct pl330_config { > u32 periph_id; > - u32 pcell_id; > #define DMAC_MODE_NS (1 << 0) > unsigned int mode; > unsigned int data_bus_width:10; /* In number of bits */ > @@ -650,19 +646,6 @@ static inline bool _manager_ns(struct pl330_thread *thrd) > return (pl330->pinfo->pcfg.mode & DMAC_MODE_NS) ? true : false; > } > > -static inline u32 get_id(struct pl330_info *pi, u32 off) > -{ > - void __iomem *regs = pi->base; > - u32 id = 0; > - > - id |= (readb(regs + off + 0x0) << 0); > - id |= (readb(regs + off + 0x4) << 8); > - id |= (readb(regs + off + 0x8) << 16); > - id |= (readb(regs + off + 0xc) << 24); > - > - return id; > -} > - > static inline u32 get_revision(u32 periph_id) > { > return (periph_id >> PERIPH_REV_SHIFT) & PERIPH_REV_MASK; > @@ -1986,9 +1969,6 @@ static void read_dmac_config(struct pl330_info *pi) > pi->pcfg.num_events = val; > > pi->pcfg.irq_ns = readl(regs + CR3); > - > - pi->pcfg.periph_id = get_id(pi, PERIPH_ID); > - pi->pcfg.pcell_id = get_id(pi, PCELL_ID); > } > > static inline void _reset_thread(struct pl330_thread *thrd) > @@ -2098,10 +2078,8 @@ static int pl330_add(struct pl330_info *pi) > regs = pi->base; > > /* Check if we can handle this DMAC */ > - if ((get_id(pi, PERIPH_ID) & 0xfffff) != PERIPH_ID_VAL > - || get_id(pi, PCELL_ID) != PCELL_ID_VAL) { > - dev_err(pi->dev, "PERIPH_ID 0x%x, PCELL_ID 0x%x !\n", > - get_id(pi, PERIPH_ID), get_id(pi, PCELL_ID)); > + if ((pi->pcfg.periph_id & 0xfffff) != PERIPH_ID_VAL) { > + dev_err(pi->dev, "PERIPH_ID 0x%x !\n", pi->pcfg.periph_id); > return -EINVAL; > } > > @@ -2922,6 +2900,7 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id) > if (ret) > return ret; > > + pi->pcfg.periph_id = adev->periphid; > ret = pl330_add(pi); > if (ret) > goto probe_err1; > -- > 1.8.2.2 > --
WARNING: multiple messages have this Message-ID (diff)
From: vinod.koul@intel.com (Vinod Koul) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 1/9] dma: pl330: rip out broken, redundant ID probing Date: Wed, 12 Jun 2013 11:01:30 +0530 [thread overview] Message-ID: <20130612053130.GD4107@intel.com> (raw) In-Reply-To: <1370889285-22799-2-git-send-email-will.deacon@arm.com> On Mon, Jun 10, 2013 at 07:34:37PM +0100, Will Deacon wrote: > The PL330 driver probes the peripheral and primecell IDs of the device to > make sure that it is indeed an AMBA PL330. However, it does this by > making byte accesses to a device mapping of the word-aligned ID > registers, which is either UNPREDICTABLE or generates an alignment fault > (depending on the presence of the virtualisation extensions). > > Rather than fix this code, we can actually rip most of it out and let > the AMBA bus driver correctly do the probing for us. > > Cc: Jassi Brar <jaswinder.singh@linaro.org> > Cc: Vinod Koul <vinod.koul@intel.com> > Signed-off-by: Will Deacon <will.deacon@arm.com> Applied, thanks -- ~Vinod > --- > drivers/dma/pl330.c | 27 +++------------------------ > 1 file changed, 3 insertions(+), 24 deletions(-) > > diff --git a/drivers/dma/pl330.c b/drivers/dma/pl330.c > index 24e0754..22e2a8f 100644 > --- a/drivers/dma/pl330.c > +++ b/drivers/dma/pl330.c > @@ -157,7 +157,6 @@ enum pl330_reqtype { > #define PERIPH_REV_R0P0 0 > #define PERIPH_REV_R1P0 1 > #define PERIPH_REV_R1P1 2 > -#define PCELL_ID 0xff0 > > #define CR0_PERIPH_REQ_SET (1 << 0) > #define CR0_BOOT_EN_SET (1 << 1) > @@ -193,8 +192,6 @@ enum pl330_reqtype { > #define INTEG_CFG 0x0 > #define PERIPH_ID_VAL ((PART << 0) | (DESIGNER << 12)) > > -#define PCELL_ID_VAL 0xb105f00d > - > #define PL330_STATE_STOPPED (1 << 0) > #define PL330_STATE_EXECUTING (1 << 1) > #define PL330_STATE_WFE (1 << 2) > @@ -292,7 +289,6 @@ static unsigned cmd_line; > /* Populated by the PL330 core driver for DMA API driver's info */ > struct pl330_config { > u32 periph_id; > - u32 pcell_id; > #define DMAC_MODE_NS (1 << 0) > unsigned int mode; > unsigned int data_bus_width:10; /* In number of bits */ > @@ -650,19 +646,6 @@ static inline bool _manager_ns(struct pl330_thread *thrd) > return (pl330->pinfo->pcfg.mode & DMAC_MODE_NS) ? true : false; > } > > -static inline u32 get_id(struct pl330_info *pi, u32 off) > -{ > - void __iomem *regs = pi->base; > - u32 id = 0; > - > - id |= (readb(regs + off + 0x0) << 0); > - id |= (readb(regs + off + 0x4) << 8); > - id |= (readb(regs + off + 0x8) << 16); > - id |= (readb(regs + off + 0xc) << 24); > - > - return id; > -} > - > static inline u32 get_revision(u32 periph_id) > { > return (periph_id >> PERIPH_REV_SHIFT) & PERIPH_REV_MASK; > @@ -1986,9 +1969,6 @@ static void read_dmac_config(struct pl330_info *pi) > pi->pcfg.num_events = val; > > pi->pcfg.irq_ns = readl(regs + CR3); > - > - pi->pcfg.periph_id = get_id(pi, PERIPH_ID); > - pi->pcfg.pcell_id = get_id(pi, PCELL_ID); > } > > static inline void _reset_thread(struct pl330_thread *thrd) > @@ -2098,10 +2078,8 @@ static int pl330_add(struct pl330_info *pi) > regs = pi->base; > > /* Check if we can handle this DMAC */ > - if ((get_id(pi, PERIPH_ID) & 0xfffff) != PERIPH_ID_VAL > - || get_id(pi, PCELL_ID) != PCELL_ID_VAL) { > - dev_err(pi->dev, "PERIPH_ID 0x%x, PCELL_ID 0x%x !\n", > - get_id(pi, PERIPH_ID), get_id(pi, PCELL_ID)); > + if ((pi->pcfg.periph_id & 0xfffff) != PERIPH_ID_VAL) { > + dev_err(pi->dev, "PERIPH_ID 0x%x !\n", pi->pcfg.periph_id); > return -EINVAL; > } > > @@ -2922,6 +2900,7 @@ pl330_probe(struct amba_device *adev, const struct amba_id *id) > if (ret) > return ret; > > + pi->pcfg.periph_id = adev->periphid; > ret = pl330_add(pi); > if (ret) > goto probe_err1; > -- > 1.8.2.2 > --
next prev parent reply other threads:[~2013-06-12 5:31 UTC|newest] Thread overview: 97+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-06-10 18:34 [PATCH 0/9] Add support for ARM SMMU architectures 1 and 2 Will Deacon 2013-06-10 18:34 ` Will Deacon [not found] ` <1370889285-22799-1-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org> 2013-06-10 18:34 ` [PATCH 1/9] dma: pl330: rip out broken, redundant ID probing Will Deacon 2013-06-10 18:34 ` Will Deacon [not found] ` <1370889285-22799-2-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org> 2013-06-11 4:37 ` Jassi Brar 2013-06-11 22:31 ` Grant Likely 2013-06-11 22:31 ` Grant Likely 2013-06-12 5:31 ` Vinod Koul [this message] 2013-06-12 5:31 ` Vinod Koul 2013-06-11 4:40 ` Jassi Brar 2013-06-11 4:40 ` Jassi Brar [not found] ` <CAJe_Zhc1UoTC4q4oaW=dzyi_10Q7EoezoT=G8_v+yCmBxV75+A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2013-06-11 8:45 ` Will Deacon 2013-06-11 8:45 ` Will Deacon 2013-06-10 18:34 ` [PATCH 2/9] dma: pl330: use dma_addr_t for describing bus addresses Will Deacon 2013-06-10 18:34 ` Will Deacon [not found] ` <1370889285-22799-3-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org> 2013-06-11 4:37 ` Jassi Brar [not found] ` <CAJe_ZheKMVQgq42Vx5N1TXXdgFJ2sp50ixU30A7beXhmSVHnZQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2013-06-12 5:31 ` Vinod Koul 2013-06-12 5:31 ` Vinod Koul 2013-06-11 22:32 ` Grant Likely 2013-06-11 22:32 ` Grant Likely 2013-06-11 4:39 ` Jassi Brar 2013-06-11 4:39 ` Jassi Brar 2013-06-10 18:34 ` [PATCH 3/9] ARM: dma-mapping: convert DMA direction into IOMMU protection attributes Will Deacon 2013-06-10 18:34 ` Will Deacon 2013-06-19 8:37 ` Marek Szyprowski 2013-06-19 8:37 ` Marek Szyprowski [not found] ` <51C16DAF.1090205-Sze3O3UU22JBDgjK7y7TUQ@public.gmane.org> 2013-06-19 8:52 ` Will Deacon 2013-06-19 8:52 ` Will Deacon [not found] ` <20130619085202.GC20351-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org> 2013-06-19 8:57 ` Marek Szyprowski 2013-06-19 8:57 ` Marek Szyprowski [not found] ` <1370889285-22799-4-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org> 2013-06-25 10:12 ` Hiroshi Doyu 2013-06-25 10:12 ` Hiroshi Doyu [not found] ` <20130625131215.d3cea2a5668a3d41dbbeb064-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 2013-06-25 11:37 ` Will Deacon 2013-06-25 11:37 ` Will Deacon [not found] ` <20130625113714.GF31838-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org> 2013-06-25 11:52 ` Hiroshi Doyu 2013-06-25 11:52 ` Hiroshi Doyu 2013-06-25 11:52 ` Hiroshi Doyu [not found] ` <20130625.145226.1632119404634300971.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 2013-06-25 12:34 ` Will Deacon 2013-06-25 12:34 ` Will Deacon 2013-06-10 18:34 ` [PATCH 4/9] ARM: dma-mapping: NULLify dev->archdata.mapping pointer on detach Will Deacon 2013-06-10 18:34 ` Will Deacon [not found] ` <1370889285-22799-5-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org> 2013-06-11 5:34 ` Hiroshi Doyu 2013-06-11 5:34 ` Hiroshi Doyu [not found] ` <20130611.083455.1500863288897785600.hdoyu-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 2013-06-11 8:50 ` Will Deacon 2013-06-11 8:50 ` Will Deacon [not found] ` <20130611085015.GC24729-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org> 2013-06-11 9:39 ` Hiroshi Doyu 2013-06-11 9:39 ` Hiroshi Doyu [not found] ` <20130611123933.4d278ff4e056f395788ad060-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org> 2013-06-19 8:59 ` Marek Szyprowski 2013-06-19 8:59 ` Marek Szyprowski 2013-06-10 18:34 ` [PATCH 5/9] arm64: pgtable: use pte_index instead of __pte_index Will Deacon 2013-06-10 18:34 ` Will Deacon 2013-06-10 18:34 ` [PATCH 6/9] arm64: device: add iommu pointer to device archdata Will Deacon 2013-06-10 18:34 ` Will Deacon 2013-06-10 18:34 ` [PATCH 7/9] documentation: iommu: add description of ARM System MMU binding Will Deacon 2013-06-10 18:34 ` Will Deacon [not found] ` <1370889285-22799-8-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org> 2013-06-12 8:44 ` Grant Likely 2013-06-12 8:44 ` Grant Likely 2013-06-20 20:08 ` Joerg Roedel 2013-06-20 20:08 ` Joerg Roedel [not found] ` <20130620200845.GF11309-zLv9SwRftAIdnm+yROfE0A@public.gmane.org> 2013-06-21 9:57 ` Will Deacon 2013-06-21 9:57 ` Will Deacon [not found] ` <20130621095729.GA7766-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org> 2013-06-21 13:55 ` Joerg Roedel 2013-06-21 13:55 ` Joerg Roedel [not found] ` <20130621135507.GI11309-zLv9SwRftAIdnm+yROfE0A@public.gmane.org> 2013-06-21 16:41 ` Will Deacon 2013-06-21 16:41 ` Will Deacon 2013-06-25 19:18 ` Stuart Yoder 2013-06-25 19:18 ` Stuart Yoder [not found] ` <CALRxmdBxFWoRKv+bUu8VEwNNcAJUej9jM2V8N0rrqrr_Vpe8fQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2013-06-26 13:39 ` Will Deacon 2013-06-26 13:39 ` Will Deacon [not found] ` <20130626133941.GD7417-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org> 2013-06-26 16:19 ` Stuart Yoder 2013-06-26 16:19 ` Stuart Yoder [not found] ` <CALRxmdCycFK2wW=C4aU79mudSaT+2vU8nzXxepdstubg+YSdQg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2013-06-26 17:42 ` Will Deacon 2013-06-26 17:42 ` Will Deacon [not found] ` <20130626174231.GH10333-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org> 2013-06-27 18:22 ` Stuart Yoder 2013-06-27 18:22 ` Stuart Yoder [not found] ` <CALRxmdD5fyp06xW+z=rWagJc_bcJmpr1H9Zbdf=xbg9cCzvVfw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org> 2013-06-28 9:06 ` Will Deacon 2013-06-28 9:06 ` Will Deacon [not found] ` <20130628090635.GB29002-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org> 2013-06-28 16:03 ` Stuart Yoder 2013-06-28 16:03 ` Stuart Yoder 2013-06-10 18:34 ` [PATCH 8/9] iommu: add support for ARM Ltd. System MMU architecture Will Deacon 2013-06-10 18:34 ` Will Deacon [not found] ` <1370889285-22799-9-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org> 2013-06-20 21:26 ` Joerg Roedel 2013-06-20 21:26 ` Joerg Roedel [not found] ` <20130620212646.GG11309-zLv9SwRftAIdnm+yROfE0A@public.gmane.org> 2013-06-21 10:23 ` Will Deacon 2013-06-21 10:23 ` Will Deacon [not found] ` <20130621102318.GB7766-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org> 2013-06-21 14:13 ` Joerg Roedel 2013-06-21 14:13 ` Joerg Roedel 2013-06-21 15:00 ` Will Deacon 2013-06-21 15:00 ` Will Deacon [not found] ` <20130621150006.GG7766-MRww78TxoiP5vMa5CHWGZ34zcgK1vI+I0E9HWUfgJXw@public.gmane.org> 2013-06-21 15:30 ` Joerg Roedel 2013-06-21 15:30 ` Joerg Roedel [not found] ` <20130621153044.GL11309-zLv9SwRftAIdnm+yROfE0A@public.gmane.org> 2013-06-21 16:40 ` Will Deacon 2013-06-21 16:40 ` Will Deacon 2013-06-10 18:34 ` [PATCH 9/9] MAINTAINERS: add entry for ARM system MMU driver Will Deacon 2013-06-10 18:34 ` Will Deacon [not found] ` <1370889285-22799-10-git-send-email-will.deacon-5wv7dgnIgG8@public.gmane.org> 2013-06-12 8:45 ` Grant Likely 2013-06-12 8:45 ` Grant Likely
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=20130612053130.GD4107@intel.com \ --to=vinod.koul-ral2jqcrhueavxtiumwx3w@public.gmane.org \ --cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \ --cc=iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \ --cc=jaswinder.singh-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \ --cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \ --cc=will.deacon-5wv7dgnIgG8@public.gmane.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: linkBe 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.