From: Sven Peter <sven@svenpeter.dev> To: iommu@lists.linux-foundation.org Cc: Sven Peter <sven@svenpeter.dev>, Joerg Roedel <joro@8bytes.org>, Will Deacon <will@kernel.org>, Robin Murphy <robin.murphy@arm.com>, Arnd Bergmann <arnd@kernel.org>, Mohamed Mediouni <mohamed.mediouni@caramail.com>, Alexander Graf <graf@amazon.com>, Hector Martin <marcan@marcan.st>, Alyssa Rosenzweig <alyssa@rosenzweig.io>, linux-kernel@vger.kernel.org Subject: [PATCH v2 8/8] iommu/dart: Remove force_bypass logic Date: Sat, 28 Aug 2021 17:36:42 +0200 [thread overview] Message-ID: <20210828153642.19396-9-sven@svenpeter.dev> (raw) In-Reply-To: <20210828153642.19396-1-sven@svenpeter.dev> Now that the dma-iommu API supports IOMMU granules which are larger than the CPU page size and that the kernel no longer runs into a BUG_ON when devices are attached to a domain with such a granule there's no need to force bypass mode anymore. Signed-off-by: Sven Peter <sven@svenpeter.dev> --- drivers/iommu/apple-dart.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/drivers/iommu/apple-dart.c b/drivers/iommu/apple-dart.c index 559db9259e65..c37fb4790e8a 100644 --- a/drivers/iommu/apple-dart.c +++ b/drivers/iommu/apple-dart.c @@ -90,7 +90,6 @@ * @lock: lock for hardware operations involving this dart * @pgsize: pagesize supported by this DART * @supports_bypass: indicates if this DART supports bypass mode - * @force_bypass: force bypass mode due to pagesize mismatch? * @sid2group: maps stream ids to iommu_groups * @iommu: iommu core device */ @@ -107,7 +106,6 @@ struct apple_dart { u32 pgsize; u32 supports_bypass : 1; - u32 force_bypass : 1; struct iommu_group *sid2group[DART_MAX_STREAMS]; struct iommu_device iommu; @@ -506,9 +504,6 @@ static int apple_dart_attach_dev(struct iommu_domain *domain, struct apple_dart_master_cfg *cfg = dev_iommu_priv_get(dev); struct apple_dart_domain *dart_domain = to_dart_domain(domain); - if (cfg->stream_maps[0].dart->force_bypass && - domain->type != IOMMU_DOMAIN_IDENTITY) - return -EINVAL; if (!cfg->stream_maps[0].dart->supports_bypass && domain->type == IOMMU_DOMAIN_IDENTITY) return -EINVAL; @@ -638,8 +633,6 @@ static int apple_dart_of_xlate(struct device *dev, struct of_phandle_args *args) if (cfg_dart) { if (cfg_dart->supports_bypass != dart->supports_bypass) return -EINVAL; - if (cfg_dart->force_bypass != dart->force_bypass) - return -EINVAL; if (cfg_dart->pgsize != dart->pgsize) return -EINVAL; } @@ -713,8 +706,6 @@ static int apple_dart_def_domain_type(struct device *dev) { struct apple_dart_master_cfg *cfg = dev_iommu_priv_get(dev); - if (cfg->stream_maps[0].dart->force_bypass) - return IOMMU_DOMAIN_IDENTITY; if (!cfg->stream_maps[0].dart->supports_bypass) return IOMMU_DOMAIN_DMA; @@ -844,7 +835,6 @@ static int apple_dart_probe(struct platform_device *pdev) dart_params[1] = readl(dart->regs + DART_PARAMS2); dart->pgsize = 1 << FIELD_GET(DART_PARAMS_PAGE_SHIFT, dart_params[0]); dart->supports_bypass = dart_params[1] & DART_PARAMS_BYPASS_SUPPORT; - dart->force_bypass = dart->pgsize > PAGE_SIZE; ret = request_irq(dart->irq, apple_dart_irq, IRQF_SHARED, "apple-dart fault handler", dart); @@ -868,8 +858,8 @@ static int apple_dart_probe(struct platform_device *pdev) dev_info( &pdev->dev, - "DART [pagesize %x, bypass support: %d, bypass forced: %d] initialized\n", - dart->pgsize, dart->supports_bypass, dart->force_bypass); + "DART [pagesize %x, bypass support: %d] initialized\n", + dart->pgsize, dart->supports_bypass); return 0; err_sysfs_remove: -- 2.25.1
WARNING: multiple messages have this Message-ID (diff)
From: Sven Peter via iommu <iommu@lists.linux-foundation.org> To: iommu@lists.linux-foundation.org Cc: Arnd Bergmann <arnd@kernel.org>, Sven Peter <sven@svenpeter.dev>, Will Deacon <will@kernel.org>, Hector Martin <marcan@marcan.st>, linux-kernel@vger.kernel.org, Alexander Graf <graf@amazon.com>, Mohamed Mediouni <mohamed.mediouni@caramail.com>, Robin Murphy <robin.murphy@arm.com>, Alyssa Rosenzweig <alyssa@rosenzweig.io> Subject: [PATCH v2 8/8] iommu/dart: Remove force_bypass logic Date: Sat, 28 Aug 2021 17:36:42 +0200 [thread overview] Message-ID: <20210828153642.19396-9-sven@svenpeter.dev> (raw) In-Reply-To: <20210828153642.19396-1-sven@svenpeter.dev> Now that the dma-iommu API supports IOMMU granules which are larger than the CPU page size and that the kernel no longer runs into a BUG_ON when devices are attached to a domain with such a granule there's no need to force bypass mode anymore. Signed-off-by: Sven Peter <sven@svenpeter.dev> --- drivers/iommu/apple-dart.c | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/drivers/iommu/apple-dart.c b/drivers/iommu/apple-dart.c index 559db9259e65..c37fb4790e8a 100644 --- a/drivers/iommu/apple-dart.c +++ b/drivers/iommu/apple-dart.c @@ -90,7 +90,6 @@ * @lock: lock for hardware operations involving this dart * @pgsize: pagesize supported by this DART * @supports_bypass: indicates if this DART supports bypass mode - * @force_bypass: force bypass mode due to pagesize mismatch? * @sid2group: maps stream ids to iommu_groups * @iommu: iommu core device */ @@ -107,7 +106,6 @@ struct apple_dart { u32 pgsize; u32 supports_bypass : 1; - u32 force_bypass : 1; struct iommu_group *sid2group[DART_MAX_STREAMS]; struct iommu_device iommu; @@ -506,9 +504,6 @@ static int apple_dart_attach_dev(struct iommu_domain *domain, struct apple_dart_master_cfg *cfg = dev_iommu_priv_get(dev); struct apple_dart_domain *dart_domain = to_dart_domain(domain); - if (cfg->stream_maps[0].dart->force_bypass && - domain->type != IOMMU_DOMAIN_IDENTITY) - return -EINVAL; if (!cfg->stream_maps[0].dart->supports_bypass && domain->type == IOMMU_DOMAIN_IDENTITY) return -EINVAL; @@ -638,8 +633,6 @@ static int apple_dart_of_xlate(struct device *dev, struct of_phandle_args *args) if (cfg_dart) { if (cfg_dart->supports_bypass != dart->supports_bypass) return -EINVAL; - if (cfg_dart->force_bypass != dart->force_bypass) - return -EINVAL; if (cfg_dart->pgsize != dart->pgsize) return -EINVAL; } @@ -713,8 +706,6 @@ static int apple_dart_def_domain_type(struct device *dev) { struct apple_dart_master_cfg *cfg = dev_iommu_priv_get(dev); - if (cfg->stream_maps[0].dart->force_bypass) - return IOMMU_DOMAIN_IDENTITY; if (!cfg->stream_maps[0].dart->supports_bypass) return IOMMU_DOMAIN_DMA; @@ -844,7 +835,6 @@ static int apple_dart_probe(struct platform_device *pdev) dart_params[1] = readl(dart->regs + DART_PARAMS2); dart->pgsize = 1 << FIELD_GET(DART_PARAMS_PAGE_SHIFT, dart_params[0]); dart->supports_bypass = dart_params[1] & DART_PARAMS_BYPASS_SUPPORT; - dart->force_bypass = dart->pgsize > PAGE_SIZE; ret = request_irq(dart->irq, apple_dart_irq, IRQF_SHARED, "apple-dart fault handler", dart); @@ -868,8 +858,8 @@ static int apple_dart_probe(struct platform_device *pdev) dev_info( &pdev->dev, - "DART [pagesize %x, bypass support: %d, bypass forced: %d] initialized\n", - dart->pgsize, dart->supports_bypass, dart->force_bypass); + "DART [pagesize %x, bypass support: %d] initialized\n", + dart->pgsize, dart->supports_bypass); return 0; err_sysfs_remove: -- 2.25.1 _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu
next prev parent reply other threads:[~2021-08-28 15:38 UTC|newest] Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-08-28 15:36 [PATCH v2 0/8] Support IOMMU page sizes larger than the CPU page size Sven Peter 2021-08-28 15:36 ` Sven Peter via iommu 2021-08-28 15:36 ` [PATCH v2 1/8] iommu/dma: Align size for untrusted devs to IOVA granule Sven Peter 2021-08-28 15:36 ` Sven Peter via iommu 2021-08-28 15:36 ` [PATCH v2 2/8] iommu/dma: Fail unaligned map requests for untrusted devs Sven Peter 2021-08-28 15:36 ` Sven Peter via iommu 2021-08-28 19:00 ` Sven Peter 2021-08-28 19:00 ` Sven Peter via iommu 2021-08-28 15:36 ` [PATCH v2 3/8] iommu/dma: Disable get_sgtable for granule > PAGE_SIZE Sven Peter 2021-08-28 15:36 ` Sven Peter via iommu 2021-08-31 21:30 ` Alyssa Rosenzweig 2021-08-31 21:30 ` Alyssa Rosenzweig 2021-09-01 17:06 ` Sven Peter 2021-09-01 17:06 ` Sven Peter via iommu 2021-09-01 21:10 ` Alyssa Rosenzweig 2021-09-01 21:10 ` Alyssa Rosenzweig 2021-09-02 18:19 ` Sven Peter 2021-09-02 18:19 ` Sven Peter via iommu 2021-09-02 19:42 ` Robin Murphy 2021-09-02 19:42 ` Robin Murphy 2021-09-03 13:11 ` Alyssa Rosenzweig 2021-09-03 13:11 ` Alyssa Rosenzweig 2021-09-03 15:16 ` Sven Peter 2021-09-03 15:16 ` Sven Peter via iommu 2021-09-03 15:45 ` Robin Murphy 2021-09-03 15:45 ` Robin Murphy 2021-09-03 16:51 ` Sven Peter 2021-09-03 16:51 ` Sven Peter via iommu 2021-08-28 15:36 ` [PATCH v2 4/8] iommu/dma: Support granule > PAGE_SIZE in dma_map_sg Sven Peter 2021-08-28 15:36 ` Sven Peter via iommu 2021-08-28 21:10 ` kernel test robot 2021-08-28 21:10 ` kernel test robot 2021-08-28 21:10 ` kernel test robot 2021-08-28 22:31 ` kernel test robot 2021-08-28 22:31 ` kernel test robot 2021-08-28 22:33 ` kernel test robot 2021-08-28 22:33 ` kernel test robot 2021-08-28 22:33 ` kernel test robot 2021-08-28 15:36 ` [PATCH v2 5/8] iommu/dma: Support PAGE_SIZE < iovad->granule allocations Sven Peter 2021-08-28 15:36 ` Sven Peter via iommu 2021-08-28 15:36 ` [PATCH v2 6/8] iommu: Move IOMMU pagesize check to attach_device Sven Peter 2021-08-28 15:36 ` Sven Peter via iommu 2021-08-31 21:39 ` Alyssa Rosenzweig 2021-08-31 21:39 ` Alyssa Rosenzweig 2021-09-01 17:14 ` Sven Peter 2021-09-01 17:14 ` Sven Peter via iommu 2021-09-01 18:53 ` Robin Murphy 2021-09-01 18:53 ` Robin Murphy 2021-08-28 15:36 ` [PATCH v2 7/8] iommu: Introduce __IOMMU_DOMAIN_LP Sven Peter 2021-08-28 15:36 ` Sven Peter via iommu 2021-08-28 15:36 ` Sven Peter [this message] 2021-08-28 15:36 ` [PATCH v2 8/8] iommu/dart: Remove force_bypass logic Sven Peter via iommu 2021-08-31 21:40 ` Alyssa Rosenzweig 2021-08-31 21:40 ` Alyssa Rosenzweig 2021-08-31 21:32 ` [PATCH v2 0/8] Support IOMMU page sizes larger than the CPU page size Alyssa Rosenzweig 2021-08-31 21:32 ` Alyssa Rosenzweig
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=20210828153642.19396-9-sven@svenpeter.dev \ --to=sven@svenpeter.dev \ --cc=alyssa@rosenzweig.io \ --cc=arnd@kernel.org \ --cc=graf@amazon.com \ --cc=iommu@lists.linux-foundation.org \ --cc=joro@8bytes.org \ --cc=linux-kernel@vger.kernel.org \ --cc=marcan@marcan.st \ --cc=mohamed.mediouni@caramail.com \ --cc=robin.murphy@arm.com \ --cc=will@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: 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.