From: Ohad Ben-Cohen <ohad@wizery.com> To: KyongHo Cho <pullip.cho@samsung.com> Cc: Arnd Bergmann <arnd@arndb.de>, Joerg Roedel <Joerg.Roedel@amd.com>, Hiroshi DOYU <Hiroshi.DOYU@nokia.com>, linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org, Laurent Pinchart <laurent.pinchart@ideasonboard.com>, David Brown <davidb@codeaurora.org>, linux-omap@vger.kernel.org, David Woodhouse <dwmw2@infradead.org>, linux-arm-kernel@lists.infradead.org Subject: Re: [RFC 7/7] iommu/core: split mapping to page sizes as supported by the hardware Date: Wed, 7 Sep 2011 12:49:06 +0300 [thread overview] Message-ID: <CAK=Wgbayt0D8u8u_t=Zs=15A0YBjKX3RUNtWFKVCOxEOKvH7fw@mail.gmail.com> (raw) In-Reply-To: <CAHQjnOMnOjAJ6QuuLmLa1UKvTRHfyyjiUYrfvzLx8FSsCixxng@mail.gmail.com> [resending due to mailer-daemon errors I got, sorry] Hi KyongHo, On Wed, Sep 7, 2011 at 11:05 AM, KyongHo Cho <pullip.cho@samsung.com> wrote: > However, it is faster because it does not calculate the given order and > not call any function. Hmm this sounds a bit like a red herring to me; optimization of the map function is not the main subject here. Especially not when we're discussing mapping of large physically contiguous memory regions which do not happen too often. But generally I don't think that duplicating code and eliminating function calls is a good optimization (the compiler can do that for us..). Moreover, it looks like s5p_iommu_map() gives a higher priority for bigger pages first, and only reaches 4KB pages after it tried all other supported pages. IMHO that's sub-optimal, because small mappings are more common than big ones. Another advantage for migrating s5p_iommu_map() over to the subject patch, is that s5p_iommu_map() doesn't support super sections yet. To support it, you'd need to add more code (duplicate another while loop). But if you migrated to the subject patch, then you would only need to flip the 16MB bit when you advertise page size capabilities and then that's it; you're done. > It is a logical error because the caller of iommu_map() gives > 4KB aligned physical address while saying that it is 64KB aligned. The caller of iommu_map() doesn't say anything about alignments. It just gives it a memory region to map, and expect things to just work. Obviously it's better if big physically contiguous mapping will be aligned to big pages, but things can still work even if it's not, by using smaller pages. No reason not to provide this flexibility. The only requirement the IOMMU API should have is the minimum 4KB alignment, because IOMMU hardware does not support smaller pages. Thanks, Ohad.
WARNING: multiple messages have this Message-ID (diff)
From: ohad@wizery.com (Ohad Ben-Cohen) To: linux-arm-kernel@lists.infradead.org Subject: [RFC 7/7] iommu/core: split mapping to page sizes as supported by the hardware Date: Wed, 7 Sep 2011 12:49:06 +0300 [thread overview] Message-ID: <CAK=Wgbayt0D8u8u_t=Zs=15A0YBjKX3RUNtWFKVCOxEOKvH7fw@mail.gmail.com> (raw) In-Reply-To: <CAHQjnOMnOjAJ6QuuLmLa1UKvTRHfyyjiUYrfvzLx8FSsCixxng@mail.gmail.com> [resending due to mailer-daemon errors I got, sorry] Hi KyongHo, On Wed, Sep 7, 2011 at 11:05 AM, KyongHo Cho <pullip.cho@samsung.com> wrote: > However, it is faster because it does not calculate the given order and > not call any function. Hmm this sounds a bit like a red herring to me; optimization of the map function is not the main subject here. Especially not when we're discussing mapping of large physically contiguous memory regions which do not happen too often. But generally I don't think that duplicating code and eliminating function calls is a good optimization (the compiler can do that for us..). Moreover, it looks like s5p_iommu_map() gives a higher priority for bigger pages first, and only reaches 4KB pages after it tried all other supported pages. IMHO that's sub-optimal, because small mappings are more common than big ones. Another advantage for migrating s5p_iommu_map() over to the subject patch, is that s5p_iommu_map() doesn't support super sections yet. To support it, you'd need to add more code (duplicate another while loop). But if you migrated to the subject patch, then you would only need to flip the 16MB bit when you advertise page size capabilities and then that's it; you're done. > It is a logical error because the caller of iommu_map() gives > 4KB aligned physical address while saying that it is 64KB aligned. The caller of iommu_map() doesn't say anything about alignments. It just gives it a memory region to map, and expect things to just work. Obviously it's better if big physically contiguous mapping will be aligned to big pages, but things can still work even if it's not, by using smaller pages. No reason not to provide this flexibility. The only requirement the IOMMU API should have is the minimum 4KB alignment, because IOMMU hardware does not support smaller pages. Thanks, Ohad.
next prev parent reply other threads:[~2011-09-07 9:49 UTC|newest] Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top 2011-09-02 17:32 [PATCH/RFC 0/7] iommu: fixes & extensions Ohad Ben-Cohen 2011-09-02 17:32 ` Ohad Ben-Cohen 2011-09-02 17:32 ` Ohad Ben-Cohen 2011-09-02 17:32 ` [PATCH 1/7] iommu/omap-iovmm: support non page-aligned buffers in iommu_vmap Ohad Ben-Cohen 2011-09-02 17:32 ` Ohad Ben-Cohen 2011-09-02 17:32 ` Ohad Ben-Cohen 2011-09-02 17:32 ` [PATCH 2/7] iommu/omap: cleanup: remove a redundant statement Ohad Ben-Cohen 2011-09-02 17:32 ` Ohad Ben-Cohen 2011-09-02 17:32 ` Ohad Ben-Cohen 2011-09-02 17:32 ` [PATCH 3/7] iommu/core: use the existing IS_ALIGNED macro Ohad Ben-Cohen 2011-09-02 17:32 ` Ohad Ben-Cohen 2011-09-02 17:32 ` Ohad Ben-Cohen 2011-09-02 17:32 ` [PATCH 4/7] iommu/omap: ->unmap() should return order of unmapped page Ohad Ben-Cohen 2011-09-02 17:32 ` Ohad Ben-Cohen 2011-09-02 17:32 ` Ohad Ben-Cohen 2011-09-02 17:32 ` [PATCH 5/7] iommu/msm: " Ohad Ben-Cohen 2011-09-02 17:32 ` Ohad Ben-Cohen 2011-09-02 17:32 ` Ohad Ben-Cohen 2011-09-02 18:36 ` David Brown 2011-09-02 18:36 ` David Brown 2011-09-02 18:36 ` David Brown 2011-09-02 17:32 ` [RFC 6/7] iommu/core: add fault reporting Ohad Ben-Cohen 2011-09-02 17:32 ` Ohad Ben-Cohen 2011-09-02 17:32 ` Ohad Ben-Cohen 2011-09-05 10:00 ` Roedel, Joerg 2011-09-05 10:00 ` Roedel, Joerg 2011-09-05 10:00 ` Roedel, Joerg 2011-09-07 16:36 ` Ohad Ben-Cohen 2011-09-07 16:36 ` Ohad Ben-Cohen 2011-09-07 16:36 ` Ohad Ben-Cohen 2011-09-02 17:32 ` [RFC 7/7] iommu/core: split mapping to page sizes as supported by the hardware Ohad Ben-Cohen 2011-09-02 17:32 ` Ohad Ben-Cohen 2011-09-02 17:32 ` Ohad Ben-Cohen 2011-09-07 1:30 ` KyongHo Cho 2011-09-07 1:30 ` KyongHo Cho 2011-09-07 6:01 ` Ohad Ben-Cohen 2011-09-07 6:01 ` Ohad Ben-Cohen 2011-09-07 8:05 ` KyongHo Cho 2011-09-07 8:05 ` KyongHo Cho 2011-09-07 9:16 ` Ohad Ben-Cohen 2011-09-07 9:16 ` Ohad Ben-Cohen 2011-09-08 12:51 ` KyongHo Cho 2011-09-08 12:51 ` KyongHo Cho 2011-09-08 14:03 ` Ohad Ben-Cohen 2011-09-08 14:03 ` Ohad Ben-Cohen 2011-09-07 9:49 ` Ohad Ben-Cohen [this message] 2011-09-07 9:49 ` Ohad Ben-Cohen 2011-09-06 10:15 ` [PATCH/RFC 0/7] iommu: fixes & extensions Roedel, Joerg 2011-09-06 10:15 ` Roedel, Joerg 2011-09-06 10:15 ` Roedel, Joerg 2011-09-06 11:28 ` Ohad Ben-Cohen 2011-09-06 11:28 ` Ohad Ben-Cohen 2011-09-06 11:28 ` Ohad Ben-Cohen
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='CAK=Wgbayt0D8u8u_t=Zs=15A0YBjKX3RUNtWFKVCOxEOKvH7fw@mail.gmail.com' \ --to=ohad@wizery.com \ --cc=Hiroshi.DOYU@nokia.com \ --cc=Joerg.Roedel@amd.com \ --cc=arnd@arndb.de \ --cc=davidb@codeaurora.org \ --cc=dwmw2@infradead.org \ --cc=iommu@lists.linux-foundation.org \ --cc=laurent.pinchart@ideasonboard.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-omap@vger.kernel.org \ --cc=pullip.cho@samsung.com \ /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.