From: "Isaac J. Manjarres" <isaacm@codeaurora.org> To: will@kernel.org, robin.murphy@arm.com, joro@8bytes.org, robdclark@gmail.com, sean@poorly.run, airlied@linux.ie, daniel@ffwll.ch, steven.price@arm.com, alyssa.rosenzweig@collabora.com, robh@kernel.org, tomeu.vizoso@collabora.com Cc: "Isaac J. Manjarres" <isaacm@codeaurora.org>, freedreno@lists.freedesktop.org, pdaly@codeaurora.org, pratikp@codeaurora.org, dri-devel@lists.freedesktop.org, iommu@lists.linux-foundation.org, kernel-team@android.com, linux-arm-kernel@lists.infradead.org Subject: [PATCH 0/7] iommu: Permit modular builds of io-pgtable drivers Date: Mon, 28 Dec 2020 17:48:54 -0800 [thread overview] Message-ID: <1609206541-14562-1-git-send-email-isaacm@codeaurora.org> (raw) The goal of the Generic Kernel Image (GKI) effort is to have a common kernel image that works across multiple Android devices. This involves generating a kernel image that has core features integrated into it, while SoC specific functionality can be added to the kernel for the device as a module. Along with modularizing IOMMU drivers, this also means building the io-pgtable code as modules, which allows for SoC vendors to only include the io-pgtable implementations that they use. For example, GKI for arm64 must include support for both the IOMMU ARM LPAE/V7S formats at the moment. Having the code for both formats as modules allows SoC vendors to only provide the page table format that they use, along with their IOMMU driver. The patches are split into 4 parts: 1) Modularizing io-pgtable-arm[-v7s].c, while leaving the io-pgtable.c code as part of the core kernel, requires removing the references to the ARM LPAE and ARM V7S io-pgtable init functions, and using a dynamic method for formats to register their io-pgtable init functions. 2) Taking references to the io-pgtable format drivers to ensure that they cannot be unloaded while in use. 3) Adding pre MODULE_SOFTDEP() dependencies to drivers in the kernel that are tristate, and invoke [alloc/free]_io_pgtable_ops(). This makes it so that the io-pgtable format drivers are loaded before the driver that needs them. 4) Changing the Kconfig options for the ARM LPAE nad ARM V7S to tristate and allowing the io-pgtable code to be enabled without having to select either page table format. The reason for doing this is so that a kernel can be built, such that it only provides the interface for io-pgtable formats to be registered as modules, as would be the case for the GKI. Thanks, Isaac Isaac J. Manjarres (7): iommu/io-pgtable: Introduce dynamic io-pgtable format registration iommu/io-pgtable: Add refcounting for io-pgtable format modules iommu/arm-smmu: Add dependency on io-pgtable format modules iommu/arm-smmu-v3: Add dependency on io-pgtable-arm format module drm/msm: Add dependency on io-pgtable-arm format module drm/panfrost: Add dependency on io-pgtable-arm format module iommu/io-pgtable-arm: Allow building modular io-pgtable formats drivers/gpu/drm/msm/msm_drv.c | 1 + drivers/gpu/drm/panfrost/panfrost_drv.c | 1 + drivers/iommu/Kconfig | 11 +-- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 1 + drivers/iommu/arm/arm-smmu/arm-smmu.c | 1 + drivers/iommu/io-pgtable-arm-v7s.c | 36 +++++++++- drivers/iommu/io-pgtable-arm.c | 104 +++++++++++++++++++++------- drivers/iommu/io-pgtable.c | 54 ++++++++++----- include/linux/io-pgtable.h | 52 +++++++++----- 9 files changed, 196 insertions(+), 65 deletions(-) -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu
WARNING: multiple messages have this Message-ID (diff)
From: "Isaac J. Manjarres" <isaacm@codeaurora.org> To: will@kernel.org, robin.murphy@arm.com, joro@8bytes.org, robdclark@gmail.com, sean@poorly.run, airlied@linux.ie, daniel@ffwll.ch, steven.price@arm.com, alyssa.rosenzweig@collabora.com, robh@kernel.org, tomeu.vizoso@collabora.com Cc: "Isaac J. Manjarres" <isaacm@codeaurora.org>, freedreno@lists.freedesktop.org, pdaly@codeaurora.org, pratikp@codeaurora.org, dri-devel@lists.freedesktop.org, iommu@lists.linux-foundation.org, kernel-team@android.com, linux-arm-kernel@lists.infradead.org Subject: [PATCH 0/7] iommu: Permit modular builds of io-pgtable drivers Date: Mon, 28 Dec 2020 17:48:54 -0800 [thread overview] Message-ID: <1609206541-14562-1-git-send-email-isaacm@codeaurora.org> (raw) The goal of the Generic Kernel Image (GKI) effort is to have a common kernel image that works across multiple Android devices. This involves generating a kernel image that has core features integrated into it, while SoC specific functionality can be added to the kernel for the device as a module. Along with modularizing IOMMU drivers, this also means building the io-pgtable code as modules, which allows for SoC vendors to only include the io-pgtable implementations that they use. For example, GKI for arm64 must include support for both the IOMMU ARM LPAE/V7S formats at the moment. Having the code for both formats as modules allows SoC vendors to only provide the page table format that they use, along with their IOMMU driver. The patches are split into 4 parts: 1) Modularizing io-pgtable-arm[-v7s].c, while leaving the io-pgtable.c code as part of the core kernel, requires removing the references to the ARM LPAE and ARM V7S io-pgtable init functions, and using a dynamic method for formats to register their io-pgtable init functions. 2) Taking references to the io-pgtable format drivers to ensure that they cannot be unloaded while in use. 3) Adding pre MODULE_SOFTDEP() dependencies to drivers in the kernel that are tristate, and invoke [alloc/free]_io_pgtable_ops(). This makes it so that the io-pgtable format drivers are loaded before the driver that needs them. 4) Changing the Kconfig options for the ARM LPAE nad ARM V7S to tristate and allowing the io-pgtable code to be enabled without having to select either page table format. The reason for doing this is so that a kernel can be built, such that it only provides the interface for io-pgtable formats to be registered as modules, as would be the case for the GKI. Thanks, Isaac Isaac J. Manjarres (7): iommu/io-pgtable: Introduce dynamic io-pgtable format registration iommu/io-pgtable: Add refcounting for io-pgtable format modules iommu/arm-smmu: Add dependency on io-pgtable format modules iommu/arm-smmu-v3: Add dependency on io-pgtable-arm format module drm/msm: Add dependency on io-pgtable-arm format module drm/panfrost: Add dependency on io-pgtable-arm format module iommu/io-pgtable-arm: Allow building modular io-pgtable formats drivers/gpu/drm/msm/msm_drv.c | 1 + drivers/gpu/drm/panfrost/panfrost_drv.c | 1 + drivers/iommu/Kconfig | 11 +-- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 1 + drivers/iommu/arm/arm-smmu/arm-smmu.c | 1 + drivers/iommu/io-pgtable-arm-v7s.c | 36 +++++++++- drivers/iommu/io-pgtable-arm.c | 104 +++++++++++++++++++++------- drivers/iommu/io-pgtable.c | 54 ++++++++++----- include/linux/io-pgtable.h | 52 +++++++++----- 9 files changed, 196 insertions(+), 65 deletions(-) -- The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
next reply other threads:[~2020-12-29 1:49 UTC|newest] Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-12-29 1:48 Isaac J. Manjarres [this message] 2020-12-29 1:48 ` [PATCH 0/7] iommu: Permit modular builds of io-pgtable drivers Isaac J. Manjarres 2020-12-29 1:48 ` [PATCH 1/7] iommu/io-pgtable: Introduce dynamic io-pgtable format registration Isaac J. Manjarres 2020-12-29 1:48 ` Isaac J. Manjarres 2020-12-29 1:48 ` [PATCH 2/7] iommu/io-pgtable: Add refcounting for io-pgtable format modules Isaac J. Manjarres 2020-12-29 1:48 ` Isaac J. Manjarres 2020-12-29 1:48 ` [PATCH 3/7] iommu/arm-smmu: Add dependency on " Isaac J. Manjarres 2020-12-29 1:48 ` Isaac J. Manjarres 2020-12-29 1:48 ` [PATCH 4/7] iommu/arm-smmu-v3: Add dependency on io-pgtable-arm format module Isaac J. Manjarres 2020-12-29 1:48 ` Isaac J. Manjarres 2020-12-29 1:48 ` [PATCH 5/7] drm/msm: " Isaac J. Manjarres 2020-12-29 1:48 ` Isaac J. Manjarres 2020-12-29 1:49 ` [PATCH 6/7] drm/panfrost: " Isaac J. Manjarres 2020-12-29 1:49 ` Isaac J. Manjarres 2020-12-29 1:49 ` [PATCH 7/7] iommu/io-pgtable-arm: Allow building modular io-pgtable formats Isaac J. Manjarres 2020-12-29 1:49 ` Isaac J. Manjarres
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=1609206541-14562-1-git-send-email-isaacm@codeaurora.org \ --to=isaacm@codeaurora.org \ --cc=airlied@linux.ie \ --cc=alyssa.rosenzweig@collabora.com \ --cc=daniel@ffwll.ch \ --cc=dri-devel@lists.freedesktop.org \ --cc=freedreno@lists.freedesktop.org \ --cc=iommu@lists.linux-foundation.org \ --cc=joro@8bytes.org \ --cc=kernel-team@android.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=pdaly@codeaurora.org \ --cc=pratikp@codeaurora.org \ --cc=robdclark@gmail.com \ --cc=robh@kernel.org \ --cc=robin.murphy@arm.com \ --cc=sean@poorly.run \ --cc=steven.price@arm.com \ --cc=tomeu.vizoso@collabora.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.